npmapps 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/app/wujie-wk/dev.log +1979 -0
  2. package/app/wujie-wk/t.html +90 -0
  3. package/app/wujie-wk/wujie-react-child/README.md +126 -0
  4. package/app/wujie-wk/wujie-react-child/eslint.config.js +28 -0
  5. package/app/wujie-wk/wujie-react-child/index.html +13 -0
  6. package/app/wujie-wk/wujie-react-child/package-lock.json +4344 -0
  7. package/app/wujie-wk/wujie-react-child/package.json +32 -0
  8. package/app/wujie-wk/wujie-react-child/public/vite.svg +1 -0
  9. package/app/wujie-wk/wujie-react-child/src/App.css +0 -0
  10. package/app/wujie-wk/wujie-react-child/src/App.tsx +72 -0
  11. package/app/wujie-wk/wujie-react-child/src/assets/react.svg +1 -0
  12. package/app/wujie-wk/wujie-react-child/src/components/FeatureCards.css +63 -0
  13. package/app/wujie-wk/wujie-react-child/src/components/FeatureCards.tsx +112 -0
  14. package/app/wujie-wk/wujie-react-child/src/components/LightCard/index.tsx +36 -0
  15. package/app/wujie-wk/wujie-react-child/src/components/LightCard/style.css +20 -0
  16. package/app/wujie-wk/wujie-react-child/src/hooks/use3DCard.ts +53 -0
  17. package/app/wujie-wk/wujie-react-child/src/hooks/useLightCard.ts +141 -0
  18. package/app/wujie-wk/wujie-react-child/src/index.css +0 -0
  19. package/app/wujie-wk/wujie-react-child/src/main.tsx +8 -0
  20. package/app/wujie-wk/wujie-react-child/src/pages/ChildToParent/index.css +55 -0
  21. package/app/wujie-wk/wujie-react-child/src/pages/ChildToParent/index.tsx +88 -0
  22. package/app/wujie-wk/wujie-react-child/src/pages/Css.tsx +28 -0
  23. package/app/wujie-wk/wujie-react-child/src/pages/Home.tsx +72 -0
  24. package/app/wujie-wk/wujie-react-child/src/pages/ParentToChild.css +85 -0
  25. package/app/wujie-wk/wujie-react-child/src/pages/ParentToChild.tsx +119 -0
  26. package/app/wujie-wk/wujie-react-child/src/pages/RouterJump/index.css +61 -0
  27. package/app/wujie-wk/wujie-react-child/src/pages/RouterJump/index.tsx +87 -0
  28. package/app/wujie-wk/wujie-react-child/src/router/index.tsx +63 -0
  29. package/app/wujie-wk/wujie-react-child/src/types/wujie.d.ts +26 -0
  30. package/app/wujie-wk/wujie-react-child/src/vite-env.d.ts +1 -0
  31. package/app/wujie-wk/wujie-react-child/tsconfig.app.json +26 -0
  32. package/app/wujie-wk/wujie-react-child/tsconfig.json +7 -0
  33. package/app/wujie-wk/wujie-react-child/tsconfig.node.json +24 -0
  34. package/app/wujie-wk/wujie-react-child/vite.config.ts +10 -0
  35. package/app/wujie-wk/wujie-vue2-child/.eslintrc.js +19 -0
  36. package/app/wujie-wk/wujie-vue2-child/README.md +24 -0
  37. package/app/wujie-wk/wujie-vue2-child/babel.config.js +5 -0
  38. package/app/wujie-wk/wujie-vue2-child/docs/superpowers/plans/2026-05-29-quill-editor.md +836 -0
  39. package/app/wujie-wk/wujie-vue2-child/docs/superpowers/specs/2026-05-29-quill-editor-design.md +210 -0
  40. package/app/wujie-wk/wujie-vue2-child/jsconfig.json +19 -0
  41. package/app/wujie-wk/wujie-vue2-child/package-lock.json +21333 -0
  42. package/app/wujie-wk/wujie-vue2-child/package.json +63 -0
  43. package/app/wujie-wk/wujie-vue2-child/postcss.config.js +10 -0
  44. package/app/wujie-wk/wujie-vue2-child/public/favicon.ico +0 -0
  45. package/app/wujie-wk/wujie-vue2-child/public/index.html +17 -0
  46. package/app/wujie-wk/wujie-vue2-child/public/rili.jpg +0 -0
  47. package/app/wujie-wk/wujie-vue2-child/public//344/270/200/351/224/256/351/273/221/346/232/227.html +136 -0
  48. package/app/wujie-wk/wujie-vue2-child/src/App.vue +110 -0
  49. package/app/wujie-wk/wujie-vue2-child/src/assets/bpmn-camunda.jpg +0 -0
  50. package/app/wujie-wk/wujie-vue2-child/src/assets/css/diagram.less +17 -0
  51. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/Icon.less +31 -0
  52. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app-codes.css +26 -0
  53. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.eot +0 -0
  54. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.svg +60 -0
  55. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.ttf +0 -0
  56. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.woff +0 -0
  57. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.woff2 +0 -0
  58. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/config.json +248 -0
  59. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-bottom-tool.svg +30 -0
  60. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-horizontal-center-tool.svg +85 -0
  61. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-left-tool.svg +84 -0
  62. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-right-tool.svg +80 -0
  63. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-top-tool.svg +84 -0
  64. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-vertical-center-tool.svg +89 -0
  65. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/distribute-horizontally-tool.svg +95 -0
  66. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/distribute-vertically-tool.svg +99 -0
  67. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/set-color-tool.svg +111 -0
  68. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-bottom-tool.svg +30 -0
  69. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-horizontal-center-tool.svg +30 -0
  70. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-left-tool.svg +30 -0
  71. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-right-tool.svg +30 -0
  72. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-top-tool.svg +30 -0
  73. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-vertical-center-tool.svg +30 -0
  74. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/distribute-horizontally-tool.svg +30 -0
  75. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/distribute-vertically-tool.svg +30 -0
  76. package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/set-color-tool.svg +63 -0
  77. package/app/wujie-wk/wujie-vue2-child/src/assets/logo.png +0 -0
  78. package/app/wujie-wk/wujie-vue2-child/src/components/EllTable/README.md +70 -0
  79. package/app/wujie-wk/wujie-vue2-child/src/components/EllTable/article.md +184 -0
  80. package/app/wujie-wk/wujie-vue2-child/src/components/EllTable/index.js +213 -0
  81. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/CalendarSkeleton.vue +147 -0
  82. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/CodeBlock.vue +199 -0
  83. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/MonthSelect.vue +376 -0
  84. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/README.md +485 -0
  85. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/example.vue +1747 -0
  86. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/index.vue +2720 -0
  87. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/mockData.js +475 -0
  88. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/recruitmentAdapter.js +51 -0
  89. package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/utils.js +202 -0
  90. package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/FunctionSelector.vue +123 -0
  91. package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/OperatorSelector.vue +184 -0
  92. package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/ParameterSelector.vue +123 -0
  93. package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/api.js +69 -0
  94. package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/index.vue +435 -0
  95. package/app/wujie-wk/wujie-vue2-child/src/components/HelloWorld.vue +58 -0
  96. package/app/wujie-wk/wujie-vue2-child/src/components/PageHeader/index.vue +158 -0
  97. package/app/wujie-wk/wujie-vue2-child/src/components/Splitter/README.md +144 -0
  98. package/app/wujie-wk/wujie-vue2-child/src/components/Splitter/example.vue +84 -0
  99. package/app/wujie-wk/wujie-vue2-child/src/components/Splitter/index.vue +203 -0
  100. package/app/wujie-wk/wujie-vue2-child/src/components/diagram/ToolBar.vue +357 -0
  101. package/app/wujie-wk/wujie-vue2-child/src/components/diagram/customTranslate/customTranslate.js +12 -0
  102. package/app/wujie-wk/wujie-vue2-child/src/components/diagram/customTranslate/translationsGerman.js +241 -0
  103. package/app/wujie-wk/wujie-vue2-child/src/components/diagram/index.vue +261 -0
  104. package/app/wujie-wk/wujie-vue2-child/src/components/diagram/xmlData.js +29 -0
  105. package/app/wujie-wk/wujie-vue2-child/src/directives/filldown.js +155 -0
  106. package/app/wujie-wk/wujie-vue2-child/src/directives/filldownTable.js +291 -0
  107. package/app/wujie-wk/wujie-vue2-child/src/main.js +40 -0
  108. package/app/wujie-wk/wujie-vue2-child/src/router/index.js +72 -0
  109. package/app/wujie-wk/wujie-vue2-child/src/store/index.js +23 -0
  110. package/app/wujie-wk/wujie-vue2-child/src/utils/winBox.js +23 -0
  111. package/app/wujie-wk/wujie-vue2-child/src/views/Extend/A.vue +12 -0
  112. package/app/wujie-wk/wujie-vue2-child/src/views/Extend/B.vue +10 -0
  113. package/app/wujie-wk/wujie-vue2-child/src/views/Extend/MagicalComponentsForELFormItem.vue +78 -0
  114. package/app/wujie-wk/wujie-vue2-child/src/views/Extend/index.vue +59 -0
  115. package/app/wujie-wk/wujie-vue2-child/src/views/Extend/tableMouseHorizontalWheel.vue +184 -0
  116. package/app/wujie-wk/wujie-vue2-child/src/views/Home.vue +27 -0
  117. package/app/wujie-wk/wujie-vue2-child/src/views/RouterJump.vue +145 -0
  118. package/app/wujie-wk/wujie-vue2-child/src/views/calendar/index.vue +19 -0
  119. package/app/wujie-wk/wujie-vue2-child/src/views/css.vue +57 -0
  120. package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/EllipsisText.vue +73 -0
  121. package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/HoverCard.vue +69 -0
  122. package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/TableHover.vue +130 -0
  123. package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/inputSlo.vue +42 -0
  124. package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/tableFixed.vue +148 -0
  125. package/app/wujie-wk/wujie-vue2-child/src/views/echarts/echart-dome.vue +73 -0
  126. package/app/wujie-wk/wujie-vue2-child/src/views/echarts/index.vue +118 -0
  127. package/app/wujie-wk/wujie-vue2-child/src/views/echarts/pei3d.vue +658 -0
  128. package/app/wujie-wk/wujie-vue2-child/src/views/element/bpmn/index.vue +15 -0
  129. package/app/wujie-wk/wujie-vue2-child/src/views/element/components/attendanceCycle/index.vue +131 -0
  130. package/app/wujie-wk/wujie-vue2-child/src/views/element/components/attendanceGroup/index.vue +147 -0
  131. package/app/wujie-wk/wujie-vue2-child/src/views/element/components/attendancePersonnel/index.vue +158 -0
  132. package/app/wujie-wk/wujie-vue2-child/src/views/element/components/companyCalendar/index.vue +147 -0
  133. package/app/wujie-wk/wujie-vue2-child/src/views/element/components/shift/index.vue +147 -0
  134. package/app/wujie-wk/wujie-vue2-child/src/views/element/components/shiftRotationSystem/index.vue +147 -0
  135. package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/columnManagement.vue +340 -0
  136. package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/dialogInput.vue +71 -0
  137. package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/elTableJsx.vue +1826 -0
  138. package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/formTable.vue +595 -0
  139. package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/index.vue +29 -0
  140. package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/simpleTable.vue +189 -0
  141. package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx.zip +0 -0
  142. package/app/wujie-wk/wujie-vue2-child/src/views/element/index.vue +39 -0
  143. package/app/wujie-wk/wujie-vue2-child/src/views/element/quillEditor/README.md +163 -0
  144. package/app/wujie-wk/wujie-vue2-child/src/views/element/quillEditor/example.vue +307 -0
  145. package/app/wujie-wk/wujie-vue2-child/src/views/element/quillEditor/index.vue +409 -0
  146. package/app/wujie-wk/wujie-vue2-child/src/views/element/quillEditor/toolbar.js +122 -0
  147. package/app/wujie-wk/wujie-vue2-child/vue.config.js +15 -0
  148. package/app/wujie-wk/wujie-vue3-child/.claude/settings.local.json +8 -0
  149. package/app/wujie-wk/wujie-vue3-child/.vscode/extensions.json +3 -0
  150. package/app/wujie-wk/wujie-vue3-child/PROJECT_MEMORY.md +427 -0
  151. package/app/wujie-wk/wujie-vue3-child/README.md +5 -0
  152. package/app/wujie-wk/wujie-vue3-child/index.html +13 -0
  153. package/app/wujie-wk/wujie-vue3-child/package-lock.json +5744 -0
  154. package/app/wujie-wk/wujie-vue3-child/package.json +28 -0
  155. package/app/wujie-wk/wujie-vue3-child/public/vite.svg +1 -0
  156. package/app/wujie-wk/wujie-vue3-child/src/App.vue +130 -0
  157. package/app/wujie-wk/wujie-vue3-child/src/assets/vue.svg +1 -0
  158. package/app/wujie-wk/wujie-vue3-child/src/components/HelloWorld.vue +43 -0
  159. package/app/wujie-wk/wujie-vue3-child/src/components/SmartAnchorTabs/index.jsx +224 -0
  160. package/app/wujie-wk/wujie-vue3-child/src/components/SmartAnchorTabs/style.css +154 -0
  161. package/app/wujie-wk/wujie-vue3-child/src/components/tags-view.vue +193 -0
  162. package/app/wujie-wk/wujie-vue3-child/src/components/tags-view1.vue +131 -0
  163. package/app/wujie-wk/wujie-vue3-child/src/directives/aiLoading.js +182 -0
  164. package/app/wujie-wk/wujie-vue3-child/src/hooks/useClickOutside.js +11 -0
  165. package/app/wujie-wk/wujie-vue3-child/src/hooks/useTableDragSort.js +28 -0
  166. package/app/wujie-wk/wujie-vue3-child/src/main.js +18 -0
  167. package/app/wujie-wk/wujie-vue3-child/src/router/index.js +104 -0
  168. package/app/wujie-wk/wujie-vue3-child/src/store/tagsViewStroe.js +34 -0
  169. package/app/wujie-wk/wujie-vue3-child/src/style.css +171 -0
  170. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/collapseExpand/index.jsx +108 -0
  171. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/collapseExpand/index.module.scss +97 -0
  172. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/README.md +836 -0
  173. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/REFLEX_EXAMPLES.md +728 -0
  174. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentPersonnelSelector.jsx +687 -0
  175. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentPersonnelSelector.module.scss +560 -0
  176. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelector.jsx +570 -0
  177. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelector.module.scss +330 -0
  178. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelectorV2.jsx +378 -0
  179. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelectorV2.module.scss +228 -0
  180. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/OptionsSelector.jsx +399 -0
  181. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/OptionsSelector.module.scss +252 -0
  182. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PersonnelSelector.jsx +585 -0
  183. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PersonnelSelector.module.scss +331 -0
  184. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PopoverSelector.jsx +392 -0
  185. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PopoverSelector.module.scss +39 -0
  186. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/README.md +248 -0
  187. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/SelectorTrigger.jsx +194 -0
  188. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/index.jsx +1459 -0
  189. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/mockData.js +301 -0
  190. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/dialogueSegment/index.jsx +182 -0
  191. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/dialogueSegment/index.module.scss +28 -0
  192. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/index.jsx +375 -0
  193. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ChartsPanel/index.jsx +121 -0
  194. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ChartsPanel/index.module.scss +76 -0
  195. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/DonutChart/index.jsx +104 -0
  196. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/PracticeTable/index.jsx +75 -0
  197. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/PracticeTable/index.module.scss +12 -0
  198. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankBarChart/index.jsx +62 -0
  199. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankBarChart/index.module.scss +43 -0
  200. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingGroup/index.jsx +29 -0
  201. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingGroup/index.module.scss +5 -0
  202. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingList/index.jsx +58 -0
  203. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingList/index.module.scss +85 -0
  204. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ScriptStatsPanel/index.jsx +92 -0
  205. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ScriptStatsPanel/index.module.scss +56 -0
  206. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/StatCardsRow/index.jsx +40 -0
  207. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/StatCardsRow/index.module.scss +53 -0
  208. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/echarts/EchartsDonut.jsx +106 -0
  209. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/echarts/EchartsRankBar.jsx +132 -0
  210. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/index.jsx +176 -0
  211. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/index.module.scss +96 -0
  212. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/CoachReport/index.jsx +162 -0
  213. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/CoachReport/index.module.scss +16 -0
  214. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ComprehensiveEvaluation/index.jsx +29 -0
  215. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ComprehensiveEvaluation/index.module.scss +25 -0
  216. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueBubble/index.jsx +106 -0
  217. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueBubble/index.module.scss +164 -0
  218. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueRecord/index.jsx +182 -0
  219. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueRecord/index.module.scss +203 -0
  220. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionDetail/index.jsx +145 -0
  221. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionDetail/index.module.scss +126 -0
  222. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionScores/index.jsx +67 -0
  223. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionScores/index.module.scss +105 -0
  224. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ReportHeader/index.jsx +81 -0
  225. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ReportHeader/index.module.scss +47 -0
  226. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/RoleInfo/index.jsx +64 -0
  227. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/RoleInfo/index.module.scss +85 -0
  228. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ScoreBadge/index.jsx +39 -0
  229. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ScoreBadge/index.module.scss +44 -0
  230. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/SubDimensionItem/index.jsx +83 -0
  231. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/SubDimensionItem/index.module.scss +101 -0
  232. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/index.jsx +50 -0
  233. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/index.module.scss +25 -0
  234. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/scriptTable/index.jsx +196 -0
  235. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/scriptTable/index.module.scss +41 -0
  236. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/scriptTable/inputColumn/index.jsx +183 -0
  237. package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/scriptTable/inputColumn/index.module.scss +115 -0
  238. package/app/wujie-wk/wujie-vue3-child/src/views/child-to-parent.vue +117 -0
  239. package/app/wujie-wk/wujie-vue3-child/src/views/home.vue +53 -0
  240. package/app/wujie-wk/wujie-vue3-child/src/views/jsx/btnSelect/btnSelect.vue +169 -0
  241. package/app/wujie-wk/wujie-vue3-child/src/views/jsx/btnSelect/index.vue +69 -0
  242. package/app/wujie-wk/wujie-vue3-child/src/views/jsx/com.vue +44 -0
  243. package/app/wujie-wk/wujie-vue3-child/src/views/jsx/dialog.jsx +66 -0
  244. package/app/wujie-wk/wujie-vue3-child/src/views/jsx/index.vue +72 -0
  245. package/app/wujie-wk/wujie-vue3-child/src/views/jsx/props.vue +33 -0
  246. package/app/wujie-wk/wujie-vue3-child/src/views/parent-to-child.vue +225 -0
  247. package/app/wujie-wk/wujie-vue3-child/src/views/phone-code.vue +318 -0
  248. package/app/wujie-wk/wujie-vue3-child/src/views/router-jump.vue +123 -0
  249. package/app/wujie-wk/wujie-vue3-child/src/views/test.vue +192 -0
  250. package/app/wujie-wk/wujie-vue3-child/vite.config.js +15 -0
  251. package/app/wujie-wk/wujie-vue3-child copy/.vscode/extensions.json +3 -0
  252. package/app/wujie-wk/wujie-vue3-child copy/README.md +5 -0
  253. package/app/wujie-wk/wujie-vue3-child copy/index.html +13 -0
  254. package/app/wujie-wk/wujie-vue3-child copy/package-lock.json +4617 -0
  255. package/app/wujie-wk/wujie-vue3-child copy/package.json +22 -0
  256. package/app/wujie-wk/wujie-vue3-child copy/public/vite.svg +1 -0
  257. package/app/wujie-wk/wujie-vue3-child copy/src/App.vue +124 -0
  258. package/app/wujie-wk/wujie-vue3-child copy/src/assets/vue.svg +1 -0
  259. package/app/wujie-wk/wujie-vue3-child copy/src/components/HelloWorld.vue +43 -0
  260. package/app/wujie-wk/wujie-vue3-child copy/src/main.js +12 -0
  261. package/app/wujie-wk/wujie-vue3-child copy/src/router/index.js +84 -0
  262. package/app/wujie-wk/wujie-vue3-child copy/src/style.css +4 -0
  263. package/app/wujie-wk/wujie-vue3-child copy/src/views/child-to-parent.vue +117 -0
  264. package/app/wujie-wk/wujie-vue3-child copy/src/views/home.vue +53 -0
  265. package/app/wujie-wk/wujie-vue3-child copy/src/views/parent-to-child.vue +225 -0
  266. package/app/wujie-wk/wujie-vue3-child copy/src/views/phone-code.vue +318 -0
  267. package/app/wujie-wk/wujie-vue3-child copy/src/views/router-jump.vue +115 -0
  268. package/app/wujie-wk/wujie-vue3-child copy/src/views/test.vue +192 -0
  269. package/app/wujie-wk/wujie-vue3-child copy/vite.config.js +10 -0
  270. package/app/wujie-wk/wujie-vue3-main/.vscode/extensions.json +3 -0
  271. package/app/wujie-wk/wujie-vue3-main/README.md +154 -0
  272. package/app/wujie-wk/wujie-vue3-main/index.html +13 -0
  273. package/app/wujie-wk/wujie-vue3-main/package-lock.json +4736 -0
  274. package/app/wujie-wk/wujie-vue3-main/package.json +25 -0
  275. package/app/wujie-wk/wujie-vue3-main/public/vite.svg +1 -0
  276. package/app/wujie-wk/wujie-vue3-main/src/App.vue +879 -0
  277. package/app/wujie-wk/wujie-vue3-main/src/assets/vue.svg +1 -0
  278. package/app/wujie-wk/wujie-vue3-main/src/components/HelloWorld.vue +43 -0
  279. package/app/wujie-wk/wujie-vue3-main/src/components/WujieReact/index.vue +20 -0
  280. package/app/wujie-wk/wujie-vue3-main/src/components/WujieVue2/index.vue +8 -0
  281. package/app/wujie-wk/wujie-vue3-main/src/components/WujieVue3/index.vue +8 -0
  282. package/app/wujie-wk/wujie-vue3-main/src/components/WujieVue3Copy/index.vue +8 -0
  283. package/app/wujie-wk/wujie-vue3-main/src/main.js +23 -0
  284. package/app/wujie-wk/wujie-vue3-main/src/router/index.js +88 -0
  285. package/app/wujie-wk/wujie-vue3-main/src/store/useMicroAppStore.js +66 -0
  286. package/app/wujie-wk/wujie-vue3-main/src/style.css +3 -0
  287. package/app/wujie-wk/wujie-vue3-main/src/views/home.vue +103 -0
  288. package/app/wujie-wk/wujie-vue3-main/src/views/router-jump.vue +159 -0
  289. package/app/wujie-wk/wujie-vue3-main/src/views/test.vue +125 -0
  290. package/app/wujie-wk/wujie-vue3-main/src/views/vue3-child-msg.vue +108 -0
  291. package/app/wujie-wk/wujie-vue3-main/vite.config.js +12 -0
  292. package/package.json +1 -1
  293. package/app/check-import-case.js +0 -344
