vue2-client 1.2.28 → 1.2.29

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 (69) hide show
  1. package/CHANGELOG.md +56 -56
  2. package/package.json +2 -1
  3. package/src/base-client/all.js +57 -57
  4. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +272 -174
  5. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +2 -3
  6. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +1 -2
  7. package/src/base-client/components/common/ScrollList/SrcollList.vue +113 -0
  8. package/src/base-client/components/common/ScrollList/index.js +3 -0
  9. package/src/base-client/components/common/XAddForm/XAddForm.vue +1 -1
  10. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +315 -315
  11. package/src/base-client/components/common/XAddNativeForm/index.js +3 -3
  12. package/src/base-client/components/common/XAddNativeForm/index.md +56 -56
  13. package/src/base-client/components/common/XForm/XForm.vue +1 -1
  14. package/src/base-client/components/common/XForm/XFormItem.vue +1 -1
  15. package/src/base-client/components/common/XFormTable/XFormTable.vue +1 -2
  16. package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +1 -2
  17. package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +1 -2
  18. package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +1 -2
  19. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +1 -1
  20. package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +1 -2
  21. package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +1 -2
  22. package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +1 -3
  23. package/src/base-client/components/iot/LogDetailsView/LogDetailsView.vue +1 -2
  24. package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +1 -2
  25. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +1 -1
  26. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +1 -2
  27. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +1 -2
  28. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +1 -2
  29. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +1 -2
  30. package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +1 -2
  31. package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +1 -2
  32. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +1 -2
  33. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +1 -2
  34. package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +1 -2
  35. package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +844 -846
  36. package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +1 -2
  37. package/src/base-client/components/ticket/TicketSubmitSuccessView/TicketSubmitSuccessView.vue +528 -529
  38. package/src/base-client/plugins/AppData.js +1 -2
  39. package/src/base-client/plugins/GetLoginInfoService.js +45 -14
  40. package/src/components/exception/ExceptionPage.vue +1 -1
  41. package/src/config/CreateQueryConfig.js +40 -0
  42. package/src/layouts/ComponentLayoutOne.vue +0 -1
  43. package/src/layouts/SinglePageView.vue +1 -1
  44. package/src/layouts/header/HeaderNotice.vue +1 -1
  45. package/src/pages/report/ReportTableHome.vue +1 -1
  46. package/src/pages/resourceManage/depListManage.vue +23 -0
  47. package/src/pages/resourceManage/funListManage.vue +23 -0
  48. package/src/pages/resourceManage/index.js +15 -0
  49. package/src/pages/resourceManage/orgListManage.vue +98 -0
  50. package/src/pages/resourceManage/resourceManageMain.vue +37 -34
  51. package/src/pages/resourceManage/roleListManage.vue +23 -0
  52. package/src/pages/resourceManage/staffListManage.vue +23 -0
  53. package/src/pages/system/ticket/index.vue +437 -438
  54. package/src/pages/system/ticket/submitTicketSuccess.vue +1 -2
  55. package/src/services/api/EmployeeDetailsViewApi.js +16 -16
  56. package/src/services/api/common.js +10 -0
  57. package/src/services/api/index.js +39 -0
  58. package/src/services/{api.js → apiService.js} +0 -0
  59. package/src/services/user.js +1 -1
  60. package/src/store/modules/account.js +2 -2
  61. package/src/utils/indexedDB.js +1 -1
  62. package/src/utils/request.js +197 -197
  63. package/src/utils/routerUtil.js +1 -13
  64. package/src/utils/util.js +12 -0
  65. package/yarn.lock +13634 -0
  66. package/src/base-client/components/iot/DataAnalysisViewGD/DataAnalysisViewGD.vue +0 -549
  67. package/src/base-client/components/iot/DataAnalysisViewGD/WindowTemplate/WindowInfotemp.vue +0 -99
  68. package/src/base-client/components/iot/DataAnalysisViewGD/WindowTemplate/index.js +0 -3
  69. package/src/base-client/components/iot/DataAnalysisViewGD/index.js +0 -3
@@ -16,7 +16,7 @@
16
16
  :wrapper-col="wrapperCol"
17
17
  >
18
18
  <a-form-model-item label="查询主表名" prop="tableName">
19
- <a-input v-model="form.tableName" placeholder="查询用的主表+别名,用空格隔开,如:t_userfiles u" />
19
+ <a-input v-model="form.tableName" placeholder="查询用的主表+别名,用空格隔开,如:t_userfiles u"/>
20
20
  </a-form-model-item>
21
21
  <a-form-model-item label="预设关联表" prop="joinArray">
22
22
  <a-popover title="说明" placement="right">
@@ -30,14 +30,22 @@
30
30
  </a-input-group>
31
31
  <a-input-group compact style="width: 400px;">
32
32
  <a-input value="ui" style="width: 20%" placeholder="表别名" readOnly/>
33
- <a-input value="t_userinfo ui on i.f_userinfo_id = ui.f_userinfo_id" style="width: 80%" placeholder="关联条件" readOnly/>
33
+ <a-input
34
+ value="t_userinfo ui on i.f_userinfo_id = ui.f_userinfo_id"
35
+ style="width: 80%"
36
+ placeholder="关联条件"
37
+ readOnly/>
34
38
  </a-input-group>
35
39
  </template>
36
40
  <a-button type="primary" @click="addJoinItem()">增加</a-button>
37
41
  </a-popover>
38
42
  <div v-for="(itemObj, index) in joinArray" :key="index">
