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,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>