去除岗位管理前后端代码
This commit is contained in:
@@ -1,73 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.domain;
|
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.nl.modules.common.base.BaseEntity;
|
|
||||||
import javax.persistence.*;
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-03-29
|
|
||||||
*/
|
|
||||||
@Entity
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
@Table(name="sys_job")
|
|
||||||
public class Job extends BaseEntity implements Serializable {
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@Column(name = "job_id")
|
|
||||||
@NotNull(groups = Update.class)
|
|
||||||
@ApiModelProperty(value = "ID", hidden = true)
|
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@NotBlank
|
|
||||||
@ApiModelProperty(value = "岗位名称")
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@ApiModelProperty(value = "岗位排序")
|
|
||||||
private Long jobSort;
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@ApiModelProperty(value = "是否启用")
|
|
||||||
private Boolean enabled;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (o == null || getClass() != o.getClass()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Job job = (Job) o;
|
|
||||||
return Objects.equals(id, job.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return Objects.hash(id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -55,13 +55,6 @@ public class User extends BaseEntity implements Serializable {
|
|||||||
inverseJoinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")})
|
inverseJoinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")})
|
||||||
private Set<Role> roles;
|
private Set<Role> roles;
|
||||||
|
|
||||||
@ManyToMany
|
|
||||||
@ApiModelProperty(value = "用户岗位")
|
|
||||||
@JoinTable(name = "sys_users_jobs",
|
|
||||||
joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "user_id")},
|
|
||||||
inverseJoinColumns = {@JoinColumn(name = "job_id",referencedColumnName = "job_id")})
|
|
||||||
private Set<Job> jobs;
|
|
||||||
|
|
||||||
@OneToOne
|
@OneToOne
|
||||||
@JoinColumn(name = "dept_id")
|
@JoinColumn(name = "dept_id")
|
||||||
@ApiModelProperty(value = "用户部门")
|
@ApiModelProperty(value = "用户部门")
|
||||||
@@ -78,7 +71,6 @@ public class User extends BaseEntity implements Serializable {
|
|||||||
private String nickName;
|
private String nickName;
|
||||||
|
|
||||||
@Email
|
@Email
|
||||||
@NotBlank
|
|
||||||
@ApiModelProperty(value = "邮箱")
|
@ApiModelProperty(value = "邮箱")
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
|
|||||||
@@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.repository;
|
|
||||||
|
|
||||||
import org.nl.modules.system.domain.Job;
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-03-29
|
|
||||||
*/
|
|
||||||
public interface JobRepository extends JpaRepository<Job, Long>, JpaSpecificationExecutor<Job> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据名称查询
|
|
||||||
* @param name 名称
|
|
||||||
* @return /
|
|
||||||
*/
|
|
||||||
Job findByName(String name);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据Id删除
|
|
||||||
* @param ids /
|
|
||||||
*/
|
|
||||||
void deleteAllByIdIn(Set<Long> ids);
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.rest;
|
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
||||||
import cn.dev33.satoken.annotation.SaMode;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
|
||||||
import org.nl.modules.logging.annotation.Log;
|
|
||||||
import org.nl.modules.system.domain.Job;
|
|
||||||
import org.nl.modules.system.service.JobService;
|
|
||||||
import org.nl.modules.system.service.dto.JobQueryCriteria;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-03-29
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Api(tags = "系统:岗位管理")
|
|
||||||
@RequestMapping("/api/job")
|
|
||||||
public class JobController {
|
|
||||||
|
|
||||||
private final JobService jobService;
|
|
||||||
private static final String ENTITY_NAME = "job";
|
|
||||||
|
|
||||||
@ApiOperation("导出岗位数据")
|
|
||||||
@GetMapping(value = "/download")
|
|
||||||
@SaCheckPermission("job:list")
|
|
||||||
public void download(HttpServletResponse response, JobQueryCriteria criteria) throws IOException {
|
|
||||||
jobService.download(jobService.queryAll(criteria), response);
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation("查询岗位")
|
|
||||||
@GetMapping
|
|
||||||
@SaCheckPermission(value = {"job:list", "user:list"}, mode = SaMode.AND)
|
|
||||||
public ResponseEntity<Object> query(JobQueryCriteria criteria, Pageable pageable){
|
|
||||||
return new ResponseEntity<>(jobService.queryAll(criteria, pageable),HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log("新增岗位")
|
|
||||||
@ApiOperation("新增岗位")
|
|
||||||
@PostMapping
|
|
||||||
@SaCheckPermission("job:add")
|
|
||||||
public ResponseEntity<Object> create(@Validated @RequestBody Job resources){
|
|
||||||
if (resources.getId() != null) {
|
|
||||||
throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID");
|
|
||||||
}
|
|
||||||
jobService.create(resources);
|
|
||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log("修改岗位")
|
|
||||||
@ApiOperation("修改岗位")
|
|
||||||
@PutMapping
|
|
||||||
@SaCheckPermission("job:edit")
|
|
||||||
public ResponseEntity<Object> update(@Validated(Job.Update.class) @RequestBody Job resources){
|
|
||||||
jobService.update(resources);
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Log("删除岗位")
|
|
||||||
@ApiOperation("删除岗位")
|
|
||||||
@DeleteMapping
|
|
||||||
@SaCheckPermission("job:del")
|
|
||||||
public ResponseEntity<Object> delete(@RequestBody Set<Long> ids){
|
|
||||||
// 验证是否被用户关联
|
|
||||||
jobService.verification(ids);
|
|
||||||
jobService.delete(ids);
|
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.service;
|
|
||||||
|
|
||||||
import org.nl.modules.system.domain.Job;
|
|
||||||
import org.nl.modules.system.service.dto.JobDto;
|
|
||||||
import org.nl.modules.system.service.dto.JobQueryCriteria;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-03-29
|
|
||||||
*/
|
|
||||||
public interface JobService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据ID查询
|
|
||||||
* @param id /
|
|
||||||
* @return /
|
|
||||||
*/
|
|
||||||
JobDto findById(Long id);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建
|
|
||||||
* @param resources /
|
|
||||||
* @return /
|
|
||||||
*/
|
|
||||||
void create(Job resources);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 编辑
|
|
||||||
* @param resources /
|
|
||||||
*/
|
|
||||||
void update(Job resources);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 删除
|
|
||||||
* @param ids /
|
|
||||||
*/
|
|
||||||
void delete(Set<Long> ids);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询
|
|
||||||
* @param criteria 条件
|
|
||||||
* @param pageable 分页参数
|
|
||||||
* @return /
|
|
||||||
*/
|
|
||||||
Map<String,Object> queryAll(JobQueryCriteria criteria, Pageable pageable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询全部数据
|
|
||||||
* @param criteria /
|
|
||||||
* @return /
|
|
||||||
*/
|
|
||||||
List<JobDto> queryAll(JobQueryCriteria criteria);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导出数据
|
|
||||||
* @param queryAll 待导出的数据
|
|
||||||
* @param response /
|
|
||||||
* @throws IOException /
|
|
||||||
*/
|
|
||||||
void download(List<JobDto> queryAll, HttpServletResponse response) throws IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 验证是否被用户关联
|
|
||||||
* @param ids /
|
|
||||||
*/
|
|
||||||
void verification(Set<Long> ids);
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.service.dto;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.nl.modules.common.base.BaseDTO;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-03-29
|
|
||||||
*/
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class JobDto extends BaseDTO implements Serializable {
|
|
||||||
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
private Integer jobSort;
|
|
||||||
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
private Boolean enabled;
|
|
||||||
|
|
||||||
public JobDto(String name, Boolean enabled) {
|
|
||||||
this.name = name;
|
|
||||||
this.enabled = enabled;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.service.dto;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import org.nl.modules.common.annotation.Query;
|
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-6-4 14:49:34
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class JobQueryCriteria {
|
|
||||||
|
|
||||||
@Query(type = Query.Type.INNER_LIKE)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@Query
|
|
||||||
private Boolean enabled;
|
|
||||||
|
|
||||||
@Query(type = Query.Type.BETWEEN)
|
|
||||||
private List<Timestamp> createTime;
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.service.dto;
|
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-6-10 16:32:18
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class JobSmallDto implements Serializable {
|
|
||||||
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
private String name;
|
|
||||||
}
|
|
||||||
@@ -38,8 +38,6 @@ public class UserDto extends BaseDTO implements Serializable {
|
|||||||
|
|
||||||
private Set<RoleSmallDto> roles;
|
private Set<RoleSmallDto> roles;
|
||||||
|
|
||||||
private Set<JobSmallDto> jobs;
|
|
||||||
|
|
||||||
private DeptSmallDto dept;
|
private DeptSmallDto dept;
|
||||||
|
|
||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
|||||||
@@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.service.impl;
|
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
|
||||||
import org.nl.modules.common.exception.EntityExistException;
|
|
||||||
import org.nl.modules.common.utils.*;
|
|
||||||
import org.nl.modules.system.domain.Job;
|
|
||||||
import org.nl.modules.system.repository.JobRepository;
|
|
||||||
import org.nl.modules.system.repository.UserRepository;
|
|
||||||
import org.nl.modules.system.service.JobService;
|
|
||||||
import org.nl.modules.system.service.dto.JobDto;
|
|
||||||
import org.nl.modules.system.service.dto.JobQueryCriteria;
|
|
||||||
import org.nl.modules.system.service.mapstruct.JobMapper;
|
|
||||||
import org.springframework.cache.annotation.CacheConfig;
|
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-03-29
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@CacheConfig(cacheNames = "job")
|
|
||||||
public class JobServiceImpl implements JobService {
|
|
||||||
|
|
||||||
private final JobRepository jobRepository;
|
|
||||||
private final JobMapper jobMapper;
|
|
||||||
private final RedisUtils redisUtils;
|
|
||||||
private final UserRepository userRepository;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String,Object> queryAll(JobQueryCriteria criteria, Pageable pageable) {
|
|
||||||
Page<Job> page = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
|
||||||
return PageUtil.toPage(page.map(jobMapper::toDto).getContent(),page.getTotalElements());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<JobDto> queryAll(JobQueryCriteria criteria) {
|
|
||||||
List<Job> list = jobRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder));
|
|
||||||
return jobMapper.toDto(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Cacheable(key = "'id:' + #p0")
|
|
||||||
public JobDto findById(Long id) {
|
|
||||||
Job job = jobRepository.findById(id).orElseGet(Job::new);
|
|
||||||
ValidationUtil.isNull(job.getId(),"Job","id",id);
|
|
||||||
return jobMapper.toDto(job);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void create(Job resources) {
|
|
||||||
Job job = jobRepository.findByName(resources.getName());
|
|
||||||
if(job != null){
|
|
||||||
throw new EntityExistException(Job.class,"name",resources.getName());
|
|
||||||
}
|
|
||||||
jobRepository.save(resources);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@CacheEvict(key = "'id:' + #p0.id")
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void update(Job resources) {
|
|
||||||
Job job = jobRepository.findById(resources.getId()).orElseGet(Job::new);
|
|
||||||
Job old = jobRepository.findByName(resources.getName());
|
|
||||||
if(old != null && !old.getId().equals(resources.getId())){
|
|
||||||
throw new EntityExistException(Job.class,"name",resources.getName());
|
|
||||||
}
|
|
||||||
ValidationUtil.isNull( job.getId(),"Job","id",resources.getId());
|
|
||||||
resources.setId(job.getId());
|
|
||||||
jobRepository.save(resources);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public void delete(Set<Long> ids) {
|
|
||||||
jobRepository.deleteAllByIdIn(ids);
|
|
||||||
// 删除缓存
|
|
||||||
redisUtils.delByKeys("job::id:", ids);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void download(List<JobDto> jobDtos, HttpServletResponse response) throws IOException {
|
|
||||||
List<Map<String, Object>> list = new ArrayList<>();
|
|
||||||
for (JobDto jobDTO : jobDtos) {
|
|
||||||
Map<String,Object> map = new LinkedHashMap<>();
|
|
||||||
map.put("岗位名称", jobDTO.getName());
|
|
||||||
map.put("岗位状态", jobDTO.getEnabled() ? "启用" : "停用");
|
|
||||||
map.put("创建日期", jobDTO.getCreateTime());
|
|
||||||
list.add(map);
|
|
||||||
}
|
|
||||||
FileUtil.downloadExcel(list, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void verification(Set<Long> ids) {
|
|
||||||
if(userRepository.countByJobs(ids) > 0){
|
|
||||||
throw new BadRequestException("所选的岗位中存在用户关联,请解除关联再试!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -27,7 +27,6 @@ import org.nl.modules.system.domain.User;
|
|||||||
import org.nl.modules.system.repository.UserRepository;
|
import org.nl.modules.system.repository.UserRepository;
|
||||||
import org.nl.modules.system.service.RoleService;
|
import org.nl.modules.system.service.RoleService;
|
||||||
import org.nl.modules.system.service.UserService;
|
import org.nl.modules.system.service.UserService;
|
||||||
import org.nl.modules.system.service.dto.JobSmallDto;
|
|
||||||
import org.nl.modules.system.service.dto.RoleSmallDto;
|
import org.nl.modules.system.service.dto.RoleSmallDto;
|
||||||
import org.nl.modules.system.service.dto.UserDto;
|
import org.nl.modules.system.service.dto.UserDto;
|
||||||
import org.nl.modules.system.service.dto.UserQueryCriteria;
|
import org.nl.modules.system.service.dto.UserQueryCriteria;
|
||||||
@@ -132,7 +131,6 @@ public class UserServiceImpl implements UserService {
|
|||||||
user.setEnabled(resources.getEnabled());
|
user.setEnabled(resources.getEnabled());
|
||||||
user.setRoles(resources.getRoles());
|
user.setRoles(resources.getRoles());
|
||||||
user.setDept(resources.getDept());
|
user.setDept(resources.getDept());
|
||||||
user.setJobs(resources.getJobs());
|
|
||||||
user.setPhone(resources.getPhone());
|
user.setPhone(resources.getPhone());
|
||||||
user.setNickName(resources.getNickName());
|
user.setNickName(resources.getNickName());
|
||||||
user.setGender(resources.getGender());
|
user.setGender(resources.getGender());
|
||||||
@@ -223,7 +221,6 @@ public class UserServiceImpl implements UserService {
|
|||||||
map.put("用户名", userDTO.getUsername());
|
map.put("用户名", userDTO.getUsername());
|
||||||
map.put("角色", roles);
|
map.put("角色", roles);
|
||||||
map.put("部门", userDTO.getDept().getName());
|
map.put("部门", userDTO.getDept().getName());
|
||||||
map.put("岗位", userDTO.getJobs().stream().map(JobSmallDto::getName).collect(Collectors.toList()));
|
|
||||||
map.put("邮箱", userDTO.getEmail());
|
map.put("邮箱", userDTO.getEmail());
|
||||||
map.put("状态", userDTO.getEnabled() ? "启用" : "禁用");
|
map.put("状态", userDTO.getEnabled() ? "启用" : "禁用");
|
||||||
map.put("手机号码", userDTO.getPhone());
|
map.put("手机号码", userDTO.getPhone());
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.service.mapstruct;
|
|
||||||
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.ReportingPolicy;
|
|
||||||
import org.nl.modules.common.base.BaseMapper;
|
|
||||||
import org.nl.modules.system.domain.Job;
|
|
||||||
import org.nl.modules.system.service.dto.JobDto;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-03-29
|
|
||||||
*/
|
|
||||||
@Mapper(componentModel = "spring",uses = {DeptMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
||||||
public interface JobMapper extends BaseMapper<JobDto, Job> {
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019-2020 Zheng Jie
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* 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 org.nl.modules.system.service.mapstruct;
|
|
||||||
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.ReportingPolicy;
|
|
||||||
import org.nl.modules.common.base.BaseMapper;
|
|
||||||
import org.nl.modules.system.domain.Job;
|
|
||||||
import org.nl.modules.system.service.dto.JobSmallDto;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Zheng Jie
|
|
||||||
* @date 2019-03-29
|
|
||||||
*/
|
|
||||||
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
|
||||||
public interface JobSmallMapper extends BaseMapper<JobSmallDto, Job> {
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -25,6 +25,6 @@ import org.nl.modules.system.service.dto.UserDto;
|
|||||||
* @author Zheng Jie
|
* @author Zheng Jie
|
||||||
* @date 2018-11-23
|
* @date 2018-11-23
|
||||||
*/
|
*/
|
||||||
@Mapper(componentModel = "spring",uses = {RoleMapper.class, DeptMapper.class, JobMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
@Mapper(componentModel = "spring",uses = {RoleMapper.class, DeptMapper.class},unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||||
public interface UserMapper extends BaseMapper<UserDto, User> {
|
public interface UserMapper extends BaseMapper<UserDto, User> {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package org.nl.modules.system.service.vo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: lyd
|
||||||
|
* @description:
|
||||||
|
* @Date: 2022/9/26
|
||||||
|
*/
|
||||||
|
public class UserVo {
|
||||||
|
}
|
||||||
Binary file not shown.
@@ -6,12 +6,12 @@ spring:
|
|||||||
druid:
|
druid:
|
||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||||
url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:nladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:nladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:nladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:nladmin}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
username: ${DB_USER:root}
|
|
||||||
# username: ${DB_USER:root}
|
# username: ${DB_USER:root}
|
||||||
password: ${DB_PWD:P@ssw0rd}
|
username: ${DB_USER:root}
|
||||||
# password: ${DB_PWD:12356}
|
# password: ${DB_PWD:P@ssw0rd}
|
||||||
|
password: ${DB_PWD:12356}
|
||||||
# 初始连接数
|
# 初始连接数
|
||||||
initial-size: 5
|
initial-size: 5
|
||||||
# 最小连接数
|
# 最小连接数
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
export function getAllJob() {
|
|
||||||
const params = {
|
|
||||||
page: 0,
|
|
||||||
size: 9999,
|
|
||||||
enabled: true
|
|
||||||
}
|
|
||||||
return request({
|
|
||||||
url: 'api/job',
|
|
||||||
method: 'get',
|
|
||||||
params
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function add(data) {
|
|
||||||
return request({
|
|
||||||
url: 'api/job',
|
|
||||||
method: 'post',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function del(ids) {
|
|
||||||
return request({
|
|
||||||
url: 'api/job',
|
|
||||||
method: 'delete',
|
|
||||||
data: ids
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export function edit(data) {
|
|
||||||
return request({
|
|
||||||
url: 'api/job',
|
|
||||||
method: 'put',
|
|
||||||
data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default { add, edit, del }
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="app-container">
|
|
||||||
<!--工具栏-->
|
|
||||||
<div class="head-container">
|
|
||||||
<eHeader :dict="dict" :permission="permission" />
|
|
||||||
<crudOperation :permission="permission" />
|
|
||||||
</div>
|
|
||||||
<!--表格渲染-->
|
|
||||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
|
||||||
<el-table-column type="selection" width="55" />
|
|
||||||
<el-table-column prop="name" label="名称" />
|
|
||||||
<el-table-column prop="jobSort" label="排序">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
{{ scope.row.jobSort }}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="status" label="状态" align="center">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-switch
|
|
||||||
v-model="scope.row.enabled"
|
|
||||||
active-color="#409EFF"
|
|
||||||
inactive-color="#F56C6C"
|
|
||||||
@change="changeEnabled(scope.row, scope.row.enabled)"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="createTime" label="创建日期">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<!-- 编辑与删除 -->
|
|
||||||
<el-table-column
|
|
||||||
v-permission="['admin','job:edit','job:del']"
|
|
||||||
label="操作"
|
|
||||||
width="130px"
|
|
||||||
align="center"
|
|
||||||
fixed="right"
|
|
||||||
>
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<udOperation
|
|
||||||
:data="scope.row"
|
|
||||||
:permission="permission"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<!--分页组件-->
|
|
||||||
<pagination />
|
|
||||||
<!--表单渲染-->
|
|
||||||
<eForm :job-status="dict.job_status" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import crudJob from '@/api/system/job'
|
|
||||||
import eHeader from './module/header'
|
|
||||||
import eForm from './module/form'
|
|
||||||
import CRUD, { presenter } from '@crud/crud'
|
|
||||||
import crudOperation from '@crud/CRUD.operation'
|
|
||||||
import pagination from '@crud/Pagination'
|
|
||||||
import udOperation from '@crud/UD.operation'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'Job',
|
|
||||||
components: { eHeader, eForm, crudOperation, pagination, udOperation },
|
|
||||||
cruds() {
|
|
||||||
return CRUD({
|
|
||||||
title: '岗位',
|
|
||||||
url: 'api/job',
|
|
||||||
sort: ['jobSort,asc', 'id,desc'],
|
|
||||||
crudMethod: { ...crudJob }
|
|
||||||
})
|
|
||||||
},
|
|
||||||
mixins: [presenter()],
|
|
||||||
// 数据字典
|
|
||||||
dicts: ['job_status'],
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
permission: {
|
|
||||||
add: ['admin', 'job:add'],
|
|
||||||
edit: ['admin', 'job:edit'],
|
|
||||||
del: ['admin', 'job:del']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 改变状态
|
|
||||||
changeEnabled(data, val) {
|
|
||||||
this.$confirm('此操作将 "' + this.dict.label.job_status[val] + '" ' + data.name + '岗位, 是否继续?', '提示', {
|
|
||||||
confirmButtonText: '确定',
|
|
||||||
cancelButtonText: '取消',
|
|
||||||
type: 'warning'
|
|
||||||
}).then(() => {
|
|
||||||
// eslint-disable-next-line no-undef
|
|
||||||
crudJob.edit(data).then(() => {
|
|
||||||
// eslint-disable-next-line no-undef
|
|
||||||
this.crud.notify(this.dict.label.job_status[val] + '成功', 'success')
|
|
||||||
}).catch(err => {
|
|
||||||
data.enabled = !data.enabled
|
|
||||||
console.log(err.data.message)
|
|
||||||
})
|
|
||||||
}).catch(() => {
|
|
||||||
data.enabled = !data.enabled
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
||||||
::v-deep .el-input-number .el-input__inner {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
<template>
|
|
||||||
<el-dialog
|
|
||||||
append-to-body
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
:before-close="crud.cancelCU"
|
|
||||||
:visible="crud.status.cu > 0"
|
|
||||||
:title="crud.status.title"
|
|
||||||
width="500px"
|
|
||||||
>
|
|
||||||
<el-form
|
|
||||||
ref="form"
|
|
||||||
:model="form"
|
|
||||||
:rules="rules"
|
|
||||||
size="mini"
|
|
||||||
label-width="80px"
|
|
||||||
>
|
|
||||||
<el-form-item
|
|
||||||
label="名称"
|
|
||||||
prop="name"
|
|
||||||
>
|
|
||||||
<el-input
|
|
||||||
v-model="form.name"
|
|
||||||
style="width: 370px;"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
label="排序"
|
|
||||||
prop="jobSort"
|
|
||||||
>
|
|
||||||
<el-input-number
|
|
||||||
v-model.number="form.jobSort"
|
|
||||||
:min="0"
|
|
||||||
:max="999"
|
|
||||||
controls-position="right"
|
|
||||||
style="width: 370px;"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item
|
|
||||||
v-if="form.pid !== 0"
|
|
||||||
label="状态"
|
|
||||||
prop="enabled"
|
|
||||||
>
|
|
||||||
<el-radio
|
|
||||||
v-for="item in jobStatus"
|
|
||||||
:key="item.id"
|
|
||||||
v-model="form.enabled"
|
|
||||||
:label="item.value === 'true'"
|
|
||||||
>
|
|
||||||
{{ item.label }}
|
|
||||||
</el-radio>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div
|
|
||||||
slot="footer"
|
|
||||||
class="dialog-footer"
|
|
||||||
>
|
|
||||||
<el-button
|
|
||||||
type="text"
|
|
||||||
@click="crud.cancelCU"
|
|
||||||
>
|
|
||||||
取消
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
:loading="crud.status.cu === 2"
|
|
||||||
type="primary"
|
|
||||||
@click="crud.submitCU"
|
|
||||||
>
|
|
||||||
确认
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { form } from '@crud/crud'
|
|
||||||
|
|
||||||
const defaultForm = {
|
|
||||||
id: null,
|
|
||||||
name: '',
|
|
||||||
jobSort: 999,
|
|
||||||
enabled: true
|
|
||||||
}
|
|
||||||
export default {
|
|
||||||
mixins: [form(defaultForm)],
|
|
||||||
props: {
|
|
||||||
jobStatus: {
|
|
||||||
type: Array,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
rules: {
|
|
||||||
name: [
|
|
||||||
{ required: true, message: '请输入名称', trigger: 'blur' }
|
|
||||||
],
|
|
||||||
jobSort: [
|
|
||||||
{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
||||||
::v-deep .el-input-number .el-input__inner {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div
|
|
||||||
v-if="crud.props.searchToggle"
|
|
||||||
>
|
|
||||||
<el-input v-model="query.name" clearable size="mini" placeholder="输入岗位名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
|
||||||
<date-range-picker v-model="query.createTime" class="date-item" />
|
|
||||||
<el-select v-model="query.enabled" clearable size="mini" placeholder="状态" class="filter-item" style="width: 90px" @change="crud.toQuery">
|
|
||||||
<el-option v-for="item in dict.dict.job_status" :key="item.value" :label="item.label" :value="item.value" />
|
|
||||||
</el-select>
|
|
||||||
<rrOperation />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { header } from '@crud/crud'
|
|
||||||
import rrOperation from '@crud/RR.operation'
|
|
||||||
import DateRangePicker from '@/components/DateRangePicker'
|
|
||||||
export default {
|
|
||||||
components: { rrOperation, DateRangePicker },
|
|
||||||
mixins: [header()],
|
|
||||||
props: {
|
|
||||||
dict: {
|
|
||||||
type: Object,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
permission: {
|
|
||||||
type: Object,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -90,23 +90,7 @@
|
|||||||
placeholder="选择部门"
|
placeholder="选择部门"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="岗位" prop="jobs">
|
|
||||||
<el-select
|
|
||||||
v-model="jobDatas"
|
|
||||||
style="width: 200px"
|
|
||||||
multiple
|
|
||||||
placeholder="请选择"
|
|
||||||
@remove-tag="deleteTag"
|
|
||||||
@change="changeJob"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in jobs"
|
|
||||||
:key="item.name"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="性别">
|
<el-form-item label="性别">
|
||||||
<el-radio-group v-model="form.gender" style="width: 178px">
|
<el-radio-group v-model="form.gender" style="width: 178px">
|
||||||
<el-radio label="男">男</el-radio>
|
<el-radio label="男">男</el-radio>
|
||||||
@@ -123,12 +107,6 @@
|
|||||||
</el-radio>
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="外部标识" prop="extId">
|
|
||||||
<el-input v-model="form.extId" style="width: 200px;"/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="外部用户标识" prop="extId">
|
|
||||||
<el-input v-model="form.extuserId" style="width: 200px;"/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item style="margin-bottom: 0;" label="角色" prop="roles">
|
<el-form-item style="margin-bottom: 0;" label="角色" prop="roles">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="roleDatas"
|
v-model="roleDatas"
|
||||||
@@ -216,7 +194,6 @@ import crudUser from '@/api/system/user'
|
|||||||
import { isvalidPhone } from '@/utils/validate'
|
import { isvalidPhone } from '@/utils/validate'
|
||||||
import { getDepts, getDeptSuperior } from '@/api/system/dept'
|
import { getDepts, getDeptSuperior } from '@/api/system/dept'
|
||||||
import { getAll, getLevel } from '@/api/system/role'
|
import { getAll, getLevel } from '@/api/system/role'
|
||||||
import { getAllJob } from '@/api/system/job'
|
|
||||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||||
import rrOperation from '@crud/RR.operation'
|
import rrOperation from '@crud/RR.operation'
|
||||||
import crudOperation from '@crud/CRUD.operation'
|
import crudOperation from '@crud/CRUD.operation'
|
||||||
@@ -235,13 +212,10 @@ const defaultForm = {
|
|||||||
nickName: null,
|
nickName: null,
|
||||||
gender: '男',
|
gender: '男',
|
||||||
email: null,
|
email: null,
|
||||||
enabled: 'false',
|
enabled: 'true',
|
||||||
roles: [],
|
roles: [],
|
||||||
jobs: [],
|
|
||||||
dept: { id: null },
|
dept: { id: null },
|
||||||
phone: null,
|
phone: null
|
||||||
extId: null,
|
|
||||||
extuserId: null
|
|
||||||
}
|
}
|
||||||
export default {
|
export default {
|
||||||
name: 'User',
|
name: 'User',
|
||||||
@@ -255,9 +229,7 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
// 自定义验证
|
// 自定义验证
|
||||||
const validPhone = (rule, value, callback) => {
|
const validPhone = (rule, value, callback) => {
|
||||||
if (!value) {
|
if (!isvalidPhone(value)) {
|
||||||
callback(new Error('请输入电话号码'))
|
|
||||||
} else if (!isvalidPhone(value)) {
|
|
||||||
callback(new Error('请输入正确的11位手机号码'))
|
callback(new Error('请输入正确的11位手机号码'))
|
||||||
} else {
|
} else {
|
||||||
callback()
|
callback()
|
||||||
@@ -265,8 +237,8 @@ export default {
|
|||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
height: document.documentElement.clientHeight - 180 + 'px;',
|
height: document.documentElement.clientHeight - 180 + 'px;',
|
||||||
deptName: '', depts: [], deptDatas: [], jobs: [], level: 3, roles: [],
|
deptName: '', depts: [], deptDatas: [], level: 3, roles: [],
|
||||||
jobDatas: [], roleDatas: [], // 多选时使用
|
roleDatas: [], // 多选时使用
|
||||||
defaultProps: { children: 'children', label: 'name', isLeaf: 'leaf' },
|
defaultProps: { children: 'children', label: 'name', isLeaf: 'leaf' },
|
||||||
permission: {
|
permission: {
|
||||||
add: ['admin', 'user:add'],
|
add: ['admin', 'user:add'],
|
||||||
@@ -287,11 +259,10 @@ export default {
|
|||||||
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
|
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
email: [
|
email: [
|
||||||
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
|
|
||||||
{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }
|
{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }
|
||||||
],
|
],
|
||||||
phone: [
|
phone: [
|
||||||
{ required: true, trigger: 'blur', validator: validPhone }
|
{ required: false, trigger: 'blur', validator: validPhone }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -341,7 +312,6 @@ export default {
|
|||||||
this.getSupDepts(form.dept.id)
|
this.getSupDepts(form.dept.id)
|
||||||
}
|
}
|
||||||
this.getRoleLevel()
|
this.getRoleLevel()
|
||||||
this.getJobs()
|
|
||||||
form.enabled = form.enabled.toString()
|
form.enabled = form.enabled.toString()
|
||||||
},
|
},
|
||||||
// 新增前将多选的值设置为空
|
// 新增前将多选的值设置为空
|
||||||
@@ -351,8 +321,6 @@ export default {
|
|||||||
},
|
},
|
||||||
// 初始化编辑时候的角色与岗位
|
// 初始化编辑时候的角色与岗位
|
||||||
[CRUD.HOOK.beforeToEdit](crud, form) {
|
[CRUD.HOOK.beforeToEdit](crud, form) {
|
||||||
this.getJobs(this.form.dept.id)
|
|
||||||
this.jobDatas = []
|
|
||||||
this.roleDatas = []
|
this.roleDatas = []
|
||||||
userRoles = []
|
userRoles = []
|
||||||
userJobs = []
|
userJobs = []
|
||||||
@@ -362,11 +330,6 @@ export default {
|
|||||||
const rol = { id: role.id }
|
const rol = { id: role.id }
|
||||||
userRoles.push(rol)
|
userRoles.push(rol)
|
||||||
})
|
})
|
||||||
form.jobs.forEach(function(job, index) {
|
|
||||||
_this.jobDatas.push(job.id)
|
|
||||||
const data = { id: job.id }
|
|
||||||
userJobs.push(data)
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
// 提交前做的操作
|
// 提交前做的操作
|
||||||
[CRUD.HOOK.afterValidateCU](crud) {
|
[CRUD.HOOK.afterValidateCU](crud) {
|
||||||
@@ -390,7 +353,7 @@ export default {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
crud.form.roles = userRoles
|
crud.form.roles = userRoles
|
||||||
crud.form.jobs = userJobs
|
// crud.form.jobs = userJobs
|
||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
// 获取左侧部门数据
|
// 获取左侧部门数据
|
||||||
@@ -489,13 +452,6 @@ export default {
|
|||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// 获取弹窗内岗位数据
|
|
||||||
getJobs() {
|
|
||||||
getAllJob().then(res => {
|
|
||||||
this.jobs = res.content
|
|
||||||
}).catch(() => {
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 获取权限级别
|
// 获取权限级别
|
||||||
getRoleLevel() {
|
getRoleLevel() {
|
||||||
getLevel().then(res => {
|
getLevel().then(res => {
|
||||||
|
|||||||
Reference in New Issue
Block a user