Merge branch 'al'

# Conflicts:
#	src/views/home/content/Content.vue
#	src/views/task/aside/Aside.vue
#	src/views/task/content/Content.vue
bak
刘释隆 1 year ago
commit edfb31fc6c

36
components.d.ts vendored

@ -9,44 +9,10 @@ declare module 'vue' {
export interface GlobalComponents {
Application: typeof import('./src/components/Application/Application.vue')['default']
BasicModal: typeof import('./src/components/Modal/BasicModal.vue')['default']
NAvatar: typeof import('naive-ui')['NAvatar']
NButton: typeof import('naive-ui')['NButton']
NCard: typeof import('naive-ui')['NCard']
NCheckbox: typeof import('naive-ui')['NCheckbox']
NCollapse: typeof import('naive-ui')['NCollapse']
NCollapseItem: typeof import('naive-ui')['NCollapseItem']
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
NDatePicker: typeof import('naive-ui')['NDatePicker']
NDialogProvider: typeof import('naive-ui')['NDialogProvider']
NDivider: typeof import('naive-ui')['NDivider']
NDropdown: typeof import('naive-ui')['NDropdown']
NForm: typeof import('naive-ui')['NForm']
NFormItem: typeof import('naive-ui')['NFormItem']
NGi: typeof import('naive-ui')['NGi']
NGrid: typeof import('naive-ui')['NGrid']
NGridItem: typeof import('naive-ui')['NGridItem']
NImage: typeof import('naive-ui')['NImage']
NInput: typeof import('naive-ui')['NInput']
NMessageProvider: typeof import('naive-ui')['NMessageProvider']
NModal: typeof import('naive-ui')['NModal']
NNotificationProvider: typeof import('naive-ui')['NNotificationProvider']
NPopover: typeof import('naive-ui')['NPopover']
NPopselect: typeof import('naive-ui')['NPopselect']
NScrollbar: typeof import('naive-ui')['NScrollbar']
NSelect: typeof import('naive-ui')['NSelect']
NSlider: typeof import('naive-ui')['NSlider']
NSpace: typeof import('naive-ui')['NSpace']
NSpin: typeof import('naive-ui')['NSpin']
NSwitch: typeof import('naive-ui')['NSwitch']
NTabPane: typeof import('naive-ui')['NTabPane']
NTabs: typeof import('naive-ui')['NTabs']
NTag: typeof import('naive-ui')['NTag']
NTooltip: typeof import('naive-ui')['NTooltip']
NUpload: typeof import('naive-ui')['NUpload']
NUploadDragger: typeof import('naive-ui')['NUploadDragger']
Quill: typeof import('./src/components/RichEditor/Quill.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
Search: typeof import('./src/components/Search/Search.vue')['default']
SvgIcon: typeof import('./src/components/Icon/SvgIcon.vue')['default']
}
}

12909
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28px" height="28px" viewBox="0 0 28 28" 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="28" height="28"></rect>
</defs>
<g id="任务审批" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="1.0备份-8" transform="translate(-995.000000, -199.000000)">
<g id="编组-8" transform="translate(484.720905, 182.572383)">
<g id="失败" transform="translate(510.279095, 16.427617)">
<g transform="translate(0.000000, 0.000000)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<path d="M14,1.75 C20.7654882,1.75 26.25,7.23451181 26.25,14 C26.25,20.7654882 20.7654882,26.25 14,26.25 C7.23451181,26.25 1.75,20.7654882 1.75,14 C1.75,7.23451181 7.23451181,1.75 14,1.75 Z M14,3.9375 C8.44263471,3.9375 3.9375,8.44263471 3.9375,14 C3.9375,19.5573653 8.44263471,24.0625 14,24.0625 C19.5573653,24.0625 24.0625,19.5573653 24.0625,14 C24.0625,8.44263471 19.5573653,3.9375 14,3.9375 Z M18.317447,8.91076112 L18.3862477,8.96661573 L18.3862477,8.96661573 L19.0068311,9.5834638 C19.1782001,9.7538018 19.1790364,10.03081 19.0086989,10.2021796 L15.2337382,14.000005 L19.0086839,17.7978145 C19.1577296,17.9477627 19.1757199,18.1785908 19.0630846,18.3480678 L19.0068157,18.41653 L19.0068157,18.41653 L18.3862314,19.0333775 C18.2148618,19.203715 17.9378535,19.2028786 17.7675156,19.0315093 L14.00002,15.241195 L10.232526,19.0315093 C10.0834806,19.1814577 9.85276538,19.2008416 9.68261124,19.0892317 L9.61381053,19.0333773 L9.61381053,19.0333773 L8.99322583,18.4165285 C8.84327757,18.267483 8.82389374,18.0367677 8.93550373,17.8666136 L8.9913579,17.7978129 L8.9913579,17.7978129 L12.7663035,14.000005 L8.99134235,10.2021788 C8.84229682,10.0522305 8.82430649,9.82140245 8.9369419,9.65192539 L8.99321049,9.58346322 L8.99321049,9.58346322 L9.61379457,8.96661547 C9.76374284,8.81756995 9.99457094,8.79957963 10.164048,8.91221504 L10.2325102,8.96848364 L10.2325102,8.96848364 L14.0000209,12.7588151 L17.7675324,8.96848361 C17.9165777,8.81853511 18.1472929,8.79915119 18.317447,8.91076112 Z" id="形状结合" fill="#507AFD" mask="url(#mask-2)"></path>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="167px" height="60px" viewBox="0 0 167 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>按钮</title>
<defs>
<linearGradient x1="0%" y1="45.4803708%" x2="100%" y2="54.5196292%" id="linearGradient-1">
<stop stop-color="#3258E8" offset="0%"></stop>
<stop stop-color="#786EFC" offset="100%"></stop>
</linearGradient>
<linearGradient x1="0%" y1="45.8510597%" x2="100%" y2="51.7669561%" id="linearGradient-2">
<stop stop-color="#D7DFFE" offset="0%"></stop>
<stop stop-color="#D7D5FF" offset="100%"></stop>
</linearGradient>
<rect id="path-3" x="0" y="0" width="153" height="46" rx="23"></rect>
<filter x="-6.9%" y="-18.5%" width="113.7%" height="145.7%" filterUnits="objectBoundingBox" id="filter-4">
<feMorphology radius="0.5" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology>
<feOffset dx="0" dy="2" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="3" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.454901961 0 0 0 0 0.6 0 0 0 0 0.992156863 0 0 0 0.3 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="搜索/首次登录弹框" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="登录提示" transform="translate(-655.000000, -402.000000)">
<g id="编组-8备份" transform="translate(500.000000, 120.000000)">
<g id="按钮" transform="translate(162.063866, 287.492764)">
<g id="矩形">
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
<use stroke="url(#linearGradient-2)" stroke-width="1" fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-3"></use>
</g>
<text id="我知道了" font-family="YouSheBiaoTiHei" font-size="24" font-weight="normal" fill="#FFFFFF">
<tspan x="32" y="32">我知道了</tspan>
</text>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>任务审批</title>
<defs>
<rect id="path-1" x="0" y="0" width="16" height="16"></rect>
<path d="M1.23062252,0.07675 C0.311122521,0.3595 -0.205377479,1.33425 0.0773725213,2.254 L0.0773725213,2.254 L0.814122521,4.65125 L2.65962252,4.65125 L3.40287252,2.25225 C3.45437252,2.08575 3.48037252,1.9125 3.48037252,1.738 L3.48037252,1.738 C3.48037252,0.778 2.70237252,0 1.74262252,0 L1.74262252,0 C1.56912252,0 1.39637252,0.026 1.23062252,0.07675 L1.23062252,0.07675 Z" id="path-3"></path>
</defs>
<g id="搜索/首次登录弹框" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="index_1.0搜索_默认" transform="translate(-336.000000, -285.000000)">
<g id="编组-19" transform="translate(320.000000, 130.000000)">
<g id="编组-29" transform="translate(0.000000, 147.000000)">
<g id="任务审批" transform="translate(16.000000, 8.000000)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<g id="编组-2" mask="url(#mask-2)">
<g transform="translate(2.504695, 1.728956)">
<path d="M10.98479,12.0210444 C10.98479,12.2971868 10.7609324,12.5210444 10.48479,12.5210444 L0.532401515,12.5210444 L0.522,12.52 L0.510215659,12.5201602 C0.234073284,12.5201602 0.0102156588,12.2963026 0.0102156588,12.0201602 L0.00941441329,0.847060864 C0.00323761107,0.815662374 4.06696373e-18,0.783209279 0,0.75 L0,0.5 C-3.38176876e-17,0.223857625 0.223857625,5.07265313e-17 0.5,0 L4.75,0 C4.88807119,-2.53632657e-17 5,0.111928813 5,0.25 L5,1 C5,1.13807119 4.88807119,1.25 4.75,1.25 L1.26,1.25 L1.26,11.271 L9.734,11.271 L9.73449602,7.26969488 C9.73449602,7.13162369 9.84642483,7.01969488 9.98449602,7.01969488 L10.734496,7.01969488 C10.8725672,7.01969488 10.984496,7.13162369 10.984496,7.26969488 L10.98479,12.0210444 Z" id="形状结合" fill="#666666" transform="translate(5.492395, 6.260522) scale(1, -1) translate(-5.492395, -6.260522) "></path>
<path d="M7.84134673,4.52104444 C7.97941791,4.52104444 8.09134673,4.63297325 8.09134673,4.77104444 L8.09134673,5.52104444 C8.09134673,5.65911562 7.97941791,5.77104444 7.84134673,5.77104444 L2.24530486,5.77104444 C2.10723367,5.77104444 1.99530486,5.65911562 1.99530486,5.52104444 L1.99530486,4.77104444 C1.99530486,4.63297325 2.10723367,4.52104444 2.24530486,4.52104444 L7.84134673,4.52104444 Z M7.86057251,2.27715875 C7.99864369,2.27715875 8.11057251,2.38908757 8.11057251,2.52715875 L8.11057251,3.27715875 C8.11057251,3.41522994 7.99864369,3.52715875 7.86057251,3.52715875 L4.07979829,3.52715875 C3.9417271,3.52715875 3.82979829,3.41522994 3.82979829,3.27715875 L3.82979829,2.52715875 C3.82979829,2.38908757 3.9417271,2.27715875 4.07979829,2.27715875 L7.86057251,2.27715875 Z" id="形状结合" fill="#666666" transform="translate(5.052939, 4.024102) rotate(-180.000000) translate(-5.052939, -4.024102) "></path>
<g id="印章" stroke-width="1" fill="none" transform="translate(5.673315, 5.970411)">
<path d="M5.57,3.67563355 C5.84614237,3.67563355 6.07,3.89949117 6.07,4.17563355 L6.06594752,4.23229356 C6.06900137,4.25463739 6.07057905,4.27745123 6.07057905,4.30063355 L6.07057905,6.00221104 L6.06955159,6.03460166 C6.06984953,6.04168763 6.07,6.04881174 6.07,6.05597098 C6.07,6.33211336 5.84614237,6.55597098 5.57,6.55597098 L0.5,6.55597098 C0.223857625,6.55597098 3.38176876e-17,6.33211336 0,6.05597098 L0.000739837533,6.02964465 C0.000248730695,6.02056244 1.12725625e-18,6.01141579 0,6.00221104 L0,4.30063355 L0.00394400362,4.23873718 C0.00134118979,4.21806893 2.61759879e-18,4.19700786 0,4.17563355 C-3.38176876e-17,3.89949117 0.223857625,3.67563355 0.5,3.67563355 L5.57,3.67563355 Z M1,5.55563355 L5.07,5.55563355 L5.07,4.67563355 L1,4.67563355 L1,5.55563355 Z" id="形状结合" fill="#666666"></path>
<g id="编组" transform="translate(1.295103, 0.000000)">
<mask id="mask-4" fill="white">
<use xlink:href="#path-3"></use>
</mask>
<g id="Clip-2"></g>
<path d="M1.55297252,3.65125 L1.92247252,3.65125 L2.44747252,1.9565 C2.46947252,1.88575 2.48047252,1.81225 2.48047252,1.738 C2.48047252,1.331 2.14947252,1 1.74247252,1 C1.66847252,1 1.59497252,1.011 1.52397252,1.033 C1.13347252,1.153 0.912972521,1.569 1.03322252,1.96025 L1.55297252,3.65125 Z M3.39672252,5.65125 L0.0754725213,5.65125 L-0.878527479,2.54775 C-1.32252748,1.1025 -0.508277479,-0.43475 0.936722521,-0.879 C1.19872252,-0.95925 1.46972252,-1 1.74247252,-1 C3.25222252,-1 4.48047252,0.22825 4.48047252,1.738 C4.48047252,2.01275 4.43922252,2.28525 4.35797252,2.54775 L3.39672252,5.65125 Z" id="Fill-1" fill="#666666" mask="url(#mask-4)"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

@ -0,0 +1,68 @@
<?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">
<title>任务总数</title>
<defs>
<rect id="path-1" x="0" y="0" width="32" height="32"></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>
</filter>
<rect id="path-4" x="0" y="0" width="28.4444444" height="28.2051282"></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>
<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>
<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="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>
</g>
<g id="Group-1" transform="translate(8.000000, 8.000000)">
<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 id="image-landscape-png-svgrepo-com(1)-1">
<mask id="mask-5" fill="white">
<use xlink:href="#path-4"></use>
</mask>
<g id="路径"></g>
<g id="路径" mask="url(#mask-5)">
<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>
<g id="收起" mask="url(#mask-5)">
<g transform="translate(5.688889, 8.038462)">
<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>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

@ -0,0 +1,69 @@
<?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">
<title>已审批</title>
<defs>
<rect id="path-1" x="0" y="0" width="32" height="32"></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>
<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>
<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>
</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="Statistics/icon/down" fill-rule="nonzero">
<g id="Frame-4273186251">
<rect x="0" y="0" width="44" height="44"></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>
</g>
</g>
</g>
<g id="Group-1" transform="translate(8.000000, 8.000000)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<g transform="translate(0.888889, 1.777778)">
<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)">
<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>
<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>
</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>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

@ -0,0 +1,68 @@
<?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">
<title>待审批</title>
<defs>
<rect id="path-1" x="0" y="0" width="32" height="32"></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>
</filter>
<rect id="path-4" x="0" y="0" width="28.4444444" height="28.7581699"></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>
<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>
<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="Statistics/icon/down" fill-rule="nonzero">
<g id="Frame-4273186251">
<rect x="0" y="0" width="44" height="44"></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>
</g>
</g>
</g>
<g id="Group-1" transform="translate(8.000000, 8.000000)">
<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 id="save-disk-floppy-ram-svgrepo-com-1">
<mask id="mask-5" fill="white">
<use xlink:href="#path-4"></use>
</mask>
<g id="路径"></g>
<g id="路径" mask="url(#mask-5)">
<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>
<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>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

@ -0,0 +1,128 @@
<script setup lang="ts">
import { ref } from "vue";
const value = ref("");
const showList = ref(false);
const handlerShowList = () => (showList.value = true);
const mock_list = [
{
title: "任务审批管理",
data: [
{
title: "某某企业名称占位-1月拜访计划计划",
},
{
title: "某某企业名称占位符占位占位-12月拜访计划计划",
},
{
title: "某某企业-某某事业部-第四季度拜访计划计划",
},
],
},
{
title: "任务终审管理",
data: [
{
title: "某某企业名称占位-1月拜访计划计划",
},
{
title: "某某企业名称占位符占位占位-12月拜访计划计划",
},
{
title: "某某企业名称占位符占位占位-12月拜访计划计划",
},
],
},
];
</script>
<template>
<div class="input_wrap">
<div class="ip_box">
<img src="../../assets/images/IP.png" alt="">
</div>
<div class="input_box">
<n-input
v-model:value="value"
placeholder="搜索任务ID、任务名称、提报人、拜访终端"
type="text"
@mousedown="handlerShowList"
>
<template #prefix>
<SvgIcon name="magnifying-1" size="18"></SvgIcon>
</template>
</n-input>
</div>
<div class="list_box" v-show="showList">
<div
class="list_classfiy_item"
v-for="(item, index) in mock_list"
:key="index"
:style="(index == mock_list.length-1)?'':'border-bottom:1px solid #e4e4e4'"
>
<div class="list_title">{{ item.title }}</div>
<div class="list_item" v-for="(sitem,sindex) in item.data" :key="sindex">
<SvgIcon name="task-icon" size="16"></SvgIcon>
<a style="margin-left: 5px">{{ sitem.title }}</a>
</div>
</div>
</div>
</div>
</template>
<style lang="less" scoped>
.input_wrap {
width: 60%;
position: absolute;
top: 20%;
left: 20%;
.ip_box{
z-index: 0;
position: relative;
left: calc(50% - 40px);
top: 30px;
img{
width: 80px;
height: 80px;
}
}
.input_box {
z-index: 1;
background: #ffffff;
border: 1px solid #507afd;
border-radius: 8px;
overflow: hidden;
box-shadow: 0px 12px 12px 0px rgba(80, 122, 253, 0.15),
0px 0px 0px 0.5px #d4e3fc;
}
.list_box {
background: #fefefe;
border: 1px dashed #f4f4f4;
border-radius: 8px;
box-shadow: 0px 12px 12px 0px rgba(80, 122, 253, 0.15);
margin-top: 15px;
padding: 8px 16px;
.list_classfiy_item {
.list_title {
font-size: 12px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
color: #999999;
line-height: 17px;
margin: 10px 0 10px 5px;
}
.list_item {
display: flex;
flex-flow: row nowrap;
align-items: center;
margin-bottom: 10px;
}
}
}
}
:deep(.n-input .n-input-wrapper) {
margin: 8px;
}
</style>

@ -88,6 +88,70 @@ export const workPackageMap: Recordable<PackageEntity> = {
},
}
// 自定义填报信息配置
export const ReportInfoConfig: Recordable<PackageEntity> = {
terminalName: {
label: '拜访终端名称',
isDefault: false,
key: 'upuser',
},
location: {
label: '定位信息',
isDefault: false,
key: 'upuser',
},
visitTime: {
label: '拜访日期',
isDefault: false,
key: 'upuser',
},
distance: {
label: '定位距离',
isDefault: false,
key: 'upuser',
},
visitSum: {
label: '拜访小结',
isDefault: false,
key: 'upuser',
},
projectClassfiy: {
label: '拜访项目类别',
isDefault: false,
key: 'upuser',
},
departName: {
label: '科室名称',
isDefault: false,
key: 'upuser',
},
caseNum: {
label: '病例号',
isDefault: false,
key: 'upuser',
},
level: {
label: '拜访级别',
isDefault: false,
key: 'upuser',
},
isRepeatPic: {
label: '是否为重复图片',
isDefault: false,
key: 'upuser',
},
fileName: {
label: '字段名称',
isDefault: false,
key: 'upuser',
},
fileInfo: {
label: '附件信息',
isDefault: false,
key: 'upuser',
},
}
export const fieldMap = {
field1: '提报人',
field2: '拜访客户类型',

@ -0,0 +1,22 @@
<template>
<div>
<n-modal v-model:show="show" :mask="false" transform-origin="center">
<Search />
</n-modal>
</div>
</template>
<script setup>
import Search from "@/components/Search/Search.vue";
import { ref } from "vue";
const show = ref(false);
function showModal() {
show.value = true;
}
defineExpose({
showModal,
});
</script>
<style scoped lang="less">
</style>

@ -1,17 +1,24 @@
<script lang="ts">
import { defineComponent, reactive, ref, toRefs, unref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useDialog, useMessage } from 'naive-ui'
import UserSettings from './UserSettings.vue'
import QuillModal from './QuillModal.vue'
import ShortcutModal from './ShortcutModal.vue'
import RecycleModal from './RecycleModal.vue'
import { useUser } from '@/store/modules/user'
import { getImgUrl } from '@/utils/urlUtils'
import { useUser } from "@/store/modules/user";
import { getImgUrl } from "@/utils/urlUtils";
import { useDialog, useMessage } from "naive-ui";
import { defineComponent, reactive, ref, toRefs, unref, watch } from "vue";
import { useRoute, useRouter } from "vue-router";
import QuillModal from "./QuillModal.vue";
import RecycleModal from "./RecycleModal.vue";
import SearchModal from "./SearchModal.vue";
import ShortcutModal from "./ShortcutModal.vue";
import UserSettings from "./UserSettings.vue";
export default defineComponent({
name: 'PageHeader',
components: { UserSettings, QuillModal, ShortcutModal, RecycleModal },
name: "PageHeader",
components: {
UserSettings,
QuillModal,
ShortcutModal,
RecycleModal,
SearchModal,
},
props: {
collapsed: {
type: Boolean,
@ -20,102 +27,108 @@ export default defineComponent({
type: Boolean,
},
},
emits: ['update:collapsed'],
emits: ["update:collapsed"],
setup() {
const message = useMessage()
const dialog = useDialog()
const message = useMessage();
const dialog = useDialog();
const userStore = useUser()
const useInfo = userStore.getUserInfo
const userStore = useUser();
const useInfo = userStore.getUserInfo;
const name = ''
const name = "";
const state = reactive({
username: name ?? '',
fullscreenIcon: 'FullscreenOutlined',
})
username: name ?? "",
fullscreenIcon: "FullscreenOutlined",
});
const router = useRouter()
const route = useRoute()
const routename = ref(route.meta.title)
const router = useRouter();
const route = useRoute();
const routename = ref(route.meta.title);
watch(
() => route.fullPath,
() => {
routename.value = route.meta.title
},
)
routename.value = route.meta.title;
}
);
const dropdownSelect = (key) => {
router.push({ name: key })
}
router.push({ name: key });
};
// 退
const doLogout = () => {
dialog.info({
title: '提示',
content: '您确定要退出登录吗',
positiveText: '确定',
negativeText: '取消',
title: "提示",
content: "您确定要退出登录吗",
positiveText: "确定",
negativeText: "取消",
onPositiveClick: () => {
userStore.logout().then(() => {
message.success('成功退出登录')
message.success("成功退出登录");
router
.replace({
name: 'Login',
name: "Login",
query: {
redirect: route.fullPath,
},
})
.finally(() => location.reload())
})
.finally(() => location.reload());
});
},
onNegativeClick: () => { },
})
}
onNegativeClick: () => {},
});
};
const quillModalRef = ref(null)
const shortcutModal = ref(null)
const recycleModalRef = ref(null)
const quillModalRef = ref(null);
const shortcutModal = ref(null);
const recycleModalRef = ref(null);
const SearchModalRef = ref(null);
function quillHandler() {
const modal = unref(quillModalRef)! as any
modal.showModal()
const modal = unref(quillModalRef)! as any;
modal.showModal();
}
function shortcutHandler() {
const modal = unref(shortcutModal)! as any
modal.showModal()
const modal = unref(shortcutModal)! as any;
modal.showModal();
}
function recycleHandler() {
const modal = unref(recycleModalRef)! as any
modal.showModal()
const modal = unref(recycleModalRef)! as any;
modal.showModal();
}
function searchHandler() {
const modal = unref(SearchModalRef)! as any;
modal.showModal();
}
//
const iconList = [
{
icon: 'magnifying-1',
handle: quillHandler,
icon: "magnifying-1",
handle: searchHandler,
},
{
icon: 'shortcut-keys',
icon: "shortcut-keys",
handle: shortcutHandler,
},
{
icon: 'suspicious-folder',
icon: "suspicious-folder",
handle: recycleHandler,
},
{
icon: 'memo',
icon: "memo",
handle: quillHandler,
},
{
icon: 'newmessage',
icon: "newmessage",
handle: shortcutHandler,
},
]
];
return {
...toRefs(state),
@ -126,14 +139,16 @@ export default defineComponent({
quillModalRef,
shortcutModal,
recycleModalRef,
SearchModalRef,
searchHandler,
quillHandler,
shortcutHandler,
recycleHandler,
useInfo,
getImgUrl,
}
};
},
})
});
</script>
<template>
@ -151,7 +166,11 @@ export default defineComponent({
<div>当前位置{{ routename }}</div>
</div>
<div class="layout-header-right">
<div v-for="item in iconList" :key="item.icon" class="layout-header-trigger layout-header-trigger-min">
<div
v-for="item in iconList"
:key="item.icon"
class="layout-header-trigger layout-header-trigger-min"
>
<div class="back" @click="item.handle">
<SvgIcon :name="item.icon" size="18" />
</div>
@ -167,6 +186,7 @@ export default defineComponent({
<RecycleModal ref="recycleModalRef" />
<QuillModal ref="quillModalRef" />
<ShortcutModal ref="shortcutModal" />
<SearchModal ref="SearchModalRef" />
</template>
<style lang="less" scoped>
@ -228,7 +248,7 @@ export default defineComponent({
height: 64px;
}
>* {
> * {
cursor: pointer;
}
}
@ -267,7 +287,9 @@ export default defineComponent({
}
.layout-header-left {
::v-deep(.n-breadcrumb .n-breadcrumb-item:last-child .n-breadcrumb-item__link) {
::v-deep(
.n-breadcrumb .n-breadcrumb-item:last-child .n-breadcrumb-item__link
) {
color: #515a6e;
}
}

@ -1,26 +1,26 @@
<script lang="ts" setup>
import { computed, nextTick, onBeforeMount, onMounted, onUnmounted, onUpdated, reactive, ref, unref, watch } from 'vue'
import Masonry from 'masonry-layout'
import { useInfiniteScroll } from '@vueuse/core'
import { debounce } from 'lodash-es'
import imagesloaded from 'imagesloaded'
import { useMessage } from 'naive-ui'
import PackageSettingsModal from './modal/PackageSettingsModal.vue'
import GeneratePackageModal from './modal/GeneratePackageModal.vue'
import { timeOptions, viewOptions } from '@/config/home'
import { useWindowSizeFn } from '@/hooks/event/useWindowSizeFn'
import { getViewportOffset } from '@/utils/domUtils'
import { notEmpty, randomInt } from '@/utils/index'
import { getPictureList, oneClickCheck } from '@/api/home/main'
import img1 from '@/assets/images/1.jpg'
import img2 from '@/assets/images/2.jpg'
import img3 from '@/assets/images/3.jpg'
import img4 from '@/assets/images/4.jpg'
import img5 from '@/assets/images/5.jpg'
import { timeOptions, viewOptions } from '@/config/home'
import { useWindowSizeFn } from '@/hooks/event/useWindowSizeFn'
import { useConfig } from '@/store/modules/asideConfig'
import { getViewportOffset } from '@/utils/domUtils'
import { hideDownload } from '@/utils/image'
import { randomInt } from '@/utils/index'
import emitter from '@/utils/mitt'
import { getImgUrl } from '@/utils/urlUtils'
import { hideDownload } from '@/utils/image'
import { useInfiniteScroll } from '@vueuse/core'
import imagesloaded from 'imagesloaded'
import { debounce } from 'lodash-es'
import Masonry from 'masonry-layout'
import { useMessage } from 'naive-ui'
import { computed, nextTick, onBeforeMount, onMounted, onUnmounted, onUpdated, reactive, ref, unref, watch } from 'vue'
import GeneratePackageModal from './modal/GeneratePackageModal.vue'
import PackageSettingsModal from './modal/PackageSettingsModal.vue'
const deviceHeight = ref(600)
let _masonry: null | Masonry = null
@ -35,6 +35,7 @@ const pagination = reactive({
const configStore = useConfig()
const packageModalRef = ref(null)
const generateModalRef = ref(null)
const LoginSuccessModalRef = ref(null)
const loading = ref(false)
const message = useMessage()
@ -198,6 +199,11 @@ async function oneCheck() {
modal.showModal()
}
async function showLoginSuccessModal(){
const modal = LoginSuccessModalRef.value as any
modal.showModal()
}
async function commitHandler(settingParam) {
const contentParams = {
search_month: timeRange.value,
@ -225,6 +231,8 @@ onMounted(() => {
nextTick(() => {
computeListHeight()
//
showLoginSuccessModal()
})
})
@ -322,6 +330,7 @@ async function refreshHandler() {
</div>
<PackageSettingsModal ref="packageModalRef" @commit="commitHandler" />
<GeneratePackageModal ref="generateModalRef" />
<LoginSuccessModal ref="LoginSuccessModalRef" />
</div>
</template>

@ -0,0 +1,191 @@
<script lang="ts" setup>
import { ref } from "vue";
const emit = defineEmits<{
(e: "reject", params: any);
(e: "viewrepeat");
}>();
const show = ref(false);
function showModal() {
show.value = true;
}
function closeModal() {
show.value = false;
}
async function reject() {
emit("reject", { a: "todo" });
closeModal();
}
async function viewRepeat(e: MouseEvent) {
emit("viewrepeat");
e.preventDefault();
closeModal();
}
defineExpose({
showModal,
});
</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>
<div class="wrapper-content">
<div class="flex_box" style="height: 100px">
<div class="item">
<SvgIcon name="task_count" width="80" height="96" />
<div class="num_box">6399</div>
<div class="title_box">任务总数</div>
</div>
<div class="item">
<SvgIcon name="task_wait" width="80" height="96" />
<div class="num_box">6290</div>
<div class="title_box">待审批</div>
</div>
<div class="item">
<SvgIcon name="task_over" width="80" height="96" />
<div class="num_box">109</div>
<div class="title_box">已审批</div>
</div>
</div>
<div class="footer">
<SvgIcon
@click="viewRepeat"
style="cursor: pointer"
name="login_r"
width="200"
height="70"
/>
</div>
</div>
</div>
</n-modal>
</template>
<style lang="less" scoped>
.modal_wrap {
background-image: url(../../../../assets/images/approval_modal_bg.png);
background-repeat: no-repeat;
background-size: 100%;
width: 700px;
height: 500px;
box-shadow: none !important;
}
.wrapper {
position: absolute;
left: calc(50% - 350px);
.wrapper-hearder {
margin-top: 110px;
.wrapper-title {
text-align: center;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Semibold;
font-weight: Semibold;
text-align: center;
color: #333333;
line-height: 32px;
}
.wrapper-mark {
text-align: center;
font-size: 13px;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Regular;
font-weight: Regular;
text-align: center;
color: #666666;
line-height: 18px;
}
}
.wrapper-content {
flex: 1;
border-radius: 8px;
margin: 100px 60px 35px 120px;
.flex_box {
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: space-between;
.item {
.num_box {
font-size: 32px;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Bold;
font-weight: Bold;
text-align: left;
color: #202020;
text-align: center;
}
.title_box {
opacity: 0.6;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: center;
color: #202020;
text-align: center;
}
}
}
.imgwrapper {
width: 200px;
height: 120px;
margin-right: 20px;
border-radius: 8px;
background-image: url("../../../assets/images/test.png");
background-repeat: no-repeat;
background-size: cover;
}
.content {
.task_id {
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #333333;
line-height: 20px;
}
.tag_box {
display: flex;
flex-flow: row nowrap;
margin: 8px 0;
.tag_item {
background: rgba(80, 122, 253, 0.1);
border-radius: 2px;
font-size: 12px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #507afd;
line-height: 16px;
margin-right: 10px;
}
}
.time_box {
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #333333;
line-height: 20px;
}
}
.footer {
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: center;
margin: 20px 30px 0 0;
position: relative;
bottom: -80px;
}
}
}
</style>

@ -1,11 +1,14 @@
<script lang="ts" setup>
import { computed, onBeforeMount, onMounted, onUnmounted, reactive, ref, watch } from 'vue'
import TaskList from './TaskList.vue'
import type { TaskListItem } from '/#/task'
import { useTaskStore } from '@/store/modules/task'
import { useUser } from '@/store/modules/user'
import emitter from '@/utils/mitt'
import { computed, onBeforeMount, onMounted, onUnmounted, reactive, ref, unref, watch } from 'vue'
import TaskList from './TaskList.vue'
import type { TaskListItem } from '/#/task'
const CustomFieldModalRef = ref(null);
const collapse = ref(false)
const taskStore = useTaskStore()
const userStore = useUser()
@ -70,6 +73,10 @@ async function refreshHandler() {
watch(() => taskStore.immersion, () => {
collapse.value = true
})
const showFilterModal = ()=>{
const modal = unref(CustomFieldModalRef)! as any;
modal.showModal();
}
</script>
<template>
@ -86,10 +93,11 @@ watch(() => taskStore.immersion, () => {
</div>
<div class="aside-header-right">
<SvgIcon size="18" name="magnifying-1" />
<SvgIcon style="margin-left: 10px;" size="18" name="filter" />
<SvgIcon style="margin-left: 10px;cursor: pointer;" size="18" name="filter" @click="showFilterModal"/>
</div>
</div>
<TaskList style="height: calc(100vh - 146px);" class="work-sheet-list" :data="data" :active-id="taskStore.getActiveId!" />
<CustomFieldModal ref="CustomFieldModalRef" />
</div>
</template>

@ -1,18 +1,19 @@
<script lang="ts" setup>
import { computed, onUnmounted, reactive, ref, unref, watch } from 'vue'
import { useDialog, useMessage } from 'naive-ui'
import { clone } from 'lodash-es'
import ConfrimModal from '../modal/ConfrimModal.vue'
import BatchModal from '../modal/BatchModal.vue'
import TaskTable from './TaskTable.vue'
import PictureTable from './PictureTable.vue'
import { useTask } from '@/store/modules/task'
import { audit } from '@/api/task/task'
import type { ApprovalParam, PictureSortParam } from '/#/api'
import { getTaskDetailInfo, getTaskDetailPictureList } from '@/api/work/work'
import { useTask } from '@/store/modules/task'
import { useUser } from '@/store/modules/user'
import emitter from '@/utils/mitt'
import { hideDownload } from '@/utils/image'
import emitter from '@/utils/mitt'
import { clone } from 'lodash-es'
import { useDialog, useMessage } from 'naive-ui'
import { computed, onUnmounted, reactive, ref, unref, watch } from 'vue'
import BatchModal from '../modal/BatchModal.vue'
import ConfrimModal from '../modal/ConfrimModal.vue'
import CustomSettingModal from '../modal/CustomSettingModal.vue'
import PictureTable from './PictureTable.vue'
import TaskTable from './TaskTable.vue'
import type { ApprovalParam, PictureSortParam } from '/#/api'
const batch = ref(false)
const selectItems = ref<any[]>([])
@ -21,34 +22,33 @@ const dialog = useDialog()
const confrimModalRef = ref(null)
const batchModalRef = ref(null)
const totalCount = ref(0)
const CustomSettingModalRef = ref(null);
const sortBy: PictureSortParam = {
orderbyname: 'asc',
orderbyvalue: 'fromuptime',
}
orderbyname: "asc",
orderbyvalue: "fromuptime",
};
function setBatch(value: boolean) {
batch.value = value
batch.value = value;
if (value === false) {
selectItems.value.forEach(item => item.checked = false)
selectItems.value.length = 0
selectItems.value.forEach((item) => (item.checked = false));
selectItems.value.length = 0;
}
}
function onCheckChange(checked: any, item: any) {
const index = selectItems.value.indexOf(item)
item.checked = checked
const index = selectItems.value.indexOf(item);
item.checked = checked;
if (index === -1 && checked)
selectItems.value.push(item)
else
selectItems.value.splice(index, 1)
if (index === -1 && checked) selectItems.value.push(item);
else selectItems.value.splice(index, 1);
}
const showActions = computed(() => {
return selectItems.value.length > 0 && batch
})
return selectItems.value.length > 0 && batch;
});
const taskpagination = reactive({
pageNo: 1,
@ -180,16 +180,16 @@ function reject(idOrDesc: string, backId: string, isOther: boolean) {
}
function showModal(modalRef: any) {
const modal = unref(modalRef)! as any
modal.showModal()
const modal = unref(modalRef)! as any;
modal.showModal();
}
function forwardHandler() {
taskStore.forward()
taskStore.forward();
}
function backHandler() {
taskStore.back()
taskStore.back();
}
watch(() => [taskStore.activeId, taskStore.refresh], async (newValue, oldValue) => {
@ -207,9 +207,9 @@ watch(() => [taskStore.activeId, taskStore.refresh], async (newValue, oldValue)
})
const currentTaskId = computed(() => {
const index = taskStore.getCurrentIndex
return taskStore.getApprovalList[index]?.formid || ''
})
const index = taskStore.getCurrentIndex;
return taskStore.getApprovalList[index]?.formid || "";
});
function overTaskHandle() {
const item = taskDetailInfo.value
@ -219,7 +219,12 @@ function overTaskHandle() {
}
function leaveTaskHandler() {
overTask.value = null
overTask.value = null;
}
function showActionsModal(){
const modal = unref(CustomSettingModalRef)! as any;
modal.showModal();
}
onUnmounted(() => {
@ -248,8 +253,18 @@ function previewHandler(event: MouseEvent) {
<div class="wrapper-header">
<div class="left">
<span class="font">任务ID{{ currentTaskId }}</span>
<SvgIcon size="22" class="forward" name="arrow-left" @click="backHandler" />
<SvgIcon size="22" class="back" name="arrow-right" @click="forwardHandler" />
<SvgIcon
size="22"
class="forward"
name="arrow-left"
@click="backHandler"
/>
<SvgIcon
size="22"
class="back"
name="arrow-right"
@click="forwardHandler"
/>
</div>
<div class="right">
<div v-show="!showActions" style="display: flex;align-items: center;" @click="setBatch(true)">
@ -325,7 +340,7 @@ function previewHandler(event: MouseEvent) {
</div>
</div>
<div class="right">
<n-scrollbar style="max-height: 100%;">
<n-scrollbar style="max-height: 100%">
<div class="header">
<span>相似图片(9)</span>
<SvgIcon
@ -338,23 +353,28 @@ function previewHandler(event: MouseEvent) {
<div class="img-wrapper" :style="{ 'background-image': `url(${item.imgurl})` }" />
<div class="check">
<n-checkbox
v-show="batch" v-model:checked="item.checked" @click.stop
v-show="batch"
v-model:checked="item.checked"
@click.stop
@update:checked="onCheckChange($event, item)"
/>
</div>
<div class="percent">
96%
</div>
<div class="percent">96%</div>
</div>
</div>
</n-scrollbar>
</div>
</div>
<div class="info-header">
<div class="title">
填报信息
<div class="left_box">
<div class="title">填报信息</div>
<SvgIcon size="12" name="collapse" />
</div>
<div class="right_box" @click="showActionsModal">
自定义设置
<SvgIcon size="16" name="pencil" />
</div>
<SvgIcon size="12" name="collapse" />
</div>
<n-tabs type="line" animated>
<n-tab-pane name="task-info" tab="任务信息">
@ -367,6 +387,7 @@ function previewHandler(event: MouseEvent) {
</n-tabs>
<ConfrimModal ref="confrimModalRef" @commit="reject" />
<BatchModal ref="batchModalRef" @reject="rejectHandler" @approval="approvalHandler" />
<CustomSettingModal ref="CustomSettingModalRef" />
</div>
</template>
@ -378,7 +399,7 @@ function previewHandler(event: MouseEvent) {
box-sizing: border-box;
margin-left: 16px;
padding: 16px 16px 0px 16px;
background: #FFF;
background: #fff;
border-radius: 3px;
border: 1px solid rgb(239, 239, 245);
height: calc(100vh - 88px);
@ -388,7 +409,7 @@ function previewHandler(event: MouseEvent) {
display: flex;
justify-content: space-between;
align-items: center;
background: #FFF;
background: #fff;
box-sizing: border-box;
border-radius: 3px;
margin-bottom: 16px;
@ -419,12 +440,17 @@ function previewHandler(event: MouseEvent) {
height: 36px;
background: linear-gradient(135deg, #5b85f8, #3c6cf0);
border-radius: 17px;
box-shadow: 0px 2px 6px 0px rgba(116, 153, 253, 0.30);
box-shadow: 0px 2px 6px 0px rgba(116, 153, 253, 0.3);
display: flex;
align-items: center;
justify-content: center;
<<<<<<< HEAD
color: #FFF;
margin-right: 10px;
=======
color: #fff;
margin-right: 6px;
>>>>>>> al
cursor: pointer;
}
@ -445,7 +471,7 @@ function previewHandler(event: MouseEvent) {
&-detail {
display: flex;
height: calc((100vh - 88px - 72px)/2);
height: calc((100vh - 88px - 72px) / 2);
.left {
flex: 0.6;
@ -580,7 +606,7 @@ function previewHandler(event: MouseEvent) {
z-index: 5;
right: 12px;
top: 2px;
color: #FFF;
color: #fff;
}
}
}
@ -589,22 +615,31 @@ function previewHandler(event: MouseEvent) {
display: flex;
padding: 16px 0px;
align-items: center;
.title {
justify-content: space-between;
.left_box {
display: flex;
align-items: center;
margin-right: 8px;
&:before {
content: '';
width: 4px;
height: 18px;
background: #507afd;
border-radius: 3px;
display: inline-block;
margin-right: 10px;
.title {
display: flex;
align-items: center;
margin-right: 8px;
&:before {
content: "";
width: 4px;
height: 18px;
background: #507afd;
border-radius: 3px;
display: inline-block;
margin-right: 10px;
}
}
}
.right_box {
display: flex;
align-items: center;
cursor: pointer;
}
}
}
</style>

@ -0,0 +1,258 @@
<script lang="ts" setup>
import { ReportInfoConfig } from "@/config/workorder";
import { ref } from "vue";
const offList = ref<any[]>([]);
function generatList() {
const keys = Object.keys(ReportInfoConfig);
const hideList: object[] = [];
for (const key of keys) {
const name = ReportInfoConfig[key]?.label;
const isDefault = ReportInfoConfig[key]?.isDefault;
// Y
if (!isDefault) {
hideList.push({
id: key,
name: name || "未配置",
fix: isDefault,
checked: ReportInfoConfig[key].isDefault,
});
}
}
const fixedList = generateDefaultList();
hideList.unshift(...fixedList);
offList.value = hideList;
return { hideList };
}
function generateDefaultList() {
return Object.keys(ReportInfoConfig).reduce((acc, key) => {
const { label, isDefault } = ReportInfoConfig[key];
if (isDefault) {
const config = {
id: key,
name: label || "未配置",
fix: true,
checked: true,
};
return [...acc, config];
} else {
return acc;
}
}, []);
}
const show = ref(false);
const checkAll = ref(false);
function showModal() {
show.value = true;
}
function closeModal() {
show.value = false;
}
async function handleSumbit(e: MouseEvent) {
e.preventDefault();
closeModal();
}
defineExpose({
showModal,
});
generatList();
const selectIds = ref<string[]>([]);
function onCheckAllChange(value) {
const ids: string[] = [];
for (const item of offList.value) {
if (!item.fix) {
item.checked = value;
ids.push(item.id);
}
}
selectIds.value = value ? ids : [];
}
function onCheckChange(checked: any, item: any) {
const index = selectIds.value.indexOf(item.id);
item.checked = checked;
if (index === -1 && checked) selectIds.value.push(item.id);
else selectIds.value.splice(index, 1);
}
</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">
<span class="wrapper-title">自定义填报信息</span>
<n-grid cols="4" class="mt-4 proCard" responsive="screen" :x-gap="24">
<n-grid-item span="4">
<NCard
title=""
class="dragcardStyle"
:segmented="{ content: true, footer: true }"
size="small"
:bordered="false"
>
<div>
<div class="draggable-ul">
<div class="draggable-li" style="background: #f8f8f8;">
<n-checkbox
v-model:checked="checkAll"
label="全部"
@update:checked="onCheckAllChange"
/>
</div>
<div class="content">
<div
v-for="item in offList"
:key="item.id"
style="width: 170px"
:class="{ 'disable-check': item.fix }"
class="draggable-li"
>
<n-checkbox
v-model:checked="item.checked"
:label="item.name"
:disabled="item.fix"
@update:checked="onCheckChange($event, item)"
/>
</div>
</div>
</div>
</div>
</NCard>
</n-grid-item>
</n-grid>
</div>
<template #footer>
<div class="wrapper-footer">
<n-button type="info" @click="handleSumbit"> </n-button>
<n-button secondary style="margin-left: 15px" @click="closeModal">
取消
</n-button>
</div>
</template>
</n-card>
</n-modal>
</template>
<style lang="less" scoped>
.wrapper {
display: flex;
flex-direction: column;
&-title {
font-weight: bold;
font-size: 16px;
}
&-bar {
background-color: #e8e8e8;
width: 100%;
margin-top: 20px;
}
&-footer {
display: flex;
justify-content: flex-end;
}
&-info {
font-weight: bold;
position: relative;
&:before {
background-color: #1980ff;
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: 820px;
--n-padding-bottom: 20px;
--n-padding-left: 24px;
}
.textbtnStyle {
cursor: pointer;
color: #1980ff;
}
.draggable-ul {
width: 100%;
overflow: hidden;
border: 1px solid #cad2dd;
border-radius: 2px;
display: block;
.content {
display: flex;
flex-wrap: wrap;
}
.draggable-li {
padding: 10px 16px;
color: #333;
}
.draggable-item {
padding: 10px 16px;
color: #333;
display: flex;
align-items: center;
}
.disable-check {
color: gainsboro;
}
}
::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;
}
</style>

@ -0,0 +1,207 @@
<script lang="ts" setup>
import { ref } from "vue";
const emit = defineEmits<{
(e: "reject", params: any);
(e: "viewrepeat");
}>();
const cardStyle = {
width: "450px",
"--n-padding-bottom": "10px",
"--n-padding-left": "0px",
};
const show = ref(false);
function showModal() {
show.value = true;
}
function closeModal() {
show.value = false;
}
async function reject() {
emit("reject", { a: "todo" });
closeModal();
}
async function viewRepeat(e: MouseEvent) {
emit("viewrepeat");
e.preventDefault();
closeModal();
}
defineExpose({
showModal,
});
</script>
<template>
<n-modal v-model:show="show" transform-origin="center" class="modal_wrap">
<div class="wrapper">
<div class="closed">
<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-mark">某某有限公司-某某事业部-张小凡</div>
</div>
<div class="wrapper-content">
<n-scrollbar style="height: 200px">
<div v-for="i in 1" :key="i" class="item">
<div class="imgwrapper" />
<div class="content">
<div class="task_id">任务IDYPW34567890-2995</div>
<div class="tag_box">
<div class="tag_item">基线任务</div>
<div class="tag_item error">相似图片(16)</div>
</div>
<div class="time_box">2023-09-17 13:09:10</div>
</div>
</div>
</n-scrollbar>
<div class="mark_text">
智能识别12张图片来源于网络建议将图片标记为假 快速审批不通过
</div>
<div class="footer">
<SvgIcon
style="cursor: pointer"
name="r3"
width="162"
height="54"
@click="reject"
/>
<SvgIcon
style="cursor: pointer"
name="r2"
width="162"
height="54"
@click="viewRepeat"
/>
</div>
</div>
</div>
</n-modal>
</template>
<style lang="less" scoped>
.modal_wrap {
background-image: url(../../../assets/images/approval_modal_bg.png);
background-repeat: no-repeat;
background-size: 100%;
width: 700px;
height: 500px;
box-shadow: none !important;
}
.wrapper {
position: absolute;
left: calc(50% - 350px);
.closed {
position: relative;
top: 0px;
left: 90%;
}
.wrapper-hearder {
margin-top: 40px;
.wrapper-title {
text-align: center;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Semibold;
font-weight: Semibold;
text-align: center;
color: #333333;
line-height: 32px;
}
.wrapper-mark {
text-align: center;
font-size: 13px;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Regular;
font-weight: Regular;
text-align: center;
color: #666666;
line-height: 18px;
}
}
.wrapper-content {
flex: 1;
border-radius: 8px;
margin: 35px 60px 35px 120px;
.item {
display: flex;
flex-flow: row nowrap;
align-items: center;
margin: 20px 0;
}
.imgwrapper {
width: 200px;
height: 120px;
margin-right: 20px;
border-radius: 8px;
background-image: url("../../../assets/images/test.png");
background-repeat: no-repeat;
background-size: cover;
}
.content {
.task_id {
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #333333;
line-height: 20px;
}
.tag_box {
display: flex;
flex-flow: row nowrap;
margin: 8px 0;
.tag_item {
background: rgba(80, 122, 253, 0.1);
border-radius: 2px;
font-size: 12px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #507afd;
line-height: 16px;
margin-right: 10px;
}
.error {
background: rgba(255, 78, 79, 0.1);
color: #ff4e4f;
}
}
.time_box {
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #333333;
line-height: 20px;
}
}
.mark_text {
font-size: 13px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #666666;
line-height: 16px;
}
.footer {
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: center;
margin: 20px 30px 0 0;
}
}
}
</style>

@ -0,0 +1,203 @@
<script lang="ts" setup>
import { ref } from "vue";
const emit = defineEmits<{
(e: "reject", params: any);
(e: "viewrepeat");
}>();
const cardStyle = {
width: "450px",
"--n-padding-bottom": "10px",
"--n-padding-left": "0px",
};
const show = ref(false);
function showModal() {
show.value = true;
}
function closeModal() {
show.value = false;
}
async function reject() {
emit("reject", { a: "todo" });
closeModal();
}
async function viewRepeat(e: MouseEvent) {
emit("viewrepeat");
e.preventDefault();
closeModal();
}
defineExpose({
showModal,
});
</script>
<template>
<n-modal v-model:show="show" transform-origin="center" class="modal_wrap">
<div class="wrapper">
<div class="closed">
<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-mark">某某有限公司-某某事业部-张小凡</div>
</div>
<div class="wrapper-content">
<n-scrollbar style="height: 200px">
<div v-for="i in 1" :key="i" class="item">
<div class="imgwrapper" />
<div class="content">
<div class="task_id">任务IDYPW34567890-2995</div>
<div class="tag_box">
<div class="tag_item">基线任务</div>
<div class="tag_item error">中日友好医院</div>
</div>
<div class="time_box">2023-09-17 13:09:10</div>
</div>
</div>
</n-scrollbar>
<div class="mark_text">
智能识别图片与拜访终端名称不相符建议审批不通过
移至可疑收藏夹
</div>
<div class="footer">
<SvgIcon
style="cursor: pointer"
name="r1"
width="162"
height="54"
@click="reject"
/>
<SvgIcon
style="cursor: pointer"
name="r5"
width="162"
height="54"
@click="viewRepeat"
/>
</div>
</div>
</div>
</n-modal>
</template>
<style lang="less" scoped>
.modal_wrap {
background-image: url(../../../assets/images/approval_modal_bg.png);
background-repeat: no-repeat;
background-size: 100%;
width: 700px;
height: 500px;
box-shadow: none !important;
}
.wrapper {
position: absolute;
left: calc(50% - 350px);
.closed{
position: relative;
top: 0px;
left: 90%;
}
.wrapper-hearder {
margin-top: 40px;
.wrapper-title {
text-align: center;
font-size: 16px;
font-family: PingFang SC, PingFang SC-Semibold;
font-weight: Semibold;
text-align: center;
color: #333333;
line-height: 32px;
}
.wrapper-mark {
text-align: center;
font-size: 13px;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC-Regular;
font-weight: Regular;
text-align: center;
color: #666666;
line-height: 18px;
}
}
.wrapper-content {
flex: 1;
border-radius: 8px;
margin: 35px 60px 35px 120px;
.item{
display: flex;
flex-flow: row nowrap;
align-items: center;
margin: 20px 0;
}
.imgwrapper {
width: 200px;
height: 120px;
margin-right: 20px;
border-radius: 8px;
background-image: url("../../../assets/images/test.png");
background-repeat: no-repeat;
background-size: cover;
}
.content {
.task_id {
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #333333;
line-height: 20px;
}
.tag_box {
display: flex;
flex-flow: row nowrap;
margin: 8px 0;
.tag_item {
background: rgba(80, 122, 253, 0.1);
border-radius: 2px;
font-size: 12px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #507afd;
line-height: 16px;
margin-right: 10px;
}
.error {
background: rgba(255, 78, 79, 0.1);
color: #ff4e4f;
}
}
.time_box {
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #333333;
line-height: 20px;
}
}
.mark_text {
font-size: 13px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #666666;
line-height: 16px;
}
.footer{
display: flex;
flex-flow: row nowrap;
align-items: center;
justify-content: center;
margin: 20px 30px 0 0;
}
}
}
</style>
Loading…
Cancel
Save