vue2-client 1.14.94 → 1.14.95

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 (139) hide show
  1. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +0 -1
  2. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +2 -4
  3. package/package.json +1 -1
  4. package/src/base-client/components/common/XTab/XTab.vue +40 -8
  5. package/src/base-client/components/common/XTable/XTable.vue +23 -21
  6. package/src/base-client/components/his/XList/XList.vue +35 -35
  7. package/src/base-client/components/his/XQuestionnaire/XQuestionnaireItem.vue +7 -6
  8. package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +1 -1
  9. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  10. package/src/base-client/components/his/XTreeRows/TreeNode.vue +100 -100
  11. package/src/base-client/components/his/XTreeRows/XTreeRows.vue +197 -197
  12. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  13. package/src/base-client/components/layout/XPageView/RenderRow.vue +30 -32
  14. package/src/base-client/components/layout/XPageView/XPageRowTemplate.vue +37 -0
  15. package/src/base-client/components/layout/XPageView/XPageView.vue +10 -9
  16. package/src/base-client/components/layout/XPageView/XTab/XTab.vue +96 -0
  17. package/src/base-client/components/layout/XPageView/XTab/index.js +3 -0
  18. package/src/base-client/components/layout/XPageView/componentTypes.js +22 -0
  19. package/src/base-client/components/layout/XPageView/index.js +1 -0
  20. package/src/base-client/components/layout/XPageView/index.md +19 -0
  21. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandle.vue +10 -4
  22. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +1 -1
  23. package/src/pages/XPageViewExample/index.vue +125 -47
  24. package/src/pages/addressSelect/addressDemo.vue +24 -24
  25. package/.history/public/his/editor/editor_20250606134713.html +0 -51
  26. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +0 -509
  27. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +0 -524
  28. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +0 -524
  29. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +0 -524
  30. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +0 -207
  31. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +0 -211
  32. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +0 -212
  33. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +0 -212
  34. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +0 -1320
  35. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +0 -1332
  36. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +0 -1331
  37. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +0 -1331
  38. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +0 -1331
  39. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +0 -1339
  40. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +0 -731
  41. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +0 -748
  42. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +0 -748
  43. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +0 -1071
  44. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +0 -1078
  45. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +0 -1077
  46. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +0 -1077
  47. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +0 -1077
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +0 -442
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +0 -442
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +0 -442
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +0 -475
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +0 -475
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +0 -475
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +0 -477
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +0 -477
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +0 -477
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +0 -473
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +0 -473
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +0 -473
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +0 -473
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +0 -473
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +0 -473
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +0 -473
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +0 -473
  65. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +0 -473
  66. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +0 -473
  67. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +0 -474
  68. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +0 -474
  69. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +0 -474
  70. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +0 -472
  71. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +0 -472
  72. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +0 -472
  73. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +0 -472
  74. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +0 -472
  75. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +0 -472
  76. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +0 -501
  77. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +0 -501
  78. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +0 -501
  79. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +0 -504
  80. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +0 -504
  81. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +0 -504
  82. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +0 -131
  83. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +0 -160
  84. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +0 -160
  85. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +0 -160
  86. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +0 -158
  87. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +0 -173
  88. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +0 -222
  89. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +0 -229
  90. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +0 -229
  91. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +0 -229
  92. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +0 -241
  93. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +0 -241
  94. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +0 -241
  95. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +0 -245
  96. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +0 -245
  97. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +0 -245
  98. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +0 -255
  99. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +0 -255
  100. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +0 -255
  101. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +0 -270
  102. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +0 -270
  103. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +0 -270
  104. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +0 -270
  105. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +0 -294
  106. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +0 -294
  107. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +0 -294
  108. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +0 -303
  109. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +0 -303
  110. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +0 -303
  111. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +0 -288
  112. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +0 -288
  113. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +0 -288
  114. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +0 -317
  115. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +0 -306
  116. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +0 -306
  117. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +0 -306
  118. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +0 -222
  119. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +0 -183
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +0 -183
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +0 -183
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +0 -206
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +0 -209
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +0 -242
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +0 -242
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +0 -242
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +0 -251
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +0 -251
  129. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +0 -250
  130. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +0 -250
  131. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +0 -250
  132. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +0 -250
  133. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +0 -238
  134. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +0 -238
  135. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +0 -238
  136. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +0 -36
  137. package/src/base-client/components/TreeList/TreeList.vue +0 -91
  138. package/src/base-client/components/TreeList/TreeNode.vue +0 -81
  139. package/src/base-client/components/common/XCardSet/XTiltle.vue +0 -191
