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,601 +0,0 @@
1
- <template>
2
- <el-dialog
3
- v-model="state.dialogVisible"
4
- :title="state.title"
5
- align-center
6
- destroy-on-close
7
- fullscreen
8
- v-loading="state.loading"
9
- :close-on-click-modal="false"
10
- >
11
- <div style="padding-right: 10px; height: 86vh">
12
- <avue-form :key="state.key" ref="formRef" :option="form"
13
- v-model="formData">
14
- <!-- 动态生成插槽 -->
15
- <template v-for="slotRow in dynamicSlotsTable" :key="slotRow.slotName" #[slotRow.slotName]="{ disabled, size }">
16
- <!-- 根据配置动态渲染插槽内容 -->
17
- <ol-table-select @olTableSelectChange="olTableSelectChange" :slotName="slotRow.slotName" :http="http"
18
- :defaultValue="formData[slotRow.slotName]"
19
- :uuid="slotRow.config.uuid" :disabled="disabled" :size="size"
20
- :config="slotRow.config"></ol-table-select>
21
- </template>
22
- </avue-form>
23
- <model-index ref="subTable" v-if="uuid" :uuid="uuid" :http="https" @initOk="ok"/>
24
- </div>
25
- <div class="footer-container">
26
- <el-row style="height: 50px; padding: 10px 20px 0 0;border-top: 1px solid #e8eaec;background: white;justify-content: right">
27
- <el-button @click="state.dialogVisible = false;">取 消</el-button>
28
- <el-button type="primary" :loading="state.loading" @click="doSave">保 存</el-button>
29
- </el-row>
30
- </div>
31
-
32
- </el-dialog>
33
- </template>
34
- <script>
35
- import {setArrayObjectKeyValue} from "@/utils/object";
36
- import {useMessage} from "@/utils/message";
37
- import {get, post, postAes} from "@/utils/http/httpUtils";
38
- import {handleTree} from "@/utils/tree";
39
- import {initDictTable} from "@/api/dist";
40
- import {storeDict} from "@/store/dict";
41
- import {storeDictType} from "@/store/dictType";
42
- import ModelIndex from "@/components/table/model/model-index.vue";
43
- import OlTableSelect from "@/components/ol-table-select.vue";
44
-
45
- const dict = storeDict();
46
- const dictType = storeDictType();
47
-
48
- function replaceDollarBraces(str) {
49
- return str.toString().replace(/\$\{?([^{}]+)\}?/g, function (match, innerContent) {
50
- return innerContent ? `'${innerContent}'` : match;
51
- });
52
- }
53
-
54
- function parseJson(column) {
55
- let attrs = column.attrs;
56
- if (attrs) {
57
- try {
58
- attrs = JSON.parse(attrs)
59
- for (let key of Object.keys(attrs)) {
60
- column[key] = attrs[key];
61
- }
62
- } catch (e) {
63
- console.error("解析attrs异常", attrs)
64
- }
65
- }
66
- }
67
-
68
- export default {
69
- name: "olMainFormSubTable",
70
- components: {OlTableSelect, ModelIndex},
71
- inject: ['http'],
72
- data() {
73
- return {
74
- url: {
75
- saveUrl: "/online/crudAes/saveMainAndSubs",
76
- },
77
- uuid: undefined,
78
- subForeignKey: '',
79
- formData: {},
80
- optionData: {},
81
- form: {
82
- column: []
83
- },
84
- dynamicSlotsTable: [],
85
- dynamicSlotsField: {},
86
- dynamicSlotsOtherResult: {},
87
- state: {
88
- loading: false,
89
- fullscreen: false,
90
- dialogVisible: false,
91
- title: "",
92
- width: '60%',
93
- comCommit: true,
94
- maxHeight: '400px',
95
- type: '0',
96
- edit: false,
97
- saveUrl: '',
98
- requestType: 'post',
99
- updateKey: '',
100
- deleteId: '',
101
- theme: 't1',
102
- tableConfigId: '',
103
- dbName: '',
104
- tableName: '',
105
- },
106
- }
107
- },
108
- computed: {
109
- https() {
110
- return this.http;
111
- }
112
- },
113
- methods: {
114
- hideColumn(prop) {
115
- setArrayObjectKeyValue(this.form.column, 'display', false, prop)
116
- },
117
- showColumn(prop) {
118
- setArrayObjectKeyValue(this.form.column, 'display', true, prop)
119
- },
120
- getDeleteId(param) {
121
- for (let key of Object.keys(param)) {
122
- if (key != '$parentId') {
123
- return key;
124
- }
125
- }
126
- },
127
- getSubUpdateList(table) {
128
- let subColumnAndValueList = []
129
- for (const row of table.data) {
130
- subColumnAndValueList.push(this.getSubUpdate(row, table.columns))
131
- }
132
- return subColumnAndValueList;
133
- },
134
- getSubUpdate(row, columns) {
135
- let subColumnAndValue = {}
136
- for (const column of columns) {
137
- if (!column.tableSaveToOtherProp || column.tableSaveToOtherProp != '1') {
138
- subColumnAndValue[column.tableField ? column.tableField : column.field] = row[column.field]
139
- }
140
- }
141
- return subColumnAndValue;
142
- },
143
- getParams() {
144
- // 子表信息
145
- let subTable = this.$refs.subTable.table.t1;
146
- let deleteId = this.getDeleteId(subTable.deleteParameter);
147
- console.log('getParams:', this)
148
- let params = {
149
- tableConfigId: this.state.tableConfigId,
150
- dbName: this.state.dbName,
151
- tableName: this.state.tableName,
152
- // 主表的唯一字段
153
- mainTableKey: [this.state.deleteId],//主表的唯一字段
154
- // 子表要自动生成的唯一字段 如果没有 可以忽略
155
- mainGenIdMap: {[this.state.deleteId]: 'uuid'},
156
- mianColumnAndValueMap: {},
157
- // 子表名称
158
- subTableName: subTable.tableConfig.mainTable,
159
- // 子表要自动生成的唯一字段 如果没有 可以忽略
160
- subGenIdMap: {[deleteId]: 'uuid'},
161
- // 子表子主表的数据
162
- subColumnAndValueList: this.getSubUpdateList(subTable.table),
163
- // 子表的唯一字段
164
- subTableKey: [deleteId],
165
- // 表的关联key,这里框架自动复制 {主表字段,子表的字段}
166
- subForeignKey: {
167
- [this.state.deleteId]: this.subForeignKey
168
- },
169
- };
170
- if (this.state.type != '0') {
171
- let formData = this.$refs.value.getFormData(false);
172
- for (let prop of Object.keys(formData)) {
173
- let value = formData[prop];
174
- if (value instanceof String) {
175
- value = value.trim();
176
- }
177
- params.mianColumnAndValueMap[prop] = value;
178
- }
179
- } else {
180
- params.mianColumnAndValueMap = this.getTableUpdateValue(this.form.column, this.formData);
181
- }
182
- if (this.state.saveUrl) {
183
- return params.mianColumnAndValueMap;
184
- }
185
- if (this.state.edit) {
186
- params.whereMap = {}
187
- if (this.state.updateKey) {
188
- let split = this.state.updateKey.split(',');
189
- for (let kv of split) {
190
- let kvs = kv.split("=");
191
- if (kvs.length == 2) {
192
- params.mianColumnAndValueMap[kvs[0]] = params.mianColumnAndValueMap[kvs[1]]
193
- } else {
194
- let val = params.mianColumnAndValueMap[kvs];
195
- params.mianColumnAndValueMap[kvs] = val != undefined ? val : this.formData[kvs];
196
- }
197
- }
198
-
199
- } else {
200
- // 编辑时默认更新条件为id
201
- params.mianColumnAndValueMap['id'] = this.formData['id'];
202
- if (!params.mianColumnAndValueMap['id']) {
203
- params.mianColumnAndValueMap['id'] = this.formData['t1_id'];
204
- }
205
- }
206
- }
207
- return params
208
- },
209
- /**
210
- * 根据列配置获取数据库表更新数据
211
- * @param column
212
- * @param formData
213
- * @returns {{}}
214
- */
215
- getTableUpdateValue(column, formData) {
216
- let columnAndValueMap = {}
217
- for (let {prop, tableField} of column) {
218
- if (tableField && tableField == '1') {
219
- continue
220
- }
221
- let value = formData[prop];
222
- if (value) {
223
- if (value instanceof String) {
224
- value = value.trim();
225
- }
226
- columnAndValueMap[prop] = value;
227
- }
228
- }
229
- return columnAndValueMap;
230
- },
231
- async doValidate() {
232
- let dom = undefined;
233
- let keys = [];
234
- let status = true;
235
- if (this.state.type != '0') {
236
- await this.$refs.formRef.getNativeForm().validate((valid, msg) => {
237
- if (!valid) {
238
- keys = Object.keys(msg);
239
- dom = this.$refs.formRef.getWidgetRef(keys[0]);
240
- status = false;
241
- }
242
- })
243
- } else {
244
- await this.$refs.formRef.validate((valid, done, msg) => {
245
- if (!valid) {
246
- keys = Object.keys(msg);
247
- dom = this.$refs.formRef.getPropRef(keys[0]);
248
- status = false;
249
- }
250
- done()
251
- })
252
- }
253
- if (dom) {
254
- // 定位代码
255
- dom.$el.scrollIntoView({
256
- block: "center",
257
- behavior: "smooth",
258
- });
259
- useMessage().error("您还有" + keys.length + "项信息未填写,请填写后再操作!");
260
- status = false;
261
- }
262
- return status
263
- },
264
- async doSave() {
265
- let dom ;
266
- let keys ;
267
- if (this.state.type != '0') {
268
- await this.$refs.formRef.getNativeForm().validate((valid, msg) => {
269
- if (!valid) {
270
- keys = Object.keys(msg);
271
- dom = this.$refs.formRef.getWidgetRef(keys[0]);
272
- dom.$el.scrollIntoView({
273
- block: "center",
274
- behavior: "smooth",
275
- });
276
- useMessage().error("您还有" + keys.length + "项信息未填写,请填写后再操作!");
277
- }else{
278
- this.save()
279
- }
280
- })
281
- } else {
282
- await this.$refs.formRef.validate((valid, done, msg) => {
283
- if (!valid) {
284
- keys = Object.keys(msg);
285
- dom = this.$refs.formRef.getPropRef(keys[0]);
286
- dom.$el.scrollIntoView({
287
- block: "center",
288
- behavior: "smooth",
289
- });
290
- useMessage().error("您还有" + keys.length + "项信息未填写,请填写后再操作!");
291
- }else{
292
- this.save()
293
- }
294
- done()
295
- })
296
- }
297
- },
298
- save() {
299
- this.state.loading = true;
300
- try {
301
- let params = this.getParams()
302
- postAes(this.http, this.url.saveUrl, params).then(status => {
303
- this.state.loading = false;
304
- if (status) {
305
- this.state.dialogVisible = false;
306
- this.$emit('query')
307
- }
308
- })
309
- } catch (e) {
310
- console.error(e)
311
- } finally {
312
- this.state.loading = false;
313
- }
314
- },
315
- setUUID(data) {
316
- this.uuid = data.uuid;
317
- this.subForeignKey = data.foreignKey
318
- },
319
- init(data) {
320
- // 初始化动态插槽表格
321
- data.form.column.forEach(column => {
322
- if (column.selectDom === '22') {//表格选取
323
- let slotObj = {
324
- slotName: column.prop,
325
- config: JSON.parse(column.attrs).olTableSelect,
326
- }
327
- this.dynamicSlotsField[column.prop] = column //收集继续动态改变值的字段信息,以便动态改变值时更新表单数据
328
- this.dynamicSlotsTable.push(slotObj)//收集需要的动态插槽字段信息
329
- const otherResult = slotObj.config.otherResult //返回额外参数字段配置
330
- if (otherResult !== null && otherResult !== undefined && otherResult !== '') {
331
- let otherResultArray = []
332
- otherResult.split(",").forEach(m => {
333
- let k = m.split(":")
334
- otherResultArray.push({targetField: k[1], sourceField: k[0]})
335
- });
336
- this.dynamicSlotsOtherResult[column.prop] = otherResultArray
337
- }
338
- }
339
- })
340
- if (data.saveUrl) {
341
- this.state.saveUrl = data.saveUrl.trim();
342
- if (data.requestType) {
343
- this.state.requestType = data.requestType;
344
- }
345
- }
346
- this.setUUID(data);
347
- this.state.edit = data['code'] == 'edit' == true;
348
- this.state.title = data.title ? data.title : this.state.edit ? '编辑' : '新增';
349
- //赋值弹窗宽度和高度
350
- if (data.form.diaLogWidth) {
351
- this.state.width = data.form.diaLogWidth
352
- }
353
- if (data.form.diaLogHeight) {
354
- this.state.maxHeight = data.form.diaLogHeight + 'px'
355
- }
356
- if (data.form.title) {
357
- this.state.title = data.form.title
358
- }
359
- this.state.dialogVisible = true;
360
- this.form = data.form;
361
- this.formData = data.formData;
362
- for (let key of Object.keys(this.state)) {
363
- if (data[key]) {
364
- this.state[key] = data[key]
365
- }
366
- }
367
- }, ok(e) {
368
- for (let column of this.form.column) {
369
- if (column.disabled == 1) {
370
- column.disabled = true;
371
- }
372
- this.initDict(column);
373
- parseJson(column);
374
- for (let event of ['change']) {
375
- if (column[event] && !(column[event] instanceof Function)) {
376
- try {
377
- column[event] = eval("(params)=>{this.$nextTick(()=>{" +
378
- "let formData = this.formData;console.log(formData);" +
379
- "let {value} = params;" + replaceDollarBraces(column[event]) +
380
- "})" +
381
- "}")
382
- } catch (e) {
383
- console.error(e)
384
- }
385
- }
386
- }
387
- }
388
- this.setParameter(e)
389
- if (this.state.edit) {
390
- e.query()
391
- }
392
- }, setParameter(e) {
393
- let param = {
394
- [this.subForeignKey]: this.formData[this.state.deleteId]
395
- }
396
- e.parameter = {...e.parameter, ...param}
397
- }, initDict(column) {
398
- if (column.dictCode) {
399
- column.dicData = dict.val(column.dictCode)
400
- if (column.selectDom == 1) {
401
- column.type = "select";
402
- }
403
- if (this.state.edit) {
404
- return;
405
- }
406
- if (this.formData[column.prop] != undefined) {
407
- this.formData[column.prop] = String(this.formData[column.prop])
408
- } else if (column.value != undefined) {
409
- this.formData[column.prop] = String(column.value)
410
- } else {
411
- //”number”、”string”、”boolean”、”object”、”function” 和 “undefined”
412
- let dataType = typeof (this.formData[column.prop]);
413
- // 数据字典与值类型不一致
414
- if (this.formData[column.prop] != undefined && this.formData[column.prop] != '' && ["number", "boolean"].indexOf(dataType) != -1) {
415
- this.formData[column.prop] = String(this.formData[column.prop])
416
- column.value = this.formData[column.prop];
417
- } else if (this.formData[column.prop] == undefined) {
418
- setTimeout(() => {
419
- if (column.dicData) {
420
- for (let dicDatum of column.dicData) {
421
- if (dicDatum.isDefault == 1) {
422
- this.formData[column.prop] = dicDatum.value;
423
- column.value = this.formData[column.prop];
424
- }
425
- }
426
- }
427
- }, 100)
428
- }
429
- }
430
- } else if (column.dictTable || column.dictUrl) {
431
- if (column.selectDom == 1) {
432
- column.type = "select";
433
- }
434
- column.filterable = true;
435
- column.dicData = [];
436
- setTimeout(() => {
437
- this.setDictTable(column, undefined);
438
- }, 10)
439
- if (column.type == 'tree') {
440
- column.filterable = column.filterable == undefined ? true : column.clearable;
441
- column.clearable = column.clearable == undefined ? true : column.clearable;
442
- } else {
443
- column.filterMethod = (e) => {
444
- this.$nextTick(() => {
445
- this.setDictTable(column, e);
446
- })
447
- };
448
- }
449
- }
450
- },
451
- setDictUrl(column, like) {
452
- let dictUrl = column.dictUrl.split(",");
453
- let url;
454
- let label = 'label';
455
- let value = 'value';
456
- let parentId = 'parentId';
457
- // get,url,label,value,parent_id
458
- let doGet = true;
459
- if (dictUrl.length > 1
460
- ) {
461
- if (dictUrl[0].toString().toLowerCase() == 'post') {
462
- doGet = false;
463
- }
464
- url = dictUrl[1];
465
- label = dictUrl[2];
466
- value = dictUrl[3];
467
- parentId = dictUrl[4];
468
- } else {
469
- url = dictUrl[0];
470
- }
471
-
472
- if (doGet) {
473
- get(this.http, url + "?label=" + like).then((data) => {
474
- column.dicData.length = 0;
475
- if (column.type == 'tree') {
476
- for (let da of data) {
477
- da['label'] = da[label]
478
- da['value'] = da[value]
479
- }
480
- column.dicData = handleTree(data, value, parentId);
481
- } else {
482
- data.forEach((d) => {
483
- column.dicData.push(d);
484
- })
485
- }
486
- })
487
- } else {
488
- let params = {}
489
- if (like) {
490
- params['label'] = like;
491
- }
492
- post(this.http, column.dictUrl, params, false).then(({data}) => {
493
- column.dicData.length = 0;
494
- if (column.type == 'tree') {
495
- for (let da of data) {
496
- da['label'] = da[label]
497
- da['value'] = da[value]
498
- }
499
- column.dicData = handleTree(data, value, parentId);
500
- } else {
501
- data.forEach((da => {
502
- da['label'] = da[label];
503
- da['value'] = da[value];
504
- column.dicData.push(da);
505
- }))
506
- }
507
- })
508
- }
509
- }, setDictTable(column, like) {
510
- if (column.dictTable && column.dictTable.toString().trim() != '') {
511
- this.doSetDictTable(column, like);
512
- } else if (column.dictUrl) {
513
- this.setDictUrl(column, like);
514
- }
515
- },
516
- doSetDictTable(column, like) {
517
- let value = this.formData[column.prop];
518
- /*String tableName;
519
- String dataBase;
520
- String label;
521
- String value;
522
- Map<String, Object> where;*/
523
- // olp-vue-pro,system_users,nickname,id,parentId
524
- let params = {}
525
- let dictTable = JSON.parse(JSON.stringify(column.dictTable));
526
- if (dictTable instanceof Object) {
527
- params = dictTable;
528
- } else {
529
- dictTable = column.dictTable.split(",");
530
- params["dbName"] = dictTable[0];
531
- params["tableName"] = dictTable[1];
532
- params["label"] = dictTable[2];
533
- params["value"] = dictTable[3];
534
- if (dictTable[4]) {
535
- params["parentValue"] = dictTable[4];
536
- }
537
- }
538
-
539
- if (like || value) {
540
- if (!params.where) {
541
- params.where = {};
542
- }
543
-
544
- }
545
- if (!params["parentValue"]) {
546
- if (like) {
547
- params.where['_like_' + params["label"]] = like;
548
- }
549
- if (value) {
550
- params.defaultValue = value;
551
- }
552
- }
553
- initDictTable(this.http, params).then((data) => {
554
- column.dicData.length = 0;
555
- if (params["parentValue"]) {
556
- column.dicData = handleTree(data, 'dictValue', 'parentValue');
557
- } else {
558
- data.forEach((d) => {
559
- column.dicData.push(d);
560
- })
561
- }
562
- })
563
- },
564
- /**
565
- * 表格选择器回调函数
566
- * @param data
567
- */
568
- olTableSelectChange(slotName, data) {
569
- // console.info('插槽名称', slotName, '表格回传的数据', data)
570
- // console.info('表格', this.form.column)
571
- this.formData[slotName] = data.value;//修改表单数据,以便后续提交
572
- if (typeof this.dynamicSlotsField[slotName].change === 'function') {
573
- this.dynamicSlotsField[slotName].change(data.value)//字段数据更新回调
574
- }
575
- //给其他字段赋值
576
- this.dynamicSlotsOtherResult[slotName]?.forEach(item => {
577
- this.formData[item.targetField] = data.data[item.sourceField]
578
- })
579
- }
580
-
581
- },
582
- mounted() {
583
- this.$nextTick(() => {
584
- storeDict().init(this.http)
585
- })
586
- },
587
- created() {
588
- // console.info("我是主子表")
589
- }
590
- };
591
- </script>
592
- <style scoped>
593
- .footer-container {
594
- position: fixed;
595
- bottom: 0;
596
- left: 0;
597
- width: 100%;
598
- z-index: 1000; /* 确保在其他元素上方 */
599
- text-align: center; /* 确保按钮居中 */
600
- }
601
- </style>
@@ -1,46 +0,0 @@
1
- <template>
2
- <vxe-pager v-bind="$attrs">
3
- <template #left>
4
- <div class="page-left" v-if="$attrs.showDetails">
5
- <div v-if="$attrs.htmlValue == undefined">
6
- <!-- 提示:双击查看详细-->
7
- <span v-if="$attrs.rowSelection != false"><!--,-->已选择
8
- <a style="font-weight: 600">{{ $attrs.selectionRowsLength }}</a>项
9
- <a v-if="$attrs.selectionRowsLength !== 0" style="margin-left:5px;color: blue;cursor: pointer"
10
- @click="$emit('clearSelected')">清空选择</a>
11
- </span>
12
- </div>
13
- <div v-else v-html="$attrs.htmlValue"></div>
14
- </div>
15
- <slot name="left"></slot>
16
- </template>
17
- <template #right>
18
- <slot name="right"></slot>
19
- </template>
20
- </vxe-pager>
21
- </template>
22
- <script>
23
- export default {
24
- name: 'olPager',
25
- }
26
- </script>
27
- <style lang="less" scoped>
28
- /deep/ .vxe-pager--left-wrapper{
29
- float: left;
30
- //width: 50%;
31
- }
32
- /deep/ .vxe-pager--goto{
33
- height: 26px !important;
34
- }
35
- .page-left {
36
- position: relative;
37
- float: left;
38
- padding-right: 15px;
39
- z-index: 10;
40
- }
41
-
42
- .vxe-pager {
43
- height: 35px;
44
- top: 5px;
45
- }
46
- </style>