olp-table 5.3.7 → 5.5.1

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 (171) hide show
  1. package/{olp-table/olp-table.common.js → olp-table.common.js} +67 -67
  2. package/{olp-table/olp-table.umd.js → olp-table.umd.js} +67 -67
  3. package/{olp-table/olp-table.umd.min.js → olp-table.umd.min.js} +67 -67
  4. package/package.json +7 -87
  5. package/.env.build +0 -1
  6. package/.env.prod +0 -1
  7. package/README.md +0 -26
  8. package/babel.config.js +0 -5
  9. package/jsconfig.json +0 -22
  10. package/public/favicon.ico +0 -0
  11. package/public/index.html +0 -17
  12. package/rmMode.bat +0 -1
  13. package/src/App.vue +0 -199
  14. package/src/api/crud.js +0 -22
  15. package/src/api/dist.js +0 -6
  16. package/src/assets/iconfont/iconfont.css +0 -20
  17. package/src/assets/iconfont/iconfont.json +0 -16
  18. package/src/assets/iconfont/iconfont.ttf +0 -0
  19. package/src/assets/iconfont/iconfont.woff +0 -0
  20. package/src/assets/iconfont/iconfont.woff2 +0 -0
  21. package/src/assets/logo.png +0 -0
  22. package/src/components/auto-height/index.vue +0 -75
  23. package/src/components/codemirror-tag.vue +0 -100
  24. package/src/components/lazy-load-select.vue +0 -107
  25. package/src/components/ol-dialog-excel.vue +0 -112
  26. package/src/components/ol-dialog-import.vue +0 -304
  27. package/src/components/ol-dialog-json.vue +0 -83
  28. package/src/components/ol-dialog-table.vue +0 -81
  29. package/src/components/ol-dialog-upload-file.vue +0 -208
  30. package/src/components/ol-dict-tag.vue +0 -271
  31. package/src/components/ol-select-dom.vue +0 -71
  32. package/src/components/ol-table-filter.vue +0 -28
  33. package/src/components/ol-table-render.vue +0 -44
  34. package/src/components/ol-table-select.vue +0 -154
  35. package/src/components/pinia-init.vue +0 -18
  36. package/src/components/table/model/ModelMixins.js +0 -43
  37. package/src/components/table/model/model-index.vue +0 -124
  38. package/src/components/table/model/ot-left-right.vue +0 -18
  39. package/src/components/table/model/ot-left-tree-right-table.scss +0 -14
  40. package/src/components/table/model/ot-left-tree-right-table.vue +0 -41
  41. package/src/components/table/model/ot-top-1-bottom-2.vue +0 -39
  42. package/src/components/table/model/ot-top-2-bottom-1.vue +0 -38
  43. package/src/components/table/model/ot-top-2-bottom-2.vue +0 -38
  44. package/src/components/table/model/ot-top-bottom.vue +0 -18
  45. package/src/components/table/model/splitpanesModel.css +0 -22
  46. package/src/components/table/model/splitpanesModel.vue +0 -54
  47. package/src/components/table/ol-form/index.vue +0 -544
  48. package/src/components/table/ol-form-v3/index.vue +0 -455
  49. package/src/components/table/ol-main-form-sub-table/index.vue +0 -611
  50. package/src/components/table/ol-pager/index.vue +0 -46
  51. package/src/components/table/ol-table/components/ol-table-column-config/columnIndex.vue +0 -233
  52. package/src/components/table/ol-table/components/ol-table-column-config/index.vue +0 -145
  53. package/src/components/table/ol-table/components/ol-table-column-dict-color/index.vue +0 -88
  54. package/src/components/table/ol-table/index.vue +0 -232
  55. package/src/components/table/ol-table-operate/index.vue +0 -61
  56. package/src/components/table/ol-table-search/index.vue +0 -17
  57. package/src/components/table/ol-table-tool-btn/index.vue +0 -60
  58. package/src/components/tree/components/o-tree.vue +0 -289
  59. package/src/components/tree/index.vue +0 -46
  60. package/src/components/v-component/index.vue +0 -43
  61. package/src/config/dev-config.js +0 -5
  62. package/src/config/prod-config.js +0 -5
  63. package/src/config/shared-config.js +0 -20
  64. package/src/data.js +0 -9378
  65. package/src/directives/permission/hasPermi.js +0 -63
  66. package/src/directives/permission/hasRole.js +0 -30
  67. package/src/main.js +0 -55
  68. package/src/mixins/VTMixin/DefaultMethods.js +0 -821
  69. package/src/mixins/VTMixin/OTMixinBody.js +0 -105
  70. package/src/mixins/VTMixin/OTMixinBodyFooter.js +0 -93
  71. package/src/mixins/VTMixin/OTMixinBodyMethods.js +0 -421
  72. package/src/mixins/VTMixin/OTMixinColumnMethod.js +0 -454
  73. package/src/mixins/VTMixin/OTMixinInitMethod.js +0 -130
  74. package/src/mixins/VTMixin/OTMixinPager.js +0 -38
  75. package/src/mixins/VTMixin/OTMixinSortable.js +0 -43
  76. package/src/mixins/VTMixin/index.js +0 -18
  77. package/src/package/index.js +0 -20
  78. package/src/plugins/axios.js +0 -61
  79. package/src/store/dict.js +0 -76
  80. package/src/store/dictType.js +0 -52
  81. package/src/store/permi.js +0 -45
  82. package/src/styles/common.scss +0 -37
  83. package/src/styles/index.scss +0 -48
  84. package/src/styles/theme.scss +0 -32
  85. package/src/utils/AESCRUDUtils.js +0 -87
  86. package/src/utils/DateUtils.js +0 -35
  87. package/src/utils/ExcelUtil.js +0 -159
  88. package/src/utils/TableSortUtil.js +0 -91
  89. package/src/utils/columnProp.js +0 -3
  90. package/src/utils/groupCompute.js +0 -68
  91. package/src/utils/http/httpFactory.js +0 -92
  92. package/src/utils/http/httpFactory2.js +0 -79
  93. package/src/utils/http/httpUtil.js +0 -123
  94. package/src/utils/http/httpUtils.js +0 -38
  95. package/src/utils/loadStyle.js +0 -14
  96. package/src/utils/message.js +0 -56
  97. package/src/utils/object.js +0 -80
  98. package/src/utils/security/TokenUtil.js +0 -19
  99. package/src/utils/tree.js +0 -54
  100. package/src/utils/util.js +0 -127
  101. package/src/views/Test/index.vue +0 -77
  102. package/src/views/Test/index2.vue +0 -33
  103. package/src/views/components/btn-config/index.vue +0 -202
  104. package/src/views/components/option-config/index.vue +0 -192
  105. package/src/views/db/chineseToEnglish.vue +0 -127
  106. package/src/views/db/filed.vue +0 -395
  107. package/src/views/db/index.vue +0 -192
  108. package/src/views/db/preview/index.vue +0 -139
  109. package/src/views/db/preview/left.vue +0 -204
  110. package/src/views/db/preview/right.vue +0 -466
  111. package/src/views/groupTable/index.vue +0 -137
  112. package/src/views/groupTable/ol-table-column-config/columnIndex.vue +0 -194
  113. package/src/views/groupTable/ol-table-column-config/index.vue +0 -92
  114. package/src/views/table/add-or-edit/config/base-config/index.vue +0 -539
  115. package/src/views/table/add-or-edit/config/base-config/table-form.vue +0 -333
  116. package/src/views/table/add-or-edit/config/column-config/header-config.vue +0 -475
  117. package/src/views/table/add-or-edit/config/column-config/index.vue +0 -790
  118. package/src/views/table/add-or-edit/config/data/column.js +0 -218
  119. package/src/views/table/add-or-edit/config/data/crud.js +0 -122
  120. package/src/views/table/add-or-edit/config/data/events.js +0 -109
  121. package/src/views/table/add-or-edit/config/data/method.js +0 -127
  122. package/src/views/table/add-or-edit/config/data/option.js +0 -725
  123. package/src/views/table/add-or-edit/config/data/page.js +0 -79
  124. package/src/views/table/add-or-edit/config/field-config/filed-config-table.vue +0 -42
  125. package/src/views/table/add-or-edit/config/field-config/index.vue +0 -91
  126. package/src/views/table/add-or-edit/config/form-config/index.vue +0 -1180
  127. package/src/views/table/add-or-edit/config/index.vue +0 -377
  128. package/src/views/table/add-or-edit/config/initFormObject.js +0 -25
  129. package/src/views/table/add-or-edit/config/script-config/LeftMeun.vue +0 -71
  130. package/src/views/table/add-or-edit/config/script-config/index.vue +0 -70
  131. package/src/views/table/add-or-edit/config/table-config/btn-config.vue +0 -340
  132. package/src/views/table/add-or-edit/config/table-config/btn-sort.vue +0 -132
  133. package/src/views/table/add-or-edit/config/table-config/index.vue +0 -446
  134. package/src/views/table/add-or-edit/configOld/dataTags/filed-config-table-model.vue +0 -41
  135. package/src/views/table/add-or-edit/configOld/dataTags/filed-config.vue +0 -74
  136. package/src/views/table/add-or-edit/configOld/dataTags/index.vue +0 -439
  137. package/src/views/table/add-or-edit/configOld/dataTags/set-table-sql.vue +0 -79
  138. package/src/views/table/add-or-edit/configOld/dataTags/table-on-config.vue +0 -74
  139. package/src/views/table/add-or-edit/configOld/index.vue +0 -127
  140. package/src/views/table/add-or-edit/configOld/tableTags/columnConfig.js +0 -5
  141. package/src/views/table/add-or-edit/configOld/tableTags/index.vue +0 -353
  142. package/src/views/table/add-or-edit/configOld/tableTags/operation-but-config.vue +0 -75
  143. package/src/views/table/add-or-edit/configOld/tableTags/tool-but-config.vue +0 -92
  144. package/src/views/table/add-or-edit/index.vue +0 -201
  145. package/src/views/table/add-or-edit/themeModel/index.vue +0 -53
  146. package/src/views/table/add-or-edit/themeModel/init-model-table.vue +0 -48
  147. package/src/views/table/add-or-edit/themeModel/init-model.vue +0 -81
  148. package/src/views/table/add-or-edit/themeModel/left-right.vue +0 -24
  149. package/src/views/table/add-or-edit/themeModel/left-tree-right-table.vue +0 -75
  150. package/src/views/table/add-or-edit/themeModel/olTableSearchModelMixins.js +0 -42
  151. package/src/views/table/add-or-edit/themeModel/splitpanesThemeModel.vue +0 -49
  152. package/src/views/table/add-or-edit/themeModel/top-1-bottom-2.vue +0 -29
  153. package/src/views/table/add-or-edit/themeModel/top-2-bottom-1.vue +0 -32
  154. package/src/views/table/add-or-edit/themeModel/top-2-bottom-2.vue +0 -32
  155. package/src/views/table/add-or-edit/themeModel/top-bottom.vue +0 -14
  156. package/src/views/table/index.vue +0 -43
  157. package/src/views/table/index2.vue +0 -199
  158. package/src/views/table/preview/index.vue +0 -29
  159. package/src/views/tree/components/config-core-data.vue +0 -85
  160. package/src/views/tree/components/config-core-table.vue +0 -362
  161. package/src/views/tree/components/config-core-tree/data/events.js +0 -95
  162. package/src/views/tree/components/config-core-tree/data/option.js +0 -88
  163. package/src/views/tree/components/config-core-tree/data/prop.js +0 -28
  164. package/src/views/tree/components/config-core-tree/index.vue +0 -181
  165. package/src/views/tree/components/config-core.vue +0 -42
  166. package/src/views/tree/components/form-config/index.vue +0 -967
  167. package/src/views/tree/index.vue +0 -424
  168. package/vue.config.js +0 -44
  169. /package/{olp-table/demo.html → demo.html} +0 -0
  170. /package/{olp-table/fonts → fonts}/iconfont.1720006583309.7e4906d9.woff +0 -0
  171. /package/{olp-table/fonts → fonts}/iconfont.1720006583309.947a27f0.ttf +0 -0
@@ -1,105 +0,0 @@
1
- import {OTMixinBodyMethods} from "./OTMixinBodyMethods"
2
- import {OTMixinColumnMethod} from "@/mixins/VTMixin/OTMixinColumnMethod";
3
- import {OTMixinBodyFooter} from "@/mixins/VTMixin/OTMixinBodyFooter";
4
-
5
- export const OTMixinBody = {
6
- name: 'OTMixinBody',
7
- mixins: [OTMixinBodyMethods, OTMixinColumnMethod, OTMixinBodyFooter],
8
- data() {
9
- return {
10
- components: undefined,
11
- customUrl: undefined,
12
- parameter: {},
13
- parameterDefault: {},
14
- orderByColumns: [],
15
- loading: {},
16
- deleteParameter: {},
17
- tableConfig: {},
18
- isMaximized: false,
19
- operationBtn: [],
20
- toolBtn: [],
21
- formItem: [],
22
- selectBox: "0",//0/无、1/单选、2/
23
- table: {
24
- sortable: false,
25
- scrollX: {enabled: true, gt: 5},
26
- scrollY: {enabled: true, gt: 5},
27
- ref: 'vTable',
28
- loading: false,
29
- border: false,
30
- align: 'center',
31
- size: "mini",
32
- height: 'auto',
33
- "show-footer": false,
34
- // 合并行字段
35
- mergeFields: [],
36
- loadingConfig: {
37
- text: '数据加载中..'
38
- },
39
- formConfig: {
40
- show: true,
41
- size: "medium",
42
- titleWidth: 100,
43
- titleAlign: 'right',
44
- titleOverflow: true,
45
- items: [],
46
- data: {},
47
- },
48
- columnConfig: {
49
- resizable: true
50
- },
51
- rowConfig: {
52
- isCurrent: true,
53
- },
54
- sortConfig: {
55
- defaultSort: []
56
- },
57
- columns: [],
58
- columnSource: [],
59
- data: [],
60
- dataSource: [],
61
- toolbarConfig: {
62
- slots: {
63
- buttons: 'header_left',
64
- tools: 'header_right'
65
- }
66
- },
67
- ...this.$attrs
68
- },
69
- search: {
70
- show: false,
71
- queryBtn: true,
72
- resetBtn: true,
73
- },
74
- toolbar: {
75
- show: false,//是否显示
76
- addBtn: true,//添加按钮
77
- batchDeleteBtn: true,//查询按钮
78
- uploadBtn: true,//上传按钮
79
- downloadBtn: true,//下载按钮
80
- refresh: true, // 显示刷新按钮
81
- import: true, // 显示导入按钮
82
- export: true, // 显示导出按钮
83
- print: true, // 显示打印按钮
84
- zoom: true, // 显示全屏按钮
85
- custom: true // 显示自定义列按钮
86
- },
87
- formMainList: [],
88
- dialog: {
89
- title: '弹窗',
90
- width: '80%',
91
- height: '',
92
- form: [],
93
- designer: '0'
94
- },
95
- formKey: 0,
96
- dialogVisible: false,
97
- events: {},
98
- }
99
- },
100
- computed: {
101
- $table() {
102
- return this.$refs[this.table.ref]
103
- }
104
- },
105
- }
@@ -1,93 +0,0 @@
1
- export const OTMixinBodyFooter = {
2
- methods: {
3
- footerMethod() {
4
- if(!this.table['show-footer']){
5
- return
6
- }
7
- // 获取原始列定义
8
- const originalColumns = getTableColumns(this.table.columns);
9
- // 初始化页脚数据数组,长度与列数相同,初始值都为 null
10
- const footerData = [new Array(originalColumns.length).fill(null)];
11
-
12
- // 遍历原始列定义,计算每个列对应的页脚数据
13
- originalColumns.forEach((column, _columnIndex) => {
14
- if (_columnIndex === 0) {
15
- footerData[0][_columnIndex] = '合计';
16
- } else if (column.totalToOtherProp) {
17
- const operation = column.totalToOtherProp.toLowerCase();
18
- switch (operation) {
19
- case 'avg':
20
- footerData[0][_columnIndex] = (sumNum(this.table.data, column.field) / this.table.data.length).toFixed(3);
21
- break;
22
- case'sum':
23
- footerData[0][_columnIndex] = sumNum(this.table.data, column.field).toFixed(3);
24
- break;
25
- case'max':
26
- footerData[0][_columnIndex] = maxOrMin(this.table.data, column.field, true).toFixed(3);
27
- break;
28
- case'min':
29
- footerData[0][_columnIndex] = maxOrMin(this.table.data, column.field, false).toFixed(3);
30
- break;
31
- default:
32
- break;
33
- }
34
- }
35
- });
36
-
37
- return footerData;
38
- }
39
- }
40
- }
41
-
42
- function getTableColumns(columns) {
43
- // 分离固定在左侧、右侧和不固定的列
44
- const fixedLeftColumns = [];
45
- const nonFixedColumns = [];
46
- const fixedRightColumns = [];
47
-
48
- columns.forEach(column => {
49
- if (column.visible != false) {
50
- if (column.fixed === 'left') {
51
- fixedLeftColumns.push(column);
52
- } else if (column.fixed === 'right') {
53
- fixedRightColumns.push(column);
54
- } else {
55
- nonFixedColumns.push(column);
56
- }
57
- }
58
- });
59
-
60
- // 对非固定列按照 sort 属性排序
61
- nonFixedColumns.sort((a, b) => {
62
- const sortA = a.sort || 0;
63
- const sortB = b.sort || 0;
64
- return sortA - sortB;
65
- });
66
-
67
- // 合并排序后的列
68
- return [...fixedLeftColumns, ...nonFixedColumns, ...fixedRightColumns];
69
- }
70
-
71
- // 计算总和的函数
72
- function sumNum(data, field) {
73
- return data.reduce((acc, item) => {
74
- const value = parseFloat(item[field]);
75
- return isNaN(value) ? acc : acc + value;
76
- }, 0);
77
- }
78
-
79
- // 计算最大值或最小值的函数
80
- function maxOrMin(data, field, isMax) {
81
- let result = isMax ? -Infinity : Infinity;
82
- data.forEach(item => {
83
- const value = parseFloat(item[field]);
84
- if (!isNaN(value)) {
85
- if (isMax && value > result) {
86
- result = value;
87
- } else if (!isMax && value < result) {
88
- result = value;
89
- }
90
- }
91
- });
92
- return result;
93
- }
@@ -1,421 +0,0 @@
1
- import {storeDict} from "@/store/dict";
2
- import {storeDictType} from "@/store/dictType";
3
- import {toCamelCase} from "@/utils/util";
4
- import {useMessage} from "@/utils/message";
5
- import {post, get, del, put, request} from "@/utils/http/httpUtils";
6
- import {markRaw} from "vue";
7
- import {getNewArrDataToolBtn, updateSortRowCall} from "@/utils/TableSortUtil";
8
- import {DefaultMethods} from "@/mixins/VTMixin/DefaultMethods";
9
- import {doPermission} from "@/directives/permission/hasPermi";
10
-
11
- const message = useMessage() // 消息弹窗
12
- const dict = storeDict();
13
- const dictType = storeDictType();
14
- export const OTMixinBodyMethods = {
15
- mixins: [DefaultMethods],
16
- emits: ['handleOperationClick', 'toolbarBtnClick', 'initComponents', 'selectRowChange'],
17
- methods: {
18
- /**
19
- * 自定义表单方法
20
- * @returns {*}
21
- */
22
- customerForm(show) {
23
- this.toggleFormDisplay()
24
- this.table.formConfig.show = show == true;
25
- return this.table.formConfig;
26
- }, /**
27
- * 搜索隐藏/显示
28
- */
29
- toggleFormDisplay() {
30
- // 获取组件的根 DOM 元素
31
- const rootEl = this.$refs[this.table.ref].$el;
32
-
33
- // 查询第一个子标签是否为 vxe-grid--form-wrapper
34
- const formWrapperEl = rootEl.querySelector('.vxe-grid--form-wrapper');
35
- if (formWrapperEl) {
36
- // 查询 formWrapperEl 下的第一个 form 标签
37
- const formEl = formWrapperEl.querySelector('form');
38
- if (formEl) {
39
- // 获取 form 标签的当前 display 样式
40
- const currentDisplay = window.getComputedStyle(formEl).display;
41
-
42
- // 根据当前 display 样式设置新的样式
43
- if (currentDisplay === 'none') {
44
- // 如果当前是 none,则移除 display 样式(设置为空字符串)
45
- formEl.style.display = '';
46
- } else {
47
- // 否则设置为 none
48
- formEl.style.display = 'none';
49
- }
50
- }
51
- }
52
- }, /**
53
- * 选中回调
54
- */
55
- selectRowChange() {
56
- let rows = this.getSelectRows();
57
- if (!rows) {
58
- return;
59
- }
60
- this.pagination.selectionRowsLength = rows.length;
61
- this.setToolBtn('batchDelete', 'disabled', rows.length == 0)
62
- rows = this.selectBox == 1 ? rows[0] : rows;
63
- if (this.events['selectRowChange']) {
64
- this.events['selectRowChange'](rows)
65
- }
66
- this.$emit("selectRowChange", rows)
67
- }, /**
68
- * 切换表格最大化/还原
69
- */
70
- zoomEvent() {
71
- if (this.$table) {
72
- this.$table.zoom()
73
- this.isMaximized = this.$table.isMaximized()
74
- }
75
- },
76
- initToolBtn(toolBut) {
77
- let obj = undefined;
78
- for (let i = 0; i < toolBut.length; i++) {
79
- let toolButElement = toolBut[i];
80
- toolButElement.disabled = toolButElement.defaultDisabled == 1
81
- toolButElement.show = toolButElement.defaultShow == 1
82
- if (toolButElement.code == 'sortable') {
83
- toolButElement.values = false;
84
- obj = JSON.parse(JSON.stringify(toolButElement))
85
- obj.id = obj.id + "_sortable";
86
- obj.name = "调整完成";
87
- obj.code = "sortableOk";
88
- obj.icon = "vxe-icon-check";
89
- obj.show = false;
90
- obj.disabled = true;
91
- obj.index = i + 1;
92
- }
93
- }
94
- if (obj) {
95
- toolBut.splice(obj.index, 0, obj)
96
- }
97
- this.toolBtn = toolBut;
98
- },
99
- initOperationBtn(operationBtn) {
100
- this.operationBtn = operationBtn;
101
- if (this.operationBtn.length != 0) {
102
- let okBut = []
103
- for (let i = 0; i < this.operationBtn.length; i++) {
104
- let flag = doPermission({parentNode: false}, [this.uuid + ':' + this.theme + ':' + this.operationBtn[i].code]);
105
- // console.info(this.operationBtn[i].name+'--按钮'+this.operationBtn[i].code,flag)
106
- if (flag) {
107
- okBut.push(this.operationBtn[i])
108
- }
109
- }
110
- this.operationBtn = okBut;
111
- }
112
-
113
- let length = this.operationBtn.length;
114
- if (length != 0) {
115
- let width = 35;
116
- if (this.table.operationWidth) {
117
- width = this.table.operationWidth;
118
- } else {
119
- for (let o of this.operationBtn) {
120
- width += (o.name.length * (35 - length) + (o.icon !== undefined ? 5 : 0));
121
- }
122
- }
123
- this.table.columns.push({
124
- title: '操作', width: width, fixed: "right", slots: {default: 'operate'}
125
- })
126
- }
127
- },
128
- initTree({tree, treeId, treeParentId}) {
129
- if (tree == 1) {
130
- this.table.treeConfig = {
131
- show: true,
132
- transform: false,
133
- indent: 15,
134
- reserve: tree,
135
- rowField: treeId,
136
- parentField: treeParentId,
137
- treeId: treeId,
138
- treeParentId: treeParentId,
139
- iconClose: "vxe-icon-arrow-right",
140
- iconOpen: "vxe-icon-arrow-down"
141
- }
142
- this.table.rowConfig.keyField = treeId;
143
- }
144
- },
145
- initFormMainList(formMainList) {
146
- this.formMainList = formMainList
147
- },
148
- async doSetComponents(customUrl, method, props, multipleProps) {
149
- this.customUrl = markRaw(customUrl);
150
- await this.$nextTick(async () => {
151
- if (multipleProps == '1' || multipleProps == true) {
152
- doCallback(this.$refs.components[method], props)
153
- } else if (multipleProps == '2') {
154
- doCallback2(this.$refs.components[method], props)
155
- } else {
156
- this.$refs.components[method](props)
157
- }
158
- })
159
- },
160
- setComponent(url, method, props, multipleProps) {
161
- if (url.indexOf("@") == 0) {
162
- this.$emit('initComponents', {url: url, method: method, props: props, multipleProps: multipleProps})
163
- } else {
164
- this.doSetComponents(require(`@/${url}`).default, method, props, multipleProps)
165
- }
166
- },
167
- async toolbarBtnClick(code) {
168
- if (code == "batchDelete") {
169
- this.batchRemove();
170
- this.$emit('toolbarBtnClick', code)
171
- return
172
- } else if (code == 'download') {
173
- this.setComponent("components/ol-dialog-excel", "open", {
174
- column: JSON.parse(JSON.stringify(this.table.columnSource)), selectData: this.pagination.selectionRowsLength >= 1 ? '2' : '1'
175
- })
176
- return
177
- } else if (code == 'upload') {
178
- this.setComponent("components/ol-dialog-import", "open", {
179
- id: this.tableConfig.id
180
- })
181
- return
182
- } else if (code == 'sortable') {
183
- this.sortableClick();
184
- return;
185
- } else if (code == 'sortableOk') {
186
- this.loading['sortableOk'] = true;
187
- this.sortableOkClick();
188
- return;
189
- }
190
- let customFunction = undefined;
191
- for (const toolBtn of this.toolBtn) {
192
- if (toolBtn.code == code && toolBtn.customFunction) {
193
- customFunction = toolBtn.customFunction;
194
- break;
195
- }
196
- }
197
- if (customFunction != undefined) {
198
- eval(customFunction);
199
- } else if (code == 'add') {
200
- this.showForm(code)
201
- }
202
- this.$emit('toolbarBtnClick', code)
203
-
204
- },
205
- getBtnJson(code) {
206
- for (const toolBtn of this.operationBtn) {
207
- if (toolBtn.code == code) {
208
- return this.getSubParam(toolBtn.json);
209
- }
210
- }
211
- for (const toolBtn of this.toolBtn) {
212
- if (toolBtn.code == code) {
213
- return this.getSubParam(toolBtn.json);
214
- }
215
- }
216
- },
217
- getDeleteId(param) {
218
- for (let key of Object.keys(param)) {
219
- if (key != '$parentId') {
220
- return key;
221
- }
222
- }
223
- },
224
- sortableClick() {
225
- for (let toolBtn of this.toolBtn) {
226
- if (toolBtn.code == 'sortable') {
227
- toolBtn.values = !toolBtn.values;
228
- this.loading['sortableOk'] = false;
229
- this.setToolBtn('sortableOk', 'show', toolBtn.values);
230
- toolBtn.start = 999999;
231
- toolBtn.end = -1;
232
- if (toolBtn.values) {
233
- if (toolBtn.beforeFunction == undefined || toolBtn.beforeFunction == '' || toolBtn.beforeFunction.split(",") < 2) {
234
- message.error("排序字段未配置,请在做工具栏按钮配置中配置参数1(sort,id)");
235
- return;
236
- }
237
- toolBtn.updateData = {};
238
- toolBtn.$elm = updateSortRowCall(this.$table, (oldIndex, newIndex) => {
239
- let start = Math.min(oldIndex, newIndex)
240
- let end = Math.max(oldIndex, newIndex)
241
- toolBtn.start = Math.min(start, toolBtn.start)
242
- toolBtn.end = Math.max(end, toolBtn.end)
243
- this.setToolBtn('sortableOk', 'disabled', false)
244
- this.table.data = getNewArrDataToolBtn(oldIndex, newIndex, this.table.data, toolBtn)
245
- })
246
- } else if (toolBtn.$elm) {
247
- this.setToolBtn('sortableOk', 'disabled', true)
248
- toolBtn.$elm.destroy();
249
- toolBtn.$elm = undefined;
250
- this.query();
251
- }
252
- return;
253
- }
254
- }
255
- },
256
- sortableOkClick() {
257
- for (let toolBtn of this.toolBtn) {
258
- if (toolBtn.code == 'sortable') {
259
- let url;
260
- this.loading['sortableOk'] = true;
261
- this.table.loading = true;
262
- let params = {
263
- updateList: []
264
- };
265
- //sort,id 排序字段,更新主键
266
- let kw = toolBtn.beforeFunction.split(",");
267
- if (toolBtn.alterFunction) {
268
- url = toolBtn.alterFunction;
269
- } else {
270
- url = '/online/crud/batchModify';
271
- params.tableConfigId = this.tableConfig.id;
272
- }
273
- //这里肯定只有一个值
274
- for (let key of Object.keys(toolBtn.updateData)) {
275
-
276
- if (toolBtn.alterFunction) {
277
- let kv = {};
278
- kv[kw[1]] = key
279
- kv[kw[0]] = toolBtn.updateData[key]
280
- params.updateList.push(kv);
281
- } else {
282
- let columnAndValueMap = {};
283
- let whereMap = {};
284
- whereMap[kw[1]] = key
285
- columnAndValueMap[kw[0]] = toolBtn.updateData[key]
286
- params.updateList.push({
287
- columnAndValueMap, whereMap
288
- });
289
- }
290
- }
291
- post(this.http, url, params).then((status) => {
292
- if (status) {
293
- this.query();
294
- this.setToolBtn('sortableOk', 'disabled', true);
295
- }
296
- }).finally(() => {
297
- this.loading['sortableOk'] = false;
298
- this.table.loading = false;
299
- })
300
- }
301
- }
302
- }, showRender(descCode, url, title) {
303
- get(this.http, '/online/formDesigner/getOne', {descCode: descCode}, undefined, true).then(d => {
304
- let data = {
305
- type: 1,
306
- saveUrl: url,
307
- title: title,
308
- form: JSON.parse(d.formJson),
309
- tableConfigId: this.tableConfig.id
310
- }
311
- this.$refs["form"].init(data, false)
312
- });
313
- },
314
- showForm(code, formData) {
315
- if (!formData) {
316
- formData = {};
317
- }
318
- let disabled = false;
319
- let btnJson = this.getBtnJson(code)
320
- //详情
321
- if (code == 'details') {
322
- disabled = true;
323
- code = 'edit'
324
- let btnJson2 = this.getBtnJson(code)
325
- if (btnJson2) {
326
- btnJson = {
327
- ...btnJson,
328
- ...btnJson2
329
- }
330
- } else {
331
- btnJson = btnJson2
332
- }
333
- if (!btnJson.title) {
334
- btnJson.title = '详情';
335
- }
336
- }
337
- let form = this.formMainList[code];
338
- if (!form) {
339
- return;
340
- }
341
-
342
- let formJsonStr = form.formJson[form.formMain.designer == 0 ? 'optionJson' : 'customJson'];
343
- let data = {
344
- type: form.formMain.designer,
345
- saveUrl: form.formMain.saveUrl,
346
- requestType: form.formMain.requestType,
347
- updateKey: form.formMain.updateKey,
348
- formData,
349
- theme: this.theme,
350
- form: JSON.parse(formJsonStr),
351
- tableConfigId: this.tableConfig.id,
352
- dbName: this.tableConfig.dbName,
353
- tableName: this.tableConfig.mainTable,
354
- code,
355
- disabled
356
- }
357
- if (btnJson && btnJson.type == 1) {
358
- data.uuid = btnJson.subUuid;
359
- data.title = btnJson.title;
360
- data.deleteId = btnJson.deleteId;
361
- data.foreignKey = btnJson.subForeignKey;
362
- data.exBtnDisabled = btnJson.exBtnDisabled;
363
- this.$refs["subForm"].init(data)
364
- } else {
365
- this.$refs["form"].init(data)
366
- }
367
-
368
- },
369
- async handleOperationClick(o) {
370
- let {obj, row} = o;
371
- if (obj.customFunction) {
372
- eval(obj.customFunction);
373
- } else if (obj.code == "delete") {
374
- this.remove(o);
375
- } else if (obj.code == 'edit' || obj.code == 'details') {
376
- this.showForm(obj.code, row);
377
- }
378
- this.$emit("handleOperationClick", o)
379
- },
380
- getSubParam(json) {
381
- let obj = {deleteId: this.getDeleteId(this.deleteParameter)}; // 初始化为空对象
382
- if (json) {
383
- return {...obj, ...JSON.parse(json)}
384
- }
385
- }
386
- },
387
- created() {
388
- dict.init(this.http)
389
- dictType.init(this.http)
390
- }
391
- }
392
-
393
- function rowCamelCase(o) {
394
- let obj = {};
395
- for (let key of Object.keys(o)) {
396
- if (key == 'XROWKEY') {
397
- continue;
398
- }
399
- let k = key;
400
- if (re(key)) {
401
- k = key.substring(3)
402
- }
403
- obj[toCamelCase(k)] = o[key];
404
- }
405
- return obj;
406
- }
407
-
408
- function re(k) {
409
- let reg = /^t\d_/;
410
- return reg.test(k)
411
- }
412
-
413
- function doCallback(fn, args) {
414
- for (let arg of args) {
415
- fn.apply(this, arg);
416
- }
417
- }
418
-
419
- function doCallback2(fn, args) {
420
- fn.apply(this, args);
421
- }