cloud-web-corejs 1.0.18 → 1.0.20

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 (191) hide show
  1. package/package.json +2 -1
  2. package/src/api/user.js +8 -0
  3. package/src/components/jsonImport/index.js +3 -1
  4. package/src/components/jsonImport/mixins.js +16 -16
  5. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1 -1
  6. package/src/components/xform/form-designer/indexMixin.js +2 -2
  7. package/src/layout/components/Sidebar/default.vue +15 -9
  8. package/src/layout/components/TagsView/index.vue +6 -6
  9. package/src/layout/components/notify_message/unreadDialog.vue +1 -1
  10. package/src/router/modules/customer.js +8 -8
  11. package/src/utils/aes.js +1 -0
  12. package/src/views/bd/setting/bd_attach_setting/dialog.vue +8 -8
  13. package/src/views/bd/setting/bd_attach_setting/edit.vue +11 -11
  14. package/src/views/bd/setting/bd_attach_setting/list.vue +7 -7
  15. package/src/views/bd/setting/form_script/dialog.vue +17 -15
  16. package/src/views/bd/setting/form_script/edit.vue +15 -13
  17. package/src/views/bd/setting/form_script/edit1.vue +12 -12
  18. package/src/views/bd/setting/form_script/form_list.vue +8 -8
  19. package/src/views/bd/setting/form_script/list.vue +9 -9
  20. package/src/views/bd/setting/form_script/list1.vue +9 -9
  21. package/src/views/bd/setting/form_script/list2.vue +1 -1
  22. package/src/views/bd/setting/form_template/dialog.vue +27 -20
  23. package/src/views/bd/setting/form_template/edit.vue +13 -13
  24. package/src/views/bd/setting/form_template/editWfObjConfigDialog.vue +2 -2
  25. package/src/views/bd/setting/form_template/ftHistoryDialog.vue +8 -8
  26. package/src/views/bd/setting/form_template/itemEdit.vue +9 -9
  27. package/src/views/bd/setting/form_template/itemList.vue +8 -8
  28. package/src/views/bd/setting/form_template/list.vue +15 -15
  29. package/src/views/bd/setting/form_template/preformDialog.vue +2 -2
  30. package/src/views/bd/setting/menu_kind/authDialog.vue +2 -2
  31. package/src/views/bd/setting/menu_kind/dialog.vue +23 -16
  32. package/src/views/bd/setting/menu_kind/list.vue +27 -27
  33. package/src/views/bd/setting/table_model/dialog.vue +5 -5
  34. package/src/views/bd/setting/table_model/edit.vue +1123 -1123
  35. package/src/views/bd/setting/table_model/list.vue +12 -12
  36. package/src/views/bd/setting/table_model/zdDialog.vue +5 -5
  37. package/src/views/mobile/user/area/dialog.vue +4 -3
  38. package/src/views/mobile/user/user/dialog.vue +4 -3
  39. package/src/views/support/export_template/edit.vue +12 -12
  40. package/src/views/support/export_template/list.vue +18 -18
  41. package/src/views/user/access_log/edit.vue +5 -5
  42. package/src/views/user/access_log/list.vue +11 -11
  43. package/src/views/user/access_log/statistics_list.vue +16 -11
  44. package/src/views/user/api_request/edit.vue +15 -12
  45. package/src/views/user/api_request/list.vue +12 -10
  46. package/src/views/user/area/dialog.vue +5 -5
  47. package/src/views/user/area_attribute/configDialog.vue +319 -319
  48. package/src/views/user/area_attribute/edit.vue +3 -3
  49. package/src/views/user/area_attribute/list.vue +1 -1
  50. package/src/views/user/attachment/uploadDialog.vue +11 -11
  51. package/src/views/user/bill_setting/edit.vue +14 -13
  52. package/src/views/user/bill_setting/h5_ModifyDialog.vue +5 -3
  53. package/src/views/user/bill_setting/h5_view.vue +4 -4
  54. package/src/views/user/bill_setting/itemViewDialog.vue +1 -1
  55. package/src/views/user/bill_setting/list.vue +9 -8
  56. package/src/views/user/bill_setting/queryDialog.vue +3 -3
  57. package/src/views/user/bill_setting/render.vue +7 -7
  58. package/src/views/user/bill_setting/template2.json +44 -11
  59. package/src/views/user/bill_setting/userDialog.vue +5 -5
  60. package/src/views/user/code_rules/edit.vue +11 -11
  61. package/src/views/user/code_rules/list.vue +6 -6
  62. package/src/views/user/commMenu/index.vue +2 -2
  63. package/src/views/user/common_attribute/edit.vue +9 -9
  64. package/src/views/user/common_attribute/itemEdit.vue +11 -11
  65. package/src/views/user/common_attribute/list.vue +12 -12
  66. package/src/views/user/common_script/edit.vue +11 -10
  67. package/src/views/user/common_script/list.vue +17 -16
  68. package/src/views/user/company_info/dialog.vue +138 -131
  69. package/src/views/user/company_info/edit.vue +10 -10
  70. package/src/views/user/company_info/view.vue +1 -1
  71. package/src/views/user/country/dialog.vue +8 -8
  72. package/src/views/user/country/edit.vue +16 -15
  73. package/src/views/user/country/list.vue +172 -162
  74. package/src/views/user/data_type_setting/dialog.vue +11 -8
  75. package/src/views/user/data_type_setting/editDialog.vue +13 -12
  76. package/src/views/user/ea/eagroup/eaobj_list.vue +332 -311
  77. package/src/views/user/ea/eagroup/edit.vue +492 -475
  78. package/src/views/user/ea/eaobj/edit.vue +153 -148
  79. package/src/views/user/ea/eaobj/list.vue +147 -135
  80. package/src/views/user/error-page/401.vue +42 -34
  81. package/src/views/user/error-page/404.vue +19 -3
  82. package/src/views/user/extend_datasource/dialog.vue +127 -119
  83. package/src/views/user/extend_datasource/edit.vue +13 -12
  84. package/src/views/user/extend_datasource/list.vue +7 -7
  85. package/src/views/user/fieldTranslation/editDialog.vue +6 -6
  86. package/src/views/user/fieldTranslation/list.vue +9 -8
  87. package/src/views/user/field_values_invisible/edit.vue +87 -85
  88. package/src/views/user/field_values_invisible/list.vue +36 -25
  89. package/src/views/user/file_type/edit.vue +11 -11
  90. package/src/views/user/file_type/list.vue +10 -7
  91. package/src/views/user/file_type/userEdit.vue +188 -188
  92. package/src/views/user/file_view_area/edit.vue +11 -11
  93. package/src/views/user/file_view_area/itemEdit.vue +168 -165
  94. package/src/views/user/file_view_area/list.vue +9 -9
  95. package/src/views/user/file_view_ins/list.vue +57 -38
  96. package/src/views/user/file_view_ins/propertiesDialog.vue +218 -218
  97. package/src/views/user/form/form_ins_list/edit.vue +421 -421
  98. package/src/views/user/form/form_template/dialog.vue +27 -20
  99. package/src/views/user/form/form_template/edit.vue +15 -12
  100. package/src/views/user/form/form_template/itemEdit.vue +9 -9
  101. package/src/views/user/form/form_template/itemList.vue +5 -5
  102. package/src/views/user/form/form_template/list.vue +9 -8
  103. package/src/views/user/form/form_template_field/dialog.vue +11 -8
  104. package/src/views/user/form/form_type/dialog.vue +134 -127
  105. package/src/views/user/form/form_type/edit.vue +10 -10
  106. package/src/views/user/form/form_type/editDialog.vue +11 -10
  107. package/src/views/user/form/form_type/list.vue +128 -118
  108. package/src/views/user/form/report_requestaccess/dialog.vue +108 -101
  109. package/src/views/user/form/report_requestaccess/edit.vue +274 -236
  110. package/src/views/user/form/report_requestaccess/list.vue +31 -20
  111. package/src/views/user/form/vform/designer.vue +164 -164
  112. package/src/views/user/form/vform/formFieldMapping.js +151 -169
  113. package/src/views/user/form/vform/out_render.vue +3 -2
  114. package/src/views/user/form/vform/render.vue +2 -2
  115. package/src/views/user/form/view/edit.vue +7 -7
  116. package/src/views/user/form/view/list.vue +2 -2
  117. package/src/views/user/home/default.vue +21 -21
  118. package/src/views/user/home/distributor.vue +375 -119
  119. package/src/views/user/home/index.vue +1 -1
  120. package/src/views/user/language_setting/edit.vue +167 -166
  121. package/src/views/user/language_setting/list.vue +7 -7
  122. package/src/views/user/ledger_library/list.vue +2 -2
  123. package/src/views/user/ledger_library/private_list.vue +3 -3
  124. package/src/views/user/login/auth-redirect.vue +1 -1
  125. package/src/views/user/login/index.vue +1 -1
  126. package/src/views/user/login/indexMixin.js +4 -1
  127. package/src/views/user/menu/list.vue +19 -19
  128. package/src/views/user/mobile_menu/list.vue +17 -17
  129. package/src/views/user/notify_message/dialog.vue +8 -6
  130. package/src/views/user/notify_message/list.vue +5 -4
  131. package/src/views/user/notify_template/edit.vue +185 -185
  132. package/src/views/user/notify_template/list.vue +8 -8
  133. package/src/views/user/oplog/edit.vue +108 -103
  134. package/src/views/user/oplog/list.vue +8 -8
  135. package/src/views/user/outLink/form_view.vue +144 -143
  136. package/src/views/user/outLink/index.vue +7 -5
  137. package/src/views/user/outLink/view.vue +119 -117
  138. package/src/views/user/position/dialog.vue +145 -138
  139. package/src/views/user/position/edit.vue +12 -12
  140. package/src/views/user/position/list.vue +172 -162
  141. package/src/views/user/project_tag/dialog.vue +9 -9
  142. package/src/views/user/project_tag/edit.vue +10 -10
  143. package/src/views/user/project_tag/list.vue +7 -7
  144. package/src/views/user/push_setting/edit.vue +14 -11
  145. package/src/views/user/push_setting/list.vue +45 -36
  146. package/src/views/user/redirect/index.vue +4 -4
  147. package/src/views/user/role/dialog.vue +11 -8
  148. package/src/views/user/role/edit.vue +427 -427
  149. package/src/views/user/role/list.vue +125 -114
  150. package/src/views/user/sale_org/dialog.vue +3 -3
  151. package/src/views/user/sale_org/list.vue +26 -26
  152. package/src/views/user/sale_org/moveDialog.vue +2 -2
  153. package/src/views/user/system_notice/edit.vue +184 -184
  154. package/src/views/user/system_notice/list.vue +156 -145
  155. package/src/views/user/system_parameter/edit.vue +140 -137
  156. package/src/views/user/system_parameter/list.vue +131 -120
  157. package/src/views/user/user/dialog.vue +40 -47
  158. package/src/views/user/user/edit.vue +1021 -1019
  159. package/src/views/user/user/form_edit.vue +497 -483
  160. package/src/views/user/user/form_list.vue +16 -16
  161. package/src/views/user/user/info.vue +271 -256
  162. package/src/views/user/user/infoContent.vue +12 -11
  163. package/src/views/user/user/infoEdit.vue +113 -94
  164. package/src/views/user/user/inner_list.vue +1 -1
  165. package/src/views/user/user/list.vue +55 -50
  166. package/src/views/user/user/list2.vue +1 -1
  167. package/src/views/user/user/modifyPasswordDialog.vue +3 -3
  168. package/src/views/user/user/out_list.vue +1 -1
  169. package/src/views/user/wf/formCustDialog/list.vue +13 -15
  170. package/src/views/user/wf/iframe/index.vue +12 -12
  171. package/src/views/user/wf/iframe/index2.vue +2 -2
  172. package/src/views/user/wf/wf_auto_submit_data/edit.vue +6 -6
  173. package/src/views/user/wf/wf_auto_submit_data/edith.vue +6 -6
  174. package/src/views/user/wf/wf_auto_submit_data/list.vue +10 -8
  175. package/src/views/user/wf/wf_diy_attribute/edit.vue +6 -6
  176. package/src/views/user/wf/wf_manage/list.vue +9 -8
  177. package/src/views/user/wf/wf_obj_config/activiti_wf.vue +11 -10
  178. package/src/views/user/wf/wf_obj_config/dialog.vue +10 -7
  179. package/src/views/user/wf/wf_obj_config/edit.vue +15 -12
  180. package/src/views/user/wf/wf_obj_config/edit_form.vue +72 -65
  181. package/src/views/user/wf/wf_obj_config/itemEdit.vue +9 -9
  182. package/src/views/user/wf/wf_obj_config/itemEdit_form.vue +9 -9
  183. package/src/views/user/wf/wf_obj_config/list.vue +12 -12
  184. package/src/views/user/wf/wf_obj_config/list_form.vue +24 -24
  185. package/src/views/user/wf/wf_param/edit.vue +5 -5
  186. package/src/views/user/wf/wf_work_calendar/components/calendar.vue +27 -13
  187. package/src/views/user/wf/wf_work_calendar/components/calendar2.vue +25 -10
  188. package/src/views/user/wf/wf_work_calendar/configDialog.vue +9 -6
  189. package/src/views/user/wf/wf_work_calendar/date.js +10 -10
  190. package/src/views/user/wf/wf_work_calendar/list.vue +9 -4
  191. package/src/views/user/sale_org_net/list.vue +0 -574