@@ -18,29 +18,37 @@
18
18
  >
19
19
  <!-- 行类型,递归渲染子行 -->
20
20
  <template v-if="col.type === 'row'">
21
- <render-row
22
- v-for="(nestedRow, index) in col.children"
23
- :row="nestedRow"
24
- :key="`nested-row-${col.id}-${index}`"
25
- />
21
+ <x-page-row-template :template="col.template">
22
+ <render-row
23
+ v-for="(nestedRow, index) in col.children"
24
+ :row="nestedRow"
25
+ :key="`nested-row-${col.id}-${index}`"
26
+ />
27
+ </x-page-row-template>
26
28
  </template>
27
29
 
28
30
  <!-- 组件类型,渲染动态组件 -->
29
31
  <template v-else>
30
- <component
31
- :ref="(el) => registerComponentRef(col.id, el)"
32
- :is="resolveComponentType(col.type)"
33
- v-bind="col.props"
34
- >
35
- <!-- 如果组件有子组件,递归渲染子行 -->
36
- <template v-if="col.children?.length">
37
- <render-row
38
- v-for="(nestedRow, index) in col.children"
39
- :row="nestedRow"
40
- :key="`comp-child-${col.id}-${index}`"
41
- />
42
- </template>
43
- </component>
32
+ <x-page-row-template :template="col.template">
33
+ <component
34
+ :ref="(el) => registerComponentRef(col.id, el)"
35
+ :is="resolveComponentType(col.type)"
36
+ v-bind="col.props"
37
+ >
38
+ <!-- 如果组件有子组件,递归渲染子行 -->
39
+ <template v-if="col.children && col.children.length">
40
+ <!-- 处理纯文本节点 -->
41
+ <template v-for="(nestedItem, index) in col.children">
42
+ <template v-if="nestedItem.text">{{ nestedItem.text }}</template>
43
+ <render-row
44
+ v-else
45
+ :row="nestedItem"
46
+ :key="`comp-child-${col.id}-${index}`"
47
+ />
48
+ </template>
49
+ </template>
50
+ </component>
51
+ </x-page-row-template>
44
52
  </template>
45
53
  </a-col>
46
54
  </a-row>
@@ -48,17 +56,13 @@
48
56
 
49
57
  <script setup>
50
58
  import { defineProps, inject, computed } from 'vue'
59
+ import XPageRowTemplate from './XPageRowTemplate.vue'
60
+
61
+ import { resolveComponentType } from './componentTypes'
51
62
 
52
63
  // 注入注册组件方法
53
64
  const registerComponent = inject('registerComponent')
54
65
 
55
- // 支持的组件类型映射
56
- const components = {
57
- XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable'),
58
- XAddNativeForm: () => import('@vue2-client/base-client/components/common/XAddNativeForm'),
59
- XErrorView: () => import('@vue2-client/base-client/components/layout/XPageView/XErrorView')
60
- }
61
-
62
66
  // 定义属性
