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,75 @@
1
+ import { defineComponent, ref, computed } from 'vue'
2
+ import styles from './index.module.scss'
3
+
4
+ /**
5
+ * 明细数据表格
6
+ * - 组件化目的:后续切换接口数据时,只替换 props.data
7
+ * - 目前仅实现展示与分页(模拟分页)
8
+ */
9
+ export default defineComponent({
10
+ name: 'PracticeStatusPracticeTable',
11
+ props: {
12
+ data: {
13
+ type: Array,
14
+ default: () => [],
15
+ },
16
+ pageSize: {
17
+ type: Number,
18
+ default: 10,
19
+ },
20
+ },
21
+ setup(props) {
22
+ const currentPage = ref(1)
23
+
24
+ const total = computed(() => props.data.length)
25
+ const pageCount = computed(() => Math.max(1, Math.ceil(total.value / props.pageSize)))
26
+
27
+ const pageData = computed(() => {
28
+ const start = (currentPage.value - 1) * props.pageSize
29
+ return props.data.slice(start, start + props.pageSize)
30
+ })
31
+
32
+ const handlePageChange = (p) => {
33
+ currentPage.value = p
34
+ }
35
+
36
+ return () => (
37
+ <div class={styles.tableWrap}>
38
+ <el-table data={pageData.value} stripe style={{ width: '100%' }}>
39
+ <el-table-column type="selection" width="44" />
40
+ <el-table-column prop="jobNo" label="工号" width="90" />
41
+ <el-table-column prop="name" label="姓名" width="80" />
42
+ <el-table-column prop="planName" label="计划名称" />
43
+ <el-table-column prop="scriptName" label="脚本名称" />
44
+ <el-table-column prop="startTime" label="开始时间" width="120" />
45
+ <el-table-column prop="endTime" label="结束时间" width="120" />
46
+ <el-table-column prop="status" label="完成状态" width="90" />
47
+ <el-table-column prop="score" label="得分" width="70" />
48
+ <el-table-column prop="passStatus" label="通过状态" width="90" />
49
+ <el-table-column prop="progress" label="练习进度" width="90" />
50
+ <el-table-column label="操作" width="110">
51
+ {{
52
+ default: (scope) => (
53
+ <el-button link size="small" type="primary" onClick={() => console.log('查看练习记录', scope.row)}>
54
+ 查看练习记录
55
+ </el-button>
56
+ ),
57
+ }}
58
+ </el-table-column>
59
+ </el-table>
60
+
61
+ <div class={styles.paginationRow}>
62
+ <el-pagination
63
+ background
64
+ currentPage={currentPage.value}
65
+ pageSize={props.pageSize}
66
+ total={total.value}
67
+ layout="total, prev, pager, next"
68
+ onCurrentChange={handlePageChange}
69
+ />
70
+ </div>
71
+ </div>
72
+ )
73
+ },
74
+ })
75
+
@@ -0,0 +1,12 @@
1
+ .tableWrap {
2
+ background: #fff;
3
+ border-radius: 8px;
4
+ padding: 12px;
5
+ border: 1px solid #ebeef5;
6
+ }
7
+
8
+ .paginationRow {
9
+ display: flex;
10
+ justify-content: flex-end;
11
+ margin-top: 12px;
12
+ }
@@ -0,0 +1,62 @@
1
+ import { defineComponent, computed } from 'vue'
2
+ import styles from './index.module.scss'
3
+
4
+ /**
5
+ * 横向条形排行(不依赖图表库)
6
+ * - 通过百分比宽度绘制
7
+ * - 支持自定义最大值,便于复用
8
+ */
9
+ export default defineComponent({
10
+ name: 'PracticeStatusRankBarChart',
11
+ props: {
12
+ data: {
13
+ type: Array,
14
+ default: () => [],
15
+ },
16
+ max: {
17
+ type: Number,
18
+ default: undefined,
19
+ },
20
+ valueFormatter: {
21
+ type: Function,
22
+ default: (v) => `${v}`,
23
+ },
24
+ },
25
+ setup(props) {
26
+ const maxValue = computed(() => {
27
+ const list = props.data || []
28
+ const maxInData = list.reduce((m, cur) => Math.max(m, Number(cur?.value ?? 0)), 0)
29
+ const base = Number.isFinite(props.max) ? props.max : maxInData
30
+ return base > 0 ? base : 1
31
+ })
32
+
33
+ const rows = computed(() =>
34
+ (props.data || []).map((it) => {
35
+ const value = Number(it?.value ?? 0)
36
+ const ratio = Math.min(1, Math.max(0, value / maxValue.value))
37
+ return {
38
+ name: it?.name ?? '',
39
+ value,
40
+ ratio,
41
+ }
42
+ }),
43
+ )
44
+
45
+ return () => (
46
+ <div class={styles.barsWrap}>
47
+ {rows.value.map((row, idx) => (
48
+ <div class={styles.barRow} key={`${row.name}-${idx}`}>
49
+ <div class={styles.barName} title={row.name}>
50
+ {row.name}
51
+ </div>
52
+ <div class={styles.barTrack}>
53
+ <div class={styles.barFill} style={{ width: `${row.ratio * 100}%` }} />
54
+ </div>
55
+ <div class={styles.barValue}>{props.valueFormatter(row.value)}</div>
56
+ </div>
57
+ ))}
58
+ </div>
59
+ )
60
+ },
61
+ })
62
+
@@ -0,0 +1,43 @@
1
+ .barsWrap {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 8px;
5
+ }
6
+
7
+ .barRow {
8
+ display: flex;
9
+ align-items: center;
10
+ height: 24px;
11
+ }
12
+
13
+ .barName {
14
+ width: 60px;
15
+ font-size: 12px;
16
+ color: #606266;
17
+ white-space: nowrap;
18
+ overflow: hidden;
19
+ text-overflow: ellipsis;
20
+ margin-right: 8px;
21
+ text-align: right;
22
+ }
23
+
24
+ .barTrack {
25
+ flex: 1;
26
+ height: 12px;
27
+ background: #f5f7fa;
28
+ border-radius: 6px;
29
+ overflow: hidden;
30
+ margin-right: 8px;
31
+ }
32
+
33
+ .barFill {
34
+ height: 100%;
35
+ background: #ff7d00;
36
+ border-radius: 6px;
37
+ }
38
+
39
+ .barValue {
40
+ width: 40px;
41
+ font-size: 12px;
42
+ color: #333;
43
+ }
@@ -0,0 +1,29 @@
1
+ import { defineComponent } from 'vue'
2
+ import RankingList from '../RankingList'
3
+ import styles from './index.module.scss'
4
+
5
+ /**
6
+ * 剧本统计 - 排行榜组(三列布局)
7
+ */
8
+ export default defineComponent({
9
+ name: 'RankingGroup',
10
+ props: {
11
+ data: {
12
+ type: Object,
13
+ default: () => ({
14
+ overall: [],
15
+ accuracy: [],
16
+ fluency: [],
17
+ }),
18
+ },
19
+ },
20
+ setup(props) {
21
+ return () => (
22
+ <div class={styles.rankingGroup}>
23
+ <RankingList title="综合排行榜" data={props.data.overall} />
24
+ <RankingList title="话术准确度" data={props.data.accuracy} />
25
+ <RankingList title="流利度" data={props.data.fluency} />
26
+ </div>
27
+ )
28
+ },
29
+ })
@@ -0,0 +1,5 @@
1
+ .rankingGroup {
2
+ display: grid;
3
+ grid-template-columns: repeat(3, 1fr);
4
+ gap: 12px;
5
+ }
@@ -0,0 +1,58 @@
1
+ import { defineComponent, toRef } from 'vue'
2
+ import styles from './index.module.scss'
3
+
4
+ /**
5
+ * 剧本统计 - 排行榜列表项
6
+ * 用于展示单列排行榜(综合、准确度、流利度等)
7
+ */
8
+ export default defineComponent({
9
+ name: 'RankingList',
10
+ props: {
11
+ title: {
12
+ type: String,
13
+ default: '',
14
+ },
15
+ data: {
16
+ type: Array,
17
+ default: () => [],
18
+ },
19
+ },
20
+ setup(props) {
21
+ const list = toRef(props, 'data')
22
+
23
+ // 奖牌图标(模拟 SVG 或使用 emoji/图片)
24
+ const getRankIcon = (index) => {
25
+ if (index === 0) return '🥇'
26
+ if (index === 1) return '🥈'
27
+ if (index === 2) return '🥉'
28
+ return index + 1
29
+ }
30
+
31
+ const getRankClass = (index) => {
32
+ if (index === 0) return styles.rankFirst
33
+ if (index === 1) return styles.rankSecond
34
+ if (index === 2) return styles.rankThird
35
+ return styles.rankNormal
36
+ }
37
+
38
+ return () => (
39
+ <div class={styles.rankingCard}>
40
+ <div class={styles.rankingTitle}>{props.title}</div>
41
+ <div class={styles.rankingList}>
42
+ {list.value.map((item, index) => (
43
+ <div key={index} class={styles.rankingItem}>
44
+ <div class={[styles.rankIndex, getRankClass(index)]}>
45
+ {getRankIcon(index)}
46
+ </div>
47
+ <div class={styles.rankInfo}>
48
+ <div class={styles.rankName}>{item.name}</div>
49
+ <div class={styles.rankDept}>{item.dept}</div>
50
+ </div>
51
+ <div class={styles.rankScore}>{item.score}</div>
52
+ </div>
53
+ ))}
54
+ </div>
55
+ </div>
56
+ )
57
+ },
58
+ })
@@ -0,0 +1,85 @@
1
+ .rankingCard {
2
+ background: #fff;
3
+ border-radius: 8px;
4
+ padding: 16px;
5
+ border: 1px solid #ebeef5;
6
+ }
7
+
8
+ .rankingTitle {
9
+ font-size: 14px;
10
+ font-weight: 600;
11
+ color: #303133;
12
+ margin-bottom: 12px;
13
+ }
14
+
15
+ .rankingList {
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: 8px;
19
+ }
20
+
21
+ .rankingItem {
22
+ display: flex;
23
+ align-items: center;
24
+ padding: 8px 0;
25
+ border-bottom: 1px dashed #ebeef5;
26
+ }
27
+
28
+ .rankingItem:last-child {
29
+ border-bottom: none;
30
+ }
31
+
32
+ .rankIndex {
33
+ width: 24px;
34
+ height: 24px;
35
+ display: flex;
36
+ align-items: center;
37
+ justify-content: center;
38
+ font-size: 14px;
39
+ color: #909399;
40
+ font-weight: 600;
41
+ margin-right: 12px;
42
+ }
43
+
44
+ .rankFirst {
45
+ color: #ff7d00;
46
+ font-size: 20px;
47
+ }
48
+
49
+ .rankSecond {
50
+ color: #909399;
51
+ font-size: 20px;
52
+ }
53
+
54
+ .rankThird {
55
+ color: #bfa176;
56
+ font-size: 20px;
57
+ }
58
+
59
+ .rankNormal {
60
+ color: #606266;
61
+ }
62
+
63
+ .rankInfo {
64
+ flex: 1;
65
+ display: flex;
66
+ flex-direction: column;
67
+ }
68
+
69
+ .rankName {
70
+ font-size: 14px;
71
+ color: #303133;
72
+ font-weight: 500;
73
+ }
74
+
75
+ .rankDept {
76
+ font-size: 12px;
77
+ color: #909399;
78
+ margin-top: 2px;
79
+ }
80
+
81
+ .rankScore {
82
+ font-size: 16px;
83
+ font-weight: 600;
84
+ color: #303133;
85
+ }
@@ -0,0 +1,92 @@
1
+ import { defineComponent, ref } from 'vue'
2
+ import styles from './index.module.scss'
3
+ import EchartsRankBar from '../echarts/EchartsRankBar'
4
+ import RankBarChart from '../RankBarChart'
5
+ import RankingGroup from '../RankingGroup'
6
+
7
+ /**
8
+ * 剧本统计主面板
9
+ */
10
+ export default defineComponent({
11
+ name: 'ScriptStatsPanel',
12
+ props: {
13
+ useEcharts: {
14
+ type: Boolean,
15
+ default: false,
16
+ },
17
+ },
18
+ setup(props) {
19
+ // 模拟数据
20
+ const dimensionData = ref([
21
+ { name: '语言组织', value: 95.4, max: 100 },
22
+ { name: '共情与优势介绍', value: 75.2, max: 100 },
23
+ { name: '流利度', value: 72.5, max: 100 },
24
+ { name: '顾客打消能力', value: 58.7, max: 100 },
25
+ { name: '后续练联系告知', value: 52.7, max: 100 },
26
+ { name: '合规话术', value: 0.0, max: 100 },
27
+ ])
28
+
29
+ const generateRanking = (count) => {
30
+ return Array.from({ length: count }).map((_, i) => ({
31
+ name: '李四',
32
+ dept: '渠道营销三部',
33
+ score: 100,
34
+ }))
35
+ }
36
+
37
+ const rankingData = ref({
38
+ overall: generateRanking(10),
39
+ accuracy: generateRanking(10),
40
+ fluency: generateRanking(10),
41
+ })
42
+
43
+ const handleClear = () => {
44
+ console.log('清空已选')
45
+ }
46
+
47
+ const handleDownload = () => {
48
+ console.log('下载')
49
+ }
50
+
51
+ return () => (
52
+ <div class={styles.scriptStatsPanel}>
53
+ {/* 顶部筛选栏 */}
54
+ <div class={styles.filterBar}>
55
+ <div class={styles.filterLeft}>
56
+ {/* 这里的按钮已经在 index.jsx 的 toggle 控制,这里主要放筛选 */}
57
+ </div>
58
+ <div class={styles.filterRight}>
59
+ <el-button link type="primary" onClick={handleClear} style={{ color: '#ff7a00' }}>
60
+ 清空已选
61
+ </el-button>
62
+ <el-select placeholder="剧本名称: 电销话术1V1模拟训练" style={{ width: '240px' }} modelValue="">
63
+ <el-option label="电销话术1V1模拟训练" value="1" />
64
+ </el-select>
65
+ <el-select placeholder="所属部门" style={{ width: '120px' }} modelValue="">
66
+ <el-option label="部门A" value="A" />
67
+ </el-select>
68
+ <el-button onClick={handleDownload}>下载</el-button>
69
+ </div>
70
+ </div>
71
+
72
+ {/* 维度得分排名 */}
73
+ <div class={styles.section}>
74
+ <div class={styles.sectionHeader}>维度得分排名</div>
75
+ <div class={styles.chartContainer}>
76
+ {props.useEcharts ? (
77
+ <EchartsRankBar data={dimensionData.value} height={300} max={100} />
78
+ ) : (
79
+ <RankBarChart data={dimensionData.value} height={300} />
80
+ )}
81
+ </div>
82
+ </div>
83
+
84
+ {/* 排行榜 */}
85
+ <div class={styles.section}>
86
+ <div class={styles.sectionHeader}>排行榜</div>
87
+ <RankingGroup data={rankingData.value} />
88
+ </div>
89
+ </div>
90
+ )
91
+ },
92
+ })
@@ -0,0 +1,56 @@
1
+ .scriptStatsPanel {
2
+ /* 容器样式 */
3
+ }
4
+
5
+ .filterBar {
6
+ display: flex;
7
+ justify-content: space-between;
8
+ align-items: center;
9
+ background: #fff;
10
+ padding: 12px;
11
+ border-radius: 8px;
12
+ border: 1px solid #ebeef5;
13
+ margin-bottom: 12px;
14
+ }
15
+
16
+ .filterLeft {
17
+ display: flex;
18
+ align-items: center;
19
+ gap: 8px;
20
+ }
21
+
22
+ .filterRight {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: 12px;
26
+ }
27
+
28
+ .chartContainer {
29
+ background: #fff;
30
+ padding: 16px;
31
+ border-radius: 8px;
32
+ border: 1px solid #ebeef5;
33
+ }
34
+
35
+ .section {
36
+ margin-top: 12px;
37
+ }
38
+
39
+ .sectionHeader {
40
+ display: flex;
41
+ align-items: center;
42
+ margin-bottom: 10px;
43
+ font-size: 14px;
44
+ font-weight: 600;
45
+ color: #303133;
46
+ }
47
+
48
+ .sectionHeader:before {
49
+ content: '';
50
+ display: inline-block;
51
+ width: 3px;
52
+ height: 14px;
53
+ background: #ff7a00;
54
+ border-radius: 2px;
55
+ margin-right: 8px;
56
+ }
@@ -0,0 +1,40 @@
1
+ import { defineComponent } from 'vue'
2
+ import styles from './index.module.scss'
3
+
4
+ /**
5
+ * 练习数据概览卡片行
6
+ * - 组件化目的:后续可复用在其他统计页
7
+ * - 数据由父组件通过 props 传入
8
+ */
9
+ export default defineComponent({
10
+ name: 'PracticeStatusStatCardsRow',
11
+ props: {
12
+ cards: {
13
+ type: Array,
14
+ default: () => [],
15
+ },
16
+ },
17
+ setup(props) {
18
+ const bgClassList = [
19
+ styles.cardBg1,
20
+ styles.cardBg2,
21
+ styles.cardBg3,
22
+ styles.cardBg4,
23
+ styles.cardBg5,
24
+ styles.cardBg6,
25
+ ]
26
+
27
+ return () => (
28
+ <div class={styles.cardsRow}>
29
+ {props.cards.map((card, idx) => (
30
+ <div class={[styles.statCard, bgClassList[idx % bgClassList.length]]} key={card.key || idx}>
31
+ <div class={styles.statCardLabel}>{card.label}</div>
32
+ <div class={styles.statCardValue}>{card.value}</div>
33
+ {card.hint ? <div class={styles.statCardHint}>{card.hint}</div> : null}
34
+ </div>
35
+ ))}
36
+ </div>
37
+ )
38
+ },
39
+ })
40
+
@@ -0,0 +1,53 @@
1
+ .cardsRow {
2
+ display: grid;
3
+ grid-template-columns: repeat(6, minmax(0, 1fr));
4
+ gap: 10px;
5
+ }
6
+
7
+ .card {
8
+ border: 1px solid #ebeef5;
9
+ border-radius: 8px;
10
+ padding: 12px 14px;
11
+ background: #fff;
12
+ }
13
+
14
+ .cardTitle {
15
+ font-size: 12px;
16
+ color: #606266;
17
+ margin-bottom: 6px;
18
+ }
19
+
20
+ .cardValue {
21
+ font-size: 20px;
22
+ font-weight: 700;
23
+ color: #303133;
24
+ }
25
+
26
+ .statCard {
27
+ border-radius: 8px;
28
+ border: 1px solid #ebeef5;
29
+ padding: 12px 14px;
30
+ background: #fff;
31
+ display: flex;
32
+ flex-direction: column;
33
+ }
34
+
35
+ .statCardTitle {
36
+ font-size: 12px;
37
+ color: #606266;
38
+ margin-bottom: 6px;
39
+ }
40
+
41
+ .statCardValue {
42
+ font-size: 20px;
43
+ font-weight: 700;
44
+ color: #303133;
45
+ }
46
+
47
+ /* bgClassList placeholders if needed, though not found in original CSS */
48
+ .cardBg1 {}
49
+ .cardBg2 {}
50
+ .cardBg3 {}
51
+ .cardBg4 {}
52
+ .cardBg5 {}
53
+ .cardBg6 {}