Merge branch 'test' into al

# Conflicts:
#	src/views/task/content/Content.vue
pull/19/head
刘释隆 1 year ago
commit 340e11ac6f

@ -7,11 +7,15 @@ import { ContentTypeEnum } from '@/enums/httpEnum'
* *
* @returns * @returns
*/ */
export async function getApprovalList(page: PageParam) { export async function getApprovalList(page: any) {
const res = await http.request({ const res = await http.request({
url: `/flow/task/listalldata`, url: `/flow/task/listalldata`,
method: 'get', method: 'get',
params: { pageSize: page.pageSize, currPage: page.pageNo }, params: {
pageSize: page.pageSize,
currPage: page.pageNo,
keyword: page.keyword,
},
}) })
const { data: { list, totalCount } } = res const { data: { list, totalCount } } = res

@ -4,9 +4,7 @@ import { useMessage } from 'naive-ui'
import { useDictionary } from '@/store/modules/dictonary' import { useDictionary } from '@/store/modules/dictonary'
import { audit } from '@/api/task/task' import { audit } from '@/api/task/task'
const emit = defineEmits<{ const emit = defineEmits(['success'])
(e: 'success')
}>()
const message = useMessage() const message = useMessage()
const loading = ref(false) const loading = ref(false)
@ -104,7 +102,7 @@ async function handleSumbit(e: MouseEvent) {
const { code } = res const { code } = res
if (code === 'OK') { if (code === 'OK') {
message.success('审核成功') message.success('审核成功')
emit('success') emit('success', param)
closeModal() closeModal()
} }
else { message.error(res.message) } else { message.error(res.message) }

@ -248,6 +248,19 @@ async function formatColumns() {
} }
} }
index = columnsRef.value.findIndex(v => v.title == '所属项目')
if (index > -1) {
columnsRef.value[index] = {
title: '所属项目',
key: columnsRef.value[index].key, // "fromtaskname"
fixed: columnsRef.value[index].fixed || undefined,
width: 200,
ellipsis: {
tooltip: true,
},
}
}
index = columnsRef.value.findIndex(v => v.title == '任务名称') index = columnsRef.value.findIndex(v => v.title == '任务名称')
if (index > -1) { if (index > -1) {
columnsRef.value[index] = { columnsRef.value[index] = {
@ -575,10 +588,10 @@ function actionHandler(action: any, row: any) {
resetHandler() resetHandler()
break break
case 'approval': case 'approval':
approvalHandler(row) singleApproval(row)
break break
case 'reject': case 'reject':
rejectHandler(row) rejectHandler([row])
break break
default: default:
break break
@ -630,26 +643,24 @@ function getSelectItems() {
return tableData.value.filter(item => selectionIds.value.includes(item.id)) return tableData.value.filter(item => selectionIds.value.includes(item.id))
} }
function approvalHandler(row) { //
// const items = getSelectItems() function singleApproval(row) {
const items = [row] const param = {
const msg = validate(items) result: true,
comment: '',
if (msg !== null) { disposeType: '',
message.error(msg) disposeTypeId: '',
return failCauseId: '',
} failCauseName: '',
flowTaskInfoList: [
dialog.info({ {
title: '确认提示', formId: row.id,
content: '确认给该任务审批为【通过】吗?', taskId: row.taskId,
positiveText: '确定', taskName: row.fromTaskName,
negativeText: '取消',
onPositiveClick: () => {
approval(items)
}, },
onNegativeClick: () => {}, ],
}) }
doAudit(param)
} }
function batchApproval() { function batchApproval() {
@ -673,26 +684,25 @@ function batchApproval() {
}) })
} }
function approval(items) { // function approval(items) {
const formIds: string[] = items.map(item => item.id) // const formIds: string[] = items.map(item => item.id)
const taskIds: string[] = items.map(item => item.taskId) // const taskIds: string[] = items.map(item => item.taskId)
const tasknames: string[] = items.map(item => item.taskname) // const tasknames: string[] = items.map(item => item.taskname)
const param: ApprovalParam = { // const param: ApprovalParam = {
formid: formIds, // formid: formIds,
taskId: taskIds, // taskId: taskIds,
approvd: true, // approvd: true,
taskComment: 'approval', // taskComment: 'approval',
taskname: tasknames, // taskname: tasknames,
} // }
doAudit(param) // doAudit(param)
} // }
function rejectHandler(row) { //
// const items = getSelectItems() function rejectHandler(list) {
const items = [row] const msg = validate(list)
const msg = validate(items)
if (msg !== null) { if (msg !== null) {
message.error(msg) message.error(msg)
@ -700,7 +710,7 @@ function rejectHandler(row) {
} }
const modal = unref(notPassModalRef)! as any const modal = unref(notPassModalRef)! as any
modal.showModal() modal.showModal(list)
} }
function reject(idOrDesc: string, backId: string, isOther: boolean) { function reject(idOrDesc: string, backId: string, isOther: boolean) {
@ -720,15 +730,6 @@ function reject(idOrDesc: string, backId: string, isOther: boolean) {
doAudit(param) doAudit(param)
} }
function doAudit(param: any) {
audit(param).then((res) => {
const { code } = res
if (code === 'OK')
reload()
else message.error(res.message)
})
}
function reload() { function reload() {
const { page, pageSize } = unref(tableRef.value?.pagination) as PaginationProps const { page, pageSize } = unref(tableRef.value?.pagination) as PaginationProps
query(page!, pageSize!) query(page!, pageSize!)
@ -751,6 +752,27 @@ async function refreshHandler(searchId?: any) {
reset() reset()
query(pagination.page, pagination.pageSize, searchId) query(pagination.page, pagination.pageSize, searchId)
} }
//
function doAudit(param: any) {
dialog.info({
title: '确认提示',
content: '确认给该任务审批为【通过】吗?',
positiveText: '确定',
negativeText: '取消',
onPositiveClick: () => {
audit(param).then((res) => {
const { code } = res
if (code === 'OK') {
message.success('审核成功')
reload()
}
else { message.error(res.message) }
})
},
onNegativeClick: () => {},
})
}
</script> </script>
<template> <template>
@ -837,7 +859,7 @@ async function refreshHandler(searchId?: any) {
:on-success="sucessHandler" :on-success="sucessHandler"
:header-config="headRules" :header-config="headRules"
/> />
<NotPassed ref="notPassModalRef" @success="reloadList" /> <NotPassed ref="notPassModalRef" @success="reload" />
<RepeatModal <RepeatModal
ref="repeatModalRef" ref="repeatModalRef"

@ -93,7 +93,7 @@ const rules = {
if (loginSuccess.value || !value) { if (loginSuccess.value || !value) {
return true; return true;
} }
if (loginRejectMessge.value.indexOf("用户名") > -1) { if (loginRejectMessge.value.indexOf("用户名") > -1||loginRejectMessge.value.indexOf("账号") > -1) {
return new Error(loginRejectMessge.value); return new Error(loginRejectMessge.value);
} }
}, },

@ -20,7 +20,7 @@ import emitter from '@/utils/mitt'
const CustomFieldModalRef = ref(null) const CustomFieldModalRef = ref(null)
const collapse = ref(false) const collapse = ref(false)
const taskStore = useTaskStore() const taskStore = useTaskStore()
const taskListRef = ref<HTMLDivElement | null>(null) const taskListRef: any = ref(null)
// //
const showFieldList = ref<any[]>([]) const showFieldList = ref<any[]>([])
@ -144,6 +144,14 @@ function editFilter(filter: any) {
modal.showModal() modal.showModal()
modal.edit(filter) modal.edit(filter)
} }
function setAsideItemName(text) {
taskListRef.value.setStatusName(text)
}
defineExpose({
setAsideItemName,
})
</script> </script>
<template> <template>

@ -53,7 +53,7 @@ const svgName = computed(() => {
" "
>{{ listItem.statshisText }}</span> >{{ listItem.statshisText }}</span>
</li> </li>
<li v-else-if="item.id === 'createdate'"> <li v-else-if="item.id === ''">
提交时间{{ format(listItem.createdate, "yyyy-MM-dd HH:mm:ss") }} 提交时间{{ format(listItem.createdate, "yyyy-MM-dd HH:mm:ss") }}
</li> </li>
<li v-else class="ellipsis"> <li v-else class="ellipsis">

@ -1,119 +1,131 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useInfiniteScroll } from "@vueuse/core"; import { useInfiniteScroll } from '@vueuse/core'
import { onMounted, onUnmounted, reactive, ref, watch, defineProps } from "vue"; import { defineProps, onMounted, onUnmounted, reactive, ref, watch } from 'vue'
import ListItem from "./ListItem.vue"; import ListItem from './ListItem.vue'
import emitter from "@/utils/mitt"; import emitter from '@/utils/mitt'
import { useTaskStore } from "@/store/modules/task"; import { useTaskStore } from '@/store/modules/task'
const taskStore = useTaskStore();
const data = ref<any[]>([]);
const activeId = ref("");
const el = ref<HTMLDivElement | null>(null);
const keyword = ref("");
const canloadMore = ref(true);
const isLoading = ref(false);
defineProps({ defineProps({
showFieldList: { showFieldList: {
type: Array, type: Array,
default: () => [], default: () => [],
}, },
}); })
const taskStore = useTaskStore()
const data = ref<any[]>([])
const activeId = ref('')
const el = ref<HTMLDivElement | null>(null)
const keyword = ref('')
const canloadMore = ref(true)
const isLoading = ref(false)
const pagination = reactive({ const pagination = reactive({
pageNo: 0, pageNo: 0,
pageSize: 100, pageSize: 30,
}); })
function selectHandler(id: string, index: number) { function selectHandler(id: string, index: number) {
taskStore.setActive(index); taskStore.setActive(index)
} }
useInfiniteScroll( useInfiniteScroll(
el as any, el as any,
() => { () => {
loadMore(); loadMore()
}, },
{ distance: 10, interval: 1500, canLoadMore: () => canloadMore.value } { distance: 10, interval: 1500, canLoadMore: () => canloadMore.value },
); )
async function loadMore() { async function loadMore() {
if (isLoading.value || el.value == null) return; console.log(77888)
isLoading.value = true; if (isLoading.value || el.value == null)
return
isLoading.value = true
try { try {
const more = await fetchList(); const more = await fetchList()
data.value.push(...more); data.value.push(...more)
} finally { }
isLoading.value = false; finally {
isLoading.value = false
} }
} }
//
async function fetchList() { async function fetchList() {
try { try {
pagination.pageNo += 1; pagination.pageNo += 1
const result = await taskStore.fetchApprovalList(pagination); const result = await taskStore.fetchApprovalList({
const { data, pageCount } = result; ...pagination,
canloadMore.value = pageCount >= pagination.pageNo; keyword: keyword.value,
return data || []; })
} catch (error) { const { data, pageCount } = result
canloadMore.value = false; canloadMore.value = pageCount >= pagination.pageNo
return []; return data || []
}
catch (error) {
canloadMore.value = false
return []
} }
} }
watch( watch(
() => taskStore.activeId, () => taskStore.activeId,
(newVal) => { (newVal) => {
activeId.value = newVal; activeId.value = newVal
} },
); )
function reset() { function reset() {
pagination.pageNo = 0; pagination.pageNo = 0
pagination.pageSize = 100; pagination.pageSize = 30
canloadMore.value = true; canloadMore.value = true
data.value.length = 0; data.value.length = 0
taskStore.reset(); taskStore.reset()
} }
async function search(word: string) { async function search(word: string) {
keyword.value = word; keyword.value = word
reset(); reset()
useInfiniteScroll( useInfiniteScroll(
el as any, el as any,
() => { () => {
loadMore(); loadMore()
}, },
{ distance: 10, canLoadMore: () => canloadMore.value } { distance: 10, canLoadMore: () => canloadMore.value },
); )
} }
onMounted(() => { onMounted(() => {
emitter.on("refresh", refreshHandler); emitter.on('refresh', refreshHandler)
}); })
onUnmounted(() => { onUnmounted(() => {
emitter.off("refresh", refreshHandler); emitter.off('refresh', refreshHandler)
}); })
async function refreshHandler() { async function refreshHandler() {
search(""); search('')
}
function setStatusName(text) {
const index = taskStore.getCurrentIndex
data.value[index].statshisText = text
} }
defineExpose({ defineExpose({
search, search,
}); setStatusName,
})
</script> </script>
<template> <template>
<n-spin :show="isLoading"> <n-spin :show="isLoading">
<div ref="el" class="list"> <div ref="el" class="list">
<ListItem <ListItem
:showFieldList="showFieldList"
v-for="(item, index) in data" v-for="(item, index) in data"
:key="item.id" :key="item.id"
:show-field-list="showFieldList"
:selected="activeId === item.id" :selected="activeId === item.id"
:list-item="item" :list-item="item"
@click="selectHandler(item.id, index)" @click="selectHandler(item.id, index)"

@ -24,18 +24,19 @@ import { isEmpty } from "@/utils";
import { formatToDateHMS } from "@/utils/dateUtil"; import { formatToDateHMS } from "@/utils/dateUtil";
import { hideDownload } from "@/utils/image"; import { hideDownload } from "@/utils/image";
const batch = ref(false); const emit = defineEmits(['setAsideItemName'])
const selectItems = ref<any[]>([]); const batch = ref(false)
const message = useMessage(); const selectItems = ref<any[]>([])
const dialog = useDialog(); const message = useMessage()
const notPassModalRef = ref(null); const dialog = useDialog()
const batchModalRef = ref(null); const notPassModalRef = ref(null)
const totalCount = ref(0); const batchModalRef = ref(null)
const taskId: any = ref(""); // id const totalCount = ref(0)
const packageId: any = ref(""); // id const taskId: any = ref('') // id
const CustomSettingModalRef = ref(null); const packageId: any = ref('') // id
const taskTableData = ref<any[]>([]); const CustomSettingModalRef = ref(null)
const route = useRoute(); const taskTableData = ref<any[]>([])
const route = useRoute()
const sortBy: any = { const sortBy: any = {
orderType: "desc", orderType: "desc",
@ -47,11 +48,8 @@ function setBatch(value: boolean) {
batch.value = value; batch.value = value;
if (value === false) { if (value === false)
selectItems.value.forEach((item) => (item.checked = false)); selectItems.value = []
selectItems.value.length = 0;
selectItems.value.length = 0;
}
} }
function onCheckChange(checked: any, item: any) { function onCheckChange(checked: any, item: any) {
@ -95,6 +93,12 @@ function handleKeydown(event) {
// //
} }
// storeid
function currentTaskId() {
const index = taskStore.getCurrentIndex
return taskStore.getApprovalList[index]?.id || ''
}
// states:1234 // states:1234
function validate(items: any[]) { function validate(items: any[]) {
if (items.length === 0) return "至少选中一个任务"; if (items.length === 0) return "至少选中一个任务";
@ -167,38 +171,22 @@ function approvalHandler(items?: any) {
} }
function rejectHandler(items?: any) { function rejectHandler(items?: any) {
// let cloneItem: any const modal = unref(notPassModalRef)! as any
// if (batch.value) { modal.showModal(selectItems.value)
// processItems = selectItems.value }
// }
// else if (overTask.value) {
// cloneItem = clone(overTask.value)
// processItems = [cloneItem]
// }
// if (items !== undefined && !(items instanceof PointerEvent))
// processItems = items
// const msg = validate(processItems)
// if (msg !== null) {
// message.error(msg)
// return
// }
const modal = unref(notPassModalRef)! as any; function singleRejectHandler() {
modal.showModal(selectItems.value); const modal = unref(notPassModalRef)! as any
modal.showModal([taskDetailInfo.value])
} }
function doAudit(param: any) { function doAudit(param: any) {
audit(param).then((res) => { audit(param).then((res) => {
const { code } = res; const { code } = res
setBatch(false); if (code === 'OK') {
if (code === "OK") { message.success('审核成功')
message.success("审核成功"); setBatch(false)
reloadList(); reloadList(param, '通过')
} else {
message.error(res.message);
} }
}); });
} }
@ -276,12 +264,6 @@ async function getImgList() {
} }
} }
// storeid
const currentTaskId = computed(() => {
const index = taskStore.getCurrentIndex;
return taskStore.getApprovalList[index]?.id || "";
});
function overTaskHandle() { function overTaskHandle() {
const item = taskDetailInfo.value; const item = taskDetailInfo.value;
if (item?.userapprove?.statshis === 2 || item?.userapprove?.statshis == 3) { if (item?.userapprove?.statshis === 2 || item?.userapprove?.statshis == 3) {
@ -321,11 +303,13 @@ function previewHandler(event: MouseEvent) {
watch( watch(
() => [taskStore.activeId], () => [taskStore.activeId],
() => { () => {
packageId.value = taskStore.getPackageid; if (!isEmpty(taskStore.getActiveId)) {
taskId.value = taskStore.getActiveId; packageId.value = taskStore.getPackageid
getDetail(); taskId.value = taskStore.getActiveId
getDetail()
} }
); },
)
// //
async function getDetail() { async function getDetail() {
@ -335,8 +319,15 @@ async function getDetail() {
getImgList(); getImgList();
} }
function reloadList() { function reloadList(param, text) {
getDetail(); //
const id = currentTaskId()
const hasCurrentId = param.flowTaskInfoList.find(item => item.formId === id)
if (hasCurrentId)
emit('setAsideItemName', text)
getDetail()
} }
</script> </script>
@ -429,7 +420,7 @@ function reloadList() {
width="168" width="168"
height="48" height="48"
name="r7" name="r7"
@click.stop="rejectHandler" @click.stop="singleRejectHandler"
/> />
</div> </div>
<div class="check"> <div class="check">
@ -462,6 +453,9 @@ function reloadList() {
<SvgIcon v-show="taskDetailInfo?.iztrueorfalse === 1" size="128" name="zhen" /> <SvgIcon v-show="taskDetailInfo?.iztrueorfalse === 1" size="128" name="zhen" />
</div> </div>
<div class="big-mark" /> <div class="big-mark" />
<div class="preview" @click="previewHandler">
<SvgIcon size="16" name="zoom-out" />
</div>
<div class="info img-info"> <div class="info img-info">
<n-grid x-gap="12" y-gap="10" :cols="12"> <n-grid x-gap="12" y-gap="10" :cols="12">
<n-gi span="4" class="gi1"> <n-gi span="4" class="gi1">
@ -491,20 +485,13 @@ function reloadList() {
</n-grid> </n-grid>
</div> </div>
<div class="time"> <div class="time">
<div v-if="taskDetailInfo?.ocrPicture?.photoDateTimestamp" class="time-item"> <div class="time-item">
<SvgIcon class="svg-time" color="#FFF" size="16" name="camera-time" /> <SvgIcon class="svg-time" color="#FFF" size="16" name="camera-time" />
<span>{{ <span>{{ taskDetailInfo?.ocrPicture?.photoDateTimestamp ? formatToDateHMS(Number(taskDetailInfo.ocrPicture.photoDateTimestamp)) : '-' }}</span>
formatToDateHMS(Number(taskDetailInfo.ocrPicture.photoDateTimestamp) || 0)
}}</span>
</div> </div>
<div <div class="time-item time-item2">
v-if="taskDetailInfo?.ocrPicture?.submitDateTimestamp"
class="time-item time-item2"
>
<SvgIcon class="svg-time" color="#FFF" size="16" name="submit-time" /> <SvgIcon class="svg-time" color="#FFF" size="16" name="submit-time" />
<span>{{ <span>{{ taskDetailInfo?.ocrPicture?.submitDateTimestamp ? formatToDateHMS(Number(taskDetailInfo.ocrPicture.submitDateTimestamp)) : '-' }}</span>
formatToDateHMS(Number(taskDetailInfo.ocrPicture.submitDateTimestamp) || 0)
}}</span>
</div> </div>
</div> </div>
<div style="display: none"> <div style="display: none">
@ -562,17 +549,13 @@ function reloadList() {
alt="" alt=""
/> />
<div class="time"> <div class="time">
<div v-if="item.photoDateTimestamp" class="time-item"> <div class="time-item">
<SvgIcon class="svg-time" color="#FFF" size="8" name="camera-time" /> <SvgIcon class="svg-time" color="#FFF" size="8" name="camera-time" />
<span>{{ <span>{{ item.photoDateTimestamp ? formatToDateHMS(Number(item.photoDateTimestamp)) : '-' }}</span>
formatToDateHMS(Number(item.photoDateTimestamp) || 0)
}}</span>
</div> </div>
<div v-if="item.submitDateTimestamp" class="time-item time-item2"> <div class="time-item time-item2">
<SvgIcon class="svg-time" color="#FFF" size="8" name="submit-time" /> <SvgIcon class="svg-time" color="#FFF" size="8" name="submit-time" />
<span>{{ <span>{{ item.submitDateTimestamp ? formatToDateHMS(Number(item.submitDateTimestamp)) : '-' }}</span>
formatToDateHMS(Number(item.submitDateTimestamp) || 0)
}}</span>
</div> </div>
</div> </div>
<div <div
@ -604,12 +587,11 @@ function reloadList() {
<History :data="taskDetailInfo" /> <History :data="taskDetailInfo" />
</n-tab-pane> </n-tab-pane>
</n-tabs> </n-tabs>
<NotPassed ref="notPassModalRef" @success="reloadList" /> <NotPassed ref="notPassModalRef" @success="(param) => reloadList(param, '不通过')" />
<BatchModal ref="batchModalRef" @reject="rejectHandler" @approval="approvalHandler" /> <BatchModal
<CustomSettingModal ref="batchModalRef"
ref="CustomSettingModalRef" @reject="rejectHandler"
:review-type="3" @approval="approvalHandler"
@on-ok="getTableData"
/> />
</div> </div>
</template> </template>
@ -777,7 +759,23 @@ function reloadList() {
border-radius: 8px; border-radius: 8px;
position: relative; position: relative;
.big-mark { .preview {
position: absolute;
right: 10px;
top: 10px;
z-index: 3;
width: 30px;
height: 30px;
background: rgba(255, 255, 255, 0.20);
border-radius: 6px;
backdrop-filter: blur(10px);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
.big-mark{
width: 100%; width: 100%;
height: 151px; height: 151px;
background: linear-gradient( background: linear-gradient(

@ -19,35 +19,42 @@ defineProps({
<tr> <tr>
<th>图片名称</th> <th>图片名称</th>
<td class="blue"> <td class="blue">
{{ data?.ocrPicture?.imgname }} {{ data?.pictureInfo?.imgname }}
</td> </td>
<th>图片格式</th> <th>图片格式</th>
<td class="blue" /> <td class="blue">
{{ data?.pictureInfo?.imgFormat }}
</td>
</tr> </tr>
<tr> <tr>
<th>图片大小</th> <th>图片大小</th>
<td /> <td class="blue">
{{ (data?.pictureInfo?.imgSize / 1024).toFixed(2) }}kb
</td>
<th>图片尺寸</th> <th>图片尺寸</th>
<td /> <td class="blue">
{{ data?.pictureInfo?.imgMeasure }}
</td>
</tr> </tr>
<tr> <tr>
<th>上传时间</th> <th>上传时间</th>
<td> {{ data?.ocrPicture?.uptime }}</td> <td> {{ data?.pictureInfo?.uploadTime }}</td>
<th>生成时间</th> <th>生成时间</th>
<td> {{ data?.ocrPicture?.gentime }}</td> <td> {{ data?.pictureInfo?.createTime }}</td>
</tr> </tr>
<tr> <tr>
<th>标记时间</th> <th>标记时间</th>
<td /> <td> {{ data?.pictureInfo?.tagTime }}</td>
<th>色彩空间</th> <th>色彩空间</th>
<td>{{ data?.ocrPicture?.space }}</td> <td>{{ data?.pictureInfo?.imgSpace }}</td>
</tr> </tr>
<tr> <tr>
<th> <th>
来源 来源
</th> </th>
<td colspan="3"> <td colspan="3">
{{ data?.ocrPicture?.source }} {{ data?.pictureInfo?.source }}
</td> </td>
</tr> </tr>
</table> </table>
@ -125,7 +132,7 @@ td {
} }
.blue { .blue {
color: #507afd; // color: #507afd;
} }
.black { .black {

@ -1,15 +1,22 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue'
import Aside from './aside/Aside.vue' import Aside from './aside/Aside.vue'
import Content from './content/Content.vue' import Content from './content/Content.vue'
const asideRef: any = ref(null)
function setAsideItemName(text) {
asideRef.value.setAsideItemName(text)
}
</script> </script>
<template> <template>
<div class="main"> <div class="main">
<!-- 侧边 --> <!-- 侧边 -->
<Aside /> <Aside ref="asideRef" />
<!-- 内容 --> <!-- 内容 -->
<Content /> <Content @set-aside-item-name="setAsideItemName" />
</div> </div>
</template> </template>

@ -45,7 +45,7 @@ onMounted(async () => {
<div class="id-wrap"> <div class="id-wrap">
<SvgIcon :name="svgName" size="28" /> <SvgIcon :name="svgName" size="28" />
<span class="list-item-header-name" :class="{ 'list-item-header-selected': selected }"> <span class="list-item-header-name" :class="{ 'list-item-header-selected': selected }">
{{ listItem.name }} <span class="list-item-title" :title="listItem.name">{{ listItem.name }} </span>
<span class="list-item-header-selected">({{ listItem.pictureCount }})</span> <span class="list-item-header-selected">({{ listItem.pictureCount }})</span>
</span> </span>
</div> </div>
@ -104,15 +104,21 @@ onMounted(async () => {
} }
.list-item-header-name { .list-item-header-name {
width: 226px; width: 250px;
font-size: 16px; font-size: 16px;
font-family: PingFang SC, PingFang SC-Medium; font-family: PingFang SC, PingFang SC-Medium;
font-weight: 700; font-weight: 700;
color: #333333; color: #333333;
margin-bottom: 0 0 8px 8px;
display: flex;
justify-content: space-between;
.list-item-title{
width: 200px;
display: inline-block;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
margin-bottom: 0 0 8px 8px; }
} }
&-name { &-name {

@ -21,7 +21,7 @@ import { computed, onUnmounted, onUpdated, reactive, ref, unref, watch } from "v
import ConfrimModal from "../modal/ConfrimModal.vue"; import ConfrimModal from "../modal/ConfrimModal.vue";
import type { ApprovalParam, SimilarityPictureSortParam } from "/#/api"; import type { ApprovalParam, SimilarityPictureSortParam } from "/#/api";
const batch = ref(false); const batch = ref(false); //
const selectItems = ref<any[]>([]); const selectItems = ref<any[]>([]);
const message = useMessage(); const message = useMessage();
const dialog = useDialog(); const dialog = useDialog();
@ -370,7 +370,8 @@ function doAudit(param: any) {
} }
function reloadList() { function reloadList() {
loadMore() setBatch(false)
refreshHandler()
} }
</script> </script>
@ -479,7 +480,7 @@ function reloadList() {
<!-- 右侧任务 标题信息 --> <!-- 右侧任务 标题信息 -->
<div class="right"> <div class="right">
<n-scrollbar style="max-height: 100%"> <n-scrollbar style="max-height: 100%">
<span class="task-name">任务ID{{ taskDetailInfo.taskname }}</span> <span class="task-name" :title="taskDetailInfo.taskname">任务ID{{ taskDetailInfo.taskname }}</span>
<div class="tags"> <div class="tags">
<div class="tag tag-submiting" v-if="taskDetailInfo.states == 1">{{ TASK_STATUS_OBJ[taskDetailInfo.states] <div class="tag tag-submiting" v-if="taskDetailInfo.states == 1">{{ TASK_STATUS_OBJ[taskDetailInfo.states]
}}</div> }}</div>
@ -495,7 +496,7 @@ function reloadList() {
<div class="property"> <div class="property">
<span class="property-name top" style=" color: #666666">图片大小 <span class="property-name top" style=" color: #666666">图片大小
</span> </span>
<span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo && <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo && taskDetailInfo?.pictureInfo?.imgSize&&
(taskDetailInfo?.pictureInfo?.imgSize / 1000).toFixed(2) }}KB</span> (taskDetailInfo?.pictureInfo?.imgSize / 1000).toFixed(2) }}KB</span>
</div> </div>
<div class="property"> <div class="property">
@ -521,8 +522,7 @@ function reloadList() {
<div class="property"> <div class="property">
<span class="property-name top" style=" color: #666666">创建时间 <span class="property-name top" style=" color: #666666">创建时间
</span> </span>
<span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo && <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo && taskDetailInfo?.pictureInfo.createTime }}</span>
format(taskDetailInfo?.pictureInfo?.createTime, 'yyyy-MM-dd HH:mm:ss') }}</span>
</div> </div>
<div class="property"> <div class="property">
<span class="property-name top" style=" color: #666666">提报时间 <span class="property-name top" style=" color: #666666">提报时间
@ -576,7 +576,7 @@ function reloadList() {
</div> </div>
</div> </div>
<div class="check"> <div class="check">
<n-checkbox v-show="batch" v-model:checked="item.checked" @click.stop <n-checkbox v-show="batch && item.historyStates !== 2 && item.historyStates !== 3" v-model:checked="item.checked" @click.stop
@update:checked="onCheckChange($event, item)" /> @update:checked="onCheckChange($event, item)" />
</div> </div>
<div class="percent"> <div class="percent">

Loading…
Cancel
Save