feat: 解决冲突

pull/300/head
raoyongjun 1 year ago
commit 7a6f1d0607

File diff suppressed because it is too large Load Diff

@ -283,3 +283,29 @@ export async function getFilterList(params) {
params,
})
}
/**
* id
* @param
* @returns
*/
export async function getLastCheckNox() {
return http.request({
url: `/ocr/checkDuplicate/getLastCheckNo`,
method: 'get',
})
}
/**
* id
* @param
* @returns
*/
export async function getCheckDuplicateStatusx(params) {
return http.request({
url: `/ocr/checkDuplicate/getCheckDuplicateStatus`,
method: 'get',
params,
})
}

@ -1,58 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 33</title>
<svg width="64px" height="76px" viewBox="0 0 64 76" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 55</title>
<defs>
<rect id="path-1" x="0" y="0" width="32" height="32"></rect>
<rect id="path-1" x="0" y="0" width="42.6099724" height="42.6666667"></rect>
<linearGradient x1="103.941749%" y1="-9.86447236%" x2="15.6759798%" y2="100%" id="linearGradient-3">
<stop stop-color="#94B3FF" offset="0%"></stop>
<stop stop-color="#3955FF" offset="100%"></stop>
</linearGradient>
<path d="M4.81965071,11.9835294 C4.81965071,18.6007843 10.107091,23.964183 16.6334651,23.964183 C23.1570041,23.964183 28.4444444,18.6007843 28.4444444,11.9835294 C28.4444444,5.36339869 23.1570041,0 16.6334651,0 C10.107091,0 4.81965071,5.36339869 4.81965071,11.9835294 Z" id="path-4"></path>
<path d="M6.42620094,15.9780392 C6.42620094,24.8010458 13.4761214,31.952244 22.1779535,31.952244 C30.8760055,31.952244 37.9259259,24.8010458 37.9259259,15.9780392 C37.9259259,7.15119826 30.8760055,0 22.1779535,0 C13.4761214,0 6.42620094,7.15119826 6.42620094,15.9780392 Z" id="path-4"></path>
<filter x="0.0%" y="0.0%" width="100.0%" height="100.0%" filterUnits="objectBoundingBox" id="filter-5">
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.328065454 0 0 0 0 0.41948512 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<rect id="path-6" x="0" y="0" width="28.3508865" height="28.7581699"></rect>
<path d="M2.26807092,15.4345098 C2.26807092,22.0517647 7.55551126,27.4151634 14.0818853,27.4151634 C20.6054243,27.4151634 25.8928647,22.0517647 25.8928647,15.4345098 C25.8928647,8.81437908 20.6054243,3.45098039 14.0818853,3.45098039 C7.55551126,3.45098039 2.26807092,8.81437908 2.26807092,15.4345098 Z" id="path-8"></path>
<rect id="path-6" x="0" y="0" width="37.801182" height="38.3442266"></rect>
<path d="M3.02409456,20.5793464 C3.02409456,29.4023529 10.074015,36.5535512 18.7758471,36.5535512 C27.4738991,36.5535512 34.5238195,29.4023529 34.5238195,20.5793464 C34.5238195,11.7525054 27.4738991,4.60130719 18.7758471,4.60130719 C10.074015,4.60130719 3.02409456,11.7525054 3.02409456,20.5793464 Z" id="path-8"></path>
<linearGradient x1="50.4938081%" y1="35.9999974%" x2="0%" y2="114.811198%" id="linearGradient-9">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<filter x="-338.5%" y="-333.7%" width="776.9%" height="767.3%" filterUnits="objectBoundingBox" id="filter-10">
<feGaussianBlur stdDeviation="5.75725631" in="SourceGraphic"></feGaussianBlur>
<feGaussianBlur stdDeviation="7.67634174" in="SourceGraphic"></feGaussianBlur>
</filter>
</defs>
<g id="-index备份" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="index_1.0备份-21" transform="translate(-836.000000, -367.000000)">
<g id="编组-8备份-2" transform="translate(473.000000, 206.000000)">
<g id="画板-8" transform="translate(28.881832, 57.745953)">
<g id="画板-4" transform="translate(236.118168, 103.254047)">
<g id="编组-54备份" transform="translate(98.000000, 0.000000)">
<g id="编组-26" transform="translate(0.063866, 1.000000)">
<path d="M48,24 C48,37.2548455 37.2548455,48 24,48 C10.7451553,48 0,37.2548455 0,24 C0,10.7451553 10.7451553,0 24,0 C37.2548455,0 48,10.7451553 48,24 C48,24 48,24 48,24 Z" id="Ellipse-930" fill="#E9EEFF" fill-rule="nonzero"></path>
<g id="Group-1" transform="translate(7.936134, 8.000000)">
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="无法上传iconfont" transform="translate(-960.000000, -1491.000000)">
<g id="编组-55" transform="translate(960.000000, 1491.000000)">
<path d="M64,32 C64,49.6731274 49.6921898,64 32.0425773,64 C14.3929658,64 0.0851545203,49.6731274 0.0851545203,32 C0.0851545203,14.3268738 14.3929658,0 32.0425773,0 C49.6921898,0 64,14.3268738 64,32 C64,32 64,32 64,32 Z" id="Ellipse-930" fill="#E9EEFF" fill-rule="nonzero"></path>
<g id="Frame-4273186251">
<rect fill-rule="nonzero" x="0" y="0" width="58.5887121" height="58.6666667"></rect>
<g id="Group-194756" transform="translate(18.641863, 18.666667)"></g>
</g>
<g id="Group-1" transform="translate(10.652493, 10.666667)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<g transform="translate(0.888889, 1.777778)">
<g transform="translate(1.185185, 2.370370)">
<g id="路径">
<use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
<use fill="url(#linearGradient-3)" fill-rule="evenodd" xlink:href="#path-4"></use>
</g>
<g id="user-person-profile-block-account-circle-svgrepo-com-1" transform="translate(0.000000, 0.575163)">
<g id="user-person-profile-block-account-circle-svgrepo-com-1" transform="translate(0.000000, 0.766885)">
<mask id="mask-7" fill="white">
<use xlink:href="#path-6"></use>
</mask>
<g id="路径"></g>
<path id="路径" d="M14.0818853,3.20098039 C20.7447477,3.20098039 26.1428647,8.67755358 26.1428647,15.4345098 C26.1428647,22.189044 20.7443,27.6651634 14.0818853,27.6651634 C7.41708336,27.6651634 2.01807092,22.1894977 2.01807092,15.4345098 C2.01807092,8.6770998 7.41663558,3.20098039 14.0818853,3.20098039 Z M14.0818853,3.70098039 C7.69438694,3.70098039 2.51807092,8.95165837 2.51807092,15.4345098 C2.51807092,21.9149209 7.69481587,27.1651634 14.0818853,27.1651634 C20.4665486,27.1651634 25.6428647,21.9144854 25.6428647,15.4345098 C25.6428647,8.9520939 20.4669775,3.70098039 14.0818853,3.70098039 Z" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M11.3638777,13.9269889 C11.5944007,13.9269889 11.7907721,14.0082723 11.9529919,14.1708392 C12.1152118,14.333406 12.1963217,14.5301975 12.1963217,14.7612135 C12.1963217,14.9836734 12.1152118,15.1783258 11.9529919,15.3451707 C11.7907721,15.5120157 11.5944007,15.5954381 11.3638777,15.5954381 C11.1333548,15.5954381 10.9369834,15.5120157 10.7747636,15.3451707 C10.6125437,15.1783258 10.5314338,14.9836734 10.5314338,14.7612135 C10.5314338,14.5301975 10.6125437,14.333406 10.7747636,14.1708392 C10.9369834,14.0082723 11.1333548,13.9269889 11.3638777,13.9269889 Z M17.8185202,9.13982315 C18.1941872,9.13982315 18.5271648,9.20613331 18.817453,9.33875363 C19.1077411,9.47137395 19.3532054,9.64249695 19.5538457,9.85212262 C19.7544861,10.0617483 19.908168,10.2991814 20.0148916,10.5644221 C20.1216152,10.8296627 20.174977,11.0906253 20.174977,11.3473098 L20.174977,17.9055986 C20.174977,18.10239 20.1301531,18.2949034 20.0405053,18.4831387 C19.9508575,18.671374 19.8313271,18.8424969 19.681914,18.9965076 C19.532501,19.1505183 19.3617433,19.2745825 19.1696408,19.3687002 C18.9775384,19.4628178 18.7790325,19.5098766 18.5741232,19.5098766 L18.5741232,12.3355451 C18.5741232,12.1130852 18.5314338,11.9055986 18.4460549,11.7130852 C18.360676,11.5205718 18.2454146,11.3515879 18.1002705,11.2061333 C17.9551264,11.0606788 17.7865031,10.9451707 17.5944007,10.8596092 C17.4022982,10.7740478 17.1952545,10.731267 16.9732694,10.731267 L9.77583079,10.731267 C9.77583079,10.5430317 9.81852022,10.3547964 9.90389909,10.1665611 C9.98927796,9.97832582 10.1045394,9.80720283 10.2496835,9.65319214 C10.3948276,9.49918144 10.5655853,9.37511727 10.7619567,9.28099962 C10.9583281,9.18688197 11.1675064,9.13982315 11.3894914,9.13982315 L17.8185202,9.13982315 L17.8185202,9.13982315 Z M16.704326,11.5398232 C17.0885309,11.5398232 17.3617433,11.644636 17.5239631,11.8542617 C17.686183,12.0638873 17.7672929,12.3441012 17.7672929,12.6949034 L17.7672929,20.2542617 C17.7672929,20.4681654 17.6776451,20.6692349 17.4983495,20.8574702 C17.3190538,21.0457055 17.0927998,21.1398232 16.8195875,21.1398232 L9.05864829,21.1398232 C8.82812535,21.1398232 8.62321606,21.0457055 8.44392044,20.8574702 C8.26462481,20.6692349 8.174977,20.4424969 8.174977,20.1772563 L8.174977,12.4767215 C8.174977,12.2029248 8.24968351,11.9783258 8.39909653,11.8029248 C8.54850955,11.6275237 8.74701542,11.5398232 8.99461414,11.5398232 L16.704326,11.5398232 Z M16.1792459,13.4906253 C16.1792459,13.3965076 16.1493633,13.3195023 16.0895981,13.2596092 C16.0298329,13.1997162 15.9529919,13.1697697 15.8590752,13.1697697 L10.0831947,13.1697697 C9.98927796,13.1697697 9.91243698,13.1997162 9.85267177,13.2596092 C9.79290656,13.3195023 9.76302396,13.3965076 9.76302396,13.4906253 L9.76302396,16.3526574 C9.83986494,16.446775 9.91030251,16.5515879 9.97433666,16.6670959 C10.0383708,16.7826039 10.1173463,16.8916948 10.211263,16.9943686 C10.3051798,17.0970424 10.4289791,17.1847429 10.5826611,17.2574702 C10.7363431,17.3301975 10.9497902,17.3665611 11.2230026,17.3665611 C11.6242833,17.3665611 11.9508575,17.30239 12.2027251,17.1740478 C12.4545928,17.0457055 12.6765779,16.8831387 12.8686803,16.6863472 C13.0607828,16.4895558 13.2400784,16.2777911 13.4065672,16.0510531 C13.573056,15.8243151 13.7715618,15.6104114 14.0020848,15.4093419 C14.2326077,15.2082723 14.5186269,15.0371494 14.8601424,14.8959729 C15.2016579,14.7547964 15.6413591,14.675652 16.1792459,14.6585397 L16.1792459,13.4906253 L16.1792459,13.4906253 Z" id="形状" fill="url(#linearGradient-9)" fill-rule="nonzero" mask="url(#mask-7)"></path>
</g>
<path d="M15.5929876,24.1568627 C14.1839485,24.1568627 13.0414078,25.315817 13.0414078,26.745098 C13.0414078,28.1743791 14.1839485,29.3333333 15.5929876,29.3333333 C17.0020266,29.3333333 18.1445674,28.1743791 18.1445674,26.745098 C18.1445674,25.315817 17.0020266,24.1568627 15.5929876,24.1568627 Z" id="路径" fill="#8B9CFF" filter="url(#filter-10)"></path>
</g>
</g>
</g>
<path id="路径" d="M18.7758471,4.26797386 C27.6596636,4.26797386 34.8571529,11.5700714 34.8571529,20.5793464 C34.8571529,29.585392 27.6590667,36.8868845 18.7758471,36.8868845 C9.88944448,36.8868845 2.69076123,29.5859969 2.69076123,20.5793464 C2.69076123,11.5694664 9.88884744,4.26797386 18.7758471,4.26797386 Z M18.7758471,4.93464052 C10.2591826,4.93464052 3.3574279,11.9355445 3.3574279,20.5793464 C3.3574279,29.2198945 10.2597545,36.2202179 18.7758471,36.2202179 C27.2887315,36.2202179 34.1904862,29.2193139 34.1904862,20.5793464 C34.1904862,11.9361252 27.2893033,4.93464052 18.7758471,4.93464052 Z" fill="#FFFFFF" fill-rule="nonzero"></path>
<path d="M15.151837,18.5693186 C15.4592009,18.5693186 15.7210295,18.6776965 15.9373226,18.8944523 C16.1536157,19.1112081 16.2617623,19.3735966 16.2617623,19.681618 C16.2617623,19.9782312 16.1536157,20.2377678 15.9373226,20.4602277 C15.7210295,20.6826876 15.4592009,20.7939175 15.151837,20.7939175 C14.8444731,20.7939175 14.5826445,20.6826876 14.3663514,20.4602277 C14.1500583,20.2377678 14.0419117,19.9782312 14.0419117,19.681618 C14.0419117,19.3735966 14.1500583,19.1112081 14.3663514,18.8944523 C14.5826445,18.6776965 14.8444731,18.5693186 15.151837,18.5693186 Z M23.758027,12.1864309 C24.2589163,12.1864309 24.7028864,12.2748444 25.0899373,12.4516715 C25.4769882,12.6284986 25.8042739,12.8566626 26.0717943,13.1361635 C26.3393148,13.4156644 26.544224,13.7322419 26.6865222,14.0858961 C26.8288203,14.4395503 26.8999693,14.7875004 26.8999693,15.1297464 L26.8999693,23.8741314 C26.8999693,24.13652 26.8402041,24.3932045 26.7206737,24.6441849 C26.6011433,24.8951653 26.4417694,25.1233293 26.242552,25.3286769 C26.0433347,25.5340245 25.8156577,25.6994433 25.5595211,25.8249335 C25.3033845,25.9504237 25.03871,26.0131688 24.7654976,26.0131688 L24.7654976,16.4473934 C24.7654976,16.1507802 24.7085784,15.8741314 24.5947399,15.6174469 C24.4809014,15.3607624 24.3272194,15.1354505 24.133694,14.9415111 C23.9401686,14.7475717 23.7153375,14.593561 23.4592009,14.479479 C23.2030643,14.365397 22.927006,14.308356 22.6310259,14.308356 L13.0344411,14.308356 C13.0344411,14.0573756 13.0913603,13.8063952 13.2051988,13.5554148 C13.3190373,13.3044344 13.4727192,13.0762704 13.6662447,12.8709228 C13.8597701,12.6655753 14.0874471,12.5001564 14.3492756,12.3746662 C14.6111042,12.249176 14.8900085,12.1864309 15.1859885,12.1864309 L23.758027,12.1864309 L23.758027,12.1864309 Z M22.2724346,15.3864309 C22.7847079,15.3864309 23.148991,15.5261813 23.3652842,15.8056822 C23.5815773,16.0851831 23.6897239,16.4588016 23.6897239,16.9265378 L23.6897239,27.0056822 C23.6897239,27.2908872 23.5701935,27.5589799 23.3311326,27.8099603 C23.0920718,28.0609407 22.7903998,28.1864309 22.4261166,28.1864309 L12.0781977,28.1864309 C11.7708338,28.1864309 11.4976214,28.0609407 11.2585606,27.8099603 C11.0194998,27.5589799 10.8999693,27.2566626 10.8999693,26.9030084 L10.8999693,16.6356287 C10.8999693,16.2705663 10.999578,15.9711011 11.1987954,15.737233 C11.3980127,15.5033649 11.6626872,15.3864309 11.9928189,15.3864309 L22.2724346,15.3864309 Z M21.5723279,17.9875004 C21.5723279,17.8620102 21.5324845,17.7593364 21.4527975,17.679479 C21.3731106,17.5996216 21.2706559,17.5596929 21.1454336,17.5596929 L13.4442596,17.5596929 C13.3190373,17.5596929 13.2165826,17.5996216 13.1368957,17.679479 C13.0572088,17.7593364 13.0173653,17.8620102 13.0173653,17.9875004 L13.0173653,21.8035432 C13.1198199,21.9290334 13.2137367,22.0687838 13.2991155,22.2227945 C13.3844944,22.3768052 13.489795,22.5222597 13.6150174,22.6591581 C13.7402397,22.7960565 13.9053055,22.9129906 14.1102148,23.0099603 C14.3151241,23.10693 14.5997203,23.1554148 14.9640035,23.1554148 C15.4990444,23.1554148 15.9344766,23.0698533 16.2703002,22.8987303 C16.6061237,22.7276073 16.9021038,22.5108515 17.1582404,22.248463 C17.414377,21.9860744 17.6534379,21.7037214 17.8754229,21.4014041 C18.097408,21.0990868 18.3620825,20.8138818 18.6694464,20.5457892 C18.9768103,20.2776965 19.3581693,20.0495325 19.8135232,19.8612972 C20.2688772,19.6730619 20.8551454,19.567536 21.5723279,19.5447196 L21.5723279,17.9875004 L21.5723279,17.9875004 Z" id="形状" fill="url(#linearGradient-9)" fill-rule="nonzero" mask="url(#mask-7)"></path>
</g>
<path d="M20.7906501,32.2091503 C18.9119314,32.2091503 17.3885437,33.7544227 17.3885437,35.6601307 C17.3885437,37.5658388 18.9119314,39.1111111 20.7906501,39.1111111 C22.6693689,39.1111111 24.1927565,37.5658388 24.1927565,35.6601307 C24.1927565,33.7544227 22.6693689,32.2091503 20.7906501,32.2091503 Z" id="路径" fill="#8B9CFF" filter="url(#filter-10)"></path>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

@ -1,43 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="49px" height="59px" viewBox="0 0 49 59" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="66px" height="80px" viewBox="0 0 66 80" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>任务总数</title>
<defs>
<rect id="path-1" x="0" y="0" width="32" height="32"></rect>
<rect id="path-1" x="0" y="0" width="42.6666667" height="42.6666667"></rect>
<filter x="-371.5%" y="-374.7%" width="843.0%" height="849.3%" filterUnits="objectBoundingBox" id="filter-3">
<feGaussianBlur stdDeviation="6.34032634" in="SourceGraphic"></feGaussianBlur>
<feGaussianBlur stdDeviation="8.45376845" in="SourceGraphic"></feGaussianBlur>
</filter>
<rect id="path-4" x="0" y="0" width="28.4444444" height="28.2051282"></rect>
<rect id="path-4" x="0" y="0" width="37.9259259" height="37.6068376"></rect>
<linearGradient x1="105.502715%" y1="2.31847174%" x2="14.6827115%" y2="89.8245624%" id="linearGradient-6">
<stop stop-color="#94B3FF" offset="0%"></stop>
<stop stop-color="#3955FF" offset="100%"></stop>
</linearGradient>
<path d="M4.83555556,5.87512821 L4.83555556,15.2787179 C4.83555556,18.5223077 7.48942222,21.1538462 10.7605333,21.1538462 L22.6133333,21.1538462 C25.8844444,21.1538462 28.5383111,18.5223077 28.5383111,15.2787179 L28.5383111,5.87512821 C28.5383111,2.63153846 25.8844444,0 22.6133333,0 L10.7605333,0 C7.48942222,0 4.83555556,2.63153846 4.83555556,5.87512821 Z" id="path-7"></path>
<path d="M6.44740741,7.83350427 L6.44740741,20.3716239 C6.44740741,24.6964103 9.9858963,28.2051282 14.3473778,28.2051282 L30.1511111,28.2051282 C34.5125926,28.2051282 38.0510815,24.6964103 38.0510815,20.3716239 L38.0510815,7.83350427 C38.0510815,3.50871795 34.5125926,0 30.1511111,0 L14.3473778,0 C9.9858963,0 6.44740741,3.50871795 6.44740741,7.83350427 Z" id="path-7"></path>
<filter x="0.0%" y="0.0%" width="100.0%" height="100.0%" filterUnits="objectBoundingBox" id="filter-8">
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.328065454 0 0 0 0 0.41948512 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<path d="M2.27555556,11.7982051 L2.27555556,21.2017949 C2.27555556,24.4453846 4.92942222,27.0769231 8.20053333,27.0769231 L20.0533333,27.0769231 C23.3244444,27.0769231 25.9783111,24.4453846 25.9783111,21.2017949 L25.9783111,11.7982051 C25.9783111,8.55461538 23.3244444,5.92307692 20.0533333,5.92307692 L8.20053333,5.92307692 C4.92942222,5.92307692 2.27555556,8.55461538 2.27555556,11.7982051 Z" id="path-9"></path>
<rect id="path-10" x="0" y="0" width="17.0666667" height="16.9230769"></rect>
<path d="M3.03407407,15.7309402 L3.03407407,28.2690598 C3.03407407,32.5938462 6.57256296,36.1025641 10.9340444,36.1025641 L26.7377778,36.1025641 C31.0992593,36.1025641 34.6377481,32.5938462 34.6377481,28.2690598 L34.6377481,15.7309402 C34.6377481,11.4061538 31.0992593,7.8974359 26.7377778,7.8974359 L10.9340444,7.8974359 C6.57256296,7.8974359 3.03407407,11.4061538 3.03407407,15.7309402 Z" id="path-9"></path>
<rect id="path-10" x="0" y="0" width="22.7555556" height="22.5641026"></rect>
<linearGradient x1="69.7214326%" y1="60.74758%" x2="-51.0955919%" y2="70.4452809%" id="linearGradient-12">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop>
</linearGradient>
</defs>
<g id="搜索/首次登录弹框" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="登录提示" transform="translate(-588.000000, -281.000000)">
<g id="编组-8备份" transform="translate(500.000000, 120.000000)">
<g id="编组-51" transform="translate(77.063866, 161.492764)">
<g id="任务总数" transform="translate(11.000000, 0.000000)">
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="无法上传iconfont" transform="translate(-586.000000, -1489.000000)">
<g id="编组-51" transform="translate(584.000000, 1489.666667)">
<g id="任务总数-2" transform="translate(2.333333, 0.000000)">
<g id="任务总数" transform="translate(0.085155, 0.657019)">
<g id="Group-194756" fill="#E9EEFF" fill-rule="nonzero">
<path d="M48,24 C48,37.2548455 37.2548455,48 24,48 C10.7451553,48 0,37.2548455 0,24 C0,10.7451553 10.7451553,0 24,0 C37.2548455,0 48,10.7451553 48,24 C48,24 48,24 48,24 Z" id="Ellipse-930"></path>
<path d="M64,32 C64,49.6731274 49.6731274,64 32,64 C14.3268738,64 0,49.6731274 0,32 C0,14.3268738 14.3268738,0 32,0 C49.6731274,0 64,14.3268738 64,32 C64,32 64,32 64,32 Z" id="Ellipse-930"></path>
</g>
<g id="Group-1" transform="translate(8.000000, 8.000000)">
<g id="Group-1" transform="translate(10.666667, 10.666667)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<g transform="translate(0.888889, 1.777778)">
<path d="M14.5066667,24.2564103 C13.0929778,24.2564103 11.9466667,25.3930769 11.9466667,26.7948718 C11.9466667,28.1966667 13.0929778,29.3333333 14.5066667,29.3333333 C15.9203556,29.3333333 17.0666667,28.1966667 17.0666667,26.7948718 C17.0666667,25.3930769 15.9203556,24.2564103 14.5066667,24.2564103 Z" id="路径" fill="#8B9CFF" filter="url(#filter-3)"></path>
<g transform="translate(1.185185, 2.370370)">
<path d="M19.3422222,32.3418803 C17.4573037,32.3418803 15.9288889,33.8574359 15.9288889,35.7264957 C15.9288889,37.5955556 17.4573037,39.1111111 19.3422222,39.1111111 C21.2271407,39.1111111 22.7555556,37.5955556 22.7555556,35.7264957 C22.7555556,33.8574359 21.2271407,32.3418803 19.3422222,32.3418803 Z" id="路径" fill="#8B9CFF" filter="url(#filter-3)"></path>
<g id="image-landscape-png-svgrepo-com(1)-1">
<mask id="mask-5" fill="white">
<use xlink:href="#path-4"></use>
@ -47,14 +47,14 @@
<use fill="black" fill-opacity="1" filter="url(#filter-8)" xlink:href="#path-7"></use>
<use fill="url(#linearGradient-6)" fill-rule="evenodd" xlink:href="#path-7"></use>
</g>
<path id="路径" d="M20.0533333,5.67307692 C23.462045,5.67307692 26.2283111,8.41606915 26.2283111,11.7982051 L26.2283111,11.7982051 L26.2283111,21.2017949 C26.2283111,24.5839308 23.462045,27.3269231 20.0533333,27.3269231 L20.0533333,27.3269231 L8.20053333,27.3269231 C4.79182166,27.3269231 2.02555556,24.5839308 2.02555556,21.2017949 L2.02555556,21.2017949 L2.02555556,11.7982051 C2.02555556,8.41606915 4.79182166,5.67307692 8.20053333,5.67307692 L8.20053333,5.67307692 Z M20.0533333,6.17307692 L8.20053333,6.17307692 C5.06702278,6.17307692 2.52555556,8.69316162 2.52555556,11.7982051 L2.52555556,11.7982051 L2.52555556,21.2017949 C2.52555556,24.3068384 5.06702278,26.8269231 8.20053333,26.8269231 L8.20053333,26.8269231 L20.0533333,26.8269231 C23.1868439,26.8269231 25.7283111,24.3068384 25.7283111,21.2017949 L25.7283111,21.2017949 L25.7283111,11.7982051 C25.7283111,8.69316162 23.1868439,6.17307692 20.0533333,6.17307692 L20.0533333,6.17307692 Z" fill="#FFFFFF" fill-rule="nonzero"></path>
<path id="路径" d="M26.7377778,7.56410256 C31.2827267,7.56410256 34.9710815,11.2214255 34.9710815,15.7309402 L34.9710815,15.7309402 L34.9710815,28.2690598 C34.9710815,32.7785745 31.2827267,36.4358974 26.7377778,36.4358974 L26.7377778,36.4358974 L10.9340444,36.4358974 C6.38909555,36.4358974 2.70074074,32.7785745 2.70074074,28.2690598 L2.70074074,28.2690598 L2.70074074,15.7309402 C2.70074074,11.2214255 6.38909555,7.56410256 10.9340444,7.56410256 L10.9340444,7.56410256 Z M26.7377778,8.23076923 L10.9340444,8.23076923 C6.75603038,8.23076923 3.36740741,11.5908822 3.36740741,15.7309402 L3.36740741,15.7309402 L3.36740741,28.2690598 C3.36740741,32.4091178 6.75603038,35.7692308 10.9340444,35.7692308 L10.9340444,35.7692308 L26.7377778,35.7692308 C30.9157918,35.7692308 34.3044148,32.4091178 34.3044148,28.2690598 L34.3044148,28.2690598 L34.3044148,15.7309402 C34.3044148,11.5908822 30.9157918,8.23076923 26.7377778,8.23076923 L26.7377778,8.23076923 Z" fill="#FFFFFF" fill-rule="nonzero"></path>
<g id="收起" mask="url(#mask-5)">
<g transform="translate(5.688889, 8.038462)">
<g transform="translate(7.585185, 10.717949)">
<mask id="mask-11" fill="white">
<use xlink:href="#path-10"></use>
</mask>
<g id="蒙版" stroke="none" fill="none"></g>
<path d="M14.8482532,1.96153846 L2.77396401,1.96153846 C2.65086938,1.96174328 2.53290922,2.01089215 2.44608611,2.09815093 C2.359263,2.18540971 2.31070509,2.30361448 2.31111367,2.42670874 L2.31111367,5.67748274 L15.3111035,5.67748274 L15.3111035,2.42670874 C15.3115121,2.30361448 15.2629542,2.18540971 15.1761311,2.09815093 C15.0893079,2.01089215 14.9713478,1.96174328 14.8482532,1.96153846 L14.8482532,1.96153846 Z M4.1594113,4.39961896 C3.83838548,4.39961896 3.57814264,4.13937581 3.57814264,3.81834961 C3.57814264,3.49732342 3.83838548,3.23708027 4.1594113,3.23708027 C4.48022339,3.23708027 4.74029297,3.49715016 4.74029297,3.81796263 C4.74029297,4.1387751 4.48022339,4.39884499 4.1594113,4.39884499 L4.1594113,4.39961896 Z M2.31111626,14.4963682 C2.31111626,14.7548821 2.51854636,14.9615385 2.77396401,14.9615385 L14.8459312,14.9615385 C14.9690255,14.9615385 15.087067,14.9125866 15.1740352,14.8254731 C15.2610034,14.7383596 15.3097584,14.6202365 15.3095536,14.4971422 L15.3095536,11.2463682 L2.31111626,11.2463682 L2.31111626,14.4971422 L2.31111626,14.4963682 Z M4.1594113,12.5242319 C4.48000965,12.5242319 4.73990597,12.7841286 4.73990597,13.1047273 C4.73990597,13.425326 4.48000965,13.6852227 4.1594113,13.6852227 C3.83881294,13.6852227 3.57891662,13.425326 3.57891662,13.1047273 C3.57891662,12.7841286 3.83881294,12.5242319 4.1594113,12.5242319 L4.1594113,12.5242319 Z M2.31111626,10.3183496 L15.3111009,10.3183496 L15.3111009,6.60472731 L2.31111626,6.60472731 L2.31111626,10.3191236 L2.31111626,10.3183496 Z M4.1594113,7.88026912 C4.48022338,7.88026912 4.74029295,8.140339 4.74029295,8.46115146 C4.74029295,8.78196392 4.48022338,9.0420338 4.1594113,9.0420338 C3.83881295,9.0420338 3.57891664,8.78213719 3.57891664,8.46153846 C3.57891664,8.14093974 3.83881295,7.88104312 4.1594113,7.88104312 L4.1594113,7.88026912 Z" id="形状" stroke="none" fill="url(#linearGradient-12)" fill-rule="evenodd" mask="url(#mask-11)"></path>
<path d="M19.7976709,2.61538462 L3.69861868,2.61538462 C3.53449251,2.6156577 3.3772123,2.68118953 3.26144815,2.79753457 C3.145684,2.91387961 3.08094012,3.07148597 3.08148489,3.23561165 L3.08148489,7.56997699 L20.4148047,7.56997699 L20.4148047,3.23561165 C20.4153494,3.07148597 20.3506056,2.91387961 20.2348414,2.79753457 C20.1190773,2.68118953 19.961797,2.6156577 19.7976709,2.61538462 L19.7976709,2.61538462 Z M5.54588173,5.86615861 C5.11784731,5.86615861 4.77085685,5.51916774 4.77085685,5.09113282 C4.77085685,4.66309789 5.11784731,4.31610703 5.54588173,4.31610703 C5.97363118,4.31610703 6.32039062,4.66286688 6.32039062,5.09061684 C6.32039062,5.51836679 5.97363118,5.86512665 5.54588173,5.86512665 L5.54588173,5.86615861 Z M3.08148835,19.3284909 C3.08148835,19.6731762 3.35806181,19.9487179 3.69861868,19.9487179 L19.7945749,19.9487179 C19.9587007,19.9487179 20.1160893,19.8834488 20.2320469,19.7672974 C20.3480046,19.6511461 20.4130112,19.4936486 20.4127381,19.3295229 L20.4127381,14.9951576 L3.08148835,14.9951576 L3.08148835,19.3295229 L3.08148835,19.3284909 Z M5.54588173,16.6989759 C5.9733462,16.6989759 6.31987462,17.0455047 6.31987462,17.4729697 C6.31987462,17.9004347 5.9733462,18.2469635 5.54588173,18.2469635 C5.11841726,18.2469635 4.77188883,17.9004347 4.77188883,17.4729697 C4.77188883,17.0455047 5.11841726,16.6989759 5.54588173,16.6989759 L5.54588173,16.6989759 Z M3.08148835,13.7577995 L20.4148012,13.7577995 L20.4148012,8.80630308 L3.08148835,8.80630308 L3.08148835,13.7588314 L3.08148835,13.7577995 Z M5.54588173,10.5070255 C5.97363117,10.5070255 6.3203906,10.8537853 6.3203906,11.2815353 C6.3203906,11.7092852 5.97363117,12.0560451 5.54588173,12.0560451 C5.11841727,12.0560451 4.77188886,11.7095162 4.77188886,11.2820513 C4.77188886,10.8545863 5.11841727,10.5080575 5.54588173,10.5080575 L5.54588173,10.5070255 Z" id="形状" stroke="none" fill="url(#linearGradient-12)" fill-rule="evenodd" mask="url(#mask-11)"></path>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

@ -1,65 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="49px" height="57px" viewBox="0 0 49 57" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="66px" height="76px" viewBox="0 0 66 76" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>已审批</title>
<defs>
<rect id="path-1" x="0" y="0" width="32" height="32"></rect>
<rect id="path-1" x="0" y="0" width="42.6666667" height="42.6666667"></rect>
<linearGradient x1="103.941749%" y1="-9.86447236%" x2="15.6759798%" y2="100%" id="linearGradient-3">
<stop stop-color="#94B3FF" offset="0%"></stop>
<stop stop-color="#3955FF" offset="100%"></stop>
</linearGradient>
<path d="M4.81965071,11.9835294 C4.81965071,18.6007843 10.107091,23.964183 16.6334651,23.964183 C23.1570041,23.964183 28.4444444,18.6007843 28.4444444,11.9835294 C28.4444444,5.36339869 23.1570041,0 16.6334651,0 C10.107091,0 4.81965071,5.36339869 4.81965071,11.9835294 Z" id="path-4"></path>
<path d="M6.42620094,15.9780392 C6.42620094,24.8010458 13.4761214,31.952244 22.1779535,31.952244 C30.8760055,31.952244 37.9259259,24.8010458 37.9259259,15.9780392 C37.9259259,7.15119826 30.8760055,0 22.1779535,0 C13.4761214,0 6.42620094,7.15119826 6.42620094,15.9780392 Z" id="path-4"></path>
<filter x="0.0%" y="0.0%" width="100.0%" height="100.0%" filterUnits="objectBoundingBox" id="filter-5">
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.328065454 0 0 0 0 0.41948512 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<rect id="path-6" x="0" y="0" width="28.3508865" height="28.7581699"></rect>
<path d="M2.26807092,15.4345098 C2.26807092,22.0517647 7.55551126,27.4151634 14.0818853,27.4151634 C20.6054243,27.4151634 25.8928647,22.0517647 25.8928647,15.4345098 C25.8928647,8.81437908 20.6054243,3.45098039 14.0818853,3.45098039 C7.55551126,3.45098039 2.26807092,8.81437908 2.26807092,15.4345098 Z" id="path-8"></path>
<rect id="path-6" x="0" y="0" width="37.801182" height="38.3442266"></rect>
<path d="M3.02409456,20.5793464 C3.02409456,29.4023529 10.074015,36.5535512 18.7758471,36.5535512 C27.4738991,36.5535512 34.5238195,29.4023529 34.5238195,20.5793464 C34.5238195,11.7525054 27.4738991,4.60130719 18.7758471,4.60130719 C10.074015,4.60130719 3.02409456,11.7525054 3.02409456,20.5793464 Z" id="path-8"></path>
<linearGradient x1="50.4207596%" y1="35.9999974%" x2="1.68579345%" y2="100.000001%" id="linearGradient-9">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<filter x="-338.5%" y="-333.7%" width="776.9%" height="767.3%" filterUnits="objectBoundingBox" id="filter-10">
<feGaussianBlur stdDeviation="5.75725631" in="SourceGraphic"></feGaussianBlur>
<feGaussianBlur stdDeviation="7.67634174" in="SourceGraphic"></feGaussianBlur>
</filter>
</defs>
<g id="搜索/首次登录弹框" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="登录提示" transform="translate(-840.000000, -281.000000)">
<g id="编组-8备份" transform="translate(500.000000, 120.000000)">
<g id="编组-29" transform="translate(329.063866, 161.492764)">
<g id="已审批" transform="translate(11.000000, 0.000000)">
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="无法上传iconfont" transform="translate(-838.000000, -1491.000000)">
<g id="编组-29" transform="translate(838.333333, 1491.000000)">
<g id="已审批" transform="translate(0.085155, 0.657019)">
<g id="Statistics/icon/down" fill-rule="nonzero">
<g id="Frame-4273186251">
<rect x="0" y="0" width="44" height="44"></rect>
<rect x="0" y="0" width="58.6666667" height="58.6666667"></rect>
<g id="Group-194756" fill="#E9EEFF">
<path d="M48,24 C48,37.2548455 37.2548455,48 24,48 C10.7451553,48 0,37.2548455 0,24 C0,10.7451553 10.7451553,0 24,0 C37.2548455,0 48,10.7451553 48,24 C48,24 48,24 48,24 Z" id="Ellipse-930"></path>
<path d="M64,32 C64,49.6731274 49.6731274,64 32,64 C14.3268738,64 0,49.6731274 0,32 C0,14.3268738 14.3268738,0 32,0 C49.6731274,0 64,14.3268738 64,32 C64,32 64,32 64,32 Z" id="Ellipse-930"></path>
</g>
</g>
</g>
<g id="Group-1" transform="translate(8.000000, 8.000000)">
<g id="Group-1" transform="translate(10.666667, 10.666667)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<g transform="translate(0.888889, 1.777778)">
<g transform="translate(1.185185, 2.370370)">
<g id="路径">
<use fill="black" fill-opacity="1" filter="url(#filter-5)" xlink:href="#path-4"></use>
<use fill="url(#linearGradient-3)" fill-rule="evenodd" xlink:href="#path-4"></use>
</g>
<g id="user-person-profile-block-account-circle-svgrepo-com-1" transform="translate(0.000000, 0.575163)">
<g id="user-person-profile-block-account-circle-svgrepo-com-1" transform="translate(0.000000, 0.766885)">
<mask id="mask-7" fill="white">
<use xlink:href="#path-6"></use>
</mask>
<g id="路径"></g>
<path id="路径" d="M14.0818853,3.20098039 C20.7447477,3.20098039 26.1428647,8.67755358 26.1428647,15.4345098 C26.1428647,22.189044 20.7443,27.6651634 14.0818853,27.6651634 C7.41708336,27.6651634 2.01807092,22.1894977 2.01807092,15.4345098 C2.01807092,8.6770998 7.41663558,3.20098039 14.0818853,3.20098039 Z M14.0818853,3.70098039 C7.69438694,3.70098039 2.51807092,8.95165837 2.51807092,15.4345098 C2.51807092,21.9149209 7.69481587,27.1651634 14.0818853,27.1651634 C20.4665486,27.1651634 25.6428647,21.9144854 25.6428647,15.4345098 C25.6428647,8.9520939 20.4669775,3.70098039 14.0818853,3.70098039 Z" fill="#FFFFFF" fill-rule="nonzero"></path>
<path id="路径" d="M18.7758471,4.26797386 C27.6596636,4.26797386 34.8571529,11.5700714 34.8571529,20.5793464 C34.8571529,29.585392 27.6590667,36.8868845 18.7758471,36.8868845 C9.88944448,36.8868845 2.69076123,29.5859969 2.69076123,20.5793464 C2.69076123,11.5694664 9.88884744,4.26797386 18.7758471,4.26797386 Z M18.7758471,4.93464052 C10.2591826,4.93464052 3.3574279,11.9355445 3.3574279,20.5793464 C3.3574279,29.2198945 10.2597545,36.2202179 18.7758471,36.2202179 C27.2887315,36.2202179 34.1904862,29.2193139 34.1904862,20.5793464 C34.1904862,11.9361252 27.2893033,4.93464052 18.7758471,4.93464052 Z" fill="#FFFFFF" fill-rule="nonzero"></path>
<g id="crowd" mask="url(#mask-7)">
<g transform="translate(6.992746, 8.243529)">
<rect id="矩形" fill="#000000" fill-rule="nonzero" opacity="0" x="0" y="0" width="14.1754433" height="14.379085"></rect>
<path d="M9.97279608,7.06413654 C11.7104753,7.06413654 13.1206339,8.48665684 13.1183622,10.2372746 C13.1138106,11.9833035 11.7059264,13.401235 9.97734498,13.4035294 C8.23966571,13.4035294 6.82950715,11.9833035 6.82950715,10.2326858 C6.82950715,8.48436245 8.23739126,7.06413654 9.97279608,7.06413654 Z M6.57931772,11.9465933 C6.70213798,12.2310974 6.85680054,12.4949519 7.04330538,12.738157 L1.11836495,12.738157 L1.11836495,11.9465933 L6.57931772,11.9465933 Z M11.232841,8.7711609 L9.59751195,10.5286618 L8.64451769,9.61090675 L8.06680757,10.1500878 L9.62253089,11.6987994 L11.8787846,9.41588381 L11.232841,8.7711609 Z M6.28136486,0.403529412 C7.88940052,0.403529412 9.19493442,1.72050788 9.19493442,3.3426399 C9.19493442,3.84969955 9.06756526,4.32693217 8.84466923,4.74221632 L8.84239478,4.7445107 C8.76278905,4.89135151 8.66726218,5.03130915 8.56491196,5.16438363 C8.1236688,5.87334939 7.72336572,6.43547435 7.9530851,7.11231868 C6.94322961,7.77769108 6.27454152,8.92717925 6.27454152,10.2326858 C6.27454152,10.4781853 6.29956046,10.4850684 6.342775,10.7168016 L1.11836495,10.7168016 L1.11836495,8.09431656 L4.00009222,8.09431656 C5.56718778,6.84846411 4.60964463,6.13261519 3.98871997,5.15291169 C3.60206359,4.6527352 3.36779531,4.02636739 3.36779531,3.3426399 C3.36779531,1.72050788 4.67332921,0.403529412 6.28136486,0.403529412 Z" id="形状结合" fill="url(#linearGradient-9)" fill-rule="evenodd"></path>
<g transform="translate(9.323662, 10.991373)">
<rect id="矩形" fill="#000000" fill-rule="nonzero" opacity="0" x="0" y="0" width="18.900591" height="19.1721133"></rect>
<path d="M13.2970614,9.41884872 C15.6139671,9.41884872 17.4941785,11.3155425 17.4911496,13.6496994 C17.4850808,15.977738 15.6079019,17.8683134 13.3031266,17.8713725 C10.9862209,17.8713725 9.10600953,15.977738 9.10600953,13.643581 C9.10600953,11.3124833 10.9831884,9.41884872 13.2970614,9.41884872 Z M8.77242363,15.9287911 C8.93618398,16.3081298 9.14240072,16.6599359 9.39107384,16.9842094 L1.49115327,16.9842094 L1.49115327,15.9287911 L8.77242363,15.9287911 Z M14.9771213,11.6948812 L12.7966826,14.0382157 L11.5260236,12.8145423 L10.7557434,13.5334504 L12.8300412,15.5983993 L15.8383795,12.5545117 L14.9771213,11.6948812 Z M8.37515315,0.538039216 C10.5192007,0.538039216 12.2599126,2.29401051 12.2599126,4.45685319 C12.2599126,5.13293273 12.090087,5.76924289 11.7928923,6.32295509 L11.7898597,6.32601427 C11.6837187,6.52180201 11.5563496,6.7084122 11.4198826,6.88584484 C10.8315584,7.83113252 10.297821,8.58063246 10.6041135,9.48309157 C9.25763948,10.3702548 8.36605536,11.9029057 8.36605536,13.643581 C8.36605536,13.9709137 8.39941394,13.9800912 8.45703333,14.2890687 L1.49115327,14.2890687 L1.49115327,10.7924221 L5.33345629,10.7924221 C7.42291705,9.13128548 6.14619284,8.17682025 5.31829329,6.87054892 C4.80275145,6.20364693 4.49039375,5.36848986 4.49039375,4.45685319 C4.49039375,2.29401051 6.23110561,0.538039216 8.37515315,0.538039216 Z" id="形状结合" fill="url(#linearGradient-9)" fill-rule="evenodd"></path>
</g>
</g>
</g>
<path d="M15.5929876,24.1568627 C14.1839485,24.1568627 13.0414078,25.315817 13.0414078,26.745098 C13.0414078,28.1743791 14.1839485,29.3333333 15.5929876,29.3333333 C17.0020266,29.3333333 18.1445674,28.1743791 18.1445674,26.745098 C18.1445674,25.315817 17.0020266,24.1568627 15.5929876,24.1568627 Z" id="路径" fill="#8B9CFF" filter="url(#filter-10)"></path>
</g>
<path d="M20.7906501,32.2091503 C18.9119314,32.2091503 17.3885437,33.7544227 17.3885437,35.6601307 C17.3885437,37.5658388 18.9119314,39.1111111 20.7906501,39.1111111 C22.6693689,39.1111111 24.1927565,37.5658388 24.1927565,35.6601307 C24.1927565,33.7544227 22.6693689,32.2091503 20.7906501,32.2091503 Z" id="路径" fill="#8B9CFF" filter="url(#filter-10)"></path>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

@ -1,47 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="49px" height="58px" viewBox="0 0 49 58" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="66px" height="78px" viewBox="0 0 66 78" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>待审批</title>
<defs>
<rect id="path-1" x="0" y="0" width="32" height="32"></rect>
<rect id="path-1" x="0" y="0" width="42.6666667" height="42.6666667"></rect>
<filter x="-333.3%" y="-329.7%" width="766.7%" height="759.4%" filterUnits="objectBoundingBox" id="filter-3">
<feGaussianBlur stdDeviation="5.68888889" in="SourceGraphic"></feGaussianBlur>
<feGaussianBlur stdDeviation="7.58518519" in="SourceGraphic"></feGaussianBlur>
</filter>
<rect id="path-4" x="0" y="0" width="28.4444444" height="28.7581699"></rect>
<rect id="path-4" x="0" y="0" width="37.9259259" height="38.3442266"></rect>
<linearGradient x1="104.298352%" y1="-9.86447236%" x2="15.4490675%" y2="100%" id="linearGradient-6">
<stop stop-color="#94B3FF" offset="0%"></stop>
<stop stop-color="#3955FF" offset="100%"></stop>
</linearGradient>
<path d="M8.24888889,14.4509804 C8.24888889,17.1111111 10.3822222,19.2679739 13.0133333,19.2679739 L22.5422222,19.2679739 C25.1733333,19.2679739 27.3066667,17.1111111 27.3066667,14.4509804 L27.3066667,6.57986928 C27.3066667,5.81202614 27.0051556,5.07581699 26.4704,4.5351634 L22.8209778,0.845490196 C22.2862222,0.304836601 21.5580444,0 20.7985778,0 L13.0133333,0 C10.3822222,0 8.24888889,2.15686275 8.24888889,4.81699346 L8.24888889,14.4509804 Z" id="path-7"></path>
<path d="M10.9985185,19.2679739 C10.9985185,22.8148148 13.842963,25.6906318 17.3511111,25.6906318 L30.0562963,25.6906318 C33.5644444,25.6906318 36.4088889,22.8148148 36.4088889,19.2679739 L36.4088889,8.77315904 C36.4088889,7.74936819 36.0068741,6.76775599 35.2938667,6.04688453 L30.4279704,1.12732026 C29.714963,0.406448802 28.7440593,0 27.731437,0 L17.3511111,0 C13.842963,0 10.9985185,2.87581699 10.9985185,6.42265795 L10.9985185,19.2679739 Z" id="path-7"></path>
<filter x="0.0%" y="0.0%" width="100.0%" height="100.0%" filterUnits="objectBoundingBox" id="filter-8">
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feColorMatrix values="0 0 0 0 0.328065454 0 0 0 0 0.41948512 0 0 0 0 1 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix>
</filter>
<path d="M17.9797339,2.39555169 L8.29440052,2.39555169 C5.02328941,2.39555169 2.36942274,5.07868895 2.36942274,8.38587849 L2.36942274,20.3694079 C2.36942274,23.6765974 5.02328941,26.3597347 8.29440052,26.3597347 L20.1472005,26.3597347 C23.4183116,26.3597347 26.0721783,23.6765974 26.0721783,20.3694079 L26.0721783,10.577251 C26.0721783,9.62535562 25.6967116,8.71084581 25.0311116,8.03502882 L20.4942227,3.44810071 C19.8257783,2.77515954 18.921245,2.39555169 17.9797339,2.39555169 Z" id="path-9"></path>
<path d="M23.9729785,3.19406893 L11.0592007,3.19406893 C6.69771921,3.19406893 3.15923032,6.77158527 3.15923032,11.1811713 L3.15923032,27.1592105 C3.15923032,31.5687966 6.69771921,35.1463129 11.0592007,35.1463129 L26.862934,35.1463129 C31.2244155,35.1463129 34.7629044,31.5687966 34.7629044,27.1592105 L34.7629044,14.1030014 C34.7629044,12.8338075 34.2622822,11.6144611 33.3748155,10.7133718 L27.3256303,4.59746762 C26.4343711,3.70021272 25.2283266,3.19406893 23.9729785,3.19406893 Z" id="path-9"></path>
<linearGradient x1="50.361848%" y1="2.00025023%" x2="151.318564%" y2="221.000262%" id="linearGradient-10">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop>
</linearGradient>
</defs>
<g id="搜索/首次登录弹框" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="登录提示" transform="translate(-714.000000, -281.000000)">
<g id="编组-8备份" transform="translate(500.000000, 120.000000)">
<g id="编组-28" transform="translate(203.063866, 161.492764)">
<g id="待审批" transform="translate(11.000000, 0.000000)">
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="无法上传iconfont" transform="translate(-712.000000, -1490.000000)">
<g id="编组-28" transform="translate(712.333333, 1490.333333)">
<g id="待审批" transform="translate(0.085155, 0.657019)">
<g id="Statistics/icon/down" fill-rule="nonzero">
<g id="Frame-4273186251">
<rect x="0" y="0" width="44" height="44"></rect>
<rect x="0" y="0" width="58.6666667" height="58.6666667"></rect>
<g id="Group-194756" fill="#E9EEFF">
<path d="M48,24 C48,37.2548455 37.2548455,48 24,48 C10.7451553,48 0,37.2548455 0,24 C0,10.7451553 10.7451553,0 24,0 C37.2548455,0 48,10.7451553 48,24 C48,24 48,24 48,24 Z" id="Ellipse-930"></path>
<path d="M64,32 C64,49.6731274 49.6731274,64 32,64 C14.3268738,64 0,49.6731274 0,32 C0,14.3268738 14.3268738,0 32,0 C49.6731274,0 64,14.3268738 64,32 C64,32 64,32 64,32 Z" id="Ellipse-930"></path>
</g>
</g>
</g>
<g id="Group-1" transform="translate(8.000000, 8.000000)">
<g id="Group-1" transform="translate(10.666667, 10.666667)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<g transform="translate(0.888889, 2.666667)">
<path d="M16.7822222,24.1568627 C15.3685333,24.1568627 14.2222222,25.315817 14.2222222,26.745098 C14.2222222,28.1743791 15.3685333,29.3333333 16.7822222,29.3333333 C18.1959111,29.3333333 19.3422222,28.1743791 19.3422222,26.745098 C19.3422222,25.315817 18.1959111,24.1568627 16.7822222,24.1568627 Z" id="路径" fill="#8B9CFF" filter="url(#filter-3)"></path>
<g transform="translate(1.185185, 3.555556)">
<path d="M22.3762963,32.2091503 C20.4913778,32.2091503 18.962963,33.7544227 18.962963,35.6601307 C18.962963,37.5658388 20.4913778,39.1111111 22.3762963,39.1111111 C24.2612148,39.1111111 25.7896296,37.5658388 25.7896296,35.6601307 C25.7896296,33.7544227 24.2612148,32.2091503 22.3762963,32.2091503 Z" id="路径" fill="#8B9CFF" filter="url(#filter-3)"></path>
<g id="save-disk-floppy-ram-svgrepo-com-1">
<mask id="mask-5" fill="white">
<use xlink:href="#path-4"></use>
@ -51,11 +50,10 @@
<use fill="black" fill-opacity="1" filter="url(#filter-8)" xlink:href="#path-7"></use>
<use fill="url(#linearGradient-6)" fill-rule="evenodd" xlink:href="#path-7"></use>
</g>
<path id="路径" d="M17.9797339,2.14555169 C18.9871909,2.14555169 19.9557498,2.55126075 20.6719663,3.27229619 L20.6719663,3.27229619 L25.2092296,7.85960364 C25.9214987,8.58280608 26.3221783,9.5605749 26.3221783,10.577251 L26.3221783,10.577251 L26.3221783,20.3694079 C26.3221783,23.8140585 23.5570004,26.6097347 20.1472005,26.6097347 L20.1472005,26.6097347 L8.29440052,26.6097347 C4.88460065,26.6097347 2.11942274,23.8140585 2.11942274,20.3694079 L2.11942274,20.3694079 L2.11942274,8.38587849 C2.11942274,4.94122789 4.88460065,2.14555169 8.29440052,2.14555169 L8.29440052,2.14555169 Z M17.9797339,2.64555169 L8.29440052,2.64555169 C5.16197817,2.64555169 2.61942274,5.21615001 2.61942274,8.38587849 L2.61942274,8.38587849 L2.61942274,20.3694079 C2.61942274,23.5391364 5.16197817,26.1097347 8.29440052,26.1097347 L8.29440052,26.1097347 L20.1472005,26.1097347 C23.2796229,26.1097347 25.8221783,23.5391364 25.8221783,20.3694079 L25.8221783,20.3694079 L25.8221783,10.577251 C25.8221783,9.69186875 25.4731404,8.84012 24.8533681,8.21083334 L24.8533681,8.21083334 L20.3168544,3.62428381 C19.6945858,2.99782912 18.8535856,2.64555169 17.9797339,2.64555169 L17.9797339,2.64555169 Z" fill="#FFFFFF" fill-rule="nonzero"></path>
<path id="路径" d="M23.9729785,2.86073559 C25.3162545,2.86073559 26.6076664,3.401681 27.5626217,4.36306158 L27.5626217,4.36306158 L33.6123061,10.4794715 C34.5619982,11.4437414 35.0962377,12.7474332 35.0962377,14.1030014 L35.0962377,14.1030014 L35.0962377,27.1592105 C35.0962377,31.752078 31.4093339,35.4796463 26.862934,35.4796463 L26.862934,35.4796463 L11.0592007,35.4796463 C6.51280087,35.4796463 2.82589699,31.752078 2.82589699,27.1592105 L2.82589699,27.1592105 L2.82589699,11.1811713 C2.82589699,6.58830385 6.51280087,2.86073559 11.0592007,2.86073559 L11.0592007,2.86073559 Z M23.9729785,3.52740226 L11.0592007,3.52740226 C6.88263756,3.52740226 3.49256366,6.95486668 3.49256366,11.1811713 L3.49256366,11.1811713 L3.49256366,27.1592105 C3.49256366,31.3855152 6.88263756,34.8129796 11.0592007,34.8129796 L11.0592007,34.8129796 L26.862934,34.8129796 C31.0394972,34.8129796 34.4295711,31.3855152 34.4295711,27.1592105 L34.4295711,27.1592105 L34.4295711,14.1030014 C34.4295711,12.9224917 33.9641872,11.7868267 33.1378241,10.9477778 L33.1378241,10.9477778 L27.0891392,4.83237841 C26.2594478,3.99710549 25.1381141,3.52740226 23.9729785,3.52740226 L23.9729785,3.52740226 Z" fill="#FFFFFF" fill-rule="nonzero"></path>
<g id="编组" mask="url(#mask-5)" fill="url(#linearGradient-10)">
<g transform="translate(7.581848, 8.133875)" id="形状结合">
<path d="M1.27168236,9.74872441 C1.38004731,9.75547612 1.47988044,9.80980048 1.54440156,9.897125 C1.74565156,10.115 3.47552656,11.963 3.65052656,12.158125 L3.65052656,12.158125 L3.65140156,12.158125 C3.74585343,12.2464673 3.79508332,12.3717858 3.78482414,12.4995126 C3.77456496,12.6272394 3.70596377,12.7430936 3.59890156,12.8135 C3.34515156,13.02875 2.94790156,13.44 2.77640156,13.615 C2.60577656,13.789125 2.37215156,13.818875 2.14290156,13.54675 C1.91365156,13.2755 0.373651562,11.55 0.229276562,11.3855 C0.0849015624,11.221 -0.137348438,10.87275 0.113776562,10.66275 C0.276526562,10.527125 0.846151562,9.993375 0.982651562,9.862125 C1.05751317,9.78348476 1.16331742,9.7419727 1.27168236,9.74872441 Z M4.49752656,7.71925 C5.51690156,7.637 8.55052656,7.886375 9.21902656,7.912625 C9.88665156,7.93975 9.97240156,8.647625 9.37827656,8.729875 C8.71852656,8.820875 6.74277656,8.95125 6.57915156,9.004625 C6.41552656,9.058875 6.01302656,9.562875 7.04552656,9.680125 C7.92803767,9.80583465 8.81985007,9.85414359 9.71077656,9.8245 C10.1894016,9.751875 11.5202766,8.3755 11.9630266,8.054375 C12.2491516,7.846125 12.8354016,7.676375 13.0681516,8.103375 C13.1162766,8.190875 12.9509016,8.528625 12.7181516,8.763125 L12.7181516,8.763125 L12.3301924,9.15121508 C11.5222846,9.94975071 9.91449939,11.4733424 9.21552656,11.5955 C8.87707656,11.65465 8.28242656,11.63806 7.66229656,11.604026 L7.19602656,11.5761406 C6.42296406,11.52725 5.70021406,11.473875 5.47840156,11.529875 C5.13154085,11.6420437 4.80287874,11.804164 4.50277656,12.011125 L4.50277656,12.011125 L4.21315156,12.04 L2.03965156,9.71075 L1.98452656,9.449125 C1.98452656,9.449125 3.47815156,7.8015 4.49752656,7.71925 Z M10.8631516,0 C11.4345266,0 11.8982766,0.46375 11.8982766,1.035125 L11.8982766,7.251125 C11.8807766,7.261625 11.8641516,7.273875 11.8475266,7.286125 L9.14815156,7.142625 C8.98540156,7.135625 8.68090156,7.1155 8.29590156,7.090125 C7.35002656,7.028 5.92115156,6.9335 5.02252656,6.9335 C4.81252656,6.9335 4.64015156,6.93875 4.50977656,6.94925 C3.62414273,7.10535297 2.79688788,7.49706736 2.11490156,8.08325 C2.06754065,7.96407046 2.04315156,7.83699514 2.04315156,7.70875 L2.04315156,1.035125 C2.04315156,0.46375 2.50690156,0.000875 3.07827656,0 L10.8631516,0 Z M8.98890156,3.67675 L4.90265156,3.67675 C4.67697421,3.67675 4.49402656,3.85969764 4.49402656,4.085375 C4.49402656,4.31105236 4.67697421,4.494 4.90265156,4.494 L8.98890156,4.494 C9.21457892,4.494 9.39752656,4.31105236 9.39752656,4.085375 C9.39752656,3.85969764 9.21457892,3.67675 8.98890156,3.67675 Z M8.98890156,1.633625 L4.90265156,1.633625 C4.67697421,1.633625 4.49402656,1.81657264 4.49402656,2.04225 C4.49402656,2.26792736 4.67697421,2.450875 4.90265156,2.450875 L8.98890156,2.450875 C9.21457892,2.450875 9.39752656,2.26792736 9.39752656,2.04225 C9.39752656,1.81657264 9.21457892,1.633625 8.98890156,1.633625 Z"></path>
</g>
<g transform="translate(10.109131, 10.845167)" id="形状结合">
<path d="M1.69557648,12.9982992 C1.84006308,13.0073015 1.97317392,13.079734 2.05920208,13.1961667 C2.30420208,13.4614058 4.24831645,15.5385797 4.7621741,16.0958495 L4.86736875,16.2108333 L4.86853542,16.2108333 C4.99447124,16.3286231 5.06011109,16.4957144 5.04643218,16.6660168 C5.03275328,16.8363192 4.94128503,16.9907914 4.79853542,17.0846667 C4.46020208,17.3716667 3.93053542,17.92 3.70186875,18.1533333 C3.47436875,18.3855 3.16286875,18.4251667 2.85720208,18.0623333 C2.83062237,18.0308841 2.79082779,17.9847732 2.74019099,17.9266441 L2.55812655,17.7188456 C1.89361481,16.9633863 0.464723822,15.3618551 0.305702083,15.1806667 C0.113202083,14.9613333 -0.18313125,14.497 0.151702083,14.217 C0.368702083,14.0361667 1.12820208,13.3245 1.31020208,13.1495 C1.41001756,13.0446463 1.55108989,12.9892969 1.69557648,12.9982992 Z M5.99670208,10.2923333 C6.57173413,10.2459359 7.62748463,10.2786837 8.7217636,10.334563 L9.31980625,10.367 C10.6123271,10.4407917 11.8463687,10.5326667 12.2920354,10.5501667 C13.1822021,10.5863333 13.2965354,11.5301667 12.5043687,11.6398333 C11.9689195,11.7136884 10.783348,11.8069953 9.88829418,11.8847595 L9.52522889,11.9170334 C9.1288029,11.9533381 8.83860063,11.9845072 8.77220208,12.0061667 C8.55403542,12.0785 8.01736875,12.7505 9.39403542,12.9068333 C10.5707169,13.0744462 11.7598001,13.1388581 12.9477021,13.0993333 C13.5858687,13.0025 15.3603687,11.1673333 15.9507021,10.7391667 C16.3322021,10.4615 17.1138687,10.2351667 17.4242021,10.8045 C17.4883687,10.9211667 17.2678687,11.3715 16.9575354,11.6841667 C16.9119521,11.7301667 16.8548092,11.7878571 16.7875796,11.8554052 L16.5571034,12.0857891 C15.5259402,13.1109524 13.2543687,15.2916667 12.2873687,15.4606667 C11.8172993,15.5428194 10.9765701,15.5153947 10.1128857,15.4662468 L9.59470208,15.4348542 C8.56395208,15.3696667 7.60028542,15.2985 7.30453542,15.3731667 C6.84205447,15.5227249 6.40383832,15.7388854 6.00370208,16.0148333 L6.00370208,16.0148333 L5.61753542,16.0533333 L2.71953542,12.9476667 L2.64603542,12.5988333 C2.64603542,12.5988333 4.63753542,10.402 5.99670208,10.2923333 Z M14.4842021,0 C15.2460354,0 15.8643687,0.618333333 15.8643687,1.38016667 L15.8643687,9.66816667 C15.8410354,9.68216667 15.8188687,9.6985 15.7967021,9.71483333 L12.1975354,9.5235 C11.9805354,9.51416667 11.5745354,9.48733333 11.0612021,9.4535 C9.80003542,9.37066667 7.89486875,9.24466667 6.69670208,9.24466667 C6.41670208,9.24466667 6.18686875,9.25166667 6.01303542,9.26566667 C4.8321903,9.47380396 3.72918384,9.99608981 2.81986875,10.7776667 C2.75672086,10.6187606 2.72420208,10.4493269 2.72420208,10.2783333 L2.72420208,1.38016667 C2.72420208,0.618333333 3.34253542,0.00116666667 4.10436875,0 L14.4842021,0 Z M11.9852021,4.90233333 L6.53686875,4.90233333 C6.23596561,4.90233333 5.99203542,5.14626353 5.99203542,5.44716667 C5.99203542,5.74806981 6.23596561,5.992 6.53686875,5.992 L11.9852021,5.992 C12.2861052,5.992 12.5300354,5.74806981 12.5300354,5.44716667 C12.5300354,5.14626353 12.2861052,4.90233333 11.9852021,4.90233333 Z M11.9852021,2.17816667 L6.53686875,2.17816667 C6.23596561,2.17816667 5.99203542,2.42209686 5.99203542,2.723 C5.99203542,3.02390314 6.23596561,3.26783333 6.53686875,3.26783333 L11.9852021,3.26783333 C12.2861052,3.26783333 12.5300354,3.02390314 12.5300354,2.723 C12.5300354,2.42209686 12.2861052,2.17816667 11.9852021,2.17816667 Z"></path>
</g>
</g>
</g>

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

@ -1,66 +1,74 @@
<script lang="ts" setup>
import { defineProps, onMounted, ref } from "vue";
import { gettaskToolsCount } from "@/api/home/main";
import { defineProps, onBeforeMount, onMounted, ref, watch } from 'vue'
import { gettaskToolsCount } from '@/api/home/main'
import { useDataHeaderStore } from '@/store/modules/DataHeader'
defineProps({
hasColor: {
type: Boolean,
default: () => false,
},
});
})
const headerstore = useDataHeaderStore()
const datalist = ref([
{
link: "count",
title: "任务总数",
link: 'count',
title: '任务总数',
count: 0,
},
{
link: "wait",
title: "待审批",
link: 'wait',
title: '待审批',
count: 0,
},
{
link: "done",
title: "已审批",
link: 'done',
title: '已审批',
count: 0,
},
{
link: "resolve",
title: "通过",
link: 'resolve',
title: '通过',
count: 0,
color: "#03c984",
color: '#03c984',
},
{
link: "reject",
title: "不通过",
link: 'reject',
title: '不通过',
count: 0,
color: "#ff8b8b",
color: '#ff8b8b',
},
{
link: "reimg",
title: "图片重复数",
link: 'reimg',
title: '图片重复数',
count: 0,
},
{
link: "breakcount",
title: "小结重复数",
link: 'breakcount',
title: '小结重复数',
count: 0,
},
]);
])
function initRem() {
const designWidth = 1440;
const rempPx = 16;
const scale = window.innerWidth / designWidth;
document.documentElement.style.fontSize = `${scale * rempPx}px`;
const designWidth = 1440
const rempPx = 16
const scale = window.innerWidth / designWidth
document.documentElement.style.fontSize = `${scale * rempPx}px`
}
onMounted(() => {
initRem();
getData();
});
initRem()
getData()
setTimeout(() => {
headerstore.setDataConfig(false)
// alert(headerstore.DataConfig)
}, 500)
// headerstore.setDataConfig(false)
})
async function getData() {
const { data } = await gettaskToolsCount();
const { data } = await gettaskToolsCount()
if (data) {
const {
total,
@ -70,55 +78,65 @@ async function getData() {
repeat,
approvedCount,
notGoCount,
} = data;
let newdata=[
} = data
const newdata = [
{
link: "count",
title: "任务总数",
link: 'count',
title: '任务总数',
count: total,
},
{
link: "wait",
title: "待审批",
link: 'wait',
title: '待审批',
count: treat,
},
{
link: "done",
title: "已审批",
link: 'done',
title: '已审批',
count: alreadyApprove,
},
{
link: "resolve",
title: "通过",
link: 'resolve',
title: '通过',
count: approvedCount,
color: "#03c984",
color: '#03c984',
},
{
link: "reject",
title: "不通过",
link: 'reject',
title: '不通过',
count: notGoCount,
color: "#ff8b8b",
color: '#ff8b8b',
},
{
link: "reimg",
title: "图片重复数",
link: 'reimg',
title: '图片重复数',
count: repeat,
},
{
link: "breakcount",
title: "小结重复数",
link: 'breakcount',
title: '小结重复数',
count: repeatedNodules,
},
]
datalist.value =newdata ;
console.log(datalist.value)
datalist.value = newdata
}
}
watch(
() => headerstore.DataConfig,
(newval) => {
if (headerstore.DataConfig) {
getData()
headerstore.setDataConfig(false)
}
},
)
defineExpose({
getData,
})
</script>
<template>
<div class="header_wrap" :style="hasColor ? '' : 'margin-top: 7.375rem;'">
<div v-for="(item, index) in datalist" :key="index" class="header_box">
<div class="header_item">
<SvgIcon :name="item.link" :style="index == 0 ? 'margin-left:0.5rem' : ''" />

@ -27,7 +27,8 @@ const inputHandler = debounce((keyword) => {
//
async function handlerSearch(value) {
//
if(value === '/') return
if (value === '/')
return
const res = await getSearchList({
search: value,
})
@ -168,7 +169,7 @@ onMounted(() => {
class="list_item"
@click="goPath(item, sitem.id)"
>
<SvgIcon name="task-icon" size="16" style="margin-left: 16px" />
<SvgIcon name="task-icon" size="20" style="margin-left: 16px" />
<span class="name" v-html="highlightText(sitem.name, value)" />
</div>
</div>
@ -181,8 +182,9 @@ onMounted(() => {
// width: 60%;
width: 808px;
position: absolute;
top: 20%;
left: 30%;
top: 100px;
left:0;
right: 0;
box-shadow: none !important;
.ip_box {
@ -209,23 +211,26 @@ onMounted(() => {
}
.list_box {
background: #fefefe;
border: 1px dashed #f4f4f4;
border-radius: 8px;
box-shadow: 0px 12px 12px 0px rgba(80, 122, 253, 0.15);
box-shadow: 0px 12px 12px 0px rgba(80,122,253,0.15);
margin-top: 15px;
padding: 8px 16px;
width: 802px;
height: 400px;
overflow: auto;
background-image: url("@/assets/images/searchback.png");
background-size: 104% 110%;
background-position: -12px -2px;
.list_classfiy_item {
margin-bottom: -2px;
.list_title {
font-size: 12px;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
color: #999999;
line-height: 17px;
margin: 6px 0 12px 0;
margin: 8px 0 10px 0;
font-weight: 500;
}
@ -233,7 +238,7 @@ onMounted(() => {
display: flex;
flex-flow: row nowrap;
align-items: center;
margin: 16px 0;
margin: 0 0 12px 0
}
}
}
@ -246,7 +251,7 @@ onMounted(() => {
.history-list {
align-items: center;
// margin-bottom:12;12+26=38
padding: 26px 12px 12px 0;
//padding: 26px 12px 12px 0;
}
.name {
@ -262,7 +267,7 @@ onMounted(() => {
flex: 1;
overflow-y: hidden;
overflow-x: auto;
margin: 9px 0 9px 29px;
margin: -1px 0 9px 0px;
.tag {
font-weight: 500;
@ -271,7 +276,7 @@ onMounted(() => {
border: 1px solid #e4e7ed;
border-radius: 12px;
margin-right: 12px;
font-size: 13px;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;

@ -1,4 +1,4 @@
import { defineAsyncComponent } from "vue"
import { defineAsyncComponent } from 'vue'
import type { AsideEntity } from './aside'
export interface RowData {
@ -72,7 +72,9 @@ export const ColumnsMap: Recordable<ColumnEntity> = {
export const headRules = ['任务Id', '任务名称', '审批节点', '审批状态', '图片相似度', '提报时间', '更新时间']
export function findKey(columns: any[], header: string) {
const item = columns.find((column) => { return (column as any).title === header })
const item = columns.find((column) => {
return (column as any).title === header
})
return (item as any).key
}
@ -84,7 +86,7 @@ export const asideMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izupuser',
// component: ReportUserVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/ReportUser.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/ReportUser.vue')),
},
izproject: {
label: '所属项目',
@ -92,7 +94,7 @@ export const asideMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izproject',
// component: IzProjectVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzProject.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzProject.vue')),
},
izplan: {
label: '所属计划',
@ -100,7 +102,7 @@ export const asideMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izplan',
// component: PlanVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/Plan.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/Plan.vue')),
},
izstatus: {
label: '审批状态',
@ -108,7 +110,7 @@ export const asideMap: Recordable<AsideEntity> = {
isDefaultFilter: false,
key: 'izstatus',
// component: IzStatus, // todo
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzStatus.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzStatus.vue')),
},
izyear: {
label: '提报时间',
@ -116,7 +118,7 @@ export const asideMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izyear',
// component: TimeVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/Time.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/Time.vue')),
},
iztaskrrom: {
label: '任务来源',
@ -124,7 +126,7 @@ export const asideMap: Recordable<AsideEntity> = {
isDefaultFilter: false,
key: 'iztaskrrom',
// component: IztaskrromVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/Iztaskrrom.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/Iztaskrrom.vue')),
},
izshowall: {
label: '显示全部任务数据',
@ -132,7 +134,7 @@ export const asideMap: Recordable<AsideEntity> = {
isDefaultFilter: false,
key: 'izshowall',
// component: IzShowAll,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzShowAll.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzShowAll.vue')),
inFilterList: false,
},
}
@ -145,7 +147,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izApprovalStatus',
// component: IzApprovalStatus, // todo
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzApprovalStatus.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzApprovalStatus.vue')),
},
izuptime: {
label: '提报时间',
@ -153,7 +155,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izuptime',
// component: TimeVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/Time.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/Time.vue')),
},
izupuser: {
label: '提报人',
@ -161,7 +163,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izupuser',
// component: ReportUserVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/ReportUser.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/ReportUser.vue')),
},
iztaskrrom: {
label: '任务来源',
@ -169,7 +171,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'iztaskrrom',
// component: IztaskrromVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/Iztaskrrom.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/Iztaskrrom.vue')),
},
izcustomname: {
label: '拜访客户',
@ -177,7 +179,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izcustomname',
// component: IzCustomname,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzCustomname.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzCustomname.vue')),
},
izcustomtype: {
label: '客户类型',
@ -185,7 +187,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izcustomtype',
// component: IzCustomtype,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzCustomtype.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzCustomtype.vue')),
},
izproject: {
label: '所属项目',
@ -193,7 +195,15 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izproject',
// component: IzProjectVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzProject.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzProject.vue')),
},
izplan: {
label: '所属计划',
defaultValue: null,
isDefaultFilter: true,
key: 'izplan',
// component: PlanVue,
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/Plan.vue')),
},
izvisitpro: {
label: '拜访省份/直辖市',
@ -201,7 +211,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izvisitpro',
// component: IzVisitcity,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzVisitcity.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzVisitcity.vue')),
},
izcustomlevel: {
label: '客户级别',
@ -209,7 +219,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izcustomlevel',
// component: IzCustomlevel,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzCustomlevel.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzCustomlevel.vue')),
},
izprojecttype: {
label: '项目类别',
@ -217,7 +227,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izprojecttype',
// component: IzProjecttype,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzProjecttype.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzProjecttype.vue')),
},
izproductname: {
label: '产品名称',
@ -225,7 +235,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izproductname',
// component: IzProductVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/IzProduct.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/IzProduct.vue')),
},
izvisitcity: {
label: '拜访城市',
@ -233,7 +243,7 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izvisitcity',
// component: IzvisitproVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/Izvisitpro.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/Izvisitpro.vue')),
},
izfirm: {
label: '厂商',
@ -241,6 +251,6 @@ export const asideTaskMap: Recordable<AsideEntity> = {
isDefaultFilter: true,
key: 'izfirm',
// component: IzfirmVue,
component: defineAsyncComponent(() => import("@/views/home/aside/comp/items/Izfirm.vue")),
component: defineAsyncComponent(() => import('@/views/home/aside/comp/items/Izfirm.vue')),
},
}

@ -0,0 +1,35 @@
import { defineStore } from 'pinia'
import { store } from '@/store'
export interface ConfigState {
DataConfig: boolean
}
export const useDataHeaderStore = defineStore({
id: 'app-config',
state: (): ConfigState => ({
DataConfig: false,
}),
getters: {
getDataConfig(): boolean {
return this.DataConfig
},
},
actions: {
setDataConfig(value) {
this.DataConfig = value
},
},
})
// Need to be used outside the setup
export function useConfig() {
return useDataHeaderStore(store)
}

@ -357,6 +357,7 @@ useKeydown('s', () => setShowSearch(true))
<!-- 搜索跳转模块 -->
<Search
v-show="showSearch"
toolipvalue="请输入任务id、任务名称、提报人"
@select="scrollHandler"
@close="setShowSearch(false)"
@input-change="inputChange"
@ -367,6 +368,7 @@ useKeydown('s', () => setShowSearch(true))
v-show="!showSearch"
ref="AdvanceFilterRef"
:type="1"
toolipvalue="请输入任务id、任务名称、提报人"
@select="filterHandler"
@update:search="setShowSearch(true)"
@show-custom="showModal(customModalRef)"

@ -111,7 +111,7 @@ defineExpose({
<span>{{ item.content }}</span>
</n-gi>
<n-gi span="3">
<span style="color:#8b8d8f;">任务重复数量</span>
<span style="color:#8b8d8f;">任务重复数量:</span>
</n-gi>
<n-gi span="8">
<span><span class="count">{{ item.count }}</span></span>
@ -150,9 +150,11 @@ defineExpose({
}
}
.wrapper-header {
padding-top: 40px;
margin-top: 80px;
margin-top: 53px;
text-align: center;
font-size: 16px;
padding-top: 40px;
margin-bottom: 16px;
.wrapper-title {
text-align: center;
font-size: 16px;
@ -288,7 +290,7 @@ defineExpose({
.total {
color: #6684fa;
font-weight: bold;
font-size: 22px;
font-size: 30px;
margin: 0px 5px
}

@ -26,6 +26,7 @@ import { getRepeatList } from '@/api/final'
import { formatToDateHMS } from '@/utils/dateUtil'
import { audit } from '@/api/task/task'
import NotPassed from '@/components/Approval/NotPassed.vue'
import { useDataHeaderStore } from '@/store/modules/DataHeader'
const emit = defineEmits<{
(e: 'commit', columns: any[])
@ -37,6 +38,7 @@ const izstatusList = ref([])
const dialog = useDialog()
const checkedRowKeys = ref([])
const router = useRouter()
const haeaderstore = useDataHeaderStore()
onBeforeMount(() => {
dicStore.fetchizstatusListt()
@ -330,6 +332,7 @@ function doAudit(param: any) {
if (code === 'OK') {
message.success(res.message)
reload()
haeaderstore.setDataConfig(true)
}
else { message.error(res.message) }
})
@ -360,6 +363,7 @@ function reload() {
selectionIds.value = []
checkedRowKeys.value = []
query(pagination.page, pagination.pageSize)
haeaderstore.setDataConfig(true)
}
function goDetail(row) {

@ -48,6 +48,7 @@ import emitter from '@/utils/mitt'
import { formatToDateHMS } from '@/utils/dateUtil'
import { getAllfieldList, getfieldList, savefield } from '@/api/home/filter'
import DataHeader from '@/components/DataHeader/index.vue'
import { useDataHeaderStore } from '@/store/modules/DataHeader'
const props = defineProps({
@ -60,6 +61,7 @@ const emit = defineEmits(['changeShow'])
function changeContent() {
emit('changeShow')
}
const headerref = ref(null)
const checkedRowKeys = ref([])
const dicStore = useDictionary()
const izstatusList = ref([])
@ -86,102 +88,7 @@ const actionsColumns = {
},
}
const columnsRef = ref<DataTableColumns<RowData>>([])
// const columns: DataTableColumns<RowData> = [
// {
// type: "selection",
// fixed: "left",
// width: 50,
// },
// {
// title: "Id",
// key: "id",
// fixed: "left",
// width: 190,
// },
// {
// title: "",
// key: "fromtaskname",
// fixed: "left",
// width: 200,
// ellipsis: {
// tooltip: true,
// },
// },
// {
// title: "",
// key: "taskname",
// width: 100,
// },
// {
// title: "",
// key: "states",
// width: 100,
// sorter: "default",
// renderSorterIcon: ({ order }) => {
// if (order === false) return h(SvgIcon, { name: "sort-2" });
// if (order === "ascend") return h(SvgIcon, { name: "sort-1" });
// if (order === "descend") return h(SvgIcon, { name: "sort-3" });
// },
// render(row: any) {
// const item: any = izstatusList.value.find(
// (item: any) => item.value == row.states
// );
// return item ? item.label : "";
// },
// },
// {
// title: "",
// key: "similarityscore",
// width: 150,
// sorter: "default",
// renderSorterIcon: ({ order }) => {
// if (order === false) return h(SvgIcon, { name: "sort-2" });
// if (order === "ascend") return h(SvgIcon, { name: "sort-1" });
// if (order === "descend") return h(SvgIcon, { name: "sort-3" });
// },
// render(row: any) {
// return row.similarityscore ? `${row.similarityscore}%` : "";
// },
// },
// {
// title: "",
// key: "createdate",
// width: 200,
// sorter: "default",
// renderSorterIcon: ({ order }) => {
// if (order === false) return h(SvgIcon, { name: "sort-2" });
// if (order === "ascend") return h(SvgIcon, { name: "sort-1" });
// if (order === "descend") return h(SvgIcon, { name: "sort-3" });
// },
// render(row: any) {
// return formatToDateHMS(row.createdate || 0);
// },
// },
// {
// title: "",
// key: "updatetime",
// width: 200,
// render(row: any) {
// return row.updatetime ? formatToDateHMS(row.updatetime) : "";
// },
// },
// {
// title: "",
// key: "actions",
// width: 200,
// fixed: "right",
// render(row) {
// return h(Action, {
// id: row.id,
// status: row.states,
// trigger: (action) => {
// actionHandler(action, row);
// },
// });
// },
// },
// ];
const haeaderstore = useDataHeaderStore()
async function getColumns() {
columnsRef.value = [
@ -238,37 +145,6 @@ async function getColumns() {
return v
})
}
// TODO:
// #region
// allList?.map((v) => {
// if (!userFieldFixed?.length && !userFieldUnFixed?.length) {
// if (v.isrequired == 2) {
// columnsRef.value.push({
// title: v.fieldDesc,
// fixed: "left",
// key: v.name,
// width: 120,
// });
// }
// }
// if (userFieldFixed?.find((v2) => v2 == v.name)) {
// columnsRef.value.push({
// title: v.fieldDesc,
// key: v.name,
// fixed: "left",
// width: 120,
// });
// }
// if (userFieldUnFixed?.find((v2) => v2 == v.name)) {
// columnsRef.value.push({
// title: v.fieldDesc,
// key: v.name,
// width: 120,
// });
// }
// });
// #endregion
columnsRef.value.push(actionsColumns as any)
formatColumns()
@ -844,6 +720,7 @@ function rejectHandler(list) {
//
function doAudit(param: any) {
const modal = unref(headerref)! as any
dialog.info({
title: '确认提示',
content: '确认给该任务审批为【通过】吗?',
@ -855,6 +732,8 @@ function doAudit(param: any) {
if (code === 'OK') {
message.success(res.message)
reload()
modal.getData()
// haeaderstore.setDataConfig(true)
}
else {
message.error(res.message)
@ -871,6 +750,7 @@ function switchBatch() {
}
function reload() {
const modal = unref(headerref)! as any
selectionIds.value = []
checkedRowKeys.value = []
@ -878,6 +758,8 @@ function reload() {
tableRef.value?.pagination,
) as PaginationProps
query(page!, pageSize!, {}, props.taskvalue)
modal.getData()
// haeaderstore.setDataConfig(true)
}
watch(
@ -1005,8 +887,8 @@ defineExpose({
<div v-show="!showActions" style="display: flex; align-items: center">
<div class="btn">
<SvgIcon style="margin-right: 6px" size="22" name="batch" />
批量审批
<!-- <SvgIcon style="margin-right: 6px" size="22" name="batch" />
批量审批 -->
</div>
</div>
<div v-show="showActions" class="batch">
@ -1025,6 +907,7 @@ defineExpose({
>
<SvgIcon size="24" name="vs" />
<img
style="margin-right: 5px;"
class="btn-approval"
src="@/assets/images/task/btn-pass.png"
alt=""
@ -1067,22 +950,13 @@ defineExpose({
</div>
</div>
<div class="header_data">
<DataHeader :has-color="true" />
</div>
<!-- <div class="wrapper-statistic">
<div v-for="i in 7" :key="i" class="item">
<div class="icon" />
<div class="content">
<span class="num">6399</span>
<span class="label">任务总数</span>
</div>
<div v-if="i === 7" style="display: flex;align-items: center;">
<div class="divider" />
<SvgIcon size="18" name="setting" />
<DataHeader ref="headerref" :has-color="true" />
</div>
</div>
</div> -->
<div class="wrapper-settings">
<div class="sltedtext">
已选<span style="width:20px;margin-left:10px;margin-right:10px;color:#507AFD">{{ checkedRowKeys.length }}</span>
</div>
<SvgIcon
style="cursor: pointer"
size="18"
@ -1090,6 +964,7 @@ defineExpose({
@click="showModal(customTabelRef)"
/>
</div>
<div class="wrapper-content">
<NDataTable
id="table"
@ -1166,11 +1041,15 @@ defineExpose({
flex-direction: column;
box-sizing: border-box;
margin-left: 16px;
margin-right:16px ;
width: 100%;
background: #fff;
padding: 0px 24px 24px 24px;
.sltedtext{
position: absolute;
left: 437px;
color:#202020
}
&-header {
display: flex;
justify-content: space-between;
@ -1198,16 +1077,16 @@ defineExpose({
}
.btn {
width: 118px;
height: 36px;
background: linear-gradient(135deg, #5b85f8, #3c6cf0);
width: 160px;
height: 27px;
background: url(/src/assets/images/pocitypass.png) no-repeat;
background-size: 100% 100%;
border-radius: 17px;
box-shadow: 0px 2px 6px 0px rgba(116, 153, 253, 0.3);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
margin-right: 6px;
margin-right: 16px;
cursor: pointer;
}

File diff suppressed because it is too large Load Diff

@ -11,8 +11,9 @@ import { getFinalList } from '@/api/final'
import { useFinal } from '@/store/modules/final'
import { formatToDateHMS } from '@/utils/dateUtil'
import { audit } from '@/api/task/task'
import DataHeader from '@/components/DataHeader/index.vue'
import NotPassed from '@/components/Approval/NotPassed.vue'
import { useDataHeaderStore } from '@/store/modules/DataHeader'
const props = defineProps({
@ -22,6 +23,9 @@ const props = defineProps({
},
})
const emit = defineEmits(['changeShow'])
const aa = ref(true)
const haeaderstore = useDataHeaderStore()
const headerref = ref(null)
const dialog = useDialog()
const message = useMessage()
const router = useRouter()
@ -45,6 +49,8 @@ const selectionIds = ref([])
const showActions = computed(() => {
return selectionIds.value.length
})
console.log(haeaderstore)
function handleCheck(row: any, showcheck: any) {
if (showcheck == false) {
console.log(tableData.value)
@ -298,6 +304,8 @@ function actionHandler(action: any, row: any) {
}
//
function doAudit(param: any, row: any) {
const modal = unref(headerref)! as any
dialog.info({
title: '确认提示',
content: '确认给该任务审批为【通过】吗?',
@ -313,12 +321,16 @@ function doAudit(param: any, row: any) {
num = 1
reload()
selectionIds.value = []
modal.getData()
}
else {
message.error(res.message)
selectionIds.value = []
}
})
// alert("X")
// haeaderstore.setDataConfig(true)
},
onNegativeClick: () => {},
})
@ -470,8 +482,12 @@ function changesort(sortnamex) {
num = 1
}
function notpass() {
const modal = unref(headerref)! as any
initData(1, 20, {}, props.taskvalue)
selectionIds.value = []
modal.getData()
// haeaderstore.setDataConfig(true)
}
watch(
() => finalStore.asideValue,
@ -512,8 +528,8 @@ defineExpose({
<div v-show="!showActions" style="display: flex; align-items: center">
<div class="btn">
<SvgIcon style="margin-right: 6px" size="22" name="batch" />
批量审批
<!-- <SvgIcon style="margin-right: 6px" size="22" name="batch" />
批量审批 -->
</div>
</div>
<div v-show="showActions" class="batch">
@ -532,6 +548,7 @@ defineExpose({
>
<SvgIcon size="24" name="vs" />
<img
style="margin-right:16px"
class="btn-approval"
src="@/assets/images/task/btn-pass.png"
alt=""
@ -574,7 +591,7 @@ defineExpose({
</div>
<div class="header_data">
<DataHeader :has-color="true" />
<DataHeader v-if="aa" ref="headerref" :has-color="true" />
</div>
<div class="wrapper-settings">
<div>
@ -694,7 +711,6 @@ defineExpose({
</div>
</div>
<div class="bottom">
<!-- <div class="reset_action">重置审批</div> -->
<div
v-show="item.states != 2"
class="resovle_action"
@ -732,16 +748,6 @@ defineExpose({
<style scoped lang="less">
.wrapper {
// display: flex;
// flex-flow: row wrap;
// align-items: center;
// justify-content: flex-start;
// flex: 1;
// box-sizing: border-box;
// margin-left: 16px;
//width: 100%;
//background: #fff;
// padding: 0px 24px 24px 24px;
display: flex;
flex: 1;
overflow: hidden;
@ -784,7 +790,6 @@ defineExpose({
}
.xjcc {
//width: 226px;
font-weight: bold;
color: #507afd;
margin-right: 20px;
@ -798,16 +803,16 @@ defineExpose({
}
.btn {
width: 118px;
height: 36px;
background: linear-gradient(135deg, #5b85f8, #3c6cf0);
width: 163px;
height: 27px;
background: url(/src/assets/images/pocitypass.png) no-repeat;
background-size: 100% 100%;
border-radius: 17px;
box-shadow: 0px 2px 6px 0px rgba(116, 153, 253, 0.3);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
margin-right: 6px;
margin-right: 16px;
cursor: pointer;
}

@ -1,5 +1,5 @@
<script lang="ts" setup>
import { ref , onMounted} from 'vue'
import { onMounted, ref } from 'vue'
import Aside from './aside/Aside.vue'
import Content from './content/Content.vue'
import ListContent from './content/ListContent.vue'
@ -11,29 +11,28 @@ defineOptions({
const showList = ref(true)
const contentRef: any = ref(null)
const ListRef: any = ref(null)
const asideref=ref(null)
const taskvalue=ref("")
const asideref = ref(null)
const taskvalue = ref('')
function inputChange(keyword) {
if(asideref.value?.showSearch){
taskvalue.value=keyword
}else{
taskvalue.value=""
}
if (ListRef.value!=null) {
ListRef.value.initData(1,20,{},keyword);
} else {
contentRef.value.filterTableData(keyword);
}
if (asideref.value?.showSearch)
taskvalue.value = keyword
else
taskvalue.value = ''
if (ListRef.value != null)
ListRef.value.initData(1, 20, {}, keyword)
else
contentRef.value.filterTableData(keyword)
}
onMounted(()=>{
const searchParams = new URLSearchParams(window.location.search);
const type = searchParams.get('type');
if(type=='table'){
showList.value=false
}else{
showList.value=true
}
onMounted(() => {
const searchParams = new URLSearchParams(window.location.search)
const type = searchParams.get('type')
if (type == 'table')
showList.value = false
else
showList.value = true
})
</script>
@ -44,10 +43,10 @@ onMounted(()=>{
<!-- 任务管理 -->
<!-- TODO:本地演示即可 上传注释注释 -->
<ListContent v-if="showList" ref="ListRef" @change-show="showList = false" :taskvalue="taskvalue"/>
<ListContent v-if="showList" ref="ListRef" :taskvalue="taskvalue" @change-show="showList = false" />
<!-- 内容 -->
<Content v-if="!showList" ref="contentRef" @change-show="showList = true" :taskvalue="taskvalue"/>
<Content v-if="!showList" ref="contentRef" :taskvalue="taskvalue" @change-show="showList = true" />
<!-- 机器人 -->
<Robot />
@ -60,5 +59,6 @@ onMounted(()=>{
flex-direction: row;
box-sizing: border-box;
width: 100%;
padding-bottom: 16px;
}
</style>

@ -94,7 +94,7 @@ function computeSlideHeight() {
const headEl = document.querySelector('.aside-header')!
const { bottomIncludeBody } = getViewportOffset(headEl)
const height = bottomIncludeBody
asideHeight.value = height - 24
asideHeight.value = height - 16
}
useWindowSizeFn(computeSlideHeight, 280)
@ -150,7 +150,6 @@ nextTick(() => {
if (str == 'izsimilarity') {
if (typeof customObjRef.value[str] == 'string')
customObjRef.value[str] = customObjRef.value[str].split(',')
asideValue[key] = customObjRef.value[str] //
console.log('相似度2222222222', asideValue[key])
}
@ -312,6 +311,7 @@ useKeydown('s', () => setShowSearch(true))
<!-- 搜索跳转模块 -->
<Search
v-show="showSearch"
toolipvalue="请输入提报人搜索"
@select="scrollHandler"
@close="setShowSearch(false)"
/>
@ -320,6 +320,7 @@ useKeydown('s', () => setShowSearch(true))
v-show="!showSearch"
ref="AdvanceFilterRef"
:type="0"
toolipvalue="请输入提报人搜索"
@select="filterHandler"
@update:search="setShowSearch(true)"
@show-custom="showModal(customModalRef)"

@ -16,6 +16,11 @@ const props = defineProps({
default: 0,
required: true,
},
toolipvalue: {
type: String,
default: '',
required: true,
},
})
const emit = defineEmits<{
(e: 'show-filter'): void
@ -412,6 +417,7 @@ defineExpose({
name="magnifying-1"
@click="emit('update:search')"
/>
<SvgIcon
style="display: block; cursor: pointer; margin-left: 10px"
size="18"

@ -8,7 +8,14 @@ import { useConfig } from '@/store/modules/asideConfig'
import { useFinal } from '@/store/modules/final'
defineOptions({ name: 'Search' })
const props = defineProps({
toolipvalue: {
type: String,
default: '',
required: true,
},
})
const emit = defineEmits<{
(e: 'close'): void
(e: 'select', key: string): void
@ -104,7 +111,7 @@ onMounted(() => {
<n-input
v-model:value="searchKeyword"
style="width: 260px; height: 32px"
placeholder="请输入你需要搜索的内容"
:placeholder="toolipvalue"
@input="inputHandler"
>
<template #suffix>

@ -42,8 +42,7 @@ function onChange(value: number & number[]) {
value = value.sort((a, b) => a - b)
range.value = value as any
isLoadValue.value = true
const valueStr = value.join('-')
emit('update:value', valueStr)
emit('update:value', range.value as any)
}
</script>

@ -44,11 +44,13 @@ import avatar from '@/assets/images/avatar.jpg'
import {
createPackage,
getCheckDuplicateStatus,
getCheckDuplicateStatusx,
getLastCheckNo,
getLastCheckNox,
getPictureList,
oneClickCheckTaskPackage,
queryPageListByCheckNo,
removeCheckDuplicate,
queryPageListByCheckNo
, removeCheckDuplicate,
} from '@/api/home/main'
import bgLoading from '@/assets/images/bg-loading.png'
@ -77,6 +79,7 @@ const finishPackageModal = ref(null)
const loading = ref(false)
const message = useMessage()
const totalCount = ref(0)
const loadref = ref(true)
const sortBy: PictureSortParam = {
orderbyname: 'desc',
orderbyvalue: 'pictureResult',
@ -105,7 +108,19 @@ const listStyle = computed(() => {
height: `${deviceHeight.value}px`,
}
})
async function inittask() {
const result = await getLastCheckNox()
console.log(result.data)
if (result.data) {
const res = await getCheckDuplicateStatusx({ checkDuplicateNo: result.data })
if (res.data.status == 1) {
const checkingTaskModal = checkingTaskModalRef.value as any
checkingTaskModal.showModal()
loadref.value = false
}
checkTaskStatus.value = res.data.status // 1. 2.
}
}
// const layout = debounce(() => {
// if (masonryRef.value == null || el.value == null)
// return
@ -157,14 +172,6 @@ onBeforeMount(async () => {
cols.value = 5
})
onUpdated(() => {
// nextTick(() => {
// setTimeout(() => {
// layout()
// }, 50)
// })
})
const timeRange = ref('')
const timeLabel = computed(() => {
const item = timeOptions.find((option) => {
@ -401,6 +408,7 @@ const gridMinHeight = computed(() => {
})
async function oneCheck() {
loadref.value = false
const asideVal = cloneDeep(configStore.getAsideValue)
asideVal.upUserName = searchValue.value
@ -428,9 +436,14 @@ async function oneCheck() {
configStore.setTimeNum(calNum.value)
if (checkTaskStatus.value === 2 || checkTaskStatus.value === 3) {
if (checkTaskStatus.value === 2)
message.success('任务执行完毕正在刷新数据22...')
else message.error('查询异常')
if (checkTaskStatus.value === 2) {
message.success('任务执行完毕,正在刷新数据...')
loadref.value = true
}
else {
message.error('查询异常')
loadref.value = true
}
reset()
loadMore()
tasksLoadingModal.closeOnlyModal()
@ -527,6 +540,7 @@ async function commitHandler(settingParam) {
}
onMounted(() => {
inittask()
emitter.on('filter', refreshHandler)
// emitter.on("filter", (searchId)=>{
// console.log("emitter on filter" + searchId)
@ -547,6 +561,7 @@ onMounted(() => {
onUnmounted(() => {
emitter.off('filter', refreshHandler)
clearInterval(timer.value)
})
watch(timeRange, () => {
@ -675,9 +690,17 @@ function refresh(val?: any) {
configStore.setTimeNum(100)
checkingTaskModal.closeModal()
isRefresh.value = false
if (checkTaskStatus.value === 2)
message.success('任务执行完毕正在刷新数据11...')
else message.error('查询异常')
if (checkTaskStatus.value === 2) {
message.success('任务执行完毕,正在刷新数据...')
loadref.value = true
}
else {
message.error('查询异常')
loadref.value = true
}
if (timer.value)
clearInterval(timer.value)
reset()
loadMore()
if (timer.value)
@ -704,6 +727,7 @@ function cancel() {
checkDuplicateNo.value = ''
checkTaskStatus.value = null
message.success('查重任务取消成功')
loadref.value = true
}
})
}
@ -778,12 +802,18 @@ defineExpose({
</div>
<div class="flex-btn-icon">
<SvgIcon
v-show="checkTaskStatus !== 2"
v-show="checkTaskStatus !== 2 && loadref"
style="cursor: pointer"
size="105"
name="yijianchachong"
@click="oneCheck"
/>
<SvgIcon
v-show="checkTaskStatus !== 2 && !loadref"
style="cursor:not-allowed"
size="105"
name="yijianchachong"
/>
<SvgIcon
v-show="checkTaskStatus === 2"
style="cursor: pointer"
@ -1094,6 +1124,7 @@ defineExpose({
flex-direction: column;
box-sizing: border-box;
margin-left: 16px;
margin-right: 16px;
width: 100%;
::v-deep(.vue-waterfall) {

@ -1,54 +1,55 @@
<script lang="ts" setup>
import { defineOptions, onMounted, ref, onBeforeUnmount } from "vue";
import { useRouter } from "vue-router";
import { defineOptions, onBeforeUnmount, onMounted, ref } from 'vue'
import { useRouter } from 'vue-router'
defineOptions({ name: "ShortcutModal" });
defineOptions({ name: 'ShortcutModal' })
const emit = defineEmits<{
(e: "refresh", value: any);
(e: "cancel", value: any);
}>();
(e: 'refresh', value: any)
(e: 'cancel', value: any)
}>()
const show = ref(false);
const isFold = ref(false);
const router = useRouter();
const show = ref(false)
const isFold = ref(false)
const router = useRouter()
const cardStyle = {
width: "29vw",
"--n-padding-bottom": "10px",
"--n-padding-left": "10px",
};
'width': '357px',
'--n-padding-bottom': '10px',
'--n-padding-left': '10px',
}
function toggle() {
isFold.value = !isFold.value;
isFold.value = !isFold.value
}
function showModal() {
show.value = true;
show.value = true
}
function closeModal() {
show.value = false;
show.value = false
}
function refresh() {
emit("refresh", true);
emit('refresh', true)
}
function cancel() {
closeModal();
emit("cancel", true);
closeModal()
emit('cancel', true)
isFold.value = false
}
const time = ref();
const time = ref()
onMounted(() => {
time.value = setInterval(() => {
// console.log("00000000-----------");
show.value && refresh();
}, 5000);
});
show.value && refresh()
}, 5000)
})
onBeforeUnmount(() => {
clearInterval(time.value);
time.value = null;
});
clearInterval(time.value)
time.value = null
})
defineExpose({
showModal,
closeModal,
});
})
</script>
<template>
@ -56,15 +57,9 @@ defineExpose({
<!-- <n-modal v-model:show="show" :show-mask="false" :mask-closable="false" transform-origin="center" style="position: fixed;right: 0;bottom: 0;"> -->
<div
v-if="show"
style="
position: fixed;
right: 0;
bottom: 0;
float: left;
z-index: 999;
width: 360px;
height: 157px;
"
:style="!isFold
? 'position: fixed; right: 16px;bottom: 16px;float: left;z-index: 1002;width: 360px;height: 157px;'
: 'position: fixed; right: 16px;bottom: -70px;float: left;z-index: 1002;width: 360px;height: 157px;'"
>
<n-card
:style="cardStyle"
@ -75,13 +70,15 @@ defineExpose({
style="padding: 8px 8px 0 8px"
>
<div class="wrapper">
<div class="title">查重进度</div>
<div class="title">
查重进度
</div>
<div class="icon-list">
<svg-icon
size="16"
name="refresh"
@click="refresh"
style="margin-right: 16px; cursor: pointer"
@click="refresh"
/>
<svg-icon
v-show="!isFold"
@ -100,8 +97,8 @@ defineExpose({
<svg-icon
size="16"
name="close-none-border"
@click="cancel"
style="margin-right: 25.7px; cursor: pointer"
@click="cancel"
/>
</div>
</div>

@ -1,81 +1,103 @@
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import { getToolsCount } from "@/api/home/main";
import { onMounted, ref } from 'vue'
import { getToolsCount } from '@/api/home/main'
const emit = defineEmits<{
(e: "reject", params: any);
(e: "viewrepeat");
}>();
(e: 'reject', params: any)
(e: 'viewrepeat')
}>()
const show = ref(false);
const toolsData = ref({} as any);
const show = ref(false)
const toolsData = ref({} as any)
async function getData() {
const res = await getToolsCount();
toolsData.value = res.data || {};
if (res.code == "OK") {
showModal();
}
const res = await getToolsCount()
toolsData.value = res.data || {}
if (res.code == 'OK')
showModal()
}
onMounted(() => {
getData();
});
getData()
})
function showModal() {
show.value = true;
show.value = true
}
function closeModal() {
show.value = false;
show.value = false
}
async function reject() {
emit("reject", { a: "todo" });
closeModal();
emit('reject', { a: 'todo' })
closeModal()
}
async function viewRepeat(e: MouseEvent) {
emit("viewrepeat");
e.preventDefault();
closeModal();
emit('viewrepeat')
e.preventDefault()
closeModal()
}
defineExpose({
showModal,closeModal
});
showModal,
closeModal,
})
</script>
<template>
<n-modal v-model:show="show" transform-origin="center" class="modal_wrap">
<div class="wrapper">
<div class="wrapper-hearder">
<div class="wrapper-title">欢迎登录智能AI审批工具</div>
<div class="wrapper-mark">某某有限公司-某某事业部-张小凡</div>
<div class="wrapper-title">
欢迎登录智能AI审批工具
</div>
<div class="wrapper-mark">
某某有限公司-某某事业部-张小凡
</div>
</div>
<div class="wrapper-content">
<div class="flex_box">
<div class="item">
<SvgIcon name="task_count" width="49" height="58" />
<div class="num_box">{{ toolsData?.total || 0 }}</div>
<div class="title_box">任务总数</div>
<SvgIcon name="task_count" width="48" height="48" />
<div class="num_box">
{{ toolsData?.total || 0 }}
</div>
<div class="title_box">
任务总数
</div>
</div>
<div class="item">
<SvgIcon name="task_wait" width="49" height="58" />
<div class="num_box">{{ toolsData?.treat || 0 }}</div>
<div class="title_box">待审批</div>
<SvgIcon name="task_wait" width="48" height="48" />
<div class="num_box">
{{ toolsData?.treat || 0 }}
</div>
<div class="title_box">
待审批
</div>
</div>
<div class="item">
<SvgIcon name="task_over" width="49" height="58" />
<div class="num_box">{{ toolsData?.approvedCount || 0 }}</div>
<div class="title_box">已审批</div>
<SvgIcon name="task_over" width="48" height="48" />
<div class="num_box">
{{ toolsData?.approvedCount || 0 }}
</div>
<div class="title_box">
已审批
</div>
</div>
<div class="item">
<SvgIcon name="modal_reImg" width="49" height="58" />
<div class="num_box">{{ toolsData?.repeat }}</div>
<div class="title_box">重复图片</div>
<SvgIcon name="modal_reImg" width="48" height="48" />
<div class="num_box">
{{ toolsData?.repeat }}
</div>
<div class="title_box">
重复图片
</div>
</div>
<div class="footer" @click="viewRepeat"></div>
</div>
<div class="footer" @click="viewRepeat">
我知道了
</div>
<!-- <div class="footer">
<SvgIcon
@click="viewRepeat"
@ -110,7 +132,7 @@ defineExpose({
text-align: center;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Semibold;
font-weight: 600;
font-weight: 850;
text-align: center;
color: #333333;
line-height: 22px;
@ -118,7 +140,7 @@ defineExpose({
.wrapper-mark {
font-size: 13px;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Regular;
font-weight: 400;
font-weight: 550;
text-align: center;
color: #666666;
line-height: 18px;
@ -152,6 +174,7 @@ defineExpose({
text-align: center;
color: #202020;
line-height: 16px;
margin-top: 6px;
}
}
}
@ -211,11 +234,11 @@ defineExpose({
margin: 20px auto 0;
position: relative;
bottom: -30px;
bottom: -35px;
left: 20px;
font-size: 20px;
font-weight: 400;
font-size: 22px;
font-weight: 550;
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei-Regular;
text-align: center;
color: #ffffff;

@ -1,16 +1,17 @@
<script lang="ts" setup>
import { ref } from 'vue'
import Aside from './aside/Aside.vue'
import Content from './content/Content.vue'
import Robot from '@/components/Robot/index.vue'
import {ref} from 'vue';
import { useKeydown } from '@/hooks/event/useKeydown'
const contentRef:any = ref(null)
const showLoginModal = ()=>{
contentRef.value.showLoginSuccessModal();
const contentRef: any = ref(null)
function showLoginModal() {
contentRef.value.showLoginSuccessModal()
}
const closeLoginModal = ()=>{
contentRef.value.closeLoginSuccessModal();
function closeLoginModal() {
contentRef.value.closeLoginSuccessModal()
}
useKeydown('m m', showLoginModal)
useKeydown('enter', closeLoginModal)
@ -22,10 +23,10 @@ useKeydown('enter', closeLoginModal)
<Aside />
<!-- 内容 -->
<Content ref="contentRef"/>
<Content ref="contentRef" />
<!-- 机器人 -->
<Robot :canClick="true" @click="showLoginModal"/>
<Robot :can-click="true" @click="showLoginModal" />
</div>
</template>
@ -35,5 +36,6 @@ useKeydown('enter', closeLoginModal)
flex-direction: row;
box-sizing: border-box;
width: 100%;
margin-bottom: 16px
}
</style>

@ -1,87 +1,71 @@
<script>
import { reactive, toRefs, onMounted } from "vue";
import { onMounted, reactive, toRefs } from 'vue'
export default {
setup() {
let state = reactive({});
components: {},
props: {
obj: {
type: Object,
default: () => {},
},
let methods = {
init() {
function getQueryParamsNew() {
const params = new URLSearchParams(window.location.search);
let paramsObj = {};
for (const [key, value] of params.entries()) {
if (paramsObj.hasOwnProperty(key)) {
if (Array.isArray(paramsObj[key])) {
paramsObj[key].push(value);
} else {
paramsObj[key] = [paramsObj[key], value];
}
} else {
paramsObj[key] = value;
}
}
return paramsObj;
}
var queryParamsNew = getQueryParamsNew();
state.queryParamsNew = queryParamsNew;
},
setup(props) {
const state = reactive({})
const lng = queryParamsNew.lng; //
const lat = queryParamsNew.lat; //
const methods = {
init(item) {
const queryParamsNew = item
const lng = queryParamsNew.lng //
const lat = queryParamsNew.lat //
//
const center = new qq.maps.LatLng(lat, lng);
const map = new qq.maps.Map(document.getElementById("map-container"), {
const center = new qq.maps.LatLng(lat, lng)
const map = new qq.maps.Map(document.getElementById('map-container'), {
center,
zoom: 15,
});
})
//
const marker = new qq.maps.Marker({
position: center,
map: map,
});
map,
})
//
const infoWin = new qq.maps.InfoWindow({
map: map,
map,
position: center,
});
})
infoWin.setContent(
`<div class="detailshow" >${queryParamsNew.name}</div>`
);
infoWin.open();
qq.maps.event.addListener(marker, "click", function () {
infoWin.open();
`<div class="detailshow" >${queryParamsNew.name}</div>`,
)
infoWin.open()
qq.maps.event.addListener(marker, 'click', () => {
infoWin.open()
infoWin.setContent(
`<div class="detailshow" >${queryParamsNew.name}</div>`
);
infoWin.setPosition(centerLatLng);
});
`<div class="detailshow" >${queryParamsNew.name}</div>`,
)
infoWin.setPosition(centerLatLng)
})
},
};
}
onMounted(() => {
methods.init();
});
methods.init(props.obj)
})
return {
...toRefs(state),
...methods,
};
}
},
components: {},
};
}
</script>
<template>
<div class="mapmain">
<div id="map-container" style="width: 100%; height: 100%"></div>
<div id="map-container" style="width: 100%; height: 100%" />
</div>
</template>
<style >
.layout-sider {
display: none;
}
.layout-main-header {
display: none;
}
<style>
.mapmain {
height: 100%;
width: 100%;

@ -277,6 +277,7 @@ function handleOk(item: any) {
v-show="!showSearch"
ref="AdvanceFilterRef"
:type="2"
toolipvalue="请输入任务id、任务名称、提报人"
@select="filterHandler"
@update:search="setShowSearch(true)"
@show-custom="showModal(CustomFieldModalRef)"
@ -287,7 +288,7 @@ function handleOk(item: any) {
<n-input
v-model:value="search"
style="flex: 1; height: 32px"
placeholder="请输入你需要搜索的内容"
placeholder="请输入任务id、任务名称、提报人"
@input="inputHandler"
>
<template #suffix>

@ -14,6 +14,8 @@ import { useRoute, useRouter } from 'vue-router'
import { useInfiniteScroll } from '@vueuse/core'
import BatchModal from '../modal/BatchModal.vue'
import CustomSettingModal from '../modal/CustomSettingModal.vue'
import ImgDetailModal from '../modal/ImgDetailModal.vue'
import MapModal from '../modal/MapModal.vue'
import PictureTable from './PictureTable.vue'
import TaskTable from './TaskTable.vue'
import History from './History.vue'
@ -21,6 +23,7 @@ import NotPassed from '@/components/Approval/NotPassed.vue'
import { getAllfieldList, getfieldList } from '@/api/home/filter'
import { TASK_STATUS_OBJ } from '@/enums/index'
import { useFinal } from '@/store/modules/final'
import { useDataHeaderStore } from '@/store/modules/DataHeader'
import {
audit,
dubiousfileyd,
@ -34,9 +37,12 @@ import { formatToDateHMS } from '@/utils/dateUtil'
import { hideDownload } from '@/utils/image'
import bgLoading from '@/assets/images/bg-loading.png'
import { useKeydown } from '@/hooks/event/useKeydown'
import CheckingTaskModal from '@/views/home/content/modal/CheckingTaskModal.vue'
import { getCheckDuplicateStatus, getCheckDuplicateStatusx, getLastCheckNox, removeCheckDuplicate } from '@/api/home/main'
const emit = defineEmits(['setAsideItemName'])
const timer = ref()
const HeaderStore = useDataHeaderStore()
const router = useRouter()
const loading = ref(false)
const batch = ref(false)
@ -45,6 +51,7 @@ const selectItems = ref<any[]>([])
const message = useMessage()
const dialog = useDialog()
const notPassModalRef = ref(null)
const MapModalRef = ref(null)
const batchModalRef: any = ref(null)
const totalCount = ref(0)
const taskId: any = ref('') // id
@ -56,6 +63,10 @@ const route = useRoute()
const isDetail = ref(false) //
const finalStore = useFinal()
const imgbigshow = ref(true)
const imgdetailref = ref(null)
const checkingTaskModalRef = ref(null)
const checkTaskStatus = ref(null) // 1. 2. 3.
const checkDuplicateNo = ref('')
const sortBy: any = {
orderType: 'desc',
orderName: 'similarityScore',
@ -67,6 +78,7 @@ const pagination = reactive({
pageNo: 0,
pageSize: 30,
})
function onCheckChange(checked: any, item: any) {
const index = selectItems.value.indexOf(item)
item.checked = checked
@ -110,6 +122,26 @@ const fullscreenStylestwo = computed<any>(() => ({
left: isFullScreen.value ? '0' : '',
zIndex: isFullScreen.value ? '160' : '',
}))
async function init() {
const result = await getLastCheckNox()
if (result.data) {
const resx = await getCheckDuplicateStatusx({ checkDuplicateNo: result.data })
if (resx.data.status == 1) {
timer.value = setInterval(async () => {
const res = await getCheckDuplicateStatusx({ checkDuplicateNo: result.data })
if (res.data.status != 1) {
if (res.data.status === 2)
message.success('任务执行完毕,正在刷新数据...')
else
message.error('查询异常')
clearInterval(timer.value)
}
}, 1000)
}
}
}
onMounted(() => {
if (route.query.id) {
taskId.value = route.query.id
@ -118,6 +150,8 @@ onMounted(() => {
isDetail.value = true
getDetail()
}
init()
window.addEventListener('keydown', onEsc)
})
function changeimgbigshow() {
@ -126,10 +160,7 @@ function changeimgbigshow() {
//
useKeydown('right', forwardHandler)
useKeydown('left', backHandler)
useKeydown('c', () => {
isFullScreen.value = false
imgbigshow.value = false
})
useKeydown('p p', () => {
const item = taskDetailInfo.value
if (item?.userapprove?.statshis === 2 || item?.userapprove?.statshis == 3) {
@ -255,15 +286,11 @@ function approvalHandler(items?: any) {
},
})
}
// function approvalHandlerx(item?: any) {
// console.log(item);
// alert(1);
// }
function singleRejectHandlex(item?: any) {
console.log(item)
const modal = unref(notPassModalRef)! as any
modal.showModal([item])
modal.showModal(item)
}
function rejectHandler(items?: any) {
console.log(items)
@ -277,6 +304,8 @@ function singleRejectHandler() {
}
function doAudit(param: any) {
const modal = unref(imgdetailref)! as any
audit(param).then((res) => {
const { code } = res
if (code === 'OK') {
@ -284,6 +313,8 @@ function doAudit(param: any) {
setBatch(false)
reloadList(param, '通过')
batchModalRef.value.reload()
modal.closeModal()
HeaderStore.setDataConfig(true)
}
})
}
@ -323,7 +354,7 @@ async function handleDragEnd(event, item) {
}
async function addSuspicious() {
taskStore.setInFileId(taskDetailInfo.value.ocrPicture)
console.log(taskDetailInfo.value.ocrPicture)
// console.log(taskDetailInfo.value.ocrPicture)
if (taskDetailInfo.value.ocrPicture.pictureid) {
const res = await dubiousfileyd({
pictureid: taskDetailInfo.value.ocrPicture.id,
@ -387,6 +418,7 @@ async function getTableData() {
return v
})
taskTableData.value = chunk(listData, 2)
console.log(taskDetailInfo)
}
async function getImgList() {
@ -426,10 +458,22 @@ function showActionsModal() {
const modal = unref(CustomSettingModalRef)! as any
modal.showModal()
}
function onEsc(event: KeyboardEvent) {
if (event.code === 'KeyC') {
const modal = unref(MapModalRef)! as any
const modal2 = unref(imgdetailref)! as any
modal?.closeModal()
modal2?.closeModal()
imgbigshow.value = true
isFullScreen.value = false
}
}
onUnmounted(() => {
taskStore.reset()
window.removeEventListener('keydown', onEsc)
window.removeEventListener('scroll', checkBottom)
clearInterval(timer.value)
})
function immersionHandler() {
@ -478,6 +522,7 @@ watch(
//
async function getDetail() {
console.log(taskId.value, packageId.value, taskIndex.value)
taskDetailInfo.value = await getTaskDetailInfo(taskId.value, packageId.value, taskIndex.value)
setBatch(false)
getTableData()
@ -487,6 +532,9 @@ async function getDetail() {
function notPassSuccess(param) {
batchModalRef.value.reload()
reloadList(param, '不通过')
const modal = unref(imgdetailref)! as any
modal.closeModal()
HeaderStore.setDataConfig(true)
overTask.value = null
}
@ -517,15 +565,13 @@ function switchBatch() {
function getrowValue(e) {
if (e.key == 'location') {
const modal = unref(MapModalRef)! as any
console.log(modal)
const locationobj = JSON.parse(taskDetailInfo.value.ocrPicture.location)
const lat = locationobj.lat.$numberDecimal
const lng = locationobj.lng.$numberDecimal
const name = e.value
const protocol = window.location.protocol
const hostname = window.location.hostname
const port = window.location.port
const hostWithPort = `${protocol}//${hostname}:${port}/`
window.open(`${hostWithPort}map` + `?name=${name}&lat=${lat}&lng=${lng}`)
modal.showModal({ name, lat, lng })
}
}
function overTaskHandelr(item: any) {
@ -557,7 +603,6 @@ async function fetchData() {
loading.value = false
}
}
// const throttledCheckScroll = throttle(checkBottom, 200);
let num = 1
@ -567,8 +612,6 @@ function checkBottom() {
// console.log(1)
if (!container)
return
// const { scrollTop, clientHeight, scrollHeight } = container;
const scrollTop = window.pageYOffset || document.documentElement.scrollTop
//
@ -633,6 +676,35 @@ function sortHandler(orderby: 'similarityScore' | 'createdate') {
function nodrage() {
message.error('已审批无法移入可疑文件夹中!')
}
function getDetailImg(event, item) {
const modal = unref(imgdetailref)! as any
modal.showModal(item, packageId.value, taskIndex.value)
}
function passfun(e) {
approvalHandler([imgdetailref.value?.taskDetailInfo])
}
function nopassfun(e) {
singleRejectHandlex([imgdetailref.value?.taskDetailInfo])
}
/**
* 检查查重状态
*/
/**
* 取消查重任务
*/
function cancel() {
if (checkTaskStatus.value === 1) {
removeCheckDuplicate(checkDuplicateNo.value).then((res) => {
if (res.code === 'OK') {
checkDuplicateNo.value = ''
checkTaskStatus.value = null
message.success('查重任务取消成功')
}
})
}
}
</script>
<template>
@ -710,7 +782,7 @@ function nodrage() {
<template #icon>
<SvgIcon name="revoke" />
</template>
返回1
返回
</n-button>
<img
class="btn-approval btn-left"
@ -790,7 +862,7 @@ function nodrage() {
: {
height: '92vh',
flex: 1,
backgroundSize: 'cover',
backgroundImage: `url(${taskDetailInfo?.ocrPicture?.imgurl ? taskDetailInfo?.ocrPicture?.imgurl : bgLoadingImg})`,
}
: {
@ -966,6 +1038,7 @@ function nodrage() {
item.historyStates === 1 ? handleDragEnd(event, item) : nodrage()
"
@click="getDetailImg(event, item)"
>
<div
class="img-wrapper"
@ -1191,6 +1264,7 @@ function nodrage() {
item.historyStates === 1 ? handleDragEnd(event, item) : nodrage()
"
@click="getDetailImg(event, item)"
>
<div
class="img-wrapper"
@ -1262,90 +1336,12 @@ function nodrage() {
</div>
</div>
</div>
<!-- <div class="wrapper-list">
<div
v-for="(item, index) in taskDetailPictureList"
:key="index"
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 v-if="item.historyStates === 2" class="pass-status">
<SvgIcon name="pass-icon" style="width: 52; height: 24px" />
</div>
<div v-else-if="item.historyStates === 3" class="pass-status">
<SvgIcon name="no-pass-icon" style="width: 52; height: 24px" />
</div>
<div
v-show="overTasktwo && overTasktwo.id === item.id"
class="action"
@mouseover="overTaskHandelr"
@mouseleave="leaveTaskHandler"
>
<SvgIcon
style="cursor: pointer"
name="t1"
@click.stop="approvalHandlerx(item)"
/>
<SvgIcon
style="cursor: pointer; margin-left: 40px"
name="t2"
@click.stop="singleRejectHandlex(item)"
/>
</div>
</div>
</div> -->
</div>
<NotPassed ref="notPassModalRef" @success="notPassSuccess" @close="closePassno" />
<BatchModal ref="batchModalRef" @reject="rejectHandler" @approval="approvalHandler" />
<CustomSettingModal ref="CustomSettingModalRef" @on-ok="getDetail" />
<ImgDetailModal ref="imgdetailref" @passfun="passfun" @nopassfun="nopassfun" />
<MapModal ref="MapModalRef" />
</div>
</template>
@ -1432,8 +1428,9 @@ function nodrage() {
flex: 1;
flex-direction: column;
box-sizing: border-box;
margin-left: 16px;
margin-right: 16px !important;
margin-left: 16px !important;
margin-bottom: 16px !important;
padding: 16px 16px 0px 16px;
background: #fff;
border-radius: 3px;
@ -1534,12 +1531,12 @@ function nodrage() {
.left {
flex: 0.6;
background-size: cover;
background-size: auto 100%;
background-position: center;
background-repeat: no-repeat;
border-radius: 8px;
position: relative;
background-color: #F3F6FF;
.preview {
position: absolute;
right: 10px;
@ -1667,18 +1664,6 @@ function nodrage() {
height: 129px;
}
}
/* .leftback {
position: absolute;
width: 100%;
height: 151px;
bottom: 0;
background: linear-gradient(
180deg,
rgba(0, 0, 0, 0) 0%,
rgba(0, 0, 0, 0) 29%,
rgba(3, 0, 0, 0.73)
);
}*/
}
.right {
@ -1770,7 +1755,7 @@ function nodrage() {
width: 122px;
height: 70px;
overflow: hidden;
background-size: cover;
background-size:cover;
background-position: center;
background-repeat: no-repeat;
border-radius: 8px;
@ -1842,7 +1827,7 @@ function nodrage() {
width: 230px;
height: 130px;
overflow: hidden;
background-size: cover;
background-size:cover;
background-position: center;
background-repeat: no-repeat;
border-radius: 8px;
@ -2102,7 +2087,7 @@ function nodrage() {
width: 230px;
height: 130px;
overflow: hidden;
background-size: cover;
background-size:cover;
background-position: center;
background-repeat: no-repeat;
border-radius: 8px;

@ -32,6 +32,10 @@ function setAsideItemName(text) {
:deep(.wrapper){
top:0
}
:deep(.aside){
margin-right: 0;
margin-bottom: 16px;
}
:deep(.ip_box){
z-index: 50;
}
@ -46,5 +50,6 @@ function setAsideItemName(text) {
flex-direction: row;
box-sizing: border-box;
width: 100%;
}
</style>

@ -0,0 +1,594 @@
<script lang="ts" setup>
import { chunk, clone, difference } from 'lodash-es'
import {
computed,
defineEmits,
defineProps,
onMounted,
onUnmounted,
ref,
watch,
} from 'vue'
import { VueDraggable } from 'vue-draggable-plus'
import { hideDownload } from '@/utils/image'
import { workPackageMap } from '@/config/workorder'
import { useUser } from '@/store/modules/user'
import { TASK_STATUS_OBJ } from '@/enums/index'
import {
getTaskDetailInfo,
} from '@/api/task/task'
import { getAllfieldList, getfieldList } from '@/api/home/filter'
import { useKeydown } from '@/hooks/event/useKeydown'
import { formatToDateHMS } from '@/utils/dateUtil'
const props = defineProps({
reviewType: {
type: Number,
default: () => 1,
require: true,
},
})
const emit = defineEmits(['passfun', 'nopassfun'])
const imageRef = ref<ComponentElRef | null>()
const show = ref(false)
const detailobj = ref(null)
const taskDetailInfo = ref<any>({})
const taskTableData = ref<any[]>([])
const userStore = useUser()
async function showModal(item: any, packid, imgid) {
getTableData()
taskDetailInfo.value = await getTaskDetailInfo(item.id, packid, imgid)
detailobj.value = item
show.value = true
}
function previewHandler(event: MouseEvent) {
event.stopImmediatePropagation()
event.stopPropagation()
if (imageRef.value && (imageRef.value as any).src)
(imageRef.value as any).mergedOnClick()
}
async function getTableData() {
const useInfo = userStore.getUserInfo
const listData = []
const reviewType = 3 //
let res = await getAllfieldList(reviewType)
const fieldList = (res as any)?.data
res = await getfieldList(reviewType, useInfo.id)
const userFieldList = (res as any)?.data.userFieldFixed
const blueList = [
'拜访终端名称',
'定位信息',
'拜访日期',
'定位距离',
'拜访小结',
'拜访项目类别',
]
fieldList.forEach((v) => {
if (userFieldList.includes(v.name)) {
let locationobj = { address: '' }
if (v.name == 'location' && taskDetailInfo.value.ocrPicture[v.name] != null && taskDetailInfo.value.ocrPicture[v.name] != 'null') {
locationobj = JSON.parse(
taskDetailInfo.value.ocrPicture ? taskDetailInfo.value.ocrPicture[v.name] : {},
)
}
const item = {
label: v.fieldDesc,
value:
v.name == 'location'
? locationobj.address
: taskDetailInfo.value.ocrPicture
? taskDetailInfo.value.ocrPicture[v.name]
: '',
key: v.name,
blue: blueList.includes(v.fieldDesc),
}
listData.push(item)
}
return v
})
taskTableData.value = chunk(listData, 2)
console.log(taskDetailInfo)
}
function closeModal() {
show.value = false
}
function passfun(e = taskDetailInfo.value) {
emit('passfun', e)
// closeModal()
}
function nopassfun(e = taskDetailInfo.value) {
emit('nopassfun', e)
// closeModal()
}
onMounted(async () => {
})
onUnmounted(() => {
})
defineExpose({
showModal,
closeModal,
passfun,
nopassfun,
taskDetailInfo,
})
</script>
<template>
<n-modal v-model:show="show" transform-origin="center">
<n-card
class="cardstyle"
:bordered="false"
size="huge"
role="dialog"
aria-modal="true"
>
<div class="topline" />
<div class="bottomline" />
<div class="wrapper">
<div class="wrapper-title" style="color: #333;font-size:20px">
任务ID:{{ detailobj.fromTaskName }}
</div>
<div class="close" @click="closeModal">
<SvgIcon size="20" class="icon" name="close-none-border" />
</div>
</div>
<div style="display:flex;margin-top:25px">
<div
class="left"
:style="
{
backgroundImage: `url(${detailobj?.imgUrl})`,
}
"
>
<div class="preview" style="z-index: 5" @click="previewHandler">
<SvgIcon size="16" name="zoom-out" />
</div>
<div class="big-mark" />
<div class="time">
<div class="time-item">
<SvgIcon class="svg-time" color="#FFF" size="16" name="camera-time" />
<span>{{ detailobj?.photoDateTimestamp ?? "- -" }}</span>
</div>
<div class="time-item time-item2">
<SvgIcon class="svg-time" color="#FFF" size="16" name="submit-time" />
<span>{{
detailobj?.submitDateTimestamp
? formatToDateHMS(Number(detailobj.submitDateTimestamp))
: "- -"
}}</span>
</div>
</div>
<div style="display: none">
<n-image
ref="imageRef"
:img-props="{ onClick: hideDownload }"
:src="detailobj?.imgUrl"
/>
</div>
</div>
<div
class="right"
>
<n-scrollbar style="max-height: 100%">
<div
style="
font-size: 22px;
font-weight: 500;
color: #0d0b22;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding-left: 10px;
"
>
<n-ellipsis style="font-size:22px;font-weight:550">
{{ detailobj.fromTaskName }}
</n-ellipsis>
</div>
<div class="tags">
<div
v-if="detailobj?.historyStates == 1"
class="tag tag-submiting"
>
待审批
</div>
<div
v-else-if="
detailobj?.historyStates == 2
|| detailobj?.historyStates == 3
"
class="tag tag-submited"
>
已审批
</div>
<div
v-if="detailobj?.historyStates == 2"
class="tag tag-passed"
>
{{ TASK_STATUS_OBJ[detailobj.historyStates] }}
</div>
<div
v-else-if="taskDetailInfo?.userapprove?.historyStates == 3"
class="tag tag-not-passed"
>
{{ TASK_STATUS_OBJ[detailobj?.historyStates] }}
</div>
</div>
<n-divider class="divider-line" />
<div :style="{ width: '90%', marginLeft: '16px', marginTop: '-6px' }">
<div
v-for="(item, index) in taskTableData"
:key="index"
:style="{ width: '100%', fontWeight: '450' }"
>
<div
v-if="item[0].label == '拜访终端名称'"
:style="{ display: 'flex', height: '100%', width: '100%' }"
>
<div
:style="{
width: '115px',
borderRight: '2px solid',
marginTop: '4px',
color: '#333333',
fontWeight: 'bold',
}"
>
{{ item[0].label }}
</div>
<div
:style="{
marginLeft: '15px',
fontSize: '16px',
textOverflow: 'ellipsis',
paddingTop: '2px',
color: '#333333',
fontWeight: 'bold',
overflow: 'hidden',
}"
>
<n-ellipsis style="font-weight:550">
{{ item[0].value }}
</n-ellipsis>
</div>
</div>
<div v-if="!(item[0].label == '拜访终端名称')" class="viewlabel">
{{ item[0].label }}
</div>
<div v-if="!(item[0].label == '拜访终端名称')" class="viewvalue">
{{ item[0].value }}
</div>
<div
v-if="item[1] && !(item[1].label == '拜访终端名称')"
class="viewlabel"
>
{{ item[1].label }}
</div>
<div
v-if="item[1] && !(item[1].label == '拜访终端名称')"
class="viewvalue"
>
{{ item[1].value }}
</div>
</div>
</div>
</n-scrollbar>
</div>
</div>
<n-divider class="divider-line" />
<div class="btnlist">
<n-button
v-if="!(detailobj?.historyStates == 2 || detailobj?.historyStates == 3)" type="info"
style="
width:72px;
height:38px; "
@click="passfun"
>
通过
</n-button>
<n-button
v-if="!(detailobj?.historyStates == 2 || detailobj?.historyStates == 3)" type="error"
style="
width:72px;
height:38px;
background-color: #FF4E4F;"
@click="nopassfun"
>
不通过
</n-button>
<n-button
style="
width:72px;
height:38px;
position: absolute;
right: 36px;" @click="closeModal"
>
取消
</n-button>
</div>
</n-card>
</n-modal>
</template>
<style lang="less" scoped>
.topline{
background: #E0DFDF;
height: 0.5px;
width: 1200px;
margin-left: -40px;
position: absolute;
top: 85px;
}
.bottomline{
background: #E0DFDF;
height: 1px;
width: 1200px;
margin-left: -40px;
position: absolute;
bottom: 73px;
}
.big-mark {
width: 100%;
height: 210px;
background: linear-gradient(
180deg,
rgba(0, 0, 0, 0) 0%,
rgba(0, 0, 0, 0) 29%,
rgba(3, 0, 0, 0.73)
);
position: absolute;
left: 0;
bottom: 0;
z-index: 0;
border-radius: 0 0 8px 8px;
}
.time {
position: absolute;
z-index: 3;
left: 16px;
bottom: 16px;
.time-item {
display: flex;
align-items: center;
font-size: 14px;
font-family: PingFang SC, PingFang SC-Medium;
font-weight: 500;
color: #ffffff;
margin-bottom: 4px;
}
.time-item2 {
margin-bottom: 0;
}
.svg-time {
margin-right: 5px;
}
}
.preview {
position: absolute;
right: 10px;
top: 10px;
z-index: 3;
width: 30px;
height: 30px;
background: rgba(255, 255, 255, 0.2);
border-radius: 6px;
backdrop-filter: blur(10px);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
.close{
position: absolute;
right: 40px;
font-size: 20px;
cursor: pointer;
}
.wrapper {
display: flex;
flex-direction: column;
// border-bottom: 1px solid #e8e8e8;
padding-bottom: 32px;
&-title {
font-weight: bold;
font-size: 16px;
}
&-bar {
width: 100%;
margin-top: 20px;
}
&-footer {
display: flex;
justify-content: flex-end;
}
&-info {
font-weight: bold;
position: relative;
color: #333333;
font-size: 14px;
&:before {
background-color: #507afd;
content: "";
width: 5px;
border-radius: 2px;
top: 0;
bottom: 0;
position: absolute;
}
}
}
.dragcardStyle {
--n-padding-bottom: 0px !important;
--n-padding-left: 0px !important;
}
.cardstyle {
width: 1200px;
height: 678px;
--n-padding-bottom: 20px;
--n-padding-left: 24px;
}
.left{
width: 65%;
height: 456px;
// flex: 0.6;
background-size: auto 100%;
background-position: center;
background-repeat: no-repeat;
border-radius: 8px;
position: relative;
background-color: #f2f2f2;
}
.right{
width: 30%;
//flex:0.4;
margin-left: 16px;
height: 463px;
background: #FAFAFA;
border-radius: 8px;
::v-deep(.n-divider .n-divider__line){
background-color: #E8E8E8 !important;
}
.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;
}
.tags {
padding-left: 22px;
display: flex;
margin-top: 8px;
margin-bottom: -12px;
}
.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;
}
}
.textbtnStyle {
cursor: pointer;
color: #1980ff;
}
.btnlist{
width: 165px;
display: flex;
float: right;
margin-right: 90px;
justify-content: space-between;
}
::v-deep(.n-card.n-card--content-segmented > .n-card__content:not(:first-child)) {
border: 0px;
}
::v-deep(.n-card > .n-card-header) {
--n-padding-top: 0px;
--n-padding-bottom: 12px;
}
::v-deep(.n-card > .n-card-header .n-card-header__main) {
font-weight: lighter !important;
font-size: 14px;
}
::v-deep(.n-scrollbar) {
border-top: none !important;
}
::v-deep(.n-button--info-type) {
background: #507afd !important;
}
::v-deep(.checkAll .n-checkbox.n-checkbox--indeterminate .n-checkbox-box) {
background: none;
border: none;
}
::v-deep(.checkAll .n-checkbox-box__border) {
border: 1px solid #e8e8e8 !important;
}
::v-deep(.checkAll .n-checkbox-icon) {
border: 3px solid #fff;
background: #1980ff;
}
::v-deep(.checkAll .n-checkbox-icon svg) {
display: none !important;
}
::v-deep(.n-card-header__main) {
color: #666 !important;
}
::v-deep(.n-button--secondary) {
background-color: #fff;
border: 1px solid #cad2dd !important;
}
::v-deep(.n-button--secondary):hover {
background-color: #fff !important;
border: 1px solid #cad2dd !important;
}
</style>

@ -0,0 +1,281 @@
<script lang="ts" setup>
import { difference } from 'lodash-es'
import {
computed,
defineEmits,
defineProps,
onMounted,
onUnmounted,
ref,
watch,
} from 'vue'
import { VueDraggable } from 'vue-draggable-plus'
import MapDetail from '../../map/index.vue'
import { workPackageMap } from '@/config/workorder'
import { useKeydown } from '@/hooks/event/useKeydown'
const props = defineProps({
reviewType: {
type: Number,
default: () => 1,
require: true,
},
})
const show = ref(false)
const detailobj = ref(null)
const objdetail = ref({})
async function showModal(item) {
objdetail.value = item
show.value = true
}
function closeModal() {
show.value = false
}
onMounted(async () => {
})
onUnmounted(() => {
})
defineExpose({
showModal,
closeModal,
})
</script>
<template>
<n-modal v-model:show="show" transform-origin="center">
<n-card
class="cardstyle"
:bordered="false"
size="huge"
role="dialog"
aria-modal="true"
>
<div class="wrapper">
<div class="wrapper-title" style="color: #333;font-weight:550;font-size:18px">
定位信息
</div>
<div class="close" @click="closeModal">
<SvgIcon size="20" class="icon" name="close-none-border" />
</div>
</div>
<div class="topline" />
<div class="mapmain">
<div id="map-container" style="width: 100%; height: 100%">
<MapDetail :obj="objdetail" />
</div>
</div>
</n-card>
</n-modal>
</template>
<style lang="less" scoped>
.topline{
background: #E8E8E8;
height: 0.5px;
width: 805px;
margin-left: -37px;
top: 85px;
}
.close{
position: absolute;
right: 40px;
font-size: 20px;
cursor: pointer;
}
::v-deep .n-card > .n-card__content, .n-card > .n-card__footer{
padding-left:24px ;
padding-right: 24px;
}
.wrapper {
display: flex;
flex-direction: column;
// border-bottom: 1px solid #e8e8e8;
padding-bottom: 24px;
&-title {
font-weight: bold;
font-size: 16px;
}
&-bar {
width: 100%;
margin-top: 20px;
}
&-footer {
display: flex;
justify-content: flex-end;
}
&-info {
font-weight: bold;
position: relative;
color: #333333;
font-size: 14px;
&:before {
background-color: #507afd;
content: "";
width: 5px;
border-radius: 2px;
top: 0;
bottom: 0;
position: absolute;
}
}
}
.dragcardStyle {
--n-padding-bottom: 0px !important;
--n-padding-left: 0px !important;
}
.cardstyle {
width: 808px;
height: 486px;
--n-padding-bottom: 20px;
--n-padding-left: 24px;
}
.left{
width: 65%;
height: 456px;
// flex: 0.6;
background-size: auto 100%;
background-position: center;
background-repeat: no-repeat;
border-radius: 8px;
position: relative;
background-color: #f2f2f2;
}
.right{
width: 30%;
//flex:0.4;
margin-left: 16px;
height: 463px;
.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;
}
.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;
}
}
.textbtnStyle {
cursor: pointer;
color: #1980ff;
}
.btnlist{
width: 220px;
display: flex;
float: right;
justify-content: space-between;
}
.mapmain {
height: 355px;
width: 100%;
padding-top: 24px;
}
::v-deep(.n-card.n-card--content-segmented > .n-card__content:not(:first-child)) {
border: 0px;
}
::v-deep(.n-card > .n-card-header) {
--n-padding-top: 0px;
--n-padding-bottom: 12px;
}
::v-deep(.n-card > .n-card-header .n-card-header__main) {
font-weight: lighter !important;
font-size: 14px;
}
::v-deep(.n-scrollbar) {
border-top: none !important;
}
::v-deep(.n-button--info-type) {
background: #507afd !important;
}
::v-deep(.checkAll .n-checkbox.n-checkbox--indeterminate .n-checkbox-box) {
background: none;
border: none;
}
::v-deep(.checkAll .n-checkbox-box__border) {
border: 1px solid #e8e8e8 !important;
}
::v-deep(.checkAll .n-checkbox-icon) {
border: 3px solid #fff;
background: #1980ff;
}
::v-deep(.checkAll .n-checkbox-icon svg) {
display: none !important;
}
::v-deep(.n-card-header__main) {
color: #666 !important;
}
::v-deep(.n-button--secondary) {
background-color: #fff;
border: 1px solid #cad2dd !important;
}
::v-deep(.n-button--secondary):hover {
background-color: #fff !important;
border: 1px solid #cad2dd !important;
}
</style>

@ -213,6 +213,7 @@ if (searchContent) {
name="magnifying-1"
@click="setShowSearch(true)"
/>
<SvgIcon
style="cursor: pointer; margin-left: 10px"
size="18"
@ -226,7 +227,7 @@ if (searchContent) {
ref="searchInputRef"
v-model:value="searchKeyword"
style="flex: 1; height: 32px"
placeholder="请输入你需要搜索的内容"
placeholder="请输入任务包名称"
@input="inputHandler"
>
<template #suffix>

@ -29,6 +29,9 @@ import emitter from '@/utils/mitt'
import type { ApprovalParam, SimilarityPictureSortParam } from '/#/api'
import bgLoading from '@/assets/images/bg-loading.png'
import { useKeydown } from '@/hooks/event/useKeydown'
import { useDataHeaderStore } from '@/store/modules/DataHeader'
import CheckingTaskModal from '@/views/home/content/modal/CheckingTaskModal.vue'
import { getCheckDuplicateStatus, getCheckDuplicateStatusx, getLastCheckNox, removeCheckDuplicate } from '@/api/home/main'
const batch = ref(false) //
const selectItems = ref<any[]>([])
@ -39,7 +42,10 @@ let _imagesload: any
const bgLoadingImg = ref(bgLoading)
const imgbigshow = ref(true)
const isInitLoading = ref(0)
const haeaderstore = useDataHeaderStore()
const checkingTaskModalRef = ref(null)
const checkTaskStatus = ref(null) // 1. 2. 3.
const checkDuplicateNo = ref('')
function changeimgbigshow() {
imgbigshow.value = !imgbigshow.value
}
@ -75,6 +81,7 @@ const sortBy: SimilarityPictureSortParam = {
orderType: 'desc',
orderName: 'similarityScore',
}
const timer = ref()
const workStore = useWorkOrder()
const selectTask = ref<any>(null)
const overTask = ref<any>(null)
@ -372,12 +379,34 @@ useKeydown('k k', () => {
})
useKeydown('right', forwardHandler)
useKeydown('left', backHandler)
async function init() {
const result = await getLastCheckNox()
if (result.data) {
const resx = await getCheckDuplicateStatusx({ checkDuplicateNo: result.data })
if (resx.data.status == 1) {
timer.value = setInterval(async () => {
const res = await getCheckDuplicateStatusx({ checkDuplicateNo: result.data })
if (res.data.status != 1) {
if (res.data.status === 2)
message.success('任务执行完毕,正在刷新数据...')
else
message.error('查询异常')
clearInterval(timer.value)
}
}, 1000)
}
}
}
onUnmounted(() => {
workStore.reset()
document.removeEventListener('keydown', onEsc)
clearInterval(timer.value)
})
onMounted(() => {
document.addEventListener('keydown', onEsc)
init()
})
function immersionHandler() {
// class="wrapper"
@ -439,6 +468,7 @@ function handleRejectMainImage() {
async function reloadDetailInfo() {
const packageid = workStore.getActiveId
taskDetailInfo.value = await getTaskDetailInfo(packageid)
haeaderstore.setDataConfig(true)
}
function handleApproveMainImage(items?: any) {
const currentValue = overTask.value || taskDetailInfo.value
@ -558,6 +588,7 @@ function doAudit(param: any) {
message.info(res.message)
emitter.emit('refresh')
refreshHandler()
haeaderstore.setDataConfig(true)
}
else {
message.error(res.message)
@ -568,6 +599,7 @@ function doAudit(param: any) {
function reloadList() {
setBatch(false)
refreshHandler()
haeaderstore.setDataConfig(true)
}
function handleRejectdubiousfileyd(pictureid) {
dialog.info({
@ -592,6 +624,24 @@ function handleRejectdubiousfileyd(pictureid) {
onNegativeClick: () => {},
})
}
/**
* 检查查重状态
*/
/**
* 取消查重任务
*/
function cancel() {
if (checkTaskStatus.value === 1) {
removeCheckDuplicate(checkDuplicateNo.value).then((res) => {
if (res.code === 'OK') {
checkDuplicateNo.value = ''
checkTaskStatus.value = null
message.success('查重任务取消成功')
}
})
}
}
//
function onRejectDialog(visible) {
rejectDialog.value = visible
@ -605,7 +655,7 @@ defineExpose({
<div class="wrapper fullscreen-container" :style="fullscreenStyles">
<div class="wrapper-header">
<div class="left">
<span class="font">{{ packageName }}</span>
<span class="font">#{{ packageName }}</span>
<SvgIcon size="22" class="forward" name="arrow-left" @click="backHandler" />
<SvgIcon size="22" class="back" name="arrow-right" @click="forwardHandler" />
</div>
@ -669,6 +719,7 @@ defineExpose({
'background-image': `url(${taskDetailInfo?.imgurl})`,
'flex': imgbigshow ? '0.6' : '0.98',
'height': imgbigshow ? ' 100%' : '80vh',
'background-size': imgbigshow ? 'auto 100%' : 'cover',
}"
@mouseover="showAction"
@ -758,23 +809,24 @@ defineExpose({
<div
v-show="overTask && overTask.id === taskDetailInfo.id"
class="action"
:style="taskDetailInfo?.historyStates === 2 || taskDetailInfo?.historyStates === 3 ? 'background:transparent' : ''"
@click.stop="hideAction"
>
<SvgIcon
v-if="[1].includes(taskDetailInfo.historyStates)"
style="cursor: pointer"
style="cursor: pointer;"
name="t1"
@click.stop="handleApproveMainImage"
/>
<SvgIcon
v-if="[1].includes(taskDetailInfo.historyStates)"
style="cursor: pointer; margin-left: 30px"
style="cursor: pointer;"
name="t2"
@click.stop="handleRejectMainImage"
/>
<SvgIcon
v-if="[1].includes(taskDetailInfo.historyStates)"
style="cursor: pointer; margin-left: 30px"
style="cursor: pointer; "
name="t9"
@click.stop="handleRejectdubiousfileyd(taskDetailInfo.id)"
/>
@ -929,28 +981,32 @@ defineExpose({
<SvgIcon name="no-pass-icon" style="width: 52; height: 24px" />
</div>
<div v-show="overTask && overTask.id === item.id" class="action">
<div
v-show="overTask && overTask.id === item.id" class="action"
:style="item?.historyStates === 2 || item?.historyStates === 3 ? 'background:transparent' : ''"
>
<SvgIcon
v-if="item.historyStates === 1"
style="cursor: pointer"
style="cursor: pointer;width:50px;height:50px"
name="t1"
@click.stop="approvalHandler"
/>
<SvgIcon
v-if="[1].includes(item.historyStates)"
style="cursor: pointer; margin-left: 40px"
style="cursor: pointer;width:50px;height:50px "
name="t2"
@click.stop="singleRejectHandler(item)"
/>
<SvgIcon
v-if="[1].includes(item.historyStates)"
style="cursor: pointer; margin-left: 30px"
style="cursor: pointer;width:50px;height:50px "
name="t9"
@click.stop="handleRejectdubiousfileyd(item.pictureid)"
/>
</div>
</div>
<n-back-top :listen-to="wrapperListRef" :bottom="220" :visibility-height="10">
<n-back-top :listen-to="wrapperListRef" :bottom="70" :visibility-height="10">
<svg-icon
name="top"
style="
@ -958,6 +1014,7 @@ defineExpose({
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
z-index: 10;
"
/>
</n-back-top>
@ -988,7 +1045,7 @@ defineExpose({
flex: 1;
flex-direction: column;
box-sizing: border-box;
margin-left: 16px !important;
// margin-left: 16px !important;
margin-right: 16px !important;
padding: 16px 16px 0px 16px;
background: #fff;
@ -1068,7 +1125,7 @@ defineExpose({
.font {
font-size: 20px;
font-family: PingFang SC, PingFang SC-Medium;
font-weight: 500;
font-weight: 550;
color: #0d0b22;
}
}
@ -1080,11 +1137,12 @@ defineExpose({
.left {
flex: 0.6;
// background-size: auto 346px;
background-size: cover;
background-size: auto 100%;
background-position: center;
background-repeat: no-repeat;
border-radius: 8px;
position: relative;
background-color: #F3F6FF;
// width: 632px;
// height: 346px;
@ -1134,12 +1192,8 @@ defineExpose({
.footer-times {
width: 100%;
height: 80px;
background: linear-gradient(
180deg,
rgba(0, 0, 0, 0.01),
rgba(0, 0, 0, 0.71) 100%
);
height: 210px;
background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 29%, rgba(3, 0, 0, 0.73));
border-radius: 0px 8px 8px 8px;
position: absolute;
bottom: 0;
@ -1148,7 +1202,7 @@ defineExpose({
flex-direction: column;
justify-content: center;
font-weight: Medium;
padding-top: 125px;
.time {
color: white;
font-size: 15px;
@ -1168,7 +1222,9 @@ defineExpose({
display: flex;
border-radius: 8px;
align-items: center;
justify-content: center;
// justify-content: center;
display: flex;
justify-content: space-around;
background: linear-gradient(
180deg,
rgba(0, 0, 0, 0) 0%,
@ -1479,7 +1535,7 @@ defineExpose({
display: flex;
border-radius: 8px;
align-items: center;
justify-content: center;
justify-content: space-around;
background: linear-gradient(180deg, rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 0.44) 88%);
}
}
@ -1491,3 +1547,9 @@ defineExpose({
margin-bottom: 12px;
}
</style>
<style>
.n-back-top{
z-index: 5 !important;
}
</style>

@ -21,7 +21,7 @@ function ApprovalOver(packageId) {
</div>
<div class="main">
<!-- 侧边 -->
<Aside @approval-over="ApprovalOver" />
<Aside style="margin-right:16px" @approval-over="ApprovalOver" />
<!-- 内容 -->
<Content ref="contentRef" />
@ -42,9 +42,12 @@ function ApprovalOver(packageId) {
flex-direction: row;
box-sizing: border-box;
width: 100%;
height: calc(100% - 170px);
height: 100%;
padding-bottom: 16px;
//height: calc(100% - 170px);
}
:deep(.ip_box){
z-index: 10;
bottom: 120px;
}
</style>

@ -1,52 +1,53 @@
<script lang="ts" setup>
import { nextTick, onDeactivated, onMounted, reactive, ref, toRefs } from "vue";
import { format } from "date-fns";
import { NButton, NDataTable, useDialog, useMessage } from "naive-ui";
import { aiApprovaltools, aiApprovaltoolsClearmark, setTF } from "@/api/work/work";
import { audit } from "@/api/task/task";
import { getToolsCount } from "@/api/home/main";
import { storage } from "@/utils/Storage";
import { CURRENT_USER } from "@/store/mutation-types";
import { nextTick, onDeactivated, onMounted, reactive, ref, toRefs } from 'vue'
import { format } from 'date-fns'
import { NButton, NDataTable, useDialog, useMessage } from 'naive-ui'
import { aiApprovaltools, aiApprovaltoolsClearmark, setTF } from '@/api/work/work'
import { audit } from '@/api/task/task'
import { getToolsCount } from '@/api/home/main'
import { storage } from '@/utils/Storage'
import { CURRENT_USER } from '@/store/mutation-types'
import { useDataHeaderStore } from '@/store/modules/DataHeader'
const emit = defineEmits<{
(e: "reject", params?: any);
(e: "notPass", params: any);
}>();
(e: 'reject', params?: any)
(e: 'notPass', params: any)
}>()
const message = useMessage()
const dialog = useDialog();
const haeaderstore = useDataHeaderStore()
const dialog = useDialog()
const state: any = reactive({
detail: {},
packageid: "",
});
const { detail } = toRefs(state);
packageid: '',
})
const { detail } = toRefs(state)
const cardStyle = {
width: "450px",
"--n-padding-bottom": "10px",
"--n-padding-left": "0px",
};
'width': '450px',
'--n-padding-bottom': '10px',
'--n-padding-left': '0px',
}
const show = ref(false);
const show = ref(false)
function showModal(id) {
state.packageid = id;
getDetail(id);
state.packageid = id
getDetail(id)
}
async function getDetail(id) {
// const userInfo = storage.get(CURRENT_USER);
// const nodeType = userInfo.nodeType;
// id = "264627119490116380";
const res = await aiApprovaltools({ taskid: id });
if (res.code === "OK") {
state.detail = res.data;
if(Number(res.data.pendingApprovaCount) > 0){
show.value = true;
}
const res = await aiApprovaltools({ taskid: id })
if (res.code === 'OK') {
state.detail = res.data
if (Number(res.data.pendingApprovaCount) > 0)
show.value = true
}
}
const handleReject = async () => {
async function handleReject() {
const param = {
result: false,
comment: '',
@ -57,71 +58,74 @@ const handleReject = async () => {
flowTaskInfoList: state.detail.flowTaskInfoList,
}
const res = await audit(param)
if(res.code == 'OK'){
if (res.code == 'OK') {
haeaderstore.setDataConfig(true)
message.success(res.message)
}else{
}
else {
message.error(res.message)
}
emit('reject',state.packageid)
closeModal();
};
emit('reject', state.packageid)
closeModal()
}
async function clearMark() {
const res = await aiApprovaltoolsClearmark({ taskid: state.packageid });
if (res.code === "OK") closeModal();
const res = await aiApprovaltoolsClearmark({ taskid: state.packageid })
if (res.code === 'OK')
closeModal()
}
function closeModal() {
show.value = false;
show.value = false
}
async function reject() {
// emit('reject', { a: 'todo' })
// closeModal()
dialog.info({
title: "确认提示",
content: "确认设置成假吗?",
positiveText: "确定",
negativeText: "取消",
title: '确认提示',
content: '确认设置成假吗?',
positiveText: '确定',
negativeText: '取消',
onPositiveClick: async () => {
// TODO
// const result = await resetApproval()
clearMark();
clearMark()
},
onNegativeClick: () => {},
});
})
}
async function viewRepeat(e: MouseEvent) {
emit("notPass", {
emit('notPass', {
id: state.packageid,
detail: state.detail,
});
e.preventDefault();
closeModal();
})
e.preventDefault()
closeModal()
}
const initRem = () => {
const designWidth = 1440;
const rempPx = 16;
const scale = window.innerWidth / designWidth;
document.documentElement.style.fontSize = scale * rempPx + "px";
};
function initRem() {
const designWidth = 1440
const rempPx = 16
const scale = window.innerWidth / designWidth
document.documentElement.style.fontSize = `${scale * rempPx}px`
}
onMounted(() => {
nextTick(() => {
initRem();
});
window.addEventListener("resize", () => {
initRem();
});
});
initRem()
})
window.addEventListener('resize', () => {
initRem()
})
})
onDeactivated(() => {
window.removeEventListener("resize", () => {});
});
window.removeEventListener('resize', () => {})
})
defineExpose({
showModal,
});
})
</script>
<template>
@ -131,7 +135,9 @@ defineExpose({
<SvgIcon style="cursor: pointer" name="cut-down" width="32" @click="closeModal" />
</div>
<div class="wrapper-hearder">
<div class="wrapper-title">智能AI审批工具</div>
<div class="wrapper-title">
智能AI审批工具
</div>
<div class="wrapper-mark">
{{ detail.tenantUserName || "部门信息" }}
</div>
@ -139,11 +145,20 @@ defineExpose({
<div class="wrapper-content">
<div class="item">
<div class="imgwrapper" />
<div class="back1">
1
</div>
<div class="back2">
2
</div>
<div class="content">
<div class="task_id">{{ detail.packageName }}</div>
<div class="task_id">
{{ detail.packageName }}
</div>
<div class="tag_box">
<div class="tag_item error">
<span style="color: red"><SvgIcon name="error_icon" size="14"/></span> 重复图片({{
<span style="color: red"><SvgIcon name="error_icon" size="14" /></span> 重复图片({{
detail.similarComplete || 0
}})
</div>
@ -155,12 +170,17 @@ defineExpose({
</div>
</div>
<div class="mark_text">
智能提示{{ detail?.similarComplete || 0 }} 张图片相似度为100%重复图片{{
<div style=" width: 100px;">
智能提示
</div>
<div>
{{ detail?.similarComplete || 0 }} 张图片相似度为100%重复图片{{
detail?.passCount || 0
}}张审批状态为<span style="color: #02c984">通过</span>剩余{{
detail?.pendingApprovaCount || 0
}}张图片建议审批为不通过
</div>
</div>
<div class="footer" @click="handleReject">
立即审批
<!-- <SvgIcon
@ -196,14 +216,16 @@ defineExpose({
}
.wrapper {
position: absolute;
left: calc(50% - 350px);
left: 0;
right: 0;
.closed {
position: relative;
top: 0px;
left: 90%;
}
.wrapper-hearder {
margin-top: 20px;
margin-top: 10px;
.wrapper-title {
text-align: center;
font-size: 16px;
@ -226,21 +248,41 @@ defineExpose({
.wrapper-content {
flex: 1;
border-radius: 8px;
margin: 24px 50px 16px 48px;
margin: 35px 50px 16px 48px;
.item {
display: flex;
flex-flow: row nowrap;
align-items: center;
position: relative;
}
.imgwrapper {
width: 138px;
height: 80px;
margin-right: 23px;
border-radius: 8px;
border-radius: 6px;
background-image: url("../../../assets/images/test.png");
background-repeat: no-repeat;
background-size: cover;
z-index: 5;
}
.back1{
position: absolute;
width: 139px;
height: 72px;
background: #cacbd0;
border-radius: 6px;
top:4px;
z-index: 4
}
.back2{
position: absolute;
width: 139px;
height: 60px;
background: #e3e4e7;
border-radius: 6px;
top:10px;
left: 3.5px
}
.content {
.task_id {
@ -268,8 +310,11 @@ defineExpose({
margin-right: 10px;
}
.error {
height: 20px;
width: 117px;
background: rgba(255, 78, 79, 0.1);
color: #ff4e4f;
padding: 1.5px 9px;
}
}
.time_box {
@ -290,6 +335,7 @@ defineExpose({
color: #666666;
line-height: 16px;
margin-top: 16px;
display: flex;
}
.footer {
cursor: pointer;
@ -304,9 +350,9 @@ defineExpose({
border-image: linear-gradient(123deg, #d7dffe 2%, #d7d5ff 88%) 1 1;
border-radius: 23px;
box-shadow: 0px 2px 6px 0px rgba(116, 153, 253, 0.3);
font-size: 20px;
font-size: 18px;
font-family: YouSheBiaoTiHei, YouSheBiaoTiHei-Regular;
font-weight: Regular;
font-weight: 550;
text-align: left;
color: #ffffff;
line-height: 26px;

Loading…
Cancel
Save