From 778864f28c7a43c29f0331bdcd9818c410441f03 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Tue, 9 Jul 2024 14:19:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=EF=BC=9A=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=BB=E5=AD=90=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/vm/java/controller.java.vm | 31 +++-- src/main/resources/vm/java/domain.java.vm | 16 ++- src/main/resources/vm/java/mapper.java.vm | 20 +++ src/main/resources/vm/java/service.java.vm | 40 ++++++ .../resources/vm/java/serviceImpl.java.vm | 119 ++++++++++++++++++ src/main/resources/vm/java/sub-domain.java.vm | 96 +++++++------- src/main/resources/vm/js/api.js.vm | 25 ++-- src/main/resources/vm/sql/sql.vm | 6 +- src/main/resources/vm/vue/index.vue.vm | 32 +++-- src/main/resources/vm/vue/v3/index.vue.vm | 21 +++- src/main/resources/vm/xml/mapper.xml.vm | 20 +++ 11 files changed, 338 insertions(+), 88 deletions(-) diff --git a/src/main/resources/vm/java/controller.java.vm b/src/main/resources/vm/java/controller.java.vm index 5b31422..241ae34 100644 --- a/src/main/resources/vm/java/controller.java.vm +++ b/src/main/resources/vm/java/controller.java.vm @@ -10,10 +10,7 @@ import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; import com.jg.common.utils.QueryPage; import com.jg.framework.aspectj.lang.annotation.Log; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.jg.framework.web.controller.BaseController; import ${packageName}.domain.${ClassName}; import ${packageName}.service.I${ClassName}Service; @@ -31,7 +28,7 @@ import com.jg.framework.web.domain.R; @Slf4j @Api(tags = "${functionName}") @RestController -@RequestMapping("/${moduleName}") +@RequestMapping("/${businessName}") public class ${ClassName}Controller extends BaseController{ @Resource @@ -66,7 +63,7 @@ public class ${ClassName}Controller extends BaseController{ @ApiOperation(value = "${functionName}id详细信息", notes = "${functionName}id详细信息") @GetMapping("/query") public R<${ClassName}> query(Long id) { - ${ClassName} queryinfo = ${className}Service.getById(id); + ${ClassName} queryinfo = ${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); return R.ok(queryinfo); } /** @@ -76,8 +73,8 @@ public class ${ClassName}Controller extends BaseController{ @ApiOperation(value = "${functionName}新增信息", notes = "${functionName}新增信息") @Log(title = "${functionName}", businessType = BusinessType.INSERT) @PostMapping("/add") - public R add(${ClassName} ${className}) { - boolean res = ${className}Service.save(${className}); + public R add(@RequestBody ${ClassName} ${className}) { + int res = ${className}Service.insert${ClassName}(${className}); return R.ok(res); } /** @@ -87,8 +84,8 @@ public class ${ClassName}Controller extends BaseController{ @ApiOperation(value = "${functionName}修改信息", notes = "${functionName}修改信息") @Log(title = "${functionName}", businessType = BusinessType.UPDATE) @PostMapping("/edit") - public R edit(${ClassName} ${className}) { - boolean res = ${className}Service.updateById(${className}); + public R edit(@RequestBody ${ClassName} ${className}) { + int res = ${className}Service.update${ClassName}(${className}); return R.ok(res); } /** @@ -99,7 +96,19 @@ public class ${ClassName}Controller extends BaseController{ @Log(title = "${functionName}", businessType = BusinessType.DELETE) @PostMapping("/remove") public R remove(Long id) { - boolean res = ${className}Service.removeById(id); + boolean res = ${className}Service.delete${ClassName}By${pkColumn.capJavaField}(id); + return R.ok(res); + } + + /** + * ${functionName}批量删除信息 + */ + @PreAuthorize("@ss.hasPermi('${permissionPrefix}:removeBatch')") + @ApiOperation(value = "${functionName}批量删除信息", notes = "${functionName}批量删除信息") + @Log(title = "${functionName}", businessType = BusinessType.DELETE) + @PostMapping("/removeBatch") + public R removeBatch(@RequestBody Long[] ids) { + boolean res = ${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(ids); return R.ok(res); } diff --git a/src/main/resources/vm/java/domain.java.vm b/src/main/resources/vm/java/domain.java.vm index 3c81e50..1d503b7 100644 --- a/src/main/resources/vm/java/domain.java.vm +++ b/src/main/resources/vm/java/domain.java.vm @@ -1,6 +1,5 @@ package ${packageName}.domain; -import com.alibaba.fastjson2.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -15,8 +14,10 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; - - +import java.io.Serializable; +#if($table.sub) +import java.util.List; +#end /** * ${functionName}对象 ${tableName} @@ -30,7 +31,7 @@ import lombok.NoArgsConstructor; @Builder @ApiModel("${functionName}表") @TableName("${tableName}") -public class ${ClassName}{ +public class ${ClassName} implements Serializable { private static final long serialVersionUID=1L; #foreach ($column in $columns) @@ -66,4 +67,11 @@ private static final long serialVersionUID=1L; #end #end #end +#if($table.sub) + /** $table.subTable.functionName信息 */ + @ApiModelProperty(value = "$table.subTable.functionName信息",hidden = true) + @TableField(exist = false) + private List<${subClassName}> ${subclassName}List; + +#end } \ No newline at end of file diff --git a/src/main/resources/vm/java/mapper.java.vm b/src/main/resources/vm/java/mapper.java.vm index ae34dd5..e24b5bd 100644 --- a/src/main/resources/vm/java/mapper.java.vm +++ b/src/main/resources/vm/java/mapper.java.vm @@ -11,6 +11,7 @@ import java.util.List; * @date ${datetime} */ public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> { + /** * 查询${functionName}分页列表 * @@ -18,4 +19,23 @@ public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> { * @return ${functionName}集合 */ public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + +#if($table.sub) + + /** + * 通过${functionName}主键删除${subTable.functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}ID + * @return 结果 + */ + public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField}); +#end } diff --git a/src/main/resources/vm/java/service.java.vm b/src/main/resources/vm/java/service.java.vm index 5e7e2d6..de52869 100644 --- a/src/main/resources/vm/java/service.java.vm +++ b/src/main/resources/vm/java/service.java.vm @@ -18,4 +18,44 @@ public interface I${ClassName}Service extends IService<${ClassName}> { * @return ${functionName}集合 */ public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int insert${ClassName}(${ClassName} ${className}); + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ + public int update${ClassName}(${ClassName} ${className}); + + /** + * 批量删除${functionName} + * + * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合 + * @return 结果 + */ + public boolean delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); + + /** + * 删除${functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return 结果 + */ + public boolean delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); } diff --git a/src/main/resources/vm/java/serviceImpl.java.vm b/src/main/resources/vm/java/serviceImpl.java.vm index ac2195a..239b57d 100644 --- a/src/main/resources/vm/java/serviceImpl.java.vm +++ b/src/main/resources/vm/java/serviceImpl.java.vm @@ -4,6 +4,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import ${packageName}.mapper.${ClassName}Mapper; import ${packageName}.domain.${ClassName}; import ${packageName}.service.I${ClassName}Service; +#if($table.sub) +import com.jg.common.utils.StringUtils; +import org.springframework.transaction.annotation.Transactional; +import ${packageName}.mapper.${subClassName}Mapper; +import ${packageName}.domain.${subClassName}; +#end import org.springframework.stereotype.Service; import java.util.List; import javax.annotation.Resource; @@ -20,6 +26,9 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C @Resource private ${ClassName}Mapper ${className}Mapper; + @Resource + private ${subClassName}Mapper ${subclassName}Mapper; + /** * 查询${functionName}分页列表 * @@ -31,4 +40,114 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C { return ${className}Mapper.select${ClassName}List(${className}); } + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return ${functionName} + */ + @Override + public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) + { + return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); + } + + /** + * 新增${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int insert${ClassName}(${ClassName} ${className}) + { +#if($table.sub) + int rows = ${className}Mapper.insert(${className}); + insert${subClassName}(${className}); + return rows; +#else + return ${className}Mapper.insert${ClassName}(${className}); +#end + } + + /** + * 修改${functionName} + * + * @param ${className} ${functionName} + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public int update${ClassName}(${ClassName} ${className}) + { +#if($table.sub) + ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}()); + insert${subClassName}(${className}); +#end + return ${className}Mapper.updateById(${className}); + } + + /** + * 批量删除${functionName} + * + * @param ${pkColumn.javaField}s 需要删除的${functionName}主键 + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public boolean delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) + { + for (${pkColumn.javaType} ${pkColumn.javaField} : ${pkColumn.javaField}s) { + delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}); + } + return true; + } + + /** + * 删除${functionName}信息 + * + * @param ${pkColumn.javaField} ${functionName}主键 + * @return 结果 + */ +#if($table.sub) + @Transactional +#end + @Override + public boolean delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) + { +#if($table.sub) + ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); +#end + ${className}Mapper.deleteById(${pkColumn.javaField}); + return true; + } +#if($table.sub) + + /** + * 新增${subTable.functionName}信息 + * + * @param ${className} ${functionName}对象 + */ + public void insert${subClassName}(${ClassName} ${className}) + { + List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List(); + ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}(); + if (StringUtils.isNotNull(${subclassName}List)) + { + for (${subClassName} ${subclassName} : ${subclassName}List) + { + ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField}); + ${subclassName}Mapper.insert(${subclassName}); + } + } + } +#end } diff --git a/src/main/resources/vm/java/sub-domain.java.vm b/src/main/resources/vm/java/sub-domain.java.vm index bd6247d..4d3bfa6 100644 --- a/src/main/resources/vm/java/sub-domain.java.vm +++ b/src/main/resources/vm/java/sub-domain.java.vm @@ -1,21 +1,35 @@ package ${packageName}.domain; - #foreach ($import in $subImportList) - import ${import}; - #end -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; -import com.rchuing.common.annotation.Excel; -import com.rchuing.common.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.jg.framework.aspectj.lang.annotation.Excel; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; /** * ${subTable.functionName}对象 ${subTableName} * - * @author ${author} + * @author jg jg${author} * @date ${datetime} */ -public class ${subClassName} extends BaseEntity { -private static final long serialVersionUID = 1L; +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@ApiModel("${subTable.functionName}表") +@TableName("${subTableName}") +public class ${subClassName} implements Serializable { +private static final long serialVersionUID=1L; #foreach ($column in $subTable.columns) #if(!$table.isSuperColumn($column.javaField)) @@ -27,47 +41,27 @@ private static final long serialVersionUID = 1L; #else #set($comment=$column.columnComment) #end - #if($parentheseIndex != -1) - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") - #elseif($column.javaType == 'Date') - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") - #else - @Excel(name = "${comment}") - #end #end - private $column.javaType $column.javaField; - + #if($column.isPk == 1) + @JsonSerialize(using = ToStringSerializer.class) + @ApiModelProperty("$column.columnComment") + @TableId(value = "$column.columnName" , type = IdType.ASSIGN_ID) + private $column.javaType $column.javaField; + #else + @ApiModelProperty("$column.columnComment") + @Excel(name = "$column.columnComment") + @TableField("$column.columnName") + private $column.javaType $column.javaField; + #end + #else + #if($column.javaType == 'Date') + /** $column.columnComment */ + @ApiModelProperty(value = "$column.columnComment",hidden = true) + @Excel(name = "$column.columnComment") + @TableField("$column.columnName") + @JsonSerialize(using = ToStringSerializer.class) + private String $column.javaField; + #end #end #end -#foreach ($column in $subTable.columns) - #if(!$table.isSuperColumn($column.javaField)) - #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) - #set($AttrName=$column.javaField) - #else - #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #end - public void set${AttrName}($column.javaType $column.javaField) { - this.$column.javaField = $column.javaField; - } - - public $column.javaType get${AttrName}() { - return $column.javaField; - } - #end -#end - -@Override -public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - #foreach ($column in $subTable.columns) - #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) - #set($AttrName=$column.javaField) - #else - #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #end - .append("${column.javaField}", get${AttrName}()) - #end - .toString(); - } - } +} \ No newline at end of file diff --git a/src/main/resources/vm/js/api.js.vm b/src/main/resources/vm/js/api.js.vm index 188eb26..373dd25 100644 --- a/src/main/resources/vm/js/api.js.vm +++ b/src/main/resources/vm/js/api.js.vm @@ -3,7 +3,7 @@ import request from '@/utils/request' // 查询${functionName}分列表 export function listPage${BusinessName}(data) { return request({ - url: '/${moduleName}/listPage', + url: '/${businessName}/listPage', method: 'post', params: data }) @@ -11,14 +11,14 @@ export function listPage${BusinessName}(data) { // 查询${functionName}列表 export function list${BusinessName}() { return request({ - url: '/${moduleName}/list', + url: '/${businessName}/list', method: 'get', }) } // 查询${functionName}详细 export function get${BusinessName}(${pkColumn.javaField}) { return request({ - url: '/${moduleName}/query?id=' + ${pkColumn.javaField}, + url: '/${businessName}/query?id=' + ${pkColumn.javaField}, method: 'get' }) } @@ -26,26 +26,35 @@ export function get${BusinessName}(${pkColumn.javaField}) { // 新增${functionName} export function add${BusinessName}(data) { return request({ - url: '/${moduleName}/add', + url: '/${businessName}/add', method: 'post', - params: data + data: data }) } // 修改${functionName} export function update${BusinessName}(data) { return request({ - url: '/${moduleName}/edit', + url: '/${businessName}/edit', method: 'post', - params: data + data: data }) } // 删除${functionName} export function del${BusinessName}(${pkColumn.javaField}) { return request({ - url: '/${moduleName}/remove/', + url: '/${businessName}/remove/', method: 'post', params: {id:${pkColumn.javaField}} }) } + +// 批量删除${functionName} +export function delBatch${BusinessName}(data) { + return request({ + url: '/${businessName}/removeBatch/', + method: 'post', + data: data + }) +} diff --git a/src/main/resources/vm/sql/sql.vm b/src/main/resources/vm/sql/sql.vm index 0575583..d12263e 100644 --- a/src/main/resources/vm/sql/sql.vm +++ b/src/main/resources/vm/sql/sql.vm @@ -1,11 +1,12 @@ -- 菜单 SQL insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) -values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 'admin', sysdate(), '', null, '${functionName}菜单'); +values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:listPage', '#', 'admin', sysdate(), '', null, '${functionName}菜单'); -- 按钮父菜单ID SELECT @parentId := LAST_INSERT_ID(); -- 按钮 SQL + insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 'admin', sysdate(), '', null, ''); @@ -18,5 +19,8 @@ values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', ' insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('${functionName}批量删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:removeBatch', '#', 'admin', sysdate(), '', null, ''); + insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 'admin', sysdate(), '', null, ''); \ No newline at end of file diff --git a/src/main/resources/vm/vue/index.vue.vm b/src/main/resources/vm/vue/index.vue.vm index 12f0296..8ec191d 100644 --- a/src/main/resources/vm/vue/index.vue.vm +++ b/src/main/resources/vm/vue/index.vue.vm @@ -99,8 +99,8 @@ icon="el-icon-delete" size="mini" :disabled="multiple" - @click="handleDelete" - v-hasPermi="['${moduleName}:${businessName}:remove']" + @click="handleBatchDelete" + v-hasPermi="['${moduleName}:${businessName}:removeBatch']" >删除 @@ -373,6 +373,7 @@ listPage${BusinessName}, get${BusinessName}, del${BusinessName}, + delBatch${BusinessName}, add${BusinessName}, update${BusinessName} } from "@/api/${moduleName}/${businessName}"; @@ -606,15 +607,30 @@ }, /** 删除按钮操作 */ handleDelete(row) { - const ${pkColumn.javaField}s = row.$ + const ${pkColumn.javaField} = row.$ { pkColumn.javaField - } - || - this.ids; + }; + this.#[[$modal]] + #.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField} + '"的数据项?').then(function () { + return del$ + { + BusinessName + } + (${pkColumn.javaField}); + }).then(() => { + this.getList(); + this.#[[$modal]] + #.msgSuccess("删除成功"); + }).catch(() => { + }); + }, + /** 批量删除按钮操作 */ + handleBatchDelete() { + const ${pkColumn.javaField}s = this.ids; this.#[[$modal]] #.confirm('是否确认删除${functionName}编号为"' + ${pkColumn.javaField}s + '"的数据项?').then(function () { - return del$ + return delBatch$ { BusinessName } @@ -703,7 +719,7 @@ /** 导出按钮操作 */ handleExport() { - this.download('${moduleName}/export', { + this.download('${businessName}/export', { ...this.queryParams }, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`) } diff --git a/src/main/resources/vm/vue/v3/index.vue.vm b/src/main/resources/vm/vue/v3/index.vue.vm index 02c02ac..729814c 100644 --- a/src/main/resources/vm/vue/v3/index.vue.vm +++ b/src/main/resources/vm/vue/v3/index.vue.vm @@ -92,8 +92,8 @@ plain icon="Delete" :disabled="multiple" - @click="handleDelete" - v-hasPermi="['${moduleName}:${businessName}:remove']" + @click="handleBatchDelete" + v-hasPermi="['${moduleName}:${businessName}:removeBatch']" >删除 @@ -344,7 +344,7 @@