feat: conflict 以test为准 保存 content文件

pull/26/head
lizijiee 1 year ago
commit bb087d9204

2
components.d.ts vendored

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

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

@ -5,6 +5,15 @@ settings:
excludeLinksFromLockfile: false
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':
specifier: ^1.2.0
version: 1.2.0(vue@3.3.10)
@ -17,6 +26,9 @@ dependencies:
date-fns:
specifier: ^2.30.0
version: 2.30.0
dayjs:
specifier: ^1.11.10
version: 1.11.10
esno:
specifier: ^0.16.3
version: 0.16.3
@ -41,6 +53,9 @@ dependencies:
naive-ui:
specifier: ^2.38.1
version: 2.38.1(vue@3.3.10)
patch-package:
specifier: ^8.0.0
version: 8.0.0
pinia:
specifier: ^2.0.33
version: 2.1.7(typescript@4.9.5)(vue@3.3.10)
@ -1333,6 +1348,10 @@ packages:
resolution: {integrity: sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==}
dev: true
/@types/node@14.14.45:
resolution: {integrity: sha512-DssMqTV9UnnoxDWu959sDLZzfvqCF0qDNRjaWeYSui9xkFe61kKo4l1TWNTQONpuXEm+gLMRvdlzvNHBamzmEw==}
dev: false
/@types/node@18.19.2:
resolution: {integrity: sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==}
dependencies:
@ -1503,6 +1522,23 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
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):
resolution: {integrity: sha512-DaUzYFr+2UGDG7VSSdShKa9sIWYBa1LL8KC0MNOf2H5LjcTPjob0x8LbkqXWmAtbANJCkpiQTj66UVcQkN2s3g==}
engines: {node: ^14.18.0 || >=16.0.0}
@ -1771,6 +1807,12 @@ packages:
'@xtuc/long': 4.2.2
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:
resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
dev: true
@ -1779,6 +1821,10 @@ packages:
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
dev: true
/@yarnpkg/lockfile@1.1.0:
resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==}
dev: false
/JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
@ -1987,6 +2033,11 @@ packages:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: false
/at-least-node@1.0.0:
resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
engines: {node: '>= 4.0.0'}
dev: false
/atob@2.1.2:
resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
engines: {node: '>= 4.5.0'}
@ -2087,7 +2138,6 @@ packages:
engines: {node: '>=8'}
dependencies:
fill-range: 7.0.1
dev: true
/browserslist@4.22.2:
resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
@ -2270,7 +2320,6 @@ packages:
/ci-info@3.9.0:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
dev: true
/class-utils@0.3.6:
resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
@ -2537,6 +2586,14 @@ packages:
shebang-command: 2.0.0
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:
resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==}
dependencies:
@ -2611,6 +2668,10 @@ packages:
'@babel/runtime': 7.23.5
dev: false
/dayjs@1.11.10:
resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
dev: false
/de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
dev: true
@ -3887,7 +3948,6 @@ packages:
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
dev: true
/finalhandler@1.1.2:
resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
@ -3920,6 +3980,12 @@ packages:
path-exists: 4.0.0
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:
resolution: {integrity: sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==}
dependencies:
@ -3995,6 +4061,16 @@ packages:
universalify: 2.0.1
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:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@ -4147,7 +4223,6 @@ packages:
/graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
dev: true
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
@ -4465,6 +4540,12 @@ packages:
is-data-descriptor: 1.0.1
dev: true
/is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
hasBin: true
dev: false
/is-extendable@0.1.1:
resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
engines: {node: '>=0.10.0'}
@ -4510,7 +4591,6 @@ packages:
/is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: true
/is-obj@2.0.0:
resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
@ -4573,10 +4653,21 @@ packages:
engines: {node: '>=0.10.0'}
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:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
dev: true
/isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
dev: false
/isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@ -4671,6 +4762,16 @@ packages:
/json-stable-stringify-without-jsonify@1.0.1:
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:
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
hasBin: true
@ -4698,7 +4799,10 @@ packages:
universalify: 2.0.1
optionalDependencies:
graceful-fs: 4.2.11
dev: true
/jsonify@0.0.1:
resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==}
dev: false
/jsonparse@1.3.1:
resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
@ -4734,6 +4838,12 @@ packages:
engines: {node: '>=0.10.0'}
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:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
@ -5100,7 +5210,6 @@ packages:
dependencies:
braces: 3.0.2
picomatch: 2.3.1
dev: true
/mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
@ -5172,7 +5281,6 @@ packages:
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true
/minipass@4.2.8:
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
@ -5453,6 +5561,14 @@ packages:
mimic-fn: 4.0.0
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:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'}
@ -5464,6 +5580,11 @@ packages:
prelude-ls: 1.2.1
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:
resolution: {integrity: sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==}
dependencies:
@ -5570,6 +5691,28 @@ packages:
engines: {node: '>=0.10.0'}
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:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
dev: true
@ -5634,7 +5777,6 @@ packages:
/picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: true
/pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
@ -6072,6 +6214,13 @@ packages:
resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
dev: true
/rimraf@2.7.1:
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
hasBin: true
dependencies:
glob: 7.2.3
dev: false
/rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
hasBin: true
@ -6243,6 +6392,11 @@ packages:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
dev: true
/slash@2.0.0:
resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
engines: {node: '>=6'}
dev: false
/slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
@ -6688,6 +6842,13 @@ packages:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
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:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
@ -6712,7 +6873,6 @@ packages:
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
dev: true
/to-regex@3.0.2:
resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
@ -6827,7 +6987,6 @@ packages:
/universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
dev: true
/unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
@ -7377,7 +7536,6 @@ packages:
/yaml@2.3.4:
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
engines: {node: '>= 14'}
dev: true
/yargs-parser@20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}

