ap-dev 1.2.23 → 1.2.25

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.
@@ -62,12 +62,12 @@
62
62
 
63
63
  <!--选择字段-->
64
64
  <el-dialog title="选择字段" :visible.sync="fieldDialogVisible" width="60%">
65
- <dev-db-table-dialog @dataChange="dataChangeEvent"/>
65
+ <dev-db-table-dialog @dataChange="dataChangeEvent" style="height: 400px"/>
66
66
 
67
67
  <span slot="footer" class="dialog-footer">
68
- <el-button @click="fieldDialogVisible = false">取 消</el-button>
69
- <el-button type="primary" @click="selectField">确 定</el-button>
70
- </span>
68
+ <el-button @click="fieldDialogVisible = false">取 消</el-button>
69
+ <el-button type="primary" @click="selectField">确 定</el-button>
70
+ </span>
71
71
  </el-dialog>
72
72
  </ap-container>
73
73
  </template>
@@ -241,7 +241,7 @@ export default {
241
241
  this.fieldDialogVisible = true
242
242
  }
243
243
  },
244
- 'edit', 'del', 'cancel', 'refresh', 'save', 'separator',
244
+ 'edit', 'del', 'refresh', 'save', 'separator',
245
245
  {
246
246
  btnType: 'primary',
247
247
  text: '上移',
@@ -359,9 +359,22 @@ export default {
359
359
  },
360
360
  },
361
361
  created() {
362
+ this.getSchema();
362
363
  this.loadTreeData();
363
364
  },
364
365
  methods: {
366
+ getSchema() {
367
+ this.$request({
368
+ url: '/apd/db/DevDbTable/getSchema',
369
+ method: 'post',
370
+ data: {
371
+ sourceId: this.userConfig.fdSourceId
372
+ }
373
+ }).then(response => {
374
+ this.tableSchema = response.data;
375
+ this.headerName = "[" + response.data + "] - 表";
376
+ })
377
+ },
365
378
  // 左侧树:加载数据
366
379
  loadTreeData() {
367
380
  this.loadingTreeFlag = true
@@ -377,10 +390,6 @@ export default {
377
390
  parentKey: "fdParentId",
378
391
  childrenKey: "children",
379
392
  });
380
- if (this.typeTreeList.length > 0) {
381
- this.tableSchema = this.typeTreeList[0].tableSchema;
382
- this.headerName = "[" + this.typeTreeList[0].tableSchema + "] - 表";
383
- }
384
393
  }).finally(() => {
385
394
  this.loadingTreeFlag = false
386
395
  })