39
43
  <a-input-group compact>
40
- <a-input @change="changeJoinArray()" v-model="itemObj.key" style="width: 20%;position: relative;bottom: 1px;" placeholder="表别名" />
44
+ <a-input
45
+ @change="changeJoinArray()"
46
+ v-model="itemObj.key"
47
+ style="width: 20%;position: relative;bottom: 1px;"
48
+ placeholder="表别名"/>
41
49
  <a-input @change="changeJoinArray()" v-model="itemObj.value" style="width: 80%" placeholder="关联条件">
42
50
  <a-icon slot="addonAfter" type="close" @click="removeJoinItem(index)"/>
43
51
  </a-input>
@@ -45,14 +53,14 @@
45
53
  </div>
46
54
  </a-form-model-item>
47
55
  <a-form-model-item label="SQL查询表达式" prop="condition">
48
- <a-input v-model="form.condition.value" placeholder="用作SQL查询的固定条件表达式,如:gb.f_meter_type='物联网表',可选" />
56
+ <a-input v-model="form.condition.value" placeholder="用作SQL查询的固定条件表达式,如:gb.f_meter_type='物联网表',可选"/>
49
57
  <template v-if="form.condition.value && Object.keys(form.joinArray).length > 0">
50
- <a-alert message="提示:如果SQL查询表达式中用到了关联表,需要勾选用到的关联表别名" type="success" />
58
+ <a-alert message="提示:如果SQL查询表达式中用到了关联表,需要勾选用到的关联表别名" type="success"/>
51
59
  <a-checkbox-group v-model="form.condition.join" :options="conditionJoinArray"/>
52
60
  </template>
53
61
  </a-form-model-item>
54
62
  <a-form-model-item label="排序方式" prop="orderBy">
55
- <a-input v-model="form.orderBy" placeholder="排序字段,用别名+字段名+排序方式(可选)表示,如:u.id desc" />
63
+ <a-input v-model="form.orderBy" placeholder="排序字段,用别名+字段名+排序方式(可选)表示,如:u.id desc"/>
56
64
  </a-form-model-item>
57
65
  <a-form-model-item label="数据字段" prop="column">
58
66
  <a-button type="primary" @click="addColumnItem()">增加</a-button>
@@ -77,7 +85,7 @@
77
85
  </div>
78
86
  </a-form-model-item>
79
87
  <a-form-model-item label="操作按钮配置" prop="buttonState">
80
- <a-checkbox-group v-model="buttonStateData" :options="buttonStateArray" />
88
+ <a-checkbox-group v-model="buttonStateData" :options="buttonStateArray"/>
81
89
  </a-form-model-item>
82
90
  </a-form-model>
83
91
  <a-modal
@@ -93,7 +101,121 @@
93
101
  :model="item">
94
102
  <a-row :gutter="16">
95
103
  <a-col :span="8">
