n20-common-lib 2.5.39 → 2.5.41
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
|
@@ -53,14 +53,31 @@ export default {
|
|
|
53
53
|
getData() {
|
|
54
54
|
if (this.andUser) {
|
|
55
55
|
axios.post('/bems/activiti/actAppOpi/queryAppOpiAndUser', null, { loading: false }).then(({ data }) => {
|
|
56
|
-
this.approveMsgList = data || []
|
|
56
|
+
this.approveMsgList = this.getOnlyData(data || [])
|
|
57
57
|
})
|
|
58
58
|
} else {
|
|
59
59
|
axios.post('/bems/activiti/actAppOpi/queryAppOpi', null, { loading: false }).then(({ data }) => {
|
|
60
|
-
this.approveMsgList = data.list || []
|
|
60
|
+
this.approveMsgList = this.getOnlyData(data.list || [])
|
|
61
61
|
})
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
|
+
getOnlyData(data) {
|
|
65
|
+
const length = data.length
|
|
66
|
+
if (length === 0) {
|
|
67
|
+
return result
|
|
68
|
+
}
|
|
69
|
+
let result = []
|
|
70
|
+
const suggestionMap = {}
|
|
71
|
+
for (let i = 0; i < length; i++) {
|
|
72
|
+
let currentItem = data[i]
|
|
73
|
+
let suggestion = currentItem.suggestion
|
|
74
|
+
if (!suggestionMap[suggestion]) {
|
|
75
|
+
suggestionMap[suggestion] = true
|
|
76
|
+
result.push(currentItem)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return result
|
|
80
|
+
},
|
|
64
81
|
changeFn() {
|
|
65
82
|
// if (this.approveMsgSlt?.length) {
|
|
66
83
|
this.$emit(
|
|
@@ -69,7 +69,9 @@
|
|
|
69
69
|
<div class="right-tree flex-column p-t-m" v-else>
|
|
70
70
|
<div class="m-b flex-box flex-lr flex-v">
|
|
71
71
|
{{ '当前选定项' | $lc }}
|
|
72
|
-
<el-link class="m-r-s" :underline="false" icon="n20-icon-xinzeng" @click="add"
|
|
72
|
+
<el-link class="m-r-s" :underline="false" icon="n20-icon-xinzeng" @click="add">{{
|
|
73
|
+
'新增字段' | $lc
|
|
74
|
+
}}</el-link>
|
|
73
75
|
</div>
|
|
74
76
|
<el-tree
|
|
75
77
|
ref="menu-tree"
|
|
@@ -79,43 +81,51 @@
|
|
|
79
81
|
children: 'children',
|
|
80
82
|
label: 'label'
|
|
81
83
|
}"
|
|
82
|
-
node-key="
|
|
84
|
+
node-key="prop"
|
|
83
85
|
draggable
|
|
84
86
|
style="width: 200px"
|
|
87
|
+
:allow-drop="allowDrop"
|
|
85
88
|
@node-drop="dropMenu"
|
|
86
89
|
>
|
|
87
90
|
<span slot-scope="{ node, data }" class="menu-item flex-item flex-box flex-lr flex-v">
|
|
88
91
|
<span>
|
|
89
92
|
<i class="n20-drag-icon n20-icon-tuodong"></i>
|
|
90
|
-
<span class="text-ellipsis pointer color-primary" @click="clickItem(data)"
|
|
91
|
-
data.label
|
|
92
|
-
}}</span>
|
|
93
|
-
<span v-else>{{ '未命名...' }}</span>
|
|
93
|
+
<span class="text-ellipsis pointer color-primary" @click="clickItem(data)">{{ data.label }}</span>
|
|
94
94
|
</span>
|
|
95
|
-
<el-link
|
|
96
|
-
v-if="!disabled"
|
|
97
|
-
class="n20-icon-shanchu"
|
|
98
|
-
:underline="false"
|
|
99
|
-
:disabled="inSC && item.checked"
|
|
100
|
-
@click.stop="() => removeMenu(node, data)"
|
|
101
|
-
/>
|
|
95
|
+
<el-link class="n20-icon-shanchu" :underline="false" @click.stop="() => removeMenu(node, data)" />
|
|
102
96
|
</span>
|
|
103
97
|
</el-tree>
|
|
104
98
|
</div>
|
|
105
99
|
</div>
|
|
106
100
|
</div>
|
|
107
|
-
<dialogWrap
|
|
101
|
+
<dialogWrap
|
|
102
|
+
v-drag
|
|
103
|
+
:visible.sync="configVisible"
|
|
104
|
+
:title="'表头设置' | $lc"
|
|
105
|
+
width="350px"
|
|
106
|
+
:close-on-click-modal="false"
|
|
107
|
+
>
|
|
108
108
|
<el-form :model="configModel">
|
|
109
109
|
<el-form-item>
|
|
110
110
|
{{ configModel.label }}
|
|
111
111
|
</el-form-item>
|
|
112
|
-
<el-form-item
|
|
113
|
-
|
|
112
|
+
<el-form-item
|
|
113
|
+
:label="'表头宽度' | $lc"
|
|
114
|
+
:rules="[
|
|
115
|
+
{
|
|
116
|
+
type: 'number',
|
|
117
|
+
trigger: ['change', 'blur'],
|
|
118
|
+
validator: validator
|
|
119
|
+
}
|
|
120
|
+
]"
|
|
121
|
+
prop="width"
|
|
122
|
+
>
|
|
123
|
+
<el-input v-model="configModel.width" class="w-224"></el-input>
|
|
114
124
|
</el-form-item>
|
|
115
|
-
<el-form-item label="是否折行">
|
|
125
|
+
<el-form-item :label="'是否折行' | $lc">
|
|
116
126
|
<el-radio-group v-model="configModel.wrap">
|
|
117
|
-
<el-radio :label="true"
|
|
118
|
-
<el-radio :label="false"
|
|
127
|
+
<el-radio :label="true">{{ $lc('是') }}</el-radio>
|
|
128
|
+
<el-radio :label="false">{{ $lc('否') }}</el-radio>
|
|
119
129
|
</el-radio-group>
|
|
120
130
|
</el-form-item>
|
|
121
131
|
</el-form>
|
|
@@ -123,10 +133,10 @@
|
|
|
123
133
|
<el-button type="primary" @click="configSave">{{ '确定' | $lc }}</el-button>
|
|
124
134
|
</div>
|
|
125
135
|
</dialogWrap>
|
|
126
|
-
<dialogWrap v-drag :visible.sync="configVisibleN" title="新增" width="350px" :close-on-click-modal="false">
|
|
136
|
+
<dialogWrap v-drag :visible.sync="configVisibleN" :title="'新增' | $lc" width="350px" :close-on-click-modal="false">
|
|
127
137
|
<el-form :model="configModelN">
|
|
128
|
-
<el-form-item label="名称" required>
|
|
129
|
-
<el-input v-model="configModelN.label" class="input-w" placeholder="请输入"></el-input>
|
|
138
|
+
<el-form-item :label="'名称' | $lc" required>
|
|
139
|
+
<el-input v-model="configModelN.label" class="input-w" :placeholder="'请输入' | $lc"></el-input>
|
|
130
140
|
</el-form-item>
|
|
131
141
|
</el-form>
|
|
132
142
|
<div slot="footer">
|
|
@@ -245,23 +255,29 @@ export default {
|
|
|
245
255
|
setState() {
|
|
246
256
|
return this.columnsAs.length && this.columnsAs.length === this.dragListN.length
|
|
247
257
|
},
|
|
248
|
-
columnsAs
|
|
249
|
-
|
|
258
|
+
columnsAs: {
|
|
259
|
+
get() {
|
|
260
|
+
return this.columns.filter((col) => !col.static)
|
|
261
|
+
},
|
|
262
|
+
set(val) {
|
|
263
|
+
return val
|
|
264
|
+
}
|
|
250
265
|
}
|
|
251
266
|
},
|
|
252
267
|
watch: {
|
|
253
268
|
dragList: {
|
|
254
269
|
handler() {
|
|
255
|
-
let
|
|
270
|
+
let arr = []
|
|
256
271
|
forEachs(this.dragList, (item) => {
|
|
257
|
-
|
|
272
|
+
arr.push(item)
|
|
258
273
|
})
|
|
259
|
-
this.dragListN =
|
|
260
|
-
const
|
|
274
|
+
this.dragListN = arr
|
|
275
|
+
const newArr = arr.filter((item) => {
|
|
261
276
|
return item.isNew
|
|
262
277
|
})
|
|
263
|
-
|
|
264
|
-
|
|
278
|
+
newArr.forEach((item) => {
|
|
279
|
+
const index = this.columns.findIndex((col) => col.prop === item.prop || col.label === item.label)
|
|
280
|
+
if (index === -1) {
|
|
265
281
|
this.columns.push(item)
|
|
266
282
|
}
|
|
267
283
|
})
|
|
@@ -271,25 +287,33 @@ export default {
|
|
|
271
287
|
}
|
|
272
288
|
},
|
|
273
289
|
methods: {
|
|
290
|
+
validator(rule, value, callback) {
|
|
291
|
+
if (value) {
|
|
292
|
+
if (value > 300) {
|
|
293
|
+
return callback(new Error($lc('输入最大宽度不能大于300')))
|
|
294
|
+
} else if (!/^[1-9]\d*$/.test(value)) {
|
|
295
|
+
return callback(new Error($lc('表头宽度只能输入正整数')))
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
callback()
|
|
299
|
+
},
|
|
274
300
|
add() {
|
|
275
301
|
this.configVisibleN = true
|
|
276
|
-
this.configModelN.prop = 'prop' +
|
|
302
|
+
this.configModelN.prop = 'prop' + Date.now()
|
|
277
303
|
},
|
|
278
304
|
configSaveN() {
|
|
279
305
|
if (!this.configModelN.label) {
|
|
280
|
-
this.$message.warning('请填写名称')
|
|
281
|
-
return false
|
|
306
|
+
return this.$message.warning($lc('请填写名称'))
|
|
282
307
|
}
|
|
283
308
|
const hasLabel = this.dragListN.find((item) => {
|
|
284
309
|
return item.label === this.configModelN.label
|
|
285
310
|
})
|
|
286
311
|
if (hasLabel) {
|
|
287
|
-
this.$message.warning('已有重名字段,请修改')
|
|
288
|
-
return false
|
|
312
|
+
return this.$message.warning($lc('已有重名字段,请修改'))
|
|
289
313
|
}
|
|
290
314
|
this.dragList.push(this.configModelN)
|
|
291
|
-
this.columns.
|
|
292
|
-
this.$message.success('添加成功')
|
|
315
|
+
this.columns = [...this.columns, this.configModelN]
|
|
316
|
+
this.$message.success($lc('添加成功'))
|
|
293
317
|
this.configVisibleN = false
|
|
294
318
|
this.configModelN = {
|
|
295
319
|
label: '',
|
|
@@ -299,45 +323,40 @@ export default {
|
|
|
299
323
|
}
|
|
300
324
|
},
|
|
301
325
|
removeMenu(node, data) {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
index
|
|
305
|
-
|
|
306
|
-
this.canApply = true
|
|
307
|
-
/* this.dragListN = this.dragListN.filter((item) => {
|
|
308
|
-
return item.label !== data
|
|
309
|
-
}) */
|
|
326
|
+
const parent = node.parent
|
|
327
|
+
const children = parent.data.children || parent.data
|
|
328
|
+
const index = children.findIndex((d) => d.prop === data.prop)
|
|
329
|
+
children.splice(index, 1)
|
|
310
330
|
},
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
if (type === 'inner') {
|
|
315
|
-
|
|
316
|
-
toChild = toObj.children
|
|
331
|
+
allowDrop(draggingNode, dropNode, type) {
|
|
332
|
+
if (type === 'inner' && draggingNode.data.isNew) {
|
|
333
|
+
return !(draggingNode.level <= dropNode.level)
|
|
334
|
+
} else if (type === 'inner' && !draggingNode.data.isNew) {
|
|
335
|
+
return !(draggingNode.level <= dropNode.level && !dropNode.data.isNew)
|
|
317
336
|
} else {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
337
|
+
return true
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
dropMenu({ data }, toNode, type) {
|
|
341
|
+
if (type === 'inner' && !data.isNew && toNode.data.isNew) {
|
|
342
|
+
data.isNew = true
|
|
343
|
+
} else if ((type === 'before' || type === 'after') && data.isNew) {
|
|
344
|
+
data.isNew = false
|
|
325
345
|
}
|
|
326
|
-
toChild?.forEach((item, i) => {
|
|
327
|
-
item.status = 'U'
|
|
328
|
-
item.sortnum = i + 1 + ''
|
|
329
|
-
item.pmid = toObj.menuid || null
|
|
330
|
-
item.parentTreeNo = toObj.treeno || null
|
|
331
|
-
})
|
|
332
|
-
|
|
333
|
-
this.canApply = true
|
|
334
346
|
},
|
|
335
347
|
clickItem(item) {
|
|
336
|
-
this.configModel = item
|
|
348
|
+
this.configModel = Object.assign({}, item)
|
|
349
|
+
this.configModel.wrap = item.wrap ?? false
|
|
337
350
|
this.configVisible = true
|
|
338
351
|
},
|
|
339
352
|
configSave() {
|
|
340
353
|
this.configVisible = false
|
|
354
|
+
const index = this.dragList.findIndex(
|
|
355
|
+
(item) => item.prop === this.configModel.prop || item.label === this.configModel.label
|
|
356
|
+
)
|
|
357
|
+
if (index > -1) {
|
|
358
|
+
this.dragList[index] = this.configModel
|
|
359
|
+
}
|
|
341
360
|
},
|
|
342
361
|
popOpen() {
|
|
343
362
|
this.dragList = this.checkColumns.filter((col) => !col.static)
|
|
@@ -380,7 +399,6 @@ export default {
|
|
|
380
399
|
!this.isExport && this.autoSave && this.saveColumns(list)
|
|
381
400
|
|
|
382
401
|
this.$emit('setColumns', list)
|
|
383
|
-
this.visible = false
|
|
384
402
|
},
|
|
385
403
|
saveColumns(list) {
|
|
386
404
|
let columns = saveTransform(list, this.labelKey, this.isFilter)
|
|
@@ -393,6 +411,7 @@ export default {
|
|
|
393
411
|
},
|
|
394
412
|
{ loading: false }
|
|
395
413
|
)
|
|
414
|
+
this.visible = false
|
|
396
415
|
},
|
|
397
416
|
getColumns(pageId) {
|
|
398
417
|
return getColumns(pageId || this.pageId, this.userNo, this.columns, this.labelKey)
|
|
@@ -411,6 +430,9 @@ function saveTransform(list, labelKey, isFilter) {
|
|
|
411
430
|
} else if (c.type && ['selection', 'index', 'expand'].includes(c.type)) {
|
|
412
431
|
listN.push({ _colKey: 'type', _colVal: c.type })
|
|
413
432
|
} else {
|
|
433
|
+
if (c.isNew && !c.children) {
|
|
434
|
+
return this.$message.warning($lc(`新增字段必须包含子级!`))
|
|
435
|
+
}
|
|
414
436
|
let sFn = false
|
|
415
437
|
for (let k in c) {
|
|
416
438
|
if (typeof c[k] === 'function') sFn = true
|
|
@@ -483,7 +505,6 @@ export function getColumns(pageId, userNo, columnsT, labelKey = 'label') {
|
|
|
483
505
|
.then(({ data }) => {
|
|
484
506
|
if (data) {
|
|
485
507
|
let _data = JSON.parse(data)
|
|
486
|
-
console.log(_data)
|
|
487
508
|
if (_data && _data.length > 0) {
|
|
488
509
|
let columns = getTransform(_data, columnsT, labelKey)
|
|
489
510
|
return resolve(columns)
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
<vxe-column
|
|
64
64
|
v-for="(subItem, i) in item.children"
|
|
65
65
|
:key="'vxe-table-' + i"
|
|
66
|
-
:className="item.wrap
|
|
66
|
+
:className="item.wrap ? 'vxe-table-custom-wrap' : ''"
|
|
67
67
|
:formatter="subItem.formatter ? subItem.formatter : 'formatName'"
|
|
68
68
|
:filters="subItem.filters"
|
|
69
69
|
:filter-render="subItem.filterRender"
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
</vxe-colgroup>
|
|
75
75
|
<vxe-column
|
|
76
76
|
v-else
|
|
77
|
-
:className="item.wrap
|
|
77
|
+
:className="item.wrap ? 'vxe-table-custom-wrap' : ''"
|
|
78
78
|
:key="'vxe-table-' + i"
|
|
79
79
|
:formatter="item.formatter ? item.formatter : 'formatName'"
|
|
80
80
|
:filters="item.filters"
|
package/src/i18n.json
CHANGED
|
@@ -284,6 +284,36 @@
|
|
|
284
284
|
"404,网络连接失败!": {
|
|
285
285
|
"en": "404, network connection failed!"
|
|
286
286
|
},
|
|
287
|
+
"新增字段": {
|
|
288
|
+
"en": "New field"
|
|
289
|
+
},
|
|
290
|
+
"请填写名称": {
|
|
291
|
+
"en": "Please fill in the name"
|
|
292
|
+
},
|
|
293
|
+
"添加成功": {
|
|
294
|
+
"en": "Added successfully"
|
|
295
|
+
},
|
|
296
|
+
"新增字段必须包含子级!": {
|
|
297
|
+
"en": "New field must contain sub-level!"
|
|
298
|
+
},
|
|
299
|
+
"已有重名字段,请修改": {
|
|
300
|
+
"en": "There is already a field with the same name, please modify"
|
|
301
|
+
},
|
|
302
|
+
"表头设置": {
|
|
303
|
+
"en": "Table header settings"
|
|
304
|
+
},
|
|
305
|
+
"是否折行": {
|
|
306
|
+
"en": "Whether to wrap"
|
|
307
|
+
},
|
|
308
|
+
"表头宽度只能输入正整数": {
|
|
309
|
+
"en": "Table header width can only input positive integers"
|
|
310
|
+
},
|
|
311
|
+
"输入最大宽度不能大于300": {
|
|
312
|
+
"en": "Input maximum width cannot exceed 300"
|
|
313
|
+
},
|
|
314
|
+
"表头宽度": {
|
|
315
|
+
"en": "Table header width"
|
|
316
|
+
},
|
|
287
317
|
"条。": {
|
|
288
318
|
"en": "Article."
|
|
289
319
|
},
|