瀏覽代碼

更新 增加分享记录

bding 9 月之前
父節點
當前提交
f3ff710fc9
共有 46 個文件被更改,包括 2211 次插入202 次删除
  1. 1 1
      package.json
  2. 1725 0
      pnpm-lock.yaml
  3. 12 1
      src/api/modules/rai/YanXuanApi.js
  4. 二進制
      src/assets/img/home/mfyx_icon.png
  5. 61 46
      src/router/modules/cygxRoutes.js
  6. 25 0
      src/router/modules/researchRoutes.js
  7. 1 1
      src/views/rai_manage/activityManage/activityManage.vue
  8. 41 1
      src/views/rai_manage/activityManage/applyManage.vue
  9. 3 2
      src/views/rai_manage/activityManage/components/ThemeSurvey/voteDlg.vue
  10. 1 1
      src/views/rai_manage/activityManage/components/ThemeSurvey/votingResultsDlg.vue
  11. 12 12
      src/views/rai_manage/activityManage/components/addActivity.vue
  12. 2 2
      src/views/rai_manage/activityManage/components/addComopnents/ResearchDeduct.vue
  13. 11 3
      src/views/rai_manage/activityManage/meetingManagement.vue
  14. 2 2
      src/views/rai_manage/activityManage/roadShow/components/addVideoDlg.vue
  15. 6 10
      src/views/rai_manage/activityManage/roadShow/components/playDetailsDlg.vue
  16. 8 5
      src/views/rai_manage/activityManage/roadShow/components/releaseAudio.vue
  17. 5 5
      src/views/rai_manage/activityManage/roadShowList.vue
  18. 6 6
      src/views/rai_manage/activityManage/specialResearch.vue
  19. 1 1
      src/views/rai_manage/activityManage/specialResearch/addResearch.vue
  20. 3 3
      src/views/rai_manage/activityManage/specialResearch/determineTravel.vue
  21. 1 1
      src/views/rai_manage/activityManage/specialResearch/particularsAll.vue
  22. 3 4
      src/views/rai_manage/components/addChoiceness.vue
  23. 1 1
      src/views/rai_manage/components/addMorningMeeting.vue
  24. 2 2
      src/views/rai_manage/components/addRoadshow.vue
  25. 3 3
      src/views/rai_manage/components/addSummarizing.vue
  26. 9 3
      src/views/rai_manage/components/addSummary.vue
  27. 2 2
      src/views/rai_manage/components/addThisWeek.vue
  28. 12 22
      src/views/rai_manage/components/apply/applyDialog.vue
  29. 26 7
      src/views/rai_manage/components/apply/particularsDialog.vue
  30. 2 12
      src/views/rai_manage/components/apply/searchCustomerDlg.vue
  31. 11 3
      src/views/rai_manage/components/editMobile.vue
  32. 2 3
      src/views/rai_manage/components/matchingDlg.vue
  33. 6 10
      src/views/rai_manage/components/particalDialog.vue
  34. 1 1
      src/views/rai_manage/components/report_preview/choicenessPre.vue
  35. 1 1
      src/views/rai_manage/components/report_preview/lastWeekSummary.vue
  36. 1 1
      src/views/rai_manage/components/report_preview/roadshowPre.vue
  37. 10 13
      src/views/rai_manage/components/report_preview/summaryPre.vue
  38. 1 1
      src/views/rai_manage/components/report_preview/thisWeekSummary.vue
  39. 5 4
      src/views/rai_manage/components/special/specialResearchDlg.vue
  40. 1 1
      src/views/rai_manage/reportManage/appletsReport.vue
  41. 1 1
      src/views/rai_manage/reportManage/components/addHaveReport.vue
  42. 1 1
      src/views/rai_manage/reportManage/morningMeetingManage.vue
  43. 1 1
      src/views/rai_manage/reportManage/roadshowEssence.vue
  44. 1 1
      src/views/rai_manage/reportManage/summaryManage.vue
  45. 1 1
      src/views/rai_manage/reportManage/tacticsTimeLine.vue
  46. 180 0
      src/views/research_manage/shareRecord.vue

+ 1 - 1
package.json

@@ -37,7 +37,7 @@
     "vue-qr": "^4.0.9",
     "vue-router": "^4.3.0",
     "vue3-tree-org": "^4.2.2",
