feat: 页面重绘

pull/1/head
lizijiee 1 year ago
parent e31ff5a985
commit 3388029176

@ -108,6 +108,9 @@ export async function getTaskDetailPictureList(params: PageParam & PictureSortPa
iztrueorfalse: item.iztrueorfalse, iztrueorfalse: item.iztrueorfalse,
states: item.states, states: item.states,
history: item.ocpictureid && item.picturecompare && hasHistory(item.ocpictureid, item.picturecompare), history: item.ocpictureid && item.picturecompare && hasHistory(item.ocpictureid, item.picturecompare),
historyStates:item.historyStates,
submitDateTimestamp:item.submitDateTimestamp,
photoDateTimestamp:item.photoDateTimestamp,
} }
}) })

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 16 16"><g fill="white"><path d="M15 12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1.172a3 3 0 0 0 2.12-.879l.83-.828A1 1 0 0 1 6.827 3h2.344a1 1 0 0 1 .707.293l.828.828A3 3 0 0 0 12.828 5H14a1 1 0 0 1 1 1zM2 4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-1.172a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 9.172 2H6.828a2 2 0 0 0-1.414.586l-.828.828A2 2 0 0 1 3.172 4z"/><path d="M8 11a2.5 2.5 0 1 1 0-5a2.5 2.5 0 0 1 0 5m0 1a3.5 3.5 0 1 0 0-7a3.5 3.5 0 0 0 0 7M3 6.5a.5.5 0 1 1-1 0a.5.5 0 0 1 1 0"/></g></svg>

After

Width:  |  Height:  |  Size: 607 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 21H7m10 0h.803c1.118 0 1.677 0 2.104-.218c.377-.192.683-.498.875-.874c.218-.427.218-.987.218-2.105V9.22c0-.45 0-.675-.048-.889a1.994 1.994 0 0 0-.209-.545c-.106-.19-.256-.355-.55-.682l-2.755-3.062c-.341-.378-.514-.57-.721-.708a1.999 1.999 0 0 0-.61-.271C15.863 3 15.6 3 15.075 3H6.2c-1.12 0-1.68 0-2.108.218a1.999 1.999 0 0 0-.874.874C3 4.52 3 5.08 3 6.2v11.6c0 1.12 0 1.68.218 2.107c.192.377.497.683.874.875c.427.218.987.218 2.105.218H7m10 0v-3.803c0-1.118 0-1.678-.218-2.105a2.001 2.001 0 0 0-.875-.874C15.48 14 14.92 14 13.8 14h-3.6c-1.12 0-1.68 0-2.108.218a1.999 1.999 0 0 0-.874.874C7 15.52 7 16.08 7 17.2V21m8-14H9"/></svg>

After

Width:  |  Height:  |  Size: 818 B

