Commit e48aa3da by fengshuonan

新增字典

parent 21b5770f
......@@ -14,8 +14,8 @@
<artifactId>guns-vip</artifactId>
<version>1.0.0</version>
<name>guns-admin</name>
<description>guns 的spring boot版本</description>
<name>guns-vip</name>
<description>guns的vip版本</description>
<packaging>jar</packaging>
......
/**
* Copyright 2018-2020 stylefeng & fengshuonan (https://gitee.com/stylefeng)
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.stylefeng.guns.modular.system.controller;
import cn.stylefeng.guns.core.common.annotion.BussinessLog;
import cn.stylefeng.guns.core.common.annotion.Permission;
import cn.stylefeng.guns.core.common.constant.Const;
import cn.stylefeng.guns.core.common.constant.dictmap.DictMap;
import cn.stylefeng.guns.core.common.constant.factory.ConstantFactory;
import cn.stylefeng.guns.core.common.page.LayuiPageFactory;
import cn.stylefeng.guns.core.log.LogObjectHolder;
import cn.stylefeng.guns.modular.system.model.DictDto;
import cn.stylefeng.guns.core.common.node.ZTreeNode;
import cn.stylefeng.guns.core.common.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.system.entity.Dict;
import cn.stylefeng.guns.modular.system.entity.DictType;
import cn.stylefeng.guns.modular.system.model.params.DictParam;
import cn.stylefeng.guns.modular.system.model.result.DictResult;
import cn.stylefeng.guns.modular.system.service.DictService;
import cn.stylefeng.guns.modular.system.warpper.DictWrapper;
import cn.stylefeng.guns.modular.system.service.DictTypeService;
import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.core.reqres.response.ResponseData;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.stylefeng.roses.kernel.model.exception.RequestEmptyException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
......@@ -35,105 +18,170 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Map;
import java.util.List;
/**
* 字典控制器
* 基础字典控制器
*
* @author fengshuonan
* @Date 2017年4月26日 12:55:31
* @author stylefeng
* @Date 2019-03-13 13:53:53
*/
@Controller
@RequestMapping("/dict")
public class DictController extends BaseController {
private String PREFIX = "/modular/system/dict/";
private String PREFIX = "/modular/system/dict";
@Autowired
private DictService dictService;
@Autowired
private DictTypeService dictTypeService;
/**
* 跳转到字典管理首页
* 跳转到主页面
*
* @author fengshuonan
* @Date 2018/12/23 5:21 PM
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("")
public String index() {
return PREFIX + "dict.html";
public String index(@RequestParam("dictTypeId") Long dictTypeId, Model model) {
model.addAttribute("dictTypeId", dictTypeId);
//获取type的名称
DictType dictType = dictTypeService.getById(dictTypeId);
if (dictType == null) {
throw new RequestEmptyException();
}
model.addAttribute("dictTypeName", dictType.getName());
return PREFIX + "/dict.html";
}
/**
* 跳转到添加字典类型
* 新增页面
*
* @author fengshuonan
* @Date 2018/12/23 5:21 PM
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/dict_add_type")
public String deptAddType() {
return PREFIX + "dict_add_type.html";
@RequestMapping("/add")
public String add(@RequestParam("dictTypeId") Long dictTypeId, Model model) {
model.addAttribute("dictTypeId", dictTypeId);
//获取type的名称
DictType dictType = dictTypeService.getById(dictTypeId);
if (dictType == null) {
throw new RequestEmptyException();
}
model.addAttribute("dictTypeName", dictType.getName());
return PREFIX + "/dict_add.html";
}
/**
* 跳转到添加字典条目
* 编辑页面
*
* @author fengshuonan
* @Date 2018/12/23 5:22 PM
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/dict_add_item")
public String deptAddItem(@RequestParam("dictId") Long dictId, Model model) {
model.addAttribute("dictTypeId", dictId);
model.addAttribute("dictTypeName", ConstantFactory.me().getDictName(dictId));
return PREFIX + "dict_add_item.html";
@RequestMapping("/edit")
public String edit(@RequestParam("dictId") Long dictId, Model model) {
//获取type的id
Dict dict = dictService.getById(dictId);
if (dict == null) {
throw new RequestEmptyException();
}
//获取type的名称
DictType dictType = dictTypeService.getById(dict.getDictTypeId());
if (dictType == null) {
throw new RequestEmptyException();
}
model.addAttribute("dictTypeId", dict.getDictTypeId());
model.addAttribute("dictTypeName", dictType.getName());
return PREFIX + "/dict_edit.html";
}
/**
* 新增字典
* 新增接口
*
* @author fengshuonan
* @Date 2018/12/23 5:22 PM
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping(value = "/add")
@Permission(Const.ADMIN_NAME)
@RequestMapping("/addItem")
@ResponseBody
public ResponseData add(DictDto dictDto) {
this.dictService.addDict(dictDto);
return SUCCESS_TIP;
public ResponseData addItem(DictParam dictParam) {
this.dictService.add(dictParam);
return ResponseData.success();
}
/**
* 获取所有字典列表
* 编辑接口
*
* @author fengshuonan
* @Date 2018/12/23 5:22 PM
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping(value = "/list")
@Permission(Const.ADMIN_NAME)
@RequestMapping("/editItem")
@ResponseBody
public Object list(String condition) {
Page<Map<String, Object>> list = this.dictService.list(condition);
Page<Map<String, Object>> warpper = new DictWrapper(list).wrap();
return LayuiPageFactory.createPageInfo(warpper);
public ResponseData editItem(DictParam dictParam) {
this.dictService.update(dictParam);
return ResponseData.success();
}
/**
* 删除字典记录
* 删除接口
*
* @author fengshuonan
* @Date 2018/12/23 5:22 PM
* @author stylefeng
* @Date 2019-03-13
*/
@BussinessLog(value = "删除字典记录", key = "dictId", dict = DictMap.class)
@RequestMapping(value = "/delete")
@Permission(Const.ADMIN_NAME)
@RequestMapping("/delete")
@ResponseBody
public ResponseData delete(@RequestParam Long dictId) {
public ResponseData delete(DictParam dictParam) {
this.dictService.delete(dictParam);
return ResponseData.success();
}
//缓存被删除的名称
LogObjectHolder.me().set(ConstantFactory.me().getDictName(dictId));
/**
* 查看详情接口
*
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/detail")
@ResponseBody
public ResponseData detail(DictParam dictParam) {
DictResult dictResult = this.dictService.dictDetail(dictParam.getDictId());
return ResponseData.success(dictResult);
}
this.dictService.delteDict(dictId);
/**
* 查询列表
*
* @author stylefeng
* @Date 2019-03-13
*/
@ResponseBody
@RequestMapping("/list")
public LayuiPageInfo list(DictParam dictParam) {
return this.dictService.findPageBySpec(dictParam);
}
return SUCCESS_TIP;
/**
* 获取某个类型下字典树的列表,ztree格式
*
* @author fengshuonan
* @Date 2018/12/23 4:56 PM
*/
@RequestMapping(value = "/ztree")
@ResponseBody
public List<ZTreeNode> ztree(@RequestParam("dictTypeId") Long dictTypeId, @RequestParam(value = "dictId", required = false) Long dictId) {
return this.dictService.dictTreeList(dictTypeId, dictId);
}
}
package cn.stylefeng.guns.modular.system.controller;
import cn.stylefeng.guns.core.common.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.system.entity.DictType;
import cn.stylefeng.guns.modular.system.model.params.DictTypeParam;
import cn.stylefeng.guns.modular.system.service.DictTypeService;
import cn.stylefeng.roses.core.base.controller.BaseController;
import cn.stylefeng.roses.core.reqres.response.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 字典类型表控制器
*
* @author stylefeng
* @Date 2019-03-13 13:53:54
*/
@Controller
@RequestMapping("/dictType")
public class DictTypeController extends BaseController {
private String PREFIX = "/modular/system/dictType";
@Autowired
private DictTypeService dictTypeService;
/**
* 跳转到主页面
*
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("")
public String index() {
return PREFIX + "/dictType.html";
}
/**
* 新增页面
*
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/add")
public String add() {
return PREFIX + "/dictType_add.html";
}
/**
* 编辑页面
*
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/edit")
public String edit() {
return PREFIX + "/dictType_edit.html";
}
/**
* 新增接口
*
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/addItem")
@ResponseBody
public ResponseData addItem(DictTypeParam dictTypeParam) {
this.dictTypeService.add(dictTypeParam);
return ResponseData.success();
}
/**
* 编辑接口
*
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/editItem")
@ResponseBody
public ResponseData editItem(DictTypeParam dictTypeParam) {
this.dictTypeService.update(dictTypeParam);
return ResponseData.success();
}
/**
* 删除接口
*
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/delete")
@ResponseBody
public ResponseData delete(DictTypeParam dictTypeParam) {
this.dictTypeService.delete(dictTypeParam);
return ResponseData.success();
}
/**
* 查看详情接口
*
* @author stylefeng
* @Date 2019-03-13
*/
@RequestMapping("/detail")
@ResponseBody
public ResponseData detail(DictTypeParam dictTypeParam) {
DictType detail = this.dictTypeService.getById(dictTypeParam.getDictTypeId());
return ResponseData.success(detail);
}
/**
* 查询列表
*
* @author stylefeng
* @Date 2019-03-13
*/
@ResponseBody
@RequestMapping("/list")
public LayuiPageInfo list(DictTypeParam dictTypeParam) {
return this.dictTypeService.findPageBySpec(dictTypeParam);
}
}
package cn.stylefeng.guns.modular.system.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 字典表
* 基础字典
* </p>
*
* @author stylefeng
* @since 2018-12-07
* @since 2019-03-13
*/
@TableName("sys_dict")
@Data
public class Dict implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
* 字典id
*/
@TableId(value = "DICT_ID", type = IdType.ID_WORKER)
@TableId("DICT_ID")
private Long dictId;
/**
* 所属字典类型的id
*/
@TableField("DICT_TYPE_ID")
private Long dictTypeId;
/**
* 父级字典id
* 字典编码
*/
@TableField("PID")
private Long pid;
@TableField("CODE")
private String code;
/**
* 字典名称
*/
@TableField("NAME")
private String name;
/**
* 字典的编码
* 上级代码id
*/
@TableField("CODE")
private String code;
@TableField("PARENT_ID")
private Long parentId;
/**
* 字典描述
* 所有上级代码id
*/
@TableField("PARENT_IDS")
private String parentIds;
/**
* 状态(字典)
*/
@TableField("STATUS")
private String status;
/**
* 字典的描述
*/
@TableField("DESCRIPTION")
private String description;
/**
* 排序
*/
@TableField("SORT")
private Integer sort;
/**
* 创建时间
*/
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
private Date createTime;
/**
* 修改时间
* 更新时间
*/
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
private Date updateTime;
/**
* 创建人
*/
@TableField(value = "CREATE_USER", fill = FieldFill.INSERT)
private Long createUser;
/**
* 修改人
*/
@TableField(value = "UPDATE_USER", fill = FieldFill.UPDATE)
private Long updateUser;
public Long getDictId() {
return dictId;
}
public void setDictId(Long dictId) {
this.dictId = dictId;
}
public Long getPid() {
return pid;
}
public void setPid(Long pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
@Override
public String toString() {
return "Dict{" +
", dictId=" + dictId +
", pid=" + pid +
", name=" + name +
", code=" + code +
", description=" + description +
", sort=" + sort +
", createTime=" + createTime +
", updateTime=" + updateTime +
", createUser=" + createUser +
", updateUser=" + updateUser +
"}";
}
}
package cn.stylefeng.guns.modular.system.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 字典类型表
* </p>
*
* @author stylefeng
* @since 2019-03-13
*/
@TableName("sys_dict_type")
@Data
public class DictType implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 字典类型id
*/
@TableId("DICT_TYPE_ID")
private Long dictTypeId;
/**
* 是否是系统字典,Y-是,N-否
*/
@TableField("SYSTEM_FLAG")
private String systemFlag;
/**
* 字典类型编码
*/
@TableField("CODE")
private String code;
/**
* 字典类型名称
*/
@TableField("NAME")
private String name;
/**
* 字典描述
*/
@TableField("DESCRIPTION")
private String description;
/**
* 状态(字典)
*/
@TableField("STATUS")
private String status;
/**
* 排序
*/
@TableField("SORT")
private Integer sort;
/**
* 添加时间
*/
@TableField(value = "CREATE_TIME", fill = FieldFill.INSERT)
private Date createTime;
/**
* 创建人
*/
@TableField(value = "CREATE_USER", fill = FieldFill.INSERT)
private Long createUser;
/**
* 修改时间
*/
@TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE)
private Date updateTime;
/**
* 修改人
*/
@TableField(value = "UPDATE_USER", fill = FieldFill.UPDATE)
private Long updateUser;
}
package cn.stylefeng.guns.modular.system.mapper;
import cn.stylefeng.guns.core.common.node.ZTreeNode;
import cn.stylefeng.guns.modular.system.entity.Dict;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* <p>
* 字典表 Mapper 接口
* 基础字典 Mapper 接口
* </p>
*
* @author stylefeng
* @since 2018-12-07
* @since 2019-03-13
*/
public interface DictMapper extends BaseMapper<Dict> {
/**
* 根据编码获取词典列表
* 获取ztree的节点列表
*/
List<Dict> selectByCode(@Param("code") String code);
/**
* 查询字典列表
*/
Page<Map<String, Object>> list(@Param("page") Page page, @Param("condition") String conditiion);
/**
* 根据父类编码获取词典列表
*/
List<Dict> selectByParentCode(@Param("code") String code);
List<ZTreeNode> dictTree(Long dictTypeId);
}
package cn.stylefeng.guns.modular.system.mapper;
import cn.stylefeng.guns.modular.system.entity.DictType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 字典类型表 Mapper 接口
* </p>
*
* @author stylefeng
* @since 2019-03-13
*/
public interface DictTypeMapper extends BaseMapper<DictType> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.system.mapper.DictMapper">
<mapper namespace="cn.stylefeng.guns.modular.dict.mapper.DictMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.system.entity.Dict">
<id column="DICT_ID" property="dictId"/>
<result column="PID" property="pid"/>
<result column="NAME" property="name"/>
<result column="CODE" property="code"/>
<result column="DESCRIPTION" property="description"/>
<result column="SORT" property="sort"/>
<result column="CREATE_TIME" property="createTime"/>
<result column="UPDATE_TIME" property="updateTime"/>
<result column="CREATE_USER" property="createUser"/>
<result column="UPDATE_USER" property="updateUser"/>
<resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.dict.entity.Dict">
<id column="DICT_ID" property="dictId" />
<result column="DICT_TYPE_ID" property="dictTypeId" />
<result column="CODE" property="code" />
<result column="NAME" property="name" />
<result column="PARENT_ID" property="parentId" />
<result column="PARENT_IDS" property="parentIds" />
<result column="STATUS" property="status" />
<result column="DESCRIPTION" property="description" />
<result column="CREATE_TIME" property="createTime" />
<result column="UPDATE_TIME" property="updateTime" />
<result column="CREATE_USER" property="createUser" />
<result column="UPDATE_USER" property="updateUser" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
DICT_ID AS dictId, PID AS pid, NAME AS name, CODE AS code, DESCRIPTION AS description, SORT AS sort, CREATE_TIME AS createTime, UPDATE_TIME AS updateTime, CREATE_USER AS createUser, UPDATE_USER AS updateUser
base.DICT_ID AS dictId, base.DICT_TYPE_ID AS dictTypeId, base.CODE AS code, base.NAME AS name, base.PARENT_ID AS parentId, base.STATUS AS status, base.DESCRIPTION AS description, base.CREATE_TIME AS createTime, base.UPDATE_TIME AS updateTime, base.CREATE_USER AS createUser, base.UPDATE_USER AS updateUser
</sql>
<select id="selectByCode" resultType="cn.stylefeng.guns.modular.system.entity.Dict">
select
<include refid="Base_Column_List"/>
from sys_dict
where CODE = #{code}
<select id="dictTree" resultType="cn.stylefeng.guns.core.common.node.ZTreeNode">
select DICT_ID AS id, PARENT_ID as pId, NAME as name,
(
CASE
WHEN (PARENT_ID = 0 OR PARENT_ID IS NULL) THEN
'true'
ELSE
'false'
END
) as open from sys_dict where DICT_TYPE_ID = #{dictTypeId}
</select>
<select id="selectByParentCode" resultType="cn.stylefeng.guns.modular.system.entity.Dict">
select
<include refid="Base_Column_List"/>
from sys_dict
where PID in(select DICT_ID from sys_dict where CODE = #{code}) order by SORT asc
</select>
<select id="list" resultType="map">
select
<include refid="Base_Column_List"/>
from sys_dict
where PID = 0
<if test="condition != null and condition != ''">
AND NAME like CONCAT('%',#{condition},'%')
</if>
order by SORT ASC
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.dict.mapper.DictTypeMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.dict.entity.DictType">
<id column="DICT_TYPE_ID" property="dictTypeId" />
<result column="SYSTEM_FLAG" property="systemFlag" />
<result column="CODE" property="code" />
<result column="NAME" property="name" />
<result column="DESCRIPTION" property="description" />
<result column="STATUS" property="status" />
<result column="CREATE_TIME" property="createTime" />
<result column="CREATE_USER" property="createUser" />
<result column="UPDATE_TIME" property="updateTime" />
<result column="UPDATE_USER" property="updateUser" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
base.DICT_TYPE_ID AS dictTypeId, base.SYSTEM_FLAG AS systemFlag, base.CODE AS code, base.NAME AS name, base.DESCRIPTION AS description, base.STATUS AS status, base.CREATE_TIME AS createTime, base.CREATE_USER AS createUser, base.UPDATE_TIME AS updateTime, base.UPDATE_USER AS updateUser
</sql>
</mapper>
package cn.stylefeng.guns.modular.system.model.params;
import cn.stylefeng.roses.kernel.model.validator.BaseValidatingParam;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 基础字典
* </p>
*
* @author stylefeng
* @since 2019-03-13
*/
@Data
public class DictParam implements Serializable, BaseValidatingParam {
private static final long serialVersionUID = 1L;
/**
* 字典id
*/
private Long dictId;
/**
* 所属字典类型的id
*/
private Long dictTypeId;
/**
* 字典编码
*/
private String code;
/**
* 字典名称
*/
private String name;
/**
* 上级代码id
*/
private Long parentId;
/**
* 状态(字典)
*/
private String status;
/**
* 字典的描述
*/
private String description;
/**
* 查询条件
*/
private String condition;
/**
* 排序
*/
private Integer sort;
@Override
public String checkParam() {
return null;
}
}
package cn.stylefeng.guns.modular.system.model;
package cn.stylefeng.guns.modular.system.model.params;
import cn.stylefeng.roses.kernel.model.validator.BaseValidatingParam;
import lombok.Data;
import java.io.Serializable;
/**
* 字典信息
* <p>
* 字典类型表
* </p>
*
* @author fengshuonan
* @Date 2018/12/8 18:16
* @author stylefeng
* @since 2019-03-13
*/
@Data
public class DictDto implements Serializable {
public class DictTypeParam implements Serializable, BaseValidatingParam {
private static final long serialVersionUID = 1L;
/**
* 类型id
* 字典类型id
*/
private Long dictTypeId;
/**
* 名称
* 是否是系统字典,Y-是,N-否
*/
private String name;
private String systemFlag;
/**
* 编码
* 字典类型编码
*/
private String code;
/**
* 字典类型名称
*/
private String name;
/**
* 备注
* 字典描述
*/
private String description;
/**
* 序号
* 状态(字典)
*/
private String status;
/**
* 查询条件
*/
private String condition;
/**
* 排序
*/
private Integer sort;
@Override
public String checkParam() {
return null;
}
}
package cn.stylefeng.guns.modular.system.model.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 基础字典
* </p>
*
* @author stylefeng
* @since 2019-03-13
*/
@Data
public class DictResult implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 字典id
*/
private Long dictId;
/**
* 所属字典类型的id
*/
private Long dictTypeId;
/**
* 字典编码
*/
private String code;
/**
* 字典名称
*/
private String name;
/**
* 上级代码id
*/
private Long parentId;
/**
* 状态(字典)
*/
private String status;
/**
* 字典的描述
*/
private String description;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 创建人
*/
private Long createUser;
/**
* 修改人
*/
private Long updateUser;
/**
* 父级字典名称
*/
private String parentName;
/**
* 排序
*/
private Integer sort;
}
package cn.stylefeng.guns.modular.system.model.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 字典类型表
* </p>
*
* @author stylefeng
* @since 2019-03-13
*/
@Data
public class DictTypeResult implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 字典类型id
*/
private Long dictTypeId;
/**
* 是否是系统字典,Y-是,N-否
*/
private String systemFlag;
/**
* 字典类型编码
*/
private String code;
/**
* 字典类型名称
*/
private String name;
/**
* 字典描述
*/
private String description;
/**
* 状态(字典)
*/
private String status;
/**
* 添加时间
*/
private Date createTime;
/**
* 创建人
*/
private Long createUser;
/**
* 修改时间
*/
private Date updateTime;
/**
* 修改人
*/
private Long updateUser;
/**
* 排序
*/
private Integer sort;
}
package cn.stylefeng.guns.modular.system.service;
import cn.hutool.core.bean.BeanUtil;
import cn.stylefeng.guns.core.common.exception.BizExceptionEnum;
import cn.stylefeng.guns.core.common.node.ZTreeNode;
import cn.stylefeng.guns.core.common.page.LayuiPageFactory;
import cn.stylefeng.guns.core.common.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.system.entity.Dict;
import cn.stylefeng.guns.modular.system.mapper.DictMapper;
import cn.stylefeng.guns.modular.system.model.DictDto;
import cn.stylefeng.guns.modular.system.model.params.DictParam;
import cn.stylefeng.guns.modular.system.model.result.DictResult;
import cn.stylefeng.roses.core.util.ToolUtil;
import cn.stylefeng.roses.kernel.model.exception.RequestEmptyException;
import cn.stylefeng.roses.kernel.model.exception.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>
* 字典表 服务实现类
* 基础字典 服务实现类
* </p>
*
* @author stylefeng
* @since 2018-12-07
* @since 2019-03-13
*/
@Service
public class DictService extends ServiceImpl<DictMapper, Dict> {
@Resource
private DictMapper dictMapper;
/**
* 添加字典
* 新增
*
* @author fengshuonan
* @Date 2018/12/23 5:25 PM
* @author stylefeng
* @Date 2019-03-13
*/
public void addDict(DictDto dictDto) {
public void add(DictParam param) {
if (ToolUtil.isOneEmpty(dictDto, dictDto.getCode(), dictDto.getName())) {
throw new ServiceException(BizExceptionEnum.REQUEST_NULL);
//判断是否已经存在同编码或同名称字典
QueryWrapper<Dict> dictQueryWrapper = new QueryWrapper<>();
dictQueryWrapper
.and(i -> i.eq("CODE", param.getCode()).or().eq("NAME", param.getName()))
.and(i -> i.eq("DICT_TYPE_ID", param.getDictTypeId()));
List<Dict> list = this.list(dictQueryWrapper);
if (list != null && list.size() > 0) {
throw new ServiceException(BizExceptionEnum.DICT_EXISTED);
}
if (ToolUtil.isEmpty(dictDto.getDictTypeId())) {
this.addDictType(dictDto);
} else {
this.addDictItem(dictDto);
}
Dict entity = getEntity(param);
//设置pids
dictSetPids(entity);
this.save(entity);
}
/**
* 添加字典类型
* 删除
*
* @author fengshuonan
* @Date 2018/12/23 5:25 PM
* @author stylefeng
* @Date 2019-03-13
*/
private void addDictType(DictDto dictDto) {
Dict dict = new Dict();
BeanUtil.copyProperties(dictDto, dict);
public void delete(DictParam param) {
//类型的父级id都为0
dict.setPid(0L);
//删除字典的所有子级
List<Long> subIds = getSubIds(param.getDictId());
if (subIds.size() > 0) {
this.removeByIds(subIds);
}
this.save(dict);
this.removeById(getKey(param));
}
/**
* 添加字典子类型
* 更新
*
* @author fengshuonan
* @Date 2018/12/23 5:25 PM
* @author stylefeng
* @Date 2019-03-13
*/
private void addDictItem(DictDto dictDto) {
Dict dict = new Dict();
BeanUtil.copyProperties(dictDto, dict);
public void update(DictParam param) {
Dict oldEntity = getOldEntity(param);
Dict newEntity = getEntity(param);
ToolUtil.copyProperties(newEntity, oldEntity);
//字典的父级id为字典tyeId
dict.setPid(dictDto.getDictTypeId());
//判断编码是否重复
QueryWrapper<Dict> wrapper = new QueryWrapper<Dict>()
.and(i -> i.eq("CODE", newEntity.getCode()).or().eq("NAME", newEntity.getName()))
.and(i -> i.ne("DICT_ID", newEntity.getDictId()))
.and(i -> i.eq("DICT_TYPE_ID", param.getDictTypeId()));
int dicts = this.count(wrapper);
if (dicts > 0) {
throw new ServiceException(BizExceptionEnum.DICT_EXISTED);
}
this.save(dict);
//设置pids
dictSetPids(newEntity);
this.updateById(newEntity);
}
/**
* 删除字典
* 查询单条数据,Specification模式
*
* @author fengshuonan
* @Date 2018/12/23 5:25 PM
* @author stylefeng
* @Date 2019-03-13
*/
@Transactional
public void delteDict(Long dictId) {
//删除这个字典的子词典
QueryWrapper<Dict> dictEntityWrapper = new QueryWrapper<>();
dictEntityWrapper = dictEntityWrapper.eq("PID", dictId);
dictMapper.delete(dictEntityWrapper);
public DictResult findBySpec(DictParam param) {
return null;
}
//删除这个词典
dictMapper.deleteById(dictId);
/**
* 查询列表,Specification模式
*
* @author stylefeng
* @Date 2019-03-13
*/
public List<DictResult> findListBySpec(DictParam param) {
return null;
}
/**
* 根据编码获取词典列表
* 查询分页数据,Specification模式
*
* @author fengshuonan
* @Date 2018/12/23 5:25 PM
* @author stylefeng
* @Date 2019-03-13
*/
public List<Dict> selectByCode(String code) {
return this.baseMapper.selectByCode(code);
public LayuiPageInfo findPageBySpec(DictParam param) {
QueryWrapper<Dict> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("DICT_TYPE_ID", param.getDictTypeId());
if (ToolUtil.isNotEmpty(param.getCondition())) {
objectQueryWrapper.and(i -> i.eq("CODE", param.getCondition()).or().eq("NAME", param.getCondition()));
}
objectQueryWrapper.orderByAsc("SORT");
List<Dict> list = this.list(objectQueryWrapper);
//创建根节点
Dict dict = new Dict();
dict.setName("根节点");
dict.setDictId(0L);
dict.setParentId(-999L);
list.add(dict);
LayuiPageInfo result = new LayuiPageInfo();
result.setData(list);
return result;
}
/**
* 根据父类编码获取词典列表
* 获取字典的树形列表(ztree结构)
*
* @author fengshuonan
* @Date 2018/12/23 5:26 PM
* @Date 2019/3/14 3:40 PM
*/
public List<Dict> selectByParentCode(String code) {
return this.baseMapper.selectByParentCode(code);
public List<ZTreeNode> dictTreeList(Long dictTypeId, Long dictId) {
if (dictTypeId == null) {
throw new RequestEmptyException();
}
List<ZTreeNode> tree = this.baseMapper.dictTree(dictTypeId);
//获取dict的所有子节点
List<Long> subIds = getSubIds(dictId);
//如果传了dictId,则在返回结果里去掉
List<ZTreeNode> resultTree = new ArrayList<>();
for (ZTreeNode zTreeNode : tree) {
//如果dictId等于树节点的某个id则去除
if (ToolUtil.isNotEmpty(dictId) && dictId.equals(zTreeNode.getId())) {
continue;
}
if (subIds.contains(zTreeNode.getId())) {
continue;
}
resultTree.add(zTreeNode);
}
resultTree.add(ZTreeNode.createParent());
return resultTree;
}
/**
* 查询字典列表
* 查看dict的详情
*
* @author fengshuonan
* @Date 2018/12/23 5:26 PM
* @Date 2019/3/14 5:22 PM
*/
public Page<Map<String, Object>> list(String conditiion) {
Page page = LayuiPageFactory.defaultPage();
return this.baseMapper.list(page, conditiion);
public DictResult dictDetail(Long dictId) {
if (ToolUtil.isEmpty(dictId)) {
throw new RequestEmptyException();
}
DictResult dictResult = new DictResult();
//查询字典
Dict detail = this.getById(dictId);
if (detail == null) {
throw new RequestEmptyException();
}
//查询父级字典
if (ToolUtil.isNotEmpty(detail.getParentId())) {
Long parentId = detail.getParentId();
Dict dictType = this.getById(parentId);
if (dictType != null) {
dictResult.setParentName(dictType.getName());
} else {
dictResult.setParentName("无父级");
}
}
ToolUtil.copyProperties(detail, dictResult);
return dictResult;
}
private Serializable getKey(DictParam param) {
return param.getDictId();
}
private Page getPageContext() {
return LayuiPageFactory.defaultPage();
}
private Dict getOldEntity(DictParam param) {
return this.getById(getKey(param));
}
private Dict getEntity(DictParam param) {
Dict entity = new Dict();
ToolUtil.copyProperties(param, entity);
return entity;
}
private List<Long> getSubIds(Long dictId) {
QueryWrapper<Dict> dictQueryWrapper = new QueryWrapper<>();
dictQueryWrapper.like("PARENT_IDS", "%[" + dictId + "]%");
List<Dict> list = this.list(dictQueryWrapper);
ArrayList<Long> longs = new ArrayList<>();
for (Dict dict : list) {
longs.add(dict.getDictId());
}
return longs;
}
private void dictSetPids(Dict param) {
if (param.getParentId().equals(0L)) {
param.setParentIds("[0]");
} else {
//获取父级的pids
Long parentId = param.getParentId();
Dict parent = this.getById(parentId);
if (parent == null) {
param.setParentIds("[0]");
} else {
param.setParentIds(parent.getParentIds() + "," + "[" + parentId + "]");
}
}
}
}
package cn.stylefeng.guns.modular.system.service;
import cn.stylefeng.guns.core.common.exception.BizExceptionEnum;
import cn.stylefeng.guns.core.common.page.LayuiPageFactory;
import cn.stylefeng.guns.core.common.page.LayuiPageInfo;
import cn.stylefeng.guns.modular.system.entity.DictType;
import cn.stylefeng.guns.modular.system.mapper.DictTypeMapper;
import cn.stylefeng.guns.modular.system.model.params.DictTypeParam;
import cn.stylefeng.guns.modular.system.model.result.DictTypeResult;
import cn.stylefeng.roses.core.util.ToolUtil;
import cn.stylefeng.roses.kernel.model.exception.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.List;
/**
* <p>
* 字典类型表 服务实现类
* </p>
*
* @author stylefeng
* @since 2019-03-13
*/
@Service
public class DictTypeService extends ServiceImpl<DictTypeMapper, DictType> {
/**
* 新增
*
* @author stylefeng
* @Date 2019-03-13
*/
public void add(DictTypeParam param) {
//判断是否已经存在同编码或同名称字典
QueryWrapper<DictType> dictQueryWrapper = new QueryWrapper<>();
dictQueryWrapper.eq("CODE", param.getCode()).or().eq("NAME", param.getName());
List<DictType> list = this.list(dictQueryWrapper);
if (list != null && list.size() > 0) {
throw new ServiceException(BizExceptionEnum.DICT_EXISTED);
}
DictType entity = getEntity(param);
this.save(entity);
}
/**
* 删除
*
* @author stylefeng
* @Date 2019-03-13
*/
public void delete(DictTypeParam param) {
this.removeById(getKey(param));
}
/**
* 更新
*
* @author stylefeng
* @Date 2019-03-13
*/
public void update(DictTypeParam param) {
DictType oldEntity = getOldEntity(param);
DictType newEntity = getEntity(param);
ToolUtil.copyProperties(newEntity, oldEntity);
//判断编码是否重复
QueryWrapper<DictType> wrapper = new QueryWrapper<DictType>()
.and(i -> i.eq("CODE", newEntity.getCode()).or().eq("NAME", newEntity.getName()))
.and(i -> i.ne("DICT_TYPE_ID", newEntity.getDictTypeId()));
int dicts = this.count(wrapper);
if (dicts > 0) {
throw new ServiceException(BizExceptionEnum.DICT_EXISTED);
}
this.updateById(newEntity);
}
/**
* 查询单条数据,Specification模式
*
* @author stylefeng
* @Date 2019-03-13
*/
public DictTypeResult findBySpec(DictTypeParam param) {
return null;
}
/**
* 查询列表,Specification模式
*
* @author stylefeng
* @Date 2019-03-13
*/
public List<DictTypeResult> findListBySpec(DictTypeParam param) {
return null;
}
/**
* 查询分页数据,Specification模式
*
* @author stylefeng
* @Date 2019-03-13
*/
public LayuiPageInfo findPageBySpec(DictTypeParam param) {
Page pageContext = getPageContext();
QueryWrapper<DictType> objectQueryWrapper = new QueryWrapper<>();
if (ToolUtil.isNotEmpty(param.getCondition())) {
objectQueryWrapper.and(i -> i.eq("CODE", param.getCondition()).or().eq("NAME", param.getCondition()));
}
if (ToolUtil.isNotEmpty(param.getStatus())) {
objectQueryWrapper.and(i -> i.eq("STATUS", param.getStatus()));
}
if (ToolUtil.isNotEmpty(param.getSystemFlag())) {
objectQueryWrapper.and(i -> i.eq("SYSTEM_FLAG", param.getSystemFlag()));
}
pageContext.setAsc("SORT");
IPage page = this.page(pageContext, objectQueryWrapper);
return LayuiPageFactory.createPageInfo(page);
}
private Serializable getKey(DictTypeParam param) {
return param.getDictTypeId();
}
private Page getPageContext() {
return LayuiPageFactory.defaultPage();
}
private DictType getOldEntity(DictTypeParam param) {
return this.getById(getKey(param));
}
private DictType getEntity(DictTypeParam param) {
DictType entity = new DictType();
ToolUtil.copyProperties(param, entity);
return entity;
}
}
/**
* Copyright 2018-2020 stylefeng & fengshuonan (https://gitee.com/stylefeng)
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.stylefeng.guns.modular.system.warpper;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.guns.core.common.constant.factory.ConstantFactory;
import cn.stylefeng.guns.modular.system.entity.Dict;
import cn.stylefeng.roses.core.base.warpper.BaseControllerWrapper;
import cn.stylefeng.roses.kernel.model.page.PageResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import java.util.Map;
/**
* 字典列表的包装
*
* @author fengshuonan
* @date 2017年4月25日 18:10:31
*/
public class DictWrapper extends BaseControllerWrapper {
public DictWrapper(Page<Map<String, Object>> page) {
super(page);
}
@Override
protected void wrapTheMap(Map<String, Object> map) {
StringBuilder detail = new StringBuilder();
Long id = Long.valueOf(map.get("dictId").toString());
List<Dict> dicts = ConstantFactory.me().findInDict(id);
if (dicts != null) {
for (Dict dict : dicts) {
detail.append(dict.getCode()).append(":").append(dict.getName()).append(",");
}
map.put("detail", StrUtil.removeSuffix(detail.toString(), ","));
}
}
}
layui.use(['layer', 'form', 'table', 'admin', 'ax'], function () {
layui.use(['table', 'ax', 'treetable'], function () {
var $ = layui.$;
var layer = layui.layer;
var form = layui.form;
var table = layui.table;
var $ax = layui.ax;
var admin = layui.admin;
var treetable = layui.treetable;
/**
* 系统管理--字典管理
* 基础字典管理
*/
var Dict = {
tableId: "dictTable", //表格id
condition: {
condition: ""
}
tableId: "dictTable"
};
/**
......@@ -22,12 +17,22 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax'], function () {
Dict.initColumn = function () {
return [[
{type: 'checkbox'},
{field: 'dictId', hide: true, sort: true, title: 'id'},
{field: 'name', sort: true, title: '名称'},
{field: 'dictId', hide: true, title: '字典id'},
{field: 'name', sort: true, title: '字典名称'},
{field: 'code', sort: true, title: '字典编码'},
{field: 'detail', sort: true, title: '详情'},
{field: 'description', sort: true, title: '备注'},
{align: 'center', toolbar: '#tableBar', title: '操作', minWidth: 200}
{field: 'description', sort: true, title: '字典的描述'},
{
field: 'status', sort: true, title: '状态', templet: function (d) {
if (d.status === 'ENABLE') {
return "启用";
} else {
return "禁用";
}
}
},
{field: 'createTime', sort: true, title: '创建时间'},
{field: 'createUser', sort: true, title: '创建人'},
{align: 'center', toolbar: '#tableBar', title: '操作'}
]];
};
......@@ -37,79 +42,66 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax'], function () {
Dict.search = function () {
var queryData = {};
queryData['condition'] = $("#condition").val();
table.reload(Dict.tableId, {where: queryData});
Dict.initTable(Dict.tableId, queryData);
};
/**
* 弹出添加字典
* 弹出添加对话框
*/
Dict.openAddDict = function () {
admin.putTempData('formOk', false);
top.layui.admin.open({
type: 2,
title: '添加字典类型',
content: Feng.ctxPath + '/dict/dict_add_type',
end: function () {
admin.getTempData('formOk') && table.reload(Dict.tableId);
}
});
Dict.openAddDlg = function () {
window.location.href = Feng.ctxPath + '/dict/add?dictTypeId=' + $("#dictTypeId").val();
};
/**
* 弹出添加子条目
*/
Dict.openAddDictSub = function (data) {
admin.putTempData('formOk', false);
top.layui.admin.open({
type: 2,
title: '添加子条目',
content: Feng.ctxPath + '/dict/dict_add_item?dictId=' + data.dictId,
end: function () {
admin.getTempData('formOk') && table.reload(Dict.tableId);
}
});
};
/**
* 导出excel按钮
* 点击编辑
*
* @param data 点击按钮时候的行数据
*/
Dict.exportExcel = function () {
var checkRows = table.checkStatus(Dict.tableId);
if (checkRows.data.length === 0) {
Feng.error("请选择要导出的数据");
} else {
table.exportFile(tableResult.config.id, checkRows.data, 'xls');
}
Dict.openEditDlg = function (data) {
window.location.href = Feng.ctxPath + '/dict/edit?dictId=' + data.dictId;
};
/**
* 点击删除字典
* 点击删除
*
* @param data 点击按钮时候的行数据
*/
Dict.onDeleteRole = function (data) {
Dict.onDeleteItem = function (data) {
var operation = function () {
var ajax = new $ax(Feng.ctxPath + "/dict/delete", function (data) {
Feng.success("删除成功!");
table.reload(Dict.tableId);
Dict.search();
}, function (data) {
Feng.error("删除失败!" + data.responseJSON.message + "!");
});
ajax.set("dictId", data.dictId);
ajax.start();
};
Feng.confirm("是否刪除字典 " + data.name + "?", operation);
Feng.confirm("是否删除?", operation);
};
// 渲染表格
var tableResult = table.render({
elem: '#' + Dict.tableId,
url: Feng.ctxPath + '/dict/list',
page: true,
height: "full-158",
cellMinWidth: 100,
cols: Dict.initColumn()
});
/**
* 渲染表格
*/
Dict.initTable = function (dictId, data) {
return treetable.render({
elem: '#' + dictId,
url: Feng.ctxPath + '/dict/list?dictTypeId=' + $("#dictTypeId").val(),
where: data,
height: "full-158",
cellMinWidth: 100,
cols: Dict.initColumn(),
page: false,
treeColIndex: 2,
treeSpid: "0",
treeIdName: 'dictId',
treePidName: 'parentId',
treeDefaultClose: false,
treeLinkage: true
});
};
Dict.initTable(Dict.tableId);
// 搜索按钮点击事件
$('#btnSearch').click(function () {
......@@ -118,7 +110,7 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax'], function () {
// 添加按钮点击事件
$('#btnAdd').click(function () {
Dict.openAddDict();
Dict.openAddDlg();
});
// 导出excel
......@@ -126,17 +118,20 @@ layui.use(['layer', 'form', 'table', 'admin', 'ax'], function () {
Dict.exportExcel();
});
// 关闭页面
$('#btnBack').click(function () {
window.location.href = Feng.ctxPath + "/dictType";
});
// 工具条点击事件
table.on('tool(' + Dict.tableId + ')', function (obj) {
var data = obj.data;
var layEvent = obj.event;
if (layEvent === 'addSub') {
Dict.openAddDictSub(data);
if (layEvent === 'edit') {
Dict.openEditDlg(data);
} else if (layEvent === 'delete') {
Dict.onDeleteRole(data);
} else if (layEvent === 'roleAssign') {
Dict.roleAssign(data);
Dict.onDeleteItem(data);
}
});
});
/**
* 详情对话框
*/
var DictInfoDlg = {
data: {
dictTypeId: "",
code: "",
name: "",
parentId: "",
parentName: "",
status: "",
description: "",
createTime: "",
updateTime: "",
createUser: "",
updateUser: ""
}
};
layui.use(['form', 'ax'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
//表单提交事件
form.on('submit(btnSubmit)', function (data) {
var ajax = new $ax(Feng.ctxPath + "/dict/addItem", function (data) {
Feng.success("添加成功!");
window.location.href = Feng.ctxPath + "/dict?dictTypeId=" + $("#dictTypeId").val();
}, function (data) {
Feng.error("添加失败!" + data.responseJSON.message)
});
ajax.set(data.field);
ajax.start();
return false;
});
//返回按钮
$("#backupPage").click(function () {
window.location.href = Feng.ctxPath + "/dict?dictTypeId=" + $("#dictTypeId").val();
});
//父级字典时
$('#parentName').click(function () {
var formName = encodeURIComponent("parent.DictInfoDlg.data.parentName");
var formId = encodeURIComponent("parent.DictInfoDlg.data.parentId");
var treeUrl = encodeURIComponent(Feng.ctxPath + "/dict/ztree?dictTypeId=" + $("#dictTypeId").val());
layer.open({
type: 2,
title: '父级字典',
area: ['300px', '400px'],
content: Feng.ctxPath + '/system/commonTree?formName=' + formName + "&formId=" + formId + "&treeUrl=" + treeUrl,
end: function () {
$("#parentId").val(DictInfoDlg.data.parentId);
$("#parentName").val(DictInfoDlg.data.parentName);
}
});
});
});
\ No newline at end of file
layui.use(['layer', 'form', 'admin', 'ax'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
var admin = layui.admin;
var layer = layui.layer;
// 让当前iframe弹层高度适应
admin.iframeAuto();
// 表单提交事件
form.on('submit(btnSubmit)', function (data) {
var ajax = new $ax(Feng.ctxPath + "/dict/add", function (data) {
Feng.success("添加成功!");
//传给上个页面,刷新table用
admin.putTempData('formOk', true);
//关掉对话框
admin.closeThisDialog();
}, function (data) {
Feng.error("添加失败!" + data.responseJSON.message)
});
ajax.set(data.field);
ajax.start();
});
});
\ No newline at end of file
layui.use(['layer', 'form', 'admin', 'ax'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
var admin = layui.admin;
var layer = layui.layer;
// 让当前iframe弹层高度适应
admin.iframeAuto();
// 表单提交事件
form.on('submit(btnSubmit)', function (data) {
var ajax = new $ax(Feng.ctxPath + "/dict/add", function (data) {
Feng.success("添加成功!");
//传给上个页面,刷新table用
admin.putTempData('formOk', true);
//关掉对话框
admin.closeThisDialog();
}, function (data) {
Feng.error("添加失败!" + data.responseJSON.message)
});
ajax.set(data.field);
ajax.start();
});
});
\ No newline at end of file
/**
* 详情对话框
*/
var DictInfoDlg = {
data: {
dictTypeId: "",
code: "",
name: "",
parentId: "",
status: "",
description: "",
createTime: "",
updateTime: "",
createUser: "",
updateUser: ""
}
};
layui.use(['form', 'ax'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
//获取详情信息,填充表单
var ajax = new $ax(Feng.ctxPath + "/dict/detail?dictId=" + Feng.getUrlParam("dictId"));
var result = ajax.start();
form.val('dictForm', result.data);
//表单提交事件
form.on('submit(btnSubmit)', function (data) {
var ajax = new $ax(Feng.ctxPath + "/dict/editItem", function (data) {
Feng.success("更新成功!");
window.location.href = Feng.ctxPath + "/dict?dictTypeId=" + $("#dictTypeId").val();
}, function (data) {
Feng.error("更新失败!" + data.responseJSON.message)
});
ajax.set(data.field);
ajax.start();
return false;
});
//返回按钮
$("#backupPage").click(function () {
window.location.href = Feng.ctxPath + "/dict?dictTypeId=" + $("#dictTypeId").val();
});
//父级字典时
$('#parentName').click(function () {
var formName = encodeURIComponent("parent.DictInfoDlg.data.parentName");
var formId = encodeURIComponent("parent.DictInfoDlg.data.parentId");
var treeUrl = encodeURIComponent(Feng.ctxPath + "/dict/ztree?dictTypeId=" + $("#dictTypeId").val() + "&dictId=" + $("#dictId").val());
layer.open({
type: 2,
title: '父级字典',
area: ['300px', '400px'],
content: Feng.ctxPath + '/system/commonTree?formName=' + formName + "&formId=" + formId + "&treeUrl=" + treeUrl,
end: function () {
$("#parentId").val(DictInfoDlg.data.parentId);
$("#parentName").val(DictInfoDlg.data.parentName);
}
});
});
});
\ No newline at end of file
layui.use(['table', 'ax'], function () {
var $ = layui.$;
var table = layui.table;
var $ax = layui.ax;
/**
* 字典类型表管理
*/
var DictType = {
tableId: "dictTypeTable"
};
/**
* 初始化表格的列
*/
DictType.initColumn = function () {
return [[
{type: 'checkbox'},
{field: 'dictTypeId', hide: true, title: '字典类型id'},
{
field: 'name', sort: true, title: '类型名称', templet: function (d) {
var url = Feng.ctxPath + '/dict?dictTypeId=' + d.dictTypeId;
return '<a style="color: #01AAED;" href="' + url + '">' + d.name + '</a>';
}
},
{
field: 'code', sort: true, title: '类型编码', templet: function (d) {
var url = Feng.ctxPath + '/dict?dictTypeId=' + d.dictTypeId;
return '<a style="color: #01AAED;" href="' + url + '">' + d.code + '</a>';
}
},
{
field: 'systemFlag', sort: true, title: '是否是系统字典', templet: function (d) {
if (d.systemFlag === 'Y') {
return "是";
} else {
return "否";
}
}
},
{field: 'description', sort: true, title: '字典描述'},
{
field: 'status', sort: true, title: '状态', templet: function (d) {
if (d.status === 'ENABLE') {
return "启用";
} else {
return "禁用";
}
}
},
{field: 'createTime', sort: true, title: '添加时间'},
{field: 'createUser', sort: true, title: '创建人'},
{align: 'center', toolbar: '#tableBar', title: '操作'}
]];
};
/**
* 点击查询按钮
*/
DictType.search = function () {
var queryData = {};
queryData['condition'] = $("#condition").val();
queryData['systemFlag'] = $("#systemFlag").val();
queryData['status'] = $("#status").val();
table.reload(DictType.tableId, {where: queryData});
};
/**
* 弹出添加对话框
*/
DictType.openAddDlg = function () {
window.location.href = Feng.ctxPath + '/dictType/add';
};
/**
* 点击编辑
*
* @param data 点击按钮时候的行数据
*/
DictType.openEditDlg = function (data) {
window.location.href = Feng.ctxPath + '/dictType/edit?dictTypeId=' + data.dictTypeId;
};
/**
* 点击删除
*
* @param data 点击按钮时候的行数据
*/
DictType.onDeleteItem = function (data) {
var operation = function () {
var ajax = new $ax(Feng.ctxPath + "/dictType/delete", function (data) {
Feng.success("删除成功!");
table.reload(DictType.tableId);
}, function (data) {
Feng.error("删除失败!" + data.responseJSON.message + "!");
});
ajax.set("dictTypeId", data.dictTypeId);
ajax.start();
};
Feng.confirm("是否删除?", operation);
};
// 渲染表格
var tableResult = table.render({
elem: '#' + DictType.tableId,
url: Feng.ctxPath + '/dictType/list',
page: true,
height: "full-158",
cellMinWidth: 100,
cols: DictType.initColumn()
});
// 搜索按钮点击事件
$('#btnSearch').click(function () {
DictType.search();
});
// 添加按钮点击事件
$('#btnAdd').click(function () {
DictType.openAddDlg();
});
// 工具条点击事件
table.on('tool(' + DictType.tableId + ')', function (obj) {
var data = obj.data;
var layEvent = obj.event;
if (layEvent === 'edit') {
DictType.openEditDlg(data);
} else if (layEvent === 'delete') {
DictType.onDeleteItem(data);
}
});
});
/**
* 详情对话框
*/
var DictTypeInfoDlg = {
data: {
systemFlag: "",
code: "",
name: "",
description: "",
status: "",
createTime: "",
createUser: "",
updateTime: "",
updateUser: ""
}
};
layui.use(['form', 'ax'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
//表单提交事件
form.on('submit(btnSubmit)', function (data) {
var ajax = new $ax(Feng.ctxPath + "/dictType/addItem", function (data) {
Feng.success("添加成功!");
window.location.href = Feng.ctxPath + "/dictType";
}, function (data) {
Feng.error("添加失败!" + data.responseJSON.message)
});
ajax.set(data.field);
ajax.start();
return false;
});
//返回按钮
$("#backupPage").click(function () {
window.location.href = Feng.ctxPath + "/dictType";
});
});
\ No newline at end of file
/**
* 详情对话框
*/
var DictTypeInfoDlg = {
data: {
systemFlag: "",
code: "",
name: "",
description: "",
status: "",
createTime: "",
createUser: "",
updateTime: "",
updateUser: ""
}
};
layui.use(['form', 'ax'], function () {
var $ = layui.jquery;
var $ax = layui.ax;
var form = layui.form;
//获取详情信息,填充表单
var ajax = new $ax(Feng.ctxPath + "/dictType/detail?dictTypeId=" + Feng.getUrlParam("dictTypeId"));
var result = ajax.start();
form.val('dictTypeForm', result.data);
//表单提交事件
form.on('submit(btnSubmit)', function (data) {
var ajax = new $ax(Feng.ctxPath + "/dictType/editItem", function (data) {
Feng.success("更新成功!");
window.location.href = Feng.ctxPath + "/dictType";
}, function (data) {
Feng.error("更新失败!" + data.responseJSON.message)
});
ajax.set(data.field);
ajax.start();
return false;
});
//返回按钮
$("#backupPage").click(function () {
window.location.href = Feng.ctxPath + "/dictType";
});
});
\ No newline at end of file
@layout("/common/_container.html",{js:["/assets/modular/system/dict/dict.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">字典管理</span>
<span class="layui-body-header-title">字典管理(字典类型:<span style="color: #1E9FFF;">${dictTypeName}</span></span>
</div>
<div class="layui-fluid">
......@@ -12,12 +12,13 @@
<div class="layui-form toolbar">
<div class="layui-form-item">
<div class="layui-inline">
<input id="condition" class="layui-input" type="text" placeholder="字典名称"/>
<input type="hidden" id="dictTypeId" value="${dictTypeId}"/>
<input id="condition" class="layui-input" type="text" placeholder="名称/编码"/>
</div>
<div class="layui-inline">
<button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
<button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加</button>
<button id="btnExp" class="layui-btn icon-btn"><i class="layui-icon">&#xe67d;</i>导出</button>
<button id="btnBack" class="layui-btn icon-btn layui-btn-warm"><i class="layui-icon">&#x1006;</i>关闭</button>
</div>
</div>
</div>
......@@ -29,7 +30,7 @@
</div>
<script type="text/html" id="tableBar">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="addSub">添加子条目</a>
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
@}
\ No newline at end of file
@layout("/common/_container.html",{bg:"bg-white",js:["/assets/modular/system/dict/dict_add_type.js"]}){
<form id="userForm" lay-filter="roleForm" class="layui-form model-form">
<input name="roleId" type="hidden"/>
<div class="layui-form-item">
<label class="layui-form-label">父级字典<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input value="顶级" type="text" class="layui-input" disabled="disabled"/>
@layout("/common/_container.html",{js:["/assets/modular/system/dict/dict_add.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">表单的示例-添加</span>
</div>
<div class="layui-fluid " style="">
<div class="layui-card">
<div class="layui-card-body">
<form id="dictForm" lay-filter="dictForm" class="layui-form model-form" style="max-width: 700px;margin: 40px auto;">
<input id="dictTypeId" name="dictTypeId" type="hidden" value="${dictTypeId}"/>
<div class="layui-form-item">
<label class="layui-form-label">字典类型</label>
<div class="layui-input-block">
<input type="text" class="layui-input white-border" value="${dictTypeName}" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典名称<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="name" name="name" placeholder="请输入字典名称" type="text" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典编码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="code" name="code" placeholder="请输入字典编码" type="text" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上级字典<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="parentId" name="parentId" type="hidden" class="layui-input" lay-verify="required" required/>
<input id="parentName" name="parentName" placeholder="请选择上级字典,如没有请选择顶级" type="text" class="layui-input" lay-verify="required" required readonly="readonly"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input id="sort" name="sort" placeholder="请输入字典排序" type="text" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典描述</label>
<div class="layui-input-block">
<textarea id="description" name="description" placeholder="请输入字典描述" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item text-right">
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>保存</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog" id="backupPage">返回</button>
</div>
</form>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典编码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="code" name="code" placeholder="请输入字典编码" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典名称<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="description" name="name" placeholder="请输入字典名称" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<input name="description" placeholder="请输入描述" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input name="sort" placeholder="请输入排序" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-form-item text-right">
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>保存</button>
</div>
</form>
@}
</div>
@}
\ No newline at end of file
@layout("/common/_container.html",{bg:"bg-white",js:["/assets/modular/system/dict/dict_add_item.js"]}){
<form id="userForm" lay-filter="roleForm" class="layui-form model-form">
<input id="dictTypeId" name="dictTypeId" value="${dictTypeId}" type="hidden" class="form-control">
<div class="layui-form-item">
<label class="layui-form-label">父级字典<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input value="${dictTypeName}" type="text" class="layui-input" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典编码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="code" name="code" placeholder="请输入字典编码" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典名称<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="description" name="name" placeholder="请输入字典名称" type="text" class="layui-input" lay-verify="required" required autocomplete="off"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<input name="description" placeholder="请输入描述" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input name="sort" placeholder="请输入排序" type="text" class="layui-input"/>
</div>
</div>
<div class="layui-form-item text-right">
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>保存</button>
</div>
</form>
@}
@layout("/common/_container.html",{js:["/assets/modular/system/dict/dict_edit.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">表单的示例-添加</span>
</div>
<div class="layui-fluid " style="">
<div class="layui-card">
<div class="layui-card-body">
<form id="dictForm" lay-filter="dictForm" class="layui-form model-form" style="max-width: 700px;margin: 40px auto;">
<input id="dictId" name="dictId" type="hidden"/>
<div class="layui-form-item">
<label class="layui-form-label">字典类型</label>
<div class="layui-input-block">
<input id="dictTypeId" name="dictTypeId" type="hidden" value="${dictTypeId}"/>
<input type="text" class="layui-input white-border" value="${dictTypeName}" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典名称<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="name" name="name" placeholder="请输入字典名称" type="text" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典编码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="code" name="code" placeholder="请输入字典编码" type="text" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">上级字典<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="parentId" name="parentId" type="hidden" class="layui-input" lay-verify="required" required/>
<input id="parentName" name="parentName" placeholder="请选择上级字典,如没有请选择顶级" type="text" class="layui-input" lay-verify="required" required readonly="readonly"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input id="sort" name="sort" placeholder="请输入字典排序" type="text" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典描述</label>
<div class="layui-input-block">
<textarea id="description" name="description" placeholder="请输入字典描述" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-block">
<input id="createTime" name="createTime" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">更新时间</label>
<div class="layui-input-block">
<input id="updateTime" name="updateTime" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">创建人</label>
<div class="layui-input-block">
<input id="createUser" name="createUser" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">修改人</label>
<div class="layui-input-block">
<input id="updateUser" name="updateUser" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item text-right">
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>保存</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog" id="backupPage">返回</button>
</div>
</form>
</div>
</div>
</div>
@}
@layout("/common/_container.html",{js:["/assets/modular/system/dictType/dictType.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">字典类型表管理</span>
</div>
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-sm12 layui-col-md12 layui-col-lg12">
<div class="layui-card">
<div class="layui-card-body">
<div class="layui-form toolbar">
<div class="layui-form-item">
<div class="layui-inline">
<input id="condition" class="layui-input" type="text" placeholder="名称/编码"/>
</div>
<div class="layui-inline">
<select id="systemFlag">
<option value="">字典类型</option>
<option value="Y">系统类型</option>
<option value="N">非系统类型</option>
</select>
</div>
<div class="layui-inline">
<select id="status">
<option value="">状态</option>
<option value="ENABLE">启用</option>
<option value="DISABLE">禁用</option>
</select>
</div>
<div class="layui-inline">
<button id="btnSearch" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
<button id="btnAdd" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加类型</button>
</div>
</div>
</div>
<table class="layui-table" id="dictTypeTable" lay-filter="dictTypeTable"></table>
</div>
</div>
</div>
</div>
</div>
<script type="text/html" id="tableBar">
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
@}
\ No newline at end of file
@layout("/common/_container.html",{js:["/assets/modular/system/dictType/dictType_add.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">添加字典类型</span>
</div>
<div class="layui-fluid " style="">
<div class="layui-card">
<div class="layui-card-body">
<form id="dictTypeForm" lay-filter="dictTypeForm" class="layui-form model-form" style="max-width: 700px;margin: 40px auto;">
<input name="dictTypeId" type="hidden"/>
<div class="layui-form-item">
<label class="layui-form-label">名称<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="name" name="name" placeholder="请输入字典类型名称,例如:状态标识" type="text" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">类型编码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="code" name="code" placeholder="请输入字典类型编码,例如:STATUS" type="text" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否为系统字典<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input type="radio" name="systemFlag" value="Y" title="是">
<input type="radio" name="systemFlag" value="N" title="否" checked="">
</div>
<div class="layui-form-mid layui-word-aux">系统字典与代码中枚举关联,添加后不可修改</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input id="sort" name="sort" placeholder="请输入字典排序" type="text" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典描述</label>
<div class="layui-input-block">
<textarea id="description" name="description" placeholder="请输入字典描述" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item text-right">
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>保存</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog" id="backupPage">返回</button>
</div>
</form>
</div>
</div>
</div>
@}
\ No newline at end of file
@layout("/common/_container.html",{js:["/assets/modular/system/dictType/dictType_edit.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">添加字典类型</span>
</div>
<div class="layui-fluid " style="">
<div class="layui-card">
<div class="layui-card-body">
<form id="dictTypeForm" lay-filter="dictTypeForm" class="layui-form model-form" style="max-width: 700px;margin: 40px auto;">
<input name="dictTypeId" type="hidden"/>
<div class="layui-form-item">
<label class="layui-form-label">名称<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="name" name="name" placeholder="请输入字典类型名称,例如:状态标识" type="text" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">类型编码<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input id="code" name="code" placeholder="请输入字典类型编码,例如:STATUS" type="text" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否为系统字典<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input type="radio" name="systemFlag" value="Y" title="是">
<input type="radio" name="systemFlag" value="N" title="否" checked="">
</div>
<div class="layui-form-mid layui-word-aux">系统字典与代码中枚举关联,添加后不可修改</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input id="sort" name="sort" placeholder="请输入字典排序" type="text" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">字典描述</label>
<div class="layui-input-block">
<textarea id="description" name="description" placeholder="请输入字典描述" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">创建时间</label>
<div class="layui-input-block">
<input id="createTime" name="createTime" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">创建人</label>
<div class="layui-input-block">
<input id="createUser" name="createUser" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">修改时间</label>
<div class="layui-input-block">
<input id="updateTime" name="updateTime" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">修改人</label>
<div class="layui-input-block">
<input id="updateUser" name="updateUser" type="text" class="layui-input white-border" disabled="disabled"/>
</div>
</div>
<div class="layui-form-item text-right">
<button class="layui-btn" lay-filter="btnSubmit" lay-submit>保存</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog" id="backupPage">返回</button>
</div>
</form>
</div>
</div>
</div>
@}
\ No newline at end of file
package cn.stylefeng.guns.system;
import cn.stylefeng.guns.base.BaseJunit;
import cn.stylefeng.guns.modular.system.mapper.DictMapper;
import cn.stylefeng.guns.modular.system.service.DictService;
import org.junit.Assert;
import org.junit.Test;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* 字典服务测试
*
* @author fengshuonan
* @date 2017-04-27 17:05
*/
public class DictTest extends BaseJunit {
@Resource
DictService dictService;
@Resource
DictMapper dictMapper;
@Test
public void deleteTest() {
this.dictService.delteDict(16L);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment