xt-element-ui 2.2.1 → 2.2.3

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/README.md +1 -1
  2. package/docs/README.md +10 -3
  3. package/docs/components/base/xt-button.md +11 -4
  4. package/docs/components/base/xt-card.md +5 -11
  5. package/docs/components/base/xt-config-provider.md +2 -0
  6. package/docs/components/base/xt-date-picker.md +7 -26
  7. package/docs/components/base/xt-flow.md +404 -0
  8. package/docs/components/base/xt-grid-box.md +34 -34
  9. package/docs/components/base/xt-multi.md +5 -5
  10. package/docs/components/base/xt-tabs.md +51 -6
  11. package/docs/components/base/xt-text.md +20 -3
  12. package/docs/components/business/xt-chart.md +1 -0
  13. package/lib/css/1.87a493be.css +1 -0
  14. package/lib/index.common.1.js +294 -0
  15. package/lib/index.common.2.js +141 -0
  16. package/lib/index.common.js +12125 -118823
  17. package/lib/index.css +1 -1
  18. package/lib/index.umd.1.js +294 -0
  19. package/lib/index.umd.2.js +141 -0
  20. package/lib/index.umd.js +12131 -118828
  21. package/lib/index.umd.min.1.js +1 -0
  22. package/lib/index.umd.min.2.js +1 -0
  23. package/lib/index.umd.min.js +1 -1
  24. package/lib/xt-badge/xt-badge.common.js +1 -1
  25. package/lib/xt-badge/xt-badge.css +1 -1
  26. package/lib/xt-badge/xt-badge.umd.js +1 -1
  27. package/lib/xt-button/xt-button.common.js +13 -8
  28. package/lib/xt-button/xt-button.css +1 -1
  29. package/lib/xt-button/xt-button.umd.js +13 -8
  30. package/lib/xt-button/xt-button.umd.min.js +1 -1
  31. package/lib/xt-card/xt-card.common.js +5 -5
  32. package/lib/xt-card/xt-card.umd.js +5 -5
  33. package/lib/xt-card/xt-card.umd.min.js +1 -1
  34. package/lib/xt-card-item/xt-card-item.common.js +4 -4
  35. package/lib/xt-card-item/xt-card-item.umd.js +4 -4
  36. package/lib/xt-card-item/xt-card-item.umd.min.js +1 -1
  37. package/lib/xt-chart/xt-chart.common.js +1969 -108924
  38. package/lib/xt-chart/xt-chart.css +1 -1
  39. package/lib/xt-chart/xt-chart.umd.js +1975 -108929
  40. package/lib/xt-chart/xt-chart.umd.min.js +1 -1
  41. package/lib/xt-config-provider/xt-config-provider.common.js +561 -107504
  42. package/lib/xt-config-provider/xt-config-provider.css +1 -1
  43. package/lib/xt-config-provider/xt-config-provider.umd.js +567 -107509
  44. package/lib/xt-config-provider/xt-config-provider.umd.min.js +1 -1
  45. package/lib/xt-date-picker/css/1.87a493be.css +1 -0
  46. package/lib/xt-date-picker/xt-date-picker.common.1.js +294 -0
  47. package/lib/xt-date-picker/xt-date-picker.common.2.js +141 -0
  48. package/lib/xt-date-picker/xt-date-picker.common.js +201 -332
  49. package/lib/xt-date-picker/xt-date-picker.css +1 -1
  50. package/lib/xt-date-picker/xt-date-picker.umd.1.js +294 -0
  51. package/lib/xt-date-picker/xt-date-picker.umd.2.js +141 -0
  52. package/lib/xt-date-picker/xt-date-picker.umd.js +201 -332
  53. package/lib/xt-date-picker/xt-date-picker.umd.min.1.js +1 -0
  54. package/lib/xt-date-picker/xt-date-picker.umd.min.2.js +1 -0
  55. package/lib/xt-date-picker/xt-date-picker.umd.min.js +1 -1
  56. package/lib/xt-flex-box/xt-flex-box.common.js +1 -1
  57. package/lib/xt-flex-box/xt-flex-box.umd.js +1 -1
  58. package/lib/xt-flow/demo.html +10 -0
  59. package/lib/xt-flow/index.js +1 -0
  60. package/lib/xt-flow/xt-flow.common.js +638 -0
  61. package/lib/xt-flow/xt-flow.css +1 -0
  62. package/lib/xt-flow/xt-flow.umd.js +648 -0
  63. package/lib/xt-flow/xt-flow.umd.min.js +1 -0
  64. package/lib/xt-form-schema/xt-form-schema.common.js +1 -1
  65. package/lib/xt-form-schema/xt-form-schema.umd.js +1 -1
  66. package/lib/xt-grid-box/xt-grid-box.common.js +1 -1
  67. package/lib/xt-grid-box/xt-grid-box.umd.js +1 -1
  68. package/lib/xt-grid-item/xt-grid-item.common.js +1 -1
  69. package/lib/xt-grid-item/xt-grid-item.umd.js +1 -1
  70. package/lib/xt-icon/xt-icon.common.js +1 -1
  71. package/lib/xt-icon/xt-icon.umd.js +1 -1
  72. package/lib/xt-input/xt-input.common.js +1 -1
  73. package/lib/xt-input/xt-input.umd.js +1 -1
  74. package/lib/xt-list/xt-list.common.js +1 -1
  75. package/lib/xt-list/xt-list.umd.js +1 -1
  76. package/lib/xt-map/xt-map.common.js +1 -1
  77. package/lib/xt-map/xt-map.umd.js +1 -1
  78. package/lib/xt-map-provider/xt-map-provider.common.js +1 -1
  79. package/lib/xt-map-provider/xt-map-provider.umd.js +1 -1
  80. package/lib/xt-page/xt-page.common.js +1 -1
  81. package/lib/xt-page/xt-page.umd.js +1 -1
  82. package/lib/xt-progress/xt-progress.common.js +1 -1
  83. package/lib/xt-progress/xt-progress.umd.js +1 -1
  84. package/lib/xt-scroll-arrow/xt-scroll-arrow.common.js +1 -1
  85. package/lib/xt-scroll-arrow/xt-scroll-arrow.umd.js +1 -1
  86. package/lib/xt-select-tree/xt-select-tree.common.js +1 -1
  87. package/lib/xt-select-tree/xt-select-tree.umd.js +1 -1
  88. package/lib/xt-step-price/xt-step-price.common.js +2 -2
  89. package/lib/xt-step-price/xt-step-price.umd.js +2 -2
  90. package/lib/xt-step-price-item/xt-step-price-item.common.js +1 -1
  91. package/lib/xt-step-price-item/xt-step-price-item.umd.js +1 -1
  92. package/lib/xt-tab-pane/xt-tab-pane.common.js +1 -1
  93. package/lib/xt-tab-pane/xt-tab-pane.umd.js +1 -1
  94. package/lib/xt-table/xt-table.common.js +2 -2
  95. package/lib/xt-table/xt-table.umd.js +2 -2
  96. package/lib/xt-tabs/xt-tabs.common.js +5 -27
  97. package/lib/xt-tabs/xt-tabs.css +1 -1
  98. package/lib/xt-tabs/xt-tabs.umd.js +5 -27
  99. package/lib/xt-tabs/xt-tabs.umd.min.js +1 -1
  100. package/lib/xt-text/xt-text.common.js +7 -4
  101. package/lib/xt-text/xt-text.css +1 -1
  102. package/lib/xt-text/xt-text.umd.js +7 -4
  103. package/lib/xt-text/xt-text.umd.min.js +1 -1
  104. package/lib/xt-time/xt-time.common.js +1 -1
  105. package/lib/xt-time/xt-time.umd.js +1 -1
  106. package/lib/xt-transfer-tree/xt-transfer-tree.common.js +1 -1
  107. package/lib/xt-transfer-tree/xt-transfer-tree.umd.js +1 -1
  108. package/lib/xt-upload/xt-upload.common.js +11 -11
  109. package/lib/xt-upload/xt-upload.umd.js +12 -12
  110. package/lib/xt-upload/xt-upload.umd.min.js +1 -1
  111. package/package.json +5 -6
  112. package/src/components/index.scss +7 -1
  113. package/src/components/xt-badge/style/index.scss +6 -6
  114. package/src/components/xt-button/index.vue +11 -6
  115. package/src/components/xt-button/style/index.scss +7 -5
  116. package/src/components/xt-card/index.vue +3 -3
  117. package/src/components/xt-card-item/index.vue +2 -2
  118. package/src/components/xt-chart/XtMulti.vue +8 -18
  119. package/src/components/xt-chart/XtPie.vue +1 -0
  120. package/src/components/xt-chart/utils.js +84 -50
  121. package/src/components/xt-config-provider/index.vue +56 -54
  122. package/src/components/xt-date-picker/component/Picker.vue +2 -46
  123. package/src/components/xt-date-picker/component/RangeDate.vue +4 -4
  124. package/src/components/xt-date-picker/index.js +1 -0
  125. package/src/components/xt-date-picker/index.vue +3 -23
  126. package/src/components/xt-date-picker/style/index.scss +62 -0
  127. package/src/components/xt-flow/flowable-parser.js +244 -0
  128. package/src/components/xt-flow/index.js +8 -0
  129. package/src/components/xt-flow/index.vue +226 -0
  130. package/src/components/xt-flow/style/index.scss +359 -0
  131. package/src/components/xt-input/style/index.scss +1 -1
  132. package/src/components/xt-tabs/index.vue +3 -174
  133. package/src/components/xt-tabs/style/index.scss +131 -121
  134. package/src/components/xt-text/index.vue +5 -2
  135. package/src/components/xt-text/style/index.scss +6 -6
  136. package/src/index.js +8 -13
  137. package/src/styles/css-variables.scss +73 -1
  138. package/src/styles/theme/index.scss +0 -1
  139. package/src/styles/theme/dark-variables.scss +0 -0
