Merge pull request 'fix: 饶勇军 外包人员修复前端一键查重相关问题bug' (#25) from rao into test

Reviewed-on: #25
pull/26/head^2
yaoshuli 1 year ago
commit de25e827f8

2
components.d.ts vendored

@ -28,7 +28,6 @@ declare module 'vue' {
NGi: typeof import('naive-ui')['NGi'] NGi: typeof import('naive-ui')['NGi']
NGrid: typeof import('naive-ui')['NGrid'] NGrid: typeof import('naive-ui')['NGrid']
NGridItem: typeof import('naive-ui')['NGridItem'] NGridItem: typeof import('naive-ui')['NGridItem']
NIcon: typeof import('naive-ui')['NIcon']
NImage: typeof import('naive-ui')['NImage'] NImage: typeof import('naive-ui')['NImage']
NInput: typeof import('naive-ui')['NInput'] NInput: typeof import('naive-ui')['NInput']
NMessageProvider: typeof import('naive-ui')['NMessageProvider'] NMessageProvider: typeof import('naive-ui')['NMessageProvider']
@ -37,6 +36,7 @@ declare module 'vue' {
NotPassed: typeof import('./src/components/NotPassed.vue')['default'] NotPassed: typeof import('./src/components/NotPassed.vue')['default']
NPopover: typeof import('naive-ui')['NPopover'] NPopover: typeof import('naive-ui')['NPopover']
NPopselect: typeof import('naive-ui')['NPopselect'] NPopselect: typeof import('naive-ui')['NPopselect']
NProgress: typeof import('naive-ui')['NProgress']
NScrollbar: typeof import('naive-ui')['NScrollbar'] NScrollbar: typeof import('naive-ui')['NScrollbar']
NSelect: typeof import('naive-ui')['NSelect'] NSelect: typeof import('naive-ui')['NSelect']
NSlider: typeof import('naive-ui')['NSlider'] NSlider: typeof import('naive-ui')['NSlider']

@ -15,6 +15,9 @@
"postinstall": "patch-package" "postinstall": "patch-package"
}, },
"dependencies": { "dependencies": {
"@vicons/ionicons5": "^0.12.0",
"@vicons/tabler": "^0.12.0",
"@vicons/utils": "^0.1.4",
"@vueup/vue-quill": "^1.2.0", "@vueup/vue-quill": "^1.2.0",
"@vueuse/core": "10.9.0", "@vueuse/core": "10.9.0",
"axios": "^1.4.0", "axios": "^1.4.0",

@ -5,6 +5,15 @@ settings:
excludeLinksFromLockfile: false excludeLinksFromLockfile: false
dependencies: dependencies:
'@vicons/ionicons5':
specifier: ^0.12.0
version: 0.12.0
'@vicons/tabler':
specifier: ^0.12.0
version: 0.12.0
'@vicons/utils':
specifier: ^0.1.4
version: 0.1.4(vue@3.3.10)
'@vueup/vue-quill': '@vueup/vue-quill':
specifier: ^1.2.0 specifier: ^1.2.0
version: 1.2.0(vue@3.3.10) version: 1.2.0(vue@3.3.10)
@ -17,6 +26,9 @@ dependencies:
date-fns: date-fns:
specifier: ^2.30.0 specifier: ^2.30.0
version: 2.30.0 version: 2.30.0
dayjs:
specifier: ^1.11.10
version: 1.11.10
esno: esno:
specifier: ^0.16.3 specifier: ^0.16.3
version: 0.16.3 version: 0.16.3
@ -41,6 +53,9 @@ dependencies:
naive-ui: naive-ui:
specifier: ^2.38.1 specifier: ^2.38.1
version: 2.38.1(vue@3.3.10) version: 2.38.1(vue@3.3.10)
patch-package:
specifier: ^8.0.0
version: 8.0.0
pinia: pinia:
specifier: ^2.0.33 specifier: ^2.0.33
version: 2.1.7(typescript@4.9.5)(vue@3.3.10) version: 2.1.7(typescript@4.9.5)(vue@3.3.10)
@ -1333,6 +1348,10 @@ packages:
resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==} resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==}
dev: true dev: true
/@types/node@14.14.45:
resolution: {integrity: sha512-DssMqTV9UnnoxDWu959sDLZzfvqCF0qDNRjaWeYSui9xkFe61kKo4l1TWNTQONpuXEm+gLMRvdlzvNHBamzmEw==}
dev: false
/@types/node@18.19.2: /@types/node@18.19.2:
resolution: {integrity: sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==} resolution: {integrity: sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==}
dependencies: dependencies:
@ -1503,6 +1522,23 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true dev: true
/@vicons/ionicons5@0.12.0:
resolution: {integrity: sha512-Iy1EUVRpX0WWxeu1VIReR1zsZLMc4fqpt223czR+Rpnrwu7pt46nbnC2ycO7ItI/uqDLJxnbcMC7FujKs9IfFA==}
dev: false
/@vicons/tabler@0.12.0:
resolution: {integrity: sha512-3+wUFuxb7e8OzZ8Wryct1pzfA2vyoF4lwW98O9s27ZrfCGaJGNmqG+q8A7vQ92Mf+COCgxpK+rhNPTtTvaU6qw==}
dev: false
/@vicons/utils@0.1.4(vue@3.3.10):
resolution: {integrity: sha512-OHI19qVNN6i+uPQ+Y3f2s0dUxwsYnOCcKBW7XOU4yXXO1aU3ZoKpblCc3+4N0qmgoJs5rWKRAaMisipqEXJwAg==}
peerDependencies:
vue: ^3.0.6
dependencies:
'@xicons/utils': 0.1.4
vue: 3.3.10(typescript@4.9.5)
dev: false
/@vitejs/plugin-vue@4.5.1(vite@5.0.5)(vue@3.3.10): /@vitejs/plugin-vue@4.5.1(vite@5.0.5)(vue@3.3.10):
resolution: {integrity: sha512-DaUzYFr+2UGDG7VSSdShKa9sIWYBa1LL8KC0MNOf2H5LjcTPjob0x8LbkqXWmAtbANJCkpiQTj66UVcQkN2s3g==} resolution: {integrity: sha512-DaUzYFr+2UGDG7VSSdShKa9sIWYBa1LL8KC0MNOf2H5LjcTPjob0x8LbkqXWmAtbANJCkpiQTj66UVcQkN2s3g==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
@ -1771,6 +1807,12 @@ packages:
'@xtuc/long': 4.2.2 '@xtuc/long': 4.2.2
dev: true dev: true
/@xicons/utils@0.1.4:
resolution: {integrity: sha512-uXxKDLz9abr80yJC05XSTq6wlyFcdW+N/1IYJkeHjzzXVc4VQ0sEYMoMMTjAH7HQBOyOkzOB4pf5NGF72lwa8Q==}
dependencies:
css-render: 0.13.9
dev: false
/@xtuc/ieee754@1.2.0: /@xtuc/ieee754@1.2.0:
resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
dev: true dev: true
@ -1779,6 +1821,10 @@ packages:
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
dev: true dev: true
/@yarnpkg/lockfile@1.1.0:
resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==}
dev: false
/JSONStream@1.3.5: /JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true hasBin: true
@ -1987,6 +2033,11 @@ packages:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: false dev: false
/at-least-node@1.0.0:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
engines: {node: '>= 4.0.0'}
dev: false
/atob@2.1.2: /atob@2.1.2:
resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
engines: {node: '>= 4.5.0'} engines: {node: '>= 4.5.0'}
@ -2087,7 +2138,6 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dependencies: dependencies:
fill-range: 7.0.1 fill-range: 7.0.1
dev: true
/browserslist@4.22.2: /browserslist@4.22.2:
resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
@ -2270,7 +2320,6 @@ packages:
/ci-info@3.9.0: /ci-info@3.9.0:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true
/class-utils@0.3.6: /class-utils@0.3.6:
resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
@ -2537,6 +2586,14 @@ packages:
shebang-command: 2.0.0 shebang-command: 2.0.0
which: 2.0.2 which: 2.0.2
/css-render@0.13.9:
resolution: {integrity: sha512-n3C4ZH59rveBrUlAD7n0Ze9/gUMKa4dlH1C9CWKpGcIHR/xRcIVXzBGy1iw8WWq2ySmn2/ZqOpySQNAK5Pb6sw==}
dependencies:
'@emotion/hash': 0.8.0
'@types/node': 14.14.45
csstype: 3.0.11
dev: false
/css-render@0.15.12: /css-render@0.15.12:
resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==} resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==}
dependencies: dependencies:
@ -2611,6 +2668,10 @@ packages:
'@babel/runtime': 7.23.5 '@babel/runtime': 7.23.5
dev: false dev: false
/dayjs@1.11.10:
resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
dev: false
/de-indent@1.0.2: /de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
dev: true dev: true
@ -3887,7 +3948,6 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dependencies: dependencies:
to-regex-range: 5.0.1 to-regex-range: 5.0.1
dev: true
/finalhandler@1.1.2: /finalhandler@1.1.2:
resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
@ -3920,6 +3980,12 @@ packages:
path-exists: 4.0.0 path-exists: 4.0.0
dev: true dev: true
/find-yarn-workspace-root@2.0.0:
resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==}
dependencies:
micromatch: 4.0.5
dev: false
/fizzy-ui-utils@2.0.7: /fizzy-ui-utils@2.0.7:
resolution: {integrity: sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==} resolution: {integrity: sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==}
dependencies: dependencies:
@ -3995,6 +4061,16 @@ packages:
universalify: 2.0.1 universalify: 2.0.1
dev: true dev: true
/fs-extra@9.1.0:
resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
engines: {node: '>=10'}
dependencies:
at-least-node: 1.0.0
graceful-fs: 4.2.11
jsonfile: 6.1.0
universalify: 2.0.1
dev: false
/fs.realpath@1.0.0: /fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@ -4147,7 +4223,6 @@ packages:
/graceful-fs@4.2.11: /graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
dev: true
/graphemer@1.4.0: /graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
@ -4465,6 +4540,12 @@ packages:
is-data-descriptor: 1.0.1 is-data-descriptor: 1.0.1
dev: true dev: true
/is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
hasBin: true
dev: false
/is-extendable@0.1.1: /is-extendable@0.1.1:
resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@ -4510,7 +4591,6 @@ packages:
/is-number@7.0.0: /is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'} engines: {node: '>=0.12.0'}
dev: true
/is-obj@2.0.0: /is-obj@2.0.0:
resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
@ -4573,10 +4653,21 @@ packages:
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true dev: true
/is-wsl@2.2.0:
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
engines: {node: '>=8'}
dependencies:
is-docker: 2.2.1
dev: false
/isarray@1.0.0: /isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
dev: true dev: true
/isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
dev: false
/isexe@2.0.0: /isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@ -4671,6 +4762,16 @@ packages:
/json-stable-stringify-without-jsonify@1.0.1: /json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
/json-stable-stringify@1.1.1:
resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.5
isarray: 2.0.5
jsonify: 0.0.1
object-keys: 1.1.1
dev: false
/json5@1.0.2: /json5@1.0.2:
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
hasBin: true hasBin: true
@ -4698,7 +4799,10 @@ packages:
universalify: 2.0.1 universalify: 2.0.1
optionalDependencies: optionalDependencies:
graceful-fs: 4.2.11 graceful-fs: 4.2.11
dev: true
/jsonify@0.0.1:
resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==}
dev: false
/jsonparse@1.3.1: /jsonparse@1.3.1:
resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
@ -4734,6 +4838,12 @@ packages:
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true dev: true
/klaw-sync@6.0.0:
resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==}
dependencies:
graceful-fs: 4.2.11
dev: false
/kleur@3.0.3: /kleur@3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -5100,7 +5210,6 @@ packages:
dependencies: dependencies:
braces: 3.0.2 braces: 3.0.2
picomatch: 2.3.1 picomatch: 2.3.1
dev: true
/mime-db@1.52.0: /mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
@ -5172,7 +5281,6 @@ packages:
/minimist@1.2.8: /minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true
/minipass@4.2.8: /minipass@4.2.8:
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
@ -5453,6 +5561,14 @@ packages:
mimic-fn: 4.0.0 mimic-fn: 4.0.0
dev: true dev: true
/open@7.4.2:
resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==}
engines: {node: '>=8'}
dependencies:
is-docker: 2.2.1
is-wsl: 2.2.0
dev: false
/optionator@0.9.3: /optionator@0.9.3:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
@ -5464,6 +5580,11 @@ packages:
prelude-ls: 1.2.1 prelude-ls: 1.2.1
type-check: 0.4.0 type-check: 0.4.0
/os-tmpdir@1.0.2:
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
engines: {node: '>=0.10.0'}
dev: false
/outlayer@2.1.1: /outlayer@2.1.1:
resolution: {integrity: sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==} resolution: {integrity: sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==}
dependencies: dependencies:
@ -5570,6 +5691,28 @@ packages:
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true dev: true
/patch-package@8.0.0:
resolution: {integrity: sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==}
engines: {node: '>=14', npm: '>5'}
hasBin: true
dependencies:
'@yarnpkg/lockfile': 1.1.0
chalk: 4.1.2
ci-info: 3.9.0
cross-spawn: 7.0.3
find-yarn-workspace-root: 2.0.0
fs-extra: 9.1.0
json-stable-stringify: 1.1.1
klaw-sync: 6.0.0
minimist: 1.2.8
open: 7.4.2
rimraf: 2.7.1
semver: 7.5.4
slash: 2.0.0
tmp: 0.0.33
yaml: 2.3.4
dev: false
/path-browserify@1.0.1: /path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
dev: true dev: true
@ -5634,7 +5777,6 @@ packages:
/picomatch@2.3.1: /picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'} engines: {node: '>=8.6'}
dev: true
/pidtree@0.6.0: /pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
@ -6072,6 +6214,13 @@ packages:
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
dev: true dev: true
/rimraf@2.7.1:
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
hasBin: true
dependencies:
glob: 7.2.3
dev: false
/rimraf@3.0.2: /rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
hasBin: true hasBin: true
@ -6243,6 +6392,11 @@ packages:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
dev: true dev: true
/slash@2.0.0:
resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
engines: {node: '>=6'}
dev: false
/slash@3.0.0: /slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -6688,6 +6842,13 @@ packages:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
dev: true dev: true
/tmp@0.0.33:
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
engines: {node: '>=0.6.0'}
dependencies:
os-tmpdir: 1.0.2
dev: false
/to-fast-properties@2.0.0: /to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -6712,7 +6873,6 @@ packages:
engines: {node: '>=8.0'} engines: {node: '>=8.0'}
dependencies: dependencies:
is-number: 7.0.0 is-number: 7.0.0
dev: true
/to-regex@3.0.2: /to-regex@3.0.2:
resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
@ -6827,7 +6987,6 @@ packages:
/universalify@2.0.1: /universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'} engines: {node: '>= 10.0.0'}
dev: true
/unpipe@1.0.0: /unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
@ -7377,7 +7536,6 @@ packages:
/yaml@2.3.4: /yaml@2.3.4:
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
dev: true
/yargs-parser@20.2.9: /yargs-parser@20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}

