fix: 国际化优化、任务管理修改

This commit is contained in:
2024-04-08 11:01:56 +08:00
parent 5c533fff98
commit 47e497cb1e
25 changed files with 591 additions and 222 deletions

View File

@@ -15,13 +15,11 @@ import org.nl.config.SpringContextHolder;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse; import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.enums.TaskDirectionEnum; import org.nl.wms.sch.task_manage.enums.TaskDirectionEnum;
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.TaskUtils; import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -29,7 +27,6 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/** /**
* @author ldjun * @author ldjun
@@ -55,6 +52,7 @@ public abstract class AbstractTask {
/** /**
* 任务创建 * 任务创建
* 根据配置生成任务,如并发控制等 * 根据配置生成任务,如并发控制等
*
* @throws BadRequestException / * @throws BadRequestException /
*/ */
protected abstract void create() throws BadRequestException; protected abstract void create() throws BadRequestException;
@@ -62,9 +60,11 @@ public abstract class AbstractTask {
/** /**
* 任务创建 * 任务创建
* 只会创建完整的任务,创建失败则抛出异常 * 只会创建完整的任务,创建失败则抛出异常
*
* @param task / * @param task /
*/ */
protected void createCompletion(SchBaseTask task){} protected void createCompletion(SchBaseTask task) {
}
/** /**
@@ -92,15 +92,9 @@ public abstract class AbstractTask {
//1、获取任务 //1、获取任务
//2、根据任务配置补全任务 //2、根据任务配置补全任务
//3、下发 //3、下发
List<AcsTaskDto> list = new CopyOnWriteArrayList<>(); List<AcsTaskDto> list = new ArrayList<>();
for (SchBaseTask task : taskList) { for (SchBaseTask task : taskList) {
AcsTaskDto taskDto = new AcsTaskDto(); AcsTaskDto taskDto = new AcsTaskDto();
String responseParam = task.getResponse_param();
if (ObjectUtil.isNotEmpty(responseParam)) {
JSONObject jsonObject = JSONObject.parseObject(responseParam);
taskDto.setDirection(jsonObject.getString("direction"));
taskDto.setPut_device_code(jsonObject.getString("fmj_device"));
}
taskDto.setExt_task_uuid(task.getTask_id()); taskDto.setExt_task_uuid(task.getTask_id());
taskDto.setTask_code(task.getTask_code()); taskDto.setTask_code(task.getTask_code());
taskDto.setRoute_plan_code("normal"); taskDto.setRoute_plan_code("normal");
@@ -110,7 +104,8 @@ public abstract class AbstractTask {
taskDto.setNext_device_code2(task.getPoint_code4()); taskDto.setNext_device_code2(task.getPoint_code4());
taskDto.setVehicle_code(task.getVehicle_code()); taskDto.setVehicle_code(task.getVehicle_code());
taskDto.setVehicle_code2(task.getVehicle_code2()); taskDto.setVehicle_code2(task.getVehicle_code2());
// todo: 如果各类方法对返回参数有不同,可以通过调用子类实现的具体方法来完成赋值,也可以是统一封装到参数值中。 // 如果各类方法对返回参数有不同,可以通过调用子类实现的deliveryBeforeProcessing方法来完成赋值,也可以是统一封装到参数值中。
this.deliveryBeforeProcessing(task, taskDto);
this.setTask(task.getConfig_code(), taskDto); this.setTask(task.getConfig_code(), taskDto);
list.add(taskDto); list.add(taskDto);
} }
@@ -135,7 +130,7 @@ public abstract class AbstractTask {
String taskCode = errObj.getString("task_code"); String taskCode = errObj.getString("task_code");
if (taskCode.equals(schBaseTask.getTask_code())) { if (taskCode.equals(schBaseTask.getTask_code())) {
// 出错的任务就设置出错信息为备注,不是出错就设置下发 // 出错的任务就设置出错信息为备注,不是出错就设置下发
schBaseTask.setTask_status(TaskStatus.CREATED.getCode()); schBaseTask.setTask_status(TaskStatus.START_AND_POINT.getCode());
schBaseTask.setRemark(errObj.getString("message")); schBaseTask.setRemark(errObj.getString("message"));
break; break;
} }
@@ -168,8 +163,10 @@ public abstract class AbstractTask {
public void getAllFinishTask() { public void getAllFinishTask() {
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>() List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_status, TaskStatus.CREATED.getCode())); .eq(SchBaseTask::getTask_status, TaskStatus.START_AND_POINT.getCode()));
if (ObjectUtil.isEmpty(list)) return; if (ObjectUtil.isEmpty(list)) {
return;
}
// 下发 // 下发
this.renotifyAcs(list); this.renotifyAcs(list);
} }
@@ -189,8 +186,9 @@ public abstract class AbstractTask {
/** /**
* 修改状态 * 修改状态
* 以下改为public会出现自动注入类出现问题 * 以下改为public会出现自动注入类出现问题
*
* @param task_code / * @param task_code /
* @param status / * @param status /
*/ */
protected abstract void updateStatus(String task_code, TaskStatus status); protected abstract void updateStatus(String task_code, TaskStatus status);
@@ -222,7 +220,16 @@ public abstract class AbstractTask {
} }
/** /**
* 强制结束完成任务 * 下发前的处理可以根据任务类进行给acs任务类更新数据
* @param task LMS任务
* @param acsTaskDto ACS任务
*/
public void deliveryBeforeProcessing(SchBaseTask task, AcsTaskDto acsTaskDto) {
}
/**
* 强制结束完成任务
*
* @param task_code 任务标识 * @param task_code 任务标识
* @return * @return
* @discription 强制结束完成任务 * @discription 强制结束完成任务
@@ -240,67 +247,44 @@ public abstract class AbstractTask {
/** /**
* 申请任务 * 申请任务
* * <p>创建task的总入口会根据自定义的子类去执行创建方法。</p>
* @param param * @param param 请求任务的参数可以是只确定了单个点也可以是4个点都确定了
* @throws BadRequestException * @throws BadRequestException 如果创建失败
*/ */
public void apply(JSONObject param) throws BadRequestException { public void apply(JSONObject param) throws BadRequestException {
// 申请任务 // 申请任务
SchBaseTask task = new SchBaseTask(); SchBaseTask task = new SchBaseTask();
// 请求点 // 请求点
String apply_point_code = param.getString("device_code");
String config_code = param.getString("config_code");
String requestNo = param.getString("requestNo"); String requestNo = param.getString("requestNo");
String vehicleType = param.getString("vehicle_type"); String vehicleType = param.getString("vehicle_type");
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code")); String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
AbstractTask bean = SpringContextHolder.getBean(this.getClass()); AbstractTask bean = SpringContextHolder.getBean(this.getClass());
// 1、校验数据 // 1、校验数据
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
.eq(SchBaseTaskconfig::getConfig_code, config_code));
Assert.notNull(taskConfig, "找不到配置文件,请确认[" + config_code + "]配置是否存在!");
// 最大任务数
Integer tcmn = taskConfig.getTask_create_max_num();
// 获取执行中的任务
List<SchBaseTask> unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(
taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction());
Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn,
apply_point_code + "该点位申请的任务未完成数已超过上限,无法申请任务");
// 获取对接位点位对象
SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, apply_point_code));
// 判断是否校验工单
if (taskConfig.getIs_check_workorder()) {
// 校验工单
// param.put("workorder_code", workorder.getWorkorder_code());
// 设置任务数据
}
// 校验是否需要自动agv
if (!pointObj.getIs_auto()) {
// 如果不需要自动,则不创建任务
return;
}
// 2、创建申请任务 // 2、创建申请任务
task.setAcs_trace_id(requestNo); task.setAcs_trace_id(requestNo);
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setConfig_code(config_code); task.setCreate_mode(ObjectUtil.isNotEmpty(param.getString("create_mode"))
task.setCreate_mode(GeneralDefinition.ACS_CREATION); ? param.getString("create_mode") : GeneralDefinition.ACS_CREATION);
task.setVehicle_code(vehicleCode); task.setVehicle_code(vehicleCode);
task.setVehicle_qty(param.getInteger("vehicle_qty")); task.setVehicle_qty(param.getInteger("vehicle_qty"));
task.setVehicle_type(vehicleType); task.setVehicle_type(vehicleType);
task.setTask_status(TaskStatus.APPLY.getCode()); task.setTask_status(TaskStatus.APPLY.getCode());
task.setWorkshop_code(taskConfig.getWorkshop_code()); task.setProduct_area(param.getString("product_area"));
// 设置起/终点 // 设置起/终点
bean.setTaskPoint(taskConfig, task, apply_point_code); task.setPoint_code1(param.getString("point_code1"));
task.setPoint_code2(param.getString("point_code2"));
task.setPoint_code3(param.getString("point_code3"));
task.setPoint_code4(param.getString("point_code4"));
task.setRequest_param(JSONObject.toJSONString(param)); task.setRequest_param(JSONObject.toJSONString(param));
// 设置创建人信息 // 设置创建人信息
TaskUtils.setCreateByAcsOrPda(task, param); TaskUtils.setCreateByAcsOrPda(task, param);
// 3、判断是否直接找点下发 // 3、判断是否直接找点下发
// 立即创建吧组盘放到具体位置,免得重复创建 // 立即创建吧组盘放到具体位置,免得重复创建
if (taskConfig.getIs_immediate_create()) { if ("1".equals(param.getString("is_immediate_create"))) {
bean.createCompletion(task); bean.createCompletion(task);
} else { // 不需要立即创建,需要立马组盘 } else {
// 不需要立即创建
// 设置组盘 - 需要的话由子类自行实现 // 设置组盘 - 需要的话由子类自行实现
// todo: 如果不需要这种场景,可以换成其他使用场景,目的是由策略角色去完善对此字段赋值 // todo: 如果不需要这种场景,可以换成其他使用场景,目的是由策略角色去完善对此字段赋值
task.setGroup_id(bean.setGroupPlate(param)); task.setGroup_id(bean.setGroupPlate(param));

View File

@@ -1,4 +1,5 @@
package org.nl.wms.sch.task_manage.task.second_floor_area; package org.nl.wms.sch.task_manage.task.second_floor_area;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.BooleanUtil; import cn.hutool.core.util.BooleanUtil;
@@ -17,6 +18,7 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.storage_manage.ios.enums.IOSEnum; import org.nl.wms.storage_manage.ios.enums.IOSEnum;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -76,7 +78,7 @@ public class CallEmpReelTask extends AbstractTask {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(String task_code, TaskStatus status) { public void updateTaskStatus(String task_code, TaskStatus status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq( SchBaseTask::getTask_code,task_code), false); SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_code, task_code), false);
if (schBaseTask == null) { if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务更新接口任务号为空"); throw new BadRequestException("CallEmpReelTask任务更新接口任务号为空");
} }
@@ -134,13 +136,13 @@ public class CallEmpReelTask extends AbstractTask {
task.setTask_id(org.nl.common.utils.IdUtil.getStringId()); task.setTask_id(org.nl.common.utils.IdUtil.getStringId());
task.setTask_code(org.nl.common.utils.IdUtil.getStringId()); task.setTask_code(org.nl.common.utils.IdUtil.getStringId());
task.setHandle_class(THIS_CLASS); task.setHandle_class(THIS_CLASS);
task.setCreate_id(SecurityUtils.getCurrentUserId()); task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentUsername()); task.setCreate_name(SecurityUtils.getCurrentUsername());
task.setCreate_time(DateUtil.now()); task.setCreate_time(DateUtil.now());
task.setIs_send(isSend ? "1" : "0"); task.setIs_send(isSend ? "1" : "0");
task.setAcs_task_type(StrUtil.isEmpty(task.getAcs_task_type()) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : (task.getAcs_task_type())); task.setAcs_task_type(StrUtil.isEmpty(task.getAcs_task_type()) ? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : (task.getAcs_task_type()));
task.setTask_status(StrUtil.isEmpty(task.getTask_status()) ? TaskStatus.START_AND_POINT.getCode() : task.getTask_status()); task.setTask_status(StrUtil.isEmpty(task.getTask_status()) ? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
task.setProduct_area(StrUtil.isEmpty(task.getProduct_area()) ? "A1" : task.getProduct_area()); task.setProduct_area(StrUtil.isEmpty(task.getProduct_area()) ? "A1" : task.getProduct_area());
taskService.save(task); taskService.save(task);
//如果目标点位没有空位先创建不下发 //如果目标点位没有空位先创建不下发
if (isSend) { if (isSend) {

View File

@@ -1,7 +1,7 @@
import zhLocale from 'element-ui/lib/locale/lang/zh-CN' import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
import zh from './zh-CN' import zh from './zh-CN'
import menu from './menu/zh' import menu from './menu/zh'
import param from './dict/zh' import param from './param/zh'
import customer from './customer/zh' import customer from './customer/zh'
import unit from './unit/zh' import unit from './unit/zh'
import vehicleInfo from './vehicle/info/zh' import vehicleInfo from './vehicle/info/zh'
@@ -16,6 +16,8 @@ import record from './record/zh'
import errorLog from './log/error/zh' import errorLog from './log/error/zh'
import online from './online/zh' import online from './online/zh'
import classification from './baseclass/zh' import classification from './baseclass/zh'
import role from './role/zh'
import corn from './scheduling/corn/zh'
export default { export default {
...zhLocale, ...zhLocale,
@@ -35,5 +37,7 @@ export default {
...record, ...record,
...errorLog, ...errorLog,
...online, ...online,
...classification ...classification,
...role,
...corn
} }

View File

@@ -1,7 +1,7 @@
import enLocale from 'element-ui/lib/locale/lang/en' import enLocale from 'element-ui/lib/locale/lang/en'
import en from './en' import en from './en'
import menu from './menu/en' import menu from './menu/en'
import param from './dict/en' import param from './param/en'
import customer from './customer/en' import customer from './customer/en'
import unit from './unit/en' import unit from './unit/en'
import vehicleInfo from './vehicle/info/en' import vehicleInfo from './vehicle/info/en'
@@ -16,6 +16,8 @@ import record from './record/en'
import errorLog from './log/error/en' import errorLog from './log/error/en'
import online from './online/en' import online from './online/en'
import classification from './baseclass/en' import classification from './baseclass/en'
import role from './role/en'
import corn from './scheduling/corn/en'
export default { export default {
...enLocale, ...enLocale,
@@ -35,5 +37,7 @@ export default {
...record, ...record,
...errorLog, ...errorLog,
...online, ...online,
...classification ...classification,
...role,
...corn
} }

View File

@@ -1,7 +1,7 @@
import idLocale from 'element-ui/lib/locale/lang/id' import idLocale from 'element-ui/lib/locale/lang/id'
import id from './in' import id from './in'
import menu from './menu/in' import menu from './menu/in'
import param from './dict/in' import param from './param/in'
import customer from './customer/in' import customer from './customer/in'
import unit from './unit/in' import unit from './unit/in'
import vehicleInfo from './vehicle/info/in' import vehicleInfo from './vehicle/info/in'
@@ -16,6 +16,8 @@ import record from './record/in'
import errorLog from './log/error/in' import errorLog from './log/error/in'
import online from './online/in' import online from './online/in'
import classification from './baseclass/in' import classification from './baseclass/in'
import role from './role/in'
import corn from './scheduling/corn/in'
export default { export default {
...idLocale, ...idLocale,
@@ -35,5 +37,7 @@ export default {
...record, ...record,
...errorLog, ...errorLog,
...online, ...online,
...classification ...classification,
...role,
...corn
} }

View File

@@ -0,0 +1,27 @@
export default {
'Role': {
'title': 'Role Management',
'title_left': 'Role List',
'title_right': 'Menu Assignment',
'save': 'Save',
'table': {
'name': 'Role Name',
'create_time': 'Create Time',
'description': 'Description'
},
'dialog': {
'name': 'role name',
'description': 'description'
},
'rules': {
'NotNull': 'Cannot be empty'
},
'msg': {
'm1': 'Enter name',
'm2': 'Select the Specify Role Assignment menu',
'm3': 'Please enter name',
'm4': 'Please enter permission',
'm5': 'Save Successfully'
}
}
}

View File

@@ -0,0 +1,27 @@
export default {
'Role': {
'title': 'Manajemen Peran',
'title_left': 'Daftar Peran',
'title_right': 'Penugasan Menu',
'save': 'Menyimpan',
'table': {
'name': 'Nama Peran',
'create_time': 'Ciptakan Waktu',
'description': 'Keterangan'
},
'dialog': {
'name': 'nama peran',
'description': 'keterangan'
},
'rules': {
'NotNull': 'Tidak dapat kosong'
},
'msg': {
'm1': 'Masukkan nama',
'm2': 'Pilih menu Tentukan Penetapan Peran',
'm3': 'Silakan masukkan nama',
'm4': 'Silakan masukkan izin',
'm5': 'Simpan Berhasil'
}
}
}

View File

@@ -0,0 +1,27 @@
export default {
'Role': {
'title': '角色管理',
'title_left': '角色列表',
'title_right': '菜单分配',
'save': '保存',
'table': {
'name': '角色名称',
'create_time': '创建日期',
'description': '备注'
},
'dialog': {
'name': '角色名称',
'description': '备注'
},
'rules': {
'NotNull': '不能为空'
},
'msg': {
'm1': '输入名称',
'm2': '选择指定角色分配菜单',
'm3': '请输入名称',
'm4': '请输入权限',
'm5': '保存成功'
}
}
}

View File

@@ -0,0 +1,71 @@
export default {
'cron': {
'tab-name': {
's': 'second',
'min': 'minute',
'h': 'hour',
'd': 'day',
'm': 'month',
'w': 'week',
'y': 'year'
},
'title': 'Time Expression',
'cron-title': 'Cron Expression',
'result-msg1': 'Last 5 running times',
'result-msg2': 'In the calculation result...',
'tip': 'Multiple Choices',
's': {
'm1': 'Second, the allowed wildcard [, - * /]',
'm2': 'Cycle from',
'm3': 'second',
'm4': 'From',
'm5': ' second start, every ',
'm6': 'second execute once',
'm7': 'Specify'
},
'min': {
'm1': 'Minute, the allowed wildcard [, - * /]',
'm2': ' minute start, every ',
'm3': 'minute execute once'
},
'h': {
'm1': 'Hour, the allowed wildcard [, - * /]',
'm2': ' hour start, every ',
'm3': 'hour execute once'
},
'd': {
'm1': 'Day, the allowed wildcard [, - * ? / L W]',
'm2': 'rd start, every ',
'm3': 'day execute once',
'm4': 'monthly ',
'm5': 'rd, the most recent weekday',
'm6': 'Last day of the month',
'm7': 'Not specify'
},
'w': {
'm1': 'Weekthe allowed wildcard [, - * ? / L #]',
'm2': 'Cycle from',
'm3': 'Week',
'm4': 'for',
'm5': 'Last week of the month',
'w1': 'Monday',
'w2': 'Tuesday',
'w3': 'Wednesday',
'w4': 'Thursday',
'w5': 'Friday',
'w6': 'Saturday',
'w7': 'Sunday'
},
'm': {
'm1': 'Month, the allowed wildcard [, - * /]',
'm2': 'month start, every',
'm3': 'months execute once'
},
'y': {
'm1': 'Leave blank, wildcards allowed [, - * /]',
'm2': 'start, every',
'm3': 'years execute once',
'm4': 'Per year'
}
}
}

View File

@@ -0,0 +1,71 @@
export default {
'cron': {
'tab-name': {
's': 'kedua',
'min': 'menit',
'h': 'jam',
'd': 'hari',
'm': 'bulan',
'w': 'pekan',
'y': 'tahun'
},
'title': 'Ekspresi Waktu',
'cron-title': 'Ekspresi Cron',
'result-msg1': '5 kali berjalan terakhir',
'result-msg2': 'Dalam hasil perhitungan...',
'tip': 'Pilihan Ganda',
's': {
'm1': 'Kedua, wildcard yang diperbolehkan [, - * /]',
'm2': 'Siklus dari',
'm3': 'kedua',
'm4': 'Dari',
'm5': ' kedua start, setiap ',
'm6': 'kedua jalankan sekali',
'm7': 'Menentukan'
},
'min': {
'm1': 'Menit, wildcard yang diperbolehkan [, - * /]',
'm2': ' menit start, setiap ',
'm3': 'menit jalankan sekali'
},
'h': {
'm1': 'Jam, wildcard yang diperbolehkan [, - * /]',
'm2': ' jam start, setiap ',
'm3': 'jam jalankan sekali'
},
'd': {
'm1': 'hari, wildcard yang diperbolehkan [, - * ? / L W]',
'm2': 'rd start, setiap ',
'm3': 'hari jalankan sekali',
'm4': 'bulanan ',
'm5': 'rd, hari kerja terbaru',
'm6': 'Hari terakhir bulan ini',
'm7': 'Tidak Menentukan'
},
'w': {
'm1': 'Pekan, wildcard yang diperbolehkan [, - * ? / L #]',
'm2': 'Siklus dari',
'm3': 'Pekan',
'm4': 'untuk',
'm5': 'Minggu terakhir bulan ini',
'w1': 'Senin',
'w2': 'Selasa',
'w3': 'Rabu',
'w4': 'Kamis',
'w5': 'Jumat',
'w6': 'Sabtu',
'w7': 'Minggu'
},
'm': {
'm1': 'Bulan, wildcard yang diperbolehkan [, - * /]',
'm2': ' bulan start, setiap ',
'm3': 'bulan jalankan sekali'
},
'y': {
'm1': 'Biarkan kosong, wildcard diperbolehkan [, - * /]',
'm2': 'start, setiap',
'm3': 'tahun jalankan sekali',
'm4': 'Per tahun'
}
}
}

View File

@@ -0,0 +1,71 @@
export default {
'cron': {
'tab-name': {
's': '秒',
'min': '分钟',
'h': '小时',
'd': '日',
'm': '月',
'w': '周',
'y': '年'
},
'title': '时间表达式',
'cron-title': 'Cron 表达式',
'result-msg1': '最近5次运行时间',
'result-msg2': '计算结果中...',
'tip': '可多选',
's': {
'm1': '秒,允许的通配符[, - * /]',
'm2': '周期从',
'm3': '秒',
'm4': '从',
'm5': '秒开始,每',
'm6': '秒执行一次',
'm7': '指定'
},
'min': {
'm1': '分钟,允许的通配符[, - * /]',
'm2': '分钟开始,每',
'm3': '分钟执行一次'
},
'h': {
'm1': '小时,允许的通配符[, - * /]',
'm2': '小时开始,每',
'm3': '小时执行一次'
},
'd': {
'm1': '日,允许的通配符[, - * ? / L W]',
'm2': '号开始,每',
'm3': '日执行一次',
'm4': '每月',
'm5': '号最近的那个工作日',
'm6': '本月最后一天',
'm7': '不指定'
},
'w': {
'm1': '周,允许的通配符[, - * ? / L #]',
'm2': '周期从',
'm3': '第',
'm4': '周的',
'm5': '本月最后一个星期',
'w1': '星期一',
'w2': '星期二',
'w3': '星期三',
'w4': '星期四',
'w5': '星期五',
'w6': '星期六',
'w7': '星期日'
},
'm': {
'm1': '月,允许的通配符[, - * /]',
'm2': '月开始,每',
'm3': '月执行一次'
},
'y': {
'm1': '不填,允许的通配符[, - * /]',
'm2': '年开始,每',
'm3': '年执行一次',
'm4': '每年'
}
}
}

View File

@@ -1,23 +1,25 @@
export default { export default {
'User': { 'User': {
'title': 'User Management', 'title': 'User Management',
'drawerTitle1': 'Assign Role Permissions',
'drawerTitle2': 'Assign Department Authority',
'placeholder': { 'placeholder': {
'dep_tip': 'Please enter a department name', 'dep_tip': 'Please enter a department name',
'blu_tip': 'Enter the account number or name', 'blu_tip': 'Enter the account number or name',
'dep_select_tip': 'Select a department category' 'dep_select_tip': 'Select a department category'
}, },
'table': { 'table': {
'user_name': 'username', 'user_name': 'UserName',
'person_name': 'name', 'person_name': 'Name',
'gender': 'sex', 'gender': 'Sex',
'phone': 'phone', 'phone': 'Phone',
'email': 'email', 'email': 'Email',
'depts': 'section', 'depts': 'Section',
'enabled': 'state', 'enabled': 'State',
'permission_scope_type': 'permission type', 'permission_scope_type': 'permission type',
'permissionName': 'permission regain', 'permissionName': 'permission regain',
'deptName': 'section name', 'deptName': 'section name',
'create_time': 'create time', 'create_time': 'Create Time',
'create_user': 'create user', 'create_user': 'create user',
'update_time': 'update time', 'update_time': 'update time',
'update_user': 'update user', 'update_user': 'update user',
@@ -27,16 +29,33 @@ export default {
'account': 'Account', 'account': 'Account',
'assign_roles': 'Assign Roles', 'assign_roles': 'Assign Roles',
'locked': 'Lock ', 'locked': 'Lock ',
'activate': 'Activate ' 'activate': 'Activate ',
'role_name': 'Role Name'
}, },
'dialog': { 'dialog': {
'role': 'role', 'role': 'role',
'password': 'password', 'password': 'password',
'sex_male': 'male', 'sex_male': 'male',
'sex_female': 'female' 'sex_female': 'female',
'user_name': 'username',
'person_name': 'name',
'gender': 'sex',
'phone': 'phone',
'email': 'email',
'depts': 'section',
'enabled': 'state'
}, },
'rules': { 'rules': {
'NotNull': 'Cannot be empty' 'NotNull': 'Cannot be empty',
'r1': 'Please select a department'
},
'msg': {
'm1': 'Confirm reset the password?',
'm2': 'Password reset succeeded. Password :123456',
'm3_1': 'This operation will ',
'm3_2': 'Account',
'm3_3': '. Do you want to continue?',
'm3_4': ' Already '
} }
} }
} }

View File

@@ -1,23 +1,25 @@
export default { export default {
'User': { 'User': {
'title': 'Manajemen Pengguna', 'title': 'Manajemen Pengguna',
'drawerTitle1': 'Tetapkan Izin Peran',
'drawerTitle2': 'Tetapkan Otoritas Departemen',
'placeholder': { 'placeholder': {
'dep_tip': 'Silakan masukkan nama departemen', 'dep_tip': 'Silakan masukkan nama departemen',
'blu_tip': 'Masukkan akun atau nama', 'blu_tip': 'Masukkan akun atau nama',
'dep_select_tip': 'Pilih kategori departemen' 'dep_select_tip': 'Pilih kategori departemen'
}, },
'table': { 'table': {
'user_name': 'akun', 'user_name': 'Akun',
'person_name': 'nama', 'person_name': 'Nama',
'gender': 'gender', 'gender': 'Gender',
'phone': 'telepon', 'phone': 'Telepon',
'email': 'kotak surat', 'email': 'Kotak Surat',
'depts': 'departemen', 'depts': 'Departemen',
'enabled': 'keadaan', 'enabled': 'Keadaan',
'permission_scope_type': 'jenis izin', 'permission_scope_type': 'jenis izin',
'permissionName': 'ruang hak', 'permissionName': 'ruang hak',
'deptName': 'nama departemen', 'deptName': 'nama departemen',
'create_time': 'tarikh penciptaan', 'create_time': 'Tarikh Penciptaan',
'create_user': 'pencipta', 'create_user': 'pencipta',
'update_time': 'tanggal modifikasi', 'update_time': 'tanggal modifikasi',
'update_user': 'diubah oleh', 'update_user': 'diubah oleh',
@@ -27,16 +29,33 @@ export default {
'account': 'Akaun', 'account': 'Akaun',
'assign_roles': 'Jadikan Rol', 'assign_roles': 'Jadikan Rol',
'locked': 'Mengunci ', 'locked': 'Mengunci ',
'activate': 'Aktivasi ' 'activate': 'Aktivasi ',
'role_name': 'Nama Peran'
}, },
'dialog': { 'dialog': {
'role': 'peran', 'role': 'peran',
'password': 'sandi', 'password': 'sandi',
'sex_male': 'man', 'sex_male': 'man',
'sex_female': 'wanita' 'sex_female': 'wanita',
'user_name': 'akun',
'person_name': 'nama',
'gender': 'gender',
'phone': 'telepon',
'email': 'kotak surat',
'depts': 'departemen',
'enabled': 'keadaan'
}, },
'rules': { 'rules': {
'NotNull': 'Tidak dapat kosong' 'NotNull': 'Tidak dapat kosong',
'r1': 'Silakan pilih departemen'
},
'msg': {
'm1': 'Konfirmasikan setel ulang kata sandi?',
'm2': 'Penyetelan ulang kata sandi berhasil. Kata sandi :123456',
'm3_1': 'Operasi ini akan terjadi',
'm3_2': 'Akun',
'm3_3': ', Apakah Anda ingin melanjutkan?',
'm3_4': ' Sudah '
} }
} }
} }

View File

@@ -1,6 +1,8 @@
export default { export default {
'User': { 'User': {
'title': '用户管理', 'title': '用户管理',
'drawerTitle1': '分配角色权限',
'drawerTitle2': '分配部门权限',
'placeholder': { 'placeholder': {
'dep_tip': '请输入部门名称', 'dep_tip': '请输入部门名称',
'blu_tip': '输入账号或者名称', 'blu_tip': '输入账号或者名称',
@@ -27,16 +29,33 @@ export default {
'account': '账号', 'account': '账号',
'assign_roles': '分配角色', 'assign_roles': '分配角色',
'locked': '锁定', 'locked': '锁定',
'activate': '激活' 'activate': '激活',
'role_name': '角色名称'
}, },
'dialog': { 'dialog': {
'role': '角色', 'role': '角色',
'password': '密码', 'password': '密码',
'sex_male': '男', 'sex_male': '男',
'sex_female': '女' 'sex_female': '女',
'user_name': '用户名',
'person_name': '姓名',
'gender': '性别',
'phone': '电话',
'email': '邮箱',
'depts': '部门',
'enabled': '状态'
}, },
'rules': { 'rules': {
'NotNull': '不能为空' 'NotNull': '不能为空',
'r1': '请选择部门'
},
'msg': {
'm1': '确认重置密码?',
'm2': '密码重置成功,密码:123456',
'm3_1': '此操作将',
'm3_2': '账号:',
'm3_3': ', 是否继续?',
'm3_4': '已'
} }
} }
} }

View File

@@ -8,7 +8,7 @@
v-model="query.blurry" v-model="query.blurry"
size="mini" size="mini"
clearable clearable
placeholder="输入名称" :placeholder="$t('Role.msg.m1')"
style="width: 200px;" style="width: 200px;"
class="filter-item" class="filter-item"
@keyup.enter.native="crud.toQuery" @keyup.enter.native="crud.toQuery"
@@ -24,19 +24,19 @@
:before-close="crud.cancelCU" :before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0" :visible.sync="crud.status.cu > 0"
:title="crud.status.title" :title="crud.status.title"
width="520px" :width="computedLabelWidth"
> >
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="80px"> <el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
<el-form-item label="角色名称" prop="name"> <el-form-item :label="$t('Role.dialog.name')" prop="name">
<el-input v-model="form.name" style="width: 380px;"/> <el-input v-model="form.name" style="width: 240px;"/>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="description"> <el-form-item :label="$t('Role.dialog.description')" prop="description">
<el-input v-model="form.remark" style="width: 380px;" rows="2" type="textarea"/> <el-input v-model="form.remark" style="width: 240px;" rows="2" type="textarea"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button> <el-button type="text" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button> <el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('common.Confirm') }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-row :gutter="15"> <el-row :gutter="15">
@@ -44,7 +44,7 @@
<el-col :span="12" style="margin-bottom: 10px"> <el-col :span="12" style="margin-bottom: 10px">
<el-card class="box-card" shadow="never"> <el-card class="box-card" shadow="never">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span class="role-span">角色列表</span> <span class="role-span">{{ $t('Role.title_left') }}</span>
</div> </div>
<el-table <el-table
ref="table" ref="table"
@@ -56,16 +56,16 @@
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
> >
<el-table-column type="selection" width="55"/> <el-table-column type="selection" width="55"/>
<el-table-column prop="name" label="名称" min-width="100" show-overflow-tooltip/> <el-table-column prop="name" :label="$t('Role.table.name')" min-width="100" show-overflow-tooltip />
<el-table-column show-overflow-tooltip prop="remark" label="描述"/> <el-table-column show-overflow-tooltip prop="remark" :label="$t('Role.table.description')" />
<el-table-column show-overflow-tooltip width="135px" prop="create_time" label="创建日期"> <el-table-column show-overflow-tooltip width="135px" prop="create_time" :label="$t('Role.table.create_time')">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.create_time) }}</span> <span>{{ parseTime(scope.row.create_time) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-permission="['admin','roles:edit','roles:del']" v-permission="['admin','roles:edit','roles:del']"
label="操作" :label="$t('common.Operate')"
width="130px" width="130px"
align="center" align="center"
fixed="right" fixed="right"
@@ -86,8 +86,8 @@
<el-col :span="12"> <el-col :span="12">
<el-card class="box-card" shadow="never"> <el-card class="box-card" shadow="never">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<el-tooltip class="item" effect="dark" content="选择指定角色分配菜单" placement="top"> <el-tooltip class="item" effect="dark" :content="$t('Role.msg.m2')" placement="top">
<span class="role-span">菜单分配</span> <span class="role-span">{{ $t('Role.title_right') }}</span>
</el-tooltip> </el-tooltip>
<el-button <el-button
v-permission="['admin','roles:edit']" v-permission="['admin','roles:edit']"
@@ -98,10 +98,9 @@
style="float: right; padding: 6px 10px" style="float: right; padding: 6px 10px"
type="primary" type="primary"
@click="saveMenu" @click="saveMenu"
>保存 >{{ $t('Role.save') }}
</el-button> </el-button>
</div> </div>
<el-tree <el-tree
ref="menu" ref="menu"
lazy lazy
@@ -130,13 +129,14 @@ import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation' import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation' import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
import i18n from "@/i18n";
const defaultForm = { role_id: null, name: null, remark: null } const defaultForm = { role_id: null, name: null, remark: null }
export default { export default {
name: 'Role', name: 'Role',
components: { pagination, crudOperation, rrOperation, udOperation, crudMenu }, components: { pagination, crudOperation, rrOperation, udOperation, crudMenu },
cruds() { cruds() {
return CRUD({ idField: 'role_id', title: '角色', url: 'api/sysRole', crudMethod: { ...crudRoles } }) return CRUD({ idField: 'role_id', title: i18n.t('Role.title'), url: 'api/sysRole', crudMethod: { ...crudRoles } })
}, },
mixins: [presenter(), header(), form(defaultForm), crud()], mixins: [presenter(), header(), form(defaultForm), crud()],
data() { data() {
@@ -151,14 +151,30 @@ export default {
}, },
rules: { rules: {
name: [ name: [
{ required: true, message: '请输入名称', trigger: 'blur' } { required: true, message: i18n.t('Role.msg.m3'), trigger: 'blur' }
], ],
permission: [ permission: [
{ required: true, message: '请输入权限', trigger: 'blur' } { required: true, message: i18n.t('Role.msg.m4'), trigger: 'blur' }
] ]
} }
} }
}, },
computed: {
computedLabelWidth() {
const item = localStorage.getItem('lang')
if (item === 'zh') {
return `400px`
}
return `420px`
},
computedFormLabelWidth() {
const item = localStorage.getItem('lang')
if (item === 'zh') {
return `80px`
}
return `120px`
}
},
created() { created() {
}, },
methods: { methods: {
@@ -244,7 +260,7 @@ export default {
role.menus.push(menu) role.menus.push(menu)
}) })
crudRoles.editMenu(role).then(() => { crudRoles.editMenu(role).then(() => {
this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify(i18n.t('Role.msg.m5'), CRUD.NOTIFICATION_TYPE.SUCCESS)
this.menuLoading = false this.menuLoading = false
this.crud.toQuery() this.crud.toQuery()
// this.update() // this.update()

View File

@@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<el-tabs type="border-card"> <el-tabs type="border-card">
<el-tab-pane v-if="shouldHide('second')" label=""> <el-tab-pane v-if="shouldHide('second')" :label="$t('cron.tab-name.s')">
<CrontabSecond <CrontabSecond
ref="cronsecond" ref="cronsecond"
:check="checkNumber" :check="checkNumber"
@@ -10,7 +10,7 @@
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="shouldHide('min')" label="分钟"> <el-tab-pane v-if="shouldHide('min')" :label="$t('cron.tab-name.min')">
<CrontabMin <CrontabMin
ref="cronmin" ref="cronmin"
:check="checkNumber" :check="checkNumber"
@@ -19,7 +19,7 @@
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="shouldHide('hour')" label="小时"> <el-tab-pane v-if="shouldHide('hour')" :label="$t('cron.tab-name.h')">
<CrontabHour <CrontabHour
ref="cronhour" ref="cronhour"
:check="checkNumber" :check="checkNumber"
@@ -28,7 +28,7 @@
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="shouldHide('day')" label=""> <el-tab-pane v-if="shouldHide('day')" :label="$t('cron.tab-name.d')">
<CrontabDay <CrontabDay
ref="cronday" ref="cronday"
:check="checkNumber" :check="checkNumber"
@@ -37,7 +37,7 @@
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="shouldHide('month')" label=""> <el-tab-pane v-if="shouldHide('month')" :label="$t('cron.tab-name.m')">
<CrontabMonth <CrontabMonth
ref="cronmonth" ref="cronmonth"
:check="checkNumber" :check="checkNumber"
@@ -46,7 +46,7 @@
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="shouldHide('week')" label=""> <el-tab-pane v-if="shouldHide('week')" :label="$t('cron.tab-name.w')">
<CrontabWeek <CrontabWeek
ref="cronweek" ref="cronweek"
:check="checkNumber" :check="checkNumber"
@@ -55,7 +55,7 @@
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane v-if="shouldHide('year')" label=""> <el-tab-pane v-if="shouldHide('year')" :label="$t('cron.tab-name.y')">
<CrontabYear <CrontabYear
ref="cronyear" ref="cronyear"
:check="checkNumber" :check="checkNumber"
@@ -67,11 +67,11 @@
<div class="popup-main"> <div class="popup-main">
<div class="popup-result"> <div class="popup-result">
<p class="title">时间表达式</p> <p class="title">{{ $t('cron.title') }}</p>
<table> <table>
<thead> <thead>
<th v-for="item of tabTitles" :key="item" width="40">{{ item }}</th> <th v-for="item of tabTitles" :key="item" width="45">{{ item }}</th>
<th>Cron 表达式</th> <th>{{ $t('cron.cron-title') }}</th>
</thead> </thead>
<tbody> <tbody>
<td> <td>
@@ -104,9 +104,9 @@
<CrontabResult :ex="crontabValueString" /> <CrontabResult :ex="crontabValueString" />
<div class="pop_btn"> <div class="pop_btn">
<el-button size="small" type="primary" @click="submitFill">确定</el-button> <el-button size="small" type="primary" @click="submitFill">{{ $t('common.Confirm') }}</el-button>
<el-button size="small" type="warning" @click="clearCron">重置</el-button> <el-button size="small" type="warning" @click="clearCron">{{ $t('common.Reset') }}</el-button>
<el-button size="small" @click="hidePopup">取消</el-button> <el-button size="small" @click="hidePopup">{{ $t('common.Cancel') }}</el-button>
</div> </div>
</div> </div>
</div> </div>
@@ -121,6 +121,7 @@ import CrontabMonth from './month.vue'
import CrontabWeek from './week.vue' import CrontabWeek from './week.vue'
import CrontabYear from './year.vue' import CrontabYear from './year.vue'
import CrontabResult from './result.vue' import CrontabResult from './result.vue'
import i18n from "@/i18n";
export default { export default {
name: 'Crontab', name: 'Crontab',
@@ -137,7 +138,8 @@ export default {
props: ['expression', 'hideComponent'], props: ['expression', 'hideComponent'],
data() { data() {
return { return {
tabTitles: ['秒', '分钟', '小时', '日', '月', '周', '年'], tabTitles: [i18n.t('cron.tab-name.s'), i18n.t('cron.tab-name.min'), i18n.t('cron.tab-name.h'),
i18n.t('cron.tab-name.d'), i18n.t('cron.tab-name.m'), i18n.t('cron.tab-name.w'), i18n.t('cron.tab-name.y')],
tabActive: 0, tabActive: 0,
myindex: 0, myindex: 0,
crontabValueObj: { crontabValueObj: {

View File

@@ -2,49 +2,49 @@
<el-form size="small"> <el-form size="small">
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="1"> <el-radio v-model="radioValue" :label="1">
允许的通配符[, - * ? / L W] {{ $t('cron.d.m1') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="2"> <el-radio v-model="radioValue" :label="2">
不指定 {{ $t('cron.d.m7') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="3"> <el-radio v-model="radioValue" :label="3">
周期从 {{ $t('cron.s.m2') }}
<el-input-number v-model="cycle01" :min="1" :max="30" /> - <el-input-number v-model="cycle01" :min="1" :max="30" /> -
<el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="31" /> <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="31" /> {{ $t('cron.tab-name.d') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="4"> <el-radio v-model="radioValue" :label="4">
{{ $t('cron.s.m4') }}
<el-input-number v-model="average01" :min="1" :max="30" /> 号开始 <el-input-number v-model="average01" :min="1" :max="30" /> {{ $t('cron.d.m2') }}
<el-input-number v-model="average02" :min="1" :max="31 - average01 || 1" /> 日执行一次 <el-input-number v-model="average02" :min="1" :max="31 - average01 || 1" /> {{ $t('cron.d.m3') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="5"> <el-radio v-model="radioValue" :label="5">
每月 {{ $t('cron.d.m4') }}
<el-input-number v-model="workday" :min="1" :max="31" /> 号最近的那个工作日 <el-input-number v-model="workday" :min="1" :max="31" /> {{ $t('cron.d.m5') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="6"> <el-radio v-model="radioValue" :label="6">
本月最后一天 {{ $t('cron.d.m7') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="7"> <el-radio v-model="radioValue" :label="7">
指定 {{ $t('cron.s.m7') }}
<el-select v-model="checkboxList" clearable placeholder="可多选" multiple style="width:100%"> <el-select v-model="checkboxList" clearable :placeholder="$t('cron.tip')" multiple style="width:100%">
<el-option v-for="item in 31" :key="item" :value="item">{{ item }}</el-option> <el-option v-for="item in 31" :key="item" :value="item">{{ item }}</el-option>
</el-select> </el-select>
</el-radio> </el-radio>

View File

@@ -2,30 +2,30 @@
<el-form size="small"> <el-form size="small">
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="1"> <el-radio v-model="radioValue" :label="1">
小时允许的通配符[, - * /] {{ $t('cron.h.m1') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="2"> <el-radio v-model="radioValue" :label="2">
周期从 {{ $t('cron.s.m2') }}
<el-input-number v-model="cycle01" :min="0" :max="22" /> - <el-input-number v-model="cycle01" :min="0" :max="22" /> -
<el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 小时 <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> {{ $t('cron.tab-name.h') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="3"> <el-radio v-model="radioValue" :label="3">
{{ $t('cron.s.m4') }}
<el-input-number v-model="average01" :min="0" :max="22" /> 小时开始 <el-input-number v-model="average01" :min="0" :max="22" /> {{ $t('cron.h.m2') }}
<el-input-number v-model="average02" :min="1" :max="23 - average01 || 0" /> 小时执行一次 <el-input-number v-model="average02" :min="1" :max="23 - average01 || 0" /> {{ $t('cron.h.m3') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="4"> <el-radio v-model="radioValue" :label="4">
指定 {{ $t('cron.s.m7') }}
<el-select v-model="checkboxList" clearable placeholder="可多选" multiple style="width:100%"> <el-select v-model="checkboxList" clearable :placeholder="$t('cron.tip')" multiple style="width:100%">
<el-option v-for="item in 24" :key="item" :value="item-1">{{ item-1 }}</el-option> <el-option v-for="item in 24" :key="item" :value="item-1">{{ item-1 }}</el-option>
</el-select> </el-select>
</el-radio> </el-radio>

View File

@@ -2,30 +2,30 @@
<el-form size="small"> <el-form size="small">
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="1"> <el-radio v-model="radioValue" :label="1">
分钟允许的通配符[, - * /] {{ $t('cron.min.m1') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="2"> <el-radio v-model="radioValue" :label="2">
周期从 {{ $t('cron.s.m2') }}
<el-input-number v-model="cycle01" :min="0" :max="58" /> - <el-input-number v-model="cycle01" :min="0" :max="58" /> -
<el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 分钟 <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> {{ $t('cron.tab-name.min') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="3"> <el-radio v-model="radioValue" :label="3">
{{ $t('cron.s.m4') }}
<el-input-number v-model="average01" :min="0" :max="58" /> 分钟开始 <el-input-number v-model="average01" :min="0" :max="58" /> {{ $t('cron.min.m2') }}
<el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> 分钟执行一次 <el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> {{ $t('cron.min.m3') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="4"> <el-radio v-model="radioValue" :label="4">
指定 {{ $t('cron.s.m7') }}
<el-select v-model="checkboxList" clearable placeholder="可多选" multiple style="width:100%"> <el-select v-model="checkboxList" clearable :placeholder="$t('cron.tip')" multiple style="width:100%">
<el-option v-for="item in 60" :key="item" :value="item-1">{{ item-1 }}</el-option> <el-option v-for="item in 60" :key="item" :value="item-1">{{ item-1 }}</el-option>
</el-select> </el-select>
</el-radio> </el-radio>

View File

@@ -2,13 +2,13 @@
<el-form size="small"> <el-form size="small">
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="1"> <el-radio v-model="radioValue" :label="1">
允许的通配符[, - * /] {{ $t('cron.m.m1') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="2"> <el-radio v-model="radioValue" :label="2">
周期从 {{ $t('cron.w.m2') }}
<el-input-number v-model="cycle01" :min="1" :max="11" /> - <el-input-number v-model="cycle01" :min="1" :max="11" /> -
<el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="12" /> <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="12" />
</el-radio> </el-radio>
@@ -16,16 +16,18 @@
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="3"> <el-radio v-model="radioValue" :label="3">
{{ $t('cron.s.m4') }}
<el-input-number v-model="average01" :min="1" :max="11" /> 月开始 <el-input-number v-model="average01" :min="1" :max="11" />
<el-input-number v-model="average02" :min="1" :max="12 - average01 || 0" /> 月月执行一次 {{ $t('cron.m.m2') }}
<el-input-number v-model="average02" :min="1" :max="12 - average01 || 0" />
{{ $t('cron.m.m3') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="4"> <el-radio v-model="radioValue" :label="4">
指定 {{ $t('cron.s.m7') }}
<el-select v-model="checkboxList" clearable placeholder="可多选" multiple style="width:100%"> <el-select v-model="checkboxList" clearable :placeholder="$t('cron.tip')" multiple style="width:100%">
<el-option v-for="item in 12" :key="item" :value="item">{{ item }}</el-option> <el-option v-for="item in 12" :key="item" :value="item">{{ item }}</el-option>
</el-select> </el-select>
</el-radio> </el-radio>
@@ -35,7 +37,7 @@
<script> <script>
export default { export default {
name: 'CrontabMonth', name: 'crontabMonth',
props: ['check', 'cron'], props: ['check', 'cron'],
data() { data() {
return { return {

View File

@@ -1,11 +1,11 @@
<template> <template>
<div class="popup-result"> <div class="popup-result">
<p class="title">最近5次运行时间</p> <p class="title">{{ $t('cron.result-msg1') }}</p>
<ul class="popup-result-scroll"> <ul class="popup-result-scroll">
<template v-if="isShow"> <template v-if="isShow">
<li v-for="item in resultList" :key="item">{{ item }}</li> <li v-for="item in resultList" :key="item">{{ item }}</li>
</template> </template>
<li v-else>计算结果中...</li> <li v-else>{{ $t('cron.result-msg2') }}</li>
</ul> </ul>
</div> </div>
</template> </template>

View File

@@ -2,30 +2,30 @@
<el-form size="small"> <el-form size="small">
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="1"> <el-radio v-model="radioValue" :label="1">
允许的通配符[, - * /] {{ $t('cron.s.m1') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="2"> <el-radio v-model="radioValue" :label="2">
周期从 {{ $t('cron.s.m2') }}
<el-input-number v-model="cycle01" :min="0" :max="58" /> - <el-input-number v-model="cycle01" :min="0" :max="58" /> -
<el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> {{ $t('cron.s.m3') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="3"> <el-radio v-model="radioValue" :label="3">
{{ $t('cron.s.m4') }}
<el-input-number v-model="average01" :min="0" :max="58" /> 秒开始 <el-input-number v-model="average01" :min="0" :max="58" /> {{ $t('cron.s.m5') }}
<el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> 秒执行一次 <el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> {{ $t('cron.s.m6') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="4"> <el-radio v-model="radioValue" :label="4">
指定 {{ $t('cron.s.m7') }}
<el-select v-model="checkboxList" clearable placeholder="可多选" multiple style="width:100%"> <el-select v-model="checkboxList" clearable :placeholder="$t('cron.tip')" multiple style="width:100%">
<el-option v-for="item in 60" :key="item" :value="item-1">{{ item-1 }}</el-option> <el-option v-for="item in 60" :key="item" :value="item-1">{{ item-1 }}</el-option>
</el-select> </el-select>
</el-radio> </el-radio>

View File

@@ -2,19 +2,19 @@
<el-form size="small"> <el-form size="small">
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="1"> <el-radio v-model="radioValue" :label="1">
允许的通配符[, - * ? / L #] {{ $t('cron.w.m1') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="2"> <el-radio v-model="radioValue" :label="2">
不指定 {{ $t('cron.d.m7') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="3"> <el-radio v-model="radioValue" :label="3">
周期从星期 {{ $t('cron.w.m2') }}
<el-select v-model="cycle01" clearable> <el-select v-model="cycle01" clearable>
<el-option <el-option
v-for="(item,index) of weekList" v-for="(item,index) of weekList"
@@ -39,8 +39,9 @@
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="4"> <el-radio v-model="radioValue" :label="4">
{{ $t('cron.w.m3') }}
<el-input-number v-model="average01" :min="1" :max="4" /> 周的星期 <el-input-number v-model="average01" :min="1" :max="4" />
{{ $t('cron.w.m4') }}
<el-select v-model="average02" clearable> <el-select v-model="average02" clearable>
<el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="item.key">{{ item.value }}</el-option> <el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="item.key">{{ item.value }}</el-option>
</el-select> </el-select>
@@ -49,7 +50,7 @@
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="5"> <el-radio v-model="radioValue" :label="5">
本月最后一个星期 {{ $t('cron.w.m5') }}
<el-select v-model="weekday" clearable> <el-select v-model="weekday" clearable>
<el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="item.key">{{ item.value }}</el-option> <el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="item.key">{{ item.value }}</el-option>
</el-select> </el-select>
@@ -58,8 +59,8 @@
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="6"> <el-radio v-model="radioValue" :label="6">
指定 {{ $t('cron.s.m7') }}
<el-select v-model="checkboxList" clearable placeholder="可多选" multiple style="width:100%"> <el-select v-model="checkboxList" clearable :placeholder="$t('cron.tip')" multiple style="width:100%">
<el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="String(item.key)">{{ item.value }}</el-option> <el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="String(item.key)">{{ item.value }}</el-option>
</el-select> </el-select>
</el-radio> </el-radio>
@@ -69,6 +70,8 @@
</template> </template>
<script> <script>
import i18n from "@/i18n";
export default { export default {
name: 'CrontabWeek', name: 'CrontabWeek',
props: ['check', 'cron'], props: ['check', 'cron'],
@@ -84,31 +87,31 @@ export default {
weekList: [ weekList: [
{ {
key: 2, key: 2,
value: '星期一' value: i18n.t('cron.w.w1')
}, },
{ {
key: 3, key: 3,
value: '星期二' value: i18n.t('cron.w.w2')
}, },
{ {
key: 4, key: 4,
value: '星期三' value: i18n.t('cron.w.w3')
}, },
{ {
key: 5, key: 5,
value: '星期四' value: i18n.t('cron.w.w4')
}, },
{ {
key: 6, key: 6,
value: '星期五' value: i18n.t('cron.w.w5')
}, },
{ {
key: 7, key: 7,
value: '星期六' value: i18n.t('cron.w.w6')
}, },
{ {
key: 1, key: 1,
value: '星期日' value: i18n.t('cron.w.w7')
} }
], ],
checkNum: this.$options.propsData.check checkNum: this.$options.propsData.check

View File

@@ -2,19 +2,19 @@
<el-form size="small"> <el-form size="small">
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="1"> <el-radio v-model="radioValue" :label="1">
不填允许的通配符[, - * /] {{ $t('cron.y.m1') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="2"> <el-radio v-model="radioValue" :label="2">
每年 {{ $t('cron.y.m4') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="3"> <el-radio v-model="radioValue" :label="3">
周期从 {{ $t('cron.w.m2') }}
<el-input-number v-model="cycle01" :min="fullYear" :max="2098" /> - <el-input-number v-model="cycle01" :min="fullYear" :max="2098" /> -
<el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : fullYear + 1" :max="2099" /> <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : fullYear + 1" :max="2099" />
</el-radio> </el-radio>
@@ -22,17 +22,17 @@
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="4"> <el-radio v-model="radioValue" :label="4">
{{ $t('cron.s.m4') }}
<el-input-number v-model="average01" :min="fullYear" :max="2098" /> 年开始 <el-input-number v-model="average01" :min="fullYear" :max="2098" /> {{ $t('cron.y.m2') }}
<el-input-number v-model="average02" :min="1" :max="2099 - average01 || fullYear" /> 年执行一次 <el-input-number v-model="average02" :min="1" :max="2099 - average01 || fullYear" /> {{ $t('cron.y.m3') }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-radio v-model="radioValue" :label="5"> <el-radio v-model="radioValue" :label="5">
指定 {{ $t('cron.s.m7') }}
<el-select v-model="checkboxList" clearable placeholder="可多选" multiple> <el-select v-model="checkboxList" clearable :placeholder="$t('cron.tip')" multiple>
<el-option v-for="item in 9" :key="item" :value="item - 1 + fullYear" :label="item -1 + fullYear" /> <el-option v-for="item in 9" :key="item" :value="item - 1 + fullYear" :label="item -1 + fullYear" />
</el-select> </el-select>
</el-radio> </el-radio>

View File

@@ -65,20 +65,20 @@
:width="computedLabelWidth" :width="computedLabelWidth"
> >
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;"> <el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;">
<el-form-item :label="$t('User.table.user_name')" prop="username"> <el-form-item :label="$t('User.dialog.user_name')" prop="username">
<el-input v-model="form.username" style="width: 200px;" /> <el-input v-model="form.username" style="width: 200px;" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('User.table.phone')" prop="phone"> <el-form-item :label="$t('User.dialog.phone')" prop="phone">
<el-input v-model.number="form.phone" style="width: 200px;" /> <el-input v-model.number="form.phone" style="width: 200px;" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('User.table.person_name')" prop="preson_name"> <el-form-item :label="$t('User.dialog.person_name')" prop="preson_name">
<el-input v-model="form.person_name" style="width: 200px;" /> <el-input v-model="form.person_name" style="width: 200px;" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('User.table.email')" prop="email"> <el-form-item :label="$t('User.dialog.email')" prop="email">
<el-input v-model="form.email" style="width: 200px;" /> <el-input v-model="form.email" style="width: 200px;" />
</el-form-item> </el-form-item>
<br v-if="!crud.status.edit"> <br v-if="!crud.status.edit">
<el-form-item v-if="crud.status.add" :label="$t('User.table.depts')" prop="depts" :rules="[{ required: true, message: '请选择部门', trigger: 'change' }]"> <el-form-item v-if="crud.status.add" :label="$t('User.dialog.depts')" prop="depts" :rules="[{ required: true, message: $t('User.rules.r1'), trigger: 'change' }]">
<treeselect <treeselect
v-model="form.depts" v-model="form.depts"
:load-options="loadDepts" :load-options="loadDepts"
@@ -94,13 +94,13 @@
<el-form-item v-if="crud.status.add" :label="$t('User.dialog.password')" prop="password"> <el-form-item v-if="crud.status.add" :label="$t('User.dialog.password')" prop="password">
<el-input v-model="form.password" style="width: 200px;" show-password auto-complete="new-password" /> <el-input v-model="form.password" style="width: 200px;" show-password auto-complete="new-password" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('User.table.gender')"> <el-form-item :label="$t('User.dialog.gender')">
<el-radio-group v-model="form.gender" style="width: 178px"> <el-radio-group v-model="form.gender" style="width: 178px">
<el-radio label="1">{{ $t('User.dialog.sex_male') }}</el-radio> <el-radio label="1">{{ $t('User.dialog.sex_male') }}</el-radio>
<el-radio label="2">{{ $t('User.dialog.sex_female') }}</el-radio> <el-radio label="2">{{ $t('User.dialog.sex_female') }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item :label="$t('User.table.enabled')" prop="is_uesd"> <el-form-item :label="$t('User.dialog.enabled')" prop="is_uesd">
<el-switch <el-switch
v-model="form.is_used" v-model="form.is_used"
active-color="#409EFF" active-color="#409EFF"
@@ -149,7 +149,7 @@
:label="$t('User.table.person_name')" :label="$t('User.table.person_name')"
:min-width="flexWidth('person_name',crud.data,$t('User.table.person_name'))" :min-width="flexWidth('person_name',crud.data,$t('User.table.person_name'))"
/> />
<el-table-column prop="gender" :label="$t('User.table.gender')" :min-width="flexWidth('gender',crud.data,$t('User.table.gender'))"> <el-table-column prop="gender" :label="$t('User.table.gender')" :min-width="flexWidth('gender1',crud.data,$t('User.table.gender'))">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.gender === '1' ? $t('User.dialog.sex_male') : $t('User.dialog.sex_female') }} {{ scope.row.gender === '1' ? $t('User.dialog.sex_male') : $t('User.dialog.sex_female') }}
</template> </template>
@@ -173,7 +173,7 @@
:label="$t('common.Operate')" :label="$t('common.Operate')"
fixed="right" fixed="right"
align="center" align="center"
width="200" width="250"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="crud.toEdit(scope.row)">{{ $t('common.Update') }}</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="crud.toEdit(scope.row)">{{ $t('common.Update') }}</el-button>
@@ -236,12 +236,12 @@
@selection-change="crud.selectionChangeHandler" @selection-change="crud.selectionChangeHandler"
> >
<el-table-column type="selection" width="55" /> <el-table-column type="selection" width="55" />
<el-table-column prop="name" label="角色名称" min-width="100" show-overflow-tooltip /> <el-table-column prop="name" :label="$t('User.table.role_name')" min-width="100" show-overflow-tooltip />
</el-table> </el-table>
</div> </div>
<div style="height: 10%"> <div style="height: 10%">
<el-button @click="cancelForm">取 消</el-button> <el-button @click="cancelForm">{{ $t('common.Cancel') }}</el-button>
<el-button type="primary" @click="saveChecked">保 存</el-button> <el-button type="primary" @click="saveChecked">{{ $t('common.Confirm') }}</el-button>
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
@@ -610,15 +610,15 @@ export default {
// 改变状态 // 改变状态
changeEnabled(row) { changeEnabled(row) {
const satus = this.enabledTypeOptions.find(item => { return item.key !== row.is_used }) const satus = this.enabledTypeOptions.find(item => { return item.key !== row.is_used })
this.$confirm('此操作将' + satus.display_name + '账号:' + row.username + ', 是否继续?', '提示', { this.$confirm(i18n.t('User.msg.m3_1') + satus.display_name + i18n.t('User.msg.m3_2') + row.username + i18n.t('User.msg.m3_3'), i18n.t('common.Tips'), {
confirmButtonText: '确定', confirmButtonText: i18n.t('common.Confirm'),
cancelButtonText: '取消', cancelButtonText: i18n.t('common.Cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
row.is_used = satus.key row.is_used = satus.key
crudUser.edit(row).then(res => { crudUser.edit(row).then(res => {
this.crud.toQuery() this.crud.toQuery()
this.crud.notify('账号' + row.username + '已' + satus.display_name) this.crud.notify(i18n.t('User.msg.m3_2') + row.username + i18n.t('User.msg.m3_4') + satus.display_name)
}) })
}) })
}, },
@@ -641,15 +641,15 @@ export default {
return true return true
}, },
resetPassword(row) { resetPassword(row) {
this.$confirm(`确认重置密码?`, '提示', { this.$confirm(i18n.t('User.msg.m1'), i18n.t('common.Tips'), {
confirmButtonText: '确定', confirmButtonText: i18n.t('common.Confirm'),
cancelButtonText: '取消', cancelButtonText: i18n.t('common.Cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
row.password = '123456' row.password = '123456'
crudUser.edit(row).then(res => { crudUser.edit(row).then(res => {
this.crud.toQuery() this.crud.toQuery()
this.crud.notify('密码重置成功,密码:123456', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.notify(i18n.t('User.msg.m2'), CRUD.NOTIFICATION_TYPE.SUCCESS)
}) })
}) })
}, },
@@ -659,7 +659,7 @@ export default {
this.deptsDatas = res.content this.deptsDatas = res.content
}) })
this.openDrawer() // 打开抽屉 this.openDrawer() // 打开抽屉
this.drawerTitle = '分配部门权限' this.drawerTitle = i18n.t('User.drawerTitle2')
this.flag = true this.flag = true
// 默认选中 // 默认选中
const deptIds = [] const deptIds = []
@@ -689,7 +689,7 @@ export default {
}) })
}) })
this.openDrawer() this.openDrawer()
this.drawerTitle = '分配角色权限' this.drawerTitle = i18n.t('User.drawerTitle1')
this.flag = false this.flag = false
this.giveValue(row) this.giveValue(row)
}, },
@@ -699,11 +699,9 @@ export default {
this.multipleSelection = [] this.multipleSelection = []
// 获取权限范围 // 获取权限范围
crudDataPermission.getDataScopeType().then(res => { crudDataPermission.getDataScopeType().then(res => {
console.log('权限范围', res)
this.dataDialog.dataScopeType = res this.dataDialog.dataScopeType = res
// permissions // permissions
crudDataPermission.getDataPermissionOption().then(res => { crudDataPermission.getDataPermissionOption().then(res => {
console.log('数据权限', res)
this.permissions = res this.permissions = res
this.dataDialog.person_name = row.person_name this.dataDialog.person_name = row.person_name
this.dataDialog.username = row.username this.dataDialog.username = row.username
@@ -712,7 +710,6 @@ export default {
this.dataPerm = true this.dataPerm = true
// 回显数据 // 回显数据
crudDataPermission.getDataShow(row.user_id).then(res => { crudDataPermission.getDataShow(row.user_id).then(res => {
console.log('要回显的数据', res)
this.$nextTick(function() { this.$nextTick(function() {
for (var index = 0; index < res.length; index++) { for (var index = 0; index < res.length; index++) {
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) { for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {