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,424 @@
1
+ <template>
2
+ <div>
3
+ <el-dialog
4
+ class="tree-add-or-edit"
5
+ v-model="dialogVisible"
6
+ fullscreen
7
+ destroy-on-close
8
+ :show-close="false"
9
+ :showHeader="false"
10
+ >
11
+ <div v-if="dialogVisible"
12
+ v-loading="loading" element-loading-text="正在加载数据中..."
13
+ element-loading-background="rgba(122, 122, 122, 0.8)">
14
+ <el-card v-if="show" style="height: 100%;position: relative;float: left;margin-right: 20px;">
15
+ <template #header>组件预览</template>
16
+ <o-tree :treeConfig="this.treeConfigAll.treeConfig" ref="oTree"
17
+ :toolButOptions="treeConfigAll.toolButOptions"
18
+ :formMainList="treeConfigAll.formMainMap"
19
+ style="height: calc(100vh - 180px)"></o-tree>
20
+ </el-card>
21
+ <el-card style="position: relative;height: 100%;">
22
+ <template #header>配置中心</template>
23
+ <config-core ref="config" :syncTable="syncTable" :setFormConfigData="setFormConfigData"
24
+ :syncFormConfig="syncFormConfig"></config-core>
25
+ </el-card>
26
+ </div>
27
+
28
+ <template #footer>
29
+ <span class="dialog-footer">
30
+ <el-button @click="dialogVisible = false;$emit('emits', {m: 'query'})" :loading="loading">取消</el-button>
31
+ <el-button type="primary" :loading="loading" @click="save">保存</el-button>
32
+ </span>
33
+ </template>
34
+ </el-dialog>
35
+ </div>
36
+ </template>
37
+ <script>
38
+
39
+ import ConfigCore from "@/views/tree/components/config-core.vue";
40
+ import {get, post} from "@/utils/http/httpUtils";
41
+ import OTree from "@/components/tree/components/o-tree.vue";
42
+
43
+ export default {
44
+ name: 'treeConfig',
45
+ components: {OTree, ConfigCore},
46
+ provide() {
47
+ return {
48
+ treeConfigAll: this.treeConfigAll, //传入一个响应式对象
49
+ syncFormConfig: this.syncFormConfig
50
+ }
51
+ },
52
+ inject: ['http'],
53
+ data() {
54
+ return {
55
+ loading: true,
56
+ dialogVisible: false,
57
+ show: true,
58
+ data: [
59
+ {index: "t1", type: "主表", joinTable: "", joinFiled: "/", deleteWhere: 'id=${id}'}
60
+ ],
61
+ treeConfigAll: {
62
+ treeConfig: {
63
+ hump: 0,
64
+ configName: '',
65
+ width: 400,
66
+ dataSource: '',
67
+ treeId: '',
68
+ treeParentId: '',
69
+ mainTable: '',
70
+ optionJson: {},
71
+ tableQueryParams: '',
72
+ executeSql: '',
73
+ lazy: '0',
74
+ firstLazyValue: '',
75
+ executeWhere: '',
76
+ orderBy: '',
77
+ parameterDefault: '',
78
+ api: '',
79
+ title: '',
80
+ label: 'label',
81
+ value: 'value',
82
+ expandIcon: '',
83
+ showCheckbox: 1,
84
+ drawIcon: '',
85
+ treeOper: [],
86
+ convertTree: 1,
87
+ autoInit: 0,
88
+ search: 1,
89
+ firstExpandAll: 1,
90
+ dbName: '',
91
+ optionValue: {},//默认多余字段,并接到optionJson
92
+ propValue: {},//默认多余字段,并接到optionJson
93
+ eventsValue: {},//默认多余字段,并接到optionJson
94
+ },
95
+ toolButOptions: [],
96
+ formMainList: [],
97
+ formMainMap: {},
98
+ tableColumn: [],
99
+ mainTableColumnList: [],
100
+ uuid: '',
101
+ dicData: {
102
+ joinTableDicData: [],
103
+ joinFiledDicData: []
104
+ }
105
+ }
106
+ }
107
+ },
108
+ watch: {
109
+ 'treeConfigAll.treeConfig.label'() {
110
+ this.refreshTree()
111
+ },
112
+ 'treeConfigAll.treeConfig.value'() {
113
+ this.refreshTree()
114
+ },
115
+ 'treeConfigAll.treeConfig.treeId'() {
116
+ this.refreshTree()
117
+ }, 'treeConfigAll.treeConfig.treeParentId'() {
118
+ this.refreshTree()
119
+ },
120
+ 'treeConfigAll.treeConfig.treeOper': {
121
+ handler(newVal) {
122
+ if (newVal.includes('add')) {
123
+ this.syncFormConfigInit('add')
124
+ }
125
+ if (newVal.includes('edit')) {
126
+ this.syncFormConfigInit('edit')
127
+ }
128
+ },
129
+ immediate: false, // 默认不立即执行回调
130
+ deep: false // 不需要深度监听,因为我们直接指定了属性名
131
+ },
132
+ }, 'treeConfigAll.treeConfig.treeId'() {
133
+ this.refreshTree()
134
+ },
135
+ methods: {
136
+ init(o) {
137
+ if (o) {
138
+ this.treeConfigAll.uuid = o.uuid
139
+ this.loading = true;
140
+ get(this.http, '/online/treeConfig/getJson', {uuid: o.uuid}, undefined, true).then(({
141
+ treeConfig,
142
+ toolButOptions,
143
+ formMainList
144
+ }) => {
145
+ this.treeConfigAll.toolButOptions = toolButOptions;
146
+ this.treeConfigAll.formMainMap = formMainList;
147
+ treeConfig.treeOper = toolButOptions.map(o => o.code);
148
+ if (treeConfig.optionJson) {
149
+ treeConfig.optionJson = JSON.parse(treeConfig.optionJson);
150
+ } else {
151
+ treeConfig.optionJson = {}
152
+ }
153
+ treeConfig.optionValue = treeConfig.optionJson.optionValue ? treeConfig.optionJson.optionValue : {}
154
+ treeConfig.propValue = treeConfig.optionJson.propValue ? treeConfig.optionJson.propValue : {}
155
+ treeConfig.eventsValue = treeConfig.optionJson.eventsValue ? treeConfig.optionJson.eventsValue : {}
156
+ this.treeConfigAll.treeConfig = treeConfig;
157
+ this.refreshTree()
158
+ this.$nextTick(() => {
159
+ this.initTable()
160
+ })
161
+ }).finally(() => {
162
+ this.loading = false;
163
+ })
164
+ } else {
165
+ this.loading = false;
166
+ }
167
+ this.dialogVisible = true;
168
+
169
+ },
170
+ initColumnList() {
171
+ if (this.treeConfigAll.treeConfig.table && this.treeConfigAll.treeConfig.table.length >= 1) {
172
+ this.treeConfigAll.mainTableColumnList = this.treeConfigAll.treeConfig.table[0].columnList
173
+ return
174
+ }
175
+ let param = {tableName: this.treeConfigAll.treeConfig.mainTable}
176
+ get(this.http, '/online/getDBTableColumnList/' + this.treeConfigAll.treeConfig.dbName, param).then((res) => {
177
+ this.treeConfigAll.mainTableColumnList = res
178
+ }
179
+ )
180
+ },
181
+ setFormList() {
182
+ //保存新增和编辑表单配置
183
+ let formMainList = []
184
+ if (this.treeConfigAll.treeConfig.treeOper.includes('add')) {
185
+ formMainList.push(this.getFormMain('add'))
186
+ this.treeConfigAll.formMainMap['add']= this.getFormMain('add')
187
+ }
188
+ if (this.treeConfigAll.treeConfig.treeOper.includes('edit')) {
189
+ formMainList.push(this.getFormMain('edit'))
190
+ this.treeConfigAll.formMainMap['edit']= this.getFormMain('edit')
191
+ }
192
+ if (formMainList.length != 0) {
193
+ this.treeConfigAll.formMainList = formMainList
194
+ }
195
+ },
196
+ getFormMain(type) {
197
+ const formConfigData = this.$refs.config.$refs[type + 'FormConfig'].getData()
198
+ if (formConfigData) {
199
+ let data = {
200
+ formMain: {
201
+ formType: type,
202
+ designer: "" + formConfigData.designer, //表单类型 (0)基础表单 (1)自定义表单
203
+ uuid: this.treeConfigAll.uuid,
204
+ saveUrl: formConfigData.saveUrl,
205
+ customForm: formConfigData.customForm
206
+ },
207
+ formMainColumns: formConfigData.vexTable.data,
208
+ formJson: {
209
+ optionJson: formConfigData.codeForm,
210
+ customJson: JSON.stringify(formConfigData.customJson)
211
+ }
212
+ }
213
+ if (type == 'edit') {
214
+ data.updateKey = formConfigData.updateKey
215
+ }
216
+ return data
217
+ }
218
+ },
219
+ initOption(type) {
220
+ let key = type + 'Value';
221
+ let ref = this.$refs.config.$refs.tree.$refs[type];
222
+ if (ref) {
223
+ ref.setData(this.treeConfigAll.treeConfig, key)
224
+ }
225
+ if (this.treeConfigAll.treeConfig[key]) {
226
+ this.treeConfigAll.treeConfig.optionJson[key] = this.treeConfigAll.treeConfig[key];
227
+ }
228
+ },
229
+
230
+ async save() {
231
+ this.treeConfigAll.treeConfig.optionJson = {};
232
+ this.initOption("option");
233
+ this.initOption("prop");
234
+ this.initOption("events");
235
+ this.treeConfigAll.treeConfig.optionJson = JSON.stringify(this.treeConfigAll.treeConfig.optionJson)
236
+ this.loading = true;
237
+ await this.$refs.config.$refs.data.$refs.formRef.validate((v, o) => {
238
+ if (!v) {
239
+ this.$refs.config.activeName = "data";
240
+ this.loading = false;
241
+ return
242
+ }
243
+ })
244
+ await this.$refs.config.$refs.tree.$refs.formRef.validate((v, o) => {
245
+ if (!v) {
246
+ for (let key of Object.keys(o)) {
247
+ if (this.treeConfigAll.treeConfig[key] == '' || this.treeConfigAll.treeConfig[key] == undefined) {
248
+ this.$refs.config.activeName = "tree";
249
+ this.loading = false;
250
+ return
251
+ }
252
+ }
253
+ }
254
+ if (this.treeConfigAll.treeConfig.treeOper
255
+ && this.treeConfigAll.treeConfig.treeOper.length >= 1) {
256
+ this.syncFormConfig()
257
+ this.setFormList()
258
+ }
259
+ post(this.http, "/online/treeConfig/saveJson", this.treeConfigAll, undefined, false).then(() => {
260
+ this.$emit("emits", {m: 'query'});
261
+ this.dialogVisible = false;
262
+ }).finally(() => {
263
+ this.loading = false;
264
+ })
265
+ })
266
+ },
267
+ syncTable() {
268
+ this.$refs.config.$refs.data.$refs.formRef.validate((v) => {
269
+ if (!v) {
270
+ this.$refs.config.activeName = "data";
271
+ return
272
+ }
273
+ this.$refs.oTree.doQuery({
274
+ sql: this.treeConfigAll.treeConfig.executeSql,
275
+ dbName: this.treeConfigAll.treeConfig.dbName,
276
+ queryType: 100,
277
+ enablePage: false
278
+ })
279
+ })
280
+ },
281
+ refreshTree() {
282
+ this.show = false;
283
+ this.$nextTick(() => {
284
+ this.show = true;
285
+ })
286
+ },
287
+ initConfigDict() {
288
+ this.treeConfigAll.dicData.joinFiledDicData = this.dict.val('join_filed')
289
+ this.remoteMethod()
290
+ },
291
+ remoteMethod() {
292
+ get(this.http, '/online/getDBTableList/', {dbName: this.treeConfigAll.treeConfig.dbName}).then((data) => {
293
+ this.treeConfigAll.dicData.joinTableDicData = data
294
+ })
295
+ },
296
+ async initTable() {
297
+ let config = this.treeConfigAll
298
+ this.treeConfigAll.treeConfig.table = this.data
299
+ if (!this.treeConfigAll.tableColumn) {
300
+ this.treeConfigAll.tableColumn = []
301
+ }
302
+ await this.sqlParseTable(config.treeConfig.deleteWhere)
303
+ this.treeConfigAll.treeConfig.mainTable = this.treeConfigAll.treeConfig.table[0].joinTable
304
+ this.initColumnList()
305
+ },
306
+ sqlParseTable(val) {
307
+ let form = this.treeConfigAll.treeConfig
308
+ let executeSql = form.executeSql.toLowerCase();
309
+ if (executeSql.indexOf("from") == -1) {
310
+ return;
311
+ }
312
+ let sql = executeSql.split("from")
313
+ let tables = sql[1].trim().split(" ")
314
+ let tableData = this.parseTable(tables)
315
+ console.log('tableData', tableData)
316
+ let promise = []
317
+ for (let i = 0; i < tableData.length; i++) {
318
+ promise.push(get(this.http, '/online/getDBTableColumnList/' + form.dbName, {
319
+ tableName: tableData[i].joinTable
320
+ }))
321
+ }
322
+ Promise.all(promise).then((result) => {
323
+ for (let i = 0; i < result.length; i++) {
324
+ let cloumns = result[i]
325
+ for (let cloumn of cloumns) {
326
+ let checked = "0"
327
+ let visible = "0"
328
+ if (this.treeConfigAll.tableColumn.length != 0) {
329
+ for (let col of this.treeConfigAll.tableColumn) {
330
+ if (cloumn.column_name == col.tableField
331
+ && cloumn.table_name == tableData[i].joinTable) {
332
+ checked = '1'
333
+ visible = col.visible
334
+ }
335
+ }
336
+ } else {
337
+ checked = '1'
338
+ visible = '1'
339
+ }
340
+ cloumn.checked = checked
341
+ cloumn.visible = visible
342
+ }
343
+ tableData[i]['columnList'] = cloumns
344
+ }
345
+ if (val) {
346
+ tableData[0].deleteWhere = val.wheres
347
+ }
348
+ form.table = tableData
349
+ if (!this.treeConfigAll.tableColumn) {
350
+ this.treeConfigAll.tableColumn = form.table[0].columnList
351
+ }
352
+ this.treeConfigAll.treeConfig = form
353
+ })
354
+ },
355
+ parseTable(tables) {
356
+ let tableData = this.data
357
+ this.treeConfigAll.treeConfig.table[0].joinTable = tables[0].replace(/[\n\t\s]+/g, '')
358
+ for (let i = 2; i < tables.length; i++) {
359
+ let str = tables[i]
360
+ if (str == "join") {
361
+ let type = tables[i - 1] == ("left" || "right") ? tables[i - 1] + " join" : "join"
362
+ let joinTable = tables[++i]
363
+ let index = tables[++i]
364
+ i++
365
+ let joinFiled = tables[++i]
366
+ tableData.push({
367
+ index: index,
368
+ type: type,
369
+ joinTable: joinTable.replace(/[\n\t\s]+/g, ''),
370
+ joinFiled: joinFiled
371
+ })
372
+ }
373
+ }
374
+ return tableData
375
+ },
376
+ syncFormConfig() {
377
+ if (this.treeConfigAll.treeConfig.treeOper.includes('add')) {
378
+ this.syncFormConfigInit('add')
379
+ }
380
+ if (this.treeConfigAll.treeConfig.treeOper.includes('edit')) {
381
+ this.syncFormConfigInit('edit')
382
+ }
383
+ },
384
+ syncFormConfigInit(formType) {
385
+ console.log(this.treeConfigAll)
386
+ if (!this.treeConfigAll.mainTableColumnList || this.treeConfigAll.mainTableColumnList.length == 0) {
387
+ this.treeConfigAll.mainTableColumnList = this.treeConfigAll.treeConfig.table[0].columnList
388
+ }
389
+ let type = formType + 'Display'
390
+ let rows = []
391
+ for (const column of this.treeConfigAll.mainTableColumnList) {
392
+ let row = {
393
+ prop: column.column_name,
394
+ field: column.column_name,
395
+ title: column.column_comment,
396
+ label: column.column_comment,
397
+ selectDom: 1,
398
+ [type]: '1'
399
+ }
400
+ rows.push(row)
401
+ }
402
+ this.$nextTick(() => {
403
+ this.$refs.config.$refs[formType + 'FormConfig'].setShow()
404
+ this.$refs.config.$refs[formType + 'FormConfig'].setAll({list: rows, isAll: true})
405
+ this.setFormList()
406
+ })
407
+ },
408
+ },
409
+ created() {
410
+ }
411
+ }
412
+ </script>
413
+
414
+ <style lang="less" scoped>
415
+ :deep(.tree-add-or-edit) {
416
+ > header:first-of-type {
417
+ display: none !important;;
418
+ }
419
+
420
+ > .el-dialog__body:first-of-type {
421
+ padding: 0 !important;
422
+ }
423
+ }
424
+ </style>
package/vue.config.js ADDED
@@ -0,0 +1,44 @@
1
+ const {defineConfig} = require('@vue/cli-service')
2
+
3
+ module.exports = defineConfig({
4
+ publicPath: "./",
5
+ transpileDependencies: true,
6
+ lintOnSave: false,
7
+ runtimeCompiler: false, //是否使用包含运行时编译器的Vue构建版本
8
+ // 生产环境不生成 SourceMap
9
+ productionSourceMap: false,
10
+ configureWebpack: (config) => {
11
+ const isProduction = process.env.NODE_ENV === 'production';
12
+ const externals = isProduction ? {
13
+ // 排除 Vue 依赖,避免重复打包
14
+ 'element-plus': 'element-plus',
15
+ 'exceljs': 'exceljs',
16
+ 'axios': 'axios',
17
+ 'vxe-table': 'vxe-table',
18
+ '@smallwei/avue': '@smallwei/avue',
19
+ 'pinia': 'pinia',
20
+ 'vue': 'vue',
21
+ 'qs': 'qs',
22
+ 'olp-render': 'olp-render',
23
+ } : {};
24
+
25
+ config.externals = externals;
26
+
27
+ if (isProduction) {
28
+ // 移除注释
29
+ config.optimization.minimizer[0].options.extractComments = false;
30
+ // 使用哈希文件名以实现缓存控制
31
+ config.output.filename = 'js/[name].[contenthash:8].js';
32
+ config.output.chunkFilename = 'js/[name].[contenthash:8].js';
33
+ // 配置库的输出
34
+ config.output.library = 'olp-table';
35
+ config.output.libraryTarget = 'umd';
36
+ config.output.umdNamedDefine = true;
37
+ }
38
+
39
+ // 开发服务器配置
40
+ config.devServer = {
41
+ client: { overlay: false }
42
+ };
43
+ },
44
+ })
File without changes
File without changes