Commit 9e9d0fd8 by yuwei

2.0.0项目初始化

parent 080cfe07
package cn.datax.auth.listener; package cn.datax.auth.listener;
import cn.datax.common.utils.IPUtil;
import cn.datax.common.utils.RequestHolder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent; import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
@Slf4j @Slf4j
@Component @Component
public class AuthenticationFailureEventListener implements ApplicationListener<AbstractAuthenticationFailureEvent> { public class AuthenticationFailureEventListener implements ApplicationListener<AbstractAuthenticationFailureEvent> {
@Override @Override
public void onApplicationEvent(AbstractAuthenticationFailureEvent event) { public void onApplicationEvent(AbstractAuthenticationFailureEvent event) {
log.info("{}登录失败", event.getAuthentication().getPrincipal()); HttpServletRequest httpServletRequest = RequestHolder.getHttpServletRequest();
String ipAddr = IPUtil.getIpAddr(httpServletRequest);
log.info("{}登录失败:地址{}", event.getAuthentication().getPrincipal(), ipAddr);
} }
} }
package cn.datax.auth.listener; package cn.datax.auth.listener;
import cn.datax.common.utils.IPUtil;
import cn.datax.common.utils.RequestHolder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent; import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
@Slf4j @Slf4j
@Component @Component
public class AuthenticationSuccessEventListener implements ApplicationListener<AuthenticationSuccessEvent> { public class AuthenticationSuccessEventListener implements ApplicationListener<AuthenticationSuccessEvent> {
...@@ -12,7 +16,9 @@ public class AuthenticationSuccessEventListener implements ApplicationListener<A ...@@ -12,7 +16,9 @@ public class AuthenticationSuccessEventListener implements ApplicationListener<A
@Override @Override
public void onApplicationEvent(AuthenticationSuccessEvent event) { public void onApplicationEvent(AuthenticationSuccessEvent event) {
if(!event.getSource().getClass().getName().equals("org.springframework.security.authentication.UsernamePasswordAuthenticationToken")){ if(!event.getSource().getClass().getName().equals("org.springframework.security.authentication.UsernamePasswordAuthenticationToken")){
log.info("{}登录成功", event.getAuthentication().getPrincipal()); HttpServletRequest httpServletRequest = RequestHolder.getHttpServletRequest();
String ipAddr = IPUtil.getIpAddr(httpServletRequest);
log.info("{}登录成功:地址{}", event.getAuthentication().getPrincipal(), ipAddr);
} }
} }
} }
...@@ -96,8 +96,8 @@ public class ${table.controllerName} { ...@@ -96,8 +96,8 @@ public class ${table.controllerName} {
@ApiImplicitParam(name = "${classNameLower}", value = "详细实体${classNameLower}", required = true, dataType = "${className}Dto") @ApiImplicitParam(name = "${classNameLower}", value = "详细实体${classNameLower}", required = true, dataType = "${className}Dto")
@PostMapping() @PostMapping()
public R save${className}(@RequestBody @Validated({ValidationGroups.Insert.class}) ${className}Dto ${classNameLower}) { public R save${className}(@RequestBody @Validated({ValidationGroups.Insert.class}) ${className}Dto ${classNameLower}) {
${classNameLower}Service.save${className}(${classNameLower}); ${entity} ${classNameLower}Entity = ${classNameLower}Service.save${className}(${classNameLower});
return R.ok(); return R.ok().setData(${classNameLower}Mapper.toVO(${classNameLower}Entity));
} }
/** /**
...@@ -112,8 +112,8 @@ public class ${table.controllerName} { ...@@ -112,8 +112,8 @@ public class ${table.controllerName} {
}) })
@PutMapping("/{id}") @PutMapping("/{id}")
public R update${className}(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) ${className}Dto ${classNameLower}) { public R update${className}(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) ${className}Dto ${classNameLower}) {
${classNameLower}Service.update${className}(${classNameLower}); ${entity} ${classNameLower}Entity = ${classNameLower}Service.update${className}(${classNameLower});
return R.ok(); return R.ok().setData(${classNameLower}Mapper.toVO(${classNameLower}Entity));
} }
/** /**
...@@ -128,4 +128,17 @@ public class ${table.controllerName} { ...@@ -128,4 +128,17 @@ public class ${table.controllerName} {
${classNameLower}Service.delete${className}ById(id); ${classNameLower}Service.delete${className}ById(id);
return R.ok(); return R.ok();
} }
/**
* 批量删除
* @param ids
* @return
*/
@ApiOperation(value = "批量删除角色", notes = "根据url的ids来批量删除对象")
@ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
@DeleteMapping("/batch/{ids}")
public R delete${className}Batch(@PathVariable List<String> ids) {
${classNameLower}Service.delete${className}Batch(ids);
return R.ok();
}
} }
...@@ -4,6 +4,8 @@ import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end. ...@@ -4,6 +4,8 @@ import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.
import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.dto.${className}Dto; import ${cfg.PackageParent}#if(${package.ModuleName}).${package.ModuleName}#end.api.dto.${className}Dto;
import ${superServiceClassPackage}; import ${superServiceClassPackage};
import java.util.List;
/** /**
* <p> * <p>
* $!{table.comment} 服务类 * $!{table.comment} 服务类
...@@ -14,11 +16,13 @@ import ${superServiceClassPackage}; ...@@ -14,11 +16,13 @@ import ${superServiceClassPackage};
*/ */
public interface ${table.serviceName} extends ${superServiceClass}<${entity}> { public interface ${table.serviceName} extends ${superServiceClass}<${entity}> {
void save${className}(${className}Dto ${classNameLower}); ${entity} save${className}(${className}Dto ${classNameLower});
void update${className}(${className}Dto ${classNameLower}); ${entity} update${className}(${className}Dto ${classNameLower});
${entity} get${className}ById(String id); ${entity} get${className}ById(String id);
void delete${className}ById(String id); void delete${className}ById(String id);
void delete${className}Batch(List<String> ids);
} }
...@@ -31,16 +31,18 @@ public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.m ...@@ -31,16 +31,18 @@ public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.m
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void save${className}(${className}Dto ${classNameLower}Dto) { public ${entity} save${className}(${className}Dto ${classNameLower}Dto) {
${entity} ${classNameLower} = ${classNameLower}Mapper.toEntity(${classNameLower}Dto); ${entity} ${classNameLower} = ${classNameLower}Mapper.toEntity(${classNameLower}Dto);
${classNameLower}Dao.insert(${classNameLower}); ${classNameLower}Dao.insert(${classNameLower});
return ${classNameLower};
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update${className}(${className}Dto ${classNameLower}Dto) { public ${entity} update${className}(${className}Dto ${classNameLower}Dto) {
${entity} ${classNameLower} = ${classNameLower}Mapper.toEntity(${classNameLower}Dto); ${entity} ${classNameLower} = ${classNameLower}Mapper.toEntity(${classNameLower}Dto);
${classNameLower}Dao.updateById(${classNameLower}); ${classNameLower}Dao.updateById(${classNameLower});
return ${classNameLower};
} }
@Override @Override
...@@ -54,4 +56,10 @@ public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.m ...@@ -54,4 +56,10 @@ public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.m
public void delete${className}ById(String id) { public void delete${className}ById(String id) {
${classNameLower}Dao.deleteById(id); ${classNameLower}Dao.deleteById(id);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void delete${className}Batch(List<String> ids) {
${classNameLower}Dao.deleteBatchIds(ids);
}
} }
...@@ -18,7 +18,7 @@ import java.io.Serializable; ...@@ -18,7 +18,7 @@ import java.io.Serializable;
*/ */
@ApiModel(value = "系统参数配置信息表Model") @ApiModel(value = "系统参数配置信息表Model")
@Data @Data
public class SysConfigDto implements Serializable { public class ConfigDto implements Serializable {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
......
...@@ -20,7 +20,7 @@ import lombok.experimental.Accessors; ...@@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@TableName("sys_config") @TableName("sys_config")
public class SysConfigEntity extends BaseEntity { public class ConfigEntity extends BaseEntity {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
......
...@@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode; ...@@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class SysConfigQuery extends BaseQueryParams { public class ConfigQuery extends BaseQueryParams {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
} }
...@@ -18,6 +18,10 @@ public class DictItemQuery extends BaseQueryParams { ...@@ -18,6 +18,10 @@ public class DictItemQuery extends BaseQueryParams {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
/**
* 字典id
*/
private String dictId;
private String itemText; private String itemText;
private String itemValue; private String itemValue;
} }
...@@ -11,10 +11,14 @@ public class UserQuery extends BaseQueryParams { ...@@ -11,10 +11,14 @@ public class UserQuery extends BaseQueryParams {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
/** /**
* 用户名 * 用户名
*/ */
private String username; private String username;
/** /**
* 用户昵称
*/
private String nickname;
/**
* 部门ID * 部门ID
*/ */
private String deptId; private String deptId;
......
...@@ -16,7 +16,7 @@ import java.time.LocalDateTime; ...@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
* @since 2020-05-19 * @since 2020-05-19
*/ */
@Data @Data
public class SysConfigVo implements Serializable { public class ConfigVo implements Serializable {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
......
...@@ -3,12 +3,12 @@ package cn.datax.service.system.controller; ...@@ -3,12 +3,12 @@ package cn.datax.service.system.controller;
import cn.datax.common.core.JsonPage; import cn.datax.common.core.JsonPage;
import cn.datax.common.core.R; import cn.datax.common.core.R;
import cn.datax.common.validate.ValidationGroups; import cn.datax.common.validate.ValidationGroups;
import cn.datax.service.system.api.dto.SysConfigDto; import cn.datax.service.system.api.dto.ConfigDto;
import cn.datax.service.system.api.entity.SysConfigEntity; import cn.datax.service.system.api.entity.ConfigEntity;
import cn.datax.service.system.api.vo.SysConfigVo; import cn.datax.service.system.api.vo.ConfigVo;
import cn.datax.service.system.api.query.SysConfigQuery; import cn.datax.service.system.api.query.ConfigQuery;
import cn.datax.service.system.mapstruct.SysConfigMapper; import cn.datax.service.system.mapstruct.ConfigMapper;
import cn.datax.service.system.service.SysConfigService; import cn.datax.service.system.service.ConfigService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -35,14 +35,14 @@ import java.util.stream.Collectors; ...@@ -35,14 +35,14 @@ import java.util.stream.Collectors;
*/ */
@Api(tags = {"系统参数配置信息表"}) @Api(tags = {"系统参数配置信息表"})
@RestController @RestController
@RequestMapping("/sysConfigs") @RequestMapping("/configs")
public class SysConfigController extends BaseController { public class ConfigController extends BaseController {
@Autowired @Autowired
private SysConfigService sysConfigService; private ConfigService configService;
@Autowired @Autowired
private SysConfigMapper sysConfigMapper; private ConfigMapper configMapper;
/** /**
* 通过ID查询信息 * 通过ID查询信息
...@@ -53,57 +53,57 @@ public class SysConfigController extends BaseController { ...@@ -53,57 +53,57 @@ public class SysConfigController extends BaseController {
@ApiOperation(value = "获取详细信息", notes = "根据url的id来获取详细信息") @ApiOperation(value = "获取详细信息", notes = "根据url的id来获取详细信息")
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path") @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@GetMapping("/{id}") @GetMapping("/{id}")
public R getSysConfigById(@PathVariable String id) { public R getConfigById(@PathVariable String id) {
SysConfigEntity sysConfigEntity = sysConfigService.getSysConfigById(id); ConfigEntity configEntity = configService.getConfigById(id);
return R.ok().setData(sysConfigMapper.toVO(sysConfigEntity)); return R.ok().setData(configMapper.toVO(configEntity));
} }
/** /**
* 分页查询信息 * 分页查询信息
* *
* @param sysConfigQuery * @param configQuery
* @return * @return
*/ */
@ApiOperation(value = "分页查询", notes = "") @ApiOperation(value = "分页查询", notes = "")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "sysConfigQuery", value = "查询实体sysConfigQuery", required = true, dataTypeClass = SysConfigQuery.class) @ApiImplicitParam(name = "configQuery", value = "查询实体configQuery", required = true, dataTypeClass = ConfigQuery.class)
}) })
@GetMapping("/page") @GetMapping("/page")
public R getSysConfigPage(SysConfigQuery sysConfigQuery) { public R getSysConfigPage(ConfigQuery configQuery) {
QueryWrapper<SysConfigEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<ConfigEntity> queryWrapper = new QueryWrapper<>();
IPage<SysConfigEntity> page = sysConfigService.page(new Page<>(sysConfigQuery.getPageNum(), sysConfigQuery.getPageSize()), queryWrapper); IPage<ConfigEntity> page = configService.page(new Page<>(configQuery.getPageNum(), configQuery.getPageSize()), queryWrapper);
List<SysConfigVo> collect = page.getRecords().stream().map(sysConfigMapper::toVO).collect(Collectors.toList()); List<ConfigVo> collect = page.getRecords().stream().map(configMapper::toVO).collect(Collectors.toList());
JsonPage<SysConfigVo> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect); JsonPage<ConfigVo> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect);
return R.ok().setData(jsonPage); return R.ok().setData(jsonPage);
} }
/** /**
* 添加 * 添加
* @param sysConfig * @param config
* @return * @return
*/ */
@ApiOperation(value = "添加信息", notes = "根据sysConfig对象添加信息") @ApiOperation(value = "添加信息", notes = "根据config对象添加信息")
@ApiImplicitParam(name = "sysConfig", value = "详细实体sysConfig", required = true, dataType = "SysConfigDto") @ApiImplicitParam(name = "config", value = "详细实体config", required = true, dataType = "ConfigDto")
@PostMapping() @PostMapping()
public R saveSysConfig(@RequestBody @Validated({ValidationGroups.Insert.class}) SysConfigDto sysConfig) { public R saveSysConfig(@RequestBody @Validated({ValidationGroups.Insert.class}) ConfigDto config) {
sysConfigService.saveSysConfig(sysConfig); ConfigEntity configEntity = configService.saveConfig(config);
return R.ok(); return R.ok().setData(configMapper.toVO(configEntity));
} }
/** /**
* 修改 * 修改
* @param sysConfig * @param config
* @return * @return
*/ */
@ApiOperation(value = "修改信息", notes = "根据url的id来指定修改对象,并根据传过来的信息来修改详细信息") @ApiOperation(value = "修改信息", notes = "根据url的id来指定修改对象,并根据传过来的信息来修改详细信息")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path"), @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path"),
@ApiImplicitParam(name = "sysConfig", value = "详细实体sysConfig", required = true, dataType = "SysConfigDto") @ApiImplicitParam(name = "config", value = "详细实体config", required = true, dataType = "ConfigDto")
}) })
@PutMapping("/{id}") @PutMapping("/{id}")
public R updateSysConfig(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) SysConfigDto sysConfig) { public R updateSysConfig(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) ConfigDto config) {
sysConfigService.updateSysConfig(sysConfig); ConfigEntity configEntity = configService.updateConfig(config);
return R.ok(); return R.ok().setData(configMapper.toVO(configEntity));
} }
/** /**
...@@ -115,7 +115,15 @@ public class SysConfigController extends BaseController { ...@@ -115,7 +115,15 @@ public class SysConfigController extends BaseController {
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path") @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
public R deleteSysConfigById(@PathVariable String id) { public R deleteSysConfigById(@PathVariable String id) {
sysConfigService.deleteSysConfigById(id); configService.deleteConfigById(id);
return R.ok();
}
@ApiOperation(value = "批量删除", notes = "根据url的ids来批量删除对象")
@ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
@DeleteMapping("/batch/{ids}")
public R deletePostBatch(@PathVariable List<String> ids) {
configService.deleteConfigBatch(ids);
return R.ok(); return R.ok();
} }
} }
...@@ -10,6 +10,7 @@ import cn.datax.service.system.api.vo.DictVo; ...@@ -10,6 +10,7 @@ import cn.datax.service.system.api.vo.DictVo;
import cn.datax.service.system.api.query.DictQuery; import cn.datax.service.system.api.query.DictQuery;
import cn.datax.service.system.mapstruct.DictMapper; import cn.datax.service.system.mapstruct.DictMapper;
import cn.datax.service.system.service.DictService; import cn.datax.service.system.service.DictService;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -72,6 +73,8 @@ public class DictController extends BaseController { ...@@ -72,6 +73,8 @@ public class DictController extends BaseController {
@GetMapping("/page") @GetMapping("/page")
public R getDictPage(DictQuery dictQuery) { public R getDictPage(DictQuery dictQuery) {
QueryWrapper<DictEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<DictEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StrUtil.isNotBlank(dictQuery.getDictName()), "dict_name", dictQuery.getDictName());
queryWrapper.like(StrUtil.isNotBlank(dictQuery.getDictCode()), "dict_code", dictQuery.getDictCode());
IPage<DictEntity> page = dictService.page(new Page<>(dictQuery.getPageNum(), dictQuery.getPageSize()), queryWrapper); IPage<DictEntity> page = dictService.page(new Page<>(dictQuery.getPageNum(), dictQuery.getPageSize()), queryWrapper);
List<DictVo> collect = page.getRecords().stream().map(dictMapper::toVO).collect(Collectors.toList()); List<DictVo> collect = page.getRecords().stream().map(dictMapper::toVO).collect(Collectors.toList());
JsonPage<DictVo> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect); JsonPage<DictVo> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect);
...@@ -87,8 +90,8 @@ public class DictController extends BaseController { ...@@ -87,8 +90,8 @@ public class DictController extends BaseController {
@ApiImplicitParam(name = "dict", value = "详细实体dict", required = true, dataType = "DictDto") @ApiImplicitParam(name = "dict", value = "详细实体dict", required = true, dataType = "DictDto")
@PostMapping() @PostMapping()
public R saveDict(@RequestBody @Validated({ValidationGroups.Insert.class}) DictDto dict) { public R saveDict(@RequestBody @Validated({ValidationGroups.Insert.class}) DictDto dict) {
dictService.saveDict(dict); DictEntity dictEntity = dictService.saveDict(dict);
return R.ok(); return R.ok().setData(dictMapper.toVO(dictEntity));
} }
/** /**
...@@ -103,8 +106,8 @@ public class DictController extends BaseController { ...@@ -103,8 +106,8 @@ public class DictController extends BaseController {
}) })
@PutMapping("/{id}") @PutMapping("/{id}")
public R updateDict(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) DictDto dict) { public R updateDict(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) DictDto dict) {
dictService.updateDict(dict); DictEntity dictEntity = dictService.updateDict(dict);
return R.ok(); return R.ok().setData(dictMapper.toVO(dictEntity));
} }
/** /**
...@@ -120,6 +123,14 @@ public class DictController extends BaseController { ...@@ -120,6 +123,14 @@ public class DictController extends BaseController {
return R.ok(); return R.ok();
} }
@ApiOperation(value = "批量删除", notes = "根据url的ids来批量删除对象")
@ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
@DeleteMapping("/batch/{ids}")
public R deleteDictBatch(@PathVariable List<String> ids) {
dictService.deleteDictBatch(ids);
return R.ok();
}
/** /**
* 获取字典项 * 获取字典项
* *
......
...@@ -9,6 +9,7 @@ import cn.datax.service.system.api.vo.DictItemVo; ...@@ -9,6 +9,7 @@ import cn.datax.service.system.api.vo.DictItemVo;
import cn.datax.service.system.api.query.DictItemQuery; import cn.datax.service.system.api.query.DictItemQuery;
import cn.datax.service.system.mapstruct.DictItemMapper; import cn.datax.service.system.mapstruct.DictItemMapper;
import cn.datax.service.system.service.DictItemService; import cn.datax.service.system.service.DictItemService;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -71,6 +72,9 @@ public class DictItemController extends BaseController { ...@@ -71,6 +72,9 @@ public class DictItemController extends BaseController {
@GetMapping("/page") @GetMapping("/page")
public R getDictItemPage(DictItemQuery dictItemQuery) { public R getDictItemPage(DictItemQuery dictItemQuery) {
QueryWrapper<DictItemEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<DictItemEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StrUtil.isNotBlank(dictItemQuery.getItemText()), "item_text", dictItemQuery.getItemText());
queryWrapper.like(StrUtil.isNotBlank(dictItemQuery.getItemValue()), "item_value", dictItemQuery.getItemValue());
queryWrapper.eq(StrUtil.isNotBlank(dictItemQuery.getDictId()), "dict_id", dictItemQuery.getDictId());
IPage<DictItemEntity> page = dictItemService.page(new Page<>(dictItemQuery.getPageNum(), dictItemQuery.getPageSize()), queryWrapper); IPage<DictItemEntity> page = dictItemService.page(new Page<>(dictItemQuery.getPageNum(), dictItemQuery.getPageSize()), queryWrapper);
List<DictItemVo> collect = page.getRecords().stream().map(dictItemMapper::toVO).collect(Collectors.toList()); List<DictItemVo> collect = page.getRecords().stream().map(dictItemMapper::toVO).collect(Collectors.toList());
JsonPage<DictItemVo> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect); JsonPage<DictItemVo> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect);
...@@ -86,8 +90,8 @@ public class DictItemController extends BaseController { ...@@ -86,8 +90,8 @@ public class DictItemController extends BaseController {
@ApiImplicitParam(name = "dictItem", value = "详细实体dictItem", required = true, dataType = "DictItemDto") @ApiImplicitParam(name = "dictItem", value = "详细实体dictItem", required = true, dataType = "DictItemDto")
@PostMapping() @PostMapping()
public R saveDictItem(@RequestBody @Validated({ValidationGroups.Insert.class}) DictItemDto dictItem) { public R saveDictItem(@RequestBody @Validated({ValidationGroups.Insert.class}) DictItemDto dictItem) {
dictItemService.saveDictItem(dictItem); DictItemEntity dictItemEntity = dictItemService.saveDictItem(dictItem);
return R.ok(); return R.ok().setData(dictItemMapper.toVO(dictItemEntity));
} }
/** /**
...@@ -102,8 +106,8 @@ public class DictItemController extends BaseController { ...@@ -102,8 +106,8 @@ public class DictItemController extends BaseController {
}) })
@PutMapping("/{id}") @PutMapping("/{id}")
public R updateDictItem(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) DictItemDto dictItem) { public R updateDictItem(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) DictItemDto dictItem) {
dictItemService.updateDictItem(dictItem); DictItemEntity dictItemEntity = dictItemService.updateDictItem(dictItem);
return R.ok(); return R.ok().setData(dictItemMapper.toVO(dictItemEntity));
} }
/** /**
...@@ -118,4 +122,12 @@ public class DictItemController extends BaseController { ...@@ -118,4 +122,12 @@ public class DictItemController extends BaseController {
dictItemService.deleteDictItemById(id); dictItemService.deleteDictItemById(id);
return R.ok(); return R.ok();
} }
@ApiOperation(value = "批量删除", notes = "根据url的ids来批量删除对象")
@ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
@DeleteMapping("/batch/{ids}")
public R deleteDictItemBatch(@PathVariable List<String> ids) {
dictItemService.deleteDictItemBatch(ids);
return R.ok();
}
} }
...@@ -70,6 +70,7 @@ public class UserController extends BaseController { ...@@ -70,6 +70,7 @@ public class UserController extends BaseController {
public R getUserPage(UserQuery userQuery) { public R getUserPage(UserQuery userQuery) {
QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StrUtil.isNotBlank(userQuery.getUsername()), "username", userQuery.getUsername()); queryWrapper.like(StrUtil.isNotBlank(userQuery.getUsername()), "username", userQuery.getUsername());
queryWrapper.like(StrUtil.isNotBlank(userQuery.getNickname()), "nickname", userQuery.getNickname());
queryWrapper.eq(StrUtil.isNotBlank(userQuery.getDeptId()), "dept_id", userQuery.getDeptId()); queryWrapper.eq(StrUtil.isNotBlank(userQuery.getDeptId()), "dept_id", userQuery.getDeptId());
if(CollUtil.isNotEmpty(userQuery.getOrderList())){ if(CollUtil.isNotEmpty(userQuery.getOrderList())){
userQuery.getOrderList().stream().forEach(orderItem -> { userQuery.getOrderList().stream().forEach(orderItem -> {
......
package cn.datax.service.system.dao; package cn.datax.service.system.dao;
import cn.datax.common.base.BaseDao; import cn.datax.common.base.BaseDao;
import cn.datax.service.system.api.entity.SysConfigEntity; import cn.datax.service.system.api.entity.ConfigEntity;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
/** /**
...@@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.Mapper; ...@@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.Mapper;
* @since 2020-05-19 * @since 2020-05-19
*/ */
@Mapper @Mapper
public interface SysConfigDao extends BaseDao<SysConfigEntity> { public interface ConfigDao extends BaseDao<ConfigEntity> {
} }
package cn.datax.service.system.mapstruct; package cn.datax.service.system.mapstruct;
import cn.datax.common.mapstruct.EntityMapper; import cn.datax.common.mapstruct.EntityMapper;
import cn.datax.service.system.api.dto.SysConfigDto; import cn.datax.service.system.api.dto.ConfigDto;
import cn.datax.service.system.api.entity.SysConfigEntity; import cn.datax.service.system.api.entity.ConfigEntity;
import cn.datax.service.system.api.vo.SysConfigVo; import cn.datax.service.system.api.vo.ConfigVo;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
/** /**
...@@ -15,6 +15,6 @@ import org.mapstruct.Mapper; ...@@ -15,6 +15,6 @@ import org.mapstruct.Mapper;
* @since 2020-05-19 * @since 2020-05-19
*/ */
@Mapper(componentModel = "spring") @Mapper(componentModel = "spring")
public interface SysConfigMapper extends EntityMapper<SysConfigDto, SysConfigEntity, SysConfigVo> { public interface ConfigMapper extends EntityMapper<ConfigDto, ConfigEntity, ConfigVo> {
} }
package cn.datax.service.system.service; package cn.datax.service.system.service;
import cn.datax.service.system.api.entity.SysConfigEntity; import cn.datax.service.system.api.dto.ConfigDto;
import cn.datax.service.system.api.dto.SysConfigDto; import cn.datax.service.system.api.entity.ConfigEntity;
import cn.datax.common.base.BaseService; import cn.datax.common.base.BaseService;
import java.util.List;
/** /**
* <p> * <p>
* 系统参数配置信息表 服务类 * 系统参数配置信息表 服务类
...@@ -12,13 +14,15 @@ import cn.datax.common.base.BaseService; ...@@ -12,13 +14,15 @@ import cn.datax.common.base.BaseService;
* @author yuwei * @author yuwei
* @since 2020-05-19 * @since 2020-05-19
*/ */
public interface SysConfigService extends BaseService<SysConfigEntity> { public interface ConfigService extends BaseService<ConfigEntity> {
ConfigEntity saveConfig(ConfigDto sysConfig);
void saveSysConfig(SysConfigDto sysConfig); ConfigEntity updateConfig(ConfigDto sysConfig);
void updateSysConfig(SysConfigDto sysConfig); ConfigEntity getConfigById(String id);
SysConfigEntity getSysConfigById(String id); void deleteConfigById(String id);
void deleteSysConfigById(String id); void deleteConfigBatch(List<String> ids);
} }
...@@ -4,6 +4,8 @@ import cn.datax.service.system.api.entity.DictItemEntity; ...@@ -4,6 +4,8 @@ import cn.datax.service.system.api.entity.DictItemEntity;
import cn.datax.service.system.api.dto.DictItemDto; import cn.datax.service.system.api.dto.DictItemDto;
import cn.datax.common.base.BaseService; import cn.datax.common.base.BaseService;
import java.util.List;
/** /**
* <p> * <p>
* 字典项信息表 服务类 * 字典项信息表 服务类
...@@ -14,9 +16,11 @@ import cn.datax.common.base.BaseService; ...@@ -14,9 +16,11 @@ import cn.datax.common.base.BaseService;
*/ */
public interface DictItemService extends BaseService<DictItemEntity> { public interface DictItemService extends BaseService<DictItemEntity> {
void saveDictItem(DictItemDto dictItem); DictItemEntity saveDictItem(DictItemDto dictItem);
void updateDictItem(DictItemDto dictItem); DictItemEntity updateDictItem(DictItemDto dictItem);
void deleteDictItemById(String id); void deleteDictItemById(String id);
void deleteDictItemBatch(List<String> ids);
} }
...@@ -4,6 +4,8 @@ import cn.datax.service.system.api.entity.DictEntity; ...@@ -4,6 +4,8 @@ import cn.datax.service.system.api.entity.DictEntity;
import cn.datax.service.system.api.dto.DictDto; import cn.datax.service.system.api.dto.DictDto;
import cn.datax.common.base.BaseService; import cn.datax.common.base.BaseService;
import java.util.List;
/** /**
* <p> * <p>
* 字典编码信息表 服务类 * 字典编码信息表 服务类
...@@ -14,11 +16,13 @@ import cn.datax.common.base.BaseService; ...@@ -14,11 +16,13 @@ import cn.datax.common.base.BaseService;
*/ */
public interface DictService extends BaseService<DictEntity> { public interface DictService extends BaseService<DictEntity> {
void saveDict(DictDto dict); DictEntity saveDict(DictDto dict);
void updateDict(DictDto dict); DictEntity updateDict(DictDto dict);
void deleteDictById(String id); void deleteDictById(String id);
void deleteDictBatch(List<String> ids);
void refreshDict(); void refreshDict();
} }
package cn.datax.service.system.service.impl; package cn.datax.service.system.service.impl;
import cn.datax.service.system.api.entity.SysConfigEntity; import cn.datax.service.system.api.dto.ConfigDto;
import cn.datax.service.system.api.dto.SysConfigDto; import cn.datax.service.system.api.entity.ConfigEntity;
import cn.datax.service.system.service.SysConfigService; import cn.datax.service.system.service.ConfigService;
import cn.datax.service.system.mapstruct.SysConfigMapper; import cn.datax.service.system.mapstruct.ConfigMapper;
import cn.datax.service.system.dao.SysConfigDao; import cn.datax.service.system.dao.ConfigDao;
import cn.datax.common.base.BaseServiceImpl; import cn.datax.common.base.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* <p> * <p>
* 系统参数配置信息表 服务实现类 * 系统参数配置信息表 服务实现类
...@@ -21,37 +23,45 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -21,37 +23,45 @@ import org.springframework.transaction.annotation.Transactional;
*/ */
@Service @Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class SysConfigServiceImpl extends BaseServiceImpl<SysConfigDao, SysConfigEntity> implements SysConfigService { public class ConfigServiceImpl extends BaseServiceImpl<ConfigDao, ConfigEntity> implements ConfigService {
@Autowired @Autowired
private SysConfigDao sysConfigDao; private ConfigDao configDao;
@Autowired @Autowired
private SysConfigMapper sysConfigMapper; private ConfigMapper configMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveSysConfig(SysConfigDto sysConfigDto) { public ConfigEntity saveConfig(ConfigDto sysConfigDto) {
SysConfigEntity sysConfig = sysConfigMapper.toEntity(sysConfigDto); ConfigEntity config = configMapper.toEntity(sysConfigDto);
sysConfigDao.insert(sysConfig); configDao.insert(config);
return config;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateSysConfig(SysConfigDto sysConfigDto) { public ConfigEntity updateConfig(ConfigDto sysConfigDto) {
SysConfigEntity sysConfig = sysConfigMapper.toEntity(sysConfigDto); ConfigEntity config = configMapper.toEntity(sysConfigDto);
sysConfigDao.updateById(sysConfig); configDao.updateById(config);
return config;
} }
@Override @Override
public SysConfigEntity getSysConfigById(String id) { public ConfigEntity getConfigById(String id) {
SysConfigEntity sysConfigEntity = super.getById(id); ConfigEntity configEntity = super.getById(id);
return sysConfigEntity; return configEntity;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteConfigById(String id) {
configDao.deleteById(id);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deleteSysConfigById(String id) { public void deleteConfigBatch(List<String> ids) {
sysConfigDao.deleteById(id); configDao.deleteBatchIds(ids);
} }
} }
...@@ -11,6 +11,8 @@ import org.springframework.stereotype.Service; ...@@ -11,6 +11,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* <p> * <p>
* 字典项信息表 服务实现类 * 字典项信息表 服务实现类
...@@ -31,16 +33,18 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemDao, DictItemEn ...@@ -31,16 +33,18 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemDao, DictItemEn
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveDictItem(DictItemDto dictItemDto) { public DictItemEntity saveDictItem(DictItemDto dictItemDto) {
DictItemEntity dictItem = dictItemMapper.toEntity(dictItemDto); DictItemEntity dictItem = dictItemMapper.toEntity(dictItemDto);
dictItemDao.insert(dictItem); dictItemDao.insert(dictItem);
return dictItem;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateDictItem(DictItemDto dictItemDto) { public DictItemEntity updateDictItem(DictItemDto dictItemDto) {
DictItemEntity dictItem = dictItemMapper.toEntity(dictItemDto); DictItemEntity dictItem = dictItemMapper.toEntity(dictItemDto);
dictItemDao.updateById(dictItem); dictItemDao.updateById(dictItem);
return dictItem;
} }
@Override @Override
...@@ -48,4 +52,10 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemDao, DictItemEn ...@@ -48,4 +52,10 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemDao, DictItemEn
public void deleteDictItemById(String id) { public void deleteDictItemById(String id) {
dictItemDao.deleteById(id); dictItemDao.deleteById(id);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDictItemBatch(List<String> ids) {
dictItemDao.deleteBatchIds(ids);
}
} }
...@@ -40,20 +40,22 @@ public class DictServiceImpl extends BaseServiceImpl<DictDao, DictEntity> implem ...@@ -40,20 +40,22 @@ public class DictServiceImpl extends BaseServiceImpl<DictDao, DictEntity> implem
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveDict(DictDto dictDto) { public DictEntity saveDict(DictDto dictDto) {
DictEntity dict = dictMapper.toEntity(dictDto); DictEntity dict = dictMapper.toEntity(dictDto);
int n = dictDao.selectCount(Wrappers.<DictEntity>lambdaQuery().eq(DictEntity::getDictCode, dict.getDictCode())); int n = dictDao.selectCount(Wrappers.<DictEntity>lambdaQuery().eq(DictEntity::getDictCode, dict.getDictCode()));
if(n > 0){ if(n > 0){
throw new DataException("该字典编码已存在"); throw new DataException("该字典编码已存在");
} }
dictDao.insert(dict); dictDao.insert(dict);
return dict;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateDict(DictDto dictDto) { public DictEntity updateDict(DictDto dictDto) {
DictEntity dict = dictMapper.toEntity(dictDto); DictEntity dict = dictMapper.toEntity(dictDto);
dictDao.updateById(dict); dictDao.updateById(dict);
return dict;
} }
@Override @Override
...@@ -63,6 +65,12 @@ public class DictServiceImpl extends BaseServiceImpl<DictDao, DictEntity> implem ...@@ -63,6 +65,12 @@ public class DictServiceImpl extends BaseServiceImpl<DictDao, DictEntity> implem
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void deleteDictBatch(List<String> ids) {
dictDao.deleteBatchIds(ids);
}
@Override
public void refreshDict() { public void refreshDict() {
String key = "data:system:dicts"; String key = "data:system:dicts";
Boolean hasKey = redisService.hasKey(key); Boolean hasKey = redisService.hasKey(key);
......
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.datax.service.system.dao.SysConfigDao"> <mapper namespace="cn.datax.service.system.dao.ConfigDao">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.datax.service.system.api.entity.SysConfigEntity"> <resultMap id="BaseResultMap" type="cn.datax.service.system.api.entity.ConfigEntity">
<result column="id" property="id" /> <result column="id" property="id" />
<result column="status" property="status" /> <result column="status" property="status" />
<result column="create_by" property="createBy" /> <result column="create_by" property="createBy" />
......
import request from '@/utils/request'
export function pageConfig (data) {
return request({
url: '/system/configs/page',
method: 'get',
params: data
})
}
export function getConfig (id) {
return request({
url: '/system/configs/' + id,
method: 'get'
})
}
export function delConfig (id) {
return request({
url: '/system/configs/' + id,
method: 'delete'
})
}
export function delConfigs (ids) {
return request({
url: '/system/configs/batch/' + ids,
method: 'delete'
})
}
export function addConfig (data) {
return request({
url: '/system/configs',
method: 'post',
data: data
})
}
export function updateConfig (data) {
return request({
url: '/system/configs/' + data.id,
method: 'put',
data: data
})
}
import request from '@/utils/request' import request from '@/utils/request'
// 查询字典数据详细 // 查询字典数据详细
export function getDicts(dictCode) { export function getDicts (dictCode) {
return request({ return request({
url: '/system/dicts/code/' + dictCode, url: '/system/dicts/code/' + dictCode,
method: 'get' method: 'get'
}) })
} }
export function pageDict (data) {
return request({
url: '/system/dicts/page',
method: 'get',
params: data
})
}
export function getDict (id) {
return request({
url: '/system/dicts/' + id,
method: 'get'
})
}
export function delDict (id) {
return request({
url: '/system/dicts/' + id,
method: 'delete'
})
}
export function delDicts (ids) {
return request({
url: '/system/dicts/batch/' + ids,
method: 'delete'
})
}
export function addDict (data) {
return request({
url: '/system/dicts',
method: 'post',
data: data
})
}
export function updateDict (data) {
return request({
url: '/system/dicts/' + data.id,
method: 'put',
data: data
})
}
export function pageDictItem (data) {
return request({
url: '/system/dict/items/page',
method: 'get',
params: data
})
}
export function getDictItem (id) {
return request({
url: '/system/dict/items/' + id,
method: 'get'
})
}
export function delDictItem (id) {
return request({
url: '/system/dict/items/' + id,
method: 'delete'
})
}
export function delDictItems (ids) {
return request({
url: '/system/dict/items/batch/' + ids,
method: 'delete'
})
}
export function addDictItem (data) {
return request({
url: '/system/dict/items',
method: 'post',
data: data
})
}
export function updateDictItem (data) {
return request({
url: '/system/dict/items/' + data.id,
method: 'put',
data: data
})
}
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm">保存</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="参数名称" prop="configName">
<el-input v-model="form.configName" placeholder="请输入参数名称" />
</el-form-item>
<el-form-item label="参数键名" prop="configKey">
<el-input v-model="form.configKey" placeholder="请输入参数键名" />
</el-form-item>
<el-form-item label="参数键值" prop="configValue">
<el-input v-model="form.configValue" placeholder="请输入参数键值" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { addConfig } from '@/api/system/config'
export default {
name: 'ConfigAdd',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '参数新增',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 表单参数
form: {
status: '1'
},
// 表单校验
rules: {
configName: [
{ required: true, message: "参数名称不能为空", trigger: "blur" }
],
configKey: [
{ required: true, message: "参数键名不能为空", trigger: "blur" }
],
configValue: [
{ required: true, message: "参数键值不能为空", trigger: "blur" }
]
},
// 状态数据字典
statusOptions: []
}
},
created () {
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
addConfig(this.form).then(response => {
if (response.success) {
this.$message.success("保存成功")
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error("保存失败")
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" label-width="80px" disabled>
<el-form-item label="参数名称" prop="configName">
<el-input v-model="form.configName" placeholder="请输入参数名称" />
</el-form-item>
<el-form-item label="参数键名" prop="configKey">
<el-input v-model="form.configKey" placeholder="请输入参数键名" />
</el-form-item>
<el-form-item label="参数键值" prop="configValue">
<el-input v-model="form.configValue" placeholder="请输入参数键值" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getConfig } from '@/api/system/config'
export default {
name: 'ConfigDetail',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '参数详情',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 表单参数
form: {},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getConfig(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getConfig: function(id) {
getConfig(id).then(response => {
if (response.success) {
this.form = response.data
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm">保存</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="参数名称" prop="configName">
<el-input v-model="form.configName" placeholder="请输入参数名称" />
</el-form-item>
<el-form-item label="参数键名" prop="configKey">
<el-input v-model="form.configKey" placeholder="请输入参数键名" />
</el-form-item>
<el-form-item label="参数键值" prop="configValue">
<el-input v-model="form.configValue" placeholder="请输入参数键值" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getConfig, updateConfig } from '@/api/system/config'
export default {
name: 'ConfigEdit',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '参数编辑',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
},
// 表单参数
form: {},
// 表单校验
rules: {
configName: [
{ required: true, message: "参数名称不能为空", trigger: "blur" }
],
configKey: [
{ required: true, message: "参数键名不能为空", trigger: "blur" }
],
configValue: [
{ required: true, message: "参数键值不能为空", trigger: "blur" }
]
},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getConfig(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getConfig: function(id) {
getConfig(id).then(response => {
if (response.success) {
this.form = response.data
}
})
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
updateConfig(this.form).then(response => {
if (response.success) {
this.$message.success("保存成功")
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error("保存失败")
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="app-container">
<transition name="el-zoom-in-center">
<config-list v-if="options.showList" @showCard="showCard"></config-list>
</transition>
<transition name="el-zoom-in-top">
<config-add v-if="options.showAdd" :data="options.data" @showCard="showCard"></config-add>
</transition>
<transition name="el-zoom-in-top">
<config-edit v-if="options.showEdit" :data="options.data" @showCard="showCard"></config-edit>
</transition>
<transition name="el-zoom-in-bottom">
<config-detail v-if="options.showDetail" :data="options.data" @showCard="showCard"></config-detail>
</transition>
</div>
</template>
<script>
import ConfigList from './ConfigList'
import ConfigAdd from './ConfigAdd'
import ConfigEdit from './ConfigEdit'
import ConfigDetail from './ConfigDetail'
export default {
name: 'Config',
components: { ConfigList, ConfigAdd, ConfigEdit, ConfigDetail },
data () {
return {
options: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false
}
}
},
methods: {
showCard (data) {
Object.assign(this.options, data);
}
}
}
</script>
<style lang="scss" scoped>
</style>
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
v-hasPerm="['system:dept:edit']" v-hasPerm="['system:dept:detail']"
>详情</el-button> >详情</el-button>
<el-button <el-button
size="mini" size="mini"
......
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm">保存</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典名称" prop="dictName">
<el-input v-model="form.dictName" placeholder="请输入字典名称" />
</el-form-item>
<el-form-item label="字典编码" prop="dictCode">
<el-input v-model="form.dictCode" placeholder="请输入字典编码" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { addDict } from '@/api/system/dict'
export default {
name: 'DictAdd',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '字典新增',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showItemList: false,
showItemAdd: false,
showItemEdit: false,
showItemDetail: false
},
// 表单参数
form: {
status: '1'
},
// 表单校验
rules: {
dictName: [
{ required: true, message: "字典名称不能为空", trigger: "blur" }
],
dictCode: [
{ required: true, message: "字典编码不能为空", trigger: "blur" }
]
},
// 状态数据字典
statusOptions: []
}
},
created () {
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
addDict(this.form).then(response => {
if (response.success) {
this.$message.success("保存成功")
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error("保存失败")
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" label-width="80px" disabled>
<el-form-item label="字典名称" prop="dictName">
<el-input v-model="form.dictName" placeholder="请输入字典名称" />
</el-form-item>
<el-form-item label="字典编码" prop="dictCode">
<el-input v-model="form.dictCode" placeholder="请输入字典编码" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getDict } from '@/api/system/dict'
export default {
name: 'DictDetail',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '字典详情',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showItemList: false,
showItemAdd: false,
showItemEdit: false,
showItemDetail: false
},
// 表单参数
form: {},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getDict(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getDict: function(id) {
getDict(id).then(response => {
if (response.success) {
this.form = response.data
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm">保存</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典名称" prop="dictName">
<el-input v-model="form.dictName" placeholder="请输入字典名称" />
</el-form-item>
<el-form-item label="字典编码" prop="dictCode">
<el-input v-model="form.dictCode" placeholder="请输入字典编码" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getDict, updateDict } from '@/api/system/dict'
export default {
name: 'DictEdit',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '字典编辑',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showItemList: false,
showItemAdd: false,
showItemEdit: false,
showItemDetail: false
},
// 表单参数
form: {},
// 表单校验
rules: {
dictName: [
{ required: true, message: "字典名称不能为空", trigger: "blur" }
],
dictCode: [
{ required: true, message: "字典编码不能为空", trigger: "blur" }
]
},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getDict(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getDict: function(id) {
getDict(id).then(response => {
if (response.success) {
this.form = response.data
}
})
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
updateDict(this.form).then(response => {
if (response.success) {
this.$message.success("保存成功")
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error("保存失败")
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm">保存</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典项文本" prop="itemText">
<el-input v-model="form.itemText" placeholder="请输入字典项文本" />
</el-form-item>
<el-form-item label="字典项值" prop="itemValue">
<el-input v-model="form.itemValue" placeholder="请输入字典项值" />
</el-form-item>
<el-form-item label="排序" prop="itemSort">
<el-input-number v-model="form.itemSort" controls-position="right" :min="1" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { addDictItem } from '@/api/system/dict'
export default {
name: 'DictItemAdd',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '字典项新增',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showItemList: false,
showItemAdd: false,
showItemEdit: false,
showItemDetail: false
},
// 表单参数
form: {
status: '1',
dictId: ''
},
// 表单校验
rules: {
itemText: [
{ required: true, message: "字典项文本不能为空", trigger: "blur" }
],
itemValue: [
{ required: true, message: "字典项值不能为空", trigger: "blur" }
]
},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('data:' + JSON.stringify(this.data))
this.form.dictId = this.data.dictId
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
addDictItem(this.form).then(response => {
if (response.success) {
this.$message.success("保存成功")
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error("保存失败")
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" label-width="80px" disabled>
<el-form-item label="字典项文本" prop="itemText">
<el-input v-model="form.itemText" placeholder="请输入字典项文本" />
</el-form-item>
<el-form-item label="字典项值" prop="itemValue">
<el-input v-model="form.itemValue" placeholder="请输入字典项值" />
</el-form-item>
<el-form-item label="排序" prop="itemSort">
<el-input-number v-model="form.itemSort" controls-position="right" :min="1" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getDictItem } from '@/api/system/dict'
export default {
name: 'DictItemDetail',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '字典项详情',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showItemList: false,
showItemAdd: false,
showItemEdit: false,
showItemDetail: false
},
// 表单参数
form: {},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getDictItem(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getDictItem: function(id) {
getDictItem(id).then(response => {
if (response.success) {
this.form = response.data
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-plus" round @click="submitForm">保存</el-button>
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典项文本" prop="itemText">
<el-input v-model="form.itemText" placeholder="请输入字典项文本" />
</el-form-item>
<el-form-item label="字典项值" prop="itemValue">
<el-input v-model="form.itemValue" placeholder="请输入字典项值" />
</el-form-item>
<el-form-item label="排序" prop="itemSort">
<el-input-number v-model="form.itemSort" controls-position="right" :min="1" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getDictItem, updateDictItem } from '@/api/system/dict'
export default {
name: 'DictItemEdit',
props: {
data: {
type: Object,
default: function() {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '字典项编辑',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showItemList: false,
showItemAdd: false,
showItemEdit: false,
showItemDetail: false
},
// 表单参数
form: {},
// 表单校验
rules: {
itemText: [
{ required: true, message: "字典项文本不能为空", trigger: "blur" }
],
itemValue: [
{ required: true, message: "字典项值不能为空", trigger: "blur" }
]
},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts("sys_common_status").then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getDictItem(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getDictItem: function(id) {
getDictItem(id).then(response => {
if (response.success) {
this.form = response.data
}
})
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
updateDictItem(this.form).then(response => {
if (response.success) {
this.$message.success("保存成功")
setTimeout(() => {
// 2秒后跳转列表页
this.$emit('showCard', this.showOptions)
}, 2000)
} else {
this.$message.error("保存失败")
}
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div class="app-container">
<transition name="el-zoom-in-center">
<dict-list v-if="options.showList" @showCard="showCard"></dict-list>
</transition>
<transition name="el-zoom-in-top">
<dict-add v-if="options.showAdd" :data="options.data" @showCard="showCard"></dict-add>
</transition>
<transition name="el-zoom-in-top">
<dict-edit v-if="options.showEdit" :data="options.data" @showCard="showCard"></dict-edit>
</transition>
<transition name="el-zoom-in-bottom">
<dict-detail v-if="options.showDetail" :data="options.data" @showCard="showCard"></dict-detail>
</transition>
<transition name="el-zoom-in-center">
<dict-item-list v-if="options.showItemList" :data="options.data" @showCard="showCard"></dict-item-list>
</transition>
<transition name="el-zoom-in-top">
<dict-item-add v-if="options.showItemAdd" :data="options.data" @showCard="showCard"></dict-item-add>
</transition>
<transition name="el-zoom-in-top">
<dict-item-edit v-if="options.showItemEdit" :data="options.data" @showCard="showCard"></dict-item-edit>
</transition>
<transition name="el-zoom-in-bottom">
<dict-item-detail v-if="options.showItemDetail" :data="options.data" @showCard="showCard"></dict-item-detail>
</transition>
</div>
</template>
<script>
import DictList from './DictList'
import DictAdd from './DictAdd'
import DictEdit from './DictEdit'
import DictDetail from './DictDetail'
import DictItemList from './DictItemList'
import DictItemAdd from './DictItemAdd'
import DictItemEdit from './DictItemEdit'
import DictItemDetail from './DictItemDetail'
export default {
name: 'Dict',
components: { DictList, DictAdd, DictEdit, DictDetail, DictItemList, DictItemAdd, DictItemEdit, DictItemDetail },
data () {
return {
options: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showItemList: false,
showItemAdd: false,
showItemEdit: false,
showItemDetail: false
}
}
},
methods: {
showCard (data) {
Object.assign(this.options, data);
}
}
}
</script>
<style lang="scss" scoped>
</style>
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
v-hasPerm="['system:menu:edit']" v-hasPerm="['system:menu:detail']"
>详情</el-button> >详情</el-button>
<el-button <el-button
size="mini" size="mini"
......
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
<script> <script>
import MenuList from './MenuList' import MenuList from './MenuList'
import MenuAdd from "./MenuAdd" import MenuAdd from './MenuAdd'
import MenuEdit from "./MenuEdit" import MenuEdit from './MenuEdit'
import MenuDetail from "./MenuDetail" import MenuDetail from './MenuDetail'
export default { export default {
name: 'Menu', name: 'Menu',
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
size="mini" size="mini"
:disabled="single" :disabled="single"
@click="handleDetail" @click="handleDetail"
v-hasPerm="['system:post:edit']" v-hasPerm="['system:post:detail']"
>详情</el-button> >详情</el-button>
<el-button <el-button
type="danger" type="danger"
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
v-hasPerm="['system:post:edit']" v-hasPerm="['system:post:detail']"
>详情</el-button> >详情</el-button>
<el-button <el-button
size="mini" size="mini"
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
size="mini" size="mini"
:disabled="single" :disabled="single"
@click="handleDetail" @click="handleDetail"
v-hasPerm="['system:role:edit']" v-hasPerm="['system:role:detail']"
>详情</el-button> >详情</el-button>
<el-button <el-button
type="danger" type="danger"
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
v-hasPerm="['system:role:edit']" v-hasPerm="['system:role:detail']"
>详情</el-button> >详情</el-button>
<el-button <el-button
size="mini" size="mini"
...@@ -213,7 +213,7 @@ export default { ...@@ -213,7 +213,7 @@ export default {
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 20,
postName: '' roleName: ''
} }
} }
}, },
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
placeholder="请输入用户昵称" placeholder="请输入用户昵称"
clearable clearable
size="small" size="small"
@keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
</template> </template>
...@@ -73,7 +72,7 @@ ...@@ -73,7 +72,7 @@
size="mini" size="mini"
:disabled="single" :disabled="single"
@click="handleDetail" @click="handleDetail"
v-hasPerm="['system:user:edit']" v-hasPerm="['system:user:detail']"
>详情</el-button> >详情</el-button>
<el-button <el-button
type="danger" type="danger"
...@@ -168,7 +167,7 @@ ...@@ -168,7 +167,7 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
v-hasPerm="['system:user:edit']" v-hasPerm="['system:user:detail']"
>详情</el-button> >详情</el-button>
<el-button <el-button
size="mini" size="mini"
......
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
<script> <script>
import UserList from './UserList' import UserList from './UserList'
import UserAdd from "./UserAdd" import UserAdd from './UserAdd'
import UserEdit from "./UserEdit" import UserEdit from './UserEdit'
import UserDetail from "./UserDetail" import UserDetail from './UserDetail'
export default { export default {
name: 'User', name: 'User',
......
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