@ -263,3 +263,17 @@ export async function getPictureList(params: any): Promise<any> {
total, total,
} }
} }
/**
*
* @param
* @returns
*/
export async function getFilterList(params) {
return http.request({
url: `/ocr/ocrUsersearch/querySearchCondition`,
method: 'get',
params
})
}

@ -0,0 +1,32 @@
<?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>编组 13</title>
<defs>
<rect id="path-1" x="0" y="0" width="15.7538462" height="15.7538462"></rect>
</defs>
<g id="index" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="异步查重" transform="translate(-1352.000000, -938.000000)">
<g id="编组-25" transform="translate(1064.000000, 919.000000)">
<g id="编组-14" transform="translate(256.000000, 19.000000)">
<g id="收起" transform="translate(40.000000, 8.000000) scale(-1, 1) rotate(-90.000000) translate(-40.000000, -8.000000) translate(32.000000, 0.000000)">
<g id="编组-13" transform="translate(0.123077, 0.123077)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<g id="编组-11" mask="url(#mask-2)">
<g transform="translate(1.741980, 1.461539)">
<rect id="矩形" fill="#666666" transform="translate(0.729021, 6.415385) rotate(-270.000000) translate(-0.729021, -6.415385) " x="-5.68636353" y="5.68636353" width="12.830769" height="1.45804193" rx="0.291608386"></rect>
<g id="编组" stroke-width="1" fill="none" transform="translate(8.478978, 6.415385) scale(-1, 1) translate(-8.478978, -6.415385) translate(4.688069, 0.000000)">
<rect id="矩形" transform="translate(3.790909, 6.415384) scale(-1, -1) rotate(-180.000000) translate(-3.790909, -6.415384) " x="0" y="0" width="7.58181805" height="12.830769"></rect>
<path d="M0.201793759,6.3610837 C0.213041182,6.22879799 0.269278297,6.09961817 0.370505105,5.99839136 L0.370505105,5.99839136 L0.563544402,5.80535207 C0.57979068,5.78910579 0.596756979,5.77401837 0.61434058,5.7600898 L6.09088579,0.287203877 C6.20476595,0.173323719 6.38940217,0.173323719 6.50328233,0.287203877 L7.10871816,0.89263971 C7.22259832,1.00651987 7.22259832,1.19115609 7.10871816,1.30503624 L1.99779376,6.41479376 L7.10871816,11.5257328 C7.20632972,11.6233443 7.22027423,11.7729399 7.15055169,11.8854041 L7.10871816,11.9381293 L6.50328233,12.5435651 C6.38940217,12.6574453 6.20476595,12.6574453 6.09088579,12.5435651 L6.09088579,12.5435651 L0.618409245,7.07387291 C0.599371439,7.05906492 0.581040393,7.04291292 0.563544402,7.02541693 L0.370505105,6.83237764 C0.269278297,6.73115083 0.213041182,6.60197101 0.201793759,6.4696853 Z" id="形状结合" fill="#666666" transform="translate(3.697961, 6.415384) scale(1, -1) rotate(-180.000000) translate(-3.697961, -6.415384) "></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

@ -0,0 +1,32 @@
<?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>编组 13</title>
<defs>
<rect id="path-1" x="0" y="3.06460325e-13" width="15.7538462" height="15.7538462"></rect>
</defs>
<g id="index" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="异步查重-折叠" transform="translate(-1352.000000, -1041.000000)">
<g id="编组-36" transform="translate(1064.000000, 1022.000000)">
<g id="编组-19" transform="translate(256.000000, 19.000000)">
<g id="展开" transform="translate(40.000000, 8.000000) scale(1, -1) rotate(-90.000000) translate(-40.000000, -8.000000) translate(32.000000, 0.000000)">
<g id="编组-13" transform="translate(0.123077, 0.123077)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<g id="蒙版"></g>
<g id="编组-11" mask="url(#mask-2)">
<g transform="translate(1.741980, 1.461539)">
<rect id="矩形" fill="#666666" transform="translate(0.729021, 6.415385) rotate(-270.000000) translate(-0.729021, -6.415385) " x="-5.68636353" y="5.68636353" width="12.830769" height="1.45804193" rx="0.291608386"></rect>
<g id="编组" stroke-width="1" fill="none" transform="translate(8.478978, 6.415385) scale(-1, 1) translate(-8.478978, -6.415385) translate(4.688069, 0.000000)">
<rect id="矩形" transform="translate(3.790909, 6.415385) scale(-1, -1) rotate(-180.000000) translate(-3.790909, -6.415385) " x="0" y="3.05602346e-13" width="7.58181805" height="12.830769"></rect>
<path d="M0.201793759,6.3610837 C0.213041182,6.22879799 0.269278297,6.09961817 0.370505105,5.99839136 L0.370505105,5.99839136 L0.563544402,5.80535207 C0.57979068,5.78910579 0.596756979,5.77401837 0.61434058,5.7600898 L6.09088579,0.287203877 C6.20476595,0.173323719 6.38940217,0.173323719 6.50328233,0.287203877 L7.10871816,0.89263971 C7.22259832,1.00651987 7.22259832,1.19115609 7.10871816,1.30503624 L1.99779376,6.41479376 L7.10871816,11.5257328 C7.20632972,11.6233443 7.22027423,11.7729399 7.15055169,11.8854041 L7.10871816,11.9381293 L6.50328233,12.5435651 C6.38940217,12.6574453 6.20476595,12.6574453 6.09088579,12.5435651 L6.09088579,12.5435651 L0.618409245,7.07387291 C0.599371439,7.05906492 0.581040393,7.04291292 0.563544402,7.02541693 L0.370505105,6.83237764 C0.269278297,6.73115083 0.213041182,6.60197101 0.201793759,6.4696853 Z" id="形状结合" fill="#666666" transform="translate(3.697961, 6.415385) scale(1, -1) rotate(-180.000000) translate(-3.697961, -6.415385) "></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

@ -1,25 +1,17 @@
<script lang="ts"> <script lang="ts">
import { useDialog, useMessage } from "naive-ui"; import { useDialog, useMessage } from 'naive-ui'
import { import { defineComponent, inject, onMounted, reactive, ref, toRefs, unref, watch } from 'vue'
defineComponent, import { useRoute, useRouter } from 'vue-router'
inject, import QuillModal from './QuillModal.vue'
onMounted, import RecycleModal from './RecycleModal.vue'
reactive, import SearchModal from './SearchModal.vue'
ref, import ShortcutModal from './ShortcutModal.vue'
toRefs, import UserSettings from './UserSettings.vue'
unref, import { msgPolling } from '@/api/message/message'
watch, import { getImgUrl } from '@/utils/urlUtils'
} from "vue"; import { useUser } from '@/store/modules/user'
import { useRoute, useRouter } from "vue-router"; import { useTaskStore } from '@/store/modules/task'
import QuillModal from "./QuillModal.vue"; import defaultAvatar from '@/assets/icons/avatar.svg';
import RecycleModal from "./RecycleModal.vue";
import SearchModal from "./SearchModal.vue";
import ShortcutModal from "./ShortcutModal.vue";
import UserSettings from "./UserSettings.vue";
import { msgPolling } from "@/api/message/message";
import { getImgUrl } from "@/utils/urlUtils";
import { useUser } from "@/store/modules/user";
import { useTaskStore } from "@/store/modules/task";
const taskStore = useTaskStore(); const taskStore = useTaskStore();
export default defineComponent({ export default defineComponent({
@ -171,6 +163,8 @@ export default defineComponent({
mousetrap.bind("m m", searchHandler); mousetrap.bind("m m", searchHandler);
}); });
const defaultAvatarSrc = ref(defaultAvatar);
return { return {
...toRefs(state), ...toRefs(state),
iconList, iconList,
@ -190,7 +184,8 @@ export default defineComponent({
getMessage, getMessage,
handleDragOver, handleDragOver,
handleDragLeave, handleDragLeave,
}; defaultAvatarSrc,
}
}, },
}); });
</script> </script>
@ -231,7 +226,8 @@ export default defineComponent({
</div> </div>
<!-- 个人中心 --> <!-- 个人中心 -->
<div class="layout-header-trigger layout-header-trigger-min"> <div class="layout-header-trigger layout-header-trigger-min">
<n-avatar :src="getImgUrl(useInfo.usericon)" round /> <!-- <n-avatar :src="getImgUrl(useInfo.usericon)" round /> -->
<n-avatar :src="getImgUrl(useInfo.usericon) || defaultAvatarSrc" round/>
</div> </div>
<!-- 设置 --> <!-- 设置 -->
<UserSettings @logout="doLogout" /> <UserSettings @logout="doLogout" />

@ -9,6 +9,9 @@ export interface ConfigState {
systemConfig: AsideConfig | null systemConfig: AsideConfig | null
customConfig: string[] | null customConfig: string[] | null
asideValue: any asideValue: any
searchValue: string
isAllowDownload: boolean
timeNum: number
} }
export const useAsideConfigStore = defineStore({ export const useAsideConfigStore = defineStore({
@ -17,6 +20,9 @@ export const useAsideConfigStore = defineStore({
systemConfig: null, systemConfig: null,
customConfig: null, customConfig: null,
asideValue: null, asideValue: null,
searchValue: "",
isAllowDownload: true,
timeNum: 0,
}), }),
getters: { getters: {
getConfig(): AsideConfig | null { getConfig(): AsideConfig | null {
@ -28,6 +34,15 @@ export const useAsideConfigStore = defineStore({
getAsideValue(): any { getAsideValue(): any {
return this.asideValue return this.asideValue
}, },
getSearchValue(): any {
return this.searchValue
},
getIsAllowDownload(): any {
return this.isAllowDownload
},
getTimeNum(): any {
return this.timeNum
},
}, },
actions: { actions: {
setConfig(config: AsideConfig) { setConfig(config: AsideConfig) {
@ -36,6 +51,19 @@ export const useAsideConfigStore = defineStore({
setAsideValue(value) { setAsideValue(value) {
this.asideValue = value this.asideValue = value
}, },
setSearchValue(value) {
this.searchValue = value
},
setIsAllowDownload(value) {
this.isAllowDownload = value
},
setTimeNum(value) {
this.timeNum = value
},
// 设置个性化配置
setCustomConfig(value) {
this.customConfig = value
},
// 获取系统配置信息 // 获取系统配置信息
async fetchConfig() { async fetchConfig() {
const response = await getConfig() const response = await getConfig()

@ -11,6 +11,7 @@ import type { AsideEntity } from '@/config/aside'
import { asideMap } from '@/config/aside' import { asideMap } from '@/config/aside'
import type { AsideConfig } from '/#/api' import type { AsideConfig } from '/#/api'
import emitter from '@/utils/mitt' import emitter from '@/utils/mitt'
import { getFilterList } from '@/api/home/main'
const configStore = useConfig() const configStore = useConfig()
@ -30,6 +31,7 @@ Object.keys(asideMap).forEach((key) => {
const filterModalRef = ref(null) const filterModalRef = ref(null)
const newFilterModalRef = ref(null) const newFilterModalRef = ref(null)
const customModalRef = ref(null) const customModalRef = ref(null)
const customObjRef = ref<any>(null) //
function showModal(modalRef: any) { function showModal(modalRef: any) {
const modal = unref(modalRef)! as any const modal = unref(modalRef)! as any
@ -86,16 +88,32 @@ configStore.$subscribe(() => {
if (config == null || customConfig == null) if (config == null || customConfig == null)
return return
// console.log("config", config, "customConfig", customConfig);
const showKeys = [...customConfig].filter(key => !asideMap[key].isDefaultFilter) /* rao
const defaultKeys = Object.keys(asideMap).filter(key => asideMap[key].isDefaultFilter) const showKeys = [...customConfig].filter(key => !asideMap[key].isDefaultFilter)// customConfig isDefaultFilter
const defaultKeys = Object.keys(asideMap).filter(key => asideMap[key].isDefaultFilter)// asideMap isDefaultFilter
showKeys.unshift(...defaultKeys) showKeys.unshift(...defaultKeys)
*/
const showKeys = [...customConfig];
Object.keys(config).forEach((key) => { Object.keys(config).forEach((key) => {
if (key.startsWith('iz') && asideMap[key] !== undefined) if (key.startsWith('iz') && asideMap[key] !== undefined)
asideVisible[key] = (showKeys.includes(key) || asideMap[key].isDefaultFilter) && config[key] === 'Y' asideVisible[key] = (showKeys.includes(key) || asideMap[key].isDefaultFilter) && config[key] === 'Y'
}) })
if(customObjRef.value) {//
Object.keys(customObjRef.value).map(key => {
if(asideMap.hasOwnProperty(key)) {
const str = key.toLowerCase()
if(str == "izsimilarity" && typeof customObjRef.value[str] == "string") {
customObjRef.value[str] = customObjRef.value[str].split(',');
}
// asideMap[str].defaultValue = customObjRef.value[str];//
asideValue[key] = customObjRef.value[str];//
}
});
}
// console.log("showKeys", showKeys);
const items = showKeys.reduce((acc, key) => { const items = showKeys.reduce((acc, key) => {
const { render } = asideMap[key] const { render } = asideMap[key]
@ -112,7 +130,7 @@ configStore.$subscribe(() => {
return acc return acc
} }
}, []) }, [])
// console.log("items", items);
showItems.value = items showItems.value = items
}) })
@ -134,9 +152,23 @@ function scrollHandler(key: string) {
element?.scrollIntoView(true) element?.scrollIntoView(true)
} }
// // ->
function filterHandler(searchId: string) { async function filterHandler(searchId: string) {
emitter.emit('filter', searchId) // emitter.emit('filter', searchId)
const res = await getFilterList({userSearchId: searchId});
// console.log("", res);
if(res.code == "OK") {
let obj = res.data;
customObjRef.value = res.data;
let showKeys: any[] = [];
Object.keys(obj).map(key => {
if(asideMap.hasOwnProperty(key)) {
showKeys.push(key);
}
});
// console.log(showKeys);
configStore.setCustomConfig(showKeys);
}
} }
function editFilter(filter: any) { function editFilter(filter: any) {

@ -48,6 +48,12 @@ function selectHandler(item: SearchEntity) {
(popover.value as any).setShow(false) (popover.value as any).setShow(false)
emit('select', item.key) emit('select', item.key)
} }
//
const searchName = () => {
configStore.setSearchValue(searchKeyword.value);
}
</script> </script>
<template> <template>
@ -59,7 +65,7 @@ function selectHandler(item: SearchEntity) {
<template #trigger> <template #trigger>
<n-input style="width: 260px;height: 32px;" placeholder="请输入你需要搜索的内容" @input="inputHandler"> <n-input style="width: 260px;height: 32px;" placeholder="请输入你需要搜索的内容" @input="inputHandler">
<template #suffix> <template #suffix>
<SvgIcon size="14px" name="magnifying-1" /> <SvgIcon size="14px" name="magnifying-1" @click="searchName" style="cursor: pointer;" />
</template> </template>
</n-input> </n-input>
</template> </template>

@ -16,7 +16,11 @@ const emit = defineEmits<{
}>() }>()
const figureUrl = ref(props.value) let figureUrl = ref(props.value)
if(figureUrl.value && figureUrl.value.indexOf('http') == -1) {
figureUrl.value = getImgUrl(figureUrl.value);
}
const uploadRef = ref(null); const uploadRef = ref(null);
async function customRequest(data: UploadCustomRequestOptions) { async function customRequest(data: UploadCustomRequestOptions) {
@ -83,6 +87,7 @@ const handleDrop = async (e) => {
emit('update:value', result.data) emit('update:value', result.data)
} }
}; };
</script> </script>
<template> <template>

@ -1,5 +1,8 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue' import { ref } from 'vue'
import { useConfig } from '@/store/modules/asideConfig'
const configStore = useConfig()
const props = defineProps({ const props = defineProps({
value: { value: {
@ -20,6 +23,7 @@ const download = ref(props.value)
function onChange(value: boolean) { function onChange(value: boolean) {
emit('update:value', value) emit('update:value', value)
configStore.setIsAllowDownload(value);
} }
</script> </script>

@ -7,7 +7,7 @@ const props = defineProps<{
}>() }>()
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'update:value', value: number[]): void (e: 'update:value', value: string): void
}>() }>()
const range = ref<[number, number]>(props.value) const range = ref<[number, number]>(props.value)
@ -19,7 +19,8 @@ const marks = {
} }
function onChange(value: number & number[]) { function onChange(value: number & number[]) {
emit('update:value', value) let valueStr = value.join('-');
emit('update:value', valueStr)
} }
</script> </script>

@ -305,7 +305,7 @@ onMounted(() => {
:bordered="false" :bordered="false"
> >
<div class="input_wrap"> <div class="input_wrap">
<n-input placeholder="关键词搜索" @input="leftInputHandler"> <n-input placeholder="搜索关键词" @input="leftInputHandler">
<template #suffix> <template #suffix>
<SvgIcon size="14px" name="magnifying-1-color999" /> <SvgIcon size="14px" name="magnifying-1-color999" />
</template> </template>
@ -313,7 +313,7 @@ onMounted(() => {
<n-scrollbar style="max-height: 500px;border: 1px solid #cad2dd;border-radius: 2px;"> <n-scrollbar style="max-height: 500px;border: 1px solid #cad2dd;border-radius: 2px;">
<div class="draggable-ul"> <div class="draggable-ul">
<div class="draggable-li"> <div class="draggable-li">
<n-checkbox v-model:checked="checkAll" label="全部" @update:checked="onCheckAllChange" /> <n-checkbox v-model:checked="checkAll" label="全部" @update:checked="onCheckAllChange" :indeterminate="!checkAll"/>
</div> </div>
<div <div
v-for="item in offList" v-show="item.name.includes(offKeyword)" :key="item.id" :class="{ 'disable-check': item.fix }" v-for="item in offList" v-show="item.name.includes(offKeyword)" :key="item.id" :class="{ 'disable-check': item.fix }"
@ -341,7 +341,7 @@ onMounted(() => {
<span class="textbtnStyle" @click="clearDragSource"></span> <span class="textbtnStyle" @click="clearDragSource"></span>
</template> </template>
<div class="input_wrap"> <div class="input_wrap">
<n-input placeholder="关键词搜索" @input="rightInputHandler"> <n-input placeholder="搜索关键词" @input="rightInputHandler">
<template #suffix> <template #suffix>
<SvgIcon size="14px" name="magnifying-1-color999" /> <SvgIcon size="14px" name="magnifying-1-color999" />
</template> </template>
@ -351,7 +351,7 @@ onMounted(() => {
<div v-for="item in onList" v-show="item.name.includes(onKeyword)" :key="item.id" :draggable="true" class="cursor-move draggable-li"> <div v-for="item in onList" v-show="item.name.includes(onKeyword)" :key="item.id" :draggable="true" class="cursor-move draggable-li">
<SvgIcon name="drag" size="24" /> <SvgIcon name="drag" size="24" />
<span class="ml-2">{{ item.name }}</span> <span class="ml-2">{{ item.name }}</span>
<SvgIcon size="16px" style="display:block;margin-left: auto;cursor: pointer;" <SvgIcon v-if="!item.fix" size="16px" style="display:block;margin-left: auto;cursor: pointer;"
name="clear" @click="removeHandler(item.id)" /> name="clear" @click="removeHandler(item.id)" />
</div> </div>
</VueDraggable> </VueDraggable>
@ -386,7 +386,7 @@ onMounted(() => {
} }
&-bar { &-bar {
background-color: #f8f8f8; background-color: #f8f8f8 !important;
width: calc(100% + 12px); width: calc(100% + 12px);
margin-top: 20px; margin-top: 20px;
color: #333333; color: #333333;
@ -424,6 +424,10 @@ onMounted(() => {
.dragcardStyle { .dragcardStyle {
--n-padding-bottom: 0px !important; --n-padding-bottom: 0px !important;
--n-padding-left: 0px !important; --n-padding-left: 0px !important;
::v-deep(.n-card__content) {
padding-left: 0 !important;
padding-right: 0 !important;
}
} }
.cardstyle { .cardstyle {
@ -431,6 +435,7 @@ onMounted(() => {
height: 800px; height: 800px;
--n-padding-bottom: 20px; --n-padding-bottom: 20px;
--n-padding-left: 24px; --n-padding-left: 24px;
// background-color: #f8f8f8 !important;
} }
.textbtnStyle { .textbtnStyle {
@ -471,6 +476,7 @@ onMounted(() => {
::v-deep(.n-card > .n-card-header .n-card-header__main){ ::v-deep(.n-card > .n-card-header .n-card-header__main){
font-weight: lighter !important; font-weight: lighter !important;
font-size: 14px; font-size: 14px;
color: #333333;
} }
::v-deep(.n-scrollbar){ ::v-deep(.n-scrollbar){
border-left: 1px solid #cad2dd !important; border-left: 1px solid #cad2dd !important;

@ -13,8 +13,8 @@ import dayjs from 'dayjs'
import imagesloaded from 'imagesloaded' import imagesloaded from 'imagesloaded'
import { cloneDeep, debounce } from 'lodash-es' import { cloneDeep, debounce } from 'lodash-es'
import Masonry from 'masonry-layout' import Masonry from 'masonry-layout'
import { useMessage } from 'naive-ui' import { useMessage, NIcon } from 'naive-ui'
import { computed, nextTick, onMounted, onUnmounted, onUpdated, reactive, ref, unref, watch } from 'vue' import { computed, nextTick, onMounted, onUnmounted, onUpdated, reactive, ref, unref, watch, h, } from 'vue'
import CheckingTaskModal from './modal/CheckingTaskModal.vue' import CheckingTaskModal from './modal/CheckingTaskModal.vue'
import FinishPackageModal from './modal/FinishPackageModal.vue' import FinishPackageModal from './modal/FinishPackageModal.vue'
import GeneratePackageModal from './modal/GeneratePackageModal.vue' import GeneratePackageModal from './modal/GeneratePackageModal.vue'
@ -22,6 +22,16 @@ import LoginSuccessModal from './modal/LoginSuccessModal.vue'
import PackageSettingsModal from './modal/PackageSettingsModal.vue' import PackageSettingsModal from './modal/PackageSettingsModal.vue'
import QueryRepeatedTasksModal from './modal/QueryRepeatedTasksModal.vue' import QueryRepeatedTasksModal from './modal/QueryRepeatedTasksModal.vue'
import type { PictureSortParam } from "/#/api" import type { PictureSortParam } from "/#/api"
import type { Component } from 'vue'
import {
Upload as UploadIcon,
Download as DownloadIcon,
} from '@vicons/tabler'
import {
EyeOutline as EyeOutlineIcon,
EllipsisHorizontal,
} from '@vicons/ionicons5'
import { Icon } from '@vicons/utils'
const deviceHeight = ref(600) const deviceHeight = ref(600)
let _masonry: null | Masonry = null let _masonry: null | Masonry = null
@ -129,6 +139,26 @@ const viewLabel = computed(() => {
return item?.label return item?.label
}) })
let isAllowDownload = ref(true)
let calNum = ref(0);
const searchValue = ref('');
configStore.$subscribe(() => {
isAllowDownload.value = configStore.isAllowDownload;
calNum.value = configStore.getTimeNum;
// console.log("calNum.value----------", calNum.value);
searchValue.value = configStore.getSearchValue;
})
watch(() => searchValue.value,
(newVal, oldVal) => {
if(newVal) {
featchList()
}
},
);
const listData = ref<any[]>([]) const listData = ref<any[]>([])
async function featchList() { async function featchList() {
@ -140,7 +170,7 @@ async function featchList() {
} }
pagination.pageNo += 1 pagination.pageNo += 1
const searchValue = configStore.getSearchValue // rao
const asideParams = unref(configStore.getAsideValue) const asideParams = unref(configStore.getAsideValue)
const params = filterId ? { userSearchId: filterId } : asideParams const params = filterId ? { userSearchId: filterId } : asideParams
let result = { let result = {
@ -148,10 +178,17 @@ async function featchList() {
data: [], data: [],
total: 0, total: 0,
} }
let sortObj: any = {} // rao start
if(sortBy.orderbyvalue == "pictureResult") {
sortObj.ordertype = sortBy.orderbyname
}else if(sortBy.orderbyvalue == "fromuptime") {
sortObj.orderByTime = sortBy.orderbyname
}// rao end
if (checkTaskStatus.value === 2 && isRefresh) { if (checkTaskStatus.value === 2 && isRefresh) {
result = await queryPageListByCheckNo({ ...pagination, ...contentParams, ...params, ...sortBy, checkDuplicateNo: checkDuplicateNo.value }) result = await queryPageListByCheckNo({ ...pagination, ...contentParams, ...params, ...sortObj, checkDuplicateNo: checkDuplicateNo.value, upUserName: searchValue })
} else { } else {
result = await getPictureList({ ...pagination, ...contentParams, ...params, ...sortBy }) result = await getPictureList({ ...pagination, ...contentParams, ...params, ...sortObj, upUserName: searchValue })
} }
const { data, pageCount, total } = result const { data, pageCount, total } = result
totalCount.value = total totalCount.value = total
@ -215,7 +252,7 @@ async function oneCheck() {
if (res.code === "OK") { if (res.code === "OK") {
checkDuplicateNo.value = res.data.checkDuplicateNo checkDuplicateNo.value = res.data.checkDuplicateNo
checkTaskStatus.value = res.data.status checkTaskStatus.value = res.data.status
tasksLoadingModal.showModal() tasksLoadingModal.closeModal()
} else { } else {
message.error(res.message || '查重失败') message.error(res.message || '查重失败')
} }
@ -233,9 +270,20 @@ async function showAddPackage() {
//, //,
async function tasksLoadingCloseCallback() { async function tasksLoadingCloseCallback() {
const checkingTaskModal = checkingTaskModalRef.value as any const checkingTaskModal = checkingTaskModalRef.value as any
checkingTaskModal.showModal() checkingTaskModal.closeModal()
if(isRefresh.value) {
refresh(true);
}
}
async function showLoginSuccessModal() {
const modal = LoginSuccessModalRef.value as any
// modal.showModal()
} }
// id
const packageIdRef = ref('');
async function commitHandler(settingParam) { async function commitHandler(settingParam) {
const params = { const params = {
name: settingParam.packagename, name: settingParam.packagename,
@ -247,6 +295,7 @@ async function commitHandler(settingParam) {
createPackage(params).then((res) => { createPackage(params).then((res) => {
if (res.code === "OK") { if (res.code === "OK") {
message.success(res.data); message.success(res.data);
packageIdRef.value = res.data.id;
modal.closeModal() modal.closeModal()
finishModal.showModal() finishModal.showModal()
// //
@ -325,6 +374,7 @@ function getAvatar(url: string): string {
function sortHandler(orderby: "pictureResult" | "fromuptime") { function sortHandler(orderby: "pictureResult" | "fromuptime") {
sortBy.orderbyvalue = orderby; sortBy.orderbyvalue = orderby;
sortBy.orderbyname = sortBy.orderbyname === "asc" ? "desc" : "asc"; sortBy.orderbyname = sortBy.orderbyname === "asc" ? "desc" : "asc";
refreshHandler() refreshHandler()
} }
async function downloadImage(item) { async function downloadImage(item) {
@ -374,10 +424,12 @@ function previewHandler(index: number, event: MouseEvent) {
(imageRef.value?.[index] as any).mergedOnClick(); (imageRef.value?.[index] as any).mergedOnClick();
} }
const timer = ref();
/** /**
* 检查查重状态 * 检查查重状态
*/ */
function refresh(val) { function refresh(val?: any) {
// delete asideVal.izsimilarity // delete asideVal.izsimilarity
const checkingTaskModal = checkingTaskModalRef.value as any const checkingTaskModal = checkingTaskModalRef.value as any
if (checkDuplicateNo.value) { if (checkDuplicateNo.value) {
@ -389,16 +441,40 @@ function refresh(val) {
// modal.showModal() // modal.showModal()
// return // return
// } // }
if (checkTaskStatus.value === 2 && isRefresh) { if (checkTaskStatus.value === 2 && isRefresh.value) {
configStore.setTimeNum(100);
const tasksLoadingModal = queryRepeatedTasksModalRef.value as any
tasksLoadingModal.closeModal();
checkingTaskModal.closeModal() checkingTaskModal.closeModal()
isRefresh.value = false isRefresh.value = false
message.success('任务执行完毕,正在刷新数据...'); message.success('任务执行完毕,正在刷新数据...');
if(timer.value) {
clearInterval(timer.value);
}
reset() reset()
loadMore() loadMore()
// configStore.setTimeNum(0);
} else if (checkTaskStatus.value === 1) { } else if (checkTaskStatus.value === 1) {
// checkingTaskModal.showModal() const tasksLoadingModal = queryRepeatedTasksModalRef.value as any
return tasksLoadingModal.showModal();
if(calNum.value < 90) {
calNum.value = calNum.value + 10;
// console.log("calNum.value",calNum.value);
}
configStore.setTimeNum(calNum.value);
// console.log("calNum.value timer.value------", timer.value, calNum.value, isRefresh.value);
if(calNum.value == 10 && isRefresh.value) {
if(timer.value) {
clearInterval(timer.value);
}
timer.value = setInterval(() => {
// console.log("calNum.value timer.value------", timer.value, calNum.value);
refresh();
}, 200);
}
checkingTaskModal.showModal()
// return
} }
} }
}) })
@ -420,6 +496,32 @@ function cancel(val) {
} }
} }
const renderIcon = (icon: Component) => {
return () => {
return h(NIcon, null, {
default: () => h(icon)
})
}
}
const dropdownOptions = ref([
{
label: '导入任务数据',
key: 'profile',
icon: renderIcon(UploadIcon)
},
{
label: '导出任务数据',
key: 'editProfile',
icon: renderIcon(DownloadIcon)
},
{
label: '查看导入记录',
key: 'logout',
icon: renderIcon(EyeOutlineIcon)
}
]);
</script> </script>
<template> <template>
@ -429,10 +531,23 @@ function cancel(val) {
<SvgIcon size="32" name="magnifying" /> <SvgIcon size="32" name="magnifying" />
<span class="font">AI一键查重</span> <span class="font">AI一键查重</span>
</div> </div>
<SvgIcon v-show="checkTaskStatus !== 2" style="cursor: pointer;" size="105" name="yijianchachong" <div class="flex-btn-icon">
@click="oneCheck" /> <SvgIcon v-show="checkTaskStatus !== 2" style="cursor: pointer;" size="105" name="yijianchachong"
<SvgIcon v-show="checkTaskStatus === 2" style="cursor: pointer;" size="105" name="shengchengrenwubao" @click="oneCheck" />
@click="showAddPackage" /> <SvgIcon v-show="checkTaskStatus === 2" style="cursor: pointer;" size="105" name="shengchengrenwubao"
@click="showAddPackage" />
<n-dropdown
trigger="hover"
placement="bottom-start"
:options="dropdownOptions"
>
<n-button style="margin-left: 10px;">
<Icon>
<EllipsisHorizontal />
</Icon>
</n-button>
</n-dropdown>
</div>
</div> </div>
<div class="wrapper-content"> <div class="wrapper-content">
<div style="display: flex;justify-content: space-between;"> <div style="display: flex;justify-content: space-between;">
@ -459,7 +574,7 @@ function cancel(val) {
<SvgIcon style="margin-left: 8px;" name="sort" size="12" /> <SvgIcon style="margin-left: 8px;" name="sort" size="12" />
</div> </div>
</div> </div>
<span style="font-size: 16px;color:#494949"> <span style="color:#7899fd;font-weight: 500;">{{ totalCount <span style="font-size: 16px;color: #333"> <span style="color: #507AFD;font-weight: 500;">{{ totalCount
}}</span> </span> }}</span> </span>
</div> </div>
<n-spin :show="loading"> <n-spin :show="loading">
@ -481,16 +596,23 @@ function cancel(val) {
{{ `${item.similar}%` }} {{ `${item.similar}%` }}
</div> </div>
</div> </div>
<div class="glass"> <div class="glass" v-if="isAllowDownload">
<SvgIcon size="16" name="download" style="margin-top: -6px;cursor: pointer;" <SvgIcon size="16" name="download" style="margin-top: -6px;cursor: pointer;"
@click="downloadImage(item)" /> @click="downloadImage(item)" />
</div> </div>
<div class="info"> <div class="info">
<div class="footer"> <div class="footer">
<div class="img-name">{{ item.imgName }}</div> <div class="img-name">
<n-tooltip trigger="hover">
<template #trigger>
<span>{{ item.imgName }}</span>
</template>
{{ item.imgName }}
</n-tooltip>
</div>
<div class="icon-wrap" @click="previewHandler(index, $event)"> <div class="icon-wrap" @click="previewHandler(index, $event)">
<SvgIcon size="13" name="magnifying-2" style="cursor: pointer;margin-left: 3px;color:#898481" /> <SvgIcon size="13" name="magnifying-2" style="cursor: pointer;color:#898481" />
</div> </div>
</div> </div>
<div class="left"> <div class="left">
@ -512,7 +634,7 @@ function cancel(val) {
<GeneratePackageModal ref="generateModalRef" /> <GeneratePackageModal ref="generateModalRef" />
<QueryRepeatedTasksModal ref="queryRepeatedTasksModalRef" @closeCallback="tasksLoadingCloseCallback"/> <QueryRepeatedTasksModal ref="queryRepeatedTasksModalRef" @closeCallback="tasksLoadingCloseCallback"/>
<LoginSuccessModal ref="LoginSuccessModalRef" /> <LoginSuccessModal ref="LoginSuccessModalRef" />
<FinishPackageModal ref="finishPackageModal" /> <FinishPackageModal ref="finishPackageModal" :id="packageIdRef"/>
<CheckingTaskModal ref="checkingTaskModalRef" @refresh="refresh" @cancel="cancel" /> <CheckingTaskModal ref="checkingTaskModalRef" @refresh="refresh" @cancel="cancel" />
</div> </div>
</template> </template>
@ -672,6 +794,8 @@ function cancel(val) {
.icon-wrap { .icon-wrap {
width: 22px; width: 22px;
height: 22px; height: 22px;
line-height: 22px;
text-align: center;
background-color: #FFF; background-color: #FFF;
border-radius: 6px; border-radius: 6px;
} }
@ -724,5 +848,9 @@ function cancel(val) {
overflow-y: scroll; overflow-y: scroll;
} }
} }
.flex-btn-icon {
display: flex;
align-items: center;
}
} }
</style> </style>

@ -44,14 +44,15 @@ defineExpose({
</script> </script>
<template> <template>
<div> <div class="removeMask">
<n-modal v-model:show="show" :mask-closable="false" transform-origin="center" style="position: fixed;right: 0;bottom: 0;"> <n-modal v-model:show="show" :show-mask="false" :mask-closable="false" transform-origin="center" style="position: fixed;right: 0;bottom: 0;">
<n-card :style="cardStyle" :bordered="false" size="huge" role="dialog" aria-modal="true" style="padding: 8px 8px 0 8px;"> <n-card :style="cardStyle" :bordered="false" size="huge" role="dialog" aria-modal="true" style="padding: 8px 8px 0 8px;">
<div class="wrapper"> <div class="wrapper">
<div class="title">查重进度</div> <div class="title">查重进度</div>
<div class="icon-list"> <div class="icon-list">
<svg-icon size="20" name="refresh" @click="refresh" style="margin-right: 16px;cursor: pointer;" /> <svg-icon size="20" name="refresh" @click="refresh" style="margin-right: 16px;cursor: pointer;" />
<svg-icon size="20" name="fold" style="margin-right: 16px;cursor: pointer;" @click="toggle"/> <svg-icon v-show="!isFold" size="20" name="down-line" style="margin-right: 16px;cursor: pointer;" @click="toggle"/>
<svg-icon v-show="isFold" size="20" name="top-line" style="margin-right: 16px;cursor: pointer;" @click="toggle"/>
<svg-icon size="20" name="close-none-border" @click="cancel" style="margin-right: 16px;cursor: pointer;"/> <svg-icon size="20" name="close-none-border" @click="cancel" style="margin-right: 16px;cursor: pointer;"/>
</div> </div>
</div> </div>
@ -89,4 +90,9 @@ defineExpose({
font-size: 14px; font-size: 14px;
line-height: 54px; line-height: 54px;
} }
.removeMask {
::v-deep(.n-modal-mask) {
display: none !important;
}
}
</style> </style>

@ -4,6 +4,13 @@ import { useRouter } from 'vue-router';
defineOptions({ name: 'ShortcutModal' }) defineOptions({ name: 'ShortcutModal' })
const props = defineProps({
id: {
type: String,
default: '',
},
});
const show = ref(false) const show = ref(false)
const router = useRouter() const router = useRouter()
@ -19,7 +26,15 @@ function showModal() {
function closeModal(path) { function closeModal(path) {
show.value = false show.value = false
router.push(path) if(props.id) {
router.push(path + '?id=' + props.id)
}else {
router.push(path)
}
}
function closeIconModal() {
show.value = false
} }
defineExpose({ defineExpose({
@ -28,8 +43,8 @@ defineExpose({
</script> </script>
<template> <template>
<div> <div class="finish-package-modal" v-if="show">
<n-modal v-model:show="show" :mask-closable="false" transform-origin="center" style="padding: 8px;"> <!-- <n-modal v-model:show="show" :mask-closable="false" transform-origin="center" style="padding: 8px;">
<n-card :style="cardStyle" :bordered="false" size="huge" role="dialog" aria-modal="true"> <n-card :style="cardStyle" :bordered="false" size="huge" role="dialog" aria-modal="true">
<div style="display: flex;"> <div style="display: flex;">
<div><svg-icon size="80" name="robot2" /></div> <div><svg-icon size="80" name="robot2" /></div>
@ -50,14 +65,56 @@ defineExpose({
</div> </div>
</template> </template>
</n-card> </n-card>
</n-modal> </n-modal> -->
<div class="header-box">
<div class="robot-box"><svg-icon size="80" name="robot2" /></div>
<div class="text-box">
<div class="msg-title">生成成功提示</div>
<div class="msg-text">AI已根据您的配置要求生成任务包</div>
</div>
<div class="close-box" @click="closeIconModal">
<svg-icon size="30" name="close-none-border" />
</div>
</div>
<div class="wrapper-footer">
<div @click="closeModal('/worksheet')">
<svg-icon size="80" name="copy-select" />
<div class="footer-text">
进入AI工单
</div>
</div>
<div @click="closeModal('/task')">
<svg-icon size="80" name="task-approval-select" />
<div class="footer-text">
进入任务审批
</div>
</div>
</div>
</div> </div>
</template> </template>
<style lang="less" scoped> <style lang="less" scoped>
.finish-package-modal {
position: fixed;
width: 400px;
height: 250px;
top: 50%;
left: 50%;
margin-left: -200px;
margin-top: -150px;
background: linear-gradient(to right, #fff, #f0f3ff, #e4e9ff);
opacity: 0.95;
border-radius: 5px;
z-index: 99999;
}
.wrapper-footer { .wrapper-footer {
margin-top: -20px; margin-top: 10px;
text-align: right; display: flex;
justify-content: space-around;
>div {
cursor: pointer;
}
} }
.msg-title { .msg-title {
@ -79,4 +136,37 @@ defineExpose({
line-height: 22px; line-height: 22px;
} }
.header-box {
margin-top: 20px;
display: flex;
justify-content: space-between;
}
.robot-box {
margin-left: 10px;
margin-right: 20px;
}
.msg-title {
color: #333333;
font-weight: bold;
}
.msg-text {
color: #666666;
}
.close-box {
margin-right: 20px;
cursor: pointer;
}
.text-box {
margin-right: auto;
}
.footer-text {
font-size: 18px;
color: #507AFD;
}
</style> </style>

@ -0,0 +1,82 @@
<script lang="ts" setup>
import { defineOptions, ref } from 'vue';
import { useRouter } from 'vue-router';
defineOptions({ name: 'ShortcutModal' })
const show = ref(false)
const router = useRouter()
const cardStyle = {
'width': '29vw',
'--n-padding-bottom': '10px',
'--n-padding-left': '10px',
}
function showModal() {
show.value = true
}
function closeModal(path) {
show.value = false
router.push(path)
}
defineExpose({
showModal,
})
</script>
<template>
<div>
<n-modal v-model:show="show" :mask-closable="false" transform-origin="center" style="padding: 8px;">
<n-card :style="cardStyle" :bordered="false" size="huge" role="dialog" aria-modal="true">
<div style="display: flex;">
<div><svg-icon size="80" name="robot2" /></div>
<div style="height: 130px;text-align: center;margin-left: 20px;">
<div class="msg-title">生成任务提示</div>
<div class="msg-text">AI已根据您的配置要求生成任务包</div>
</div>
</div>
<template #footer>
<div class="wrapper-footer">
<n-button type="info" @click="closeModal('/worksheet')">
进入AI工单
</n-button>
<n-button style="margin-left:10px;color: #666666;" @click="closeModal('/task')">
进入任务审批
</n-button>
</div>
</template>
</n-card>
</n-modal>
</div>
</template>
<style lang="less" scoped>
.wrapper-footer {
margin-top: -20px;
text-align: right;
}
.msg-title {
font-size: 16px;
font-family: PingFang SC, PingFang SC-Medium;
font-weight: Medium;
text-align: left;
color: #333333;
line-height: 24px;
margin: 12px 0;
}
.msg-text {
font-size: 14px;
font-family: PingFang SC, PingFang SC-Regular;
font-weight: Regular;
text-align: left;
color: #666666;
line-height: 22px;
}
</style>

@ -80,23 +80,23 @@ function afterLeave() {
<span :style="{ 'margin-left': '18px' }">基本信息</span> <span :style="{ 'margin-left': '18px' }">基本信息</span>
</div> </div>
</div> </div>
<n-form ref="formRef" :model="model" style="margin-top: 8px;" :rules="rules"> <n-form ref="formRef" :model="model" require-mark-placement="left" style="margin-top: 8px;" :rules="rules">
<n-form-item path="packagename" label="任务包名称"> <n-form-item class="wrapper-task-package-name" path="packagename" label="任务包名称">
<n-input v-model:value="model.packagename" max="12" @keydown.enter.prevent /> <n-input v-model:value="model.packagename" max="12" @keydown.enter.prevent />
</n-form-item> </n-form-item>
<n-form-item path="mark" :style="formItemStyle"> <n-form-item path="mark" :style="formItemStyle">
<n-checkbox v-model:checked="model.mark"> <n-checkbox v-model:checked="model.mark">
是否给重复图片加重复标识 是否给重复图片加重复标识
</n-checkbox> </n-checkbox>
</n-form-item> </n-form-item>
</n-form> </n-form>
</div> </div>
<template #footer> <template #footer>
<div class="wrapper-footer"> <div class="wrapper-footer">
<n-button type="info" @click="handleSumbit"> <n-button style="background-color: #507AFD !important;" type="info" @click="handleSumbit">
生成任务包 生成任务包
</n-button> </n-button>
<n-button secondary style="margin-left:15px" @click="closeModal"> <n-button secondary style="margin-left:15px;color: #333;background-color: #fff;border: 1px solid #CAD2DD;" @click="closeModal">
取消 取消
</n-button> </n-button>
</div> </div>
@ -113,12 +113,16 @@ function afterLeave() {
&-title { &-title {
font-weight: bold; font-weight: bold;
font-size: 16px; font-size: 16px;
color: #333;
} }
&-bar { &-bar {
background-color: #e8e8e8; background-color: #f8f8f8;
width: 100%; width: 100%;
margin-top: 20px; margin-top: 20px;
span {
color: #333;
}
} }
&-form { &-form {
@ -127,6 +131,12 @@ function afterLeave() {
margin-top: 20px; margin-top: 20px;
} }
&-task-package-name {
::v-deep(.n-form-item-label) {
color: #666;
}
}
&-new { &-new {
display: flex; display: flex;
width: 110px; width: 110px;

@ -1,6 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue'; import { ref } from 'vue';
import { useConfig } from '@/store/modules/asideConfig'
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'closeCallback', value: any), (e: 'closeCallback', value: any),
@ -11,8 +11,8 @@ const show = ref(false)
const stys = { const stys = {
'width': '424px', 'width': '424px',
'height': '192px', 'height': '232px',
'--n-padding-bottom': '0px', '--n-padding-bottom': '20px',
'--n-padding-left': '0px', '--n-padding-left': '0px',
'background': 'linear-gradient(132deg, rgba(255, 255, 255, 0.32) 21%, rgba(152, 172, 255, 0.14) 100%)', 'background': 'linear-gradient(132deg, rgba(255, 255, 255, 0.32) 21%, rgba(152, 172, 255, 0.14) 100%)',
'border-radius': '4px', 'border-radius': '4px',
@ -34,18 +34,26 @@ defineExpose({
closeModal, closeModal,
}) })
const configStore = useConfig()
const percent = ref(0);
configStore.$subscribe(() => {
percent.value = configStore.getTimeNum;
});
</script> </script>
<template> <template>
<n-modal v-model:show="show" :mask-closable="false" transform-origin="center"> <n-modal v-model:show="show" :mask-closable="false" :show-mask="false" transform-origin="center">
<n-card :style="stys" :bordered="false" role="dialog" aria-modal="true"> <n-card :style="stys" :bordered="false" role="dialog" aria-modal="true">
<svg-icon size="15" name="close" @click="closeModal" style="position:absolute; right:6px;top:6px;cursor: pointer;"/> <svg-icon size="15" name="close" @click="closeModal" style="position:absolute; right:6px;top:6px;cursor: pointer;"/>
<div class="wrapper"> <div class="wrapper">
<svg-icon size="90" name="robot2" /> <svg-icon size="90" name="robot2" />
<span style="margin-top: 24px;">正在查重中</span> <span style="margin-top: 24px;">正在查重中</span>
</div> </div>
<div style="padding: 0 20px;">
<n-progress type="line" :percentage="percent" :show-indicator="false"/>
</div>
</n-card> </n-card>
</n-modal> </n-modal>
</template> </template>

@ -13,10 +13,12 @@ nextTick,
onMounted, onMounted,
ref, ref,
unref, unref,
toRaw,
watch watch
} from "vue"; } from "vue";
import CustomFieldModalVue from "../modal/CustomFieldModal.vue"; import CustomFieldModalVue from "../modal/CustomFieldModal.vue";
import WorkSheetList from "./WorkSheetList.vue"; import WorkSheetList from "./WorkSheetList.vue";
defineOptions({ name: "AsideContent" }); defineOptions({ name: "AsideContent" });
const collapse = ref(false); const collapse = ref(false);

Loading…
Cancel
Save