@ -1,23 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="64px" height="64px" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>放大</title> <title>放大</title>
<defs> <defs>
<rect id="path-1" x="0" y="0" width="16" height="16"></rect> <rect id="path-1" x="0" y="0" width="64" height="64"></rect>
</defs> </defs>
<g id="-index" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="图片放大" transform="translate(-1174.000000, -447.000000)"> <g id="PrevailCloud-Design-图标集" transform="translate(-1720.000000, -2805.000000)">
<g id="编组-29" transform="translate(1026.000000, 430.000000)"> <g id="放大" transform="translate(1720.000000, 2805.000000)">
<g id="编组-13备份-2" transform="translate(142.000000, 11.000000)">
<g id="放大" transform="translate(6.000000, 6.000000)">
<mask id="mask-2" fill="white"> <mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use> <use xlink:href="#path-1"></use>
</mask> </mask>
<use id="蒙版" fill="#000000" fill-rule="nonzero" opacity="0" xlink:href="#path-1"></use> <use id="蒙版" fill="#000000" fill-rule="nonzero" opacity="0" xlink:href="#path-1"></use>
<g id="编组" mask="url(#mask-2)" fill="#666666" fill-rule="nonzero"> <g id="编组" mask="url(#mask-2)" fill="#ffffff" fill-rule="nonzero">
<g transform="translate(1.750000, 1.750000)" id="形状"> <g transform="translate(7.000000, 7.000000)" id="形状">
<path d="M11.1402432,10.1416427 C11.1680207,10.1624758 11.1937149,10.1846978 11.2187146,10.2096975 L12.2291206,11.2194091 C12.4149505,11.3988049 12.489504,11.6645212 12.4241187,11.9144019 C12.3587335,12.1642826 12.1635882,12.3594279 11.9137075,12.4248132 C11.6638267,12.4901984 11.3981105,12.4156449 11.2187146,12.229815 L10.2090031,11.2194091 C10.1844588,11.1949242 10.1617147,11.1686989 10.1409482,11.1409377 C7.54738474,13.2042331 3.79420765,12.8843106 1.58727663,10.4118189 C-0.619654391,7.93932727 -0.51289924,4.17405278 1.83057677,1.83057677 C4.17405278,-0.51289924 7.93932727,-0.619654391 10.4118189,1.58727663 C12.8843106,3.79420765 13.2042331,7.54738474 11.1409377,10.1409482 L11.1409377,10.1416427 L11.1402432,10.1416427 Z M5.71391175,5.71460619 L5.71391175,4.28614909 C5.70578865,4.02566909 5.84011531,3.78142274 6.06444104,3.64878118 C6.28876677,3.51613963 6.56751385,3.51613963 6.79183958,3.64878118 C7.01616531,3.78142274 7.15049197,4.02566909 7.14236887,4.28614909 L7.14236887,5.71460619 L8.57082597,5.71460619 C8.83130603,5.706483 9.07555248,5.84080963 9.20819409,6.0651354 C9.3408357,6.28946117 9.3408357,6.56820832 9.20819409,6.79253409 C9.07555248,7.01685985 8.83130603,7.15118649 8.57082597,7.14306329 L7.14236887,7.14306329 L7.14236887,8.57152041 C7.15049197,8.83200041 7.01616531,9.07624677 6.79183958,9.20888832 C6.56751385,9.34152987 6.28876677,9.34152987 6.06444104,9.20888832 C5.84011531,9.07624677 5.70578865,8.83200041 5.71391175,8.57152041 L5.71391175,7.14306329 L4.28545464,7.14306329 C4.02497459,7.15118649 3.78072814,7.01685985 3.64808653,6.79253409 C3.51544491,6.56820832 3.51544491,6.28946117 3.64808653,6.0651354 C3.78072814,5.84080963 4.02497459,5.706483 4.28545464,5.71460619 L5.71391175,5.71460619 Z M6.24932275,11.071494 C7.98553481,11.0923319 9.59885248,10.1780144 10.4730296,8.67778745 C11.3472067,7.17756051 11.3472067,5.32316832 10.4730296,3.82294138 C9.59885248,2.32271443 7.98553481,1.40839695 6.24932275,1.42923486 C3.60925424,1.46092082 1.4857089,3.61010576 1.4857089,6.25036441 C1.4857089,8.89062307 3.60925424,11.039808 6.24932275,11.071494 Z"></path> <path d="M44.560973,40.5665707 C44.6720829,40.6499032 44.7748596,40.7387911 44.8748585,40.8387901 L48.9164824,44.8776363 C49.6598018,45.5952197 49.958016,46.6580848 49.6964749,47.6576076 C49.4349339,48.6571305 48.6543527,49.4377117 47.6548299,49.6992527 C46.655307,49.9607937 45.5924419,49.6625796 44.8748585,48.9192602 L40.8360124,44.8776363 C40.7378353,44.7796968 40.6468589,44.6747954 40.563793,44.5637507 C30.189539,52.8169323 15.1768306,51.5372425 6.34910651,41.6472758 C-2.47861756,31.7573091 -2.05159696,16.6962111 7.32230707,7.32230707 C16.6962111,-2.05159696 31.7573091,-2.47861756 41.6472758,6.34910651 C51.5372425,15.1768306 52.8169323,30.189539 44.5637507,40.563793 L44.5637507,40.5665707 L44.560973,40.5665707 Z M22.855647,22.8584248 L22.855647,17.1445963 C22.8231546,16.1026764 23.3604612,15.1256909 24.2577642,14.5951247 C25.1550671,14.0645585 26.2700554,14.0645585 27.1673583,14.5951247 C28.0646612,15.1256909 28.6019679,16.1026764 28.5694755,17.1445963 L28.5694755,22.8584248 L34.2833039,22.8584248 C35.3252241,22.825932 36.3022099,23.3632385 36.8327764,24.2605416 C37.3633428,25.1578447 37.3633428,26.2728333 36.8327764,27.1701363 C36.3022099,28.0674394 35.3252241,28.604746 34.2833039,28.5722532 L28.5694755,28.5722532 L28.5694755,34.2860817 C28.6019679,35.3280017 28.0646612,36.3049871 27.1673583,36.8355533 C26.2700554,37.3661195 25.1550671,37.3661195 24.2577642,36.8355533 C23.3604612,36.3049871 22.8231546,35.3280017 22.855647,34.2860817 L22.855647,28.5722532 L17.1418186,28.5722532 C16.0998983,28.604746 15.1229125,28.0674394 14.5923461,27.1701363 C14.0617797,26.2728333 14.0617797,25.1578447 14.5923461,24.2605416 C15.1229125,23.3632385 16.0998983,22.825932 17.1418186,22.8584248 L22.855647,22.8584248 Z M24.997291,44.2859759 C31.9421392,44.3693275 38.3954099,40.7120576 41.8921184,34.7111498 C45.3888269,28.710242 45.3888269,21.2926733 41.8921184,15.2917655 C38.3954099,9.29085771 31.9421392,5.63358778 24.997291,5.71693946 C14.4370169,5.84368327 5.94283561,14.440423 5.94283561,25.0014577 C5.94283561,35.5624923 14.4370169,44.1592321 24.997291,44.2859759 Z"></path>
</g>
</g>
</g> </g>
</g> </g>
</g> </g>

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

@ -5,6 +5,7 @@ getTaskDetailPictureList,
setTF setTF
} from "@/api/work/work"; } from "@/api/work/work";
import { fieldMap } from "@/config/workorder"; import { fieldMap } from "@/config/workorder";
import { TASK_STATUS_OBJ } from '@/enums/index';
import { useWorkOrder } from "@/store/modules/workOrder"; import { useWorkOrder } from "@/store/modules/workOrder";
import { isEmpty } from "@/utils"; import { isEmpty } from "@/utils";
import { formatToDateHMS } from "@/utils/dateUtil"; import { formatToDateHMS } from "@/utils/dateUtil";
@ -133,7 +134,7 @@ function trueHandler() {
onPositiveClick: () => { onPositiveClick: () => {
setTrue(); setTrue();
}, },
onNegativeClick: () => {}, onNegativeClick: () => { },
}); });
} }
@ -227,7 +228,7 @@ async function featchList() {
try { try {
taskpagination.pageNo += 1; taskpagination.pageNo += 1;
const { data, total, pageCount } = await getTaskDetailPictureList( const { data, total, pageCount } = await getTaskDetailPictureList(
{ ...taskpagination, ...sortBy ,checkDuplicateId: workStore.activeId} { ...taskpagination, ...sortBy, checkDuplicateId: workStore.activeId }
); );
totalCount.value = total; totalCount.value = total;
@ -297,7 +298,7 @@ async function queryDetail(checkDuplicateId: any) {
refreshHandler(); refreshHandler();
} }
async function handleSelect(item: any) { async function handleSelect(item: any) {
taskDetailInfo.value = await getTaskDetailInfo( workStore.activeId); taskDetailInfo.value = await getTaskDetailInfo(workStore.activeId);
const packageid = workStore.getActiveId; const packageid = workStore.getActiveId;
@ -334,7 +335,7 @@ async function clearHandler() {
onPositiveClick: () => { onPositiveClick: () => {
clearMark(); clearMark();
}, },
onNegativeClick: () => {}, onNegativeClick: () => { },
}); });
} }
@ -367,7 +368,7 @@ onUnmounted(() => {
function getPercent(pictureid: string) { function getPercent(pictureid: string) {
const { ocpictureid, pictureresult } = taskDetailInfo.value; const { ocpictureid, pictureresult } = taskDetailInfo.value;
const index = ocpictureid ? ocpictureid.split(",").indexOf(String(pictureid)):''; const index = ocpictureid ? ocpictureid.split(",").indexOf(String(pictureid)) : '';
const results = pictureresult ? pictureresult.split(",") : ''; const results = pictureresult ? pictureresult.split(",") : '';
const percent = results[index] || "0"; const percent = results[index] || "0";
const val = Math.floor(Number.parseFloat(percent)); const val = Math.floor(Number.parseFloat(percent));
@ -418,12 +419,7 @@ function previewHandler(event: MouseEvent) {
<SvgIcon style="margin-right: 6px" size="14" name="tf" /> <SvgIcon style="margin-right: 6px" size="14" name="tf" />
辨别真假 辨别真假
</div> </div>
<SvgIcon <SvgIcon style="cursor: pointer" size="20" name="immersion-model" @click="immersionHandler" />
style="cursor: pointer"
size="20"
name="immersion-model"
@click="immersionHandler"
/>
</div> </div>
<div v-show="showActions" class="batch"> <div v-show="showActions" class="batch">
@ -447,157 +443,116 @@ function previewHandler(event: MouseEvent) {
<n-spin :show="loading"> <n-spin :show="loading">
<div ref="el" class="scroll"> <div ref="el" class="scroll">
<div class="wrapper-detail"> <div class="wrapper-detail">
<div <!-- 左侧大图 图片信息 -->
class="left" <div class="left" :style="{ 'background-image': `url(${taskDetailInfo?.imgurl})` }" @click="showAction"
:style="{ 'background-image': `url(${taskDetailInfo?.imgurl})` }" @mouseleave="leaveTaskHandler">
@click="showAction"
@mouseleave="leaveTaskHandler"
>
<!-- 真假标记 --> <!-- 真假标记 -->
<div class="mark"> <div class="mark">
<SvgIcon <SvgIcon v-show="taskDetailInfo?.iztrueorfalse === 0" size="128" name="jia" />
v-show="taskDetailInfo?.iztrueorfalse === 0"
size="128"
name="jia"
/>
</div> </div>
<div class="mark"> <div class="mark">
<SvgIcon <SvgIcon v-show="taskDetailInfo?.iztrueorfalse === 1" size="128" name="zhen" />
v-show="taskDetailInfo?.iztrueorfalse === 1" </div>
size="128" <div class="footer-times">
name="zhen" <div class="time" style="margin-bottom: 4px;">
/> <SvgIcon color="#FFF" size="16" name="camera" />
<span class="time-value">{{ taskDetailInfo.createTime }} </span>
</div> </div>
<div class="time"> <div class="time">
<SvgIcon color="#FFF" size="16" name="time" /> <SvgIcon color="#FFF" size="16" name="save" />
<span>{{ taskDetailInfo.createTime }} </span> <span class="time-value">{{ taskDetailInfo.createTime }} </span>
</div>
</div>
<div class="status">
<img v-show="taskDetailInfo?.states === 3" class="img-status" src="@/assets/images/task/pass.png" alt="">
<img v-show="taskDetailInfo?.states === 5" class="img-status" src="@/assets/images/task/not_pass.png"
alt="">
</div> </div>
<!-- 右下信息 --> <!-- 右下信息 -->
<div class="info"> <div class="info img-info">
<n-grid x-gap="16" y-gap="0" :cols="12"> <n-grid x-gap="12" y-gap="10" :cols="12">
<!-- <n-gi span="4"> <n-gi span="4" class="gi1">
<span style="color: #8b8d8f"> <span>
<SvgIcon name="m1" /> <img class="icon-status" src="@/assets/images/task/status.png" alt="">
</span> </span>
</n-gi> </n-gi>
<n-gi <n-gi span="8" class="gi2">
span="8" <span class="value">{{ TASK_STATUS_OBJ[taskDetailInfo.states] }}</span>
style=" <span class="label">审批状态</span>
display: flex; </n-gi>
align-items: left; <n-gi span="4" class="gi1">
flex-direction: column; <span>
justify-content: center; <img class="icon-status" src="@/assets/images/task/similarity.png" alt="">
"
>
<span>{{ mark }}</span>
<span>图片标记</span>
</n-gi> -->
<n-gi span="4">
<span style="color: #8b8d8f">
<SvgIcon name="m2" />
</span> </span>
</n-gi> </n-gi>
<n-gi <n-gi span="8" class="gi2">
span="8" <span class="value num">{{
style=" totalCount
display: flex; }}<span class="unit"></span> </span>
align-items: left; <span class="label">相似匹配</span>
flex-direction: column;
justify-content: center;
"
>
<span>{{ totalCount }}</span>
<span>相似匹配</span>
</n-gi> </n-gi>
</n-grid> </n-grid>
</div> </div>
<!-- 右上点击大图 --> <!-- 右上点击大图 -->
<div class="preview" @click="previewHandler"> <div class="preview" @click="previewHandler">
<SvgIcon size="30" name="zoom-out" /> <SvgIcon size="16" name="zoom-out" />
</div> </div>
<!-- 预览大图组件 --> <!-- 预览大图组件 -->
<div style="display: none"> <div style="display: none">
<n-image <n-image ref="imageRef" :img-props="{ onClick: hideDownload }" :src="taskDetailInfo?.imgurl" />
ref="imageRef"
:img-props="{ onClick: hideDownload }"
:src="taskDetailInfo?.imgurl"
/>
</div> </div>
<!-- 操作 --> <!-- 操作 -->
<div <div v-show="overTask && overTask.id === taskDetailInfo.id" class="action" @click.stop="hideAction">
v-show="overTask && overTask.id === taskDetailInfo.id"
class="action"
@click.stop="hideAction"
>
<SvgIcon style="cursor: pointer" name="t1" @click.stop="trueHandler" /> <SvgIcon style="cursor: pointer" name="t1" @click.stop="trueHandler" />
<SvgIcon <SvgIcon style="cursor: pointer; margin-left: 30px" name="t2" @click.stop="falseHandler" />
style="cursor: pointer; margin-left: 30px"
name="t2"
@click.stop="falseHandler"
/>
</div> </div>
</div> </div>
<!-- 右侧任务 标题信息 -->
<div class="right"> <div class="right">
<n-scrollbar style="max-height: 100%"> <n-scrollbar style="max-height: 100%">
<span class="name">任务ID{{taskDetailInfo.taskname}}</span> <span class="task-name">任务ID{{ taskDetailInfo.taskname }}</span>
<div class="tags"> <div class="tags">
<div class="tag tag-actived">重复图片</div> <div class="tag tag-approved">已审批</div>
<div class="tag">基线任务</div> <div class="tag tag-passed">通过</div>
</div> </div>
<n-divider /> <n-divider class="divider-line" />
<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" <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo &&
>{{ taskDetailInfo?.pictureInfo && (taskDetailInfo?.pictureInfo?.imgSize /1000).toFixed(2) }}KB</span (taskDetailInfo?.pictureInfo?.imgSize / 1000).toFixed(2) }}KB</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">图片格式
>图片格式
</span> </span>
<span style=" color: #333333; font-size: 16px" <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo?.imgFormat }}</span>
>{{ taskDetailInfo?.pictureInfo?.imgFormat }}</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">图片尺寸
>图片尺寸
</span> </span>
<span style=" color: #333333; font-size: 16px" <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo?.imgMeasure }}</span>
>{{ taskDetailInfo?.pictureInfo?.imgMeasure }}</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">色彩空间
>色彩空间
</span> </span>
<span style=" color: #333333; font-size: 16px" <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo?.imgSpace }}</span>
>{{ taskDetailInfo?.pictureInfo?.imgSpace }}</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">提报人
>提报人
</span> </span>
<span style=" color: #333333; font-size: 16px" <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo?.source || "-" }}</span>
>{{ taskDetailInfo?.pictureInfo?.source || "-" }}</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">创建时间
>创建时间
</span> </span>
<span style=" color: #333333; font-size: 16px" <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.pictureInfo &&
>{{ taskDetailInfo?.pictureInfo && format(taskDetailInfo?.pictureInfo?.createTime, 'yyyy-MM-dd HH:mm:ss')}}</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">提报时间
>提报时间
</span> </span>
<span style=" color: #333333; font-size: 16px" <span style=" color: #333333; font-size: 16px">{{ taskDetailInfo?.uploadTime &&
>{{ taskDetailInfo?.uploadTime && format(taskDetailInfo?.pictureInfo?.uploadTime, 'yyyy-MM-dd HH:mm:ss') || '-'}}</span> format(taskDetailInfo?.pictureInfo?.uploadTime, 'yyyy-MM-dd HH:mm:ss') || '-' }}</span>
</div> </div>
<div v-for="key in Object.keys(propertys)" :key="key" class="property"> <div v-for="key in Object.keys(propertys)" :key="key" class="property">
<span class="property-name">{{ fieldMap[key] }}</span> <span class="property-name">{{ fieldMap[key] }}</span>
@ -608,48 +563,41 @@ function previewHandler(event: MouseEvent) {
</div> </div>
<div style="display: flex; justify-content: space-between; padding: 12px 0px"> <div style="display: flex; justify-content: space-between; padding: 12px 0px">
<div> <div>
<span style="font-size: 21px; font-weight: bold">相似图片</span <!-- <span style="font-size: 21px; font-weight: bold">任务包图片</span><span>({{ totalCount }})</span> -->
><span>({{ totalCount }})</span> <span
style="font-size: 18px; font-weight: Medium;color: #333333;font-family: PingFang SC, PingFang SC-Medium;">任务包图片</span>
</div> </div>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<div style="cursor: pointer" @click="sortHandler('createdate')"> <div style="cursor: pointer" @click="sortHandler('createdate')">
<span>时间排序</span> <span>时间排序</span>
<SvgIcon style="margin-left: 8px" name="sort" size="12" /> <SvgIcon style="margin-left: 8px" name="sort" size="12" />
</div> </div>
<div <div style="margin-left: 15px; cursor: pointer" @click="sortHandler('similarityScore')">
style="margin-left: 15px; cursor: pointer"
@click="sortHandler('similarityScore')"
>
<span>相似度排序</span> <span>相似度排序</span>
<SvgIcon style="margin-left: 8px" name="sort" size="12" /> <SvgIcon style="margin-left: 8px" name="sort" size="12" />
</div> </div>
</div> </div>
</div> </div>
<div class="wrapper-list"> <div class="wrapper-list">
<div <div v-for="(item, index) in listData" :key="index" :class="{ 'item-selected': item === selectTask }"
v-for="(item, index) in listData" class="grid-item" @click="handleSelect(item)" @mouseover="overTaskHandelr(item)"
:key="index" @mouseleave="leaveTaskHandler">
:class="{ 'item-selected': item === selectTask }" <div class="img-wrapper" :style="{ 'background-image': `url(${item.imgurl})` }" />
class="grid-item" <div class="time-wrapper">
@click="handleSelect(item)" <div class="time">
@mouseover="overTaskHandelr(item)" <SvgIcon color="#FFF" size="16" name="camera" />
@mouseleave="leaveTaskHandler" <span class="current-time">{{ item.photoDateTimestamp ? formatToDateHMS(item.photoDateTimestamp || 0) : ''
> }}</span>
<div </div>
class="img-wrapper"
:style="{ 'background-image': `url(${item.imgurl})` }"
/>
<div class="time"> <div class="time">
<SvgIcon color="#FFF" size="16" name="time" /> <SvgIcon color="#FFF" size="16" name="save" />
<span>{{ formatToDateHMS(item.createdate || 0) }}</span> <span class="current-time">{{ item.submitDateTimestamp ? formatToDateHMS(item.submitDateTimestamp || 0) : ''
}}</span>
</div>
</div> </div>
<div class="check"> <div class="check">
<n-checkbox <n-checkbox v-show="batch" v-model:checked="item.checked" @click.stop
v-show="batch" @update:checked="onCheckChange($event, item)" />
v-model:checked="item.checked"
@click.stop
@update:checked="onCheckChange($event, item)"
/>
</div> </div>
<div class="percent"> <div class="percent">
<SvgIcon size="42" name="tag" /> <SvgIcon size="42" name="tag" />
@ -657,16 +605,15 @@ function previewHandler(event: MouseEvent) {
{{ item?.maxSimilarity && Number(item?.maxSimilarity).toFixed(0) }}% {{ item?.maxSimilarity && Number(item?.maxSimilarity).toFixed(0) }}%
</div> </div>
</div> </div>
<!-- <div class="pass-status"> <div class="pass-status" v-if="item.historyStates === 1">
<SvgIcon name="pass-icon" style="width:52;height:24px"/> <SvgIcon name="repeat-icon" style="width:52;height:24px" />
</div> --> </div>
<!-- <div class="pass-status"> <div class="pass-status" v-else-if="item.historyStates === 2">
<SvgIcon name="no-pass-icon" style="width:52;height:24px"/> <SvgIcon name="pass-icon" style="width:52;height:24px" />
</div>--> </div>
<!-- <div class="pass-status"> <div class="pass-status" v-else-if="item.historyStates === 3">
<SvgIcon name="repeat-icon" style="width:52;height:24px"/> <SvgIcon name="no-pass-icon" style="width:52;height:24px" />
</div> --> </div>
<!-- <div class="mark"> <!-- <div class="mark">
<SvgIcon name="jia" /> <SvgIcon name="jia" />
</div> </div>
@ -752,20 +699,19 @@ function previewHandler(event: MouseEvent) {
} }
.font { .font {
font-size: 18px; font-size: 20px;
font-weight: bold; font-family: PingFang SC, PingFang SC-Medium;
color: #333333; font-weight: 500;
line-height: 25px; color: #0d0b22;
margin-left: 12px;
} }
} }
&-detail { &-detail {
display: flex; display: flex;
height: calc((100vh - 88px - 72px) / 2); height: 350px;
.left { .left {
flex: 1; flex: 0.6;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
background-repeat: no-repeat; background-repeat: no-repeat;
@ -774,13 +720,14 @@ function previewHandler(event: MouseEvent) {
.preview { .preview {
position: absolute; position: absolute;
z-index: 3;
right: 10px; right: 10px;
top: 10px; top: 10px;
width: 50px; z-index: 3;
height: 50px; width: 30px;
background-color: rgba(255, 255, 255, 0.6); height: 30px;
border-radius: 10px; background: rgba(255, 255, 255, 0.20);
border-radius: 6px;
backdrop-filter: blur(10px);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -803,16 +750,40 @@ function previewHandler(event: MouseEvent) {
} }
} }
.info { .status {
position: absolute; position: absolute;
z-index: 3; z-index: 3;
right: 2%; left: 0;
bottom: 2%; top: 0;
width: 136px;
height: 60px; .img-status {
opacity: 0.44; width: 133px;
background: rgba(216, 216, 216, 0.4); height: 129px;
border-radius: 7px; }
}
.footer-times {
width: 100%;
height: 80px;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.71) 100%);
border-radius: 0px 8px 8px 0px;
position: absolute;
bottom: 0;
padding-left: 17px;
display: flex;
flex-direction: column;
justify-content: center;
font-weight: Medium;
.time {
color: white;
font-size: 15px;
line-height: 21px;
&-value {
margin-left: 7px;
}
}
} }
.action { .action {
@ -826,27 +797,102 @@ function previewHandler(event: MouseEvent) {
justify-content: center; justify-content: center;
background-color: rgba(102, 102, 102, 0.5); background-color: rgba(102, 102, 102, 0.5);
} }
.info {
position: absolute;
z-index: 3;
right: 2%;
bottom: 2%;
width: 136px;
height: 119px;
background: rgba(216, 216, 216, 0.4);
border-radius: 7px;
padding: 16px 0 0 23px;
color: #fff;
}
.img-info {
color: lime !important;
.icon-status {
width: 32px;
height: 32px;
}
.label {
font-size: 11px;
font-family: PingFang SC, PingFang SC-Medium;
font-weight: 500;
color: #ffffff;
display: block;
}
.value {
font-size: 15px;
font-family: PingFang SC, PingFang SC-Semibold;
font-weight: 600;
color: #ffffff;
}
.num {
font-size: 18px;
font-family: PingFang SC, PingFang SC-Semibold;
font-weight: 600;
color: #ffffff;
}
.unit {
font-size: 11px;
}
}
} }
.right { .right {
flex: 1; // flex: 1;
display: flex; // display: flex;
flex-direction: column; // flex-direction: column;
justify-content: space-between; // justify-content: space-between;
background: #fafafa; // // background: #fafafa;
// border-radius: 8px;
// margin-left: 20px;
// padding: 24px;
// width: 24vw;
flex: 0.5;
background: #f9f9f9;
border-radius: 8px; border-radius: 8px;
margin-left: 20px; margin-left: 20px;
padding: 24px; padding: 24px;
// background: lime;
.name {
font-size: 22px; .task-name {
font-weight: bold; display: inline-block;
width: 100%;
font-size: 18px;
color: #0d0b22; color: #0d0b22;
line-height: 25px;
font-family: PingFang SC, PingFang SC-Medium;
font-weight: Medium;
max-width: 445px;
/* 设置文本溢出时的样式为省略号 */
text-overflow: ellipsis;
/* 隐藏超出容器的文本 */
overflow: hidden;
/* 确保文本不换行 */
white-space: nowrap;
}
// ::v-deep(.n-divider:not(.n-divider--vertical)) {
::v-deep(.divider-line .n-divider__line) {
background-color: #e8e8e8;
} }
.tags { .tags {
display: flex; display: flex;
margin-top: 12px; margin-top: 8px;
} }
.tag { .tag {
@ -860,26 +906,32 @@ function previewHandler(event: MouseEvent) {
line-height: 16px; line-height: 16px;
} }
.tag-actived { .tag-passed {
color: #fe9800; color: #02C984;
border: 1px solid #fe9800; border: 1px solid #02C984;
}
.tag-approved {
color: #507afd;
border: 1px solid #507afd;
} }
.property { .property {
display: flex; display: flex;
align-items: center; align-items: center;
margin-top: 10px; margin-top: 12px;
line-height: 20px;
} }
.property-name { .property-name {
width: 100px; width: 56px;
text-align: right;
color: #999999; color: #999999;
position: relative; position: relative;
margin-right: 32px;
} }
.top { .top {}
}
.property-content { .property-content {
flex: 1; flex: 1;
@ -916,6 +968,26 @@ function previewHandler(event: MouseEvent) {
border-radius: 8px; border-radius: 8px;
} }
.time-wrapper {
position: absolute;
bottom: 0;
width: 100%;
height: 58px;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.71) 100%);
border-radius: 0px 8px 8px 0px;
display: flex;
flex-direction: column;
justify-content: center;
font-weight: Medium;
padding-left: 12px;
color: white;
.time .current-time {
margin-left: 9px;
font-weight: Medium;
}
}
.check { .check {
position: absolute; position: absolute;
z-index: 3; z-index: 3;
@ -927,7 +999,7 @@ function previewHandler(event: MouseEvent) {
position: absolute; position: absolute;
text-align: center; text-align: center;
z-index: 3; z-index: 3;
right: 12px; right: 17px;
top: 2px; top: 2px;
color: #fff; color: #fff;
@ -949,11 +1021,13 @@ function previewHandler(event: MouseEvent) {
line-height: 24px; line-height: 24px;
} }
} }
.pass-status { .pass-status {
position: absolute; position: absolute;
left: 0px; left: 0px;
top: 14px; top: 15px;
} }
.mark { .mark {
position: absolute; position: absolute;
z-index: 3; z-index: 3;
@ -984,6 +1058,8 @@ function previewHandler(event: MouseEvent) {
justify-content: space-around; justify-content: space-around;
background-color: #666666; background-color: #666666;
} }
} }
} }
} }
@ -992,14 +1068,4 @@ function previewHandler(event: MouseEvent) {
margin-top: 12px; margin-top: 12px;
margin-bottom: 12px; margin-bottom: 12px;
} }
.time {
position: absolute;
z-index: 3;
left: 5%;
bottom: 5%;
color: #fff;
display: flex;
align-items: center;
}
</style> </style>

Loading…
Cancel
Save