96
- <a-form-model-item label="数据字段名" prop="key">
104
+ <a-form-model-item label="表单类型" prop="formType">
105
+ <a-select v-model="item.formType" placeholder="表单类型,可选" @change="changeFormType(item)">
106
+ <a-select-option key="input">输入框</a-select-option>
107
+ <a-select-option key="select">选择框</a-select-option>
108
+ <a-select-option key="checkbox">多选框</a-select-option>
109
+ <a-select-option key="radio">单选框</a-select-option>
110
+ <a-select-option key="rangePicker">日期范围选择框</a-select-option>
111
+ <a-select-option key="monthPicker">月份选择框</a-select-option>
112
+ <a-select-option key="datePicker">单日选择框</a-select-option>
113
+ <!-- <a-select-option key="cascader">级联选择框(单个下拉)</a-select-option>-->
114
+ <a-select-option key="selects">级联选择框</a-select-option>
115
+ <a-select-option key="textarea">文本域</a-select-option>
116
+ <a-select-option key="file">文件上传</a-select-option>
117
+ <a-select-option key="image">图片上传</a-select-option>
118
+ <a-popover slot="suffixIcon" title="关于表单类型" placement="right">
119
+ <template slot="content">
120
+ <p>预览设置的表单类型</p>
121
+ <a-input-group compact style="width: 400px;">
122
+ <a-input value="输入框" style="width: 20%" readOnly/>
123
+ <a-input style="width: 80%" placeholder="请输入"/>
124
+ </a-input-group>
125
+ <br/>
126
+ <a-input-group compact style="width: 400px;">
127
+ <a-input value="选择框" style="width: 20%" readOnly/>
128
+ <a-select style="width: 80%" placeholder="请选择"/>
129
+ </a-input-group>
130
+ <br/>
131
+ <a-input-group compact style="width: 400px;">
132
+ <a-input value="多选框" style="width: 20%" readOnly/>
133
+ <a-checkbox-group
134
+ style="margin-left: 10px;margin-top: 5px; width: 70%"
135
+ :options="['数据1','数据2']"/>
136
+ </a-input-group>
137
+ <br/>
138
+ <a-input-group compact style="width: 400px;">
139
+ <a-input value="单选框" style="width: 20%" readOnly/>
140
+ <a-radio-group
141
+ style="margin-left: 10px;margin-top: 5px; width: 70%"
142
+ :options="[{label: '数据1', value: 'a'},{label: '数据2', value: 'b'}]"
143
+ name="radioGroup"/>
144
+ </a-input-group>
145
+ <br/>
146
+ <a-input-group compact style="width: 400px;">
147
+ <a-input value="日期范围选择框" style="width: 20%" readOnly/>
148
+ <a-range-picker
149
+ style="width: 80%"
150
+ :show-time="true"
151
+ format="YYYY-MM-DD HH:mm:ss"
152
+ valueFormat="YYYY-MM-DD HH:mm:ss"/>
153
+ </a-input-group>
154
+ <br/>
155
+ <a-input-group compact style="width: 400px;">
156
+ <a-input value="月份选择框" style="width: 20%" readOnly/>
157
+ <a-month-picker style="width: 80%"/>
158
+ </a-input-group>
159
+ <br/>
160
+ <a-input-group compact style="width: 400px;">
161
+ <a-input value="单日选择框" style="width: 20%" readOnly/>
162
+ <a-date-picker style="width: 80%"/>
163
+ </a-input-group>
164
+ <br/>
165
+ <a-input-group compact style="width: 400px;">
166
+ <a-input value="级联选择框" style="width: 20%" readOnly/>
167
+ <a-cascader style="width: 80%" placeholder="请选择"/>
168
+ </a-input-group>
169
+ <br/>
170
+ <a-input-group compact style="width: 400px;">
171
+ <a-input value="文本域" style="width: 20%" readOnly/>
172
+ <a-textarea style="width: 80%" placeholder="请输入" :rows="1"/>
173
+ </a-input-group>
174
+ <br/>
175
+ <a-input-group compact style="width: 400px;">
176
+ <a-input value="文件上传" style="width: 20%" readOnly/>
177
+ <a-upload-dragger
178
+ name="file"
179
+ :multiple="true"
180
+ style="margin-left: 5px; width: 75%"
181
+ action="https://www.mocky.io/v2/5cc8019d300000980a055e76">
182
+ <p class="ant-upload-drag-icon">
183
+ <a-icon type="inbox"/>
184
+ </p>
185
+ <p class="ant-upload-text">
186
+ 点击或拖动文件到该区域上传
187
+ </p>
188
+ <p class="ant-upload-hint">
189
+ 支持单个或多个文件
190
+ </p>
191
+ </a-upload-dragger>
192
+ </a-input-group>
193
+ <br/>
194
+ <a-input-group compact style="width: 400px;">
195
+ <a-input value="图片上传" style="width: 20%" readOnly/>
196
+ <a-upload style="margin-left: 5px; width: 75%" list-type="picture-card" :file-list="[]">
197
+ <a-icon type="plus"/>
198
+ <div class="ant-upload-text">
199
+ Upload
200
+ </div>
201
+ </a-upload>
202
+ </a-input-group>
203
+ </template>
204
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
205
+ </a-popover>
206
+ </a-select>
207
+ </a-form-model-item>
208
+ </a-col>
209
+ <a-col :span="8">
210
+ <a-form-model-item label="数据字段中文名" prop="title">
211
+ <a-input v-model="item.title" placeholder="请输入数据字段中文名,如:编号"/>
212
+ </a-form-model-item>
213
+ </a-col>
214
+ <a-col :span="8">
215
+ <a-form-model-item
216
+ v-show="!(item.formType === 'file' || item.formType === 'image')"
217
+ label="数据字段名"
218
+ prop="key">
97
219
  <a-input v-model="item.key" placeholder="请输入数据字段名" ref="key">
98
220
  <a-popover slot="suffix" title="关于数据字段名" placement="bottom">
99
221
  <template slot="content">
@@ -101,141 +223,20 @@
101
223
  <p>用作SQL查询时必须遵守<span style="font-weight: bold">表别名.列名</span>的格式,如:i.id</p>
102
224
  <p>其他情况下不限制</p>
103
225
  </template>
104
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
226
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
105
227
  </a-popover>
106
228
  </a-input>
107
229
  </a-form-model-item>
108
230
  </a-col>
109
- <a-col :span="8">
110
- <a-form-model-item label="数据字段中文名" prop="title">
111
- <a-input v-model="item.title" placeholder="请输入数据字段中文名,如:编号" />
112
- </a-form-model-item>
113
- </a-col>
114
231
  </a-row>
115
232
  <a-row :gutter="16">
116
233
  <a-col :span="24">
117
234
  <a-form-model-item label="数据模式" prop="dataMode">
118
- <a-checkbox-group v-model="dataModeArrayData" :options="dataModeArray" />
235
+ <a-checkbox-group v-model="dataModeArrayData" :options="dataModeArray"/>
119
236
  </a-form-model-item>
120
237
  </a-col>
121
238
  </a-row>
122
239
  <template v-if="dataMode.queryForm || dataMode.addOrEditForm">
