resolver-egretimp-plus 0.0.4

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 (121) hide show
  1. package/babel.config.js +14 -0
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.LICENSE.txt +8 -0
  4. package/dist/theme/element/index.css +1 -0
  5. package/dist/theme/element/src/components/card.scss +4 -0
  6. package/dist/theme/element/src/components/collapse.scss +16 -0
  7. package/dist/theme/element/src/components/date.scss +13 -0
  8. package/dist/theme/element/src/components/form.scss +54 -0
  9. package/dist/theme/element/src/components/index.scss +42 -0
  10. package/dist/theme/element/src/components/input.scss +15 -0
  11. package/dist/theme/element/src/components/message.scss +31 -0
  12. package/dist/theme/element/src/components/scrollbar.scss +14 -0
  13. package/dist/theme/element/src/components/select.scss +17 -0
  14. package/dist/theme/element/src/components/steps.scss +6 -0
  15. package/dist/theme/element/src/components/table.scss +8 -0
  16. package/dist/theme/element/src/components/tabs.scss +68 -0
  17. package/dist/theme/element/src/components/tree.scss +0 -0
  18. package/dist/theme/element/src/index.scss +79 -0
  19. package/index.js +17 -0
  20. package/package.json +45 -0
  21. package/scripts/gulpfile.mjs +73 -0
  22. package/scripts/webpack.config.js +81 -0
  23. package/src/analysisComponent.jsx +166 -0
  24. package/src/components/helper/button.js +17 -0
  25. package/src/components/helper/dock.js +120 -0
  26. package/src/components/icons/question-filled.vue +13 -0
  27. package/src/components/packages/CmiButton.vue +84 -0
  28. package/src/components/packages/CmiCalendar.vue +138 -0
  29. package/src/components/packages/CmiCell.vue +34 -0
  30. package/src/components/packages/CmiCheckbox.vue +63 -0
  31. package/src/components/packages/CmiDatetimePicker.vue +84 -0
  32. package/src/components/packages/CmiDropdownMenu.vue +57 -0
  33. package/src/components/packages/CmiInput.vue +45 -0
  34. package/src/components/packages/CmiLink.vue +28 -0
  35. package/src/components/packages/CmiPicker.vue +120 -0
  36. package/src/components/packages/CmiRadio.vue +29 -0
  37. package/src/components/packages/CmiSearch.vue +39 -0
  38. package/src/components/packages/CmiSelect.vue +84 -0
  39. package/src/components/packages/CustomComponentCard.vue +40 -0
  40. package/src/components/packages/CustomComponentCardH5.vue +40 -0
  41. package/src/components/packages/CustomComponentCol.vue +69 -0
  42. package/src/components/packages/CustomComponentColH5.vue +8 -0
  43. package/src/components/packages/CustomComponentCollapse.vue +183 -0
  44. package/src/components/packages/CustomComponentCollapseH5.vue +37 -0
  45. package/src/components/packages/CustomComponentCycle.vue +95 -0
  46. package/src/components/packages/CustomComponentCycleTabPane.vue +92 -0
  47. package/src/components/packages/CustomComponentDialog.vue +162 -0
  48. package/src/components/packages/CustomComponentEditor.vue +43 -0
  49. package/src/components/packages/CustomComponentFormLayout.vue +63 -0
  50. package/src/components/packages/CustomComponentFormLayoutH5.vue +55 -0
  51. package/src/components/packages/CustomComponentGrid.vue +29 -0
  52. package/src/components/packages/CustomComponentGridCol.vue +29 -0
  53. package/src/components/packages/CustomComponentInputDialog.vue +144 -0
  54. package/src/components/packages/CustomComponentPlain.vue +80 -0
  55. package/src/components/packages/CustomComponentRow.vue +67 -0
  56. package/src/components/packages/CustomComponentSelectEmployees.vue +133 -0
  57. package/src/components/packages/CustomComponentSendMail.vue +72 -0
  58. package/src/components/packages/CustomComponentSteps.vue +41 -0
  59. package/src/components/packages/CustomComponentTabPane.vue +41 -0
  60. package/src/components/packages/CustomComponentTabPaneH5.vue +30 -0
  61. package/src/components/packages/CustomComponentTable.jsx +406 -0
  62. package/src/components/packages/CustomComponentTableH5.vue +58 -0
  63. package/src/components/packages/CustomComponentTabs.vue +75 -0
  64. package/src/components/packages/CustomComponentTabsH5.vue +86 -0
  65. package/src/components/packages/CustomComponentTree.vue +28 -0
  66. package/src/components/packages/ElButton.vue +90 -0
  67. package/src/components/packages/ElCheckbox.vue +55 -0
  68. package/src/components/packages/ElDatePicker.vue +58 -0
  69. package/src/components/packages/ElInput.vue +23 -0
  70. package/src/components/packages/ElInputNumber.vue +54 -0
  71. package/src/components/packages/ElPagination.vue +56 -0
  72. package/src/components/packages/ElRadio.vue +44 -0
  73. package/src/components/packages/ElSelect.vue +73 -0
  74. package/src/components/packages/ElText.vue +48 -0
  75. package/src/components/packages/ElTimePicker.vue +34 -0
  76. package/src/components/patchComponents.js +46 -0
  77. package/src/components/styles/CustomComponenTable.scss +125 -0
  78. package/src/components/tabs/index.js +8 -0
  79. package/src/components/tabs/src/constants.js +23 -0
  80. package/src/components/tabs/src/tab-bar.js +8 -0
  81. package/src/components/tabs/src/tab-bar.vue +92 -0
  82. package/src/components/tabs/src/tab-nav.jsx +413 -0
  83. package/src/components/tabs/src/tab-pane.js +15 -0
  84. package/src/components/tabs/src/tab-pane.vue +80 -0
  85. package/src/components/tabs/src/tabs.jsx +217 -0
  86. package/src/components/tabs/style/css.js +2 -0
  87. package/src/components/tabs/style/index.js +2 -0
  88. package/src/components/thirdPartyFrame/index.js +32 -0
  89. package/src/components/thirdPartyFrame/src/ThirdPartyFrame.vue +123 -0
  90. package/src/hooks/index.js +129 -0
  91. package/src/hooks/pageConfig.js +20 -0
  92. package/src/index.jsx +140 -0
  93. package/src/renderer.jsx +68 -0
  94. package/src/rules/eventsSupplement.js +439 -0
  95. package/src/rules/parseCondition.js +359 -0
  96. package/src/rules/ruleUtils.js +208 -0
  97. package/src/rules/rulesDriver.js +118 -0
  98. package/src/theme/element/components/card.scss +4 -0
  99. package/src/theme/element/components/collapse.scss +16 -0
  100. package/src/theme/element/components/date.scss +13 -0
  101. package/src/theme/element/components/form.scss +54 -0
  102. package/src/theme/element/components/index.scss +42 -0
  103. package/src/theme/element/components/input.scss +15 -0
  104. package/src/theme/element/components/message.scss +31 -0
  105. package/src/theme/element/components/scrollbar.scss +14 -0
  106. package/src/theme/element/components/select.scss +17 -0
  107. package/src/theme/element/components/steps.scss +6 -0
  108. package/src/theme/element/components/table.scss +8 -0
  109. package/src/theme/element/components/tabs.scss +68 -0
  110. package/src/theme/element/components/tree.scss +0 -0
  111. package/src/theme/element/index.scss +79 -0
  112. package/src/utils/common.js +230 -0
  113. package/src/utils/const.js +198 -0
  114. package/src/utils/defaultVal.js +23 -0
  115. package/src/utils/format.js +19 -0
  116. package/src/utils/index.js +4 -0
  117. package/src/utils/is.js +69 -0
  118. package/src/utils/preserveFunc.js +33 -0
  119. package/src/utils/render.jsx +714 -0
  120. package/src/utils/request.js +10 -0
  121. package/src/utils/valid.js +71 -0
