cnhis-design-vue 0.3.6-beta → 0.3.9-beta

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.
Files changed (49) hide show
  1. package/es/big-table/index.css +785 -6
  2. package/es/big-table/index.js +782 -136
  3. package/es/button-print/index.css +811 -8
  4. package/es/button-print/index.js +2 -3
  5. package/es/drag-layout/index.css +1044 -11
  6. package/es/drag-layout/index.js +2 -3
  7. package/es/grid/index.css +1045 -11
  8. package/es/grid/index.js +2 -3
  9. package/es/index.css +1044 -11
  10. package/es/index.js +787 -144
  11. package/package.json +4 -1
  12. package/packages/big-table/index.ts +8 -3
  13. package/packages/big-table/src/BigTable.vue +105 -32
  14. package/packages/big-table/src/FieldSet.vue +477 -0
  15. package/packages/big-table/src/assets/style/table-base.less +77 -75
  16. package/packages/big-table/src/assets/style/table-global.less +1 -1
  17. package/packages/big-table/src/bigTableProps.ts +1 -1
  18. package/packages/big-table/src/bigTableState.ts +1 -0
  19. package/packages/big-table/src/components/edit-form/edit-input.vue +19 -0
  20. package/packages/big-table/src/components/edit-form/edit-select-table.vue +131 -0
  21. package/packages/big-table/src/components/edit-form/edit-select.vue +57 -0
  22. package/packages/big-table/src/components/{edit-form → edit-form3}/EditForm.vue +0 -0
  23. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-date-picker/edit-date-picker.vue +0 -0
  24. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-digital/edit-digital.vue +0 -0
  25. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-input/edit-input.vue +0 -0
  26. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-input-password/edit-input-password.vue +0 -0
  27. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-month-picker/edit-month-picker.vue +0 -0
  28. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-search/edit-search.vue +0 -0
  29. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-search-more/edit-search-more.vue +0 -0
  30. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-select/edit-select.vue +0 -0
  31. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-select-multiple/edit-select-multiple.vue +0 -0
  32. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-textarea/edit-textarea.vue +0 -0
  33. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/edit-time-picker/edit-time-picker.vue +0 -0
  34. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/editFormProps.ts +0 -0
  35. package/packages/big-table/src/components/{edit-form → edit-form3}/edit-component/register-com.ts +0 -0
  36. package/packages/big-table/src/components/{edit-form → edit-form3}/hooks/useConfigData.ts +0 -0
  37. package/packages/big-table/src/components/{edit-form → edit-form3}/hooks/useDateType.ts +0 -0
  38. package/packages/big-table/src/components/{edit-form → edit-form3}/hooks/useFormCommon.ts +0 -0
  39. package/packages/big-table/src/components/{edit-form → edit-form3}/hooks/useItemDefault.ts +0 -0
  40. package/packages/big-table/src/components/{edit-form → edit-form3}/hooks/useSearch.ts +0 -0
  41. package/packages/big-table/src/components/{edit-form → edit-form3}/hooks/useValidateRules.ts +0 -0
  42. package/packages/big-table/src/components/{edit-form → edit-form3}/interface.ts +0 -0
  43. package/packages/big-table/src/components/{edit-form → edit-form3}/types.ts +0 -0
  44. package/packages/big-table/src/components/{edit-form → edit-form3}/utils.ts +0 -0
  45. package/packages/big-table/src/hooks/useEdit.ts +73 -0
  46. package/packages/big-table/src/hooks/useTableParse.ts +2 -2
  47. package/packages/button-print/index.ts +3 -3
  48. package/packages/drag-layout/index.ts +3 -3
  49. package/packages/grid/index.ts +3 -3
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
3
  "private": false,
4
- "version": "0.3.6-beta",
4
+ "version": "0.3.9-beta",
5
5
  "main": "es/index.js",