-    "vuedraggable": "^2.24.3"
+    "vuedraggable": "^4.1.0"
   },
   "devDependencies": {
     "@vitejs/plugin-vue": "^5.0.4",

+ 1725 - 0
pnpm-lock.yaml

@@ -0,0 +1,1725 @@
+lockfileVersion: '6.0'
+
+settings:
+  autoInstallPeers: true
+  excludeLinksFromLockfile: false
+
+dependencies:
+  '@element-plus/icons-vue':
+    specifier: ^2.3.1
+    version: 2.3.1(vue@3.4.20)
+  '@fullcalendar/interaction':
+    specifier: ^6.1.11
+    version: 6.1.11(@fullcalendar/core@6.1.11)
+  '@fullcalendar/timegrid':
+    specifier: ^6.1.11
+    version: 6.1.11(@fullcalendar/core@6.1.11)
+  '@fullcalendar/vue3':
+    specifier: ^6.1.11
+    version: 6.1.11(@fullcalendar/core@6.1.11)(vue@3.4.20)
+  '@vueuse/core':
+    specifier: ^10.9.0
+    version: 10.9.0(vue@3.4.20)
+  axios:
+    specifier: ^1.6.7
+    version: 1.6.7
+  clipboard:
+    specifier: ^2.0.11
+    version: 2.0.11
+  crypto-js:
+    specifier: ^4.2.0
+    version: 4.2.0
+  element-plus:
+    specifier: 2.4.4
+    version: 2.4.4(vue@3.4.20)
+  froala-editor:
+    specifier: ^4.1.4
+    version: 4.1.4
+  highcharts:
+    specifier: 11.2.0
+    version: 11.2.0
+  html2canvas:
+    specifier: 1.1.4
+    version: 1.1.4
+  jquery:
+    specifier: ^3.7.1
+    version: 3.7.1
+  js-md5:
+    specifier: ^0.8.3
+    version: 0.8.3
+  lodash:
+    specifier: ^4.17.21
+    version: 4.17.21
+  moment:
+    specifier: ^2.30.1
+    version: 2.30.1
+  opencc-js:
+    specifier: ^1.0.5
+    version: 1.0.5
+  pinia:
+    specifier: ^2.1.7
+    version: 2.1.7(vue@3.4.20)
+  sortablejs:
+    specifier: ^1.15.2
+    version: 1.15.2
+  v-distpicker:
+    specifier: 2.1.0
+    version: 2.1.0
+  vue:
+    specifier: ^3.4.19
+    version: 3.4.20
+  vue-datepicker-next:
+    specifier: ^1.0.3
+    version: 1.0.3(vue@3.4.20)
+  vue-froala-wysiwyg:
+    specifier: ^4.1.4
+    version: 4.1.4
+  vue-qr:
+    specifier: ^4.0.9
+    version: 4.0.9
+  vue-router:
+    specifier: ^4.3.0
+    version: 4.3.0(vue@3.4.20)
+  vue3-tree-org:
+    specifier: ^4.2.2
+    version: 4.2.2(vue@3.4.20)
+  vuedraggable:
+    specifier: ^4.1.0
+    version: 4.1.0(vue@3.4.20)
+
+devDependencies:
+  '@vitejs/plugin-vue':
+    specifier: ^5.0.4
+    version: 5.0.4(vite@5.1.4)(vue@3.4.20)
+  cross-env:
+    specifier: ^7.0.3
+    version: 7.0.3
+  sass:
+    specifier: ^1.71.1
+    version: 1.71.1
+  vite:
+    specifier: ^5.1.4
+    version: 5.1.4(sass@1.71.1)
+  vite-plugin-require-transform:
+    specifier: ^1.0.21
+    version: 1.0.21
+
+packages:
+
+  /@babel/code-frame@7.23.5:
+    resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/highlight': 7.23.4
+      chalk: 2.4.2
+    dev: true
+
+  /@babel/generator@7.23.6:
+    resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.9
+      '@jridgewell/gen-mapping': 0.3.4
+      '@jridgewell/trace-mapping': 0.3.23
+      jsesc: 2.5.2
+    dev: true
+
+  /@babel/helper-environment-visitor@7.22.20:
+    resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+    engines: {node: '>=6.9.0'}
+    dev: true
+
+  /@babel/helper-function-name@7.23.0:
+    resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/template': 7.23.9
+      '@babel/types': 7.23.9
+    dev: true
+
+  /@babel/helper-hoist-variables@7.22.5:
+    resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.9
+    dev: true
+
+  /@babel/helper-split-export-declaration@7.22.6:
+    resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.9
+    dev: true
+
+  /@babel/helper-string-parser@7.23.4:
+    resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/helper-validator-identifier@7.22.20:
+    resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+    engines: {node: '>=6.9.0'}
+
+  /@babel/highlight@7.23.4:
+    resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-validator-identifier': 7.22.20
+      chalk: 2.4.2
+      js-tokens: 4.0.0
+    dev: true
+
+  /@babel/parser@7.23.9:
+    resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==}
+    engines: {node: '>=6.0.0'}
+    hasBin: true
+    dependencies:
+      '@babel/types': 7.23.9
+
+  /@babel/runtime-corejs2@7.24.0:
+    resolution: {integrity: sha512-RZVGq1it0GA1K8rb+z7v7NzecP6VYCMedN7yHsCCIQUMmRXFCPJD8GISdf6uIGj7NDDihg7ieQEzpdpQbUL75Q==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      core-js: 2.6.12
+      regenerator-runtime: 0.14.1
+    dev: false
+
+  /@babel/template@7.23.9:
+    resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/code-frame': 7.23.5
+      '@babel/parser': 7.23.9
+      '@babel/types': 7.23.9
+    dev: true
+
+  /@babel/traverse@7.23.9:
+    resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/code-frame': 7.23.5
+      '@babel/generator': 7.23.6
+      '@babel/helper-environment-visitor': 7.22.20
+      '@babel/helper-function-name': 7.23.0
+      '@babel/helper-hoist-variables': 7.22.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      '@babel/parser': 7.23.9
+      '@babel/types': 7.23.9
+      debug: 4.3.4
+      globals: 11.12.0
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /@babel/types@7.23.9:
+    resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-string-parser': 7.23.4
+      '@babel/helper-validator-identifier': 7.22.20
+      to-fast-properties: 2.0.0
+
+  /@ctrl/tinycolor@3.6.1:
+    resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
+    engines: {node: '>=10'}
+    dev: false
+
+  /@element-plus/icons-vue@2.3.1(vue@3.4.20):
+    resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==}
+    peerDependencies:
+      vue: ^3.2.0
+    dependencies:
+      vue: 3.4.20
+    dev: false
+
+  /@esbuild/aix-ppc64@0.19.12:
+    resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==, tarball: https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [ppc64]
+    os: [aix]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/android-arm64@0.19.12:
+    resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/android-arm@0.19.12:
+    resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/android-x64@0.19.12:
+    resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/darwin-arm64@0.19.12:
+    resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/darwin-x64@0.19.12:
+    resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/freebsd-arm64@0.19.12:
+    resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/freebsd-x64@0.19.12:
+    resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-arm64@0.19.12:
+    resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-arm@0.19.12:
+    resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-ia32@0.19.12:
+    resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-loong64@0.19.12:
+    resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [loong64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-mips64el@0.19.12:
+    resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [mips64el]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-ppc64@0.19.12:
+    resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [ppc64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-riscv64@0.19.12:
+    resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [riscv64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-s390x@0.19.12:
+    resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [s390x]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/linux-x64@0.19.12:
+    resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/netbsd-x64@0.19.12:
+    resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [netbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/openbsd-x64@0.19.12:
+    resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [openbsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/sunos-x64@0.19.12:
+    resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [sunos]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/win32-arm64@0.19.12:
+    resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/win32-ia32@0.19.12:
+    resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@esbuild/win32-x64@0.19.12:
+    resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz}
+    engines: {node: '>=12'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@floating-ui/core@1.6.0:
+    resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==}
+    dependencies:
+      '@floating-ui/utils': 0.2.1
+    dev: false
+
+  /@floating-ui/dom@1.6.3:
+    resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==}
+    dependencies:
+      '@floating-ui/core': 1.6.0
+      '@floating-ui/utils': 0.2.1
+    dev: false
+
+  /@floating-ui/utils@0.2.1:
+    resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==}
+    dev: false
+
+  /@fullcalendar/core@6.1.11:
+    resolution: {integrity: sha512-TjG7c8sUz+Vkui2FyCNJ+xqyu0nq653Ibe99A66LoW95oBo6tVhhKIaG1Wh0GVKymYiqAQN/OEdYTuj4ay27kA==, tarball: https://registry.npmmirror.com/@fullcalendar/core/-/core-6.1.11.tgz}
+    dependencies:
+      preact: 10.12.1
+    dev: false
+
+  /@fullcalendar/daygrid@6.1.11(@fullcalendar/core@6.1.11):
+    resolution: {integrity: sha512-hF5jJB7cgUIxWD5MVjj8IU407HISyLu7BWXcEIuTytkfr8oolOXeCazqnnjmRbnFOncoJQVstTtq6SIhaT32Xg==}
+    peerDependencies:
+      '@fullcalendar/core': ~6.1.11
+    dependencies:
+      '@fullcalendar/core': 6.1.11
+    dev: false
+
+  /@fullcalendar/interaction@6.1.11(@fullcalendar/core@6.1.11):
+    resolution: {integrity: sha512-ynOKjzuPwEAMgTQ6R/Z2zvzIIqG4p8/Qmnhi1q0vzPZZxSIYx3rlZuvpEK2WGBZZ1XEafDOP/LGfbWoNZe+qdg==}
+    peerDependencies:
+      '@fullcalendar/core': ~6.1.11
+    dependencies:
+      '@fullcalendar/core': 6.1.11
+    dev: false
+
+  /@fullcalendar/timegrid@6.1.11(@fullcalendar/core@6.1.11):
+    resolution: {integrity: sha512-0seUHK/ferH89IeuCvV4Bib0zWjgK0nsptNdmAc9wDBxD/d9hm5Mdti0URJX6bDoRtsSfRDu5XsRcrzwoc+AUQ==}
+    peerDependencies:
+      '@fullcalendar/core': ~6.1.11
+    dependencies:
+      '@fullcalendar/core': 6.1.11
+      '@fullcalendar/daygrid': 6.1.11(@fullcalendar/core@6.1.11)
+    dev: false
+
+  /@fullcalendar/vue3@6.1.11(@fullcalendar/core@6.1.11)(vue@3.4.20):
+    resolution: {integrity: sha512-jBoDS0WSpuOM9ZgjL3lNh6o385u/LthFZDaMUACjVVJZh3JuBbuA7ghdUvIelcTNXa5VRCkSZOpivTJWOnLfcg==}
+    peerDependencies:
+      '@fullcalendar/core': ~6.1.11
+      vue: ^3.0.11
+    dependencies:
+      '@fullcalendar/core': 6.1.11
+      vue: 3.4.20
+    dev: false
+
+  /@jridgewell/gen-mapping@0.3.4:
+    resolution: {integrity: sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw==}
+    engines: {node: '>=6.0.0'}
+    dependencies:
+      '@jridgewell/set-array': 1.1.2
+      '@jridgewell/sourcemap-codec': 1.4.15
+      '@jridgewell/trace-mapping': 0.3.23
+    dev: true
+
+  /@jridgewell/resolve-uri@3.1.2:
+    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+    engines: {node: '>=6.0.0'}
+    dev: true
+
+  /@jridgewell/set-array@1.1.2:
+    resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+    engines: {node: '>=6.0.0'}
+    dev: true
+
+  /@jridgewell/sourcemap-codec@1.4.15:
+    resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+
+  /@jridgewell/trace-mapping@0.3.23:
+    resolution: {integrity: sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg==}
+    dependencies:
+      '@jridgewell/resolve-uri': 3.1.2
+      '@jridgewell/sourcemap-codec': 1.4.15
+    dev: true
+
+  /@rollup/rollup-android-arm-eabi@4.12.0:
+    resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz}
+    cpu: [arm]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-android-arm64@4.12.0:
+    resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-darwin-arm64@4.12.0:
+    resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-darwin-x64@4.12.0:
+    resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-arm-gnueabihf@4.12.0:
+    resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-arm64-gnu@4.12.0:
+    resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz}
+    cpu: [arm64]
+    os: [linux]
+    libc: [glibc]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-arm64-musl@4.12.0:
+    resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz}
+    cpu: [arm64]
+    os: [linux]
+    libc: [musl]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-riscv64-gnu@4.12.0:
+    resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz}
+    cpu: [riscv64]
+    os: [linux]
+    libc: [glibc]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-x64-gnu@4.12.0:
+    resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz}
+    cpu: [x64]
+    os: [linux]
+    libc: [glibc]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-linux-x64-musl@4.12.0:
+    resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz}
+    cpu: [x64]
+    os: [linux]
+    libc: [musl]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-win32-arm64-msvc@4.12.0:
+    resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-win32-ia32-msvc@4.12.0:
+    resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@rollup/rollup-win32-x64-msvc@4.12.0:
+    resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@sxzz/popperjs-es@2.11.7:
+    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==, tarball: https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz}
+    dev: false
+
+  /@types/estree@1.0.5:
+    resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+    dev: true
+
+  /@types/lodash-es@4.17.12:
+    resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
+    dependencies:
+      '@types/lodash': 4.14.202
+    dev: false
+
+  /@types/lodash@4.14.202:
+    resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==}
+    dev: false
+
+  /@types/web-bluetooth@0.0.16:
+    resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
+    dev: false
+
+  /@types/web-bluetooth@0.0.20:
+    resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
+    dev: false
+
+  /@vitejs/plugin-vue@5.0.4(vite@5.1.4)(vue@3.4.20):
+    resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==}
+    engines: {node: ^18.0.0 || >=20.0.0}
+    peerDependencies:
+      vite: ^5.0.0
+      vue: ^3.2.25
+    dependencies:
+      vite: 5.1.4(sass@1.71.1)
+      vue: 3.4.20
+    dev: true
+
+  /@vue/compiler-core@3.2.47:
+    resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/shared': 3.2.47
+      estree-walker: 2.0.2
+      source-map: 0.6.1
+    dev: false
+
+  /@vue/compiler-core@3.4.20:
+    resolution: {integrity: sha512-l7M+xUuL8hrGtRLkrf+62d9zucAdgqNBTbJ/NufCOIuJQhauhfyAKH9ra/qUctCXcULwmclGAVpvmxjbBO30qg==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/shared': 3.4.20
+      entities: 4.5.0
+      estree-walker: 2.0.2
+      source-map-js: 1.0.2
+
+  /@vue/compiler-dom@3.2.47:
+    resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==}
+    dependencies:
+      '@vue/compiler-core': 3.2.47
+      '@vue/shared': 3.2.47
+    dev: false
+
+  /@vue/compiler-dom@3.4.20:
+    resolution: {integrity: sha512-/cSBGL79HFBYgDnqCNKErOav3bPde3n0sJwJM2Z09rXlkiowV/2SG1tgDAiWS1CatS4Cvo0o74e1vNeCK1R3RA==}
+    dependencies:
+      '@vue/compiler-core': 3.4.20
+      '@vue/shared': 3.4.20
+
+  /@vue/compiler-sfc@3.2.47:
+    resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/compiler-core': 3.2.47
+      '@vue/compiler-dom': 3.2.47
+      '@vue/compiler-ssr': 3.2.47
+      '@vue/reactivity-transform': 3.2.47
+      '@vue/shared': 3.2.47
+      estree-walker: 2.0.2
+      magic-string: 0.25.9
+      postcss: 8.4.35
+      source-map: 0.6.1
+    dev: false
+
+  /@vue/compiler-sfc@3.4.20:
+    resolution: {integrity: sha512-nPuTZz0yxTPzjyYe+9nQQsFYImcz/57UX8N3jyhl5oIUUs2jqqAMaULsAlJwve3qNYfjQzq0bwy3pqJrN9ecZw==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/compiler-core': 3.4.20
+      '@vue/compiler-dom': 3.4.20
+      '@vue/compiler-ssr': 3.4.20
+      '@vue/shared': 3.4.20
+      estree-walker: 2.0.2
+      magic-string: 0.30.7
+      postcss: 8.4.35
+      source-map-js: 1.0.2
+
+  /@vue/compiler-ssr@3.2.47:
+    resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==}
+    dependencies:
+      '@vue/compiler-dom': 3.2.47
+      '@vue/shared': 3.2.47
+    dev: false
+
+  /@vue/compiler-ssr@3.4.20:
+    resolution: {integrity: sha512-b3gFQPiHLvI12C56otzBPpQhZ5kgkJ5RMv/zpLjLC2BIFwX5GktDqYQ7xg0Q2grP6uFI8al3beVKvAVxFtXmIg==}
+    dependencies:
+      '@vue/compiler-dom': 3.4.20
+      '@vue/shared': 3.4.20
+
+  /@vue/devtools-api@6.6.1:
+    resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
+    dev: false
+
+  /@vue/reactivity-transform@3.2.47:
+    resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==}
+    dependencies:
+      '@babel/parser': 7.23.9
+      '@vue/compiler-core': 3.2.47
+      '@vue/shared': 3.2.47
+      estree-walker: 2.0.2
+      magic-string: 0.25.9
+    dev: false
+
+  /@vue/reactivity@3.2.47:
+    resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==}
+    dependencies:
+      '@vue/shared': 3.2.47
+    dev: false
+
+  /@vue/reactivity@3.4.20:
+    resolution: {integrity: sha512-P5LJcxUkG6inlHr6MHVA4AVFAmRYJQ7ONGWJILNjMjoYuEXFhYviSCb9BEMyszSG/1kWCZbtWQlKSLasFRpThw==}
+    dependencies:
+      '@vue/shared': 3.4.20
+
+  /@vue/runtime-core@3.2.47:
+    resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==}
+    dependencies:
+      '@vue/reactivity': 3.2.47
+      '@vue/shared': 3.2.47
+    dev: false
+
+  /@vue/runtime-core@3.4.20:
+    resolution: {integrity: sha512-MPvsQpGAxoBqLHjqopt4YPtUYBpq0K6oAWDTwIR1CTNZ3y9O/J2ZVh+i2JpxKNYwANJBiZ20O99NE20uisB7xw==}
+    dependencies:
+      '@vue/reactivity': 3.4.20
+      '@vue/shared': 3.4.20
+
+  /@vue/runtime-dom@3.2.47:
+    resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==}
+    dependencies:
+      '@vue/runtime-core': 3.2.47
+      '@vue/shared': 3.2.47
+      csstype: 2.6.21
+    dev: false
+
+  /@vue/runtime-dom@3.4.20:
+    resolution: {integrity: sha512-OkbPVP69H+8m74543zMAAx/LIkajxufYyow41gc0s5iF0uplT5uTQ4llDYu1GeJZEI8wjL5ueiPQruk4qwOMmA==}
+    dependencies:
+      '@vue/runtime-core': 3.4.20
+      '@vue/shared': 3.4.20
+      csstype: 3.1.3
+
+  /@vue/server-renderer@3.2.47(vue@3.2.47):
+    resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==}
+    peerDependencies:
+      vue: 3.2.47
+    dependencies:
+      '@vue/compiler-ssr': 3.2.47
+      '@vue/shared': 3.2.47
+      vue: 3.2.47
+    dev: false
+
+  /@vue/server-renderer@3.4.20(vue@3.4.20):
+    resolution: {integrity: sha512-w3VH2GuwxQHA6pJo/HCV22OfVC8Mw4oeHQM+vKeqtRK0OPE1Wilnh+P/SDVGGxPjJsGmyfphi0dbw8UKZQJH9w==}
+    peerDependencies:
+      vue: 3.4.20
+    dependencies:
+      '@vue/compiler-ssr': 3.4.20
+      '@vue/shared': 3.4.20
+      vue: 3.4.20
+
+  /@vue/shared@3.2.47:
+    resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==}
+    dev: false
+
+  /@vue/shared@3.4.20:
+    resolution: {integrity: sha512-KTEngal0aiUvNJ6I1Chk5Ew5XqChsFsxP4GKAYXWb99zKJWjNU72p2FWEOmZWHxHcqtniOJsgnpd3zizdpfEag==}
+
+  /@vueuse/core@10.9.0(vue@3.4.20):
+    resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==}
+    dependencies:
+      '@types/web-bluetooth': 0.0.20
+      '@vueuse/metadata': 10.9.0
+      '@vueuse/shared': 10.9.0(vue@3.4.20)
+      vue-demi: 0.14.7(vue@3.4.20)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - vue
+    dev: false
+
+  /@vueuse/core@9.13.0(vue@3.4.20):
+    resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
+    dependencies:
+      '@types/web-bluetooth': 0.0.16
+      '@vueuse/metadata': 9.13.0
+      '@vueuse/shared': 9.13.0(vue@3.4.20)
+      vue-demi: 0.14.7(vue@3.4.20)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - vue
+    dev: false
+
+  /@vueuse/metadata@10.9.0:
+    resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==}
+    dev: false
+
+  /@vueuse/metadata@9.13.0:
+    resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
+    dev: false
+
+  /@vueuse/shared@10.9.0(vue@3.4.20):
+    resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==}
+    dependencies:
+      vue-demi: 0.14.7(vue@3.4.20)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - vue
+    dev: false
+
+  /@vueuse/shared@9.13.0(vue@3.4.20):
+    resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
+    dependencies:
+      vue-demi: 0.14.7(vue@3.4.20)
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+      - vue
+    dev: false
+
+  /ansi-styles@3.2.1:
+    resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+    engines: {node: '>=4'}
+    dependencies:
+      color-convert: 1.9.3
+    dev: true
+
+  /anymatch@3.1.3:
+    resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+    engines: {node: '>= 8'}
+    dependencies:
+      normalize-path: 3.0.0
+      picomatch: 2.3.1
+    dev: true
+
+  /async-validator@4.2.5:
+    resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
+    dev: false
+
+  /asynckit@0.4.0:
+    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+    dev: false
+
+  /axios@1.6.7:
+    resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==}
+    dependencies:
+      follow-redirects: 1.15.5
+      form-data: 4.0.0
+      proxy-from-env: 1.1.0
+    transitivePeerDependencies:
+      - debug
+    dev: false
+
+  /babel-runtime@6.26.0:
+    resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==}
+    dependencies:
+      core-js: 2.6.12
+      regenerator-runtime: 0.11.1
+    dev: false
+
+  /balanced-match@1.0.2:
+    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+    dev: false
+
+  /base64-arraybuffer@0.2.0:
+    resolution: {integrity: sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==}
+    engines: {node: '>= 0.6.0'}
+    dev: false
+
+  /binary-extensions@2.2.0:
+    resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /brace-expansion@2.0.1:
+    resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+    dependencies:
+      balanced-match: 1.0.2
+    dev: false
+
+  /braces@3.0.2:
+    resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+    engines: {node: '>=8'}
+    dependencies:
+      fill-range: 7.0.1
+    dev: true
+
+  /chalk@2.4.2:
+    resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+    engines: {node: '>=4'}
+    dependencies:
+      ansi-styles: 3.2.1
+      escape-string-regexp: 1.0.5
+      supports-color: 5.5.0
+    dev: true
+
+  /chokidar@3.6.0:
+    resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+    engines: {node: '>= 8.10.0'}
+    dependencies:
+      anymatch: 3.1.3
+      braces: 3.0.2
+      glob-parent: 5.1.2
+      is-binary-path: 2.1.0
+      is-glob: 4.0.3
+      normalize-path: 3.0.0
+      readdirp: 3.6.0
+    optionalDependencies:
+      fsevents: 2.3.3
+    dev: true
+
+  /clipboard@2.0.11:
+    resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==}
+    dependencies:
+      good-listener: 1.2.2
+      select: 1.1.2
+      tiny-emitter: 2.1.0
+    dev: false
+
+  /color-convert@1.9.3:
+    resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+    dependencies:
+      color-name: 1.1.3
+    dev: true
+
+  /color-name@1.1.3:
+    resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+    dev: true
+
+  /combined-stream@1.0.8:
+    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+    engines: {node: '>= 0.8'}
+    dependencies:
+      delayed-stream: 1.0.0
+    dev: false
+
+  /core-js@2.6.12:
+    resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==}
+    deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
+    requiresBuild: true
+    dev: false
+
+  /core-js@3.36.0:
+    resolution: {integrity: sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==}
+    requiresBuild: true
+    dev: false
+
+  /cross-env@7.0.3:
+    resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
+    engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
+    hasBin: true
+    dependencies:
+      cross-spawn: 7.0.3
+    dev: true
+
+  /cross-spawn@7.0.3:
+    resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+    engines: {node: '>= 8'}
+    dependencies:
+      path-key: 3.1.1
+      shebang-command: 2.0.0
+      which: 2.0.2
+    dev: true
+
+  /crypto-js@4.2.0:
+    resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
+    dev: false
+
+  /css-line-break@1.1.1:
+    resolution: {integrity: sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==}
+    dependencies:
+      base64-arraybuffer: 0.2.0
+    dev: false
+
+  /csstype@2.6.21:
+    resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
+    dev: false
+
+  /csstype@3.1.3:
+    resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+  /date-format-parse@0.2.7:
+    resolution: {integrity: sha512-/+lyMUKoRogMuTeOVii6lUwjbVlesN9YRYLzZT/g3TEZ3uD9QnpjResujeEqUW+OSNbT7T1+SYdyEkTcRv+KDQ==}
+    dev: false
+
+  /dayjs@1.11.10:
+    resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
+    dev: false
+
+  /debug@4.3.4:
+    resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+    engines: {node: '>=6.0'}
+    peerDependencies:
+      supports-color: '*'
+    peerDependenciesMeta:
+      supports-color:
+        optional: true
+    dependencies:
+      ms: 2.1.2
+    dev: true
+
+  /decompress-response@6.0.0:
+    resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+    engines: {node: '>=10'}
+    dependencies:
+      mimic-response: 3.1.0
+    dev: false
+
+  /delayed-stream@1.0.0:
+    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+    engines: {node: '>=0.4.0'}
+    dev: false
+
+  /delegate@3.2.0:
+    resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==}
+    dev: false
+
+  /element-plus@2.4.4(vue@3.4.20):
+    resolution: {integrity: sha512-TlKubXJgxwhER0dw+8ULn9hr9kZjraV4R6Q/eidwWUwCKxwXYPBGmMKsZ/85tlxlhMYbcLZd/YZh6G3QkHX4fg==}
+    peerDependencies:
+      vue: ^3.2.0
+    dependencies:
+      '@ctrl/tinycolor': 3.6.1
+      '@element-plus/icons-vue': 2.3.1(vue@3.4.20)
+      '@floating-ui/dom': 1.6.3
+      '@popperjs/core': /@sxzz/popperjs-es@2.11.7
+      '@types/lodash': 4.14.202
+      '@types/lodash-es': 4.17.12
+      '@vueuse/core': 9.13.0(vue@3.4.20)
+      async-validator: 4.2.5
+      dayjs: 1.11.10
+      escape-html: 1.0.3
+      lodash: 4.17.21
+      lodash-es: 4.17.21
+      lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21)
+      memoize-one: 6.0.0
+      normalize-wheel-es: 1.2.0
+      vue: 3.4.20
+    transitivePeerDependencies:
+      - '@vue/composition-api'
+    dev: false
+
+  /entities@4.5.0:
+    resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+    engines: {node: '>=0.12'}
+
+  /esbuild@0.19.12:
+    resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
+    engines: {node: '>=12'}
+    hasBin: true
+    requiresBuild: true
+    optionalDependencies:
+      '@esbuild/aix-ppc64': 0.19.12
+      '@esbuild/android-arm': 0.19.12
+      '@esbuild/android-arm64': 0.19.12
+      '@esbuild/android-x64': 0.19.12
+      '@esbuild/darwin-arm64': 0.19.12
+      '@esbuild/darwin-x64': 0.19.12
+      '@esbuild/freebsd-arm64': 0.19.12
+      '@esbuild/freebsd-x64': 0.19.12
+      '@esbuild/linux-arm': 0.19.12
+      '@esbuild/linux-arm64': 0.19.12
+      '@esbuild/linux-ia32': 0.19.12
+      '@esbuild/linux-loong64': 0.19.12
+      '@esbuild/linux-mips64el': 0.19.12
+      '@esbuild/linux-ppc64': 0.19.12
+      '@esbuild/linux-riscv64': 0.19.12
+      '@esbuild/linux-s390x': 0.19.12
+      '@esbuild/linux-x64': 0.19.12
+      '@esbuild/netbsd-x64': 0.19.12
+      '@esbuild/openbsd-x64': 0.19.12
+      '@esbuild/sunos-x64': 0.19.12
+      '@esbuild/win32-arm64': 0.19.12
+      '@esbuild/win32-ia32': 0.19.12
+      '@esbuild/win32-x64': 0.19.12
+    dev: true
+
+  /escape-html@1.0.3:
+    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+    dev: false
+
+  /escape-string-regexp@1.0.5:
+    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+    engines: {node: '>=0.8.0'}
+    dev: true
+
+  /estree-walker@2.0.2:
+    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+  /fill-range@7.0.1:
+    resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+    engines: {node: '>=8'}
+    dependencies:
+      to-regex-range: 5.0.1
+    dev: true
+
+  /follow-redirects@1.15.5:
+    resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==}
+    engines: {node: '>=4.0'}
+    peerDependencies:
+      debug: '*'
+    peerDependenciesMeta:
+      debug:
+        optional: true
+    dev: false
+
+  /form-data@4.0.0:
+    resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+    engines: {node: '>= 6'}
+    dependencies:
+      asynckit: 0.4.0
+      combined-stream: 1.0.8
+      mime-types: 2.1.35
+    dev: false
+
+  /froala-editor@4.1.4:
+    resolution: {integrity: sha512-oWF8SZNtLvfweURV5T0WYO69ZQpB1LQiGO2e6zoYRAlOwmqlW5yqLWfGi0tfn99qOgZ/4dxqBBDxqfOsRCQFiA==}
+    dev: false
+
+  /fs.realpath@1.0.0:
+    resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+    dev: false
+
+  /fsevents@2.3.3:
+    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz}
+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /glob-parent@5.1.2:
+    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+    engines: {node: '>= 6'}
+    dependencies:
+      is-glob: 4.0.3
+    dev: true
+
+  /glob@8.1.0:
+    resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
+    engines: {node: '>=12'}
+    deprecated: Glob versions prior to v9 are no longer supported
+    dependencies:
+      fs.realpath: 1.0.0
+      inflight: 1.0.6
+      inherits: 2.0.4
+      minimatch: 5.1.6
+      once: 1.4.0
+    dev: false
+
+  /globals@11.12.0:
+    resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /good-listener@1.2.2:
+    resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==}
+    dependencies:
+      delegate: 3.2.0
+    dev: false
+
+  /has-flag@3.0.0:
+    resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /highcharts@11.2.0:
+    resolution: {integrity: sha512-9i650YK7ZBA1Mgtr3avMkLVCAI45RQvYnwi+eHsdFSaBGuQN6BHoa4j4lMkSJLv0V4LISTK1z7J7G82Lzd7zwg==}
+    dev: false
+
+  /html2canvas@1.1.4:
+    resolution: {integrity: sha512-uHgQDwrXsRmFdnlOVFvHin9R7mdjjZvoBoXxicPR+NnucngkaLa5zIDW9fzMkiip0jSffyTyWedE8iVogYOeWg==}
+    engines: {node: '>=8.0.0'}
+    dependencies:
+      css-line-break: 1.1.1
+    dev: false
+
+  /immutable@4.3.5:
+    resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==}
+    dev: true
+
+  /inflight@1.0.6:
+    resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+    deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+    dependencies:
+      once: 1.4.0
+      wrappy: 1.0.2
+    dev: false
+
+  /inherits@2.0.4:
+    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+    dev: false
+
+  /is-binary-path@2.1.0:
+    resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+    engines: {node: '>=8'}
+    dependencies:
+      binary-extensions: 2.2.0
+    dev: true
+
+  /is-extglob@2.1.1:
+    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /is-glob@4.0.3:
+    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      is-extglob: 2.1.1
+    dev: true
+
+  /is-number@7.0.0:
+    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+    engines: {node: '>=0.12.0'}
+    dev: true
+
+  /isexe@2.0.0:
+    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+    dev: true
+
+  /jquery@3.7.1:
+    resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==}
+    dev: false
+
+  /js-binary-schema-parser@2.0.3:
+    resolution: {integrity: sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==}
+    dev: false
+
+  /js-md5@0.8.3:
+    resolution: {integrity: sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==}
+    dev: false
+
+  /js-tokens@4.0.0:
+    resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+    dev: true
+
+  /jsesc@2.5.2:
+    resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+    engines: {node: '>=4'}
+    hasBin: true
+    dev: true
+
+  /lodash-es@4.17.21:
+    resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+    dev: false
+
+  /lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21):
+    resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
+    peerDependencies:
+      '@types/lodash-es': '*'
+      lodash: '*'
+      lodash-es: '*'
+    dependencies:
+      '@types/lodash-es': 4.17.12
+      lodash: 4.17.21
+      lodash-es: 4.17.21
+    dev: false
+
+  /lodash@4.17.21:
+    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+    dev: false
+
+  /magic-string@0.25.9:
+    resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+    dependencies:
+      sourcemap-codec: 1.4.8
+    dev: false
+
+  /magic-string@0.30.7:
+    resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==}
+    engines: {node: '>=12'}
+    dependencies:
+      '@jridgewell/sourcemap-codec': 1.4.15
+
+  /memoize-one@6.0.0:
+    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
+    dev: false
+
+  /mime-db@1.52.0:
+    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+    engines: {node: '>= 0.6'}
+    dev: false
+
+  /mime-types@2.1.35:
+    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+    engines: {node: '>= 0.6'}
+    dependencies:
+      mime-db: 1.52.0
+    dev: false
+
+  /mimic-response@3.1.0:
+    resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+    engines: {node: '>=10'}
+    dev: false
+
+  /minimatch@5.1.6:
+    resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+    engines: {node: '>=10'}
+    dependencies:
+      brace-expansion: 2.0.1
+    dev: false
+
+  /moment@2.30.1:
+    resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
+    dev: false
+
+  /ms@2.1.2:
+    resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+    dev: true
+
+  /nanoid@3.3.7:
+    resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+    hasBin: true
+
+  /normalize-path@3.0.0:
+    resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /normalize-wheel-es@1.2.0:
+    resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
+    dev: false
+
+  /once@1.4.0:
+    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+    dependencies:
+      wrappy: 1.0.2
+    dev: false
+
+  /opencc-js@1.0.5:
+    resolution: {integrity: sha512-LD+1SoNnZdlRwtYTjnQdFrSVCAaYpuDqL5CkmOaHOkKoKh7mFxUicLTRVNLU5C+Jmi1vXQ3QL4jWdgSaa4sKjg==, tarball: https://registry.npmmirror.com/opencc-js/-/opencc-js-1.0.5.tgz}
+    dev: false
+
+  /parenthesis@3.1.8:
+    resolution: {integrity: sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==}
+    dev: false
+
+  /path-key@3.1.1:
+    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /picocolors@1.0.0:
+    resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+  /picomatch@2.3.1:
+    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+    engines: {node: '>=8.6'}
+    dev: true
+
+  /pinia@2.1.7(vue@3.4.20):
+    resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
+    peerDependencies:
+      '@vue/composition-api': ^1.4.0
+      typescript: '>=4.4.4'
+      vue: ^2.6.14 || ^3.3.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
+      typescript:
+        optional: true
+    dependencies:
+      '@vue/devtools-api': 6.6.1
+      vue: 3.4.20
+      vue-demi: 0.14.7(vue@3.4.20)
+    dev: false
+
+  /postcss@8.4.35:
+    resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
+    engines: {node: ^10 || ^12 || >=14}
+    dependencies:
+      nanoid: 3.3.7
+      picocolors: 1.0.0
+      source-map-js: 1.0.2
+
+  /preact@10.12.1:
+    resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==, tarball: https://registry.npmmirror.com/preact/-/preact-10.12.1.tgz}
+    dev: false
+
+  /proxy-from-env@1.1.0:
+    resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+    dev: false
+
+  /readdirp@3.6.0:
+    resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+    engines: {node: '>=8.10.0'}
+    dependencies:
+      picomatch: 2.3.1
+    dev: true
+
+  /regenerator-runtime@0.11.1:
+    resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==}
+    dev: false
+
+  /regenerator-runtime@0.14.1:
+    resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+    dev: false
+
+  /rollup@4.12.0:
+    resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==}
+    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+    hasBin: true
+    dependencies:
+      '@types/estree': 1.0.5
+    optionalDependencies:
+      '@rollup/rollup-android-arm-eabi': 4.12.0
+      '@rollup/rollup-android-arm64': 4.12.0
+      '@rollup/rollup-darwin-arm64': 4.12.0
+      '@rollup/rollup-darwin-x64': 4.12.0
+      '@rollup/rollup-linux-arm-gnueabihf': 4.12.0
+      '@rollup/rollup-linux-arm64-gnu': 4.12.0
+      '@rollup/rollup-linux-arm64-musl': 4.12.0
+      '@rollup/rollup-linux-riscv64-gnu': 4.12.0
+      '@rollup/rollup-linux-x64-gnu': 4.12.0
+      '@rollup/rollup-linux-x64-musl': 4.12.0
+      '@rollup/rollup-win32-arm64-msvc': 4.12.0
+      '@rollup/rollup-win32-ia32-msvc': 4.12.0
+      '@rollup/rollup-win32-x64-msvc': 4.12.0
+      fsevents: 2.3.3
+    dev: true
+
+  /sass@1.71.1:
+    resolution: {integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==}
+    engines: {node: '>=14.0.0'}
+    hasBin: true
+    dependencies:
+      chokidar: 3.6.0
+      immutable: 4.3.5
+      source-map-js: 1.0.2
+    dev: true
+
+  /select@1.1.2:
+    resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==}
+    dev: false
+
+  /shebang-command@2.0.0:
+    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+    engines: {node: '>=8'}
+    dependencies:
+      shebang-regex: 3.0.0
+    dev: true
+
+  /shebang-regex@3.0.0:
+    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /simple-concat@1.0.1:
+    resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
+    dev: false
+
+  /simple-get@4.0.1:
+    resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
+    dependencies:
+      decompress-response: 6.0.0
+      once: 1.4.0
+      simple-concat: 1.0.1
+    dev: false
+
+  /sortablejs@1.14.0:
+    resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==, tarball: https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz}
+    dev: false
+
+  /sortablejs@1.15.2:
+    resolution: {integrity: sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==}
+    dev: false
+
+  /source-map-js@1.0.2:
+    resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+    engines: {node: '>=0.10.0'}
+
+  /source-map@0.6.1:
+    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+    engines: {node: '>=0.10.0'}
+    dev: false
+
+  /sourcemap-codec@1.4.8:
+    resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+    deprecated: Please use @jridgewell/sourcemap-codec instead
+    dev: false
+
+  /string-split-by@1.0.0:
+    resolution: {integrity: sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==}
+    dependencies:
+      parenthesis: 3.1.8
+    dev: false
+
+  /supports-color@5.5.0:
+    resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+    engines: {node: '>=4'}
+    dependencies:
+      has-flag: 3.0.0
+    dev: true
+
+  /tiny-emitter@2.1.0:
+    resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==}
+    dev: false
+
+  /to-fast-properties@2.0.0:
+    resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+    engines: {node: '>=4'}
+
+  /to-regex-range@5.0.1:
+    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+    engines: {node: '>=8.0'}
+    dependencies:
+      is-number: 7.0.0
+    dev: true
+
+  /v-distpicker@2.1.0:
+    resolution: {integrity: sha512-xFUEZHtMXzYJKGiHlBFuzzqF1rEqQKsV8cPXYTzy3FeGJBO37HYnRz76vgw16buoGeqMnusxLRL8BqtaJlpzcg==}
+    dependencies:
+      vue: 3.2.47
+    dev: false
+
+  /vite-plugin-require-transform@1.0.21:
+    resolution: {integrity: sha512-A3SrHhVg9tCW35O7E8kcuB71YTEdVd3EaM1zh6gbH4zxy4WzXSfcNf0UiWmaHHhr6wdFhiiAGdpR6S0SUxXkGQ==}
+    dependencies:
+      '@babel/generator': 7.23.6
+      '@babel/parser': 7.23.9
+      '@babel/traverse': 7.23.9
+      '@babel/types': 7.23.9
+    transitivePeerDependencies:
+      - supports-color
+    dev: true
+
+  /vite@5.1.4(sass@1.71.1):
+    resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==}
+    engines: {node: ^18.0.0 || >=20.0.0}
+    hasBin: true
+    peerDependencies:
+      '@types/node': ^18.0.0 || >=20.0.0
+      less: '*'
+      lightningcss: ^1.21.0
+      sass: '*'
+      stylus: '*'
+      sugarss: '*'
+      terser: ^5.4.0
+    peerDependenciesMeta:
+      '@types/node':
+        optional: true
+      less:
+        optional: true
+      lightningcss:
+        optional: true
+      sass:
+        optional: true
+      stylus:
+        optional: true
+      sugarss:
+        optional: true
+      terser:
+        optional: true
+    dependencies:
+      esbuild: 0.19.12
+      postcss: 8.4.35
+      rollup: 4.12.0
+      sass: 1.71.1
+    optionalDependencies:
+      fsevents: 2.3.3
+    dev: true
+
+  /vue-datepicker-next@1.0.3(vue@3.4.20):
+    resolution: {integrity: sha512-Brqjh896BJGVxP7d6tGDsPMu0SDAB8hAdtG7zWF8VIHJB21dk1VB9KgdajD9Y9uXbg+wHN0vmL7sbMPIyehQVQ==}
+    peerDependencies:
+      vue: ^3.0.0
+    dependencies:
+      date-format-parse: 0.2.7
+      vue: 3.4.20
+    dev: false
+
+  /vue-demi@0.14.7(vue@3.4.20):
+    resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
+    engines: {node: '>=12'}
+    hasBin: true
+    requiresBuild: true
+    peerDependencies:
+      '@vue/composition-api': ^1.0.0-rc.1
+      vue: ^3.0.0-0 || ^2.6.0
+    peerDependenciesMeta:
+      '@vue/composition-api':
+        optional: true
+    dependencies:
+      vue: 3.4.20
+    dev: false
+
+  /vue-froala-wysiwyg@4.1.4:
+    resolution: {integrity: sha512-eut/YwWJf/LiM4eVTsgazCLyxTCiHbdPiLWhHXGH0RExMUEu/g191Ajzy5qkfLkfXTLDVoD7+yyOe8Kzg4Ha/g==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/runtime-corejs2': 7.24.0
+      babel-runtime: 6.26.0
+      froala-editor: 4.1.4
+      vue: 3.4.20
+    transitivePeerDependencies:
+      - typescript
+    dev: false
+
+  /vue-qr@4.0.9:
+    resolution: {integrity: sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==}
+    dependencies:
+      glob: 8.1.0
+      js-binary-schema-parser: 2.0.3
+      simple-get: 4.0.1
+      string-split-by: 1.0.0
+    dev: false
+
+  /vue-router@4.3.0(vue@3.4.20):
+    resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==}
+    peerDependencies:
+      vue: ^3.2.0
+    dependencies:
+      '@vue/devtools-api': 6.6.1
+      vue: 3.4.20
+    dev: false
+
+  /vue3-tree-org@4.2.2(vue@3.4.20):
+    resolution: {integrity: sha512-AG2SykyD6dw0jIyqBm8iuF9j9GWli6KrwudxR1RjULCCBTDFsoNm7MmP/weKT7wowN/sPk+e2RsnvEJMw2OJMw==}
+    peerDependencies:
+      vue: ^3.0.0
+    dependencies:
+      core-js: 3.36.0
+      vue: 3.4.20
+    dev: false
+
+  /vue@3.2.47:
+    resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==}
+    dependencies:
+      '@vue/compiler-dom': 3.2.47
+      '@vue/compiler-sfc': 3.2.47
+      '@vue/runtime-dom': 3.2.47
+      '@vue/server-renderer': 3.2.47(vue@3.2.47)
+      '@vue/shared': 3.2.47
+    dev: false
+
+  /vue@3.4.20:
+    resolution: {integrity: sha512-xF4zDKXp67NjgORFX/HOuaiaKYjgxkaToK0KWglFQEYlCw9AqgBlj1yu5xa6YaRek47w2IGiuvpvrGg/XuQFCw==}
+    peerDependencies:
+      typescript: '*'
+    peerDependenciesMeta:
+      typescript:
+        optional: true
+    dependencies:
+      '@vue/compiler-dom': 3.4.20
+      '@vue/compiler-sfc': 3.4.20
+      '@vue/runtime-dom': 3.4.20
+      '@vue/server-renderer': 3.4.20(vue@3.4.20)
+      '@vue/shared': 3.4.20
+
+  /vuedraggable@4.1.0(vue@3.4.20):
+    resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==, tarball: https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz}
+    peerDependencies:
+      vue: ^3.0.1
+    dependencies:
+      sortablejs: 1.14.0
+      vue: 3.4.20
+    dev: false
+
+  /which@2.0.2:
+    resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+    engines: {node: '>= 8'}
+    hasBin: true
+    dependencies:
+      isexe: 2.0.0
+    dev: true
+
+  /wrappy@1.0.2:
+    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+    dev: false

