perf(services): 优化请求接口以及消息提示

更新vue版本修复_ctx报警告问题
更新naive-ui版本修复该版本已知问题
This commit is contained in:
nongyehong 2024-05-05 01:38:12 +08:00
parent e17cb7c24a
commit 0355f976b8
22 changed files with 318 additions and 447 deletions

View File

@ -42,13 +42,14 @@
"axios": "^1.6.8", "axios": "^1.6.8",
"colorthief": "^2.4.0", "colorthief": "^2.4.0",
"dayjs": "^1.11.10", "dayjs": "^1.11.10",
"grapheme-splitter": "^1.0.4",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"mitt": "^3.0.1", "mitt": "^3.0.1",
"naive-ui": "^2.38.1", "naive-ui": "^2.38.2",
"pinia": "^2.1.7", "pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1", "pinia-plugin-persistedstate": "^3.2.1",
"pinia-shared-state": "^0.5.1", "pinia-shared-state": "^0.5.1",
"vue": "^3.4.23", "vue": "^3.4.26",
"vue-draggable-plus": "^0.4.0", "vue-draggable-plus": "^0.4.0",
"vue-router": "^4.3.0" "vue-router": "^4.3.0"
}, },

View File

@ -20,6 +20,9 @@ importers:
dayjs: dayjs:
specifier: ^1.11.10 specifier: ^1.11.10
version: 1.11.10 version: 1.11.10
grapheme-splitter:
specifier: ^1.0.4
version: 1.0.4
lodash-es: lodash-es:
specifier: ^4.17.21 specifier: ^4.17.21
version: 4.17.21 version: 4.17.21
@ -27,26 +30,26 @@ importers:
specifier: ^3.0.1 specifier: ^3.0.1
version: 3.0.1 version: 3.0.1
naive-ui: naive-ui:
specifier: ^2.38.1 specifier: ^2.38.2
version: 2.38.1(vue@3.4.23(typescript@5.4.3)) version: 2.38.2(vue@3.4.26(typescript@5.4.3))
pinia: pinia:
specifier: ^2.1.7 specifier: ^2.1.7
version: 2.1.7(typescript@5.4.3)(vue@3.4.23(typescript@5.4.3)) version: 2.1.7(typescript@5.4.3)(vue@3.4.26(typescript@5.4.3))
pinia-plugin-persistedstate: pinia-plugin-persistedstate:
specifier: ^3.2.1 specifier: ^3.2.1
version: 3.2.1(pinia@2.1.7(typescript@5.4.3)(vue@3.4.23(typescript@5.4.3))) version: 3.2.1(pinia@2.1.7(typescript@5.4.3)(vue@3.4.26(typescript@5.4.3)))
pinia-shared-state: pinia-shared-state:
specifier: ^0.5.1 specifier: ^0.5.1
version: 0.5.1(pinia@2.1.7(typescript@5.4.3)(vue@3.4.23(typescript@5.4.3)))(vue@3.4.23(typescript@5.4.3)) version: 0.5.1(pinia@2.1.7(typescript@5.4.3)(vue@3.4.26(typescript@5.4.3)))(vue@3.4.26(typescript@5.4.3))
vue: vue:
specifier: ^3.4.23 specifier: ^3.4.26
version: 3.4.23(typescript@5.4.3) version: 3.4.26(typescript@5.4.3)
vue-draggable-plus: vue-draggable-plus:
specifier: ^0.4.0 specifier: ^0.4.0
version: 0.4.0(@types/sortablejs@1.15.8) version: 0.4.0(@types/sortablejs@1.15.8)
vue-router: vue-router:
specifier: ^4.3.0 specifier: ^4.3.0
version: 4.3.0(vue@3.4.23(typescript@5.4.3)) version: 4.3.0(vue@3.4.26(typescript@5.4.3))
devDependencies: devDependencies:
'@babel/eslint-parser': '@babel/eslint-parser':
specifier: ^7.23.3 specifier: ^7.23.3
@ -92,13 +95,13 @@ importers:
version: 0.59.4(rollup@4.14.3)(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1)) version: 0.59.4(rollup@4.14.3)(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))
'@vitejs/plugin-vue': '@vitejs/plugin-vue':
specifier: ^5.0.4 specifier: ^5.0.4
version: 5.0.4(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))(vue@3.4.23(typescript@5.4.3)) version: 5.0.4(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))(vue@3.4.26(typescript@5.4.3))
'@vitejs/plugin-vue-jsx': '@vitejs/plugin-vue-jsx':
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))(vue@3.4.23(typescript@5.4.3)) version: 3.1.0(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))(vue@3.4.26(typescript@5.4.3))
'@vueuse/core': '@vueuse/core':
specifier: ^10.8.0 specifier: ^10.8.0
version: 10.8.0(vue@3.4.23(typescript@5.4.3)) version: 10.8.0(vue@3.4.26(typescript@5.4.3))
commitizen: commitizen:
specifier: ^4.3.0 specifier: ^4.3.0
version: 4.3.0(@types/node@20.11.7)(typescript@5.4.3) version: 4.3.0(@types/node@20.11.7)(typescript@5.4.3)
@ -149,10 +152,10 @@ importers:
version: 5.4.3 version: 5.4.3
unplugin-auto-import: unplugin-auto-import:
specifier: ^0.17.2 specifier: ^0.17.2
version: 0.17.5(@vueuse/core@10.8.0(vue@3.4.23(typescript@5.4.3)))(rollup@4.14.3) version: 0.17.5(@vueuse/core@10.8.0(vue@3.4.26(typescript@5.4.3)))(rollup@4.14.3)
unplugin-vue-components: unplugin-vue-components:
specifier: ^0.26.0 specifier: ^0.26.0
version: 0.26.0(@babel/parser@7.24.4)(rollup@4.14.3)(vue@3.4.23(typescript@5.4.3)) version: 0.26.0(@babel/parser@7.24.5)(rollup@4.14.3)(vue@3.4.26(typescript@5.4.3))
vite: vite:
specifier: 5.2.9 specifier: 5.2.9
version: 5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1) version: 5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1)
@ -270,10 +273,18 @@ packages:
resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.24.1':
resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.22.20': '@babel/helper-validator-identifier@7.22.20':
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.24.5':
resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-option@7.23.5': '@babel/helper-validator-option@7.23.5':
resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
@ -296,8 +307,8 @@ packages:
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
hasBin: true hasBin: true
'@babel/parser@7.24.4': '@babel/parser@7.24.5':
resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
hasBin: true hasBin: true
@ -343,6 +354,10 @@ packages:
resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
'@babel/types@7.24.5':
resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
engines: {node: '>=6.9.0'}
'@commitlint/cli@19.2.2': '@commitlint/cli@19.2.2':
resolution: {integrity: sha512-P8cbOHfg2PQRzfICLSrzUVOCVMqjEZ8Hlth6mtJ4yOEjT47Q5PbIGymgX3rLVylNw+3IAT2Djn9IJ2wHbXFzBg==} resolution: {integrity: sha512-P8cbOHfg2PQRzfICLSrzUVOCVMqjEZ8Hlth6mtJ4yOEjT47Q5PbIGymgX3rLVylNw+3IAT2Djn9IJ2wHbXFzBg==}
engines: {node: '>=v18'} engines: {node: '>=v18'}
@ -1071,26 +1086,26 @@ packages:
'@vue/compiler-core@3.4.21': '@vue/compiler-core@3.4.21':
resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==} resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==}
'@vue/compiler-core@3.4.23': '@vue/compiler-core@3.4.26':
resolution: {integrity: sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==} resolution: {integrity: sha512-N9Vil6Hvw7NaiyFUFBPXrAyETIGlQ8KcFMkyk6hW1Cl6NvoqvP+Y8p1Eqvx+UdqsnrnI9+HMUEJegzia3mhXmQ==}
'@vue/compiler-dom@3.4.21': '@vue/compiler-dom@3.4.21':
resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==} resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==}
'@vue/compiler-dom@3.4.23': '@vue/compiler-dom@3.4.26':
resolution: {integrity: sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==} resolution: {integrity: sha512-4CWbR5vR9fMg23YqFOhr6t6WB1Fjt62d6xdFPyj8pxrYub7d+OgZaObMsoxaF9yBUHPMiPFK303v61PwAuGvZA==}
'@vue/compiler-sfc@3.4.21': '@vue/compiler-sfc@3.4.21':
resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==} resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==}
'@vue/compiler-sfc@3.4.23': '@vue/compiler-sfc@3.4.26':
resolution: {integrity: sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==} resolution: {integrity: sha512-It1dp+FAOCgluYSVYlDn5DtZBxk1NCiJJfu2mlQqa/b+k8GL6NG/3/zRbJnHdhV2VhxFghaDq5L4K+1dakW6cw==}
'@vue/compiler-ssr@3.4.21': '@vue/compiler-ssr@3.4.21':
resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==} resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==}
'@vue/compiler-ssr@3.4.23': '@vue/compiler-ssr@3.4.26':
resolution: {integrity: sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==} resolution: {integrity: sha512-FNwLfk7LlEPRY/g+nw2VqiDKcnDTVdCfBREekF8X74cPLiWHUX6oldktf/Vx28yh4STNy7t+/yuLoMBBF7YDiQ==}
'@vue/devtools-api@6.5.1': '@vue/devtools-api@6.5.1':
resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
@ -1103,25 +1118,25 @@ packages:
typescript: typescript:
optional: true optional: true
'@vue/reactivity@3.4.23': '@vue/reactivity@3.4.26':
resolution: {integrity: sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==} resolution: {integrity: sha512-E/ynEAu/pw0yotJeLdvZEsp5Olmxt+9/WqzvKff0gE67tw73gmbx6tRkiagE/eH0UCubzSlGRebCbidB1CpqZQ==}
'@vue/runtime-core@3.4.23': '@vue/runtime-core@3.4.26':
resolution: {integrity: sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==} resolution: {integrity: sha512-AFJDLpZvhT4ujUgZSIL9pdNcO23qVFh7zWCsNdGQBw8ecLNxOOnPcK9wTTIYCmBJnuPHpukOwo62a2PPivihqw==}
'@vue/runtime-dom@3.4.23': '@vue/runtime-dom@3.4.26':
resolution: {integrity: sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==} resolution: {integrity: sha512-UftYA2hUXR2UOZD/Fc3IndZuCOOJgFxJsWOxDkhfVcwLbsfh2CdXE2tG4jWxBZuDAs9J9PzRTUFt1PgydEtItw==}
'@vue/server-renderer@3.4.23': '@vue/server-renderer@3.4.26':
resolution: {integrity: sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==} resolution: {integrity: sha512-xoGAqSjYDPGAeRWxeoYwqJFD/gw7mpgzOvSxEmjWaFO2rE6qpbD1PC172YRpvKhrihkyHJkNDADFXTfCyVGhKw==}
peerDependencies: peerDependencies:
vue: 3.4.23 vue: 3.4.26
'@vue/shared@3.4.21': '@vue/shared@3.4.21':
resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==} resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==}
'@vue/shared@3.4.23': '@vue/shared@3.4.26':
resolution: {integrity: sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg==} resolution: {integrity: sha512-Fg4zwR0GNnjzodMt3KRy2AWGMKQXByl56+4HjN87soxLNU9P5xcJkstAlIeEF3cU6UYOzmJl1tV0dVPGIljCnQ==}
'@vueuse/core@10.8.0': '@vueuse/core@10.8.0':
resolution: {integrity: sha512-G9Ok9fjx10TkNIPn8V1dJmK1NcdJCtYmDRyYiTMUyJ1p0Tywc1zmOoCQ2xhHYyz8ULBU4KjIJQ9n+Lrty74iVw==} resolution: {integrity: sha512-G9Ok9fjx10TkNIPn8V1dJmK1NcdJCtYmDRyYiTMUyJ1p0Tywc1zmOoCQ2xhHYyz8ULBU4KjIJQ9n+Lrty74iVw==}
@ -2016,6 +2031,9 @@ 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==}
grapheme-splitter@1.0.4:
resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
graphemer@1.4.0: graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
@ -2536,8 +2554,8 @@ packages:
mute-stream@0.0.8: mute-stream@0.0.8:
resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
naive-ui@2.38.1: naive-ui@2.38.2:
resolution: {integrity: sha512-AnU1FQ7K/CbhguAX++V4kCFjk7h7RvWt4nvZPRjORMpq+fUIlzD+EcQ5Cv1VqDloNF8+eMv4Akc2Ogacc9S+5A==} resolution: {integrity: sha512-WhZ+6DW61aYSmFyfH7evcSGFmd2xR68Yq1mNRrVdJwBhZsnNdAUsMN9IeNCVEPMCND/jzYZghkStoNoR5Xa09g==}
peerDependencies: peerDependencies:
vue: ^3.0.0 vue: ^3.0.0
@ -3390,8 +3408,8 @@ packages:
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
vue@3.4.23: vue@3.4.26:
resolution: {integrity: sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==} resolution: {integrity: sha512-bUIq/p+VB+0xrJubaemrfhk1/FiW9iX+pDV+62I/XJ6EkspAO9/DXEjbDFoe8pIfOZBqfk45i9BMc41ptP/uRg==}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
peerDependenciesMeta: peerDependenciesMeta:
@ -3619,8 +3637,12 @@ snapshots:
'@babel/helper-string-parser@7.23.4': {} '@babel/helper-string-parser@7.23.4': {}
'@babel/helper-string-parser@7.24.1': {}
'@babel/helper-validator-identifier@7.22.20': {} '@babel/helper-validator-identifier@7.22.20': {}
'@babel/helper-validator-identifier@7.24.5': {}
'@babel/helper-validator-option@7.23.5': {} '@babel/helper-validator-option@7.23.5': {}
'@babel/helpers@7.23.9': '@babel/helpers@7.23.9':
@ -3645,9 +3667,9 @@ snapshots:
dependencies: dependencies:
'@babel/types': 7.24.0 '@babel/types': 7.24.0
'@babel/parser@7.24.4': '@babel/parser@7.24.5':
dependencies: dependencies:
'@babel/types': 7.24.0 '@babel/types': 7.24.5
'@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9)': '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9)':
dependencies: dependencies:
@ -3708,6 +3730,12 @@ snapshots:
'@babel/helper-validator-identifier': 7.22.20 '@babel/helper-validator-identifier': 7.22.20
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
'@babel/types@7.24.5':
dependencies:
'@babel/helper-string-parser': 7.24.1
'@babel/helper-validator-identifier': 7.24.5
to-fast-properties: 2.0.0
'@commitlint/cli@19.2.2(@types/node@20.11.7)(typescript@5.4.3)': '@commitlint/cli@19.2.2(@types/node@20.11.7)(typescript@5.4.3)':
dependencies: dependencies:
'@commitlint/format': 19.0.3 '@commitlint/format': 19.0.3
@ -3823,9 +3851,9 @@ snapshots:
dependencies: dependencies:
css-render: 0.15.12 css-render: 0.15.12
'@css-render/vue3-ssr@0.15.12(vue@3.4.23(typescript@5.4.3))': '@css-render/vue3-ssr@0.15.12(vue@3.4.26(typescript@5.4.3))':
dependencies: dependencies:
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
'@emotion/hash@0.8.0': {} '@emotion/hash@0.8.0': {}
@ -4330,20 +4358,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
'@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))(vue@3.4.23(typescript@5.4.3))': '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))(vue@3.4.26(typescript@5.4.3))':
dependencies: dependencies:
'@babel/core': 7.23.9 '@babel/core': 7.23.9
'@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9)
'@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.23.9) '@vue/babel-plugin-jsx': 1.2.1(@babel/core@7.23.9)
vite: 5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1) vite: 5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1)
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@vitejs/plugin-vue@5.0.4(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))(vue@3.4.23(typescript@5.4.3))': '@vitejs/plugin-vue@5.0.4(vite@5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1))(vue@3.4.26(typescript@5.4.3))':
dependencies: dependencies:
vite: 5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1) vite: 5.2.9(@types/node@20.11.7)(sass@1.71.1)(terser@5.28.1)
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
'@volar/language-core@2.1.2': '@volar/language-core@2.1.2':
dependencies: dependencies:
@ -4395,10 +4423,10 @@ snapshots:
estree-walker: 2.0.2 estree-walker: 2.0.2
source-map-js: 1.2.0 source-map-js: 1.2.0
'@vue/compiler-core@3.4.23': '@vue/compiler-core@3.4.26':
dependencies: dependencies:
'@babel/parser': 7.24.4 '@babel/parser': 7.24.5
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
entities: 4.5.0 entities: 4.5.0
estree-walker: 2.0.2 estree-walker: 2.0.2
source-map-js: 1.2.0 source-map-js: 1.2.0
@ -4408,10 +4436,10 @@ snapshots:
'@vue/compiler-core': 3.4.21 '@vue/compiler-core': 3.4.21
'@vue/shared': 3.4.21 '@vue/shared': 3.4.21
'@vue/compiler-dom@3.4.23': '@vue/compiler-dom@3.4.26':
dependencies: dependencies:
'@vue/compiler-core': 3.4.23 '@vue/compiler-core': 3.4.26
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
'@vue/compiler-sfc@3.4.21': '@vue/compiler-sfc@3.4.21':
dependencies: dependencies:
@ -4425,13 +4453,13 @@ snapshots:
postcss: 8.4.35 postcss: 8.4.35
source-map-js: 1.2.0 source-map-js: 1.2.0
'@vue/compiler-sfc@3.4.23': '@vue/compiler-sfc@3.4.26':
dependencies: dependencies:
'@babel/parser': 7.24.4 '@babel/parser': 7.24.5
'@vue/compiler-core': 3.4.23 '@vue/compiler-core': 3.4.26
'@vue/compiler-dom': 3.4.23 '@vue/compiler-dom': 3.4.26
'@vue/compiler-ssr': 3.4.23 '@vue/compiler-ssr': 3.4.26
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
estree-walker: 2.0.2 estree-walker: 2.0.2
magic-string: 0.30.10 magic-string: 0.30.10
postcss: 8.4.38 postcss: 8.4.38
@ -4442,10 +4470,10 @@ snapshots:
'@vue/compiler-dom': 3.4.21 '@vue/compiler-dom': 3.4.21
'@vue/shared': 3.4.21 '@vue/shared': 3.4.21
'@vue/compiler-ssr@3.4.23': '@vue/compiler-ssr@3.4.26':
dependencies: dependencies:
'@vue/compiler-dom': 3.4.23 '@vue/compiler-dom': 3.4.26
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
'@vue/devtools-api@6.5.1': {} '@vue/devtools-api@6.5.1': {}
@ -4461,46 +4489,46 @@ snapshots:
optionalDependencies: optionalDependencies:
typescript: 5.4.3 typescript: 5.4.3
'@vue/reactivity@3.4.23': '@vue/reactivity@3.4.26':
dependencies: dependencies:
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
'@vue/runtime-core@3.4.23': '@vue/runtime-core@3.4.26':
dependencies: dependencies:
'@vue/reactivity': 3.4.23 '@vue/reactivity': 3.4.26
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
'@vue/runtime-dom@3.4.23': '@vue/runtime-dom@3.4.26':
dependencies: dependencies:
'@vue/runtime-core': 3.4.23 '@vue/runtime-core': 3.4.26
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
csstype: 3.1.3 csstype: 3.1.3
'@vue/server-renderer@3.4.23(vue@3.4.23(typescript@5.4.3))': '@vue/server-renderer@3.4.26(vue@3.4.26(typescript@5.4.3))':
dependencies: dependencies:
'@vue/compiler-ssr': 3.4.23 '@vue/compiler-ssr': 3.4.26
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
'@vue/shared@3.4.21': {} '@vue/shared@3.4.21': {}
'@vue/shared@3.4.23': {} '@vue/shared@3.4.26': {}
'@vueuse/core@10.8.0(vue@3.4.23(typescript@5.4.3))': '@vueuse/core@10.8.0(vue@3.4.26(typescript@5.4.3))':
dependencies: dependencies:
'@types/web-bluetooth': 0.0.20 '@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.8.0 '@vueuse/metadata': 10.8.0
'@vueuse/shared': 10.8.0(vue@3.4.23(typescript@5.4.3)) '@vueuse/shared': 10.8.0(vue@3.4.26(typescript@5.4.3))
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.3)) vue-demi: 0.14.7(vue@3.4.26(typescript@5.4.3))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
'@vueuse/metadata@10.8.0': {} '@vueuse/metadata@10.8.0': {}
'@vueuse/shared@10.8.0(vue@3.4.23(typescript@5.4.3))': '@vueuse/shared@10.8.0(vue@3.4.26(typescript@5.4.3))':
dependencies: dependencies:
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.3)) vue-demi: 0.14.7(vue@3.4.26(typescript@5.4.3))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
@ -5559,6 +5587,8 @@ snapshots:
graceful-fs@4.2.11: {} graceful-fs@4.2.11: {}
grapheme-splitter@1.0.4: {}
graphemer@1.4.0: {} graphemer@1.4.0: {}
gzip-size@6.0.0: gzip-size@6.0.0:
@ -6015,10 +6045,10 @@ snapshots:
mute-stream@0.0.8: {} mute-stream@0.0.8: {}
naive-ui@2.38.1(vue@3.4.23(typescript@5.4.3)): naive-ui@2.38.2(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
'@css-render/plugin-bem': 0.15.12(css-render@0.15.12) '@css-render/plugin-bem': 0.15.12(css-render@0.15.12)
'@css-render/vue3-ssr': 0.15.12(vue@3.4.23(typescript@5.4.3)) '@css-render/vue3-ssr': 0.15.12(vue@3.4.26(typescript@5.4.3))
'@types/katex': 0.16.7 '@types/katex': 0.16.7
'@types/lodash': 4.14.202 '@types/lodash': 4.14.202
'@types/lodash-es': 4.17.12 '@types/lodash-es': 4.17.12
@ -6033,10 +6063,10 @@ snapshots:
lodash-es: 4.17.21 lodash-es: 4.17.21
seemly: 0.3.8 seemly: 0.3.8
treemate: 0.3.11 treemate: 0.3.11
vdirs: 0.1.8(vue@3.4.23(typescript@5.4.3)) vdirs: 0.1.8(vue@3.4.26(typescript@5.4.3))
vooks: 0.2.12(vue@3.4.23(typescript@5.4.3)) vooks: 0.2.12(vue@3.4.26(typescript@5.4.3))
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
vueuc: 0.4.58(vue@3.4.23(typescript@5.4.3)) vueuc: 0.4.58(vue@3.4.26(typescript@5.4.3))
nanoid@3.3.7: {} nanoid@3.3.7: {}
@ -6235,24 +6265,24 @@ snapshots:
pidtree@0.6.0: {} pidtree@0.6.0: {}
pinia-plugin-persistedstate@3.2.1(pinia@2.1.7(typescript@5.4.3)(vue@3.4.23(typescript@5.4.3))): pinia-plugin-persistedstate@3.2.1(pinia@2.1.7(typescript@5.4.3)(vue@3.4.26(typescript@5.4.3))):
dependencies: dependencies:
pinia: 2.1.7(typescript@5.4.3)(vue@3.4.23(typescript@5.4.3)) pinia: 2.1.7(typescript@5.4.3)(vue@3.4.26(typescript@5.4.3))
pinia-shared-state@0.5.1(pinia@2.1.7(typescript@5.4.3)(vue@3.4.23(typescript@5.4.3)))(vue@3.4.23(typescript@5.4.3)): pinia-shared-state@0.5.1(pinia@2.1.7(typescript@5.4.3)(vue@3.4.26(typescript@5.4.3)))(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
broadcast-channel: 7.0.0 broadcast-channel: 7.0.0
pinia: 2.1.7(typescript@5.4.3)(vue@3.4.23(typescript@5.4.3)) pinia: 2.1.7(typescript@5.4.3)(vue@3.4.26(typescript@5.4.3))
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.3)) vue-demi: 0.14.7(vue@3.4.26(typescript@5.4.3))
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue - vue
pinia@2.1.7(typescript@5.4.3)(vue@3.4.23(typescript@5.4.3)): pinia@2.1.7(typescript@5.4.3)(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
'@vue/devtools-api': 6.5.1 '@vue/devtools-api': 6.5.1
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
vue-demi: 0.14.6(vue@3.4.23(typescript@5.4.3)) vue-demi: 0.14.6(vue@3.4.26(typescript@5.4.3))
optionalDependencies: optionalDependencies:
typescript: 5.4.3 typescript: 5.4.3
@ -6779,7 +6809,7 @@ snapshots:
unload@2.4.1: {} unload@2.4.1: {}
unplugin-auto-import@0.17.5(@vueuse/core@10.8.0(vue@3.4.23(typescript@5.4.3)))(rollup@4.14.3): unplugin-auto-import@0.17.5(@vueuse/core@10.8.0(vue@3.4.26(typescript@5.4.3)))(rollup@4.14.3):
dependencies: dependencies:
'@antfu/utils': 0.7.7 '@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@4.14.3) '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
@ -6790,11 +6820,11 @@ snapshots:
unimport: 3.7.1(rollup@4.14.3) unimport: 3.7.1(rollup@4.14.3)
unplugin: 1.6.0 unplugin: 1.6.0
optionalDependencies: optionalDependencies:
'@vueuse/core': 10.8.0(vue@3.4.23(typescript@5.4.3)) '@vueuse/core': 10.8.0(vue@3.4.26(typescript@5.4.3))
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
unplugin-vue-components@0.26.0(@babel/parser@7.24.4)(rollup@4.14.3)(vue@3.4.23(typescript@5.4.3)): unplugin-vue-components@0.26.0(@babel/parser@7.24.5)(rollup@4.14.3)(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
'@antfu/utils': 0.7.7 '@antfu/utils': 0.7.7
'@rollup/pluginutils': 5.1.0(rollup@4.14.3) '@rollup/pluginutils': 5.1.0(rollup@4.14.3)
@ -6806,9 +6836,9 @@ snapshots:
minimatch: 9.0.3 minimatch: 9.0.3
resolve: 1.22.8 resolve: 1.22.8
unplugin: 1.6.0 unplugin: 1.6.0
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
optionalDependencies: optionalDependencies:
'@babel/parser': 7.24.4 '@babel/parser': 7.24.5
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
@ -6839,10 +6869,10 @@ snapshots:
spdx-correct: 3.2.0 spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1 spdx-expression-parse: 3.0.1
vdirs@0.1.8(vue@3.4.23(typescript@5.4.3)): vdirs@0.1.8(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
evtd: 0.2.4 evtd: 0.2.4
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
verror@1.10.0: verror@1.10.0:
dependencies: dependencies:
@ -6861,18 +6891,18 @@ snapshots:
sass: 1.71.1 sass: 1.71.1
terser: 5.28.1 terser: 5.28.1
vooks@0.2.12(vue@3.4.23(typescript@5.4.3)): vooks@0.2.12(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
evtd: 0.2.4 evtd: 0.2.4
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
vue-demi@0.14.6(vue@3.4.23(typescript@5.4.3)): vue-demi@0.14.6(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
vue-demi@0.14.7(vue@3.4.23(typescript@5.4.3)): vue-demi@0.14.7(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
vue-draggable-plus@0.4.0(@types/sortablejs@1.15.8): vue-draggable-plus@0.4.0(@types/sortablejs@1.15.8):
dependencies: dependencies:
@ -6891,10 +6921,10 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
vue-router@4.3.0(vue@3.4.23(typescript@5.4.3)): vue-router@4.3.0(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
'@vue/devtools-api': 6.5.1 '@vue/devtools-api': 6.5.1
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
vue-template-compiler@2.7.16: vue-template-compiler@2.7.16:
dependencies: dependencies:
@ -6908,26 +6938,26 @@ snapshots:
semver: 7.6.0 semver: 7.6.0
typescript: 5.4.3 typescript: 5.4.3
vue@3.4.23(typescript@5.4.3): vue@3.4.26(typescript@5.4.3):
dependencies: dependencies:
'@vue/compiler-dom': 3.4.23 '@vue/compiler-dom': 3.4.26
'@vue/compiler-sfc': 3.4.23 '@vue/compiler-sfc': 3.4.26
'@vue/runtime-dom': 3.4.23 '@vue/runtime-dom': 3.4.26
'@vue/server-renderer': 3.4.23(vue@3.4.23(typescript@5.4.3)) '@vue/server-renderer': 3.4.26(vue@3.4.26(typescript@5.4.3))
'@vue/shared': 3.4.23 '@vue/shared': 3.4.26
optionalDependencies: optionalDependencies:
typescript: 5.4.3 typescript: 5.4.3
vueuc@0.4.58(vue@3.4.23(typescript@5.4.3)): vueuc@0.4.58(vue@3.4.26(typescript@5.4.3)):
dependencies: dependencies:
'@css-render/vue3-ssr': 0.15.12(vue@3.4.23(typescript@5.4.3)) '@css-render/vue3-ssr': 0.15.12(vue@3.4.26(typescript@5.4.3))
'@juggle/resize-observer': 3.4.0 '@juggle/resize-observer': 3.4.0
css-render: 0.15.12 css-render: 0.15.12
evtd: 0.2.4 evtd: 0.2.4
seemly: 0.3.8 seemly: 0.3.8
vdirs: 0.1.8(vue@3.4.23(typescript@5.4.3)) vdirs: 0.1.8(vue@3.4.26(typescript@5.4.3))
vooks: 0.2.12(vue@3.4.23(typescript@5.4.3)) vooks: 0.2.12(vue@3.4.26(typescript@5.4.3))
vue: 3.4.23(typescript@5.4.3) vue: 3.4.26(typescript@5.4.3)
wcwidth@1.0.1: wcwidth@1.0.1:
dependencies: dependencies:

View File

@ -8,8 +8,10 @@
<n-dialog-provider> <n-dialog-provider>
<n-notification-provider :max="notificMax"> <n-notification-provider :max="notificMax">
<n-message-provider :max="messageMax"> <n-message-provider :max="messageMax">
<slot></slot> <n-modal-provider>
<naive-provider-content /> <slot></slot>
<naive-provider-content />
</n-modal-provider>
</n-message-provider> </n-message-provider>
</n-notification-provider> </n-notification-provider>
</n-dialog-provider> </n-dialog-provider>
@ -135,6 +137,7 @@ const registerNaiveTools = () => {
window.$dialog = useDialog() window.$dialog = useDialog()
window.$message = useMessage() window.$message = useMessage()
window.$notification = useNotification() window.$notification = useNotification()
window.$modal = useModal()
} }
const NaiveProviderContent = defineComponent({ const NaiveProviderContent = defineComponent({

View File

@ -12,7 +12,7 @@
:item-size="itemSize" :item-size="itemSize"
:items="items"> :items="items">
<template #default="{ item }"> <template #default="{ item }">
<main <div
:key="item.key" :key="item.key"
class="flex-y-center min-h-58px" class="flex-y-center min-h-58px"
:class="[ :class="[
@ -72,7 +72,6 @@
class="select-none" class="select-none"
:src="item.accountId === userId ? item.avatar : activeItem.avatar" :src="item.accountId === userId ? item.avatar : activeItem.avatar"
:class="item.accountId === userId ? '' : 'mr-10px'" :class="item.accountId === userId ? '' : 'mr-10px'"
fallback-src="/logo.png"
:render-placeholder="() => null" :render-placeholder="() => null"
:intersection-observer-options="{ :intersection-observer-options="{
root: '#image-chat-main' root: '#image-chat-main'
@ -218,7 +217,7 @@
</n-flex> </n-flex>
</div> </div>
</article> </article>
</main> </div>
</template> </template>
</n-virtual-list> </n-virtual-list>
@ -447,7 +446,7 @@ const jumpToReplyMsg = (key: number) => {
* @param index 下标 * @param index 下标
* @param id 用户ID * @param id 用户ID
*/ */
const addToDomUpdateQueue = (index: number, id: string) => { const addToDomUpdateQueue = (index: number, id: number) => {
// 使 nextTick // 使 nextTick
nextTick(() => { nextTick(() => {
if (!floatFooter.value || id === userId.value) { if (!floatFooter.value || id === userId.value) {

View File

@ -21,9 +21,9 @@ export enum RCodeEnum {
/**URL*/ /**URL*/
export enum URLEnum { export enum URLEnum {
/**用户*/ /**用户*/
USER = '/user', USER = '/api/user',
/**文章*/ /** 用户背包 */
ARTICLE = '/article' USER_BACKPACK = '/api/userBackpack'
} }
/** tauri原生跨窗口通信时传输的类型 */ /** tauri原生跨窗口通信时传输的类型 */

View File

@ -71,7 +71,7 @@
</n-flex> </n-flex>
<n-flex justify="center" align="center" :size="40"> <n-flex justify="center" align="center" :size="40">
<n-button secondary> 编辑资料 </n-button> <n-button secondary @click="handleEditing"> 编辑资料 </n-button>
</n-flex> </n-flex>
</n-flex> </n-flex>
</n-popover> </n-popover>
@ -128,6 +128,43 @@
</div> </div>
</footer> </footer>
</div> </div>
<!-- 编辑资料弹窗 -->
<n-modal v-model:show="editInfo.show" class="rounded-8px" transform-origin="center" :mask-closable="false">
<div class="bg-[--bg-edit] w-480px h-530px box-border flex flex-col">
<n-flex vertical :size="6">
<n-flex justify="center" class="text-(14px --text-color) select-none pt-6px">编辑资料</n-flex>
<svg
@click="editInfo.show = false"
class="size-14px ml-a cursor-pointer pt-6px select-none absolute right-6px">
<use href="#close"></use>
</svg>
<span class="h-1px w-full bg-[--line-color]"></span>
</n-flex>
<n-flex vertical :size="20" class="p-22px select-none">
<!-- 头像 -->
<n-flex justify="center">
<n-avatar style="border: 3px solid #fff" round :size="80" :src="editInfo.content.avatar" />
</n-flex>
<n-input
ref="inputInstRef"
v-model:value="editInfo.content.name"
clearable
placeholder="请输入你的昵称"
type="text"
:default-value="editInfo.content.name"
show-count
:maxlength="8"
:count-graphemes="countGraphemes"
class="rounded-6px">
<template #prefix>
<span class="pr-6px text-#909090">昵称</span>
</template>
</n-input>
</n-flex>
</div>
</n-modal>
</main> </main>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -141,6 +178,8 @@ import { itemsTop, itemsBottom, moreList } from './config.ts'
import { onlineStatus } from '@/stores/onlineStatus.ts' import { onlineStatus } from '@/stores/onlineStatus.ts'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { setting } from '@/stores/setting.ts' import { setting } from '@/stores/setting.ts'
import apis from '@/services/apis.ts'
import GraphemeSplitter from 'grapheme-splitter'
const prefers = matchMedia('(prefers-color-scheme: dark)') const prefers = matchMedia('(prefers-color-scheme: dark)')
const { createWebviewWindow } = useWindow() const { createWebviewWindow } = useWindow()
@ -156,6 +195,14 @@ const infoShow = ref(false)
const themeColor = ref(themes.value.content === ThemeEnum.DARK ? 'rgba(63,63,63, 0.2)' : 'rgba(241,241,241, 0.2)') const themeColor = ref(themes.value.content === ThemeEnum.DARK ? 'rgba(63,63,63, 0.2)' : 'rgba(241,241,241, 0.2)')
/** 已打开窗口的列表 */ /** 已打开窗口的列表 */
const openWindowsList = ref(new Set()) const openWindowsList = ref(new Set())
/** 编辑资料弹窗 */
// TODO (nyh -> 2024-05-05 01:12:36)
const editInfo = ref({
show: false,
content: {
...login.value.accountInfo
}
})
/** 跟随系统主题模式切换主题 */ /** 跟随系统主题模式切换主题 */
const followOS = () => { const followOS = () => {
@ -180,8 +227,26 @@ watchEffect(() => {
} else { } else {
prefers.removeEventListener('change', followOS) prefers.removeEventListener('change', followOS)
} }
//
if (!editInfo.value.show) {
editInfo.value.content = {
...login.value.accountInfo
}
}
}) })
/** 计算字符长度 */
const countGraphemes = (value: string) => {
const splitter = new GraphemeSplitter()
return splitter.countGraphemes(value)
}
/* 打开并且创建modal */
const handleEditing = () => {
infoShow.value = false
editInfo.value.show = true
}
/** /**
* 统一跳转路由方法 * 统一跳转路由方法
* @param url 跳转的路由 * @param url 跳转的路由
@ -219,6 +284,9 @@ const closeMenu = (event: any) => {
} }
onMounted(async () => { onMounted(async () => {
apis.getBadgeList().then((res) => {
console.log(res)
})
/** 页面加载的时候默认显示消息列表 */ /** 页面加载的时候默认显示消息列表 */
pageJumps(activeUrl.value) pageJumps(activeUrl.value)
window.addEventListener('click', closeMenu, true) window.addEventListener('click', closeMenu, true)

View File

@ -25,7 +25,7 @@ export const MockList = ref<MockItem[]>(
key: i, key: i,
avatar: `${avatars}?${i}`, avatar: `${avatars}?${i}`,
type: type, type: type,
accountId: `${i}`, accountId: i,
accountName: generateRandomString(Math.floor(Math.random() * 10) + 1, type) accountName: generateRandomString(Math.floor(Math.random() * 10) + 1, type)
} }
}) })

View File

@ -1,20 +1,17 @@
import { createAxios } from '@/services/request' import { createAxios } from '@/services/request'
import urls from '@/services/urls' import urls from '@/services/urls'
import type { login, Response } from '@/services/types' import type { Response } from '@/services/types'
import { parameter } from '@/services/types'
const request = createAxios() const request = createAxios()
const GET = <T>(url: string, params?: any) => request.get<T, Response>(url, params) const GET = <T>(url: string, params?: any) => request.get<T, Response>(url, params)
const POST = <T>(url: string, params?: any) => request.post<T, Response>(url, params) // const POST = <T>(url: string, params?: any) => request.post<T, Response>(url, params)
// const PUT = <T>(url: string, params?: any) => request.put<T, Response>(url, params) // const PUT = <T>(url: string, params?: any) => request.put<T, Response>(url, params)
// const DELETE = <T>(url: string, params?: any) => request.delete<T, Response>(url, params) // const DELETE = <T>(url: string, params?: any) => request.delete<T, Response>(url, params)
export default { export default {
/**登录 请求*/ /** 获取用户信息 */
login: (form: login): Promise<Response> => POST(urls.login, form), getUserInfo: (): Promise<Response> => GET(urls.getUserInfo),
/**退出 请求*/ /** 获取徽章列表 */
logout: (): Promise<Response> => GET(urls.logout), getBadgeList: (): Promise<Response> => GET(urls.getBadgeList)
/**获取文章列表*/
getArticlePage: (params: parameter): Promise<Response> => GET(urls.articlePage, { params })
} }

View File

@ -1,5 +1,10 @@
import axios, { AxiosInstance, AxiosRequestConfig } from 'axios' import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'
import { userStore } from '@/stores/user.ts' import { setting } from '@/stores/setting.ts'
/** 是否是测试环境 */
const isTest = computed(() => {
return setting().login.accountInfo.token === 'test'
})
//请求配置 //请求配置
export const createAxios = (config?: AxiosRequestConfig): AxiosInstance => { export const createAxios = (config?: AxiosRequestConfig): AxiosInstance => {
@ -19,15 +24,25 @@ export const createAxios = (config?: AxiosRequestConfig): AxiosInstance => {
instance.interceptors.request.use( instance.interceptors.request.use(
function (config: any) { function (config: any) {
//判断是否有token 根据自己的需求判断 //判断是否有token 根据自己的需求判断
const token = userStore().getBearerToken const token = setting().login.accountInfo.token
if (token != undefined) { if (isTest.value) {
//如果要求携带在参数中 // 如果token为'test',阻止请求并返回一个错误对象
return Promise.reject(
window.$message.create('当前为测试环境,请注意辨别', {
type: 'warning',
closable: true,
duration: 0
})
)
}
if (token != void 0) {
// //如果要求携带在参数中
// config.params = Object.assign({}, config.params, token) // config.params = Object.assign({}, config.params, token)
// 如果要求携带在请求头中 // 如果要求携带在请求头中
// config.headers = Object.assign({}, config.headers, operate.uploadParameters()) // config.headers = Object.assign({}, config.headers, operate.uploadParameters())
config.headers['Content-Type'] = 'application/json;charset=utf-8' config.headers['Content-Type'] = 'application/json;charset=utf-8'
// 设置请求头 // 设置请求头
config.headers['token'] = token config.headers['Authorization'] = `Bearer ${token}`
} }
return config return config
}, },
@ -98,14 +113,8 @@ export const createAxios = (config?: AxiosRequestConfig): AxiosInstance => {
default: default:
error.message = `连接错误${error.response.status}` error.message = `连接错误${error.response.status}`
} }
} else {
// 超时处理
if (JSON.stringify(error).includes('timeout')) {
error.message = '服务器响应超时,请刷新当前页'
} else {
error.message = '连接服务器失败'
}
} }
if (isTest) return Promise.resolve(error.response)
window.$message.error(error.message) window.$message.error(error.message)
/***** 处理结束 *****/ /***** 处理结束 *****/
return Promise.resolve(error.response) return Promise.resolve(error.response)

View File

@ -3,30 +3,18 @@
* 使TSDoc规范进行注释便使 * 使TSDoc规范进行注释便使
* @see TSDoc规范https://tsdoc.org/ * @see TSDoc规范https://tsdoc.org/
**/ **/
import { MsgEnum, RCodeEnum, RoomTypeEnum } from '@/enums' import { MsgEnum, RoomTypeEnum } from '@/enums'
/**响应请求体*/ /**响应请求体*/
export type Response = { export type Response = {
code: RCodeEnum /** 成功标识true or false */
msg: string
data: {
records: any
total: number
}
fail: boolean
success: boolean success: boolean
version: string /** 错误码 */
} errCode: number
/**分页搜索*/ /** 错误消息 */
export type parameter = { errMsg: string
pageNum: number /** 数据 */
pageSize: number data: any
name: string
}
/**登录类型*/
export type login = {
username: string
password: string
} }
/** ===================================================== */ /** ===================================================== */
@ -151,6 +139,6 @@ export type MockItem = {
key: number key: number
type: RoomTypeEnum type: RoomTypeEnum
avatar: string avatar: string
accountId: string accountId: number
accountName: string accountName: string
} }

View File

@ -5,7 +5,8 @@ const { PROD, VITE_SERVICE_URL } = import.meta.env
const prefix = PROD ? VITE_SERVICE_URL : '' const prefix = PROD ? VITE_SERVICE_URL : ''
export default { export default {
login: `${prefix + URLEnum.USER}/login`, /** 获取用户信息 */
logout: `${prefix + URLEnum.USER}/logout`, getUserInfo: `${prefix + URLEnum.USER}/userInfo`,
articlePage: `${prefix + URLEnum.ARTICLE}/page` /** 获取徽章列表 */
getBadgeList: `${prefix + URLEnum.USER}/badges`
} }

View File

@ -26,7 +26,8 @@ export const setting = defineStore(StoresEnum.SETTING, {
password: '', password: '',
name: '', name: '',
avatar: '', avatar: '',
uid: '' uid: 0,
token: ''
} }
}, },
/** 聊天设置 */ /** 聊天设置 */

View File

@ -61,6 +61,8 @@
--bg-reply-img-count: #e3e3e3; --bg-reply-img-count: #e3e3e3;
// 主页面面板分割线样式 // 主页面面板分割线样式
--split-color: #f1f1f1; --split-color: #f1f1f1;
// 编辑资料背景颜色
--bg-edit: #f0f0f0;
} }
html[data-theme='dark'] { html[data-theme='dark'] {
@ -125,6 +127,8 @@ html[data-theme='dark'] {
--bg-reply-img-count: #505050; --bg-reply-img-count: #505050;
// 主页面面板分割线样式 // 主页面面板分割线样式
--split-color: #3b3b3b; --split-color: #3b3b3b;
// 编辑资料背景颜色
--bg-edit: #262626;
} }
/**! end */ /**! end */
// 线性动画 // 线性动画

View File

@ -55,6 +55,7 @@ declare global {
const useDialog: typeof import('naive-ui')['useDialog'] const useDialog: typeof import('naive-ui')['useDialog']
const useLoadingBar: typeof import('naive-ui')['useLoadingBar'] const useLoadingBar: typeof import('naive-ui')['useLoadingBar']
const useMessage: typeof import('naive-ui')['useMessage'] const useMessage: typeof import('naive-ui')['useMessage']
const useModal: typeof import('naive-ui')['useModal']
const useNotification: typeof import('naive-ui')['useNotification'] const useNotification: typeof import('naive-ui')['useNotification']
const useSlots: typeof import('vue')['useSlots'] const useSlots: typeof import('vue')['useSlots']
const watch: typeof import('vue')['watch'] const watch: typeof import('vue')['watch']

View File

@ -26,11 +26,14 @@ declare module 'vue' {
NBadge: typeof import('naive-ui')['NBadge'] NBadge: typeof import('naive-ui')['NBadge']
NButton: typeof import('naive-ui')['NButton'] NButton: typeof import('naive-ui')['NButton']
NButtonGroup: typeof import('naive-ui')['NButtonGroup'] NButtonGroup: typeof import('naive-ui')['NButtonGroup']
NC: typeof import('naive-ui')['NC']
NCard: typeof import('naive-ui')['NCard']
NCheckbox: typeof import('naive-ui')['NCheckbox'] NCheckbox: typeof import('naive-ui')['NCheckbox']
NCollapse: typeof import('naive-ui')['NCollapse'] NCollapse: typeof import('naive-ui')['NCollapse']
NCollapseItem: typeof import('naive-ui')['NCollapseItem'] NCollapseItem: typeof import('naive-ui')['NCollapseItem']
NConfigProvider: typeof import('naive-ui')['NConfigProvider'] NConfigProvider: typeof import('naive-ui')['NConfigProvider']
NDialogProvider: typeof import('naive-ui')['NDialogProvider'] NDialogProvider: typeof import('naive-ui')['NDialogProvider']
NDivider: typeof import('naive-ui')['NDivider']
NDropdown: typeof import('naive-ui')['NDropdown'] NDropdown: typeof import('naive-ui')['NDropdown']
NEllipsis: typeof import('naive-ui')['NEllipsis'] NEllipsis: typeof import('naive-ui')['NEllipsis']
NFlex: typeof import('naive-ui')['NFlex'] NFlex: typeof import('naive-ui')['NFlex']
@ -42,6 +45,7 @@ declare module 'vue' {
NLoadingBarProvider: typeof import('naive-ui')['NLoadingBarProvider'] NLoadingBarProvider: typeof import('naive-ui')['NLoadingBarProvider']
NMessageProvider: typeof import('naive-ui')['NMessageProvider'] NMessageProvider: typeof import('naive-ui')['NMessageProvider']
NModal: typeof import('naive-ui')['NModal'] NModal: typeof import('naive-ui')['NModal']
NModalProvider: typeof import('naive-ui')['NModalProvider']
NNotificationProvider: typeof import('naive-ui')['NNotificationProvider'] NNotificationProvider: typeof import('naive-ui')['NNotificationProvider']
NPopover: typeof import('naive-ui')['NPopover'] NPopover: typeof import('naive-ui')['NPopover']
NPopselect: typeof import('naive-ui')['NPopselect'] NPopselect: typeof import('naive-ui')['NPopselect']
@ -50,11 +54,11 @@ declare module 'vue' {
NScrollbar: typeof import('naive-ui')['NScrollbar'] NScrollbar: typeof import('naive-ui')['NScrollbar']
NSelect: typeof import('naive-ui')['NSelect'] NSelect: typeof import('naive-ui')['NSelect']
NSkeleton: typeof import('naive-ui')['NSkeleton'] NSkeleton: typeof import('naive-ui')['NSkeleton']
NSplit: typeof import('naive-ui')['NSplit']
NSwitch: typeof import('naive-ui')['NSwitch'] NSwitch: typeof import('naive-ui')['NSwitch']
NTabPane: typeof import('naive-ui')['NTabPane'] NTabPane: typeof import('naive-ui')['NTabPane']
NTabs: typeof import('naive-ui')['NTabs'] NTabs: typeof import('naive-ui')['NTabs']
NTooltip: typeof import('naive-ui')['NTooltip'] NTooltip: typeof import('naive-ui')['NTooltip']
NUpload: typeof import('naive-ui')['NUpload']
NVirtualList: typeof import('naive-ui')['NVirtualList'] NVirtualList: typeof import('naive-ui')['NVirtualList']
RenderMessage: typeof import('./../components/rightBox/renderMessage/index.vue')['default'] RenderMessage: typeof import('./../components/rightBox/renderMessage/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink'] RouterLink: typeof import('vue-router')['RouterLink']

View File

@ -71,4 +71,5 @@ declare interface Window {
$notification: ReturnType<typeof useNotification> $notification: ReturnType<typeof useNotification>
$loadingBar: ReturnType<typeof useLoadingBar> $loadingBar: ReturnType<typeof useLoadingBar>
$dialog: ReturnType<typeof useDialog> $dialog: ReturnType<typeof useDialog>
$modal: ReturnType<typeof useModal>
} }

View File

@ -25,7 +25,8 @@ declare namespace STO {
password?: string password?: string
name: string name: string
avatar: string avatar: string
uid: string uid: number
token: string
} }
} }
/** 聊天设置 */ /** 聊天设置 */

View File

@ -162,7 +162,8 @@ const info = ref({
account: '', account: '',
password: '', password: '',
avatar: '', avatar: '',
name: '' name: '',
uid: 0
}) })
/** 是否中断登录 */ /** 是否中断登录 */
const interruptLogin = ref(false) const interruptLogin = ref(false)
@ -180,28 +181,32 @@ const accountOption = ref<STO.Setting['login']['accountInfo'][]>([
password: '123456', password: '123456',
name: '超级GG帮', name: '超级GG帮',
avatar: 'https://picsum.photos/140?1', avatar: 'https://picsum.photos/140?1',
uid: '123456' uid: 123456,
token: 'test'
}, },
{ {
account: 'hula1', account: 'hula1',
password: '123456', password: '123456',
name: '二狗子', name: '二狗子',
avatar: 'https://picsum.photos/140?2', avatar: 'https://picsum.photos/140?2',
uid: '123456' uid: 123456,
token: 'test'
}, },
{ {
account: 'hula2', account: 'hula2',
password: '123456', password: '123456',
name: '李山离', name: '李山离',
avatar: 'https://picsum.photos/140?3', avatar: 'https://picsum.photos/140?3',
uid: '123456' uid: 123456,
token: 'test'
}, },
{ {
account: 'hula3', account: 'hula3',
password: '123456', password: '123456',
name: '牛什么呢', name: '牛什么呢',
avatar: 'https://picsum.photos/140?4', avatar: 'https://picsum.photos/140?4',
uid: '123456' uid: 123456,
token: 'test'
} }
]) ])
const accountPH = ref('输入HuLa账号') const accountPH = ref('输入HuLa账号')
@ -243,11 +248,12 @@ const delAccount = (index: number) => {
* @param item 账户信息 * @param item 账户信息
* */ * */
const giveAccount = (item: STO.Setting['login']['accountInfo']) => { const giveAccount = (item: STO.Setting['login']['accountInfo']) => {
const { account, password, avatar, name } = item const { account, password, avatar, name, uid } = item
info.value.account = account || '' info.value.account = account || ''
info.value.password = password || '' info.value.password = password || ''
info.value.avatar = avatar info.value.avatar = avatar
info.value.name = name info.value.name = name
info.value.uid = uid
arrowStatus.value = false arrowStatus.value = false
} }
@ -264,7 +270,8 @@ const loginWin = () => {
password: info.value.password, password: info.value.password,
avatar: info.value.avatar, avatar: info.value.avatar,
name: info.value.name, name: info.value.name,
uid: '123456' uid: info.value.uid,
token: 'test'
}) })
await setLoginState() await setLoginState()
} }

View File

@ -80,7 +80,8 @@ const handleLoginSuccess = async (e: any) => {
settingStore.setAccountInfo({ settingStore.setAccountInfo({
avatar: e.data.avatar, avatar: e.data.avatar,
name: e.data.name, name: e.data.name,
uid: e.data.uid uid: e.data.uid,
token: e.data.token
}) })
await setLoginState() await setLoginState()
}, 1000) }, 1000)

View File

@ -25,7 +25,8 @@
"paths": { "paths": {
"~/*": ["./*"], "~/*": ["./*"],
"@/*": ["./src/*"] "@/*": ["./src/*"]
} },
"allowSyntheticDefaultImports": true
}, },
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
"references": [{ "path": "./tsconfig.node.json" }] "references": [{ "path": "./tsconfig.node.json" }]

View File

@ -45,7 +45,7 @@ export default defineConfig(({ mode }: ConfigEnv) => {
vueJsx(), // 开启jsx功能 vueJsx(), // 开启jsx功能
unocss(), // 开启unocss unocss(), // 开启unocss
AutoImport({ AutoImport({
imports: ['vue', { 'naive-ui': ['useDialog', 'useMessage', 'useNotification', 'useLoadingBar'] }], imports: ['vue', { 'naive-ui': ['useDialog', 'useMessage', 'useNotification', 'useLoadingBar', 'useModal'] }],
dts: 'src/typings/auto-imports.d.ts' dts: 'src/typings/auto-imports.d.ts'
}), }),
/**自动导入组件但是不会自动导入jsx和tsx*/ /**自动导入组件但是不会自动导入jsx和tsx*/
@ -92,6 +92,17 @@ export default defineConfig(({ mode }: ConfigEnv) => {
clearScreen: false, clearScreen: false,
// 2. tauri expects a fixed port, fail if that port is not available // 2. tauri expects a fixed port, fail if that port is not available
server: { server: {
//配置跨域
proxy: {
'/api': {
// “/api” 以及前置字符串会被替换为真正域名
target: config.VITE_SERVICE_URL, // 请求域名
changeOrigin: true, // 是否跨域
rewrite: (path) => path.replace(/^\/api/, '')
}
},
hmr: true, // 热更新
cors: true, // 配置 CORS
host: '0.0.0.0', host: '0.0.0.0',
port: 6130, port: 6130,
strictPort: true, strictPort: true,

File diff suppressed because one or more lines are too long