@@ -0,0 +1,106 @@
1
+ import { defineComponent, onMounted, ref, watch, onUnmounted } from 'vue'
2
+ import * as echarts from 'echarts'
3
+
4
+ export default defineComponent({
5
+ name: 'EchartsDonut',
6
+ props: {
7
+ series: {
8
+ type: Array,
9
+ default: () => [],
10
+ },
11
+ hiddenLegend: {
12
+ type: Array,
13
+ default: () => [],
14
+ },
15
+ height: {
16
+ type: Number,
17
+ default: 200,
18
+ },
19
+ },
20
+ setup(props) {
21
+ const chartRef = ref(null)
22
+ let chartInstance = null
23
+
24
+ const initChart = () => {
25
+ if (!chartRef.value) return
26
+ chartInstance = echarts.init(chartRef.value)
27
+ updateOption()
28
+ }
29
+
30
+ const updateOption = () => {
31
+ if (!chartInstance) return
32
+ // 过滤掉被隐藏的项
33
+ const data = props.series
34
+ .filter((item) => !props.hiddenLegend.includes(item.name))
35
+ .map((item) => ({
36
+ name: item.name,
37
+ value: item.value,
38
+ itemStyle: { color: item.color },
39
+ }))
40
+
41
+ // 计算总数
42
+ const total = data.reduce((sum, item) => sum + (Number(item.value) || 0), 0)
43
+
44
+ const option = {
45
+ tooltip: {
46
+ trigger: 'item',
47
+ formatter: '{b}: {c} ({d}%)',
48
+ },
49
+ legend: {
50
+ show: false, // 外部已有 Legend
51
+ },
52
+ series: [
53
+ {
54
+ name: '进度统计',
55
+ type: 'pie',
56
+ radius: ['55%', '90%'],
57
+ avoidLabelOverlap: true,
58
+ label: {
59
+ show: true,
60
+ position: 'inside',
61
+ formatter: '{c}({d}%)',
62
+ color: '#000',
63
+ fontSize: 12,
64
+ },
65
+ labelLine: {
66
+ show: false,
67
+ },
68
+ data: data,
69
+ },
70
+ ],
71
+ }
72
+ chartInstance.setOption(option)
73
+ }
74
+
75
+ watch(
76
+ () => [props.series, props.hiddenLegend],
77
+ () => {
78
+ updateOption()
79
+ },
80
+ { deep: true }
81
+ )
82
+
83
+ onMounted(() => {
84
+ initChart()
85
+ window.addEventListener('resize', handleResize)
86
+ })
87
+
88
+ onUnmounted(() => {
89
+ if (chartInstance) {
90
+ chartInstance.dispose()
91
+ }
92
+ window.removeEventListener('resize', handleResize)
93
+ })
94
+
95
+ const handleResize = () => {
96
+ chartInstance?.resize()
97
+ }
98
+
99
+ return () => (
100
+ <div
101
+ ref={chartRef}
102
+ style={{ width: '100%', height: `${props.height}px` }}
103
+ ></div>
104
+ )
105
+ },
106
+ })
@@ -0,0 +1,132 @@
1
+ import { defineComponent, onMounted, ref, watch, onUnmounted } from 'vue'
2
+ import * as echarts from 'echarts'
3
+
4
+ export default defineComponent({
5
+ name: 'EchartsRankBar',
6
+ props: {
7
+ data: {
8
+ type: Array,
9
+ default: () => [],
10
+ },
11
+ max: {
12
+ type: Number,
13
+ default: 0,
14
+ },
15
+ valueFormatter: {
16
+ type: Function,
17
+ default: (v) => v,
18
+ },
19
+ height: {
20
+ type: Number,
21
+ default: 300,
22
+ },
23
+ },
24
+ setup(props) {
25
+ const chartRef = ref(null)
26
+ let chartInstance = null
27
+
28
+ const initChart = () => {
29
+ if (!chartRef.value) return
30
+ chartInstance = echarts.init(chartRef.value)
31
+ updateOption()
32
+ }
33
+
34
+ const updateOption = () => {
35
+ if (!chartInstance) return
36
+
37
+ // 为了保证顺序(排名第一在最上面),ECharts 默认 category 轴是从下往上画的(index 0 在下)。
38
+ // 所以通常需要把数据 reverse 一下,或者 yAxis.inverse = true。
39
+ // 这里 props.data 应该是已排序好的(第一名在 index 0)。
40
+ // 使用 inverse: true 让 index 0 排在顶部。
41
+
42
+ const labels = props.data.map((d) => d.name)
43
+ const values = props.data.map((d) => d.value)
44
+
45
+ // 如果没有传 max,就取数据最大值作为背景条最大值
46
+ const maxValue = props.max || (values.length > 0 ? Math.max(...values) * 1.1 : 100)
47
+
48
+ const option = {
49
+ grid: {
50
+ top: 10,
51
+ bottom: 10,
52
+ left: 10,
53
+ right: 40, // 留给 label
54
+ containLabel: true,
55
+ },
56
+ xAxis: {
57
+ type: 'value',
58
+ show: false,
59
+ max: maxValue,
60
+ },
61
+ yAxis: {
62
+ type: 'category',
63
+ data: labels,
64
+ inverse: true, // 反转,让第一个数据在顶部
65
+ axisLine: { show: false },
66
+ axisTick: { show: false },
67
+ axisLabel: {
68
+ color: '#606266',
69
+ width: 60, // 限制宽度避免太宽
70
+ overflow: 'truncate',
71
+ },
72
+ },
73
+ series: [
74
+ {
75
+ type: 'bar',
76
+ data: values,
77
+ barWidth: 12,
78
+ showBackground: true,
79
+ backgroundStyle: {
80
+ color: '#f5f7fa',
81
+ borderRadius: 6,
82
+ },
83
+ itemStyle: {
84
+ color: '#ff7d00',
85
+ borderRadius: 6,
86
+ },
87
+ label: {
88
+ show: true,
89
+ position: 'right',
90
+ formatter: (params) => {
91
+ return props.valueFormatter(params.value)
92
+ },
93
+ color: '#333',
94
+ },
95
+ },
96
+ ],
97
+ }
98
+ chartInstance.setOption(option)
99
+ }
100
+
101
+ watch(
102
+ () => [props.data, props.max],
103
+ () => {
104
+ updateOption()
105
+ },
106
+ { deep: true }
107
+ )
108
+
109
+ onMounted(() => {
110
+ initChart()
111
+ window.addEventListener('resize', handleResize)
112
+ })
113
+
114
+ onUnmounted(() => {
115
+ if (chartInstance) {
116
+ chartInstance.dispose()
117
+ }
118
+ window.removeEventListener('resize', handleResize)
119
+ })
120
+
121
+ const handleResize = () => {
122
+ chartInstance?.resize()
123
+ }
124
+
125
+ return () => (
126
+ <div
127
+ ref={chartRef}
128
+ style={{ width: '100%', height: `${props.height}px` }}
129
+ ></div>
130
+ )
131
+ },
132
+ })
@@ -0,0 +1,176 @@
1
+ import { defineComponent, ref } from 'vue'
2
+ import styles from './index.module.scss'
3
+ import StatCardsRow from './components/StatCardsRow'
4
+ import ChartsPanel from './components/ChartsPanel'
5
+ import PracticeTable from './components/PracticeTable'
6
+ import ScriptStatsPanel from './components/ScriptStatsPanel'
7
+
8
+ /**
9
+ * 练习情况页面(按截图搭建)
10
+ * 1) 组件化拆分:StatCardsRow / ChartsPanel / PracticeTable / ScriptStatsPanel
11
+ * 2) 模拟数据:统一在父组件准备,props 传入子组件使用
12
+ * 3) 所有组件均放在 practiceStatus 文件夹内(含子目录)
13
+ * 4) JSX + Element Plus,风格对齐 aiCoach 目录现有写法
14
+ */
15
+ export default defineComponent({
16
+ // 练习情况
17
+ name: 'PracticeStatus',
18
+ setup() {
19
+ // 顶部 tabs(截图:计划统计/剧本统计)
20
+ const activeTab = ref('plan')
21
+ const useEcharts = ref(false)
22
+ setTimeout(() => useEcharts.value = true, 1000)
23
+
24
+ // 顶部筛选(截图:所属部门/职务)
25
+ const filters = ref({
26
+ dept: '全部部门',
27
+ role: '全部职务',
28
+ })
29
+
30
+ // 模拟:练习数据概览(截图 6 个卡片)
31
+ const overviewCards = ref([
32
+ { key: 'students', label: '总学员人数', value: '828' },
33
+ { key: 'rate', label: '完成率', value: '83.0%' },
34
+ { key: 'avgCount', label: '平均练练次数', value: '1.9' },
35
+ { key: 'avgDuration', label: '平均练练时长(分钟)', value: '10.1' },
36
+ { key: 'firstAvg', label: '首次练习均分', value: '56.6' },
37
+ { key: 'bestAvg', label: '最高一次均分', value: '83.4' },
38
+ ])
39
+
40
+ // 模拟:进度统计(截图:已完成/未开始/练习中)
41
+ const progressSeries = ref([
42
+ { name: '已完成', value: 68, color: '#ff7a00' },
43
+ { name: '未开始', value: 6, color: '#7bdcf6' },
44
+ { name: '练习中', value: 26, color: '#ffd08a' },
45
+ ])
46
+
47
+ // 模拟:学员练习时长排名(分钟)
48
+ const durationRank = ref([
49
+ { name: '张三', value: 469.7 },
50
+ { name: '李四', value: 270.1 },
51
+ { name: '王五', value: 75.1 },
52
+ { name: '赵六', value: 74.8 },
53
+ { name: '周七', value: 67.8 },
54
+ { name: '吴八', value: 64.0 },
55
+ { name: '郑九', value: 64.0 },
56
+ { name: '钱十', value: 64.0 },
57
+ ])
58
+
59
+ // 模拟:学员最高一次均分排名(0-100)
60
+ const scoreRank = ref([
61
+ { name: '张三', value: 100 },
62
+ { name: '李四', value: 100 },
63
+ { name: '王五', value: 100 },
64
+ { name: '赵六', value: 100 },
65
+ { name: '周七', value: 98 },
66
+ { name: '吴八', value: 96 },
67
+ { name: '郑九', value: 90 },
68
+ { name: '钱十', value: 88 },
69
+ ])
70
+
71
+ // 模拟:明细数据(截图表格)
72
+ const tableData = ref(
73
+ Array.from({ length: 30 }).map((_, idx) => {
74
+ const base = idx % 10
75
+ const score = [80, 70, 75, 90, 96, 56, 78, 67, 69, 99][base]
76
+ const progress = ['2/5', '5/5', '5/5', '5/5', '5/5', '5/5', '5/5', '5/5', '2/5', '2/5'][base]
77
+ const passStatus = score >= 60 ? '通过' : '未通过'
78
+ return {
79
+ id: `${Date.now()}-${idx}`,
80
+ jobNo: '123456',
81
+ name: ['张三', '李四', '王五', '赵六', '周七', '吴八'][idx % 6],
82
+ planName: '标准内容',
83
+ scriptName: '标准内容',
84
+ startTime: '2025-08-01',
85
+ endTime: '2025-09-01',
86
+ status: '已完成',
87
+ score,
88
+ passStatus,
89
+ progress,
90
+ }
91
+ }),
92
+ )
93
+
94
+ return () => {
95
+ return <div>
96
+ <div class={styles.practiceStatus}>
97
+ <div class={styles.toolbar}>
98
+ <div class={styles.toolbarLeft}>
99
+ <div class={styles.tabsWrap}>
100
+ <div
101
+ class={[styles.tabBtn, activeTab.value === 'plan' ? styles.tabBtnActive : null]}
102
+ onClick={() => (activeTab.value = 'plan')}
103
+ >
104
+ 计划统计
105
+ </div>
106
+ <div
107
+ class={[styles.tabBtn, activeTab.value === 'script' ? styles.tabBtnActive : null]}
108
+ onClick={() => (activeTab.value = 'script')}
109
+ >
110
+ 剧本统计
111
+ </div>
112
+ </div>
113
+ </div>
114
+ {activeTab.value === 'plan' && (
115
+ <div class={styles.toolbarRight}>
116
+ <el-switch
117
+ v-model={useEcharts.value}
118
+ active-text="ECharts"
119
+ inactive-text="CSS"
120
+ style={{ marginRight: '16px' }}
121
+ />
122
+ <el-select size="small" style={{ width: '120px' }} v-model={filters.value.dept}>
123
+ <el-option label="全部部门" value="全部部门" />
124
+ <el-option label="销售一部" value="销售一部" />
125
+ <el-option label="销售二部" value="销售二部" />
126
+ </el-select>
127
+ <el-select size="small" style={{ width: '120px' }} v-model={filters.value.role}>
128
+ <el-option label="全部职务" value="全部职务" />
129
+ <el-option label="导购" value="导购" />
130
+ <el-option label="店长" value="店长" />
131
+ </el-select>
132
+ <el-button size="small">下载</el-button>
133
+ </div>
134
+ )}
135
+ {activeTab.value === 'script' && (
136
+ <div class={styles.toolbarRight}>
137
+ <el-switch
138
+ v-model={useEcharts.value}
139
+ active-text="ECharts"
140
+ inactive-text="CSS"
141
+ style={{ marginRight: '16px' }}
142
+ />
143
+ </div>
144
+ )}
145
+ </div>
146
+
147
+ {activeTab.value === 'plan' ? (
148
+ <>
149
+ <div class={styles.section}>
150
+ <div class={styles.sectionHeader}>练习数据概览</div>
151
+ <StatCardsRow cards={overviewCards.value} />
152
+ </div>
153
+
154
+ <div class={styles.section}>
155
+ <div class={styles.sectionHeader}>练习情况统计</div>
156
+ <ChartsPanel
157
+ progress={progressSeries.value}
158
+ durationRank={durationRank.value}
159
+ scoreRank={scoreRank.value}
160
+ useEcharts={useEcharts.value}
161
+ />
162
+ </div>
163
+
164
+ <div class={styles.section}>
165
+ <div class={styles.sectionHeader}>明细数据</div>
166
+ <PracticeTable data={tableData.value} pageSize={10} />
167
+ </div>
168
+ </>
169
+ ) : (
170
+ <ScriptStatsPanel useEcharts={useEcharts.value} />
171
+ )}
172
+ </div>
173
+ </div>
174
+ }
175
+ },
176
+ })
@@ -0,0 +1,96 @@
1
+ .practiceStatus {
2
+ width: 100%;
3
+ max-width: 1100px;
4
+ }
5
+
6
+ .toolbar {
7
+ display: flex;
8
+ justify-content: space-between;
9
+ align-items: center;
10
+ margin-bottom: 12px;
11
+ }
12
+
13
+ .toolbarLeft {
14
+ display: flex;
15
+ align-items: center;
16
+ gap: 8px;
17
+ }
18
+
19
+ .toolbarTitle {
20
+ display: flex;
21
+ align-items: center;
22
+ font-size: 16px;
23
+ font-weight: 600;
24
+ color: #303133;
25
+ }
26
+
27
+ .toolbarTitle:before {
28
+ content: '';
29
+ display: inline-block;
30
+ width: 3px;
31
+ height: 14px;
32
+ background: #ff7a00;
33
+ border-radius: 2px;
34
+ margin-right: 8px;
35
+ }
36
+
37
+ .toolbarRight {
38
+ display: flex;
39
+ align-items: center;
40
+ gap: 10px;
41
+ }
42
+
43
+ .section {
44
+ margin-top: 12px;
45
+ }
46
+
47
+ .sectionHeader {
48
+ display: flex;
49
+ align-items: center;
50
+ margin-bottom: 10px;
51
+ font-size: 14px;
52
+ font-weight: 600;
53
+ color: #303133;
54
+ }
55
+
56
+ .sectionHeader:before {
57
+ content: '';
58
+ display: inline-block;
59
+ width: 3px;
60
+ height: 14px;
61
+ background: #ff7a00;
62
+ border-radius: 2px;
63
+ margin-right: 8px;
64
+ }
65
+
66
+ /* Tabs */
67
+ .tabsWrap {
68
+ display: flex;
69
+ gap: 8px;
70
+ }
71
+
72
+ .tabBtn {
73
+ padding: 6px 16px;
74
+ border: 1px solid #dcdfe6;
75
+ background: #fff;
76
+ border-radius: 4px;
77
+ color: #606266;
78
+ cursor: pointer;
79
+ font-size: 14px;
80
+ transition: all 0.2s;
81
+ }
82
+
83
+ .tabBtn:hover {
84
+ color: #ff7a00;
85
+ border-color: #ff7a00;
86
+ }
87
+
88
+ .tabBtnActive {
89
+ background: #ff7a00;
90
+ border-color: #ff7a00;
91
+ color: #fff;
92
+ }
93
+
94
+ .tabBtnActive:hover {
95
+ color: #fff;
96
+ }
@@ -0,0 +1,162 @@
1
+ import { defineComponent, ref } from 'vue'
2
+ import styles from './index.module.scss'
3
+ import DimensionScores from '../DimensionScores/index.jsx'
4
+ import ComprehensiveEvaluation from '../ComprehensiveEvaluation/index.jsx'
5
+ import RoleInfo from '../RoleInfo/index.jsx'
6
+ import DimensionDetail from '../DimensionDetail/index.jsx'
7
+
8
+ /**
9
+ * 陪练报告组件
10
+ * @description 显示陪练报告的详细内容,包括维度评分、综合评价、角色信息和各维度详情
11
+ */
12
+ export default defineComponent({
13
+ name: 'CoachReport',
14
+
15
+ setup() {
16
+ // ==================== 模拟数据 ====================
17
+
18
+ // 维度评分数据
19
+ const dimensionsData = ref([
20
+ { name: '话术准确度', score: 10, total: 10, color: 'green' },
21
+ { name: '语言组织', score: 9, total: 10, color: 'green' },
22
+ { name: '需求倾听记录', score: 22, total: 28, color: 'orange' },
23
+ { name: '产品介绍解答', score: 17, total: 27, color: 'orange' },
24
+ { name: '产品推荐促成', score: 0, total: 26, color: 'red' },
25
+ ])
26
+
27
+ // 综合评价数据
28
+ const evaluationContent = ref(
29
+ '在整个对话过程中,你表现出了良好的职业素养。语言表达清晰易懂,逻辑较为明确,且态度友好,具有亲和力。在倾听用户需求方面,能够引导用户说出关键信息,但在记录关键信息上还有所欠缺,没有及时总结和确认用户的资金流动要求和目标收益率等重要内容。后续可以加强这方面的能力。'
30
+ )
31
+
32
+ // 陪练角色数据
33
+ const roleData = ref({
34
+ avatar: '', // 头像URL,为空时显示占位符
35
+ name: '王白白',
36
+ gender: '女',
37
+ age: 35,
38
+ tag: '企业白领',
39
+ description: `王白白是一个经验丰富的企业白领,她在客户服务领域有丰富的经验。她的专业知识和良好的客户服务能力使得客户在与她互动时能够获得满意的服务。
40
+ 谨慎细致,做事有条不,对待保险这类重要决策极为慎重。沟通时专注认真,会详细记录理财经理的
41
+ 介绍内容。习惯对关键信息反复确认,情绪较为稳定,不会轻易被推销话术影响。做决策前会全面考量
42
+ 产品的各项细节,权衡利弊后才会行动。`,
43
+ })
44
+
45
+ // 话术准确度详情数据
46
+ const speechAccuracyDetail = ref({
47
+ dimension: {
48
+ name: '话术准确度',
49
+ score: 10,
50
+ total: 10,
51
+ icon: '👏',
52
+ description: '本项分数基于你全部话术的平均表现得出',
53
+ },
54
+ dialogues: [
55
+ {
56
+ question: '您好,速汇盈直联后我们内部系统就和你们打通了,安全性有保障吗?',
57
+ answer:
58
+ '王总,系统的安全性能您可以放心,我行会提供多重保障,主要是有三方面向您汇报。首先,第一是在客户端,我们会通过前置机加UK对物理数据进行一个隔离,那就像防火墙一样,保障信息的安全。二呢,是在数据端,系统会自动对企业发出的原始指令进行数据加密和加密,就跟摩斯密码一样,确保外部无法解析,但是在银行端呢,我们采用了国际上最高的安全标准,就像中国电建、上汽集团这样的国央企呢,已经和我们进行了试点。这个模式的安全性在国资委已经获得了普及...',
59
+ score: 98,
60
+ scoreDetails: [
61
+ { name: '关键词', score: 20, total: 20, tags: ['多重保障'] },
62
+ { name: '语义准确', score: 78, total: 80, tags: [] },
63
+ ],
64
+ suggestion: '你在对话中表现的非常好,请继续保持!',
65
+ },
66
+ {
67
+ question: '这个产品的收益率是多少?',
68
+ answer:
69
+ '关于收益率,我们这款产品是浮动收益型的,近一年的年化收益率在4.5%-5.2%之间,相比市场同类产品具有较强的竞争力。而且我们有专业的投资团队进行管理,历史业绩表现稳定。',
70
+ score: 95,
71
+ scoreDetails: [
72
+ { name: '关键词', score: 18, total: 20, tags: ['年化收益率'] },
73
+ { name: '语义准确', score: 77, total: 80, tags: [] },
74
+ ],
75
+ suggestion: '回答准确,继续保持!',
76
+ },
77
+ ],
78
+ })
79
+
80
+ // 语言组织详情数据
81
+ const languageOrganizationDetail = ref({
82
+ dimension: {
83
+ name: '语言组织',
84
+ score: 9,
85
+ total: 9,
86
+ icon: '👏',
87
+ description:
88
+ '你在语言组织方面表现不错。回答清晰易懂,用防火墙和摩斯密码作比喻,让抽象的安全保障概念变得形象易懂,这一点做得非常好。',
89
+ },
90
+ subDimensions: [
91
+ {
92
+ name: '易于理解',
93
+ score: 1,
94
+ total: 3,
95
+ comment:
96
+ '你在介绍系统安全保障时,运用防火墙和摩斯密码的比喻,使抽象的安全保障概念变得形象易懂,让对方能轻松理解内容,这一点做得非常好。',
97
+ },
98
+ {
99
+ name: '逻辑性',
100
+ score: 2,
101
+ total: 3,
102
+ comment:
103
+ '你按照客户端、数据端、银行端的顺序,有条理地介绍系统安全保障的三个方面,逻辑清晰,让对方能清楚了解整体情况,表现十分出色。',
104
+ },
105
+ {
106
+ name: '亲和力',
107
+ score: 3,
108
+ total: 3,
109
+ comment:
110
+ '你使用"王总"这一友好称呼,迅速拉近与对方的关系,展现出良好的亲和力,让交流氛围更加融洽,值得称赞。',
111
+ },
112
+ ],
113
+ })
114
+
115
+ return () => {
116
+ return (
117
+ <div class={styles.coachReport}>
118
+ {/* 总览区域 */}
119
+ <div class={styles.overviewSection}>
120
+ {/* 第一行:维度评分和综合评价 */}
121
+ <el-row gutter={24}>
122
+ {/* 左侧:维度评分 */}
123
+ <el-col span={10}>
124
+ <DimensionScores dimensions={dimensionsData.value} />
125
+ </el-col>
126
+
127
+ {/* 右侧:综合评价 */}
128
+ <el-col span={14}>
129
+ <ComprehensiveEvaluation content={evaluationContent.value} />
130
+ </el-col>
131
+ </el-row>
132
+
133
+ {/* 第二行:角色信息 */}
134
+ <el-row gutter={24}>
135
+ <el-col span={24}>
136
+ <RoleInfo data={roleData.value} />
137
+ </el-col>
138
+ </el-row>
139
+ </div>
140
+
141
+ {/* 话术准确度详情 */}
142
+ <div class={styles.detailSection}>
143
+ <DimensionDetail
144
+ type="dialogue"
145
+ dimension={speechAccuracyDetail.value.dimension}
146
+ dialogues={speechAccuracyDetail.value.dialogues}
147
+ />
148
+ </div>
149
+
150
+ {/* 语言组织详情 */}
151
+ <div class={styles.detailSection}>
152
+ <DimensionDetail
153
+ type="subdimension"
154
+ dimension={languageOrganizationDetail.value.dimension}
155
+ subDimensions={languageOrganizationDetail.value.subDimensions}
156
+ />
157
+ </div>
158
+ </div>
159
+ )
160
+ }
161
+ },
162
+ })
@@ -0,0 +1,16 @@
1
+ // 陪练报告样式
2
+ .coachReport {
3
+ width: 100%;
4
+ }
5
+
6
+ .overviewSection {
7
+ margin-bottom: 24px;
8
+ }
9
+
10
+ .detailSection {
11
+ margin-bottom: 24px;
12
+
13
+ &:last-child {
14
+ margin-bottom: 0;
15
+ }
16
+ }