+ 12 - 1
src/api/modules/rai/YanXuanApi.js

@@ -45,7 +45,18 @@ const YanXuanApi = {
   getYanxuanShowButton: (params) => {
     return http.get("/cygx/yanxuan_special/show_button", params);
   },
-  
+  // 分享记录列表接口
+  getShareRecordList: (params) => {
+    return http.get("/cygx/mfyx/admin/share/list", params);
+  },
+  // 修改推荐人 备注信息
+  yanxuan_specialAuthorUpdate: (params) => {
+    return http.post("/cygx/yanxuan_special/author/update", params);
+  },
+  // 作者模糊查询
+  yanxuan_specialAuthorSearch: (params) => {
+    return http.get("/cygx/yanxuan_special/author/search", params);
+  },
 };
 
 export default YanXuanApi;

二進制
src/assets/img/home/mfyx_icon.png


+ 61 - 46
src/router/modules/cygxRoutes.js

@@ -2,54 +2,69 @@ import Home from "@/layouts/index.vue";
 
 export default [
   // // ----------------------------------- 查研观向报告预览
-  // {
-  //   path: "/summaryPre",
-  //   component: () => import("@/views/rai_manage/components/report_preview/summaryPre.vue"),
-  //   name: "预览研选报告",
-  //   hidden: true,
-  // },
-  // {
-  //   path: "/choicenessPre",
-  //   component: () => import("@/views/rai_manage/components/report_preview/choicenessPre.vue"),
-  //   name: "预览报告精选",
-  //   hidden: true,
-  // },
-  // {
-  //   path: "/roadshowPre",
-  //   component: () => import("@/views/rai_manage/components/report_preview/roadshowPre.vue"),
-  //   name: "预览路演精华",
-  //   hidden: true,
-  // },
-  // {
-  //   path: "/thisWeekSummary",
-  //   component: () => import("@/views/rai_manage/components/report_preview/thisWeekSummary.vue"),
-  //   name: "预览本周汇总",
-  //   hidden: true,
-  // },
-  // {
-  //   path: "/lastWeekSummary",
-  //   component: () => import("@/views/rai_manage/components/report_preview/lastWeekSummary.vue"),
-  //   name: "预览上周汇总",
-  //   hidden: true,
-  // },
+  {
+    path: "/summaryPre",
+    component: () => import("@/views/rai_manage/components/report_preview/summaryPre.vue"),
+    name: "summaryPre",
+    hidden: true,
+    meta: {
+      title: "预览研选报告",
+    },
+  },
+  {
+    path: "/choicenessPre",
+    component: () => import("@/views/rai_manage/components/report_preview/choicenessPre.vue"),
+    name: "choicenessPre",
+    hidden: true,
+    meta: {
+      title: "预览报告精选",
+    },
+  },
+  {
+    path: "/roadshowPre",
+    component: () => import("@/views/rai_manage/components/report_preview/roadshowPre.vue"),
+    name: "roadshowPre",
+    hidden: true,
+    meta: {
+      title: "预览路演精华",
+    },
+  },
+  {
+    path: "/thisWeekSummary",
+    component: () => import("@/views/rai_manage/components/report_preview/thisWeekSummary.vue"),
+    name: "thisWeekSummary",
+    hidden: true,
+    meta: {
+      title: "预览本周汇总",
+    },
+  },
+  {
+    path: "/lastWeekSummary",
+    component: () => import("@/views/rai_manage/components/report_preview/lastWeekSummary.vue"),
+    name: "lastWeekSummary",
+    hidden: true,
+    meta: {
+      title: "预览上周汇总",
+    },
+  },
   // //  ------------------------------------------------
   /* 查研观向报告 */
   {
     path: "/",
     component: Home,
     name: "CYGXREPORT",
-    mate: {
+    meta: {
       title: "查研观向报告",
     },
     hidden: false,
-    // icon_path: require("@/assets/img/home/rai_report.png"),
+    icon_path: require("@/assets/img/home/rai_report.png"),
     children: [
       // {
       //   path: "RaiDetail",
       //   component: () => import("@/views/custom_manage/customList/customDetail.vue"),
       //   name: "RaiDetail",
       //   hidden: true,
-      //   mate: {
+      //   meta: {
       //     title: "客户详情",
       //     keepAlive: false,
       //   },
@@ -59,7 +74,7 @@ export default [
         component: () => import("@/views/rai_manage/reportManage/appletsReport.vue"),
         name: "appletsReport",
         hidden: false,
-        mate: {
+        meta: {
           title: "弘则报告管理",
           keepAlive: false,
         },
@@ -140,7 +155,7 @@ export default [
         component: () => import("@/views/rai_manage/reportManage/reportChoiceness.vue"),
         name: "reportChoiceness",
         hidden: false,
-        mate: {
+        meta: {
           title: "报告精选",
           keepAlive: false,
         },
@@ -369,17 +384,17 @@ export default [
     component: Home,
     name: "CYGXGL",
     hidden: false,
-    mate: {
+    meta: {
       title: "查研观向管理",
     },
-    // icon_path: require("@/assets/img/home/rai_admin.png"),
+    icon_path: require("@/assets/img/home/rai_admin.png"),
     children: [
       {
         path: "Raimap",
         component: () => import("@/views/rai_manage/cygxManage/industryMap.vue"),
         name: "Raimap",
         hidden: false,
-        mate: {
+        meta: {
           title: "行业图谱",
           keepAlive: false,
         },
@@ -389,7 +404,7 @@ export default [
         component: () => import("@/views/rai_manage/cygxManage/adviceList.vue"),
         name: "RaiAdvice",
         hidden: false,
-        mate: {
+        meta: {
           title: "优化建议",
           keepAlive: false,
         },
@@ -399,7 +414,7 @@ export default [
         component: () => import("@/views/rai_manage/cygxManage/searchManage.vue"),
         name: "searchManage",
         hidden: false,
-        mate: {
+        meta: {
           title: "搜索词管理",
           keepAlive: false,
         },
@@ -409,7 +424,7 @@ export default [
         component: () => import("@/views/rai_manage/cygxManage/applyUserList.vue"),
         name: "applyList",
         hidden: false,
-        mate: {
+        meta: {
           title: "权益申请记录",
           keepAlive: false,
         },
@@ -419,7 +434,7 @@ export default [
         component: () => import("@/views/rai_manage/cygxManage/interviewList.vue"),
         name: "RaiInterview",
         hidden: false,
-        mate: {
+        meta: {
           title: "访谈申请",
           keepAlive: false,
         },
@@ -429,7 +444,7 @@ export default [
         component: () => import("@/views/rai_manage/cygxManage/bannerManage.vue"),
         name: "bannerManage",
         hidden: false,
-        mate: {
+        meta: {
           title: "banner管理",
           keepAlive: false,
         },
@@ -439,7 +454,7 @@ export default [
         component: () => import("@/views/rai_manage/cygxManage/lableManage.vue"),
         name: "lableManage",
         hidden: false,
-        mate: {
+        meta: {
           title: "标签管理",
           keepAlive: false,
         },
@@ -453,7 +468,7 @@ export default [
     component: Home,
     name: "HZHDGL",
     hidden: false,
-    // icon_path: require("@/assets/img/home/rai_activity.png"),
+    icon_path: require("@/assets/img/home/rai_activity.png"),
     children: [
       {
         path: "activityManage",
@@ -644,7 +659,7 @@ export default [
     component: Home,
     name: "YXHDGL",
     hidden: false,
-    // icon_path: require("@/assets/img/home/rai_activity.png"),
+    icon_path: require("@/assets/img/home/rai_activity.png"),
     children: [
       {
         path: "purchaserActivityManage",

+ 25 - 0
src/router/modules/researchRoutes.js

@@ -0,0 +1,25 @@
+import Home from "@/layouts/index.vue";
+
+export default [
+  {
+    path: "/",
+    component: Home,
+    name: "MFYXGL",
+    hidden: false,
+    icon_path: require("@/assets/img/home/mfyx_icon.png"),
+    meta: {
+      title: "买方研选管理",
+    },
+    children: [
+      {
+        path: "shareRecordResearch",
+        component: () => import("@/views/research_manage/shareRecord.vue"),
+        name: "shareRecordResearch",
+        hidden: false,
+        meta: {
+          title: "分享记录",
+        },
+      },
+    ],
+  },
+];

+ 1 - 1
src/views/rai_manage/activityManage/activityManage.vue

@@ -356,7 +356,7 @@ const {
           <el-select placeholder="活动类型" clearable v-model="cactivityTypeVal" @change="conditionChange">
             <el-option v-for="item in cactivityTypeList" :label="item.ActivityTypeName" :key="item.ActivityTypeId" :value="item.ActivityTypeId"></el-option>
           </el-select>
-          <el-date-picker v-model="publishDate" type="date" placeholder="发布时间" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd" @change="conditionChange"> </el-date-picker>
+          <el-date-picker v-model="publishDate" type="date" placeholder="发布时间" format="yyyy 年 MM 月 dd 日" value-format="YYYY-MM-DD" @change="conditionChange"> </el-date-picker>
           <date-picker v-model="issueTime" type="date" range placeholder="活动时间" value-type="format" @change="conditionChange"> </date-picker>
           <el-select placeholder="发布状态" clearable v-model="status" @change="conditionChange">
             <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>

+ 41 - 1
src/views/rai_manage/activityManage/applyManage.vue

@@ -78,7 +78,7 @@ const tabsBtnName = computed(() => {
 });
 
 watch(
-  () => titleValue,
+  () => pageState.titleValue,
   () => {
     pageState.page_no = 1;
     init();
@@ -314,6 +314,45 @@ onMounted(() => {
   !isResearch.value && chartPermission();
   getsDataList();
 });
+
+const {
+  tabsSelectionOne,
+  dataList, //表格的列表
+  page_no,
+  total, //条数
+  PageSize, //每页显示几条
+  industry, //行业
+  cactivityTypeVal, //活动
+  issueTime, //时间
+  selectList, //新增外呼人员的id
+  chartPermissionList, //行业的数组
+  cactivityTypeList, //活动类型
+  addDialogVisible, //新增外呼的弹框
+  particularsDialogVisible, //报名详情弹框
+  subscribe, //预约外呼弹框的tittle
+  titleValue, //标题关键词
+  tabsPitchonType,
+  dialogVisible, //文章详情
+  detailData, //文章详情数据
+  dialogVisibleId, //弹框id
+  reminder, //提示
+  generaitondialogVisib, //代问的弹框
+  generaitonId,
+  generaitonType,
+  numberFull, //
+  tableApplyColums,
+  signUpAdd,
+  minimumSummation,
+  numberLimi, //
+  addDialogType,
+  summaryRemindDlg, //预约纪要、会议提醒
+  isShowAppointment, //是 预约纪要、会议提醒
+  activityTypeName,
+  cactivityStatus,
+  publishStatus, //发布状态
+  messageDialogVisible, //发送消息模版
+  isResearchPoints, //
+} = toRefs(pageState);
 </script>
 
 <template>
@@ -444,6 +483,7 @@ onMounted(() => {
         margin-right: 30px;
         margin-bottom: 20px;
         color: #409eff;
+        cursor: pointer;
       }
       .pitch {
         background-color: #409eff;

+ 3 - 2
src/views/rai_manage/activityManage/components/ThemeSurvey/voteDlg.vue

@@ -1,5 +1,5 @@
 <script setup>
-import { reactive, ref, onMounted } from "vue";
+import { reactive, ref, onMounted, watch } from "vue";
 import { raiInterface, raiSpecial } from "@/api/api.js";
 import RichText from "../../../components/richText.vue";
 
@@ -172,7 +172,7 @@ onMounted(() => {
             </div>
           </el-form-item>
           <el-form-item prop="date">
-            <el-date-picker v-model="votingForm.date" type="date" placeholder="请设置投票截止时间" value-format="yyyy-MM-dd" style="width: 100%"> </el-date-picker>
+            <el-date-picker v-model="votingForm.date" type="date" placeholder="请设置投票截止时间" value-format="YYYY-MM-DD" style="width: 100%"> </el-date-picker>
           </el-form-item>
           <el-form-item prop="select">
             <el-select v-model="votingForm.select" placeholder="最多可选几项" style="width: 100%" @change="selectChangeHandler">
@@ -241,6 +241,7 @@ onMounted(() => {
 }
 
 .fr-wrapper-content-vote-dlg-container {
+  width: 100%;
   border-top: 1px solid #cccccc !important;
   border-bottom: 1px solid #cccccc !important;
 }

+ 1 - 1
src/views/rai_manage/activityManage/components/ThemeSurvey/votingResultsDlg.vue

@@ -1,5 +1,5 @@
 <script setup>
-import { ref, onMounted, nextTick } from "vue";
+import { ref, onMounted, nextTick ,watch} from "vue";
 
 import { raiInterface, raiSpecial } from "@/api/api.js";
 

+ 12 - 12
src/views/rai_manage/activityManage/components/addActivity.vue

@@ -5,7 +5,7 @@ import { raiInterface, customInterence, getOSSSign, resourceVoiceupload } from "
 import VueFroala from "vue-froala-wysiwyg";
 import Clipboard from "clipboard";
 import AddIndustryMark from "../../components/addIndustryMark.vue";
-import RichText from "../../../components/richText.vue";
+import RichText from "../../components/richText.vue";
 import MD5 from "js-md5";
 import ResearchDeduct from "./addComopnents/ResearchDeduct.vue";
 import ModifyImgDlg from "./addComopnents/modifyImgDlg.vue";
@@ -325,7 +325,7 @@ const saveTheRelease = _.debounce(async function (type, arr, VoiceList, VideoDet
   let PointsSet = RefPage.PointsSet;
   const res = await raiInterface.preserveAndPublishAdd({
     DoType: type == "发布" ? 1 : 0,
-    ActivityId: Number(route.query.id) || 0,
+    ActivityId: Number($route.query.id) || 0,
     ActivityTypeId: Number(pageState.cactivityType),
     Body: pageState.content,
     PermissionName: pageState.optionFormregion,
@@ -359,7 +359,7 @@ const saveTheRelease = _.debounce(async function (type, arr, VoiceList, VideoDet
 
   if (res.Ret !== 200) return;
   ElMessage.success("操作成功!");
-  router.back();
+  $router.back();
 }, 500);
 //获取行业
 function chartPermission() {
@@ -524,13 +524,13 @@ function handleCheckedCitiesChange(value) {
   pageState.checkAll = checkedCount === pageState.cities.length;
   pageState.isIndeterminate = checkedCount > 0 && checkedCount < pageState.cities.length;
 }
-function functioncancelBtn() {
-  router.back();
+function cancelBtn() {
+  $router.back();
 }
-function functioncontentTemplate(type) {
+function contentTemplate(type) {
   pageState.contentTemplateTitle = type;
 }
-function functionhandleCloseSubject() {
+function handleCloseSubject() {
   pageState.nameSubjectOptions = [];
   pageState.addSubjectName = "";
   pageState.addSubjectOptions = [];
@@ -573,7 +573,7 @@ async function searchInfo(val) {
   }
 }
 //套餐类型的 提升文本
-function functioncheckboxTooltip(val) {
+function checkboxTooltip(val) {
   let str = "";
   switch (val) {
     case "全选":
@@ -723,7 +723,7 @@ async function getVideoAndImg(type, isOne = "") {
 }
 
 watch(
-  () => radio,
+  () => pageState.radio,
   (newVal) => {
     if (newVal == 1) {
       pageState.astrict = "";
@@ -734,7 +734,7 @@ watch(
 );
 
 watch(
-  () => radioTemporary,
+  () => pageState.radioTemporary,
   (newVal) => {
     if (pageState.radioTemporary) {
       pageState.selectDisabled = true;
@@ -746,14 +746,14 @@ watch(
 );
 
 watch(
-  () => subjectRadio,
+  () => pageState.subjectRadio,
   (newVal) => {
     pageState.addSubjectLabel = [];
   }
 );
 
 watch(
-  () => cactivityType,
+  () => pageState.cactivityType,
   (newVal) => {
     if ($route.query.id) return;
     isCheckAllType(newval === 4 ? true : false);

+ 2 - 2
src/views/rai_manage/activityManage/components/addComopnents/ResearchDeduct.vue

@@ -1,5 +1,5 @@
 <script setup>
-import { ref, reactive, watch, onMounted, toRefs } from "vue";
+import { ref, reactive, watch, onMounted, toRefs, computed } from "vue";
 import { raiInterface } from "@/api/api.js";
 import { DeductUser, DeductForm } from "./addOfEditData";
 import { useRouter, useRoute } from "vue-router";
@@ -213,7 +213,7 @@ const {
       </template>
       <span style="margin: 0 20px" v-if="isDeduct">
         报名截止时间:
-        <el-date-picker clearable v-model="SiginupDeadline" type="datetime" placeholder="选择日期时间" value-format="yyyy-MM-dd HH:mm:ss"> </el-date-picker>
+        <el-date-picker clearable v-model="SiginupDeadline" type="datetime" placeholder="选择日期时间" value-format="YYYY-MM-DD HH:mm:ss"> </el-date-picker>
       </span>
       <span style="margin: 0 20px 0 0" v-if="PointsSet.PointsType == 1">
         取消报名截止时间:

+ 11 - 3
src/views/rai_manage/activityManage/meetingManagement.vue

@@ -1,5 +1,5 @@
 <script setup>
-import { ref, watch, onMounted, reactive, computed, toRefs } from "vue";
+import { ref, watch, onMounted, reactive, computed, toRefs, nextTick } from "vue";
 
 import mPage from "@/components/mPage.vue";
 import { raiInterface } from "@/api/api.js";
@@ -405,8 +405,16 @@ const {
         </span>
       </template>
     </el-dialog>
-    <matching-dlg v-model:matchingDlgShow="matchingDlgShow" :matchingId="matchingId" @getsDataList="getsDataList"/>
-    <partical-dialog  @getsDataList="getsDataList" @particulars="particulars" :type="attendType" :offlineId="offlineId" v-model:submitDialog="submitDialog" v-model:dialogVisiblepartica="dialogVisiblepartica" :particlaDlg="particlaDlg" />
+    <matching-dlg v-model:matchingDlgShow="matchingDlgShow" :matchingId="matchingId" @getsDataList="getsDataList" />
+    <partical-dialog
+      @getsDataList="getsDataList"
+      @particulars="particulars"
+      :type="attendType"
+      :offlineId="offlineId"
+      v-model:submitDialog="submitDialog"
+      v-model:dialogVisiblepartica="dialogVisiblepartica"
+      :particlaDlg="particlaDlg"
+    />
     <search-customer-dlg v-model:searchCustomer="searchCustomer" />
   </div>
 </template>

+ 2 - 2
src/views/rai_manage/activityManage/roadShow/components/addVideoDlg.vue

@@ -310,8 +310,8 @@ function cancelHandle() {
               v-model="addEditVideo.publishDate"
               type="date"
               placeholder="请选择发布时间"
-              format="yyyy 年 MM 月 dd 日"
-              value-format="yyyy-MM-dd"
+              format="YYYY 年 MM 月 DD 日"
+              value-format="YYYY-MM-DD"
               @change="conditionChange"
             >
             </el-date-picker>

+ 6 - 10
src/views/rai_manage/activityManage/roadShow/components/playDetailsDlg.vue

@@ -28,7 +28,7 @@ const tableColums = computed(() => {
 
 watch(
   () => props.playDetailsList.VideoId,
-  () => {
+  (newval) => {
     if (newval) {
       props.tabActive == 4 && getVideoDeatil();
     }
@@ -37,23 +37,19 @@ watch(
 
 watch(
   () => props.playDetailsList.FileName,
-  () => {
+  (newval) => {
     if (newval) {
-      if (newval) {
-        newval == "视频" && activityVideoDeatil();
-        newval == "音频" && getVoiceDeatil();
-      }
+      newval == "视频" && activityVideoDeatil();
+      newval == "音频" && getVoiceDeatil();
     }
   }
 );
 
 watch(
   () => props.playDetailsList.AskserieVideoId,
-  () => {
+  (newval) => {
     if (newval) {
-      if (newval) {
-        askserieVideoHistoryList();
-      }
+      askserieVideoHistoryList();
     }
   }
 );

+ 8 - 5
src/views/rai_manage/activityManage/roadShow/components/releaseAudio.vue

@@ -39,14 +39,13 @@ const fileListAudio = ref([]);
 const videoAndVoiceList = ref([]);
 const defaultImage = ref([]);
 const modifyImgVisible = ref(false);
-const defaultImage = ref("");
-const shareImg = ref("");
+const shareImg = ref(null);
 const dlgTitle = ref("发布问答");
 
 watch(
   () => props.playDetailsList.AskserieVideoId,
-  () => {
-    if (newval) {
+  (newVal) => {
+    if (newVal) {
       newVal && newVal > 0 && askserieVideoDetail();
     }
   },
@@ -91,7 +90,7 @@ const ruleFormAudio = ref(null);
 function confirmSubmit(type) {
   ruleFormAudio.value.validate(async (valid) => {
     if (valid) {
-      if (!fileListAudio[0].value.url) return ElMessage.error("请上传音频");
+      if (!fileListAudio.value[0].url) return ElMessage.error("请上传音频");
       if (!addEditAudio.value.audioName) return ElMessage.error("请输入音频名称");
       let ChartPermissionName = "";
       props.chartPermissionList.forEach((item) => {
@@ -270,6 +269,10 @@ async function askserieVideoDetail() {
     }
   }
 }
+.dialog-footer {
+  display: flex;
+  justify-content: center;
+}
 </style>
 <style lang="scss" scoped>
 .add-edit-release-audio {

+ 5 - 5
src/views/rai_manage/activityManage/roadShowList.vue

@@ -34,7 +34,7 @@ const $route = useRoute();
 const $router = useRouter();
 
 const pageState = reactive({
-  tableColums: [],
+  tableColumsPage: [],
   dataList: [],
   tabActive: 1, //tabs 选中
   chartPermissionList: [], //行业的数组
@@ -80,7 +80,7 @@ onMounted(() => {
     pageState.tabActive = tabActive;
   }
 
-  pageState.tableColums = tableColums(pageState.tabActive);
+  pageState.tableColumsPage = tableColums(pageState.tabActive);
   chartPermission();
   activityType();
   getVideoList();
@@ -88,7 +88,7 @@ onMounted(() => {
 
 function topTabsHandler(item) {
   pageState.tabActive = item.value;
-  pageState.tableColums = tableColums(pageState.tabActive);
+  pageState.tableColumsPage = tableColums(pageState.tabActive);
   pageState.publishStatus = "";
   pageState.cactivityTypeVal = "";
   pageState.page_no = 1;
@@ -271,7 +271,7 @@ onBeforeRouteLeave((to, from, next) => {
 });
 
 const {
-  tableColums,
+  tableColumsPage,
   dataList,
   tabActive, //tabs 选中
   chartPermissionList, //行业的数组
@@ -340,7 +340,7 @@ const {
       </div>
       <el-table :data="dataList" style="width: 100%" border @sort-change="sortChangeHandle">
         <el-table-column
-          v-for="item in tableColums"
+          v-for="item in tableColumsPage"
           :key="item.label"
           :label="item.label"
           :width="item.widthsty"

+ 6 - 6
src/views/rai_manage/activityManage/specialResearch.vue

@@ -45,7 +45,7 @@ const pageState = reactive({
   previewList: [],
   interestData: [], //感兴趣人数
   exportInterest: "",
-  tableColums: [],
+  tableColumsPage: [],
   tabsActive: 1,
   offlineId: 0, //提交的ID
   dialogVisiblepartica: false, //到会详情的隐现
@@ -77,7 +77,7 @@ const tabsTop = computed(() => {
 //点击了头部切换
 function tabsHandle(item) {
   pageState.tabsActive = item.id;
-  pageState.tableColums = tableColums(pageState.tabsActive);
+  pageState.tableColumsPage = tableColums(pageState.tabsActive);
   pageState.status = "";
   pageState.page_no = 1;
   getsDataList();
@@ -273,7 +273,7 @@ function handleRowContent(row, key) {
 }
 // 新增活动报名
 function addapply() {
-  if (!this.selectList) returnElMessage.error("请先选择活动");
+  if (!pageState.selectList) returnElMessage.error("请先选择活动");
   pageState.addDialogVisible = true;
 }
 // 新增活动报名的表格选择
@@ -316,7 +316,7 @@ onMounted(() => {
   }
   chartPermission();
   getsDataList();
-  pageState.tableColums = tableColums(pageState.tabsActive);
+  pageState.tableColumsPage = tableColums(pageState.tabsActive);
 });
 
 onBeforeRouteLeave((to, from, next) => {
@@ -345,7 +345,7 @@ const {
   previewList,
   interestData, //感兴趣人数
   exportInterest,
-  tableColums,
+  tableColumsPage,
   tabsActive,
   offlineId, //提交的ID
   dialogVisiblepartica, //到会详情的隐现
@@ -392,7 +392,7 @@ const {
     <el-card>
       <el-table @selection-change="selectChange" :data="dataList" style="width: 100%; margin-top: 20px" border>
         <el-table-column v-if="tabsActive == 2" align="center" type="selection" width="55"> </el-table-column>
-        <el-table-column v-for="item in tableColums" :key="item.label" :label="item.label" :width="item.widthsty" :min-width="item.minwidthsty" align="center">
+        <el-table-column v-for="item in tableColumsPage" :key="item.label" :label="item.label" :width="item.widthsty" :min-width="item.minwidthsty" align="center">
           <template #default="{ row }">
             <span @click="handleRowClick(row, item.key)" :style="handleRowStyle(item.key)">{{ handleRowContent(row, item.key) }}</span>
           </template>

+ 1 - 1
src/views/rai_manage/activityManage/specialResearch/addResearch.vue

@@ -78,7 +78,7 @@ watch(
 
 watch(
   () => pageState.ruleForm.modality,
-  () => {
+  (newval) => {
     if (newval) {
       pageState.ruleForm.city = "";
     }

+ 3 - 3
src/views/rai_manage/activityManage/specialResearch/determineTravel.vue

@@ -88,8 +88,8 @@ watch(
 
 watch(
   () => pageState.ruleForm.modality,
-  () => {
-    if (newval) {
+  (newval) => {
+    if (newval==1) {
       pageState.ruleForm.city = "";
     }
   },
@@ -447,7 +447,7 @@ const {
           <div v-for="(item, num) in isDateTime" :key="num" class="day-item">
             <span class="day-nub"> DAY {{ num + 1 }} : </span>
             <div>
-              <el-date-picker style="width: 186px; margin-right: 25px" v-model="item.DateYmd" type="date" value-format="yyyy-MM-dd" placeholder="请选择日期"> </el-date-picker>
+              <el-date-picker style="width: 186px; margin-right: 25px" v-model="item.DateYmd" type="date" value-format="YYYY-MM-DD" placeholder="请选择日期"> </el-date-picker>
             </div>
             <div>
               <div v-for="(key, index) in item.DateHmsList" :key="index">

+ 1 - 1
src/views/rai_manage/activityManage/specialResearch/particularsAll.vue

@@ -160,7 +160,7 @@ function cancelApply(item) {
   </div>
 </template>
 
-<style lang="less">
+<style lang="scss">
 .container-particulars {
   .table-box {
     margin: 20px auto;

+ 3 - 4
src/views/rai_manage/components/addChoiceness.vue

@@ -52,7 +52,6 @@ const timeInterval = ref(null); // 定时器
 // 报告的缓存处理数据
 function dataInit() {
   if (sessionStorage.getItem("addChoicenessQY")) {
-    console.log("????");
     let data = JSON.parse(sessionStorage.getItem("addChoicenessQY"));
     setTimeout(() => {
       industryList.value = data.industryList;
@@ -326,7 +325,7 @@ const confirm = _.debounce(function (type) {
       let params = dataHandle(type);
       if (type == "预览") {
         sessionStorage.setItem("choicenessPre", JSON.stringify(params));
-        let { href } = router.resolve({ name: "预览报告精选" });
+        let { href } = router.resolve({ name: "choicenessPre" });
         window.open(href, "_blank");
       } else {
         const res = await raiInterface.industrialSubjectPreserveAndPublish(params);
@@ -505,7 +504,7 @@ onBeforeRouteLeave((to, from, next) => {
             </el-col>
             <el-col :span="6">
               <el-form-item prop="time">
-                <el-date-picker type="date" placeholder="选择发布时间" value-format="yyyy-MM-dd" v-model="ruleForm.time"></el-date-picker>
+                <el-date-picker type="date" placeholder="选择发布时间" value-format="YYYY-MM-DD" v-model="ruleForm.time"></el-date-picker>
               </el-form-item>
             </el-col>
           </el-row>
@@ -525,7 +524,7 @@ onBeforeRouteLeave((to, from, next) => {
         </el-form>
         <!-- 产业/标的 模块 -->
         <div class="content-module" v-if="industryList.length">
-          <draggable v-model="industryList" animation="300" @update="sortChange">
+          <draggable v-model="industryList" animation="300" @update="sortChange" item-key="id">
             <template #item="{ element, index }">
               <div class="content-industry">
                 <div class="content-name" :class="industryIndex == index ? 'active' : ''" @click="industryBtn(element, index)">{{ element.ChartPermissionName }}</div>

+ 1 - 1
src/views/rai_manage/components/addMorningMeeting.vue

@@ -285,7 +285,7 @@ const { meettingDate, meetingId, froalaConfig, sectionData, industryData, allPro
   <!-- 添加/编辑 晨会精华 -->
   <div class="add-morning-meeting-wrap" v-loading="dataLoading">
     <div class="date-pick-wrap">
-      <el-date-picker v-model="meettingDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="请选择晨会日期"> </el-date-picker>
+      <el-date-picker v-model="meettingDate" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="请选择晨会日期"> </el-date-picker>
     </div>
     <div class="content-wrap">
       <div class="meeting-content-wrap">

+ 2 - 2
src/views/rai_manage/components/addRoadshow.vue

@@ -146,7 +146,7 @@ const confirm = _.debounce(function (type) {
       };
       if (type == "预览") {
         sessionStorage.setItem("roadShowPre", JSON.stringify(params));
-        let { href } = $router.resolve({ name: "预览路演精华" });
+        let { href } = $router.resolve({ name: "roadshowPre" });
         window.open(href, "_blank");
       } else {
         const res = await raiInterface.roadshowEssencePreserveAndPublish(params);
@@ -213,7 +213,7 @@ const { listForm, property, rules, optionsIndustry, optionsProperty, optionsTarg
           </el-col>
           <el-col :span="6">
             <el-form-item prop="time">
-              <el-date-picker v-model="listForm.time" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd"> </el-date-picker>
+              <el-date-picker v-model="listForm.time" type="date" placeholder="请选择日期" value-format="YYYY-MM-DD"> </el-date-picker>
             </el-form-item>
           </el-col>
         </el-row>

+ 3 - 3
src/views/rai_manage/components/addSummarizing.vue

@@ -82,7 +82,7 @@ const ruleFormRef = ref(null);
 const confirm = _.debounce(function (type) {
   ruleFormRef.value.validate(async (val) => {
     if (!val) return;
-    const isFlag = await pageState.fnConFirm();
+    const isFlag = await fnConFirm();
     if (isFlag) return;
     let params = {
       Abstract: pageState.ruleForm.explain,
@@ -101,7 +101,7 @@ const confirm = _.debounce(function (type) {
     };
     if (type == "预览") {
       sessionStorage.setItem("lastWeekPre", JSON.stringify(params));
-      let { href } = $router.resolve({ name: "预览上周汇总" });
+      let { href } = $router.resolve({ name: "lastWeekSummary" });
       window.open(href, "_blank");
     } else {
       const res = await raiInterface.minutesSummaryPreserveAndPublish(params);
@@ -230,7 +230,7 @@ const { ruleForm, rules, ListCydyjy, SortCydyjy, ListSsgs, SortSsgs, isSortCydyj
           </el-col>
           <el-col :span="6">
             <el-form-item prop="time">
-              <el-date-picker type="date" placeholder="选择发布时间" value-format="yyyy-MM-dd" v-model="ruleForm.time"></el-date-picker>
+              <el-date-picker type="date" placeholder="选择发布时间" value-format="YYYY-MM-DD" v-model="ruleForm.time"></el-date-picker>
             </el-form-item>
           </el-col>
         </el-row>

+ 9 - 3
src/views/rai_manage/components/addSummary.vue

@@ -3,7 +3,6 @@ import { ref, onMounted, reactive, toRefs } from "vue";
 import { raiInterface } from "@/api/api.js";
 import Clipboard from "clipboard";
 import RichText from "./richText.vue";
-import chartDialogVue from "../../dataEntry_manage/components/chartDialog.vue";
 import AddIndustryMark from "../components/addIndustryMark.vue";
 import _ from "lodash";
 import { ElMessageBox, ElMessage } from "element-plus";
@@ -199,7 +198,7 @@ const submitForm = _.debounce(async function (type) {
         window.open(href, "_blank");
       } else {
         sessionStorage.setItem("summaryPre", JSON.stringify(params));
-        let { href } = $router.resolve({ name: "预览研选报告" });
+        let { href } = $router.resolve({ name: "summaryPre" });
         window.open(href, "_blank");
       }
       return;
@@ -459,7 +458,7 @@ const {
         </el-select>
         <img v-if="!isSource" src="~@/assets/img/set_m/add_ico.png" style="margin: 0 0 0 10px" @click="isAddMarketDlg" />
         <el-form-item prop="publishTime">
-          <el-date-picker style="margin-left: 30px" v-model="addOfEditForm.publishTime" type="date" placeholder="请选择发布时间" format="yyyy-MM-dd" value-format="yyyy-MM-dd"> </el-date-picker>
+          <el-date-picker style="margin-left: 30px" v-model="addOfEditForm.publishTime" type="date" placeholder="请选择发布时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD"> </el-date-picker>
         </el-form-item>
       </el-card>
 
@@ -616,6 +615,9 @@ const {
     justify-content: space-between;
   }
   .form-item-bootm {
+    width: 100%;
+    display: flex;
+    justify-content: center;
     margin-top: 50px;
     text-align: center;
     .el-button {
@@ -633,4 +635,8 @@ const {
 .fr-visible {
   display: none !important;
 }
+
+.el-form-item__content {
+  justify-content: center;
+}
 </style>

+ 2 - 2
src/views/rai_manage/components/addThisWeek.vue

@@ -138,7 +138,7 @@ const confirm = _.debounce(function (type) {
     };
     if (type == "预览") {
       sessionStorage.setItem("pageStateWeekPre", JSON.stringify(params));
-      let { href } = $router.resolve({ name: "预览本周汇总" });
+      let { href } = $router.resolve({ name: "thisWeekSummary" });
       window.open(href, "_blank");
     } else {
       const res = await raiInterface.researchSummaryPreserveAndPublish(params);
@@ -254,7 +254,7 @@ const {
           </el-col>
           <el-col :span="6">
             <el-form-item prop="time">
-              <el-date-picker type="date" placeholder="选择发布时间" value-format="yyyy-MM-dd" v-model="ruleForm.time"></el-date-picker>
+              <el-date-picker type="date" placeholder="选择发布时间" value-format="YYYY-MM-DD" v-model="ruleForm.time"></el-date-picker>
             </el-form-item>
           </el-col>
         </el-row>

+ 12 - 22
src/views/rai_manage/components/apply/applyDialog.vue

@@ -31,14 +31,14 @@ const props = defineProps({
 
 const dynamicItem = ref([{ name: "", isShow: false, radio: "1", checked: false }]);
 const companyList = ref([]); //客户名称的数组
-const userTyepa = ref([]); //客户名称的数组
+const userTyep = ref([]); //客户名称的数组
 const timeout = ref(null);
 const warningIsShow = ref(false);
 const isShow = ref("");
 const userId = ref("");
 
 const isType = computed(() => {
-  if (props.selectionArr.length > 0) {
+  if (props.selectionArr && props.selectionArr.length > 0) {
     return props.selectionArr.some(
       (item) => item.ActivityTypeName == "公司调研电话会" || item.ActivityTypeName == "专家电话会" || item.ActivityTypeName == "分析师电话会" || item.IsYidongConduct == 1
     );
@@ -46,7 +46,7 @@ const isType = computed(() => {
 });
 
 const isShowSummary = computed(() => {
-  if (props.selectionArr.length > 0) {
+  if (props.selectionArr && props.selectionArr.length > 0) {
     return (props.addDialogType == "新增外呼人员" || props.addDialogType == "新增报名") && !props.selectionArr.some((item) => item.ActivityTypeName == "公司调研电话会" && item.LimitPeopleNum !== 0);
   }
 });
@@ -116,7 +116,8 @@ function deleteItem(item, index) {
   dynamicItem.value.splice(index, 1);
 }
 /* 获取客户名称 */
-function getCompany(query) {
+function getCompany(query, cd) {
+  cd([]);
   if (query.includes(",")) return;
   if (query) {
     raiInterface
@@ -135,28 +136,18 @@ function getCompany(query) {
               arr.push(obj);
             });
           companyList.value = arr;
+          cd(companyList.value);
+          if (companyList.value.length == 0) {
+            warningIsShow.value = true;
+          } else {
+            warningIsShow.value = false;
+          }
         }
       });
   } else {
     companyList.value = [];
   }
 }
-function callbackHandle(data, cb) {
-  let results = data
-    ? companyList.value.filter((item) => {
-        return item.value.includes(data);
-      })
-    : companyList.value;
-  clearTimeout(timeout.value);
-  timeout.value = setTimeout(() => {
-    cb(results);
-  }, 300);
-  if (results.length == 0) {
-    warningIsShow.value = true;
-  } else {
-    warningIsShow.value = false;
-  }
-}
 //退出弹框
 function handleClose() {
   userId.value = "";
@@ -230,9 +221,8 @@ function measurement() {
           <el-autocomplete
             class="inline-input"
             v-model="item.name"
-            :fetch-suggestions="callbackHandle"
+            :fetch-suggestions="getCompany"
             placeholder="请输入姓名"
-            @input="getCompany(item.name)"
             @select="selectCompany(item, index)"
             @blur="focusCompany(item.name)"
             :trigger-on-focus="false"

+ 26 - 7
src/views/rai_manage/components/apply/particularsDialog.vue

@@ -1,5 +1,5 @@
 <script setup>
-import { ref, watch, onMounted, computed, reactive, nextTick } from "vue";
+import { ref, watch, onMounted, computed, reactive, nextTick, toRefs } from "vue";
 import { ElMessageBox, ElMessage } from "element-plus";
 import { raiInterface } from "@/api/api.js";
 import EditMobile from "../editMobile.vue";
@@ -55,12 +55,10 @@ const pageState = reactive({
 
 // 下载
 const exportUser = computed(() => {
-  if (props.selectionArr.length > 0) {
-    if (pageState.Teleconference || props.subscribe == "预约外呼详情") {
-      return import.meta.env.VITE_APP_API_ROOT + "/cygx/activitySignup/callExport?ActivityId=" + pageState.excelId + "&" + localStorage.getItem("auth") || "";
-    } else {
-      return import.meta.env.VITE_APP_API_ROOT + "/cygx/activitySignup/signupFailExport?ActivityId=" + pageState.excelId + "&" + localStorage.getItem("auth") || "";
-    }
+  if (pageState.Teleconference || props.subscribe == "预约外呼详情") {
+    return import.meta.env.VITE_APP_API_ROOT + "/cygx/activitySignup/callExport?ActivityId=" + pageState.excelId + "&" + localStorage.getItem("auth") || "";
+  } else {
+    return import.meta.env.VITE_APP_API_ROOT + "/cygx/activitySignup/signupFailExport?ActivityId=" + pageState.excelId + "&" + localStorage.getItem("auth") || "";
   }
 });
 
@@ -245,6 +243,27 @@ function handleConfirmDownload() {
   pageState.isNameListDownloadShow = false;
   pageState.downloadTypeName = 0;
 }
+
+const {
+  page_no,
+  PageSize,
+  dataList, //表格
+  value1,
+  radioArr,
+  excelType, //下载类型
+  excelId, //下载的id
+  total, //条数
+  myTotal, //条数
+  isLimitPeople, //条数
+  memberType, //
+  editMobileDialogVisible, //
+  editMobileId, //
+  outboundMobile,
+  isFullNum, //报名人数是否已满
+  isNameListDownloadShow, //下载名单弹框
+  downloadTypeName,
+  isYidongConduct, // 是否是易懂
+} = toRefs(pageState);
 </script>
 
 <template>

+ 2 - 12
src/views/rai_manage/components/apply/searchCustomerDlg.vue

@@ -77,7 +77,7 @@ async function handleRowClick(row, key) {
   }
 }
 
-const $emit =defineEmits()
+const $emit = defineEmits();
 
 //搜索的取消
 function searchCancelHandle() {
@@ -96,17 +96,7 @@ function detaileCancelHandle() {
   pageState.detailedDateList = [];
 }
 
-
-cosnt {
-  clientName,
-  clientList,
-  resultCustomer,
-  resultDateList,
-  resultDate,
-  detailedVisibleDlg,
-  detailedDateList,
-  detailedDate,
-} =toRefs(pageState)
+const { clientName, clientList, resultCustomer, resultDateList, resultDate, detailedVisibleDlg, detailedDateList, detailedDate } = toRefs(pageState);
 </script>
 
 <template>

+ 11 - 3
src/views/rai_manage/components/editMobile.vue

@@ -24,6 +24,7 @@ const props = defineProps({
 });
 
 const selectValue = ref("86");
+
 const optionsMobile = ref([
   { value: "+86", key: "86" },
   { value: "+852", key: "852" },
@@ -49,7 +50,7 @@ async function activitySignupSignupDetail() {
   }
 }
 
-const $emit = defineEmits(['getsDataList']);
+const $emit = defineEmits(["getsDataList"]);
 function handleClose() {
   selectValue.value = "86";
   modelKey.value = "";
@@ -89,7 +90,7 @@ async function btnOk() {
         </div>
       </template>
       <div class="content-box" style="margin-top: 20px; margin-bottom: 60px">
-        <el-select style="width: 80px" v-model="selectValue" placeholder="请选择">
+        <el-select style="width: 90px" v-model="selectValue" placeholder="请选择">
           <el-option v-for="item in optionsMobile" :key="item.key" :label="item.value" :value="item.key"> </el-option>
         </el-select>
         <el-input style="width: 368px" v-model="modelKey" placeholder="请输入手机号或座机号" />
@@ -104,7 +105,14 @@ async function btnOk() {
     </el-dialog>
   </div>
 </template>
-
+<style lang="scss">
+.el-select {
+  .el-input,
+  .el-input__wrapper {
+    width: 100% !important;
+  }
+}
+</style>
 <style scoped lang="scss">
 .container-editMobile {
   .content-box {

+ 2 - 3
src/views/rai_manage/components/matchingDlg.vue

@@ -1,7 +1,6 @@
 <script setup>
 import { ref, watch, nextTick } from "vue";
 
-import mDialog from "@/components/mDialog.vue";
 import { raiInterface } from "@/api/api.js";
 import { ElMessage } from "element-plus";
 
@@ -62,7 +61,7 @@ async function confirm() {
 
 <template>
   <div class="container-macthing">
-    <mDialog v-model="props.matchingDlgShow" @beforeClose="closeDlg" :width="'40%'">
+    <el-dialog draggable :modal-append-to-body="false" center v-model="props.matchingDlgShow" @beforeClose="closeDlg" :width="'40%'">
       <div class="content-macthing">
         <el-select style="width: 100%" v-model="matchingValue" filterable clearable :filter-method="remoteMethod" placeholder="请输入活动名称关键字">
           <el-option v-for="item in dataQueryList" :key="item.RoadshowTitle + item.ActivityTime" :label="item.value" :value="item.RoadshowTitle + '{|}' + item.ActivityTime"> </el-option>
@@ -80,7 +79,7 @@ async function confirm() {
           <el-button type="primary" @click="closeDlg">取消</el-button>
         </div>
       </template>
-    </mDialog>
+    </el-dialog>
   </div>
 </template>
 

+ 6 - 10
src/views/rai_manage/components/particalDialog.vue

@@ -49,7 +49,7 @@ watch(
 watch(
   () => props.dialogVisiblepartica,
   (newValue) => {
-    if (newval) {
+    if (newValue) {
       if (isShowparticulars.value == "报名详情") {
         offlineListDetail();
       } else {
@@ -61,10 +61,8 @@ watch(
 watch(
   () => props.submitDialog,
   (newValue) => {
-    if (newval) {
-      if (newval) {
-        arriveOfflineListDetail();
-      }
+    if (newValue) {
+      arriveOfflineListDetail();
     }
   }
 );
@@ -79,7 +77,7 @@ async function offlineListDetail() {
   }
 }
 
-const $emit = defineEmits(["getsDataList",'particulars']);
+const $emit = defineEmits(["getsDataList", "particulars"]);
 
 //到会详情
 async function arriveOfflineListDetail() {
@@ -128,11 +126,9 @@ async function confirmSubmit() {
     userId.value = "";
     dynamicItem.value = [];
     $emit("update:submitDialog", false);
-    this.$parent.getsDataList();
     $emit("getsDataList");
-    $nextTick(() => {
-    $emit("particulars",props.offlineId, "到会详情");
-
+    nextTick(() => {
+      $emit("particulars", props.offlineId, "到会详情");
     });
   }
 }

+ 1 - 1
src/views/rai_manage/components/report_preview/choicenessPre.vue

@@ -5,7 +5,7 @@ import Disclaimer from "./components/disclaimer.vue";
 import toTop from "./components/toTop.vue";
 import moment from "moment";
 import { raiInterface } from "@/api/api.js";
-
+import $ from 'jquery'
 const $route = useRoute();
 const $router = useRouter();
 

+ 1 - 1
src/views/rai_manage/components/report_preview/lastWeekSummary.vue

@@ -6,7 +6,7 @@ import Disclaimer from "./components/disclaimer.vue";
 import toTop from "./components/toTop.vue";
 import moment from "moment";
 import { raiInterface } from "@/api/api.js";
-
+import $ from 'jquery'
 const $route = useRoute();
 const $router = useRouter();
 

+ 1 - 1
src/views/rai_manage/components/report_preview/roadshowPre.vue

@@ -6,7 +6,7 @@ import Disclaimer from "./components/disclaimer.vue";
 import toTop from "./components/toTop.vue";
 import moment from "moment";
 import { raiInterface } from "@/api/api.js";
-
+import $ from 'jquery'
 const $route = useRoute();
 const $router = useRouter();
 

+ 10 - 13
src/views/rai_manage/components/report_preview/summaryPre.vue

@@ -5,7 +5,7 @@ import { useRoute, useRouter } from "vue-router";
 import Disclaimer from "./components/disclaimer.vue";
 import toTop from "./components/toTop.vue";
 import moment from "moment";
-
+import $ from 'jquery'
 const $route = useRoute();
 const $router = useRouter();
 
@@ -16,19 +16,16 @@ const publishTime = computed(() => {
 const reportInfo = ref(JSON.parse(sessionStorage.getItem("summaryPre")) || "");
 const showTips = ref(false);
 
+function showDisclaimer() {
+  showTips.value = true;
+}
+function lookDeeperReport() {
+  window.open(reportInfo.value.ReportLink, "_blank");
+}
 
- function  showDisclaimer() {
-      showTips.value = true;
-    },
-   function lookDeeperReport() {
-      window.open(reportInfo.value.ReportLink, "_blank");
-    },
-
-
-onMounted(()=>{
-    $("#report-content img").css("max-width", "100%");
-
-})
+onMounted(() => {
+  $("#report-content img").css("max-width", "100%");
+});
 </script>
 
 <template>

+ 1 - 1
src/views/rai_manage/components/report_preview/thisWeekSummary.vue

@@ -6,7 +6,7 @@ import Disclaimer from "./components/disclaimer.vue";
 import toTop from "./components/toTop.vue";
 import moment from "moment";
 import { raiInterface } from "@/api/api.js";
-
+import $ from 'jquery'
 const $route = useRoute();
 const $router = useRouter();
 

+ 5 - 4
src/views/rai_manage/components/special/specialResearchDlg.vue

@@ -1,7 +1,8 @@
-<script>
+<script setup>
 import { ref, nextTick, watch } from "vue";
 
 import { raiInterface, raiSpecial } from "@/api/api.js";
+import $ from 'jquery'
 
 const props = defineProps({
   dialogTitle: {
@@ -56,7 +57,7 @@ function handleCloseSubject() {
 async function interestDetails() {
   const res = await raiSpecial.specialInterested({ ActivityId: props.specialDetailId });
   if (res.Ret === 200) {
-    exportInterest.value = `${import.meta.env.VITE_APP_API_ROOT}/cygx/special/export?${localStorage.getItem("auth") || ""}&ActivityId=${this.specialDetailId}`;
+    exportInterest.value = `${import.meta.env.VITE_APP_API_ROOT}/cygx/special/export?${localStorage.getItem("auth") || ""}&ActivityId=${props.specialDetailId}`;
     nextTick(() => {
       interestData.value = res.Data.List;
     });
@@ -66,8 +67,8 @@ async function interestDetails() {
 async function themeDetails() {
   const res = await raiSpecial.specialDetail({ ActivityId: props.specialDetailId });
   if (res.Ret === 200) {
-    previewList.value = res.Data;
-    previewList.value.push(props.tabsActive == 1 ? previewList.value.TripImgLink : previewList.value.TripImgLinkFix);
+    activityDetail.value = res.Data;
+    previewList.value.push(props.tabsActive == 1 ? activityDetail.value.TripImgLink : activityDetail.value.TripImgLinkFix);
   }
 }
 </script>

+ 1 - 1
src/views/rai_manage/reportManage/appletsReport.vue

@@ -384,7 +384,7 @@ async function lookDetail(item) {
     const res = await raiInterface.reportArticleDetail({ ArticleId: item.ArticleId });
     if (res.Ret === 200) {
       sessionStorage.setItem("summaryPre", JSON.stringify(res.Data));
-      let { href } = router.resolve({ name: "预览研选报告" });
+      let { href } = router.resolve({ name: "summaryPre" });
       window.open(href, "_blank");
     }
   }

+ 1 - 1
src/views/rai_manage/reportManage/components/addHaveReport.vue

@@ -298,7 +298,7 @@ const {
           <el-input style="width: 360px" clearable v-model="addOfEditForm.title" placeholder="请输入报告标题"></el-input>
         </el-form-item>
         <el-form-item prop="publishTime">
-          <el-date-picker style="width: 360px" v-model="addOfEditForm.publishTime" type="date" placeholder="请选择发布时间" format="yyyy-MM-dd" value-format="yyyy-MM-dd"> </el-date-picker>
+          <el-date-picker style="width: 360px" v-model="addOfEditForm.publishTime" type="date" placeholder="请选择发布时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD"> </el-date-picker>
         </el-form-item>
         <el-form-item>
           <el-input style="width: 360px" clearable v-model="addOfEditForm.department" placeholder="请输入作者(选填)"></el-input>

+ 1 - 1
src/views/rai_manage/reportManage/morningMeetingManage.vue

@@ -152,7 +152,7 @@ const { tableColumn, tableData, page_no, pageSize, total, searchPublish, searchD
               :value="item.value"
             />
           </el-select>
-          <el-date-picker v-model="searchDate" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" @change="changeSelect" class="date-pick" placeholder="晨会时间"> </el-date-picker>
+          <el-date-picker v-model="searchDate" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" @change="changeSelect" class="date-pick" placeholder="晨会时间"> </el-date-picker>
         </div>
 
         <el-input placeholder="请输入产业标签" clearable v-model="searchLabel" @input="changeSelect" :prefix-icon="Search"> </el-input>

+ 1 - 1
src/views/rai_manage/reportManage/roadshowEssence.vue

@@ -118,7 +118,7 @@ function operationBtn(id, value) {
 }
 //文章详情
 function goDetail(row) {
-  let { href } = $router.resolve({ name: "预览路演精华", query: { ArticleId: row.ArticleId } });
+  let { href } = $router.resolve({ name: "roadshowPre", query: { ArticleId: row.ArticleId } });
   window.open(href, "_blank");
 }
 //分页

+ 1 - 1
src/views/rai_manage/reportManage/summaryManage.vue

@@ -169,7 +169,7 @@ async function lookDetail(item) {
     const res = await raiInterface.getsummaryManagedetail({ ArticleId: item.ArticleId });
     if (res.Ret === 200) {
       sessionStorage.setItem("summaryPre", JSON.stringify(res.Data));
-      let { href } = $router.resolve({ name: "预览研选报告" });
+      let { href } = $router.resolve({ name: "summaryPre" });
       window.open(href, "_blank");
     }
   }

+ 1 - 1
src/views/rai_manage/reportManage/tacticsTimeLine.vue

@@ -235,7 +235,7 @@ const { page_no, total, PageSize, visibleRange, dataTableList, statusValue, stat
     <el-dialog v-model="addOfEditDialog" :title="addOfEditText" draggable :close-on-click-modal="false" :modal-append-to-body="false" center width="661px" @close="handleClose">
       <el-form :model="dataForm" :rules="dataRules" ref="ruleForm">
         <el-form-item prop="PublishTime">
-          <el-date-picker type="date" value-format="yyyy-MM-dd" placeholder="请选择日期" v-model="dataForm.PublishTime" style="width: 100%"></el-date-picker>
+          <el-date-picker type="date" value-format="YYYY-MM-DD" placeholder="请选择日期" v-model="dataForm.PublishTime" style="width: 100%"></el-date-picker>
         </el-form-item>
         <el-form-item prop="Content">
           <div class="fr-wrapper" style="width: 100%">

+ 180 - 0
src/views/research_manage/shareRecord.vue

@@ -0,0 +1,180 @@
+<script setup>
+import { customInterence, raiInterface } from "@/api/api.js";
+import mPage from "@/components/mPage.vue";
+import { onMounted, reactive, ref, toRefs } from "vue";
+
+import { useRoute, useRouter } from "vue-router";
+
+import { Calendar, Search, InfoFilled } from "@element-plus/icons-vue";
+
+const $route = useRoute();
+const $router = useRouter();
+const pageState = reactive({
+  total: 0, //条数
+  pageSize: 10, //每页显示几条
+  page_no: 1,
+  keyword: "",
+  sales: [],
+  salesArr: [], //销售
+  defaultSalesProps: {
+    multiple: true,
+    label: "RealName",
+    children: "ChildrenList",
+    value: "AdminId",
+  }, //销售级联配置
+  selectTime: [],
+  tableData: [],
+  actionVal: "",
+  actionOptions: ["注册", "查看专栏", "查看报告", "查看活动"],
+});
+
+/* 获取销售 */
+function getSale() {
+  customInterence.getSalesRaiData().then((res) => {
+    if (res.Ret === 200) {
+      pageState.salesArr = res.Data.List;
+    }
+  });
+}
+/* 筛选了重新变动 */
+function handleListChange() {
+  pageState.page_no = 1;
+  getDataList();
+}
+function handleCurrentChange(page) {
+  pageState.page_no = page;
+  getDataList();
+}
+/* 查看客户详情 */
+function customDetail(row) {
+  if (row.CompanyId == 1) return;
+  const { href } = $router.resolve({
+    path: "/customDetail",
+    query: {
+      id: row.CompanyId,
+    },
+  });
+  window.open(href, "_blank");
+}
+/* 查看报告/活动标题详情 */
+function titleDetail(row) {
+  window.open(row.HttpUrl, "_blank");
+}
+/* 获取数据 */
+async function getDataList() {
+  let salesArr = [];
+  if (pageState.sales.length) {
+    salesArr = pageState.sales.map((item) => {
+      return item[item.length - 1];
+    });
+  }
+
+  const res = await raiInterface.getShareRecordList({
+    PageSize: pageState.pageSize,
+    CurrentIndex: pageState.page_no,
+    AdminId: salesArr.join(","),
+    KeyWord: pageState.keyword,
+    StartDate: pageState.selectTime && pageState.selectTime[0] ? pageState.selectTime[0] : "",
+    EndDate: pageState.selectTime && pageState.selectTime[1] ? pageState.selectTime[1] : "",
+    Action: pageState.actionVal,
+  });
+  if (res.Ret === 200) {
+    pageState.tableData = res.Data.List || [];
+    pageState.total = res.Data.Paging.Totals;
+  }
+}
+
+onMounted(() => {
+  getSale();
+  getDataList();
+});
+
+const {
+  total, //条数
+  pageSize, //每页显示几条
+  page_no,
+  keyword,
+  sales,
+  salesArr, //销售
+  defaultSalesProps, //销售级联配置
+  selectTime,
+  tableData,
+  actionVal,
+  actionOptions,
+} = toRefs(pageState);
+</script>
+
+<template>
+  <div class="container share-record-container">
+    <el-card>
+      <div class="share-record-top">
+        <div>
+          <el-date-picker
+            v-model="selectTime"
+            style="width: 260px"
+            type="daterange"
+            value-format="YYYY-MM-DD"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            @change="handleListChange"
+          >
+          </el-date-picker>
+          <el-cascader
+            v-model="sales"
+            placeholder="请选择分享人"
+            style="width: 200px; margin: 0 20px"
+            :options="salesArr"
+            :props="defaultSalesProps"
+            :show-all-levels="false"
+            collapse-tags
+            clearable
+            filterable
+            @change="handleListChange"
+          >
+          </el-cascader>
+          <el-select v-model="actionVal" placeholder="用户行为" @change="handleListChange" clearable>
+            <el-option v-for="item in actionOptions" :key="item" :label="item" :value="item"> </el-option>
+          </el-select>
+        </div>
+        <div>
+          <el-input placeholder="请输入姓名/手机号" v-model="keyword" style="width: 300px" @input="handleListChange" clearable :prefix-icon="Search"> </el-input>
+        </div>
+      </div>
+    </el-card>
+
+    <el-card style="margin-top: 20px">
+      <el-table ref="userTable" :data="tableData" border>
+        <el-table-column prop="Action" label="用户行为" align="center" width="150"> </el-table-column>
+        <el-table-column prop="CreateTime" label="行为时间" align="center" width="180"> </el-table-column>
+        <el-table-column prop="RegisterPlatformText" label="分享平台" align="center" width="150"> </el-table-column>
+        <el-table-column prop="RealName" label="姓名" align="center" width="130"> </el-table-column>
+        <el-table-column prop="Mobile" label="手机号" align="center" width="150"> </el-table-column>
+        <el-table-column prop="CompanyName" label="公司名称" align="center">
+          <template #default="{ row }">
+            <span v-if="row.CompanyId == 1">{{ row.CompanyName }}</span>
+            <span class="editsty" @click="customDetail(row)" v-else>{{ row.CompanyName }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="ShareName" label="分享人" align="center" width="100"> </el-table-column>
+        <el-table-column prop="SourceTitle" label="报告/活动标题" align="center">
+          <template #default="{ row }">
+            <span class="editsty" @click="titleDetail(row)">{{ row.SourceTitle }}</span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-col :span="24" class="toolbar">
+        <m-page :total="total" :page_no="page_no" @handleCurrentChange="handleCurrentChange" />
+      </el-col>
+    </el-card>
+  </div>
+</template>
+
+<style scoped lang="scss">
+.share-record-container {
+  .share-record-top {
+    display: flex;
+    justify-content: space-between;
+  }
+}
+</style>