123
- <a-row :gutter="16">
124
- <a-col :span="8">
125
- <a-form-model-item label="表单类型" prop="formType">
126
- <a-select v-model="item.formType" placeholder="表单类型,可选" @change="changeFormType(item)">
127
- <a-select-option key="input">输入框</a-select-option>
128
- <a-select-option key="select">选择框</a-select-option>
129
- <a-select-option key="checkbox">多选框</a-select-option>
130
- <a-select-option key="radio">单选框</a-select-option>
131
- <a-select-option key="rangePicker">日期范围选择框</a-select-option>
132
- <a-select-option key="monthPicker">月份选择框</a-select-option>
133
- <a-select-option key="datePicker">单日选择框</a-select-option>
134
- <!-- <a-select-option key="cascader">级联选择框(单个下拉)</a-select-option>-->
135
- <a-select-option key="selects">级联选择框</a-select-option>
136
- <a-select-option key="textarea">文本域</a-select-option>
137
- <a-select-option key="file">文件上传</a-select-option>
138
- <a-select-option key="image">图片上传</a-select-option>
139
- <a-popover slot="suffixIcon" title="关于表单类型" placement="right">
140
- <template slot="content">
141
- <p>预览设置的表单类型</p>
142
- <a-input-group compact style="width: 400px;">
143
- <a-input value="输入框" style="width: 20%" readOnly/>
144
- <a-input style="width: 80%" placeholder="请输入"/>
145
- </a-input-group>
146
- <br/>
147
- <a-input-group compact style="width: 400px;">
148
- <a-input value="选择框" style="width: 20%" readOnly/>
149
- <a-select style="width: 80%" placeholder="请选择"/>
150
- </a-input-group>
151
- <br/>
152
- <a-input-group compact style="width: 400px;">
153
- <a-input value="多选框" style="width: 20%" readOnly/>
154
- <a-checkbox-group style="margin-left: 10px;margin-top: 5px; width: 70%" :options="['数据1','数据2']"/>
155
- </a-input-group>
156
- <br/>
157
- <a-input-group compact style="width: 400px;">
158
- <a-input value="单选框" style="width: 20%" readOnly/>
159
- <a-radio-group style="margin-left: 10px;margin-top: 5px; width: 70%" :options="[{label: '数据1', value: 'a'},{label: '数据2', value: 'b'}]" name="radioGroup" />
160
- </a-input-group>
161
- <br/>
162
- <a-input-group compact style="width: 400px;">
163
- <a-input value="日期范围选择框" style="width: 20%" readOnly/>
164
- <a-range-picker style="width: 80%" :show-time="true" format="YYYY-MM-DD HH:mm:ss" valueFormat="YYYY-MM-DD HH:mm:ss" />
165
- </a-input-group>
166
- <br/>
167
- <a-input-group compact style="width: 400px;">
168
- <a-input value="月份选择框" style="width: 20%" readOnly/>
169
- <a-month-picker style="width: 80%"/>
170
- </a-input-group>
171
- <br/>
172
- <a-input-group compact style="width: 400px;">
173
- <a-input value="单日选择框" style="width: 20%" readOnly/>
174
- <a-date-picker style="width: 80%"/>
175
- </a-input-group>
176
- <br/>
177
- <a-input-group compact style="width: 400px;">
178
- <a-input value="级联选择框" style="width: 20%" readOnly/>
179
- <a-cascader style="width: 80%" placeholder="请选择"/>
180
- </a-input-group>
181
- <br/>
182
- <a-input-group compact style="width: 400px;">
183
- <a-input value="文本域" style="width: 20%" readOnly/>
184
- <a-textarea style="width: 80%" placeholder="请输入" :rows="1"/>
185
- </a-input-group>
186
- <br/>
187
- <a-input-group compact style="width: 400px;">
188
- <a-input value="文件上传" style="width: 20%" readOnly/>
189
- <a-upload-dragger
190
- name="file"
191
- :multiple="true"
192
- style="margin-left: 5px; width: 75%"
193
- action="https://www.mocky.io/v2/5cc8019d300000980a055e76">
194
- <p class="ant-upload-drag-icon">
195
- <a-icon type="inbox" />
196
- </p>
197
- <p class="ant-upload-text">
198
- 点击或拖动文件到该区域上传
199
- </p>
200
- <p class="ant-upload-hint">
201
- 支持单个或多个文件
202
- </p>
203
- </a-upload-dragger>
204
- </a-input-group>
205
- <br/>
206
- <a-input-group compact style="width: 400px;">
207
- <a-input value="图片上传" style="width: 20%" readOnly/>
208
- <a-upload style="margin-left: 5px; width: 75%" list-type="picture-card" :file-list="[]">
209
- <a-icon type="plus" />
210
- <div class="ant-upload-text">
211
- Upload
212
- </div>
213
- </a-upload>
214
- </a-input-group>
215
- </template>
216
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
217
- </a-popover>
218
- </a-select>
219
- </a-form-model-item>
220
- </a-col>
221
- <a-col :span="8">
222
- <a-form-model-item
223
- label="表单水印"
224
- prop="placeholder"
225
- v-if="item.formType !== 'checkbox' && item.formType !== 'radio' && item.formType !== 'file' && item.formType !== 'image'">
226
- <a-input v-model="item.placeholder" placeholder="表单水印(placeholder),可选" />
227
- </a-form-model-item>
228
- </a-col>
229
- <a-col :span="8">
230
- <a-form-model-item label="表单查询方式" prop="queryType" v-if="dataMode.queryForm && dataMode.sqlQueryCondition">
231
- <a-select v-model="item.queryType" placeholder="表单查询方式,可选">
232
- <template v-for="queryTypeItem in queryTypeV">
233
- <a-select-option :key="queryTypeItem.key">{{ queryTypeItem.label }}</a-select-option>
234
- </template>
235
- </a-select>
236
- </a-form-model-item>
237
- </a-col>
238
- </a-row>
239
240
  <a-row :gutter="16" v-if="item.formType === 'file' || item.formType === 'image'">
240
241
  <a-col :span="8">
241
242
  <a-form-model-item
@@ -268,7 +269,7 @@
268
269
  <p><span style="font-weight: bold">对象存储:</span>文件上传到云对象存储,数据库需存储文件于对象存储的路径</p>
269
270
  <p><span style="font-weight: bold">base64:</span>文件以base64字符串方式存入数据库中(仅图片上传表单支持)</p>
