olp-table 5.3.1 → 5.3.4

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/.env.build +1 -0
  2. package/README.md +26 -0
  3. package/babel.config.js +5 -0
  4. package/jsconfig.json +22 -0
  5. package/{olp-table.common.js → olp-table/olp-table.common.js} +5 -5
  6. package/{olp-table.umd.js → olp-table/olp-table.umd.js} +5 -5
  7. package/{olp-table.umd.min.js → olp-table/olp-table.umd.min.js} +3 -3
  8. package/package.json +92 -12
  9. package/public/favicon.ico +0 -0
  10. package/public/index.html +17 -0
  11. package/rmMode.bat +1 -0
  12. package/src/App.vue +199 -0
  13. package/src/api/crud.js +22 -0
  14. package/src/api/dist.js +6 -0
  15. package/src/assets/iconfont/iconfont.css +20 -0
  16. package/src/assets/iconfont/iconfont.json +16 -0
  17. package/src/assets/iconfont/iconfont.ttf +0 -0
  18. package/src/assets/iconfont/iconfont.woff +0 -0
  19. package/src/assets/iconfont/iconfont.woff2 +0 -0
  20. package/src/assets/logo.png +0 -0
  21. package/src/components/auto-height/index.vue +75 -0
  22. package/src/components/codemirror-tag.vue +100 -0
  23. package/src/components/lazy-load-select.vue +107 -0
  24. package/src/components/ol-dialog-excel.vue +112 -0
  25. package/src/components/ol-dialog-import.vue +304 -0
  26. package/src/components/ol-dialog-json.vue +82 -0
  27. package/src/components/ol-dialog-table.vue +81 -0
  28. package/src/components/ol-dialog-upload-file.vue +208 -0
  29. package/src/components/ol-dict-tag.vue +271 -0
  30. package/src/components/ol-select-dom.vue +71 -0
  31. package/src/components/ol-table-filter.vue +28 -0
  32. package/src/components/ol-table-render.vue +44 -0
  33. package/src/components/ol-table-select.vue +150 -0
  34. package/src/components/pinia-init.vue +18 -0
  35. package/src/components/table/model/ModelMixins.js +43 -0
  36. package/src/components/table/model/model-index.vue +121 -0
  37. package/src/components/table/model/ot-left-right.vue +18 -0
  38. package/src/components/table/model/ot-left-tree-right-table.scss +14 -0
  39. package/src/components/table/model/ot-left-tree-right-table.vue +41 -0
  40. package/src/components/table/model/ot-top-1-bottom-2.vue +39 -0
  41. package/src/components/table/model/ot-top-2-bottom-1.vue +38 -0
  42. package/src/components/table/model/ot-top-2-bottom-2.vue +38 -0
  43. package/src/components/table/model/ot-top-bottom.vue +18 -0
  44. package/src/components/table/model/splitpanesModel.css +22 -0
  45. package/src/components/table/model/splitpanesModel.vue +54 -0
  46. package/src/components/table/ol-form/index.vue +537 -0
  47. package/src/components/table/ol-form-v3/index.vue +455 -0
  48. package/src/components/table/ol-main-form-sub-table/index.vue +601 -0
  49. package/src/components/table/ol-pager/index.vue +46 -0
  50. package/src/components/table/ol-table/components/ol-table-column-config/columnIndex.vue +233 -0
  51. package/src/components/table/ol-table/components/ol-table-column-config/index.vue +145 -0
  52. package/src/components/table/ol-table/components/ol-table-column-dict-color/index.vue +88 -0
  53. package/src/components/table/ol-table/index.vue +232 -0
  54. package/src/components/table/ol-table-operate/index.vue +61 -0
  55. package/src/components/table/ol-table-search/index.vue +17 -0
  56. package/src/components/table/ol-table-tool-btn/index.vue +60 -0
  57. package/src/components/tree/components/o-tree.vue +289 -0
  58. package/src/components/tree/index.vue +46 -0
  59. package/src/components/v-component/index.vue +43 -0
  60. package/src/config/dev-config.js +5 -0
  61. package/src/config/prod-config.js +5 -0
  62. package/src/config/shared-config.js +20 -0
  63. package/src/data.js +9378 -0
  64. package/src/directives/permission/hasPermi.js +63 -0
  65. package/src/directives/permission/hasRole.js +30 -0
  66. package/src/main.js +55 -0
  67. package/src/mixins/VTMixin/DefaultMethods.js +749 -0
  68. package/src/mixins/VTMixin/OTMixinBody.js +105 -0
  69. package/src/mixins/VTMixin/OTMixinBodyFooter.js +93 -0
  70. package/src/mixins/VTMixin/OTMixinBodyMethods.js +420 -0
  71. package/src/mixins/VTMixin/OTMixinColumnMethod.js +450 -0
  72. package/src/mixins/VTMixin/OTMixinInitMethod.js +130 -0
  73. package/src/mixins/VTMixin/OTMixinPager.js +38 -0
  74. package/src/mixins/VTMixin/OTMixinSortable.js +43 -0
  75. package/src/mixins/VTMixin/index.js +18 -0
  76. package/src/package/index.js +20 -0
  77. package/src/plugins/axios.js +61 -0
  78. package/src/store/dict.js +76 -0
  79. package/src/store/dictType.js +52 -0
  80. package/src/store/permi.js +45 -0
  81. package/src/styles/common.scss +37 -0
  82. package/src/styles/index.scss +48 -0
  83. package/src/styles/theme.scss +32 -0
  84. package/src/utils/AESCRUDUtils.js +87 -0
  85. package/src/utils/DateUtils.js +35 -0
  86. package/src/utils/ExcelUtil.js +159 -0
  87. package/src/utils/TableSortUtil.js +91 -0
  88. package/src/utils/columnProp.js +3 -0
  89. package/src/utils/groupCompute.js +68 -0
  90. package/src/utils/http/httpFactory.js +92 -0
  91. package/src/utils/http/httpFactory2.js +79 -0
  92. package/src/utils/http/httpUtil.js +123 -0
  93. package/src/utils/http/httpUtils.js +38 -0
  94. package/src/utils/loadStyle.js +14 -0
  95. package/src/utils/message.js +56 -0
  96. package/src/utils/object.js +80 -0
  97. package/src/utils/security/TokenUtil.js +19 -0
  98. package/src/utils/tree.js +54 -0
  99. package/src/utils/util.js +127 -0
  100. package/src/views/Test/index.vue +77 -0
  101. package/src/views/Test/index2.vue +33 -0
  102. package/src/views/components/btn-config/index.vue +202 -0
  103. package/src/views/components/option-config/index.vue +192 -0
  104. package/src/views/db/chineseToEnglish.vue +127 -0
  105. package/src/views/db/filed.vue +395 -0
  106. package/src/views/db/index.vue +192 -0
  107. package/src/views/db/preview/index.vue +139 -0
  108. package/src/views/db/preview/left.vue +204 -0
  109. package/src/views/db/preview/right.vue +466 -0
  110. package/src/views/groupTable/index.vue +137 -0
  111. package/src/views/groupTable/ol-table-column-config/columnIndex.vue +194 -0
  112. package/src/views/groupTable/ol-table-column-config/index.vue +92 -0
  113. package/src/views/table/add-or-edit/config/base-config/index.vue +539 -0
  114. package/src/views/table/add-or-edit/config/base-config/table-form.vue +333 -0
  115. package/src/views/table/add-or-edit/config/column-config/header-config.vue +475 -0
  116. package/src/views/table/add-or-edit/config/column-config/index.vue +790 -0
  117. package/src/views/table/add-or-edit/config/data/column.js +218 -0
  118. package/src/views/table/add-or-edit/config/data/crud.js +122 -0
  119. package/src/views/table/add-or-edit/config/data/events.js +109 -0
  120. package/src/views/table/add-or-edit/config/data/method.js +127 -0
  121. package/src/views/table/add-or-edit/config/data/option.js +725 -0
  122. package/src/views/table/add-or-edit/config/data/page.js +79 -0
  123. package/src/views/table/add-or-edit/config/field-config/filed-config-table.vue +42 -0
  124. package/src/views/table/add-or-edit/config/field-config/index.vue +91 -0
  125. package/src/views/table/add-or-edit/config/form-config/index.vue +1179 -0
  126. package/src/views/table/add-or-edit/config/index.vue +376 -0
  127. package/src/views/table/add-or-edit/config/initFormObject.js +25 -0
  128. package/src/views/table/add-or-edit/config/script-config/LeftMeun.vue +71 -0
  129. package/src/views/table/add-or-edit/config/script-config/index.vue +70 -0
  130. package/src/views/table/add-or-edit/config/table-config/btn-config.vue +340 -0
  131. package/src/views/table/add-or-edit/config/table-config/btn-sort.vue +132 -0
  132. package/src/views/table/add-or-edit/config/table-config/index.vue +446 -0
  133. package/src/views/table/add-or-edit/configOld/dataTags/filed-config-table-model.vue +41 -0
  134. package/src/views/table/add-or-edit/configOld/dataTags/filed-config.vue +74 -0
  135. package/src/views/table/add-or-edit/configOld/dataTags/index.vue +439 -0
  136. package/src/views/table/add-or-edit/configOld/dataTags/set-table-sql.vue +79 -0
  137. package/src/views/table/add-or-edit/configOld/dataTags/table-on-config.vue +74 -0
  138. package/src/views/table/add-or-edit/configOld/index.vue +127 -0
  139. package/src/views/table/add-or-edit/configOld/tableTags/columnConfig.js +5 -0
  140. package/src/views/table/add-or-edit/configOld/tableTags/index.vue +353 -0
  141. package/src/views/table/add-or-edit/configOld/tableTags/operation-but-config.vue +75 -0
  142. package/src/views/table/add-or-edit/configOld/tableTags/tool-but-config.vue +92 -0
  143. package/src/views/table/add-or-edit/index.vue +201 -0
  144. package/src/views/table/add-or-edit/themeModel/index.vue +53 -0
  145. package/src/views/table/add-or-edit/themeModel/init-model-table.vue +48 -0
  146. package/src/views/table/add-or-edit/themeModel/init-model.vue +81 -0
  147. package/src/views/table/add-or-edit/themeModel/left-right.vue +24 -0
  148. package/src/views/table/add-or-edit/themeModel/left-tree-right-table.vue +75 -0
  149. package/src/views/table/add-or-edit/themeModel/olTableSearchModelMixins.js +42 -0
  150. package/src/views/table/add-or-edit/themeModel/splitpanesThemeModel.vue +49 -0
  151. package/src/views/table/add-or-edit/themeModel/top-1-bottom-2.vue +29 -0
  152. package/src/views/table/add-or-edit/themeModel/top-2-bottom-1.vue +32 -0
  153. package/src/views/table/add-or-edit/themeModel/top-2-bottom-2.vue +32 -0
  154. package/src/views/table/add-or-edit/themeModel/top-bottom.vue +14 -0
  155. package/src/views/table/index.vue +43 -0
  156. package/src/views/table/index2.vue +199 -0
  157. package/src/views/table/preview/index.vue +29 -0
  158. package/src/views/tree/components/config-core-data.vue +85 -0
  159. package/src/views/tree/components/config-core-table.vue +362 -0
  160. package/src/views/tree/components/config-core-tree/data/events.js +95 -0
  161. package/src/views/tree/components/config-core-tree/data/option.js +88 -0
  162. package/src/views/tree/components/config-core-tree/data/prop.js +28 -0
  163. package/src/views/tree/components/config-core-tree/index.vue +181 -0
  164. package/src/views/tree/components/config-core.vue +42 -0
  165. package/src/views/tree/components/form-config/index.vue +967 -0
  166. package/src/views/tree/index.vue +424 -0
  167. package/vue.config.js +44 -0
  168. /package/{demo.html → olp-table/demo.html} +0 -0
  169. /package/{fonts → olp-table/fonts}/iconfont.1720006583309.7e4906d9.woff +0 -0
  170. /package/{fonts → olp-table/fonts}/iconfont.1720006583309.947a27f0.ttf +0 -0
  171. /package/{olp-table.css → olp-table/olp-table.css} +0 -0
