Skip to content

Commit f83e470

Browse files
committed
feat: 🎸 自动生成giime页面
1 parent f01ee99 commit f83e470

10 files changed

+51
-20
lines changed

src/api/controller/genTable/getGenTableAll.ts

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export function getGenTableAll(params: GetGenTableAllParams) {
1313
const paramsInput = {
1414
name: params.name,
1515
desc: params.desc,
16+
pathPrefix: params.pathPrefix,
1617
remark: params.remark,
1718
tplCategory: params.tplCategory,
1819
};
@@ -26,6 +27,8 @@ interface GetGenTableAllParams {
2627
name?: string;
2728
/** 表描述 */
2829
desc?: string;
30+
/** 路由前缀 */
31+
pathPrefix?: string;
2932
/** 备注 */
3033
remark?: string;
3134
/** 生成模板类型 */

src/api/interface/apiTypes/GenTableCreateDto.ts

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ export interface GenTableCreateDto {
33
name: string;
44
/** 表描述 */
55
desc: string;
6+
/** 路由前缀 */
7+
pathPrefix: string;
68
/** 备注 */
79
remark?: string;
810
/** 生成模板类型 */

src/api/interface/apiTypes/GenTableEntity.ts

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ export interface GenTableEntity {
77
name: string;
88
/** 表描述 */
99
desc: string;
10+
/** 路由前缀 */
11+
pathPrefix: string;
1012
/** 备注 */
1113
remark?: string;
1214
/** 创建时间 */

src/api/interface/apiTypes/GenTableGenCodeDto.ts

+2
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ export interface GenTableGenCodeDto {
55
formType: string;
66
/** 模板 */
77
template: string;
8+
/** 接口地址 */
9+
apiController: string;
810
}

src/api/interface/apiTypes/GenTableImportInterfaceResultDto.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export interface GenTableImportInterfaceResultDto {
44
/** desc */
55
desc: string;
66
/** tsType */
7-
tsType: string;
7+
tsType: 'string' | 'number' | 'boolean' | 'Date';
88
/** hasQuestionToken */
99
hasQuestionToken: boolean;
1010
}

src/api/interface/apiTypes/GenTableListWhereDto.ts

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ export interface GenTableListWhereDto {
33
name?: string;
44
/** 表描述 */
55
desc?: string;
6+
/** 路由前缀 */
7+
pathPrefix?: string;
68
/** 备注 */
79
remark?: string;
810
/** 生成模板类型 */

src/api/interface/apiTypes/GenTableUpdateDto.ts

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ export interface GenTableUpdateDto {
33
name?: string;
44
/** 表描述 */
55
desc?: string;
6+
/** 路由前缀 */
7+
pathPrefix?: string;
68
/** 备注 */
79
remark?: string;
810
/** 生成模板类型 */

src/views/tool/gen/basicInfoForm.vue

+6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
<el-input v-model="info.desc" placeholder="请输入" />
1313
</el-form-item>
1414
</el-col>
15+
<el-col :span="12">
16+
<el-form-item label="路由前缀" prop="pathPrefix">
17+
<el-input v-model="info.pathPrefix" placeholder="请输入" />
18+
</el-form-item>
19+
</el-col>
1520
<el-col :span="12">
1621
<el-form-item label="表类型" prop="tplCategory">
1722
<el-select v-model="info.tplCategory">
@@ -49,6 +54,7 @@ const basicInfoForm = ref<FormInstance>();
4954
const rules = ref({
5055
name: [{ required: true, message: '请输入表名称', trigger: 'blur' }],
5156
desc: [{ required: true, message: '请输入表描述', trigger: 'blur' }],
57+
pathPrefix: [{ required: true, message: '请输入路由前缀', trigger: 'blur' }],
5258
tplCategory: [{ required: true, message: '请选择表类型', trigger: 'blur' }],
5359
// className: [{ required: true, message: '请输入实体类名称', trigger: 'blur' }],
5460
// functionAuthor: [{ required: true, message: '请输入作者', trigger: 'blur' }],

src/views/tool/gen/editTable.vue

+13-15
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
:data="columnsForm.columns"
3030
row-key="id"
3131
:max-height="tableHeight"
32+
@selectionChange="handleSelectionChange"
3233
>
34+
<el-table-column fixed type="selection" width="55" align="center" />
3335
<el-table-column label="序号" type="index" min-width="5%" />
3436
<el-table-column label="字段列名" min-width="10%">
3537
<template #default="scope">
@@ -272,7 +274,7 @@ import genInfoForm from './genInfoForm.vue';
272274
import { ref } from 'vue';
273275
import { useRoute, useRouter } from 'vue-router';
274276
import { oneOf, PartialByKeys } from '@zeronejs/utils';
275-
import { GenColumnsEntity, GenTableEntity } from '@/api/interface';
277+
import { DeepRequired, GenColumnsEntity, GenTableEntity } from '@/api/interface';
276278
import { CheckboxValueType, ElMessage, FormInstance } from 'element-plus';
277279
import { ElModalConfirm } from '@/plugins/ElModal';
278280
import { Upload, Delete, Plus } from '@element-plus/icons-vue';
@@ -589,19 +591,15 @@ const getList = async () => {
589591
}
590592
};
591593
getList();
592-
const useCheckTitle = (
593-
key: keyof Pick<ColumnsListItem, 'isInsert' | 'isEdit' | 'isList' | 'isQuery' | 'required'>
594-
) => {
595-
const checkAll = computed(() => columnsForm.value.columns.every(it => it[key]));
596-
const isIndeterminate = computed(() => !checkAll.value && columnsForm.value.columns.some(it => it[key]));
597-
const handleCheckAllChange = (val: CheckboxValueType) => {
598-
columnsForm.value.columns.forEach(it => (it[key] = Boolean(val)));
599-
};
600-
return {
601-
checkAll,
602-
isIndeterminate,
603-
handleCheckAllChange,
604-
};
594+
const ids = ref<number[]>([]);
595+
// 单选
596+
const single = ref(true);
597+
// 是否选中了数据
598+
const multiple = ref(true);
599+
/** 多选框选中数据 */
600+
const handleSelectionChange = (selection: DeepRequired<ColumnsListItem[]>) => {
601+
ids.value = selection.map(item => item.id);
602+
single.value = selection.length !== 1;
603+
multiple.value = !selection.length;
605604
};
606-
const { checkAll, isIndeterminate, handleCheckAllChange } = useCheckTitle('isInsert');
607605
</script>

src/views/tool/gen/index.vue

+18-4
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
</el-table-column>
7171
<el-table-column label="表名称" align="center" prop="name" :show-overflow-tooltip="true" />
7272
<el-table-column label="表描述" align="center" prop="desc" :show-overflow-tooltip="true" />
73+
<el-table-column label="路由前缀" align="center" prop="pathPrefix" :show-overflow-tooltip="true" />
7374
<!-- <el-table-column label="实体" align="center" prop="className" :show-overflow-tooltip="true" /> -->
7475
<el-table-column label="创建时间" align="center" width="160">
7576
<template #default="scope">
@@ -122,20 +123,23 @@
122123
/>
123124
<!-- 添加或修改用户配置对话框 -->
124125
<el-dialog v-model="open" title="添加表" width="600px" append-to-body>
125-
<el-form ref="tableAddRef" :model="form" :rules="rules" label-width="80px">
126+
<el-form ref="tableAddRef" :model="form" :rules="rules" label-width="120px">
126127
<!-- <el-row>
127128
<el-col :span="12"> -->
128-
<el-form-item label="表名称" prop="name">
129+
<el-form-item label="表名称(英文)" prop="name">
129130
<el-input v-model="form.name" placeholder="请输入表名称" maxlength="30" />
130131
</el-form-item>
131132
<!-- </el-col>
132133
</el-row> -->
133134

134135
<!-- <el-row>
135136
<el-col :span="12"> -->
136-
<el-form-item label="表描述" prop="desc">
137+
<el-form-item label="表描述(中文)" prop="desc">
137138
<el-input v-model="form.desc" placeholder="表描述" maxlength="30" />
138139
</el-form-item>
140+
<el-form-item label="路由前缀" prop="pathPrefix">
141+
<el-input v-model="form.pathPrefix" placeholder="路由前缀" maxlength="30" />
142+
</el-form-item>
139143
<!-- </el-col>
140144
</el-row> -->
141145
</el-form>
@@ -160,6 +164,9 @@
160164
<el-radio v-for="it in tempList" :key="it" :label="it"> {{ it }}</el-radio>
161165
</el-radio-group>
162166
</el-form-item>
167+
<el-form-item label="接口地址" prop="apiController">
168+
<el-input v-model="apiController" />
169+
</el-form-item>
163170
</el-form>
164171
<template #footer>
165172
<div class="dialog-footer">
@@ -188,6 +195,7 @@ import {
188195
getGenCodeTemplates,
189196
} from '@/api/controller';
190197
import { useRouter } from 'vue-router';
198+
import { useLocalStorage } from '@vueuse/core';
191199
const router = useRouter();
192200
const open = ref(false);
193201
const tableList = ref<GenTableEntity[]>([]);
@@ -204,13 +212,16 @@ const form = ref<GenTableCreateDto>({
204212
name: '',
205213
desc: '',
206214
tplCategory: 'crud',
215+
pathPrefix: '',
207216
});
208217
const rules = ref({
209218
name: [
210219
{ required: true, message: '表名称不能为空', trigger: 'blur' },
211220
{ min: 2, max: 80, message: '表名称长度必须介于 2 和 80 之间', trigger: 'blur' },
212221
],
213222
desc: [{ required: true, message: '表描述不能为空', trigger: 'blur' }],
223+
pathPrefix: [{ required: true, message: '路由前缀不能为空', trigger: 'blur' }],
224+
214225
});
215226
const data = reactive<{
216227
queryParams: {
@@ -272,8 +283,10 @@ function handleQuery() {
272283
const openGenDialog = ref(false);
273284
const genform = ref({
274285
formType: 'dialog',
275-
template: 'element-plus',
286+
template: 'giime',
276287
});
288+
const apiController = useLocalStorage('apiController', '@/api/controller');
289+
277290
const genId = ref(0);
278291
/** 生成代码操作 */
279292
async function handleGenTable() {
@@ -284,6 +297,7 @@ async function handleGenTable() {
284297
const { data } = await postGenCode({
285298
ids: ids,
286299
...genform.value,
300+
apiController: apiController.value,
287301
});
288302
const arraybuffer = new Int8Array(data.data);
289303
// 再输入到 Blob 生成文件

0 commit comments

Comments
 (0)