270
271
  </template>
271
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
272
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
272
273
  </a-popover>
273
274
  </a-select>
274
275
  </a-form-model-item>
@@ -278,14 +279,21 @@
278
279
  label="允许上传文件类型"
279
280
  prop="accept"
280
281
  v-if="item.formType === 'file'">
281
- <a-input v-model="item.accept" placeholder="指定文件类型,默认不限制,可选">
282
- <a-popover slot="suffix" title="关于允许上传文件类型" placement="bottom">
282
+ <a-select
283
+ mode="tags"
284
+ v-model="item.accept"
285
+ placeholder="指定文件类型,默认不限制,可选"
286
+ @change="itemAcceptChange">
287
+ <a-select-option v-for="type_item in file_type" :key="type_item.accept">{{ type_item.label }}
288
+ </a-select-option>
289
+ <a-popover slot="suffixIcon" title="关于允许上传文件类型" placement="right">
283
290
  <template slot="content">
284
- <p>指定允许上传的文件类型扩展名,如:.doc,.docx等,详情请参考<a target="_blank" @click="visitAcceptFile">允许上传文件类型</a></p>
291
+ <p>指定允许上传的文件类型扩展名,如:.doc,.docx等,详情请参考<a target="_blank" @click="visitAcceptFile">允许上传文件类型</a>
292
+ </p>
285
293
  </template>
286
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
294
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
287
295
  </a-popover>
288
- </a-input>
296
+ </a-select>
289
297
  </a-form-model-item>
290
298
  </a-col>
291
299
  <!-- TODO 配置文件上传表单-所属模块 -->
@@ -294,7 +302,12 @@
294
302
  <a-row :gutter="16" v-if="item.formType === 'selects'">
295
303
  <a-col :span="8">
296
304
  <a-form-model-item label="是否根节点" prop="groupIndexView">
297
- <a-radio-group defaultValue="None" v-model="item.groupIndexView" @change="groupIndexChange" default-value="false" button-style="solid">
305
+ <a-radio-group
306
+ defaultValue="None"
307
+ v-model="item.groupIndexView"
308
+ @change="groupIndexChange"
309
+ default-value="false"
310
+ button-style="solid">
298
311
  <a-radio-button :value="1">
299
312
 
300
313
  </a-radio-button>
@@ -306,13 +319,20 @@
306
319
  </a-col>
307
320
  <a-col :span="8" v-if="item.groupIndex !== 1">
308
321
  <a-form-model-item label="数据所属节点" prop="groupIndex">
309
- <a-select v-model="item.parent_title" placeholder="请选择父节点" ref="groupIndex" @change="parent_title_change">
310
- <a-select-option v-for="item in parent_node" :key="item.key">{{ item.title }}</a-select-option>
322
+ <a-select
323
+ v-model="item.parent_title"
324
+ placeholder="请选择父节点"
325
+ ref="groupIndex"
326
+ @change="parent_title_change">
327
+ <a-select-option v-for="parent_item in parent_node" :key="parent_item.key">{{
328
+ parent_item.title
329
+ }}
330
+ </a-select-option>
311
331
  <a-popover slot="suffixIcon" title="关于父节点" placement="bottom">
312
332
  <template slot="content">
313
333
  <p>多个下拉框为一组时,需要首先选择的为父节点</p>
314
334
  </template>
315
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
335
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
316
336
  </a-popover>
317
337
  </a-select>
318
338
  </a-form-model-item>
@@ -320,7 +340,10 @@
320
340
  </a-row>
321
341
  <a-row :gutter="16">
322
342
  <a-col :span="8">
323
- <a-form-model-item label="数据源类型" prop="selectType" v-if="item.formType === 'select' || (item.formType === 'selects' && item.groupIndex == 1) || item.formType === 'cascader'">
343
+ <a-form-model-item
344
+ label="数据源类型"
345
+ prop="selectType"
346
+ v-if="item.formType === 'select' || (item.formType === 'selects' && item.groupIndex == 1) || item.formType === 'cascader'">
324
347
  <a-select v-model="item.selectType" placeholder="请选择数据源类型" @change="changeSelectKey(item)">
325
348
  <a-select-option key="key">字典键</a-select-option>
326
349
  <a-select-option key="fixArray">固定集合</a-select-option>
@@ -335,17 +358,24 @@
335
358
  <p>字典键:选项从字典表(t_dictionary)获取,你只需要选择字典键的名称即可</p>
336
359
  <p>业务逻辑名称:选项通过发起http请求调用指定的业务逻辑(Logic)接口获取</p>
337
360
  <p>固定集合:选项为静态值,JSONArray格式</p>
338
- <p>当表单类型为 " 级联选择框(多个下拉) " 是数据模式为 [{lable,value,children[{lable,value,children[]},{lable,value,children[]}]}] 形式</p>
361
+ <p>当表单类型为 " 级联选择框(多个下拉) " 是数据模式为
362
+ [{lable,value,children[{lable,value,children[]},{lable,value,children[]}]}] 形式</p>
339
363
  <p>如:</p>
340
- <json-viewer :value="DemoJson" :expand-depth="parseInt('100')" style="overflow: auto;max-height: 440px"></json-viewer>
364
+ <json-viewer
365
+ :value="DemoJson"
366
+ :expand-depth="parseInt('100')"
367
+ style="overflow: auto;max-height: 440px"></json-viewer>
341
368
  </template>
342
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
369
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
343
370
  </a-popover>
344
371
  </a-select>
345
372
  </a-form-model-item>