@@ -0,0 +1,127 @@
1
+ <template>
2
+ <vxe-modal
3
+ :show-close="false"
4
+ width="80%"
5
+ v-model="show"
6
+ :title="'编辑配置-'+provides.form.theme"
7
+ resize
8
+ :before-hide-method="handleClose" showFooter>
9
+ <div style="height: 80%">
10
+ <div style="margin: 10px">
11
+ <p>
12
+ <vxe-radio-group v-model="tab.activeName">
13
+ <vxe-radio label="data" content="数据配置" size="medium"></vxe-radio>
14
+ <vxe-radio label="table" content="表格配置" size="medium"></vxe-radio>
15
+ <vxe-radio label="code" content="脚本配置" size="medium"></vxe-radio>
16
+ </vxe-radio-group>
17
+ </p>
18
+ </div>
19
+ <data-config v-show="tab.activeName == 'data'" ref="dataConfig"/>
20
+ <table-config v-show="tab.activeName == 'table'" ref="tableConfig" @emits="emits"/>
21
+ </div>
22
+ <template #footer>
23
+ <span class="dialog-footer">
24
+ <vxe-button @click="emits('configClose')">取消</vxe-button>
25
+ <vxe-button status="primary" @click="saveData"> {{ isAdd ? '保存' : '更新' }}</vxe-button>
26
+ </span>
27
+ </template>
28
+ </vxe-modal>
29
+ </template>
30
+
31
+ <script setup>
32
+ import {inject, nextTick, provide, reactive, ref, toRaw, watch} from "vue";
33
+ import DataConfig from "@/views/table/add-or-edit/configOld/dataTags/index.vue";
34
+ import TableConfig from "@/views/table/add-or-edit/configOld/tableTags/index.vue";
35
+ import {post, get} from "@/utils/http/httpUtils";
36
+ const http = inject('http')
37
+ const show = ref(true);
38
+ const isAdd = ref(true);
39
+ const dataConfig = ref(null);
40
+ const tableConfig = ref(null);
41
+ const provides = reactive({
42
+ form: {
43
+ mainTable: '',
44
+ hump: '0',
45
+ definitionSql: '0',
46
+ executeSql: '',
47
+ executeWhere: '',
48
+ paging: '1',
49
+ selectBox: '2',
50
+ tips: '1',
51
+ tree: '0',
52
+ treeParentId: '',
53
+ openColumn: '',
54
+ operationBut: '',
55
+ tableDelete: {},
56
+ toolBut: '',
57
+ parentId: '',
58
+ theme: ''
59
+ },
60
+ tableColumn: []
61
+ })
62
+ const tab = reactive({
63
+ activeName: 'data'
64
+ })
65
+
66
+ const size = ref(0)
67
+ size.value = window.innerHeight - 210;
68
+ window.addEventListener('resize', () => {
69
+ let v = window.innerHeight - 210;
70
+ size.value = v > 300 ? v : 300;
71
+ });
72
+
73
+ function saveData() {
74
+ dataConfig.value.setDeleteTable();
75
+ post(http,"/online/tableConfig/saveJson", toRaw(provides), undefined, false).then(res => {
76
+ emits('configClose', provides.form.theme);
77
+ })
78
+ }
79
+
80
+ function init(o, v) {
81
+ get(http,"/online/tableConfig/getJson", {uuid: v.uuid, theme: o}).then(res => {
82
+ if (res && res.form) {
83
+ provides.form = res.form;
84
+ provides.tableColumn = res.tableColumn;
85
+ nextTick(() => {
86
+ dataConfig.value.sqlParseTable();
87
+ })
88
+ } else {
89
+ provides.form.parentId = v.parentId;
90
+ provides.form.uuid = v.uuid;
91
+ provides.form.theme = o;
92
+ }
93
+ })
94
+ }
95
+
96
+ function handleClose() {
97
+ isAdd.value = false;
98
+ }
99
+
100
+ function handleClick() {
101
+
102
+ }
103
+
104
+ watch(() => tab.activeName, (o, v) => {
105
+ if (o == 'data') {
106
+ tableConfig.value.setConfigData();
107
+ }
108
+ })
109
+
110
+ provide('configData', provides);
111
+
112
+ const emits = (m, v) => {
113
+ if (m == "updateVisible") {
114
+ dataConfig.value.refreshColumn();
115
+ } else {
116
+ emit("emits", {m: m, v});
117
+ }
118
+ }
119
+ // 子组件调用父组件
120
+ const emit = defineEmits(["emits"]); //声明 emits
121
+ defineExpose({
122
+ init,
123
+ })
124
+
125
+ </script>
126
+ <style lang="less">
127
+ </style>
@@ -0,0 +1,353 @@
1
+ <template>
2
+ <div>
3
+ <vxe-form :data="configData.form">
4
+ <vxe-form-item title="启用分页" field="paging" :span="4" :item-render="{}">
5
+ <template #default="{ data }">
6
+ <vxe-checkbox v-model="configData.form.paging" checked-value="1" unchecked-value="0"></vxe-checkbox>
7
+ </template>
8
+ </vxe-form-item>
9
+ <vxe-form-item title="树形table" field="tips" :span="4" :item-render="{}">
10
+ <template #default="{ data }">
11
+ <vxe-checkbox v-model="configData.form.tree" checked-value="1" unchecked-value="0"/>
12
+ </template>
13
+ </vxe-form-item>
14
+ <vxe-form-item title="选项框" :span="8" field="selectBox" :item-render="{}">
15
+ <template #default="{ data }">
16
+ <vxe-radio v-model="configData.form.selectBox" label="2" value="2" content="多选">多选</vxe-radio>
17
+ <vxe-radio v-model="configData.form.selectBox" label="1" value="1" content="单选">单选</vxe-radio>
18
+ <vxe-radio v-model="configData.form.selectBox" label="0" value="0" content="无">无</vxe-radio>
19
+ </template>
20
+ </vxe-form-item>
21
+ <vxe-form-item title="底部提示" :span="8" field="tips" :item-render="{}">
22
+ <template #default="{ data }">
23
+ <dict-tag code="table_bottom_tips" v-model="configData.form.tips"></dict-tag>
24
+ </template>
25
+ </vxe-form-item>
26
+
27
+ <vxe-form-item title="parentId" :span="10" v-if="configData.form.tree != 0" field="treeParentId"
28
+ :item-render="{}">
29
+ <template #default="{ data }">
30
+ <vxe-select v-model="configData.form.treeParentId"
31
+ placeholder="请选择树形上级ID" :options="state.treeParentIdOptions" filterable></vxe-select>
32
+ </template>
33
+ </vxe-form-item>
34
+ <vxe-form-item title="树展开列" :span="10" v-if="configData.form.tree != 0" field="openColumn" :item-render="{}">
35
+ <template #default="{ data }">
36
+ <vxe-select v-model="configData.form.openColumn"
37
+ placeholder="请选择展开树列" :options="state.openColumnOptions" filterable></vxe-select>
38
+ </template>
39
+ </vxe-form-item>
40
+
41
+ <vxe-form-item title="工具栏按钮" :span="10" field="toolBut" :item-render="{}">
42
+ <template #default>
43
+ <vxe-select v-model="configData.form.toolBut"
44
+ :option-props="{label:'name',value:'code',key:'code'}"
45
+ placeholder="请选择工具栏按钮"
46
+ :options="state.toolButOptions"
47
+ @change="setToolButOptionsValue"
48
+ multiple
49
+ filterable style="width: 80%"></vxe-select>
50
+ <vxe-button @click="butConfigClick('toolButConfig')">配</vxe-button>
51
+ </template>
52
+ </vxe-form-item>
53
+ <vxe-form-item title="操作按钮" :span="10" field="operationBut" :item-render="{}">
54
+ <template #default>
55
+ <vxe-select v-model="configData.form.operationBut"
56
+ placeholder="请选择操作按钮"
57
+ style="width: 80%"
58
+ :option-props="{label:'name',value:'code',key:'code'}"
59
+ :options="state.operationButOptions"
60
+ @change="setOperationButOptionsValue"
61
+ multiple
62
+ filterable>
63
+
64
+ </vxe-select>
65
+ <vxe-button @click="butConfigClick('operationButConfig')">配</vxe-button>
66
+ </template>
67
+ </vxe-form-item>
68
+ </vxe-form>
69
+
70
+
71
+ <vxe-table :data="state.tableData" stripe border=inner height="600" size="mini">
72
+ <vxe-column type="expand" fixed="left" width="20">
73
+ <template #content="{ row }">
74
+ <ul class="expand-wrapper">
75
+ <li>
76
+ <span>ID:</span>
77
+ <span>{{ row.id }}</span>
78
+ </li>
79
+ </ul>
80
+ </template>
81
+ </vxe-column>
82
+ <vxe-column type="seq" width="60" fixed="left" title="序号"></vxe-column>
83
+ <vxe-column field="field" title="字段" fixed="left" width="130" >
84
+ <template #default="scope">
85
+ <span>{{ scope.row.field + '(' + scope.row.label + ')' }}</span>
86
+ </template>
87
+ </vxe-column>
88
+ <vxe-column field="title" title="标题" width="150" fixed="left">
89
+ <template #default="scope">
90
+ <vxe-input v-model="scope.row.title" size="small"></vxe-input>
91
+ </template>
92
+ </vxe-column>
93
+ <vxe-column field="width" title="宽度" width="80">
94
+ <template #default="scope">
95
+ <vxe-input v-model="scope.row.width" size="small"></vxe-input>
96
+ </template>
97
+ </vxe-column>
98
+ <vxe-column field="display" title="显示" width="45">
99
+ <template #default="scope">
100
+ <vxe-checkbox v-model="scope.row.visible" checked-value="1" @change="updateVisible"
101
+ unchecked-value="0"></vxe-checkbox>
102
+ </template>
103
+ </vxe-column>
104
+ <vxe-column field="edit" title="编辑" width="45">
105
+ <template #default="scope">
106
+ <vxe-checkbox v-model="scope.row.edit" checked-value="1" unchecked-value="0" size="small"></vxe-checkbox>
107
+ </template>
108
+ </vxe-column>
109
+ <vxe-column field="sort" title="排序" width="45">
110
+ <template #default="scope">
111
+ <vxe-input v-model="scope.row.sort" :true-label="1" :false-label="0" size="small"></vxe-input>
112
+ </template>
113
+ </vxe-column>
114
+ <vxe-column field="dictCode" title="数据字典" width="80">
115
+ <template #default="scope">
116
+ <vxe-input v-model="scope.row.dictCode"></vxe-input>
117
+ </template>
118
+ </vxe-column>
119
+ <vxe-column field="selectType" title="查询类型" width="85">
120
+ <template #default="scope">
121
+ <dict-tag code="select_type" v-model="scope.row.selectType"></dict-tag>
122
+ </template>
123
+ </vxe-column>
124
+ <vxe-column field="selectDom" width="100" title="查询控件" clearable>
125
+ <template #default="scope">
126
+ <dict-tag code="select_dom" v-model="scope.row.selectDom"></dict-tag>
127
+ </template>
128
+ </vxe-column>
129
+ <vxe-column field="fixed" title="fixed" width="80">
130
+ <template #default="scope">
131
+ <dict-tag code="table_fixed" v-model="scope.row.fixed"></dict-tag>
132
+ </template>
133
+ </vxe-column>
134
+ <vxe-column field="formatter" title="formatter" width="80">
135
+ <template #default="scope">
136
+ <codemirror-tag v-model="scope.row.formatter" size="small"></codemirror-tag>
137
+ </template>
138
+ </vxe-column>
139
+ <vxe-column field="otherProp" title="其他属性" width="80">
140
+ <template #default="scope">
141
+ <codemirror-tag v-model="scope.row.otherProp"></codemirror-tag>
142
+ </template>
143
+ </vxe-column>
144
+ </vxe-table>
145
+ <tool-but-config ref="toolButConfig" @close="toolButConfigClose"></tool-but-config>
146
+ <operation-but-config ref="operationButConfig" @close="operationButConfigClose"></operation-but-config>
147
+ </div>
148
+ </template>
149
+
150
+ <script setup>
151
+ import {inject, nextTick, reactive, ref, toRaw, watch} from "vue";
152
+ import ToolButConfig from "@/views/table/add-or-edit/configOld/tableTags/tool-but-config.vue";
153
+ import OperationButConfig from "@/views/table/add-or-edit/configOld/tableTags/operation-but-config.vue";
154
+ import {get} from "@/utils/http/httpUtils";
155
+
156
+ const configData = inject('configData');
157
+ const http = inject("http")
158
+ const state = reactive({
159
+ tableColumn: [],
160
+ toolButOptions: [],
161
+ operationButOptions: [],
162
+ openColumnOptions: [],
163
+ treeParentIdOptions: [],
164
+ tableData: []
165
+ })
166
+
167
+ watch(() => configData.tableColumn, (tableColumn) => {
168
+ state.tableData = tableColumn;
169
+ setChecked();
170
+ })
171
+ const operationButConfig = ref();
172
+ const toolButConfig = ref();
173
+ function setChecked() {
174
+ if (state.toolButOptions.length == 0 || state.operationButOptions.length == 0) {
175
+ initBaseData();
176
+ setTimeout(() => {
177
+ setChecked();
178
+ }, 500)
179
+ return;
180
+ }
181
+ let toolButOptions = [];
182
+ for (let t of state.toolButOptions) {
183
+ for (let o of configData.form.toolBut) {
184
+ if (o == t.code) {
185
+ t["checked"] = 1;
186
+ break;
187
+ }
188
+ }
189
+ toolButOptions.push(t)
190
+ }
191
+ state.toolButOptions = toolButOptions;
192
+
193
+ let operationButOptions = [];
194
+ for (let t of state.operationButOptions) {
195
+ for (let o of configData.form.operationBut) {
196
+ if (o == t.code) {
197
+ t["checked"] = 1;
198
+ break;
199
+ }
200
+ }
201
+ operationButOptions.push(t);
202
+ }
203
+ state.operationButOptions = operationButOptions;
204
+ }
205
+
206
+ function initBaseData() {
207
+ get(http,"/online/tableOperationButConfig/list").then(data => {
208
+ if(configData.form.operationButOptions){
209
+ let operationButOptions = [];
210
+ let o;
211
+ for (let d of data) {
212
+ o = d;
213
+ for (let t of configData.form.operationButOptions) {
214
+ if (d.code == t.code) {
215
+ o = t;
216
+ }
217
+ }
218
+ operationButOptions.push(o);
219
+ }
220
+ state.operationButOptions = operationButOptions;
221
+ }else{
222
+ state.operationButOptions = data;
223
+ }
224
+
225
+ })
226
+ get(http,"/online/tableToolButConfig/list").then(data => {
227
+ if(configData.form.toolButOptions) {
228
+ let toolButOptions = [];
229
+ for (let d of data) {
230
+ let o = d;
231
+ for (let t of configData.form.toolButOptions) {
232
+ if (d.code == t.code) {
233
+ o = t;
234
+ }
235
+ }
236
+ toolButOptions.push(o);
237
+ }
238
+ state.toolButOptions = toolButOptions;
239
+ }else{
240
+ state.toolButOptions = data;
241
+ }
242
+ })
243
+ }
244
+
245
+ function setToolButOptionsValue(o) {
246
+ configData.form.toolButOptions = [];
247
+ for (let j = 0; j < state.toolButOptions.length; j++) {
248
+ let checked = 0;
249
+ for (let k of o.value) {
250
+ if (state.toolButOptions[j]['code'] == k) {
251
+ checked = 1;
252
+ configData.form.toolButOptions.push(state.toolButOptions[j]);
253
+ break;
254
+ }
255
+ }
256
+ state.toolButOptions[j].checked = checked;
257
+ }
258
+ }
259
+
260
+ function butConfigClick(v) {
261
+ if (v == "operationButConfig") {
262
+ operationButConfig.value.init(state.operationButOptions);
263
+ } else if (v == "toolButConfig") {
264
+ toolButConfig.value.init(state.toolButOptions);
265
+ }
266
+ }
267
+
268
+ function setOperationButOptionsValue(o) {
269
+ let operationButOptions = [];
270
+ for (const operationButOption of state.operationButOptions) {
271
+ let checked = 0;
272
+ for (let k of o.value) {
273
+ if (operationButOption['code'] == k) {
274
+ checked = 1;
275
+ operationButOptions.push(operationButOption);
276
+ break;
277
+ }
278
+ }
279
+ operationButOption.checked = checked;
280
+ }
281
+ configData.form.operationButOptions = operationButOptions;
282
+ }
283
+
284
+ function toolButConfigClose(v) {
285
+ state.toolButOptions = v;
286
+ configData.form.toolButOptions = [];
287
+ let data = [];
288
+ for (let i = 0; i < v.length; i++) {
289
+ if (v[i].checked == 1) {
290
+ data.push(v[i].code);
291
+ configData.form.toolButOptions.push(v[i]);
292
+ }
293
+ }
294
+ configData.form.toolBut = data;
295
+ }
296
+
297
+ function operationButConfigClose(v) {
298
+ state.operationButOptions = v;
299
+ configData.form.operationButOptions = [];
300
+ let data = [];
301
+ for (let i = 0; i < v.length; i++) {
302
+ if (v[i].checked == 1) {
303
+ data.push(v[i].code);
304
+ configData.form.operationButOptions.push(v[i]);
305
+ }
306
+ }
307
+ configData.form.operationBut = data;
308
+ }
309
+
310
+ function setTableData(v) {
311
+ let tableData = [];
312
+ for (let i = 0; i < v.length; i++) {
313
+ let push = true;
314
+ let o = v[i];
315
+ for (let j = 0; j < state.tableData.length; j++) {
316
+ if (o.asName == state.tableData[j].field) {
317
+ push = false;
318
+ state.tableData[j].sort = i;
319
+ tableData.push(state.tableData[j]);
320
+ break;
321
+ }
322
+ }
323
+ if (push) {
324
+ tableData.push({
325
+ sort: i,
326
+ tableField: o.column_name,
327
+ field: o.asName,
328
+ title: o.label
329
+ });
330
+ }
331
+ }
332
+ state.tableData = tableData;
333
+ }
334
+
335
+
336
+ function setConfigData() {
337
+ configData.tableColumn = state.tableData;
338
+ }
339
+
340
+ function updateVisible() {
341
+ emits('emits', 'updateVisible');
342
+ }
343
+
344
+ defineExpose({
345
+ setConfigData,
346
+ })
347
+ // 子组件调用父组件
348
+ const emits = defineEmits(['updateVisible']); //声明 emits
349
+ </script>
350
+
351
+ <style scoped>
352
+
353
+ </style>
@@ -0,0 +1,75 @@
1
+ <template>
2
+ <vxe-modal
3
+ v-model="dialogVisible"
4
+ :show-close="false"
5
+ title="操作按钮配置"
6
+ width="900"
7
+ height="600"
8
+ resize
9
+ :before-hide-method="handleClose" showFooter>
10
+ <vxe-table ref="table" :data="state.tableData" stripe size="mini">
11
+ <vxe-column type="checkbox" width="40"></vxe-column>
12
+ <vxe-column field="code" title="定义编码" width="80" align="center"/>
13
+ <vxe-column field="name" title="按钮名称" align="center"/>
14
+ <vxe-column field="sort" title="排序" width="45" align="center"/>
15
+ <vxe-column field="icon" title="图标" width="45" align="center"/>
16
+ <vxe-colgroup field="b" title="回调方法" align="center">
17
+ <vxe-column field="clickCallBackMethod" title="单击(click)" align="center"/>
18
+ <vxe-column field="showCallBack" title="显示(show)" align="center"/>
19
+ <vxe-column field="disabledCallBack" title="禁用(disabled)" align="center"/>
20
+ </vxe-colgroup>
21
+ <vxe-column title="customFunction" align="center">
22
+ <template #default="scope">
23
+ <codemirror-tag v-model="scope.row.customFunction"></codemirror-tag>
24
+ </template>
25
+ </vxe-column>
26
+ </vxe-table>
27
+ </vxe-modal>
28
+ </template>
29
+
30
+ <script setup>
31
+ import {nextTick, reactive, ref} from "vue";
32
+
33
+ const table = ref(null);
34
+ const state = reactive({
35
+ tableData: [],
36
+ })
37
+ const dialogVisible = ref(false);
38
+
39
+ function init(v) {
40
+ dialogVisible.value = true;
41
+ state.tableData = v;
42
+ nextTick(() => {
43
+ table.value.clearCheckboxRow();
44
+ nextTick(() => {
45
+ table.value.setCheckboxRow(v.filter(o => o.checked == 1), true);
46
+ })
47
+ })
48
+ }
49
+
50
+ function handleClose() {
51
+ for (let tableDatum of state.tableData) {
52
+ let checked = 0;
53
+ for (let checkboxRecord of table.value.getCheckboxRecords()) {
54
+ if (tableDatum.code == checkboxRecord.code) {
55
+ checked = 1;
56
+ break;
57
+ }
58
+ }
59
+ tableDatum.checked = checked;
60
+ }
61
+ emit('close', state.tableData);
62
+ dialogVisible.value = false;
63
+ }
64
+
65
+ // 子组件调用父组件
66
+ const emit = defineEmits(["close"]); //声明 emits
67
+ // 对外暴露
68
+ defineExpose({
69
+ init,
70
+ });
71
+ </script>
72
+
73
+ <style scoped>
74
+
75
+ </style>
@@ -0,0 +1,92 @@
1
+ <template>
2
+ <vxe-modal
3
+ v-model="dialogVisible"
4
+ title="工具栏按钮配置"
5
+ width="900"
6
+ height="600"
7
+ resize
8
+ :before-hide-method="handleClose" showFooter>
9
+ <vxe-table ref="table" :data="state.tableData" stripe size="mini">
10
+ <vxe-column type="checkbox" width="40"></vxe-column>
11
+ <vxe-column type="seq" width="60" title="序号"></vxe-column>
12
+ <vxe-column field="code" title="定义编码" align="center"/>
13
+ <vxe-column title="按钮名称" align="center">
14
+ <template #default="scope">
15
+ <vxe-input v-model="scope.row.name" size="mini"/>
16
+ </template>
17
+ </vxe-column>
18
+ <vxe-column title="排序" width="80" align="center">
19
+ <template #default="scope">
20
+ <vxe-input type="number" v-model="scope.row.sort" style="width: 70px;" controls-position="right" size="mini"/>
21
+ </template>
22
+ </vxe-column>
23
+ <vxe-column field="icon" title="图标" width="45" align="center"/>
24
+ <vxe-column field="clickCallBackMethod" title="单击回调方法" align="center"/>
25
+ <vxe-colgroup field="b" title="默认" align="center">
26
+ <vxe-column title="禁用" width="45" align="center">
27
+ <template #default="scope">
28
+ <vxe-checkbox checked-value="1" unchecked-value="0" v-model="scope.row.defaultDisabled"/>
29
+ </template>
30
+ </vxe-column>
31
+ <vxe-column title="显示" width="45" align="center">
32
+ <template #default="scope">
33
+ <vxe-checkbox checked-value="1" unchecked-value="0" v-model="scope.row.defaultShow"/>
34
+ </template>
35
+ </vxe-column>
36
+ <vxe-column title="customFunction" align="center">
37
+ <template #default="scope">
38
+ <codemirror-tag v-model="scope.row.customFunction"></codemirror-tag>
39
+ </template>
40
+ </vxe-column>
41
+ </vxe-colgroup>
42
+ </vxe-table>
43
+ </vxe-modal>
44
+ </template>
45
+
46
+ <script setup>
47
+ import {nextTick, reactive, ref} from "vue";
48
+
49
+ const table = ref(null);
50
+ const state = reactive({
51
+ tableData: [],
52
+ })
53
+ const dialogVisible = ref(false);
54
+ const init = (v) => {
55
+ dialogVisible.value = true;
56
+ state.tableData = v;
57
+ nextTick(() => {
58
+ table.value.clearCheckboxRow();
59
+ nextTick(() => {
60
+ table.value.setCheckboxRow(v.filter(o => o.checked == 1), true);
61
+ })
62
+ })
63
+ }
64
+
65
+
66
+ function handleClose() {
67
+ for (let tableDatum of state.tableData) {
68
+ let checked = 0;
69
+ for (let checkboxRecord of table.value.getCheckboxRecords()) {
70
+ if (tableDatum.code == checkboxRecord.code) {
71
+ checked = 1;
72
+ break;
73
+ }
74
+ }
75
+ tableDatum.checked = checked;
76
+ }
77
+ emit('close', state.tableData);
78
+ dialogVisible.value = false;
79
+ }
80
+
81
+
82
+ // 子组件调用父组件
83
+ const emit = defineEmits(["close"]); //声明 emits
84
+ // 对外暴露
85
+ defineExpose({
86
+ init,
87
+ });
88
+ </script>
89
+
90
+ <style scoped>
91
+
92
+ </style>