mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 04:08:43 +08:00 
			
		
		
		
	若依 2.1
This commit is contained in:
		@@ -5,7 +5,7 @@
 | 
			
		||||
 | 
			
		||||
	<groupId>com.ruoyi</groupId>
 | 
			
		||||
	<artifactId>ruoyi</artifactId>
 | 
			
		||||
	<version>2.0.0</version>
 | 
			
		||||
	<version>2.1.0</version>
 | 
			
		||||
	<packaging>jar</packaging>
 | 
			
		||||
 | 
			
		||||
	<name>ruoyi</name>
 | 
			
		||||
@@ -43,14 +43,6 @@
 | 
			
		||||
		<dependency>
 | 
			
		||||
			<groupId>org.springframework.boot</groupId>
 | 
			
		||||
			<artifactId>spring-boot-starter</artifactId>
 | 
			
		||||
			<!--
 | 
			
		||||
			 <exclusions>
 | 
			
		||||
                <exclusion>
 | 
			
		||||
                    <artifactId>spring-boot-starter-tomcat</artifactId>
 | 
			
		||||
                    <groupId>org.springframework.boot</groupId>
 | 
			
		||||
                </exclusion>
 | 
			
		||||
            </exclusions>
 | 
			
		||||
             -->
 | 
			
		||||
		</dependency>
 | 
			
		||||
 | 
			
		||||
		<!-- SpringBoot 测试 -->
 | 
			
		||||
 
 | 
			
		||||
@@ -48,7 +48,7 @@ public class GenConstants
 | 
			
		||||
    public static final String[] BASE_ENTITY = { "createBy", "createTime", "updateBy", "updateTime", "remark" };
 | 
			
		||||
 | 
			
		||||
    /** Tree基类字段 */
 | 
			
		||||
    public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors" };
 | 
			
		||||
    public static final String[] TREE_ENTITY = { "parentName", "parentId", "orderNum", "ancestors", "children" };
 | 
			
		||||
 | 
			
		||||
    /** 文本框 */
 | 
			
		||||
    public static final String HTML_INPUT = "input";
 | 
			
		||||
 
 | 
			
		||||
