From 1ea740c51e84a80e6eb069846ba4a58438f9795c Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 07 四月 2025 17:40:12 +0800
Subject: [PATCH] feat: init
---
src/constants/dic.ts | 43 +
src/hooks/dic.ts | 131 +++++
src/components/commonView/MateriaDetailDialog.vue | 46 +
src/components/commonView/SettlementMaterialInfoView.vue | 51 ++
src/constants/enterpriseMaterial.ts | 111 ++++
src/hooks/index.ts | 1
pnpm-lock.yaml | 271 ++++++----
src/views/MaterialReview/MaterialReviewAudit.vue | 121 ++++
src/components/commonView/MaterialInfoView.vue | 42 +
src/components/commonView/DetailView.vue | 63 ++
src/components/commonView/BatchInfoView.vue | 78 +++
src/components/commonView/DeclareEnterpriseTableView.vue | 145 +++++
package.json | 2
src/components/commonView/types.ts | 14
src/components/commonView/FourStreamsMaterialFileTable.vue | 179 +++++++
src/views/Reward/RewardDeclareDetail.vue | 62 ++
src/components/Layout/ChunkCellV2.vue | 40 +
src/constants/index.ts | 2
src/views/MaterialReview/MaterialReviewDetail.vue | 88 +++
19 files changed, 1,374 insertions(+), 116 deletions(-)
diff --git a/package.json b/package.json
index 78dd350..6a6f138 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
"dependencies": {
"@bole-12333/chat-kit": "latest",
"@bole-12333/customer-chat": "latest",
- "@bole-core/components": "^1.2.28",
+ "@bole-core/components": "latest",
"@bole-core/core": "latest",
"@bole-core/pretty-layout": "latest",
"@bole-core/sass-utils": "latest",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ccc3c7b..97e48f3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,5 +1,9 @@
lockfileVersion: '6.0'
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
overrides:
vue: 3.5.11
@@ -16,8 +20,8 @@
specifier: latest
version: 1.0.3(@bole-12333/chat-kit@1.0.1)(@tiptap/core@2.1.13)(@tiptap/extension-document@2.1.13)(@tiptap/extension-image@2.1.13)(@tiptap/extension-mention@2.1.13)(@tiptap/extension-paragraph@2.1.13)(@tiptap/extension-placeholder@2.1.13)(@tiptap/extension-text@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13)(dayjs@1.11.6)(vue@3.5.11)
'@bole-core/components':
- specifier: ^1.2.28
- version: 1.2.28(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11)
+ specifier: latest
+ version: 1.3.6(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11)
'@bole-core/core':
specifier: latest
version: 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
@@ -44,13 +48,13 @@
version: 4.37.1(vue@3.5.11)
'@tencentcloud/call-uikit-vue':
specifier: ^3.1.5
- version: 3.1.5(react-native@0.76.5)(react@19.0.0)
+ version: 3.1.5
'@tencentcloud/chat-uikit-vue':
specifier: ^2.0.0
version: 2.0.0(@tiptap/core@2.1.13)(@tiptap/extension-document@2.1.13)(@tiptap/extension-image@2.1.13)(@tiptap/extension-mention@2.1.13)(@tiptap/extension-paragraph@2.1.13)(@tiptap/extension-placeholder@2.1.13)(@tiptap/extension-text@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13)(react-native@0.76.5)(react@19.0.0)(vue@3.5.11)
'@tencentcloud/tui-core':
specifier: ^2.0.0
- version: 2.0.0(react-native@0.76.5)(react@19.0.0)
+ version: 2.0.0
'@videojs-player/vue':
specifier: ^1.0.0
version: 1.0.0(@types/video.js@7.3.49)(video.js@7.20.3)(vue@3.5.11)
@@ -2123,9 +2127,9 @@
peerDependencies:
'@tencentcloud/chat-uikit-engine': '*'
lodash: '*'
- vue: '*'
+ vue: 3.5.11
dependencies:
- '@tencentcloud/chat-uikit-engine': 2.4.0(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/chat-uikit-engine': 2.4.0
lodash: 4.17.21
vue: 3.5.11(typescript@4.8.4)
dev: false
@@ -2144,7 +2148,7 @@
'@tiptap/pm': ^2.0.0-beta.220
'@tiptap/suggestion': ^2.0.0-beta.220
dayjs: '*'
- vue: '*'
+ vue: 3.5.11
dependencies:
'@bole-12333/chat-kit': 1.0.1(@tencentcloud/chat-uikit-engine@2.4.0)(lodash@4.17.21)(vue@3.5.11)
'@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
@@ -2160,8 +2164,8 @@
vue: 3.5.11(typescript@4.8.4)
dev: false
- /@bole-core/components@1.2.28(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11):
- resolution: {integrity: sha512-Gh7gBf8vl+L2/Ph55NqRcVy2CaWRVGYZhyUo0H9Ela61B9hV2ALz5B95Km+jbvMdhl4rr5b/gVh6a/3DhGTv7A==}
+ /@bole-core/components@1.3.6(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11):
+ resolution: {integrity: sha512-m4f6vSX23a6X0i/QFvVW1iHh69RPa2haPA+vA3XVPa8LwYFBUu4RnbI3TC+IAFm5hb16Rb8BtJpqNcLeGB3IyA==}
peerDependencies:
'@bole-core/core': '*'
'@bole-core/sass-utils': '*'
@@ -2177,7 +2181,7 @@
senin-help: '*'
senin-vue: '*'
video.js: '*'
- vue: '*'
+ vue: 3.5.11
vue-component-type-helpers: ^2.1.6
dependencies:
'@bole-core/core': 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
@@ -2210,7 +2214,7 @@
jszip: '*'
lodash: '*'
senior-request: '*'
- vue: '*'
+ vue: 3.5.11
vue-router: '*'
xlsx: '*'
xlsx-style: '*'
@@ -2243,7 +2247,7 @@
path-browserify: '*'
path-to-regexp: '*'
pinia: '*'
- vue: '*'
+ vue: 3.5.11
vue-router: '*'
dependencies:
'@bole-core/core': 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
@@ -2280,7 +2284,7 @@
resolution: {integrity: sha512-33Cfr0zjbc3Dd8d5b1IgzXRAgXH0c2Gv19VI4snS25V/x9Z41eg769tC+Us1x+vqgQQhgD5YUjLnkpkrQfeMSw==}
peerDependencies:
qrcode: ^1.5.0
- vue: ^3.0.0
+ vue: 3.5.11
dependencies:
qrcode: 1.5.4
vue: 3.5.11(typescript@4.8.4)
@@ -2928,7 +2932,7 @@
/@element-plus/icons-vue@2.3.1(vue@3.5.11):
resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==}
peerDependencies:
- vue: ^3.2.0
+ vue: 3.5.11
dependencies:
vue: 3.5.11(typescript@4.8.4)
dev: false
@@ -3288,7 +3292,7 @@
/@iconify/vue@4.0.0(vue@3.5.11):
resolution: {integrity: sha512-73z81Yf2HISfehu3qvN9GqL1OnUO7wEMKkiFwVGJ2pqAdGCR8FrVylhRhka+6U+gFLlng0ynnT20svk3jJYwow==}
peerDependencies:
- vue: '>=3'
+ vue: 3.5.11
dependencies:
'@iconify/types': 2.0.0
vue: 3.5.11(typescript@4.8.4)
@@ -4042,7 +4046,7 @@
dependencies:
'@babel/core': 7.25.7
postcss: 7.0.39
- postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+ postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
transitivePeerDependencies:
- supports-color
dev: false
@@ -4055,7 +4059,7 @@
postcss-syntax: '>=0.36.2'
dependencies:
postcss: 7.0.39
- postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+ postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
remark: 13.0.0
unist-util-find-all-after: 3.0.2
transitivePeerDependencies:
@@ -4081,7 +4085,7 @@
resolution: {integrity: sha512-QzCQ94g2oZQcEfI4nfqa6Qr3aFXtXiEH17Jho+QFl73c7epqsWNcyP3ovF1fgJz5jEOE5OYtwgkoaRKIRaSigg==}
peerDependencies:
'@vue/composition-api': ^1.1.2
- vue: ^2.5.0 || ^3.0.0
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/composition-api':
optional: true
@@ -4093,60 +4097,76 @@
vue-demi: 0.13.11(vue@3.5.11)
dev: false
- /@tencentcloud/call-uikit-vue2.6@3.3.9(react-native@0.76.5)(react@19.0.0)(vue@3.5.11):
- resolution: {integrity: sha512-EWXc+wqGXlWSmkR/ucKdwPpe+tOXwtYDL2wUD3C/XW4pmKldtxRIIWIzDzo9upPTeojZMfIIoOC/che7wwE9KQ==}
+ /@tencentcloud/call-engine-js@3.0.0(react-native@0.76.5)(react@19.0.0):
+ resolution: {integrity: sha512-xu1MPvn1i1iKMex4pdnuDXPggHOCoFEFPuV0ICOWxRoYGy+zLmRsmMLoX6VjLgwrFCEfzw+uYubCcbmDiC93QA==}
dependencies:
'@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
- '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
+ core-js: 3.38.1
+ eventemitter3: 4.0.7
+ rtc-detect: 0.0.5
+ trtc-cloud-js-sdk: 2.9.0
+ tuikit-logger: 0.0.4-beta.1
+ transitivePeerDependencies:
+ - react
+ - react-native
+ dev: false
+
+ /@tencentcloud/call-uikit-vue2.6@4.0.4(react-native@0.76.5)(react@19.0.0)(vue@3.5.11):
+ resolution: {integrity: sha512-QZKJAhNbPPkM3MgN5Aj+KENHhy+dH6J8pZoMBIBlapfJGFnX4QF9uT2kJwZvuBOQH+67JbO55y8TG6j+NDr2ng==}
+ dependencies:
+ '@tencentcloud/call-engine-js': 3.0.0(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/tui-core': 2.4.0
'@vue/composition-api': 1.7.2(vue@3.5.11)
- tuicall-engine-webrtc: 3.1.6(react-native@0.76.5)(react@19.0.0)
transitivePeerDependencies:
- react
- react-native
- vue
dev: false
- /@tencentcloud/call-uikit-vue2@3.3.9(react-native@0.76.5)(react@19.0.0):
- resolution: {integrity: sha512-xAa1eQGoYj6PKoaSLxNXHPXTO5A/ld8A5Oy9Ps3qjEQWaOIkei8cqJfRX5tUJiQSeNJAxME/GrqLueIARshnTg==}
+ /@tencentcloud/call-uikit-vue2@4.0.4(react-native@0.76.5)(react@19.0.0):
+ resolution: {integrity: sha512-suCHF5/IIsLgioqIFra7enpjfjKTQoNMDdp4CVJ7ogvecyueR/pzrcCu2o3pR5FpMrvCxIpczWSeQbPx5rnSKQ==}
dependencies:
+ '@tencentcloud/call-engine-js': 3.0.0(react-native@0.76.5)(react@19.0.0)
'@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
- '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
- tuicall-engine-webrtc: 3.1.6(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/tui-core': 2.4.0
transitivePeerDependencies:
- react
- react-native
dev: false
- /@tencentcloud/call-uikit-vue@3.1.5(react-native@0.76.5)(react@19.0.0):
+ /@tencentcloud/call-uikit-vue@3.1.5:
resolution: {integrity: sha512-xblFYyol6rXMYKv5NAy45K/VwGIKPCheqUevjoE3Jt7dVqYQMdlXkbWcjcoY1lVmr2545Ej2QN0Xo+PGAHkD1g==}
dependencies:
- '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
- tuicall-engine-webrtc: 3.1.6(react-native@0.76.5)(react@19.0.0)
- transitivePeerDependencies:
- - react
- - react-native
+ '@tencentcloud/tui-core': 2.4.0
+ tuicall-engine-webrtc: 3.1.7
dev: false
- /@tencentcloud/call-uikit-vue@3.3.9(react-native@0.76.5)(react@19.0.0):
- resolution: {integrity: sha512-fFwQSAU+PVqantxbabRZa268BBBcv+hIX265Ag3ogYcrKq/hEo8XyH7nkjZL8wkQ2hFvnkwUgMMLXVeAgyMsng==}
+ /@tencentcloud/call-uikit-vue@4.0.4(react-native@0.76.5)(react@19.0.0):
+ resolution: {integrity: sha512-U7WC1HTr5rYnP2xFmpbOVCqa5ErWUMyDPNRNxSdbdrh4nML27VYqR4FWkGEFnm1+ZL2wVe3eE6W5XpmIlUgwoA==}
dependencies:
+ '@tencentcloud/call-engine-js': 3.0.0(react-native@0.76.5)(react@19.0.0)
'@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
- '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
- tuicall-engine-webrtc: 3.1.6(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/tui-core': 2.4.0
transitivePeerDependencies:
- react
- react-native
dev: false
- /@tencentcloud/chat-uikit-engine@2.4.0(react-native@0.76.5)(react@19.0.0):
+ /@tencentcloud/chat-uikit-engine@2.4.0:
resolution: {integrity: sha512-zE+bygEROaqgeMXXO+X2+2x8JH55mnb9c1sYQVQ507FlFT0maHxEQPOq8/EZBWowUDDlYoWbHh1EBAXEAI3dgA==}
dependencies:
- '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/chat': 3.5.3
tim-profanity-filter-plugin: 1.1.0
tim-upload-plugin: 1.4.2
- transitivePeerDependencies:
- - react
- - react-native
+ dev: false
+
+ /@tencentcloud/chat-uikit-engine@2.4.2:
+ resolution: {integrity: sha512-L5rr1mO98S1Uz5IndJ2QdGv++5zbSUTnGSz4x3rKx5lWXlcJzSo1RY9DxYcWTKQKos9bG2d4JIIeg4DlfGb+Pg==}
+ dependencies:
+ '@tencentcloud/chat': 3.5.3
+ tim-profanity-filter-plugin: 1.1.0
+ tim-upload-plugin: 1.4.2
dev: false
/@tencentcloud/chat-uikit-vue@2.0.0(@tiptap/core@2.1.13)(@tiptap/extension-document@2.1.13)(@tiptap/extension-image@2.1.13)(@tiptap/extension-mention@2.1.13)(@tiptap/extension-paragraph@2.1.13)(@tiptap/extension-placeholder@2.1.13)(@tiptap/extension-text@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13)(react-native@0.76.5)(react@19.0.0)(vue@3.5.11):
@@ -4162,11 +4182,11 @@
'@tiptap/pm': ^2.0.0-beta.220
'@tiptap/suggestion': ^2.0.0-beta.220
dependencies:
- '@tencentcloud/call-uikit-vue': 3.3.9(react-native@0.76.5)(react@19.0.0)
- '@tencentcloud/call-uikit-vue2': 3.3.9(react-native@0.76.5)(react@19.0.0)
- '@tencentcloud/call-uikit-vue2.6': 3.3.9(react-native@0.76.5)(react@19.0.0)(vue@3.5.11)
- '@tencentcloud/chat-uikit-engine': 2.4.0(react-native@0.76.5)(react@19.0.0)
- '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/call-uikit-vue': 4.0.4(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/call-uikit-vue2': 4.0.4(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/call-uikit-vue2.6': 4.0.4(react-native@0.76.5)(react@19.0.0)(vue@3.5.11)
+ '@tencentcloud/chat-uikit-engine': 2.4.2
+ '@tencentcloud/tui-core': 2.4.0
'@tencentcloud/tui-customer-service-plugin': 2.2.6(@tencentcloud/tui-core@2.4.0)(vue@3.5.11)
'@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
'@tiptap/extension-document': 2.1.13(@tiptap/core@2.1.13)
@@ -4191,15 +4211,19 @@
/@tencentcloud/chat@3.5.2(react-native@0.76.5)(react@19.0.0):
resolution: {integrity: sha512-UuGswGE3jaPgAFHA5kMDASI4Vq5p3lzeK9YisN5kkl9dcxh7BKbxTp5qtD8Fy7tj4VcWbytCb6ytCufmThbDXA==}
dependencies:
- '@tencentcloud/react-native-push': 1.1.0(react-native@0.76.5)(react@19.0.0)
- '@tencentcloud/uni-app-push': 1.1.0
+ '@tencentcloud/react-native-push': 1.2.0(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/uni-app-push': 1.2.0
transitivePeerDependencies:
- react
- react-native
dev: false
- /@tencentcloud/react-native-push@1.1.0(react-native@0.76.5)(react@19.0.0):
- resolution: {integrity: sha512-6TvPhNnKrBvd6j9dUwFLpkmV9WkdkaQstNvzdK1nIWQgWCTJGFnyiNDEn8zwN2VZkG+MzjYwNqMcVkMMU9Ao2g==}
+ /@tencentcloud/chat@3.5.3:
+ resolution: {integrity: sha512-1iC9CW+8sMcUtZXjB+97N65uyqRAV73InfKCzXtU/igxPqT8nfzfkrcjhi7JfywaKR3jGC1j8tDpsFNlLepFqQ==}
+ dev: false
+
+ /@tencentcloud/react-native-push@1.2.0(react-native@0.76.5)(react@19.0.0):
+ resolution: {integrity: sha512-/GI4J1LNnbCz1LxJ6WHtYhymoVg8ot5gASJ9o/YczgghynnZf7b9rfe2d8Z43YjhPog9Rx1Jfdqb3WVa8T7w0A==}
peerDependencies:
react: '*'
react-native: '>= 0.75'
@@ -4208,26 +4232,20 @@
react-native: 0.76.5(@babel/core@7.25.7)(@babel/preset-env@7.25.8)(react@19.0.0)
dev: false
- /@tencentcloud/tui-core@2.0.0(react-native@0.76.5)(react@19.0.0):
+ /@tencentcloud/tui-core@2.0.0:
resolution: {integrity: sha512-KBwDFWFV+IGtAZ82uCjRi891nMQcAen0wZHdPUUTSNHaWGjYiwOAHD7yw4gC1c5DYqVYMa3tVA7bSBd/hKVZKg==}
dependencies:
- '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/chat': 3.5.3
tim-profanity-filter-plugin: 0.9.0
tim-upload-plugin: 1.3.0
- transitivePeerDependencies:
- - react
- - react-native
dev: false
- /@tencentcloud/tui-core@2.4.0(react-native@0.76.5)(react@19.0.0):
+ /@tencentcloud/tui-core@2.4.0:
resolution: {integrity: sha512-OFXHoi8CQlPtWvNRLApg0wonWbW79uoTgAqqffqWO1icx3xDYd2RZDHMzpBexOsE3CHpWokrfXrqiXkpOmYWew==}
dependencies:
- '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/chat': 3.5.3
tim-profanity-filter-plugin: 1.1.0
tim-upload-plugin: 1.4.2
- transitivePeerDependencies:
- - react
- - react-native
dev: false
/@tencentcloud/tui-customer-service-plugin@2.2.6(@tencentcloud/tui-core@2.4.0)(vue@3.5.11):
@@ -4235,19 +4253,19 @@
peerDependencies:
'@tencentcloud/tui-core': latest
'@vue/composition-api': ^1.0.0-rc.1
- vue: ^2.0.0 || >=3.0.0
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/composition-api':
optional: true
dependencies:
- '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/tui-core': 2.4.0
'@tencentcloud/universal-api': 2.4.0
marked: 4.0.0
vue: 3.5.11(typescript@4.8.4)
dev: false
- /@tencentcloud/uni-app-push@1.1.0:
- resolution: {integrity: sha512-9z8zgAxExwuxzuxq1sFK3jmRJOKG/BNL8i9v+a3jVK/R7XL7ROE5EPWh4gRYABb9DC48NK9hwx2RFqPTlbR/xg==}
+ /@tencentcloud/uni-app-push@1.2.0:
+ resolution: {integrity: sha512-l+hTZ4IkfgTqVLkDMWaJyAdTSM6HArPZ1PYi/V7j21XwsIJh21bEBGQ6UwojuRlOIbQDuZ32o+ZkjcVn2Gj8HA==}
engines: {HBuilderX: ^3.6.8}
dev: false
@@ -5048,7 +5066,7 @@
peerDependencies:
'@types/video.js': 7.x
video.js: 7.x
- vue: 3.x
+ vue: 3.5.11
dependencies:
'@types/video.js': 7.3.49
video.js: 7.20.3
@@ -5114,7 +5132,7 @@
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0
- vue: ^3.0.0
+ vue: 3.5.11
dependencies:
'@babel/core': 7.25.7
'@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.7)
@@ -5130,7 +5148,7 @@
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0
- vue: ^3.2.25
+ vue: 3.5.11
dependencies:
vite: 5.4.8(@types/node@18.7.18)(sass@1.55.0)(terser@5.34.1)
vue: 3.5.11(typescript@4.8.4)
@@ -5278,7 +5296,7 @@
/@vue/composition-api@1.7.2(vue@3.5.11):
resolution: {integrity: sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==}
peerDependencies:
- vue: '>= 2.5 < 2.7'
+ vue: 3.5.11
dependencies:
vue: 3.5.11(typescript@4.8.4)
dev: false
@@ -5406,7 +5424,7 @@
resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==}
peerDependencies:
'@vue/composition-api': ^1.1.0
- vue: ^2.6.0 || ^3.2.0
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/composition-api':
optional: true
@@ -5447,7 +5465,7 @@
resolution: {integrity: sha512-cAZqXexLX6xo+H1N1Mv+wBSSqG4wB+BdjIuHQ50jwlelXCDxSi8gj0K/9nDS+aUZtWh6YMwS6UGCKg58jMVglA==}
peerDependencies:
'@vue/composition-api': ^1.4.1
- vue: ^2.0.0 || >=3.0.0-rc.0
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/composition-api':
optional: true
@@ -5473,7 +5491,7 @@
resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==}
peerDependencies:
'@vue/composition-api': ^1.1.0
- vue: ^2.6.0 || ^3.2.0
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/composition-api':
optional: true
@@ -5571,7 +5589,7 @@
resolution: {integrity: sha512-Xkrdo590AhLHvzyR+U246t6T89nIWHz1weAgMuo8jEA2HS5RiUnsA4U6+iUGaQ2E5c8mYQaeNqzHQXUp9Okbiw==}
peerDependencies:
'@wangeditor-next/editor': '>=5.1.0'
- vue: ^3.0.5
+ vue: 3.5.11
dependencies:
'@wangeditor-next/editor': 5.3.14
vue: 3.5.11(typescript@4.8.4)
@@ -7966,7 +7984,6 @@
domelementtype: 2.3.0
domhandler: 5.0.3
entities: 4.5.0
- dev: true
/dom-walk@0.1.2:
resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
@@ -8001,7 +8018,6 @@
engines: {node: '>= 4'}
dependencies:
domelementtype: 2.3.0
- dev: true
/domutils@1.7.0:
resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
@@ -8023,7 +8039,6 @@
dom-serializer: 2.0.0
domelementtype: 2.3.0
domhandler: 5.0.3
- dev: true
/dot-case@3.0.4:
resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
@@ -8097,7 +8112,7 @@
/element-plus@2.8.4(vue@3.5.11):
resolution: {integrity: sha512-ZlVAdUOoJliv4kW3ntWnnSHMT+u/Os7mXJjk2xzOlqNeHaI2/ozlF+R58ZCEak8ZnDi6+5A2viWEYRsq64IuiA==}
peerDependencies:
- vue: ^3.2.0
+ vue: 3.5.11
dependencies:
'@ctrl/tinycolor': 3.4.1
'@element-plus/icons-vue': 2.3.1(vue@3.5.11)
@@ -9026,6 +9041,10 @@
/event-target-shim@5.0.1:
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
engines: {node: '>=6'}
+ dev: false
+
+ /eventemitter3@4.0.7:
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
dev: false
/execa@5.1.1:
@@ -9998,7 +10017,6 @@
domhandler: 5.0.3
domutils: 3.0.1
entities: 4.5.0
- dev: true
/http-errors@2.0.0:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
@@ -10902,7 +10920,6 @@
/js-tokens@8.0.0:
resolution: {integrity: sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA==}
- dev: true
/js-tokens@9.0.0:
resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
@@ -12209,7 +12226,6 @@
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- dev: true
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
@@ -13033,7 +13049,6 @@
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
- dev: true
/picocolors@1.1.0:
resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
@@ -13073,7 +13088,7 @@
peerDependencies:
'@vue/composition-api': ^1.4.0
typescript: '>=4.4.4'
- vue: ^2.6.14 || ^3.3.0
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/composition-api':
optional: true
@@ -13314,7 +13329,7 @@
dependencies:
htmlparser2: 3.10.1
postcss: 7.0.39
- postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+ postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
dev: false
/postcss-html@1.5.0:
@@ -13325,7 +13340,6 @@
js-tokens: 8.0.0
postcss: 8.4.18
postcss-safe-parser: 6.0.0(postcss@8.4.18)
- dev: true
/postcss-image-set-function@7.0.0(postcss@8.4.18):
resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==}
@@ -13358,7 +13372,7 @@
dependencies:
'@babel/core': 7.25.7
postcss: 7.0.39
- postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+ postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.5)(postcss@8.4.18)
transitivePeerDependencies:
- supports-color
dev: false
@@ -13401,7 +13415,7 @@
postcss-syntax: '>=0.36.0'
dependencies:
postcss: 7.0.39
- postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+ postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.5)(postcss@8.4.18)
remark: 10.0.1
unist-util-find-all-after: 1.0.5
dev: false
@@ -13588,7 +13602,6 @@
postcss: ^8.3.3
dependencies:
postcss: 8.4.18
- dev: true
/postcss-sass@0.3.5:
resolution: {integrity: sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==}
@@ -13618,7 +13631,6 @@
postcss: ^8.3.3
dependencies:
postcss: 8.4.18
- dev: true
/postcss-selector-not@8.0.0(postcss@8.4.18):
resolution: {integrity: sha512-g/juh7A83GWc3+kWL8BiS3YUIJb3XNqIVKz1kGvgN3OhoGCsPncy1qo/+q61tjy5r87OxBhSY1+hcH3yOhEW+g==}
@@ -13678,7 +13690,7 @@
postcss: 8.4.18
dev: true
- /postcss-syntax@0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39):
+ /postcss-syntax@0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39):
resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==}
peerDependencies:
postcss: '>=5.0.0'
@@ -13701,10 +13713,34 @@
dependencies:
postcss: 7.0.39
postcss-html: 0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39)
- postcss-jsx: 0.36.4(postcss-syntax@0.36.2)(postcss@7.0.39)
postcss-less: 3.1.4
- postcss-markdown: 0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39)
postcss-scss: 2.1.1
+ dev: false
+
+ /postcss-syntax@0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.5)(postcss@8.4.18):
+ resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==}
+ peerDependencies:
+ postcss: '>=5.0.0'
+ postcss-html: '*'
+ postcss-jsx: '*'
+ postcss-less: '*'
+ postcss-markdown: '*'
+ postcss-scss: '*'
+ peerDependenciesMeta:
+ postcss-html:
+ optional: true
+ postcss-jsx:
+ optional: true
+ postcss-less:
+ optional: true
+ postcss-markdown:
+ optional: true
+ postcss-scss:
+ optional: true
+ dependencies:
+ postcss: 8.4.18
+ postcss-html: 1.5.0
+ postcss-scss: 4.0.5(postcss@8.4.18)
dev: false
/postcss-value-parser@3.3.1:
@@ -13739,7 +13775,6 @@
nanoid: 3.3.4
picocolors: 1.0.0
source-map-js: 1.0.2
- dev: true
/postcss@8.4.47:
resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
@@ -14800,6 +14835,10 @@
resolution: {integrity: sha512-53e/4a4lT96K004mqDnLDE+upNSpBLRMfFgYCeIw3Gvuw9F17nxLP5v8MOVLly4/Epomxkx4SXrOFJJMxD2pIw==}
dev: false
+ /rtc-detect@0.0.5:
+ resolution: {integrity: sha512-VANIELbaoIkZRj4gyiCCbTM+/ASy0eNgF35jCs+rrGxzYvD7YIBajEbGGZeh+5ZCNAX8/rT8IVRdpuallf174Q==}
+ dev: false
+
/run-applescript@7.0.0:
resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
engines: {node: '>=18'}
@@ -14983,7 +15022,7 @@
file-saver: '*'
lodash: '*'
semver: '*'
- vue: '*'
+ vue: 3.5.11
xlsx: '*'
xlsx-style: '*'
dependencies:
@@ -15011,7 +15050,7 @@
mitt: '*'
semver: '*'
senin-help: '*'
- vue: '*'
+ vue: 3.5.11
dependencies:
'@tanstack/vue-query': 4.37.1(vue@3.5.11)
axios: 1.7.7
@@ -15342,7 +15381,6 @@
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
- dev: true
/source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
@@ -15899,7 +15937,7 @@
postcss-sass: 0.4.4
postcss-scss: 2.1.1
postcss-selector-parser: 6.1.1
- postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+ postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
postcss-value-parser: 4.2.0
resolve-from: 5.0.0
slash: 3.0.0
@@ -16006,7 +16044,7 @@
postcss-sass: 0.3.5
postcss-scss: 2.1.1
postcss-selector-parser: 3.1.2
- postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+ postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.5)(postcss@8.4.18)
postcss-value-parser: 3.3.1
resolve-from: 4.0.0
signal-exit: 3.0.7
@@ -16362,6 +16400,12 @@
trtc-sdk-v5: 5.6.2
dev: false
+ /trtc-cloud-js-sdk@2.9.0:
+ resolution: {integrity: sha512-m2gufzg1yqnyPUanLJJXgyPzenRSyH1stK16EDrDINQo1FCPeCmY0kDARF1NiLZJLKm9lUP5DQsrUUKn4LYkPg==}
+ dependencies:
+ trtc-sdk-v5: 5.9.1
+ dev: false
+
/trtc-js-sdk@4.15.19:
resolution: {integrity: sha512-FFVvaji65d7+aq5o4hE+5lamvL1CEolNTPavaN7sRzh8Bb5UdDieBL9jV+lfxCnYpJ5lMi1YJt+EynDPX20Asw==}
dependencies:
@@ -16370,6 +16414,12 @@
/trtc-sdk-v5@5.6.2:
resolution: {integrity: sha512-Ylt9LePeHyet2+hABcDxKSMTRMY6IVukw72yvRXgpRi2iR/sDLFSKtj+i3EeQ/BJZZWSTuyFXbolHpVJMPxgPg==}
+ dependencies:
+ webrtc-adapter: 8.2.3
+ dev: false
+
+ /trtc-sdk-v5@5.9.1:
+ resolution: {integrity: sha512-Vzu1UIzIQtQ3zUQHruha1Zh13aXsDsi/edMdwWdpO8URmRraqftsgKxjR8x2GPHd6p4cDreR/wY50xrWu9ZPlw==}
dependencies:
webrtc-adapter: 8.2.3
dev: false
@@ -16450,15 +16500,16 @@
tslib: 1.14.1
typescript: 4.8.4
- /tuicall-engine-webrtc@3.1.6(react-native@0.76.5)(react@19.0.0):
- resolution: {integrity: sha512-NdRwZTHbqp4LnDEoRfQDa7Z1oH4g156j27awgy2PYO4dBtm7EjAJLFKZeaZZzErU67uW4EuSBRMeCeFx91JKpQ==}
+ /tuicall-engine-webrtc@3.1.7:
+ resolution: {integrity: sha512-MRye9/x/8Gy5aRAfEACLtGhK5RcBLAev7cgCGi7OLNt0Uj28mEJkt1tHs4p7xTQiQj6vcB+7OVTdsxuSq7EmOA==}
dependencies:
- '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
+ '@tencentcloud/chat': 3.5.3
rtc-ai-denoiser: 1.1.7
trtc-cloud-js-sdk: 2.5.0
- transitivePeerDependencies:
- - react
- - react-native
+ dev: false
+
+ /tuikit-logger@0.0.4-beta.1:
+ resolution: {integrity: sha512-Ky83B1p88xakmfZ2f92cU0YxfolyxnQBv14tQpvnuHcMTnVR2Rjy8tityDGwF+pnxrAhJ7H7OPB/4rFdWVncIw==}
dev: false
/type-check@0.4.0:
@@ -16851,7 +16902,7 @@
peerDependencies:
'@babel/parser': ^7.15.8
'@nuxt/kit': ^3.2.2
- vue: 2 || 3
+ vue: 3.5.11
peerDependenciesMeta:
'@babel/parser':
optional: true
@@ -17342,7 +17393,7 @@
requiresBuild: true
peerDependencies:
'@vue/composition-api': ^1.0.0-rc.1
- vue: ^3.0.0-0 || ^2.6.0
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/composition-api':
optional: true
@@ -17357,7 +17408,7 @@
requiresBuild: true
peerDependencies:
'@vue/composition-api': ^1.0.0-rc.1
- vue: ^3.0.0-0 || ^2.6.0
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/composition-api':
optional: true
@@ -17369,7 +17420,7 @@
peerDependencies:
'@vue/runtime-core': ^3.0.0
echarts: ^5.5.1
- vue: ^2.7.0 || ^3.1.1
+ vue: 3.5.11
peerDependenciesMeta:
'@vue/runtime-core':
optional: true
@@ -17402,7 +17453,7 @@
/vue-router@4.4.5(vue@3.5.11):
resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==}
peerDependencies:
- vue: ^3.2.0
+ vue: 3.5.11
dependencies:
'@vue/devtools-api': 6.6.4
vue: 3.5.11(typescript@4.8.4)
@@ -17424,7 +17475,7 @@
resolution: {integrity: sha512-3Wy6QcZl0VusCCHX3vYrWSILFlrOB2EQDoySnuYmASM5cUp1FivJGfkS5lp1CutDgyRb41g32r/1QCmiBj5i1Q==}
engines: {node: '>=14.0.0'}
peerDependencies:
- vue: ^2.0.0 || ^3.0.0
+ vue: 3.5.11
peerDependenciesMeta:
vue:
optional: true
@@ -17888,7 +17939,3 @@
/zwitch@1.0.5:
resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
dev: false
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
diff --git a/src/components/Layout/ChunkCellV2.vue b/src/components/Layout/ChunkCellV2.vue
new file mode 100644
index 0000000..bcf8b10
--- /dev/null
+++ b/src/components/Layout/ChunkCellV2.vue
@@ -0,0 +1,40 @@
+<template>
+ <div class="chunk-cell-v2">
+ <div class="chunk-cell-v2-title">{{ props.title }}</div>
+ <div class="chunk-cell-v2-content"><slot></slot></div>
+ </div>
+</template>
+
+<script setup lang="ts">
+defineOptions({
+ name: 'ChunkCellV2',
+});
+
+type Props = {
+ title?: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {
+ title: '',
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.chunk-cell-v2 {
+ .chunk-cell-v2-title {
+ height: 48px;
+ font-size: 16px;
+ color: getCssVar('text-color', 'primary');
+ line-height: 48px;
+ }
+ margin-bottom: 24px;
+ border-bottom: 1px solid getCssVar('border-color', 'lighter');
+
+ &:last-child {
+ margin-bottom: 0;
+ border-bottom: none;
+ }
+}
+</style>
diff --git a/src/components/commonView/BatchInfoView.vue b/src/components/commonView/BatchInfoView.vue
new file mode 100644
index 0000000..b5442c6
--- /dev/null
+++ b/src/components/commonView/BatchInfoView.vue
@@ -0,0 +1,78 @@
+<template>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鐢虫姤鎵规鍙�:" prop="applyNo">
+ <ProFormText placeholder="璇疯緭鍏ョ敵鎶ユ壒娆″彿" v-model.trim="form.categoryName" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鐢宠濂栧姳閲戞湀浠�:" prop="applyDate">
+ <ProFormDatePicker
+ v-model="form.categoryName"
+ format="YYYY-MM"
+ placeholder="璇烽�夋嫨鏈堜唤"
+ type="month"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鐢虫姤鍥尯:" prop="applyParkId">
+ <ProFormSelect
+ v-model="form.categoryName"
+ :valueEnum="[]"
+ enumLabelKey="name"
+ enum-value-key="userId"
+ placeholder="璇烽�夋嫨鐢虫姤鍥尯"
+ >
+ </ProFormSelect>
+ </ProFormItemV2>
+ </ProFormColItem>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鍥尯绫诲瀷:">
+ <ProFormSelect
+ v-model="form.categoryName"
+ :valueEnum="parkTypeList"
+ enumLabelKey="name"
+ enum-value-key="id"
+ >
+ </ProFormSelect>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+</template>
+
+<script setup lang="ts">
+import {
+ ProFormItemV2,
+ ProFormCol,
+ ProFormColItem,
+ ProFormText,
+ ProFormDatePicker,
+ ProFormSelect,
+ ProFormMixinsItemContainer,
+} from '@bole-core/components';
+import { useAllSearchSettingList } from '@/hooks';
+import { SearchType } from '@/constants';
+
+defineOptions({
+ name: 'BatchInfoView',
+});
+
+type Props = {
+ form: {
+ categoryName: string;
+ };
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const { allSearchSettingList: parkTypeList } = useAllSearchSettingList({
+ searchType: SearchType.Park,
+ enabled: true,
+ status: true,
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/components/commonView/DeclareEnterpriseTableView.vue b/src/components/commonView/DeclareEnterpriseTableView.vue
new file mode 100644
index 0000000..d05884c
--- /dev/null
+++ b/src/components/commonView/DeclareEnterpriseTableView.vue
@@ -0,0 +1,145 @@
+<template>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.title"
+ style="width: 250px"
+ placeholder="浼佷笟鍚�/淇$敤浠g爜"
+ @on-click-search="getList"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2
+ v-bind="proTableProps"
+ :columns="column"
+ :operationBtns="operationBtns"
+ :autoHeight="false"
+ :tableProps="{
+ maxHeight: '400px',
+ }"
+ >
+ </ProTableV2>
+ <MateriaDetailDialog v-bind="dialogProps"></MateriaDetailDialog>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ QueryFilterItem,
+ ProTableV2,
+ SearchInput,
+ useFormDialog,
+ useTable,
+ defineOperationBtns,
+ defineColumns,
+} from '@bole-core/components';
+import MateriaDetailDialog from './MateriaDetailDialog.vue';
+import { FourStreamsMaterialFileTableItem } from './types';
+import { OrderInputType } from '@bole-core/core';
+import * as informationServices from '@/services/api/Information';
+
+defineOptions({
+ name: 'DeclareEnterpriseTableView',
+});
+
+type Props = {};
+
+const props = withDefaults(defineProps<Props>(), {});
+
+const column = defineColumns([
+ {
+ id: '1',
+ enCode: 'accDateTime',
+ name: '浜ゆ槗鏃堕棿',
+ },
+ {
+ id: '2',
+ enCode: 'income',
+ name: '鏀跺叆',
+ },
+ {
+ id: '3',
+ enCode: 'outcome',
+ name: '鏀嚭',
+ },
+ {
+ id: '4',
+ enCode: 'acctBalance',
+ name: '璐︽埛浣欓',
+ },
+ {
+ id: '5',
+ enCode: 'counterpartyAcctNoAndName',
+ name: '瀵规柟璐﹀彿/鎴峰悕',
+ },
+ {
+ id: '6',
+ enCode: 'purpose',
+ name: '鐢ㄩ��',
+ },
+]);
+
+const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'detailBtn',
+ name: '璇︽儏',
+ },
+ emits: {
+ onClick: (role) => openDialog(role),
+ },
+ },
+]);
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetInformationForManageInput = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ title: extraParamState.title,
+ };
+ let res = await informationServices.getInformationForManage(params);
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+ title: '',
+ },
+ }
+);
+
+const { dialogProps, handleEdit, editForm } = useFormDialog({
+ defaultFormParams: {
+ list: [] as FourStreamsMaterialFileTableItem[],
+ },
+});
+
+function openDialog(row?: API.IncentivePaymentsManageListOutput) {
+ handleEdit({
+ list: [],
+ });
+}
+
+defineExpose({
+ getList,
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/components/commonView/DetailView.vue b/src/components/commonView/DetailView.vue
new file mode 100644
index 0000000..a473325
--- /dev/null
+++ b/src/components/commonView/DetailView.vue
@@ -0,0 +1,63 @@
+<template>
+ <ProForm :model="form" label-width="160px" label-position="left" is-read>
+ <ChunkCellV2 title="鏉愭枡瀹℃牳">
+ <BatchInfoView :form="form"></BatchInfoView>
+ </ChunkCellV2>
+ <ChunkCellV2 title="姹囨�绘潗鏂�">
+ <MaterialInfoView :form="form"></MaterialInfoView>
+ </ChunkCellV2>
+ <ChunkCellV2 title="姹囩畻鏉愭枡">
+ <SettlementMaterialInfoView :form="form"></SettlementMaterialInfoView>
+ </ChunkCellV2>
+ <ChunkCellV2 title="鐢虫姤浼佷笟鍚嶅崟" class="chunk-cell-table">
+ <slot name="table"> </slot>
+ </ChunkCellV2>
+ <ChunkCell v-if="hasForm">
+ <slot name="form"></slot>
+ </ChunkCell>
+ </ProForm>
+</template>
+
+<script setup lang="ts">
+import { ProForm, UploadUserFile, ChunkCell } from '@bole-core/components';
+import ChunkCellV2 from '@/components/Layout/ChunkCellV2.vue';
+import BatchInfoView from './BatchInfoView.vue';
+import MaterialInfoView from './MaterialInfoView.vue';
+import SettlementMaterialInfoView from './SettlementMaterialInfoView.vue';
+import DeclareEnterpriseTableView from './DeclareEnterpriseTableView.vue';
+
+defineOptions({
+ name: 'DetailView',
+});
+
+type Props = {
+ hasForm?: boolean;
+ form?: {
+ categoryName: string;
+ amount: number;
+ url: UploadUserFile[];
+ };
+};
+
+const props = withDefaults(defineProps<Props>(), {
+ hasForm: false,
+});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.page-form-layout {
+ .el-form {
+ padding-bottom: 22px;
+ }
+
+ .chunk-cell-table {
+ :deep() {
+ .chunk-cell-v2-content {
+ margin-bottom: 30px;
+ }
+ }
+ }
+}
+</style>
diff --git a/src/components/commonView/FourStreamsMaterialFileTable.vue b/src/components/commonView/FourStreamsMaterialFileTable.vue
new file mode 100644
index 0000000..c109630
--- /dev/null
+++ b/src/components/commonView/FourStreamsMaterialFileTable.vue
@@ -0,0 +1,179 @@
+<template>
+ <div>
+ <ProTableV2
+ :tableData="list"
+ :columns="columns"
+ :autoHeight="false"
+ :operationBtns="operationBtns"
+ :operationColumnWidth="240"
+ :showTableColumnSetting="false"
+ >
+ <template #fileBusinessType="{ row }">
+ {{ AllEnterpriseMaterialFileBusinessTypeEnumText[row.fileBusinessType] }}
+ </template>
+ <template #operationBtn-uploadBtn="{ data, row }">
+ <BlFileUpload
+ v-model:file-url="row.fileList"
+ multiple
+ :limit="1"
+ ref="uploadRef"
+ :showTip="false"
+ :show-file-list="false"
+ class="pro-table-operation-btn upload-style-btn"
+ >
+ <el-button text type="primary" class="pro-table-operation-btn">涓婁紶</el-button>
+ </BlFileUpload>
+ </template>
+ </ProTableV2>
+ </div>
+</template>
+
+<script setup lang="ts">
+import { FourStreamsMaterialFileTableProps, FourStreamsMaterialFileTableItem } from './types';
+import {
+ ProTableV2,
+ defineColumns,
+ defineOperationBtns,
+ BlFileUpload,
+ bolePreview,
+} from '@bole-core/components';
+import { AllEnterpriseMaterialFileBusinessTypeEnumText } from '@/constants';
+import { downloadFileByUrl } from '@/utils';
+import { Message, isFileCanPreview } from '@bole-core/core';
+
+defineOptions({
+ name: 'FourStreamsMaterialFileTable',
+});
+
+const props = withDefaults(defineProps<FourStreamsMaterialFileTableProps>(), {
+ showUploadBtn: true,
+ showCheckBtn: true,
+ showDownloadBtn: true,
+ showDeleteBtn: true,
+});
+
+const list = defineModel<FourStreamsMaterialFileTableItem[]>('list');
+
+const columns = defineColumns([
+ {
+ id: '1',
+ enCode: 'fileBusinessType',
+ name: '鏉愭枡鍚嶇О',
+ },
+]);
+
+const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'uploadBtn',
+ name: '涓婁紶',
+ },
+ extraProps: {
+ hide: (row: FourStreamsMaterialFileTableItem) => {
+ if (!props.showUploadBtn) return true;
+ let fileList = row?.fileList?.filter?.((item) => item.status === 'success');
+ return fileList?.length > 0;
+ },
+ },
+ },
+ {
+ data: {
+ enCode: 'detailBtn',
+ name: '鏌ョ湅',
+ },
+ emits: {
+ onClick: (row) => handlePreview(row),
+ },
+ extraProps: {
+ hide: (row: FourStreamsMaterialFileTableItem) => {
+ if (!props.showCheckBtn) return true;
+ let fileList = row?.fileList?.filter?.((item) => item.status === 'success');
+ if (!fileList?.length) {
+ return true;
+ } else {
+ if (fileList.length > 1) {
+ return false;
+ } else {
+ return !isFileCanPreview(fileList[0].path);
+ }
+ }
+ },
+ },
+ },
+ {
+ data: {
+ enCode: 'downloadBtn',
+ name: '涓嬭浇',
+ },
+ emits: {
+ onClick: (row) => handleBatchDownload(row),
+ },
+ extraProps: {
+ hide: (row: FourStreamsMaterialFileTableItem) => {
+ return (
+ !props.showDownloadBtn ||
+ !row?.fileList?.filter?.((item) => item.status === 'success')?.length
+ );
+ },
+ },
+ },
+ {
+ data: {
+ enCode: 'delBtn',
+ name: '鍒犻櫎',
+ },
+ props: {
+ type: 'danger',
+ },
+ emits: {
+ onClick: (row) => handleDelete(row),
+ },
+ extraProps: {
+ hide: (row: FourStreamsMaterialFileTableItem) => {
+ if (!props.showDeleteBtn) return true;
+ let fileList = row?.fileList?.filter?.((item) => item.status === 'success');
+ return !fileList?.length;
+ },
+ },
+ },
+]);
+
+async function handleDelete(row: FourStreamsMaterialFileTableItem) {
+ try {
+ await Message.deleteMessage();
+ row.fileList = [];
+ } catch (error) {}
+}
+
+async function handlePreview(row: FourStreamsMaterialFileTableItem) {
+ if (row.fileList.length > 1) {
+ // currentEnterpriseMaterialFileTableItem.value = row;
+ // await nextTick();
+ // dialogState.dialogVisible = true;
+ } else {
+ bolePreview({
+ fileUrl: row.fileList[0].url,
+ });
+ }
+}
+
+function handleBatchDownload(row: FourStreamsMaterialFileTableItem) {
+ const successFileList = row.fileList.filter((item) => item.status === 'success');
+ if (successFileList.length === 0) {
+ Message.errorMessage('娌℃湁鍙笅杞界殑鏂囦欢');
+ return;
+ }
+ if (successFileList.length === 1) {
+ downloadFileByUrl(successFileList[0].url);
+ } else {
+ // downloadWithZip(
+ // successFileList.map((item) => ({ data: item.url })),
+ // `${AllEnterpriseMaterialFileBusinessTypeEnumText[row.fileBusinessType]}鏉愭枡鏂囦欢`
+ // );
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/components/commonView/MateriaDetailDialog.vue b/src/components/commonView/MateriaDetailDialog.vue
new file mode 100644
index 0000000..1ab3ce2
--- /dev/null
+++ b/src/components/commonView/MateriaDetailDialog.vue
@@ -0,0 +1,46 @@
+<template>
+ <ProDialog title="鏉愭枡璇︽儏" v-model="visible" destroy-on-close draggable width="800px">
+ <FourStreamsMaterialFileTable v-model:list="form.list" v-bind="props" />
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { ProDialog } from '@bole-core/components';
+import FourStreamsMaterialFileTable from './FourStreamsMaterialFileTable.vue';
+import { FourStreamsMaterialFileTableProps, FourStreamsMaterialFileTableItem } from './types';
+
+defineOptions({
+ name: 'MateriaDetailDialog',
+});
+
+type Props = FourStreamsMaterialFileTableProps & {};
+
+const props = withDefaults(defineProps<Props>(), {
+ showUploadBtn: true,
+ showCheckBtn: true,
+ showDownloadBtn: true,
+ showDeleteBtn: true,
+});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+ list: FourStreamsMaterialFileTableItem[];
+};
+
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+function handleConfirm() {
+ emit('onConfirm');
+}
+</script>
diff --git a/src/components/commonView/MaterialInfoView.vue b/src/components/commonView/MaterialInfoView.vue
new file mode 100644
index 0000000..4c67bf9
--- /dev/null
+++ b/src/components/commonView/MaterialInfoView.vue
@@ -0,0 +1,42 @@
+<template>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="浼佷笟缂寸◣鏄庣粏姹囨�昏〃:" prop="link">
+ <ProFormUpload v-model:file-url="form.url"></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="浼佷笟钀ユ敹姹囨�昏〃:" prop="link">
+ <ProFormUpload v-model:file-url="form.url"></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+</template>
+
+<script setup lang="ts">
+import {
+ ProFormCol,
+ ProFormColItem,
+ ProFormItemV2,
+ ProFormUpload,
+ UploadUserFile,
+} from '@bole-core/components';
+
+defineOptions({
+ name: 'MaterialInfoView',
+});
+
+type Props = {
+ form: {
+ url: UploadUserFile[];
+ };
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/components/commonView/SettlementMaterialInfoView.vue b/src/components/commonView/SettlementMaterialInfoView.vue
new file mode 100644
index 0000000..5bbb622
--- /dev/null
+++ b/src/components/commonView/SettlementMaterialInfoView.vue
@@ -0,0 +1,51 @@
+<template>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="鏈鐢虫姤濂栧姳閲戞�婚:" prop="link">
+ <ProFormInputNumber v-model="form.amount" unit="鍏�" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="濂栧姳閲戝垎閰嶆槑缁嗚〃:" prop="link">
+ <ProFormUpload v-model:file-url="form.url"></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="濂栧姳閲戞眹鎬昏〃:" prop="link">
+ <ProFormUpload v-model:file-url="form.url"></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+</template>
+
+<script setup lang="ts">
+import {
+ ProFormCol,
+ ProFormColItem,
+ ProFormItemV2,
+ ProFormUpload,
+ UploadUserFile,
+ ProFormInputNumber,
+} from '@bole-core/components';
+
+defineOptions({
+ name: 'SettlementMaterialInfoView',
+});
+
+type Props = {
+ form: {
+ amount: number;
+ url: UploadUserFile[];
+ };
+};
+
+const props = withDefaults(defineProps<Props>(), {});
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/components/commonView/types.ts b/src/components/commonView/types.ts
new file mode 100644
index 0000000..73dff5f
--- /dev/null
+++ b/src/components/commonView/types.ts
@@ -0,0 +1,14 @@
+import { EnterpriseMaterialFileBusinessTypeEnum } from '@/constants';
+import { UploadUserFile } from '@bole-core/components';
+
+export type FourStreamsMaterialFileTableProps = {
+ showUploadBtn?: boolean;
+ showCheckBtn?: boolean;
+ showDownloadBtn?: boolean;
+ showDeleteBtn?: boolean;
+};
+
+export type FourStreamsMaterialFileTableItem = {
+ fileBusinessType: EnterpriseMaterialFileBusinessTypeEnum;
+ fileList: (API.AddEnterpriseMaterialFileInput & UploadUserFile)[];
+};
diff --git a/src/constants/dic.ts b/src/constants/dic.ts
new file mode 100644
index 0000000..2bd2ed0
--- /dev/null
+++ b/src/constants/dic.ts
@@ -0,0 +1,43 @@
+export enum SearchType {
+ Hot = 10,
+ Service = 20,
+ Work = 30,
+ Park = 40,
+ Info = 50,
+ Policy = 60,
+ RegionalManagement = 70,
+ ProductType = 80,
+ DemandType = 90,
+ DemandRange = 100,
+ EmployeeBenefits = 110,
+ CompanyIndustry = 120,
+ HeadHunterPosition = 130,
+ ConsultationCategory = 140,
+ FAQCategory = 150,
+ IndustryCategory = 160,
+ FirstPartyIndustry = 170,
+ MatingServiceType = 180,
+ IndustryBodyType = 190,
+}
+
+export const SearchTypeText = {
+ [SearchType.Hot]: '鐑悳璇�',
+ [SearchType.Service]: '鏈嶅姟绫诲瀷',
+ [SearchType.Work]: '宸ョ',
+ [SearchType.Park]: '鍥尯绫诲瀷',
+ [SearchType.Info]: '璧勮娲诲姩绫诲瀷',
+ [SearchType.Policy]: '鏀跨瓥棰佸竷鏈烘瀯',
+ [SearchType.RegionalManagement]: '鍖哄煙绠$悊',
+ [SearchType.ProductType]: '浜у搧绫诲瀷',
+ [SearchType.DemandType]: '闇�姹傜被鍨�',
+ [SearchType.DemandRange]: '闇�姹傝寖鍥�',
+ [SearchType.EmployeeBenefits]: '鍛樺伐绂忓埄',
+ [SearchType.CompanyIndustry]: '鍏徃琛屼笟',
+ [SearchType.HeadHunterPosition]: '鐚庡ご鑱屼綅',
+ [SearchType.ConsultationCategory]: '鍜ㄨ绫诲埆',
+ [SearchType.FAQCategory]: '闂鍒嗙被',
+ [SearchType.IndustryCategory]: '琛屼笟绫诲埆',
+ [SearchType.FirstPartyIndustry]: '鐢叉柟琛屼笟',
+ [SearchType.MatingServiceType]: '閰嶅鏈嶅姟绫诲瀷',
+ [SearchType.IndustryBodyType]: '琛屼笟鏈烘瀯绫诲瀷',
+};
diff --git a/src/constants/enterpriseMaterial.ts b/src/constants/enterpriseMaterial.ts
new file mode 100644
index 0000000..88f2eb5
--- /dev/null
+++ b/src/constants/enterpriseMaterial.ts
@@ -0,0 +1,111 @@
+export enum EnterpriseMaterialTypeEnum {
+ /**
+ * 鍥涙祦鍚堜竴
+ */
+ FourStreams = 10,
+ /**
+ * 瀹岀◣鏉愭枡
+ */
+ Dutiable = 11,
+ /**
+ * 鍏跺畠鏉愭枡
+ */
+ Other = 20,
+}
+
+export const EnterpriseMaterialTypeEnumText = {
+ [EnterpriseMaterialTypeEnum.FourStreams]: '鍥涙祦鍚堜竴',
+ [EnterpriseMaterialTypeEnum.Dutiable]: '瀹岀◣鏉愭枡',
+ [EnterpriseMaterialTypeEnum.Other]: '鍏跺畠鏉愭枡',
+};
+
+/**
+ * 0-199涓哄洓娴佹潗鏂� 200-300涓哄畬绋庢潗鏂�
+ */
+export enum EnterpriseMaterialFileBusinessTypeEnum {
+ /**
+ * 宸ヨ祫琛�
+ */
+ PayRoll = 10,
+ /**
+ * 閾惰娴佹按
+ */
+ BankFlow = 20,
+ /**
+ * 浜哄憳淇℃伅琛�
+ */
+ Information = 30,
+ /**
+ * 宸ヨ祫钖噾鎵�寰�
+ */
+ Salary = 40,
+ /**
+ * 浠e彂鏄庣粏
+ */
+ DistributionDetails = 50,
+ /**
+ * 鍙戠エ
+ */
+ Invoice = 60,
+ /**
+ * 鍔冲姩鍚堝悓
+ */
+ LaborContract = 70,
+ /**
+ * 涓氬姟鍚堝悓
+ */
+ BussinessContract = 80,
+ /**
+ * 鍔冲姩鍚堝悓姹囨�昏〃
+ */
+ LaborContractSummary = 90,
+ /**
+ * 绂昏亴璇佹槑
+ */
+ LeavingCertificate = 100,
+ /**
+ * 寮�绁ㄦ槑缁嗚〃
+ */
+ InvoicingSchedule = 110,
+ /**
+ * 鎵�寰楃◣璇佹槑
+ */
+ IncomeTaxCertificate = 200,
+ /**
+ * 澧炲�煎強闄勫姞绋庤瘉鏄�
+ */
+ AdditionalTaxCertificate = 210,
+ /**
+ * 寮�绁ㄦ槑缁嗘枃浠�
+ */
+ BillingDetails = 220,
+ /**
+ * 鍏朵粬鏉愭枡
+ */
+ Other = 999,
+}
+
+export const EnterpriseMaterialFileBusinessTypeEnumText = {
+ [EnterpriseMaterialFileBusinessTypeEnum.PayRoll]: '宸ヨ祫琛�',
+ [EnterpriseMaterialFileBusinessTypeEnum.BankFlow]: '閾惰娴佹按',
+ [EnterpriseMaterialFileBusinessTypeEnum.Information]: '浜哄憳淇℃伅琛�',
+ [EnterpriseMaterialFileBusinessTypeEnum.Salary]: '宸ヨ祫钖噾鎵�寰�',
+ [EnterpriseMaterialFileBusinessTypeEnum.DistributionDetails]: '浠e彂鏄庣粏',
+ [EnterpriseMaterialFileBusinessTypeEnum.Invoice]: '鍙戠エ',
+ [EnterpriseMaterialFileBusinessTypeEnum.LaborContract]: '鍔冲姩鍚堝悓',
+ [EnterpriseMaterialFileBusinessTypeEnum.BussinessContract]: '涓氬姟鍚堝悓',
+ [EnterpriseMaterialFileBusinessTypeEnum.LaborContractSummary]: '鍔冲姩鍚堝悓姹囨�昏〃',
+ [EnterpriseMaterialFileBusinessTypeEnum.LeavingCertificate]: '绂昏亴璇佹槑',
+ [EnterpriseMaterialFileBusinessTypeEnum.InvoicingSchedule]: '寮�绁ㄦ槑缁嗚〃',
+};
+
+export const DutiableFileBusinessTypeEnumText = {
+ [EnterpriseMaterialFileBusinessTypeEnum.IncomeTaxCertificate]: '鎵�寰楃◣璇佹槑',
+ [EnterpriseMaterialFileBusinessTypeEnum.AdditionalTaxCertificate]: '澧炲�煎強闄勫姞绋庤瘉鏄�',
+ [EnterpriseMaterialFileBusinessTypeEnum.BillingDetails]: '寮�绁ㄦ槑缁嗘枃浠�',
+};
+
+export const AllEnterpriseMaterialFileBusinessTypeEnumText = {
+ ...EnterpriseMaterialFileBusinessTypeEnumText,
+ ...DutiableFileBusinessTypeEnumText,
+};
diff --git a/src/constants/index.ts b/src/constants/index.ts
index fa61beb..d5c8f0b 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -9,3 +9,5 @@
export * from './menu';
export * from './role';
export * from './app';
+export * from './dic';
+export * from './enterpriseMaterial';
diff --git a/src/hooks/dic.ts b/src/hooks/dic.ts
new file mode 100644
index 0000000..3051991
--- /dev/null
+++ b/src/hooks/dic.ts
@@ -0,0 +1,131 @@
+import * as searchSettingServices from '@/services/api/SearchSetting';
+import { useQuery } from '@tanstack/vue-query';
+import { useQueryClient } from '@tanstack/vue-query';
+import { SearchType } from '@/constants';
+
+type UseSearchSettingTypeOptions = {
+ searchType: number;
+ belongType?: number;
+ /**
+ * @deprecated
+ */
+ isSelf?: boolean;
+ onSuccess?: (data: API.GetTypeSearchSettingList[]) => any;
+};
+
+export function useSearchSettingType({
+ searchType,
+ belongType = null,
+ onSuccess,
+ isSelf,
+}: UseSearchSettingTypeOptions) {
+ const { data, refetch } = useQuery({
+ queryKey: [
+ 'searchSettingServices/getTypeSearchSettingList',
+ { searchType, belongType, isSelf },
+ ],
+ queryFn: async () => {
+ return await searchSettingServices.getTypeSearchSettingList(
+ {
+ searchType: searchType,
+ belongType: belongType,
+ },
+ { showLoading: false }
+ );
+ },
+ placeholderData: () => [] as API.GetTypeSearchSettingList[],
+ onSuccess(data) {
+ onSuccess?.(data);
+ },
+ });
+
+ const queryClient = useQueryClient();
+
+ async function ensureSearchSettingType() {
+ return await queryClient.ensureQueryData({
+ queryKey: [
+ 'searchSettingServices/getTypeSearchSettingList',
+ { searchType: searchType, belongType: belongType },
+ ],
+ });
+ }
+
+ function getSearchSettingTypeNameById(id: string) {
+ return data.value.find((x) => x.id === id)?.name ?? '';
+ }
+
+ return {
+ searchSettingTypeList: data,
+ ensureSearchSettingType,
+ refetchSearchSettingType: refetch,
+ getSearchSettingTypeNameById,
+ };
+}
+
+type UseAllSearchSettingList = API.GetSearchSettingListInput & {
+ enabled?: boolean | Ref<boolean>;
+};
+
+export function useAllSearchSettingList(options: UseAllSearchSettingList) {
+ const { enabled = true, ...params } = options;
+
+ const { data: allSearchSettingList } = useQuery({
+ queryKey: ['searchSettingServices/getSearchSettingDto', params],
+ queryFn: async () => {
+ return await searchSettingServices.getAllSearchSettingList(params, { showLoading: false });
+ },
+ initialData: () => [] as API.GetSearchSettingList[],
+ enabled,
+ });
+
+ return {
+ allSearchSettingList,
+ };
+}
+
+type UseWorkOfTypeOptions = {
+ enabled?: boolean | Ref<boolean>;
+};
+
+export function useWorkOfType(options: UseWorkOfTypeOptions = {}) {
+ const { enabled = true } = options;
+
+ const { allSearchSettingList: industryCategoryList } = useAllSearchSettingList({
+ searchType: SearchType.IndustryCategory,
+ enabled,
+ status: true,
+ });
+
+ const { allSearchSettingList: flattenWorkOfTypeList } = useAllSearchSettingList({
+ searchType: SearchType.Work,
+ enabled,
+ status: true,
+ });
+
+ const workOfTypeList = computed<API.GetSearchSettingList[]>(() => {
+ if (industryCategoryList.value?.length > 0) {
+ let list = [];
+ industryCategoryList.value.forEach((x) => {
+ list.push({
+ ...x,
+ children: flattenWorkOfTypeList.value.filter((w) => w.parentId === x.id),
+ });
+ });
+ return list;
+ }
+ return [];
+ });
+
+ function getWorkOfTypeNameById(id: string) {
+ return flattenWorkOfTypeList.value.find((x) => x.id === id)?.name ?? '';
+ }
+
+ const MaxSelectWorkOfTypeLimit = 6;
+
+ return {
+ workOfTypeList: workOfTypeList,
+ flattenWorkOfTypeList,
+ getWorkOfTypeNameById,
+ MaxSelectWorkOfTypeLimit,
+ };
+}
diff --git a/src/hooks/index.ts b/src/hooks/index.ts
index cbe1cbd..bc2b519 100644
--- a/src/hooks/index.ts
+++ b/src/hooks/index.ts
@@ -6,3 +6,4 @@
export * from './useEvent';
export * from './useUser';
export * from './help';
+export * from './dic';
diff --git a/src/views/MaterialReview/MaterialReviewAudit.vue b/src/views/MaterialReview/MaterialReviewAudit.vue
index 5812f49..5039c84 100644
--- a/src/views/MaterialReview/MaterialReviewAudit.vue
+++ b/src/views/MaterialReview/MaterialReviewAudit.vue
@@ -1,11 +1,130 @@
<template>
- <div>MaterialReviewAudit</div>
+ <LoadingLayout>
+ <AppContainer>
+ <PageFormLayout title="鏉愭枡瀹℃牳">
+ <DetailView :form="state.detail" :has-form="true">
+ <template #table>
+ <DeclareEnterpriseTableView ref="tableRef"></DeclareEnterpriseTableView>
+ </template>
+ <template #form>
+ <ProForm :model="state.form" ref="formRef" label-width="120px">
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="鐢虫姤瀹℃牳:"
+ prop="status"
+ :check-rules="[{ message: '璇烽�夋嫨瀹℃牳鐘舵��' }]"
+ >
+ <ProFormRadio v-model="state.form.status" :value-enum="DataRangeEnumText" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem>
+ <ProFormItemV2 label="椹冲洖鍘熷洜:" prop="remark">
+ <ProFormTextArea
+ v-model="state.form.remark"
+ placeholder="璇疯緭鍏�"
+ show-word-limit
+ :maxlength="200"
+ ></ProFormTextArea>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProForm>
+ </template>
+ </DetailView>
+ <template #footer>
+ <el-button @click="handleBack">鍏抽棴</el-button>
+ <el-button type="primary" @click="handleConfirm()">鎻愪氦</el-button>
+ </template>
+ </PageFormLayout>
+ </AppContainer>
+ </LoadingLayout>
</template>
<script setup lang="ts">
+import {
+ AppContainer,
+ ProForm,
+ ProFormCol,
+ ProFormColItem,
+ ProFormItemV2,
+ ProFormTextArea,
+ ProFormRadio,
+ LoadingLayout,
+ UploadUserFile,
+ PageFormLayout,
+} from '@bole-core/components';
+import { DataRangeEnum, DataRangeEnumText } from '@/constants';
+import DetailView from '@/components/commonView/DetailView.vue';
+import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
+import { useQuery } from '@tanstack/vue-query';
+import * as informationServices from '@/services/api/Information';
+import { convertApi2FormUrlOnlyOne } from '@/utils';
+import { useRouteView } from '@/hooks';
+import { FormInstance } from 'element-plus';
+
defineOptions({
name: 'MaterialReviewAudit',
});
+
+const route = useRoute();
+const { closeViewPush } = useRouteView();
+const id = route.params?.id as string;
+const state = reactive({
+ detail: {
+ categoryName: '',
+ amount: 0,
+ url: [] as UploadUserFile[],
+ },
+ form: {
+ status: '' as any as DataRangeEnum,
+ remark: '',
+ },
+});
+
+const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>();
+
+const { data: detail, isLoading } = useQuery({
+ queryKey: ['informationServices/getInformationShowDetail', id],
+ queryFn: async () => {
+ return await informationServices.getInformationShowDetail(
+ { id: id },
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.InformationShowDetailDto),
+ onSuccess(data) {
+ state.detail.categoryName = data.categoryName;
+ state.detail.amount = data.attentionCount;
+ state.detail.url = convertApi2FormUrlOnlyOne(data.avatarUrl);
+
+ tableRef.value?.getList();
+ },
+});
+
+function handleBack() {
+ closeViewPush(route, {
+ name: 'MaterialReviewList',
+ });
+}
+
+const formRef = ref<FormInstance>();
+function handleConfirm() {
+ if (!formRef.value) return;
+ formRef.value.validate((valid) => {
+ if (valid) {
+ confirm();
+ } else {
+ return;
+ }
+ });
+}
+
+function confirm() {}
</script>
<style lang="scss" scoped>
diff --git a/src/views/MaterialReview/MaterialReviewDetail.vue b/src/views/MaterialReview/MaterialReviewDetail.vue
index 62c93d0..7eee540 100644
--- a/src/views/MaterialReview/MaterialReviewDetail.vue
+++ b/src/views/MaterialReview/MaterialReviewDetail.vue
@@ -1,13 +1,99 @@
<template>
- <div>MaterialReviewDetail</div>
+ <LoadingLayout>
+ <AppContainer>
+ <PageFormLayout>
+ <template #title>
+ <div class="page-form-layout-title">
+ <div>
+ 鐢虫姤璇︽儏
+ <span class="page-form-layout-title-item status">
+ {{ `瀹℃牳鐘舵��:${state.detail.categoryName}` }}
+ </span>
+ <span class="page-form-layout-title-item remark">
+ {{ `瀹℃牳鏈�氳繃鍘熷洜:${state.detail.categoryName}` }}
+ </span>
+ </div>
+ </div>
+ </template>
+ <DetailView :form="state.detail">
+ <template #table>
+ <DeclareEnterpriseTableView ref="tableRef"></DeclareEnterpriseTableView>
+ </template>
+ </DetailView>
+ <template #footer>
+ <el-button @click="handleBack">鍏抽棴</el-button>
+ </template>
+ </PageFormLayout>
+ </AppContainer>
+ </LoadingLayout>
</template>
<script setup lang="ts">
+import { AppContainer, LoadingLayout, UploadUserFile, PageFormLayout } from '@bole-core/components';
+import { DataRangeEnum } from '@/constants';
+import DetailView from '@/components/commonView/DetailView.vue';
+import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
+import { useQuery } from '@tanstack/vue-query';
+import * as informationServices from '@/services/api/Information';
+import { convertApi2FormUrlOnlyOne } from '@/utils';
+import { useRouteView } from '@/hooks';
+
defineOptions({
name: 'MaterialReviewDetail',
});
+
+const route = useRoute();
+const { closeViewPush } = useRouteView();
+const id = route.params?.id as string;
+const state = reactive({
+ detail: {
+ categoryName: '',
+ amount: 0,
+ url: [] as UploadUserFile[],
+ },
+});
+
+const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>();
+
+const { data: detail, isLoading } = useQuery({
+ queryKey: ['informationServices/getInformationShowDetail', id],
+ queryFn: async () => {
+ return await informationServices.getInformationShowDetail(
+ { id: id },
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.InformationShowDetailDto),
+ onSuccess(data) {
+ state.detail.categoryName = data.categoryName;
+ state.detail.amount = data.attentionCount;
+ state.detail.url = convertApi2FormUrlOnlyOne(data.avatarUrl);
+
+ tableRef.value?.getList();
+ },
+});
+
+function handleBack() {
+ closeViewPush(route, {
+ name: 'MaterialReviewList',
+ });
+}
</script>
<style lang="scss" scoped>
@use '@/style/common.scss' as *;
+
+.page-form-layout-title-item {
+ margin-left: 16px;
+ font-size: 16px;
+
+ &.remark {
+ flex: 1;
+ min-width: 0;
+
+ @include utils-ellipsis;
+ }
+}
</style>
diff --git a/src/views/Reward/RewardDeclareDetail.vue b/src/views/Reward/RewardDeclareDetail.vue
index 6510a7c..e3c47c4 100644
--- a/src/views/Reward/RewardDeclareDetail.vue
+++ b/src/views/Reward/RewardDeclareDetail.vue
@@ -1,11 +1,71 @@
<template>
- <div>RewardDeclareDetail</div>
+ <LoadingLayout>
+ <AppContainer>
+ <PageFormLayout title="鐢虫姤璇︽儏">
+ <DetailView :form="state.detail">
+ <template #table>
+ <DeclareEnterpriseTableView ref="tableRef"></DeclareEnterpriseTableView>
+ </template>
+ </DetailView>
+ <template #footer>
+ <el-button @click="handleBack">鍏抽棴</el-button>
+ </template>
+ </PageFormLayout>
+ </AppContainer>
+ </LoadingLayout>
</template>
<script setup lang="ts">
+import { AppContainer, LoadingLayout, UploadUserFile, PageFormLayout } from '@bole-core/components';
+import DetailView from '@/components/commonView/DetailView.vue';
+import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
+import { useQuery } from '@tanstack/vue-query';
+import * as informationServices from '@/services/api/Information';
+import { convertApi2FormUrlOnlyOne } from '@/utils';
+import { useRouteView } from '@/hooks';
+
defineOptions({
name: 'RewardDeclareDetail',
});
+
+const route = useRoute();
+const { closeViewPush } = useRouteView();
+const id = route.params?.id as string;
+const state = reactive({
+ detail: {
+ categoryName: '',
+ amount: 0,
+ url: [] as UploadUserFile[],
+ },
+});
+
+const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>();
+
+const { data: detail, isLoading } = useQuery({
+ queryKey: ['informationServices/getInformationShowDetail', id],
+ queryFn: async () => {
+ return await informationServices.getInformationShowDetail(
+ { id: id },
+ {
+ showLoading: false,
+ }
+ );
+ },
+ placeholderData: () => ({} as API.InformationShowDetailDto),
+ onSuccess(data) {
+ state.detail.categoryName = data.categoryName;
+ state.detail.amount = data.attentionCount;
+ state.detail.url = convertApi2FormUrlOnlyOne(data.avatarUrl);
+
+ tableRef.value?.getList();
+ },
+});
+
+function handleBack() {
+ closeViewPush(route, {
+ name: 'RewardGrant',
+ });
+}
</script>
<style lang="scss" scoped>
--
Gitblit v1.9.1