6
+ "module": "es/index.js",
6
7
  "scripts": {
7
8
  "dev": "vite --host --port 3200",
8
9
  "build:docs": "vite build",
@@ -36,6 +37,7 @@
36
37
  "@rollup/plugin-node-resolve": "^13.1.3",
37
38
  "@vitejs/plugin-vue": "^2.2.0",
38
39
  "@vitejs/plugin-vue-jsx": "^1.3.8",
40
+ "@vue/compiler-sfc": "^3.2.33",
39
41
  "autoprefixer": "^10.4.4",
40
42
  "cssnano": "^5.1.7",
41
43
  "eslint": "^8.10.0",
@@ -43,6 +45,7 @@
43
45
  "eslint-plugin-vue": "^8.5.0",
44
46
  "less": "^4.1.2",
45
47
  "rollup": "^2.70.0",
48
+ "rollup-plugin-delete": "^2.0.0",
46
49
  "rollup-plugin-esbuild": "^4.9.1",
47
50
  "rollup-plugin-external-globals": "^0.6.1",
48
51
  "rollup-plugin-jsx": "^1.0.3",
@@ -2,16 +2,21 @@ import type { App } from "vue";
2
2
  // import XEUtils from "xe-utils";
3
3
  // 导入组件
4
4
  import BigTable from "./src/BigTable.vue"
5
+ import FieldSet from './src/FieldSet.vue'
5
6
 
6
- type SFCWithInstall<T> = T & { install(app: App): void }; // vue 安装
7
+ // type SFCWithInstall<T> = T & { install(app: App): void }; // vue 安装
7
8
 
8
9
  // 为组件提供 install 安装方法,供按需引入
9
10
  BigTable.install = function(app: App) {
10
11
  app.component(BigTable.name, BigTable);
12
+ app.component(FieldSet.name, FieldSet)
11
13
  // app.config.globalProperties.$utils = XEUtils;
12
14
  };
13
15
 
14
- const CBigTable: SFCWithInstall<typeof BigTable> = BigTable; // 增加类型
16
+ // const CBigTable: SFCWithInstall<typeof BigTable> = BigTable; // 增加类型
15
17
 
18
+ Object.assign(BigTable, {
19
+ FieldSet
20
+ });
16
21
  // 默认导出组件
17
- export default CBigTable;
22
+ export default BigTable;
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div
3
- class="big-table"
3
+ class="big-table custom-big-table"
4
4
  :class="{
5
5
  mt: state.visibleCheckAllWrap || state.visibleTreeCheck || state.hasRefresh,
6
6
  'expand-padding': !props.isNestTable,
@@ -87,7 +87,7 @@
87
87
  :scroll-x="{ enabled: false }"
88
88
  :scroll-y="{ gt: 50 }"
89
89
  :row-style="getRowStyle"
90
- :edit-config="{ trigger: 'manual', mode: 'row', autoClear: false, showIcon: false }"
90
+ :edit-config="state.editConfig"
91
91
  :expand-config="{
92
92
  lazy: true,
93
93
  accordion: columnConfig && columnConfig.accordion,
@@ -162,7 +162,7 @@ export default create({
162
162
  </script>
163
163
 
164
164
  <script lang="tsx" setup>
165
- import { computed, nextTick, onMounted, reactive, ref, useAttrs, watch, h, resolveComponent, onActivated, onUnmounted } from "vue";
165
+ import { computed, nextTick, onMounted, reactive, ref, useAttrs, watch, isReactive, shallowReactive, onActivated, onUnmounted } from "vue";
166
166
  import { useRoute } from 'vue-router';
167
167
  import bigTableState from "./bigTableState";
168
168
  import bigTableProps from "./bigTableProps";
@@ -171,12 +171,16 @@ import { useFormat } from "./hooks/useFormat";
171
171
  import { useTableParse } from "./hooks/useTableParse";
172
172
  import { useBatchEditing } from "./hooks/useBatchEditing";
173
173
  import { useNestTable } from "./hooks/useNestTable";
174
+ import { useEdit } from './hooks/useEdit';
174
175
  import { SettingsSharp, SyncOutline, CopyOutline, CaretDown, CaretForward } from "@vicons/ionicons5";
175
176
  import NoData from "./components/NoData.vue";
176
177
  import TextOverTooltip from "./components/TextOverTooltip.vue";
177
178
  // import SvgIcon from '@/component/svg/index.vue';
178
179
  import SvgIcon from "./components/SvgIcon.vue";
179
180
  // import EditForm from './components/edit-form/EditForm.vue';
181
+ import EditSelectTable from './components/edit-form/edit-select-table.vue'
182
+ import EditInput from './components/edit-form/edit-input.vue'
183
+ import EditSelect from './components/edit-form/edit-select.vue'
180
184
  import {
181
185
  NButton,
182
186
  NCheckbox,
@@ -191,7 +195,10 @@ import {
191
195
  NSwitch,
192
196
  NPopover,
193
197
  NDropdown,
194
- NPopconfirm
198
+ NPopconfirm,
199
+ NSelect,
200
+ NPagination,
201
+ NEmpty
195
202
  } from "naive-ui";
196
203
  import { useMessage } from 'naive-ui'
197
204
  import CGrid from '~/grid';
@@ -269,6 +276,7 @@ const {
269
276
  recordClickBtnInfo,
270
277
  getInlineOpreateRow
271
278
  }: any = useBatchEditing(props, state, emit, xGrid);
279
+ const { initEditTable, activeMethod, deleteRow, onClickSelectTable } = useEdit(props, state, emit, xGrid)
272
280
 
273
281
  const {
274
282
  isAboutNestTable,
@@ -351,6 +359,7 @@ const treeConfig = computed(() => {
351
359
  }
352
360
  return result;
353
361
  });
362
+
354
363
  const hideAllWrap = (e: any) => {
355
364
  const path = e.path || (e.composedPath && e.composedPath());
356
365
  const noWrap = (className: string) => {
@@ -373,7 +382,8 @@ const unBindDocumentClick = () => {
373
382
  }
374
383
  onMounted(() => {
375
384
  bindDocumentClick();
376
- state.tableHeight = handleTableHeight(state, props);
385
+ // state.tableHeight = handleTableHeight(state, props);
386
+ state.tableHeight = '520px'
377
387
 
378
388
  // // 子列表在mounted后初始化 直接watch无法触发
379
389
  if (!props.isNestTable) return;
@@ -411,7 +421,6 @@ const loadColumn = (config: any) => {
411
421
  // this.hasOnlyIcon = config.hasOnlyIcon;
412
422
  let columns = formatColumns(config);
413
423
  columns = handleGroupColums(columns, props);
414
- console.log("columns--------------", columns);
415
424
  xGrid.value && xGrid.value.reloadColumn(columns);
416
425
 
417
426
  setGroupTreeExpand();
@@ -422,14 +431,13 @@ const loadData = async (data: any) => {
422
431
  state.isShowEmpty = !data?.length;
423
432
 
424
433
  const list = JSON.parse(JSON.stringify(data));
425
- console.log("list--------------", list);
434
+ // console.log("list--------------", list);
426
435
  let table = xGrid.value;
427
436
  if (!table) return;
428
437
  let formatList = setChecklist(list);
429
438
  state.originFormatList = formatList;
430
439
 
431
440
  setGroupTitleToFristColumnFieldData(formatList);
432
- console.log("formatList--------------", formatList);
433
441
  state.curAbleCheckedLen = list.filter((item: any) => checkMethod({ row: item })).length;
434
442
 
435
443
  // 非子列表触发
@@ -437,14 +445,23 @@ const loadData = async (data: any) => {
437
445
  await handleFormTheUniqueKey();
438
446
  }
439
447
 
448
+ formatList = formatList.map((v: any) => {
449
+ return {
450
+ ...v,
451
+ selectTableShow: false,
452
+ selectTableDisable: false
453
+ }
454
+ })
455
+
440
456
  // reloadData 替换 loadData 保存setting之后需要表格重新reload
441
457
  // loadData 加载数据
442
458
  // reloadData 加载数据并清除所有状态
443
459
  // 暂时 不知道是否影响其它????
444
460
  // 还是用loadData较好,树表展开需要在更新数据后保留上一次的状态
445
461
  // table.clearSort(); // <-- table.loadData 不会清空sort选项,导致sortChange重复触发
446
- console.log("table--------------", formatList);
447
462
  await table.loadData(formatList);
463
+ initEditTable()
464
+
448
465
 
449
466
  table.setCurrentRow({});
450
467
  setCurrentPageRowChecked();
@@ -504,7 +521,14 @@ const formatColumns = (map: any) => {
504
521
  */
505
522
  // 配置列表
506
523
  let { selectType } = getOtherConfigInit() || {};
507
- let { isBatchSelect, fieldList, showButtonTop, isScanMultiTable } = map;
524
+ let { isBatchSelect, fieldList, showButtonTop, isScanMultiTable, isEdit = false, editConfig = {} } = map;
525
+ if (isEdit) {
526
+ state.editConfig = Object.assign(state.editConfig, editConfig, {
527
+ mode: 'cell',
528
+ autoClear: true,
529
+ activeMethod
530
+ })
531
+ }
508
532
  if (selectType) {
509
533
  // 有设置 selectType 强制可选。
510
534
  isBatchSelect = 1;
@@ -553,7 +577,7 @@ const formatColumns = (map: any) => {
553
577
  slots: {
554
578
  header: () => {
555
579
  return [
556
- tableNoSetting.value ? null : <NIcon size="14" color="#0e7a0d" component={SettingsSharp} onClick={() => showDrawer()} />
580
+ tableNoSetting.value ? null : <NIcon size="14" color="#777" component={SettingsSharp} onClick={() => showDrawer()} />
557
581
  ];
558
582
  },
559
583
  },
@@ -623,12 +647,28 @@ const formatColumns = (map: any) => {
623
647
  showOverflow: "title",
624
648
  treeNode: treeNode,
625
649
  type: type,
650
+ // slots: {
651
+ // default: (params: any) => {
652
+ // return formatter(params, item);
653
+ // },
654
+ // },
626
655
  slots: {
627
- default: (params: any) => {
628
- return formatter(params, item);
656
+ edit: (params: any) => {
657
+ if (isEdit && item.isEdit && item.columnName !== 'operatorColumn') {
658
+ return formatterEdit(params, item)
659
+ } else {
660
+ return <span>{params.row[item.columnName]}</span>
661
+ }
629
662
  },
663
+ default: (params: any) => {
664
+ if(!isEdit || item.columnName === 'operatorColumn' || !item.isEdit) {
665
+ return formatter(params, item)
666
+ } else {
667
+ return <span>{params.row[item.columnName]}</span>
668
+ }
669
+ }
630
670
  },
631
- editRender: generateEditRender(item),
671
+ editRender: isEdit ? {} : generateEditRender(item)
632
672
  });
633
673
 
634
674
  if (filterField && !props.isNestTable && !isScanMultiTable) {
@@ -669,6 +709,43 @@ const formatColumns = (map: any) => {
669
709
  state.columnLen = currentColumns.filter((item: any) => item.visible).length;
670
710
  return columns;
671
711
  };
712
+ const formatterEdit = (params: any, col: any) => {
713
+ let { row, column, $rowIndex, rowIndex } = params
714
+ let formType = column.formType || col.formType
715
+ if (formType === 'selectTable') {
716
+ const propsData = {
717
+ row,
718
+ col
719
+ }
720
+ return <EditSelectTable {...propsData} v-model={[row[col.columnName], 'value']} onClickSelectTable={onClickSelectTable} />
721
+ }
722
+ if (formType === 'input') {
723
+ return <EditInput v-model={[row[col.columnName], 'value']} />
724
+ }
725
+ if (formType === 'select') {
726
+ const propsData = {
727
+ col,
728
+ row
729
+ }
730
+ return <EditSelect {...propsData} v-model={[row[col.columnName], 'value']} onSetOptions={(options: any[]) => row[`${col.columnName}_options`] = options} />
731
+ }
732
+ }
733
+ const getEditBtn = (row: any, col: any) => {
734
+ return col.tileBtnList.map((btn: any) => {
735
+ if (btn.settingObj[0].trigger_type === 'DELETE') {
736
+ return <NPopconfirm
737
+ onPositiveClick={() => deleteRow(row)}
738
+ >
739
+ {{
740
+ trigger: () => <NButton color={btn.settingObj[0].color || '#999'} text>{btn.name}</NButton>,
741
+ default: () => '是否确认删除?'
742
+ }}
743
+ </NPopconfirm>
744
+ } else {
745
+ return null
746
+ }
747
+ })
748
+ }
672
749
  // 表格渲染逻辑
673
750
  const formatter = (params: any, col: any) => {
674
751
  let { row, column, $rowIndex } = params;
@@ -750,8 +827,11 @@ const formatter = (params: any, col: any) => {
750
827
  if (attrType === "QR_CODE") {
751
828
  return getOrCode(row, own, attrType);
752
829
  }
753
-
754
830
  if (column.property === "operatorColumn") {
831
+ if (props.columnConfig.isEdit && !row.initRow) {
832
+ return getEditBtn(row, col)
833
+ }
834
+
755
835
  if (state.showButtonTop != 0 || props.isBatchEditing) return;
756
836
  const inlineBtnList = generateInlineBtnList(row, $rowIndex);
757
837
  const tileBtnList = getTileBtnList(row, $rowIndex);
@@ -761,7 +841,7 @@ const formatter = (params: any, col: any) => {
761
841
  {tileBtnList}
762
842
  {foldBtnList}
763
843
  {inlineBtnList}
764
- </span>,
844
+ </span>
765
845
  ];
766
846
  }
767
847
 
@@ -1410,11 +1490,12 @@ const setCheckedMehod = (setChecked: any, row: any) => {
1410
1490
  }
1411
1491
  //行点击
1412
1492
  const handlerClickRow = (data: any) => {
1413
- console.log("data");
1493
+ // console.log("data.", data);
1414
1494
  if (isScanMultiTable.value || props.isInlineOperating) return false;
1415
1495
  if (vexutils.has(data?.row, GROUP_TITLE_KEY)) return false;
1416
1496
  if (state.isTriggerSelectionChange && state.isTree == 0) return false;
1417
1497
  let table = xGrid.value;
1498
+
1418
1499
  // 嵌套表与主表click切换时需要清除上次的选中
1419
1500
  isAboutNestTable.value && emit('resetNestLastClickTable', table);
1420
1501
 
@@ -1974,7 +2055,7 @@ const generateInlineBtnList = (row: any, index: any) => {
1974
2055
  ];
1975
2056
  };
1976
2057
  // 按钮 jsx
1977
- const getTileBtnList = (row: any, index: any) => {
2058
+ const getTileBtnList = (row: any, index: number) => {
1978
2059
  return [
1979
2060
  (row.tileBtnList?.length &&
1980
2061
  row.tileBtnList.map((btn: any, j: any) => {
@@ -2010,7 +2091,7 @@ const getTileBtnList = (row: any, index: any) => {
2010
2091
  ];
2011
2092
  };
2012
2093
  // 按钮事件
2013
- const clickBtn = (row: any, btn: any, index: any, e: any, j: any) => {
2094
+ const clickBtn = (row: any, btn: any, index: number, e: any, j: any) => {
2014
2095
  e.preventDefault();
2015
2096
  e.stopPropagation();
2016
2097
  recordClickBtnInfo(row, index);
@@ -2049,7 +2130,7 @@ const getBtnIcon = (btn: any, mr = "8px") => {
2049
2130
  return [icon];
2050
2131
  };
2051
2132
  // 按钮 jsx
2052
- const getFoldBtnList = (row: any, index: any) => {
2133
+ const getFoldBtnList = (row: any, index: number) => {
2053
2134
  const getOptions = () => {
2054
2135
  return row.foldBtnList.map((b: any, j: any) => {
2055
2136
  return {
@@ -2493,19 +2574,11 @@ const clearChecked = () => {
2493
2574
  state.treeTableLength = 0;
2494
2575
  }
2495
2576
  defineExpose({
2496
- loadColumnAndData,
2497
- getCheckboxRecords,
2498
- clearChecked,
2499
- setCurrentRow,
2500
- loadColumn,
2501
- removeInsert
2577
+ formatData,
2578
+ xGrid
2502
2579
  })
2503
2580
 
2504
2581
  </script>
2505
- <style lang="less" scoped>
2506
- @import "./assets/style/table-base.less";
2507
- </style>
2508
-
2509
- <style lang="less">
2510
- @import "./assets/style/table-global.less";
2582
+ <style lang="less" src="./assets/style/table-base.less"></style>
2583
+ <style lang="less" src="./assets/style/table-global.less">
2511
2584
  </style>