@dypnb/dev-tools 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,717 +0,0 @@
1
- import require$$0$1 from 'path';
2
- import require$$0 from 'fs';
3
- import { k as strCase, j as getDirname, e as getGlobalConfig, i as errorLog, l as log, s as successLog } from '../chunk-cb5f11a8.js';
4
- import 'os';
5
- import 'util';
6
- import 'tty';
7
- import 'child_process';
8
- import 'assert';
9
- import 'events';
10
- import 'buffer';
11
- import 'stream';
12
- import 'node:url';
13
- import 'node:path';
14
-
15
- // template.js
16
- var templateData = {
17
- tablePageTemplate: (config = {}) => {
18
- const {
19
- name
20
- } = config;
21
- const titlCease = strCase(name);
22
- return `<template>
23
- <div class="app-container">
24
- <CoustomTable
25
- :queryFormJson="queryFormJson"
26
- :pageButtonsJson="pageButtonsJson"
27
- :tableJson="tableJson"
28
- :tableData="tableData"
29
- @onPageButton="handlerPageButton"
30
- @onButton="handlerButton"
31
- @onSearch="handlerSearch"
32
- @onTableRowClick="handlerTableRowClick"
33
- >
34
- </CoustomTable>
35
-
36
- <CoustomFormDialog
37
- ref="formDialog"
38
- :visible.sync="dialogVisible"
39
- :dialogJson="dialogJson"
40
- :initData="initFormData"
41
- @onSubmit="handlerSubmit"
42
- ></CoustomFormDialog>
43
- </div>
44
- </template>
45
- <script>
46
- import CoustomTable from "@/components/CoustomTable";
47
- import CoustomFormDialog from "@/components/CoustomFormDialog";
48
- import { TableJson, QueryFormJson, PageButtonsJson, DialogJson } from "./constants";
49
- import {
50
- getDevApiIotClassesList,
51
- postDevApiIotClasses,
52
- getDevApiIotClassesClassId,
53
- deleteDevApiIotClassesClassId,
54
- putDevApiIotClasses
55
- } from "@/api/iot/classes-controller.js";
56
- import {
57
- getDevApiIotPackagesList,
58
- } from "@/api/iot/packages-controller.js";
59
- export default {
60
- name: '${titlCease}',
61
- components: {
62
- CoustomTable,
63
- CoustomFormDialog
64
- },
65
- data() {
66
- return {
67
- queryFormJson: QueryFormJson,
68
- pageButtonsJson: PageButtonsJson,
69
- tableJson: TableJson,
70
- dialogJson: DialogJson,
71
- tableData: [],
72
- // 总条数
73
- total: 0,
74
- // 查询参数
75
- queryParams: {
76
- pageNum: 1,
77
- pageSize: 10,
78
- },
79
- dialogVisible: false,
80
- initFormData: {},
81
- }
82
- },
83
- created() {
84
- },
85
- mounted() {
86
- this.getList();
87
- },
88
- computed: {
89
- packageName() {
90
- const { query } = this.$route;
91
- return query.packageName
92
- }
93
- },
94
- methods: {
95
- async getPackageData() {
96
- try {
97
- const { rows = [] } = await getDevApiIotPackagesList();
98
- return rows.map(item => {
99
- return {
100
- value: item.packageCode,
101
- label: item.packageDispname,
102
- }
103
- })
104
- } catch (error) {
105
- return []
106
- }
107
- },
108
-
109
- async handlerSubmit(formData) {
110
- let params = {
111
- ...formData,
112
- packageName: this.packageName
113
- };
114
- let msgText = '新增';
115
- let func = postDevApiIotClasses;
116
- if (this.dialogJson.type === 'Edit') {
117
- params.classId = this.initFormData.classId;
118
- msgText = '编辑';
119
- func = putDevApiIotClasses;
120
- }
121
- try {
122
- const { code } = await func(params);
123
- if (code === 200) {
124
- this.dialogVisible = false;
125
- this.getList();
126
- this.$modal.msgSuccess(msgText + "成功");
127
- }
128
- this.$refs.formDialog.resetLoading();
129
- } catch (error) {
130
- // 接口调用失败重置 loading
131
- this.$refs.formDialog.resetLoading();
132
- }
133
- },
134
-
135
- /** 查询表集合 */
136
- getList(queryParams = {}) {
137
- this.loading = true;
138
- let queryData = {
139
- ...queryParams,
140
- ...this.queryParams,
141
- packageName: this.packageName
142
- }
143
- getDevApiIotClassesList(queryData).then(response => {
144
- this.tableData = response.rows;
145
- this.total = response.total;
146
- this.loading = false;
147
- });
148
- },
149
-
150
- handlerTableRowClick(item) {
151
- console.log('object :>>item ', item);
152
- this.$router.push({
153
- path: '/iot/packages/classes/detail',
154
- query: {
155
- classId: item.classId
156
- }
157
- })
158
- },
159
-
160
- // 搜索事件
161
- handlerSearch(searchParams) {
162
- this.queryParams = {
163
- pageNum: 1,
164
- pageSize: 10,
165
- },
166
- this.getList(searchParams);
167
- },
168
-
169
- //新增按钮事件
170
- async handlerPageButton(item) {
171
- const { type } = item;
172
- if (type === 'Add') {
173
- this.initFormData = {};
174
- this.dialogJson.type = 'Add';
175
- const packageData = await this.getPackageData()
176
- this.$set(this.dialogJson.formJson.formItemJson[0], 'option',packageData )
177
- console.log('object :>> ', this.dialogJson);
178
- this.dialogVisible = true;
179
- }
180
-
181
- if (type === 'Delete') {
182
- const tableIds = row.tableId || this.ids;
183
- this.$modal.confirm('是否确认删除表编号为"' + tableIds + '"的数据项?').then(function () {
184
- return delTable(tableIds);
185
- }).then(() => {
186
- this.getList();
187
- this.$modal.msgSuccess("删除成功");
188
- }).catch(() => { });
189
- }
190
- },
191
-
192
- async getInfo(id) {
193
- const { code, data } = await getDevApiIotClassesClassId(id);
194
- if (code === 200) {
195
-
196
- this.initFormData = data;
197
- this.dialogJson.type = 'Edit';
198
- this.dialogVisible = true;
199
- }
200
- },
201
-
202
- deleteItem(id) {
203
- this.$modal.confirm('是否确认删除该数据项?').then(function () {
204
- return deleteDevApiIotClassesClassId(id);
205
- }).then(() => {
206
- this.getList();
207
- this.$modal.msgSuccess("删除成功");
208
- }).catch(() => { });
209
- },
210
-
211
- handlerButton(btnItem) {
212
- const { row, item } = btnItem;
213
- const { type } = item;
214
- if (type === 'Edit') {
215
- this.getInfo(row.classId);
216
- }
217
-
218
- if (type === 'Delete') {
219
- this.deleteItem(row.classId);
220
- }
221
- },
222
- },
223
- }
224
- </script>
225
- <style scoped lang='scss'></style>`;
226
- },
227
- constantsTemplate: () => {
228
- return `export const QueryFormJson = {
229
- formOption: {
230
- inline: true,
231
- labelWidth: "100px",
232
- size: 'small',
233
- },
234
- formItemJson: [
235
- {
236
- label: "类中文名称",
237
- prop: "classDispname",
238
- type: "Input",
239
- isEnter: true,
240
- options: {
241
- clearable: true,
242
- placeholder: '请输入类名称',
243
- }
244
- }
245
- ],
246
- buttonJson: {
247
- type: 'Search',
248
- list: [
249
- {
250
- label: "搜索",
251
- type: 'Query',
252
- options: {
253
- icon: "el-icon-search",
254
- size: "mini",
255
- type: "primary"
256
- }
257
- },
258
- {
259
- label: "重置",
260
- type: 'Reset',
261
- options: {
262
- icon: "el-icon-refresh",
263
- size: "mini",
264
- }
265
- },
266
- ]
267
-
268
- }
269
- }
270
-
271
- export const PageButtonsJson = {
272
- rowJson: {
273
- gutter: 10,
274
- },
275
- buttonList: [
276
- {
277
- span: 1.5,
278
- label: '新增',
279
- permi: '',
280
- type: 'Add',
281
- options: [
282
- {
283
- icon: "el-icon-plus",
284
- plain: true,
285
- size: "mini",
286
- type: "primary",
287
- },
288
-
289
- ]
290
- }
291
- ]
292
- }
293
-
294
- export const TableJson = {
295
- columnJson: {
296
- showSelect: false,
297
- showIndex: true,
298
- data: [
299
- {
300
- type: "index",
301
- width: "55",
302
- align: "left",
303
- headerAlign: "left",
304
- label: "序号"
305
- },
306
- {
307
- align: "left",
308
- headerAlign: "left",
309
- label: "类中文名称",
310
- prop: "classDispname",
311
- showOverflowTooltip: true,
312
- isLink: true,
313
- },
314
- {
315
- align: "left",
316
- headerAlign: "left",
317
- label: "类英文名称",
318
- prop: "classCode",
319
- showOverflowTooltip: true,
320
- },
321
- {
322
- align: "left",
323
- headerAlign: "left",
324
- label: "类类型",
325
- prop: "classesType",
326
- showOverflowTooltip: true,
327
- },
328
- {
329
- align: "left",
330
- headerAlign: "left",
331
- label: "访问类型",
332
- prop: "accessType",
333
- showOverflowTooltip: true,
334
- },
335
- {
336
- align: "left",
337
- headerAlign: "left",
338
- label: "实例存储表名称",
339
- prop: "delFlag",
340
- showOverflowTooltip: true,
341
- },
342
- {
343
- align: "left",
344
- headerAlign: "left",
345
- label: "备注",
346
- prop: "remark",
347
- showOverflowTooltip: true,
348
- },
349
- {
350
- align: "left",
351
- headerAlign: "left",
352
- label: "创建时间",
353
- prop: "createTime",
354
- showOverflowTooltip: true,
355
- },
356
- {
357
- align: "center",
358
- headerAlign: "center",
359
- label: "操作",
360
- type: "func",
361
- buttonList: [
362
- {
363
- label: "编辑",
364
- type: 'Edit',
365
- permi: '',
366
- options: {
367
- icon: "el-icon-edit",
368
- size: "mini",
369
- type: "text",
370
- }
371
- },
372
- {
373
- label: "删除",
374
- type: 'Delete',
375
- permi: '',
376
- options: {
377
- icon: "el-icon-delete",
378
- size: "mini",
379
- type: "text",
380
- }
381
- },
382
- ],
383
- },
384
- ],
385
- },
386
- };
387
-
388
- export const DialogJson = {
389
- type: 'Add',
390
- title: "类",
391
- options: {
392
- width: "600px",
393
- appendToBody: true,
394
- destroyOnClose: true,
395
- closeOnClickModal: false,
396
- },
397
- buttonList: [
398
- {
399
- label: "确定",
400
- type: 'Ok',
401
- permi: '',
402
- options: {
403
- type: "primary",
404
- }
405
- },
406
- {
407
- label: "取消",
408
- type: 'Cancel',
409
- permi: '',
410
- options: {
411
- type: "",
412
- }
413
- },
414
- ],
415
- formJson: {
416
- // 表单设置
417
- formOption: {
418
- inline: false,
419
- labelWidth: "120px",
420
- size: 'small',
421
- },
422
- // 表单项
423
- formItemJson: [
424
- // {
425
- // label: "包编码",
426
- // prop: "packageCode",
427
- // type: "Select",
428
- // rules: [{ required: true, message: "请选择包编码", trigger: "change" }],
429
- // options: {
430
- // clearable: true,
431
- // placeholder: "请选择包编码",
432
- // },
433
- // option: [],
434
- // },
435
- {
436
- label: "类中文名称",
437
- prop: "classDispname",
438
- type: "Input",
439
- rules: [
440
- { required: true, message: '请输入类中文名称', trigger: 'blur' },
441
- ],
442
- options: {
443
- clearable: true,
444
- placeholder: '请输入类中文名称',
445
- }
446
- },
447
- {
448
- label: "类英文名称",
449
- prop: "className",
450
- type: "Input",
451
- rules: [
452
- { required: true, message: '请输入类英文名称', trigger: 'blur' },
453
- {
454
- required: true,
455
- validator: (rule, value, callback) => {
456
- const reg = /^[a-zA-Z]{1}\w*$/;
457
- if (!reg.test(value)) {
458
- callback(
459
- new Error(
460
- "请输入以字母(不区分大小写)、数字、下划线(_)随意组合的字符串"
461
- )
462
- );
463
- }
464
- callback();
465
- },
466
- trigger: ["blur"],
467
- },
468
- ],
469
- options: {
470
- clearable: true,
471
- placeholder: '请输入类英文名称',
472
- }
473
- },
474
- {
475
- label: "类类型",
476
- prop: "classesType",
477
- type: "Select",
478
- rules: [{ required: true, message: "请选择类类型", trigger: "change" }],
479
- options: {
480
- clearable: true,
481
- placeholder: "请选择类型",
482
- },
483
- option: [
484
- {
485
- value: '继承',
486
- label: '继承',
487
- },
488
- {
489
- value: '虚类',
490
- label: '虚类',
491
- },
492
- {
493
- value: '实体类',
494
- label: '实体类',
495
- },
496
- ],
497
- },
498
- {
499
- label: "继承父类code",
500
- prop: "classesExtends",
501
- type: "Input",
502
- rules: [
503
- { required: true, message: '请输入继承父类code', trigger: 'blur' },
504
- ],
505
- options: {
506
- clearable: true,
507
- placeholder: '请输入继承父类code',
508
- }
509
- },
510
- {
511
- label: "访问类型",
512
- prop: "accessType",
513
- type: "Select",
514
- rules: [{ required: true, message: "请选择访问类型", trigger: "change" }],
515
- options: {
516
- clearable: true,
517
- placeholder: "请选择访问类型",
518
- },
519
- option: [
520
- {
521
- value: 'default',
522
- label: 'default',
523
- },
524
- {
525
- value: 'public',
526
- label: 'public',
527
- },
528
- {
529
- value: 'protected',
530
- label: 'protected',
531
- },
532
- {
533
- value: 'private',
534
- label: 'private',
535
- },
536
- ],
537
- },
538
- {
539
- label: "实例存储表名称",
540
- prop: "objTableName",
541
- type: "Input",
542
- rules: [
543
- { required: true, message: '请输入实例存储表名称', trigger: 'blur' },
544
- ],
545
- options: {
546
- clearable: true,
547
- placeholder: '请输入实例存储表名称',
548
- }
549
- },
550
- {
551
- label: "视图样式",
552
- prop: "viewStyle",
553
- type: "Input",
554
- rules: [
555
- { required: false, message: '请输入视图样式', trigger: 'blur' },
556
- ],
557
- options: {
558
- clearable: true,
559
- placeholder: '请输入视图样式',
560
- }
561
- },
562
- {
563
- label: "备注",
564
- prop: "remark",
565
- type: "Input",
566
- rules: [],
567
- options: {
568
- clearable: true,
569
- placeholder: '请输入备注',
570
- type: 'textarea',
571
- row: 4
572
- }
573
- },
574
- ],
575
- }
576
-
577
- }`;
578
- }
579
- };
580
-
581
- // 导入模板
582
- var defaultConfig = {
583
- // 是否命令行创建
584
- isEnter: true,
585
- // 文件名
586
- name: 'genPageTable',
587
- // 默认 view 目录下生成,如果需要指定父目录则写入 fatherFileName
588
- path: 'dome',
589
- // 子文件配置
590
- child: [{
591
- name: 'index.vue',
592
- template: (params = {}) => {
593
- return templateData.tablePageTemplate({
594
- // 文件标题,替换模板
595
- title: 'pageTable',
596
- ...params
597
- });
598
- },
599
- templateConfig: {}
600
- }, {
601
- name: 'constants.js',
602
- template: (params = {}) => {
603
- return templateData.constantsTemplate({
604
- // 文件标题,替换模板
605
- title: 'pageTable',
606
- ...params
607
- });
608
- },
609
- templateConfig: {
610
- // 文件标题,替换模板
611
- title: ''
612
- }
613
- }]
614
- };
615
-
616
- const __dirname = getDirname();
617
- const resolve = (...file) => require$$0$1.resolve(__dirname, ...file);
618
-
619
- // 模板配置
620
- const globalConfig = await getGlobalConfig('genPageConfig');
621
- if (globalConfig) {
622
- errorLog('全局模板未配置,使用默认配置');
623
- }
624
- const config = globalConfig || defaultConfig;
625
-
626
- // 生成文件
627
- const generateFile = (path, data) => {
628
- if (require$$0.existsSync(path)) {
629
- errorLog(`${path}文件已存在`);
630
- return;
631
- }
632
- require$$0.writeFileSync(path, data, 'utf8', err => {
633
- if (err) {
634
- errorLog(err.message);
635
- reject(err);
636
- } else {
637
- resolve(true);
638
- }
639
- });
640
- };
641
- function dotExistDirectoryCreate(directory) {
642
- return new Promise(resolve => {
643
- mkdirs(directory, function () {
644
- resolve(true);
645
- });
646
- });
647
- }
648
- // 递归创建目录
649
- function mkdirs(directory, callback) {
650
- var exists = require$$0.existsSync(directory);
651
- if (exists) {
652
- callback();
653
- } else {
654
- mkdirs(require$$0$1.dirname(directory), function () {
655
- require$$0.mkdirSync(directory);
656
- callback();
657
- });
658
- }
659
- }
660
- async function genPageProcess(enterName) {
661
- // 组件名称
662
- const pageName = !enterName ? config.name : enterName;
663
- // Vue页面组件路径
664
- const pathStr = !config.path ? `${process.env.PWD}/src/views` : `${process.env.PWD}/src/views/${config.path}`;
665
- const pagePath = resolve(pathStr, pageName);
666
-
667
- // 判断组件文件夹是否存在
668
- const hasComponentExists = require$$0.existsSync(pagePath);
669
- if (hasComponentExists) {
670
- errorLog(`${pageName}页面已存在`);
671
- if (pageName) {
672
- process.stdin.emit('end');
673
- }
674
- return;
675
- } else {
676
- log(`正在生成${pageName}目录 ${pagePath}`);
677
- await dotExistDirectoryCreate(pagePath);
678
- }
679
- try {
680
- // // 获取组件名
681
- // if (enterName.includes('/')) {
682
- // const inputArr = enterName.split('/')
683
- // pageName = inputArr[inputArr.length - 1]
684
- // } else {
685
- // pageName = enterName
686
- // }
687
-
688
- config.child.forEach(item => {
689
- const filePath = resolve(pagePath, item.name);
690
- log(`正在生成子文件${item.name} ${filePath}`);
691
- generateFile(filePath, item.template({
692
- name: pageName
693
- }));
694
- });
695
- successLog('生成成功');
696
- } catch (e) {
697
- errorLog(e.message);
698
- }
699
- }
700
- function genPage() {
701
- if (!config.isEnter) {
702
- genPageProcess();
703
- } else {
704
- log('请输入要生成的页面组件名称、会生成在 views/目录下');
705
- process.stdin.on('data', async chunk => {
706
- // 组件名称
707
- const enterName = String(chunk).trim().toString();
708
- genPageProcess(enterName);
709
- process.stdin.emit('end');
710
- });
711
- process.stdin.on('end', () => {
712
- log('exit');
713
- process.exit();
714
- });
715
- }
716
- }
717
- genPage();