1.0.0 初始化项目

dev
yinq 3 months ago
parent 49b1d65af7
commit a50cdefaf1

@ -5,12 +5,12 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId> <artifactId>hwbm-cloud</artifactId>
<version>${revision}</version> <version>${revision}</version>
<name>RuoYi-Cloud-Plus</name> <name>hwbm-cloud</name>
<url>https://gitee.com/dromara/RuoYi-Cloud-Plus</url> <url>https://gitee.com/dromara/RuoYi-Cloud-Plus</url>
<description>Dromara RuoYi-Cloud-Plus微服务系统</description> <description>海威经营管理系统</description>
<properties> <properties>
<revision>2.5.0</revision> <revision>2.5.0</revision>
@ -56,6 +56,8 @@
<warm-flow.version>1.8.1</warm-flow.version> <warm-flow.version>1.8.1</warm-flow.version>
<!-- mq配置 --> <!-- mq配置 -->
<rocketmq.version>2.3.4</rocketmq.version> <rocketmq.version>2.3.4</rocketmq.version>
<!-- MyBatis-Plus-Join -->
<mybatis-pj.version>1.5.4</mybatis-pj.version>
<!-- 插件版本 --> <!-- 插件版本 -->
<maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version> <maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId> <artifactId>hwbm-cloud</artifactId>
<version>${revision}</version> <version>${revision}</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId> <artifactId>hwbm-cloud</artifactId>
<version>${revision}</version> <version>${revision}</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId> <artifactId>hwbm-cloud</artifactId>
<version>${revision}</version> <version>${revision}</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

@ -50,6 +50,12 @@
<version>${dynamic-ds.version}</version> <version>${dynamic-ds.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join-boot-starter</artifactId>
<version>${mybatis-pj.version}</version>
</dependency>
<!-- Mysql Connector --> <!-- Mysql Connector -->
<dependency> <dependency>
<groupId>com.mysql</groupId> <groupId>com.mysql</groupId>

@ -4,11 +4,11 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.toolkit.Db; import com.baomidou.mybatisplus.extension.toolkit.Db;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory; import org.apache.ibatis.logging.LogFactory;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
@ -30,7 +30,7 @@ import java.util.stream.Collectors;
* @since 2021-05-13 * @since 2021-05-13
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public interface BaseMapperPlus<T, V> extends BaseMapper<T> { public interface BaseMapperPlus<T, V> extends MPJBaseMapper<T> {
Log log = LogFactory.getLog(BaseMapperPlus.class); Log log = LogFactory.getLog(BaseMapperPlus.class);

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId> <artifactId>hwbm-cloud</artifactId>
<version>${revision}</version> <version>${revision}</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId> <artifactId>hwbm-cloud</artifactId>
<version>${revision}</version> <version>${revision}</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId> <artifactId>hwbm-cloud</artifactId>
<version>${revision}</version> <version>${revision}</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
@ -14,6 +14,7 @@
<module>ruoyi-job</module> <module>ruoyi-job</module>
<module>ruoyi-resource</module> <module>ruoyi-resource</module>
<module>ruoyi-workflow</module> <module>ruoyi-workflow</module>
<module>ruoyi-oa</module>
</modules> </modules>
<artifactId>ruoyi-modules</artifactId> <artifactId>ruoyi-modules</artifactId>

@ -113,4 +113,14 @@ public class ${ClassName}Controller extends BaseController {
@PathVariable("${pkColumn.javaField}s") ${pkColumn.javaType}[] ${pkColumn.javaField}s) { @PathVariable("${pkColumn.javaField}s") ${pkColumn.javaType}[] ${pkColumn.javaField}s) {
return toAjax(${className}Service.deleteWithValidByIds(List.of(${pkColumn.javaField}s), true)); return toAjax(${className}Service.deleteWithValidByIds(List.of(${pkColumn.javaField}s), true));
} }
/**
* 下拉框查询${functionName}列表
*/
@GetMapping("/get${ClassName}List")
public R<List<${ClassName}Vo>> get${ClassName}List(${ClassName}Bo bo) {
List<${ClassName}Vo> list = ${className}Service.queryList(bo);
return R.ok(list);
}
} }

@ -50,7 +50,7 @@ public class ${ClassName} extends ${Entity} {
@Version @Version
#end #end
#if($column.isPk==1) #if($column.isPk==1)
@TableId(value = "$column.columnName") @TableId(value = "$column.columnName", type = IdType.AUTO)
#end #end
private $column.javaType $column.javaField; private $column.javaType $column.javaField;

@ -1,5 +1,10 @@
package ${packageName}.mapper; package ${packageName}.mapper;
import java.util.List;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
import ${packageName}.domain.vo.${ClassName}Vo; import ${packageName}.domain.vo.${ClassName}Vo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -12,4 +17,21 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/ */
public interface ${ClassName}Mapper extends BaseMapperPlus<${ClassName}, ${ClassName}Vo> { public interface ${ClassName}Mapper extends BaseMapperPlus<${ClassName}, ${ClassName}Vo> {
/**
* 查询${functionName}列表
*
* @param page 分页
* @param queryWrapper 条件
* @return ${functionName}集合
*/
public Page<${ClassName}Vo> selectCustom${ClassName}VoList(@Param("page") Page<${ClassName}Vo> page, @Param(Constants.WRAPPER) MPJLambdaWrapper<${ClassName}> queryWrapper);
/**
* 查询${functionName}列表
*
* @param queryWrapper 条件
* @return ${functionName}集合
*/
public List<${ClassName}Vo> selectCustom${ClassName}VoList(@Param(Constants.WRAPPER) MPJLambdaWrapper<${ClassName}> queryWrapper);
} }

@ -2,15 +2,15 @@ package ${packageName}.service.impl;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
#if($table.crud) #if($table.crud)
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
#end #end
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ${packageName}.domain.bo.${ClassName}Bo; import ${packageName}.domain.bo.${ClassName}Bo;
import ${packageName}.domain.vo.${ClassName}Vo; import ${packageName}.domain.vo.${ClassName}Vo;
@ -28,7 +28,6 @@ import java.util.Collection;
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
@Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class ${ClassName}ServiceImpl implements I${ClassName}Service { public class ${ClassName}ServiceImpl implements I${ClassName}Service {
@ -46,21 +45,21 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
return baseMapper.selectVoById(${pkColumn.javaField}); return baseMapper.selectVoById(${pkColumn.javaField});
} }
#if($table.crud) #if($table.crud)
/** /**
* 分页查询${functionName}列表 * 分页查询${functionName}列表
* *
* @param bo 查询条件 * @param bo 查询条件
* @param pageQuery 分页参数 * @param pageQuery 分页参数
* @return ${functionName}分页列表 * @return ${functionName}分页列表
*/ */
@Override @Override
public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) { public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) {
LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); MPJLambdaWrapper<${ClassName}> lqw = buildQueryWrapper(bo);
Page<${ClassName}Vo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<${ClassName}Vo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
#end #end
/** /**
* 查询符合条件的${functionName}列表 * 查询符合条件的${functionName}列表
@ -70,38 +69,39 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
*/ */
@Override @Override
public List<${ClassName}Vo> queryList(${ClassName}Bo bo) { public List<${ClassName}Vo> queryList(${ClassName}Bo bo) {
LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); MPJLambdaWrapper<${ClassName}> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); return baseMapper.selectVoList(lqw);
} }
private LambdaQueryWrapper<${ClassName}> buildQueryWrapper(${ClassName}Bo bo) { private MPJLambdaWrapper<${ClassName}> buildQueryWrapper(${ClassName}Bo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<${ClassName}> lqw = Wrappers.lambdaQuery(); MPJLambdaWrapper<${ClassName}> lqw = JoinWrappers.lambda(${ClassName}.class)
#foreach($column in $columns) .selectAll(${ClassName}.class)
#if($column.query) #foreach($column in $columns)
#set($queryType=$column.queryType) #if($column.query)
#set($javaField=$column.javaField) #set($queryType=$column.queryType)
#set($javaType=$column.javaType) #set($javaField=$column.javaField)
#set($columnName=$column.columnName) #set($javaType=$column.javaType)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($columnName=$column.columnName)
#set($mpMethod=$column.queryType.toLowerCase()) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($queryType != 'BETWEEN') #set($mpMethod=$column.queryType.toLowerCase())
#if($javaType == 'String') #if($queryType != 'BETWEEN')
#set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())') #if($javaType == 'String')
#else #set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())')
#set($condition='bo.get'+$AttrName+'() != null') #else
#end #set($condition='bo.get'+$AttrName+'() != null')
lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName()); #end
#else .$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName())
lqw.between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null, #else
${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName")); .between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null,
#end ${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName"))
#end #end
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #end
#if($column.isPk==1) #end
lqw.orderByAsc(${ClassName}::get$AttrName); #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end #if($column.isPk==1)
#end .orderByAsc(${ClassName}::get$AttrName);
#end
return lqw; return lqw;
} }
@ -116,7 +116,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
${ClassName} add = MapstructUtils.convert(bo, ${ClassName}.class); ${ClassName} add = MapstructUtils.convert(bo, ${ClassName}.class);
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
#set($pk=$pkColumn.javaField.substring(0,1).toUpperCase() + ${pkColumn.javaField.substring(1)}) #set($pk=$pkColumn.javaField.substring(0,1).toUpperCase() + ${pkColumn.javaField.substring(1)})
if (flag) { if (flag) {
bo.set$pk(add.get$pk()); bo.set$pk(add.get$pk());
} }

