From 9deefe0bb469a5594a1fde30005149ad39c18865 Mon Sep 17 00:00:00 2001 From: zhouhaibin Date: Fri, 28 Jun 2024 16:13:45 +0800 Subject: [PATCH] =?UTF-8?q?vben=E4=BB=A3=E7=A0=81=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/generator/util/VelocityUtils.java | 42 +++++ .../main/resources/vm/vben/api/index.ts.vm | 59 +++++++ .../main/resources/vm/vben/api/model.ts.vm | 57 +++++++ .../main/resources/vm/vben/views/data.ts.vm | 144 ++++++++++++++++++ .../resources/vm/vben/views/index_vben.vue.vm | 115 ++++++++++++++ .../vm/vben/views/index_vben_tree.vue.vm | 111 ++++++++++++++ .../main/resources/vm/vben/views/modal.vue.vm | 68 +++++++++ .../resources/vm/vben/views/modal_tree.vue.vm | 86 +++++++++++ 8 files changed, 682 insertions(+) create mode 100644 ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/api/index.ts.vm create mode 100644 ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/api/model.ts.vm create mode 100644 ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/data.ts.vm create mode 100644 ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/index_vben.vue.vm create mode 100644 ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/index_vben_tree.vue.vm create mode 100644 ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/modal.vue.vm create mode 100644 ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/modal_tree.vue.vm diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityUtils.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityUtils.java index f5db391..c3f56ff 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityUtils.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityUtils.java @@ -134,6 +134,20 @@ public class VelocityUtils { } else if (GenConstants.TPL_TREE.equals(tplCategory)) { templates.add("vm/vue/index-tree.vue.vm"); } + /** + * 添加vben + */ + templates.add("vm/vben/api/index.ts.vm"); + templates.add("vm/vben/api/model.ts.vm"); + templates.add("vm/vben/views/data.ts.vm"); + if (GenConstants.TPL_CRUD.equals(tplCategory)) { + templates.add("vm/vben/views/index_vben.vue.vm"); + templates.add("vm/vben/views/modal.vue.vm"); + } else if (GenConstants.TPL_TREE.equals(tplCategory)) { + templates.add("vm/vben/views/index_vben_tree.vue.vm"); + templates.add("vm/vben/views/modal_tree.vue.vm"); + } + return templates; } @@ -186,6 +200,34 @@ public class VelocityUtils { } else if (template.contains("index-tree.vue.vm")) { fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); } + + String vbenPath = "vben"; + String BusinessName = StringUtils.capitalize(genTable.getBusinessName()); + /** + * 添加vben + */ + if (template.contains("index.ts.vm")) { + fileName = StringUtils.format("{}/api/{}/{}/index.ts", vbenPath, moduleName, businessName); + } + if (template.contains("model.ts.vm")) { + fileName = StringUtils.format("{}/api/{}/{}/model.ts", vbenPath, moduleName, businessName); + } + if (template.contains("index_vben.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vbenPath, moduleName, businessName); + } + if (template.contains("index_vben_tree.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vbenPath, moduleName, businessName); + } + if (template.contains("data.ts.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/{}.data.ts", vbenPath, moduleName, businessName, businessName); + } + if (template.contains("modal.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/{}Modal.vue", vbenPath, moduleName, businessName, BusinessName); + } + if (template.contains("modal_tree.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/{}Modal.vue", vbenPath, moduleName, businessName, BusinessName); + } + return fileName; } diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/api/index.ts.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/api/index.ts.vm new file mode 100644 index 0000000..ef416bd --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/api/index.ts.vm @@ -0,0 +1,59 @@ +import { defHttp } from '@/utils/http/axios'; +import { ID, IDS, commonExport } from '@/api/base'; +import { ${BusinessName}VO, ${BusinessName}Form, ${BusinessName}Query } from './model'; + +/** + * 查询${functionName}列表 + * @param params + * @returns + */ +export function ${businessName}List(params?: ${BusinessName}Query) { + return defHttp.get<${BusinessName}VO[]>({ url: '/${moduleName}/${businessName}/list', params }); +} + +#if($tplCategory != 'tree') +/** + * 导出${functionName}列表 + * @param params + * @returns + */ +export function ${businessName}Export(params?: ${BusinessName}Query) { + return commonExport('/${moduleName}/${businessName}/export', params ?? {}); +} +#end + +/** + * 查询${functionName}详细 + * @param ${pkColumn.javaField} id + * @returns + */ +export function ${businessName}Info(${pkColumn.javaField}: ID) { + return defHttp.get<${BusinessName}VO>({ url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField} }); +} + +/** + * 新增${functionName} + * @param data + * @returns + */ +export function ${businessName}Add(data: ${BusinessName}Form) { + return defHttp.postWithMsg({ url: '/${moduleName}/${businessName}', data }); +} + +/** + * 更新${functionName} + * @param data + * @returns + */ +export function ${businessName}Update(data: ${BusinessName}Form) { + return defHttp.putWithMsg({ url: '/${moduleName}/${businessName}', data }); +} + +/** + * 删除${functionName} + * @param ${pkColumn.javaField} id + * @returns + */ +export function ${businessName}Remove(${pkColumn.javaField}: ID | IDS) { + return defHttp.deleteWithMsg({ url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField} },); +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/api/model.ts.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/api/model.ts.vm new file mode 100644 index 0000000..f8272fe --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/api/model.ts.vm @@ -0,0 +1,57 @@ +import { BaseEntity, PageQuery } from '@/api/base'; + +export interface ${BusinessName}VO { +#foreach ($column in $columns) +#if($column.list) + /** + * $column.columnComment + */ + $column.javaField:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#end +#end +#if ($table.tree) + /** + * 子对象 + */ + children: ${BusinessName}VO[]; +#end +} + +export interface ${BusinessName}Form extends BaseEntity { +#foreach ($column in $columns) +#if($column.insert || $column.edit) + /** + * $column.columnComment + */ + $column.javaField?:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#end +#end +} + +export interface ${BusinessName}Query #if(!${treeCode})extends PageQuery #end{ + +#foreach ($column in $columns) +#if($column.query) + /** + * $column.columnComment + */ + $column.javaField?:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#end +#end + /** + * 日期范围参数 + */ + params?: any; +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/data.ts.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/data.ts.vm new file mode 100644 index 0000000..ba409f0 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/data.ts.vm @@ -0,0 +1,144 @@ +import { BasicColumn } from '@/components/Table'; +import { FormSchema } from '@/components/Form'; +#if(${dicts} != '') +import { getDictOptions } from '@/utils/dict'; +import { useRender } from '@/hooks/component/useRender'; +#end +export const formSchemas: FormSchema[] = [ + #foreach($column in $columns) + #if($column.query) + #if($column.dictType) + #set($dictType=$column.dictType) + #else + #set($dictType="") + #end + #set($parentheseIndex=$column.columnComment.indexOf("(")) + #if($parentheseIndex != -1) + #set($comment=$column.columnComment.substring(0, $parentheseIndex)) + #else + #set($comment=$column.columnComment) + #end + #if($column.htmlType == "input") + #set($component="Input") + #elseif($column.htmlType == "textarea") + #set($component="InputTextArea") + #elseif($column.htmlType == "select") + #set($component="Select") + #elseif($column.htmlType == "radio") + #set($component="RadioButtonGroup") + #elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") + #set($component="DatePicker") + #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") + #set($component="RangePicker") + #else + #set($component="Input") + #end + { + label: '${comment}', + field: '${column.javaField}', + component: '${component}', + #if($dictType != "") + componentProps: { + options: getDictOptions('$dictType') + }, + #elseif($component == "DatePicker" || $component == "RangePicker") + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + #end + }, + #end + #end +]; + +#if(${dicts} != '') +const { renderDict } = useRender(); +#end +export const columns: BasicColumn[] = [ + #foreach($column in $columns) + #if($column.list) + #if($column.dictType) + #set($dictType=$column.dictType) + #else + #set($dictType="") + #end + #set($parentheseIndex=$column.columnComment.indexOf("(")) + #if($parentheseIndex != -1) + #set($comment=$column.columnComment.substring(0, $parentheseIndex)) + #else + #set($comment=$column.columnComment) + #end + { + title: '${comment}', + dataIndex: '${column.javaField}', + #if($dictType != "") + customRender: ({ value }) => renderDict(value, '$dictType'), + #end + }, + #end + #end +]; + +export const modalSchemas: FormSchema[] = [ + #foreach($column in $columns) + #if($column.edit) + #if($column.dictType) + #set($dictType=$column.dictType) + #else + #set($dictType="") + #end + #set($parentheseIndex=$column.columnComment.indexOf("(")) + #if($parentheseIndex != -1) + #set($comment=$column.columnComment.substring(0, $parentheseIndex)) + #else + #set($comment=$column.columnComment) + #end + #if($column.htmlType == "input") + #set($component="Input") + #elseif($column.htmlType == "textarea") + #set($component="InputTextArea") + #elseif($column.htmlType == "select") + #set($component="Select") + #elseif($column.htmlType == "radio") + #set($component="RadioButtonGroup") + #elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") + #set($component="DatePicker") + #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") + #set($component="RangePicker") + #else + #set($component="Input") + #end + #if($column.required) + #set($required='true') + #else + #set($required='false') + #end + { + label: '${comment}', + field: '${column.javaField}', + required: ${required}, + #if("" != $treeParentCode && $column.javaField == $treeParentCode) + component: 'TreeSelect', + #else + component: '${component}', + #end + #if($dictType != "") + componentProps: { + options: getDictOptions('$dictType') + }, + #elseif($component == "DatePicker" || $component == "RangePicker") + componentProps: { + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + }, + #end + #if(${column.pk}) + show: false, + #end + }, + #end + #end +]; diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/index_vben.vue.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/index_vben.vue.vm new file mode 100644 index 0000000..2ae3890 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/index_vben.vue.vm @@ -0,0 +1,115 @@ + + + + + diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/index_vben_tree.vue.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/index_vben_tree.vue.vm new file mode 100644 index 0000000..7455e01 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/index_vben_tree.vue.vm @@ -0,0 +1,111 @@ + + + + + diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/modal.vue.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/modal.vue.vm new file mode 100644 index 0000000..926ed37 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/modal.vue.vm @@ -0,0 +1,68 @@ + + + + + diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/modal_tree.vue.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/modal_tree.vue.vm new file mode 100644 index 0000000..8b99984 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/vben/views/modal_tree.vue.vm @@ -0,0 +1,86 @@ + + + + +