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.
- package/app/wujie-wk/dev.log +1979 -0
- package/app/wujie-wk/t.html +90 -0
- package/app/wujie-wk/wujie-react-child/README.md +126 -0
- package/app/wujie-wk/wujie-react-child/eslint.config.js +28 -0
- package/app/wujie-wk/wujie-react-child/index.html +13 -0
- package/app/wujie-wk/wujie-react-child/package-lock.json +4344 -0
- package/app/wujie-wk/wujie-react-child/package.json +32 -0
- package/app/wujie-wk/wujie-react-child/public/vite.svg +1 -0
- package/app/wujie-wk/wujie-react-child/src/App.css +0 -0
- package/app/wujie-wk/wujie-react-child/src/App.tsx +72 -0
- package/app/wujie-wk/wujie-react-child/src/assets/react.svg +1 -0
- package/app/wujie-wk/wujie-react-child/src/components/FeatureCards.css +63 -0
- package/app/wujie-wk/wujie-react-child/src/components/FeatureCards.tsx +112 -0
- package/app/wujie-wk/wujie-react-child/src/components/LightCard/index.tsx +36 -0
- package/app/wujie-wk/wujie-react-child/src/components/LightCard/style.css +20 -0
- package/app/wujie-wk/wujie-react-child/src/hooks/use3DCard.ts +53 -0
- package/app/wujie-wk/wujie-react-child/src/hooks/useLightCard.ts +141 -0
- package/app/wujie-wk/wujie-react-child/src/index.css +0 -0
- package/app/wujie-wk/wujie-react-child/src/main.tsx +8 -0
- package/app/wujie-wk/wujie-react-child/src/pages/ChildToParent/index.css +55 -0
- package/app/wujie-wk/wujie-react-child/src/pages/ChildToParent/index.tsx +88 -0
- package/app/wujie-wk/wujie-react-child/src/pages/Css.tsx +28 -0
- package/app/wujie-wk/wujie-react-child/src/pages/Home.tsx +72 -0
- package/app/wujie-wk/wujie-react-child/src/pages/ParentToChild.css +85 -0
- package/app/wujie-wk/wujie-react-child/src/pages/ParentToChild.tsx +119 -0
- package/app/wujie-wk/wujie-react-child/src/pages/RouterJump/index.css +61 -0
- package/app/wujie-wk/wujie-react-child/src/pages/RouterJump/index.tsx +87 -0
- package/app/wujie-wk/wujie-react-child/src/router/index.tsx +63 -0
- package/app/wujie-wk/wujie-react-child/src/types/wujie.d.ts +26 -0
- package/app/wujie-wk/wujie-react-child/src/vite-env.d.ts +1 -0
- package/app/wujie-wk/wujie-react-child/tsconfig.app.json +26 -0
- package/app/wujie-wk/wujie-react-child/tsconfig.json +7 -0
- package/app/wujie-wk/wujie-react-child/tsconfig.node.json +24 -0
- package/app/wujie-wk/wujie-react-child/vite.config.ts +10 -0
- package/app/wujie-wk/wujie-vue2-child/.eslintrc.js +19 -0
- package/app/wujie-wk/wujie-vue2-child/README.md +24 -0
- package/app/wujie-wk/wujie-vue2-child/babel.config.js +5 -0
- package/app/wujie-wk/wujie-vue2-child/docs/superpowers/plans/2026-05-29-quill-editor.md +836 -0
- package/app/wujie-wk/wujie-vue2-child/docs/superpowers/specs/2026-05-29-quill-editor-design.md +210 -0
- package/app/wujie-wk/wujie-vue2-child/jsconfig.json +19 -0
- package/app/wujie-wk/wujie-vue2-child/package-lock.json +21333 -0
- package/app/wujie-wk/wujie-vue2-child/package.json +63 -0
- package/app/wujie-wk/wujie-vue2-child/postcss.config.js +10 -0
- package/app/wujie-wk/wujie-vue2-child/public/favicon.ico +0 -0
- package/app/wujie-wk/wujie-vue2-child/public/index.html +17 -0
- package/app/wujie-wk/wujie-vue2-child/public/rili.jpg +0 -0
- package/app/wujie-wk/wujie-vue2-child/public//344/270/200/351/224/256/351/273/221/346/232/227.html +136 -0
- package/app/wujie-wk/wujie-vue2-child/src/App.vue +110 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/bpmn-camunda.jpg +0 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/css/diagram.less +17 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/Icon.less +31 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app-codes.css +26 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.eot +0 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.svg +60 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.ttf +0 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.woff +0 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/app.woff2 +0 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/config.json +248 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-bottom-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-horizontal-center-tool.svg +85 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-left-tool.svg +84 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-right-tool.svg +80 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-top-tool.svg +84 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/align-vertical-center-tool.svg +89 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/distribute-horizontally-tool.svg +95 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/distribute-vertically-tool.svg +99 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/raw/set-color-tool.svg +111 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-bottom-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-horizontal-center-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-left-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-right-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-top-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/align-vertical-center-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/distribute-horizontally-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/distribute-vertically-tool.svg +30 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/icon/font/source/symbols/set-color-tool.svg +63 -0
- package/app/wujie-wk/wujie-vue2-child/src/assets/logo.png +0 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EllTable/README.md +70 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EllTable/article.md +184 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EllTable/index.js +213 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/CalendarSkeleton.vue +147 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/CodeBlock.vue +199 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/MonthSelect.vue +376 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/README.md +485 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/example.vue +1747 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/index.vue +2720 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/mockData.js +475 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/recruitmentAdapter.js +51 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/EventCalendar/utils.js +202 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/FunctionSelector.vue +123 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/OperatorSelector.vue +184 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/ParameterSelector.vue +123 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/api.js +69 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/FormulaEditor/index.vue +435 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/HelloWorld.vue +58 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/PageHeader/index.vue +158 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/Splitter/README.md +144 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/Splitter/example.vue +84 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/Splitter/index.vue +203 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/diagram/ToolBar.vue +357 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/diagram/customTranslate/customTranslate.js +12 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/diagram/customTranslate/translationsGerman.js +241 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/diagram/index.vue +261 -0
- package/app/wujie-wk/wujie-vue2-child/src/components/diagram/xmlData.js +29 -0
- package/app/wujie-wk/wujie-vue2-child/src/directives/filldown.js +155 -0
- package/app/wujie-wk/wujie-vue2-child/src/directives/filldownTable.js +291 -0
- package/app/wujie-wk/wujie-vue2-child/src/main.js +40 -0
- package/app/wujie-wk/wujie-vue2-child/src/router/index.js +72 -0
- package/app/wujie-wk/wujie-vue2-child/src/store/index.js +23 -0
- package/app/wujie-wk/wujie-vue2-child/src/utils/winBox.js +23 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/Extend/A.vue +12 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/Extend/B.vue +10 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/Extend/MagicalComponentsForELFormItem.vue +78 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/Extend/index.vue +59 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/Extend/tableMouseHorizontalWheel.vue +184 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/Home.vue +27 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/RouterJump.vue +145 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/calendar/index.vue +19 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/css.vue +57 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/EllipsisText.vue +73 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/HoverCard.vue +69 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/TableHover.vue +130 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/inputSlo.vue +42 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/cssComponents/tableFixed.vue +148 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/echarts/echart-dome.vue +73 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/echarts/index.vue +118 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/echarts/pei3d.vue +658 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/bpmn/index.vue +15 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/components/attendanceCycle/index.vue +131 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/components/attendanceGroup/index.vue +147 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/components/attendancePersonnel/index.vue +158 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/components/companyCalendar/index.vue +147 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/components/shift/index.vue +147 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/components/shiftRotationSystem/index.vue +147 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/columnManagement.vue +340 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/dialogInput.vue +71 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/elTableJsx.vue +1826 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/formTable.vue +595 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/index.vue +29 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx/simpleTable.vue +189 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/elTableJsx.zip +0 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/index.vue +39 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/quillEditor/README.md +163 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/quillEditor/example.vue +307 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/quillEditor/index.vue +409 -0
- package/app/wujie-wk/wujie-vue2-child/src/views/element/quillEditor/toolbar.js +122 -0
- package/app/wujie-wk/wujie-vue2-child/vue.config.js +15 -0
- package/app/wujie-wk/wujie-vue3-child/.claude/settings.local.json +8 -0
- package/app/wujie-wk/wujie-vue3-child/.vscode/extensions.json +3 -0
- package/app/wujie-wk/wujie-vue3-child/PROJECT_MEMORY.md +427 -0
- package/app/wujie-wk/wujie-vue3-child/README.md +5 -0
- package/app/wujie-wk/wujie-vue3-child/index.html +13 -0
- package/app/wujie-wk/wujie-vue3-child/package-lock.json +5744 -0
- package/app/wujie-wk/wujie-vue3-child/package.json +28 -0
- package/app/wujie-wk/wujie-vue3-child/public/vite.svg +1 -0
- package/app/wujie-wk/wujie-vue3-child/src/App.vue +130 -0
- package/app/wujie-wk/wujie-vue3-child/src/assets/vue.svg +1 -0
- package/app/wujie-wk/wujie-vue3-child/src/components/HelloWorld.vue +43 -0
- package/app/wujie-wk/wujie-vue3-child/src/components/SmartAnchorTabs/index.jsx +224 -0
- package/app/wujie-wk/wujie-vue3-child/src/components/SmartAnchorTabs/style.css +154 -0
- package/app/wujie-wk/wujie-vue3-child/src/components/tags-view.vue +193 -0
- package/app/wujie-wk/wujie-vue3-child/src/components/tags-view1.vue +131 -0
- package/app/wujie-wk/wujie-vue3-child/src/directives/aiLoading.js +182 -0
- package/app/wujie-wk/wujie-vue3-child/src/hooks/useClickOutside.js +11 -0
- package/app/wujie-wk/wujie-vue3-child/src/hooks/useTableDragSort.js +28 -0
- package/app/wujie-wk/wujie-vue3-child/src/main.js +18 -0
- package/app/wujie-wk/wujie-vue3-child/src/router/index.js +104 -0
- package/app/wujie-wk/wujie-vue3-child/src/store/tagsViewStroe.js +34 -0
- package/app/wujie-wk/wujie-vue3-child/src/style.css +171 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/collapseExpand/index.jsx +108 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/collapseExpand/index.module.scss +97 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/README.md +836 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/REFLEX_EXAMPLES.md +728 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentPersonnelSelector.jsx +687 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentPersonnelSelector.module.scss +560 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelector.jsx +570 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelector.module.scss +330 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelectorV2.jsx +378 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/DepartmentSelectorV2.module.scss +228 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/OptionsSelector.jsx +399 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/OptionsSelector.module.scss +252 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PersonnelSelector.jsx +585 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PersonnelSelector.module.scss +331 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PopoverSelector.jsx +392 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/PopoverSelector.module.scss +39 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/README.md +248 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/components/SelectorTrigger.jsx +194 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/index.jsx +1459 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/departmentPersonnel/mockData.js +301 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/dialogueSegment/index.jsx +182 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/dialogueSegment/index.module.scss +28 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/index.jsx +375 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ChartsPanel/index.jsx +121 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ChartsPanel/index.module.scss +76 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/DonutChart/index.jsx +104 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/PracticeTable/index.jsx +75 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/PracticeTable/index.module.scss +12 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankBarChart/index.jsx +62 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankBarChart/index.module.scss +43 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingGroup/index.jsx +29 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingGroup/index.module.scss +5 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingList/index.jsx +58 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/RankingList/index.module.scss +85 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ScriptStatsPanel/index.jsx +92 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/ScriptStatsPanel/index.module.scss +56 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/StatCardsRow/index.jsx +40 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/StatCardsRow/index.module.scss +53 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/echarts/EchartsDonut.jsx +106 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/components/echarts/EchartsRankBar.jsx +132 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/index.jsx +176 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/practiceStatus/index.module.scss +96 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/CoachReport/index.jsx +162 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/CoachReport/index.module.scss +16 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ComprehensiveEvaluation/index.jsx +29 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ComprehensiveEvaluation/index.module.scss +25 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueBubble/index.jsx +106 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueBubble/index.module.scss +164 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueRecord/index.jsx +182 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DialogueRecord/index.module.scss +203 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionDetail/index.jsx +145 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionDetail/index.module.scss +126 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionScores/index.jsx +67 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/DimensionScores/index.module.scss +105 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ReportHeader/index.jsx +81 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ReportHeader/index.module.scss +47 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/RoleInfo/index.jsx +64 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/RoleInfo/index.module.scss +85 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ScoreBadge/index.jsx +39 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/ScoreBadge/index.module.scss +44 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/SubDimensionItem/index.jsx +83 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/components/SubDimensionItem/index.module.scss +101 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/index.jsx +50 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/reportDetail/index.module.scss +25 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/scriptTable/index.jsx +196 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/scriptTable/index.module.scss +41 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/scriptTable/inputColumn/index.jsx +183 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/aiCoach/scriptTable/inputColumn/index.module.scss +115 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/child-to-parent.vue +117 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/home.vue +53 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/jsx/btnSelect/btnSelect.vue +169 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/jsx/btnSelect/index.vue +69 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/jsx/com.vue +44 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/jsx/dialog.jsx +66 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/jsx/index.vue +72 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/jsx/props.vue +33 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/parent-to-child.vue +225 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/phone-code.vue +318 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/router-jump.vue +123 -0
- package/app/wujie-wk/wujie-vue3-child/src/views/test.vue +192 -0
- package/app/wujie-wk/wujie-vue3-child/vite.config.js +15 -0
- package/app/wujie-wk/wujie-vue3-child copy/.vscode/extensions.json +3 -0
- package/app/wujie-wk/wujie-vue3-child copy/README.md +5 -0
- package/app/wujie-wk/wujie-vue3-child copy/index.html +13 -0
- package/app/wujie-wk/wujie-vue3-child copy/package-lock.json +4617 -0
- package/app/wujie-wk/wujie-vue3-child copy/package.json +22 -0
- package/app/wujie-wk/wujie-vue3-child copy/public/vite.svg +1 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/App.vue +124 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/assets/vue.svg +1 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/components/HelloWorld.vue +43 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/main.js +12 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/router/index.js +84 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/style.css +4 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/views/child-to-parent.vue +117 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/views/home.vue +53 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/views/parent-to-child.vue +225 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/views/phone-code.vue +318 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/views/router-jump.vue +115 -0
- package/app/wujie-wk/wujie-vue3-child copy/src/views/test.vue +192 -0
- package/app/wujie-wk/wujie-vue3-child copy/vite.config.js +10 -0
- package/app/wujie-wk/wujie-vue3-main/.vscode/extensions.json +3 -0
- package/app/wujie-wk/wujie-vue3-main/README.md +154 -0
- package/app/wujie-wk/wujie-vue3-main/index.html +13 -0
- package/app/wujie-wk/wujie-vue3-main/package-lock.json +4736 -0
- package/app/wujie-wk/wujie-vue3-main/package.json +25 -0
- package/app/wujie-wk/wujie-vue3-main/public/vite.svg +1 -0
- package/app/wujie-wk/wujie-vue3-main/src/App.vue +879 -0
- package/app/wujie-wk/wujie-vue3-main/src/assets/vue.svg +1 -0
- package/app/wujie-wk/wujie-vue3-main/src/components/HelloWorld.vue +43 -0
- package/app/wujie-wk/wujie-vue3-main/src/components/WujieReact/index.vue +20 -0
- package/app/wujie-wk/wujie-vue3-main/src/components/WujieVue2/index.vue +8 -0
- package/app/wujie-wk/wujie-vue3-main/src/components/WujieVue3/index.vue +8 -0
- package/app/wujie-wk/wujie-vue3-main/src/components/WujieVue3Copy/index.vue +8 -0
- package/app/wujie-wk/wujie-vue3-main/src/main.js +23 -0
- package/app/wujie-wk/wujie-vue3-main/src/router/index.js +88 -0
- package/app/wujie-wk/wujie-vue3-main/src/store/useMicroAppStore.js +66 -0
- package/app/wujie-wk/wujie-vue3-main/src/style.css +3 -0
- package/app/wujie-wk/wujie-vue3-main/src/views/home.vue +103 -0
- package/app/wujie-wk/wujie-vue3-main/src/views/router-jump.vue +159 -0
- package/app/wujie-wk/wujie-vue3-main/src/views/test.vue +125 -0
- package/app/wujie-wk/wujie-vue3-main/src/views/vue3-child-msg.vue +108 -0
- package/app/wujie-wk/wujie-vue3-main/vite.config.js +12 -0
- package/package.json +1 -1
- package/app/check-import-case.js +0 -344
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
# EventCalendar 日程日历组件
|
|
2
|
+
|
|
3
|
+
一个零第三方依赖的 Vue 2 月历组件。支持月份自动补全(含跨年)、下拉切换、自动轮播、
|
|
4
|
+
字段映射、插槽定制、骨架屏与多种切换动效。
|
|
5
|
+
|
|
6
|
+
> 整个 `EventCalendar` 文件夹可以直接拷贝到任意 Vue 2 项目使用,
|
|
7
|
+
> **不依赖 element-ui / dayjs / moment / lodash 等任何第三方库**,只用原生 `Date` 与 CSS。
|
|
8
|
+
|
|
9
|
+
## 目录结构
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
EventCalendar/
|
|
13
|
+
├── index.vue # 组件本体
|
|
14
|
+
├── MonthSelect.vue # 自研月份下拉框(不依赖 UI 库)
|
|
15
|
+
├── CalendarSkeleton.vue # 骨架屏
|
|
16
|
+
├── CodeBlock.vue # 示例页用的代码块(业务中可删)
|
|
17
|
+
├── utils.js # 日期计算与字段映射工具
|
|
18
|
+
├── recruitmentAdapter.js # NodeQ mock 响应 -> EventCalendar 数据
|
|
19
|
+
├── mockData.js # 模拟数据(setTimeout 模拟异步接口)
|
|
20
|
+
├── example.vue # 完整示例集合(14 个 demo + API 文档)
|
|
21
|
+
└── README.md
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
真正接入普通日历时,**必需**的只有 `index.vue`、`MonthSelect.vue`、`CalendarSkeleton.vue`、`utils.js`。
|
|
25
|
+
接 NodeQ 招聘接口时再加入 `recruitmentAdapter.js`。`mockData.js` / `example.vue` / `CodeBlock.vue`
|
|
26
|
+
是演示用的,可以删掉。
|
|
27
|
+
|
|
28
|
+
## 快速开始
|
|
29
|
+
|
|
30
|
+
```vue
|
|
31
|
+
<template>
|
|
32
|
+
<EventCalendar
|
|
33
|
+
:data="data"
|
|
34
|
+
:loading="loading"
|
|
35
|
+
title="宣讲日历"
|
|
36
|
+
subtitle="更多场次陆续上线中,宣讲进程以实际安排为准"
|
|
37
|
+
@item-click="onItemClick"
|
|
38
|
+
/>
|
|
39
|
+
</template>
|
|
40
|
+
|
|
41
|
+
<script>
|
|
42
|
+
import EventCalendar from '@/components/EventCalendar/index.vue'
|
|
43
|
+
|
|
44
|
+
export default {
|
|
45
|
+
components: { EventCalendar },
|
|
46
|
+
data() {
|
|
47
|
+
return { data: [], loading: true }
|
|
48
|
+
},
|
|
49
|
+
async created() {
|
|
50
|
+
this.loading = true
|
|
51
|
+
try {
|
|
52
|
+
this.data = await this.$api.getCalendar()
|
|
53
|
+
} finally {
|
|
54
|
+
// 放 finally:接口失败也要收掉骨架屏,否则页面会一直卡在加载态
|
|
55
|
+
this.loading = false
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
methods: {
|
|
59
|
+
onItemClick(scope) {
|
|
60
|
+
console.log(scope.item) // 后端返回的原始对象
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
</script>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 数据结构
|
|
68
|
+
|
|
69
|
+
### 默认结构(按月分组)
|
|
70
|
+
|
|
71
|
+
```js
|
|
72
|
+
[
|
|
73
|
+
{
|
|
74
|
+
month: '2026-09', // 月份标识
|
|
75
|
+
monthLabel: '2026年9月', // 下拉框文案,不传则自动生成
|
|
76
|
+
days: [
|
|
77
|
+
{
|
|
78
|
+
date: '2026-09-09', // 日期标识
|
|
79
|
+
items: [ // 当天的条目
|
|
80
|
+
{
|
|
81
|
+
id: 'a1',
|
|
82
|
+
label: '香港中文大学(深圳)', // 主文案
|
|
83
|
+
address: '深圳市南山区校区报告厅', // 地址,为空时不显示地址行
|
|
84
|
+
badge: '宣讲', // 右上角角标
|
|
85
|
+
type: 'talk' // 类型,决定配色
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 扁平结构(也支持)
|
|
95
|
+
|
|
96
|
+
不按月分组,直接给一维日期数组,组件会自动按日期归月:
|
|
97
|
+
|
|
98
|
+
```js
|
|
99
|
+
[
|
|
100
|
+
{ date: '2026-09-09', items: [...] },
|
|
101
|
+
{ date: '2026-10-01', items: [...] }
|
|
102
|
+
]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## NodeQ mock 数据转换
|
|
106
|
+
|
|
107
|
+
转换方法只负责把当前 mock 响应中的 `data.nbcbRecAnnJourneyMaps` 映射为组件默认结构,
|
|
108
|
+
不包含字段猜测或展示配置:
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
import EventCalendar from '@/components/EventCalendar/index.vue'
|
|
112
|
+
import { transformNodeqCalendarResponse } from '@/components/EventCalendar/recruitmentAdapter'
|
|
113
|
+
|
|
114
|
+
const data = transformNodeqCalendarResponse(response)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```vue
|
|
118
|
+
<EventCalendar
|
|
119
|
+
:data="data"
|
|
120
|
+
item-align="center"
|
|
121
|
+
:item-horizontal-padding="0"
|
|
122
|
+
:item-height="40"
|
|
123
|
+
/>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
转换后条目固定包含 `id`、`label`、`address`、`badge`、`type`、`disabled`。
|
|
127
|
+
mock 中没有的值使用空字符串或 `false`。`address` 为空时,日历组件不会渲染地址行。
|
|
128
|
+
|
|
129
|
+
大学名称不超过 7 个字符时为 14px,超过 7 个字符时为 12px;地址统一为 12px。
|
|
130
|
+
`item-align` 控制靠左或居中,`item-horizontal-padding="0"` 可去掉条目左右内边距。
|
|
131
|
+
|
|
132
|
+
## 原生布局配置工具栏
|
|
133
|
+
|
|
134
|
+
外边距、内边距、条目、溢出与行高、角标缩放等均为组件原生 Props。开启工具栏后,
|
|
135
|
+
改完点「复制配置」,把 JSON 粘回 `layoutConfig` 再 `v-bind` 即可:
|
|
136
|
+
|
|
137
|
+
```vue
|
|
138
|
+
<EventCalendar
|
|
139
|
+
:data="data"
|
|
140
|
+
v-bind="layoutConfig"
|
|
141
|
+
:show-config-toolbar="isDevelopment"
|
|
142
|
+
/>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
```js
|
|
146
|
+
export default {
|
|
147
|
+
data() {
|
|
148
|
+
return {
|
|
149
|
+
isDevelopment: process.env.NODE_ENV !== 'production',
|
|
150
|
+
// 结构与工具栏「复制配置」得到的 JSON 一致,可直接赋值应用
|
|
151
|
+
layoutConfig: {
|
|
152
|
+
itemAlign: 'center',
|
|
153
|
+
calendarMargin: 0,
|
|
154
|
+
calendarPadding: 0,
|
|
155
|
+
headerPadding: '4px 4px 16px',
|
|
156
|
+
cellPadding: '12px 10px',
|
|
157
|
+
mobileCellPadding: '8px 6px',
|
|
158
|
+
itemHorizontalPadding: 0,
|
|
159
|
+
itemVerticalPadding: 4,
|
|
160
|
+
itemGap: 6,
|
|
161
|
+
itemLineGap: 2,
|
|
162
|
+
itemBgGradient: false,
|
|
163
|
+
itemBgGradientDir: 'to-bottom',
|
|
164
|
+
itemBgHover: true,
|
|
165
|
+
overflowMode: 'scroll',
|
|
166
|
+
maxVisibleItems: 4,
|
|
167
|
+
itemHeight: 28,
|
|
168
|
+
minRowHeight: 118,
|
|
169
|
+
badgeScale: 0.75,
|
|
170
|
+
// 条目色留空表示沿用 type/主题配色
|
|
171
|
+
itemTextColor: '',
|
|
172
|
+
itemBgColor: ''
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
`show-config-toolbar` 默认是 `false`。开启后组件顶部会出现配置工具栏(P1~P14):
|
|
180
|
+
条目对齐、日期格/窄屏日期格内边距(各拆「上下 / 左右」两块)、条目左右/上下内边距与间距、
|
|
181
|
+
名称与地址间距、单格最多显示、条目高度、条目背景效果(纯色/渐变,方向可上下或左右)、
|
|
182
|
+
悬浮加深(可关闭)与条目文字色/背景色;每张卡片右上角都有「还原」可回到初始值。
|
|
183
|
+
选定条目背景色后,鼠标悬浮会自动把背景调淡一档,不喜欢可在「悬浮加深」里关闭。
|
|
184
|
+
底部实时显示当前配置 JSON,右上角「复制配置」一键复制。用户把复制出的 JSON 发回后,
|
|
185
|
+
研发直接把它赋给 `layoutConfig` 通过 `v-bind` 应用即可。
|
|
186
|
+
|
|
187
|
+
## 字段映射(后端字段不一致时)
|
|
188
|
+
|
|
189
|
+
**不需要改数据**,传 `field-names` 即可。字段路径支持 `'a.b.c'` 形式。
|
|
190
|
+
|
|
191
|
+
```js
|
|
192
|
+
const fieldNames = {
|
|
193
|
+
month: 'ym',
|
|
194
|
+
monthLabel: 'ymText',
|
|
195
|
+
days: 'dateList',
|
|
196
|
+
date: 'dayStr',
|
|
197
|
+
items: 'activityList',
|
|
198
|
+
itemKey: 'activityId',
|
|
199
|
+
itemLabel: 'schoolName',
|
|
200
|
+
itemAddress: 'rawAddress',
|
|
201
|
+
itemBadge: 'activityTypeName',
|
|
202
|
+
itemType: 'activityType',
|
|
203
|
+
itemDisabled: 'expired'
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
```vue
|
|
208
|
+
<EventCalendar :data="data" :field-names="fieldNames" />
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
完整默认值见 `utils.js` 里的 `DEFAULT_FIELD_NAMES`。
|
|
212
|
+
|
|
213
|
+
## 核心机制说明
|
|
214
|
+
|
|
215
|
+
### 1. 月份补全与跨年
|
|
216
|
+
|
|
217
|
+
每个月天数(28/29/30/31)和「1 号是星期几」都不固定,组件会自动补齐首尾:
|
|
218
|
+
|
|
219
|
+
- 若 2 月 1 号是**周三**,首行补上 1 月的周日、周一、周二;
|
|
220
|
+
- 若 2 月 28 号是**周三**,末行补上 3 月的周四、周五、周六;
|
|
221
|
+
- 非当月的补位日期自动**置灰**(`.is-other-month`)。
|
|
222
|
+
|
|
223
|
+
实现上先算出本月 1 号相对「一周起始日」的偏移量 `leading`,再用
|
|
224
|
+
`new Date(year, month - 1, 1 - leading + i)` 递推生成所有格子。
|
|
225
|
+
原生 `Date` 对天数越界会自动进位/借位,**跨年(1 月往前补 12 月、12 月往后补次年 1 月)无需任何特判**。
|
|
226
|
+
|
|
227
|
+
补位格子默认也会渲染条目,可用 `:show-adjacent-items="false"` 关掉。
|
|
228
|
+
|
|
229
|
+
### 2. 行高与条目溢出
|
|
230
|
+
|
|
231
|
+
**行高由该行条目最多的那一天决定** —— 这是 CSS Grid 的天然行为
|
|
232
|
+
(同一行的格子会自动拉伸到该行最高格子的高度),无需 JS 计算,也不会因为窗口缩放而失准。
|
|
233
|
+
|
|
234
|
+
单日条目超过 `max-visible-items`(默认 4)后有两种处理:
|
|
235
|
+
|
|
236
|
+
| overflow-mode | 行为 |
|
|
237
|
+
| --- | --- |
|
|
238
|
+
| `scroll`(默认) | 格内出现细滚动条,滚动区高度 = `n × item-height + (n-1) × item-gap` |
|
|
239
|
+
| `collapse` | 只显示前 n-1 条,末尾出现「还有 N 项」,可监听 `more-click` |
|
|
240
|
+
|
|
241
|
+
大学名称不超过 7 个字符时使用 14px,超过 7 个字符时使用 12px;地址行统一使用 12px,
|
|
242
|
+
地址为空时不渲染。
|
|
243
|
+
|
|
244
|
+
`min-row-height` 保证没有条目的行不会塌陷。
|
|
245
|
+
|
|
246
|
+
### 3. 轮播与暂停
|
|
247
|
+
|
|
248
|
+
`autoplay` 开启后按 `autoplay-interval` 自动切换月份,顶部细进度条展示剩余时间。
|
|
249
|
+
以下情况会**自动暂停并保留剩余时间**(恢复时接着走,进度条不跳):
|
|
250
|
+
|
|
251
|
+
- 鼠标悬停在组件上(`pause-on-hover`,默认开)
|
|
252
|
+
- 月份下拉框展开中
|
|
253
|
+
- 浏览器标签页切到后台(`visibilitychange`)
|
|
254
|
+
- 用户点击了暂停按钮
|
|
255
|
+
|
|
256
|
+
`loop="false"` 时播到最后一个月会停止并触发 `autoplay-end`。
|
|
257
|
+
|
|
258
|
+
### 4. 切换动效
|
|
259
|
+
|
|
260
|
+
| transition-effect | 效果 |
|
|
261
|
+
| --- | --- |
|
|
262
|
+
| `slide`(默认) | 按切换方向左右滑入滑出 |
|
|
263
|
+
| `fade` | 淡入淡出 |
|
|
264
|
+
| `zoom` | 缩放 |
|
|
265
|
+
| `flip` | 带透视的 3D 翻页 |
|
|
266
|
+
| `none` | 关闭动效 |
|
|
267
|
+
|
|
268
|
+
另有 `cell-stagger` 让单元格从左上到右下错峰入场。
|
|
269
|
+
动效时长由 `transition-duration` 控制,设为 `0` 亦可视作关闭。
|
|
270
|
+
|
|
271
|
+
切月时行数可能从 5 行变 6 行,组件用 `ResizeObserver` 测量面板高度并做高度过渡,不会突然跳动。
|
|
272
|
+
|
|
273
|
+
> 组件已适配 `prefers-reduced-motion`:系统开启「减少动态效果」时自动关闭全部动画。
|
|
274
|
+
|
|
275
|
+
## API
|
|
276
|
+
|
|
277
|
+
### Props
|
|
278
|
+
|
|
279
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
280
|
+
| --- | --- | --- | --- |
|
|
281
|
+
| data | 日历数据,支持按月分组与扁平两种结构 | Array | `[]` |
|
|
282
|
+
| field-names | 字段映射,支持 `a.b.c` 点路径 | Object | `{}` |
|
|
283
|
+
| loading | 加载中,为 true 时渲染骨架屏 | Boolean | `false` |
|
|
284
|
+
| skeleton-rows | 骨架屏行数 | Number | `5` |
|
|
285
|
+
| active-month | 当前月份,支持 `v-model` / `.sync` | String | `''` |
|
|
286
|
+
| show-month-select | 是否显示月份下拉框 | Boolean | `true` |
|
|
287
|
+
| show-arrows | 是否显示左右翻月箭头 | Boolean | `false` |
|
|
288
|
+
| autoplay | 是否开启自动轮播 | Boolean | `false` |
|
|
289
|
+
| autoplay-interval | 轮播间隔(毫秒) | Number | `60000` |
|
|
290
|
+
| loop | 播到最后一个月后是否回到第一个 | Boolean | `true` |
|
|
291
|
+
| pause-on-hover | 鼠标悬停时暂停轮播 | Boolean | `true` |
|
|
292
|
+
| show-progress | 显示轮播倒计时进度条 | Boolean | `true` |
|
|
293
|
+
| show-autoplay-toggle | 显示播放/暂停按钮 | Boolean | `true` |
|
|
294
|
+
| transition-effect | `slide` / `fade` / `zoom` / `flip` / `none` | String | `'slide'` |
|
|
295
|
+
| transition-duration | 动效时长(毫秒) | Number | `420` |
|
|
296
|
+
| cell-stagger | 单元格错峰入场动画 | Boolean | `false` |
|
|
297
|
+
| show-header | 是否显示顶部区域 | Boolean | `true` |
|
|
298
|
+
| title / subtitle | 默认标题与副标题(`header-left` 未传时生效) | String | `''` |
|
|
299
|
+
| first-day-of-week | 一周起始日,0=周日 1=周一 | Number | `0` |
|
|
300
|
+
| week-labels | 星期文案,下标对应 `Date.getDay()` | Array | `['周日'…'周六']` |
|
|
301
|
+
| max-visible-items | 单日最多显示条目数 | Number | `4` |
|
|
302
|
+
| overflow-mode | 溢出处理:`scroll` / `collapse` | String | `'scroll'` |
|
|
303
|
+
| item-height | 单条条目高度(px) | Number | `28` |
|
|
304
|
+
| item-gap | 条目间距(px) | Number | `6` |
|
|
305
|
+
| item-align | 条目内容对齐方式:`left` / `center` | String | `'left'` |
|
|
306
|
+
| calendar-margin | 日历根节点外边距;Number 按 px 处理,String 支持 CSS 简写 | Number / String | `0` |
|
|
307
|
+
| calendar-padding | 日历根节点内边距;Number 按 px 处理,String 支持 CSS 简写 | Number / String | `0` |
|
|
308
|
+
| header-padding | 顶部区域内边距,支持 CSS 简写 | Number / String | `'4px 4px 16px'` |
|
|
309
|
+
| cell-padding | 日期格内边距,支持 CSS 简写 | Number / String | `'12px 10px'` |
|
|
310
|
+
| mobile-cell-padding | 768px 及以下日期格内边距 | Number / String | `'8px 6px'` |
|
|
311
|
+
| item-horizontal-padding | 条目左右内边距(px),传 0 可去除 | Number | `8` |
|
|
312
|
+
| item-vertical-padding | 条目上下内边距(px) | Number | `4` |
|
|
313
|
+
| item-line-gap | 条目内名称与地址的行间距(px) | Number | `2` |
|
|
314
|
+
| item-bg-gradient | 条目背景是否启用渐变(在底色上叠柔和渐变) | Boolean | `false` |
|
|
315
|
+
| item-bg-gradient-dir | 渐变方向:to-bottom 上到下 | to-right 左到右 | String | `'to-bottom'` |
|
|
316
|
+
| item-bg-hover | 悬浮时是否自动把条目背景调淡一档 | Boolean | `true` |
|
|
317
|
+
| badge-scale | 右上角角标整体缩放倍率(越小越紧凑) | Number | `0.75` |
|
|
318
|
+
| show-config-toolbar | 显示原生布局配置工具栏 | Boolean | `false` |
|
|
319
|
+
| item-bg-color | 条目(.ec__item)背景色覆盖;空串按 type/主题配色(工具栏可取色) | String | `''` |
|
|
320
|
+
| item-text-color | 条目(.ec__item)文字色覆盖;空串按 type/主题配色(工具栏可取色) | String | `''` |
|
|
321
|
+
| min-row-height | 单元格最小高度(px) | Number | `118` |
|
|
322
|
+
| show-adjacent-items | 补位日期是否也渲染条目 | Boolean | `true` |
|
|
323
|
+
| highlight-today | 高亮今天 | Boolean | `true` |
|
|
324
|
+
| colorful | 角标是否按 type 上色 | Boolean | `true` |
|
|
325
|
+
| type-colors | 类型配色 `{ type: { color, bg } }` | Object | 内置 4 种 |
|
|
326
|
+
| day-formatter | 日期文案格式化 `(cell) => string` | Function | `'9月7日'` |
|
|
327
|
+
| month-formatter | 月份下拉文案格式化 `(monthKey, raw) => string` | Function | `null` |
|
|
328
|
+
| empty-text | 空数据文案 | String | `'暂无日程数据'` |
|
|
329
|
+
| cell-focusable | 单元格可聚焦(键盘无障碍) | Boolean | `false` |
|
|
330
|
+
| theme | 主题变量覆盖 | Object | `{}` |
|
|
331
|
+
|
|
332
|
+
### Events
|
|
333
|
+
|
|
334
|
+
| 事件名 | 说明 | 回调参数 |
|
|
335
|
+
| --- | --- | --- |
|
|
336
|
+
| day-click | 点击日期格子 | `(scope, event)` |
|
|
337
|
+
| item-click | 点击条目 | `(scope, event)` |
|
|
338
|
+
| tag-click | 点击条目右上角角标;**未监听时自动退化为 item-click** | `(scope, event)` |
|
|
339
|
+
| more-click | `collapse` 模式下点击「还有 N 项」 | `(scope, event)` |
|
|
340
|
+
| month-change | 月份变化 | `(month, { index, source, option, raw })` |
|
|
341
|
+
| update:activeMonth | 配合 `v-model` / `.sync` | `(month)` |
|
|
342
|
+
| autoplay-toggle | 点击播放/暂停按钮 | `(playing: Boolean)` |
|
|
343
|
+
| autoplay-end | `loop=false` 时播到最后一个月 | — |
|
|
344
|
+
| transition-end | 月份切换动画结束 | `(month)` |
|
|
345
|
+
| config-change | 工具栏配置变化(编辑每一项都会触发) | `(config)` |
|
|
346
|
+
|
|
347
|
+
`month-change` 的 `source` 表明触发来源:`select` / `arrow` / `autoplay` / `prop` / `api`。
|
|
348
|
+
|
|
349
|
+
日期格子的 `scope`:
|
|
350
|
+
|
|
351
|
+
```js
|
|
352
|
+
{ day, date, dateKey, items, visibleItems, raw, isCurrentMonth, isToday, isWeekend, label }
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
条目的 `scope`:
|
|
356
|
+
|
|
357
|
+
```js
|
|
358
|
+
{ item, raw, label, badge, type, disabled, index, day, dateKey }
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
其中 `item` / `raw` 是后端返回的**原始对象**,字段齐全,不受 `field-names` 影响。
|
|
362
|
+
|
|
363
|
+
### Slots
|
|
364
|
+
|
|
365
|
+
| 名称 | 说明 | 作用域参数 |
|
|
366
|
+
| --- | --- | --- |
|
|
367
|
+
| header-left | 顶部左侧(设计稿的标题区) | `{ month, monthLabel, monthIndex, monthCount, monthOptions, loading, paused, prev, next, goTo, toggleAutoplay }` |
|
|
368
|
+
| header-right | 顶部右侧,整体替换默认按钮与下拉 | 同上 |
|
|
369
|
+
| weekday | 星期表头单元 | `{ label, weekday, isWeekend, index }` |
|
|
370
|
+
| day | 整个日期格子(覆盖所有默认内容) | 日期 scope |
|
|
371
|
+
| day-header | 格子里的日期行 | 日期 scope |
|
|
372
|
+
| items | 格子里的条目列表区域 | 日期 scope |
|
|
373
|
+
| item | 单个条目 | 条目 scope |
|
|
374
|
+
| day-empty | 当天无数据时的占位 | 日期 scope |
|
|
375
|
+
| loading | 自定义骨架屏 | `{ rows }` |
|
|
376
|
+
| empty | 整体空状态 | — |
|
|
377
|
+
|
|
378
|
+
不传插槽时全部回落到默认样式(即设计稿效果)。
|
|
379
|
+
|
|
380
|
+
```vue
|
|
381
|
+
<EventCalendar :data="data">
|
|
382
|
+
<template #header-left="{ monthLabel }">
|
|
383
|
+
<div class="my-head">{{ monthLabel }}</div>
|
|
384
|
+
</template>
|
|
385
|
+
|
|
386
|
+
<template #item="{ item, label, badge }">
|
|
387
|
+
<div class="my-item">{{ item.startTime }} {{ label }} · {{ badge }}</div>
|
|
388
|
+
</template>
|
|
389
|
+
</EventCalendar>
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### Methods(通过 `ref` 调用)
|
|
393
|
+
|
|
394
|
+
| 方法 | 说明 |
|
|
395
|
+
| --- | --- |
|
|
396
|
+
| `prev()` | 切到上一个月 |
|
|
397
|
+
| `next()` | 切到下一个月 |
|
|
398
|
+
| `goTo(index)` | 切到第 index 个月(从 0 开始) |
|
|
399
|
+
| `setMonth(month)` | 切到指定月份,如 `setMonth('2026-10')` |
|
|
400
|
+
| `restartAutoplay()` | 重置轮播计时 |
|
|
401
|
+
| `getLayoutConfig()` | 获取可直接通过 `v-bind` 应用的当前布局配置 |
|
|
402
|
+
|
|
403
|
+
## 主题定制
|
|
404
|
+
|
|
405
|
+
所有颜色都走 CSS 变量,用 `theme` 传入即可换肤:
|
|
406
|
+
|
|
407
|
+
```vue
|
|
408
|
+
<EventCalendar
|
|
409
|
+
:data="data"
|
|
410
|
+
:theme="{
|
|
411
|
+
primary: '#10a37f',
|
|
412
|
+
primaryGhost: 'rgba(16,163,127,.12)',
|
|
413
|
+
border: '#e4e7ed',
|
|
414
|
+
borderLight: '#eef0f4',
|
|
415
|
+
text: '#303133',
|
|
416
|
+
textSecondary: '#606266',
|
|
417
|
+
muted: '#c8ccd4',
|
|
418
|
+
itemBg: '#f2f9f6',
|
|
419
|
+
cellHover: '#f7fcfa',
|
|
420
|
+
radius: '10px'
|
|
421
|
+
}"
|
|
422
|
+
/>
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
按业务类型配色用 `type-colors`:
|
|
426
|
+
|
|
427
|
+
```vue
|
|
428
|
+
<EventCalendar
|
|
429
|
+
:data="data"
|
|
430
|
+
:type-colors="{
|
|
431
|
+
talk: { color: '#3d6cf0', bg: 'rgba(61,108,240,.10)' },
|
|
432
|
+
fair: { color: '#e0821b', bg: 'rgba(224,130,27,.12)' }
|
|
433
|
+
}"
|
|
434
|
+
/>
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
`:colorful="false"` 会让角标统一回到中性灰(更贴近原始设计稿)。
|
|
438
|
+
|
|
439
|
+
## 模拟数据
|
|
440
|
+
|
|
441
|
+
`mockData.js` 用 `setTimeout` 模拟异步接口,方便脱离后端联调:
|
|
442
|
+
|
|
443
|
+
```js
|
|
444
|
+
import {
|
|
445
|
+
fetchCalendarData, // 默认字段,可指定月份 / 延迟 / 数据密度
|
|
446
|
+
fetchCalendarDataV2, // 字段名完全不同,配合 ALT_FIELD_NAMES 演示映射
|
|
447
|
+
fetchCrossYearData, // 2025-12 / 2026-01 / 2026-02,验证跨年补全
|
|
448
|
+
fetchEmptyData, // 空数据
|
|
449
|
+
fetchNodeqCalendarData, // NodeQ mock 响应(三个月、每天 3~5 条)
|
|
450
|
+
NODEQ_MOCK_RESPONSE, // 同一份响应的同步版本
|
|
451
|
+
createNodeqMockResponse,
|
|
452
|
+
SIMPLE_DATA, // 一份写死的小数据
|
|
453
|
+
ALT_FIELD_NAMES
|
|
454
|
+
} from './mockData'
|
|
455
|
+
import { transformNodeqCalendarResponse } from './recruitmentAdapter'
|
|
456
|
+
|
|
457
|
+
const data = await fetchCalendarData({
|
|
458
|
+
months: ['2026-09', '2026-10'],
|
|
459
|
+
delay: 1500,
|
|
460
|
+
maxItems: 6,
|
|
461
|
+
density: 0.62
|
|
462
|
+
})
|
|
463
|
+
|
|
464
|
+
const nodeqResponse = await fetchNodeqCalendarData()
|
|
465
|
+
const nodeqData = transformNodeqCalendarResponse(nodeqResponse)
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
数据用固定种子的伪随机生成,**每次刷新结果一致**,方便调样式和截图对比。
|
|
469
|
+
`createNodeqMockResponse()` 默认生成 2026 年 9~11 月,每个月 14 个有安排的日期,
|
|
470
|
+
每天 3~5 条 NodeQ mock 记录。转换方法只按这份 mock 的固定字段做映射。
|
|
471
|
+
|
|
472
|
+
## 示例页
|
|
473
|
+
|
|
474
|
+
`example.vue` 是按 UI 组件库文档形式组织的完整示例集合,包含 14 个可交互 demo
|
|
475
|
+
(基础用法、异步骨架屏、多月切换、自动轮播、切换动效、跨年补全、字段映射、
|
|
476
|
+
溢出与行高、插槽定制、事件、主题、空状态、NodeQ 后端适配、布局配置与 JSON 导出)
|
|
477
|
+
与完整 API 表格。
|
|
478
|
+
|
|
479
|
+
本项目中已挂到路由 `/calendar`。
|
|
480
|
+
|
|
481
|
+
## 浏览器兼容
|
|
482
|
+
|
|
483
|
+
- 依赖 CSS Grid、CSS 自定义属性 —— 现代浏览器均支持,不支持 IE11;
|
|
484
|
+
- `ResizeObserver` 用于高度过渡,缺失时自动降级(高度不做动画,功能不受影响);
|
|
485
|
+
- 复制代码在非 HTTPS 环境会回退到 `document.execCommand`。
|