@@ -1,1123 +1,1123 @@
1
- <template>
2
- <div class="detail-wrap">
3
- <el-form ref="editForm" :model="szTaMb">
4
- <div class="d-header clearfix">
5
- <div class="fl">
6
- <i class="el-icon-info"/>
7
- {{ dataId ? '查看' : '新增' }}数据表定义模板
8
- </div>
9
- <div class="fr">
10
- <el-button type="primary" plain class="button-sty" @click="$baseReload()" icon="el-icon-refresh-right">重置
11
- </el-button>
12
- <el-button type="primary" class="button-sty" icon="el-icon-check" @click="saveData"
13
- v-if="isDev && !szTaMb.systems">
14
- 保存
15
- </el-button>
16
-
17
- <el-button type="success" class="button-sty" icon="el-icon-check"
18
- @click="createModifyTable()" v-if="!szTaMb.systems"> 创建/更新数据表
19
- </el-button>
20
- </div>
21
- </div>
22
- <baseTabs>
23
- <baseTabPane label="基本信息">
24
- <template #default>
25
- <table class="table-detail">
26
- <tbody>
27
- <tr>
28
- <th>
29
- <em class="f-red">*</em>
30
- 实体名称
31
- </th>
32
- <td colspan="3">
33
- <el-form-item prop="taEn" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
34
- <el-input type="text" autocomplete="off" v-model="szTaMb.taEn" clearable/>
35
- </el-form-item>
36
- </td>
37
- <th><em class="f-red">*</em>数据库表名</th>
38
- <td colspan="3">
39
- {{ szTaMb.taBm }}
40
- </td>
41
- </tr>
42
- <tr>
43
- <th><em class="f-red">*</em>表描述</th>
44
- <td colspan="5">
45
- <el-form-item prop="taCh" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
46
- <el-input type="text" autocomplete="off" v-model="szTaMb.taCh" clearable/>
47
- </el-form-item>
48
- </td>
49
- </tr>
50
- <tr>
51
- <th><em class="f-red">*</em>是否明细</th>
52
- <td>
53
- <el-form-item prop="taType" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
54
- <el-radio-group v-model="szTaMb.taType">
55
- <el-radio :label="1">是</el-radio>
56
- <el-radio :label="0">否</el-radio>
57
- </el-radio-group>
58
- <!-- <el-select v-model="szTaMb.taType">
59
- <el-option :value="0" label="否"></el-option>
60
- <el-option :value="1" label="是"></el-option>
61
- </el-select>-->
62
- </el-form-item>
63
- <!-- <el-checkbox label="是否明细" v-model="szTaMb.taType"></el-checkbox>-->
64
- </td>
65
- <th>
66
- <em class="f-red" v-show="szTaMb.taType===1">*</em>
67
- 所属主实体
68
- </th>
69
- <td colspan="3">
70
- <el-form-item prop="sszstEn"
71
- :rules="[{
72
- required:szTaMb.taType===1,
73
- trigger: ['blur', 'change']
74
- }]">
75
- <el-input
76
- class="search-input"
77
- max="200"
78
- v-model="szTaMb.sszstEn"
79
- @clear="
80
- szTaMb.sszst = '';
81
- $forceUpdate();
82
- "
83
- :disabled="szTaMb.taType==0"
84
- v-el-readonly
85
- clearable
86
- >
87
- <i slot="suffix" class="el-input__icon el-icon-search" @click="showSzTaMbDialog = true"></i>
88
- </el-input>
89
- </el-form-item>
90
- </td>
91
- </tr>
92
- <tr>
93
- <th><em class="f-red">*</em>是否树结构</th>
94
- <td>
95
- <el-form-item prop="taRule" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
96
- <el-radio-group v-model="szTaMb.taRule" @change="changeTaRule">
97
- <el-radio :label="1">是</el-radio>
98
- <el-radio :label="0">否</el-radio>
99
- </el-radio-group>
100
- </el-form-item>
101
- </td>
102
- <th><em class="f-red">*</em>数据范围</th>
103
- <td colspan="3">
104
- <el-form-item prop="dataRange" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
105
- <el-radio-group v-model="szTaMb.dataRange">
106
- <el-radio :label="1">集团</el-radio>
107
- <el-radio :label="0">当前企业</el-radio>
108
- </el-radio-group>
109
- </el-form-item>
110
- </td>
111
- </tr>
112
- <tr>
113
- <th>
114
- <em class="f-red">*</em>
115
- 表单分类
116
- </th>
117
- <td colspan="5">
118
- <el-form-item prop="menuKindName"
119
- :rules="[{
120
- required:true,
121
- trigger: ['blur', 'change']
122
- }]">
123
- <el-input
124
- class="search-input"
125
- max="200"
126
- v-model="szTaMb.menuKindName"
127
- @clear="
128
- szTaMb.menuKindCode = '';
129
- $forceUpdate();
130
- "
131
- v-el-readonly
132
- clearable
133
- >
134
- <i slot="suffix" class="el-input__icon el-icon-search" @click="showMenuKindDialog = true"></i>
135
- </el-input>
136
- </el-form-item>
137
- </td>
138
- </tr>
139
- <tr>
140
- <th>
141
- 项目标签
142
- </th>
143
- <td colspan="7">
144
- <projectTagView v-model="szTaMb.szTaMbTagDTOs" :readonly="true"></projectTagView>
145
- </td>
146
- </tr>
147
- <tr>
148
- <th>创建人</th>
149
- <td>{{ szTaMb.createBy }}</td>
150
- <th>创建时间</th>
151
- <td>{{ szTaMb.createDate }}</td>
152
- <th>更新人</th>
153
- <td>{{ szTaMb.modifyBy }}</td>
154
- <th>更新时间</th>
155
- <td>{{ szTaMb.modifyDate }}</td>
156
- </tr>
157
- </tbody>
158
- </table>
159
- </template>
160
- </baseTabPane>
161
- <baseTabPane label="数据表字段明细">
162
- <template #button>
163
- <el-button class="button-sty" @click="addTaMbItems" icon="el-icon-plus">新增</el-button>
164
- </template>
165
- <template #default>
166
- <div>
167
- <vxe-grid
168
- ref="table-szTaZdMb"
169
- :data="szTaMb.szTaZdMbDTOs"
170
- v-bind="productOption"
171
- @resizable-change="$vxeTableUtil.onColumnWitchChange"
172
- @custom="$vxeTableUtil.customHandle"
173
- >
174
- <template #zdType="{row}">
175
- <el-select v-model="row.zdType" clearable :disabled="!!row.systems || !!row.relationZd">
176
- <el-option value="Boolean" label="布尔"></el-option>
177
- <el-option value="Integer" label="整数"></el-option>
178
- <el-option value="Long" label="长整数"></el-option>
179
- <el-option value="Decimal" label="精度小数"></el-option>
180
- <el-option value="Money" label="金额"></el-option>
181
- <el-option value="Text" label="文本"></el-option>
182
- <el-option value="TextArea" label="长文本"></el-option>
183
- <!-- <el-option value="Date" label="日期" ></el-option>-->
184
- <el-option value="DateTime" label="日期时间"></el-option>
185
- <el-option value="Reference" label="关联表"></el-option>
186
- </el-select>
187
- </template>
188
- <template #referenceZd="{row, rowIndex, $table}">
189
- <el-input
190
- class="search-input"
191
- v-model="row.referenceZd"
192
- clearable
193
- @clear="
194
- $forceUpdate();
195
- "
196
- v-el-readonly
197
- v-if="row.zdType=='Reference'"
198
- >
199
- <i slot="suffix" class="el-input__icon el-icon-search"
200
- @click="openReferenceZdDialog(row, rowIndex, $table)"></i>
201
- </el-input>
202
- <template v-else>
203
- {{ row.referenceZd }}
204
- </template>
205
- </template>
206
-
207
- </vxe-grid>
208
- </div>
209
- <table class="table-detail">
210
- <tbody>
211
- <tr>
212
- <th>
213
- 表编码
214
- </th>
215
- <td colspan="7">
216
- {{ szTaMb.taCode }}
217
- </td>
218
- </tr>
219
- </tbody>
220
- </table>
221
- </template>
222
- </baseTabPane>
223
- </baseTabs>
224
- </el-form>
225
-
226
- <szTaMbDialog v-if="showSzTaMbDialog"
227
- :visiable.sync="showSzTaMbDialog"
228
- @confirm="confirmInsertSzTaMb"
229
- :multi="false"
230
- />
231
- <itemSzTaMbDialog v-if="showItemSzTaMbDialog"
232
- :visiable.sync="showItemSzTaMbDialog"
233
- @confirm="confirmInsertItemSzTaMb" multi="false"/>
234
- <MenuKindDialog v-if="showMenuKindDialog"
235
- :visiable.sync="showMenuKindDialog"
236
- @confirm="confirmInsertMenuKind"
237
- :multi="false"
238
- />
239
-
240
- <el-dialog
241
- title="关联表维护"
242
- v-if="showReferenceZdDialog"
243
- :visible.sync="showReferenceZdDialog"
244
- :modal-append-to-body="false"
245
- :close-on-click-modal="false"
246
- :modal="false"
247
- custom-class="dialog-style wf-dialog"
248
- v-el-drag-dialog
249
- v-el-dialog-center
250
- >
251
- <el-form>
252
- <div id="containt">
253
- <table class="table-detail">
254
- <tbody>
255
- <tr>
256
- <th>
257
- <span class="t">
258
- 关联表
259
- </span>
260
- </th>
261
- <td>
262
- <el-form-item label="">
263
- <el-input
264
- class="search-input"
265
- max="200"
266
- v-model="referenceEntity"
267
- @clear="
268
- referenceKey = null;
269
- referenceShowFields = [];
270
- $forceUpdate();
271
- "
272
- v-el-readonly
273
- clearable
274
- >
275
- <i slot="suffix" class="el-input__icon el-icon-search" @click="showEntityDialog = true"></i>
276
- </el-input>
277
- </el-form-item>
278
- </td>
279
- </tr>
280
- <tr>
281
- <th>
282
- <span class="t">
283
- 关联字段
284
- </span>
285
- </th>
286
- <td>
287
- <el-form-item label="">
288
- <el-input
289
- class="search-input"
290
- max="200"
291
- v-model="referenceKey"
292
- @clear="
293
- referenceKey = null;
294
- "
295
- v-el-readonly
296
- clearable
297
- >
298
- <i slot="suffix" class="el-input__icon el-icon-search" @click="showEntityFieldDialog1 = true"></i>
299
- </el-input>
300
- </el-form-item>
301
- </td>
302
- </tr>
303
- <tr>
304
- <th>
305
- <span class="t">
306
- 显示字段
307
- </span>
308
- </th>
309
- <td>
310
- <el-form-item label="">
311
- <el-input
312
- class="search-input"
313
- max="200"
314
- :value="referenceShowFields.join(',')"
315
- @clear="
316
- referenceShowFields = [];
317
- "
318
- v-el-readonly
319
- clearable
320
- >
321
- <i slot="suffix" class="el-input__icon el-icon-search" @click="showEntityFieldDialog2 = true"></i>
322
- </el-input>
323
- </el-form-item>
324
- </td>
325
- </tr>
326
- </tbody>
327
- </table>
328
- </div>
329
- </el-form>
330
- <span slot="footer" class="dialog-footer">
331
- <el-button type="primary" plain class="button-sty" @click="showReferenceZdDialog = false">
332
- <i class="el-icon-close el-icon"></i>
333
- 取 消
334
- </el-button>
335
- <el-button type="primary" @click="confirmReferenceZdDialog" class="button-sty">
336
- <i class="el-icon-check el-icon"></i>
337
- 确 定
338
- </el-button>
339
- </span>
340
- </el-dialog>
341
-
342
- <szTaMbDialog v-if="showEntityDialog"
343
- :visiable.sync="showEntityDialog"
344
- @confirm="confirmEntityDialog"
345
- :multi="false"
346
- />
347
-
348
- <zdDialog v-if="showEntityFieldDialog1"
349
- :visiable.sync="showEntityFieldDialog1"
350
- @confirm="confirmEntityFieldDialog1"
351
- :taBm="referenceEntity"
352
- :multi="false"
353
- />
354
- <zdDialog v-if="showEntityFieldDialog2"
355
- :visiable.sync="showEntityFieldDialog2"
356
- @confirm="confirmEntityFieldDialog2"
357
- :taBm="referenceEntity"
358
- :multi="true"
359
- />
360
- <preformDialog v-if="showPreformDialog" :visiable.sync="showPreformDialog"
361
- @confirm="confirmPreformDialog"></preformDialog>
362
- </div>
363
- </template>
364
-
365
- <script>
366
- import szTaMbDialog from '../../../../views/bd/setting/table_model/dialog.vue';
367
- import itemSzTaMbDialog from '../../../../views/bd/setting/table_model/dialog.vue';
368
- import MenuKindDialog from '../../../../views/bd/setting/menu_kind/dialog.vue';
369
- import zdDialog from '../../../../views/bd/setting/table_model/zdDialog.vue';
370
- import {getBdEnv} from "../../../../api/user";
371
- import projectTagView from "../../../../components/projectTag/view.vue";
372
- import preformDialog from "@base/views/bd/setting/form_template/preformDialog.vue";
373
-
374
- export default {
375
- name: 'szTaMbEdit',
376
- props: {
377
- _dataId: [String, Number],
378
- currentFormType: Object
379
- },
380
- components: {
381
- preformDialog,
382
- projectTagView,
383
- szTaMbDialog,
384
- itemSzTaMbDialog,
385
- MenuKindDialog,
386
- zdDialog
387
- },
388
- data() {
389
- return {
390
- tabIndex: 0,
391
- isEdit: false,
392
- dataId: '',
393
- szTaMb: {
394
- enabled: true,
395
- taType: 0,
396
- szTaZdMbDTOs: [],
397
- menuKindName: null,
398
- menuKindCode: null,
399
- taRule: 0,
400
- dataRange: 0,
401
- szTaMbTagDTOs: []
402
- },
403
- treeDefaultZds: [],
404
- productOption: {},
405
- showSzTaMbDialog: false,
406
- showItemSzTaMbDialog: false,
407
- showMenuKindDialog: false,
408
- productCategoryCodes: [],
409
- zdEnIndex: '',
410
-
411
- referenceEntity: null,
412
- referenceKey: null,
413
- referenceShowFields: null,
414
- currentIndex: 0,
415
- showReferenceZdDialog: false,
416
-
417
- showEntityDialog: false,
418
- showEntityFieldDialog1: false,
419
- showEntityFieldDialog2: false,
420
- referenceShowRows: [],
421
- createdTableColumnStr: null,
422
- createdTableColumnArray: [],
423
- isDev: true,
424
- showPreformDialog: false
425
-
426
- };
427
- },
428
- created() {
429
- if (this._dataId && !isNaN(this._dataId)) {
430
- this.dataId = this._dataId;
431
- } else {
432
- this.szTaMb.menuKindName = this.currentFormType?.name || null;
433
- this.szTaMb.menuKindCode = this.currentFormType?.menuKindCode || null;
434
- }
435
- },
436
- mounted() {
437
- this.getBdEnv();
438
- this.getTreeDefaultZds();
439
- this.initTableProduct();
440
- this.getData();
441
- },
442
- methods: {
443
- getData(callback) {
444
- if (this.dataId && !isNaN(this.dataId)) {
445
- this.isEdit = true;
446
- this.$http({
447
- url: USER_PREFIX + `/szTaMb/get`,
448
- method: `post`,
449
- data: {
450
- id: this.dataId
451
- },
452
- isLoading: true,
453
- modalStrictly: true,
454
- success: res => {
455
- if (!callback) {
456
- let szTaMb = res.objx || {};
457
- szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs;
458
- szTaMb.attachmentDTOs = this.szTaMb.attachmentDTOs;
459
- szTaMb.oplogDTOs = this.szTaMb.oplogDTOs;
460
- this.szTaMb = szTaMb;
461
-
462
- this.getCreatedTableColumns();
463
- } else {
464
- callback(res)
465
- }
466
-
467
- }
468
- });
469
- }
470
- },
471
- updateStatus(status) {
472
- let text;
473
- if (status === 3) {
474
- text = '您确定要作废吗?';
475
- }
476
- this.$baseConfirm(text).then(() => {
477
- this.$http({
478
- url: USER_PREFIX + `/szTaMb/updateStatus`,
479
- method: `post`,
480
- data: {
481
- id: this.dataId,
482
- status: status
483
- },
484
- isLoading: true,
485
- success: res => {
486
- this.$message({
487
- message: res.content,
488
- type: 'success',
489
- duration: 500,
490
- onClose: t => {
491
- this.$baseReload();
492
- }
493
- });
494
- }
495
- });
496
- });
497
- },
498
- saveData() {
499
- this.$refs.editForm.$baseValidate(valid => {
500
- if (valid) {
501
- const szTaZdMbDTOs = this.$refs['table-szTaZdMb'].getTableData().fullData;
502
- if (szTaZdMbDTOs.length === 0) {
503
- this.$baseAlert('明细不能为空!');
504
- return false;
505
- }
506
- this.szTaMb.szTaZdMbDTOs = szTaZdMbDTOs;
507
- this.openPreformDialog();
508
-
509
- }
510
- });
511
- },
512
- saveDataHandle(preformData) {
513
- let formData = {
514
- ...this.szTaMb,
515
- logContent: preformData.logContent
516
- };
517
- // const formData = this.szTaMb;
518
- // formData.szTaZdMbDTOs = szTaZdMbDTOs;
519
-
520
- var url = USER_PREFIX + (this.isEdit ? `/szTaMb/update` : `/szTaMb/save`);
521
- this.$http({
522
- url: url,
523
- method: `post`,
524
- data: formData,
525
- isLoading: true,
526
- success: res => {
527
- this.$message({
528
- message: res.content,
529
- type: 'success',
530
- duration: 500,
531
- onClose: t => {
532
- if (this.isEdit) {
533
- this.$baseReload();
534
- } else {
535
- this.$baseReload({
536
- updateParam: {
537
- _dataId: res.objx
538
- }
539
- });
540
- }
541
- }
542
- });
543
- }
544
- });
545
- },
546
- openPreformDialog() {
547
- this.showPreformDialog = true;
548
- },
549
- confirmPreformDialog(preformData) {
550
- this.saveDataHandle(preformData);
551
- },
552
- initTableProduct() {
553
- const tableOption = {
554
- vue: this,
555
- tableRef: 'table-szTaZdMb',
556
- tableName: 'edit-szTaMb-szTaZdMb',
557
- config: {
558
- maxHeight: "600px"
559
- },
560
- columns: [
561
- {type: 'checkbox', fixed: 'left', width: 48, resizable: false},
562
- {
563
- title: '实体字段名称',
564
- field: 'zdEn',
565
- width: 150,
566
- fixed: 'left',
567
- slots: {
568
- default: ({row, rowIndex, $table}) => {
569
- let disabled = !!row.systems || !!row.relationZd;
570
- if (!disabled) {
571
- return [
572
- <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.zdEn'}
573
- rules={[{required: true, trigger: ['blur', 'change']}]}>
574
- <el-input v-model={row.zdEn} clearable/>
575
- </el-form-item>
576
- ];
577
- } else {
578
- let style = !!row.relationZd ? "margin-left:20px" : "";
579
- return [
580
- <div style={style}>{row.zdEn}</div>
581
- ]
582
- }
583
- }
584
- }
585
- },
586
- {title: '数据库表字段名', field: 'taZdMc', width: 150, fixed: 'left',},
587
- {
588
- title: '数据库表字段是否已创建',
589
- field: 'isFieldCreated',
590
- width: 200,
591
- slots: {
592
- default: ({row, rowIndex, $table}) => {
593
- let taZdMc = row.taZdMc;
594
- let createdTableColumnArray = this.createdTableColumnArray;
595
- return taZdMc && createdTableColumnArray.includes(taZdMc) ? "是" : "_";
596
- }
597
- }
598
- },
599
- {
600
- title: '字段描述',
601
- field: 'zdCh',
602
- width: 150,
603
- slots: {
604
- default: ({row, rowIndex, $table}) => {
605
- return [
606
- <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.zdCh'}
607
- rules={[{required: true, trigger: ['blur', 'change']}]}>
608
- <el-input v-model={row.zdCh} clearable disabled={!!row.systems}/>
609
- </el-form-item>
610
- ];
611
- }
612
- }
613
- },
614
- {
615
- title: '字段类型', field: 'zdType', width: 150,
616
- slots: {
617
- default: 'zdType'
618
- }
619
- },
620
- {
621
- title: '关联字段', field: 'referenceZd', width: 250,
622
- slots: {
623
- default: 'referenceZd'
624
- }
625
- },
626
- // {
627
- // title: '对应表名',
628
- // field: 'dybm',
629
- // width: 150,
630
- // slots: {
631
- // default: ({row, rowIndex, $table}) => {
632
- // return [
633
- // <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.dybm'}
634
- // rules={[{required: row.taType=='Reference', trigger: ['blur', 'change']}]}>
635
- //
636
- // <el-input v-show={row.taType=='Reference'}
637
- // class="search-input"
638
- // max="200"
639
- // v-model={row.dybm}
640
- // onclear={() => {
641
- // row.dybm = '';
642
- // this.$forceUpdate();
643
- // }}
644
- // v-el-readonly
645
- // clearable
646
- // >
647
- // <i v-show={this.szTaMb.id==null} slot="suffix" class="el-input__icon el-icon-search" onClick={() => {
648
- // this.zdEnIndex = rowIndex;
649
- // this.showItemSzTaMbDialog = true;
650
- // }} />
651
- // </el-input>
652
- // </el-form-item>
653
- // ];
654
- // }
655
- // }
656
- // },
657
- {
658
- title: '字段类型对应的默认值',
659
- field: 'zdTypeValues',
660
- width: 150,
661
- slots: {
662
- default: ({row, rowIndex, $table}) => {
663
- let disabled = !!row.systems || !!row.relationZd;
664
- return [
665
- <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.zdTypeValues'}
666
- rules={[{required: false, trigger: ['blur', 'change']}]}>
667
- <el-input v-model={row.zdTypeValues} clearable disabled={disabled}/>
668
- </el-form-item>
669
- ];
670
- }
671
- }
672
- },
673
- {
674
- title: '是否必填项',
675
- field: 'required',
676
- width: 140,
677
- slots: {
678
- default: ({row, $table, rowIndex}) => {
679
- let disabled = !!row.systems || !!row.relationZd;
680
- return [
681
- <el-checkbox v-model={row.required} disabled={disabled}/>
682
- ];
683
- }
684
- }
685
- },
686
- {
687
- title: '是否启用',
688
- field: 'enabled',
689
- width: 120,
690
- slots: {
691
- default: ({row, $table, rowIndex}) => {
692
- let disabled = !!row.systems || !!row.relationZd;
693
- return [
694
- <el-checkbox v-model={row.enabled} disabled={disabled}/>
695
- ];
696
- }
697
- }
698
- },
699
-
700
- {
701
- title: '是否自动生成编码',
702
- field: 'generateCode',
703
- width: 180,
704
- slots: {
705
- default: ({row, $table, rowIndex}) => {
706
- let disabled = !!row.systems || !!row.relationZd;
707
- return [
708
- <el-checkbox v-model={row.generateCode} disabled={disabled}/>
709
- ];
710
- }
711
- }
712
- },
713
- {
714
- title: '编码类型',
715
- field: 'codeType',
716
- width: 150,
717
- slots: {
718
- default: ({row, rowIndex, $table}) => {
719
- let disabled = !!row.systems || !!row.relationZd;
720
- return [
721
- <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.codeType'}
722
- rules={[{required: false, trigger: ['blur', 'change']}]}>
723
- <el-input v-model={row.codeType} clearable disabled={disabled}/>
724
- </el-form-item>
725
- ];
726
- }
727
- }
728
- },
729
- {
730
- title: '序号',
731
- field: 'orders',
732
- width: 150,
733
- slots: {
734
- default: ({row, rowIndex, $table}) => {
735
- return [
736
- <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.orders'}
737
- rules={[{required: false, trigger: ['blur', 'change']}]}>
738
- <base-input-number v-model={row.orders} disabled={!!row.systems} onchange={() => {
739
- this.changeOrders(row);
740
- }}/>
741
- </el-form-item>
742
- ];
743
- }
744
- }
745
- },
746
- {
747
- width: 47,
748
- fixed: 'right',
749
- title: '',
750
- sortable: false,
751
- slots: {
752
- default: ({row, rowIndex, $table}) => {
753
- let taZdMc = row.taZdMc;
754
- let createdTableColumnArray = this.createdTableColumnArray || [];
755
- let hasCreated = !!taZdMc && createdTableColumnArray.includes(taZdMc)
756
- // let style = !row.relationZd ? "margin-left:20px" : "";
757
- if (!row.systems && !hasCreated && !row.relationZd) {
758
- //非内置,未创建字段,非关联表带出来的字段
759
- return [
760
- <a
761
- href="javascript:void(0);"
762
- class="a-link"
763
- onclick={() => {
764
- // this.szTaMb.szTaZdMbDTOs.splice(rowIndex, 1);
765
- this.deleteItem(row, rowIndex);
766
- }}
767
- >
768
- <el-tooltip enterable={false} effect="dark" content="删除" placement="top"
769
- popper-class="tooltip-skin">
770
- <i class="el-icon-delete"/>
771
- </el-tooltip>
772
- </a>
773
- ];
774
- }
775
- }
776
- }
777
- }
778
- ]
779
- };
780
- this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
781
- this.productOption = opts;
782
- });
783
- if (this.dataId) {
784
- this.$http({
785
- url: USER_PREFIX + `/szTaMb/getSzTaZdMbs`,
786
- method: `post`,
787
- data: {
788
- id: this.dataId
789
- },
790
- isLoading: true,
791
- modalStrictly: true,
792
- success: res => {
793
- this.szTaMb.szTaZdMbDTOs = res.objx || [];
794
- }
795
- });
796
- }
797
- },
798
- addTaMbItems() {
799
- // let tacitly = true;
800
- // if (this.customer.szTaZdMbDTOs.length > 0) {
801
- // tacitly = false;
802
- // }
803
- // this.customer.szTaZdMbDTOs.push({tacitly: tacitly});
804
- let newIndex = this.getNewIndex();
805
- this.szTaMb.szTaZdMbDTOs.push({zdType: 'Text', enabled: true, orders: newIndex, generateCode: false});
806
- },
807
- deleteItem(row, rowIndex) {
808
- let referenceZd = row.referenceZd;
809
- this.szTaMb.szTaZdMbDTOs.splice(rowIndex, 1);
810
- if (referenceZd) {
811
- this.szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs.filter(item => {
812
- return referenceZd !== item.relationZd
813
- })
814
- }
815
- },
816
- confirmInsertSzTaMb(rows) {
817
- if (rows.length > 0) {
818
- let row = rows[0];
819
- this.$set(this.szTaMb, 'sszst', row.taCode);
820
- this.$set(this.szTaMb, 'sszstEn', row.taEn);
821
- }
822
- },
823
- confirmInsertItemSzTaMb(rows) {
824
- if (rows.length > 0) {
825
- let row = rows[0];
826
- let szTaZdMbDTO = this.szTaMb.szTaZdMbDTOs[this.zdEnIndex];
827
- this.$set(szTaZdMbDTO, 'zdEn', row.taBm + '.' + szTaZdMbDTO.zdEn);
828
- this.$set(szTaZdMbDTO, 'dybm', row.taEn);
829
- }
830
- },
831
- confirmInsertMenuKind(rows) {
832
- if (rows.length > 0) {
833
- let row = rows[0];
834
- this.$set(this.szTaMb, 'menuKindCode', row.menuKindCode);
835
- this.$set(this.szTaMb, 'menuKindName', row.name);
836
- }
837
- },
838
- getNewData(callback) {
839
- this.getData((res0) => {
840
- let szTaMb = res0.objx;
841
- this.$http({
842
- url: USER_PREFIX + `/szTaMb/getSzTaZdMbs`,
843
- method: `post`,
844
- data: {
845
- id: this.dataId
846
- },
847
- isLoading: true,
848
- modalStrictly: true,
849
- success: res1 => {
850
- szTaMb.szTaZdMbDTOs = res1.objx || [];
851
- callback(szTaMb)
852
- }
853
- });
854
- });
855
- },
856
- createModifyTable() {
857
- let text = '您确定要创建/更新数据表吗?';
858
- this.$baseConfirm(text).then(() => {
859
- this.getNewData((data) => {
860
- this.$http({
861
- url: "/" + this.szTaMb.serviceName + `/dbTable/createUpdateTable`,
862
- method: `post`,
863
- data: data,
864
- isLoading: true,
865
- success: res => {
866
- this.$message({
867
- message: res.content,
868
- type: 'success',
869
- duration: 500,
870
- onClose: t => {
871
- this.$baseReload();
872
- }
873
- });
874
- }
875
- });
876
-
877
- });
878
- });
879
- },
880
- openReferenceZdDialog(row, rowIndex, $table) {
881
- let referenceZd = row.referenceZd;
882
- let referenceEntity = null;
883
- let referenceKey = null;
884
- let referenceShowFields = [];
885
-
886
- if (referenceZd) {
887
- let index = referenceZd.indexOf(".")
888
- referenceEntity = referenceZd.substring(0, index);
889
- referenceKey = referenceZd.substr(index + 1);
890
- referenceShowFields = this.szTaMb.szTaZdMbDTOs.filter(item => {
891
- return referenceZd == item.relationZd
892
- }).map(item => {
893
- return item.referenceZd.substr(index + 1)
894
- });
895
- }
896
-
897
- this.referenceEntity = referenceEntity;
898
- this.referenceKey = referenceKey;
899
- this.referenceShowFields = referenceShowFields;
900
-
901
- this.referenceShowRows = referenceShowFields.map(item => {
902
- return {
903
- taZdMc: item
904
- }
905
- });
906
-
907
- this.currentIndex = rowIndex;
908
- this.showReferenceZdDialog = true;
909
- },
910
- confirmReferenceZdDialog() {
911
- let row = this.szTaMb.szTaZdMbDTOs[this.currentIndex];
912
- let oldReferenceZd = row.referenceZd;
913
-
914
- let referenceEntity = this.referenceEntity;
915
- let referenceZd = referenceEntity + "." + this.referenceKey;
916
- let referenceShowFields = this.referenceShowFields;
917
- let keys = referenceShowFields.map(item => {
918
- return referenceEntity + "." + item;
919
- })
920
- if (oldReferenceZd) {
921
- let index0 = oldReferenceZd.indexOf(".")
922
- let oldReferenceEntity = oldReferenceZd.substring(0, index0);
923
- let delIndex = [];
924
- if (referenceEntity != oldReferenceEntity) {
925
- this.szTaMb.szTaZdMbDTOs.forEach((item, index) => {
926
- if (item.relationZd && oldReferenceZd == item.relationZd) {
927
- delIndex.push(index);
928
- }
929
- })
930
- }/*else if (oldReferenceZd != referenceZd) {
931
- this.szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs.forEach((item, index) => {
932
- if (oldReferenceZd == item.relationZd) {
933
- delIndex.push(index)
934
- }
935
- })
936
- }*/ else {
937
- this.szTaMb.szTaZdMbDTOs.forEach((item, index) => {
938
- if (oldReferenceZd == item.relationZd && !keys.includes(item.referenceZd)) {
939
- delIndex.push(index)
940
- }
941
- })
942
- }
943
- if (delIndex.length) {
944
- /*this.szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs.filter((item, index) => {
945
- return !delIndex.includes(index);
946
- })*/
947
- delIndex.reverse().forEach(i => {
948
- this.szTaMb.szTaZdMbDTOs.splice(i, 1)
949
- })
950
- }
951
- }
952
-
953
- /*let addReferenceShowFields = referenceShowFields.filter((item, index) => {
954
- return !keys.includes(item)
955
- })*/
956
- let oldKeys = this.szTaMb.szTaZdMbDTOs.filter(item => referenceZd == item.relationZd).map(item => item.referenceZd)
957
- let addReferenceShowFields = referenceShowFields.filter((item, index) => {
958
- return !oldKeys.includes(referenceEntity + "." + item)
959
- })
960
-
961
- let addIndex = -1;
962
- let lastIndex = this.szTaMb.szTaZdMbDTOs.findLastIndex(item => {
963
- return referenceZd == item.relationZd
964
- });
965
- addIndex = lastIndex >= 0 ? (lastIndex + 1) : (this.currentIndex + 1);
966
-
967
- let referenceShowRows = this.referenceShowRows;
968
-
969
- let addReferenceShowRows = referenceShowRows.filter((item, index) => {
970
- return addReferenceShowFields.includes(item.taZdMc)
971
- })
972
- addReferenceShowRows.forEach((item, index) => {
973
- let rIndex = addIndex + index;
974
- let orders = (row.orders || 0) + index + 1;
975
- let newItem = {
976
- zdEn: "ref_" + item.zdEn,
977
- taZdMc: null,
978
- zdCh: item.zdCh,
979
- zdType: "Text",
980
- referenceZd: referenceEntity + "." + item.taZdMc,
981
- relationZd: referenceZd,
982
- zdTypeValues: null,
983
- required: false,
984
- enabled: true,
985
- requiredMsg: null,
986
- regexp: null,
987
- regexpMsg: null,
988
- orders
989
- };
990
- this.szTaMb.szTaZdMbDTOs.splice(rIndex, 0, newItem);
991
- });
992
- row.referenceZd = referenceZd
993
- this.handleReferenceOrders(row);
994
- this.showReferenceZdDialog = false;
995
- },
996
- changeOrders(row) {
997
- this.handleReferenceOrders(row);
998
- },
999
- handleReferenceOrders(row) {
1000
- let referenceZd = row.referenceZd;
1001
- let orders = row.orders || 0;
1002
- if (referenceZd) {
1003
- this.szTaMb.szTaZdMbDTOs.filter(item => referenceZd === item.relationZd).forEach((item, index) => {
1004
- if (referenceZd === item.relationZd) {
1005
- item.orders = orders + index + 1;
1006
- }
1007
- })
1008
- }
1009
- },
1010
- confirmEntityDialog(rows) {
1011
- if (rows.length) {
1012
- let row = rows[0];
1013
- if (this.referenceEntity != row.taBm) {
1014
- this.referenceKey = null;
1015
- this.referenceShowFields = [];
1016
- }
1017
- this.referenceEntity = row.taBm;
1018
- }
1019
- },
1020
- confirmEntityFieldDialog1(rows) {
1021
- if (rows.length) {
1022
- let row = rows[0];
1023
- this.referenceKey = row.taZdMc;
1024
- }
1025
- },
1026
- confirmEntityFieldDialog2(rows) {
1027
- if (rows.length) {
1028
- this.referenceShowRows = rows;
1029
- this.referenceShowFields = rows.map(row => {
1030
- return row.taZdMc;
1031
- });
1032
- }
1033
- },
1034
- getCreatedTableColumns() {
1035
- if (!this.szTaMb.taBm) return;
1036
- this.$http({
1037
- url: "/" + this.szTaMb.serviceName + "/dbTable/getTableColumns",
1038
- method: `post`,
1039
- data: {
1040
- stringOne: this.szTaMb.taBm
1041
- },
1042
- isLoading: true,
1043
- modalStrictly: true,
1044
- success: res => {
1045
- if (res.objx) {
1046
- this.createdTableColumnStr = res.objx;
1047
- let createdTableColumnArray = res.objx.split(",").filter(item => !!item);
1048
- this.createdTableColumnArray = createdTableColumnArray;
1049
- }
1050
- }
1051
- });
1052
- },
1053
- getTreeDefaultZds() {
1054
- this.$http({
1055
- url: USER_PREFIX + `/szTaMb/getTreeDefaultZds`,
1056
- method: `post`,
1057
- data: {},
1058
- isLoading: true,
1059
- modalStrictly: true,
1060
- success: res => {
1061
- let rows = res.objx || []
1062
- this.treeDefaultZds = rows
1063
- }
1064
- });
1065
- },
1066
- hasFieldCreated(row) {
1067
- let taZdMc = row.taZdMc;
1068
- let createdTableColumnArray = this.createdTableColumnArray || [];
1069
- let hasCreated = !!taZdMc && createdTableColumnArray.includes(taZdMc)
1070
- return hasCreated;
1071
- },
1072
- changeTaRule(val) {
1073
- let treeDefaultZds = this.$baseLodash.cloneDeep(this.treeDefaultZds);
1074
- let szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs;
1075
- if (val == 1) {
1076
- let zdEns = szTaZdMbDTOs.filter(item => !!item.zdEn).map(item => item.zdEn);
1077
- if (zdEns.length) {
1078
- treeDefaultZds = treeDefaultZds.filter(item => {
1079
- return !zdEns.includes(item.zdEn);
1080
- })
1081
- }
1082
- let newIndex = this.getNewIndex();
1083
- treeDefaultZds.forEach((item, index) => {
1084
- item.orders = newIndex + index;
1085
- })
1086
- szTaZdMbDTOs.push(...treeDefaultZds);
1087
- } else {
1088
- let zdEns = szTaZdMbDTOs.filter(item => !!item.zdEn).map(item => item.zdEn);
1089
- let createdFields = szTaZdMbDTOs.filter(item => {
1090
- return !!item.zdEn && this.hasFieldCreated(item)
1091
- }).map(item => item.zdEn);
1092
- if (zdEns.length) {
1093
- treeDefaultZds = treeDefaultZds.filter(item => {
1094
- return !createdFields.includes(item.zdEn) && zdEns.includes(item.zdEn);
1095
- })
1096
- }
1097
- let delFields = treeDefaultZds.map(item => item.zdEn);
1098
- this.szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs.filter(item => !delFields.includes(item.zdEn))
1099
- }
1100
-
1101
- },
1102
- getNewIndex() {
1103
- let min = 100
1104
- let szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs;
1105
- let value = 0;
1106
- szTaZdMbDTOs.filter(item => !item.systems).forEach(item => {
1107
- if (item.orders !== null && item.orders !== undefined) {
1108
- value = Math.max(value, item.orders)
1109
- }
1110
- })
1111
- let newIndex = Math.max(min, (value + 10));
1112
- return newIndex;
1113
- },
1114
- getBdEnv() {
1115
- getBdEnv({
1116
- success: res => {
1117
- this.isDev = res.content == "dev"
1118
- }
1119
- });
1120
- }
1121
- }
1122
- };
1123
- </script>
1
+ <template>
2
+ <div class="detail-wrap">
3
+ <el-form ref="editForm" :model="szTaMb">
4
+ <div class="d-header clearfix">
5
+ <div class="fl">
6
+ <i class="el-icon-info"/>
7
+ {{ dataId ? $t1('查看') : $t1('新增') }} 数据表定义模板
8
+ </div>
9
+ <div class="fr">
10
+ <el-button type="primary" plain class="button-sty" @click="$baseReload()" icon="el-icon-refresh-right">{{$t1('重置')}}
11
+ </el-button>
12
+ <el-button type="primary" class="button-sty" icon="el-icon-check" @click="saveData"
13
+ v-if="isDev && !szTaMb.systems">
14
+ 保存
15
+ </el-button>
16
+
17
+ <el-button type="success" class="button-sty" icon="el-icon-check"
18
+ @click="createModifyTable()" v-if="!szTaMb.systems"> 创建/更新数据表
19
+ </el-button>
20
+ </div>
21
+ </div>
22
+ <baseTabs>
23
+ <baseTabPane :label="$t1('基本信息')">
24
+ <template #default>
25
+ <table class="table-detail">
26
+ <tbody>
27
+ <tr>
28
+ <th>
29
+ <em class="f-red">*</em>
30
+ 实体名称
31
+ </th>
32
+ <td colspan="3">
33
+ <el-form-item prop="taEn" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
34
+ <el-input type="text" autocomplete="off" v-model="szTaMb.taEn" clearable/>
35
+ </el-form-item>
36
+ </td>
37
+ <th><em class="f-red">*</em>数据库表名</th>
38
+ <td colspan="3">
39
+ {{ szTaMb.taBm }}
40
+ </td>
41
+ </tr>
42
+ <tr>
43
+ <th><em class="f-red">*</em>表描述</th>
44
+ <td colspan="5">
45
+ <el-form-item prop="taCh" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
46
+ <el-input type="text" autocomplete="off" v-model="szTaMb.taCh" clearable/>
47
+ </el-form-item>
48
+ </td>
49
+ </tr>
50
+ <tr>
51
+ <th><em class="f-red">*</em>是否明细</th>
52
+ <td>
53
+ <el-form-item prop="taType" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
54
+ <el-radio-group v-model="szTaMb.taType">
55
+ <el-radio :label="1">是</el-radio>
56
+ <el-radio :label="0">否</el-radio>
57
+ </el-radio-group>
58
+ <!-- <el-select v-model="szTaMb.taType">
59
+ <el-option :value="0" label="否"></el-option>
60
+ <el-option :value="1" label="是"></el-option>
61
+ </el-select>-->
62
+ </el-form-item>
63
+ <!-- <el-checkbox label="是否明细" v-model="szTaMb.taType"></el-checkbox>-->
64
+ </td>
65
+ <th>
66
+ <em class="f-red" v-show="szTaMb.taType===1">*</em>
67
+ 所属主实体
68
+ </th>
69
+ <td colspan="3">
70
+ <el-form-item prop="sszstEn"
71
+ :rules="[{
72
+ required:szTaMb.taType===1,
73
+ trigger: ['blur', 'change']
74
+ }]">
75
+ <el-input
76
+ class="search-input"
77
+ max="200"
78
+ v-model="szTaMb.sszstEn"
79
+ @clear="
80
+ szTaMb.sszst = '';
81
+ $forceUpdate();
82
+ "
83
+ :disabled="szTaMb.taType==0"
84
+ v-el-readonly
85
+ clearable
86
+ >
87
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="showSzTaMbDialog = true"></i>
88
+ </el-input>
89
+ </el-form-item>
90
+ </td>
91
+ </tr>
92
+ <tr>
93
+ <th><em class="f-red">*</em>是否树结构</th>
94
+ <td>
95
+ <el-form-item prop="taRule" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
96
+ <el-radio-group v-model="szTaMb.taRule" @change="changeTaRule">
97
+ <el-radio :label="1">是</el-radio>
98
+ <el-radio :label="0">否</el-radio>
99
+ </el-radio-group>
100
+ </el-form-item>
101
+ </td>
102
+ <th><em class="f-red">*</em>数据范围</th>
103
+ <td colspan="3">
104
+ <el-form-item prop="dataRange" :rules="[{ required: true, trigger: ['blur', 'change'] }]">
105
+ <el-radio-group v-model="szTaMb.dataRange">
106
+ <el-radio :label="1">集团</el-radio>
107
+ <el-radio :label="0">当前企业</el-radio>
108
+ </el-radio-group>
109
+ </el-form-item>
110
+ </td>
111
+ </tr>
112
+ <tr>
113
+ <th>
114
+ <em class="f-red">*</em>
115
+ 表单分类
116
+ </th>
117
+ <td colspan="5">
118
+ <el-form-item prop="menuKindName"
119
+ :rules="[{
120
+ required:true,
121
+ trigger: ['blur', 'change']
122
+ }]">
123
+ <el-input
124
+ class="search-input"
125
+ max="200"
126
+ v-model="szTaMb.menuKindName"
127
+ @clear="
128
+ szTaMb.menuKindCode = '';
129
+ $forceUpdate();
130
+ "
131
+ v-el-readonly
132
+ clearable
133
+ >
134
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="showMenuKindDialog = true"></i>
135
+ </el-input>
136
+ </el-form-item>
137
+ </td>
138
+ </tr>
139
+ <tr>
140
+ <th>
141
+ 项目标签
142
+ </th>
143
+ <td colspan="7">
144
+ <projectTagView v-model="szTaMb.szTaMbTagDTOs" :readonly="true"></projectTagView>
145
+ </td>
146
+ </tr>
147
+ <tr>
148
+ <th>{{ $t1('创建人') }}</th>
149
+ <td>{{ szTaMb.createBy }}</td>
150
+ <th>{{ $t1('创建时间') }}</th>
151
+ <td>{{ szTaMb.createDate }}</td>
152
+ <th>{{ $t1('更新人') }}</th>
153
+ <td>{{ szTaMb.modifyBy }}</td>
154
+ <th>{{ $t1('更新时间') }}</th>
155
+ <td>{{ szTaMb.modifyDate }}</td>
156
+ </tr>
157
+ </tbody>
158
+ </table>
159
+ </template>
160
+ </baseTabPane>
161
+ <baseTabPane label="数据表字段明细">
162
+ <template #button>
163
+ <el-button class="button-sty" @click="addTaMbItems" icon="el-icon-plus">新增</el-button>
164
+ </template>
165
+ <template #default>
166
+ <div>
167
+ <vxe-grid
168
+ ref="table-szTaZdMb"
169
+ :data="szTaMb.szTaZdMbDTOs"
170
+ v-bind="productOption"
171
+ @resizable-change="$vxeTableUtil.onColumnWitchChange"
172
+ @custom="$vxeTableUtil.customHandle"
173
+ >
174
+ <template #zdType="{row}">
175
+ <el-select v-model="row.zdType" clearable :disabled="!!row.systems || !!row.relationZd">
176
+ <el-option value="Boolean" label="布尔"></el-option>
177
+ <el-option value="Integer" label="整数"></el-option>
178
+ <el-option value="Long" label="长整数"></el-option>
179
+ <el-option value="Decimal" label="精度小数"></el-option>
180
+ <el-option value="Money" label="金额"></el-option>
181
+ <el-option value="Text" label="文本"></el-option>
182
+ <el-option value="TextArea" label="长文本"></el-option>
183
+ <!-- <el-option value="Date" label="日期" ></el-option>-->
184
+ <el-option value="DateTime" label="日期时间"></el-option>
185
+ <el-option value="Reference" label="关联表"></el-option>
186
+ </el-select>
187
+ </template>
188
+ <template #referenceZd="{row, rowIndex, $table}">
189
+ <el-input
190
+ class="search-input"
191
+ v-model="row.referenceZd"
192
+ clearable
193
+ @clear="
194
+ $forceUpdate();
195
+ "
196
+ v-el-readonly
197
+ v-if="row.zdType=='Reference'"
198
+ >
199
+ <i slot="suffix" class="el-input__icon el-icon-search"
200
+ @click="openReferenceZdDialog(row, rowIndex, $table)"></i>
201
+ </el-input>
202
+ <template v-else>
203
+ {{ row.referenceZd }}
204
+ </template>
205
+ </template>
206
+
207
+ </vxe-grid>
208
+ </div>
209
+ <table class="table-detail">
210
+ <tbody>
211
+ <tr>
212
+ <th>
213
+ 表编码
214
+ </th>
215
+ <td colspan="7">
216
+ {{ szTaMb.taCode }}
217
+ </td>
218
+ </tr>
219
+ </tbody>
220
+ </table>
221
+ </template>
222
+ </baseTabPane>
223
+ </baseTabs>
224
+ </el-form>
225
+
226
+ <szTaMbDialog v-if="showSzTaMbDialog"
227
+ :visiable.sync="showSzTaMbDialog"
228
+ @confirm="confirmInsertSzTaMb"
229
+ :multi="false"
230
+ />
231
+ <itemSzTaMbDialog v-if="showItemSzTaMbDialog"
232
+ :visiable.sync="showItemSzTaMbDialog"
233
+ @confirm="confirmInsertItemSzTaMb" multi="false"/>
234
+ <MenuKindDialog v-if="showMenuKindDialog"
235
+ :visiable.sync="showMenuKindDialog"
236
+ @confirm="confirmInsertMenuKind"
237
+ :multi="false"
238
+ />
239
+
240
+ <el-dialog
241
+ title="关联表维护"
242
+ v-if="showReferenceZdDialog"
243
+ :visible.sync="showReferenceZdDialog"
244
+ :modal-append-to-body="false"
245
+ :close-on-click-modal="false"
246
+ :modal="false"
247
+ custom-class="dialog-style wf-dialog"
248
+ v-el-drag-dialog
249
+ v-el-dialog-center
250
+ >
251
+ <el-form>
252
+ <div id="containt">
253
+ <table class="table-detail">
254
+ <tbody>
255
+ <tr>
256
+ <th>
257
+ <span class="t">
258
+ 关联表
259
+ </span>
260
+ </th>
261
+ <td>
262
+ <el-form-item label="">
263
+ <el-input
264
+ class="search-input"
265
+ max="200"
266
+ v-model="referenceEntity"
267
+ @clear="
268
+ referenceKey = null;
269
+ referenceShowFields = [];
270
+ $forceUpdate();
271
+ "
272
+ v-el-readonly
273
+ clearable
274
+ >
275
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="showEntityDialog = true"></i>
276
+ </el-input>
277
+ </el-form-item>
278
+ </td>
279
+ </tr>
280
+ <tr>
281
+ <th>
282
+ <span class="t">
283
+ 关联字段
284
+ </span>
285
+ </th>
286
+ <td>
287
+ <el-form-item label="">
288
+ <el-input
289
+ class="search-input"
290
+ max="200"
291
+ v-model="referenceKey"
292
+ @clear="
293
+ referenceKey = null;
294
+ "
295
+ v-el-readonly
296
+ clearable
297
+ >
298
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="showEntityFieldDialog1 = true"></i>
299
+ </el-input>
300
+ </el-form-item>
301
+ </td>
302
+ </tr>
303
+ <tr>
304
+ <th>
305
+ <span class="t">
306
+ 显示字段
307
+ </span>
308
+ </th>
309
+ <td>
310
+ <el-form-item label="">
311
+ <el-input
312
+ class="search-input"
313
+ max="200"
314
+ :value="referenceShowFields.join(',')"
315
+ @clear="
316
+ referenceShowFields = [];
317
+ "
318
+ v-el-readonly
319
+ clearable
320
+ >
321
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="showEntityFieldDialog2 = true"></i>
322
+ </el-input>
323
+ </el-form-item>
324
+ </td>
325
+ </tr>
326
+ </tbody>
327
+ </table>
328
+ </div>
329
+ </el-form>
330
+ <span slot="footer" class="dialog-footer">
331
+ <el-button type="primary" plain class="button-sty" @click="showReferenceZdDialog = false">
332
+ <i class="el-icon-close el-icon"></i>
333
+ {{ $t1('取 消') }}
334
+ </el-button>
335
+ <el-button type="primary" @click="confirmReferenceZdDialog" class="button-sty">
336
+ <i class="el-icon-check el-icon"></i>
337
+ {{ $t1('确 定') }}
338
+ </el-button>
339
+ </span>
340
+ </el-dialog>
341
+
342
+ <szTaMbDialog v-if="showEntityDialog"
343
+ :visiable.sync="showEntityDialog"
344
+ @confirm="confirmEntityDialog"
345
+ :multi="false"
346
+ />
347
+
348
+ <zdDialog v-if="showEntityFieldDialog1"
349
+ :visiable.sync="showEntityFieldDialog1"
350
+ @confirm="confirmEntityFieldDialog1"
351
+ :taBm="referenceEntity"
352
+ :multi="false"
353
+ />
354
+ <zdDialog v-if="showEntityFieldDialog2"
355
+ :visiable.sync="showEntityFieldDialog2"
356
+ @confirm="confirmEntityFieldDialog2"
357
+ :taBm="referenceEntity"
358
+ :multi="true"
359
+ />
360
+ <preformDialog v-if="showPreformDialog" :visiable.sync="showPreformDialog"
361
+ @confirm="confirmPreformDialog"></preformDialog>
362
+ </div>
363
+ </template>
364
+
365
+ <script>
366
+ import szTaMbDialog from '../../../../views/bd/setting/table_model/dialog.vue';
367
+ import itemSzTaMbDialog from '../../../../views/bd/setting/table_model/dialog.vue';
368
+ import MenuKindDialog from '../../../../views/bd/setting/menu_kind/dialog.vue';
369
+ import zdDialog from '../../../../views/bd/setting/table_model/zdDialog.vue';
370
+ import {getBdEnv} from "../../../../api/user";
371
+ import projectTagView from "../../../../components/projectTag/view.vue";
372
+ import preformDialog from "@base/views/bd/setting/form_template/preformDialog.vue";
373
+
374
+ export default {
375
+ name: 'szTaMbEdit',
376
+ props: {
377
+ _dataId: [String, Number],
378
+ currentFormType: Object
379
+ },
380
+ components: {
381
+ preformDialog,
382
+ projectTagView,
383
+ szTaMbDialog,
384
+ itemSzTaMbDialog,
385
+ MenuKindDialog,
386
+ zdDialog
387
+ },
388
+ data() {
389
+ return {
390
+ tabIndex: 0,
391
+ isEdit: false,
392
+ dataId: '',
393
+ szTaMb: {
394
+ enabled: true,
395
+ taType: 0,
396
+ szTaZdMbDTOs: [],
397
+ menuKindName: null,
398
+ menuKindCode: null,
399
+ taRule: 0,
400
+ dataRange: 0,
401
+ szTaMbTagDTOs: []
402
+ },
403
+ treeDefaultZds: [],
404
+ productOption: {},
405
+ showSzTaMbDialog: false,
406
+ showItemSzTaMbDialog: false,
407
+ showMenuKindDialog: false,
408
+ productCategoryCodes: [],
409
+ zdEnIndex: '',
410
+
411
+ referenceEntity: null,
412
+ referenceKey: null,
413
+ referenceShowFields: null,
414
+ currentIndex: 0,
415
+ showReferenceZdDialog: false,
416
+
417
+ showEntityDialog: false,
418
+ showEntityFieldDialog1: false,
419
+ showEntityFieldDialog2: false,
420
+ referenceShowRows: [],
421
+ createdTableColumnStr: null,
422
+ createdTableColumnArray: [],
423
+ isDev: true,
424
+ showPreformDialog: false
425
+
426
+ };
427
+ },
428
+ created() {
429
+ if (this._dataId && !isNaN(this._dataId)) {
430
+ this.dataId = this._dataId;
431
+ } else {
432
+ this.szTaMb.menuKindName = this.currentFormType?.name || null;
433
+ this.szTaMb.menuKindCode = this.currentFormType?.menuKindCode || null;
434
+ }
435
+ },
436
+ mounted() {
437
+ this.getBdEnv();
438
+ this.getTreeDefaultZds();
439
+ this.initTableProduct();
440
+ this.getData();
441
+ },
442
+ methods: {
443
+ getData(callback) {
444
+ if (this.dataId && !isNaN(this.dataId)) {
445
+ this.isEdit = true;
446
+ this.$http({
447
+ url: USER_PREFIX + `/szTaMb/get`,
448
+ method: `post`,
449
+ data: {
450
+ id: this.dataId
451
+ },
452
+ isLoading: true,
453
+ modalStrictly: true,
454
+ success: res => {
455
+ if (!callback) {
456
+ let szTaMb = res.objx || {};
457
+ szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs;
458
+ szTaMb.attachmentDTOs = this.szTaMb.attachmentDTOs;
459
+ szTaMb.oplogDTOs = this.szTaMb.oplogDTOs;
460
+ this.szTaMb = szTaMb;
461
+
462
+ this.getCreatedTableColumns();
463
+ } else {
464
+ callback(res)
465
+ }
466
+
467
+ }
468
+ });
469
+ }
470
+ },
471
+ updateStatus(status) {
472
+ let text;
473
+ if (status === 3) {
474
+ text = '您确定要作废吗?';
475
+ }
476
+ this.$baseConfirm(text).then(() => {
477
+ this.$http({
478
+ url: USER_PREFIX + `/szTaMb/updateStatus`,
479
+ method: `post`,
480
+ data: {
481
+ id: this.dataId,
482
+ status: status
483
+ },
484
+ isLoading: true,
485
+ success: res => {
486
+ this.$message({
487
+ message: res.content,
488
+ type: 'success',
489
+ duration: 500,
490
+ onClose: t => {
491
+ this.$baseReload();
492
+ }
493
+ });
494
+ }
495
+ });
496
+ });
497
+ },
498
+ saveData() {
499
+ this.$refs.editForm.$baseValidate(valid => {
500
+ if (valid) {
501
+ const szTaZdMbDTOs = this.$refs['table-szTaZdMb'].getTableData().fullData;
502
+ if (szTaZdMbDTOs.length === 0) {
503
+ this.$baseAlert('明细不能为空!');
504
+ return false;
505
+ }
506
+ this.szTaMb.szTaZdMbDTOs = szTaZdMbDTOs;
507
+ this.openPreformDialog();
508
+
509
+ }
510
+ });
511
+ },
512
+ saveDataHandle(preformData) {
513
+ let formData = {
514
+ ...this.szTaMb,
515
+ logContent: preformData.logContent
516
+ };
517
+ // const formData = this.szTaMb;
518
+ // formData.szTaZdMbDTOs = szTaZdMbDTOs;
519
+
520
+ var url = USER_PREFIX + (this.isEdit ? `/szTaMb/update` : `/szTaMb/save`);
521
+ this.$http({
522
+ url: url,
523
+ method: `post`,
524
+ data: formData,
525
+ isLoading: true,
526
+ success: res => {
527
+ this.$message({
528
+ message: res.content,
529
+ type: 'success',
530
+ duration: 500,
531
+ onClose: t => {
532
+ if (this.isEdit) {
533
+ this.$baseReload();
534
+ } else {
535
+ this.$baseReload({
536
+ updateParam: {
537
+ _dataId: res.objx
538
+ }
539
+ });
540
+ }
541
+ }
542
+ });
543
+ }
544
+ });
545
+ },
546
+ openPreformDialog() {
547
+ this.showPreformDialog = true;
548
+ },
549
+ confirmPreformDialog(preformData) {
550
+ this.saveDataHandle(preformData);
551
+ },
552
+ initTableProduct() {
553
+ const tableOption = {
554
+ vue: this,
555
+ tableRef: 'table-szTaZdMb',
556
+ tableName: 'edit-szTaMb-szTaZdMb',
557
+ config: {
558
+ maxHeight: "600px"
559
+ },
560
+ columns: [
561
+ {type: 'checkbox', fixed: 'left', width: 48, resizable: false},
562
+ {
563
+ title: '实体字段名称',
564
+ field: 'zdEn',
565
+ width: 150,
566
+ fixed: 'left',
567
+ slots: {
568
+ default: ({row, rowIndex, $table}) => {
569
+ let disabled = !!row.systems || !!row.relationZd;
570
+ if (!disabled) {
571
+ return [
572
+ <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.zdEn'}
573
+ rules={[{required: true, trigger: ['blur', 'change']}]}>
574
+ <el-input v-model={row.zdEn} clearable/>
575
+ </el-form-item>
576
+ ];
577
+ } else {
578
+ let style = !!row.relationZd ? "margin-left:20px" : "";
579
+ return [
580
+ <div style={style}>{row.zdEn}</div>
581
+ ]
582
+ }
583
+ }
584
+ }
585
+ },
586
+ {title: '数据库表字段名', field: 'taZdMc', width: 150, fixed: 'left',},
587
+ {
588
+ title: '数据库表字段是否已创建',
589
+ field: 'isFieldCreated',
590
+ width: 200,
591
+ slots: {
592
+ default: ({row, rowIndex, $table}) => {
593
+ let taZdMc = row.taZdMc;
594
+ let createdTableColumnArray = this.createdTableColumnArray;
595
+ return taZdMc && createdTableColumnArray.includes(taZdMc) ? "是" : "_";
596
+ }
597
+ }
598
+ },
599
+ {
600
+ title: '字段描述',
601
+ field: 'zdCh',
602
+ width: 150,
603
+ slots: {
604
+ default: ({row, rowIndex, $table}) => {
605
+ return [
606
+ <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.zdCh'}
607
+ rules={[{required: true, trigger: ['blur', 'change']}]}>
608
+ <el-input v-model={row.zdCh} clearable disabled={!!row.systems}/>
609
+ </el-form-item>
610
+ ];
611
+ }
612
+ }
613
+ },
614
+ {
615
+ title: '字段类型', field: 'zdType', width: 150,
616
+ slots: {
617
+ default: 'zdType'
618
+ }
619
+ },
620
+ {
621
+ title: '关联字段', field: 'referenceZd', width: 250,
622
+ slots: {
623
+ default: 'referenceZd'
624
+ }
625
+ },
626
+ // {
627
+ // title: '对应表名',
628
+ // field: 'dybm',
629
+ // width: 150,
630
+ // slots: {
631
+ // default: ({row, rowIndex, $table}) => {
632
+ // return [
633
+ // <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.dybm'}
634
+ // rules={[{required: row.taType=='Reference', trigger: ['blur', 'change']}]}>
635
+ //
636
+ // <el-input v-show={row.taType=='Reference'}
637
+ // class="search-input"
638
+ // max="200"
639
+ // v-model={row.dybm}
640
+ // onclear={() => {
641
+ // row.dybm = '';
642
+ // this.$forceUpdate();
643
+ // }}
644
+ // v-el-readonly
645
+ // clearable
646
+ // >
647
+ // <i v-show={this.szTaMb.id==null} slot="suffix" class="el-input__icon el-icon-search" onClick={() => {
648
+ // this.zdEnIndex = rowIndex;
649
+ // this.showItemSzTaMbDialog = true;
650
+ // }} />
651
+ // </el-input>
652
+ // </el-form-item>
653
+ // ];
654
+ // }
655
+ // }
656
+ // },
657
+ {
658
+ title: '字段类型对应的默认值',
659
+ field: 'zdTypeValues',
660
+ width: 150,
661
+ slots: {
662
+ default: ({row, rowIndex, $table}) => {
663
+ let disabled = !!row.systems || !!row.relationZd;
664
+ return [
665
+ <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.zdTypeValues'}
666
+ rules={[{required: false, trigger: ['blur', 'change']}]}>
667
+ <el-input v-model={row.zdTypeValues} clearable disabled={disabled}/>
668
+ </el-form-item>
669
+ ];
670
+ }
671
+ }
672
+ },
673
+ {
674
+ title: '是否必填项',
675
+ field: 'required',
676
+ width: 140,
677
+ slots: {
678
+ default: ({row, $table, rowIndex}) => {
679
+ let disabled = !!row.systems || !!row.relationZd;
680
+ return [
681
+ <el-checkbox v-model={row.required} disabled={disabled}/>
682
+ ];
683
+ }
684
+ }
685
+ },
686
+ {
687
+ title: this.$t1('是否启用'),
688
+ field: 'enabled',
689
+ width: 120,
690
+ slots: {
691
+ default: ({row, $table, rowIndex}) => {
692
+ let disabled = !!row.systems || !!row.relationZd;
693
+ return [
694
+ <el-checkbox v-model={row.enabled} disabled={disabled}/>
695
+ ];
696
+ }
697
+ }
698
+ },
699
+
700
+ {
701
+ title: '是否自动生成编码',
702
+ field: 'generateCode',
703
+ width: 180,
704
+ slots: {
705
+ default: ({row, $table, rowIndex}) => {
706
+ let disabled = !!row.systems || !!row.relationZd;
707
+ return [
708
+ <el-checkbox v-model={row.generateCode} disabled={disabled}/>
709
+ ];
710
+ }
711
+ }
712
+ },
713
+ {
714
+ title: '编码类型',
715
+ field: 'codeType',
716
+ width: 150,
717
+ slots: {
718
+ default: ({row, rowIndex, $table}) => {
719
+ let disabled = !!row.systems || !!row.relationZd;
720
+ return [
721
+ <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.codeType'}
722
+ rules={[{required: false, trigger: ['blur', 'change']}]}>
723
+ <el-input v-model={row.codeType} clearable disabled={disabled}/>
724
+ </el-form-item>
725
+ ];
726
+ }
727
+ }
728
+ },
729
+ {
730
+ title: this.$t1('序号'),
731
+ field: 'orders',
732
+ width: 150,
733
+ slots: {
734
+ default: ({row, rowIndex, $table}) => {
735
+ return [
736
+ <el-form-item prop={'szTaZdMbDTOs.' + rowIndex + '.orders'}
737
+ rules={[{required: false, trigger: ['blur', 'change']}]}>
738
+ <base-input-number v-model={row.orders} disabled={!!row.systems} onchange={() => {
739
+ this.changeOrders(row);
740
+ }}/>
741
+ </el-form-item>
742
+ ];
743
+ }
744
+ }
745
+ },
746
+ {
747
+ width: 47,
748
+ fixed: 'right',
749
+ title: '',
750
+ sortable: false,
751
+ slots: {
752
+ default: ({row, rowIndex, $table}) => {
753
+ let taZdMc = row.taZdMc;
754
+ let createdTableColumnArray = this.createdTableColumnArray || [];
755
+ let hasCreated = !!taZdMc && createdTableColumnArray.includes(taZdMc)
756
+ // let style = !row.relationZd ? "margin-left:20px" : "";
757
+ if (!row.systems && !hasCreated && !row.relationZd) {
758
+ //非内置,未创建字段,非关联表带出来的字段
759
+ return [
760
+ <a
761
+ href="javascript:void(0);"
762
+ class="a-link"
763
+ onclick={() => {
764
+ // this.szTaMb.szTaZdMbDTOs.splice(rowIndex, 1);
765
+ this.deleteItem(row, rowIndex);
766
+ }}
767
+ >
768
+ <el-tooltip enterable={false} effect="dark" content="删除" placement="top"
769
+ popper-class="tooltip-skin">
770
+ <i class="el-icon-delete"/>
771
+ </el-tooltip>
772
+ </a>
773
+ ];
774
+ }
775
+ }
776
+ }
777
+ }
778
+ ]
779
+ };
780
+ this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
781
+ this.productOption = opts;
782
+ });
783
+ if (this.dataId) {
784
+ this.$http({
785
+ url: USER_PREFIX + `/szTaMb/getSzTaZdMbs`,
786
+ method: `post`,
787
+ data: {
788
+ id: this.dataId
789
+ },
790
+ isLoading: true,
791
+ modalStrictly: true,
792
+ success: res => {
793
+ this.szTaMb.szTaZdMbDTOs = res.objx || [];
794
+ }
795
+ });
796
+ }
797
+ },
798
+ addTaMbItems() {
799
+ // let tacitly = true;
800
+ // if (this.customer.szTaZdMbDTOs.length > 0) {
801
+ // tacitly = false;
802
+ // }
803
+ // this.customer.szTaZdMbDTOs.push({tacitly: tacitly});
804
+ let newIndex = this.getNewIndex();
805
+ this.szTaMb.szTaZdMbDTOs.push({zdType: 'Text', enabled: true, orders: newIndex, generateCode: false});
806
+ },
807
+ deleteItem(row, rowIndex) {
808
+ let referenceZd = row.referenceZd;
809
+ this.szTaMb.szTaZdMbDTOs.splice(rowIndex, 1);
810
+ if (referenceZd) {
811
+ this.szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs.filter(item => {
812
+ return referenceZd !== item.relationZd
813
+ })
814
+ }
815
+ },
816
+ confirmInsertSzTaMb(rows) {
817
+ if (rows.length > 0) {
818
+ let row = rows[0];
819
+ this.$set(this.szTaMb, 'sszst', row.taCode);
820
+ this.$set(this.szTaMb, 'sszstEn', row.taEn);
821
+ }
822
+ },
823
+ confirmInsertItemSzTaMb(rows) {
824
+ if (rows.length > 0) {
825
+ let row = rows[0];
826
+ let szTaZdMbDTO = this.szTaMb.szTaZdMbDTOs[this.zdEnIndex];
827
+ this.$set(szTaZdMbDTO, 'zdEn', row.taBm + '.' + szTaZdMbDTO.zdEn);
828
+ this.$set(szTaZdMbDTO, 'dybm', row.taEn);
829
+ }
830
+ },
831
+ confirmInsertMenuKind(rows) {
832
+ if (rows.length > 0) {
833
+ let row = rows[0];
834
+ this.$set(this.szTaMb, 'menuKindCode', row.menuKindCode);
835
+ this.$set(this.szTaMb, 'menuKindName', row.name);
836
+ }
837
+ },
838
+ getNewData(callback) {
839
+ this.getData((res0) => {
840
+ let szTaMb = res0.objx;
841
+ this.$http({
842
+ url: USER_PREFIX + `/szTaMb/getSzTaZdMbs`,
843
+ method: `post`,
844
+ data: {
845
+ id: this.dataId
846
+ },
847
+ isLoading: true,
848
+ modalStrictly: true,
849
+ success: res1 => {
850
+ szTaMb.szTaZdMbDTOs = res1.objx || [];
851
+ callback(szTaMb)
852
+ }
853
+ });
854
+ });
855
+ },
856
+ createModifyTable() {
857
+ let text = '您确定要创建/更新数据表吗?';
858
+ this.$baseConfirm(text).then(() => {
859
+ this.getNewData((data) => {
860
+ this.$http({
861
+ url: "/" + this.szTaMb.serviceName + `/dbTable/createUpdateTable`,
862
+ method: `post`,
863
+ data: data,
864
+ isLoading: true,
865
+ success: res => {
866
+ this.$message({
867
+ message: res.content,
868
+ type: 'success',
869
+ duration: 500,
870
+ onClose: t => {
871
+ this.$baseReload();
872
+ }
873
+ });
874
+ }
875
+ });
876
+
877
+ });
878
+ });
879
+ },
880
+ openReferenceZdDialog(row, rowIndex, $table) {
881
+ let referenceZd = row.referenceZd;
882
+ let referenceEntity = null;
883
+ let referenceKey = null;
884
+ let referenceShowFields = [];
885
+
886
+ if (referenceZd) {
887
+ let index = referenceZd.indexOf(".")
888
+ referenceEntity = referenceZd.substring(0, index);
889
+ referenceKey = referenceZd.substr(index + 1);
890
+ referenceShowFields = this.szTaMb.szTaZdMbDTOs.filter(item => {
891
+ return referenceZd == item.relationZd
892
+ }).map(item => {
893
+ return item.referenceZd.substr(index + 1)
894
+ });
895
+ }
896
+
897
+ this.referenceEntity = referenceEntity;
898
+ this.referenceKey = referenceKey;
899
+ this.referenceShowFields = referenceShowFields;
900
+
901
+ this.referenceShowRows = referenceShowFields.map(item => {
902
+ return {
903
+ taZdMc: item
904
+ }
905
+ });
906
+
907
+ this.currentIndex = rowIndex;
908
+ this.showReferenceZdDialog = true;
909
+ },
910
+ confirmReferenceZdDialog() {
911
+ let row = this.szTaMb.szTaZdMbDTOs[this.currentIndex];
912
+ let oldReferenceZd = row.referenceZd;
913
+
914
+ let referenceEntity = this.referenceEntity;
915
+ let referenceZd = referenceEntity + "." + this.referenceKey;
916
+ let referenceShowFields = this.referenceShowFields;
917
+ let keys = referenceShowFields.map(item => {
918
+ return referenceEntity + "." + item;
919
+ })
920
+ if (oldReferenceZd) {
921
+ let index0 = oldReferenceZd.indexOf(".")
922
+ let oldReferenceEntity = oldReferenceZd.substring(0, index0);
923
+ let delIndex = [];
924
+ if (referenceEntity != oldReferenceEntity) {
925
+ this.szTaMb.szTaZdMbDTOs.forEach((item, index) => {
926
+ if (item.relationZd && oldReferenceZd == item.relationZd) {
927
+ delIndex.push(index);
928
+ }
929
+ })
930
+ }/*else if (oldReferenceZd != referenceZd) {
931
+ this.szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs.forEach((item, index) => {
932
+ if (oldReferenceZd == item.relationZd) {
933
+ delIndex.push(index)
934
+ }
935
+ })
936
+ }*/ else {
937
+ this.szTaMb.szTaZdMbDTOs.forEach((item, index) => {
938
+ if (oldReferenceZd == item.relationZd && !keys.includes(item.referenceZd)) {
939
+ delIndex.push(index)
940
+ }
941
+ })
942
+ }
943
+ if (delIndex.length) {
944
+ /*this.szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs.filter((item, index) => {
945
+ return !delIndex.includes(index);
946
+ })*/
947
+ delIndex.reverse().forEach(i => {
948
+ this.szTaMb.szTaZdMbDTOs.splice(i, 1)
949
+ })
950
+ }
951
+ }
952
+
953
+ /*let addReferenceShowFields = referenceShowFields.filter((item, index) => {
954
+ return !keys.includes(item)
955
+ })*/
956
+ let oldKeys = this.szTaMb.szTaZdMbDTOs.filter(item => referenceZd == item.relationZd).map(item => item.referenceZd)
957
+ let addReferenceShowFields = referenceShowFields.filter((item, index) => {
958
+ return !oldKeys.includes(referenceEntity + "." + item)
959
+ })
960
+
961
+ let addIndex = -1;
962
+ let lastIndex = this.szTaMb.szTaZdMbDTOs.findLastIndex(item => {
963
+ return referenceZd == item.relationZd
964
+ });
965
+ addIndex = lastIndex >= 0 ? (lastIndex + 1) : (this.currentIndex + 1);
966
+
967
+ let referenceShowRows = this.referenceShowRows;
968
+
969
+ let addReferenceShowRows = referenceShowRows.filter((item, index) => {
970
+ return addReferenceShowFields.includes(item.taZdMc)
971
+ })
972
+ addReferenceShowRows.forEach((item, index) => {
973
+ let rIndex = addIndex + index;
974
+ let orders = (row.orders || 0) + index + 1;
975
+ let newItem = {
976
+ zdEn: "ref_" + item.zdEn,
977
+ taZdMc: null,
978
+ zdCh: item.zdCh,
979
+ zdType: "Text",
980
+ referenceZd: referenceEntity + "." + item.taZdMc,
981
+ relationZd: referenceZd,
982
+ zdTypeValues: null,
983
+ required: false,
984
+ enabled: true,
985
+ requiredMsg: null,
986
+ regexp: null,
987
+ regexpMsg: null,
988
+ orders
989
+ };
990
+ this.szTaMb.szTaZdMbDTOs.splice(rIndex, 0, newItem);
991
+ });
992
+ row.referenceZd = referenceZd
993
+ this.handleReferenceOrders(row);
994
+ this.showReferenceZdDialog = false;
995
+ },
996
+ changeOrders(row) {
997
+ this.handleReferenceOrders(row);
998
+ },
999
+ handleReferenceOrders(row) {
1000
+ let referenceZd = row.referenceZd;
1001
+ let orders = row.orders || 0;
1002
+ if (referenceZd) {
1003
+ this.szTaMb.szTaZdMbDTOs.filter(item => referenceZd === item.relationZd).forEach((item, index) => {
1004
+ if (referenceZd === item.relationZd) {
1005
+ item.orders = orders + index + 1;
1006
+ }
1007
+ })
1008
+ }
1009
+ },
1010
+ confirmEntityDialog(rows) {
1011
+ if (rows.length) {
1012
+ let row = rows[0];
1013
+ if (this.referenceEntity != row.taBm) {
1014
+ this.referenceKey = null;
1015
+ this.referenceShowFields = [];
1016
+ }
1017
+ this.referenceEntity = row.taBm;
1018
+ }
1019
+ },
1020
+ confirmEntityFieldDialog1(rows) {
1021
+ if (rows.length) {
1022
+ let row = rows[0];
1023
+ this.referenceKey = row.taZdMc;
1024
+ }
1025
+ },
1026
+ confirmEntityFieldDialog2(rows) {
1027
+ if (rows.length) {
1028
+ this.referenceShowRows = rows;
1029
+ this.referenceShowFields = rows.map(row => {
1030
+ return row.taZdMc;
1031
+ });
1032
+ }
1033
+ },
1034
+ getCreatedTableColumns() {
1035
+ if (!this.szTaMb.taBm) return;
1036
+ this.$http({
1037
+ url: "/" + this.szTaMb.serviceName + "/dbTable/getTableColumns",
1038
+ method: `post`,
1039
+ data: {
1040
+ stringOne: this.szTaMb.taBm
1041
+ },
1042
+ isLoading: true,
1043
+ modalStrictly: true,
1044
+ success: res => {
1045
+ if (res.objx) {
1046
+ this.createdTableColumnStr = res.objx;
1047
+ let createdTableColumnArray = res.objx.split(",").filter(item => !!item);
1048
+ this.createdTableColumnArray = createdTableColumnArray;
1049
+ }
1050
+ }
1051
+ });
1052
+ },
1053
+ getTreeDefaultZds() {
1054
+ this.$http({
1055
+ url: USER_PREFIX + `/szTaMb/getTreeDefaultZds`,
1056
+ method: `post`,
1057
+ data: {},
1058
+ isLoading: true,
1059
+ modalStrictly: true,
1060
+ success: res => {
1061
+ let rows = res.objx || []
1062
+ this.treeDefaultZds = rows
1063
+ }
1064
+ });
1065
+ },
1066
+ hasFieldCreated(row) {
1067
+ let taZdMc = row.taZdMc;
1068
+ let createdTableColumnArray = this.createdTableColumnArray || [];
1069
+ let hasCreated = !!taZdMc && createdTableColumnArray.includes(taZdMc)
1070
+ return hasCreated;
1071
+ },
1072
+ changeTaRule(val) {
1073
+ let treeDefaultZds = this.$baseLodash.cloneDeep(this.treeDefaultZds);
1074
+ let szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs;
1075
+ if (val == 1) {
1076
+ let zdEns = szTaZdMbDTOs.filter(item => !!item.zdEn).map(item => item.zdEn);
1077
+ if (zdEns.length) {
1078
+ treeDefaultZds = treeDefaultZds.filter(item => {
1079
+ return !zdEns.includes(item.zdEn);
1080
+ })
1081
+ }
1082
+ let newIndex = this.getNewIndex();
1083
+ treeDefaultZds.forEach((item, index) => {
1084
+ item.orders = newIndex + index;
1085
+ })
1086
+ szTaZdMbDTOs.push(...treeDefaultZds);
1087
+ } else {
1088
+ let zdEns = szTaZdMbDTOs.filter(item => !!item.zdEn).map(item => item.zdEn);
1089
+ let createdFields = szTaZdMbDTOs.filter(item => {
1090
+ return !!item.zdEn && this.hasFieldCreated(item)
1091
+ }).map(item => item.zdEn);
1092
+ if (zdEns.length) {
1093
+ treeDefaultZds = treeDefaultZds.filter(item => {
1094
+ return !createdFields.includes(item.zdEn) && zdEns.includes(item.zdEn);
1095
+ })
1096
+ }
1097
+ let delFields = treeDefaultZds.map(item => item.zdEn);
1098
+ this.szTaMb.szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs.filter(item => !delFields.includes(item.zdEn))
1099
+ }
1100
+
1101
+ },
1102
+ getNewIndex() {
1103
+ let min = 100
1104
+ let szTaZdMbDTOs = this.szTaMb.szTaZdMbDTOs;
1105
+ let value = 0;
1106
+ szTaZdMbDTOs.filter(item => !item.systems).forEach(item => {
1107
+ if (item.orders !== null && item.orders !== undefined) {
1108
+ value = Math.max(value, item.orders)
1109
+ }
1110
+ })
1111
+ let newIndex = Math.max(min, (value + 10));
1112
+ return newIndex;
1113
+ },
1114
+ getBdEnv() {
1115
+ getBdFlag({
1116
+ success: res => {
1117
+ this.isDev = res.objx == 1
1118
+ }
1119
+ });
1120
+ }
1121
+ }
1122
+ };
1123
+ </script>