346
373
  </a-col>
347
374
  <a-col :span="8">
348
- <a-form-model-item label="数据源" prop="selectKey" v-if="(item.formType === 'select' || (item.formType === 'selects' && item.groupIndex == 1) || item.formType === 'cascader') && item.selectType">
375
+ <a-form-model-item
376
+ label="数据源"
377
+ prop="selectKey"
378
+ v-if="(item.formType === 'select' || (item.formType === 'selects' && item.groupIndex == 1) || item.formType === 'cascader') && item.selectType">
349
379
  <a-select
350
380
  show-search
351
381
  v-model="item.selectKey"
@@ -363,7 +393,7 @@
363
393
  </template>
364
394
  </a-select>
365
395
  <a-input v-model="item.selectKey" v-if="item.selectType === 'logic'" placeholder="请输入业务逻辑名称"/>
366
- <a-textarea v-model="item.selectKey" v-if="item.selectType === 'fixArray'" placeholder="请录入数据源" />
396
+ <a-textarea v-model="item.selectKey" v-if="item.selectType === 'fixArray'" placeholder="请录入数据源"/>
367
397
  </a-form-model-item>
368
398
  </a-col>
369
399
  <a-col :span="8">
@@ -371,20 +401,25 @@
371
401
  <a-input v-model="item.selectKeyName" placeholder="该列所在表在主表的外键名,可选">
372
402
  <a-popover slot="suffix" title="关于数据外键字段名" placement="bottom">
373
403
  <template slot="content">
374
- <p>当该列所属表为主表的关联表,且存在主外键关联关系,你可以指定<span style="font-weight: bold">该列所在表在主表的外键名</span>,如:i.f_type_id</p>
404
+ <p>当该列所属表为主表的关联表,且存在主外键关联关系,你可以指定<span style="font-weight: bold">该列所在表在主表的外键名</span>,如:i.f_type_id
405
+ </p>
375
406
  <p>如果你的<a @click="$refs['key'].focus()">数据字段名</a>所属表为主表,或字段名已经是主表外键名时,不用设置该值</p>
376
407
  <p>设置该参数是为了表单查询时可以通过外键id列而非具体值筛选数据</p>
377
408
  <p>示例:</p>
378
409
  <p>主表为t_userfiles表,别名为u,与t_gasbrand(气表品牌表)有关联关系,别名为g,数据字段名设置为g.f_gasbrand</p>
379
- <p>如果指定了数据外键字段名,例如u.f_gasbrand_id,则使用数据外键字段名筛选数据,如果不指定该值,则使用<a @click="$refs['key'].focus()">数据字段名</a>筛选</p>
410
+ <p>如果指定了数据外键字段名,例如u.f_gasbrand_id,则使用数据外键字段名筛选数据,如果不指定该值,则使用<a @click="$refs['key'].focus()">数据字段名</a>筛选
411
+ </p>
380
412
  </template>
381
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
413
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
382
414
  </a-popover>
383
415
  </a-input>
384
416
  </a-form-model-item>
385
417
  </a-col>
386
418
  </a-row>
387
- <a-form-model-item label="数据源加载方式" prop="selectLoadType" v-if="item.formType === 'select' && item.selectType === 'logic'">
419
+ <a-form-model-item
420
+ label="数据源加载方式"
421
+ prop="selectLoadType"
422
+ v-if="item.formType === 'select' && item.selectType === 'logic'">
388
423
  <a-row :guttor="16">
389
424
  <a-col :span="8">
390
425
  <a-radio-group v-model="item.lazyLoad" default-value="false" button-style="solid">
@@ -416,7 +451,7 @@
416
451
  <p>设置表单项的校验类型,默认字符串类型</p>
417
452
  <p>你也可以设置该表单项是否必填</p>
418
453
  </template>
419
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
454
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
420
455
  </a-popover>
421
456
  </a-select>
422
457
  </a-col>
@@ -432,7 +467,7 @@
432
467
  </a-col>
433
468
  </a-row>
434
469
  </a-form-model-item>
435
- <a-row :gutter="16" v-if="dataMode.addOrEditForm && dataMode.sqlQueryItem">
470
+ <a-row :gutter="16" v-if="dataMode.addOrEditForm">
436
471
  <a-col :span="8">
437
472
  <a-form-model-item ref="addOrEdit" label="新增/修改场景选择" prop="addOrEdit">
438
473
  <a-select v-model="item.addOrEdit" placeholder="请选择场景">
@@ -449,13 +484,17 @@
449
484
  <p>设置表单项的新增/修改场景</p>
450
485
  <p>静默新增类型用于非人为新增的数据,不会生成表单项,且必须设置字段用途</p>
451
486
  </template>
452
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
487
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
453
488
  </a-popover>
454
489
  </a-select>
455
490
  </a-form-model-item>
456
491
  </a-col>
457
492
  <a-col :span="8">
458
- <a-form-model-item v-if="item.addOrEdit === 'silenceAdd'" ref="silencePurpose" label="字段用途" prop="silencePurpose">
493
+ <a-form-model-item
494
+ v-if="item.addOrEdit === 'silenceAdd'"
495
+ ref="silencePurpose"
496
+ label="字段用途"
497
+ prop="silencePurpose">
459
498
  <a-select v-model="item.silencePurpose" placeholder="请选择字段用途">
460
499
  <a-select-option key="createTime">创建时间</a-select-option>
461
500
  <a-select-option key="operator">创建/操作人</a-select-option>
