vue2-client 1.8.149 → 1.8.151

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.8.149",
3
+ "version": "1.8.151",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -124,8 +124,26 @@ export default {
124
124
  },
125
125
  methods: {
126
126
  saveConfig () {
127
+ const tempDataKeys = Object.keys(this.activeConfig.tempData)
128
+ tempDataKeys.forEach(key => {
129
+ this.changeDeepObject(this.activeConfig.data, key, this.activeConfig.tempData[key])
130
+ })
127
131
  this.$emit('saveConfig', this.$refs.XReportDesign.activatedConfig)
128
132
  },
133
+ changeDeepObject (obj, strPath, newVal) {
134
+ const arr = strPath.split('@@@')
135
+ if (arr.length === 1) {
136
+ obj[arr[0]] = newVal
137
+ } else {
138
+ let result = obj[arr[0]]
139
+ arr.shift()
140
+ while (arr.length > 1) {
141
+ result = result[arr[0]]
142
+ arr.shift()
143
+ }
144
+ result[arr[0]] = newVal
145
+ }
146
+ },
129
147
  // 检查slot是否在配置文件中包含,如果没有包含,则视为非法获取
130
148
  checkSlotDefine (config) {
131
149
  const slotsDeclare = config.slotsDeclare
@@ -149,6 +167,10 @@ export default {
149
167
  this.originalConfig.data = { ...this.originalConfig.data, ...this.config.data }
150
168
  this.config.data = this.originalConfig.data
151
169
  if (this.type === 'display') {
170
+ const tempDataKeys = Object.keys(this.activeConfig.tempData)
171
+ tempDataKeys.forEach(key => {
172
+ this.changeDeepObject(this.activeConfig.data, key, this.activeConfig.tempData[key])
173
+ })
152
174
  let count = 0
153
175
  this.imageList = []
154
176
  const keys = Object.keys(this.config.data.images)
@@ -236,6 +258,20 @@ export default {
236
258
  this.config.columns = newArr
237
259
  }
238
260
  },
261
+ getDeepObject (obj, strPath) {
262
+ const arr = strPath.split('@@@')
263
+ let result = obj[arr[0]]
264
+ arr.shift()
265
+ try {
266
+ while (arr.length > 0) {
267
+ result = result[arr[0]]
268
+ arr.shift()
269
+ }
270
+ } catch (e) {
271
+ result = undefined
272
+ }
273
+ return result
274
+ },
239
275
  // 处理colums数组,为声明了rowspan的单元格,自动匹配格式
240
276
  checkRow (rowArr) {
241
277
  // 不需要更改的数据
@@ -527,6 +563,23 @@ export default {
527
563
  }
528
564
  this.activeConfig = this.config
529
565
  this.showSkeleton = false
566
+ this.activeConfig.columns.forEach(row => {
567
+ row.forEach(cell => {
568
+ if (cell.dynamicDataIndex === true) {
569
+ // eslint-disable-next-line no-eval
570
+ const func = eval('(' + cell.customFunctionForDynamicDataIndex + ')')
571
+ cell.dataIndex = func(this.config)
572
+ }
573
+ })
574
+ })
575
+ this.activeConfig.tempData = {}
576
+ this.activeConfig.columns.forEach(row => {
577
+ row.forEach(cell => {
578
+ if (cell.dataIndex !== undefined && cell.dataIndex.indexOf('@@@') !== -1) {
579
+ this.activeConfig.tempData[cell.dataIndex] = this.getDeepObject(this.activeConfig.data, cell.dataIndex)
580
+ }
581
+ })
582
+ })
530
583
  this.$nextTick(() => {
531
584
  this.scanFinish = true
532
585
  })
@@ -45,7 +45,7 @@
45
45
  <!-- 普通行 -->
46
46
  <template v-if="row[0].type !== 'inputColumns' && row[0].type !== 'list'">
47
47
  <template v-if="!forDisplay">
48
- <x-report-tr-group :key="rowIndex" :columns="row" :config-data="activatedConfig.data"></x-report-tr-group>
48
+ <x-report-tr-group :key="rowIndex" :columns="row" :config-data="activatedConfig.data" :config="activatedConfig"></x-report-tr-group>
49
49
  </template>
50
50
  <template v-else>
51
51
  <x-report-tr-group :config="activatedConfig" :key="rowIndex" :columns="row" :config-data="activatedConfig.data" :display="true"></x-report-tr-group>
@@ -55,6 +55,7 @@
55
55
  <template v-else-if="row[0].type === 'list'" v-for="(num, listIndex) in row[0].listLength">
56
56
  <template v-if="!forDisplay">
57
57
  <x-report-tr-group
58
+ :config="activatedConfig"
58
59
  :key="rowIndex + listIndex"
59
60
  :columns="row"
60
61
  :config-data="activatedConfig.data"
@@ -76,6 +77,7 @@
76
77
  <template v-else>
77
78
  <template v-if="forDisplay">
78
79
  <x-report-tr-group
80
+ :config="activatedConfig"
79
81
  :columns="row[0].definition"
80
82
  :config-data="{arr: activatedConfig.data[row[0].dataIndex]}"
81
83
  :input-columns="true"
@@ -86,6 +88,7 @@
86
88
  </template>
87
89
  <template v-if="!forDisplay">
88
90
  <x-report-tr-group
91
+ :config="activatedConfig"
89
92
  :columns="row[0].definition"
90
93
  :config-data="{arr: activatedConfig.data[row[0].dataIndex]}"
91
94
  :input-columns="true"
@@ -93,7 +96,14 @@
93
96
  :input-columns-definition-index="definitionIndex"
94
97
  :key="row[0].dataIndex + definitionIndex + rowIndex"></x-report-tr-group>
95
98
  <!-- 动态行交互按钮 -->
96
- <x-report-tr-group :key="rowIndex" :columns="row" :config-data="activatedConfig.data" :input-columns-button="true" :input-columns="true"></x-report-tr-group>
99
+ <x-report-tr-group
100
+ :config="activatedConfig"
101
+ :key="rowIndex"
102
+ :columns="row"
103
+ :config-data="activatedConfig.data"
104
+ :input-columns-button="true"
105
+ :input-columns="true">
106
+ </x-report-tr-group>
97
107
  </template>
98
108
  </template>
99
109
  </template>
@@ -11,7 +11,12 @@
11
11
  :style="cell.style ? cell.style : undefined"
12
12
  :colspan="cell.colSpan ? cell.colSpan : undefined">
13
13
  <template v-if="cell.type === 'column'">
14
- {{ cell.text }}
14
+ <template v-if="cell.customFunction">
15
+ {{ deserializeFunctionAndRun(cell.customFunction, configData[cell.dataIndex], config) }}
16
+ </template>
17
+ <template v-else>
18
+ {{ cell.text }}
19
+ </template>
15
20
  </template>
16
21
  <template v-else-if="cell.type === 'placeHolderColumn'">
17
22
  <!-- 占位 -->
@@ -21,15 +26,15 @@
21
26
  {{ cell.value }}
22
27
  </template>
23
28
  <template v-else>
24
- {{ deserializeFunctionAndRun(cell.customFunction, cell.value) }}
29
+ {{ deserializeFunctionAndRun(cell.customFunction, cell.value, config) }}
25
30
  </template>
26
31
  </template>
27
32
  <template v-else-if="cell.type === 'input'">
28
33
  <template v-if="cell.customFunction === undefined">
29
- {{ configData[cell.dataIndex] }}
34
+ {{ getDeepObject(configData, cell.dataIndex) }}
30
35
  </template>
31
36
  <template v-else>
32
- {{ deserializeFunctionAndRun(cell.customFunction, configData[cell.dataIndex]) }}
37
+ {{ deserializeFunctionAndRun(cell.customFunction, configData[cell.dataIndex], config) }}
33
38
  </template>
34
39
  </template>
35
40
  <template v-else-if="cell.type === 'inputs'">
@@ -37,19 +42,19 @@
37
42
  {{ showSubRowValue(cell) }}
38
43
  </template>
39
44
  <template v-else>
40
- {{ deserializeFunctionAndRun(cell.customFunction, showSubRowValue(cell)) }}
45
+ {{ deserializeFunctionAndRun(cell.customFunction, showSubRowValue(cell), config) }}
41
46
  </template>
42
47
  </template>
43
48
  <template v-else-if="cell.type === 'list'">
44
49
  <template v-if="cell.listType === 'input'">
45
- {{ configData[cell.dataIndex][listIndex] }}
50
+ {{ getDeepObject(configData, cell.dataIndex)[listIndex] }}
46
51
  </template>
47
52
  <template v-else-if="cell.listType === 'value'">
48
53
  {{ cell.content[listIndex] }}
49
54
  </template>
50
55
  </template>
51
56
  <template v-else-if="cell.type === 'images'">
52
- <template v-for="(img,imgIndex) in configData.images[cell.dataIndex]">
57
+ <template v-for="(img,imgIndex) in getDeepObject(configData.images, cell.dataIndex)">
53
58
  <span :key="imgIndex" style="margin-right: 5%">{{ img.name }}</span>
54
59
  </template>
55
60
  </template>
@@ -71,36 +76,36 @@
71
76
  {{ cell.value }}
72
77
  </template>
73
78
  <template v-else>
74
- {{ deserializeFunctionAndRun(cell.customFunction, cell.value) }}
79
+ {{ deserializeFunctionAndRun(cell.customFunction, cell.value, config) }}
75
80
  </template>
76
81
  </template>
77
82
  <template v-else-if="cell.type === 'increment'">
78
83
  <template v-if="cell.customFunction === undefined">
79
- {{ configData.arr[inputColumnsDefinitionIndex][cell.dataIndex] }}
84
+ {{ getDeepObject(configData.arr[inputColumnsDefinitionIndex], cell.dataIndex) }}
80
85
  </template>
81
86
  <template v-else>
82
87
  {{
83
- deserializeFunctionAndRun(cell.customFunction, configData.arr[inputColumnsDefinitionIndex][cell.dataIndex])
88
+ deserializeFunctionAndRun(cell.customFunction, configData.arr[inputColumnsDefinitionIndex][cell.dataIndex], config)
84
89
  }}
85
90
  </template>
86
91
  </template>
87
92
  <template v-else-if="cell.type === 'input'">
88
93
  <template v-if="cell.customFunction === undefined">
89
- {{ configData.arr[inputColumnsDefinitionIndex][cell.dataIndex] }}
94
+ {{ getDeepObject(configData.arr[inputColumnsDefinitionIndex], cell.dataIndex) }}
90
95
  </template>
91
96
  <template v-else>
92
97
  {{
93
- deserializeFunctionAndRun(cell.customFunction, configData.arr[inputColumnsDefinitionIndex][cell.dataIndex])
98
+ deserializeFunctionAndRun(cell.customFunction, configData.arr[inputColumnsDefinitionIndex][cell.dataIndex], config)
94
99
  }}
95
100
  </template>
96
101
  </template>
97
102
  <template v-else-if="cell.type === 'inputs'">
98
103
  <template v-if="cell.customFunction === undefined">
99
- {{ configData.arr[inputColumnsDefinitionIndex][cell.dataIndex] }}
104
+ {{ getDeepObject(configData.arr[inputColumnsDefinitionIndex], cell.dataIndex) }}
100
105
  </template>
101
106
  <template v-else>
102
107
  {{
103
- deserializeFunctionAndRun(cell.customFunction, configData.arr[inputColumnsDefinitionIndex][cell.dataIndex])
108
+ deserializeFunctionAndRun(cell.customFunction, configData.arr[inputColumnsDefinitionIndex][cell.dataIndex], config)
104
109
  }}
105
110
  </template>
106
111
  </template>
@@ -117,7 +122,12 @@
117
122
  :style="cell.style ? cell.style : undefined"
118
123
  :rowspan="cell.rowSpan ? cell.rowSpan : undefined">
119
124
  <template v-if="cell.type === 'column'">
120
- {{ cell.text }}
125
+ <template v-if="cell.customFunction">
126
+ {{ deserializeFunctionAndRun(cell.customFunction, configData[cell.dataIndex], config) }}
127
+ </template>
128
+ <template v-else>
129
+ {{ cell.text }}
130
+ </template>
121
131
  </template>
122
132
  <template v-else-if="cell.type === 'placeHolderColumn'">
123
133
  <!-- 占位 -->
@@ -138,15 +148,32 @@
138
148
  </template>
139
149
  <template v-else-if="cell.type === 'input'">
140
150
  <template v-if="cell.inputReadOnly === true">
141
- <a-input
142
- v-model="configData[cell.dataIndex]"
143
- :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"
144
- :disabled="true"/>
151
+ <template v-if="cell.dataIndex.indexOf('@@@') !== -1">
152
+ <a-input
153
+ @change="handleInputDeepChange($event, cell.dataIndex)"
154
+ v-model="config.tempData[cell.dataIndex]"
155
+ :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"
156
+ :disabled="true"/>
157
+ </template>
158
+ <template v-else>
159
+ <a-input
160
+ v-model="configData[cell.dataIndex]"
161
+ :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"
162
+ :disabled="true"/>
163
+ </template>
145
164
  </template>
146
165
  <template v-else>
147
- <a-input
148
- v-model="configData[cell.dataIndex]"
149
- :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"/>
166
+ <template v-if="cell.dataIndex.indexOf('@@@') !== -1">
167
+ <a-input
168
+ @change="handleInputDeepChange($event, cell.dataIndex)"
169
+ v-model="config.tempData[cell.dataIndex]"
170
+ :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"/>
171
+ </template>
172
+ <template v-else>
173
+ <a-input
174
+ v-model="configData[cell.dataIndex]"
175
+ :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"/>
176
+ </template>
150
177
  </template>
151
178
  </template>
152
179
  <template v-else-if="cell.type === 'inputs'">
@@ -154,10 +181,19 @@
154
181
  <div class="inputsDiv">
155
182
  <div class="inputsDivItem" v-for="(num, index) of calcFormatInputNum(cell.format)" :key="index">
156
183
  <span class="inputsDivItemLabel">{{ displayFormatStartText(cell.format) }}</span>
157
- <a-input
158
- v-model="configData[cell.dataIndex][index]"
159
- :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"
160
- :disabled="true"/>
184
+ <template v-if="cell.dataIndex.indexOf('@@@') !== -1">
185
+ <a-input
186
+ @change="handleInputDeepChange($event, cell.dataIndex)"
187
+ v-model="config.tempData[cell.dataIndex][index]"
188
+ :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"
189
+ :disabled="true"/>
190
+ </template>
191
+ <template v-else>
192
+ <a-input
193
+ v-model="configData[cell.dataIndex][index]"
194
+ :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"
195
+ :disabled="true"/>
196
+ </template>
161
197
  <span class="inputsDivItemLabel">{{ displayFormatText(cell.format, index) }}</span>
162
198
  </div>
163
199
  </div>
@@ -166,9 +202,17 @@
166
202
  <div class="inputsDiv">
167
203
  <div class="inputsDivItem" v-for="(num, index) of calcFormatInputNum(cell.format)" :key="index">
168
204
  <span class="inputsDivItemLabel">{{ displayFormatStartText(cell.format) }}</span>
169
- <a-input
170
- v-model="configData[cell.dataIndex][index]"
171
- :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"/>
205
+ <template v-if="cell.dataIndex.indexOf('@@@') !== -1">
206
+ <a-input
207
+ @change="handleInputDeepChange($event, cell.dataIndex)"
208
+ v-model="config.tempData[cell.dataIndex][index]"
209
+ :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"/>
210
+ </template>
211
+ <template v-else>
212
+ <a-input
213
+ v-model="configData[cell.dataIndex][index]"
214
+ :style="'width:' + (cell.inputWidth ? cell.inputWidth : '100') + '%'"/>
215
+ </template>
172
216
  <span class="inputsDivItemLabel">{{ displayFormatText(cell.format, index) }}</span>
173
217
  </div>
174
218
  </div>
@@ -330,6 +374,23 @@ export default {
330
374
  }
331
375
  },
332
376
  methods: {
377
+ handleInputDeepChange (event, dataIndex) {
378
+ this.$forceUpdate()
379
+ },
380
+ getDeepObject (obj, strPath) {
381
+ const arr = strPath.split('@@@')
382
+ let result = obj[arr[0]]
383
+ arr.shift()
384
+ try {
385
+ while (arr.length > 0) {
386
+ result = result[arr[0]]
387
+ arr.shift()
388
+ }
389
+ } catch (e) {
390
+ result = undefined
391
+ }
392
+ return result
393
+ },
333
394
  getNowDate (index1, index2) {
334
395
  if (index2) {
335
396
  // @click="getNowDate(configData.arr[inputColumnsDefinitionIndex][cell.dataIndex])"
@@ -340,13 +401,11 @@ export default {
340
401
  this.configData = Object.assign({}, this.configData)
341
402
  },
342
403
  deserializeFunctionAndRun (functionStr, value) {
343
- console.warn('执行了!')
344
404
  // eslint-disable-next-line no-eval
345
405
  const fun = eval('(' + functionStr + ')')
346
- return fun(value)
406
+ return fun(value, this.config)
347
407
  },
348
408
  setImages (imageIds, dataIndex) {
349
- console.warn('接收', imageIds)
350
409
  this.configData.images[dataIndex] = imageIds
351
410
  },
352
411
  removeData (index) {
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <div>
3
3
  <!-- <XReport :config-name="'test_tableConfig'" :activated-slot-name="'test_tableConfig_slot'"/>-->
4
- <!-- <XReport :config-name="'test_tableConfig'" :local-config="test_config_withoutSlot" :config-data="test_config_data"/>-->
5
- <!-- <XReport :config-name="'test_tableConfig'" :local-config="test_config_list" :dont-format="true"/>-->
6
- <!-- <XReport :config-name="'test_tableConfig'" />-->
7
- <XReport config-name="test_tableConfig" :local-config="test_config_json" :config-data="test_config_json_data"/>
4
+ <!-- <XReport :config-name="'test_tableConfig'" :local-config="test_config_withoutSlot" :config-data="test_config_data"/>-->
5
+ <XReport :config-name="'test_tableConfig'" :local-config="test_yangchun" :config-data="test_yangchun_data" :dont-format="true"/>
6
+ <!-- <XReport :config-name="'test_table_config_forEditor'" :dont-format="true"/>-->
7
+ <!-- <XReport config-name="test_tableConfig" :local-config="test_config_json" :config-data="test_config_json_data"/>-->
8
8
  </div>
9
9
  </template>
10
10
 
@@ -245,194 +245,517 @@ export default {
245
245
  slotsDefine: {},
246
246
  subTitle: [
247
247
  {
248
- dataIndex: 'subTitleDate',
248
+ dataIndexType: 'Array',
249
+ dataIndex: 'subtitleDate',
249
250
  format: '{}年{}月{}日',
250
- type: 'inputs',
251
- inputReadOnly: true
251
+ inputReadOnly: true,
252
+ type: 'inputs'
252
253
  },
253
254
  {
254
- dataIndex: 'subTitleCompany',
255
+ dataIndexType: 'Array',
256
+ dataIndex: 'subtitleLevel',
255
257
  format: '(级别:{})',
256
258
  type: 'inputs'
257
259
  },
258
260
  {
259
- dataIndex: 'subTitleNumber',
261
+ dataIndexType: 'Array',
262
+ dataIndex: 'subtitleNo',
260
263
  format: '编号:{}',
261
264
  type: 'inputs'
262
265
  }
263
266
  ],
264
267
  slotsDeclare: [],
265
- data: {},
268
+ data: {
269
+ 1: [],
270
+ note: '',
271
+ images: {
272
+ LocationImage: []
273
+ },
274
+ a1: '',
275
+ a2: '',
276
+ subtitleNo: [],
277
+ company: '',
278
+ location: '',
279
+ end: [],
280
+ worker: '',
281
+ subtitleDate: [],
282
+ begin: [],
283
+ supervisor: '',
284
+ subtitleLevel: []
285
+ },
266
286
  columns: [
267
287
  [
268
288
  {
269
- rowSpan: 0,
270
- showRowSpan: 0,
271
- colSpan: 2,
272
- show: true,
289
+ rowSpan: 1,
290
+ colSpan: 3,
273
291
  text: '操作任务',
274
- type: 'column'
292
+ originalRowIndex: 0,
293
+ type: 'column',
294
+ originalCellIndex: 0
275
295
  },
276
296
  {
277
- rowSpan: 0,
278
- colSpan: 10,
279
- type: 'value',
297
+ rowSpan: 1,
280
298
  customFunction: 'function (val) {\n return `@${val}@`\n}',
281
- value: '立管置换及顶层用户通气点火工艺流程'
299
+ colSpan: 9,
300
+ originalRowIndex: 0,
301
+ type: 'value',
302
+ value: '立管置换及顶层用户通气点火工艺流程',
303
+ originalCellIndex: 3
282
304
  }
283
305
  ],
284
306
  [
285
307
  {
286
- rowSpan: 0,
287
- showRowSpan: 0,
288
- colSpan: 2,
289
- show: true,
308
+ rowSpan: 1,
309
+ colSpan: 3,
290
310
  text: '操作单位',
291
- type: 'column'
311
+ originalRowIndex: 1,
312
+ type: 'column',
313
+ originalCellIndex: 0
292
314
  },
293
315
  {
294
- rowSpan: 0,
295
- colSpan: 4,
296
- dataIndex: 'unitName',
297
- noBoarder: false,
316
+ rowSpan: 1,
317
+ dataIndexType: 'String',
318
+ colSpan: 3,
319
+ dataIndex: 'company',
320
+ originalRowIndex: 1,
298
321
  type: 'input',
299
- inputReadOnly: true
322
+ originalCellIndex: 3
300
323
  },
301
324
  {
302
- rowSpan: 0,
303
- showRowSpan: 0,
304
- colSpan: 2,
305
- show: true,
325
+ rowSpan: 1,
326
+ colSpan: 3,
306
327
  text: '操作地点',
307
- type: 'column'
328
+ originalRowIndex: 1,
329
+ type: 'column',
330
+ originalCellIndex: 6
308
331
  },
309
332
  {
310
- rowSpan: 0,
311
- colSpan: 4,
312
- dataIndex: 'addressName',
313
- noBoarder: false,
314
- type: 'input'
333
+ rowSpan: 1,
334
+ dataIndexType: 'String',
335
+ colSpan: 3,
336
+ dataIndex: 'location',
337
+ originalRowIndex: 1,
338
+ type: 'input',
339
+ originalCellIndex: 9
315
340
  }
316
341
  ],
317
342
  [
318
343
  {
319
- rowSpan: 2,
320
- colSpan: 2,
321
- text: '开 始',
322
- type: 'column'
344
+ rowSpan: 1,
345
+ colSpan: 3,
346
+ text: '开始',
347
+ originalRowIndex: 2,
348
+ type: 'column',
349
+ originalCellIndex: 0
323
350
  },
324
351
  {
325
352
  rowSpan: 1,
326
- colSpan: 4,
327
- dataIndex: 'startDateArr',
328
- format: '{}月{}日',
353
+ dataIndexType: 'Array',
354
+ colSpan: 3,
355
+ dataIndex: 'begin',
356
+ format: '{}月{}日{}时{}分',
357
+ originalRowIndex: 2,
329
358
  type: 'inputs',
330
- inputReadOnly: true
359
+ originalCellIndex: 3
331
360
  },
332
361
  {
333
362
  rowSpan: 1,
334
- colSpan: 4,
335
- dataIndex: 'startDateArr2',
336
- format: '{}时{}分',
337
- type: 'inputs'
363
+ colSpan: 3,
364
+ text: '完毕',
365
+ originalRowIndex: 2,
366
+ type: 'column',
367
+ originalCellIndex: 6
338
368
  },
339
369
  {
340
- rowSpan: 2,
341
- colSpan: 2,
342
- text: '完 毕',
343
- type: 'column'
344
- },
370
+ rowSpan: 1,
371
+ dataIndexType: 'Array',
372
+ colSpan: 3,
373
+ dataIndex: 'end',
374
+ format: '{}月{}日{}时{}分',
375
+ originalRowIndex: 2,
376
+ type: 'inputs',
377
+ originalCellIndex: 9
378
+ }
379
+ ],
380
+ [
345
381
  {
346
382
  rowSpan: 1,
347
- colSpan: 4,
348
- dataIndex: 'endDateArr',
349
- format: '{}月{}日',
350
- type: 'inputs'
383
+ colSpan: 3,
384
+ text: '备注',
385
+ originalRowIndex: 5,
386
+ type: 'column',
387
+ originalCellIndex: 0
351
388
  },
352
389
  {
353
390
  rowSpan: 1,
354
- colSpan: 4,
355
- dataIndex: 'endDateArr2',
356
- format: '{}时{}分',
357
- type: 'inputs'
391
+ dataIndexType: 'String',
392
+ colSpan: 9,
393
+ dataIndex: 'note',
394
+ originalRowIndex: 5,
395
+ type: 'input',
396
+ originalCellIndex: 3
358
397
  }
359
398
  ],
360
399
  [
361
400
  {
362
- rowSpan: 0,
363
- showRowSpan: 0,
364
- colSpan: 2,
365
- show: true,
366
- text: '备注',
367
- type: 'column'
401
+ rowSpan: 1,
402
+ colSpan: 3,
403
+ text: '操作人',
404
+ originalRowIndex: 6,
405
+ type: 'column',
406
+ originalCellIndex: 0
368
407
  },
369
408
  {
370
- rowSpan: 0,
371
- colSpan: 10,
372
- dataIndex: 'remark',
373
- noBoarder: false,
374
- type: 'input'
409
+ rowSpan: 1,
410
+ dataIndexType: 'String',
411
+ colSpan: 3,
412
+ dataIndex: 'worker',
413
+ originalRowIndex: 6,
414
+ type: 'input',
415
+ originalCellIndex: 3
416
+ },
417
+ {
418
+ rowSpan: 1,
419
+ colSpan: 3,
420
+ text: '监护人',
421
+ originalRowIndex: 6,
422
+ type: 'column',
423
+ originalCellIndex: 6
424
+ },
425
+ {
426
+ rowSpan: 1,
427
+ dataIndexType: 'String',
428
+ colSpan: 3,
429
+ dataIndex: 'supervisor',
430
+ originalRowIndex: 6,
431
+ type: 'input',
432
+ originalCellIndex: 9
375
433
  }
376
434
  ],
377
435
  [
378
436
  {
379
- rowSpan: 0,
380
- colSpan: 2,
437
+ rowSpan: 1,
438
+ colSpan: 3,
381
439
  text: '现场照片',
382
- type: 'column'
440
+ originalRowIndex: 9,
441
+ type: 'column',
442
+ originalCellIndex: 0
383
443
  },
384
444
  {
385
- rowSpan: 0,
386
- colSpan: 10,
445
+ rowSpan: 1,
446
+ colSpan: 9,
447
+ dataIndex: 'LocationImage',
448
+ originalRowIndex: 9,
387
449
  type: 'images',
388
- dataIndex: 'locationImage'
450
+ originalCellIndex: 3
389
451
  }
390
452
  ],
391
453
  [
392
454
  {
393
- rowSpan: 2,
394
- showRowSpan: 2,
395
- colSpan: 2,
396
- show: true,
397
- text: '操作人',
398
- type: 'column'
455
+ rowSpan: 1,
456
+ dataIndexType: 'Array',
457
+ colSpan: 6,
458
+ dataIndex: '1',
459
+ originalRowIndex: 10,
460
+ type: 'list',
461
+ listType: 'value',
462
+ originalCellIndex: 0,
463
+ content: [
464
+ '1、确认调压箱进气球阀、进口球阀及()趟立管球阀均处于关闭状态'
465
+ ],
466
+ listLength: 1
399
467
  },
400
468
  {
401
- rowSpan: 2,
402
- showRowSpan: 2,
403
- colSpan: 4,
404
- dataIndex: 'actionPerson',
405
- show: true,
406
- noBoarder: false,
407
- style: {
408
- fontSize: '1.5em'
469
+ rowSpan: 1,
470
+ dataIndexType: 'String',
471
+ colSpan: 6,
472
+ dataIndex: 'a1',
473
+ text: '完成',
474
+ originalRowIndex: 10,
475
+ type: 'curDateInput',
476
+ originalCellIndex: 6
477
+ }
478
+ ],
479
+ [
480
+ {
481
+ rowSpan: 1,
482
+ colSpan: 6,
483
+ originalRowIndex: 11,
484
+ type: 'value',
485
+ value: '流程2',
486
+ originalCellIndex: 0
487
+ },
488
+ {
489
+ rowSpan: 1,
490
+ dataIndexType: 'String',
491
+ colSpan: 6,
492
+ dataIndex: 'a2',
493
+ text: '完成',
494
+ originalRowIndex: 11,
495
+ type: 'curDateInput',
496
+ originalCellIndex: 6
497
+ }
498
+ ]
499
+ ],
500
+ width: 'auto',
501
+ style: {},
502
+ title: '陕西城市燃气产业发展有限公司</br>操作卡2',
503
+ table: [
504
+ [
505
+ {
506
+ rowSpan: 1,
507
+ def: {
508
+ text: '操作任务',
509
+ type: 'column'
409
510
  },
410
- type: 'input'
511
+ colSpan: 3,
512
+ originalRowIndex: 0,
513
+ originalCellIndex: 0
411
514
  },
412
515
  {
413
- rowSpan: 2,
414
- showRowSpan: 2,
415
- colSpan: 2,
416
- show: true,
417
- text: '监护人',
418
- type: 'column'
516
+ rowSpan: 1,
517
+ def: {
518
+ customFunction: 'function (val) {\n return `@${val}@`\n}',
519
+ type: 'value',
520
+ value: '立管置换及顶层用户通气点火工艺流程'
521
+ },
522
+ colSpan: 9,
523
+ originalRowIndex: 0,
524
+ originalCellIndex: 3
525
+ }
526
+ ],
527
+ [
528
+ {
529
+ rowSpan: 1,
530
+ def: {
531
+ text: '操作单位',
532
+ type: 'column'
533
+ },
534
+ colSpan: 3,
535
+ originalRowIndex: 1,
536
+ originalCellIndex: 0
419
537
  },
420
538
  {
421
- rowSpan: 2,
422
- showRowSpan: 2,
423
- colSpan: 4,
424
- dataIndex: 'guardian',
425
- show: true,
426
- noBoarder: false,
427
- type: 'input'
539
+ rowSpan: 1,
540
+ def: {
541
+ dataIndexType: 'String',
542
+ dataIndex: 'company',
543
+ type: 'input'
544
+ },
545
+ colSpan: 3,
546
+ originalRowIndex: 1,
547
+ originalCellIndex: 3
548
+ },
549
+ {
550
+ rowSpan: 1,
551
+ def: {
552
+ text: '操作地点',
553
+ type: 'column'
554
+ },
555
+ colSpan: 3,
556
+ originalRowIndex: 1,
557
+ originalCellIndex: 6
558
+ },
559
+ {
560
+ rowSpan: 1,
561
+ def: {
562
+ dataIndexType: 'String',
563
+ dataIndex: 'location',
564
+ type: 'input'
565
+ },
566
+ colSpan: 3,
567
+ originalRowIndex: 1,
568
+ originalCellIndex: 9
569
+ }
570
+ ],
571
+ [
572
+ {
573
+ rowSpan: 1,
574
+ def: {
575
+ text: '开始',
576
+ type: 'column'
577
+ },
578
+ colSpan: 3,
579
+ originalRowIndex: 2,
580
+ originalCellIndex: 0
581
+ },
582
+ {
583
+ rowSpan: 1,
584
+ def: {
585
+ dataIndexType: 'Array',
586
+ dataIndex: 'begin',
587
+ format: '{}月{}日{}时{}分',
588
+ type: 'inputs'
589
+ },
590
+ colSpan: 3,
591
+ originalRowIndex: 2,
592
+ originalCellIndex: 3
593
+ },
594
+ {
595
+ rowSpan: 1,
596
+ def: {
597
+ text: '完毕',
598
+ type: 'column'
599
+ },
600
+ colSpan: 3,
601
+ originalRowIndex: 2,
602
+ originalCellIndex: 6
603
+ },
604
+ {
605
+ rowSpan: 1,
606
+ def: {
607
+ dataIndexType: 'Array',
608
+ dataIndex: 'end',
609
+ format: '{}月{}日{}时{}分',
610
+ type: 'inputs'
611
+ },
612
+ colSpan: 3,
613
+ originalRowIndex: 2,
614
+ originalCellIndex: 9
615
+ }
616
+ ],
617
+ [
618
+ {
619
+ rowSpan: 1,
620
+ def: {
621
+ text: '备注',
622
+ type: 'column'
623
+ },
624
+ colSpan: 3,
625
+ originalRowIndex: 5,
626
+ originalCellIndex: 0
627
+ },
628
+ {
629
+ rowSpan: 1,
630
+ def: {
631
+ dataIndexType: 'String',
632
+ dataIndex: 'note',
633
+ type: 'input'
634
+ },
635
+ colSpan: 9,
636
+ originalRowIndex: 5,
637
+ originalCellIndex: 3
638
+ }
639
+ ],
640
+ [
641
+ {
642
+ rowSpan: 1,
643
+ def: {
644
+ text: '操作人',
645
+ type: 'column'
646
+ },
647
+ colSpan: 3,
648
+ originalRowIndex: 6,
649
+ originalCellIndex: 0
650
+ },
651
+ {
652
+ rowSpan: 1,
653
+ def: {
654
+ dataIndexType: 'String',
655
+ dataIndex: 'worker',
656
+ type: 'input'
657
+ },
658
+ colSpan: 3,
659
+ originalRowIndex: 6,
660
+ originalCellIndex: 3
661
+ },
662
+ {
663
+ rowSpan: 1,
664
+ def: {
665
+ text: '监护人',
666
+ type: 'column'
667
+ },
668
+ colSpan: 3,
669
+ originalRowIndex: 6,
670
+ originalCellIndex: 6
671
+ },
672
+ {
673
+ rowSpan: 1,
674
+ def: {
675
+ dataIndexType: 'String',
676
+ dataIndex: 'supervisor',
677
+ type: 'input'
678
+ },
679
+ colSpan: 3,
680
+ originalRowIndex: 6,
681
+ originalCellIndex: 9
682
+ }
683
+ ],
684
+ [
685
+ {
686
+ rowSpan: 1,
687
+ def: {
688
+ text: '现场照片',
689
+ type: 'column'
690
+ },
691
+ colSpan: 3,
692
+ originalRowIndex: 9,
693
+ originalCellIndex: 0
694
+ },
695
+ {
696
+ rowSpan: 1,
697
+ def: {
698
+ dataIndex: 'LocationImage',
699
+ type: 'images'
700
+ },
701
+ colSpan: 9,
702
+ originalRowIndex: 9,
703
+ originalCellIndex: 3
704
+ }
705
+ ],
706
+ [
707
+ {
708
+ rowSpan: 1,
709
+ def: {
710
+ dataIndexType: 'Array',
711
+ dataIndex: '1',
712
+ type: 'list',
713
+ listType: 'value',
714
+ content: '1、确认调压箱进气球阀、进口球阀及()趟立管球阀均处于关闭状态'
715
+ },
716
+ colSpan: 6,
717
+ originalRowIndex: 10,
718
+ originalCellIndex: 0
719
+ },
720
+ {
721
+ rowSpan: 1,
722
+ def: {
723
+ dataIndexType: 'String',
724
+ dataIndex: 'a1',
725
+ text: '完成',
726
+ type: 'curDateInput'
727
+ },
728
+ colSpan: 6,
729
+ originalRowIndex: 10,
730
+ originalCellIndex: 6
731
+ }
732
+ ],
733
+ [
734
+ {
735
+ rowSpan: 1,
736
+ def: {
737
+ type: 'value',
738
+ value: '流程2'
739
+ },
740
+ colSpan: 6,
741
+ originalRowIndex: 11,
742
+ originalCellIndex: 0
743
+ },
744
+ {
745
+ rowSpan: 1,
746
+ def: {
747
+ dataIndexType: 'String',
748
+ dataIndex: 'a2',
749
+ text: '完成',
750
+ type: 'curDateInput'
751
+ },
752
+ colSpan: 6,
753
+ originalRowIndex: 11,
754
+ originalCellIndex: 6
428
755
  }
429
756
  ]
430
757
  ],
431
- width: 'auto',
432
- style: {
433
- fontWeight: 'bolder'
434
- },
435
- title: '陕西城市燃气产业发展有限公司<br/>操作卡'
758
+ designMode: 'VisualTable'
436
759
  },
437
760
  test_config_data: {
438
761
  subTitleNumber: [
@@ -664,6 +987,184 @@ export default {
664
987
  f_content: '第一次上门保养'
665
988
  }
666
989
  ]
990
+ },
991
+ test_deepKey_dynamicLabel: {
992
+ slotsDefine: {},
993
+ subTitle: [],
994
+ slotsDeclare: [],
995
+ data: {
996
+ images: {},
997
+ 'a1a2@@@a3': ''
998
+ },
999
+ columns: [
1000
+ [
1001
+ {
1002
+ rowSpan: 1,
1003
+ colSpan: 3,
1004
+ text: 'deepKey测试',
1005
+ originalRowIndex: 0,
1006
+ type: 'column',
1007
+ originalCellIndex: 0
1008
+ },
1009
+ {
1010
+ rowSpan: 1,
1011
+ dataIndexType: 'String',
1012
+ colSpan: 3,
1013
+ dataIndex: 'a1@@@a2@@@a3',
1014
+ originalRowIndex: 0,
1015
+ type: 'input',
1016
+ originalCellIndex: 3
1017
+ },
1018
+ {
1019
+ rowSpan: 1,
1020
+ colSpan: 3,
1021
+ text: '动态表头测试',
1022
+ originalRowIndex: 0,
1023
+ type: 'column',
1024
+ originalCellIndex: 6
1025
+ },
1026
+ {
1027
+ rowSpan: 1,
1028
+ customFunction: "function (val, config) {\n if (config.data.f_label === '123') {\n return 'A'\n } else {\n return 'B'\n }\n}",
1029
+ colSpan: 3,
1030
+ text: '1',
1031
+ originalRowIndex: 0,
1032
+ type: 'column',
1033
+ originalCellIndex: 9
1034
+ }
1035
+ ]
1036
+ ],
1037
+ width: 'auto',
1038
+ style: {},
1039
+ title: '测试deepKey',
1040
+ table: [
1041
+ [
1042
+ {
1043
+ rowSpan: 1,
1044
+ def: {
1045
+ text: 'deepKey测试',
1046
+ type: 'column'
1047
+ },
1048
+ colSpan: 3,
1049
+ originalRowIndex: 0,
1050
+ originalCellIndex: 0
1051
+ },
1052
+ {
1053
+ rowSpan: 1,
1054
+ def: {
1055
+ dataIndexType: 'String',
1056
+ dataIndex: 'a1@@@a2@@@a3',
1057
+ type: 'input'
1058
+ },
1059
+ colSpan: 3,
1060
+ originalRowIndex: 0,
1061
+ originalCellIndex: 3
1062
+ },
1063
+ {
1064
+ rowSpan: 1,
1065
+ def: {
1066
+ text: '动态表头测试',
1067
+ type: 'column'
1068
+ },
1069
+ colSpan: 3,
1070
+ originalRowIndex: 0,
1071
+ originalCellIndex: 6
1072
+ },
1073
+ {
1074
+ rowSpan: 1,
1075
+ def: {
1076
+ customFunction: "function (val, config) {\n if (config.f_label === '123') {\n return 'A'\n } else {\n return 'B'\n }\n}",
1077
+ text: '1',
1078
+ type: 'column'
1079
+ },
1080
+ colSpan: 3,
1081
+ originalRowIndex: 0,
1082
+ originalCellIndex: 9
1083
+ }
1084
+ ]
1085
+ ],
1086
+ designMode: 'VisualTable'
1087
+ },
1088
+ test_deepKey_dynamicLabel_data: {
1089
+ a1: {
1090
+ a2: {
1091
+ a3: '我是a3'
1092
+ }
1093
+ },
1094
+ f_label: '123'
1095
+ },
1096
+ test_yangchun: {
1097
+ slotsDefine: {},
1098
+ subTitle: [],
1099
+ slotsDeclare: [],
1100
+ data: {
1101
+ 'serviceall@@@baseuserinfo@@@f_user_name': '',
1102
+ images: {},
1103
+ 'serviceall@@@f_new_failure': '',
1104
+ 'usermeter@@@f_meternumber': '',
1105
+ 'usermeter@@@f_meter_style': '',
1106
+ 'usermeter@@@f_meter_brand': '',
1107
+ 'serviceall@@@f_date_leave': '',
1108
+ 'serviceall@@@f_remarks': '',
1109
+ 'serviceall@@@baseuserinfo@@@f_userinfo_code': '',
1110
+ 'serviceall@@@f_date_come': '',
1111
+ 'serviceall@@@baseuserinfo@@@f_address': '',
1112
+ f_total_feeORf_total_gas: '',
1113
+ 'usermeter@@@f_aroundmeter': ''
1114
+ },
1115
+ columns: [
1116
+ [
1117
+ {
1118
+ rowSpan: 1,
1119
+ customFunction: "function (val, config) {\n return config.data.usermeter.f_collection_type === '按金额' ? '累购金额' : '累购气量'\n}",
1120
+ colSpan: 2,
1121
+ text: '累购金额or累购气量',
1122
+ originalRowIndex: 3,
1123
+ type: 'column',
1124
+ originalCellIndex: 0
1125
+ },
1126
+ {
1127
+ rowSpan: 1,
1128
+ dataIndexType: 'String',
1129
+ dynamicDataIndex: true,
1130
+ colSpan: 4,
1131
+ dataIndex: 'f_total_feeORf_total_gas',
1132
+ customFunctionForDynamicDataIndex: "function (config) {\n if(config.data.usermeter.f_collection_type === '按金额') {\n return 'usermeter@@@f_total_fee'\n }else {\n return 'usermeter@@@f_total_gas'\n }\n}",
1133
+ originalRowIndex: 3,
1134
+ type: 'input',
1135
+ originalCellIndex: 2
1136
+ },
1137
+ {
1138
+ rowSpan: 1,
1139
+ colSpan: 2,
1140
+ text: '左右表',
1141
+ originalRowIndex: 3,
1142
+ type: 'column',
1143
+ originalCellIndex: 6
1144
+ },
1145
+ {
1146
+ rowSpan: 1,
1147
+ dataIndexType: 'String',
1148
+ colSpan: 4,
1149
+ dataIndex: 'usermeter@@@f_aroundmeter',
1150
+ originalRowIndex: 3,
1151
+ type: 'input',
1152
+ originalCellIndex: 8
1153
+ }
1154
+ ]
1155
+ ],
1156
+ width: 'auto',
1157
+ style: {},
1158
+ title: '客户工单信息',
1159
+ designMode: 'VisualTable'
1160
+ },
1161
+ test_yangchun_data: {
1162
+ usermeter: {
1163
+ // f_collection_type: '按金额',
1164
+ f_collection_type: '按气量',
1165
+ f_total_fee: '总金额',
1166
+ f_total_gas: '总气量'
1167
+ }
667
1168
  }
668
1169
  }
669
1170
  },
package/vue.config.js CHANGED
@@ -37,7 +37,7 @@ module.exports = {
37
37
  '/api': {
38
38
  // v3用
39
39
  // pathRewrite: { '^/api/af-system/': '/rs/', '^/api/af-iot/': '/rs/' },
40
- target: testUpload,
40
+ target: gateway,
41
41
  changeOrigin: true
42
42
  },
43
43
  '/resource': {