mooho-base-admin-plus 2.2.13 → 2.2.15
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 +5 -0
- package/package/mooho-base-admin-plus.min.esm.js +185 -130
- package/package/mooho-base-admin-plus.min.js +12 -12
- package/package/style.css +1 -1
- package/package.json +1 -1
- package/public/setting.js +3 -1
- package/src/components/view/column-edit.vue +26 -0
- package/src/components/view/modal-table.vue +16 -7
- package/src/components/view/table-filter.vue +14 -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 +23 -14
- package/src/setting.js +3 -1
- package/src/styles/css/default.css +6 -0
package/package.json
CHANGED
package/public/setting.js
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
|
|
@@ -28,7 +28,6 @@
|
|
|
28
28
|
ref="table"
|
|
29
29
|
:view-code="viewCode"
|
|
30
30
|
:static="this.static"
|
|
31
|
-
:filter="tableFilter"
|
|
32
31
|
:setting-enable="settingEnable"
|
|
33
32
|
:auto-load="false"
|
|
34
33
|
:select-enable="selectEnable"
|
|
@@ -143,8 +142,7 @@
|
|
|
143
142
|
return {
|
|
144
143
|
opened: false,
|
|
145
144
|
tableView: {},
|
|
146
|
-
param: {}
|
|
147
|
-
tableFilter: {}
|
|
145
|
+
param: {}
|
|
148
146
|
};
|
|
149
147
|
},
|
|
150
148
|
created() {},
|
|
@@ -338,12 +336,19 @@
|
|
|
338
336
|
}
|
|
339
337
|
},
|
|
340
338
|
computed: {
|
|
339
|
+
// 表格数据
|
|
341
340
|
data() {
|
|
342
341
|
return this.$refs.table.data;
|
|
343
342
|
},
|
|
343
|
+
// 表格
|
|
344
344
|
table() {
|
|
345
345
|
return this.$refs.table;
|
|
346
346
|
},
|
|
347
|
+
// 筛选条件数据
|
|
348
|
+
filterData() {
|
|
349
|
+
return this.$refs.table.filterData;
|
|
350
|
+
},
|
|
351
|
+
// 屏幕宽度
|
|
347
352
|
screenWidth() {
|
|
348
353
|
return document.body.clientWidth * 0.8;
|
|
349
354
|
}
|
|
@@ -367,14 +372,18 @@
|
|
|
367
372
|
* @public
|
|
368
373
|
*/
|
|
369
374
|
open(param) {
|
|
370
|
-
|
|
371
|
-
|
|
375
|
+
if (this.param) {
|
|
376
|
+
for (let key in this.param) {
|
|
377
|
+
delete this.filterData[key];
|
|
378
|
+
}
|
|
372
379
|
}
|
|
373
380
|
|
|
374
381
|
this.param = param;
|
|
375
382
|
|
|
376
|
-
|
|
377
|
-
|
|
383
|
+
if (this.param) {
|
|
384
|
+
for (let key in this.param) {
|
|
385
|
+
this.filterData[key] = this.param[key];
|
|
386
|
+
}
|
|
378
387
|
}
|
|
379
388
|
|
|
380
389
|
setTimeout(() => {
|
|
@@ -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}') {
|
|
@@ -380,7 +390,7 @@
|
|
|
380
390
|
|
|
381
391
|
this.columns
|
|
382
392
|
.filter(column => {
|
|
383
|
-
return !column.isStaticItem && !!(column.source || '').trim() && !!(column.param || '').trim() && !column.dataType.startsWith('Enum:');
|
|
393
|
+
return !column.isStaticItem && !!(column.source || '').trim() && !!(column.param || '').trim() && !(column.dataType && column.dataType.startsWith('Enum:'));
|
|
384
394
|
})
|
|
385
395
|
.forEach(column => {
|
|
386
396
|
let param = JSON.parse(column.param);
|
|
@@ -556,7 +566,7 @@
|
|
|
556
566
|
if (
|
|
557
567
|
!column.isStaticItem &&
|
|
558
568
|
!!(column.source || '').trim() &&
|
|
559
|
-
!column.dataType.startsWith('Enum:') &&
|
|
569
|
+
!(column.dataType && column.dataType.startsWith('Enum:')) &&
|
|
560
570
|
(sender == null ||
|
|
561
571
|
sender.triggers.some(item => {
|
|
562
572
|
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 ? this.$refs.tableFilter.data : null;
|
|
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) {
|
|
@@ -1063,7 +1072,7 @@
|
|
|
1063
1072
|
if (this.tableView.size) {
|
|
1064
1073
|
this.size = this.tableView.size;
|
|
1065
1074
|
} else if (this.tableView.pageEnable && this.pageEnable) {
|
|
1066
|
-
this.size =
|
|
1075
|
+
this.size = Setting.layout.pageSize;
|
|
1067
1076
|
} else {
|
|
1068
1077
|
this.size = 1000;
|
|
1069
1078
|
}
|
|
@@ -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 (
|
|
@@ -2085,7 +2094,7 @@
|
|
|
2085
2094
|
getAllFilter() {
|
|
2086
2095
|
let filter = {
|
|
2087
2096
|
...this.viewFilter,
|
|
2088
|
-
...this.
|
|
2097
|
+
...(this.filterData ?? {})
|
|
2089
2098
|
};
|
|
2090
2099
|
|
|
2091
2100
|
for (let key in filter) {
|
|
@@ -2101,7 +2110,7 @@
|
|
|
2101
2110
|
let data = this.staticData;
|
|
2102
2111
|
|
|
2103
2112
|
if (!this.filterDisable) {
|
|
2104
|
-
let filter = this.
|
|
2113
|
+
let filter = this.filterData;
|
|
2105
2114
|
|
|
2106
2115
|
for (let key in filter) {
|
|
2107
2116
|
let column = key;
|
package/src/setting.js
CHANGED