@@ -468,9 +507,10 @@
468
507
  <template slot="content">
469
508
  <p>用于静默新增时设置字段用途</p>
470
509
  <p>在新增数据的表单提交时,页面会根据设置的字段用途获取相关数据并追加到表单中</p>
471
- <p>当字段用途选择为<span style="font-weight: bold">自定义</span>时,必须指定一个业务逻辑(Logic)名称,表单提交前会将表单内容作为参数调用该Logic接口,并将Logic返回值作为表单值</p>
510
+ <p>当字段用途选择为<span style="font-weight: bold">自定义</span>时,必须指定一个业务逻辑(Logic)名称,表单提交前会将表单内容作为参数调用该Logic接口,并将Logic返回值作为表单值
511
+ </p>
472
512
  </template>
473
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
513
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
474
514
  </a-popover>
475
515
  </a-select>
476
516
  </a-form-model-item>
@@ -500,7 +540,7 @@
500
540
  <p>如果你选择文本溢出省略,需要设置文本溢出上限长度</p>
501
541
  <p>如果你选择多彩徽标,需要设置徽标对应的数据样式字典键</p>
502
542
  </template>
503
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
543
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
504
544
  </a-popover>
505
545
  </a-select>
506
546
  </a-form-model-item>
@@ -522,7 +562,7 @@
522
562
  </a-col>
523
563
  <a-col :span="8">
524
564
  <a-form-model-item label="字段默认值" prop="default" v-if="dataMode.sqlQueryItem">
525
- <a-input v-model="item.default" placeholder="当查询结果为null时,指定默认值,可选" />
565
+ <a-input v-model="item.default" placeholder="当查询结果为null时,指定默认值,可选"/>
526
566
  </a-form-model-item>
527
567
  </a-col>
528
568
  </a-row>
@@ -540,7 +580,7 @@
540
580
  <template slot="content">
541
581
  <p>如果你设置了表单类型为选择框,且数据源是字典键,该值会自动带出</p>
542
582
  </template>
543
- <a-icon type="info-circle" style="color: rgba(0,0,0,.45)" />
583
+ <a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
544
584
  </a-popover>
545
585
  </a-input>
546
586
  </a-form-model-item>
@@ -550,18 +590,47 @@
550
590
  </a-col>
551
591
  </a-row>
552
592
  </template>
553
- <a-alert style="margin-top: 5px" v-if="dataModeArrayData.length === 0" show-icon message="错误:请至少选择一种数据模式" type="error" />
554
- <a-alert style="margin-top: 5px" v-if="dataMode.addOrEditForm && !dataMode.sqlQueryItem" show-icon message="错误:如果要生成新增/修改表单项,必须勾选生成SQL查询项" type="error" />
555
- <a-alert style="margin-top: 5px" v-if="(item.formType === 'file' || item.formType === 'image') && !(!dataMode.table && !dataMode.sqlQueryCondition && !dataMode.queryForm)" show-icon message="错误:上传类表单的数据模式只能选择 生成新增/修改表单项 和 生成SQL查询项 " type="error" />
556
- <a-alert style="margin-top: 5px" v-if="dataMode.queryForm && !dataMode.sqlQueryCondition" show-icon message="提示:您没有勾选生成SQL查询表达式,渲染的表单项不会生成SQL查询条件" type="info" />
557
- <a-alert style="margin-top: 5px" v-if="dataMode.table && !dataMode.sqlQueryItem" show-icon message="提示:您没有勾选生成SQL查询项,渲染的表格列不会绑定SQL结果集数据" type="info" />
593
+ <a-alert
594
+ style="margin-top: 5px"
595
+ v-if="dataModeArrayData.length === 0"
596
+ show-icon
597
+ message="错误:请至少选择一种数据模式"
598
+ type="error"/>
599
+ <a-alert
600
+ style="margin-top: 5px"
601
+ v-if="!(item.formType === 'file' || item.formType === 'image') && dataMode.addOrEditForm && !dataMode.sqlQueryItem"
602
+ show-icon
603
+ message="错误:如果要生成新增/修改表单项,必须勾选生成SQL查询项"
604
+ type="error"/>
605
+ <a-alert
606
+ style="margin-top: 5px"
607
+ v-if="(item.formType === 'file' || item.formType === 'image') && !(!dataMode.table && !dataMode.sqlQueryCondition && !dataMode.queryForm)"
608
+ show-icon
609
+ message="错误:上传类表单的数据模式只能选择 生成新增/修改表单项 和 生成SQL查询项 "
610
+ type="error"/>
611
+ <a-alert
612
+ style="margin-top: 5px"
613
+ v-if="dataMode.queryForm && !dataMode.sqlQueryCondition"
614
+ show-icon
615
+ message="提示:您没有勾选生成SQL查询表达式,渲染的表单项不会生成SQL查询条件"
616
+ type="info"/>
617
+ <a-alert
618
+ style="margin-top: 5px"
619
+ v-if="dataMode.table && !dataMode.sqlQueryItem"
620
+ show-icon
621
+ message="提示:您没有勾选生成SQL查询项,渲染的表格列不会绑定SQL结果集数据"
622
+ type="info"/>
558
623
  </a-form-model>
559
624
  </a-modal>
560
625
  <a-button type="primary" @click="view">操作</a-button>
561
626
  </a-col>
562
627
  <a-col :xl="10" :lg="12" :md="12" :sm="24" :xs="24">
563
628
  <a-card :bordered="false" title="预览" size="small" style="overflow: auto">