@@ -714,7 +723,7 @@ export default {
714
723
  2、多字段:选择多个字段组成联合索引。("idx_multi"开头)<br>
715
724
  <b>三、唯一索引:</b><br>
716
725
  1、单字段:索引的值必须唯一,NULL可以出现多次。("idx_pk_single"开头)<br>
717
- 2、多字段:选择多个字段组成联合唯一索引。("idx_pk_single"开头)<br>
726
+ 2、多字段:选择多个字段组成联合唯一索引。("idx_pk_multi"开头)<br>
718
727
  `
719
728
  this.$alert(msg, '索引说明', {dangerouslyUseHTMLString: true})
720
729
  }
@@ -1,233 +1,301 @@
1
1
  <template>
2
- <ap-container style="height: 500px;">
3
- <ap-aside margin="0000">
4
- <div class="layout-aside-header">
5
- <div class="layout-aside-header-title">
6
- 字段类型
7
- </div>
8
- </div>
9
- <div v-loading="loadingTreeFlag" class="layout-aside-content">
10
- <el-input v-model="filterText" placeholder="关键字过滤" />
11
-
12
- <el-tree
13
- ref="typeTree"
14
- class="filter-tree"
15
- node-key="fdId"
16
- :data="typeTreeList"
17
- :props="defaultProps"
18
- default-expand-all
19
- show-checkbox
20
- :check-on-click-node="true"
21
- :highlight-current="true"
22
- :expand-on-click-node="false"
23
- :check-strictly="false"
24
- :filter-node-method="filterNode"
25
- @check="nodeClickEvent"
26
- />
27
- </div>
28
- </ap-aside>
29
2
  <ap-container>
30
- <ap-header>
31
- <el-form
32
- ref="searchFormRef"
33
- :model="searchForm"
34
- :inline="true"
35
- class="layout-header-form"
36
- >
37
- <el-form-item label="搜索:" class="layout-header-form-item" prop="likeStr">
38
- <el-input v-model="searchForm.likeStr" placeholder="字段名/注释" />
39
- </el-form-item>
40
- </el-form>
41
- <el-button type="primary" @click="searchEvent">查询</el-button>
42
- </ap-header>
43
- <ap-main>
44
- <ap-table ref="devDbFieldGrid" :options.sync="tableOpt" />
45
- </ap-main>
3
+ <ap-aside margin="0000">
4
+ <ap-aside-tree ref="typeTree" :options.sync="treeOptions">
5
+ <el-form slot="form" ref="tDevDbFieldType" :inline="true" label-width="80px"
6
+ :model="tDevDbFieldTypeForm" :rules="tDevDbFieldTypeRules">
7
+ <el-form-item label="父类别">
8
+ <el-select v-model="tDevDbFieldTypeForm.fdParentId" filterable placeholder="请选择父节点">
9
+ <el-option label="无" value=""/>
10
+ <el-option v-for="item in typeList" :key="item.fdId" :label="item.fdName" :value="item.fdId"/>
11
+ </el-select>
12
+ </el-form-item>
13
+
14
+ <el-form-item label="类别名称" prop="fdName">
15
+ <el-input v-model="tDevDbFieldTypeForm.fdName"/>
16
+ </el-form-item>
17
+
18
+ <el-form-item label="排序" prop="fdSort">
19
+ <el-input-number v-model="tDevDbFieldTypeForm.fdSort" controls-position="right"/>
20
+ </el-form-item>
21
+ </el-form>
22
+
23
+ <span slot="tree" slot-scope="scope">
24
+ {{ scope.data.fdName }}
25
+ </span>
26
+ </ap-aside-tree>
27
+ </ap-aside>
28
+ <ap-container>
29
+ <ap-header margin="0000" style="padding: 0">
30
+ <el-form ref="searchFormRef" :model="searchForm" :inline="true" class="layout-header-form">
31
+ <el-form-item label="" class="layout-header-form-item" prop="likeStr">
32
+ <el-input v-model="searchForm.likeStr" placeholder="字段名/注释,模糊匹配"/>
33
+ </el-form-item>
34
+ </el-form>
35
+ <el-button type="primary" @click="searchEvent">查询</el-button>
36
+ </ap-header>
37
+ <ap-main margin="0000" style="padding: 0">
38
+ <ap-table ref="devDbFieldGrid" :options.sync="tableOpt"/>
39
+ </ap-main>
40
+ </ap-container>
41
+
46
42
  </ap-container>
47
- </ap-container>
48
43
  </template>
49
44
 
50
45
  <script>
46
+
51
47
  export default {
52
- name: 'DevDbTableDialog',
53
- data() {
54
- const columns = [
55
- {
56
- prop: 'fdFieldTypeId',
57
- label: '字段类型',
58
- type: 'select',
59
- selectOptionsRemote: 'typeList',
60
- selectOptionsKey: { label: 'fdName', value: 'fdId' }
61
- },
62
- {
63
- prop: 'fdName',
64
- label: '字段名称',
65
- type: 'input'
66
- },
67
- {
68
- prop: 'fdComment',
69
- label: '默认注释',
70
- type: 'input'
71
- }, {
72
- prop: 'fdDataType',
73
- label: '数据类型',
74
- type: 'select',
75
- selectOptions: [
76
- {
77
- label: '常用',
78
- options: [
79
- { label: 'char(255)', value: 'char' },
80
- { label: 'varchar(6.5万)', value: 'varchar' },
81
- { label: 'tinyint(255)', value: 'tinyint' },
82
- { label: 'datetime(年月日时分秒)', value: 'datetime' }
83
- ]
84
- },
85
- {
86
- label: '字符串',
87
- options: [
88
- { label: 'char(255)', value: 'char' },
89
- { label: 'varchar(6.5万)', value: 'varchar' },
90
- { label: 'text(长文本)', value: 'text' }
91
- ]
92
- },
93
- {
94
- label: '整型数值',
95
- options: [
96
- { label: 'tinyint(255)', value: 'tinyint' },
97
- { label: 'smallint(6.5万)', value: 'smallint' },
98
- { label: 'mediumint(1.6千万)', value: 'mediumint' },
99
- { label: 'int(4.2亿)', value: 'int' },
100
- { label: 'bigint(极大)', value: 'bigint' }
101
- ]
102
- },
103
- {
104
- label: '浮点数值',
105
- options: [
106
- { label: 'float(单精度)', value: 'float' },
107
- { label: 'double(双精度)', value: 'double' },
108
- { label: 'decimal(小数值)', value: 'decimal' }
109
- ]
110
- },
111
- {
112
- label: '日期时间',
113
- options: [
114
- { label: 'date(年月日)', value: 'date' },
115
- { label: 'time(时分秒)', value: 'time' },
116
- { label: 'year(年)', value: 'year' },
117
- { label: 'datetime(年月日时分秒)', value: 'datetime' },
118
- { label: 'timestamp(时间戳)', value: 'timestamp' }
119
- ]
120
- }
121
- ],
122
- selectFilterable: true,
123
- selectIsGroup: true,
124
- selectPlaceholder: '选择数据类型'
125
- }, {
126
- prop: 'fdSort',
127
- label: '排序',
128
- type: 'inputNumber'
129
- }]
130
- const tableOpt = {
131
- title: '字段列表',
132
- columns: columns,
133
- dataUrl: '/apd/db/DevDbField/getTDevDbFieldGridList',
134
- initData: true,
135
- params: () => {
136
- return {
137
- fdFieldTypeIds: this.selectedFieldTypeIds,
138
- likeStr: this.searchForm.likeStr
48
+ name: 'DevDbTableDialog',
49
+ data() {
50
+ const columns = [
51
+ {
52
+ prop: 'fdFieldTypeId',
53
+ label: '字段所属分组',
54
+ type: 'select',
55
+ addDefaultValue: this.addDefaultValueFn,
56
+ selectOptionsRemote: 'typeList',
57
+ selectOptionsKey: {label: 'fdName', value: 'fdId'},
58
+ rules: [
59
+ {required: true, message: '请选择分组'}
60
+ ]
61
+ },
62
+ {
63
+ prop: 'fdName',
64
+ label: '字段名称',
65
+ type: 'input',
66
+ rules: [
67
+ {required: true, message: '字段名称必填'},
68
+ {min: 1, max: 30, message: '长度在 1 到 30 个字符'}
69
+ ]
70
+ },
71
+ {
72
+ prop: 'fdComment',
73
+ label: '默认注释',
74
+ type: 'input',
75
+ rules: [
76
+ {required: true, message: '字段注释必填'},
77
+ {min: 1, max: 30, message: '长度在 1 到 30 个字符'}
78
+ ]
79
+ }, {
80
+ prop: 'fdDataType',
81
+ label: '数据类型',
82
+ type: 'select',
83
+ selectOptions: [
84
+ {
85
+ label: '常用',
86
+ options: [
87
+ {label: 'char(255)', value: 'char'},
88
+ {label: 'varchar(6.5万)', value: 'varchar'},
89
+ {label: 'tinyint(255)', value: 'tinyint'},
90
+ {label: 'datetime(年月日时分秒)', value: 'datetime'}
91
+ ]
92
+ },
93
+ {
94
+ label: '字符串',
95
+ options: [
96
+ {label: 'char(255)', value: 'char'},
97
+ {label: 'varchar(6.5万)', value: 'varchar'},
98
+ {label: 'text(长文本)', value: 'text'}
99
+ ]
100
+ },
101
+ {
102
+ label: '整型数值',
103
+ options: [
104
+ {label: 'tinyint(255)', value: 'tinyint'},
105
+ {label: 'smallint(6.5万)', value: 'smallint'},
106
+ {label: 'mediumint(1.6千万)', value: 'mediumint'},
107
+ {label: 'int(4.2亿)', value: 'int'},
108
+ {label: 'bigint(极大)', value: 'bigint'}
109
+ ]
110
+ },
111
+ {
112
+ label: '浮点数值',
113
+ options: [
114
+ {label: 'float(单精度)', value: 'float'},
115
+ {label: 'double(双精度)', value: 'double'},
116
+ {label: 'decimal(小数值)', value: 'decimal'}
117
+ ]
118
+ },
119
+ {
120
+ label: '日期时间',
121
+ options: [
122
+ {label: 'date(年月日)', value: 'date'},
123
+ {label: 'time(时分秒)', value: 'time'},
124
+ {label: 'year(年)', value: 'year'},
125
+ {label: 'datetime(年月日时分秒)', value: 'datetime'},
126
+ {label: 'timestamp(时间戳)', value: 'timestamp'}
127
+ ]
128
+ }
129
+ ],
130
+ selectFilterable: true,
131
+ selectIsGroup: true,
132
+ selectPlaceholder: '选择数据类型',
133
+ rules: [
134
+ {required: true, message: '数据类型必选'}
135
+ ]
136
+ }, {
137
+ prop: 'fdSort',
138
+ label: '排序',
139
+ type: 'inputNumber',
140
+ inputNumberMin: 0,
141
+ // inputNumberMax: 10,
142
+ hide: true,
143
+ sortable: true,
144
+ rules: [
145
+ {required: true, message: '请输入排序'}
146
+ ],
147
+ addDefaultValue: 0
148
+ }, {
149
+ prop: 'fdDeleted',
150
+ label: '删除',
151
+ type: 'input',
152
+ hide: true,
153
+ addDefaultValue: 0
154
+ }]
155
+ let tools = ['add', 'edit', 'del', 'cancel', 'refresh', 'save', 'separator',
156
+ {
157
+ btnType: 'primary',
158
+ text: '上移',
159
+ icon: 'el-icon-top',
160
+ onClick: () => {
161
+ this.sortBefore()
162
+ }
163
+ },
164
+ {
165
+ btnType: 'primary',
166
+ text: '下移',
167
+ icon: 'el-icon-bottom',
168
+ onClick: () => {
169
+ this.sortAfter()
170
+ }
171
+ },
172
+ {
173
+ btnType: 'primary',
174
+ text: '一键排序',
175
+ icon: 'el-icon-s-operation',
176
+ onClick: () => {
177
+ this.doSortByIndex()
178
+ }
179
+ }]
180
+ const tableOpt = {
181
+ title: '字段列表',
182
+ columns: columns,
183
+ pagination: {
184
+ pageSizes: [30, 60, 90],
185
+ pageSize: 30
186
+ },
187
+ dataUrl: '/apd/db/DevDbField/getTDevDbFieldGridList',
188
+ saveUrl: '/apd/db/DevDbField/saveTDevDbFieldGridData',
189
+ editPk: 'fdId',
190
+ deletePk: 'fdId',
191
+ deleteUrl: '/apd/db/DevDbField/deleteTDevDbFieldByFdId',
192
+ toolbarBtn: ['add', 'edit', 'del', 'refresh', 'save'],
193
+ initData: false,
194
+ beforeAdd: this.beforeAddFn,
195
+ params: () => {
196
+ return {
197
+ fdFieldTypeIds: this.selectedFieldTypeIds,
198
+ likeStr: this.searchForm.likeStr
199
+ }
200
+ },
201
+ selectionChangeEvent: selection => {
202
+ // 返回给父节点
203
+ this.$emit('dataChange', selection)
204
+ }
139
205
  }
140
- },
141
- selectionChangeEvent: selection => {
142
- // 返回给父节点
143
- this.$emit('dataChange', selection)
144
- }
145
- }
146
206
 
147
- return {
148
- // ----- 左侧树 -----
149
- selectedFieldTypeIds: '',
150
- loadingTreeFlag: false,
151
- filterText: '',
152
- typeTreeList: [],
153
- defaultProps: {
154
- children: 'children',
155
- label: 'fdName'
156
- },
157
- // ----- 表格 -----
158
- searchForm: {
159
- listStr: ''
160
- },
161
- tableOpt: tableOpt
162
- }
163
- },
164
- watch: {
165
- filterText(val) {
166
- this.$refs.typeTree.filter(val)
167
- }
168
- },
169
- created() {
170
- this.loadTreeData()
171
- },
172
- methods: {
173
- // 左侧树:加载数据
174
- loadTreeData() {
175
- this.loadingTreeFlag = true
176
- this.$request({
177
- url: '/apd/db/DevDbField/getDbFieldTypeList',
178
- method: 'post'
179
- }).then(response => {
180
- this.typeList = JSON.parse(JSON.stringify(response.data))
181
- this.typeTreeList = this.handelTreeData(response.data)
182
- }).finally(() => {
183
- this.loadingTreeFlag = false
184
- })
185
- },
186
- // 左侧树:初始化数据
187
- initTreeData() {
188
- // 重置当前选择节点
189
- this.$refs.typeTree.setCurrentKey()
190
- this.loadTreeData()
191
- },
192
- // 左侧树:过滤节点
193
- filterNode(value, data) {
194
- if (!value) return true
195
- return data.fdName.indexOf(value) !== -1
207
+ return {
208
+ // ----- 左侧树 -----
209
+ typeTreeList: [],
210
+ selectedFieldTypeIds: '',
211
+ treeOptions: this.getTreeOption(),
212
+ tDevDbFieldTypeForm: {
213
+ fdName: '',
214
+ fdParentId: '',
215
+ fdId: '',
216
+ fdSort: undefined
217
+ },
218
+ tDevDbFieldTypeRules: {},
219
+
220
+ // ----- dialog -----
221
+ typeList: [],
222
+ dialogVisible: false,
223
+ dialogTitle: '', // dialog标题
224
+ isAddDialog: true, // 添加类型dialog
225
+ dialogForm: {
226
+ fdName: '',
227
+ fdParentId: '',
228
+ fdId: '',
229
+ fdSort: undefined
230
+ },
231
+ dialogFormRules: {
232
+ fdSort: [
233
+ {type: 'number', message: '请输入数字', trigger: 'change'}
234
+ ],
235
+ fdName: [
236
+ {required: true, message: '请输入类型名称', trigger: 'blur'},
237
+ {min: 1, max: 10, message: '长度在 1 到 10 个字符', trigger: 'blur'}
238
+ ]
239
+ },
240
+ // ----- 表格 -----
241
+ searchForm: {
242
+ listStr: ''
243
+ },
244
+ tableOpt: tableOpt
245
+ }
196
246
  },
197
- // 选择勾选事件
198
- nodeClickEvent(data, node, comp) {
199
- const parentKeys = this.$refs.typeTree.getHalfCheckedKeys()
200
- const selectKeys = this.$refs.typeTree.getCheckedKeys(false)
201
- this.selectedFieldTypeIds = parentKeys.concat(selectKeys).join(',')
202
- this.$refs.devDbFieldGrid.refresh()
247
+ created() {
203
248
  },
204
- // 左侧树:转换成tree要求的数据格式
205
- handelTreeData(data) {
206
- const newList = []
207
- for (let i = 0; i < data.length; i++) {
208
- const fdParentId = data[i].fdParentId
209
- // 根节点
210
- if (!fdParentId) {
211
- newList.push(data[i])
212
- } else {
213
- // 子节点
214
- for (let j = 0; j < data.length; j++) {
215
- // 查找父节点
216
- if (data[j].fdId == fdParentId) {
217
- if (!data[j].children) {
218
- data[j].children = []
219
- }
220
- data[j].children.push(data[i])
249
+ methods: {
250
+ // 左侧树:配置
251
+ getTreeOption() {
252
+ let treeOptions = {
253
+ title: "字段分组",
254
+ toolbarBtn: [],
255
+ dialogTitle: "数据库字段分组",
256
+ showCheckbox: true,
257
+ defaultExpandAll: true,
258
+ onCheck: (data, node, comp, halfCheckedKeys, checkedKeys) => {
259
+ let treeRef = this.$refs.typeTree.getTreeRef();
260
+ const parentKeys = treeRef.getHalfCheckedKeys()
261
+ const selectKeys = treeRef.getCheckedKeys(false)
262
+ this.selectedFieldTypeIds = parentKeys.concat(selectKeys).join(',')
263
+ this.$refs.devDbFieldGrid.refresh()
264
+ },
265
+ loadOptions: {
266
+ url: "/apd/db/DevDbField/getDbFieldTypeList",
267
+ treeKey: {
268
+ idKey: "fdId",
269
+ parentKey: "fdParentId",
270
+ childrenKey: "children",
271
+ label: "fdName"
272
+ },
273
+ success: (response) => {
274
+ this.typeList = JSON.parse(JSON.stringify(response.data))
275
+ },
276
+ },
277
+ };
278
+
279
+ return treeOptions;
280
+ },
281
+
282
+ // 添加行:数据类型默认值
283
+ beforeAddFn() {
284
+ const fdFieldTypeIds = this.selectedFieldTypeIds
285
+ if (fdFieldTypeIds == null || fdFieldTypeIds == '') {
286
+ this.$message.error(`请先选择字段类型!`)
287
+ return false
221
288
  }
222
- }
289
+ return true
290
+ },
291
+ addDefaultValueFn() {
292
+ let currentNode = this.$refs.typeTree.getTreeRef().getCurrentNode() || {}
293
+ return currentNode.fdId
294
+ },
295
+ searchEvent() {
296
+ this.$refs.devDbFieldGrid.refresh()
223
297
  }
224
- }
225
- return newList
226
- },
227
- searchEvent() {
228
- this.$refs.devDbFieldGrid.refresh()
229
298
  }
230
- }
231
299
  }
232
300
  </script>
233
301