63
67
  const props = defineProps({
64
68
  row: {
@@ -72,12 +76,6 @@ const getColumns = computed(() => {
72
76
  return props.row.type === 'row' ? props.row.children : [props.row]
73
77
  })
74
78
 
75
- // 解析组件类型
76
- const resolveComponentType = (type) => {
77
- if (!type) return components.XErrorView
78
- return components[type] || components.XErrorView
79
- }
80
-
81
79
  // 注册组件引用
82
80
  const registerComponentRef = (id, el) => {
83
81
  if (el) {
@@ -0,0 +1,37 @@
1
+ <template>
2
+ <div>
3
+ <template v-if="finalTemplate === 'card'">
4
+ <a-card :bordered="false" class="x-page-row-template-card">
5
+ <slot></slot>
6
+ </a-card>
7
+ </template>
8
+ <template v-else>
9
+ <div class="simple-template-card">
10
+ <slot></slot>
11
+ </div>
12
+ </template>
13
+ </div>
14
+ </template>
15
+
16
+ <script setup>
17
+ import { computed } from 'vue'
18
+
19
+ // 定义组件属性
20
+ const props = defineProps({
21
+ template: {
22
+ type: String,
23
+ default: 'card'
24
+ }
25
+ })
26
+
27
+ // 计算最终使用的模板类型
28
+ const finalTemplate = computed(() => {
29
+ return props.template || 'card'
30
+ })
31
+ </script>
32
+
33
+ <style scoped lang="less">
34
+ .x-page-row-template-card {
35
+ border-radius: 8px;
36
+ }
37
+ </style>
@@ -27,7 +27,8 @@ const dataContext = reactive({
27
27
  comps: componentRefMap,
28
28
  func: {
29
29
  getConfigByName
30
- }
30
+ },
31
+ data: {}
31
32
  })
32
33
 
33
34
  /**
@@ -78,17 +79,16 @@ const registerComponent = (name, vm) => {
78
79
  registerComponentTotal.value++
79
80
  console.debug(`总组件数量:${componentTotal.value},已注册数量:${registerComponentTotal.value}`)
80
81
 
81
- // 初始化页面
82
- if (layout.value?.onMounted && registerComponentTotal.value === 1) {
83
- initPage()
84
- }
85
-
86
82
  // 所有组件都已注册完成
87
83
  if (registerComponentTotal.value >= componentTotal.value) {
88
84
  registerEvents(layout.value.children)
85
+ // 初始化页面
86
+ initPage()
89
87
  }
90
88
  }
91
89
  provide('registerComponent', registerComponent)
90
+ // 提供数据上下文给子组件
91
+ provide('dataContext', dataContext)
92
92
 
93
93
  /**
94
94
  * 初始化页面
@@ -96,6 +96,7 @@ provide('registerComponent', registerComponent)
96
96
  const initPage = () => {
97
97
  if (!layout.value?.onMounted) return
98
98
 
99
+ console.info('开始初始化页面')
99
100
  try {
100
101
  // 使用 Function 构造函数替代 eval
101
102
  // eslint-disable-next-line no-new-func
@@ -113,8 +114,8 @@ const setComponentTotal = (children) => {
113
114
  if (!children?.length) return
114
115
 
115
116
  children.forEach((child) => {
116
- // 如果不是row类型,追加组件数量
117
- if (child.type !== 'row') {
117
+ // 如果不是row和text类型,追加组件数量
118
+ if (child.type !== 'row' && child.type !== 'text') {
118
119
  componentTotal.value++
119
120
  }
120
121
 
@@ -172,7 +173,7 @@ defineExpose({ init })
172
173
  class="liuli-page">
173
174
  <template v-if="loaded === loadingStatus.LOADED">
174
175
  <template v-if="layout.children?.length">
175
- <a-col v-for="row in layout.children" :key="`page-col-${row.id}`">
176
+ <a-col v-for="row in layout.children" :key="`page-col-${row.id}`" :span="24">
176
177
  <render-row :row="row"/>
177
178
  </a-col>
178
179
  </template>
@@ -0,0 +1,96 @@
1
+ <template>
2
+ <a-card :bordered="false" :body-style="bodyStyle">
3
+ <a-tabs
4
+ :tabBarGutter="tabBarGutter"
5
+ :activeKey="activeKey"
6
+ @change="tabPaneChange"
7
+ :hideAdd="true"
8
+ :tabBarStyle="{ display: showTabBar ? 'block' : 'none' }"
9
+ >
10
+ <slot name="extraBeforeTabs"></slot>
11
+ <a-tab-pane
12
+ :forceRender="true"
13
+ v-for="(tab, index) in data"
14
+ :key="index"
15
+ :tab="tab.title"
16
+ >
17
+ <component
18
+ :is="resolveComponentType(tab.type)"
19
+ :key="`xTabPaneComp${index}`"
20
+ :ref="`tab_comp_${index}`"
21
+ v-bind="tab.props || {}"
22
+ />
23
+ </a-tab-pane>
24
+ </a-tabs>
25
+ </a-card>
26
+ </template>
27
+
28
+ <script setup>
29
+ import { ref, onMounted } from 'vue'
30
+ import { resolveComponentType } from '../componentTypes'
31
+
32
+ const props = defineProps({
33
+ // 标签页数据
34
+ data: {
35
+ type: Array,
36
+ required: true
37
+ },
38
+ // 是否显示标签栏
39
+ showTabBar: {
40
+ type: Boolean,
41
+ default: true
42
+ },
43
+ // 标签页切换时的回调函数
44
+ onChange: {
45
+ type: [String, Function],
46
+ default: null
47
+ },
48
+ // Tab间距
49
+ tabBarGutter: {
50
+ type: Number,
51
+ default: 10
52
+ },
53
+ // 卡片样式
54
+ bodyStyle: {
55
+ type: Object,
56
+ default: () => ({})
57
+ },
58
+ // 默认激活的标签页
59
+ defaultActiveKey: {
60
+ type: [String, Number],
61
+ default: 0
62
+ }
63
+ })
64
+
65
+ // 激活的标签页
66
+ const activeKey = ref(0)
67
+
68
+ // 切换标签页
69
+ const tabPaneChange = (newKey) => {
70
+ if (activeKey.value === newKey) return
71
+
72
+ const oldKey = activeKey.value
73
+ activeKey.value = newKey
74
+
75
+ // 触发标签页切换事件
76
+ if (props.onChange) {
77
+ try {
78
+ if (props.onChange instanceof Function) {
79
+ props.onChange(oldKey, newKey, props.data[oldKey], props.data[newKey])
80
+ } else {
81
+ // 创建一个安全的函数执行环境
82
+ // eslint-disable-next-line no-new-func
83
+ const onChange = new Function('oldKey', 'newKey', 'oldTab', 'newTab', `return (${props.onChange})(oldKey, newKey, oldTab, newTab)`)
84
+ onChange(oldKey, newKey, props.data[oldKey], props.data[newKey])
85
+ }
86
+ } catch (error) {
87
+ console.error('执行标签页切换回调错误:', error)
88
+ }
89
+ }
90
+ }
91
+
92
+ // 生命周期
93
+ onMounted(() => {
94
+ activeKey.value = props.defaultActiveKey
95
+ })
96
+ </script>
@@ -0,0 +1,3 @@
1
+ import XTab from './XTab.vue'
2
+
3
+ export default XTab
@@ -0,0 +1,22 @@
1
+ // 支持的组件类型映射
2
+ export const components = {
3
+ XTab: () => import('@vue2-client/base-client/components/layout/XPageView/XTab'),
4
+ XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable'),
5
+ XAddNativeForm: () => import('@vue2-client/base-client/components/common/XAddNativeForm'),
6
+ XReportGrid: () => import('@vue2-client/base-client/components/common/XReportGrid/XReport.vue'),
7
+ XErrorView: () => import('@vue2-client/base-client/components/layout/XPageView/XErrorView'),
8
+ // 全局组件不需要导入,直接返回null,让Vue使用全局注册的组件
9
+ }
10
+
11
+ // 组件类型解析函数
12
+ export const resolveComponentType = (type) => {
13
+ if (!type) return components.XErrorView
14
+
15
+ // 如果是Ant Design Vue组件(以'a-'开头),直接返回原名称
16
+ if (type.startsWith('a-')) {
17
+ return type
18
+ }
19
+
20
+ // 否则从已注册的组件集合中查找
21
+ return components[type] || components.XErrorView
22
+ }
@@ -1 +1,2 @@
1
1
  export { default } from './XPageView'
2
+ export { default as XPageRowTemplate } from './XPageRowTemplate'
@@ -59,6 +59,7 @@ const initView = () => {
59
59
  "type": "row",
60
60
  "id": "row1",
61
61
  "gutter": 16,
62
+ "template": "card",
62
63
  "children": [
63
64
  {
64
65
  "type": "XFormTable",
@@ -75,3 +76,21 @@ const initView = () => {
75
76
  "onMounted": "function(data) { console.log('页面已加载') }"
76
77
  }
77
78
  ```
79
+
80
+ ### row类型的属性
81
+
82
+ | 属性名 | 说明 | 类型 | 可选值 | 默认值 |
83
+ | --- | --- | --- | --- | --- |
84
+ | template | row的渲染模板类型 | String | card/none | card |
85
+
86
+ ## 内部组件
87
+
88
+ ### XPageRowTemplate
89
+
90
+ 用于根据template属性决定是否使用卡片包装内容的组件。
91
+
92
+ #### 属性
93
+
94
+ | 属性名 | 说明 | 类型 | 可选值 | 默认值 |
95
+ | --- | --- | --- | --- | --- |
96
+ | template | 渲染模板类型 | String | card/none | card |
@@ -38,7 +38,13 @@
38
38
  <a-card :bordered="false" :loading="loadingHistory" :body-style="{ paddingTop: 0 }">
39
39
  <!-- 当前步骤历史记录 -->
40
40
  <template v-if="showTab">
41
- <x-tab :compProp="{ buttonState: { add: false, edit: false, delete: false, import: false }}" :local-config="tabDesigner" :body-style="{ padding: 0 }" :tabBarGutter="24" default-active-key="workFlowTab">
41
+ <x-tab
42
+ :compProp="{ buttonState: { add: false, edit: false, delete: false, import: false }}"
43
+ :local-config="tabDesigner"
44
+ :body-style="{ padding: 0 }"
45
+ :tabBarGutter="24"
46
+ :extra-data="{ workflowId: workflowId }"
47
+ default-active-key="workFlowTab">
42
48
  <a-tab-pane
43
49
  :forceRender="true"
44
50
  v-if="formCompletedDataPreview"
@@ -64,7 +70,7 @@
64
70
  <a-tab-pane key="1" tab="业务操作">
65
71
  <a-card :bordered="false" :loading="loadingHistory" :body-style="{ paddingTop: 0 }">
66
72
  <template v-if="showTab">
67
- <x-tab :local-config="tabDesigner" :body-style="{ padding: 0 }" :tabBarGutter="24" default-active-key="workFlowTab">
73
+ <x-tab :local-config="tabDesigner" :extra-data="{ workflowId:workflowId }" :body-style="{ padding: 0 }" :tabBarGutter="24" default-active-key="workFlowTab">
68
74
  <a-tab-pane
69
75
  :forceRender="true"
70
76
  v-if="showForm"
@@ -257,7 +263,7 @@ export default {
257
263
  ...mapState('account', { currUser: 'user' }),
258
264
  canSubmit () {
259
265
  // 对于超级管理员直接认为可以提交
260
- if (this.currUser.ename === '1') {
266
+ if (this.currUser.rolesnames.indexOf('超级管理员') > -1) {
261
267
  return true
262
268
  }
263
269
  // currentStepId可能还没初始化,此处拿不到先返回false
@@ -413,7 +419,7 @@ export default {
413
419
  },
414
420
  props: {
415
421
  workflowId: {
416
- type: String,
422
+ type: [String, Number],
417
423
  required: true
418
424
  },
419
425
  visible: {
@@ -45,7 +45,7 @@ export default {
45
45
  name: 'WorkFlowTimeline',
46
46
  props: {
47
47
  workflowId: {
48
- type: String,
48
+ type: [String, Number],
49
49
  required: true
50
50
  },
51
51
  currentStepId: {
@@ -6,59 +6,137 @@ const xPageViewRef = ref(null)
6
6
 
7
7
  onMounted(() => {
8
8
  xPageViewRef.value.init({
9
- configValue: `{
10
- "type": "page",
11
- "onMounted": "function (data) {}",
12
- "gutter": [16, 16],
13
- "children": [
9
+ configValue: {
10
+ type: 'page',
11
+ onMounted: function (curr) {
12
+ console.warn(curr.data)
13
+ // 设置Tab配置数据
14
+ curr.data.tabData = {
15
+ index: 0,
16
+ items: [
17
+ // 第一组配置
18
+ {
19
+ tabConfigs: [
20
+ { title: '表单列表', type: 'XFormTable', props: { serviceName: 'af-system', queryParamsName: 'crud_dictionary_manage' } },
21
+ { title: '新增表单', type: 'XAddNativeForm', props: { serviceName: 'af-system', configName: 'crud_dictionary_manage_add_form' } }
22
+ ]
23
+ },
24
+ // 第二组配置
25
+ {
26
+ tabConfigs: [
27
+ { title: '数据列表', type: 'XFormTable', props: { serviceName: 'af-system', queryParamsName: 'crud_dictionary_manage' } },
28
+ { title: '编辑表单', type: 'XAddNativeForm', props: { serviceName: 'af-system', configName: 'crud_dictionary_manage_add_form' } },
29
+ { title: '查看记录', type: 'XFormTable', props: { serviceName: 'af-system', queryParamsName: 'crud_dictionary_manage' } }
30
+ ]
31
+ }
32
+ ]
33
+ }
34
+ console.log('页面初始化完成,全局数据上下文已创建')
35
+ },
36
+ gutter: [16, 16],
37
+ children: [
38
+ {
39
+ id: 'controlRow',
40
+ type: 'row',
41
+ gutter: 16,
42
+ template: 'card',
43
+ children: [
44
+ {
45
+ id: 'buttonContainer',
46
+ span: '24',
47
+ type: 'row',
48
+ gutter: 8,
49
+ children: [
50
+ {
51
+ id: 'reloadButton',
52
+ span: '6',
53
+ type: 'a-button',
54
+ props: {
55
+ type: 'primary',
56
+ value: '切换Tab配置'
57
+ },
58
+ children: [
59
+ {
60
+ type: 'text',
61
+ text: '切换Tab配置'
62
+ }
63
+ ],
64
+ event: {
65
+ click: function (e, context) {
66
+ // 切换Tab配置
67
+ const tabData = context.data.tabData
68
+ tabData.index = tabData.index === 0 ? 1 : 0
69
+
70
+ // 获取当前配置和Tab组件
71
+ const currentConfig = tabData.items[tabData.index]
72
+ const tabComponent = context.comps.pageTab
73
+
74
+ if (tabComponent) {
75
+ // 更新Tab组件配置
76
+ tabComponent.$props.data = currentConfig.tabConfigs
77
+ console.log('Tab配置已更新,当前配置索引:', tabData.index)
78
+
79
+ // 更新状态文本
80
+ const statusText = context.comps.statusText
81
+ if (statusText && statusText.$el) {
82
+ statusText.message = `点击按钮切换不同的Tab配置,当前是第${tabData.index + 1}组配置`
83
+ }
84
+ }
85
+ }
86
+ }
87
+ },
88
+ {
89
+ id: 'statusText',
90
+ span: '18',
91
+ type: 'a-alert',
92
+ props: {
93
+ message: '点击按钮切换不同的Tab配置,当前是第1组配置',
94
+ type: 'success'
95
+ }
96
+ }
97
+ ]
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ id: 'row2',
103
+ type: 'row',
104
+ gutter: 16,
105
+ template: 'none',
106
+ children: [
14
107
  {
15
- "id": "row1",
16
- "type": "row",
17
- "gutter": 16,
18
- "children": [
108
+ id: 'pageTab',
109
+ span: '24',
110
+ type: 'XTab',
111
+ props: {
112
+ showTabBar: true,
113
+ data: [
19
114
  {
20
- "id": "xFormTable2",
21
- "span": "12",
22
- "type": "XFormTable",
23
- "event": {
24
- },
25
- "props": {
26
- "serviceName": "af-system",
27
- "queryParamsName": "crud_dictionary_manage"
28
- },
29
- "children": [
30
- ]
115
+ title: '表单列表',
116
+ type: 'XFormTable',
117
+ props: {
118
+ serviceName: 'af-system',
119
+ queryParamsName: 'crud_dictionary_manage'
120
+ }
31
121
  },
32
122
  {
33
- "id": "xFormTable3",
34
- "span": "12",
35
- "type": "XFormTable",
36
- "event": {
37
- },
38
- "props": {
39
- "serviceName": "af-system",
40
- "queryParamsName": "crud_dictionary_manage"
41
- },
42
- "children": [
43
- ]
123
+ title: '新增表单',
124
+ type: 'XAddNativeForm',
125
+ props: {
126
+ serviceName: 'af-system',
127
+ configName: 'crud_dictionary_manage_add_form'
128
+ }
44
129
  }
45
- ]
46
- },
47
- {
48
- "id": "xFormTable",
49
- "type": "XFormTable",
50
- "event": {
51
- },
52
- "props": {
53
- "serviceName": "af-system",
54
- "queryParamsName": "crud_dictionary_manage"
55
- },
56
- "children": [
57
- ]
130
+ ],
131
+ onChange: function (oldKey, newKey, oldTab, newTab) {
132
+ console.log('Tab changed:', oldKey, newKey)
133
+ }
134
+ }
58
135
  }
59
- ]
60
- }`,
61
- // configName: 'templateManageConfig',
136
+ ]
137
+ }
138
+ ]
139
+ },
62
140
  serviceName: 'af-his'
63
141
  })
64
142
  })
@@ -1,24 +1,24 @@
1
- <template>
2
- <!-- 测试界面——测试地址选择新增组件-->
3
- <div>
4
- <a-button @click="open">打开选择地址弹窗</a-button>
5
- <address-select :addressShow="showDialog"/>
6
- </div>
7
- </template>
8
-
9
- <script>
10
- import AddressSelect from '@/pages/addressSelect'
11
-
12
- export default {
13
- components: { AddressSelect },
14
- data: () => ({
15
- showDialog: false
16
- }),
17
- methods: {
18
- open () {
19
- console.log('打开选择地址弹窗')
20
- this.showDialog = true
21
- }
22
- }
23
- }
24
- </script>
1
+ <template>
2
+ <!-- 测试界面——测试地址选择新增组件-->
3
+ <div>
4
+ <a-button @click="open">打开选择地址弹窗</a-button>
5
+ <address-select :addressShow="showDialog"/>
6
+ </div>
7
+ </template>
8
+
9
+ <script>
10
+ import AddressSelect from '@/pages/addressSelect'
11
+
12
+ export default {
13
+ components: { AddressSelect },
14
+ data: () => ({
15
+ showDialog: false
16
+ }),
17
+ methods: {
18
+ open () {
19
+ console.log('打开选择地址弹窗')
20
+ this.showDialog = true
21
+ }
22
+ }
23
+ }
24
+ </script>