diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm index 69da81493..7d13b5dec 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm @@ -1,35 +1,35 @@ import { useAxios } from '@/hooks/web/useAxios' -import { ${simpleClassName}VO,${simpleClassName}PageReqVO,${simpleClassName}ExcelReqVO } from './types' +import { ${simpleClassName}VO, ${simpleClassName}PageReqVO, ${simpleClassName}ExcelReqVO } from './types' const request = useAxios() #set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") // 查询${table.classComment}列表 export const get${simpleClassName}PageApi = async (params: ${simpleClassName}PageReqVO) => { - return await request.get({ url: '${baseURL}/page', params }) + return await request.get({ url: '${baseURL}/page', params }) } // 查询${table.classComment}详情 export const get${simpleClassName}Api = async (id: number) => { - return await request.get({ url: '${baseURL}/get?id=' + id }) + return await request.get({ url: '${baseURL}/get?id=' + id }) } // 新增${table.classComment} export const create${simpleClassName}Api = async (data: ${simpleClassName}VO) => { - return await request.post({ url: '${baseURL}/create', data }) + return await request.post({ url: '${baseURL}/create', data }) } // 修改${table.classComment} export const update${simpleClassName}Api = async (data: ${simpleClassName}VO) => { - return await request.put({ url: '${baseURL}/update', data }) + return await request.put({ url: '${baseURL}/update', data }) } // 删除${table.classComment} export const delete${simpleClassName}Api = async (id: number) => { - return await request.delete({ url: '${baseURL}/delete?id=' + id }) + return await request.delete({ url: '${baseURL}/delete?id=' + id }) } // 导出${table.classComment} Excel export const export${simpleClassName}Api = async (params: ${simpleClassName}ExcelReqVO) => { - return await request.download({ url: '${baseURL}/export-excel', params }) + return await request.download({ url: '${baseURL}/export-excel', params }) } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm index d5b5d937d..54ab47e02 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/types.ts.vm @@ -2,9 +2,11 @@ export type ${simpleClassName}VO = { #foreach ($column in $columns) #if ($column.createOperation || $column.updateOperation) #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer") - ${column.javaField}: number + ${column.javaField}: number +#elseif(${column.javaType.toLowerCase()} == "date") + ${column.javaField}: string #else - ${column.javaField}: ${column.javaType.toLowerCase()} + ${column.javaField}: ${column.javaType.toLowerCase()} #end #end #end @@ -14,9 +16,11 @@ export type ${simpleClassName}PageReqVO = { #foreach ($column in $columns) #if (${column.listOperation})##查询操作 #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer") - ${column.javaField}: number + ${column.javaField}: number +#elseif(${column.javaType.toLowerCase()} == "date") + ${column.javaField}: string #else - ${column.javaField}: ${column.javaType.toLowerCase()} + ${column.javaField}: ${column.javaType.toLowerCase()} #end #end #end @@ -26,9 +30,11 @@ export type ${simpleClassName}ExcelReqVO = { #foreach ($column in $columns) #if (${column.listOperation})##查询操作 #if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer") - ${column.javaField}: number + ${column.javaField}: number +#elseif(${column.javaType.toLowerCase()} == "date") + ${column.javaField}: string #else - ${column.javaField}: ${column.javaType.toLowerCase()} + ${column.javaField}: ${column.javaType.toLowerCase()} #end #end #end diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm index 965fe49ab..fa64bc883 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/data.ts.vm @@ -8,104 +8,104 @@ export const rules = reactive({ #foreach ($column in $columns) #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 #set($comment=$column.columnComment) - $column.javaField: [{ required: true, message: "${comment}不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end }], + $column.javaField: [{ required: true, message: '${comment}不能为空', trigger: #if($column.htmlType == "select")'change'#else'blur'#end }], #end #end }) // CrudSchema const crudSchemas = reactive<CrudSchema[]>([ #foreach($column in $columns) - #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation) - #set ($dictType = $column.dictType) - { - label: '${column.columnComment}', - field: '${column.javaField}', - #if ("" != $dictType)## 有数据字典 - dictType: DICT_TYPE.$dictType.toUpperCase(), - #end - #if($column.primaryKey) - type: 'index', - form: { - show: false - }, - detail: { - show: false + #if ($column.listOperation || $column.listOperationResult || $column.createOperation || $column.updateOperation) + #set ($dictType = $column.dictType) + { + label: '${column.columnComment}', + field: '${column.javaField}', + #if ("" != $dictType)## 有数据字典 + dictType: DICT_TYPE.$dictType.toUpperCase(), + #end + #if($column.primaryKey) + type: 'index', + form: { + show: false + }, + detail: { + show: false + } + #else + #if (!$column.createOperation && !$column.updateOperation) + form: { + show: false + }, + #elseif(!("" != $column.dictType)) + form: { + show: true, + #if ($column.htmlType == "datetime")## 时间框 + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'YYYY-MM-DD HH:mm:ss' } - #else - #if (!$column.createOperation && !$column.updateOperation) - form: { - false + #elseif($column.htmlType == "editor")## 文本编辑器 + component: 'Editor', + colProps: { + span: 24 }, - #elseif(!("" != $column.dictType)) - form: { - show: true, - #if ($column.htmlType == "datetime")## 时间框 - component: 'DatePicker', - componentProps: { - type: 'datetime', - valueFormat: 'YYYY-MM-DD HH:mm:ss' - } - #elseif($column.htmlType == "editor")## 文本编辑器 - component: 'Editor', - colProps: { - span: 24 - }, - componentProps: { - valueHtml: '' - } - #elseif($column.htmlType == "textarea")## 文本框 - component: 'Input', - componentProps: { - type: 'textarea', - rows: 4 - }, - colProps: { - span: 24 - } - #end - }, - #end - #if ($column.listOperationResult) - search: { - #if($column.htmlType == "input") - show: true - #else - #if($column.htmlType == "datetime") - show: true, - component: 'DatePicker', - componentProps: { - type: 'datetimerange', - valueFormat: 'YYYY-MM-DD HH:mm:ss' - } - #elseif($column.htmlType == "select" || $column.htmlType == "radio") - #if ("" == $dictType)## 没有数据字典 - show: true, - component: 'Select', - componentProps: { - option: [{'','请选择字典生成'}] - } - #else - show: true - #end - #end - #end + componentProps: { + valueHtml: '' + } + #elseif($column.htmlType == "textarea")## 文本框 + component: 'Input', + componentProps: { + type: 'textarea', + rows: 4 + }, + colProps: { + span: 24 } - #end #end }, #end -#end - { - label: t('table.action'), - field: 'action', - width: '240px', - form: { - show: false - }, - detail: { - show: false - } + #if ($column.listOperationResult) + search: { + #if($column.htmlType == "input") + show: true + #else + #if($column.htmlType == "datetime") + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss' + } + #elseif($column.htmlType == "select" || $column.htmlType == "radio") + #if ("" == $dictType)## 没有数据字典 + show: true, + component: 'Select', + componentProps: { + option: [{'','请选择字典生成'}] + } + #else + show: true + #end + #end + #end } + #end + #end + }, + #end +#end + { + label: t('table.action'), + field: 'action', + width: '240px', + form: { + show: false + }, + detail: { + show: false + } + } ]) export const { allSchemas } = useCrudSchemas(crudSchemas) \ No newline at end of file diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm index ca4adc1a6..7a050b8bb 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm @@ -1,92 +1,92 @@ <script setup lang="ts"> - import { ref, unref } from 'vue' - import dayjs from 'dayjs' - import { ElMessage } from 'element-plus' - import { DICT_TYPE } from '@/utils/dict' - import { useTable } from '@/hooks/web/useTable' - import { useI18n } from '@/hooks/web/useI18n' - import { FormExpose } from '@/components/Form' - import type { ${simpleClassName}VO } from '@/api/${table.moduleName}/${simpleClassName}/types' - import { rules, allSchemas } from './${simpleClassName}.data' - import * as ${simpleClassName}Api from '@/api/${table.moduleName}/${simpleClassName}' - const { t } = useI18n() // 国际化 +import { ref, unref } from 'vue' +import dayjs from 'dayjs' +import { ElMessage } from 'element-plus' +import { DICT_TYPE } from '@/utils/dict' +import { useTable } from '@/hooks/web/useTable' +import { useI18n } from '@/hooks/web/useI18n' +import { FormExpose } from '@/components/Form' +import type { ${simpleClassName}VO } from '@/api/${table.moduleName}/${simpleClassName}/types' +import { rules, allSchemas } from './${simpleClassName}.data' +import * as ${simpleClassName}Api from '@/api/${table.moduleName}/${simpleClassName}' +const { t } = useI18n() // 国际化 - // ========== 列表相关 ========== - const { register, tableObject, methods } = useTable<${simpleClassName}VO>({ - getListApi: ${simpleClassName}Api.get${simpleClassName}PageApi, - delListApi: ${simpleClassName}Api.delete${simpleClassName}Api, - exportListApi: ${simpleClassName}Api.export${simpleClassName}Api - }) - const { getList, setSearchParams, delList, exportList } = methods +// ========== 列表相关 ========== +const { register, tableObject, methods } = useTable<${simpleClassName}VO>({ + getListApi: ${simpleClassName}Api.get${simpleClassName}PageApi, + delListApi: ${simpleClassName}Api.delete${simpleClassName}Api, + exportListApi: ${simpleClassName}Api.export${simpleClassName}Api +}) +const { getList, setSearchParams, delList, exportList } = methods - // ========== CRUD 相关 ========== - const actionLoading = ref(false) // 遮罩层 - const actionType = ref('') // 操作按钮的类型 - const dialogVisible = ref(false) // 是否显示弹出层 - const dialogTitle = ref('edit') // 弹出层标题 - const formRef = ref<FormExpose>() // 表单 Ref +// ========== CRUD 相关 ========== +const actionLoading = ref(false) // 遮罩层 +const actionType = ref('') // 操作按钮的类型 +const dialogVisible = ref(false) // 是否显示弹出层 +const dialogTitle = ref('edit') // 弹出层标题 +const formRef = ref<FormExpose>() // 表单 Ref - // 设置标题 - const setDialogTile = (type: string) => { - dialogTitle.value = t('action.' + type) - actionType.value = type - dialogVisible.value = true - } +// 设置标题 +const setDialogTile = (type: string) => { + dialogTitle.value = t('action.' + type) + actionType.value = type + dialogVisible.value = true +} - // 新增操作 - const handleCreate = () => { - setDialogTile('create') - // 重置表单 - unref(formRef)?.getElFormRef()?.resetFields() - } +// 新增操作 +const handleCreate = () => { + setDialogTile('create') + // 重置表单 + unref(formRef)?.getElFormRef()?.resetFields() +} - // 修改操作 - const handleUpdate = async (row: ${simpleClassName}VO) => { - setDialogTile('update') - // 设置数据 - const res = await ${simpleClassName}Api.get${simpleClassName}Api(row.id) - unref(formRef)?.setValues(res) - } +// 修改操作 +const handleUpdate = async (row: ${simpleClassName}VO) => { + setDialogTile('update') + // 设置数据 + const res = await ${simpleClassName}Api.get${simpleClassName}Api(row.id) + unref(formRef)?.setValues(res) +} - // 提交按钮 - const submitForm = async () => { - const elForm = unref(formRef)?.getElFormRef() - if (!elForm) return - elForm.validate(async (valid) => { - if (valid) { - actionLoading.value = true - // 提交请求 - try { - const data = unref(formRef)?.formModel as ${simpleClassName}VO - if (actionType.value === 'create') { - await ${simpleClassName}Api.create${simpleClassName}Api(data) - ElMessage.success(t('common.createSuccess')) - } else { - await ${simpleClassName}Api.update${simpleClassName}Api(data) - ElMessage.success(t('common.updateSuccess')) - } - // 操作成功,重新加载列表 - dialogVisible.value = false - await getList() - } finally { - actionLoading.value = false +// 提交按钮 +const submitForm = async () => { + const elForm = unref(formRef)?.getElFormRef() + if (!elForm) return + elForm.validate(async (valid) => { + if (valid) { + actionLoading.value = true + // 提交请求 + try { + const data = unref(formRef)?.formModel as ${simpleClassName}VO + if (actionType.value === 'create') { + await ${simpleClassName}Api.create${simpleClassName}Api(data) + ElMessage.success(t('common.createSuccess')) + } else { + await ${simpleClassName}Api.update${simpleClassName}Api(data) + ElMessage.success(t('common.updateSuccess')) } + // 操作成功,重新加载列表 + dialogVisible.value = false + await getList() + } finally { + actionLoading.value = false } - }) - } + } + }) +} - // ========== 详情相关 ========== - const detailRef = ref() // 详情 Ref +// ========== 详情相关 ========== +const detailRef = ref() // 详情 Ref - // 详情操作 - const handleDetail = async (row: ${simpleClassName}VO) => { - // 设置数据 - detailRef.value = row - setDialogTile('detail') - } +// 详情操作 +const handleDetail = async (row: ${simpleClassName}VO) => { + // 设置数据 + detailRef.value = row + setDialogTile('detail') +} - // ========== 初始化 ========== - getList() +// ========== 初始化 ========== +getList() </script> <template> @@ -101,63 +101,63 @@ <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }} </el-button> <el-button - type="warning" - v-hasPermi="['${permissionPrefix}:export']" - :loading="tableObject.exportLoading" - @click="exportList('数据.xls')" + type="warning" + v-hasPermi="['${permissionPrefix}:export']" + :loading="tableObject.exportLoading" + @click="exportList('数据.xls')" > <Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }} </el-button> </div> <!-- 列表 --> <Table - :columns="allSchemas.tableColumns" - :selection="false" - :data="tableObject.tableList" - :loading="tableObject.loading" - :pagination="{ + :columns="allSchemas.tableColumns" + :selection="false" + :data="tableObject.tableList" + :loading="tableObject.loading" + :pagination="{ total: tableObject.total }" - v-model:pageSize="tableObject.pageSize" - v-model:currentPage="tableObject.currentPage" - @register="register" + v-model:pageSize="tableObject.pageSize" + v-model:currentPage="tableObject.currentPage" + @register="register" > #foreach($column in $columns) #if ($column.listOperationResult) #set ($dictType=$column.dictType) #if ($column.javaType == "Date")## 时间类型 - <template #${column.javaField}="{ row }"> - <span>{{ dayjs(row.${column.javaField}).format('YYYY-MM-DD HH:mm:ss') }}</span> - </template> + <template #${column.javaField}="{ row }"> + <span>{{ dayjs(row.${column.javaField}).format('YYYY-MM-DD HH:mm:ss') }}</span> + </template> #elseif("" != $column.dictType)## 数据字典 - <template #${column.javaField}="{ row }"> - <DictTag :type="DICT_TYPE.$dictType.toUpperCase()" :value="row.${column.javaField}" /> - </template> + <template #${column.javaField}="{ row }"> + <DictTag :type="DICT_TYPE.$dictType.toUpperCase()" :value="row.${column.javaField}" /> + </template> #end #end #end <template #action="{ row }"> <el-button - link - type="primary" - v-hasPermi="['${permissionPrefix}:update']" - @click="handleUpdate(row)" + link + type="primary" + v-hasPermi="['${permissionPrefix}:update']" + @click="handleUpdate(row)" > <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} </el-button> <el-button - link - type="primary" - v-hasPermi="['${permissionPrefix}:update']" - @click="handleDetail(row)" + link + type="primary" + v-hasPermi="['${permissionPrefix}:update']" + @click="handleDetail(row)" > <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} </el-button> <el-button - link - type="primary" - v-hasPermi="['${permissionPrefix}:delete']" - @click="delList(row.id, false)" + link + type="primary" + v-hasPermi="['${permissionPrefix}:delete']" + @click="delList(row.id, false)" > <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} </el-button> @@ -168,16 +168,16 @@ <Dialog v-model="dialogVisible" :title="dialogTitle"> <!-- 对话框(添加 / 修改) --> <Form - v-if="['create', 'update'].includes(actionType)" - :schema="allSchemas.formSchema" - :rules="rules" - ref="formRef" + v-if="['create', 'update'].includes(actionType)" + :schema="allSchemas.formSchema" + :rules="rules" + ref="formRef" /> <!-- 对话框(详情) --> <Descriptions - v-if="actionType === 'detail'" - :schema="allSchemas.detailSchema" - :data="detailRef" + v-if="actionType === 'detail'" + :schema="allSchemas.detailSchema" + :data="detailRef" > #foreach($column in $columns) #if ($column.listOperationResult) @@ -197,10 +197,10 @@ <!-- 操作按钮 --> <template #footer> <el-button - v-if="['create', 'update'].includes(actionType)" - type="primary" - :loading="actionLoading" - @click="submitForm" + v-if="['create', 'update'].includes(actionType)" + type="primary" + :loading="actionLoading" + @click="submitForm" > {{ t('action.save') }} </el-button> diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue index 968f308d6..91bf847d0 100644 --- a/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue +++ b/yudao-ui-admin-vue3/src/views/infra/codegen/EditTable.vue @@ -38,15 +38,15 @@ const submitForm = async () => { if (basicForm && genForm) { const basicInfoData = (await basicInfo?.getFormData()) as CodegenTableVO const genInfoData = (await genInfo?.getFormData()) as CodegenTableVO - const genTable: CodegenUpdateReqVO = { - table: Object.assign({}, basicInfoData, genInfoData), - columns: cloumCurrentRow.value - } if (parentMenuId.value) { genInfoData.parentMenuId = parentMenuId.value } else { genInfoData.parentMenuId = 0 } + const genTable: CodegenUpdateReqVO = { + table: Object.assign({}, basicInfoData, genInfoData), + columns: cloumCurrentRow.value + } await updateCodegenTableApi(genTable) ElMessage.success(t('common.updateSuccess')) push('/infra/codegen') diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue b/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue index e51a9a91f..c2b592207 100644 --- a/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue +++ b/yudao-ui-admin-vue3/src/views/infra/codegen/components/GenInfoForm.vue @@ -150,7 +150,7 @@ defineExpose({ :props="menuProps" :data="menuOptions" check-strictly - @node-click="handleNodeClick" + @change="handleNodeClick" /> </template> </Form>