Merge branch 'test' of https://git.mcnetmart.com/guoxiangbin/ocr-web into fix/suspiciousSort

pull/137/head
raofuzi 2 years ago
commit 3b7a3f4b19

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="96px" height="96px" viewBox="0 0 96 96" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>可疑文件夹</title>
<defs>
<radialGradient cx="49.9999974%" cy="50.0000039%" fx="49.9999974%" fy="50.0000039%" r="110.414469%" gradientTransform="translate(0.500000,0.500000),rotate(75.075110),scale(1.000000,1.409640),translate(-0.500000,-0.500000)" id="radialGradient-1">
<stop stop-color="#FFFCFC" stop-opacity="0.1" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0.41" offset="100%"></stop>
</radialGradient>
<linearGradient x1="-0.00164029895%" y1="20.3389764%" x2="49.9999972%" y2="99.9999913%" id="linearGradient-2">
<stop stop-color="#3964EA" stop-opacity="0.18" offset="0%"></stop>
<stop stop-color="#A37D7D" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<rect id="path-3" x="0" y="0" width="95.9411163" height="95.9411163" rx="15.9901861"></rect>
<rect id="path-4" x="0" y="0" width="95.9411163" height="95.9411163" rx="15.9901861"></rect>
<filter x="-1.6%" y="-1.6%" width="103.1%" height="103.1%" filterUnits="objectBoundingBox" id="filter-5">
<feOffset dx="3" dy="0" in="SourceAlpha" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 0.80541166 0 0 0 0 0.85265276 0 0 0 0 1 0 0 0 0.37 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-6">
<stop stop-color="#92C0FF" offset="0%"></stop>
<stop stop-color="#507AFD" offset="100%"></stop>
</linearGradient>
</defs>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="无法上传iconfont" transform="translate(-392.000000, -80.000000)">
<g id="Frame-18" transform="translate(392.000000, 80.000000)">
<g id="路径">
<use fill="url(#radialGradient-1)" xlink:href="#path-3"></use>
<use fill="url(#linearGradient-2)" xlink:href="#path-3"></use>
</g>
<g id="路径" fill="black" fill-opacity="1">
<use filter="url(#filter-5)" xlink:href="#path-4"></use>
</g>
<g id="编组-50" transform="translate(24.930558, 27.327848)">
<g id="编组" fill="url(#linearGradient-6)">
<path d="M46.0573921,37.8007842 L46.0573921,8.94799551 C46.0573921,5.44326823 42.8673831,5.77157479 42.8673831,5.77157479 C42.8673831,5.77157479 23.8138175,5.79417887 24.8215345,5.77157479 C23.7282311,5.79417887 23.188438,5.20029046 23.188438,5.20029046 C23.188438,5.20029046 22.4280135,3.8954361 21.0648136,1.83035047 C19.6341878,-0.333523352 17.9784228,0.0217020285 17.9784228,0.0217020294 L3.93665198,0.0217020294 C0.0450149641,0.0217020294 0,3.76509234 0,3.76509234 L0,37.6073294 C0,41.7824512 3.15381664,41.2650045 3.15381664,41.2650045 L43.1554403,41.2650045 C46.5298238,41.2650045 46.0573921,37.8007842 46.0573921,37.8007842 Z" id="形状"></path>
</g>
<path d="M43.7347101,9.15040185 C43.7347101,9.30411916 43.6736461,9.4515406 43.5649516,9.56023515 C43.456257,9.6689297 43.3088356,9.72999366 43.1551183,9.72999366 L3.35648058,9.72999366 C3.20276327,9.72999366 3.05534183,9.6689297 2.94664728,9.56023515 C2.83795273,9.4515406 2.77688877,9.30411916 2.77688877,9.15040185 C2.77688877,8.83030213 3.03638086,8.57081004 3.35648058,8.57081004 L43.1551183,8.57081004 C43.3088356,8.57081004 43.456257,8.631874 43.5649516,8.74056855 C43.6736461,8.8492631 43.7347101,8.99668455 43.7347101,9.15040185 L43.7347101,9.15040185 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M33.616325,23.2641708 C33.616325,23.46252 33.5442625,23.6350452 33.3973681,23.7818751 L27.5087797,29.6731039 C27.3620142,29.819805 27.1892958,29.8920608 26.9909466,29.8920608 C26.7925974,29.8920608 26.6200079,29.819805 26.4732424,29.6731039 C26.3264768,29.5261452 26.2542855,29.3562604 26.2542855,29.1552708 L26.2542855,26.2057925 L23.6758103,26.2057925 C22.9236289,26.2057925 22.251238,26.2316165 21.6588308,26.2753435 C21.0637832,26.3217108 20.4738875,26.4041417 19.8865678,26.5227004 C19.3018241,26.6411947 18.7917833,26.803416 18.358957,27.0094287 C17.9261307,27.2181462 17.5217688,27.4835348 17.1456782,27.8080418 C16.772099,28.1351248 16.4655594,28.5215194 16.2261235,28.9698658 C15.9890061,29.4180191 15.8036011,29.9486032 15.6670106,30.5643229 C15.5330605,31.1774666 15.4661499,31.870272 15.4661499,32.6482131 C15.4661499,33.0680951 15.4867576,33.5395609 15.5227567,34.0624815 C15.5227567,34.1088488 15.5330605,34.1989431 15.5536682,34.3329576 C15.574276,34.4669078 15.5845798,34.5674347 15.5845798,34.6369857 C15.5845798,34.7528397 15.5510923,34.8481504 15.4892692,34.9254937 C15.4248701,35.0026438 15.3347113,35.0413476 15.2188574,35.0413476 C15.0952111,35.0413476 14.9895322,34.9769485 14.8968619,34.8455744 C14.8452783,34.7760234 14.7938234,34.691081 14.7449445,34.590554 C14.6985127,34.492603 14.6496338,34.3742375 14.5903867,34.2427989 C14.5336511,34.1114892 14.495076,34.0187545 14.469252,33.9671708 C13.4929618,31.7879056 13.0086806,30.0594984 13.0086806,28.784332 C13.0086806,27.259426 13.2121817,25.9816836 13.619184,24.9538742 C14.8633744,21.8678698 18.2146386,20.322356 23.6808978,20.322356 L26.2568614,20.322356 L26.2568614,17.3754536 C26.2568614,17.1771044 26.328924,17.0045149 26.4756895,16.8577494 C26.6225838,16.7107906 26.792533,16.6387924 26.9935226,16.6387924 C27.1918718,16.6387924 27.3644614,16.710855 27.5112269,16.8577494 L33.3999441,22.7463378 C33.5416221,22.8956792 33.616325,23.0658216 33.616325,23.2641708 L33.616325,23.2641708 Z" id="路径" fill="#FFFFFF" fill-rule="nonzero" transform="translate(23.312503, 25.840070) scale(-1, 1) translate(-23.312503, -25.840070) "></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

@ -82,7 +82,7 @@ const data = [
margin-bottom: 1rem; margin-bottom: 1rem;
.header_item { .header_item {
width: 10%; min-width: 10%;
display: flex; display: flex;
flex-flow: row nowrap; flex-flow: row nowrap;
align-items: center; align-items: center;
@ -92,6 +92,7 @@ const data = [
height: 2.75rem !important; height: 2.75rem !important;
} }
.data_wrap { .data_wrap {
margin-left: .8125rem;
.data_title { .data_title {
font-size: 1.125rem; font-size: 1.125rem;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Bold; font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Bold;

@ -414,7 +414,7 @@ defineExpose({
align-items: center; align-items: center;
position: absolute; position: absolute;
left: 0; left: 0;
top: 0; top: -5px;
width: 100%; width: 100%;
padding: 12px 16px; padding: 12px 16px;
border-bottom: 1px solid #e8e8e8; border-bottom: 1px solid #e8e8e8;

@ -21,7 +21,8 @@ import { getAllfieldList, getfieldList } from '@/api/home/filter'
import { useTaskStore } from '@/store/modules/task' import { useTaskStore } from '@/store/modules/task'
import emitter from '@/utils/mitt' import emitter from '@/utils/mitt'
import { useConfig } from '@/store/modules/asideConfig' import { useConfig } from '@/store/modules/asideConfig'
import { getConditionList } from "@/api/home/filter";
import type { FilterSearchParam } from "/#/api";
const CustomFieldModalRef = ref(null) const CustomFieldModalRef = ref(null)
const collapse = ref(false) const collapse = ref(false)
const taskStore = useTaskStore() const taskStore = useTaskStore()
@ -129,8 +130,33 @@ async function getshowFieldList() {
onMounted(() => { onMounted(() => {
getshowFieldList() getshowFieldList()
window.addEventListener("keydown", handleKeydown);
init()
}) })
async function init(){
try {
const searchParam: FilterSearchParam = {
search_searchname: { value: "", op: "like", type: "string" },
};
const result = await getConditionList(1, searchParam,2);
const { data } = result;
if(data[0]){
AdvanceFilterRef.value.setCurrentlySelectedAdvanced(data[0].searchname);
setTimeout(() => {
filterHandler(data[0].id)
}, 1000);
//filterHandler(data[0].id);
}
// pagination.pageNo += 1
} catch (error) {
return [];
} finally {
}
//currentlySelectedAdvanced.value=""
}
function handleKeydown(event) {
if (event.key === "s") setShowSearch(true)}
// key // key
function scrollHandler(key: string) { function scrollHandler(key: string) {
const element = document.querySelector(`#${key}`) const element = document.querySelector(`#${key}`)

@ -36,8 +36,9 @@ import { hideDownload } from "@/utils/image";
const emit = defineEmits(["setAsideItemName"]); const emit = defineEmits(["setAsideItemName"]);
const router = useRouter(); const router = useRouter();
const loading = ref(false);
const batch = ref(false); const batch = ref(false);
const batchtwo = ref(false);
const selectItems = ref<any[]>([]); const selectItems = ref<any[]>([]);
const message = useMessage(); const message = useMessage();
const dialog = useDialog(); const dialog = useDialog();
@ -74,6 +75,7 @@ const taskpagination = reactive({
}); });
const taskStore = useTask(); const taskStore = useTask();
const overTask = ref<any>(null); const overTask = ref<any>(null);
const overTasktwo = ref<any>(null);
const taskDetailInfo = ref<any>({}); const taskDetailInfo = ref<any>({});
const taskDetailPictureList = ref<any[]>([]); const taskDetailPictureList = ref<any[]>([]);
const userStore = useUser(); const userStore = useUser();
@ -92,6 +94,7 @@ const fullscreenStyles = computed<any>(() => ({
onMounted(() => { onMounted(() => {
window.addEventListener("keydown", handleKeydown); window.addEventListener("keydown", handleKeydown);
if (route.query.id) { if (route.query.id) {
taskId.value = route.query.id; taskId.value = route.query.id;
packageId.value = route.query.packageid; packageId.value = route.query.packageid;
@ -100,12 +103,77 @@ onMounted(() => {
} }
}); });
let lastKeyPressTime = 0;
let keyPressTimer = null;
const doubleClickInterval = 300; //
// //
function handleKeydown(event) { function handleKeydown(event) {
if (event.key === "ArrowLeft") backHandler(); if (event.key === "ArrowLeft") backHandler();
// //
else if (event.key === "ArrowRight") forwardHandler(); else if (event.key === "ArrowRight") forwardHandler();
// //
else if (event.keyCode === 67) {
isFullScreen.value = false;
// batchModalRef.value.closeModal()
} else if (event.key === "p" || event.key === "P") {
//
const now = Date.now();
//
if (now - lastKeyPressTime < doubleClickInterval) {
//
clearTimeout(keyPressTimer);
const item = taskDetailInfo.value;
if (item?.userapprove?.statshis === 2 || item?.userapprove?.statshis == 3) {
overTask.value = null;
return;
}
if (validate([item]) == null && batch.value === false) overTask.value = item;
//
approvalHandler();
//
lastKeyPressTime = 0;
} else {
//
lastKeyPressTime = now;
//
//
clearTimeout(keyPressTimer);
keyPressTimer = setTimeout(function () {
lastKeyPressTime = 0;
}, doubleClickInterval);
}
} else if (event.key === "x" || event.key === "X") {
//
const now = Date.now();
//
if (now - lastKeyPressTime < doubleClickInterval) {
//
clearTimeout(keyPressTimer);
//
const modal = unref(notPassModalRef)! as any;
modal.showModal([taskDetailInfo.value]);
//
lastKeyPressTime = 0;
} else {
//
lastKeyPressTime = now;
//
//
clearTimeout(keyPressTimer);
keyPressTimer = setTimeout(function () {
lastKeyPressTime = 0;
}, doubleClickInterval);
}
}
} }
function setBatch(value: boolean) { function setBatch(value: boolean) {
@ -407,6 +475,15 @@ function getrowValue(e) {
); );
} }
} }
function overTaskHandelr(item: any) {
if (item?.historyStates === 2 || item?.historyStates == 3) {
overTasktwo.value = null;
return;
}
if (validate([item]) == null && batchtwo.value === false)
overTasktwo.value = item;
}
</script> </script>
<template> <template>
@ -511,9 +588,16 @@ function getrowValue(e) {
<div class="wrapper-detail"> <div class="wrapper-detail">
<div <div
class="left" class="left"
:style="{ :style="
'background-image': `url(${taskDetailInfo?.ocrPicture?.imgurl})`, isFullScreen
}" ? {
height: '395px',
'background-image': `url(${taskDetailInfo?.ocrPicture?.imgurl})`,
}
: {
'background-image': `url(${taskDetailInfo?.ocrPicture?.imgurl})`,
}
"
@mouseover="overTaskHandle" @mouseover="overTaskHandle"
@mouseleave="leaveTaskHandler" @mouseleave="leaveTaskHandler"
@click="previewHandler" @click="previewHandler"
@ -521,18 +605,22 @@ function getrowValue(e) {
<div v-show="overTask" class="action"> <div v-show="overTask" class="action">
<SvgIcon <SvgIcon
style="cursor: pointer" style="cursor: pointer"
width="168" name="t1"
height="48" size="74.95"
name="r6"
@click.stop="approvalHandler" @click.stop="approvalHandler"
/> />
<SvgIcon <SvgIcon
style="cursor: pointer; margin-left: 30px" style="cursor: pointer; margin-left: 32px"
width="168" name="t2"
height="48" size="74.95"
name="r7"
@click.stop="singleRejectHandler" @click.stop="singleRejectHandler"
/> />
<SvgIcon
style="cursor: pointer; margin-left: 32px"
name="t9"
size="74.95"
@click.stop="() => {}"
/>
</div> </div>
<div class="check"> <div class="check">
<n-checkbox <n-checkbox
@ -653,7 +741,7 @@ function getrowValue(e) {
<div class="right"> <div class="right">
<n-scrollbar v-if="totalCount > 0" style="max-height: 100%"> <n-scrollbar v-if="totalCount > 0" style="max-height: 100%">
<div class="right-card"> <div class="right-card">
<div class="header"> <div class="header" v-show="!isFullScreen">
<span>相似图片({{ totalCount }})</span> <span>相似图片({{ totalCount }})</span>
<SvgIcon <SvgIcon
style="margin-right: 20px; cursor: pointer" style="margin-right: 20px; cursor: pointer"
@ -662,7 +750,7 @@ function getrowValue(e) {
@click="showModal(batchModalRef)" @click="showModal(batchModalRef)"
/> />
</div> </div>
<div class="list"> <div class="list" v-if="!isFullScreen">
<div <div
v-for="item in taskDetailPictureList" v-for="item in taskDetailPictureList"
:key="item.id" :key="item.id"
@ -738,13 +826,93 @@ function getrowValue(e) {
</div> </div>
</div> </div>
</div> </div>
<n-scrollbar v-else style="max-height: 100%">
<n-ellipsis style="">
{{ taskDetailInfo.fromtaskname }}
</n-ellipsis>
<div class="tags">
<div
class="tag tag-submiting"
v-if="taskDetailInfo?.userapprove?.statshis == 1"
>
待审批
</div>
<div
class="tag tag-submited"
v-else-if="
taskDetailInfo?.userapprove?.statshis == 2 ||
taskDetailInfo?.userapprove?.statshis == 3
"
>
已审批
</div>
<div
class="tag tag-passed"
v-if="taskDetailInfo?.userapprove?.statshis == 2"
>
{{ TASK_STATUS_OBJ[taskDetailInfo?.userapprove?.statshis] }}
</div>
<div
class="tag tag-not-passed"
v-else-if="taskDetailInfo?.userapprove?.statshis == 3"
>
{{ TASK_STATUS_OBJ[taskDetailInfo?.userapprove?.statshis] }}
</div>
</div>
<n-divider class="divider-line" />
<div>
<div v-for="(item, index) in taskTableData" :key="index">
<div
v-if="item[0].label == '拜访终端名称'"
:style="{ display: 'flex', height: '26px' }"
>
<div
:style="{
width: '100px',
borderRight: '2px solid',
marginTop: '4px',
}"
>
{{ item[0].label }}
</div>
<div :style="{ marginLeft: '15px', fontSize: '16px' }">
{{ item[0].value }}
</div>
</div>
<div
class="viewlabel"
v-if="!(item[0].label == '拜访终端名称')"
>
{{ item[0].label }}
</div>
<div
class="viewvalue"
v-if="!(item[0].label == '拜访终端名称')"
>
{{ item[0].value }}
</div>
<div
class="viewlabel"
v-if="item[1] && !(item[1].label == '拜访终端名称')"
>
{{ item[1].label }}
</div>
<div
class="viewvalue"
v-if="item[1] && !(item[1].label == '拜访终端名称')"
>
{{ item[1].value }}
</div>
</div>
</div>
</n-scrollbar>
</div> </div>
</n-scrollbar> </n-scrollbar>
<n-empty v-else description="暂无数据" /> <n-empty v-else description="暂无数据" />
</div> </div>
</div> </div>
<n-tabs type="line" animated> <n-tabs type="line" animated v-if="!isFullScreen">
<n-tab-pane name="task-info" tab="任务信息"> <n-tab-pane name="task-info" tab="任务信息">
<TaskTable <TaskTable
:data="taskDetailInfo" :data="taskDetailInfo"
@ -760,6 +928,147 @@ function getrowValue(e) {
<History :data="taskDetailInfo" /> <History :data="taskDetailInfo" />
</n-tab-pane> </n-tab-pane>
</n-tabs> </n-tabs>
<div v-else class="imgbottom">
<div
style="
display: flex;
justify-content: space-between;
padding: 12px 0px 3px 0;
"
>
<div>
<span
style="
font-size: 18px;
font-weight: Medium;
color: #333333;
font-family: PingFang SC, PingFang SC-Medium;
"
>相似图片({{ totalCount }})</span
>
</div>
<div
style="
display: flex;
align-items: center;
font-size: 14px;
margin-right: 25px;
color: #323233;
"
>
<div style="cursor: pointer" @click="sortHandler('createdate')">
<span>时间排序</span>
<SvgIcon
style="margin-left: 5px"
name="sort"
size="12"
v-show="selectedSortName !== 'createdate'"
/>
<SvgIcon
style="margin-left: 5px"
name="active-sort"
size="12"
v-show="selectedSortName === 'createdate'"
/>
</div>
<div
style="margin-left: 15px; cursor: pointer"
@click="sortHandler('similarityScore')"
>
<span>相似度排序</span>
<SvgIcon
style="margin-left: 5px"
name="sort"
size="12"
v-show="selectedSortName !== 'similarityScore'"
/>
<SvgIcon
style="margin-left: 5px"
name="active-sort"
size="12"
v-show="selectedSortName === 'similarityScore'"
/>
</div>
</div>
</div>
<div class="wrapper-list">
<div
v-for="(item, index) in taskDetailPictureList"
:key="index"
:class="{ 'item-selected': item === selectTask }"
class="grid-item"
@click="handleSelect(item)"
@mouseover="overTaskHandelr(item)"
@mouseleave="leaveTaskHandler"
>
<div
class="img-wrapper"
:style="{ 'background-image': `url(${item.serverThumbnailUrl})` }"
/>
<div class="time-wrapper">
<div class="time">
<SvgIcon color="#FFF" size="16" name="camera" />
<span class="current-time">{{
item.photoDateTimestamp
? formatToDateHMS(Number(item.photoDateTimestamp) || 0)
: "-"
}}</span>
</div>
<div class="time">
<SvgIcon color="#FFF" size="16" name="save" />
<span class="current-time">{{
item.submitDateTimestamp
? formatToDateHMS(Number(item.submitDateTimestamp) || 0)
: "-"
}}</span>
</div>
</div>
<div class="check">
<n-checkbox
v-show="
batchtwo && item.historyStates !== 2 && item.historyStates !== 3
"
v-model:checked="item.checked"
@click.stop
@update:checked="onCheckChange($event, item)"
/>
</div>
<div
class="percent"
:class="{ 'percent-red': item?.maxSimilarity >= 100 }"
>
<div class="val">
{{
item?.similarityScore &&
Number(item?.similarityScore).toFixed(0)
}}<span class="percent-unit">%</span>
</div>
</div>
<div class="pass-status" v-if="item.historyStates === 2">
<SvgIcon name="pass-icon" style="width: 52; height: 24px" />
</div>
<div class="pass-status" v-else-if="item.historyStates === 3">
<SvgIcon name="no-pass-icon" style="width: 52; height: 24px" />
</div>
<div
v-show="overTasktwo && overTasktwo.id === item.id"
class="action"
>
<SvgIcon
style="cursor: pointer"
name="t1"
@click.stop="approvalHandler"
/>
<SvgIcon
style="cursor: pointer; margin-left: 40px"
name="t2"
@click.stop="singleRejectHandler(item)"
/>
</div>
</div>
</div>
</div>
<NotPassed ref="notPassModalRef" @success="notPassSuccess" /> <NotPassed ref="notPassModalRef" @success="notPassSuccess" />
<BatchModal <BatchModal
ref="batchModalRef" ref="batchModalRef"
@ -858,6 +1167,7 @@ function getrowValue(e) {
border-radius: 3px; border-radius: 3px;
border: 1px solid rgb(239, 239, 245); border: 1px solid rgb(239, 239, 245);
height: 892px; height: 892px;
overflow-y: scroll;
// 62+82+16 // 62+82+16
// height: 100%; // height: 100%;
// overflow-y: scroll; // overflow-y: scroll;
@ -1014,7 +1324,7 @@ function getrowValue(e) {
border-radius: 8px; border-radius: 8px;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: rgba(102, 102, 102, 0.5); background-color: rgba(0, 0, 0, 0.5);
} }
.info { .info {
@ -1024,7 +1334,7 @@ function getrowValue(e) {
bottom: 16px; bottom: 16px;
width: 136px; width: 136px;
height: 119px; height: 119px;
background: rgba(216, 216, 216, 0.4); background: rgba(216, 216, 216, 0.1);
border-radius: 7px; border-radius: 7px;
padding: 16px 0 0 23px; padding: 16px 0 0 23px;
color: #fff; color: #fff;
@ -1084,7 +1394,7 @@ function getrowValue(e) {
height: 129px; height: 129px;
} }
} }
/* .leftback { /* .leftback {
position: absolute; position: absolute;
width: 100%; width: 100%;
height: 151px; height: 151px;
@ -1229,5 +1539,196 @@ function getrowValue(e) {
} }
} }
} }
.imgbottom {
.header {
padding: 12px 0px 3px;
font-size: 18px;
color: #333333;
margin-bottom: 16px;
}
}
.wrapper-list {
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: flex-start;
flex-shrink: 0;
.item-selected {
box-shadow: 0px 2px 8px 0px rgba(0, 65, 207, 0.28);
background-color: #fff;
}
.grid-item {
box-sizing: border-box;
border-radius: 8px;
padding: 9px 5px;
position: relative;
.img-wrapper {
width: 230px;
height: 130px;
overflow: hidden;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
border-radius: 8px;
}
.time-wrapper {
position: absolute;
bottom: 9px;
width: calc(100% - 11px);
height: 58px;
background: linear-gradient(
180deg,
rgba(0, 0, 0, 0.01),
rgba(0, 0, 0, 0.71) 100%
);
border-radius: 8px;
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 {
position: absolute;
z-index: 3;
left: 12px;
top: 12px;
}
.percent {
position: absolute;
display: flex;
align-items: center;
justify-content: center;
width: 35px;
height: 18px;
opacity: 0.9;
background: #6f92fd;
border-radius: 6px 0px 6px 0px;
z-index: 5;
right: 12px;
top: 15px;
color: #fff;
font-size: 14px;
}
.percent-unit {
font-size: 8px;
margin-top: 4px;
}
.percent-red {
background: #ff4e4f;
}
.pass-status {
position: absolute;
left: 0px;
top: 15px;
}
.mark {
position: absolute;
z-index: 3;
right: 62px;
top: 9px;
width: 64px;
height: 40px;
overflow: hidden;
overflow: hidden;
svg {
position: absolute;
top: -20px;
}
}
.action {
position: absolute;
z-index: 5;
left: 4px;
top: 9px;
width: 230px;
height: 130px;
display: flex;
border-radius: 8px;
align-items: center;
justify-content: center;
background-color: rgba(0, 0, 0, 0.48);
}
}
}
.tags {
display: flex;
margin-top: 8px;
}
.tag {
border: 1px solid #d8d8d8;
box-sizing: border-box;
border-radius: 8px;
color: #666666;
margin-right: 12px;
padding: 4px 8px;
font-size: 12px;
line-height: 16px;
}
.tag-submited {
color: #507afd;
border: 1px solid #507afd;
}
.tag-submiting {
color: #ffb800;
border: 1px solid #ffb800;
}
.tag-passed {
color: #02c984;
border: 1px solid #02c984;
}
.tag-not-passed {
color: #ff7575;
border: 1px solid #ff7575;
}
.tag-approved {
color: #507afd;
border: 1px solid #507afd;
}
}
.viewlabel {
margin-top: 10px;
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #999999;
line-height: 20px;
height: 20px;
}
.viewvalue {
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #333333;
line-height: 20px;
height: 100%;
margin: 3px 0 10px 0;
max-width: 650px;
} }
</style> </style>

@ -254,8 +254,19 @@ function afterLeave() {
onMounted(() => { onMounted(() => {
show.value && addListeners() show.value && addListeners()
window.addEventListener("keydown", handleKeydown);
}) })
//
function handleKeydown(event) {
//
if (event.keyCode === 67) {
show.value=false
// batchModalRef.value.closeModal()
}
}
function showModal(value) { function showModal(value) {
taskId.value = value taskId.value = value
refreshHandler() refreshHandler()
@ -397,7 +408,7 @@ const gridHeight = computed(() => {
defineExpose({ defineExpose({
showModal, showModal,
reload, reload,closeModal
}) })
</script> </script>

Loading…
Cancel
Save