vue2-client 1.2.41 → 1.2.44
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.
- package/CHANGELOG.md +12 -1
- package/package.json +1 -1
- package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +555 -0
- package/src/base-client/components/common/XAddForm/XAddForm.vue +2 -1
- package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +316 -315
- package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +1 -1
- package/src/components/menu/SideMenu.vue +1 -1
- package/src/config/default/setting.config.js +3 -1
- package/src/layouts/SinglePageView.vue +10 -1
- package/src/layouts/header/AdminHeader.vue +1 -1
- package/src/layouts/tabs/TabsView.vue +56 -40
- package/src/pages/exception/403.vue +21 -25
- package/src/pages/exception/404.vue +21 -25
- package/src/pages/exception/500.vue +21 -25
- package/src/pages/login/Login.vue +194 -201
- package/src/pages/system/ticket/index.vue +1 -1
- package/src/store/modules/account.js +2 -2
- package/src/theme/default/style.less +14 -0
- package/vue.config.js +143 -143
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
> 所有关于本项目的变化都在该文档里。
|
|
3
3
|
|
|
4
|
+
**1.2.44 - 1.2.45 -2022-04-26 @苗艳强**
|
|
5
|
+
- 问题修复:
|
|
6
|
+
- 修复单页面刷新无效的问题
|
|
7
|
+
- 修复单页面关闭再打开不重载的问题
|
|
8
|
+
|
|
9
|
+
**##1.2.41 - 1.2.43 -2022-04-24 @江超**
|
|
10
|
+
- 功能修改:
|
|
11
|
+
- 全局滚动条样式替换
|
|
12
|
+
- 问题修复:
|
|
13
|
+
- 修复`XaddForm.vue`和`XaddNativeForm.vue`将版本号渲染为表单项的问题
|
|
14
|
+
|
|
4
15
|
**##1.2.40 -2022-04-24 @苗艳强**
|
|
5
16
|
- 问题修复:
|
|
6
17
|
- 修复 singlepage 页面不能缓存的问题
|
|
@@ -43,7 +54,7 @@
|
|
|
43
54
|
- 功能修改:
|
|
44
55
|
- [XFormTable]:新增判断,如果表名以##开始,则在查询时为其创建临时表
|
|
45
56
|
|
|
46
|
-
**##1.2.30 -1.2.31 -2022-04-02 @张振宇**
|
|
57
|
+
**##1.2.30 - 1.2.31 -2022-04-02 @张振宇**
|
|
47
58
|
- 功能修改:
|
|
48
59
|
- 查询配置页面bug修改
|
|
49
60
|
- 表单配置页面bug修改
|
package/package.json
CHANGED
|
@@ -0,0 +1,555 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<a-modal
|
|
3
|
+
title="数据字段配置"
|
|
4
|
+
:visible="visible"
|
|
5
|
+
:width="1250"
|
|
6
|
+
:zIndex="1001"
|
|
7
|
+
@cancel="modelCancel"
|
|
8
|
+
@ok="submitItem">
|
|
9
|
+
<a-form-model
|
|
10
|
+
ref="itemForm"
|
|
11
|
+
:rules="itemRules"
|
|
12
|
+
layout="vertical"
|
|
13
|
+
:model="item">
|
|
14
|
+
<a-row :gutter="16">
|
|
15
|
+
<a-col :span="5">
|
|
16
|
+
<a-card title="基础属性" :bodyStyle="{height: '500px', overflowY: 'auto'}">
|
|
17
|
+
<a-form-model-item label="表单类型" prop="formType">
|
|
18
|
+
<a-select v-model="item.formType" placeholder="表单类型,可选" @change="changeFormType(item)">
|
|
19
|
+
<a-select-option key="input">输入框</a-select-option>
|
|
20
|
+
<a-select-option key="select">选择框</a-select-option>
|
|
21
|
+
<a-select-option key="checkbox">多选框</a-select-option>
|
|
22
|
+
<a-select-option key="radio">单选框</a-select-option>
|
|
23
|
+
<a-select-option key="rangePicker">日期范围选择框</a-select-option>
|
|
24
|
+
<a-select-option key="monthPicker">月份选择框</a-select-option>
|
|
25
|
+
<a-select-option key="datePicker">单日选择框</a-select-option>
|
|
26
|
+
<!-- <a-select-option key="cascader">级联选择框(单个下拉)</a-select-option>-->
|
|
27
|
+
<a-select-option key="selects">级联选择框</a-select-option>
|
|
28
|
+
<a-select-option key="textarea">文本域</a-select-option>
|
|
29
|
+
<a-select-option key="file">文件上传</a-select-option>
|
|
30
|
+
<a-select-option key="image">图片上传</a-select-option>
|
|
31
|
+
<a-popover slot="suffixIcon" title="关于表单类型" placement="right">
|
|
32
|
+
<template slot="content">
|
|
33
|
+
<p>预览设置的表单类型</p>
|
|
34
|
+
<a-input-group compact style="width: 400px;">
|
|
35
|
+
<a-input value="输入框" style="width: 20%" readOnly/>
|
|
36
|
+
<a-input style="width: 80%" placeholder="请输入"/>
|
|
37
|
+
</a-input-group>
|
|
38
|
+
<br/>
|
|
39
|
+
<a-input-group compact style="width: 400px;">
|
|
40
|
+
<a-input value="选择框" style="width: 20%" readOnly/>
|
|
41
|
+
<a-select style="width: 80%" placeholder="请选择"/>
|
|
42
|
+
</a-input-group>
|
|
43
|
+
<br/>
|
|
44
|
+
<a-input-group compact style="width: 400px;">
|
|
45
|
+
<a-input value="多选框" style="width: 20%" readOnly/>
|
|
46
|
+
<a-checkbox-group
|
|
47
|
+
style="margin-left: 10px;margin-top: 5px; width: 70%"
|
|
48
|
+
:options="['数据1','数据2']"/>
|
|
49
|
+
</a-input-group>
|
|
50
|
+
<br/>
|
|
51
|
+
<a-input-group compact style="width: 400px;">
|
|
52
|
+
<a-input value="单选框" style="width: 20%" readOnly/>
|
|
53
|
+
<a-radio-group
|
|
54
|
+
style="margin-left: 10px;margin-top: 5px; width: 70%"
|
|
55
|
+
:options="[{label: '数据1', value: 'a'},{label: '数据2', value: 'b'}]"
|
|
56
|
+
name="radioGroup"/>
|
|
57
|
+
</a-input-group>
|
|
58
|
+
<br/>
|
|
59
|
+
<a-input-group compact style="width: 400px;">
|
|
60
|
+
<a-input value="日期范围选择框" style="width: 20%" readOnly/>
|
|
61
|
+
<a-range-picker
|
|
62
|
+
style="width: 80%"
|
|
63
|
+
:show-time="true"
|
|
64
|
+
format="YYYY-MM-DD HH:mm:ss"
|
|
65
|
+
valueFormat="YYYY-MM-DD HH:mm:ss"/>
|
|
66
|
+
</a-input-group>
|
|
67
|
+
<br/>
|
|
68
|
+
<a-input-group compact style="width: 400px;">
|
|
69
|
+
<a-input value="月份选择框" style="width: 20%" readOnly/>
|
|
70
|
+
<a-month-picker style="width: 80%"/>
|
|
71
|
+
</a-input-group>
|
|
72
|
+
<br/>
|
|
73
|
+
<a-input-group compact style="width: 400px;">
|
|
74
|
+
<a-input value="单日选择框" style="width: 20%" readOnly/>
|
|
75
|
+
<a-date-picker style="width: 80%"/>
|
|
76
|
+
</a-input-group>
|
|
77
|
+
<br/>
|
|
78
|
+
<a-input-group compact style="width: 400px;">
|
|
79
|
+
<a-input value="级联选择框" style="width: 20%" readOnly/>
|
|
80
|
+
<a-cascader style="width: 80%" placeholder="请选择"/>
|
|
81
|
+
</a-input-group>
|
|
82
|
+
<br/>
|
|
83
|
+
<a-input-group compact style="width: 400px;">
|
|
84
|
+
<a-input value="文本域" style="width: 20%" readOnly/>
|
|
85
|
+
<a-textarea style="width: 80%" placeholder="请输入" :rows="1"/>
|
|
86
|
+
</a-input-group>
|
|
87
|
+
<br/>
|
|
88
|
+
<a-input-group compact style="width: 400px;">
|
|
89
|
+
<a-input value="文件上传" style="width: 20%" readOnly/>
|
|
90
|
+
<a-upload-dragger
|
|
91
|
+
name="file"
|
|
92
|
+
:multiple="true"
|
|
93
|
+
style="margin-left: 5px; width: 75%"
|
|
94
|
+
action="https://www.mocky.io/v2/5cc8019d300000980a055e76">
|
|
95
|
+
<p class="ant-upload-drag-icon">
|
|
96
|
+
<a-icon type="inbox"/>
|
|
97
|
+
</p>
|
|
98
|
+
<p class="ant-upload-text">
|
|
99
|
+
点击或拖动文件到该区域上传
|
|
100
|
+
</p>
|
|
101
|
+
<p class="ant-upload-hint">
|
|
102
|
+
支持单个或多个文件
|
|
103
|
+
</p>
|
|
104
|
+
</a-upload-dragger>
|
|
105
|
+
</a-input-group>
|
|
106
|
+
<br/>
|
|
107
|
+
<a-input-group compact style="width: 400px;">
|
|
108
|
+
<a-input value="图片上传" style="width: 20%" readOnly/>
|
|
109
|
+
<a-upload style="margin-left: 5px; width: 75%" list-type="picture-card" :file-list="[]">
|
|
110
|
+
<a-icon type="plus"/>
|
|
111
|
+
<div class="ant-upload-text">
|
|
112
|
+
Upload
|
|
113
|
+
</div>
|
|
114
|
+
</a-upload>
|
|
115
|
+
</a-input-group>
|
|
116
|
+
</template>
|
|
117
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
118
|
+
</a-popover>
|
|
119
|
+
</a-select>
|
|
120
|
+
</a-form-model-item>
|
|
121
|
+
<a-form-model-item
|
|
122
|
+
v-if="!(item.formType === 'file' || item.formType === 'image')"
|
|
123
|
+
label="数据字段名"
|
|
124
|
+
prop="key">
|
|
125
|
+
<a-input v-model="item.key" placeholder="请输入数据字段名" ref="key">
|
|
126
|
+
<a-popover slot="suffix" title="关于数据字段名" placement="bottom">
|
|
127
|
+
<template slot="content">
|
|
128
|
+
<p>设置数据字段的名称</p>
|
|
129
|
+
<p>用作SQL查询时必须遵守<span style="font-weight: bold">表别名.列名</span>的格式,如:i.id</p>
|
|
130
|
+
<p>其他情况下不限制</p>
|
|
131
|
+
</template>
|
|
132
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
133
|
+
</a-popover>
|
|
134
|
+
</a-input>
|
|
135
|
+
</a-form-model-item>
|
|
136
|
+
<a-form-model-item label="数据字段中文名" prop="title">
|
|
137
|
+
<a-input v-model="item.title" placeholder="请输入数据字段中文名,如:编号"/>
|
|
138
|
+
</a-form-model-item>
|
|
139
|
+
<a-form-model-item label="数据模式" prop="dataMode">
|
|
140
|
+
<a-checkbox-group v-model="dataModeArrayData" :options="dataModeArray"/>
|
|
141
|
+
</a-form-model-item>
|
|
142
|
+
</a-card>
|
|
143
|
+
</a-col>
|
|
144
|
+
<a-col :span="9">
|
|
145
|
+
<a-card title="扩展属性" :bodyStyle="{height: '500px', overflowY: 'auto'}">
|
|
146
|
+
<a-form-model-item
|
|
147
|
+
label="表单水印"
|
|
148
|
+
prop="placeholder">
|
|
149
|
+
<a-input v-model="item.placeholder" placeholder="表单水印(placeholder),可选" />
|
|
150
|
+
</a-form-model-item>
|
|
151
|
+
<a-form-model-item label="表单查询方式" prop="queryType">
|
|
152
|
+
<a-select v-model="item.queryType" placeholder="表单查询方式,可选">
|
|
153
|
+
<template v-for="queryTypeItem in queryTypeV">
|
|
154
|
+
<a-select-option :key="queryTypeItem.key">{{ queryTypeItem.label }}</a-select-option>
|
|
155
|
+
</template>
|
|
156
|
+
</a-select>
|
|
157
|
+
</a-form-model-item>
|
|
158
|
+
<a-form-model-item label="是否根节点" prop="groupIndexView">
|
|
159
|
+
<a-radio-group
|
|
160
|
+
defaultValue="None"
|
|
161
|
+
v-model="item.groupIndexView"
|
|
162
|
+
@change="groupIndexChange"
|
|
163
|
+
default-value="false"
|
|
164
|
+
button-style="solid">
|
|
165
|
+
<a-radio-button :value="1">
|
|
166
|
+
是
|
|
167
|
+
</a-radio-button>
|
|
168
|
+
<a-radio-button value="None">
|
|
169
|
+
否
|
|
170
|
+
</a-radio-button>
|
|
171
|
+
</a-radio-group>
|
|
172
|
+
</a-form-model-item>
|
|
173
|
+
<a-form-model-item label="数据所属节点" prop="groupIndex">
|
|
174
|
+
<a-select
|
|
175
|
+
v-model="item.parent_title"
|
|
176
|
+
placeholder="请选择父节点"
|
|
177
|
+
ref="groupIndex"
|
|
178
|
+
@change="parent_title_change">
|
|
179
|
+
<a-select-option v-for="parent_item in parent_node" :key="parent_item.key">{{
|
|
180
|
+
parent_item.title
|
|
181
|
+
}}
|
|
182
|
+
</a-select-option>
|
|
183
|
+
<a-popover slot="suffixIcon" title="关于父节点" placement="bottom">
|
|
184
|
+
<template slot="content">
|
|
185
|
+
<p>多个下拉框为一组时,需要首先选择的为父节点</p>
|
|
186
|
+
</template>
|
|
187
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
188
|
+
</a-popover>
|
|
189
|
+
</a-select>
|
|
190
|
+
</a-form-model-item>
|
|
191
|
+
<a-form-model-item
|
|
192
|
+
label="数据源加载方式"
|
|
193
|
+
prop="selectLoadType"
|
|
194
|
+
v-if="item.formType === 'select' && item.selectType === 'logic'">
|
|
195
|
+
<a-radio-group v-model="item.lazyLoad" default-value="false" button-style="solid">
|
|
196
|
+
<a-radio-button value="true">
|
|
197
|
+
懒加载搜索
|
|
198
|
+
</a-radio-button>
|
|
199
|
+
<a-radio-button value="false">
|
|
200
|
+
一次性加载
|
|
201
|
+
</a-radio-button>
|
|
202
|
+
</a-radio-group>
|
|
203
|
+
</a-form-model-item>
|
|
204
|
+
<a-form-model-item label="作用域插槽" prop="slot">
|
|
205
|
+
<a-select v-model="item.slot.type" placeholder="插槽类型,可选">
|
|
206
|
+
<a-select-option key="default">不设置</a-select-option>
|
|
207
|
+
<a-select-option key="ellipsis">文本溢出省略</a-select-option>
|
|
208
|
+
<a-select-option key="badge">多彩徽标</a-select-option>
|
|
209
|
+
<a-select-option key="date">日期格式化</a-select-option>
|
|
210
|
+
<a-select-option key="dateTime">日期时间格式化</a-select-option>
|
|
211
|
+
<a-select-option key="action">操作列</a-select-option>
|
|
212
|
+
<a-popover slot="suffixIcon" title="关于作用域插槽" placement="bottom">
|
|
213
|
+
<template slot="content">
|
|
214
|
+
<p>你可以通过设置表格列的作用域插槽实现一些效果</p>
|
|
215
|
+
<p>如果没有指定,默认会设置为文本溢出省略(长度:16)</p>
|
|
216
|
+
<p>如果你选择文本溢出省略,需要设置文本溢出上限长度</p>
|
|
217
|
+
<p>如果你选择多彩徽标,需要设置徽标对应的数据样式字典键</p>
|
|
218
|
+
</template>
|
|
219
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
220
|
+
</a-popover>
|
|
221
|
+
</a-select>
|
|
222
|
+
</a-form-model-item>
|
|
223
|
+
<a-form-model-item label="表格列宽度" prop="width">
|
|
224
|
+
<a-popover
|
|
225
|
+
title="关于表格列宽度"
|
|
226
|
+
placement="bottom">
|
|
227
|
+
<template slot="content">
|
|
228
|
+
<p>当作用域插槽设置为文本溢出省略时,表格列宽度将自适应,计算方式为文本溢出上限长度 * 7 + 42</p>
|
|
229
|
+
<p>当作用域插槽设置为多彩徽标时,表格列宽度为固定为130</p>
|
|
230
|
+
<p>当作用域插槽设置为日期时间格式化时,表格列宽度为固定为160</p>
|
|
231
|
+
<p>当该列数据过长导致换行时,建议设置作用域插槽为文本溢出省略,或将表格列设置为固定宽度值</p>
|
|
232
|
+
</template>
|
|
233
|
+
<a-input-number style="width: 100%" v-model="item.width" placeholder="表格列宽度,可选"/>
|
|
234
|
+
</a-popover>
|
|
235
|
+
</a-form-model-item>
|
|
236
|
+
<a-form-model-item label="字段默认值" prop="default">
|
|
237
|
+
<a-input v-model="item.default" placeholder="当查询结果为null时,指定默认值,可选"/>
|
|
238
|
+
</a-form-model-item>
|
|
239
|
+
</a-card>
|
|
240
|
+
</a-col>
|
|
241
|
+
<a-col :span="9">
|
|
242
|
+
<a-card title="附加属性" :bodyStyle="{height: '500px', overflowY: 'auto'}">
|
|
243
|
+
<a-form-model-item label="表单校验类型" prop="rule">
|
|
244
|
+
<a-row :gutter="16">
|
|
245
|
+
<a-col :span="8" v-if="item.formType === 'input' || item.formType === 'textarea'">
|
|
246
|
+
<a-select v-model="item.rule.type" placeholder="校验类型,可选">
|
|
247
|
+
<a-select-option key="string">字符串</a-select-option>
|
|
248
|
+
<a-select-option key="number">数字</a-select-option>
|
|
249
|
+
<a-select-option key="boolean">布尔值</a-select-option>
|
|
250
|
+
<a-select-option key="regexp">正则表达式</a-select-option>
|
|
251
|
+
<a-select-option key="integer">整数</a-select-option>
|
|
252
|
+
<a-select-option key="float">小数</a-select-option>
|
|
253
|
+
<a-select-option key="array">数组或集合</a-select-option>
|
|
254
|
+
<a-select-option key="date">日期</a-select-option>
|
|
255
|
+
<a-select-option key="email">邮箱</a-select-option>
|
|
256
|
+
<a-popover slot="suffixIcon" title="关于表单校验类型" placement="bottom">
|
|
257
|
+
<template slot="content">
|
|
258
|
+
<p>设置表单项的校验类型,默认字符串类型</p>
|
|
259
|
+
<p>你也可以设置该表单项是否必填</p>
|
|
260
|
+
</template>
|
|
261
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
262
|
+
</a-popover>
|
|
263
|
+
</a-select>
|
|
264
|
+
</a-col>
|
|
265
|
+
<a-col :span="8">
|
|
266
|
+
<a-radio-group v-model="item.rule.required" default-value="false" button-style="solid">
|
|
267
|
+
<a-radio-button value="true">
|
|
268
|
+
必选项
|
|
269
|
+
</a-radio-button>
|
|
270
|
+
<a-radio-button value="false">
|
|
271
|
+
非必选项
|
|
272
|
+
</a-radio-button>
|
|
273
|
+
</a-radio-group>
|
|
274
|
+
</a-col>
|
|
275
|
+
</a-row>
|
|
276
|
+
</a-form-model-item>
|
|
277
|
+
<a-form-model-item ref="addOrEdit" label="新增/修改场景选择" prop="addOrEdit">
|
|
278
|
+
<a-select v-model="item.addOrEdit" placeholder="请选择场景">
|
|
279
|
+
<a-select-option key="all">新增和修改</a-select-option>
|
|
280
|
+
<a-select-option key="add">仅支持新增</a-select-option>
|
|
281
|
+
<a-select-option key="edit">仅支持修改</a-select-option>
|
|
282
|
+
<a-select-option key="silenceAdd">静默新增(不生成表单)</a-select-option>
|
|
283
|
+
<a-select-option key="version">版本号</a-select-option>
|
|
284
|
+
<a-popover
|
|
285
|
+
slot="suffixIcon"
|
|
286
|
+
title="关于新增/修改场景选择"
|
|
287
|
+
placement="bottom">
|
|
288
|
+
<template slot="content">
|
|
289
|
+
<p>设置表单项的新增/修改场景</p>
|
|
290
|
+
<p>静默新增类型用于非人为新增的数据,不会生成表单项,且必须设置字段用途</p>
|
|
291
|
+
</template>
|
|
292
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
293
|
+
</a-popover>
|
|
294
|
+
</a-select>
|
|
295
|
+
</a-form-model-item>
|
|
296
|
+
<a-form-model-item
|
|
297
|
+
ref="silencePurpose"
|
|
298
|
+
label="字段用途"
|
|
299
|
+
prop="silencePurpose">
|
|
300
|
+
<a-select v-model="item.silencePurpose" placeholder="请选择字段用途">
|
|
301
|
+
<a-select-option key="createTime">创建时间</a-select-option>
|
|
302
|
+
<a-select-option key="operator">创建/操作人</a-select-option>
|
|
303
|
+
<a-select-option key="orgId">组织机构ID</a-select-option>
|
|
304
|
+
<a-select-option key="customize">自定义</a-select-option>
|
|
305
|
+
<a-popover
|
|
306
|
+
slot="suffixIcon"
|
|
307
|
+
title="关于字段用途"
|
|
308
|
+
placement="bottom">
|
|
309
|
+
<template slot="content">
|
|
310
|
+
<p>用于静默新增时设置字段用途</p>
|
|
311
|
+
<p>在新增数据的表单提交时,页面会根据设置的字段用途获取相关数据并追加到表单中</p>
|
|
312
|
+
<p>当字段用途选择为<span style="font-weight: bold">自定义</span>时,必须指定一个业务逻辑(Logic)名称,表单提交前会将表单内容作为参数调用该Logic接口,并将Logic返回值作为表单值
|
|
313
|
+
</p>
|
|
314
|
+
</template>
|
|
315
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
316
|
+
</a-popover>
|
|
317
|
+
</a-select>
|
|
318
|
+
</a-form-model-item>
|
|
319
|
+
<a-form-model-item>
|
|
320
|
+
<a-input v-model="item.silenceSource" placeholder="请输入业务逻辑名称"/>
|
|
321
|
+
</a-form-model-item>
|
|
322
|
+
<a-form-model-item
|
|
323
|
+
label="数据源类型"
|
|
324
|
+
prop="selectType">
|
|
325
|
+
<a-select v-model="item.selectType" placeholder="请选择数据源类型" @change="changeSelectKey(item)">
|
|
326
|
+
<a-select-option key="key">字典键</a-select-option>
|
|
327
|
+
<a-select-option key="fixArray">固定集合</a-select-option>
|
|
328
|
+
<a-select-option key="logic">业务逻辑</a-select-option>
|
|
329
|
+
<a-popover
|
|
330
|
+
slot="suffixIcon"
|
|
331
|
+
title="关于下拉框或级联框数据源类型"
|
|
332
|
+
placement="bottom">
|
|
333
|
+
<template slot="content">
|
|
334
|
+
<p>设置下拉框或级联框的数据源</p>
|
|
335
|
+
<p>数据源类型分为三种,你可以根据需要选择</p>
|
|
336
|
+
<p>字典键:选项从字典表(t_dictionary)获取,你只需要选择字典键的名称即可</p>
|
|
337
|
+
<p>业务逻辑名称:选项通过发起http请求调用指定的业务逻辑(Logic)接口获取</p>
|
|
338
|
+
<p>固定集合:选项为静态值,JSONArray格式</p>
|
|
339
|
+
<p>当表单类型为 " 级联选择框(多个下拉) " 是数据模式为
|
|
340
|
+
[{lable,value,children[{lable,value,children[]},{lable,value,children[]}]}] 形式</p>
|
|
341
|
+
<p>如:</p>
|
|
342
|
+
<json-viewer
|
|
343
|
+
:value="DemoJson"
|
|
344
|
+
:expand-depth="parseInt('100')"
|
|
345
|
+
style="overflow: auto;max-height: 440px"></json-viewer>
|
|
346
|
+
</template>
|
|
347
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
348
|
+
</a-popover>
|
|
349
|
+
</a-select>
|
|
350
|
+
</a-form-model-item>
|
|
351
|
+
<a-form-model-item
|
|
352
|
+
label="数据源"
|
|
353
|
+
prop="selectKey">
|
|
354
|
+
<a-select
|
|
355
|
+
show-search
|
|
356
|
+
v-model="item.selectKey"
|
|
357
|
+
v-if="item.selectType === 'key'"
|
|
358
|
+
placeholder="请选择字典键"
|
|
359
|
+
:filter-option="filterOption"
|
|
360
|
+
@change="changeSelectKey(item)"
|
|
361
|
+
>
|
|
362
|
+
<template>
|
|
363
|
+
<a-select-option
|
|
364
|
+
v-for="(optionItem,index) in option"
|
|
365
|
+
:key="index"
|
|
366
|
+
:value="Object.keys(optionItem)[0]">{{ optionItem[Object.keys(optionItem)[0]] }}
|
|
367
|
+
</a-select-option>
|
|
368
|
+
</template>
|
|
369
|
+
</a-select>
|
|
370
|
+
<a-input v-model="item.selectKey" v-if="item.selectType === 'logic'" placeholder="请输入业务逻辑名称"/>
|
|
371
|
+
<a-textarea v-model="item.selectKey" v-if="item.selectType === 'fixArray'" placeholder="请录入数据源"/>
|
|
372
|
+
</a-form-model-item>
|
|
373
|
+
<a-form-model-item label="数据外键字段名" prop="selectKeyName">
|
|
374
|
+
<a-input v-model="item.selectKeyName" placeholder="该列所在表在主表的外键名,可选">
|
|
375
|
+
<a-popover slot="suffix" title="关于数据外键字段名" placement="bottom">
|
|
376
|
+
<template slot="content">
|
|
377
|
+
<p>当该列所属表为主表的关联表,且存在主外键关联关系,你可以指定<span style="font-weight: bold">该列所在表在主表的外键名</span>,如:i.f_type_id
|
|
378
|
+
</p>
|
|
379
|
+
<p>如果你的<a @click="$refs['key'].focus()">数据字段名</a>所属表为主表,或字段名已经是主表外键名时,不用设置该值</p>
|
|
380
|
+
<p>设置该参数是为了表单查询时可以通过外键id列而非具体值筛选数据</p>
|
|
381
|
+
<p>示例:</p>
|
|
382
|
+
<p>主表为t_userfiles表,别名为u,与t_gasbrand(气表品牌表)有关联关系,别名为g,数据字段名设置为g.f_gasbrand</p>
|
|
383
|
+
<p>如果指定了数据外键字段名,例如u.f_gasbrand_id,则使用数据外键字段名筛选数据,如果不指定该值,则使用<a @click="$refs['key'].focus()">数据字段名</a>筛选
|
|
384
|
+
</p>
|
|
385
|
+
</template>
|
|
386
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
387
|
+
</a-popover>
|
|
388
|
+
</a-input>
|
|
389
|
+
</a-form-model-item>
|
|
390
|
+
<a-form-model-item
|
|
391
|
+
style="margin-bottom: 0"
|
|
392
|
+
label="允许上传文件数量"
|
|
393
|
+
prop="accept">
|
|
394
|
+
<a-slider
|
|
395
|
+
v-model="item.acceptCount"
|
|
396
|
+
:min="1"
|
|
397
|
+
:max="20"
|
|
398
|
+
:marks="{ 1: '1', 3: '3', 5: '5', 10: '10', 15: '15', 20: '20'}"
|
|
399
|
+
:default-value="3"
|
|
400
|
+
/>
|
|
401
|
+
</a-form-model-item>
|
|
402
|
+
<a-form-model-item
|
|
403
|
+
label="上传至仓库"
|
|
404
|
+
prop="resUploadStock">
|
|
405
|
+
<a-select v-model="item.resUploadStock" placeholder="选择文件上传到的仓库" @change="changeStock">
|
|
406
|
+
<a-select-option v-for="stock in stockList" :key="stock.id">{{ stock.f_name }}</a-select-option>
|
|
407
|
+
</a-select>
|
|
408
|
+
</a-form-model-item>
|
|
409
|
+
<a-form-model-item
|
|
410
|
+
label="仓库扩展路径"
|
|
411
|
+
prop="pathKey">
|
|
412
|
+
<a-select v-model="item.pathKey" placeholder="仓库扩展路径">
|
|
413
|
+
<a-select-option v-for="pathKey in lowerPath" :key="pathKey.label">{{ pathKey.label }}</a-select-option>
|
|
414
|
+
</a-select>
|
|
415
|
+
</a-form-model-item>
|
|
416
|
+
<a-form-model-item label="允许上传文件类型" prop="accept" >
|
|
417
|
+
<a-select
|
|
418
|
+
mode="tags"
|
|
419
|
+
v-model="item.accept"
|
|
420
|
+
placeholder="指定文件类型,默认不限制,可选"
|
|
421
|
+
@change="itemAcceptChange">
|
|
422
|
+
<a-select-option v-for="type_item in fileType" :key="type_item.accept">{{ type_item.label }}
|
|
423
|
+
</a-select-option>
|
|
424
|
+
<a-popover slot="suffixIcon" title="关于允许上传文件类型" placement="right">
|
|
425
|
+
<template slot="content">
|
|
426
|
+
<p>指定允许上传的文件类型扩展名,如:.doc,.docx等,详情请参考<a target="_blank" @click="visitAcceptFile">允许上传文件类型</a>
|
|
427
|
+
</p>
|
|
428
|
+
</template>
|
|
429
|
+
<a-icon type="info-circle" style="color: rgba(0,0,0,.45)"/>
|
|
430
|
+
</a-popover>
|
|
431
|
+
</a-select>
|
|
432
|
+
</a-form-model-item>
|
|
433
|
+
</a-card>
|
|
434
|
+
</a-col>
|
|
435
|
+
</a-row>
|
|
436
|
+
<a-alert
|
|
437
|
+
style="margin-top: 5px"
|
|
438
|
+
v-if="dataModeArrayData.length === 0"
|
|
439
|
+
show-icon
|
|
440
|
+
message="错误:请至少选择一种数据模式"
|
|
441
|
+
type="error"/>
|
|
442
|
+
<a-alert
|
|
443
|
+
style="margin-top: 5px"
|
|
444
|
+
v-if="!(item.formType === 'file' || item.formType === 'image') && dataMode.addOrEditForm && !dataMode.sqlQueryItem"
|
|
445
|
+
show-icon
|
|
446
|
+
message="错误:如果要生成新增/修改表单项,必须勾选生成SQL查询项"
|
|
447
|
+
type="error"/>
|
|
448
|
+
<a-alert
|
|
449
|
+
style="margin-top: 5px"
|
|
450
|
+
v-if="(item.formType === 'file' || item.formType === 'image') && !(!dataMode.table && !dataMode.sqlQueryCondition && !dataMode.queryForm)"
|
|
451
|
+
show-icon
|
|
452
|
+
message="错误:上传类表单的数据模式只能选择 生成新增/修改表单项 和 生成SQL查询项 "
|
|
453
|
+
type="error"/>
|
|
454
|
+
<a-alert
|
|
455
|
+
style="margin-top: 5px"
|
|
456
|
+
v-if="dataMode.queryForm && !dataMode.sqlQueryCondition"
|
|
457
|
+
show-icon
|
|
458
|
+
message="提示:您没有勾选生成SQL查询表达式,渲染的表单项不会生成SQL查询条件"
|
|
459
|
+
type="info"/>
|
|
460
|
+
<a-alert
|
|
461
|
+
style="margin-top: 5px"
|
|
462
|
+
v-if="dataMode.table && !dataMode.sqlQueryItem"
|
|
463
|
+
show-icon
|
|
464
|
+
message="提示:您没有勾选生成SQL查询项,渲染的表格列不会绑定SQL结果集数据"
|
|
465
|
+
type="info"/>
|
|
466
|
+
</a-form-model>
|
|
467
|
+
</a-modal>
|
|
468
|
+
</template>
|
|
469
|
+
|
|
470
|
+
<script>
|
|
471
|
+
export default {
|
|
472
|
+
name: 'CreateQueryItem',
|
|
473
|
+
components: {},
|
|
474
|
+
computed: {
|
|
475
|
+
dataMode: function () {
|
|
476
|
+
const result = {
|
|
477
|
+
queryForm: false,
|
|
478
|
+
table: false,
|
|
479
|
+
addOrEditForm: false,
|
|
480
|
+
sqlQueryItem: false,
|
|
481
|
+
sqlQueryCondition: false
|
|
482
|
+
}
|
|
483
|
+
for (const item of this.dataModeArrayData) {
|
|
484
|
+
result[item] = true
|
|
485
|
+
}
|
|
486
|
+
return result
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
data () {
|
|
490
|
+
return {
|
|
491
|
+
computed: {
|
|
492
|
+
},
|
|
493
|
+
// 数据模式类型集合
|
|
494
|
+
dataModeArray: [
|
|
495
|
+
{ label: '生成查询表单项', value: 'queryForm' },
|
|
496
|
+
{ label: '生成表格列', value: 'table' },
|
|
497
|
+
{ label: '生成新增/修改表单项', value: 'addOrEditForm' },
|
|
498
|
+
{ label: '生成SQL查询项', value: 'sqlQueryItem' },
|
|
499
|
+
{ label: '生成SQL查询表达式', value: 'sqlQueryCondition' }
|
|
500
|
+
],
|
|
501
|
+
// 数据模式类型集合值
|
|
502
|
+
dataModeArrayData: ['queryForm', 'table', 'addOrEditForm', 'sqlQueryItem', 'sqlQueryCondition'],
|
|
503
|
+
// 表单项
|
|
504
|
+
item: {
|
|
505
|
+
key: '',
|
|
506
|
+
title: '',
|
|
507
|
+
slot: {},
|
|
508
|
+
rule: {
|
|
509
|
+
required: 'false'
|
|
510
|
+
},
|
|
511
|
+
formType: undefined,
|
|
512
|
+
accept: undefined,
|
|
513
|
+
addOrEdit: undefined,
|
|
514
|
+
selectKeyName: undefined,
|
|
515
|
+
resUploadStock: undefined,
|
|
516
|
+
acceptCount: undefined,
|
|
517
|
+
dataModeArray: []
|
|
518
|
+
},
|
|
519
|
+
// 数据仓库列表
|
|
520
|
+
stockList: [],
|
|
521
|
+
// 扩展目录
|
|
522
|
+
lowerPath: [],
|
|
523
|
+
// 选择的数据源类型
|
|
524
|
+
selectType: undefined,
|
|
525
|
+
// 必填控制
|
|
526
|
+
itemRules: {
|
|
527
|
+
key: [{ required: true, message: '请输入数据列名', trigger: 'blur' }],
|
|
528
|
+
title: [{ required: true, message: '请输入中文名称', trigger: 'blur' }],
|
|
529
|
+
selectType: [{ required: true, message: '请选择数据源类型', trigger: 'change' }],
|
|
530
|
+
selectKey: [{ required: true, message: '请输入数据源内容', trigger: 'blur' }],
|
|
531
|
+
slotValue: [{ required: true, message: '请输入文本溢出上限长度', trigger: 'blur' }],
|
|
532
|
+
slotKeyMap: [{ required: true, message: '请输入徽标字典键', trigger: 'blur' }],
|
|
533
|
+
silencePurpose: [{ required: true, message: '请选择字段用途', trigger: 'change' }],
|
|
534
|
+
silenceSource: [{ required: true, message: '请输入业务逻辑名称', trigger: 'blur' }],
|
|
535
|
+
group: [{ required: true, message: '请选择父节点', trigger: 'blur' }],
|
|
536
|
+
groupIndex: [{ required: true, message: '如果不是根节点请选择自己的父节点', trigger: 'blur' }]
|
|
537
|
+
},
|
|
538
|
+
// 字典键集合
|
|
539
|
+
option: []
|
|
540
|
+
}
|
|
541
|
+
},
|
|
542
|
+
mounted () {
|
|
543
|
+
},
|
|
544
|
+
props: {
|
|
545
|
+
visible: {
|
|
546
|
+
type: Boolean,
|
|
547
|
+
default: false
|
|
548
|
+
},
|
|
549
|
+
toEditJson: {
|
|
550
|
+
type: Object,
|
|
551
|
+
default: () => {}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
</script>
|
|
@@ -78,7 +78,8 @@ export default {
|
|
|
78
78
|
// 过滤出用于新增/修改场景的表单项
|
|
79
79
|
realJsonData: function () {
|
|
80
80
|
return this.jsonData.filter(function (item) {
|
|
81
|
-
return item.addOrEdit && item.addOrEdit !== 'no' &&
|
|
81
|
+
return item.addOrEdit && item.addOrEdit !== 'no' &&
|
|
82
|
+
item.addOrEdit !== 'silenceAdd' && !item.group && item.addOrEdit !== 'version'
|
|
82
83
|
})
|
|
83
84
|
},
|
|
84
85
|
// 过滤出多个下拉框分组级联得数据
|