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,539 +0,0 @@
1
- <template>
2
- <avue-form v-model="form.form" :option="option">
3
- <template #menu-form="{ size }">
4
- <el-button type="primary" :size="size" @click="syncTable">同步table
5
- </el-button>
6
-
7
- <el-button type="primary" :size="size" @click="syncCurd">一键同步CURD
8
- </el-button>
9
- <el-button type="primary" :size="size" @click="updateExecuteSql(0)">SQL格式化
10
- </el-button>
11
- <el-button type="primary" :size="size" @click="updateExecuteSql(1)">SQL压缩
12
- </el-button>
13
- <el-button type="primary" status="success"
14
- @click="setFieldConfig(true)">字段配置
15
- </el-button>
16
- </template>
17
- <template #index="{ row }">
18
- <el-tag>{{ row.index }}</el-tag>
19
- </template>
20
- <template #type="{ row }">
21
- <el-select v-model="row.type" :disabled="row.$index == 0" @change="setSql('',row.index)">
22
- <el-option v-for="item in dicData.joinFiledDicData" :key="item.value" :label="item.label" :value="item.value"/>
23
- </el-select>
24
- </template>
25
- <template #joinTable="{ row }">
26
- <lazy-load-select v-model="row.joinTable" placeholder="请选择数据表" :data="dicData.joinTableDicData" @change="setTable"/>
27
- </template>
28
- <template #joinFiled="{ row }">
29
- <el-input v-model="row.joinFiled" @change="setSql('',row.index)" :disabled="row.$index == 0"></el-input>
30
- </template>
31
- <template #deleteWhere="{ row }">
32
- <el-input v-model="row.deleteWhere"></el-input>
33
- </template>
34
- <template #fields="{ row }">
35
- <el-button type="primary"
36
- @click="setFieldEvent(row)">字段配置
37
- </el-button>
38
- </template>
39
- </avue-form>
40
- <field-config ref="filedConfig" @close="filedConfigClose"/>
41
- </template>
42
- <script setup>
43
- import {inject, defineExpose, reactive, onMounted, defineEmits, ref} from "vue"
44
- import {get, postQs} from "@/utils/http/httpUtils"
45
- import {setArrayObjectKeyValue} from "@/utils/object"
46
- import {storeDict} from "@/store/dict";
47
- import {ElMessage} from "element-plus"
48
- import sqlFormatter from "sql-formatter";
49
- import FieldConfig from "@/views/table/add-or-edit/config/field-config/index.vue"
50
- import LazyLoadSelect from "@/components/lazy-load-select.vue";
51
-
52
- const http = inject('http')
53
- const addOrEditRootData = inject('addOrEditRootData');
54
- const dict = storeDict();
55
- const dicData = reactive({
56
- joinFiledDicData: [{label: '内连接', value: 'join'}, {
57
- label: '左连接',
58
- value: 'left join'
59
- }, {label: '右连接', value: 'right join'},],
60
- joinTableDicData: []
61
- })
62
-
63
- const form = reactive({
64
- form: {
65
- table: [{index: "t1", type: "主表", joinTable: "", joinFiled: "/", deleteWhere: 'id=${id}'}],
66
- executeSql: '',
67
- executeWhere: '',
68
- orderBy: ''
69
- }
70
- })
71
-
72
- const option = reactive({
73
- submitBtn: false, emptyBtn: false,
74
- column: [
75
- /* {
76
- label: '转换驼峰', prop: 'hump', border: true, type: 'radio', value: '0', span: 7, dicData: [{
77
- label: '不转换', value: '0'
78
- }, {
79
- label: '转换', value: '1'
80
- },{
81
- label: '请求转换', value: '2'
82
- }],
83
- dictCode: 'converting_hump'
84
- },*/
85
- {
86
- label: '数据源类型',
87
- type: 'radio',
88
- span: 7,
89
- prop: 'definitionSql',
90
- border: true,
91
- value: '0',
92
- onChange: ({value}) => {
93
- if (value == '0') {
94
- setArrayObjectKeyValue(option.column, 'display', true, "executeSql,where,table,orderBy")
95
- setArrayObjectKeyValue(option.column, 'display', false, "api,requestType")
96
- } else if (value == '1') {
97
- setArrayObjectKeyValue(option.column, 'display', true, "executeSql,where,orderBy")
98
- setArrayObjectKeyValue(option.column, 'display', false, "api,table,requestType")
99
- } else {
100
- setArrayObjectKeyValue(option.column, 'display', true, "api,requestType")
101
- setArrayObjectKeyValue(option.column, 'display', false, "executeSql,where,table,orderBy")
102
- }
103
- },
104
- dicData: [{
105
- label: '自动SQL', value: '0'
106
- }, {
107
- label: '手动SQL', value: '1'
108
- }, {
109
- label: 'API', value: '2'
110
- }],
111
- dictCode: 'tree_data_type'
112
- }, {
113
- label: '查询表格', prop: 'table', type: 'dynamic', span: 24, children: {
114
- align: 'center', minHeight: 100, maxHeight: 170, size: "small", headerAlign: 'center', rowAdd: (done) => {
115
- let obj = {
116
- index: "t" + (form.form.table.length + 1),
117
- type: "join",
118
- joinTable: "",
119
- joinFiled: "t" + form.form.table.length + ".=t" + (form.form.table.length + 1) + "."
120
- }
121
- done(obj)
122
- }, rowDel: (row) => {
123
- if (row.$index != 0) {
124
- setSql(row.$index)
125
- } else {
126
- ElMessage.error("主表不能删除!")
127
- }
128
- }, column: [{
129
- width: 60, prop: "index", label: '序号'
130
- }, {
131
- label: '类型',
132
- prop: "type",
133
- width: 120,
134
- disabled: true,
135
- type: 'select',
136
- }, {
137
- label: '数据表', prop: "joinTable", type: 'select', dicData: []
138
- }, {
139
- label: 'on', prop: "joinFiled", width: 200, type: 'input'
140
- }, {
141
- label: '删除条件', prop: "deleteWhere", type: 'input'
142
- }, {
143
- label: '操作', prop: "fields", type: 'button', width: 110,
144
- }]
145
- }
146
- }, {
147
- label: '执行SQL', display: true, type: 'textarea', maxRows: 7, span: 24, prop: 'executeSql',
148
- }, {
149
- label: 'where条件', display: true, type: 'input', span: 24, prop: 'executeWhere',
150
- }, {
151
- label: '排序', display: true, type: 'input', span: 24, prop: 'orderBy',
152
- }, {
153
- label: '默认参数', type: 'input', span: 24, prop: 'parameterDefault',
154
- }, {
155
- label: 'API', display: true, type: 'input', span: 24, prop: 'api',
156
- }, {
157
- label: '请求类型', prop: 'requestType', border: true, type: 'radio', value: '0', span: 6,
158
- dicData: [],
159
- dictCode: 'request_type',
160
- },
161
- ]
162
- })
163
- const configData = inject('configData')
164
-
165
- function parseData(data) {
166
- if (form.form.definitionSql == '1') {
167
- data.mainTable = form.form.mainTable
168
- } else {
169
- data.mainTable = form.form.table[0].joinTable
170
- }
171
- data.definitionSql = form.form.definitionSql
172
- data.executeSql = form.form.executeSql
173
- data.orderBy = form.form.orderBy
174
- data.groupBy = form.form.groupBy
175
- data.executeWhere = form.form.executeWhere
176
- data.parameterDefault = form.form.parameterDefault
177
- data.hump = form.form.hump
178
- data.api = form.form.api
179
- data.requestType = form.form.requestType
180
- if (form.form.definitionSql == 0) {
181
- if (form.form.table[0].deleteWhere) {
182
- data.deleteWhere = {
183
- wheres: form.form.table[0].deleteWhere.trim(),
184
- tableName: form.form.table[0].joinTable,
185
- }
186
- } else {
187
- delete data.deleteWhere
188
- }
189
- }
190
- }
191
-
192
-
193
- function setData(f) {
194
- form.form.definitionSql = f
195
- form.form.hump = f.hump
196
- form.form.mainTable = f.mainTable
197
- form.form.executeSql = f.executeSql
198
- form.form.orderBy = f.orderBy
199
- form.form.api = f.api
200
- form.form.requestType = f.requestType
201
- form.form.executeWhere = f.executeWhere
202
- form.form.parameterDefault = f.parameterDefault
203
- form.form.definitionSql = f.definitionSql
204
- if (form.form.definitionSql == 0) {
205
- sqlParseTable(f.deleteWhere)
206
- }
207
- }
208
-
209
- function setTable() {
210
- let promise = []
211
- for (let i = 0; i < form.form.table.length; i++) {
212
- promise.push(get(http, "/online/getDBTableColumnList/" + addOrEditRootData.form.dbName, {tableName: form.form.table[i].joinTable}))
213
- }
214
- Promise.all(promise).then((result) => {
215
- for (let i = 0; i < result.length; i++) {
216
- form.form.table[i]['columnList'] = result[i]
217
- }
218
- setSql()
219
- })
220
- }
221
-
222
- function setSql(index, seq) {
223
- if (seq != undefined && seq != 0) {
224
- let arr = form.form.table.find(item => {
225
- return (item.index == seq)
226
- })
227
- if (!arr || !arr.joinTable) {
228
- return
229
- }
230
- }
231
- if (index != undefined && index != 0) {
232
- form.form.table.splice(index, 1)
233
- }
234
-
235
- let sqlTableOn = form.form.table[0].joinTable + " t1 "
236
- let sqlFiled = ""
237
- let tableColumns = []
238
- let sort = 0
239
- for (let i = 0; i < form.form.table.length; i++) {
240
- if (i === index) {
241
- continue
242
- }
243
- let obj = form.form.table[i]
244
- for (let j = 0; j < obj.columnList.length; j++) {
245
- let column = obj.columnList[j]
246
- if (column.checked == 0) {
247
- continue
248
- }
249
- if (sqlFiled.length != 0) {
250
- sqlFiled += ","
251
- }
252
- sort++
253
- sqlFiled += obj.index + "." + column.column_name + " AS " + column.column_name
254
- let column_name = column.column_name
255
- let column_comment = column.column_comment ? column.column_comment : column_name
256
- tableColumns.push({
257
- sort: sort,
258
- tableField: column_name,
259
- field: column_name,
260
- title: column_comment,
261
- label: column_comment,
262
- visible: column.visible,
263
- display: 1,
264
- asName: column_name
265
- })
266
- }
267
- if (i != 0) {
268
- sqlTableOn += " " + obj.type + " " + obj.joinTable + " " + obj.index + " on " + obj.joinFiled
269
- }
270
- }
271
- for (let tableColumn of tableColumns) {
272
- let add = true
273
- for (let c of configData.tableColumn) {
274
- if (c.field == tableColumn.field) {
275
- add = false
276
- }
277
- }
278
- if (add) {
279
- configData.tableColumn.push(tableColumn)
280
- }
281
- }
282
-
283
- for (let i = 0; i < configData.tableColumn.length; i++) {
284
- let remove = true
285
- for (let tableColumn of tableColumns) {
286
- if (configData.tableColumn[i].field == tableColumn.field) {
287
- remove = false
288
- }
289
- }
290
- if (remove) {
291
- configData.tableColumn.splice(i, 1)
292
- }
293
- }
294
- form.form.executeSql = "select " + sqlFiled + " from " + sqlTableOn
295
-
296
- }
297
-
298
- const isSyncCurd = ref(false)
299
- const sync = ref(false)
300
-
301
- function syncTable() {
302
- emit('loading', true)
303
- configData.form.executeSql = form.form.executeSql
304
- configData.form.executeWhere = form.form.where
305
- postQs(http, "/online/getTableFiled/" + addOrEditRootData.form.dbName, {
306
- sql: form.form.executeSql,
307
- where: form.form.where,
308
- definitionSql: form.form.definitionSql,
309
- uuid: configData.form.uuid
310
- }, undefined, false).then((data) => {
311
- emit("updateTable", data.data)
312
- isSyncCurd.value = form.form?.definitionSql == 0 && form.form?.table?.length == 1
313
- if (isSyncCurd.value && sync.value) {
314
- emit("updateCurd")
315
- }
316
- setFieldConfig()
317
- }).finally(() => {
318
- emit('loading', false)
319
- })
320
- }
321
-
322
- const filedConfig = ref()
323
-
324
- function setFieldConfig(filedConf) {
325
- if (form.form.definitionSql != 0) {
326
- return;
327
- }
328
- postQs(http, "/online/getTableSetFiled/" + addOrEditRootData.form.dbName, {
329
- sql: form.form.executeSql,
330
- where: form.form.where,
331
- definitionSql: form.form.definitionSql,
332
- uuid: configData.form.uuid
333
- }, false, false).then((data) => {
334
- setFormTable(data.data)
335
- if (filedConf) {
336
- filedConfig.value.init(form.form.table)
337
- }
338
- })
339
- }
340
-
341
- function getTableNamesByFormSql() {
342
- let formSql = form.form.executeSql.substring(form.form.executeSql.indexOf('from') + 4)
343
- let tableNames = []
344
- for (const join of formSql.split('join')) {
345
- tableNames.push(join)
346
- }
347
- return tableNames
348
- }
349
-
350
- function getTableComment(key) {
351
- for (const item of dicData.joinTableDicData) {
352
- if (item.value == key) return item.label
353
- }
354
- }
355
-
356
- function setFormTable(data) {
357
- let tableNames = getTableNamesByFormSql()
358
- let tables = []
359
- for (const key of Object.keys(data)) {
360
- let table = {
361
- index: 't1',
362
- type: '主表',
363
- joinTable: key,
364
- joinFiled: '/',
365
- deleteWhere: '',
366
- columnList: [],
367
- tableComment: getTableComment(key)
368
- }
369
- table.columnList = Object.values(data[key])
370
- tables.push(table)
371
- }
372
- form.form.table = []
373
- for (let i = 0; i < tableNames.length; i++) {
374
- const tableName = tableNames[i]
375
- for (const table of tables) {
376
- if (tableName.includes(table.joinTable)) {
377
- if (i == 0) {
378
- table.deleteWhere = 'id=${id}'
379
- table.mainTable = table.joinTable
380
- }
381
- if (i != 0) {
382
- table.index = 't' + (i + 1)
383
- table.type = 'join'
384
- let joinFiled = tableName.substring(tableName.indexOf('on') + 2).replace(/[\n\t\s]+/g, '')
385
- if (tableNames[i - 1].includes('left')) {
386
- table.type = 'left join'
387
- joinFiled = joinFiled.replace('left', '')
388
- }
389
- if (tableNames[i - 1].includes('right')) {
390
- table.type = 'right join'
391
- joinFiled = joinFiled.replace('right', '')
392
- }
393
- table.joinFiled = joinFiled
394
- }
395
- form.form.table.push(table)
396
- break
397
- }
398
- }
399
- }
400
- }
401
-
402
- function updateExecuteSql(v) {
403
- if (v === 0) {
404
- form.form.executeSql = sqlFormatter.format(form.form.executeSql,
405
- {
406
- language: 'sql', keywordCase: 'upper', indentStyle: 'tabularLeft'
407
- });
408
- } else {
409
- form.form.executeSql = form.form.executeSql.replace(/\s+/g, " ");
410
- }
411
- }
412
-
413
- function filedConfigClose(data) {
414
- if (!data) return;
415
- for (let j = 0; j < form.form.table.length; j++) {
416
- let obj = form.form.table[j];
417
- if (Object.keys(data).includes(obj.index)) {
418
- form.form.table[j].columnList = data[obj.index];
419
- }
420
- }
421
- setSql();
422
- }
423
-
424
- function setFieldEvent(row) {
425
- postQs(http, "/online/getTableSetFiled/" + addOrEditRootData.form.dbName, {
426
- sql: form.form.executeSql,
427
- definitionSql: form.form.definitionSql,
428
- where: form.form.where,
429
- uuid: configData.form.uuid
430
- }, undefined, false).then((data) => {
431
- row.columnList = Object.values(data.data[row.joinTable])
432
- filedConfig.value.init(row)
433
- })
434
- }
435
-
436
- /**
437
- * 一键同步CURD
438
- */
439
- const syncCurd = () => {
440
- sync.value = true
441
- syncTable()
442
- }
443
-
444
- const parseTable = (tables) => {
445
- let tableData = [{index: "t1", type: "主表", joinTable: configData.form.mainTable, joinFiled: "/"}]
446
- form.form.table[0].joinTable = tables[0]
447
- for (let i = 2; i < tables.length; i++) {
448
- let str = tables[i]
449
- if (str == "join") {
450
- let type = tables[i - 1] == ("left" || "right") ? tables[i - 1] + " join" : "join"
451
- let joinTable = tables[++i]
452
- let index = tables[++i]
453
- i++
454
- let joinFiled = tables[++i]
455
- tableData.push({
456
- index: index,
457
- type: type,
458
- joinTable: joinTable,
459
- joinFiled: joinFiled
460
- })
461
- }
462
- }
463
- return tableData
464
- }
465
-
466
-
467
- const sqlParseTable = (o) => {
468
- if (configData.form.executeSql.indexOf(" from ") == -1) {
469
- return;
470
- }
471
- let sql = configData.form.executeSql.split(" from ")
472
- let tables = sql[1].split(" ")
473
- let tableData = parseTable(tables)
474
- let promise = []
475
- for (let i = 0; i < tableData.length; i++) {
476
- promise.push(get(http, "/online/getDBTableColumnList/" + addOrEditRootData.form.dbName, {
477
- tableName: tableData[i].joinTable
478
- }))
479
- }
480
- Promise.all(promise).then((result) => {
481
- for (let i = 0; i < result.length; i++) {
482
- let cloumns = result[i]
483
- for (let cloumn of cloumns) {
484
- let checked = "0"
485
- let visible = "0"
486
- if (configData.tableColumn.length != 0) {
487
- for (let o of configData.tableColumn) {
488
- if (cloumn.column_name == o.tableField) {
489
- if (cloumn.table_name == tableData[i].joinTable) {
490
- checked = '1'
491
- visible = o.visible
492
- }
493
- }
494
- }
495
- } else {
496
- checked = '1'
497
- visible = '1'
498
- }
499
- cloumn.checked = checked
500
- cloumn.visible = visible
501
- }
502
- tableData[i]['columnList'] = cloumns
503
- }
504
- if (o) {
505
- tableData[0].deleteWhere = o.wheres
506
- }
507
- form.form.table = tableData
508
- /*dataConfig.value.setData(state.tableData)
509
- nextTick(() => {
510
- sqlData.value.refreshColumn();
511
- })*/
512
- })
513
- }
514
-
515
- function remoteMethod() {
516
- get(http, "/online/getDBTableList/", {dbName: addOrEditRootData.form.dbName}).then((data) => {
517
- dicData.joinTableDicData = data
518
- })
519
- }
520
-
521
- function initDict() {
522
- for (const column of option.column) {
523
- if (column.dictCode) {
524
- column.dicData = dict.val(column.dictCode)
525
- }
526
- }
527
- }
528
-
529
- const emit = defineEmits(["emits", 'updateTab']) //声明 emits
530
- onMounted(() => {
531
- remoteMethod()
532
- initDict()
533
- })
534
-
535
- defineExpose({
536
- setData, parseData, form
537
- })
538
- </script>
539
-