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,439 +0,0 @@
1
- <template>
2
- <div>
3
-
4
- <vxe-form :data="configData.form">
5
- <vxe-form-item title="主表" field="mainTable" :span="10" :item-render="{}">
6
- <template #default="{ data }">
7
- <vxe-select v-model="configData.form.mainTable"
8
- :option-props="{label:'label',value:'value',key:'value'}"
9
- placeholder="请选择主表"
10
- :options="state.DBTable"
11
- @change="setTable"
12
- ></vxe-select>
13
- </template>
14
- </vxe-form-item>
15
- <vxe-form-item title="转换驼峰" field="hump" :span="4" :item-render="{}">
16
- <template #default="{ data }">
17
- <vxe-checkbox v-model="configData.form.hump" checked-value="1" unchecked-value="0"></vxe-checkbox>
18
- </template>
19
- </vxe-form-item>
20
- <vxe-form-item title="自定义SQL" field="definitionSql" :span="10" :item-render="{}">
21
- <template #default="{ data }">
22
- <vxe-checkbox v-model="configData.form.definitionSql" checked-value="1" unchecked-value="0"></vxe-checkbox>
23
- <vxe-button v-if="configData.form.definitionSql == 0"
24
- @click="addTableData" :disabled="configData.form.mainTable.length == 0">新增关联表
25
- </vxe-button>
26
- <!-- <vxe-button @click="tableDelete" status="danger">删除配置</vxe-button>-->
27
- </template>
28
- </vxe-form-item>
29
- </vxe-form>
30
- <set-table-sql ref="dataConfig" :DBTable="state.DBTable" @handleDelete="handleDelete" @setTable="setTable"
31
- @setSql="setSql"></set-table-sql>
32
- <!-- <vxe-table ref="dataConfig" v-if="configData.form.definitionSql == 0"
33
- :data="state.tableData"
34
- height="180"
35
- stripe
36
- size="mini">
37
- <vxe-column field="index" title="序号" width="60" align="center"/>
38
- <vxe-column field="type" title="类型" width="90" align="center">
39
- <template #default="scope">
40
- <vxe-select v-model="scope.row.type" placeholder="请选择关联类型" :disabled="scope.rowIndex === 0"
41
- :options="state.typeOptions" @change="setSql" size="mini"
42
- :option-props="{label:'label',value:'value',key:'value'}" clearable
43
- filterable transfer></vxe-select>
44
- </template>
45
- </vxe-column>
46
- <vxe-column field="joinTable" title="关联表" width="250" align="center">
47
- <template #default="scope">
48
- <vxe-select v-model="scope.row.joinTable" placeholder="请选择关联表名" :disabled="scope.rowIndex === 0"
49
- :options="state.DBTable" @change="setTable" size="mini"
50
- :option-props="{label:'label',value:'value',key:'value'}" clearable
51
- filterable transfer></vxe-select>
52
- </template>
53
- </vxe-column>
54
- <vxe-column field="joinFiled" title="on" align="center">
55
- <template #default="scope">
56
- <vxe-input v-model="scope.row.joinFiled" @change="setSql" :placeholder="scope.rowIndex == 0 ? '/' : '请输入关联信息'"
57
- size="mini"
58
- :disabled="scope.rowIndex == 0">
59
- &lt;!&ndash; <template #suffix>
60
- <vxe-button size="mini" :disabled="scope.rowIndex == 0" @click="tableOnConfigShow(scope)">配</vxe-button>
61
- </template>&ndash;&gt;
62
- </vxe-input>
63
- </template>
64
- </vxe-column>
65
- <vxe-column field="deleteWhere" title="删除条件" align="center">
66
- <template #default="scope">
67
- <vxe-input v-model="scope.row.deleteWhere" size="mini">
68
- </vxe-input>
69
- </template>
70
- </vxe-column>
71
- <vxe-column field="right" title="操作" width="60" align="center">
72
- <template #default="scope">
73
- <vxe-button link type="text" size="mini" @click="handleDelete(scope.rowIndex)" status="danger"
74
- :disabled="scope.rowIndex == 0">删除
75
- </vxe-button>
76
- </template>
77
- </vxe-column>
78
- </vxe-table>-->
79
-
80
- <vxe-form :data="configData.form">
81
- <vxe-form-item title="SQL" field="executeSql" :span="24" :item-render="{}">
82
- <template #default="{ data }">
83
- <vxe-textarea
84
- :disabled="configData.form.definitionSql == 0"
85
- v-model="configData.form.executeSql"
86
- :autosize="{ minRows: 5 }"
87
- type="textarea"
88
- placeholder="查询sql"
89
- />
90
- </template>
91
- </vxe-form-item>
92
- <vxe-form-item title="where" field="executeWhere" :span="24" :item-render="{}">
93
- <template #default="{ data }">
94
- <vxe-input
95
- v-if="configData.form.definitionSql == 0"
96
- v-model="configData.form.executeWhere"
97
- placeholder="where条件"
98
- />
99
- </template>
100
- </vxe-form-item>
101
-
102
- </vxe-form>
103
- <vxe-button status="primary" @click="getData" :disabled="configData.form.executeSql.length ==0"
104
- style="margin:10px 0">执行SQL
105
- </vxe-button>
106
- <vxe-button status="success" v-if="configData.form.definitionSql == 0"
107
- :disabled="configData.form.mainTable.length ==0"
108
- @click="$refs.filedConfig.init(state.tableData)">字段配置
109
- </vxe-button>
110
- <!-- <vxe-button v-if="configData.form.definitionSql == 0" @click="sqlParseTable">SQL解析</vxe-button>-->
111
- <vxe-button @click="updateExecuteSql(0)">SQL格式化</vxe-button>
112
- <vxe-button @click="updateExecuteSql(1)">SQL压缩</vxe-button>
113
- <div v-if="state.dyTable.show != 0" style="text-align: left;color: red">
114
- <h1>SQL异常</h1>
115
- <p>{{ state.dyTable.errorMsg }}</p>
116
- </div>
117
- <vxe-table
118
- ref="sqlData"
119
- v-else
120
- align="allAlign"
121
- height="250"
122
- stripe
123
- border
124
- size="mini"
125
- :data="state.dyTable.tableData">
126
- <vxe-column v-if="configData.form.selectBox == 2 " :type="'checkbox'" width="38"/>
127
- <vxe-column v-else-if="configData.form.selectBox == 1 " :type="'radio'" width="38"/>
128
- <vxe-column type="seq" title="序号" width="60"/>
129
- <vxe-column v-for="column in configData.tableColumn" :visible="column.visible == 1"
130
- :title="column.title"
131
- :width="getWidth(column.title)"
132
- :field="column.asName"
133
- show-header-overflow show-overflow>
134
- <template #header>
135
- <span>{{ column.title }} </span><i class="vxe-icon-error-circle-fill cursor" @click="refreshColumn(column)"/>
136
- </template>
137
- </vxe-column>
138
- </vxe-table>
139
- <table-on-config ref="tableOnConfig"></table-on-config>
140
- <filed-config ref="filedConfig" @close="filedConfigClose"></filed-config>
141
- </div>
142
- </template>
143
-
144
- <script setup>
145
- import {inject, nextTick, reactive, ref, toRaw} from "vue";
146
- import TableOnConfig from "@/views/table/add-or-edit/configOld/dataTags/table-on-config.vue"
147
- import FiledConfig from "@/views/table/add-or-edit/configOld/dataTags/filed-config.vue";
148
- import sqlFormatter from 'sql-formatter';
149
- import {get, postQs} from "@/utils/http/httpUtils";
150
- import SetTableSql from "@/views/table/add-or-edit/configOld/dataTags/set-table-sql.vue";
151
- const http = inject('http')
152
- const configData = inject('configData');
153
- const dataConfig = ref();
154
- const sqlData = ref();
155
- const state = reactive({
156
- DBTable: [],
157
- typeOptions: [
158
- {label: '内连接', value: 'join'},
159
- {label: '左连接', value: 'left join'},
160
- {label: '右连接', value: 'right join'},
161
- ],
162
- tableData: [{index: "t1", type: "主表", joinTable: "/", joinFiled: "/", deleteWhere: 'id=${t1_id}'}],
163
- dyTable: {
164
- show: 0,
165
- errorMsg: '',
166
- tableData: []
167
- }
168
-
169
- })
170
- const setDeleteTable = () => {
171
- configData.form.deleteWhere = [];
172
- for (let o of state.tableData) {
173
- if (o.deleteWhere && o.deleteWhere.trim()) {
174
- configData.form.deleteWhere.push({
175
- tableName: o.joinTable,
176
- wheres: o.deleteWhere,
177
- theme: o.index
178
- })
179
- }
180
- }
181
- }
182
-
183
- function getWidth(str) {
184
- return str.length * 15 + 35;
185
- }
186
-
187
- const sqlParseTable = () => {
188
- let sql = configData.form.executeSql.split(" from ");
189
- let tables = sql[1].split(" ");
190
- let tableData = parseTable(tables);
191
- let promise = [];
192
- for (let i = 0; i < tableData.length; i++) {
193
- promise.push(get(http,"/online/tableMain/getDBTableColumnList", {tableName: tableData[i].joinTable}));
194
- }
195
- Promise.all(promise).then((result) => {
196
- for (let i = 0; i < result.length; i++) {
197
- let cloumns = result[i];
198
- for (let cloumn of cloumns) {
199
- let checked = "0";
200
- let visible = "0";
201
- if (configData.tableColumn.length != 0) {
202
- for (let o of configData.tableColumn) {
203
- if (cloumn.column_name == o.tableField) {
204
- if (cloumn.table_name == tableData[i].joinTable) {
205
- checked = '1';
206
- visible = o.visible;
207
- }
208
- }
209
- }
210
- } else {
211
- checked = '1';
212
- visible = '1';
213
- }
214
- cloumn.checked = checked;
215
- cloumn.visible = visible;
216
- }
217
- tableData[i]['columnList'] = cloumns;
218
- }
219
- state.tableData = tableData;
220
- dataConfig.value.setData(state.tableData)
221
- nextTick(() => {
222
- sqlData.value.refreshColumn();
223
- })
224
- getData();
225
- })
226
-
227
- }
228
-
229
- function getTableDelete(theme) {
230
- for (let deleteWhereElement of configData.form.deleteWhere) {
231
- if (deleteWhereElement.theme == theme) {
232
- return deleteWhereElement.wheres;
233
- }
234
- }
235
- }
236
-
237
- function remoteMethod() {
238
- get(http,"/online/tableMain/getDBTableList").then((data) => {
239
- state.DBTable = data;
240
- })
241
- }
242
-
243
- remoteMethod();
244
-
245
- const parseTable = (tables) => {
246
- let tableData = [{index: "t1", type: "主表", joinTable: configData.form.mainTable, joinFiled: "/"}];
247
- state.tableData[0].joinTable = tables[0];
248
- for (let i = 2; i < tables.length; i++) {
249
- let str = tables[i];
250
- if (str == "join") {
251
- let type = tables[i - 1] == ("left" || "right") ? tables[i - 1] + " join" : "join";
252
- let joinTable = tables[++i];
253
- let index = tables[++i];
254
- i++;
255
- let joinFiled = tables[++i];
256
- tableData.push({
257
- index: index,
258
- type: type,
259
- joinTable: joinTable,
260
- joinFiled: joinFiled
261
- });
262
- }
263
- }
264
- for (let data of tableData) {
265
- data.deleteWhere = getTableDelete(data.index)
266
- }
267
- return tableData;
268
- }
269
-
270
- const setTable = (data) => {
271
- state.tableData = data;
272
- state.tableData[0].joinTable = configData.form.mainTable;
273
- let promise = [];
274
- for (let i = 0; i < state.tableData.length; i++) {
275
- promise.push(get(http,"/online/tableMain/getDBTableColumnList", {tableName: state.tableData[i].joinTable}));
276
- }
277
- Promise.all(promise).then((result) => {
278
- for (let i = 0; i < result.length; i++) {
279
- state.tableData[i]['columnList'] = result[i];
280
- }
281
- setSql();
282
- })
283
- }
284
-
285
- const setSql = (data) => {
286
- if (data) {
287
- state.tableData = data;
288
- }
289
- let sqlTableOn = configData.form.mainTable + " t1 ";
290
- let sqlFiled = "";
291
- let tableColumns = [];
292
- let sort = 0;
293
- for (let i = 0; i < state.tableData.length; i++) {
294
- let obj = state.tableData[i];
295
- for (let j = 0; j < obj.columnList.length; j++) {
296
- let column = obj.columnList[j];
297
- if (column.checked == 0) {
298
- continue;
299
- }
300
- if (sqlFiled.length != 0) {
301
- sqlFiled += ",";
302
- }
303
- sort++;
304
- sqlFiled += obj.index + "." + column.column_name + " AS " + obj.index + "_" + column.column_name;
305
- let column_name = column.column_name;
306
- let column_comment = column.column_comment ? column.column_comment : column_name
307
- tableColumns.push({
308
- sort: sort,
309
- tableField: column_name,
310
- field: obj.index + "_" + column_name,
311
- title: column_comment,
312
- label: column_comment,
313
- visible: column.visible,
314
- display: 1,
315
- asName: obj.index + "_" + column_name
316
- })
317
- }
318
- if (i != 0) {
319
- sqlTableOn += " " + obj.type + " " + obj.joinTable + " " + obj.index + " on " + obj.joinFiled;
320
- }
321
- }
322
-
323
- for (let tableColumn of tableColumns) {
324
- let add = true;
325
- for (let c of configData.tableColumn) {
326
- if (c.field == tableColumn.field) {
327
- add = false;
328
- }
329
- }
330
- if (add) {
331
- configData.tableColumn.push(tableColumn);
332
- }
333
- }
334
-
335
- for (let i = 0; i < configData.tableColumn.length; i++) {
336
- let remove = true;
337
- for (let tableColumn of tableColumns) {
338
- if (configData.tableColumn[i].field == tableColumn.field) {
339
- remove = false;
340
- }
341
- }
342
- if (remove) {
343
- configData.tableColumn.splice(i, 1);
344
- }
345
- }
346
- configData.form.executeSql = "select " + sqlFiled + " from " + sqlTableOn;
347
- nextTick(() => {
348
- sqlData.value.refreshColumn();
349
- })
350
- }
351
-
352
- const addTableData = () => {
353
- state.tableData = [...state.tableData, {
354
- index: "t" + (state.tableData.length + 1),
355
- type: "join",
356
- joinTable: "",
357
- joinFiled: "t" + state.tableData.length + ".=t" + (state.tableData.length + 1) + "."
358
- }]
359
- dataConfig.value.setData(state.tableData)
360
- }
361
-
362
- const updateExecuteSql = (v) => {
363
- if (v === 0) {
364
- configData.form.executeSql = sqlFormatter.format(configData.form.executeSql,
365
- {
366
- language: 'sql', keywordCase: 'upper', indentStyle: 'tabularLeft'
367
- });
368
- } else {
369
- configData.form.executeSql = configData.form.executeSql.replace(/\s+/g, " ");
370
- }
371
- }
372
-
373
- const filedConfigClose = (data) => {
374
- if (!data) {
375
- return;
376
- }
377
- for (let j = 0; j < state.tableData.length; j++) {
378
- let obj = state.tableData[j];
379
- state.tableData[j].columnList = data[obj.index];
380
- }
381
- setSql();
382
- }
383
-
384
- function tableDelete() {
385
-
386
- }
387
-
388
- const getData = () => {
389
- let sql = toRaw(configData.form.executeSql);
390
- if (configData.form.executeWhere.trim()) {
391
- sql += 'where ' + configData.form.executeWhere.trim();
392
- }
393
- postQs(http,"/online/tableMain/getTableData", {sql: sql}, undefined, false).then(res => {
394
- if (res.code == 200) {
395
- if (res.data[0]) {
396
- state.dyTable.show = 0;
397
- state.dyTable.tableData = res.data;
398
- } else {
399
- state.dyTable.show = 1;
400
- state.dyTable.errorMsg = "无数据";
401
- }
402
-
403
- } else {
404
- state.dyTable.show = 1;
405
- state.dyTable.errorMsg = res.msg;
406
- }
407
- })
408
- }
409
-
410
- const handleDelete = (index) => {
411
- var parse = JSON.parse(JSON.stringify(state.tableData));
412
- parse.splice(index, 1);
413
- state.tableData = parse;
414
- dataConfig.value.setData(parse)
415
- setSql();
416
- }
417
- const refreshColumn = (column) => {
418
- if (column) {
419
- column.visible = 0;
420
- }
421
- nextTick(() => {
422
- sqlData.value.refreshColumn();
423
- })
424
- }
425
- defineExpose({
426
- sqlParseTable,
427
- setDeleteTable,
428
- refreshColumn,
429
- })
430
- </script>
431
- <style scoped lang="less">
432
- .cursor {
433
- cursor: pointer;
434
- }
435
-
436
- .cursor:hover {
437
- color: red;
438
- }
439
- </style>
@@ -1,79 +0,0 @@
1
- <template>
2
- <vxe-table ref="dataConfig"
3
- :data="state.data"
4
- height="180"
5
- stripe
6
- size="mini">
7
- <vxe-column field="index" title="序号" width="60" align="center"/>
8
- <vxe-column field="type" title="类型" width="90" align="center">
9
- <template #default="scope">
10
- <vxe-select v-model="scope.row.type" placeholder="请选择关联类型" :disabled="scope.rowIndex === 0"
11
- :options="state.typeOptions" @change="emit('setSql',state.data)" size="mini"
12
- :option-props="{label:'label',value:'value',key:'value'}" clearable
13
- filterable transfer></vxe-select>
14
- </template>
15
- </vxe-column>
16
- <vxe-column field="joinTable" title="关联表" width="250" align="center">
17
- <template #default="scope">
18
- <vxe-select v-model="scope.row.joinTable" placeholder="请选择关联表名" :disabled="scope.rowIndex === 0"
19
- :options="props.DBTable" @change="emit('setTable',state.data)" size="mini"
20
- :option-props="{label:'label',value:'value',key:'value'}" clearable
21
- filterable transfer></vxe-select>
22
- </template>
23
- </vxe-column>
24
- <vxe-column field="joinFiled" title="on" align="center">
25
- <template #default="scope">
26
- <vxe-input v-model="scope.row.joinFiled" @change="emit('setSql',state.data)"
27
- :placeholder="scope.rowIndex == 0 ? '/' : '请输入关联信息'"
28
- size="mini"
29
- :disabled="scope.rowIndex == 0">
30
- <!-- <template #suffix>
31
- <vxe-button size="mini" :disabled="scope.rowIndex == 0" @click="tableOnConfigShow(scope)">配</vxe-button>
32
- </template>-->
33
- </vxe-input>
34
- </template>
35
- </vxe-column>
36
- <vxe-column field="deleteWhere" title="删除条件" align="center">
37
- <template #default="scope">
38
- <vxe-input v-model="scope.row.deleteWhere" size="mini">
39
- </vxe-input>
40
- </template>
41
- </vxe-column>
42
- <vxe-column field="right" title="操作" width="60" align="center">
43
- <template #default="scope">
44
- <vxe-button link type="text" size="mini" @click="handleDelete(scope.rowIndex)" status="danger"
45
- :disabled="scope.rowIndex == 0">删除
46
- </vxe-button>
47
- </template>
48
- </vxe-column>
49
- </vxe-table>
50
- </template>
51
- <script setup>
52
- import {defineEmits, defineProps, reactive, watch} from "vue";
53
-
54
- const props = defineProps({
55
- DBTable: {required: true},
56
- })
57
- function setData(data){
58
- state.data = data;
59
- }
60
- const state = reactive({
61
- data:[],
62
- DBTable:[],
63
- typeOptions: [
64
- {label: '内连接', value: 'join'},
65
- {label: '左连接', value: 'left join'},
66
- {label: '右连接', value: 'right join'},
67
- ]
68
- })
69
-
70
- const handleDelete = (index) => {
71
- emit("handleDelete", index)
72
- }
73
-
74
- const emit = defineEmits(["setSql"]); //声明 emits
75
- // 对外暴露
76
- defineExpose({
77
- setData
78
- })
79
- </script>
@@ -1,74 +0,0 @@
1
- <template>
2
- <!-- <vxe-dialog
3
- class="table-on-config"
4
- v-model="dialogVisible"
5
- :show-close="false"
6
- title="关联字段配置"
7
- width="700px"
8
- :before-close="handleClose">
9
- <vxe-table height="200px">
10
- <vxe-table-column type="index" label="序号" width="60" align="center"/>
11
- <vxe-table-column prop="filedName" label="字段-名称" width="180" align="center"/>
12
- <vxe-table-column prop="filedName" label="关联表" width="180" align="center"/>
13
- <vxe-table-column prop="filedName" label="字段-名称(关联表)" align="center"/>
14
- <vxe-table-column fixed="right" label="操作" width="60" align="center">
15
- <template #default="scope">
16
- <vxe-button link type="primary" size="small" @click="handleDelete(scope.row)" :disabled="scope.$index == 0">删除
17
- </vxe-button>
18
- </template>
19
- </vxe-table-column>
20
- </vxe-table>
21
- <vxe-form :model="form" style="padding: 10px">
22
- <vxe-form-item label="自定义">
23
- <vxe-input v-model="form.name"/>
24
- </vxe-form-item>
25
- <vxe-form-item label="on">
26
- <vxe-input v-model="form.name" disabled=""/>
27
- </vxe-form-item>
28
- </vxe-form>
29
- <template #footer>
30
- <span class="dialog-footer">
31
- <vxe-button @click="dialogVisible = false">取消</vxe-button>
32
- <vxe-button type="primary" @click="dialogVisible = false">保存</vxe-button>
33
- </span>
34
- </template>
35
- </vxe-dialog>-->
36
-
37
- </template>
38
- <script>
39
- import {reactive, ref} from "vue";
40
- export default {
41
- name:'tableOnConfig',
42
- setup() {
43
- const dialogVisible = ref(false)
44
- const form = reactive({
45
- mainTable: '',
46
- hump: '1',
47
- })
48
- const tab = reactive({
49
- activeName: 'data'
50
- })
51
- const size = ref(0)
52
- size.value = window.innerHeight-210;
53
- window.onresize = () => {
54
- size.value = window.innerHeight-210;
55
- };
56
- return {dialogVisible, tab, form, size}
57
- },
58
- methods: {
59
- handleClose() {
60
-
61
- },
62
- handleDelete(row){
63
-
64
- },
65
-
66
- handleClick() {
67
-
68
- }
69
- }
70
- }
71
- </script>
72
- <style lang="less">
73
-
74
- </style>