41 changed files with 939 additions and 4 deletions
@ -0,0 +1,53 @@ |
|||
package org.nl.wms.database.workshop.controller; |
|||
|
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.nl.common.base.TableDataInfo; |
|||
import org.nl.common.domain.query.PageQuery; |
|||
import org.nl.common.logging.annotation.Log; |
|||
import org.nl.wms.database.workshop.service.IMdBaseWorkshopService; |
|||
import org.nl.wms.database.workshop.service.IStIvtUsershopService; |
|||
import org.nl.wms.database.workshop.service.dao.MdBaseWorkshop; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.http.HttpStatus; |
|||
import org.springframework.http.ResponseEntity; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.Map; |
|||
import java.util.Set; |
|||
|
|||
/** |
|||
* @author lyd |
|||
* @date 2023-05-05 |
|||
**/ |
|||
@Slf4j |
|||
@RestController |
|||
|
|||
@RequestMapping("/api/userStor") |
|||
public class StIvtUserShopController { |
|||
|
|||
@Autowired |
|||
private IStIvtUsershopService iStIvtUsershopService; |
|||
|
|||
@GetMapping |
|||
@Log("查询人员信息") |
|||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) { |
|||
return new ResponseEntity<>(TableDataInfo.build(iStIvtUsershopService.queryAll(whereJson, page)), HttpStatus.OK); |
|||
} |
|||
|
|||
@PostMapping("/save") |
|||
@Log("保存用户车间信息") |
|||
public ResponseEntity<Object> save(@RequestBody JSONObject whereJson) { |
|||
iStIvtUsershopService.save(whereJson); |
|||
return new ResponseEntity<>(HttpStatus.OK); |
|||
} |
|||
|
|||
@PostMapping("/queryUserStor") |
|||
@Log("查询用户对应车间") |
|||
public ResponseEntity<Object> queryUserStor(@RequestBody JSONObject whereJson) { |
|||
return new ResponseEntity<>(iStIvtUsershopService.queryUserStor(whereJson), HttpStatus.OK); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,52 @@ |
|||
package org.nl.wms.database.workshop.service; |
|||
|
|||
import com.alibaba.fastjson.JSONArray; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import org.nl.common.domain.query.PageQuery; |
|||
import org.nl.wms.database.workshop.service.dao.StIvtUsershop; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* <p> |
|||
* 服务类 |
|||
* </p> |
|||
* |
|||
* @author author |
|||
* @since 2025-07-31 |
|||
*/ |
|||
public interface IStIvtUsershopService extends IService<StIvtUsershop> { |
|||
|
|||
/** |
|||
* 查询数据分页 |
|||
* |
|||
* @param whereJson 条件 |
|||
* @param pageable 分页参数 |
|||
* @return IPage<MdBaseWorkshop> |
|||
*/ |
|||
IPage<JSONObject> queryAll(Map whereJson, PageQuery pageable); |
|||
|
|||
/** |
|||
* 保存 |
|||
* |
|||
* @param whereJson / |
|||
*/ |
|||
void save(JSONObject whereJson); |
|||
|
|||
/** |
|||
* 查询用户对应车间 |
|||
* |
|||
* @param whereJson / |
|||
*/ |
|||
List<StIvtUsershop> queryUserStor(JSONObject whereJson); |
|||
|
|||
/** |
|||
* 查询人员对应车间公共方法 |
|||
* @return List<String> |
|||
*/ |
|||
List<String> getWorkShop(); |
|||
|
|||
} |
@ -0,0 +1,38 @@ |
|||
package org.nl.wms.database.workshop.service.dao; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import java.io.Serializable; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import lombok.experimental.Accessors; |
|||
|
|||
/** |
|||
* <p> |
|||
* 人员权限车间 |
|||
* </p> |
|||
* |
|||
* @author author |
|||
* @since 2025-07-31 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = false) |
|||
@TableName("st_ivt_usershop") |
|||
public class StIvtUsershop implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 用户id |
|||
*/ |
|||
@TableId(value = "user_id") |
|||
private String user_id; |
|||
|
|||
/** |
|||
* 车间编码 |
|||
*/ |
|||
private String work_shop; |
|||
|
|||
|
|||
} |
@ -0,0 +1,22 @@ |
|||
package org.nl.wms.database.workshop.service.dao.mapper; |
|||
|
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import org.nl.wms.database.workshop.service.dao.StIvtUsershop; |
|||
import org.nl.wms.sch.task.service.dao.SchBaseTask; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* <p> |
|||
* Mapper 接口 |
|||
* </p> |
|||
* |
|||
* @author author |
|||
* @since 2025-07-31 |
|||
*/ |
|||
public interface StIvtUsershopMapper extends BaseMapper<StIvtUsershop> { |
|||
|
|||
IPage<JSONObject> selectPageLeftJoin(IPage<JSONObject> pages, Map whereJson); |
|||
} |
@ -0,0 +1,23 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="org.nl.wms.database.workshop.service.dao.mapper.StIvtUsershopMapper"> |
|||
|
|||
<select id="selectPageLeftJoin" resultType="com.alibaba.fastjson.JSONObject"> |
|||
SELECT |
|||
u.*, |
|||
sdept2.name |
|||
FROM |
|||
sys_user u |
|||
LEFT JOIN sys_user_dept sdept ON sdept.user_id = u.user_id |
|||
LEFT JOIN sys_dept sdept2 ON sdept.dept_id = sdept2.dept_id |
|||
<where> |
|||
u.is_used = '1' |
|||
<if test="whereJson.blurry != null"> |
|||
AND (u.username LIKE #{whereJson.blurry} or |
|||
u.person_name LIKE #{whereJson.blurry}) |
|||
</if> |
|||
</where> |
|||
ORDER BY u.create_time DESC |
|||
</select> |
|||
|
|||
</mapper> |
@ -0,0 +1,83 @@ |
|||
package org.nl.wms.database.workshop.service.impl; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.alibaba.fastjson.JSONArray; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import org.nl.common.domain.query.PageQuery; |
|||
import org.nl.common.utils.SecurityUtils; |
|||
import org.nl.wms.database.workshop.service.IStIvtUsershopService; |
|||
import org.nl.wms.database.workshop.service.dao.MdBaseWorkshop; |
|||
import org.nl.wms.database.workshop.service.dao.StIvtUsershop; |
|||
import org.nl.wms.database.workshop.service.dao.mapper.StIvtUsershopMapper; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* <p> |
|||
* 服务实现类 |
|||
* </p> |
|||
* |
|||
* @author author |
|||
* @since 2025-07-31 |
|||
*/ |
|||
@Service |
|||
public class StIvtUsershopServiceImpl extends ServiceImpl<StIvtUsershopMapper, StIvtUsershop> implements IStIvtUsershopService { |
|||
|
|||
@Override |
|||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) { |
|||
IPage<JSONObject> pages = new Page<>(page.getPage() + 1, page.getSize()); |
|||
pages = this.baseMapper.selectPageLeftJoin(pages, whereJson); |
|||
return pages; |
|||
} |
|||
|
|||
@Override |
|||
public void save(JSONObject whereJson) { |
|||
JSONObject jo = whereJson.getJSONObject("jo"); |
|||
JSONArray rows = whereJson.getJSONArray("rows"); |
|||
String user_id = jo.getString("user_id"); |
|||
this.removeById(user_id); |
|||
for (int i = 0; i < rows.size(); i++) { |
|||
JSONObject row = rows.getJSONObject(i); |
|||
String work_shop = row.getString("work_shop"); |
|||
StIvtUsershop stIvtUsershop = new StIvtUsershop(); |
|||
stIvtUsershop.setUser_id(user_id); |
|||
stIvtUsershop.setWork_shop(work_shop); |
|||
this.save(stIvtUsershop); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public List<StIvtUsershop> queryUserStor(JSONObject whereJson) { |
|||
String user_id = whereJson.getString("user_id"); |
|||
List<StIvtUsershop> list = this.list( |
|||
new QueryWrapper<StIvtUsershop>().lambda() |
|||
.eq(StIvtUsershop::getUser_id, user_id) |
|||
); |
|||
return list; |
|||
} |
|||
|
|||
@Override |
|||
public List<String> getWorkShop() { |
|||
String currentUserId = SecurityUtils.getCurrentUserId(); |
|||
List<StIvtUsershop> list = this.list( |
|||
new QueryWrapper<StIvtUsershop>().lambda() |
|||
.eq(StIvtUsershop::getUser_id, currentUserId) |
|||
); |
|||
List<String> collect = list.stream() |
|||
.map(StIvtUsershop::getWork_shop) |
|||
.collect(Collectors.toList()); |
|||
|
|||
if (ObjectUtil.isEmpty(collect)) { |
|||
collect = null; |
|||
} |
|||
return collect; |
|||
} |
|||
} |
@ -0,0 +1,150 @@ |
|||
package org.nl.wms.sch.task_manage.task.tasks.fj; |
|||
|
|||
import cn.hutool.core.date.DateUtil; |
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import com.alibaba.fastjson.JSONObject; |
|||
import org.nl.common.exception.BadRequestException; |
|||
import org.nl.common.utils.SecurityUtils; |
|||
import org.nl.config.IdUtil; |
|||
import org.nl.wms.ext.mes.service.WmsToMesService; |
|||
import org.nl.wms.sch.task.service.ISchBaseTaskService; |
|||
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; |
|||
import org.nl.wms.sch.task.service.dao.SchBaseTask; |
|||
import org.nl.wms.sch.task_manage.AbstractTask; |
|||
import org.nl.wms.sch.task_manage.AcsTaskDto; |
|||
import org.nl.wms.sch.task_manage.GeneralDefinition; |
|||
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; |
|||
import org.nl.wms.sch.task_manage.task.TaskType; |
|||
import org.nl.wms.sch.task_manage.task.core.TaskStatus; |
|||
import org.nl.wms.util.TaskUtils; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.stereotype.Component; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
/** |
|||
* @Author: lxy |
|||
* @Description: 二期公共任务配置 |
|||
* @Date: 2025/7/30 |
|||
*/ |
|||
@Component(value = "TWOPUBTask") |
|||
@TaskType("TWOPUBTask") |
|||
public class TWOPUBTask extends AbstractTask { |
|||
@Autowired |
|||
private ISchBaseTaskService taskService; |
|||
|
|||
@Autowired |
|||
private ISchBaseTaskconfigService taskConfigService; |
|||
|
|||
@Autowired |
|||
private WmsToMesService wmsToMesService; |
|||
|
|||
@Override |
|||
public String create(JSONObject json) { |
|||
SchBaseTask task = new SchBaseTask(); |
|||
task.setTask_id(IdUtil.getStringId()); |
|||
task.setTask_code(json.getString("TaskCode")); |
|||
task.setTask_status(TaskStatus.CREATE.getCode()); |
|||
task.setConfig_code(json.getString("task_type")); |
|||
task.setPoint_code1(json.getString("PickingLocation")); |
|||
task.setPoint_code2(json.getString("PlacedLocation")); |
|||
task.setIs_vehicle(json.getString("IsPanCode")); |
|||
task.setExt_group_data(json.getString("CarryIsEmptyTuoPan")); |
|||
task.setRequest_param(json.toString()); |
|||
task.setPriority(json.getString("Priority")); |
|||
task.setCreate_id(SecurityUtils.getCurrentUserId()); |
|||
task.setCreate_name(SecurityUtils.getCurrentNickName()); |
|||
task.setCreate_time(DateUtil.now()); |
|||
task.setWorkshop_code("A2"); |
|||
taskService.save(task); |
|||
return task.getTask_id(); |
|||
} |
|||
|
|||
@Override |
|||
public AcsTaskDto sendAcsParam(String taskId) { |
|||
SchBaseTask taskDao = taskService.getById(taskId); |
|||
|
|||
// 组织下发给acs的数据
|
|||
AcsTaskDto acsTaskDto = new AcsTaskDto(); |
|||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); |
|||
acsTaskDto.setTask_code(taskDao.getTask_code()); |
|||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); |
|||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); |
|||
acsTaskDto.setPriority(taskDao.getPriority()); |
|||
acsTaskDto.setTask_type("1"); |
|||
acsTaskDto.setDtl_type("2"); |
|||
acsTaskDto.setIs_vehicle(taskDao.getIs_vehicle()); |
|||
acsTaskDto.setIs_empvehicle(taskDao.getExt_group_data()); |
|||
|
|||
return acsTaskDto; |
|||
} |
|||
|
|||
@Override |
|||
protected void updateStatus(String task_code, TaskStatus status) { |
|||
// 校验任务
|
|||
SchBaseTask taskObj = taskService.getByCode(task_code); |
|||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { |
|||
throw new BadRequestException("该任务已完成!"); |
|||
} |
|||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { |
|||
throw new BadRequestException("该任务已取消!"); |
|||
} |
|||
// 根据传来的类型去对任务进行操作
|
|||
if (status.equals(TaskStatus.EXECUTING)) { |
|||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); |
|||
taskObj.setRemark("执行中"); |
|||
TaskUtils.setUpdateByAcs(taskObj); |
|||
taskService.updateById(taskObj); |
|||
} |
|||
if (status.equals(TaskStatus.FINISHED)) { |
|||
this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); |
|||
} |
|||
if (status.equals(TaskStatus.CANCELED)) { |
|||
this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); |
|||
} |
|||
} |
|||
|
|||
@Override |
|||
public void forceFinish(String task_code) { |
|||
SchBaseTask taskObj = taskService.getByCode(task_code); |
|||
if (ObjectUtil.isEmpty(taskObj)) { |
|||
throw new BadRequestException("该任务不存在"); |
|||
} |
|||
this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); |
|||
} |
|||
|
|||
@Override |
|||
public void cancel(String task_code) { |
|||
SchBaseTask taskObj = taskService.getByCode(task_code); |
|||
if (ObjectUtil.isEmpty(taskObj)) { |
|||
throw new BadRequestException("该任务不存在"); |
|||
} |
|||
this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); |
|||
} |
|||
|
|||
@Override |
|||
public void backMes(String task_code) { |
|||
wmsToMesService.receiveTaskStatusMesData(taskService.getByCode(task_code)); |
|||
} |
|||
|
|||
@Transactional(rollbackFor = Exception.class) |
|||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { |
|||
// 任务完成
|
|||
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); |
|||
taskObj.setRemark(GeneralDefinition.TASK_FINISH); |
|||
taskObj.setFinished_type(taskFinishedType.getCode()); |
|||
TaskUtils.setUpdateByType(taskObj, taskFinishedType); |
|||
taskService.updateById(taskObj); |
|||
|
|||
// 通知mes任务完成
|
|||
wmsToMesService.receiveTaskStatusMesData(taskObj); |
|||
} |
|||
|
|||
@Transactional(rollbackFor = Exception.class) |
|||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { |
|||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL); |
|||
taskObj.setTask_status(TaskStatus.CANCELED.getCode()); |
|||
taskObj.setFinished_type(taskFinishedType.getCode()); |
|||
TaskUtils.setUpdateByType(taskObj, taskFinishedType); |
|||
taskService.updateById(taskObj); |
|||
} |
|||
} |
@ -0,0 +1,322 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<!--工具栏--> |
|||
<div class="head-container"> |
|||
<div v-if="crud.props.searchToggle"> |
|||
<!-- 搜索 --> |
|||
<el-input |
|||
v-model="query.blurry" |
|||
size="mini" |
|||
clearable |
|||
placeholder="输入名称或者描述搜索" |
|||
style="width: 200px;" |
|||
class="filter-item" |
|||
@keyup.enter.native="crud.toQuery" |
|||
/> |
|||
<rrOperation/> |
|||
</div> |
|||
<crudOperation :permission="permission"/> |
|||
</div> |
|||
<!-- 表单渲染 --> |
|||
<el-row :gutter="15"> |
|||
<!--角色管理--> |
|||
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="17" style="margin-bottom: 10px"> |
|||
<el-card class="box-card" shadow="never"> |
|||
<div slot="header" class="clearfix"> |
|||
<span class="role-span">角色列表</span> |
|||
</div> |
|||
<el-table |
|||
ref="table" |
|||
v-loading="crud.loading" |
|||
highlight-current-row |
|||
style="width: 100%;" |
|||
:data="crud.data" |
|||
@selection-change="crud.selectionChangeHandler" |
|||
@current-change="handleCurrentChange" |
|||
> |
|||
<el-table-column show-overflow-tooltip prop="username" label="用户名"/> |
|||
<el-table-column show-overflow-tooltip prop="person_name" label="姓名"/> |
|||
<el-table-column prop="name" label="部门"/> |
|||
</el-table> |
|||
<!--分页组件--> |
|||
<pagination/> |
|||
</el-card> |
|||
</el-col> |
|||
<!-- 菜单授权 --> |
|||
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="7"> |
|||
<el-card class="box-card" shadow="never"> |
|||
<div slot="header" class="clearfix"> |
|||
<el-tooltip class="item" effect="dark" content="选择指定角色分配菜单" placement="top"> |
|||
<span class="role-span">仓库选择</span> |
|||
</el-tooltip> |
|||
<el-button |
|||
v-permission="['admin','roles:edit']" |
|||
:disabled="!showButton" |
|||
:loading="menuLoading" |
|||
icon="el-icon-check" |
|||
size="mini" |
|||
style="float: right; padding: 6px 9px" |
|||
type="primary" |
|||
@click="saveMenu" |
|||
>保存 |
|||
</el-button> |
|||
</div> |
|||
<el-table |
|||
ref="multipleTable" |
|||
:data="tableData" |
|||
tooltip-effect="dark" |
|||
style="width: 100%" |
|||
@selection-change="handleSelectionChange"> |
|||
<el-table-column |
|||
type="selection" |
|||
width="55"> |
|||
</el-table-column> |
|||
<el-table-column prop="work_shop" label="车间编码" /> |
|||
<el-table-column prop="work_name" label="车间名称"/> |
|||
</el-table> |
|||
</el-card> |
|||
</el-col> |
|||
</el-row> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import crudUserStor from '@/views/wms/basedata/userworkshop/userStor' |
|||
import { getDepts, getDeptSuperior } from '@/views/system/dept/dept' |
|||
import { getChild, getMenusTree } from '@/views/system/menu/menu' |
|||
import CRUD, { crud, form, header, presenter } from '@crud/crud' |
|||
import rrOperation from '@crud/RR.operation' |
|||
import crudOperation from '@crud/CRUD.operation' |
|||
import udOperation from '@crud/UD.operation' |
|||
import pagination from '@crud/Pagination' |
|||
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' |
|||
import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
|||
import DateRangePicker from '@/components/DateRangePicker/index' |
|||
|
|||
const defaultForm = { id: null, name: null, depts: [], description: null, dataScope: '全部', level: 3 } |
|||
export default { |
|||
name: 'userWorkShop', |
|||
components: { Treeselect, pagination, crudOperation, rrOperation, udOperation, DateRangePicker }, |
|||
cruds() { |
|||
return CRUD({ |
|||
title: '角色', |
|||
url: 'api/userStor', |
|||
crudMethod: { ...crudUserStor }, |
|||
optShow: { add: false, reset: false, edit: false, del: false } |
|||
}) |
|||
}, |
|||
mixins: [presenter(), header(), form(defaultForm), crud()], |
|||
data() { |
|||
return { |
|||
level: 3, |
|||
currentId: 0, menuLoading: false, showButton: false, |
|||
menus: [], menuIds: [], depts: [], deptDatas: [], // 多选时使用 |
|||
tableData: [ |
|||
{ 'work_shop': 'A1', 'work_name': '车间一' }, |
|||
{ 'work_shop': 'A2', 'work_name': '车间二' } |
|||
], |
|||
currentRow: null, |
|||
permission: { |
|||
add: ['admin', 'roles:add'], |
|||
edit: ['admin', 'roles:edit'], |
|||
del: ['admin', 'roles:del'] |
|||
}, |
|||
rules: { |
|||
name: [ |
|||
{ required: true, message: '请输入名称', trigger: 'blur' } |
|||
], |
|||
permission: [ |
|||
{ required: true, message: '请输入权限', trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
getMenuDatas(node, resolve) { |
|||
setTimeout(() => { |
|||
getMenusTree(node.data.id ? node.data.id : 0).then(res => { |
|||
resolve(res) |
|||
}) |
|||
}, 100) |
|||
}, |
|||
[CRUD.HOOK.afterRefresh]() { |
|||
this.$refs.menu.setCheckedKeys([]) |
|||
}, |
|||
// 新增前初始化部门信息 |
|||
[CRUD.HOOK.beforeToAdd]() { |
|||
this.deptDatas = [] |
|||
}, |
|||
// 编辑前初始化自定义数据权限的部门信息 |
|||
[CRUD.HOOK.beforeToEdit](crud, form) { |
|||
this.deptDatas = [] |
|||
if (form.dataScope === '自定义') { |
|||
this.getSupDepts(form.depts) |
|||
} |
|||
const _this = this |
|||
form.depts.forEach(function(dept) { |
|||
_this.deptDatas.push(dept.id) |
|||
}) |
|||
}, |
|||
// 提交前做的操作 |
|||
[CRUD.HOOK.afterValidateCU](crud) { |
|||
if (crud.form.dataScope === '自定义' && this.deptDatas.length === 0) { |
|||
this.$message({ |
|||
message: '自定义数据权限不能为空', |
|||
type: 'warning' |
|||
}) |
|||
return false |
|||
} else if (crud.form.dataScope === '自定义') { |
|||
const depts = [] |
|||
this.deptDatas.forEach(function(data) { |
|||
const dept = { id: data } |
|||
depts.push(dept) |
|||
}) |
|||
crud.form.depts = depts |
|||
} else { |
|||
crud.form.depts = [] |
|||
} |
|||
return true |
|||
}, |
|||
// 触发单选 |
|||
handleCurrentChange(val) { |
|||
if (val) { |
|||
this.showButton = true |
|||
this.$refs.multipleTable.clearSelection() |
|||
this.currentRow = val |
|||
crudUserStor.queryUserStor(val).then(res => { |
|||
res.forEach(row => { |
|||
this.tableData.forEach(selected => { |
|||
if (selected.work_shop === row.work_shop) { |
|||
this.$refs.multipleTable.toggleRowSelection(selected, true) |
|||
} |
|||
}) |
|||
}) |
|||
}) |
|||
} |
|||
}, |
|||
menuChange(menu) { |
|||
// 获取该节点的所有子节点,id 包含自身 |
|||
getChild(menu.id).then(childIds => { |
|||
// 判断是否在 menuIds 中,如果存在则删除,否则添加 |
|||
if (this.menuIds.indexOf(menu.id) !== -1) { |
|||
for (let i = 0; i < childIds.length; i++) { |
|||
const index = this.menuIds.indexOf(childIds[i]) |
|||
if (index !== -1) { |
|||
this.menuIds.splice(index, 1) |
|||
} |
|||
} |
|||
} else { |
|||
for (let i = 0; i < childIds.length; i++) { |
|||
const index = this.menuIds.indexOf(childIds[i]) |
|||
if (index === -1) { |
|||
this.menuIds.push(childIds[i]) |
|||
} |
|||
} |
|||
} |
|||
this.$refs.menu.setCheckedKeys(this.menuIds) |
|||
}) |
|||
}, |
|||
// 保存菜单 |
|||
saveMenu() { |
|||
const row = {} |
|||
row.jo = this.currentRow |
|||
row.rows = this.$refs.multipleTable.selection |
|||
crudUserStor.save(row).then(res => { |
|||
this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS) |
|||
}) |
|||
}, |
|||
// 改变数据 |
|||
update() { |
|||
// 无刷新更新 表格数据 |
|||
crudRoles.get(this.currentId).then(res => { |
|||
for (let i = 0; i < this.crud.data.length; i++) { |
|||
if (res.id === this.crud.data[i].id) { |
|||
this.crud.data[i] = res |
|||
break |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
// 获取部门数据 |
|||
getDepts() { |
|||
getDepts({ enabled: true }).then(res => { |
|||
this.depts = res.content.map(function(obj) { |
|||
if (obj.hasChildren) { |
|||
obj.children = null |
|||
} |
|||
return obj |
|||
}) |
|||
}) |
|||
}, |
|||
getSupDepts(depts) { |
|||
const ids = [] |
|||
depts.forEach(dept => { |
|||
ids.push(dept.id) |
|||
}) |
|||
getDeptSuperior(ids).then(res => { |
|||
const date = res.content |
|||
this.buildDepts(date) |
|||
this.depts = date |
|||
}) |
|||
}, |
|||
buildDepts(depts) { |
|||
depts.forEach(data => { |
|||
if (data.children) { |
|||
this.buildDepts(data.children) |
|||
} |
|||
if (data.hasChildren && !data.children) { |
|||
data.children = null |
|||
} |
|||
}) |
|||
}, |
|||
// 获取弹窗内部门数据 |
|||
loadDepts({ action, parentNode, callback }) { |
|||
if (action === LOAD_CHILDREN_OPTIONS) { |
|||
getDepts({ enabled: true, pid: parentNode.id }).then(res => { |
|||
parentNode.children = res.content.map(function(obj) { |
|||
if (obj.hasChildren) { |
|||
obj.children = null |
|||
} |
|||
return obj |
|||
}) |
|||
setTimeout(() => { |
|||
callback() |
|||
}, 200) |
|||
}) |
|||
} |
|||
}, |
|||
// 如果数据权限为自定义则获取部门数据 |
|||
changeScope() { |
|||
if (this.form.dataScope === '自定义') { |
|||
this.getDepts() |
|||
} |
|||
}, |
|||
checkboxT(row) { |
|||
return row.level >= this.level |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style rel="stylesheet/scss" lang="scss"> |
|||
.role-span { |
|||
font-weight: bold; |
|||
color: #303133; |
|||
font-size: 15px; |
|||
} |
|||
</style> |
|||
|
|||
<style rel="stylesheet/scss" lang="scss" scoped> |
|||
::v-deep .el-input-number .el-input__inner { |
|||
text-align: left; |
|||
} |
|||
|
|||
::v-deep .vue-treeselect__multi-value { |
|||
margin-bottom: 0; |
|||
} |
|||
|
|||
::v-deep .vue-treeselect__multi-value-item { |
|||
border: 0; |
|||
padding: 0; |
|||
} |
|||
</style> |
@ -0,0 +1,43 @@ |
|||
import request from '@/utils/request' |
|||
|
|||
export function queryStor(data) { |
|||
return request({ |
|||
url: '/api/userStor/queryStor', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function queryUserStor(data) { |
|||
return request({ |
|||
url: '/api/userStor/queryUserStor', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function save(data) { |
|||
return request({ |
|||
url: '/api/userStor/save', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function getUserStor(data) { |
|||
return request({ |
|||
url: '/api/userStor/getUserStor', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export function getSect(data) { |
|||
return request({ |
|||
url: '/api/userStor/getSect', |
|||
method: 'post', |
|||
data |
|||
}) |
|||
} |
|||
|
|||
export default { queryUserStor, queryStor, save, getUserStor, getSect } |
Loading…
Reference in new issue