564
- <json-viewer :copyable="{copyText: '复制', copiedText: '已复制'}" :value="result" :expand-depth="parseInt('100')" style="overflow: auto;max-height: 440px"></json-viewer>
629
+ <json-viewer
630
+ :copyable="{copyText: '复制', copiedText: '已复制'}"
631
+ :value="result"
632
+ :expand-depth="parseInt('100')"
633
+ style="overflow: auto;max-height: 440px"></json-viewer>
565
634
  </a-card>
566
635
  </a-col>
567
636
  </a-row>
@@ -594,11 +663,15 @@ import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormIte
594
663
  import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
595
664
  import JsonViewer from 'vue-json-viewer'
596
665
  import FileSaver from 'file-saver'
597
- import { queryType } from '@/config/CreateQueryConfig'
666
+ import { queryType, file_type } from '@vue2-client/config/CreateQueryConfig'
598
667
  import { mapState } from 'vuex'
599
- import { post } from '@vue2-client/services/api/restTools'
600
- import { commonApi } from '@vue2-client/services/api/common'
601
- const DemoJson = [{ value: 'zhejiang', label: 'Zhejiang', children: [{ value: 'hangzhou', label: 'Hangzhou', children: [{ value: 'xihu', label: 'West Lake' }] }] }]
668
+ import { commonApi, post } from '@vue2-client/services/api'
669
+
670
+ const DemoJson = [{
671
+ value: 'zhejiang',
672
+ label: 'Zhejiang',
673
+ children: [{ value: 'hangzhou', label: 'Hangzhou', children: [{ value: 'xihu', label: 'West Lake' }] }]
674
+ }]
602
675
  export default {
603
676
  name: 'CreateQuery',
604
677
  components: {
@@ -609,6 +682,7 @@ export default {
609
682
  data () {
610
683
  return {
611
684
  DemoJson,
685
+ file_type,
612
686
  // 页面宽度
613
687
  screenWidth: document.documentElement.clientWidth,
614
688
  // 效果预览模态框是否展示
@@ -653,6 +727,11 @@ export default {
653
727
  rule: {
654
728
  required: 'false'
655
729
  },
730
+ formType: '',
731
+ accept: '',
732
+ addOrEdit: '',
733
+ selectKeyName: '',
734
+ acceptCount: '',
656
735
  dataModeArray: []
657
736
  },
658
737
  itemMap: {},
@@ -862,6 +941,18 @@ export default {
862
941
  }
863
942
  },
864
943
  methods: {
944
+ // 文件上传限制类型修改
945
+ itemAcceptChange (newVal) {
946
+ // newVal = [accept1,accept2,...]
947
+ if (newVal.includes('*')) {
948
+ this.item.accept = ['*']
949
+ // return
950
+ }
951
+ // 如果除了 无限制 都选择 改成无限制
952
+ // if (newVal.length === this.file_type.length - 1){
953
+ // this.item.accept = ['*']
954
+ // }
955
+ },
865
956
  parent_title_change (parentKey) {
866
957
  const parentArr = this.form.column.filter(item => item.formType === 'selects' && item.key === parentKey)
867
958
  if (parentArr.length === 1) {
@@ -972,16 +1063,17 @@ export default {
972
1063
  submitItem () {
973
1064
  this.$refs.itemForm.validate(valid => {
974
1065
  if (valid) {
1066
+ const fileBool = this.item.formType === 'file' || this.item.formType === 'image'
975
1067
  if (this.dataModeArrayData.length === 0) {
976
1068
  this.$message.error('请至少选择一种数据模式')
977
1069
  return
978
1070
  }
979
- if (this.dataMode.addOrEditForm && !this.dataMode.sqlQueryItem) {
1071
+ if (!fileBool && (this.dataMode.addOrEditForm && !this.dataMode.sqlQueryItem)) {
980
1072
  this.$message.error('如果要生成新增/修改表单项,必须勾选生成SQL查询项')
981
1073
  return
982
1074
  }
983
- if ((this.item.formType === 'file' || this.item.formType === 'image') && !(!this.dataMode.table && !this.dataMode.sqlQueryCondition && !this.dataMode.queryForm)) {
984
- this.$message.error('上传类表单的数据模式只能选择 生成新增/修改表单项 和 生成SQL查询项')
1075
+ if (fileBool && !(!this.dataMode.table && !this.dataMode.sqlQueryCondition && !this.dataMode.queryForm)) {
1076
+ this.$message.error(`上传类表单项只能选择 "生成新增/修改表单项"`)
985
1077
  return
986
1078
  }
987
1079
  this.itemHandle()
@@ -1187,7 +1279,13 @@ export default {
1187
1279
  },
1188
1280
  changeFormType (item) {
1189
1281
  if (item.formType === 'file' || item.formType === 'image') {
1190
- this.dataModeArrayData = ['addOrEditForm', 'sqlQueryItem']
1282
+ this.item.accept = item.formType === 'file' ? ['*'] : ['.jpg,.jpeg,.ico,.gif,svg,.webp,.png,.bmp,.pjpeg,']
1283
+ this.item.resUploadMode = 'server'
1284
+ this.dataModeArrayData = ['addOrEditForm']
1285
+ } else {
1286
+ this.dataModeArrayData = ['queryForm', 'table', 'addOrEditForm', 'sqlQueryItem', 'sqlQueryCondition']
1287
+ delete this.item.accept
1288
+ delete this.item.resUploadMode
1191
1289
  }
1192
1290
  },
1193
1291
  changeSelectKey (item) {