@@ -0,0 +1,648 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define([], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["xt-flow"] = factory();
8
+ else
9
+ root["xt-flow"] = factory();
10
+ })((typeof self !== 'undefined' ? self : this), function() {
11
+ return /******/ (function(modules) { // webpackBootstrap
12
+ /******/ // The module cache
13
+ /******/ var installedModules = {};
14
+ /******/
15
+ /******/ // The require function
16
+ /******/ function __webpack_require__(moduleId) {
17
+ /******/
18
+ /******/ // Check if module is in cache
19
+ /******/ if(installedModules[moduleId]) {
20
+ /******/ return installedModules[moduleId].exports;
21
+ /******/ }
22
+ /******/ // Create a new module (and put it into the cache)
23
+ /******/ var module = installedModules[moduleId] = {
24
+ /******/ i: moduleId,
25
+ /******/ l: false,
26
+ /******/ exports: {}
27
+ /******/ };
28
+ /******/
29
+ /******/ // Execute the module function
30
+ /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
+ /******/
32
+ /******/ // Flag the module as loaded
33
+ /******/ module.l = true;
34
+ /******/
35
+ /******/ // Return the exports of the module
36
+ /******/ return module.exports;
37
+ /******/ }
38
+ /******/
39
+ /******/
40
+ /******/ // expose the modules object (__webpack_modules__)
41
+ /******/ __webpack_require__.m = modules;
42
+ /******/
43
+ /******/ // expose the module cache
44
+ /******/ __webpack_require__.c = installedModules;
45
+ /******/
46
+ /******/ // define getter function for harmony exports
47
+ /******/ __webpack_require__.d = function(exports, name, getter) {
48
+ /******/ if(!__webpack_require__.o(exports, name)) {
49
+ /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50
+ /******/ }
51
+ /******/ };
52
+ /******/
53
+ /******/ // define __esModule on exports
54
+ /******/ __webpack_require__.r = function(exports) {
55
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57
+ /******/ }
58
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
59
+ /******/ };
60
+ /******/
61
+ /******/ // create a fake namespace object
62
+ /******/ // mode & 1: value is a module id, require it
63
+ /******/ // mode & 2: merge all properties of value into the ns
64
+ /******/ // mode & 4: return value when already ns object
65
+ /******/ // mode & 8|1: behave like require
66
+ /******/ __webpack_require__.t = function(value, mode) {
67
+ /******/ if(mode & 1) value = __webpack_require__(value);
68
+ /******/ if(mode & 8) return value;
69
+ /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70
+ /******/ var ns = Object.create(null);
71
+ /******/ __webpack_require__.r(ns);
72
+ /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73
+ /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74
+ /******/ return ns;
75
+ /******/ };
76
+ /******/
77
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
78
+ /******/ __webpack_require__.n = function(module) {
79
+ /******/ var getter = module && module.__esModule ?
80
+ /******/ function getDefault() { return module['default']; } :
81
+ /******/ function getModuleExports() { return module; };
82
+ /******/ __webpack_require__.d(getter, 'a', getter);
83
+ /******/ return getter;
84
+ /******/ };
85
+ /******/
86
+ /******/ // Object.prototype.hasOwnProperty.call
87
+ /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88
+ /******/
89
+ /******/ // __webpack_public_path__
90
+ /******/ __webpack_require__.p = "";
91
+ /******/
92
+ /******/
93
+ /******/ // Load entry module and return exports
94
+ /******/ return __webpack_require__(__webpack_require__.s = "fb15");
95
+ /******/ })
96
+ /************************************************************************/
97
+ /******/ ({
98
+
99
+ /***/ "fb15":
100
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
101
+
102
+ "use strict";
103
+ // ESM COMPAT FLAG
104
+ __webpack_require__.r(__webpack_exports__);
105
+
106
+ // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
107
+ // This file is imported into lib/wc client bundles.
108
+
109
+ if (typeof window !== 'undefined') {
110
+ var currentScript = window.document.currentScript
111
+ if (false) { var getCurrentScript; }
112
+
113
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
114
+ if (src) {
115
+ __webpack_require__.p = src[1] // eslint-disable-line
116
+ }
117
+ }
118
+
119
+ // Indicate to webpack that this file can be concatenated
120
+ /* harmony default export */ var setPublicPath = (null);
121
+
122
+ // EXTERNAL MODULE: ./src/components/xt-flow/style/index.scss
123
+ var style = __webpack_require__("fdbd");
124
+
125
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"d8e97dbc-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-flow/index.vue?vue&type=template&id=05a25f5f
126
+ var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"xt-flow",class:_vm.rootClasses},[_vm._l((_vm.displayNodes),function(node,index){return _c('div',{key:node.id || index,staticClass:"xt-flow__node",class:_vm.nodeClasses(node, index)},[_c('div',{staticClass:"xt-flow__timeline"},[_c('div',{staticClass:"xt-flow__icon",class:`xt-flow__icon--${node.status}`},[_vm._t("node-avatar",function(){return [_c('span',{staticClass:"xt-flow__icon-dot"})]},{"node":node,"index":index})],2),(index < _vm.displayNodes.length - 1)?_c('div',{staticClass:"xt-flow__line",class:[
127
+ `xt-flow__line--${node.status}`,
128
+ { 'xt-flow__line--dashed': node.status === 'rejected' }
129
+ ]}):_vm._e()]),_c('div',{staticClass:"xt-flow__body"},[_c('div',{staticClass:"xt-flow__header"},[_c('span',{staticClass:"xt-flow__title"},[_vm._t("node",function(){return [_vm._v(" "+_vm._s(node.name || node.title)+" ")]},{"node":node,"index":index})],2),_c('span',{staticClass:"xt-flow__status",class:`xt-flow__status--${node.status}`},[_vm._v(" "+_vm._s(_vm.statusText(node.status))+" ")])]),_c('div',{staticClass:"xt-flow__meta"},[(node.assignee)?[_c('span',{staticClass:"xt-flow__assignee"},[_vm._t("assignee",function(){return [_c('span',{staticClass:"xt-flow__assignee-icon"},[_vm._v("👤")]),_vm._v(" "+_vm._s(node.assignee)+" ")]},{"node":node,"index":index})],2)]:_vm._e(),(node.createTime || node.endTime)?[_c('span',{staticClass:"xt-flow__time"},[_vm._v(" "+_vm._s(_vm.formatTime(node))+" ")])]:_vm._e(),(node.duration)?[_c('span',{staticClass:"xt-flow__duration"},[_vm._v(" "+_vm._s(node.duration)+" ")])]:_vm._e()],2),(node.comment || node.description)?_c('div',{staticClass:"xt-flow__desc"},[_vm._t("node-desc",function(){return [(node.status === 'rejected' && node.comment)?[_c('span',{staticClass:"xt-flow__desc-label"},[_vm._v("驳回原因:")])]:(node.comment)?[_c('span',{staticClass:"xt-flow__desc-label"},[_vm._v("审批意见:")])]:_vm._e(),_vm._v(" "+_vm._s(node.comment || node.description)+" ")]},{"node":node,"index":index})],2):_vm._e(),(_vm.$scopedSlots['node-action'])?_c('div',{staticClass:"xt-flow__actions"},[_vm._t("node-action",null,{"node":node,"index":index})],2):_vm._e()])])}),(_vm.isCollapsible && _vm.collapsed)?_c('div',{staticClass:"xt-flow__collapse",on:{"click":_vm.toggleCollapse}},[_vm._t("expand-trigger",function(){return [_c('span',{staticClass:"xt-flow__collapse-text"},[_vm._v(" 展开全部 "+_vm._s(_vm.totalCount)+" 条审批记录 "),_c('span',{staticClass:"xt-flow__collapse-arrow"},[_vm._v("▼")])])]})],2):_vm._e(),(_vm.isCollapsible && !_vm.collapsed)?_c('div',{staticClass:"xt-flow__collapse",on:{"click":_vm.toggleCollapse}},[_vm._t("collapse-trigger",function(){return [_vm._m(0)]})],2):_vm._e()],2)
130
+ }
131
+ var staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:"xt-flow__collapse-text"},[_vm._v(" 收起 "),_c('span',{staticClass:"xt-flow__collapse-arrow xt-flow__collapse-arrow--up"},[_vm._v("▲")])])
132
+ }]
133
+
134
+
135
+ // CONCATENATED MODULE: ./src/components/xt-flow/index.vue?vue&type=template&id=05a25f5f
136
+
137
+ // CONCATENATED MODULE: ./src/components/xt-flow/flowable-parser.js
138
+ /**
139
+ * Flowable 工作流数据格式化工具
140
+ *
141
+ * 原生 Flowable 数据格式示例:
142
+ * {
143
+ * "id": "75001",
144
+ * "processInstanceId": "25001",
145
+ * "taskId": "50001",
146
+ * "taskName": "部门经理审批",
147
+ * "assignee": "张三",
148
+ * "startTime": "2024-01-01T10:00:00",
149
+ * "endTime": "2024-01-01T10:30:00",
150
+ * "deleteReason": null,
151
+ * "type": "startEvent" | "userTask" | "endEvent"
152
+ * }
153
+ *
154
+ * 历史任务(HistoricTaskInstance):
155
+ * {
156
+ * "id": "50001",
157
+ * "name": "部门经理审批",
158
+ * "assignee": "张三",
159
+ * "startTime": "2024-01-01T10:00:00",
160
+ * "endTime": "2024-01-01T10:30:00",
161
+ * "deleteReason": "rejected",
162
+ * "durationInMillis": 1800000
163
+ * }
164
+ */
165
+
166
+ // 默认待办节点
167
+ const DEFAULT_PENDING_NODE = {
168
+ status: 'pending',
169
+ name: '待处理',
170
+ assignee: '--',
171
+ createTime: null,
172
+ comment: '等待审批中...'
173
+ }
174
+
175
+ /**
176
+ * 解析 Flowable 原始数据为 xt-flow 组件格式
177
+ * @param {Array} rawData - Flowable 返回的原始数据
178
+ * @param {Object} options
179
+ * @param {Object} options.pendingNode - 自定义待办节点数据
180
+ * @param {Boolean} options.autoPending - 是否自动追加待办节点(默认 true)
181
+ * @returns {Array} 标准化后的节点数组
182
+ */
183
+ function parseFlowData(rawData, options = {}) {
184
+ const { pendingNode = null, autoPending = true } = options
185
+
186
+ if (!rawData || !rawData.length) {
187
+ return []
188
+ }
189
+
190
+ const nodes = rawData
191
+ .filter((item) => {
192
+ // 过滤掉 startEvent 和无效数据
193
+ if (item.type === 'startEvent') return false
194
+ // 过滤掉没有任务名称的节点
195
+ if (!item.name && !item.taskName && !item.activityName) return false
196
+ return true
197
+ })
198
+ .map((item) => {
199
+ const node = {
200
+ id: item.id || item.taskId || '',
201
+ name: item.name || item.taskName || item.activityName || '',
202
+ assignee: item.assignee || '',
203
+ createTime: item.startTime || item.createTime || '',
204
+ endTime: item.endTime || '',
205
+ status: inferStatus(item),
206
+ comment: item.comment || item.deleteReason || '',
207
+ duration: formatDuration(item.durationInMillis || item.duration),
208
+ // 保留原始数据用于插槽扩展
209
+ raw: item
210
+ }
211
+ return node
212
+ })
213
+
214
+ // 自动追加待办节点
215
+ if (autoPending && nodes.length > 0) {
216
+ const lastNode = nodes[nodes.length - 1]
217
+ // 如果最后一个节点不是 pending 状态,追加待办节点
218
+ if (lastNode.status !== 'pending') {
219
+ const pending = pendingNode || DEFAULT_PENDING_NODE
220
+ nodes.push({
221
+ id: 'pending',
222
+ name: pending.name || '待处理',
223
+ assignee: pending.assignee || '--',
224
+ createTime: pending.createTime || null,
225
+ endTime: null,
226
+ status: 'pending',
227
+ comment: pending.comment || '',
228
+ duration: '',
229
+ raw: pending
230
+ })
231
+ }
232
+ }
233
+
234
+ return nodes
235
+ }
236
+
237
+ /**
238
+ * 推断节点状态
239
+ * @param {Object} item - Flowable 原始数据项
240
+ * @returns {String} 状态值
241
+ */
242
+ function inferStatus(item) {
243
+ const deleteReason = (item.deleteReason || '').toLowerCase()
244
+
245
+ // 根据 deleteReason 判断
246
+ if (deleteReason.includes('reject') || deleteReason.includes('驳回')) {
247
+ return 'rejected'
248
+ }
249
+ if (deleteReason.includes('delegate') || deleteReason.includes('委托')) {
250
+ return 'delegated'
251
+ }
252
+ if (deleteReason.includes('transfer') || deleteReason.includes('转办')) {
253
+ return 'transferred'
254
+ }
255
+ if (deleteReason.includes('revoke') || deleteReason.includes('撤回') || deleteReason.includes('recall')) {
256
+ return 'recalled'
257
+ }
258
+ if (deleteReason.includes('cancel') || deleteReason.includes('取消')) {
259
+ return 'cancelled'
260
+ }
261
+
262
+ // 有结束时间且无驳回原因 → 通过
263
+ if (item.endTime && !item.deleteReason) {
264
+ return 'approved'
265
+ }
266
+
267
+ // 无结束时间 → 待办中
268
+ if (!item.endTime) {
269
+ return 'pending'
270
+ }
271
+
272
+ return 'approved'
273
+ }
274
+
275
+ /**
276
+ * 格式化时长
277
+ * @param {Number} millis - 毫秒数
278
+ * @returns {String} 格式化后的时长
279
+ */
280
+ function formatDuration(millis) {
281
+ if (!millis && millis !== 0) return ''
282
+
283
+ const totalSeconds = Math.floor(millis / 1000)
284
+ if (totalSeconds < 60) {
285
+ return `${totalSeconds}秒`
286
+ }
287
+
288
+ const minutes = Math.floor(totalSeconds / 60)
289
+ if (minutes < 60) {
290
+ return `${minutes}分钟`
291
+ }
292
+
293
+ const hours = Math.floor(minutes / 60)
294
+ const remainMinutes = minutes % 60
295
+ if (hours < 24) {
296
+ return remainMinutes > 0 ? `${hours}小时${remainMinutes}分钟` : `${hours}小时`
297
+ }
298
+
299
+ const days = Math.floor(hours / 24)
300
+ const remainHours = hours % 24
301
+ return remainHours > 0 ? `${days}天${remainHours}小时` : `${days}天`
302
+ }
303
+
304
+ /**
305
+ * 格式化时间字符串
306
+ * @param {String} timeStr - 时间字符串
307
+ * @param {String} format - 格式
308
+ * @returns {String} 格式化后的时间
309
+ */
310
+ function formatFlowTime(timeStr, format) {
311
+ if (!timeStr) return ''
312
+
313
+ try {
314
+ const d = new Date(timeStr)
315
+ if (isNaN(d.getTime())) return timeStr
316
+
317
+ const year = d.getFullYear()
318
+ const month = String(d.getMonth() + 1).padStart(2, '0')
319
+ const day = String(d.getDate()).padStart(2, '0')
320
+ const hour = String(d.getHours()).padStart(2, '0')
321
+ const minute = String(d.getMinutes()).padStart(2, '0')
322
+ const second = String(d.getSeconds()).padStart(2, '0')
323
+
324
+ return format
325
+ .replace('YYYY', year)
326
+ .replace('MM', month)
327
+ .replace('DD', day)
328
+ .replace('HH', hour)
329
+ .replace('mm', minute)
330
+ .replace('ss', second)
331
+ } catch (e) {
332
+ return timeStr
333
+ }
334
+ }
335
+
336
+ /**
337
+ * 生成模拟审批链数据(用于开发和演示)
338
+ * @param {Number} count - 节点数量
339
+ * @returns {Array} 模拟数据
340
+ */
341
+ function createMockFlowData(count = 7) {
342
+ const statuses = ['approved', 'approved', 'approved', 'rejected', 'pending', 'transferred', 'approved']
343
+ const names = [
344
+ '提交申请', '直属领导审批', '部门经理审批',
345
+ '总监审批', 'HR 审批', '总经理审批', '流程结束'
346
+ ]
347
+ const assignees = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九']
348
+ const comments = [
349
+ '', '同意', '同意', '驳回:请补充材料后重新提交',
350
+ '', '', '同意'
351
+ ]
352
+
353
+ const now = new Date()
354
+ const result = []
355
+
356
+ for (let i = 0; i < Math.min(count, names.length); i++) {
357
+ const startTime = new Date(now.getTime() - (count - i) * 3600000)
358
+ const endTime = statuses[i] === 'pending'
359
+ ? null
360
+ : new Date(startTime.getTime() + 1800000)
361
+
362
+ result.push({
363
+ id: `flow-${i + 1}`,
364
+ name: names[i],
365
+ assignee: assignees[i],
366
+ status: statuses[i],
367
+ createTime: startTime.toISOString(),
368
+ endTime: endTime ? endTime.toISOString() : null,
369
+ comment: comments[i],
370
+ duration: endTime ? '30分钟' : ''
371
+ })
372
+ }
373
+
374
+ return result
375
+ }
376
+
377
+ /* harmony default export */ var flowable_parser = ({
378
+ parseFlowData,
379
+ formatFlowTime,
380
+ createMockFlowData
381
+ });
382
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-flow/index.vue?vue&type=script&lang=js
383
+
384
+
385
+
386
+ /* harmony default export */ var xt_flowvue_type_script_lang_js = ({
387
+ name: 'XtFlow',
388
+
389
+ props: {
390
+ // 数据源:数组格式,支持 Flowable 原始格式或自定义格式
391
+ data: {
392
+ type: Array,
393
+ default: () => []
394
+ },
395
+ // 是否自动折叠长审批链
396
+ collapse: {
397
+ type: Boolean,
398
+ default: true
399
+ },
400
+ // 折叠前可见节点数
401
+ collapseCount: {
402
+ type: Number,
403
+ default: 5
404
+ },
405
+ // 圆角风格:square 方形 / round 圆形
406
+ rounded: {
407
+ type: String,
408
+ default: 'square',
409
+ validator: (val) => ['square', 'round'].includes(val)
410
+ },
411
+ // 数据格式:flowable 原生 / custom 自定义
412
+ format: {
413
+ type: String,
414
+ default: 'flowable',
415
+ validator: (val) => ['flowable', 'custom'].includes(val)
416
+ },
417
+ // 时间格式(仅在 format='flowable' 时生效)
418
+ timeFormat: {
419
+ type: String,
420
+ default: 'YYYY-MM-DD HH:mm:ss'
421
+ },
422
+ // 自定义状态文本映射
423
+ statusMap: {
424
+ type: Object,
425
+ default: () => ({
426
+ approved: '已通过',
427
+ rejected: '已驳回',
428
+ pending: '待审批',
429
+ transferred: '已转办',
430
+ delegated: '已委托',
431
+ recalled: '已撤回',
432
+ started: '已发起',
433
+ cancelled: '已取消'
434
+ })
435
+ }
436
+ },
437
+
438
+ data() {
439
+ return {
440
+ collapsed: true
441
+ }
442
+ },
443
+
444
+ computed: {
445
+ rootClasses() {
446
+ return [
447
+ `xt-flow--${this.rounded}`
448
+ ]
449
+ },
450
+
451
+ parsedData() {
452
+ if (this.format === 'flowable') {
453
+ return parseFlowData(this.data)
454
+ }
455
+ return this.data
456
+ },
457
+
458
+ totalCount() {
459
+ return this.parsedData.length
460
+ },
461
+
462
+ isCollapsible() {
463
+ return this.collapse && this.totalCount > this.collapseCount
464
+ },
465
+
466
+ displayNodes() {
467
+ if (!this.isCollapsible || !this.collapsed) {
468
+ return this.parsedData
469
+ }
470
+ return this.parsedData.slice(0, this.collapseCount)
471
+ }
472
+ },
473
+
474
+ methods: {
475
+ nodeClasses(node, index) {
476
+ return [
477
+ `xt-flow__node--${node.status}`,
478
+ {
479
+ 'xt-flow__node--last': index === this.displayNodes.length - 1,
480
+ 'xt-flow__node--first': index === 0
481
+ }
482
+ ]
483
+ },
484
+
485
+ statusText(status) {
486
+ return this.statusMap[status] || status
487
+ },
488
+
489
+ formatTime(node) {
490
+ if (this.format === 'flowable') {
491
+ return formatFlowTime(node.createTime || node.endTime, this.timeFormat)
492
+ }
493
+ return node.createTime || node.endTime || ''
494
+ },
495
+
496
+ toggleCollapse() {
497
+ this.collapsed = !this.collapsed
498
+ }
499
+ }
500
+ });
501
+
502
+ // CONCATENATED MODULE: ./src/components/xt-flow/index.vue?vue&type=script&lang=js
503
+ /* harmony default export */ var components_xt_flowvue_type_script_lang_js = (xt_flowvue_type_script_lang_js);
504
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
505
+ /* globals __VUE_SSR_CONTEXT__ */
506
+
507
+ // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
508
+ // This module is a runtime utility for cleaner component module output and will
509
+ // be included in the final webpack user bundle.
510
+
511
+ function normalizeComponent(
512
+ scriptExports,
513
+ render,
514
+ staticRenderFns,
515
+ functionalTemplate,
516
+ injectStyles,
517
+ scopeId,
518
+ moduleIdentifier /* server only */,
519
+ shadowMode /* vue-cli only */
520
+ ) {
521
+ // Vue.extend constructor export interop
522
+ var options =
523
+ typeof scriptExports === 'function' ? scriptExports.options : scriptExports
524
+
525
+ // render functions
526
+ if (render) {
527
+ options.render = render
528
+ options.staticRenderFns = staticRenderFns
529
+ options._compiled = true
530
+ }
531
+
532
+ // functional template
533
+ if (functionalTemplate) {
534
+ options.functional = true
535
+ }
536
+
537
+ // scopedId
538
+ if (scopeId) {
539
+ options._scopeId = 'data-v-' + scopeId
540
+ }
541
+
542
+ var hook
543
+ if (moduleIdentifier) {
544
+ // server build
545
+ hook = function (context) {
546
+ // 2.3 injection
547
+ context =
548
+ context || // cached call
549
+ (this.$vnode && this.$vnode.ssrContext) || // stateful
550
+ (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
551
+ // 2.2 with runInNewContext: true
552
+ if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
553
+ context = __VUE_SSR_CONTEXT__
554
+ }
555
+ // inject component styles
556
+ if (injectStyles) {
557
+ injectStyles.call(this, context)
558
+ }
559
+ // register component module identifier for async chunk inferrence
560
+ if (context && context._registeredComponents) {
561
+ context._registeredComponents.add(moduleIdentifier)
562
+ }
563
+ }
564
+ // used by ssr in case component is cached and beforeCreate
565
+ // never gets called
566
+ options._ssrRegister = hook
567
+ } else if (injectStyles) {
568
+ hook = shadowMode
569
+ ? function () {
570
+ injectStyles.call(
571
+ this,
572
+ (options.functional ? this.parent : this).$root.$options.shadowRoot
573
+ )
574
+ }
575
+ : injectStyles
576
+ }
577
+
578
+ if (hook) {
579
+ if (options.functional) {
580
+ // for template-only hot-reload because in that case the render fn doesn't
581
+ // go through the normalizer
582
+ options._injectStyles = hook
583
+ // register for functional component in vue file
584
+ var originalRender = options.render
585
+ options.render = function renderWithStyleInjection(h, context) {
586
+ hook.call(context)
587
+ return originalRender(h, context)
588
+ }
589
+ } else {
590
+ // inject component registration as beforeCreate hook
591
+ var existing = options.beforeCreate
592
+ options.beforeCreate = existing ? [].concat(existing, hook) : [hook]
593
+ }
594
+ }
595
+
596
+ return {
597
+ exports: scriptExports,
598
+ options: options
599
+ }
600
+ }
601
+
602
+ // CONCATENATED MODULE: ./src/components/xt-flow/index.vue
603
+
604
+
605
+
606
+
607
+
608
+ /* normalize component */
609
+
610
+ var component = normalizeComponent(
611
+ components_xt_flowvue_type_script_lang_js,
612
+ render,
613
+ staticRenderFns,
614
+ false,
615
+ null,
616
+ null,
617
+ null
618
+
619
+ )
620
+
621
+ /* harmony default export */ var xt_flow = (component.exports);
622
+ // CONCATENATED MODULE: ./src/components/xt-flow/index.js
623
+
624
+
625
+
626
+ xt_flow.install = function(Vue) {
627
+ Vue.component(xt_flow.name, xt_flow)
628
+ }
629
+
630
+ /* harmony default export */ var components_xt_flow = (xt_flow);
631
+ // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
632
+
633
+
634
+ /* harmony default export */ var entry_lib = __webpack_exports__["default"] = (components_xt_flow);
635
+
636
+
637
+
638
+ /***/ }),
639
+
640
+ /***/ "fdbd":
641
+ /***/ (function(module, exports, __webpack_require__) {
642
+
643
+ // extracted by mini-css-extract-plugin
644
+
645
+ /***/ })
646
+
647
+ /******/ });
648
+ });
@@ -0,0 +1 @@
1
+ (function(t,e){"object"===typeof exports&&"object"===typeof module?module.exports=e():"function"===typeof define&&define.amd?define([],e):"object"===typeof exports?exports["xt-flow"]=e():t["xt-flow"]=e()})("undefined"!==typeof self?self:this,(function(){return function(t){var e={};function n(s){if(e[s])return e[s].exports;var a=e[s]={i:s,l:!1,exports:{}};return t[s].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=t,n.c=e,n.d=function(t,e,s){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:s})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(s,a,function(e){return t[e]}.bind(null,a));return s},n.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="fb15")}({fb15:function(t,e,n){"use strict";if(n.r(e),"undefined"!==typeof window){var s=window.document.currentScript,a=s&&s.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}n("fdbd");var o=function(){var t=this,e=t._self._c;return e("div",{staticClass:"xt-flow",class:t.rootClasses},[t._l(t.displayNodes,(function(n,s){return e("div",{key:n.id||s,staticClass:"xt-flow__node",class:t.nodeClasses(n,s)},[e("div",{staticClass:"xt-flow__timeline"},[e("div",{staticClass:"xt-flow__icon",class:"xt-flow__icon--"+n.status},[t._t("node-avatar",(function(){return[e("span",{staticClass:"xt-flow__icon-dot"})]}),{node:n,index:s})],2),s<t.displayNodes.length-1?e("div",{staticClass:"xt-flow__line",class:["xt-flow__line--"+n.status,{"xt-flow__line--dashed":"rejected"===n.status}]}):t._e()]),e("div",{staticClass:"xt-flow__body"},[e("div",{staticClass:"xt-flow__header"},[e("span",{staticClass:"xt-flow__title"},[t._t("node",(function(){return[t._v(" "+t._s(n.name||n.title)+" ")]}),{node:n,index:s})],2),e("span",{staticClass:"xt-flow__status",class:"xt-flow__status--"+n.status},[t._v(" "+t._s(t.statusText(n.status))+" ")])]),e("div",{staticClass:"xt-flow__meta"},[n.assignee?[e("span",{staticClass:"xt-flow__assignee"},[t._t("assignee",(function(){return[e("span",{staticClass:"xt-flow__assignee-icon"},[t._v("👤")]),t._v(" "+t._s(n.assignee)+" ")]}),{node:n,index:s})],2)]:t._e(),n.createTime||n.endTime?[e("span",{staticClass:"xt-flow__time"},[t._v(" "+t._s(t.formatTime(n))+" ")])]:t._e(),n.duration?[e("span",{staticClass:"xt-flow__duration"},[t._v(" "+t._s(n.duration)+" ")])]:t._e()],2),n.comment||n.description?e("div",{staticClass:"xt-flow__desc"},[t._t("node-desc",(function(){return["rejected"===n.status&&n.comment?[e("span",{staticClass:"xt-flow__desc-label"},[t._v("驳回原因:")])]:n.comment?[e("span",{staticClass:"xt-flow__desc-label"},[t._v("审批意见:")])]:t._e(),t._v(" "+t._s(n.comment||n.description)+" ")]}),{node:n,index:s})],2):t._e(),t.$scopedSlots["node-action"]?e("div",{staticClass:"xt-flow__actions"},[t._t("node-action",null,{node:n,index:s})],2):t._e()])])})),t.isCollapsible&&t.collapsed?e("div",{staticClass:"xt-flow__collapse",on:{click:t.toggleCollapse}},[t._t("expand-trigger",(function(){return[e("span",{staticClass:"xt-flow__collapse-text"},[t._v(" 展开全部 "+t._s(t.totalCount)+" 条审批记录 "),e("span",{staticClass:"xt-flow__collapse-arrow"},[t._v("▼")])])]}))],2):t._e(),t.isCollapsible&&!t.collapsed?e("div",{staticClass:"xt-flow__collapse",on:{click:t.toggleCollapse}},[t._t("collapse-trigger",(function(){return[t._m(0)]}))],2):t._e()],2)},l=[function(){var t=this,e=t._self._c;return e("span",{staticClass:"xt-flow__collapse-text"},[t._v(" 收起 "),e("span",{staticClass:"xt-flow__collapse-arrow xt-flow__collapse-arrow--up"},[t._v("▲")])])}];const i={status:"pending",name:"待处理",assignee:"--",createTime:null,comment:"等待审批中..."};function r(t,e={}){const{pendingNode:n=null,autoPending:s=!0}=e;if(!t||!t.length)return[];const a=t.filter(t=>"startEvent"!==t.type&&!!(t.name||t.taskName||t.activityName)).map(t=>{const e={id:t.id||t.taskId||"",name:t.name||t.taskName||t.activityName||"",assignee:t.assignee||"",createTime:t.startTime||t.createTime||"",endTime:t.endTime||"",status:c(t),comment:t.comment||t.deleteReason||"",duration:d(t.durationInMillis||t.duration),raw:t};return e});if(s&&a.length>0){const t=a[a.length-1];if("pending"!==t.status){const t=n||i;a.push({id:"pending",name:t.name||"待处理",assignee:t.assignee||"--",createTime:t.createTime||null,endTime:null,status:"pending",comment:t.comment||"",duration:"",raw:t})}}return a}function c(t){const e=(t.deleteReason||"").toLowerCase();return e.includes("reject")||e.includes("驳回")?"rejected":e.includes("delegate")||e.includes("委托")?"delegated":e.includes("transfer")||e.includes("转办")?"transferred":e.includes("revoke")||e.includes("撤回")||e.includes("recall")?"recalled":e.includes("cancel")||e.includes("取消")?"cancelled":t.endTime&&!t.deleteReason||t.endTime?"approved":"pending"}function d(t){if(!t&&0!==t)return"";const e=Math.floor(t/1e3);if(e<60)return e+"秒";const n=Math.floor(e/60);if(n<60)return n+"分钟";const s=Math.floor(n/60),a=n%60;if(s<24)return a>0?`${s}小时${a}分钟`:s+"小时";const o=Math.floor(s/24),l=s%24;return l>0?`${o}天${l}小时`:o+"天"}function u(t,e){if(!t)return"";try{const n=new Date(t);if(isNaN(n.getTime()))return t;const s=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,"0"),o=String(n.getDate()).padStart(2,"0"),l=String(n.getHours()).padStart(2,"0"),i=String(n.getMinutes()).padStart(2,"0"),r=String(n.getSeconds()).padStart(2,"0");return e.replace("YYYY",s).replace("MM",a).replace("DD",o).replace("HH",l).replace("mm",i).replace("ss",r)}catch(n){return t}}var f={name:"XtFlow",props:{data:{type:Array,default:()=>[]},collapse:{type:Boolean,default:!0},collapseCount:{type:Number,default:5},rounded:{type:String,default:"square",validator:t=>["square","round"].includes(t)},format:{type:String,default:"flowable",validator:t=>["flowable","custom"].includes(t)},timeFormat:{type:String,default:"YYYY-MM-DD HH:mm:ss"},statusMap:{type:Object,default:()=>({approved:"已通过",rejected:"已驳回",pending:"待审批",transferred:"已转办",delegated:"已委托",recalled:"已撤回",started:"已发起",cancelled:"已取消"})}},data(){return{collapsed:!0}},computed:{rootClasses(){return["xt-flow--"+this.rounded]},parsedData(){return"flowable"===this.format?r(this.data):this.data},totalCount(){return this.parsedData.length},isCollapsible(){return this.collapse&&this.totalCount>this.collapseCount},displayNodes(){return this.isCollapsible&&this.collapsed?this.parsedData.slice(0,this.collapseCount):this.parsedData}},methods:{nodeClasses(t,e){return["xt-flow__node--"+t.status,{"xt-flow__node--last":e===this.displayNodes.length-1,"xt-flow__node--first":0===e}]},statusText(t){return this.statusMap[t]||t},formatTime(t){return"flowable"===this.format?u(t.createTime||t.endTime,this.timeFormat):t.createTime||t.endTime||""},toggleCollapse(){this.collapsed=!this.collapsed}}},p=f;function _(t,e,n,s,a,o,l,i){var r,c="function"===typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=n,c._compiled=!0),s&&(c.functional=!0),o&&(c._scopeId="data-v-"+o),l?(r=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"===typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),a&&a.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(l)},c._ssrRegister=r):a&&(r=i?function(){a.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:a),r)if(c.functional){c._injectStyles=r;var d=c.render;c.render=function(t,e){return r.call(e),d(t,e)}}else{var u=c.beforeCreate;c.beforeCreate=u?[].concat(u,r):[r]}return{exports:t,options:c}}var m=_(p,o,l,!1,null,null,null),g=m.exports;g.install=function(t){t.component(g.name,g)};var x=g;e["default"]=x},fdbd:function(t,e,n){}})}));
@@ -131,7 +131,7 @@ if (typeof window !== 'undefined') {
131
131
  // Indicate to webpack that this file can be concatenated
132
132
  /* harmony default export */ var setPublicPath = (null);
133
133
 
134
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"b8cd9b04-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-form-schema/index.vue?vue&type=template&id=50399771&scoped=true
134
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"d8e97dbc-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--5!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/xt-form-schema/index.vue?vue&type=template&id=50399771&scoped=true
135
135
  var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:"xt-form-schema"},[(_vm.showSearchTags)?_c('div',{staticClass:"search-tags"},[_c('span',{staticClass:"tags-title"},[_vm._v("已检索:")]),_vm._l((_vm.activeSearchTags),function(tag,key){return _c('el-tag',{key:key,attrs:{"closable":"","size":"small"},on:{"close":function($event){return _vm.handleRemoveTag(key)}}},[_vm._v(" "+_vm._s(tag.label)+": "+_vm._s(tag.value)+" ")])}),(_vm.activeSearchTagsCount === 0)?_c('span',{staticClass:"no-tags"},[_vm._v("暂无检索条件")]):_vm._e()],2):_vm._e(),(_vm.mode === 'dialog')?_c('el-dialog',{staticClass:"xt-form-schema-dialog",attrs:{"title":_vm.title,"visible":_vm.visible,"width":_vm.width,"before-close":_vm.handleCancel,"append-to-body":"","modal-append-to-body":""},on:{"update:visible":function($event){_vm.visible=$event}}},[_c('el-form',{attrs:{"model":_vm.formData,"inline":false,"label-width":"120px"}},_vm._l((_vm.schema),function(field){return _c('el-form-item',{key:field.prop,attrs:{"label":field.label,"prop":field.prop}},[(!field.isSlot)?_c(_vm.getFieldComponent(field),_vm._b({tag:"component"},'component',_vm.getFieldProps(field),false)):_vm._t(field.prop,null,{"field":field})],2)}),1),_c('div',{staticClass:"dialog-footer",attrs:{"slot":"footer"},slot:"footer"},[_c('el-button',{on:{"click":_vm.handleCancel}},[_vm._v("取消")]),_c('el-button',{attrs:{"type":"primary"},on:{"click":_vm.handleConfirm}},[_vm._v("确认")])],1)],1):_vm._e(),(_vm.mode === 'drawer')?_c('el-drawer',{staticClass:"xt-form-schema-drawer",attrs:{"title":_vm.title,"visible":_vm.visible,"direction":_vm.direction,"size":_vm.width,"before-close":_vm.handleCancel,"append-to-body":"","modal-append-to-body":""},on:{"update:visible":function($event){_vm.visible=$event}}},[_c('el-form',{attrs:{"model":_vm.formData,"inline":false,"label-width":"120px"}},_vm._l((_vm.schema),function(field){return _c('el-form-item',{key:field.prop,attrs:{"label":field.label,"prop":field.prop}},[(!field.isSlot)?_c(_vm.getFieldComponent(field),_vm._b({tag:"component"},'component',_vm.getFieldProps(field),false)):_vm._t(field.prop,null,{"field":field})],2)}),1),_c('div',{staticClass:"drawer-footer"},[_c('el-button',{on:{"click":_vm.handleCancel}},[_vm._v("取消")]),_c('el-button',{attrs:{"type":"primary"},on:{"click":_vm.handleConfirm}},[_vm._v("确认")])],1)],1):_vm._e()],1)
136
136
  }
137
137
  var staticRenderFns = []