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.dto.to.wms.AcsResponse;
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.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
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.WorkOrderStatusEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,7 +27,6 @@ import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* @author ldjun
@@ -55,6 +52,7 @@ public abstract class AbstractTask {
/**
* 任务创建
* 根据配置生成任务,如并发控制等
*
* @throws BadRequestException /
*/
protected abstract void create() throws BadRequestException;
@@ -62,9 +60,11 @@ public abstract class AbstractTask {
/**
* 任务创建
* 只会创建完整的任务,创建失败则抛出异常
*
* @param task /
*/
protected void createCompletion(SchBaseTask task){}
protected void createCompletion(SchBaseTask task) {
}
/**
@@ -92,15 +92,9 @@ public abstract class AbstractTask {
//1、获取任务
//2、根据任务配置补全任务
//3、下发
List<AcsTaskDto> list = new CopyOnWriteArrayList<>();
List<AcsTaskDto> list = new ArrayList<>();
for (SchBaseTask task : taskList) {
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.setTask_code(task.getTask_code());
taskDto.setRoute_plan_code("normal");
@@ -110,7 +104,8 @@ public abstract class AbstractTask {
taskDto.setNext_device_code2(task.getPoint_code4());
taskDto.setVehicle_code(task.getVehicle_code());
taskDto.setVehicle_code2(task.getVehicle_code2());
// todo: 如果各类方法对返回参数有不同,可以通过调用子类实现的具体方法来完成赋值,也可以是统一封装到参数值中。
// 如果各类方法对返回参数有不同,可以通过调用子类实现的deliveryBeforeProcessing方法来完成赋值,也可以是统一封装到参数值中。
this.deliveryBeforeProcessing(task, taskDto);
this.setTask(task.getConfig_code(), taskDto);
list.add(taskDto);
}
@@ -135,7 +130,7 @@ public abstract class AbstractTask {
String taskCode = errObj.getString("task_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"));
break;
}
@@ -168,8 +163,10 @@ public abstract class AbstractTask {
public void getAllFinishTask() {
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_status, TaskStatus.CREATED.getCode()));
if (ObjectUtil.isEmpty(list)) return;
.eq(SchBaseTask::getTask_status, TaskStatus.START_AND_POINT.getCode()));
if (ObjectUtil.isEmpty(list)) {
return;
}
// 下发
this.renotifyAcs(list);
}
@@ -189,6 +186,7 @@ public abstract class AbstractTask {
/**
* 修改状态
* 以下改为public会出现自动注入类出现问题
*
* @param task_code /
* @param status /
*/
@@ -221,8 +219,17 @@ public abstract class AbstractTask {
return "";
}
/**
* 下发前的处理可以根据任务类进行给acs任务类更新数据
* @param task LMS任务
* @param acsTaskDto ACS任务
*/
public void deliveryBeforeProcessing(SchBaseTask task, AcsTaskDto acsTaskDto) {
}
/**
* 强制结束完成任务
*
* @param task_code 任务标识
* @return
* @discription 强制结束完成任务
@@ -240,67 +247,44 @@ public abstract class AbstractTask {
/**
* 申请任务
*
* @param param
* @throws BadRequestException
* <p>创建task的总入口会根据自定义的子类去执行创建方法。</p>
* @param param 请求任务的参数可以是只确定了单个点也可以是4个点都确定了
* @throws BadRequestException 如果创建失败
*/
public void apply(JSONObject param) throws BadRequestException {
// 申请任务
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 vehicleType = param.getString("vehicle_type");
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
AbstractTask bean = SpringContextHolder.getBean(this.getClass());
// 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、创建申请任务
task.setAcs_trace_id(requestNo);
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setConfig_code(config_code);
task.setCreate_mode(GeneralDefinition.ACS_CREATION);
task.setCreate_mode(ObjectUtil.isNotEmpty(param.getString("create_mode"))
? param.getString("create_mode") : GeneralDefinition.ACS_CREATION);
task.setVehicle_code(vehicleCode);
task.setVehicle_qty(param.getInteger("vehicle_qty"));
task.setVehicle_type(vehicleType);
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));
// 设置创建人信息
TaskUtils.setCreateByAcsOrPda(task, param);
// 3、判断是否直接找点下发
// 立即创建吧组盘放到具体位置,免得重复创建
if (taskConfig.getIs_immediate_create()) {
if ("1".equals(param.getString("is_immediate_create"))) {
bean.createCompletion(task);
} else { // 不需要立即创建,需要立马组盘
} else {
// 不需要立即创建
// 设置组盘 - 需要的话由子类自行实现
// todo: 如果不需要这种场景,可以换成其他使用场景,目的是由策略角色去完善对此字段赋值
task.setGroup_id(bean.setGroupPlate(param));

View File

@@ -1,4 +1,5 @@
package org.nl.wms.sch.task_manage.task.second_floor_area;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
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.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
import idLocale from 'element-ui/lib/locale/lang/id'
import id from './in'
import menu from './menu/in'
import param from './dict/in'
import param from './param/in'
import customer from './customer/in'
import unit from './unit/in'
import vehicleInfo from './vehicle/info/in'
@@ -16,6 +16,8 @@ import record from './record/in'
import errorLog from './log/error/in'
import online from './online/in'
import classification from './baseclass/in'
import role from './role/in'
import corn from './scheduling/corn/in'
export default {
...idLocale,
@@ -35,5 +37,7 @@ export default {
...record,
...errorLog,
...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 {
'User': {
'title': 'User Management',
'drawerTitle1': 'Assign Role Permissions',
'drawerTitle2': 'Assign Department Authority',
'placeholder': {
'dep_tip': 'Please enter a department name',
'blu_tip': 'Enter the account number or name',
'dep_select_tip': 'Select a department category'
},
'table': {
'user_name': 'username',
'person_name': 'name',
'gender': 'sex',
'phone': 'phone',
'email': 'email',
'depts': 'section',
'enabled': 'state',
'user_name': 'UserName',
'person_name': 'Name',
'gender': 'Sex',
'phone': 'Phone',
'email': 'Email',
'depts': 'Section',
'enabled': 'State',
'permission_scope_type': 'permission type',
'permissionName': 'permission regain',
'deptName': 'section name',
'create_time': 'create time',
'create_time': 'Create Time',
'create_user': 'create user',
'update_time': 'update time',
'update_user': 'update user',
@@ -27,16 +29,33 @@ export default {
'account': 'Account',
'assign_roles': 'Assign Roles',
'locked': 'Lock ',
'activate': 'Activate '
'activate': 'Activate ',
'role_name': 'Role Name'
},
'dialog': {
'role': 'role',
'password': 'password',
'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': {
'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 {
'User': {
'title': 'Manajemen Pengguna',
'drawerTitle1': 'Tetapkan Izin Peran',
'drawerTitle2': 'Tetapkan Otoritas Departemen',
'placeholder': {
'dep_tip': 'Silakan masukkan nama departemen',
'blu_tip': 'Masukkan akun atau nama',
'dep_select_tip': 'Pilih kategori departemen'
},
'table': {
'user_name': 'akun',
'person_name': 'nama',
'gender': 'gender',
'phone': 'telepon',
'email': 'kotak surat',
'depts': 'departemen',
'enabled': 'keadaan',
'user_name': 'Akun',
'person_name': 'Nama',
'gender': 'Gender',
'phone': 'Telepon',
'email': 'Kotak Surat',
'depts': 'Departemen',
'enabled': 'Keadaan',
'permission_scope_type': 'jenis izin',
'permissionName': 'ruang hak',
'deptName': 'nama departemen',
'create_time': 'tarikh penciptaan',
'create_time': 'Tarikh Penciptaan',
'create_user': 'pencipta',
'update_time': 'tanggal modifikasi',
'update_user': 'diubah oleh',
@@ -27,16 +29,33 @@ export default {
'account': 'Akaun',
'assign_roles': 'Jadikan Rol',
'locked': 'Mengunci ',
'activate': 'Aktivasi '
'activate': 'Aktivasi ',
'role_name': 'Nama Peran'
},
'dialog': {
'role': 'peran',
'password': 'sandi',
'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': {
'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 {
'User': {
'title': '用户管理',
'drawerTitle1': '分配角色权限',
'drawerTitle2': '分配部门权限',
'placeholder': {
'dep_tip': '请输入部门名称',
'blu_tip': '输入账号或者名称',
@@ -27,16 +29,33 @@ export default {
'account': '账号',
'assign_roles': '分配角色',
'locked': '锁定',
'activate': '激活'
'activate': '激活',
'role_name': '角色名称'
},
'dialog': {
'role': '角色',
'password': '密码',
'sex_male': '男',
'sex_female': '女'
'sex_female': '女',
'user_name': '用户名',
'person_name': '姓名',
'gender': '性别',
'phone': '电话',
'email': '邮箱',
'depts': '部门',
'enabled': '状态'
},
'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"
size="mini"
clearable
placeholder="输入名称"
:placeholder="$t('Role.msg.m1')"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
@@ -24,19 +24,19 @@
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
: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-item label="角色名称" prop="name">
<el-input v-model="form.name" style="width: 380px;"/>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
<el-form-item :label="$t('Role.dialog.name')" prop="name">
<el-input v-model="form.name" style="width: 240px;"/>
</el-form-item>
<el-form-item label="备注" prop="description">
<el-input v-model="form.remark" style="width: 380px;" rows="2" type="textarea"/>
<el-form-item :label="$t('Role.dialog.description')" prop="description">
<el-input v-model="form.remark" style="width: 240px;" rows="2" type="textarea"/>
</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>
<el-button type="text" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('common.Confirm') }}</el-button>
</div>
</el-dialog>
<el-row :gutter="15">
@@ -44,7 +44,7 @@
<el-col :span="12" style="margin-bottom: 10px">
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">角色列表</span>
<span class="role-span">{{ $t('Role.title_left') }}</span>
</div>
<el-table
ref="table"
@@ -56,16 +56,16 @@
@current-change="handleCurrentChange"
>
<el-table-column type="selection" width="55"/>
<el-table-column prop="name" label="名称" min-width="100" show-overflow-tooltip/>
<el-table-column show-overflow-tooltip prop="remark" label="描述"/>
<el-table-column show-overflow-tooltip width="135px" prop="create_time" label="创建日期">
<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="$t('Role.table.description')" />
<el-table-column show-overflow-tooltip width="135px" prop="create_time" :label="$t('Role.table.create_time')">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.create_time) }}</span>
</template>
</el-table-column>
<el-table-column
v-permission="['admin','roles:edit','roles:del']"
label="操作"
:label="$t('common.Operate')"
width="130px"
align="center"
fixed="right"
@@ -86,8 +86,8 @@
<el-col :span="12">
<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 class="item" effect="dark" :content="$t('Role.msg.m2')" placement="top">
<span class="role-span">{{ $t('Role.title_right') }}</span>
</el-tooltip>
<el-button
v-permission="['admin','roles:edit']"
@@ -98,10 +98,9 @@
style="float: right; padding: 6px 10px"
type="primary"
@click="saveMenu"
>保存
>{{ $t('Role.save') }}
</el-button>
</div>
<el-tree
ref="menu"
lazy
@@ -130,13 +129,14 @@ import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import i18n from "@/i18n";
const defaultForm = { role_id: null, name: null, remark: null }
export default {
name: 'Role',
components: { pagination, crudOperation, rrOperation, udOperation, crudMenu },
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()],
data() {
@@ -151,14 +151,30 @@ export default {
},
rules: {
name: [
{ required: true, message: '请输入名称', trigger: 'blur' }
{ required: true, message: i18n.t('Role.msg.m3'), trigger: 'blur' }
],
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() {
},
methods: {
@@ -244,7 +260,7 @@ export default {
role.menus.push(menu)
})
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.crud.toQuery()
// this.update()

View File

@@ -1,7 +1,7 @@
<template>
<div>
<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
ref="cronsecond"
:check="checkNumber"
@@ -10,7 +10,7 @@
/>
</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
ref="cronmin"
:check="checkNumber"
@@ -19,7 +19,7 @@
/>
</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
ref="cronhour"
:check="checkNumber"
@@ -28,7 +28,7 @@
/>
</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
ref="cronday"
:check="checkNumber"
@@ -37,7 +37,7 @@
/>
</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
ref="cronmonth"
:check="checkNumber"
@@ -46,7 +46,7 @@
/>
</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
ref="cronweek"
:check="checkNumber"
@@ -55,7 +55,7 @@
/>
</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
ref="cronyear"
:check="checkNumber"
@@ -67,11 +67,11 @@
<div class="popup-main">
<div class="popup-result">
<p class="title">时间表达式</p>
<p class="title">{{ $t('cron.title') }}</p>
<table>
<thead>
<th v-for="item of tabTitles" :key="item" width="40">{{ item }}</th>
<th>Cron 表达式</th>
<th v-for="item of tabTitles" :key="item" width="45">{{ item }}</th>
<th>{{ $t('cron.cron-title') }}</th>
</thead>
<tbody>
<td>
@@ -104,9 +104,9 @@
<CrontabResult :ex="crontabValueString" />
<div class="pop_btn">
<el-button size="small" type="primary" @click="submitFill">确定</el-button>
<el-button size="small" type="warning" @click="clearCron">重置</el-button>
<el-button size="small" @click="hidePopup">取消</el-button>
<el-button size="small" type="primary" @click="submitFill">{{ $t('common.Confirm') }}</el-button>
<el-button size="small" type="warning" @click="clearCron">{{ $t('common.Reset') }}</el-button>
<el-button size="small" @click="hidePopup">{{ $t('common.Cancel') }}</el-button>
</div>
</div>
</div>
@@ -121,6 +121,7 @@ import CrontabMonth from './month.vue'
import CrontabWeek from './week.vue'
import CrontabYear from './year.vue'
import CrontabResult from './result.vue'
import i18n from "@/i18n";
export default {
name: 'Crontab',
@@ -137,7 +138,8 @@ export default {
props: ['expression', 'hideComponent'],
data() {
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,
myindex: 0,
crontabValueObj: {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -2,30 +2,30 @@
<el-form size="small">
<el-form-item>
<el-radio v-model="radioValue" :label="1">
允许的通配符[, - * /]
{{ $t('cron.s.m1') }}
</el-radio>
</el-form-item>
<el-form-item>
<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="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-form-item>
<el-form-item>
<el-radio v-model="radioValue" :label="3">
<el-input-number v-model="average01" :min="0" :max="58" /> 秒开始
<el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> 秒执行一次
{{ $t('cron.s.m4') }}
<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" /> {{ $t('cron.s.m6') }}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model="radioValue" :label="4">
指定
<el-select v-model="checkboxList" clearable placeholder="可多选" multiple style="width:100%">
{{ $t('cron.s.m7') }}
<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-select>
</el-radio>

View File

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

View File

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

View File

@@ -65,20 +65,20 @@
: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-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-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-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-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-form-item>
<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
v-model="form.depts"
:load-options="loadDepts"
@@ -94,13 +94,13 @@
<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-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 label="1">{{ $t('User.dialog.sex_male') }}</el-radio>
<el-radio label="2">{{ $t('User.dialog.sex_female') }}</el-radio>
</el-radio-group>
</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
v-model="form.is_used"
active-color="#409EFF"
@@ -149,7 +149,7 @@
:label="$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">
{{ scope.row.gender === '1' ? $t('User.dialog.sex_male') : $t('User.dialog.sex_female') }}
</template>
@@ -173,7 +173,7 @@
:label="$t('common.Operate')"
fixed="right"
align="center"
width="200"
width="250"
>
<template slot-scope="scope">
<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"
>
<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>
</div>
<div style="height: 10%">
<el-button @click="cancelForm">取 消</el-button>
<el-button type="primary" @click="saveChecked">保 存</el-button>
<el-button @click="cancelForm">{{ $t('common.Cancel') }}</el-button>
<el-button type="primary" @click="saveChecked">{{ $t('common.Confirm') }}</el-button>
</div>
</div>
</el-drawer>
@@ -610,15 +610,15 @@ export default {
// 改变状态
changeEnabled(row) {
const satus = this.enabledTypeOptions.find(item => { return item.key !== row.is_used })
this.$confirm('此操作将' + satus.display_name + '账号:' + row.username + ', 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
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: i18n.t('common.Confirm'),
cancelButtonText: i18n.t('common.Cancel'),
type: 'warning'
}).then(() => {
row.is_used = satus.key
crudUser.edit(row).then(res => {
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
},
resetPassword(row) {
this.$confirm(`确认重置密码?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
this.$confirm(i18n.t('User.msg.m1'), i18n.t('common.Tips'), {
confirmButtonText: i18n.t('common.Confirm'),
cancelButtonText: i18n.t('common.Cancel'),
type: 'warning'
}).then(() => {
row.password = '123456'
crudUser.edit(row).then(res => {
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.openDrawer() // 打开抽屉
this.drawerTitle = '分配部门权限'
this.drawerTitle = i18n.t('User.drawerTitle2')
this.flag = true
// 默认选中
const deptIds = []
@@ -689,7 +689,7 @@ export default {
})
})
this.openDrawer()
this.drawerTitle = '分配角色权限'
this.drawerTitle = i18n.t('User.drawerTitle1')
this.flag = false
this.giveValue(row)
},
@@ -699,11 +699,9 @@ export default {
this.multipleSelection = []
// 获取权限范围
crudDataPermission.getDataScopeType().then(res => {
console.log('权限范围', res)
this.dataDialog.dataScopeType = res
// permissions
crudDataPermission.getDataPermissionOption().then(res => {
console.log('数据权限', res)
this.permissions = res
this.dataDialog.person_name = row.person_name
this.dataDialog.username = row.username
@@ -712,7 +710,6 @@ export default {
this.dataPerm = true
// 回显数据
crudDataPermission.getDataShow(row.user_id).then(res => {
console.log('要回显的数据', res)
this.$nextTick(function() {
for (var index = 0; index < res.length; index++) {
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {