@dypnb/dev-tools 1.0.4 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,568 @@
1
+ import { strCase } from "../utils/index.js";
2
+
3
+ // template.js
4
+ export default {
5
+ tablePageTemplate: (config = {}) => {
6
+ const { name } = config;
7
+ const titlCease = strCase(name);
8
+ return `<template>
9
+ <div class="app-container">
10
+ <CoustomTable
11
+ :queryFormJson="queryFormJson"
12
+ :pageButtonsJson="pageButtonsJson"
13
+ :tableJson="tableJson"
14
+ :tableData="tableData"
15
+ @onPageButton="handlerPageButton"
16
+ @onButton="handlerButton"
17
+ @onSearch="handlerSearch"
18
+ @onTableRowClick="handlerTableRowClick"
19
+ >
20
+ </CoustomTable>
21
+
22
+ <CoustomFormDialog
23
+ ref="formDialog"
24
+ :visible.sync="dialogVisible"
25
+ :dialogJson="dialogJson"
26
+ :initData="initFormData"
27
+ @onSubmit="handlerSubmit"
28
+ ></CoustomFormDialog>
29
+ </div>
30
+ </template>
31
+ <script>
32
+ import CoustomTable from "@/components/CoustomTable";
33
+ import CoustomFormDialog from "@/components/CoustomFormDialog";
34
+ import { TableJson, QueryFormJson, PageButtonsJson, DialogJson } from "./constants";
35
+ import {
36
+ getDevApiIotClassesList,
37
+ postDevApiIotClasses,
38
+ getDevApiIotClassesClassId,
39
+ deleteDevApiIotClassesClassId,
40
+ putDevApiIotClasses
41
+ } from "@/api/iot/classes-controller.js";
42
+ import {
43
+ getDevApiIotPackagesList,
44
+ } from "@/api/iot/packages-controller.js";
45
+ export default {
46
+ name: '${titlCease}',
47
+ components: {
48
+ CoustomTable,
49
+ CoustomFormDialog
50
+ },
51
+ data() {
52
+ return {
53
+ queryFormJson: QueryFormJson,
54
+ pageButtonsJson: PageButtonsJson,
55
+ tableJson: TableJson,
56
+ dialogJson: DialogJson,
57
+ tableData: [],
58
+ // 总条数
59
+ total: 0,
60
+ // 查询参数
61
+ queryParams: {
62
+ pageNum: 1,
63
+ pageSize: 10,
64
+ },
65
+ dialogVisible: false,
66
+ initFormData: {},
67
+ }
68
+ },
69
+ created() {
70
+ },
71
+ mounted() {
72
+ this.getList();
73
+ },
74
+ computed: {
75
+ packageName() {
76
+ const { query } = this.$route;
77
+ return query.packageName
78
+ }
79
+ },
80
+ methods: {
81
+ async getPackageData() {
82
+ try {
83
+ const { rows = [] } = await getDevApiIotPackagesList();
84
+ return rows.map(item => {
85
+ return {
86
+ value: item.packageCode,
87
+ label: item.packageDispname,
88
+ }
89
+ })
90
+ } catch (error) {
91
+ return []
92
+ }
93
+ },
94
+
95
+ async handlerSubmit(formData) {
96
+ let params = {
97
+ ...formData,
98
+ packageName: this.packageName
99
+ };
100
+ let msgText = '新增';
101
+ let func = postDevApiIotClasses;
102
+ if (this.dialogJson.type === 'Edit') {
103
+ params.classId = this.initFormData.classId;
104
+ msgText = '编辑';
105
+ func = putDevApiIotClasses;
106
+ }
107
+ try {
108
+ const { code } = await func(params);
109
+ if (code === 200) {
110
+ this.dialogVisible = false;
111
+ this.getList();
112
+ this.$modal.msgSuccess(msgText + "成功");
113
+ }
114
+ this.$refs.formDialog.resetLoading();
115
+ } catch (error) {
116
+ // 接口调用失败重置 loading
117
+ this.$refs.formDialog.resetLoading();
118
+ }
119
+ },
120
+
121
+ /** 查询表集合 */
122
+ getList(queryParams = {}) {
123
+ this.loading = true;
124
+ let queryData = {
125
+ ...queryParams,
126
+ ...this.queryParams,
127
+ packageName: this.packageName
128
+ }
129
+ getDevApiIotClassesList(queryData).then(response => {
130
+ this.tableData = response.rows;
131
+ this.total = response.total;
132
+ this.loading = false;
133
+ });
134
+ },
135
+
136
+ handlerTableRowClick(item) {
137
+ console.log('object :>>item ', item);
138
+ this.$router.push({
139
+ path: '/iot/packages/classes/detail',
140
+ query: {
141
+ classId: item.classId
142
+ }
143
+ })
144
+ },
145
+
146
+ // 搜索事件
147
+ handlerSearch(searchParams) {
148
+ this.queryParams = {
149
+ pageNum: 1,
150
+ pageSize: 10,
151
+ },
152
+ this.getList(searchParams);
153
+ },
154
+
155
+ //新增按钮事件
156
+ async handlerPageButton(item) {
157
+ const { type } = item;
158
+ if (type === 'Add') {
159
+ this.initFormData = {};
160
+ this.dialogJson.type = 'Add';
161
+ const packageData = await this.getPackageData()
162
+ this.$set(this.dialogJson.formJson.formItemJson[0], 'option',packageData )
163
+ console.log('object :>> ', this.dialogJson);
164
+ this.dialogVisible = true;
165
+ }
166
+
167
+ if (type === 'Delete') {
168
+ const tableIds = row.tableId || this.ids;
169
+ this.$modal.confirm('是否确认删除表编号为"' + tableIds + '"的数据项?').then(function () {
170
+ return delTable(tableIds);
171
+ }).then(() => {
172
+ this.getList();
173
+ this.$modal.msgSuccess("删除成功");
174
+ }).catch(() => { });
175
+ }
176
+ },
177
+
178
+ async getInfo(id) {
179
+ const { code, data } = await getDevApiIotClassesClassId(id);
180
+ if (code === 200) {
181
+
182
+ this.initFormData = data;
183
+ this.dialogJson.type = 'Edit';
184
+ this.dialogVisible = true;
185
+ }
186
+ },
187
+
188
+ deleteItem(id) {
189
+ this.$modal.confirm('是否确认删除该数据项?').then(function () {
190
+ return deleteDevApiIotClassesClassId(id);
191
+ }).then(() => {
192
+ this.getList();
193
+ this.$modal.msgSuccess("删除成功");
194
+ }).catch(() => { });
195
+ },
196
+
197
+ handlerButton(btnItem) {
198
+ const { row, item } = btnItem;
199
+ const { type } = item;
200
+ if (type === 'Edit') {
201
+ this.getInfo(row.classId);
202
+ }
203
+
204
+ if (type === 'Delete') {
205
+ this.deleteItem(row.classId);
206
+ }
207
+ },
208
+ },
209
+ }
210
+ </script>
211
+ <style scoped lang='scss'></style>`
212
+ },
213
+
214
+ constantsTemplate: () => {
215
+ return `export const QueryFormJson = {
216
+ formOption: {
217
+ inline: true,
218
+ labelWidth: "100px",
219
+ size: 'small',
220
+ },
221
+ formItemJson: [
222
+ {
223
+ label: "类中文名称",
224
+ prop: "classDispname",
225
+ type: "Input",
226
+ isEnter: true,
227
+ options: {
228
+ clearable: true,
229
+ placeholder: '请输入类名称',
230
+ }
231
+ }
232
+ ],
233
+ buttonJson: {
234
+ type: 'Search',
235
+ list: [
236
+ {
237
+ label: "搜索",
238
+ type: 'Query',
239
+ options: {
240
+ icon: "el-icon-search",
241
+ size: "mini",
242
+ type: "primary"
243
+ }
244
+ },
245
+ {
246
+ label: "重置",
247
+ type: 'Reset',
248
+ options: {
249
+ icon: "el-icon-refresh",
250
+ size: "mini",
251
+ }
252
+ },
253
+ ]
254
+
255
+ }
256
+ }
257
+
258
+ export const PageButtonsJson = {
259
+ rowJson: {
260
+ gutter: 10,
261
+ },
262
+ buttonList: [
263
+ {
264
+ span: 1.5,
265
+ label: '新增',
266
+ permi: '',
267
+ type: 'Add',
268
+ options: [
269
+ {
270
+ icon: "el-icon-plus",
271
+ plain: true,
272
+ size: "mini",
273
+ type: "primary",
274
+ },
275
+
276
+ ]
277
+ }
278
+ ]
279
+ }
280
+
281
+ export const TableJson = {
282
+ columnJson: {
283
+ showSelect: false,
284
+ showIndex: true,
285
+ data: [
286
+ {
287
+ type: "index",
288
+ width: "55",
289
+ align: "left",
290
+ headerAlign: "left",
291
+ label: "序号"
292
+ },
293
+ {
294
+ align: "left",
295
+ headerAlign: "left",
296
+ label: "类中文名称",
297
+ prop: "classDispname",
298
+ showOverflowTooltip: true,
299
+ isLink: true,
300
+ },
301
+ {
302
+ align: "left",
303
+ headerAlign: "left",
304
+ label: "类英文名称",
305
+ prop: "classCode",
306
+ showOverflowTooltip: true,
307
+ },
308
+ {
309
+ align: "left",
310
+ headerAlign: "left",
311
+ label: "类类型",
312
+ prop: "classesType",
313
+ showOverflowTooltip: true,
314
+ },
315
+ {
316
+ align: "left",
317
+ headerAlign: "left",
318
+ label: "访问类型",
319
+ prop: "accessType",
320
+ showOverflowTooltip: true,
321
+ },
322
+ {
323
+ align: "left",
324
+ headerAlign: "left",
325
+ label: "实例存储表名称",
326
+ prop: "delFlag",
327
+ showOverflowTooltip: true,
328
+ },
329
+ {
330
+ align: "left",
331
+ headerAlign: "left",
332
+ label: "备注",
333
+ prop: "remark",
334
+ showOverflowTooltip: true,
335
+ },
336
+ {
337
+ align: "left",
338
+ headerAlign: "left",
339
+ label: "创建时间",
340
+ prop: "createTime",
341
+ showOverflowTooltip: true,
342
+ },
343
+ {
344
+ align: "center",
345
+ headerAlign: "center",
346
+ label: "操作",
347
+ type: "func",
348
+ buttonList: [
349
+ {
350
+ label: "编辑",
351
+ type: 'Edit',
352
+ permi: '',
353
+ options: {
354
+ icon: "el-icon-edit",
355
+ size: "mini",
356
+ type: "text",
357
+ }
358
+ },
359
+ {
360
+ label: "删除",
361
+ type: 'Delete',
362
+ permi: '',
363
+ options: {
364
+ icon: "el-icon-delete",
365
+ size: "mini",
366
+ type: "text",
367
+ }
368
+ },
369
+ ],
370
+ },
371
+ ],
372
+ },
373
+ };
374
+
375
+ export const DialogJson = {
376
+ type: 'Add',
377
+ title: "类",
378
+ options: {
379
+ width: "600px",
380
+ appendToBody: true,
381
+ destroyOnClose: true,
382
+ closeOnClickModal: false,
383
+ },
384
+ buttonList: [
385
+ {
386
+ label: "确定",
387
+ type: 'Ok',
388
+ permi: '',
389
+ options: {
390
+ type: "primary",
391
+ }
392
+ },
393
+ {
394
+ label: "取消",
395
+ type: 'Cancel',
396
+ permi: '',
397
+ options: {
398
+ type: "",
399
+ }
400
+ },
401
+ ],
402
+ formJson: {
403
+ // 表单设置
404
+ formOption: {
405
+ inline: false,
406
+ labelWidth: "120px",
407
+ size: 'small',
408
+ },
409
+ // 表单项
410
+ formItemJson: [
411
+ // {
412
+ // label: "包编码",
413
+ // prop: "packageCode",
414
+ // type: "Select",
415
+ // rules: [{ required: true, message: "请选择包编码", trigger: "change" }],
416
+ // options: {
417
+ // clearable: true,
418
+ // placeholder: "请选择包编码",
419
+ // },
420
+ // option: [],
421
+ // },
422
+ {
423
+ label: "类中文名称",
424
+ prop: "classDispname",
425
+ type: "Input",
426
+ rules: [
427
+ { required: true, message: '请输入类中文名称', trigger: 'blur' },
428
+ ],
429
+ options: {
430
+ clearable: true,
431
+ placeholder: '请输入类中文名称',
432
+ }
433
+ },
434
+ {
435
+ label: "类英文名称",
436
+ prop: "className",
437
+ type: "Input",
438
+ rules: [
439
+ { required: true, message: '请输入类英文名称', trigger: 'blur' },
440
+ {
441
+ required: true,
442
+ validator: (rule, value, callback) => {
443
+ const reg = /^[a-zA-Z]{1}\w*$/;
444
+ if (!reg.test(value)) {
445
+ callback(
446
+ new Error(
447
+ "请输入以字母(不区分大小写)、数字、下划线(_)随意组合的字符串"
448
+ )
449
+ );
450
+ }
451
+ callback();
452
+ },
453
+ trigger: ["blur"],
454
+ },
455
+ ],
456
+ options: {
457
+ clearable: true,
458
+ placeholder: '请输入类英文名称',
459
+ }
460
+ },
461
+ {
462
+ label: "类类型",
463
+ prop: "classesType",
464
+ type: "Select",
465
+ rules: [{ required: true, message: "请选择类类型", trigger: "change" }],
466
+ options: {
467
+ clearable: true,
468
+ placeholder: "请选择类型",
469
+ },
470
+ option: [
471
+ {
472
+ value: '继承',
473
+ label: '继承',
474
+ },
475
+ {
476
+ value: '虚类',
477
+ label: '虚类',
478
+ },
479
+ {
480
+ value: '实体类',
481
+ label: '实体类',
482
+ },
483
+ ],
484
+ },
485
+ {
486
+ label: "继承父类code",
487
+ prop: "classesExtends",
488
+ type: "Input",
489
+ rules: [
490
+ { required: true, message: '请输入继承父类code', trigger: 'blur' },
491
+ ],
492
+ options: {
493
+ clearable: true,
494
+ placeholder: '请输入继承父类code',
495
+ }
496
+ },
497
+ {
498
+ label: "访问类型",
499
+ prop: "accessType",
500
+ type: "Select",
501
+ rules: [{ required: true, message: "请选择访问类型", trigger: "change" }],
502
+ options: {
503
+ clearable: true,
504
+ placeholder: "请选择访问类型",
505
+ },
506
+ option: [
507
+ {
508
+ value: 'default',
509
+ label: 'default',
510
+ },
511
+ {
512
+ value: 'public',
513
+ label: 'public',
514
+ },
515
+ {
516
+ value: 'protected',
517
+ label: 'protected',
518
+ },
519
+ {
520
+ value: 'private',
521
+ label: 'private',
522
+ },
523
+ ],
524
+ },
525
+ {
526
+ label: "实例存储表名称",
527
+ prop: "objTableName",
528
+ type: "Input",
529
+ rules: [
530
+ { required: true, message: '请输入实例存储表名称', trigger: 'blur' },
531
+ ],
532
+ options: {
533
+ clearable: true,
534
+ placeholder: '请输入实例存储表名称',
535
+ }
536
+ },
537
+ {
538
+ label: "视图样式",
539
+ prop: "viewStyle",
540
+ type: "Input",
541
+ rules: [
542
+ { required: false, message: '请输入视图样式', trigger: 'blur' },
543
+ ],
544
+ options: {
545
+ clearable: true,
546
+ placeholder: '请输入视图样式',
547
+ }
548
+ },
549
+ {
550
+ label: "备注",
551
+ prop: "remark",
552
+ type: "Input",
553
+ rules: [],
554
+ options: {
555
+ clearable: true,
556
+ placeholder: '请输入备注',
557
+ type: 'textarea',
558
+ row: 4
559
+ }
560
+ },
561
+ ],
562
+ }
563
+
564
+ }`
565
+ }
566
+ }
567
+
568
+