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