mooho-base-admin-plus 2.2.13 → 2.3.0
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/history.md +2 -0
- package/package/mooho-base-admin-plus.min.esm.js +174 -120
- package/package/mooho-base-admin-plus.min.js +9 -9
- package/package/style.css +1 -1
- package/package.json +1 -1
- package/src/components/view/column-edit.vue +26 -0
- package/src/components/view/modal-table.vue +7 -0
- package/src/components/view/table-filter.vue +17 -4
- package/src/components/view/view-form-draggable.vue +3 -3
- package/src/components/view/view-form.vue +3 -3
- package/src/components/view/view-table.vue +24 -13
- package/src/styles/css/default.css +6 -0
package/package.json
CHANGED
|
@@ -288,6 +288,32 @@
|
|
|
288
288
|
</Select>
|
|
289
289
|
</FormItem>
|
|
290
290
|
</Col>
|
|
291
|
+
<Col v-bind="grid8" v-if="viewType == 'TableView' && data.controlType == 'Label'">
|
|
292
|
+
<FormItem label="强制单行" key="is_fixed" prop="isSingleLine">
|
|
293
|
+
<Switch
|
|
294
|
+
:model-value="!!data.isSingleLine"
|
|
295
|
+
@update:model-value="
|
|
296
|
+
$event => {
|
|
297
|
+
data.isSingleLine = $event;
|
|
298
|
+
//$forceUpdate();
|
|
299
|
+
}
|
|
300
|
+
"
|
|
301
|
+
/>
|
|
302
|
+
</FormItem>
|
|
303
|
+
</Col>
|
|
304
|
+
<Col v-bind="grid8" v-if="viewType == 'TableView' && data.controlType == 'Label'">
|
|
305
|
+
<FormItem label="固定在最前" key="isFixed" prop="isFixed">
|
|
306
|
+
<Switch
|
|
307
|
+
:model-value="!!data.isFixed"
|
|
308
|
+
@update:model-value="
|
|
309
|
+
$event => {
|
|
310
|
+
data.isFixed = $event;
|
|
311
|
+
//$forceUpdate();
|
|
312
|
+
}
|
|
313
|
+
"
|
|
314
|
+
/>
|
|
315
|
+
</FormItem>
|
|
316
|
+
</Col>
|
|
291
317
|
<Col v-bind="grid8">
|
|
292
318
|
<FormItem label="是否必填" key="isRequired" prop="isRequired">
|
|
293
319
|
<Switch
|
|
@@ -338,12 +338,19 @@
|
|
|
338
338
|
}
|
|
339
339
|
},
|
|
340
340
|
computed: {
|
|
341
|
+
// 表格数据
|
|
341
342
|
data() {
|
|
342
343
|
return this.$refs.table.data;
|
|
343
344
|
},
|
|
345
|
+
// 表格
|
|
344
346
|
table() {
|
|
345
347
|
return this.$refs.table;
|
|
346
348
|
},
|
|
349
|
+
// 筛选条件数据
|
|
350
|
+
filterData() {
|
|
351
|
+
return this.$refs.tableFilter.data;
|
|
352
|
+
},
|
|
353
|
+
// 屏幕宽度
|
|
347
354
|
screenWidth() {
|
|
348
355
|
return document.body.clientWidth * 0.8;
|
|
349
356
|
}
|
|
@@ -239,12 +239,15 @@
|
|
|
239
239
|
import customModelApi from '../../api/customModel';
|
|
240
240
|
import DialogSelect from '../input/dialog-select.vue';
|
|
241
241
|
import dateFormat from 'date-fns/format';
|
|
242
|
+
import { assign, defaultsDeep } from 'lodash';
|
|
242
243
|
|
|
243
244
|
export default {
|
|
244
245
|
mixins: [mixin, mixinPage],
|
|
245
246
|
components: { DialogSelect },
|
|
246
247
|
data() {
|
|
247
|
-
return {
|
|
248
|
+
return {
|
|
249
|
+
data: {}
|
|
250
|
+
};
|
|
248
251
|
},
|
|
249
252
|
async created() {
|
|
250
253
|
this.init();
|
|
@@ -255,7 +258,7 @@
|
|
|
255
258
|
type: Object
|
|
256
259
|
},
|
|
257
260
|
// 筛选项数据
|
|
258
|
-
|
|
261
|
+
filter: {
|
|
259
262
|
type: Object
|
|
260
263
|
},
|
|
261
264
|
// 字段
|
|
@@ -272,6 +275,13 @@
|
|
|
272
275
|
methods: {
|
|
273
276
|
init() {
|
|
274
277
|
let data = this.data;
|
|
278
|
+
|
|
279
|
+
// 默认值
|
|
280
|
+
if (this.filter) {
|
|
281
|
+
defaultsDeep(data, this.filter);
|
|
282
|
+
assign(this.filter, data);
|
|
283
|
+
}
|
|
284
|
+
|
|
275
285
|
this.columns.forEach(item => {
|
|
276
286
|
if (item.defaultValue) {
|
|
277
287
|
if (item.defaultValue == '{today}') {
|
|
@@ -299,6 +309,8 @@
|
|
|
299
309
|
} else if (item.dataType === 'Boolean' && item.defaultValue.toUpperCase == 'FALSE') {
|
|
300
310
|
this.setFilterData(data, item, false);
|
|
301
311
|
} else {
|
|
312
|
+
console.log('this.setFilterData', data, item, item.defaultValue);
|
|
313
|
+
|
|
302
314
|
this.setFilterData(data, item, item.defaultValue);
|
|
303
315
|
}
|
|
304
316
|
}
|
|
@@ -380,7 +392,7 @@
|
|
|
380
392
|
|
|
381
393
|
this.columns
|
|
382
394
|
.filter(column => {
|
|
383
|
-
return !column.isStaticItem && !!(column.source || '').trim() && !!(column.param || '').trim() && !column.dataType.startsWith('Enum:');
|
|
395
|
+
return !column.isStaticItem && !!(column.source || '').trim() && !!(column.param || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'));
|
|
384
396
|
})
|
|
385
397
|
.forEach(column => {
|
|
386
398
|
let param = JSON.parse(column.param);
|
|
@@ -501,6 +513,7 @@
|
|
|
501
513
|
// },
|
|
502
514
|
// 选项变化事件
|
|
503
515
|
onSelectDataChange(sender, selected) {
|
|
516
|
+
console.log('onSelectDataChange', sender, selected);
|
|
504
517
|
let code;
|
|
505
518
|
if (sender.code.endsWith('ID')) {
|
|
506
519
|
code = sender.code.substr(0, sender.code.length - 2);
|
|
@@ -556,7 +569,7 @@
|
|
|
556
569
|
if (
|
|
557
570
|
!column.isStaticItem &&
|
|
558
571
|
!!(column.source || '').trim() &&
|
|
559
|
-
!column.dataType.startsWith('Enum:') &&
|
|
572
|
+
!(column.dataType && column.dataType.startsWith('Enum:')) &&
|
|
560
573
|
(sender == null ||
|
|
561
574
|
sender.triggers.some(item => {
|
|
562
575
|
return item.id === column.id;
|
|
@@ -610,7 +610,7 @@
|
|
|
610
610
|
// 数据源中包含变量需要刷新
|
|
611
611
|
this.columns
|
|
612
612
|
.filter(column => {
|
|
613
|
-
return !!(column.source || '').trim() && !!(column.param || '').trim() && !column.dataType.startsWith('Enum:');
|
|
613
|
+
return !!(column.source || '').trim() && !!(column.param || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'));
|
|
614
614
|
})
|
|
615
615
|
.forEach(column => {
|
|
616
616
|
let param = JSON.parse(column.param);
|
|
@@ -756,7 +756,7 @@
|
|
|
756
756
|
this.columns.forEach(function (column) {
|
|
757
757
|
if (
|
|
758
758
|
!!(column.source || '').trim() &&
|
|
759
|
-
!column.dataType.startsWith('Enum:') &&
|
|
759
|
+
!(column.dataType && column.dataType.startsWith('Enum:')) &&
|
|
760
760
|
(sender == null ||
|
|
761
761
|
sender.triggers.some(item => {
|
|
762
762
|
return item.id === column.id;
|
|
@@ -785,7 +785,7 @@
|
|
|
785
785
|
column.triggers.forEach(item => {
|
|
786
786
|
item.needClear = true;
|
|
787
787
|
});
|
|
788
|
-
} else if (column.needRefresh && !!(column.source || '').trim() && !column.dataType.startsWith('Enum:')) {
|
|
788
|
+
} else if (column.needRefresh && !!(column.source || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'))) {
|
|
789
789
|
let param = this.getParam(this.data, column);
|
|
790
790
|
|
|
791
791
|
if (
|
|
@@ -1011,7 +1011,7 @@
|
|
|
1011
1011
|
// 数据源中包含变量需要刷新
|
|
1012
1012
|
this.columns
|
|
1013
1013
|
.filter(column => {
|
|
1014
|
-
return !column.isStaticItem && !!(column.source || '').trim() && !!(column.param || '').trim() && !column.dataType.startsWith('Enum:');
|
|
1014
|
+
return !column.isStaticItem && !!(column.source || '').trim() && !!(column.param || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'));
|
|
1015
1015
|
})
|
|
1016
1016
|
.forEach(column => {
|
|
1017
1017
|
let param = JSON.parse(column.param);
|
|
@@ -1333,7 +1333,7 @@
|
|
|
1333
1333
|
if (
|
|
1334
1334
|
!column.isStaticItem &&
|
|
1335
1335
|
!!(column.source || '').trim() &&
|
|
1336
|
-
!column.dataType.startsWith('Enum:') &&
|
|
1336
|
+
!(column.dataType && column.dataType.startsWith('Enum:')) &&
|
|
1337
1337
|
(sender == null ||
|
|
1338
1338
|
sender.triggers.some(item => {
|
|
1339
1339
|
return item.code == column.code;
|
|
@@ -1366,7 +1366,7 @@
|
|
|
1366
1366
|
column.triggers.forEach(item => {
|
|
1367
1367
|
item.needClear = true;
|
|
1368
1368
|
});
|
|
1369
|
-
} else if (column.needRefresh && !!(column.source || '').trim() && !column.dataType.startsWith('Enum:')) {
|
|
1369
|
+
} else if (column.needRefresh && !!(column.source || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'))) {
|
|
1370
1370
|
let param = this.getParam(this.data, column);
|
|
1371
1371
|
|
|
1372
1372
|
if (
|
|
@@ -23,20 +23,20 @@
|
|
|
23
23
|
@binding {object} table 表格对象
|
|
24
24
|
@binding {object} filter 筛选对象
|
|
25
25
|
-->
|
|
26
|
-
<slot name="filter" :table="this"
|
|
26
|
+
<slot name="filter" :table="this">
|
|
27
27
|
<!--
|
|
28
28
|
@slot 自定义筛选栏
|
|
29
29
|
-->
|
|
30
30
|
<slot name="customFilter"></slot>
|
|
31
|
-
<table-filter ref="tableFilter" :
|
|
32
|
-
<template #column="{
|
|
31
|
+
<table-filter ref="tableFilter" :filter="filter" :columns="filterColumns" :table-view="tableView" @on-keyup="onKeyup">
|
|
32
|
+
<template #column="{ column }">
|
|
33
33
|
<!--
|
|
34
34
|
@slot 筛选栏自定义列
|
|
35
35
|
@binding {object} filter 筛选条件对象
|
|
36
36
|
@binding {object} column 列对象
|
|
37
37
|
@binding {string} code 列代码
|
|
38
38
|
-->
|
|
39
|
-
<slot name="filterColumn" :
|
|
39
|
+
<slot name="filterColumn" :column="column" :code="column.code"></slot>
|
|
40
40
|
</template>
|
|
41
41
|
</table-filter>
|
|
42
42
|
<Col v-bind="getGrid(tableView.filterWidth)" :style="{ 'text-align': tableView.filterAlign == null ? 'left' : tableView.filterAlign.toLowerCase() }">
|
|
@@ -121,7 +121,11 @@
|
|
|
121
121
|
<slot name="column" :row="rowData(row, index)" :index="index" :column="column" :code="column.code"></slot>
|
|
122
122
|
</template>
|
|
123
123
|
<template v-else-if="column.controlType === 'Label'">
|
|
124
|
-
<div
|
|
124
|
+
<div
|
|
125
|
+
:title="column.isSingleLine ? showData(rowData(row, index), column) : null"
|
|
126
|
+
:class="{ 'single-line': column.isSingleLine }"
|
|
127
|
+
v-html="showData(rowData(row, index), column)"
|
|
128
|
+
></div>
|
|
125
129
|
</template>
|
|
126
130
|
<template v-else-if="column.controlType === 'Hyperlink'">
|
|
127
131
|
<a :href="getHyperlink(rowData(row, index), column.hyperlink)" :target="column.isNewWindow ? '_blank' : ''">
|
|
@@ -902,6 +906,10 @@
|
|
|
902
906
|
} else {
|
|
903
907
|
return this.height;
|
|
904
908
|
}
|
|
909
|
+
},
|
|
910
|
+
// 筛选条件数据
|
|
911
|
+
filterData() {
|
|
912
|
+
return this.$refs.tableFilter.data;
|
|
905
913
|
}
|
|
906
914
|
},
|
|
907
915
|
watch: {
|
|
@@ -976,6 +984,7 @@
|
|
|
976
984
|
|
|
977
985
|
this.columns.forEach(column => {
|
|
978
986
|
column.name = this.getNameI18n(column);
|
|
987
|
+
column.fixed = column.isFixed ? 'left' : null;
|
|
979
988
|
});
|
|
980
989
|
|
|
981
990
|
if (this.tableView.snEnable) {
|
|
@@ -1501,8 +1510,8 @@
|
|
|
1501
1510
|
* @public
|
|
1502
1511
|
*/
|
|
1503
1512
|
resetFilter() {
|
|
1504
|
-
for (let key in this.
|
|
1505
|
-
delete this.
|
|
1513
|
+
for (let key in this.filterData) {
|
|
1514
|
+
delete this.filterData[key];
|
|
1506
1515
|
}
|
|
1507
1516
|
|
|
1508
1517
|
//this.$forceUpdate();
|
|
@@ -1668,7 +1677,7 @@
|
|
|
1668
1677
|
|
|
1669
1678
|
//this.$forceUpdate();
|
|
1670
1679
|
} else {
|
|
1671
|
-
if (!!(column.source || '').trim() && !column.dataType.startsWith('Enum:')) {
|
|
1680
|
+
if (!!(column.source || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'))) {
|
|
1672
1681
|
this.data.forEach(row => {
|
|
1673
1682
|
if (row._dataSource && row._dataSource[column.code]) {
|
|
1674
1683
|
return;
|
|
@@ -1696,7 +1705,7 @@
|
|
|
1696
1705
|
// 数据源中包含变量需要刷新
|
|
1697
1706
|
this.columns
|
|
1698
1707
|
.filter(column => {
|
|
1699
|
-
return !column.isStaticItem && !!(column.source || '').trim() && !!(column.param || '').trim() && !column.dataType.startsWith('Enum:');
|
|
1708
|
+
return !column.isStaticItem && !!(column.source || '').trim() && !!(column.param || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'));
|
|
1700
1709
|
})
|
|
1701
1710
|
.forEach(column => {
|
|
1702
1711
|
let param = JSON.parse(column.param);
|
|
@@ -1910,7 +1919,7 @@
|
|
|
1910
1919
|
if (
|
|
1911
1920
|
!column.isStaticItem &&
|
|
1912
1921
|
!!(column.source || '').trim() &&
|
|
1913
|
-
!column.dataType.startsWith('Enum:') &&
|
|
1922
|
+
!(column.dataType && column.dataType.startsWith('Enum:')) &&
|
|
1914
1923
|
(sender == null ||
|
|
1915
1924
|
sender.triggers.some(item => {
|
|
1916
1925
|
return item.code == column.code;
|
|
@@ -1941,7 +1950,7 @@
|
|
|
1941
1950
|
column.triggers.forEach(item => {
|
|
1942
1951
|
data._needClear[item.code] = true;
|
|
1943
1952
|
});
|
|
1944
|
-
} else if (data._needRefresh[column.code] && !!(column.source || '').trim() && !column.dataType.startsWith('Enum:')) {
|
|
1953
|
+
} else if (data._needRefresh[column.code] && !!(column.source || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'))) {
|
|
1945
1954
|
let param = this.getParam(data, column, this.parentData);
|
|
1946
1955
|
|
|
1947
1956
|
if (
|
|
@@ -2083,9 +2092,11 @@
|
|
|
2083
2092
|
},
|
|
2084
2093
|
// 合并后最终的筛选项
|
|
2085
2094
|
getAllFilter() {
|
|
2095
|
+
console.log('getAllFilter');
|
|
2096
|
+
|
|
2086
2097
|
let filter = {
|
|
2087
2098
|
...this.viewFilter,
|
|
2088
|
-
...this.
|
|
2099
|
+
...this.filterData
|
|
2089
2100
|
};
|
|
2090
2101
|
|
|
2091
2102
|
for (let key in filter) {
|
|
@@ -2101,7 +2112,7 @@
|
|
|
2101
2112
|
let data = this.staticData;
|
|
2102
2113
|
|
|
2103
2114
|
if (!this.filterDisable) {
|
|
2104
|
-
let filter = this.
|
|
2115
|
+
let filter = this.filterData;
|
|
2105
2116
|
|
|
2106
2117
|
for (let key in filter) {
|
|
2107
2118
|
let column = key;
|