@@ -144,7 +144,7 @@ public class EscapeUtil
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args)
 | 
			
		||||
    {
 | 
			
		||||
        String html = "<script>alert(1);</script>";
 | 
			
		||||
        String html = "alert('11111');";
 | 
			
		||||
        System.out.println(EscapeUtil.clean(html));
 | 
			
		||||
        System.out.println(EscapeUtil.escape(html));
 | 
			
		||||
        System.out.println(EscapeUtil.unescape(html));
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,79 @@
 | 
			
		||||
package com.ruoyi.framework.web.domain;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tree基类
 | 
			
		||||
 * 
 | 
			
		||||
 * @author ruoyi
 | 
			
		||||
 */
 | 
			
		||||
public class TreeEntity extends BaseEntity
 | 
			
		||||
{
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
 | 
			
		||||
    /** 父菜单名称 */
 | 
			
		||||
    private String parentName;
 | 
			
		||||
 | 
			
		||||
    /** 父菜单ID */
 | 
			
		||||
    private Long parentId;
 | 
			
		||||
 | 
			
		||||
    /** 显示顺序 */
 | 
			
		||||
    private Integer orderNum;
 | 
			
		||||
 | 
			
		||||
    /** 祖级列表 */
 | 
			
		||||
    private String ancestors;
 | 
			
		||||
 | 
			
		||||
    /** 子部门 */
 | 
			
		||||
    private List<?> children = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
    public String getParentName()
 | 
			
		||||
    {
 | 
			
		||||
        return parentName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setParentName(String parentName)
 | 
			
		||||
    {
 | 
			
		||||
        this.parentName = parentName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Long getParentId()
 | 
			
		||||
    {
 | 
			
		||||
        return parentId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setParentId(Long parentId)
 | 
			
		||||
    {
 | 
			
		||||
        this.parentId = parentId;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Integer getOrderNum()
 | 
			
		||||
    {
 | 
			
		||||
        return orderNum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setOrderNum(Integer orderNum)
 | 
			
		||||
    {
 | 
			
		||||
        this.orderNum = orderNum;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getAncestors()
 | 
			
		||||
    {
 | 
			
		||||
        return ancestors;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setAncestors(String ancestors)
 | 
			
		||||
    {
 | 
			
		||||
        this.ancestors = ancestors;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<?> getChildren()
 | 
			
		||||
    {
 | 
			
		||||
        return children;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setChildren(List<?> children)
 | 
			
		||||
    {
 | 
			
		||||
        this.children = children;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -41,7 +41,7 @@ public class SysDeptController extends BaseController
 | 
			
		||||
    public AjaxResult list(SysDept dept)
 | 
			
		||||
    {
 | 
			
		||||
        List<SysDept> depts = deptService.selectDeptList(dept);
 | 
			
		||||
        return AjaxResult.success(deptService.buildDeptTree(depts));
 | 
			
		||||
        return AjaxResult.success(depts);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -49,7 +49,7 @@ public class SysMenuController extends BaseController
 | 
			
		||||
        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
 | 
			
		||||
        Long userId = loginUser.getUser().getUserId();
 | 
			
		||||
        List<SysMenu> menus = menuService.selectMenuList(menu, userId);
 | 
			
		||||
        return AjaxResult.success(menuService.buildMenuTree(menus));
 | 
			
		||||
        return AjaxResult.success(menus);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,6 @@ import com.ruoyi.project.tool.gen.service.IGenTableService;
 | 
			
		||||
@RequestMapping("/tool/gen")
 | 
			
		||||
public class GenController extends BaseController
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private IGenTableService genTableService;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ package com.ruoyi.project.tool.gen.domain;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import javax.validation.Valid;
 | 
			
		||||
import javax.validation.constraints.NotBlank;
 | 
			
		||||
import org.apache.commons.lang3.ArrayUtils;
 | 
			
		||||
import com.ruoyi.common.constant.GenConstants;
 | 
			
		||||
import com.ruoyi.common.utils.StringUtils;
 | 
			
		||||
import com.ruoyi.framework.web.domain.BaseEntity;
 | 
			
		||||
@@ -262,7 +263,8 @@ public class GenTable extends BaseEntity
 | 
			
		||||
    {
 | 
			
		||||
        if (isTree(tplCategory))
 | 
			
		||||
        {
 | 
			
		||||
            StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.TREE_ENTITY);
 | 
			
		||||
            return StringUtils.equalsAnyIgnoreCase(javaField,
 | 
			
		||||
                    ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY));
 | 
			
		||||
        }
 | 
			
		||||
        return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -95,7 +95,14 @@ public class VelocityUtils
 | 
			
		||||
        templates.add("vm/xml/mapper.xml.vm");
 | 
			
		||||
        templates.add("vm/sql/sql.vm");
 | 
			
		||||
        templates.add("vm/js/api.js.vm");
 | 
			
		||||
        templates.add("vm/vue/index.vue.vm");
 | 
			
		||||
        if (GenConstants.TPL_CRUD.equals(tplCategory))
 | 
			
		||||
        {
 | 
			
		||||
            templates.add("vm/vue/index.vue.vm");
 | 
			
		||||
        }
 | 
			
		||||
        else if (GenConstants.TPL_TREE.equals(tplCategory))
 | 
			
		||||
        {
 | 
			
		||||
            templates.add("vm/vue/index-tree.vue.vm");
 | 
			
		||||
        }
 | 
			
		||||
        return templates;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -147,11 +154,15 @@ public class VelocityUtils
 | 
			
		||||
        {
 | 
			
		||||
            fileName = businessName + "Menu.sql";
 | 
			
		||||
        }
 | 
			
		||||
        else if (template.contains("js.vm"))
 | 
			
		||||
        else if (template.contains("api.js.vm"))
 | 
			
		||||
        {
 | 
			
		||||
            fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName);
 | 
			
		||||
        }
 | 
			
		||||
        else if (template.contains("vue.vm"))
 | 
			
		||||
        else if (template.contains("index.vue.vm"))
 | 
			
		||||
        {
 | 
			
		||||
            fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
 | 
			
		||||
        }
 | 
			
		||||
        else if (template.contains("index-tree.vue.vm"))
 | 
			
		||||
        {
 | 
			
		||||
            fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ ruoyi:
 | 
			
		||||
  # 名称
 | 
			
		||||
  name: RuoYi
 | 
			
		||||
  # 版本
 | 
			
		||||
  version: 2.0.0
 | 
			
		||||
  version: 2.1.0
 | 
			
		||||
  # 版权年份
 | 
			
		||||
  copyrightYear: 2019
 | 
			
		||||
  # 实例演示开关
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
			
		||||
				and date_format(login_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d')
 | 
			
		||||
			</if>
 | 
			
		||||
		</where>
 | 
			
		||||
		order by info_id desc
 | 
			
		||||
	</select>
 | 
			
		||||
	
 | 
			
		||||
	<delete id="deleteLogininforByIds" parameterType="Long">
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 | 
			
		||||
 | 
			
		||||
	<sql id="selectOperLogVo">
 | 
			
		||||
        select oper_id, title, business_type, method, request_method, operator_type, oper_name, dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time
 | 
			
		||||
        from sys_oper_log
 | 
			
		||||
        from sys_oper_log order by oper_id desc
 | 
			
		||||
    </sql>
 | 
			
		||||
    
 | 
			
		||||
	<insert id="insertOperlog" parameterType="SysOperLog">
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,10 @@ import ${packageName}.service.I${ClassName}Service;
 | 
			
		||||
import com.ruoyi.framework.web.controller.BaseController;
 | 
			
		||||
import com.ruoyi.framework.web.domain.AjaxResult;
 | 
			
		||||
import com.ruoyi.common.utils.poi.ExcelUtil;
 | 
			
		||||
#if($table.crud)
 | 
			
		||||
import com.ruoyi.framework.web.page.TableDataInfo;
 | 
			
		||||
#elseif($table.tree)
 | 
			
		||||
#end
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ${functionName}Controller
 | 
			
		||||
@@ -38,12 +41,20 @@ public class ${ClassName}Controller extends BaseController
 | 
			
		||||
     */
 | 
			
		||||
    @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
 | 
			
		||||
    @GetMapping("/list")
 | 
			
		||||
#if($table.crud)
 | 
			
		||||
    public TableDataInfo list(${ClassName} ${className})
 | 
			
		||||
    {
 | 
			
		||||
        startPage();
 | 
			
		||||
        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
 | 
			
		||||
        return getDataTable(list);
 | 
			
		||||
    }
 | 
			
		||||
#elseif($table.tree)
 | 
			
		||||
    public AjaxResult list(${ClassName} ${className})
 | 
			
		||||
    {
 | 
			
		||||
        List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
 | 
			
		||||
        return AjaxResult.success(list);
 | 
			
		||||
    }
 | 
			
		||||
#end
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 导出${functionName}列表
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,11 @@ package ${packageName}.domain;
 | 
			
		||||
import org.apache.commons.lang3.builder.ToStringBuilder;
 | 
			
		||||
import org.apache.commons.lang3.builder.ToStringStyle;
 | 
			
		||||
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 | 
			
		||||
#if($table.crud)
 | 
			
		||||
import com.ruoyi.framework.web.domain.BaseEntity;
 | 
			
		||||
#elseif($table.tree)
 | 
			
		||||
import com.ruoyi.framework.web.domain.TreeEntity;
 | 
			
		||||
#end
 | 
			
		||||
#foreach ($import in $importList)
 | 
			
		||||
import ${import};
 | 
			
		||||
#end
 | 
			
		||||
@@ -14,7 +18,11 @@ import ${import};
 | 
			
		||||
 * @author ${author}
 | 
			
		||||
 * @date ${datetime}
 | 
			
		||||
 */
 | 
			
		||||
#if($table.crud)
 | 
			
		||||
#set($Entity="BaseEntity")
 | 
			
		||||
#elseif($table.tree)
 | 
			
		||||
#set($Entity="TreeEntity")
 | 
			
		||||
#end
 | 
			
		||||
public class ${ClassName} extends ${Entity}
 | 
			
		||||
{
 | 
			
		||||
    private static final long serialVersionUID = 1L;
 | 
			
		||||
@@ -43,7 +51,7 @@ public class ${ClassName} extends ${Entity}
 | 
			
		||||
#end
 | 
			
		||||
#foreach ($column in $columns)
 | 
			
		||||
#if(!$table.isSuperColumn($column.javaField))
 | 
			
		||||
#if($column.javaField > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
 | 
			
		||||
#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)})
 | 
			
		||||
@@ -64,7 +72,7 @@ public class ${ClassName} extends ${Entity}
 | 
			
		||||
    public String toString() {
 | 
			
		||||
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
 | 
			
		||||
#foreach ($column in $columns)
 | 
			
		||||
#if($column.javaField > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
 | 
			
		||||
#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)})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										410
									
								
								ruoyi/src/main/resources/vm/vue/index-tree.vue.vm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										410
									
								
								ruoyi/src/main/resources/vm/vue/index-tree.vue.vm
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,410 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
 | 
			
		||||
#foreach($column in $columns)
 | 
			
		||||
#if($column.query)
 | 
			
		||||
#set($dictType=$column.dictType)
 | 
			
		||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
 | 
			
		||||
#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")
 | 
			
		||||
      <el-form-item label="${comment}" prop="${column.javaField}">
 | 
			
		||||
        <el-input
 | 
			
		||||
          v-model="queryParams.${column.javaField}"
 | 
			
		||||
          placeholder="请输入${comment}"
 | 
			
		||||
          clearable
 | 
			
		||||
          size="small"
 | 
			
		||||
          @keyup.enter.native="handleQuery"
 | 
			
		||||
        />
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && "" != $dictType)
 | 
			
		||||
      <el-form-item label="${comment}" prop="${column.javaField}">
 | 
			
		||||
        <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable size="small">
 | 
			
		||||
          <el-option
 | 
			
		||||
            v-for="dict in ${column.javaField}Options"
 | 
			
		||||
            :key="dict.dictValue"
 | 
			
		||||
            :label="dict.dictLabel"
 | 
			
		||||
            :value="dict.dictValue"
 | 
			
		||||
          />
 | 
			
		||||
        </el-select>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
#elseif(($column.htmlType == "select" || $column.htmlType == "radio") && $dictType)
 | 
			
		||||
      <el-form-item label="${comment}" prop="${column.javaField}">
 | 
			
		||||
        <el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable size="small">
 | 
			
		||||
          <el-option label="请选择字典生成" value="" />
 | 
			
		||||
        </el-select>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
#elseif($column.htmlType == "datetime")
 | 
			
		||||
      <el-form-item label="${comment}" prop="${column.javaField}">
 | 
			
		||||
        <el-date-picker clearable size="small" style="width: 200px"
 | 
			
		||||
          v-model="queryParams.${column.javaField}"
 | 
			
		||||
          type="date"
 | 
			
		||||
          value-format="yyyy-MM-dd"
 | 
			
		||||
          placeholder="选择${comment}">
 | 
			
		||||
        </el-date-picker>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
      <el-form-item>
 | 
			
		||||
        <el-button
 | 
			
		||||
          class="filter-item"
 | 
			
		||||
          type="primary"
 | 
			
		||||
          icon="el-icon-search"
 | 
			
		||||
          size="mini"
 | 
			
		||||
          @click="handleQuery"
 | 
			
		||||
        >搜索</el-button>
 | 
			
		||||
        <el-button
 | 
			
		||||
          class="filter-item"
 | 
			
		||||
          type="primary"
 | 
			
		||||
          icon="el-icon-plus"
 | 
			
		||||
          size="mini"
 | 
			
		||||
          @click="handleAdd"
 | 
			
		||||
          v-hasPermi="['${moduleName}:${businessName}:add']"
 | 
			
		||||
        >新增</el-button>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
    </el-form>
 | 
			
		||||
 | 
			
		||||
    <el-table
 | 
			
		||||
      v-loading="loading"
 | 
			
		||||
      :data="${businessName}List"
 | 
			
		||||
      row-key="${treeCode}"
 | 
			
		||||
      default-expand-all
 | 
			
		||||
      :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
 | 
			
		||||
    >
 | 
			
		||||
#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)
 | 
			
		||||
#elseif($column.list && $column.htmlType == "datetime")
 | 
			
		||||
      <el-table-column label="${comment}" align="center" prop="${javaField}" width="180">
 | 
			
		||||
        <template slot-scope="scope">
 | 
			
		||||
          <span>{{ parseTime(scope.row.${javaField}) }}</span>
 | 
			
		||||
        </template>
 | 
			
		||||
      </el-table-column>
 | 
			
		||||
#elseif($column.list && "" != $column.dictType)
 | 
			
		||||
      <el-table-column label="${comment}" align="center" prop="${javaField}" :formatter="${javaField}Format" />
 | 
			
		||||
#elseif($column.list && "" != $javaField)
 | 
			
		||||
      <el-table-column label="${comment}" align="center" prop="${javaField}" />
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
 | 
			
		||||
        <template slot-scope="scope">
 | 
			
		||||
          <el-button
 | 
			
		||||
            size="mini"
 | 
			
		||||
            type="text"
 | 
			
		||||
            icon="el-icon-edit"
 | 
			
		||||
            @click="handleUpdate(scope.row)"
 | 
			
		||||
            v-hasPermi="['${moduleName}:${businessName}:edit']"
 | 
			
		||||
          >修改</el-button>
 | 
			
		||||
          <el-button
 | 
			
		||||
            size="mini"
 | 
			
		||||
            type="text"
 | 
			
		||||
            icon="el-icon-delete"
 | 
			
		||||
            @click="handleDelete(scope.row)"
 | 
			
		||||
            v-hasPermi="['${moduleName}:${businessName}:remove']"
 | 
			
		||||
          >删除</el-button>
 | 
			
		||||
        </template>
 | 
			
		||||
      </el-table-column>
 | 
			
		||||
    </el-table>
 | 
			
		||||
 | 
			
		||||
    <!-- 添加或修改${functionName}对话框 -->
 | 
			
		||||
    <el-dialog :title="title" :visible.sync="open" width="500px">
 | 
			
		||||
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
 | 
			
		||||
#foreach($column in $columns)
 | 
			
		||||
#set($field=$column.javaField)
 | 
			
		||||
#if($column.insert && !$column.pk)
 | 
			
		||||
#if(($column.usableColumn) || (!$column.superColumn))
 | 
			
		||||
#set($parentheseIndex=$column.columnComment.indexOf("("))
 | 
			
		||||
#if($parentheseIndex != -1)
 | 
			
		||||
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
 | 
			
		||||
#else
 | 
			
		||||
#set($comment=$column.columnComment)
 | 
			
		||||
#end
 | 
			
		||||
#set($dictType=$column.dictType)
 | 
			
		||||
#if("" != $treeParentCode && $column.javaField == $treeParentCode)
 | 
			
		||||
        <el-form-item label="${comment}" prop="${treeParentCode}">
 | 
			
		||||
          <treeselect v-model="form.${treeParentCode}" :options="${businessName}Options" :normalizer="normalizer" placeholder="请选择${comment}" />
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
#elseif($column.htmlType == "input")
 | 
			
		||||
        <el-form-item label="${comment}" prop="${field}">
 | 
			
		||||
          <el-input v-model="form.${field}" placeholder="请输入${comment}" />
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
#elseif($column.htmlType == "select" && "" != $dictType)
 | 
			
		||||
        <el-form-item label="${comment}">
 | 
			
		||||
          <el-select v-model="form.${field}" placeholder="请选择${comment}">
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="dict in ${field}Options"
 | 
			
		||||
              :key="dict.dictValue"
 | 
			
		||||
              :label="dict.dictLabel"
 | 
			
		||||
              :value="dict.dictValue"
 | 
			
		||||
            ></el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
#elseif($column.htmlType == "select" && $dictType)
 | 
			
		||||
        <el-form-item label="${comment}">
 | 
			
		||||
          <el-select v-model="form.${field}" placeholder="请选择${comment}">
 | 
			
		||||
            <el-option label="请选择字典生成" value="" />
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
#elseif($column.htmlType == "radio" && "" != $dictType)
 | 
			
		||||
        <el-form-item label="${comment}">
 | 
			
		||||
          <el-radio-group v-model="form.${field}">
 | 
			
		||||
            <el-radio
 | 
			
		||||
              v-for="dict in ${field}Options"
 | 
			
		||||
              :key="dict.dictValue"
 | 
			
		||||
              :label="dict.dictValue"
 | 
			
		||||
            >{{dict.dictLabel}}</el-radio>
 | 
			
		||||
          </el-radio-group>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
#elseif($column.htmlType == "radio" && $dictType)
 | 
			
		||||
        <el-form-item label="${comment}">
 | 
			
		||||
          <el-radio-group v-model="form.${field}">
 | 
			
		||||
            <el-radio label="1">请选择字典生成</el-radio>
 | 
			
		||||
          </el-radio-group>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
#elseif($column.htmlType == "datetime")
 | 
			
		||||
        <el-form-item label="${comment}" prop="${field}">
 | 
			
		||||
          <el-date-picker clearable size="small" style="width: 200px"
 | 
			
		||||
            v-model="form.${field}"
 | 
			
		||||
            type="date"
 | 
			
		||||
            value-format="yyyy-MM-dd"
 | 
			
		||||
            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
 | 
			
		||||
#end
 | 
			
		||||
      </el-form>
 | 
			
		||||
      <div slot="footer" class="dialog-footer">
 | 
			
		||||
        <el-button type="primary" @click="submitForm">确 定</el-button>
 | 
			
		||||
        <el-button @click="cancel">取 消</el-button>
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName}, export${BusinessName} } from "@/api/${moduleName}/${businessName}";
 | 
			
		||||
import Treeselect from "@riophae/vue-treeselect";
 | 
			
		||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "${BusinessName}",
 | 
			
		||||
  components: { Treeselect },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      // 遮罩层
 | 
			
		||||
      loading: true,
 | 
			
		||||
      // ${functionName}表格数据
 | 
			
		||||
      ${businessName}List: [],
 | 
			
		||||
      // ${functionName}树选项
 | 
			
		||||
      ${businessName}Options: [],
 | 
			
		||||
      // 弹出层标题
 | 
			
		||||
      title: "",
 | 
			
		||||
      // 是否显示弹出层
 | 
			
		||||
      open: false,
 | 
			
		||||
#foreach ($column in $columns)
 | 
			
		||||
#set($parentheseIndex=$column.columnComment.indexOf("("))
 | 
			
		||||
#if($parentheseIndex != -1)
 | 
			
		||||
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
 | 
			
		||||
#else
 | 
			
		||||
#set($comment=$column.columnComment)
 | 
			
		||||
#end
 | 
			
		||||
#if(${column.dictType} != '')
 | 
			
		||||
      // $comment字典
 | 
			
		||||
      ${column.javaField}Options: []#if($velocityCount != $columns.size()),#end
 | 
			
		||||
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
#foreach ($column in $columns)
 | 
			
		||||
#if($column.query)
 | 
			
		||||
        $column.javaField: undefined#if($velocityCount != $columns.size()),#end
 | 
			
		||||
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
      },
 | 
			
		||||
      // 表单参数
 | 
			
		||||
      form: {},
 | 
			
		||||
      // 表单校验
 | 
			
		||||
      rules: {
 | 
			
		||||
#foreach ($column in $columns)
 | 
			
		||||
#if($column.required)
 | 
			
		||||
#set($parentheseIndex=$column.columnComment.indexOf("("))
 | 
			
		||||
#if($parentheseIndex != -1)
 | 
			
		||||
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
 | 
			
		||||
#else
 | 
			
		||||
#set($comment=$column.columnComment)
 | 
			
		||||
#end
 | 
			
		||||
#set($comment=$column.columnComment)
 | 
			
		||||
        $column.javaField: [
 | 
			
		||||
          { required: true, message: "$comment不能为空", trigger: "blur" }
 | 
			
		||||
        ]#if($velocityCount != $columns.size()),#end
 | 
			
		||||
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
      }
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    this.getList();
 | 
			
		||||
#foreach ($column in $columns)
 | 
			
		||||
#if(${column.dictType} != '')
 | 
			
		||||
    this.getDicts("${column.dictType}").then(response => {
 | 
			
		||||
      this.${column.javaField}Options = response.data;
 | 
			
		||||
    });
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    /** 查询${functionName}列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      this.loading = true;
 | 
			
		||||
      list${BusinessName}(this.queryParams).then(response => {
 | 
			
		||||
        this.${businessName}List = this.handleTree(response.data, "${treeCode}", "${treeParentCode}");
 | 
			
		||||
        this.loading = false;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 转换${functionName}数据结构 */
 | 
			
		||||
    normalizer(node) {
 | 
			
		||||
      if (node.children && !node.children.length) {
 | 
			
		||||
        delete node.children;
 | 
			
		||||
      }
 | 
			
		||||
      return {
 | 
			
		||||
        id: node.${treeCode},
 | 
			
		||||
        label: node.${treeName},
 | 
			
		||||
        children: node.children
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
	/** 查询部门下拉树结构 */
 | 
			
		||||
    getTreeselect() {
 | 
			
		||||
      list${BusinessName}().then(response => {
 | 
			
		||||
        this.${businessName}Options = [];
 | 
			
		||||
        const data = { ${treeCode}: 0, ${treeName}: '顶级节点', children: [] };
 | 
			
		||||
        data.children = this.handleTree(response.data, "${treeCode}", "${treeParentCode}");
 | 
			
		||||
        this.${businessName}Options.push(data);
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
#foreach ($column in $columns)
 | 
			
		||||
#if(${column.dictType} != '')
 | 
			
		||||
#set($parentheseIndex=$column.columnComment.indexOf("("))
 | 
			
		||||
#if($parentheseIndex != -1)
 | 
			
		||||
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
 | 
			
		||||
#else
 | 
			
		||||
#set($comment=$column.columnComment)
 | 
			
		||||
#end
 | 
			
		||||
    // $comment字典翻译
 | 
			
		||||
    ${column.javaField}Format(row, column) {
 | 
			
		||||
      return this.selectDictLabel(this.${column.javaField}Options, row.${column.javaField});
 | 
			
		||||
    },
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
    // 取消按钮
 | 
			
		||||
    cancel() {
 | 
			
		||||
      this.open = false;
 | 
			
		||||
      this.reset();
 | 
			
		||||
    },
 | 
			
		||||
    // 表单重置
 | 
			
		||||
    reset() {
 | 
			
		||||
      this.form = {
 | 
			
		||||
#foreach ($column in $columns)
 | 
			
		||||
#if($column.htmlType == "radio")
 | 
			
		||||
        $column.javaField: "0"#if($velocityCount != $columns.size()),#end
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
        $column.javaField: undefined#if($velocityCount != $columns.size()),#end
 | 
			
		||||
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
      };
 | 
			
		||||
      this.resetForm("form");
 | 
			
		||||
    },
 | 
			
		||||
    /** 搜索按钮操作 */
 | 
			
		||||
    handleQuery() {
 | 
			
		||||
      this.getList();
 | 
			
		||||
    },
 | 
			
		||||
    /** 重置按钮操作 */
 | 
			
		||||
    resetQuery() {
 | 
			
		||||
      this.resetForm("queryForm");
 | 
			
		||||
      this.handleQuery();
 | 
			
		||||
    },
 | 
			
		||||
    /** 新增按钮操作 */
 | 
			
		||||
    handleAdd() {
 | 
			
		||||
      this.reset();
 | 
			
		||||
	  this.getTreeselect();
 | 
			
		||||
      this.open = true;
 | 
			
		||||
      this.title = "添加${functionName}";
 | 
			
		||||
    },
 | 
			
		||||
    /** 修改按钮操作 */
 | 
			
		||||
    handleUpdate(row) {
 | 
			
		||||
      this.reset();
 | 
			
		||||
	  this.getTreeselect();
 | 
			
		||||
      if (row != undefined) {
 | 
			
		||||
        this.form.${treeParentCode} = row.${treeCode};
 | 
			
		||||
      }
 | 
			
		||||
      get${BusinessName}(row.${pkColumn.javaField}).then(response => {
 | 
			
		||||
        this.form = response.data;
 | 
			
		||||
        this.open = true;
 | 
			
		||||
        this.title = "修改${functionName}";
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 提交按钮 */
 | 
			
		||||
    submitForm: function() {
 | 
			
		||||
      this.#[[$]]#refs["form"].validate(valid => {
 | 
			
		||||
        if (valid) {
 | 
			
		||||
          if (this.form.${pkColumn.javaField} != undefined) {
 | 
			
		||||
            update${BusinessName}(this.form).then(response => {
 | 
			
		||||
              if (response.code === 200) {
 | 
			
		||||
                this.msgSuccess("修改成功");
 | 
			
		||||
                this.open = false;
 | 
			
		||||
                this.getList();
 | 
			
		||||
              } else {
 | 
			
		||||
                this.msgError(response.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          } else {
 | 
			
		||||
            add${BusinessName}(this.form).then(response => {
 | 
			
		||||
              if (response.code === 200) {
 | 
			
		||||
                this.msgSuccess("新增成功");
 | 
			
		||||
                this.open = false;
 | 
			
		||||
                this.getList();
 | 
			
		||||
              } else {
 | 
			
		||||
                this.msgError(response.msg);
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    /** 删除按钮操作 */
 | 
			
		||||
    handleDelete(row) {
 | 
			
		||||
      this.$confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?', "警告", {
 | 
			
		||||
          confirmButtonText: "确定",
 | 
			
		||||
          cancelButtonText: "取消",
 | 
			
		||||
          type: "warning"
 | 
			
		||||
        }).then(function() {
 | 
			
		||||
          return del${BusinessName}(row.${pkColumn.javaField});
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          this.getList();
 | 
			
		||||
          this.msgSuccess("删除成功");
 | 
			
		||||
        }).catch(function() {});
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
        />
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
#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 size="small">
 | 
			
		||||
          <el-option
 | 
			
		||||
            v-for="dict in ${column.javaField}Options"
 | 
			
		||||
@@ -33,7 +33,7 @@
 | 
			
		||||
        </el-select>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
#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 size="small">
 | 
			
		||||
          <el-option label="请选择字典生成" value="" />
 | 
			
		||||
        </el-select>
 | 
			
		||||
@@ -230,6 +230,7 @@
 | 
			
		||||
import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName}, export${BusinessName} } from "@/api/${moduleName}/${businessName}";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  name: "${BusinessName}",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      // 遮罩层
 | 
			
		||||
@@ -288,6 +289,7 @@ export default {
 | 
			
		||||
        $column.javaField: [
 | 
			
		||||
          { required: true, message: "$comment不能为空", trigger: "blur" }
 | 
			
		||||
        ]#if($velocityCount != $columns.size()),#end
 | 
			
		||||
 | 
			
		||||
#end
 | 
			
		||||
#end
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user