@ -263,3 +263,17 @@ export async function getPictureList(params: any): Promise<any> {
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">
import { useDialog, useMessage } from "naive-ui";
import {
defineComponent,
inject,
onMounted,
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";
import { msgPolling } from "@/api/message/message";
import { getImgUrl } from "@/utils/urlUtils";
import { useUser } from "@/store/modules/user";
import { useTaskStore } from "@/store/modules/task";
import { useDialog, useMessage } from 'naive-ui'
import { defineComponent, inject, onMounted, 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'
import { msgPolling } from '@/api/message/message'
import { getImgUrl } from '@/utils/urlUtils'
import { useUser } from '@/store/modules/user'
import { useTaskStore } from '@/store/modules/task'
import defaultAvatar from '@/assets/icons/avatar.svg';
const taskStore = useTaskStore();
export default defineComponent({
@ -171,6 +163,8 @@ export default defineComponent({
mousetrap.bind("m m", searchHandler);
});
const defaultAvatarSrc = ref(defaultAvatar);
return {
...toRefs(state),
iconList,
@ -190,7 +184,8 @@ export default defineComponent({
getMessage,
handleDragOver,
handleDragLeave,
};
defaultAvatarSrc,
}
},
});
</script>
@ -231,7 +226,8 @@ export default defineComponent({
</div>
<!-- 个人中心 -->
<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>
<!-- 设置 -->
<UserSettings @logout="doLogout" />

@ -9,6 +9,9 @@ export interface ConfigState {
systemConfig: AsideConfig | null
customConfig: string[] | null
asideValue: any
searchValue: string
isAllowDownload: boolean
timeNum: number
}
export const useAsideConfigStore = defineStore({
@ -17,6 +20,9 @@ export const useAsideConfigStore = defineStore({
systemConfig: null,
customConfig: null,
asideValue: null,
searchValue: "",
isAllowDownload: true,
timeNum: 0,
}),
getters: {
getConfig(): AsideConfig | null {
@ -28,6 +34,15 @@ export const useAsideConfigStore = defineStore({
getAsideValue(): any {
return this.asideValue
},
getSearchValue(): any {
return this.searchValue
},
getIsAllowDownload(): any {
return this.isAllowDownload
},
getTimeNum(): any {
return this.timeNum
},
},
actions: {
setConfig(config: AsideConfig) {
@ -36,6 +51,19 @@ export const useAsideConfigStore = defineStore({
setAsideValue(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() {
const response = await getConfig()

@ -11,6 +11,7 @@ import type { AsideEntity } from '@/config/aside'
import { asideMap } from '@/config/aside'
import type { AsideConfig } from '/#/api'
import emitter from '@/utils/mitt'
import { getFilterList } from '@/api/home/main'
const configStore = useConfig()
@ -30,6 +31,7 @@ Object.keys(asideMap).forEach((key) => {
const filterModalRef = ref(null)
const newFilterModalRef = ref(null)
const customModalRef = ref(null)
const customObjRef = ref<any>(null) //
function showModal(modalRef: any) {
const modal = unref(modalRef)! as any
@ -86,16 +88,32 @@ configStore.$subscribe(() => {
if (config == null || customConfig == null)
return
const showKeys = [...customConfig].filter(key => !asideMap[key].isDefaultFilter)
const defaultKeys = Object.keys(asideMap).filter(key => asideMap[key].isDefaultFilter)
// console.log("config", config, "customConfig", customConfig);
/* rao
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)
*/
const showKeys = [...customConfig];
Object.keys(config).forEach((key) => {
if (key.startsWith('iz') && asideMap[key] !== undefined)
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 { render } = asideMap[key]
@ -112,7 +130,7 @@ configStore.$subscribe(() => {
return acc
}
}, [])
// console.log("items", items);
showItems.value = items
})
@ -134,9 +152,23 @@ function scrollHandler(key: string) {
element?.scrollIntoView(true)
}
//
function filterHandler(searchId: string) {
emitter.emit('filter', searchId)
// ->
async function filterHandler(searchId: string) {
// 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) {

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

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

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

@ -305,7 +305,7 @@ onMounted(() => {
:bordered="false"
>
<div class="input_wrap">
<n-input placeholder="关键词搜索" @input="leftInputHandler">
<n-input placeholder="搜索关键词" @input="leftInputHandler">
<template #suffix>
<SvgIcon size="14px" name="magnifying-1-color999" />
</template>
@ -313,7 +313,7 @@ onMounted(() => {
<n-scrollbar style="max-height: 500px;border: 1px solid #cad2dd;border-radius: 2px;">
<div class="draggable-ul">
<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
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>
</template>
<div class="input_wrap">
<n-input placeholder="关键词搜索" @input="rightInputHandler">
<n-input placeholder="搜索关键词" @input="rightInputHandler">
<template #suffix>
<SvgIcon size="14px" name="magnifying-1-color999" />
</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">
<SvgIcon name="drag" size="24" />
<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)" />
</div>
</VueDraggable>
@ -386,7 +386,7 @@ onMounted(() => {
}
&-bar {
background-color: #f8f8f8;
background-color: #f8f8f8 !important;
width: calc(100% + 12px);
margin-top: 20px;
color: #333333;
@ -424,6 +424,10 @@ onMounted(() => {
.dragcardStyle {
--n-padding-bottom: 0px !important;
--n-padding-left: 0px !important;
::v-deep(.n-card__content) {
padding-left: 0 !important;
padding-right: 0 !important;
}
}
.cardstyle {
@ -431,6 +435,7 @@ onMounted(() => {
height: 800px;
--n-padding-bottom: 20px;
--n-padding-left: 24px;
// background-color: #f8f8f8 !important;
}
.textbtnStyle {
@ -471,6 +476,7 @@ onMounted(() => {
::v-deep(.n-card > .n-card-header .n-card-header__main){
font-weight: lighter !important;
font-size: 14px;
color: #333333;
}
::v-deep(.n-scrollbar){
border-left: 1px solid #cad2dd !important;

@ -8,13 +8,21 @@ import { getViewportOffset } from '@/utils/domUtils'
import { hideDownload } from '@/utils/image'
import emitter from '@/utils/mitt'
import { getImgUrl } from '@/utils/urlUtils'
import {
EllipsisHorizontal, EyeOutline as EyeOutlineIcon
} from '@vicons/ionicons5'
import {
Download as DownloadIcon, Upload as UploadIcon
} from '@vicons/tabler'
import { Icon } from '@vicons/utils'
import { useInfiniteScroll } from '@vueuse/core'
import dayjs from 'dayjs'
import imagesloaded from 'imagesloaded'
import { cloneDeep, debounce } from 'lodash-es'
import Masonry from 'masonry-layout'
import { useMessage } from 'naive-ui'
import { computed, nextTick, onMounted, onUnmounted, onUpdated, reactive, ref, unref, watch } from 'vue'
import { NIcon, useMessage } from 'naive-ui'
import type { Component } from 'vue'
import { computed, h, nextTick, onMounted, onUnmounted, onUpdated, reactive, ref, unref, watch } from 'vue'
import CheckingTaskModal from './modal/CheckingTaskModal.vue'
import FinishPackageModal from './modal/FinishPackageModal.vue'
import GeneratePackageModal from './modal/GeneratePackageModal.vue'
@ -129,6 +137,26 @@ const viewLabel = computed(() => {
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[]>([])
async function featchList() {
@ -140,7 +168,7 @@ async function featchList() {
}
pagination.pageNo += 1
const searchValue = configStore.getSearchValue // rao
const asideParams = unref(configStore.getAsideValue)
const params = filterId ? { userSearchId: filterId } : asideParams
let result = {
@ -148,10 +176,17 @@ async function featchList() {
data: [],
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) {
result = await queryPageListByCheckNo({ ...pagination, ...contentParams, ...params, ...sortBy, checkDuplicateNo: checkDuplicateNo.value })
result = await queryPageListByCheckNo({ ...pagination, ...contentParams, ...params, ...sortObj, checkDuplicateNo: checkDuplicateNo.value, upUserName: searchValue })
} else {
result = await getPictureList({ ...pagination, ...contentParams, ...params, ...sortBy })
result = await getPictureList({ ...pagination, ...contentParams, ...params, ...sortObj, upUserName: searchValue })
}
const { data, pageCount, total } = result
totalCount.value = total
@ -215,7 +250,7 @@ async function oneCheck() {
if (res.code === "OK") {
checkDuplicateNo.value = res.data.checkDuplicateNo
checkTaskStatus.value = res.data.status
tasksLoadingModal.showModal()
tasksLoadingModal.closeModal()
} else {
message.error(res.message || '查重失败')
}
@ -233,9 +268,20 @@ async function showAddPackage() {
//,
async function tasksLoadingCloseCallback() {
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) {
const params = {
name: settingParam.packagename,
@ -247,6 +293,7 @@ async function commitHandler(settingParam) {
createPackage(params).then((res) => {
if (res.code === "OK") {
message.success(res.data);
packageIdRef.value = res.data.id;
modal.closeModal()
finishModal.showModal()
//
@ -325,6 +372,7 @@ function getAvatar(url: string): string {
function sortHandler(orderby: "pictureResult" | "fromuptime") {
sortBy.orderbyvalue = orderby;
sortBy.orderbyname = sortBy.orderbyname === "asc" ? "desc" : "asc";
refreshHandler()
}
async function downloadImage(item) {
@ -374,10 +422,12 @@ function previewHandler(index: number, event: MouseEvent) {
(imageRef.value?.[index] as any).mergedOnClick();
}
const timer = ref();
/**
* 检查查重状态
*/
function refresh(val) {
function refresh(val?: any) {
// delete asideVal.izsimilarity
const checkingTaskModal = checkingTaskModalRef.value as any
if (checkDuplicateNo.value) {
@ -389,16 +439,40 @@ function refresh(val) {
// modal.showModal()
// 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()
isRefresh.value = false
message.success('任务执行完毕,正在刷新数据...');
if(timer.value) {
clearInterval(timer.value);
}
reset()
loadMore()
// configStore.setTimeNum(0);
} else if (checkTaskStatus.value === 1) {
// checkingTaskModal.showModal()
return
const tasksLoadingModal = queryRepeatedTasksModalRef.value as any
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 +494,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>
<template>
@ -429,10 +529,23 @@ function cancel(val) {
<SvgIcon size="32" name="magnifying" />
<span class="font">AI一键查重</span>
</div>
<SvgIcon v-show="checkTaskStatus !== 2" style="cursor: pointer;" size="105" name="yijianchachong"
@click="oneCheck" />
<SvgIcon v-show="checkTaskStatus === 2" style="cursor: pointer;" size="105" name="shengchengrenwubao"
@click="showAddPackage" />
<div class="flex-btn-icon">
<SvgIcon v-show="checkTaskStatus !== 2" style="cursor: pointer;" size="105" name="yijianchachong"
@click="oneCheck" />
<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 class="wrapper-content">
<div style="display: flex;justify-content: space-between;">
@ -459,7 +572,7 @@ function cancel(val) {
<SvgIcon style="margin-left: 8px;" name="sort" size="12" />
</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>
</div>
<n-spin :show="loading">
@ -481,16 +594,23 @@ function cancel(val) {
{{ `${item.similar}%` }}
</div>
</div>
<div class="glass">
<div class="glass" v-if="isAllowDownload">
<SvgIcon size="16" name="download" style="margin-top: -6px;cursor: pointer;"
@click="downloadImage(item)" />
</div>
<div class="info">
<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)">
<SvgIcon size="13" name="magnifying-2" style="cursor: pointer;color:#898481;" />
<SvgIcon size="13" name="magnifying-2" style="cursor: pointer;color:#898481" />
</div>
</div>
<div class="left">
@ -512,7 +632,7 @@ function cancel(val) {
<GeneratePackageModal ref="generateModalRef" />
<QueryRepeatedTasksModal ref="queryRepeatedTasksModalRef" @closeCallback="tasksLoadingCloseCallback"/>
<LoginSuccessModal ref="LoginSuccessModalRef" />
<FinishPackageModal ref="finishPackageModal" />
<FinishPackageModal ref="finishPackageModal" :id="packageIdRef"/>
<CheckingTaskModal ref="checkingTaskModalRef" @refresh="refresh" @cancel="cancel" />
</div>
</template>
@ -672,11 +792,10 @@ function cancel(val) {
.icon-wrap {
width: 22px;
height: 22px;
line-height: 22px;
text-align: center;
background-color: #FFF;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
}
}
@ -727,5 +846,9 @@ function cancel(val) {
overflow-y: scroll;
}
}
.flex-btn-icon {
display: flex;
align-items: center;
}
}
</style>
</style>

@ -44,14 +44,15 @@ defineExpose({
</script>
<template>
<div>
<n-modal v-model:show="show" :mask-closable="false" transform-origin="center" style="position: fixed;right: 0;bottom: 0;">
<div class="removeMask">
<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;">
<div class="wrapper">
<div class="title">查重进度</div>
<div class="icon-list">
<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;"/>
</div>
</div>
@ -89,4 +90,9 @@ defineExpose({
font-size: 14px;
line-height: 54px;
}
.removeMask {
::v-deep(.n-modal-mask) {
display: none !important;
}
}
</style>

@ -4,6 +4,13 @@ import { useRouter } from 'vue-router';
defineOptions({ name: 'ShortcutModal' })
const props = defineProps({
id: {
type: String,
default: '',
},
});
const show = ref(false)
const router = useRouter()
@ -19,7 +26,15 @@ function showModal() {
function closeModal(path) {
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({
@ -28,8 +43,8 @@ defineExpose({
</script>
<template>
<div>
<n-modal v-model:show="show" :mask-closable="false" transform-origin="center" style="padding: 8px;">
<div class="finish-package-modal" v-if="show">
<!-- <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>
@ -50,14 +65,56 @@ defineExpose({
</div>
</template>
</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>
</template>
<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 {
margin-top: -20px;
text-align: right;
margin-top: 10px;
display: flex;
justify-content: space-around;
>div {
cursor: pointer;
}
}
.msg-title {
@ -79,4 +136,37 @@ defineExpose({
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>

@ -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>
</div>
</div>
<n-form ref="formRef" :model="model" style="margin-top: 8px;" :rules="rules">
<n-form-item path="packagename" label="任务包名称">
<n-form ref="formRef" :model="model" require-mark-placement="left" style="margin-top: 8px;" :rules="rules">
<n-form-item class="wrapper-task-package-name" path="packagename" label="任务包名称">
<n-input v-model:value="model.packagename" max="12" @keydown.enter.prevent />
</n-form-item>
<n-form-item path="mark" :style="formItemStyle">
<n-checkbox v-model:checked="model.mark">
是否给重复图片加重复标识
是否给重复图片加重复标识
</n-checkbox>
</n-form-item>
</n-form>
</div>
<template #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 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>
</div>
@ -113,12 +113,16 @@ function afterLeave() {
&-title {
font-weight: bold;
font-size: 16px;
color: #333;
}
&-bar {
background-color: #e8e8e8;
background-color: #f8f8f8;
width: 100%;
margin-top: 20px;
span {
color: #333;
}
}
&-form {
@ -127,6 +131,12 @@ function afterLeave() {
margin-top: 20px;
}
&-task-package-name {
::v-deep(.n-form-item-label) {
color: #666;
}
}
&-new {
display: flex;
width: 110px;

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

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

Loading…
Cancel
Save