fix: 修复部分缺陷
This commit is contained in:
parent
ad343567b7
commit
b14435e35b
|
@ -22,6 +22,7 @@
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"axios": "^1.7.9",
|
"axios": "^1.7.9",
|
||||||
"boxen": "^8.0.1",
|
"boxen": "^8.0.1",
|
||||||
|
"dayjs": "^1.11.13",
|
||||||
"esbuild": "^0.25.1",
|
"esbuild": "^0.25.1",
|
||||||
"eslint": "^9.9.1",
|
"eslint": "^9.9.1",
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
|
@ -29,8 +30,6 @@
|
||||||
"eslint-plugin-prettier": "^5.2.1",
|
"eslint-plugin-prettier": "^5.2.1",
|
||||||
"eslint-plugin-vue": "^9.27.0",
|
"eslint-plugin-vue": "^9.27.0",
|
||||||
"gradient-string": "^3.0.0",
|
"gradient-string": "^3.0.0",
|
||||||
"js-cookie": "^3.0.5",
|
|
||||||
"list": "^2.0.19",
|
|
||||||
"naive-ui": "^2.41.0",
|
"naive-ui": "^2.41.0",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"pinia": "^2.3.1",
|
"pinia": "^2.3.1",
|
||||||
|
@ -48,7 +47,6 @@
|
||||||
"stylelint-prettier": "^5.0.3",
|
"stylelint-prettier": "^5.0.3",
|
||||||
"terser": "^5.39.0",
|
"terser": "^5.39.0",
|
||||||
"unocss": "^66.0.0",
|
"unocss": "^66.0.0",
|
||||||
"vfonts": "^0.0.3",
|
|
||||||
"vite-plugin-cdn-import": "^1.0.1",
|
"vite-plugin-cdn-import": "^1.0.1",
|
||||||
"vite-plugin-remove-console": "^2.2.0",
|
"vite-plugin-remove-console": "^2.2.0",
|
||||||
"vite-plugin-vue-inspector": "^5.3.1",
|
"vite-plugin-vue-inspector": "^5.3.1",
|
||||||
|
|
|
@ -62,12 +62,6 @@ importers:
|
||||||
gradient-string:
|
gradient-string:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
js-cookie:
|
|
||||||
specifier: ^3.0.5
|
|
||||||
version: 3.0.5
|
|
||||||
list:
|
|
||||||
specifier: ^2.0.19
|
|
||||||
version: 2.0.19
|
|
||||||
naive-ui:
|
naive-ui:
|
||||||
specifier: ^2.41.0
|
specifier: ^2.41.0
|
||||||
version: 2.41.0(vue@3.5.13(typescript@5.7.3))
|
version: 2.41.0(vue@3.5.13(typescript@5.7.3))
|
||||||
|
@ -119,9 +113,6 @@ importers:
|
||||||
unocss:
|
unocss:
|
||||||
specifier: ^66.0.0
|
specifier: ^66.0.0
|
||||||
version: 66.0.0(postcss@8.5.3)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))
|
version: 66.0.0(postcss@8.5.3)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0))(vue@3.5.13(typescript@5.7.3))
|
||||||
vfonts:
|
|
||||||
specifier: ^0.0.3
|
|
||||||
version: 0.0.3
|
|
||||||
vite-plugin-cdn-import:
|
vite-plugin-cdn-import:
|
||||||
specifier: ^1.0.1
|
specifier: ^1.0.1
|
||||||
version: 1.0.1(rollup@4.34.8)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0))
|
version: 1.0.1(rollup@4.34.8)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0))
|
||||||
|
@ -1980,10 +1971,6 @@ packages:
|
||||||
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
|
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
js-cookie@3.0.5:
|
|
||||||
resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
|
|
||||||
engines: {node: '>=14'}
|
|
||||||
|
|
||||||
js-tokens@4.0.0:
|
js-tokens@4.0.0:
|
||||||
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||||
|
|
||||||
|
@ -2050,9 +2037,6 @@ packages:
|
||||||
lines-and-columns@1.2.4:
|
lines-and-columns@1.2.4:
|
||||||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||||
|
|
||||||
list@2.0.19:
|
|
||||||
resolution: {integrity: sha512-nnVaRp4RaMAQkCpypTThsdxKqgPMiSwJq93eAm2/IbpUa8sd04XKBhkKu+bMk63HmdjK8b8Cuh4xARHWX2ye/Q==}
|
|
||||||
|
|
||||||
local-pkg@1.0.0:
|
local-pkg@1.0.0:
|
||||||
resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==}
|
resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
@ -2729,9 +2713,6 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.11
|
vue: ^3.0.11
|
||||||
|
|
||||||
vfonts@0.0.3:
|
|
||||||
resolution: {integrity: sha512-nguyw8L6Un8eelg1vQ31vIU2ESxqid7EYmy8V+MDeMaHBqaRSkg3dTBToC1PR00D89UzS/SLkfYPnx0Wf23IQQ==}
|
|
||||||
|
|
||||||
vite-plugin-cdn-import@1.0.1:
|
vite-plugin-cdn-import@1.0.1:
|
||||||
resolution: {integrity: sha512-lgjLxgwFSKvJLbqjVBirUZ0rQo00GpUGJzRpgQu8RyBw9LA7jaqG6fUMQzBC9qWmTGabPC3iOzwCcoi7PseRAQ==}
|
resolution: {integrity: sha512-lgjLxgwFSKvJLbqjVBirUZ0rQo00GpUGJzRpgQu8RyBw9LA7jaqG6fUMQzBC9qWmTGabPC3iOzwCcoi7PseRAQ==}
|
||||||
|
|
||||||
|
@ -4695,8 +4676,6 @@ snapshots:
|
||||||
|
|
||||||
jiti@2.4.2: {}
|
jiti@2.4.2: {}
|
||||||
|
|
||||||
js-cookie@3.0.5: {}
|
|
||||||
|
|
||||||
js-tokens@4.0.0: {}
|
js-tokens@4.0.0: {}
|
||||||
|
|
||||||
js-tokens@9.0.1: {}
|
js-tokens@9.0.1: {}
|
||||||
|
@ -4761,8 +4740,6 @@ snapshots:
|
||||||
|
|
||||||
lines-and-columns@1.2.4: {}
|
lines-and-columns@1.2.4: {}
|
||||||
|
|
||||||
list@2.0.19: {}
|
|
||||||
|
|
||||||
local-pkg@1.0.0:
|
local-pkg@1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
mlly: 1.7.4
|
mlly: 1.7.4
|
||||||
|
@ -5482,8 +5459,6 @@ snapshots:
|
||||||
evtd: 0.2.4
|
evtd: 0.2.4
|
||||||
vue: 3.5.13(typescript@5.7.3)
|
vue: 3.5.13(typescript@5.7.3)
|
||||||
|
|
||||||
vfonts@0.0.3: {}
|
|
||||||
|
|
||||||
vite-plugin-cdn-import@1.0.1(rollup@4.34.8)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)):
|
vite-plugin-cdn-import@1.0.1(rollup@4.34.8)(vite@6.1.1(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
rollup-plugin-external-globals: 0.10.0(rollup@4.34.8)
|
rollup-plugin-external-globals: 0.10.0(rollup@4.34.8)
|
||||||
|
|
|
@ -5,3 +5,8 @@ import type { BaseResult } from '@/types/request'; /* 获取所有数据表 */
|
||||||
export const generator = (data: any) => {
|
export const generator = (data: any) => {
|
||||||
return request<any, BaseResult<any>>({ url: '/vms/generator', method: 'post', data });
|
return request<any, BaseResult<any>>({ url: '/vms/generator', method: 'post', data });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* 获取vms文件路径 */
|
||||||
|
export const getVmsPathList = () => {
|
||||||
|
return request<any, BaseResult<any>>({ url: '/vms/getVmsPathList', method: 'get' });
|
||||||
|
};
|
||||||
|
|
|
@ -23,10 +23,4 @@ export const resetRouter = () => {
|
||||||
router.replace({ path: '/' }).then();
|
router.replace({ path: '/' }).then();
|
||||||
};
|
};
|
||||||
|
|
||||||
// router.afterEach((to, from) => {
|
|
||||||
// const toDepth = to.path.split('/').length;
|
|
||||||
// const fromDepth = from.path.split('/').length;
|
|
||||||
// to.meta.transition = toDepth < fromDepth ? 'slide-right' : 'slide-left';
|
|
||||||
// });
|
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
|
|
||||||
import { generator } from '@/api/vms';
|
import { generator, getVmsPathList } from '@/api/vms';
|
||||||
|
|
||||||
export const useVmsStore = defineStore('vmsStore', {
|
export const useVmsStore = defineStore('vmsStore', {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
generators: [],
|
generators: [],
|
||||||
|
// 生成服务端内容
|
||||||
|
serverOptions: [],
|
||||||
|
// 生成前端内容
|
||||||
|
webOptions: [],
|
||||||
}),
|
}),
|
||||||
getters: {},
|
getters: {},
|
||||||
actions: {
|
actions: {
|
||||||
|
@ -16,8 +20,21 @@ export const useVmsStore = defineStore('vmsStore', {
|
||||||
(window as any).$message.error(result.message);
|
(window as any).$message.error(result.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.generators = result.data;
|
this.generators = result.data.map((i) => ({ ...i, path: i.path.replace('.vm', '') }));
|
||||||
(window as any).$message.success(`生成成功,共 ${this.generators.length} 数据`);
|
(window as any).$message.success(`生成成功,共 ${this.generators.length} 数据`);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/* 获取vms文件路径 */
|
||||||
|
async getVmsPathList() {
|
||||||
|
const result = await getVmsPathList();
|
||||||
|
// 需要确保已经在 setup 中执行了 window.$message = message
|
||||||
|
if (result.code !== 200) {
|
||||||
|
(window as any).$message.error(result.message);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
this.webOptions = result.data.web;
|
||||||
|
this.serverOptions = result.data.server;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,7 +7,7 @@ export function downloadTextAsFile(text: string, filename: string) {
|
||||||
const a = document.createElement('a');
|
const a = document.createElement('a');
|
||||||
a.href = url;
|
a.href = url;
|
||||||
a.download = filename;
|
a.download = filename;
|
||||||
console.log(filename);
|
|
||||||
// 触发下载
|
// 触发下载
|
||||||
document.body.appendChild(a);
|
document.body.appendChild(a);
|
||||||
a.click();
|
a.click();
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { NCheckbox, NCheckboxGroup, NFormItemGi, NGrid, NInput, NSpace } from 'naive-ui';
|
import { NCheckbox, NCheckboxGroup, NFormItemGi, NGrid, NInput, NSpace } from 'naive-ui';
|
||||||
|
|
||||||
|
import { useVmsStore } from '@/store/modules/vms';
|
||||||
import SelectButtonGroup from '@/views/generator-code/components/generator/components/select-button-group.vue';
|
import SelectButtonGroup from '@/views/generator-code/components/generator/components/select-button-group.vue';
|
||||||
import {
|
import { formOption, formValue } from '@/views/generator-code/components/generator/option';
|
||||||
formOption,
|
|
||||||
formValue,
|
const vmsStore = useVmsStore();
|
||||||
serverOptions,
|
|
||||||
webOptions,
|
|
||||||
} from '@/views/generator-code/components/generator/option';
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -42,14 +40,18 @@ import {
|
||||||
<n-form-item-gi :span="8" label="生成后端" path="generatorServer">
|
<n-form-item-gi :span="8" label="生成后端" path="generatorServer">
|
||||||
<n-checkbox-group v-model:value="formOption.generatorServer">
|
<n-checkbox-group v-model:value="formOption.generatorServer">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-checkbox v-for="(item, index) in serverOptions" :key="index" :value="item.name">
|
<n-checkbox
|
||||||
|
v-for="(item, index) in vmsStore.serverOptions"
|
||||||
|
:key="index"
|
||||||
|
:value="item.name"
|
||||||
|
>
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</n-checkbox>
|
</n-checkbox>
|
||||||
|
|
||||||
<!-- 选择按钮 -->
|
<!-- 选择按钮 -->
|
||||||
<select-button-group
|
<select-button-group
|
||||||
v-model:selected="formOption.generatorServer"
|
v-model:selected="formOption.generatorServer"
|
||||||
:data="serverOptions"
|
:data="vmsStore.serverOptions"
|
||||||
id-key="name"
|
id-key="name"
|
||||||
/>
|
/>
|
||||||
</n-space>
|
</n-space>
|
||||||
|
@ -58,14 +60,18 @@ import {
|
||||||
<n-form-item-gi :span="8" label="生成前端" path="generatorWeb">
|
<n-form-item-gi :span="8" label="生成前端" path="generatorWeb">
|
||||||
<n-checkbox-group v-model:value="formOption.generatorWeb">
|
<n-checkbox-group v-model:value="formOption.generatorWeb">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-checkbox v-for="(item, index) in webOptions" :key="index" v-model:value="item.name">
|
<n-checkbox
|
||||||
|
v-for="(item, index) in vmsStore.webOptions"
|
||||||
|
:key="index"
|
||||||
|
v-model:value="item.name"
|
||||||
|
>
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
</n-checkbox>
|
</n-checkbox>
|
||||||
|
|
||||||
<!-- 选择按钮 -->
|
<!-- 选择按钮 -->
|
||||||
<select-button-group
|
<select-button-group
|
||||||
v-model:selected="formOption.generatorWeb"
|
v-model:selected="formOption.generatorWeb"
|
||||||
:data="webOptions"
|
:data="vmsStore.webOptions"
|
||||||
id-key="name"
|
id-key="name"
|
||||||
/>
|
/>
|
||||||
</n-space>
|
</n-space>
|
||||||
|
|
|
@ -10,10 +10,8 @@ const message = useMessage();
|
||||||
const vmsStore = useVmsStore();
|
const vmsStore = useVmsStore();
|
||||||
|
|
||||||
const download = (code: string, filename: string) => {
|
const download = (code: string, filename: string) => {
|
||||||
const extension = filename.includes('web') ? 'ts' : 'java';
|
filename = filename.split('/')[1];
|
||||||
filename = `${filename.split('/')[1]}.${extension}`;
|
const inputValue = ref(filename);
|
||||||
|
|
||||||
let inputValue = ref(filename);
|
|
||||||
|
|
||||||
dialog.info({
|
dialog.info({
|
||||||
title: '修改文件名',
|
title: '修改文件名',
|
||||||
|
@ -24,7 +22,7 @@ const download = (code: string, filename: string) => {
|
||||||
placeholder="Tiny Input"
|
placeholder="Tiny Input"
|
||||||
clearable
|
clearable
|
||||||
value={inputValue.value}
|
value={inputValue.value}
|
||||||
onInput={(value) => (inputValue.value = value)}
|
onInput={(value: any) => (inputValue.value = value)}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
onPositiveClick: () => {
|
onPositiveClick: () => {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import { reactive } from 'vue';
|
import { reactive } from 'vue';
|
||||||
|
|
||||||
import { serverOptions, webOptions } from '@/views/generator-code/components/generator/option';
|
import { useVmsStore } from '@/store/modules/vms';
|
||||||
|
|
||||||
|
const vmsStore = useVmsStore();
|
||||||
|
|
||||||
export const formOption = reactive({
|
export const formOption = reactive({
|
||||||
generatorServer: [],
|
generatorServer: [],
|
||||||
|
@ -32,21 +34,21 @@ export const formValueInit = (tableName: any) => {
|
||||||
|
|
||||||
/* 全部选择 */
|
/* 全部选择 */
|
||||||
export const selectAll = () => {
|
export const selectAll = () => {
|
||||||
formOption.generatorServer = serverOptions.map((option: any) => option.name);
|
formOption.generatorServer = vmsStore.serverOptions.map((option: any) => option.name);
|
||||||
formOption.generatorWeb = webOptions.map((option: any) => option.name);
|
formOption.generatorWeb = vmsStore.webOptions.map((option: any) => option.name);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 全部反选 */
|
/* 全部反选 */
|
||||||
export const selectAllInvert = () => {
|
export const selectAllInvert = () => {
|
||||||
// 反选server
|
// 反选server
|
||||||
const serverNames: string[] = serverOptions.map((item) => item['name']);
|
const serverNames: string[] = vmsStore.serverOptions.map((item) => item['name']);
|
||||||
const generatorServer = formOption.generatorServer;
|
const generatorServer = formOption.generatorServer;
|
||||||
formOption.generatorServer = serverNames.filter(
|
formOption.generatorServer = serverNames.filter(
|
||||||
(name: string) => !generatorServer.includes(name)
|
(name: string) => !generatorServer.includes(name)
|
||||||
);
|
);
|
||||||
|
|
||||||
// 反选web
|
// 反选web
|
||||||
const webNames: string[] = webOptions.map((item) => item['name']);
|
const webNames: string[] = vmsStore.webOptions.map((item) => item['name']);
|
||||||
const generatorWeb = formOption.generatorWeb;
|
const generatorWeb = formOption.generatorWeb;
|
||||||
formOption.generatorWeb = webNames.filter((name) => !generatorWeb.includes(name));
|
formOption.generatorWeb = webNames.filter((name) => !generatorWeb.includes(name));
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,21 +3,28 @@
|
||||||
<generator-form />
|
<generator-form />
|
||||||
|
|
||||||
<n-form-item>
|
<n-form-item>
|
||||||
<n-button-group>
|
<n-grid class="justify-items-center" cols="3" x-gap="24">
|
||||||
|
<n-gi>
|
||||||
<n-button attr-type="button" type="success" @click="selectAll">全部选择</n-button>
|
<n-button attr-type="button" type="success" @click="selectAll">全部选择</n-button>
|
||||||
<n-button attr-type="button" type="warning" @click="selectAllInvert">全部反选</n-button>
|
<n-button attr-type="button" type="warning" @click="selectAllInvert">全部反选</n-button>
|
||||||
<n-button attr-type="button" type="error" @click="selectCancelAll">全选取消</n-button>
|
<n-button attr-type="button" type="error" @click="selectCancelAll">全选取消</n-button>
|
||||||
<n-button attr-type="button" type="info" @click="onSubmit">开始生成</n-button>
|
</n-gi>
|
||||||
|
|
||||||
|
<n-gi>
|
||||||
|
<n-button attr-type="button" type="success" @click="onSubmit">开始生成</n-button>
|
||||||
|
<n-button attr-type="button" type="error" @click="() => (vmsStore.generators = [])">
|
||||||
|
清空已生成
|
||||||
|
</n-button>
|
||||||
<n-button
|
<n-button
|
||||||
:disabled="!(vmsStore.generators.length > 0 && formValue.path.length > 0)"
|
:disabled="!(vmsStore.generators.length > 0)"
|
||||||
attr-type="button"
|
attr-type="button"
|
||||||
type="info"
|
type="primary"
|
||||||
@click="downloadAll"
|
@click="downloadAll"
|
||||||
>
|
>
|
||||||
{{ formValue.path.length }}
|
下载全部 {{ vmsStore.generators.length }}
|
||||||
下载全部
|
|
||||||
</n-button>
|
</n-button>
|
||||||
</n-button-group>
|
</n-gi>
|
||||||
|
</n-grid>
|
||||||
</n-form-item>
|
</n-form-item>
|
||||||
</n-form>
|
</n-form>
|
||||||
|
|
||||||
|
@ -26,7 +33,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="tsx" setup>
|
<script lang="tsx" setup>
|
||||||
import { NButton, NButtonGroup, NForm, NFormItem, useMessage } from 'naive-ui';
|
import { NButton, NForm, NFormItem, NGi, NGrid, useMessage } from 'naive-ui';
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { toRaw } from 'vue-demi';
|
import { toRaw } from 'vue-demi';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
|
@ -55,12 +62,8 @@ const onSubmit = (e: MouseEvent) => {
|
||||||
formRef.value?.validate(async (errors: any) => {
|
formRef.value?.validate(async (errors: any) => {
|
||||||
if (!errors) {
|
if (!errors) {
|
||||||
// 选择要生成的模板
|
// 选择要生成的模板
|
||||||
const generatorWeb = formOption.generatorWeb;
|
const web = formOption.generatorWeb;
|
||||||
const generatorServer = formOption.generatorServer;
|
const server = formOption.generatorServer;
|
||||||
|
|
||||||
// 整理好路径
|
|
||||||
const server = generatorServer.map((server: string) => `server/${server}`);
|
|
||||||
const web = generatorWeb.map((server: string) => `web/${server}`);
|
|
||||||
|
|
||||||
// 整理好数据
|
// 整理好数据
|
||||||
formValue.path = [...server, ...web];
|
formValue.path = [...server, ...web];
|
||||||
|
@ -85,12 +88,9 @@ const onSubmit = (e: MouseEvent) => {
|
||||||
const downloadAll = () => {
|
const downloadAll = () => {
|
||||||
vmsStore.generators.forEach((vms) => {
|
vmsStore.generators.forEach((vms) => {
|
||||||
const code = vms.code;
|
const code = vms.code;
|
||||||
const path = vms.path;
|
const path = vms.path.split('/')[1];
|
||||||
|
|
||||||
const extension = path.includes('web') ? 'ts' : 'java';
|
downloadTextAsFile(code, path);
|
||||||
let filename = `${path.split('/')[1]}.${extension}`;
|
|
||||||
|
|
||||||
downloadTextAsFile(code, filename);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -98,5 +98,7 @@ onMounted(() => {
|
||||||
// 初始化表名称
|
// 初始化表名称
|
||||||
const tableName: any = route.query.tableName;
|
const tableName: any = route.query.tableName;
|
||||||
formValueInit(tableName);
|
formValueInit(tableName);
|
||||||
|
|
||||||
|
vmsStore.getVmsPathList();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -7,26 +7,6 @@ const validatorFormOption = () => {
|
||||||
return formOption.generatorServer.length > 0 || formOption.generatorWeb.length > 0;
|
return formOption.generatorServer.length > 0 || formOption.generatorWeb.length > 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 生成服务端内容
|
|
||||||
export const serverOptions = [
|
|
||||||
{ name: 'controller', label: 'controller' },
|
|
||||||
{ name: 'mapper', label: 'mapper' },
|
|
||||||
{ name: 'resourceMapper', label: 'resourceMapper' },
|
|
||||||
{ name: 'service', label: 'service' },
|
|
||||||
{ name: 'serviceImpl', label: 'serviceImpl' },
|
|
||||||
];
|
|
||||||
|
|
||||||
// 生成前端内容
|
|
||||||
export const webOptions = [
|
|
||||||
{ name: 'api', label: 'api' },
|
|
||||||
{ name: 'columns', label: 'columns' },
|
|
||||||
{ name: 'dialog', label: 'dialog' },
|
|
||||||
{ name: 'hook', label: 'hook' },
|
|
||||||
{ name: 'index', label: 'index' },
|
|
||||||
{ name: 'store', label: 'store' },
|
|
||||||
{ name: 'types', label: 'types' },
|
|
||||||
];
|
|
||||||
|
|
||||||
// 表单验证
|
// 表单验证
|
||||||
export const rules: FormRules = {
|
export const rules: FormRules = {
|
||||||
author: { required: true, trigger: ['blur', 'change', 'input'], message: '作者不能为空' },
|
author: { required: true, trigger: ['blur', 'change', 'input'], message: '作者不能为空' },
|
||||||
|
|
Loading…
Reference in New Issue