olp-table 5.3.4 → 5.3.5

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/package.json +12 -92
  2. package/.env.build +0 -1
  3. package/README.md +0 -26
  4. package/babel.config.js +0 -5
  5. package/jsconfig.json +0 -22
  6. package/public/favicon.ico +0 -0
  7. package/public/index.html +0 -17
  8. package/rmMode.bat +0 -1
  9. package/src/App.vue +0 -199
  10. package/src/api/crud.js +0 -22
  11. package/src/api/dist.js +0 -6
  12. package/src/assets/iconfont/iconfont.css +0 -20
  13. package/src/assets/iconfont/iconfont.json +0 -16
  14. package/src/assets/iconfont/iconfont.ttf +0 -0
  15. package/src/assets/iconfont/iconfont.woff +0 -0
  16. package/src/assets/iconfont/iconfont.woff2 +0 -0
  17. package/src/assets/logo.png +0 -0
  18. package/src/components/auto-height/index.vue +0 -75
  19. package/src/components/codemirror-tag.vue +0 -100
  20. package/src/components/lazy-load-select.vue +0 -107
  21. package/src/components/ol-dialog-excel.vue +0 -112
  22. package/src/components/ol-dialog-import.vue +0 -304
  23. package/src/components/ol-dialog-json.vue +0 -82
  24. package/src/components/ol-dialog-table.vue +0 -81
  25. package/src/components/ol-dialog-upload-file.vue +0 -208
  26. package/src/components/ol-dict-tag.vue +0 -271
  27. package/src/components/ol-select-dom.vue +0 -71
  28. package/src/components/ol-table-filter.vue +0 -28
  29. package/src/components/ol-table-render.vue +0 -44
  30. package/src/components/ol-table-select.vue +0 -150
  31. package/src/components/pinia-init.vue +0 -18
  32. package/src/components/table/model/ModelMixins.js +0 -43
  33. package/src/components/table/model/model-index.vue +0 -121
  34. package/src/components/table/model/ot-left-right.vue +0 -18
  35. package/src/components/table/model/ot-left-tree-right-table.scss +0 -14
  36. package/src/components/table/model/ot-left-tree-right-table.vue +0 -41
  37. package/src/components/table/model/ot-top-1-bottom-2.vue +0 -39
  38. package/src/components/table/model/ot-top-2-bottom-1.vue +0 -38
  39. package/src/components/table/model/ot-top-2-bottom-2.vue +0 -38
  40. package/src/components/table/model/ot-top-bottom.vue +0 -18
  41. package/src/components/table/model/splitpanesModel.css +0 -22
  42. package/src/components/table/model/splitpanesModel.vue +0 -54
  43. package/src/components/table/ol-form/index.vue +0 -537
  44. package/src/components/table/ol-form-v3/index.vue +0 -455
  45. package/src/components/table/ol-main-form-sub-table/index.vue +0 -601
  46. package/src/components/table/ol-pager/index.vue +0 -46
  47. package/src/components/table/ol-table/components/ol-table-column-config/columnIndex.vue +0 -233
  48. package/src/components/table/ol-table/components/ol-table-column-config/index.vue +0 -145
  49. package/src/components/table/ol-table/components/ol-table-column-dict-color/index.vue +0 -88
  50. package/src/components/table/ol-table/index.vue +0 -232
  51. package/src/components/table/ol-table-operate/index.vue +0 -61
  52. package/src/components/table/ol-table-search/index.vue +0 -17
  53. package/src/components/table/ol-table-tool-btn/index.vue +0 -60
  54. package/src/components/tree/components/o-tree.vue +0 -289
  55. package/src/components/tree/index.vue +0 -46
  56. package/src/components/v-component/index.vue +0 -43
  57. package/src/config/dev-config.js +0 -5
  58. package/src/config/prod-config.js +0 -5
  59. package/src/config/shared-config.js +0 -20
  60. package/src/data.js +0 -9378
  61. package/src/directives/permission/hasPermi.js +0 -63
  62. package/src/directives/permission/hasRole.js +0 -30
  63. package/src/main.js +0 -55
  64. package/src/mixins/VTMixin/DefaultMethods.js +0 -749
  65. package/src/mixins/VTMixin/OTMixinBody.js +0 -105
  66. package/src/mixins/VTMixin/OTMixinBodyFooter.js +0 -93
  67. package/src/mixins/VTMixin/OTMixinBodyMethods.js +0 -420
  68. package/src/mixins/VTMixin/OTMixinColumnMethod.js +0 -450
  69. package/src/mixins/VTMixin/OTMixinInitMethod.js +0 -130
  70. package/src/mixins/VTMixin/OTMixinPager.js +0 -38
  71. package/src/mixins/VTMixin/OTMixinSortable.js +0 -43
  72. package/src/mixins/VTMixin/index.js +0 -18
  73. package/src/package/index.js +0 -20
  74. package/src/plugins/axios.js +0 -61
  75. package/src/store/dict.js +0 -76
  76. package/src/store/dictType.js +0 -52
  77. package/src/store/permi.js +0 -45
  78. package/src/styles/common.scss +0 -37
  79. package/src/styles/index.scss +0 -48
  80. package/src/styles/theme.scss +0 -32
  81. package/src/utils/AESCRUDUtils.js +0 -87
  82. package/src/utils/DateUtils.js +0 -35
  83. package/src/utils/ExcelUtil.js +0 -159
  84. package/src/utils/TableSortUtil.js +0 -91
  85. package/src/utils/columnProp.js +0 -3
  86. package/src/utils/groupCompute.js +0 -68
  87. package/src/utils/http/httpFactory.js +0 -92
  88. package/src/utils/http/httpFactory2.js +0 -79
  89. package/src/utils/http/httpUtil.js +0 -123
  90. package/src/utils/http/httpUtils.js +0 -38
  91. package/src/utils/loadStyle.js +0 -14
  92. package/src/utils/message.js +0 -56
  93. package/src/utils/object.js +0 -80
  94. package/src/utils/security/TokenUtil.js +0 -19
  95. package/src/utils/tree.js +0 -54
  96. package/src/utils/util.js +0 -127
  97. package/src/views/Test/index.vue +0 -77
  98. package/src/views/Test/index2.vue +0 -33
  99. package/src/views/components/btn-config/index.vue +0 -202
  100. package/src/views/components/option-config/index.vue +0 -192
  101. package/src/views/db/chineseToEnglish.vue +0 -127
  102. package/src/views/db/filed.vue +0 -395
  103. package/src/views/db/index.vue +0 -192
  104. package/src/views/db/preview/index.vue +0 -139
  105. package/src/views/db/preview/left.vue +0 -204
  106. package/src/views/db/preview/right.vue +0 -466
  107. package/src/views/groupTable/index.vue +0 -137
  108. package/src/views/groupTable/ol-table-column-config/columnIndex.vue +0 -194
  109. package/src/views/groupTable/ol-table-column-config/index.vue +0 -92
  110. package/src/views/table/add-or-edit/config/base-config/index.vue +0 -539
  111. package/src/views/table/add-or-edit/config/base-config/table-form.vue +0 -333
  112. package/src/views/table/add-or-edit/config/column-config/header-config.vue +0 -475
  113. package/src/views/table/add-or-edit/config/column-config/index.vue +0 -790
  114. package/src/views/table/add-or-edit/config/data/column.js +0 -218
  115. package/src/views/table/add-or-edit/config/data/crud.js +0 -122
  116. package/src/views/table/add-or-edit/config/data/events.js +0 -109
  117. package/src/views/table/add-or-edit/config/data/method.js +0 -127
  118. package/src/views/table/add-or-edit/config/data/option.js +0 -725
  119. package/src/views/table/add-or-edit/config/data/page.js +0 -79
  120. package/src/views/table/add-or-edit/config/field-config/filed-config-table.vue +0 -42
  121. package/src/views/table/add-or-edit/config/field-config/index.vue +0 -91
  122. package/src/views/table/add-or-edit/config/form-config/index.vue +0 -1179
  123. package/src/views/table/add-or-edit/config/index.vue +0 -376
  124. package/src/views/table/add-or-edit/config/initFormObject.js +0 -25
  125. package/src/views/table/add-or-edit/config/script-config/LeftMeun.vue +0 -71
  126. package/src/views/table/add-or-edit/config/script-config/index.vue +0 -70
  127. package/src/views/table/add-or-edit/config/table-config/btn-config.vue +0 -340
  128. package/src/views/table/add-or-edit/config/table-config/btn-sort.vue +0 -132
  129. package/src/views/table/add-or-edit/config/table-config/index.vue +0 -446
  130. package/src/views/table/add-or-edit/configOld/dataTags/filed-config-table-model.vue +0 -41
  131. package/src/views/table/add-or-edit/configOld/dataTags/filed-config.vue +0 -74
  132. package/src/views/table/add-or-edit/configOld/dataTags/index.vue +0 -439
  133. package/src/views/table/add-or-edit/configOld/dataTags/set-table-sql.vue +0 -79
  134. package/src/views/table/add-or-edit/configOld/dataTags/table-on-config.vue +0 -74
  135. package/src/views/table/add-or-edit/configOld/index.vue +0 -127
  136. package/src/views/table/add-or-edit/configOld/tableTags/columnConfig.js +0 -5
  137. package/src/views/table/add-or-edit/configOld/tableTags/index.vue +0 -353
  138. package/src/views/table/add-or-edit/configOld/tableTags/operation-but-config.vue +0 -75
  139. package/src/views/table/add-or-edit/configOld/tableTags/tool-but-config.vue +0 -92
  140. package/src/views/table/add-or-edit/index.vue +0 -201
  141. package/src/views/table/add-or-edit/themeModel/index.vue +0 -53
  142. package/src/views/table/add-or-edit/themeModel/init-model-table.vue +0 -48
  143. package/src/views/table/add-or-edit/themeModel/init-model.vue +0 -81
  144. package/src/views/table/add-or-edit/themeModel/left-right.vue +0 -24
  145. package/src/views/table/add-or-edit/themeModel/left-tree-right-table.vue +0 -75
  146. package/src/views/table/add-or-edit/themeModel/olTableSearchModelMixins.js +0 -42
  147. package/src/views/table/add-or-edit/themeModel/splitpanesThemeModel.vue +0 -49
  148. package/src/views/table/add-or-edit/themeModel/top-1-bottom-2.vue +0 -29
  149. package/src/views/table/add-or-edit/themeModel/top-2-bottom-1.vue +0 -32
  150. package/src/views/table/add-or-edit/themeModel/top-2-bottom-2.vue +0 -32
  151. package/src/views/table/add-or-edit/themeModel/top-bottom.vue +0 -14
  152. package/src/views/table/index.vue +0 -43
  153. package/src/views/table/index2.vue +0 -199
  154. package/src/views/table/preview/index.vue +0 -29
  155. package/src/views/tree/components/config-core-data.vue +0 -85
  156. package/src/views/tree/components/config-core-table.vue +0 -362
  157. package/src/views/tree/components/config-core-tree/data/events.js +0 -95
  158. package/src/views/tree/components/config-core-tree/data/option.js +0 -88
  159. package/src/views/tree/components/config-core-tree/data/prop.js +0 -28
  160. package/src/views/tree/components/config-core-tree/index.vue +0 -181
  161. package/src/views/tree/components/config-core.vue +0 -42
  162. package/src/views/tree/components/form-config/index.vue +0 -967
  163. package/src/views/tree/index.vue +0 -424
  164. package/vue.config.js +0 -44
  165. /package/{olp-table/demo.html → demo.html} +0 -0
  166. /package/{olp-table/fonts → fonts}/iconfont.1720006583309.7e4906d9.woff +0 -0
  167. /package/{olp-table/fonts → fonts}/iconfont.1720006583309.947a27f0.ttf +0 -0
  168. /package/{olp-table/olp-table.common.js → olp-table.common.js} +0 -0
  169. /package/{olp-table/olp-table.css → olp-table.css} +0 -0
  170. /package/{olp-table/olp-table.umd.js → olp-table.umd.js} +0 -0
  171. /package/{olp-table/olp-table.umd.min.js → olp-table.umd.min.js} +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
-