diff --git a/frontend/components.d.ts b/frontend/components.d.ts index e69de29b..b9476931 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -0,0 +1,85 @@ +/* eslint-disable */ +// @ts-nocheck +// biome-ignore lint: disable +// oxlint-disable +// ------ +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 + +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + BulletChart: typeof import('./src/components/charts/BulletChart.vue')['default'] + ConnectionLines: typeof import('./src/components/strategy/ConnectionLines.vue')['default'] + DriverFactorBudget: typeof import('./src/components/DriverFactorBudget.vue')['default'] + ElAlert: typeof import('element-plus/es')['ElAlert'] + ElAside: typeof import('element-plus/es')['ElAside'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElContainer: typeof import('element-plus/es')['ElContainer'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElEmpty: typeof import('element-plus/es')['ElEmpty'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElHeader: typeof import('element-plus/es')['ElHeader'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElMain: typeof import('element-plus/es')['ElMain'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElProgress: typeof import('element-plus/es')['ElProgress'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] + ElSlider: typeof import('element-plus/es')['ElSlider'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElTimeline: typeof import('element-plus/es')['ElTimeline'] + ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + GaugeChart: typeof import('./src/components/charts/GaugeChart.vue')['default'] + GrowthQuality: typeof import('./src/components/GrowthQuality.vue')['default'] + KnowledgePanel: typeof import('./src/components/KnowledgePanel.vue')['default'] + KPIListView: typeof import('./src/components/KPIListView.vue')['default'] + MapCanvasDialogs: typeof import('./src/components/map-canvas/MapCanvasDialogs.vue')['default'] + MapCanvasToolbar: typeof import('./src/components/map-canvas/MapCanvasToolbar.vue')['default'] + MapNode: typeof import('./src/components/strategy-map/MapNode.vue')['default'] + MyDialog: typeof import('./src/components/MyDialog.vue')['default'] + NodeEditDialog: typeof import('./src/components/strategy-map/NodeEditDialog.vue')['default'] + ProfitBreakdown: typeof import('./src/components/charts/ProfitBreakdown.vue')['default'] + RiskCell: typeof import('./src/components/charts/RiskCell.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + StrategyLayer: typeof import('./src/components/strategy-map/StrategyLayer.vue')['default'] + WaterfallChart: typeof import('./src/components/charts/WaterfallChart.vue')['default'] + WelcomeGuide: typeof import('./src/components/WelcomeGuide.vue')['default'] + } + export interface GlobalDirectives { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/frontend/src/views/CMAKnowledge.vue b/frontend/src/views/CMAKnowledge.vue index 50374623..b263704e 100644 --- a/frontend/src/views/CMAKnowledge.vue +++ b/frontend/src/views/CMAKnowledge.vue @@ -251,6 +251,46 @@ const categories = ref([
PDCA是计划→执行→检查→改进的持续改进循环,由戴明提出,是CMA管理控制体系的核心框架。系统菜单已按PDCA四阶段分组。
+| 循环 | 频率 | 内容 | 系统对应 |
|---|---|---|---|
| 战略循环 | 年度/季度 | 战略地图更新·O调整 | 战略回顾会 |
| 执行循环 | 月度/周度 | KR追踪·KPI考核·改善 | 经营看板+差异分析 |
| 字母 | 含义 | 好KPI | 差KPI |
|---|---|---|---|
| S | 具体的 | 库存周转从45天降到30天 | 提升效率 |
| M | 可衡量的 | 渠补率从82.8%降到75% | 改善渠道关系 |
| A | 可实现的 | 管理费从91万降到85万 | 降到0(不现实) |
| R | 相关的 | 仓库KPI→库存周转率 | 仓库KPI→客户满意度 |
| T | 有时限的 | Q3前完成TOP5谈判 | 尽快完成 |
O(目标):我们要去哪里?——定性、有方向感
+KR(关键结果):怎么知道到了?——定量、可衡量
+| 维度 | OKR | KPI |
|---|---|---|
| 本质 | 设定目标+衡量结果 | 持续监控健康状况 |
| 频率 | 季度设定 | 持续追踪 |
| 场景 | 战略落地、创新突破 | 日常运营、绩效评估 |
CMA系统已内置OKR模板库(/okr-templates),每个O可预设3-5个KR。
`, + }, ], }, {