@ -61,3 +61,16 @@ export const del${BusinessName} = (${pkColumn.javaField}: string | number | Arra
method: 'delete' method: 'delete'
}); });
}; };
/**
* 下拉框查询${functionName}列表
* @param query
* @returns {*}
*/
export function get${ClassName}List (query) {
return request({
url: '/${moduleName}/${businessName}/get${ClassName}List',
method: 'get',
params: query
});
};

@ -1,459 +1,472 @@
<template> <template>
<div class="p-2"> <div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]"> <div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover"> <el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true"> <el-form ref="queryFormRef" :model="queryParams" :inline="true">
#foreach($column in $columns) #foreach($column in $columns)
#if($column.query) #if($column.query)
#set($dictType=$column.dictType) #set($dictType=$column.dictType)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else #else
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
#if($column.htmlType == "input" || $column.htmlType == "textarea") #if($column.htmlType == "input" || $column.htmlType == "textarea")
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-input v-model="queryParams.${column.javaField}" placeholder="请输入${comment}" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.${column.javaField}" placeholder="请输入${comment}" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType) #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable > <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable >
<el-option v-for="dict in ${dictType}" :key="dict.value" :label="dict.label" :value="dict.value"/> <el-option v-for="dict in ${dictType}" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType) #elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType)
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable > <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable >
<el-option label="请选择字典生成" value="" /> <el-option label="请选择字典生成" value="" />
</el-select> </el-select>
</el-form-item> </el-form-item>
#elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN") #elseif($column.htmlType == "datetime" && $column.queryType != "BETWEEN")
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-date-picker clearable <el-date-picker clearable
v-model="queryParams.${column.javaField}" v-model="queryParams.${column.javaField}"
type="date" type="date"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
placeholder="请选择${comment}" placeholder="请选择${comment}"
/> />
</el-form-item> </el-form-item>
#elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
<el-form-item label="${comment}" style="width: 308px"> <el-form-item label="${comment}" style="width: 308px">
<el-date-picker <el-date-picker
v-model="dateRange${AttrName}" v-model="dateRange${AttrName}"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
type="daterange" type="daterange"
range-separator="-" range-separator="-"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]" :default-time="[new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 1, 1, 23, 59, 59)]"
/> />
</el-form-item> </el-form-item>
#end #end
#end #end
#end #end
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card>
</div>
</transition>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['${moduleName}:${businessName}:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['${moduleName}:${businessName}:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['${moduleName}:${businessName}:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['${moduleName}:${businessName}:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
#foreach($column in $columns)
#set($javaField=$column.javaField)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($column.pk)
<el-table-column label="${comment}" align="center" prop="${javaField}" v-if="${column.list}" v-if="columns[${foreach.index}].visible"/>
#elseif($column.list && $column.htmlType == "datetime")
<el-table-column label="${comment}" align="center" prop="${javaField}" width="180" v-if="columns[${foreach.index}].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
#elseif($column.list && $column.htmlType == "imageUpload")
<el-table-column label="${comment}" align="center" prop="${javaField}Url" width="100" v-if="columns[${foreach.index}].visible">
<template #default="scope">
<image-preview :src="scope.row.${javaField}Url" :width="50" :height="50"/>
</template>
</el-table-column>
#elseif($column.list && $column.dictType && "" != $column.dictType)
<el-table-column label="${comment}" align="center" prop="${javaField}" v-if="columns[${foreach.index}].visible">
<template #default="scope">
#if($column.htmlType == "checkbox")
<dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/>
#else
<dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/>
#end
</template>
</el-table-column>
#elseif($column.list && "" != $javaField)
<el-table-column label="${comment}" align="center" prop="${javaField}" v-if="columns[${foreach.index}].visible"/>
#end
#end
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['${moduleName}:${businessName}:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['${moduleName}:${businessName}:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card> </el-card>
</div> <!-- 添加或修改${functionName}对话框 -->
</transition> <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="${businessName}FormRef" :model="form" :rules="rules" label-width="120px">
<el-card shadow="never"> #foreach($column in $columns)
<template #header> #set($field=$column.javaField)
<el-row :gutter="10" class="mb8"> #if(($column.insert || $column.edit) && !$column.pk)
<el-col :span="1.5"> #set($parentheseIndex=$column.columnComment.indexOf(""))
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['${moduleName}:${businessName}:add']">新增</el-button> #if($parentheseIndex != -1)
</el-col> #set($comment=$column.columnComment.substring(0, $parentheseIndex))
<el-col :span="1.5"> #else
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['${moduleName}:${businessName}:edit']">修改</el-button> #set($comment=$column.columnComment)
</el-col> #end
<el-col :span="1.5"> #set($dictType=$column.dictType)
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['${moduleName}:${businessName}:remove']">删除</el-button> #if($column.htmlType == "input")
</el-col> <el-form-item label="${comment}" prop="${field}">
<el-col :span="1.5"> <el-input v-model="form.${field}" placeholder="请输入${comment}" />
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['${moduleName}:${businessName}:export']">导出</el-button> </el-form-item>
</el-col> #elseif($column.htmlType == "imageUpload")
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> <el-form-item label="${comment}" prop="${field}">
</el-row> <image-upload v-model="form.${field}"/>
</template> </el-form-item>
#elseif($column.htmlType == "fileUpload")
<el-table v-loading="loading" border :data="${businessName}List" @selection-change="handleSelectionChange"> <el-form-item label="${comment}" prop="${field}">
<el-table-column type="selection" width="55" align="center" /> <file-upload v-model="form.${field}"/>
#foreach($column in $columns) </el-form-item>
#set($javaField=$column.javaField) #elseif($column.htmlType == "editor")
#set($parentheseIndex=$column.columnComment.indexOf("")) <el-form-item label="${comment}">
#if($parentheseIndex != -1) <editor v-model="form.${field}" :min-height="192"/>
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) </el-form-item>
#else #elseif($column.htmlType == "select" && "" != $dictType)
#set($comment=$column.columnComment) <el-form-item label="${comment}" prop="${field}">
#end <el-select v-model="form.${field}" placeholder="请选择${comment}">
#if($column.pk) <el-option
<el-table-column label="${comment}" align="center" prop="${javaField}" v-if="${column.list}" /> v-for="dict in ${dictType}"
#elseif($column.list && $column.htmlType == "datetime") :key="dict.value"
<el-table-column label="${comment}" align="center" prop="${javaField}" width="180"> :label="dict.label"
<template #default="scope"> #if($column.javaType == "Integer" || $column.javaType == "Long")
<span>{{ parseTime(scope.row.${javaField}, '{y}-{m}-{d}') }}</span> :value="parseInt(dict.value)"
</template> #else
</el-table-column> :value="dict.value"
#elseif($column.list && $column.htmlType == "imageUpload") #end
<el-table-column label="${comment}" align="center" prop="${javaField}Url" width="100"> ></el-option>
<template #default="scope"> </el-select>
<image-preview :src="scope.row.${javaField}Url" :width="50" :height="50"/> </el-form-item>
</template> #elseif($column.htmlType == "select" && $dictType)
</el-table-column> <el-form-item label="${comment}" prop="${field}">
#elseif($column.list && $column.dictType && "" != $column.dictType) <el-select v-model="form.${field}" placeholder="请选择${comment}">
<el-table-column label="${comment}" align="center" prop="${javaField}"> <el-option label="请选择字典生成" value="" />
<template #default="scope"> </el-select>
#if($column.htmlType == "checkbox") </el-form-item>
<dict-tag :options="${column.dictType}" :value="scope.row.${javaField} ? scope.row.${javaField}.split(',') : []"/> #elseif($column.htmlType == "checkbox" && "" != $dictType)
#else <el-form-item label="${comment}" prop="${field}">
<dict-tag :options="${column.dictType}" :value="scope.row.${javaField}"/> <el-checkbox-group v-model="form.${field}">
#end <el-checkbox
</template> v-for="dict in ${dictType}"
</el-table-column> :key="dict.value"
#elseif($column.list && "" != $javaField) :label="dict.value">
<el-table-column label="${comment}" align="center" prop="${javaField}" /> {{dict.label}}
#end </el-checkbox>
#end </el-checkbox-group>
<el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width"> </el-form-item>
<template #default="scope"> #elseif($column.htmlType == "checkbox" && $dictType)
<el-tooltip content="修改" placement="top"> <el-form-item label="${comment}" prop="${field}">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['${moduleName}:${businessName}:edit']"></el-button> <el-checkbox-group v-model="form.${field}">
</el-tooltip> <el-checkbox>请选择字典生成</el-checkbox>
<el-tooltip content="删除" placement="top"> </el-checkbox-group>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['${moduleName}:${businessName}:remove']"></el-button> </el-form-item>
</el-tooltip> #elseif($column.htmlType == "radio" && "" != $dictType)
</template> <el-form-item label="${comment}" prop="${field}">
</el-table-column> <el-radio-group v-model="form.${field}">
</el-table> <el-radio
v-for="dict in ${dictType}"
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> :key="dict.value"
</el-card> #if($column.javaType == "Integer" || $column.javaType == "Long")
<!-- 添加或修改${functionName}对话框 --> :value="parseInt(dict.value)"
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> #else
<el-form ref="${businessName}FormRef" :model="form" :rules="rules" label-width="80px"> :value="dict.value"
#foreach($column in $columns) #end
#set($field=$column.javaField) >{{dict.label}}</el-radio>
#if(($column.insert || $column.edit) && !$column.pk) </el-radio-group>
#set($parentheseIndex=$column.columnComment.indexOf("")) </el-form-item>
#if($parentheseIndex != -1) #elseif($column.htmlType == "radio" && $dictType)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) <el-form-item label="${comment}" prop="${field}">
#else <el-radio-group v-model="form.${field}">
#set($comment=$column.columnComment) <el-radio value="1">请选择字典生成</el-radio>
#end </el-radio-group>
#set($dictType=$column.dictType) </el-form-item>
#if($column.htmlType == "input") #elseif($column.htmlType == "datetime")
<el-form-item label="${comment}" prop="${field}"> <el-form-item label="${comment}" prop="${field}">
<el-input v-model="form.${field}" placeholder="请输入${comment}" /> <el-date-picker clearable
</el-form-item> v-model="form.${field}"
#elseif($column.htmlType == "imageUpload") type="datetime"
<el-form-item label="${comment}" prop="${field}"> value-format="YYYY-MM-DD HH:mm:ss"
<image-upload v-model="form.${field}"/> placeholder="请选择${comment}">
</el-form-item> </el-date-picker>
#elseif($column.htmlType == "fileUpload") </el-form-item>
<el-form-item label="${comment}" prop="${field}"> #elseif($column.htmlType == "textarea")
<file-upload v-model="form.${field}"/> <el-form-item label="${comment}" prop="${field}">
</el-form-item> <el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" />
#elseif($column.htmlType == "editor") </el-form-item>
<el-form-item label="${comment}"> #end
<editor v-model="form.${field}" :min-height="192"/> #end
</el-form-item> #end
#elseif($column.htmlType == "select" && "" != $dictType) </el-form>
<el-form-item label="${comment}" prop="${field}"> <template #footer>
<el-select v-model="form.${field}" placeholder="请选择${comment}"> <div class="dialog-footer">
<el-option <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
v-for="dict in ${dictType}" <el-button @click="cancel">取 消</el-button>
:key="dict.value" </div>
:label="dict.label" </template>
#if($column.javaType == "Integer" || $column.javaType == "Long") </el-dialog>
:value="parseInt(dict.value)" </div>
#else
:value="dict.value"
#end
></el-option>
</el-select>
</el-form-item>
#elseif($column.htmlType == "select" && $dictType)
<el-form-item label="${comment}" prop="${field}">
<el-select v-model="form.${field}" placeholder="请选择${comment}">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
#elseif($column.htmlType == "checkbox" && "" != $dictType)
<el-form-item label="${comment}" prop="${field}">
<el-checkbox-group v-model="form.${field}">
<el-checkbox
v-for="dict in ${dictType}"
:key="dict.value"
:label="dict.value">
{{dict.label}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
#elseif($column.htmlType == "checkbox" && $dictType)
<el-form-item label="${comment}" prop="${field}">
<el-checkbox-group v-model="form.${field}">
<el-checkbox>请选择字典生成</el-checkbox>
</el-checkbox-group>
</el-form-item>
#elseif($column.htmlType == "radio" && "" != $dictType)
<el-form-item label="${comment}" prop="${field}">
<el-radio-group v-model="form.${field}">
<el-radio
v-for="dict in ${dictType}"
:key="dict.value"
#if($column.javaType == "Integer" || $column.javaType == "Long")
:value="parseInt(dict.value)"
#else
:value="dict.value"
#end
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
#elseif($column.htmlType == "radio" && $dictType)
<el-form-item label="${comment}" prop="${field}">
<el-radio-group v-model="form.${field}">
<el-radio value="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
#elseif($column.htmlType == "datetime")
<el-form-item label="${comment}" prop="${field}">
<el-date-picker clearable
v-model="form.${field}"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择${comment}">
</el-date-picker>
</el-form-item>
#elseif($column.htmlType == "textarea")
<el-form-item label="${comment}" prop="${field}">
<el-input v-model="form.${field}" type="textarea" placeholder="请输入内容" />
</el-form-item>
#end
#end
#end
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</template>
</el-dialog>
</div>
</template> </template>
<script setup name="${BusinessName}" lang="ts"> <script setup name="${BusinessName}" lang="ts">
import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from '@/api/${moduleName}/${businessName}'; import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName} } from '@/api/${moduleName}/${businessName}';
import { ${BusinessName}VO, ${BusinessName}Query, ${BusinessName}Form } from '@/api/${moduleName}/${businessName}/types'; import { ${BusinessName}VO, ${BusinessName}Query, ${BusinessName}Form } from '@/api/${moduleName}/${businessName}/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
#if(${dicts} != '') #if(${dicts} != '')
#set($dictsNoSymbol=$dicts.replace("'", "")) #set($dictsNoSymbol=$dicts.replace("'", ""))
const { ${dictsNoSymbol} } = toRefs<any>(proxy?.useDict(${dicts})); const { ${dictsNoSymbol} } = toRefs<any>(proxy?.useDict(${dicts}));
#end #end
const ${businessName}List = ref<${BusinessName}VO[]>([]); const ${businessName}List = ref<${BusinessName}VO[]>([]);
const buttonLoading = ref(false); const buttonLoading = ref(false);
const loading = ref(true); const loading = ref(true);
const showSearch = ref(true); const showSearch = ref(true);
const ids = ref<Array<string | number>>([]); const ids = ref<Array<string | number>>([]);
const single = ref(true); const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const total = ref(0); const total = ref(0);
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN") #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
const dateRange${AttrName} = ref<[DateModelType, DateModelType]>(['', '']); const dateRange${AttrName} = ref<[DateModelType, DateModelType]>(['', '']);
#end #end
#end #end
const queryFormRef = ref<ElFormInstance>(); const queryFormRef = ref<ElFormInstance>();
const ${businessName}FormRef = ref<ElFormInstance>(); const ${businessName}FormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({ const dialog = reactive<DialogOption>({
visible: false, visible: false,
title: '' title: ''
}); });
const initFormData: ${BusinessName}Form = { // 列显隐信息
#foreach ($column in $columns) const columns = ref<FieldOption[]>([
#if($column.insert || $column.edit) #foreach ($column in $columns)
#if($column.htmlType == "checkbox") #set($parentheseIndex=$column.columnComment.indexOf(""))
$column.javaField: []#if($foreach.count != $columns.size()),#end #if($parentheseIndex != -1)
#else #set($comment=$column.columnComment.substring(0, $parentheseIndex))
$column.javaField: undefined#if($foreach.count != $columns.size()),#end #else
#end #set($comment=$column.columnComment)
#end #end
#end { key: ${foreach.index}, label: `${comment}`, visible: true },
} #end
const data = reactive<PageData<${BusinessName}Form, ${BusinessName}Query>>({ ]);
form: {...initFormData},
queryParams: { const initFormData: ${BusinessName}Form = {
pageNum: 1, #foreach ($column in $columns)
pageSize: 10, #if($column.insert || $column.edit)
#foreach ($column in $columns) #if($column.htmlType == "checkbox")
#if($column.query) $column.javaField: []#if($foreach.count != $columns.size()),#end
#if($column.htmlType != "datetime" || $column.queryType != "BETWEEN") #else
$column.javaField: undefined, $column.javaField: undefined#if($foreach.count != $columns.size()),#end
#end #end
#end #end
#end
params: {
#foreach ($column in $columns)
#if($column.query)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
$column.javaField: undefined#if($foreach.count != $columns.size()),#end
#end
#end
#end
}
},
rules: {
#foreach ($column in $columns)
#if($column.insert || $column.edit)
#if($column.required)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
$column.javaField: [
{ required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end }
]#if($foreach.count != $columns.size()),#end
#end
#end
#end
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询${functionName}列表 */
const getList = async () => {
loading.value = true;
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
queryParams.value.params = {};
#break
#end
#end
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
proxy?.addDateRange(queryParams.value, dateRange${AttrName}.value, '${AttrName}');
#end
#end
const res = await list${BusinessName}(queryParams.value);
${businessName}List.value = res.rows;
total.value = res.total;
loading.value = false;
}
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
${businessName}FormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
dateRange${AttrName}.value = ['', ''];
#end
#end
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: ${BusinessName}VO[]) => {
ids.value = selection.map(item => item.${pkColumn.javaField});
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加${functionName}";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: ${BusinessName}VO) => {
reset();
const _${pkColumn.javaField} = row?.${pkColumn.javaField} || ids.value[0]
const res = await get${BusinessName}(_${pkColumn.javaField});
Object.assign(form.value, res.data);
#foreach ($column in $columns)
#if($column.htmlType == "checkbox")
form.value.$column.javaField = form.value.${column.javaField}.split(",");
#end
#end
dialog.visible = true;
dialog.title = "修改${functionName}";
}
/** 提交按钮 */
const submitForm = () => {
${businessName}FormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
#foreach ($column in $columns)
#if($column.htmlType == "checkbox")
form.value.$column.javaField = form.value.${column.javaField}.join(",");
#end #end
#end
if (form.value.${pkColumn.javaField}) {
await update${BusinessName}(form.value).finally(() => buttonLoading.value = false);
} else {
await add${BusinessName}(form.value).finally(() => buttonLoading.value = false);
}
proxy?.#[[$modal]]#.msgSuccess("操作成功");
dialog.visible = false;
await getList();
} }
}); const data = reactive<PageData<${BusinessName}Form, ${BusinessName}Query>>({
} form: {...initFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
#foreach ($column in $columns)
#if($column.query)
#if($column.htmlType != "datetime" || $column.queryType != "BETWEEN")
$column.javaField: undefined,
#end
#end
#end
params: {
#foreach ($column in $columns)
#if($column.query)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
$column.javaField: undefined#if($foreach.count != $columns.size()),#end
#end
#end
#end
}
},
rules: {
#foreach ($column in $columns)
#if($column.insert || $column.edit)
#if($column.required)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
$column.javaField: [
{ required: true, message: "$comment不能为空", trigger: #if($column.htmlType == "select" || $column.htmlType == "radio")"change"#else"blur"#end }
]#if($foreach.count != $columns.size()),#end
#end
#end
#end
}
});
/** 删除按钮操作 */ const { queryParams, form, rules } = toRefs(data);
const handleDelete = async (row?: ${BusinessName}VO) => {
const _${pkColumn.javaField}s = row?.${pkColumn.javaField} || ids.value;
await proxy?.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + _${pkColumn.javaField}s + '"的数据项?').finally(() => loading.value = false);
await del${BusinessName}(_${pkColumn.javaField}s);
proxy?.#[[$modal]]#.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */ /** 查询${functionName}列表 */
const handleExport = () => { const getList = async () => {
proxy?.download('${moduleName}/${businessName}/export', { loading.value = true;
...queryParams.value #foreach ($column in $columns)
}, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`) #if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
} queryParams.value.params = {};
#break
#end
#end
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
proxy?.addDateRange(queryParams.value, dateRange${AttrName}.value, '${AttrName}');
#end
#end
const res = await list${BusinessName}(queryParams.value);
${businessName}List.value = res.rows;
total.value = res.total;
loading.value = false;
}
onMounted(() => { /** 取消按钮 */
getList(); const cancel = () => {
}); reset();
dialog.visible = false;
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
${businessName}FormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
#foreach ($column in $columns)
#if($column.htmlType == "datetime" && $column.queryType == "BETWEEN")
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
dateRange${AttrName}.value = ['', ''];
#end
#end
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: ${BusinessName}VO[]) => {
ids.value = selection.map(item => item.${pkColumn.javaField});
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加${functionName}";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: ${BusinessName}VO) => {
reset();
const _${pkColumn.javaField} = row?.${pkColumn.javaField} || ids.value[0]
const res = await get${BusinessName}(_${pkColumn.javaField});
Object.assign(form.value, res.data);
#foreach ($column in $columns)
#if($column.htmlType == "checkbox")
form.value.$column.javaField = form.value.${column.javaField}.split(",");
#end
#end
dialog.visible = true;
dialog.title = "修改${functionName}";
}
/** 提交按钮 */
const submitForm = () => {
${businessName}FormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
#foreach ($column in $columns)
#if($column.htmlType == "checkbox")
form.value.$column.javaField = form.value.${column.javaField}.join(",");
#end
#end
if (form.value.${pkColumn.javaField}) {
await update${BusinessName}(form.value).finally(() => buttonLoading.value = false);
} else {
await add${BusinessName}(form.value).finally(() => buttonLoading.value = false);
}
proxy?.#[[$modal]]#.msgSuccess("操作成功");
dialog.visible = false;
await getList();
}
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: ${BusinessName}VO) => {
const _${pkColumn.javaField}s = row?.${pkColumn.javaField} || ids.value;
await proxy?.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + _${pkColumn.javaField}s + '"的数据项?').finally(() => loading.value = false);
await del${BusinessName}(_${pkColumn.javaField}s);
proxy?.#[[$modal]]#.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('${moduleName}/${businessName}/export', {
...queryParams.value
}, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`)
}
onMounted(() => {
getList();
});
</script> </script>

@ -3,5 +3,12 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${packageName}.mapper.${ClassName}Mapper"> <mapper namespace="${packageName}.mapper.${ClassName}Mapper">
<resultMap type="${packageName}.domain.vo.${ClassName}Vo" id="${ClassName}Result">
</resultMap>
<select id="selectCustom${ClassName}VoList" resultMap="${ClassName}Result">
select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName} t
${ew.getCustomSqlSegment}
</select>
</mapper> </mapper>

@ -3,7 +3,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent> <parent>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-cloud-plus</artifactId> <artifactId>hwbm-cloud</artifactId>
<version>${revision}</version> <version>${revision}</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>

@ -40,9 +40,9 @@ spring.sql.init.platform=mysql
db.num=1 db.num=1
### Connect URL of DB: ### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true db.url.0=jdbc:mysql://1.13.177.47:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
db.user.0=root db.user.0=root
db.password.0=root db.password.0=Haiwei123456
### the maximum retry times for push ### the maximum retry times for push
nacos.config.push.maxRetryTime=50 nacos.config.push.maxRetryTime=50

Loading…
Cancel
Save