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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mooho-base-admin-plus",
3
3
  "description": "MOOHO basic framework for admin by Vue3",
4
- "version": "2.2.13",
4
+ "version": "2.3.0",
5
5
  "author": "jinyifan <jinyifan@mooho.com.cn>",
6
6
  "license": "MIT",
7
7
  "private": false,
@@ -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
- data: {
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" :filter="filter">
26
+ <slot name="filter" :table="this">
27
27
  <!--
28
28
  @slot 自定义筛选栏
29
29
  -->
30
30
  <slot name="customFilter"></slot>
31
- <table-filter ref="tableFilter" :data="filter" :columns="filterColumns" :table-view="tableView" @on-keyup="onKeyup">
32
- <template #column="{ filter, 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" :filter="filter" :column="column" :code="column.code"></slot>
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 v-html="showData(rowData(row, index), column)"></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.filter) {
1505
- delete this.filter[key];
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.filter
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.filter;
2115
+ let filter = this.filterData;
2105
2116
 
2106
2117
  for (let key in filter) {
2107
2118
  let column = key;
@@ -584,3 +584,9 @@
584
584
  ::-webkit-scrollbar-track {
585
585
  background-color: transparent;
586
586
  }
587
+
588
+ .single-line {
589
+ overflow: hidden;
590
+ text-overflow: ellipsis;
591
+ white-space: nowrap;
592
+ }