feat: 生成并返回内容
This commit is contained in:
parent
b5e3ea5ffa
commit
b795fab7c9
|
@ -13,7 +13,6 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/js": "^9.21.0",
|
"@eslint/js": "^9.21.0",
|
||||||
"@parcel/watcher": "^2.5.1",
|
|
||||||
"@types/node": "^22.13.10",
|
"@types/node": "^22.13.10",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.24.1",
|
"@typescript-eslint/eslint-plugin": "^8.24.1",
|
||||||
"@typescript-eslint/parser": "^8.24.1",
|
"@typescript-eslint/parser": "^8.24.1",
|
||||||
|
|
|
@ -11,9 +11,6 @@ importers:
|
||||||
'@eslint/js':
|
'@eslint/js':
|
||||||
specifier: ^9.21.0
|
specifier: ^9.21.0
|
||||||
version: 9.21.0
|
version: 9.21.0
|
||||||
'@parcel/watcher':
|
|
||||||
specifier: ^2.5.1
|
|
||||||
version: 2.5.1
|
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^22.13.10
|
specifier: ^22.13.10
|
||||||
version: 22.13.10
|
version: 22.13.10
|
||||||
|
@ -1354,8 +1351,8 @@ packages:
|
||||||
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
|
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
call-bound@1.0.3:
|
call-bound@1.0.4:
|
||||||
resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
|
resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
callsites@3.1.0:
|
callsites@3.1.0:
|
||||||
|
@ -3479,6 +3476,7 @@ snapshots:
|
||||||
'@parcel/watcher-win32-arm64': 2.5.1
|
'@parcel/watcher-win32-arm64': 2.5.1
|
||||||
'@parcel/watcher-win32-ia32': 2.5.1
|
'@parcel/watcher-win32-ia32': 2.5.1
|
||||||
'@parcel/watcher-win32-x64': 2.5.1
|
'@parcel/watcher-win32-x64': 2.5.1
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@pkgjs/parseargs@0.11.0':
|
'@pkgjs/parseargs@0.11.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
@ -4053,7 +4051,7 @@ snapshots:
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
function-bind: 1.1.2
|
function-bind: 1.1.2
|
||||||
|
|
||||||
call-bound@1.0.3:
|
call-bound@1.0.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind-apply-helpers: 1.0.2
|
call-bind-apply-helpers: 1.0.2
|
||||||
get-intrinsic: 1.3.0
|
get-intrinsic: 1.3.0
|
||||||
|
@ -4181,7 +4179,8 @@ snapshots:
|
||||||
|
|
||||||
destr@2.0.3: {}
|
destr@2.0.3: {}
|
||||||
|
|
||||||
detect-libc@1.0.3: {}
|
detect-libc@1.0.3:
|
||||||
|
optional: true
|
||||||
|
|
||||||
dir-glob@3.0.1:
|
dir-glob@3.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -4883,7 +4882,8 @@ snapshots:
|
||||||
sax: 1.4.1
|
sax: 1.4.1
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
node-addon-api@7.1.1: {}
|
node-addon-api@7.1.1:
|
||||||
|
optional: true
|
||||||
|
|
||||||
node-fetch-native@1.6.6: {}
|
node-fetch-native@1.6.6: {}
|
||||||
|
|
||||||
|
@ -5162,14 +5162,14 @@ snapshots:
|
||||||
|
|
||||||
side-channel-map@1.0.1:
|
side-channel-map@1.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.3
|
call-bound: 1.0.4
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
get-intrinsic: 1.3.0
|
get-intrinsic: 1.3.0
|
||||||
object-inspect: 1.13.4
|
object-inspect: 1.13.4
|
||||||
|
|
||||||
side-channel-weakmap@1.0.2:
|
side-channel-weakmap@1.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bound: 1.0.3
|
call-bound: 1.0.4
|
||||||
es-errors: 1.3.0
|
es-errors: 1.3.0
|
||||||
get-intrinsic: 1.3.0
|
get-intrinsic: 1.3.0
|
||||||
object-inspect: 1.13.4
|
object-inspect: 1.13.4
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<n-config-provider>
|
<n-config-provider>
|
||||||
<n-message-provider>
|
<n-message-provider>
|
||||||
|
<content />
|
||||||
<router-view v-slot="{ Component, route }">
|
<router-view v-slot="{ Component, route }">
|
||||||
<transition :name="route.meta.transition || 'fade-transform'" mode="out-in">
|
<transition :name="route.meta.transition || 'fade-transform'" mode="out-in">
|
||||||
<component :is="Component" :key="route.path" />
|
<component :is="Component" :key="route.path" />
|
||||||
|
@ -11,4 +12,6 @@
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { NConfigProvider, NMessageProvider } from 'naive-ui';
|
import { NConfigProvider, NMessageProvider } from 'naive-ui';
|
||||||
|
|
||||||
|
import Content from '@/views/content.vue';
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
import request from '@/api/server/requestMock';
|
|
||||||
import type { BaseResult } from '@/types/request'; /* 获取所有数据表 */
|
|
||||||
|
|
||||||
/* 获取所有数据表 */
|
|
||||||
export const getAllTableMetaData = () => {
|
|
||||||
return request<any, BaseResult<any>>({ url: '/table/getAllTableMetaData', method: 'get' });
|
|
||||||
};
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
import request from '@/api/server/request';
|
||||||
|
import type { BaseResult } from '@/types/request'; /* 获取所有数据表 */
|
||||||
|
|
||||||
|
/* 获取所有数据表 */
|
||||||
|
export const generator = (data: any) => {
|
||||||
|
return request<any, BaseResult<any>>({ url: '/vms/generator', method: 'post', data });
|
||||||
|
};
|
|
@ -1,4 +1,3 @@
|
||||||
import { useMessage } from 'naive-ui';
|
|
||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
|
|
||||||
import { getAllTableMetaData, getColumnInfo, getTableMetaData } from '@/api/table';
|
import { getAllTableMetaData, getColumnInfo, getTableMetaData } from '@/api/table';
|
||||||
|
@ -12,10 +11,9 @@ export const useTableStore = defineStore('tableStore', {
|
||||||
actions: {
|
actions: {
|
||||||
/* 获取所有数据表 */
|
/* 获取所有数据表 */
|
||||||
async getAllTableMetaData() {
|
async getAllTableMetaData() {
|
||||||
const message = useMessage();
|
|
||||||
const result = await getAllTableMetaData();
|
const result = await getAllTableMetaData();
|
||||||
if (result.code !== 200) {
|
if (result.code !== 200) {
|
||||||
message.error(result.message);
|
(window as any).$message.error(result.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.tableList = result.data;
|
this.tableList = result.data;
|
||||||
|
@ -23,10 +21,9 @@ export const useTableStore = defineStore('tableStore', {
|
||||||
|
|
||||||
/* 获取表属性 */
|
/* 获取表属性 */
|
||||||
async getTableMetaData(tableName: string) {
|
async getTableMetaData(tableName: string) {
|
||||||
const message = useMessage();
|
|
||||||
const result = await getTableMetaData({ tableName });
|
const result = await getTableMetaData({ tableName });
|
||||||
if (result.code !== 200) {
|
if (result.code !== 200) {
|
||||||
message.error(result.message);
|
(window as any).$message.error(result.message);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,10 +32,9 @@ export const useTableStore = defineStore('tableStore', {
|
||||||
|
|
||||||
/* 获取表属性 */
|
/* 获取表属性 */
|
||||||
async getColumnInfo(tableName: string) {
|
async getColumnInfo(tableName: string) {
|
||||||
const message = useMessage();
|
|
||||||
const result = await getColumnInfo({ tableName });
|
const result = await getColumnInfo({ tableName });
|
||||||
if (result.code !== 200) {
|
if (result.code !== 200) {
|
||||||
message.error(result.message);
|
(window as any).$message.error(result.message);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { defineStore } from 'pinia';
|
||||||
|
|
||||||
|
import { generator } from '@/api/vms';
|
||||||
|
|
||||||
|
export const useVmsStore = defineStore('vmsStore', {
|
||||||
|
state: () => ({
|
||||||
|
generators: [],
|
||||||
|
}),
|
||||||
|
getters: {},
|
||||||
|
actions: {
|
||||||
|
/* 获取所有数据表 */
|
||||||
|
async generator(data: any) {
|
||||||
|
const result = await generator(data);
|
||||||
|
// 需要确保已经在 setup 中执行了 window.$message = message
|
||||||
|
if (result.code !== 200) {
|
||||||
|
(window as any).$message.error(result.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.generators = result.data;
|
||||||
|
(window as any).$message.success(`生成成功,共 ${this.generators.length} 数据`);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
|
@ -0,0 +1,13 @@
|
||||||
|
<template></template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { useMessage } from 'naive-ui';
|
||||||
|
import { defineComponent } from 'vue';
|
||||||
|
|
||||||
|
// content
|
||||||
|
export default defineComponent({
|
||||||
|
setup() {
|
||||||
|
window.$message = useMessage();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -29,7 +29,7 @@
|
||||||
<n-input v-model:value="formValue.tablePrefixes" placeholder="电话号码" />
|
<n-input v-model:value="formValue.tablePrefixes" placeholder="电话号码" />
|
||||||
</n-form-item-gi>
|
</n-form-item-gi>
|
||||||
<n-form-item-gi :span="8" label="生成后端" path="generatorServer">
|
<n-form-item-gi :span="8" label="生成后端" path="generatorServer">
|
||||||
<n-checkbox-group v-model:value="formValue.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 serverOptions" :key="index" :value="item.name">
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
</n-checkbox-group>
|
</n-checkbox-group>
|
||||||
</n-form-item-gi>
|
</n-form-item-gi>
|
||||||
<n-form-item-gi :span="8" label="生成前端" path="generatorWeb">
|
<n-form-item-gi :span="8" label="生成前端" path="generatorWeb">
|
||||||
<n-checkbox-group v-model:value="formValue.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 webOptions" :key="index" v-model:value="item.name">
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
|
@ -54,6 +54,23 @@
|
||||||
</n-button>
|
</n-button>
|
||||||
</n-form-item>
|
</n-form-item>
|
||||||
</n-form>
|
</n-form>
|
||||||
|
|
||||||
|
<!-- 生成好的数据 -->
|
||||||
|
<n-collapse>
|
||||||
|
<n-collapse-item
|
||||||
|
v-for="(item, index) in vmsStore.generators"
|
||||||
|
:key="index"
|
||||||
|
:name="item.path"
|
||||||
|
:title="item.path"
|
||||||
|
>
|
||||||
|
<n-input
|
||||||
|
:autosize="{ minRows: 3 }"
|
||||||
|
:placeholder="item.comment"
|
||||||
|
:value="item.code"
|
||||||
|
type="textarea"
|
||||||
|
/>
|
||||||
|
</n-collapse-item>
|
||||||
|
</n-collapse>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
@ -61,6 +78,8 @@ import {
|
||||||
NButton,
|
NButton,
|
||||||
NCheckbox,
|
NCheckbox,
|
||||||
NCheckboxGroup,
|
NCheckboxGroup,
|
||||||
|
NCollapse,
|
||||||
|
NCollapseItem,
|
||||||
NForm,
|
NForm,
|
||||||
NFormItem,
|
NFormItem,
|
||||||
NFormItemGi,
|
NFormItemGi,
|
||||||
|
@ -70,8 +89,10 @@ import {
|
||||||
useMessage,
|
useMessage,
|
||||||
} from 'naive-ui';
|
} from 'naive-ui';
|
||||||
import { onMounted, reactive, ref } from 'vue';
|
import { onMounted, reactive, ref } from 'vue';
|
||||||
|
import { toRaw } from 'vue-demi';
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
|
|
||||||
|
import { useVmsStore } from '@/store/modules/vms';
|
||||||
import {
|
import {
|
||||||
rules,
|
rules,
|
||||||
serverOptions,
|
serverOptions,
|
||||||
|
@ -79,8 +100,14 @@ import {
|
||||||
} from '@/views/generator-code/components/generator-form/generatorOptions';
|
} from '@/views/generator-code/components/generator-form/generatorOptions';
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
const vmsStore = useVmsStore();
|
||||||
const message = useMessage();
|
const message = useMessage();
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
|
|
||||||
|
const formOption = reactive({
|
||||||
|
generatorServer: [],
|
||||||
|
generatorWeb: [],
|
||||||
|
});
|
||||||
const formValue = reactive({
|
const formValue = reactive({
|
||||||
author: 'Bunny',
|
author: 'Bunny',
|
||||||
packageName: 'cn.bunny.services',
|
packageName: 'cn.bunny.services',
|
||||||
|
@ -89,8 +116,7 @@ const formValue = reactive({
|
||||||
tableName: '',
|
tableName: '',
|
||||||
simpleDateFormat: 'yyyy-MM-dd HH:mm:ss',
|
simpleDateFormat: 'yyyy-MM-dd HH:mm:ss',
|
||||||
tablePrefixes: 't_,sys_,qrtz_,log_',
|
tablePrefixes: 't_,sys_,qrtz_,log_',
|
||||||
generatorServer: undefined,
|
path: [],
|
||||||
generatorWeb: undefined,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* 提交表单 */
|
/* 提交表单 */
|
||||||
|
@ -98,8 +124,23 @@ const onSubmit = (e: MouseEvent) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
formRef.value?.validate(async (errors: any) => {
|
formRef.value?.validate(async (errors: any) => {
|
||||||
if (!errors) {
|
if (!errors) {
|
||||||
console.log(formValue);
|
// 选择要生成的模板
|
||||||
message.success('验证成功');
|
const generatorWeb = formOption.generatorWeb;
|
||||||
|
const generatorServer = formOption.generatorServer;
|
||||||
|
|
||||||
|
// 整理好路径
|
||||||
|
const server = generatorServer.map((server: string) => `server/${server}`);
|
||||||
|
const web = generatorWeb.map((server: string) => `web/${server}`);
|
||||||
|
|
||||||
|
// 整理好数据
|
||||||
|
formValue.path = [...server, ...web];
|
||||||
|
if (formValue.path.length <= 0) {
|
||||||
|
message.error(`选择要生成的模板`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成代码
|
||||||
|
await vmsStore.generator(toRaw(formValue));
|
||||||
} else {
|
} else {
|
||||||
errors.forEach((error: any) => {
|
errors.forEach((error: any) => {
|
||||||
error.forEach((err: any) => {
|
error.forEach((err: any) => {
|
||||||
|
|
|
@ -45,12 +45,12 @@ onMounted(() => {
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<n-tabs animated type="line">
|
<n-tabs animated type="line">
|
||||||
<n-tab-pane name="columns-info" tab="列字段">
|
<n-tab-pane name="generator-code" tab="生成">
|
||||||
<index />
|
<generator-form />
|
||||||
</n-tab-pane>
|
</n-tab-pane>
|
||||||
|
|
||||||
<n-tab-pane name="the beatles" tab="生成">
|
<n-tab-pane name="columns-info" tab="列字段">
|
||||||
<generator-form />
|
<index />
|
||||||
</n-tab-pane>
|
</n-tab-pane>
|
||||||
</n-tabs>
|
</n-tabs>
|
||||||
</n-card>
|
</n-card>
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
<script lang="ts" setup></script>
|
|
||||||
|
|
||||||
<template>初始化页面</template>
|
|
||||||
|
|
||||||
<style scoped></style>
|
|
Loading…
Reference in New Issue