@@ -0,0 +1,359 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * rule
4
+ * {
5
+ "eventId": "0",
6
+ "relId": "100000000000006",
7
+ "targetEventId": "0",
8
+ "targetObj": "--",
9
+ "targetObjVal": null,
10
+ "updateTime": "2023-04-13 20:14:13",
11
+ "updateOperId": "72523",
12
+ "targetMsg": null,
13
+ "eventRefValue": null,
14
+ "createTime": "2023-04-13 20:14:13",
15
+ "targetMsgEn": null,
16
+ "state": "0",
17
+ "ruleId": "100000000000006",
18
+ "createOperId": "72523",
19
+ "eventCode": null,
20
+ "eventName": null,
21
+ "remark": null,
22
+ "id": null,
23
+ "ruleType": "1",
24
+ "eventExpress": "{\"relation\":1,\"conditions\":[{\"refCode\":\"xiangmuxinxi->CustomerName\",\"refName\":\"项目信息->客户名称\",\"refNameEn\":\"xiangmuxinxi->Customer Name\",\"symbol\":1,\"type\":1,\"targetValue\":\"xiangmuxinxi->Businesstype\",\"targetName\":\"项目信息->业务类型\",\"targetNameEn\":\"xiangmuxinxi->Business type\"}]}",
25
+ "eventType": null,
26
+ "pmRuleTargetEventVoList": [
27
+ {
28
+ "targetEventId": "1002",
29
+ "relId": "100000000000006",
30
+ "eventId": "0",
31
+ "eventCode": null,
32
+ "actionType": "0",
33
+ "targetObj": "xiangmuxinxi->dutyparagraph",
34
+ "targetObjVal": null,
35
+ "targetMsg": null,
36
+ "targetMsgEn": null,
37
+ "state": "1",
38
+ "createTime": "2023-04-13 20:14:13",
39
+ "createOperId": "72523",
40
+ "updateTime": "2023-04-13 20:14:13",
41
+ "updateOperId": "72523"
42
+ }
43
+ ]
44
+ }
45
+
46
+ eventExpress
47
+ * {
48
+ relation: 1, // 1: 与;2: 或
49
+ conditions: [
50
+ {
51
+ refCode: '', // 这个表格引用的字段,这边是使用->连接code
52
+ refName: 'aa', // 这边表示引用的字段描述,主要是配置化工具那边的展示
53
+ symbol: 1, // 1: >;2: >=; 3: <;4: <=;5: ==;6: !=;
54
+ type: 1, // 1: 组件;2: 系统参数; 3: 手动输入
55
+ targetValue: 'bb', // 这边是对比的值,可以跟refCode一样的值,也可以是具体的值,根据type进行生效
56
+ targetName: 'cc' // 这边在targetValue跟refcode一样时,跟refName一样的效果
57
+ targetName_en: 'cc' // // 这边在targetValue跟refcode一样时,跟refName一样的效果
58
+ },
59
+ {
60
+ refCode: '',
61
+ refName: '22',
62
+ symbol: 1, // 1: >;2: >=; 3: <;4: <=;5: ==;6: !=; 7: include; 8: no include
63
+ type: 3, // 1: 组件;2: 系统参数; 3: 手动输入
64
+ targetValue: '33',
65
+ targetName: 'c44c'
66
+ targetName_en: 'c44c'
67
+ }
68
+ ]
69
+ }
70
+ */
71
+ import { getConfigValue, getCurrentComp, parseRules } from './ruleUtils'
72
+ import {formatDate, isArray} from '../utils/index'
73
+
74
+ export const rulesTypes = {
75
+ constrast: '1',
76
+ nonNull: '2',
77
+ regular: '3',
78
+ enumeration: '4',
79
+ event: '5'
80
+ }
81
+ export const conditionType = {
82
+ COMPONENT: 1, // 1: 组件
83
+ SYSTEM: 2, // 2: 系统参数
84
+ SELF: 3, // 3: 手动输入
85
+ COMPONENT_ENMU: 4, // 组件枚举
86
+ NULL: 5 // 空
87
+ }
88
+
89
+ const calcConditionValue = {
90
+ [conditionType.COMPONENT] ({tabpanelCode, value}) {
91
+ // const labelInfos = getCurrentComp.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${value}`)
92
+ // // if (!labelInfos || labelInfos.length !== 1) {
93
+ // // return false
94
+ // // }
95
+ let refVal = getConfigValue.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${value}`)
96
+ return refVal
97
+ },
98
+ [conditionType.SYSTEM]: ({value}) => {
99
+ return getSystemArgVal(value)
100
+ },
101
+ [conditionType.SELF]: ({value}) => {
102
+ return value
103
+ },
104
+ [conditionType.COMPONENT_ENMU]: ({value}) => {
105
+ return value
106
+ },
107
+ [conditionType.NULL]: () => {
108
+ return null
109
+ }
110
+ }
111
+
112
+ export function parseCondition(rule) {
113
+ const { eventExpress, pmRuleTargetEventVoList: eventList, ruleType, tabpanelCode } = rule || {}
114
+ if (!eventExpress) return false
115
+
116
+ const expressObj = JSON.parse(eventExpress)
117
+ const { relation, conditions } = expressObj
118
+ let conditionsRet = []
119
+ let isIllegalSymbol = false
120
+ // 不同规则对应不同解析
121
+ // 如果ruleType有值,表示是配置化平台的的交付体验规则类型
122
+ // debugger
123
+ // if (ruleType) {
124
+ // switch (ruleType) {
125
+ // case rulesTypes.constrast:
126
+ // case rulesTypes.enumeration:
127
+ // conditionsRet = conditions.map(condition => {
128
+ // const labelInfos = getCurrentComp.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${condition.refCode || condition.refValue}`)
129
+ // // if (condition.refCode.indexOf('custType') > -1) {
130
+ // // console.log('conditions==:', conditions)
131
+ // // debugger
132
+ // // }
133
+ // if (!labelInfos || labelInfos.length !== 1) {
134
+ // return false
135
+ // }
136
+ // let refVal = getConfigValue.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${condition.refCode || condition.refValue}`)
137
+ // let targetVal = condition.targetValue
138
+ // if (rulesTypes.constrast === ruleType) {
139
+ // targetVal = getTraget.call(this, condition, tabpanelCode)
140
+ // }
141
+ // refVal = (refVal === undefined || refVal === null) ? '' : refVal
142
+ // targetVal = (targetVal === undefined || targetVal === null) ? '' : targetVal
143
+ // switch (condition.symbol) {
144
+ // case 1:
145
+ // return refVal > targetVal
146
+ // case 2:
147
+ // return refVal >= targetVal
148
+ // case 3:
149
+ // return refVal < targetVal
150
+ // case 4:
151
+ // return refVal <= targetVal
152
+ // case 5:
153
+ // return refVal == targetVal || (!targetVal && isArray(refVal) && !refVal.length)
154
+ // case 6:
155
+ // return refVal != targetVal
156
+ // case 7:
157
+ // if (typeof refVal === 'number') refVal = `${refVal}`
158
+ // if (Array.isArray(refVal) || typeof refVal === 'string') {
159
+ // return refVal.indexOf(targetVal) > -1
160
+ // }
161
+ // return false
162
+ // case 8:
163
+ // if (typeof refVal === 'number') refVal = `${refVal}`
164
+ // if (Array.isArray(refVal) || typeof refVal === 'string') {
165
+ // return refVal.indexOf(targetVal) === -1
166
+ // }
167
+ // return false
168
+ // default:
169
+ // isIllegalSymbol = true
170
+ // }
171
+ // })
172
+ // break
173
+ // case rulesTypes.nonNull:
174
+ // conditionsRet = conditions.map(condition => {
175
+ // const labelInfos = getCurrentComp.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${condition.refCode || condition.refValue}`)
176
+ // if (!labelInfos || labelInfos.length !== 1) {
177
+ // return false
178
+ // }
179
+ // const refVal = getConfigValue.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${condition.refCode || condition.refValue}`)
180
+ // return !refVal || (isArray(refVal) && !refVal.length)
181
+ // })
182
+ // break
183
+ // case rulesTypes.regular:
184
+ // conditionsRet = conditions.map(condition => {
185
+ // const labelInfos = getCurrentComp.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${condition.refCode || condition.refValue}`)
186
+ // if (!labelInfos || labelInfos.length !== 1) {
187
+ // return false
188
+ // }
189
+ // const refVal = getConfigValue.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${condition.refCode || condition.refValue}`)
190
+ // if (!condition.targetValue) return false
191
+ // const reg = new RegExp(condition.targetValue)
192
+ // return reg.test(refVal)
193
+ // })
194
+ // break
195
+ // default:
196
+ // return false
197
+ // }
198
+ // if (isIllegalSymbol) return false
199
+ // } else {
200
+ conditionsRet = conditions.map(condition => {
201
+ const { refType, refValue, targetType, targetValue } = condition
202
+ // if (refValue === 'studentId') {
203
+ // debugger
204
+ // }
205
+ if (conditionType.COMPONENT == refType) {
206
+ const labelInfos = getCurrentComp.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${refValue}`)
207
+ if (!labelInfos || labelInfos.length !== 1) {
208
+ return false
209
+ }
210
+ }
211
+ if (!calcConditionValue[refType]) return false
212
+ let refVal = calcConditionValue[refType].call(this, {tabpanelCode, value: refValue})
213
+
214
+ if (conditionType.COMPONENT == targetType) {
215
+ const labelInfos = getCurrentComp.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${targetValue}`)
216
+ if (!labelInfos || labelInfos.length !== 1) {
217
+ return false
218
+ }
219
+ }
220
+ if (!calcConditionValue[targetType]) return false
221
+ let targetVal = calcConditionValue[targetType].call(this, {tabpanelCode, value: targetValue})
222
+
223
+ refVal = (refVal === undefined || refVal === null) ? '' : refVal
224
+ targetVal = (targetVal === undefined || targetVal === null) ? '' : targetVal
225
+ switch (condition.symbol) {
226
+ case 1:
227
+ return refVal > targetVal
228
+ case 2:
229
+ return refVal >= targetVal
230
+ case 3:
231
+ return refVal < targetVal
232
+ case 4:
233
+ return refVal <= targetVal
234
+ case 5:
235
+ return refVal == targetVal || (!targetVal && isArray(refVal) && !refVal.length)
236
+ case 6:
237
+ return refVal != targetVal
238
+ case 7:
239
+ if (typeof refVal === 'number') refVal = `${refVal}`
240
+ if (Array.isArray(refVal) || typeof refVal === 'string') {
241
+ return refVal.indexOf(targetVal) > -1
242
+ }
243
+ return false
244
+ case 8:
245
+ if (['string', 'number'].includes(typeof targetVal)) {
246
+ const reg = new RegExp(targetVal)
247
+ return reg.test(refVal)
248
+ }
249
+ return false
250
+ default:
251
+ return false
252
+ }
253
+ })
254
+ // }
255
+ const ret = conditionsRet[relation == 1 ? 'every' : 'some'](item => item)
256
+ return ret
257
+ }
258
+
259
+ function getTraget(condition, tabpanelCode) {
260
+ switch (condition.type) {
261
+ case 1:
262
+ return getConfigValue.call(this, `${tabpanelCode ? tabpanelCode + '->' : ''}${condition.refCode || condition.refValue}`)
263
+ case 2:
264
+ return getSystemArgVal(condition.targetValue)
265
+ case 3:
266
+ return condition.targetValue
267
+ default:
268
+ return ''
269
+ }
270
+ }
271
+
272
+ export function parseRuleForRefCodeAndEvents(rule) {
273
+ const codeRules = []
274
+ const { eventExpress, pmRuleTargetEventVoList: eventList, tabpanelCode } = rule || {}
275
+ if (!eventExpress) return false
276
+ const expressObj = JSON.parse(eventExpress)
277
+ const { conditions = [] } = expressObj
278
+ conditions.forEach(condition => {
279
+ codeRules.push({
280
+ key: tabpanelCode ? `${tabpanelCode}->${condition.refCode || condition.refValue}` : condition.refCode || condition.refValue,
281
+ rules: [rule]
282
+ })
283
+ });
284
+ return codeRules
285
+ }
286
+
287
+ export function getCodeMapRules(config) {
288
+ const rules = parseRules(config)
289
+ return codeMapRules(rules)
290
+ }
291
+
292
+ export function codeMapRules(rules = []) {
293
+ const mapObj = {}
294
+ rules.forEach(rule => {
295
+ const keyEvents = parseRuleForRefCodeAndEvents(rule)
296
+ if (keyEvents && keyEvents.length) {
297
+ keyEvents.forEach(keyEvent => {
298
+ const { key = '', rules = [] } = keyEvent
299
+ if (mapObj[key]) {
300
+ rules.forEach(rule => {
301
+ if (!mapObj[key]?.some(itemR => itemR?.relId === rule?.relId)) {
302
+ mapObj[key].push(rule)
303
+ }
304
+ })
305
+ } else {
306
+ mapObj[key] = rules
307
+ }
308
+ })
309
+ }
310
+ })
311
+ return mapObj
312
+ }
313
+
314
+
315
+ // 事件添加动作,判断当前点击的item是否出发事件
316
+ export function assertEventConditionsRef (rule, refCode) {
317
+ const { eventExpress, pmRuleTargetEventVoList: eventList, ruleType } = rule || {}
318
+ if (!eventExpress) return false
319
+ const expressObj = JSON.parse(eventExpress)
320
+ const { relation, conditions } = expressObj
321
+ const conditionsRet = conditions.map(condition => {
322
+ return condition.refCode == refCode
323
+ })
324
+ return conditionsRet[relation == 1 ? 'every' : 'some'](item => item)
325
+ }
326
+
327
+ const systemFlag = {
328
+ currentDate: '1', // 获取当前日期
329
+ currentTimestamp: '2', // 获取当前时间戳
330
+ CurrentYear: '3', // 当前年
331
+ CurrentMonth: '4', // 当前月
332
+ CurrentDay: '5', // 当前日
333
+ CurrentAfter30Day: '6', // 当前后30天
334
+ CurrentBefore30Day: '7' // 当前前30天
335
+ }
336
+
337
+ function getSystemArgVal(flag) {
338
+ const now = new Date()
339
+ switch (flag) {
340
+ case systemFlag.currentDate:
341
+ return formatDate(new Date(),"yyyy-MM-dd")
342
+ case systemFlag.currentTimestamp:
343
+ return new Date().getTime()
344
+ case systemFlag.CurrentYear:
345
+ return formatDate(new Date(),"yyyy")
346
+ case systemFlag.CurrentMonth:
347
+ return formatDate(new Date(),"MM")
348
+ case systemFlag.CurrentDay:
349
+ return formatDate(new Date(),"dd")
350
+ case systemFlag.CurrentAfter30Day:
351
+ now.setDate(now.getDate() + 30);
352
+ return formatDate(now, "yyyy-MM-dd")
353
+ case systemFlag.CurrentBefore30Day:
354
+ now.setDate(now.getDate() - 30);
355
+ return formatDate(now, "yyyy-MM-dd")
356
+ default:
357
+ return flag
358
+ }
359
+ }
@@ -0,0 +1,208 @@
1
+ /* eslint-disable */
2
+ import { hasOwn } from "../utils"
3
+ import { MULTI_PAGE_META_LIST_TYPES, findComponent } from '../utils/index'
4
+
5
+ // 这边是一些组件在执行规则的时候,如果还没有加载出来,规则会走不动,这边就是存储没走通的规则,等组件加载完之后,再去执行
6
+ export const penddingRules = {}
7
+
8
+ export function getConfigValue(codesStr = '', refVal) {
9
+ if (!codesStr) return ''
10
+ const { config, dynamicMapComp } = this
11
+ const { hireRelat = '', dynamicHireRelat = '' } = config
12
+ if (hireRelat === codesStr) {
13
+ // 如果走到这里,表示是触发条件中的一个条件是当前的配置项(config)
14
+ return config.bindValue
15
+ }
16
+
17
+ // 如果没有循环渲染组件,可以直接获对应的config返回上面的bindValue====start====
18
+ // const codes = codesStr.split('->')
19
+ // const circulConfigFlags = codes.map((code, idx) => {
20
+ // return findComponent(MULTI_PAGE_META_LIST_TYPES, code) !== -1
21
+ // })
22
+ // if (!circulConfigFlags.some(flag => flag)) {
23
+ // return dynamicMapComp?.[codesStr]?.bindValue
24
+ // }
25
+ // 如果没有循环渲染组件,可以直接获对应的config返回上面的bindValue====end====
26
+
27
+ const configs = getRelateConfigs.call(this, codesStr, config)
28
+ if (configs.length !== 1) {
29
+ return null
30
+ }
31
+ const retVal = refVal ? configs[0]?.refValue : configs[0]?.bindValue
32
+ return retVal
33
+ }
34
+ // 设置对应的值
35
+ export function setFormVal(pathStr, val) {
36
+ if (!pathStr) {
37
+ return
38
+ }
39
+ const { config } = this
40
+ const configs = getRelateConfigs.call(this, pathStr, config)
41
+ configs.forEach(cg => {
42
+ hasOwn(cg, 'refValue') && (cg.refValue = val)
43
+ })
44
+ }
45
+
46
+ function getRelateConfigs(codesStr, config) {
47
+ const { dynamicHireRelat = '' } = config
48
+ // 组装成此数据结果,用于后续的获取对应字段=====start====
49
+ const dynamicCodeInfos = dynamicHireRelat.split('->').map(code => {
50
+ const matchs = code?.match(/^(\w+)\[(\d+)\]$/)
51
+ if (matchs) {
52
+ return {
53
+ idx: parseInt(matchs[2]),
54
+ code: matchs[1]
55
+ }
56
+ } else {
57
+ return {
58
+ idx: -1,
59
+ code,
60
+ }
61
+ }
62
+ })
63
+ // 组装成此数据结果,用于后续的获取对应字段=====end====
64
+
65
+ let diffIdx = -1 // 次标识表示,是从那个所以开始,code不一样了
66
+ const codes = codesStr.split('->')
67
+
68
+ for (let i = 0; i < codes.length; i ++) {
69
+ const code = codes[i]
70
+ const dynamicCodeInfo = dynamicCodeInfos[i]
71
+ if (dynamicCodeInfo.code !== code) {
72
+ diffIdx = i
73
+ break
74
+ }
75
+ }
76
+
77
+ const diffCodes = codes.slice(diffIdx)
78
+ const sameCodesStr = dynamicCodeInfos.slice(0, diffIdx).map(({idx, code}) => {
79
+ return idx !== -1 ? `${code}[${idx}]` : code
80
+ }).join('->')
81
+ let sameStr = sameCodesStr
82
+ let sameIdx = null
83
+ const sameMatchs = sameCodesStr.match(/^([\w\W]*)\[(\d*)\]$/)
84
+ if (sameMatchs) {
85
+ sameStr = sameMatchs[1]
86
+ sameIdx = sameMatchs[2]
87
+ }
88
+ const { dynamicMapComp, _mapComp } = this
89
+ let retConfigs = []
90
+ if (sameStr) {
91
+ retConfigs = [dynamicMapComp[sameStr]]
92
+ } else {
93
+ const code = diffCodes.shift()
94
+ retConfigs = [dynamicMapComp[code]]
95
+ }
96
+ while (diffCodes.length) {
97
+ const code = diffCodes.shift()
98
+ const list = []
99
+ retConfigs.forEach(cg => {
100
+ // multiPmPageMetaList有值,表示为数据循环渲染子组件
101
+ if (cg.multiPmPageMetaList) {
102
+ if (sameIdx !== null) {
103
+ const childCgList = cg.multiPmPageMetaList[sameIdx]
104
+ const fincCg = childCgList && childCgList.find(childCg => childCg.metaCode === code)
105
+ if (!fincCg) return
106
+ list.push(fincCg)
107
+ sameIdx = null
108
+ } else {
109
+ cg.multiPmPageMetaList.forEach(childCgList => {
110
+ const fincCg = childCgList.find(childCg => childCg.metaCode === code)
111
+ if (!fincCg) return
112
+ list.push(fincCg)
113
+ })
114
+ }
115
+ } else {
116
+ const fincCg = cg?.pmPageMetaList?.find(childCg => childCg.metaCode === code)
117
+ if (!fincCg) return
118
+ list.push(fincCg)
119
+ }
120
+ })
121
+ retConfigs = list
122
+ }
123
+ if (_mapComp?.value?.[codesStr] && !retConfigs.length) {
124
+ if (!penddingRules[codesStr]) {
125
+ penddingRules[codesStr] = []
126
+ }
127
+ if (!penddingRules[codesStr].some((item) => item?.rules === this?.rules && item?.config === this?.config)) {
128
+ penddingRules[codesStr].push(this)
129
+ }
130
+ }
131
+ return retConfigs
132
+ }
133
+
134
+ export function greaterThan(val, targ) {
135
+ const valCanTran = canTransNumber(val)
136
+ const tragCanTran = canTransNumber(targ)
137
+ if (valCanTran && tragCanTran) {
138
+ return Number(val) > Number(targ)
139
+ } else {
140
+ return val + '' > targ + ''
141
+ }
142
+ }
143
+
144
+ export function lessThan(val, targ) {
145
+ const valCanTran = canTransNumber(val)
146
+ const tragCanTran = canTransNumber(targ)
147
+ if (valCanTran && tragCanTran) {
148
+ return Number(val) < Number(targ)
149
+ } else {
150
+ return val + '' < targ + ''
151
+ }
152
+ }
153
+
154
+ export function canTransNumber(val) {
155
+ return !isNaN(Number(val))
156
+ }
157
+
158
+ /**
159
+ * 根据code path 获取到对应的组件或者label
160
+ */
161
+ export function getCurrentComp(codesStr) {
162
+ if (!codesStr) return null
163
+ const { config } = this
164
+ return getRelateConfigs.call(this, codesStr, config)
165
+ }
166
+
167
+ export function parseRules(config) {
168
+ if (!config) return []
169
+ const retRules = []
170
+ const { pmRuleDefVoList, pmRuleDefVOList } = config
171
+ const ruleDefVoList = (pmRuleDefVoList || pmRuleDefVOList?.filter(item => item?.ruleType == '1') || [])
172
+ ruleDefVoList.forEach(ruleTypeItem => {
173
+ const pmRuleEventRelVoList = ruleTypeItem.pmRuleEventRelVOList || ruleTypeItem.pmRuleEventRelVoList || []
174
+ const itemRulesFlat = pmRuleEventRelVoList.map(item => ({
175
+ ...item,
176
+ ruleType: ruleTypeItem.ruleType
177
+ }))
178
+ retRules.push(...itemRulesFlat)
179
+ })
180
+ return retRules
181
+ }
182
+
183
+ // 解析最原始的配置数据,生成Code链对应的配置信息
184
+ export function generateConfigsHireRelat(configs, hireRelat = '', retObj = {}) {
185
+ if (!configs) return
186
+ const list = Array.isArray(configs) ? configs : [configs]
187
+ list.forEach(config => {
188
+ let currentHireRelat = hireRelat
189
+ if (hasOwn(config, 'pmTabpanelInfoVoList')) {
190
+ currentHireRelat = ''
191
+ generateConfigsHireRelat(config.pmTabpanelInfoVoList, currentHireRelat, retObj)
192
+ } else if (hasOwn(config, 'pmComponentInfoVoList')) {
193
+ currentHireRelat += currentHireRelat ? `->${config.tabpanelCode}` : config.tabpanelCode
194
+ generateConfigsHireRelat(config.pmComponentInfoVoList, currentHireRelat, retObj)
195
+ } else if (hasOwn(config, 'pmLabelInfoVoList') || hasOwn(config, 'subComponentInfoVo')) {
196
+ currentHireRelat += currentHireRelat ? `->${config.componentCode}` : config.componentCode
197
+ generateConfigsHireRelat(config.pmLabelInfoVoList, currentHireRelat, retObj)
198
+ generateConfigsHireRelat(config.subComponentInfoVo, currentHireRelat, retObj)
199
+ } else {
200
+ currentHireRelat += currentHireRelat ? `->${config.labelCode}` : config.labelCode
201
+ }
202
+ if (currentHireRelat) {
203
+ config.nativeHireRelat = currentHireRelat
204
+ retObj[currentHireRelat] = config
205
+ }
206
+ })
207
+ return retObj
208
+ }
@@ -0,0 +1,118 @@
1
+ /* eslint-disable */
2
+ import { parseCondition } from './parseCondition'
3
+ import { runEvent } from './eventsSupplement'
4
+
5
+ const recoverCb = {}
6
+ const recoverCbTimer = {}
7
+
8
+ export default function(rules, isInit) {
9
+ rules = rules || []
10
+ this.rules = rules
11
+ const { config: { dynamicHireRelat, metaCode } } = this
12
+ if (rules && rules.length) {
13
+ rules.forEach(rule => {
14
+ if (!rule) return
15
+ const { pmRuleTargetEventVoList, pmRuleTargetEventVOList, relId, tabpanelCode } = rule
16
+ const relIdKey = `${relId}__${dynamicHireRelat}`
17
+ if (parseCondition.call(this, rule)) {
18
+ setTimeout(() => {
19
+ recoverCb[relIdKey] && recoverCb[relIdKey].forEach(recover => {
20
+ if (recover) {
21
+ const timer = recover?.()
22
+ if (timer) {
23
+ if (!recoverCbTimer[relIdKey]) {
24
+ recoverCbTimer[relIdKey] = []
25
+ }
26
+ recoverCbTimer[relIdKey].push(timer)
27
+ }
28
+ }
29
+ })
30
+ recoverCbTimer[relIdKey] && recoverCbTimer[relIdKey]?.forEach(timier => timier && clearTimeout(timier))
31
+ // 先执行所有的恢复动作
32
+ const recovers = runEvent.call(this, pmRuleTargetEventVoList || pmRuleTargetEventVOList, isInit, tabpanelCode, rule)
33
+ recoverCb[relIdKey] = recovers
34
+ }, 0)
35
+ } else {
36
+ const recoverCbKeys = Object.keys(recoverCb)
37
+ const filterKeys = recoverCbKeys.filter(recoverKey => {
38
+ const [recRelId, recDynamicHireRelat] = recoverKey.split('__')
39
+ if (recRelId == relId) {
40
+ if (recDynamicHireRelat === dynamicHireRelat) {
41
+ return true
42
+ } else {
43
+ const { codes: recRelats } = splitRelat(recDynamicHireRelat)
44
+ const { codes: relats } = splitRelat(dynamicHireRelat)
45
+ for (let index = 0; index < relats.length; index++) {
46
+ const relat = relats[index]
47
+ const recRelat = recRelats[index]
48
+ if (!recRelat || relat.code !== recRelat.code) {
49
+ return true
50
+ } else {
51
+ if (relat.idx !== recRelat.idx) {
52
+ return false
53
+ }
54
+ }
55
+ }
56
+ return true
57
+ }
58
+ } else {
59
+ return false
60
+ }
61
+ })
62
+ filterKeys.forEach(key => {
63
+ recoverCb[key] && recoverCb[key].forEach(recover => {
64
+ if (recover) {
65
+ const timer = recover()
66
+ if (timer) {
67
+ if (!recoverCbTimer[key]) {
68
+ recoverCbTimer[key] = []
69
+ }
70
+ recoverCbTimer[key].push(timer)
71
+ }
72
+ }
73
+ })
74
+ delete recoverCb[key]
75
+ })
76
+ }
77
+ })
78
+ }
79
+ }
80
+
81
+ function splitRelat(relat) {
82
+ // const rowCodes = []
83
+ let nativeRelat = ''
84
+ const codes = relat.split('->').map(code => {
85
+ const matchs = code?.match(/^(\w+)\[(\d+)\]$/)
86
+ if (matchs) {
87
+ nativeRelat += nativeRelat ? `->${matchs[1]}` : matchs[1]
88
+ return {
89
+ idx: parseInt(matchs[2]),
90
+ code: matchs[1]
91
+ }
92
+ } else {
93
+ nativeRelat += nativeRelat ? `->${code}` : code
94
+ return {
95
+ idx: -1,
96
+ code,
97
+ }
98
+ }
99
+ })
100
+ return {
101
+ nativeRelat,
102
+ codes
103
+ }
104
+ }
105
+
106
+ export function runClickRules(rules, isInit) {
107
+ rules = rules || []
108
+ if (rules && rules.length) {
109
+ rules.forEach(rule => {
110
+ if (!rule) return
111
+ const { pmRuleTargetEventVoList, tabpanelCode } = rule
112
+ runEvent.call(this, pmRuleTargetEventVoList, isInit, tabpanelCode)
113
+ })
114
+ }
115
+ }
116
+
117
+ export { generateConfigsHireRelat } from './ruleUtils'
118
+ export { getCodeMapRules } from './parseCondition.js'
@@ -0,0 +1,4 @@
1
+
2
+ .el-card__body {
3
+ padding: var(--prmary-marign-second) var(--prmary-marign) 0 var(--prmary-marign);
4
+ }