feat: 基础部分的国际化
This commit is contained in:
@@ -29,9 +29,9 @@ public class SecurityUtils {
|
||||
return json.toBean(CurrentUser.class);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return new CurrentUser();
|
||||
return CurrentUser.getDefaultUser();
|
||||
}
|
||||
return null;
|
||||
return CurrentUser.getDefaultUser();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,4 +35,12 @@ public class CurrentUser implements Serializable {
|
||||
private SysUser user;
|
||||
|
||||
private List<String> permissions = new ArrayList<>();
|
||||
|
||||
public static CurrentUser getDefaultUser() {
|
||||
CurrentUser def = new CurrentUser();
|
||||
def.setId("2");
|
||||
def.setUsername("default");
|
||||
def.setPresonName("外部系统用户");
|
||||
return def;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,15 +56,12 @@ public class UserController {
|
||||
@Autowired
|
||||
private ISysUserService userService;
|
||||
|
||||
|
||||
|
||||
@GetMapping
|
||||
public ResponseEntity<Object> query(UserQuery query, PageQuery page){
|
||||
return new ResponseEntity(TableDataInfo.build(userService.getUserDetail(query, page)),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("新增用户")
|
||||
|
||||
@PostMapping
|
||||
public ResponseEntity<Object> create(@RequestBody Map user){
|
||||
userService.create(user);
|
||||
@@ -72,7 +69,6 @@ public class UserController {
|
||||
}
|
||||
|
||||
@Log("修改用户")
|
||||
|
||||
@PutMapping
|
||||
public ResponseEntity<Object> update( @RequestBody Map resources) throws Exception {
|
||||
userService.update(resources);
|
||||
@@ -80,7 +76,6 @@ public class UserController {
|
||||
}
|
||||
|
||||
@Log("修改用户:个人中心")
|
||||
|
||||
public ResponseEntity<Object> center(@RequestBody SysUser resources){
|
||||
if(!resources.getUser_id().equals(StpUtil.getLoginIdAsLong())){
|
||||
throw new BadRequestException(LangProcess.msg("error_SystemAuthError"));
|
||||
@@ -90,14 +85,12 @@ public class UserController {
|
||||
}
|
||||
|
||||
@Log("删除用户")
|
||||
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||
userService.removeByIds(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "/updatePass")
|
||||
public ResponseEntity<Object> updatePass(@RequestBody JSONObject passVo) throws Exception {
|
||||
// 解密,得到字符密码
|
||||
@@ -122,7 +115,6 @@ public class UserController {
|
||||
}
|
||||
|
||||
@Log("修改邮箱")
|
||||
|
||||
@PostMapping(value = "/updateEmail/{code}")
|
||||
public ResponseEntity<Object> updateEmail(@PathVariable String code,@RequestBody SysUser user) throws Exception {
|
||||
String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,user.getPassword());
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
window.g = {
|
||||
dev: {
|
||||
VUE_APP_BASE_API: 'http://10.93.41.201:8010'
|
||||
VUE_APP_BASE_API: 'http://127.0.0.1:8010'
|
||||
},
|
||||
prod: {
|
||||
VUE_APP_BASE_API: 'http://10.93.41.201:8010'
|
||||
VUE_APP_BASE_API: 'http://127.0.0.1:8010'
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<script>
|
||||
import { DatePicker, DatePickerOptions } from 'element-ui'
|
||||
import { calendarShortcuts } from '@/utils/shortcuts'
|
||||
import i18n from "@/i18n";
|
||||
|
||||
export default {
|
||||
name: 'DateRangePicker',
|
||||
@@ -34,11 +35,11 @@ export default {
|
||||
},
|
||||
startPlaceholder: {
|
||||
type: String,
|
||||
default: '开始日期'
|
||||
default: i18n.t('common.startDate')
|
||||
},
|
||||
endPlaceholder: {
|
||||
type: String,
|
||||
default: '结束日期'
|
||||
default: i18n.t('common.endDate')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
|
||||
import zh from './zh-CN'
|
||||
import menu from './menu/zh'
|
||||
import param from './param/zh'
|
||||
import param from './dict/zh'
|
||||
import customer from './customer/zh'
|
||||
import unit from './unit/zh'
|
||||
import vehicleInfo from './vehicle/info/zh'
|
||||
import user from './user/zh'
|
||||
import scheduler from './scheduling/zh'
|
||||
import dept from './dept/zh'
|
||||
import dict from './dict/zh'
|
||||
|
||||
export default {
|
||||
...zhLocale,
|
||||
@@ -13,5 +17,9 @@ export default {
|
||||
...param,
|
||||
...customer,
|
||||
...unit,
|
||||
...vehicleInfo
|
||||
...vehicleInfo,
|
||||
...user,
|
||||
...scheduler,
|
||||
...dept,
|
||||
...dict
|
||||
}
|
||||
|
||||
34
lms/nladmin-ui/src/i18n/langs/dept/en.js
Normal file
34
lms/nladmin-ui/src/i18n/langs/dept/en.js
Normal file
@@ -0,0 +1,34 @@
|
||||
export default {
|
||||
'Dept': {
|
||||
'title': 'Department Information',
|
||||
'search': {
|
||||
'input_name': 'Enter the department name to search'
|
||||
},
|
||||
'table': {
|
||||
'dept_sort': 'sort',
|
||||
'name': 'name',
|
||||
'is_used': 'status',
|
||||
'create_time': 'create time'
|
||||
},
|
||||
'dialog': {
|
||||
'code': 'department no',
|
||||
'name': 'department name',
|
||||
'dept_sort': 'department sort',
|
||||
'isTop': 'top department',
|
||||
'pid': 'up department',
|
||||
'select_dep': 'select department',
|
||||
'start': 'enable',
|
||||
'ban': 'disable'
|
||||
},
|
||||
'msg': {
|
||||
'tip1': 'Are you sure to delete it? If there are lower-level nodes, delete them together. This operation cannot be undone!',
|
||||
'tip2': 'The upper department cannot be empty',
|
||||
'tip3.1': 'This operation will',
|
||||
'tip3.2': 'department, Do you want to continue?'
|
||||
},
|
||||
'rules': {
|
||||
'r1': 'Please enter name',
|
||||
'r2': 'Please enter serial number'
|
||||
}
|
||||
}
|
||||
}
|
||||
34
lms/nladmin-ui/src/i18n/langs/dept/in.js
Normal file
34
lms/nladmin-ui/src/i18n/langs/dept/in.js
Normal file
@@ -0,0 +1,34 @@
|
||||
export default {
|
||||
'Dept': {
|
||||
'title': 'Informasi Departemen',
|
||||
'search': {
|
||||
'input_name': 'Masukkan nama departemen untuk mencari'
|
||||
},
|
||||
'table': {
|
||||
'dept_sort': 'pengurutan',
|
||||
'name': 'nama',
|
||||
'is_used': 'status',
|
||||
'create_time': 'tanggal pembuatan'
|
||||
},
|
||||
'dialog': {
|
||||
'code': 'kode departemen',
|
||||
'name': 'nama departemen',
|
||||
'dept_sort': 'penyortiran departemen',
|
||||
'isTop': 'departemen teratas',
|
||||
'pid': 'kantor yang lebih tinggi',
|
||||
'select_dep': 'pilih kategori departemen',
|
||||
'start': 'memungkinkan',
|
||||
'ban': 'cacat'
|
||||
},
|
||||
'msg': {
|
||||
'tip1': 'Apakah Anda yakin untuk menghapus? Jika ada node bawahan, node tersebut juga akan dihapus. Operasi ini tidak dapat dibatalkan!',
|
||||
'tip2': 'Departemen induk tidak boleh kosong',
|
||||
'tip3.1': 'Operasi ini akan terjadi',
|
||||
'tip3.2': 'departemen, Apakah akan melanjutkan?'
|
||||
},
|
||||
'rules': {
|
||||
'r1': 'Silakan masukkan nama',
|
||||
'r2': 'Silakan masukkan nomor seri'
|
||||
}
|
||||
}
|
||||
}
|
||||
34
lms/nladmin-ui/src/i18n/langs/dept/zh.js
Normal file
34
lms/nladmin-ui/src/i18n/langs/dept/zh.js
Normal file
@@ -0,0 +1,34 @@
|
||||
export default {
|
||||
'Dept': {
|
||||
'title': '部门信息',
|
||||
'search': {
|
||||
'input_name': '输入部门名称搜索'
|
||||
},
|
||||
'table': {
|
||||
'dept_sort': '排序',
|
||||
'name': '名称',
|
||||
'is_used': '状态',
|
||||
'create_time': '创建日期'
|
||||
},
|
||||
'dialog': {
|
||||
'code': '部门编码',
|
||||
'name': '部门名称',
|
||||
'dept_sort': '部门排序',
|
||||
'isTop': '顶级部门',
|
||||
'pid': '上级部门',
|
||||
'select_dep': '选择部门类目',
|
||||
'start': '启用',
|
||||
'ban': '禁用'
|
||||
},
|
||||
'msg': {
|
||||
'tip1': '确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!',
|
||||
'tip2': '上级部门不能为空',
|
||||
'tip3.1': '此操作将',
|
||||
'tip3.2': '部门, 是否继续?'
|
||||
},
|
||||
'rules': {
|
||||
'r1': '请输入名称',
|
||||
'r2': '请输入序号'
|
||||
}
|
||||
}
|
||||
}
|
||||
36
lms/nladmin-ui/src/i18n/langs/dict/en.js
Normal file
36
lms/nladmin-ui/src/i18n/langs/dict/en.js
Normal file
@@ -0,0 +1,36 @@
|
||||
export default {
|
||||
'Dict': {
|
||||
'title': 'Dictionary',
|
||||
'placeholder': {
|
||||
'blurry': 'Enter a name or description to search'
|
||||
},
|
||||
'table': {
|
||||
'code': 'code',
|
||||
'name': 'name',
|
||||
'dict_code': 'dictionary encoding',
|
||||
'dict_name': 'dictionary name',
|
||||
'dict_detail': 'Dictionary details'
|
||||
},
|
||||
'detail': {
|
||||
'see_title': 'Click on the dictionary for details',
|
||||
'input_tip': 'Enter a dictionary label query',
|
||||
'table': {
|
||||
'code': 'owning dictionary',
|
||||
'label': 'dictionary tag',
|
||||
'value': 'dictionary value',
|
||||
'sort': 'sort',
|
||||
'param1': 'param1',
|
||||
'param2': 'param2',
|
||||
'param3': 'param3'
|
||||
},
|
||||
'rules': {
|
||||
'r1': 'Please enter the dictionary label',
|
||||
'r2': 'Please enter a dictionary value',
|
||||
'r3': 'Please enter serial number'
|
||||
}
|
||||
},
|
||||
'rules': {
|
||||
'r1': 'Please enter the code'
|
||||
}
|
||||
}
|
||||
}
|
||||
36
lms/nladmin-ui/src/i18n/langs/dict/in.js
Normal file
36
lms/nladmin-ui/src/i18n/langs/dict/in.js
Normal file
@@ -0,0 +1,36 @@
|
||||
export default {
|
||||
'Dict': {
|
||||
'title': 'Dictionary',
|
||||
'placeholder': {
|
||||
'blurry': 'Enter name or description to search'
|
||||
},
|
||||
'table': {
|
||||
'code': 'kode',
|
||||
'name': 'nama',
|
||||
'dict_code': 'pengkodean kamus',
|
||||
'dict_name': 'nama kamus',
|
||||
'dict_detail': 'Detail kamus'
|
||||
},
|
||||
'detail': {
|
||||
'see_title': 'Klik kamus untuk melihat detailnya',
|
||||
'input_tip': 'Masukkan kueri tag kamus',
|
||||
'table': {
|
||||
'code': 'milik kamus',
|
||||
'label': 'tag kamus',
|
||||
'value': 'nilai kamus',
|
||||
'sort': 'menyortir',
|
||||
'param1': 'parameter1',
|
||||
'param2': 'parameter2',
|
||||
'param3': 'parameter3'
|
||||
},
|
||||
'rules': {
|
||||
'r1': 'Silakan masukkan tag kamus',
|
||||
'r2': 'Silakan masukkan nilai kamus',
|
||||
'r3': 'Silakan masukkan nomor seri'
|
||||
}
|
||||
},
|
||||
'rules': {
|
||||
'r1': 'Silakan masukkan kodenya'
|
||||
}
|
||||
}
|
||||
}
|
||||
36
lms/nladmin-ui/src/i18n/langs/dict/zh.js
Normal file
36
lms/nladmin-ui/src/i18n/langs/dict/zh.js
Normal file
@@ -0,0 +1,36 @@
|
||||
export default {
|
||||
'Dict': {
|
||||
'title': '字典',
|
||||
'placeholder': {
|
||||
'blurry': '输入名称或者描述搜索'
|
||||
},
|
||||
'table': {
|
||||
'code': '编码',
|
||||
'name': '名称',
|
||||
'dict_code': '字典编码',
|
||||
'dict_name': '字典名称',
|
||||
'dict_detail': '字典详情'
|
||||
},
|
||||
'detail': {
|
||||
'see_title': '点击字典查看详情',
|
||||
'input_tip': '输入字典标签查询',
|
||||
'table': {
|
||||
'code': '所属字典',
|
||||
'label': '字典标签',
|
||||
'value': '字典值',
|
||||
'sort': '排序',
|
||||
'param1': '参数1',
|
||||
'param2': '参数2',
|
||||
'param3': '参数3'
|
||||
},
|
||||
'rules': {
|
||||
'r1': '请输入字典标签',
|
||||
'r2': '请输入字典值',
|
||||
'r3': '请输入序号'
|
||||
}
|
||||
},
|
||||
'rules': {
|
||||
'r1': '请输入编码'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ export default {
|
||||
'Create': 'Create',
|
||||
'Update': 'Update',
|
||||
'Delete': 'Delete',
|
||||
'More': 'More',
|
||||
'Export': 'Export',
|
||||
'Editors': 'Editor',
|
||||
'SelectAll': 'SelectAll',
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import enLocale from 'element-ui/lib/locale/lang/en'
|
||||
import en from './en'
|
||||
import menu from './menu/en'
|
||||
import param from './param/en'
|
||||
import param from './dict/en'
|
||||
import customer from './customer/en'
|
||||
import unit from './unit/en'
|
||||
import vehicleInfo from './vehicle/info/en'
|
||||
import user from './user/en'
|
||||
import scheduler from './scheduling/en'
|
||||
import dept from './dept/en'
|
||||
import dict from './dict/en'
|
||||
|
||||
export default {
|
||||
...enLocale,
|
||||
@@ -13,5 +17,9 @@ export default {
|
||||
...param,
|
||||
...customer,
|
||||
...unit,
|
||||
...vehicleInfo
|
||||
...vehicleInfo,
|
||||
...user,
|
||||
...scheduler,
|
||||
...dept,
|
||||
...dict
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ export default {
|
||||
'Create': 'Buat',
|
||||
'Update': 'Kemaskini',
|
||||
'Delete': 'Hapus',
|
||||
'More': 'Lebih',
|
||||
'Export': 'Ekspor',
|
||||
'Editors': 'Editor',
|
||||
'SelectAll': 'Pilih Semua',
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import idLocale from 'element-ui/lib/locale/lang/id'
|
||||
import id from './in'
|
||||
import menu from './menu/in'
|
||||
import param from './param/in'
|
||||
import param from './dict/in'
|
||||
import customer from './customer/in'
|
||||
import unit from './unit/in'
|
||||
import vehicleInfo from './vehicle/info/in'
|
||||
import user from './user/in'
|
||||
import scheduler from './scheduling/in'
|
||||
import dept from './dept/in'
|
||||
import dict from './dict/in'
|
||||
|
||||
export default {
|
||||
...idLocale,
|
||||
@@ -13,5 +17,9 @@ export default {
|
||||
...param,
|
||||
...customer,
|
||||
...unit,
|
||||
...vehicleInfo
|
||||
...vehicleInfo,
|
||||
...user,
|
||||
...scheduler,
|
||||
...dept,
|
||||
...dict
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export default {
|
||||
'menu': {
|
||||
'home': 'home',
|
||||
'home': 'Dashboard',
|
||||
'title': 'Menu',
|
||||
'placeholder': {
|
||||
'fuzzy_search': 'fuzzy search',
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
export default {
|
||||
'SysParam': {
|
||||
'table': {
|
||||
'code': 'code',
|
||||
'name': 'name',
|
||||
'values': 'value',
|
||||
'description': 'remark'
|
||||
},
|
||||
'rules': {
|
||||
'NotNull': 'Cannot be empty'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
export default {
|
||||
'SysParam': {
|
||||
'table': {
|
||||
'code': 'kode',
|
||||
'name': 'nama',
|
||||
'values': 'nilai',
|
||||
'description': 'Catatan'
|
||||
},
|
||||
'rules': {
|
||||
'NotNull': 'Tidak dapat kosong'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
export default {
|
||||
'SysParam': {
|
||||
'table': {
|
||||
'code': '编码',
|
||||
'name': '名称',
|
||||
'values': '值',
|
||||
'description': '备注'
|
||||
},
|
||||
'rules': {
|
||||
'NotNull': '不能为空'
|
||||
}
|
||||
}
|
||||
}
|
||||
62
lms/nladmin-ui/src/i18n/langs/scheduling/en.js
Normal file
62
lms/nladmin-ui/src/i18n/langs/scheduling/en.js
Normal file
@@ -0,0 +1,62 @@
|
||||
export default {
|
||||
'Scheduling': {
|
||||
'title': 'Scheduled Tasks',
|
||||
'log': {
|
||||
'title': 'task logs',
|
||||
'dialog_title': 'execution log',
|
||||
'log_status': 'log status',
|
||||
'search': 'search',
|
||||
'success': 'success',
|
||||
'fail': 'fail',
|
||||
'description': 'detail',
|
||||
'see_description': 'See',
|
||||
'elapsed': 'time(ms)'
|
||||
},
|
||||
'placeholder': {
|
||||
'search': 'Enter a task name to search',
|
||||
'log': 'logs',
|
||||
'cron_expression': 'Please input CRON',
|
||||
'build_corn': 'Generated expression'
|
||||
},
|
||||
'dialog': {
|
||||
'sub_task': 'sub_task ID',
|
||||
'person_in_charge': 'task leader',
|
||||
'email': 'warn email',
|
||||
'pause_after_failure': 'pause after failure',
|
||||
'is_pause': 'status',
|
||||
'params': 'params',
|
||||
'p1': 'Separate multiple items with commas and execute them in order',
|
||||
'p2': 'Separate multiple email addresses with commas',
|
||||
'start': 'Enable',
|
||||
'stop': 'Stop'
|
||||
},
|
||||
'table': {
|
||||
'job_id': 'job ID',
|
||||
'job_name': 'job name',
|
||||
'bean_name': 'beanName',
|
||||
'method_name': 'method',
|
||||
'params': 'params',
|
||||
'cron_expression': 'cron-exp',
|
||||
'is_pause': 'status',
|
||||
'is_pause_ok': 'paused',
|
||||
'is_pause_no': 'running',
|
||||
'description': 'description',
|
||||
'create_time': 'create time',
|
||||
'recover': 'Recover',
|
||||
'pause': 'Pause',
|
||||
'execute': 'Execute',
|
||||
'openCron': 'Cron Expression Generator'
|
||||
},
|
||||
'msg': {
|
||||
'tip1': 'Are you sure to stop and delete the task?'
|
||||
},
|
||||
'rules': {
|
||||
'r1': 'Please enter a task name',
|
||||
'r2': 'Please enter a task description',
|
||||
'r3': 'Please enter a Bean name',
|
||||
'r4': 'Please enter a method name',
|
||||
'r5': 'Please enter the Cron expression',
|
||||
'r6': 'Please enter the responsible person name'
|
||||
}
|
||||
}
|
||||
}
|
||||
62
lms/nladmin-ui/src/i18n/langs/scheduling/in.js
Normal file
62
lms/nladmin-ui/src/i18n/langs/scheduling/in.js
Normal file
@@ -0,0 +1,62 @@
|
||||
export default {
|
||||
'Scheduling': {
|
||||
'title': 'Tugas Yang Dijadwalkan',
|
||||
'log': {
|
||||
'title': 'catatan misi',
|
||||
'dialog_title': 'catatan eksekusi',
|
||||
'log_status': 'status pencatatan',
|
||||
'search': 'mencari',
|
||||
'success': 'kesuksesan',
|
||||
'fail': 'gagal',
|
||||
'description': 'detail',
|
||||
'see_description': 'Memeriksa',
|
||||
'elapsed': 'waktu(ms)'
|
||||
},
|
||||
'placeholder': {
|
||||
'search': 'Masukkan nama tugas untuk dicari',
|
||||
'log': 'catatan',
|
||||
'cron_expression': 'Silakan masukkan CRON',
|
||||
'build_corn': 'Menghasilkan ekspresi'
|
||||
},
|
||||
'dialog': {
|
||||
'sub_task': 'ID Subtugas',
|
||||
'person_in_charge': 'Pemimpin tugas',
|
||||
'email': 'email alarm',
|
||||
'pause_after_failure': 'Jeda setelah kegagalan',
|
||||
'is_pause': 'status',
|
||||
'params': 'parameter',
|
||||
'p1': 'Pisahkan beberapa item dengan koma dan jalankan secara berurutan',
|
||||
'p2': 'Pisahkan beberapa alamat email dengan koma',
|
||||
'start': 'Memungkinkan',
|
||||
'stop': 'Berhenti'
|
||||
},
|
||||
'table': {
|
||||
'job_id': 'ID Tugas',
|
||||
'job_name': 'nama misi',
|
||||
'bean_name': 'nama bean',
|
||||
'method_name': 'metode',
|
||||
'params': 'parameter',
|
||||
'cron_expression': 'ekspresi cron',
|
||||
'is_pause': 'negara',
|
||||
'is_pause_ok': 'dijeda',
|
||||
'is_pause_no': 'berlari',
|
||||
'description': 'menggambarkan',
|
||||
'create_time': 'tanggal pembuatan',
|
||||
'recover': 'Pulih',
|
||||
'pause': 'Dijeda',
|
||||
'execute': 'Melaksanakan',
|
||||
'openCron': 'Cron Pembangun Ekspresi'
|
||||
},
|
||||
'msg': {
|
||||
'tip1': 'Apakah Anda yakin ingin menghentikan dan menghapus tugas ini?'
|
||||
},
|
||||
'rules': {
|
||||
'r1': 'Silakan masukkan nama tugas',
|
||||
'r2': 'Silakan masukkan deskripsi tugas',
|
||||
'r3': 'Silakan masukkan nama kacang',
|
||||
'r4': 'Silakan masukkan nama metode',
|
||||
'r5': 'Silakan masukkan ekspresi Cron',
|
||||
'r6': 'Silakan masukkan nama penanggung jawab'
|
||||
}
|
||||
}
|
||||
}
|
||||
62
lms/nladmin-ui/src/i18n/langs/scheduling/zh.js
Normal file
62
lms/nladmin-ui/src/i18n/langs/scheduling/zh.js
Normal file
@@ -0,0 +1,62 @@
|
||||
export default {
|
||||
'Scheduling': {
|
||||
'title': '定时任务',
|
||||
'log': {
|
||||
'title': '任务日志',
|
||||
'dialog_title': '执行日志',
|
||||
'log_status': '日志状态',
|
||||
'search': '搜索',
|
||||
'success': '成功',
|
||||
'fail': '失败',
|
||||
'description': '异常详情',
|
||||
'see_description': '查看详情',
|
||||
'elapsed': '耗时(毫秒)'
|
||||
},
|
||||
'placeholder': {
|
||||
'search': '输入任务名称搜索',
|
||||
'log': '日志',
|
||||
'cron_expression': '请输入CRON 表达式',
|
||||
'build_corn': '生成表达式'
|
||||
},
|
||||
'dialog': {
|
||||
'sub_task': '子任务ID',
|
||||
'person_in_charge': '任务负责人',
|
||||
'email': '告警邮箱',
|
||||
'pause_after_failure': '失败后暂停',
|
||||
'is_pause': '任务状态',
|
||||
'params': '参数内容',
|
||||
'p1': '多个用逗号隔开,按顺序执行',
|
||||
'p2': '多个邮箱用逗号隔开',
|
||||
'start': '启用',
|
||||
'stop': '暂停'
|
||||
},
|
||||
'table': {
|
||||
'job_id': '任务ID',
|
||||
'job_name': '任务名称',
|
||||
'bean_name': 'Bean名称',
|
||||
'method_name': '执行方法',
|
||||
'params': '参数',
|
||||
'cron_expression': 'cron表达式',
|
||||
'is_pause': '状态',
|
||||
'is_pause_ok': '已暂停',
|
||||
'is_pause_no': '运行中',
|
||||
'description': '任务描述',
|
||||
'create_time': '创建日期',
|
||||
'recover': '恢复',
|
||||
'pause': '暂停',
|
||||
'execute': '执行',
|
||||
'openCron': 'Cron表达式生成器'
|
||||
},
|
||||
'msg': {
|
||||
'tip1': '确定停止并删除该任务吗?'
|
||||
},
|
||||
'rules': {
|
||||
'r1': '请输入任务名称',
|
||||
'r2': '请输入任务描述',
|
||||
'r3': '请输入Bean名称',
|
||||
'r4': '请输入方法名称',
|
||||
'r5': '请输入Cron表达式',
|
||||
'r6': '请输入负责人名称'
|
||||
}
|
||||
}
|
||||
}
|
||||
42
lms/nladmin-ui/src/i18n/langs/user/en.js
Normal file
42
lms/nladmin-ui/src/i18n/langs/user/en.js
Normal file
@@ -0,0 +1,42 @@
|
||||
export default {
|
||||
'User': {
|
||||
'title': 'User Management',
|
||||
'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',
|
||||
'permission_scope_type': 'permission type',
|
||||
'permissionName': 'permission regain',
|
||||
'deptName': 'section name',
|
||||
'create_time': 'create time',
|
||||
'create_user': 'create user',
|
||||
'update_time': 'update time',
|
||||
'update_user': 'update user',
|
||||
'reset_pwd': 'Reset Password',
|
||||
'dept_reg': 'Department Permission',
|
||||
'data_reg': 'Data Permission',
|
||||
'account': 'Account',
|
||||
'assign_roles': 'Assign Roles',
|
||||
'locked': 'Lock ',
|
||||
'activate': 'Activate '
|
||||
},
|
||||
'dialog': {
|
||||
'role': 'role',
|
||||
'password': 'password',
|
||||
'sex_male': 'male',
|
||||
'sex_female': 'female'
|
||||
},
|
||||
'rules': {
|
||||
'NotNull': 'Cannot be empty'
|
||||
}
|
||||
}
|
||||
}
|
||||
42
lms/nladmin-ui/src/i18n/langs/user/in.js
Normal file
42
lms/nladmin-ui/src/i18n/langs/user/in.js
Normal file
@@ -0,0 +1,42 @@
|
||||
export default {
|
||||
'User': {
|
||||
'title': 'Manajemen Pengguna',
|
||||
'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',
|
||||
'permission_scope_type': 'jenis izin',
|
||||
'permissionName': 'ruang hak',
|
||||
'deptName': 'nama departemen',
|
||||
'create_time': 'tarikh penciptaan',
|
||||
'create_user': 'pencipta',
|
||||
'update_time': 'tanggal modifikasi',
|
||||
'update_user': 'diubah oleh',
|
||||
'reset_pwd': 'Reset Kata Sandi',
|
||||
'dept_reg': 'Permisi Departemen',
|
||||
'data_reg': 'Keizinan Data',
|
||||
'account': 'Akaun',
|
||||
'assign_roles': 'Jadikan Rol',
|
||||
'locked': 'Mengunci ',
|
||||
'activate': 'Aktivasi '
|
||||
},
|
||||
'dialog': {
|
||||
'role': 'peran',
|
||||
'password': 'sandi',
|
||||
'sex_male': 'man',
|
||||
'sex_female': 'wanita'
|
||||
},
|
||||
'rules': {
|
||||
'NotNull': 'Tidak dapat kosong'
|
||||
}
|
||||
}
|
||||
}
|
||||
42
lms/nladmin-ui/src/i18n/langs/user/zh.js
Normal file
42
lms/nladmin-ui/src/i18n/langs/user/zh.js
Normal file
@@ -0,0 +1,42 @@
|
||||
export default {
|
||||
'User': {
|
||||
'title': '用户管理',
|
||||
'placeholder': {
|
||||
'dep_tip': '请输入部门名称',
|
||||
'blu_tip': '输入账号或者名称',
|
||||
'dep_select_tip': '选择部门类目'
|
||||
},
|
||||
'table': {
|
||||
'user_name': '用户名',
|
||||
'person_name': '姓名',
|
||||
'gender': '性别',
|
||||
'phone': '电话',
|
||||
'email': '邮箱',
|
||||
'depts': '部门',
|
||||
'enabled': '状态',
|
||||
'permission_scope_type': '权限类型',
|
||||
'permissionName': '权限范围',
|
||||
'deptName': '部门名称',
|
||||
'create_time': '创建日期',
|
||||
'create_user': '创建人',
|
||||
'update_time': '修改日期',
|
||||
'update_user': '修改人',
|
||||
'reset_pwd': '重置密码',
|
||||
'dept_reg': '部门权限',
|
||||
'data_reg': '数据权限',
|
||||
'account': '账号',
|
||||
'assign_roles': '分配角色',
|
||||
'locked': '锁定',
|
||||
'activate': '激活'
|
||||
},
|
||||
'dialog': {
|
||||
'role': '角色',
|
||||
'password': '密码',
|
||||
'sex_male': '男',
|
||||
'sex_female': '女'
|
||||
},
|
||||
'rules': {
|
||||
'NotNull': '不能为空'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ export default {
|
||||
'Create': '新增',
|
||||
'Update': '修改',
|
||||
'Delete': '删除',
|
||||
'More': '更多',
|
||||
'Export': '导出',
|
||||
'Editors': '编辑',
|
||||
'SelectAll': '全选',
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
v-model="query.name"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="输入部门名称搜索"
|
||||
:placeholder="$t('Dept.search.input_name')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
@@ -17,7 +17,7 @@
|
||||
v-model="query.is_used"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('Dept.table.is_used')"
|
||||
class="filter-item"
|
||||
style="width: 90px"
|
||||
@change="crud.toQuery"
|
||||
@@ -34,16 +34,16 @@
|
||||
:before-close="crud.cancelCU"
|
||||
:visible.sync="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
width="500px"
|
||||
:width="computedLabelWidth"
|
||||
>
|
||||
<el-form ref="form" inline :model="form" :rules="rules" size="mini" label-width="80px">
|
||||
<el-form-item label="部门编码" prop="code">
|
||||
<el-form ref="form" inline :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
|
||||
<el-form-item :label="$t('Dept.dialog.code')" prop="code">
|
||||
<el-input v-model="form.code" :disabled="crud.status.edit" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="name">
|
||||
<el-form-item :label="$t('Dept.dialog.name')" prop="name">
|
||||
<el-input v-model="form.name" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门排序" prop="dept_sort">
|
||||
<el-form-item :label="$t('Dept.dialog.dept_sort')" prop="dept_sort">
|
||||
<el-input-number
|
||||
v-model.number="form.dept_sort"
|
||||
:min="0"
|
||||
@@ -52,45 +52,42 @@
|
||||
style="width: 370px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="外部标识" prop="ext_id">
|
||||
<el-input v-model="form.ext_id" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="顶级部门">
|
||||
<el-form-item :label="$t('Dept.dialog.isTop')">
|
||||
<el-radio-group v-model="form.isTop" style="width: 140px">
|
||||
<el-radio label="1">是</el-radio>
|
||||
<el-radio label="0">否</el-radio>
|
||||
<el-radio label="1">{{ $t('common.Yes') }}</el-radio>
|
||||
<el-radio label="0">{{ $t('common.No') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="is_used">
|
||||
<el-form-item :label="$t('Dept.table.is_used')" prop="is_used">
|
||||
<el-switch
|
||||
v-model="form.is_used"
|
||||
active-color="#409EFF"
|
||||
inactive-color="#F56C6C"
|
||||
active-value = 'true'
|
||||
inactive-valu='false'
|
||||
active-value="true"
|
||||
inactive-valu="false"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.isTop === '0'" style="margin-bottom: 0;" label="上级部门" prop="pid">
|
||||
<el-form-item v-if="form.isTop === '0'" style="margin-bottom: 0;" :label="$t('Dept.dialog.pid')" prop="pid">
|
||||
<treeselect
|
||||
v-model="form.pid"
|
||||
:load-options="loadDepts"
|
||||
:options="depts"
|
||||
style="width: 370px;"
|
||||
:normalizer="normalizer"
|
||||
placeholder="选择部门类目"
|
||||
:placeholder="$t('Dept.dialog.select_dep')"
|
||||
/>
|
||||
</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>
|
||||
<!--表格渲染 :load="getDeptDatas" 点击事件 row-key需要指定唯一的数据id-->
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="crud.loading"
|
||||
:default-sort = "{prop: 'dept_sort', order: 'ascending'}"
|
||||
:default-sort="{prop: 'dept_sort', order: 'ascending'}"
|
||||
lazy
|
||||
:load="getDeptDatas"
|
||||
:tree-props="{children: 'children', hasChildren: 'has_children'}"
|
||||
@@ -102,9 +99,9 @@
|
||||
>
|
||||
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
||||
<!-- <el-table-column label="编码" prop="code" />-->
|
||||
<el-table-column label="名称" prop="name" />
|
||||
<el-table-column label="排序" prop="dept_sort" />
|
||||
<el-table-column label="状态" align="center" prop="is_used">
|
||||
<el-table-column :label="$t('Dept.table.name')" prop="name" />
|
||||
<el-table-column :label="$t('Dept.table.dept_sort')" prop="dept_sort" />
|
||||
<el-table-column :label="$t('Dept.table.is_used')" align="center" prop="is_used">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.is_used"
|
||||
@@ -115,10 +112,10 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_time" label="创建日期" />
|
||||
<el-table-column prop="create_time" :label="$t('Dept.table.create_time')" />
|
||||
<el-table-column
|
||||
v-permission="['admin','dept:edit','dept:del']"
|
||||
label="操作"
|
||||
:label="$t('common.Operate')"
|
||||
width="130px"
|
||||
align="center"
|
||||
fixed="right"
|
||||
@@ -128,7 +125,7 @@
|
||||
:data="scope.row"
|
||||
:permission="permission"
|
||||
:disabled-dle="scope.row.id === 1"
|
||||
msg="确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!"
|
||||
:msg="$t('Dept.msg.tip1')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -144,6 +141,7 @@ import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import i18n from '@/i18n'
|
||||
|
||||
const defaultForm = {
|
||||
code: null,
|
||||
@@ -159,7 +157,7 @@ export default {
|
||||
name: 'Dept',
|
||||
components: { Treeselect, crudOperation, rrOperation, udOperation },
|
||||
cruds() {
|
||||
return CRUD({ title: '部门', idField: 'dept_id', url: 'api/dept/vo', crudMethod: { ...crudDept }})
|
||||
return CRUD({ title: i18n.t('Dept.title'), idField: 'dept_id', url: 'api/dept/vo', crudMethod: { ...crudDept }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
// 设置数据字典
|
||||
@@ -169,10 +167,10 @@ export default {
|
||||
depts: [],
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: '请输入名称', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Dept.rules.r1'), trigger: 'blur' }
|
||||
],
|
||||
dept_sort: [
|
||||
{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }
|
||||
{ required: true, message: i18n.t('Dept.rules.r2'), trigger: 'blur', type: 'number' }
|
||||
]
|
||||
},
|
||||
permission: {
|
||||
@@ -181,11 +179,33 @@ export default {
|
||||
del: ['admin', 'dept:del']
|
||||
},
|
||||
enabledTypeOptions: [
|
||||
{ key: true, display_name: '启用' },
|
||||
{ key: false, display_name: '禁用' }
|
||||
{ key: true, display_name: i18n.t('Dept.dialog.start') },
|
||||
{ key: false, display_name: i18n.t('Dept.dialog.ban') }
|
||||
]
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
computedLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'en') {
|
||||
return `580px`
|
||||
}
|
||||
if (item === 'in') {
|
||||
return `620px`
|
||||
}
|
||||
return `500px`
|
||||
},
|
||||
computedFormLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'en') {
|
||||
return `140px`
|
||||
}
|
||||
if (item === 'in') {
|
||||
return `190px`
|
||||
}
|
||||
return `80px`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getDeptDatas(tree, treeNode, resolve) {
|
||||
const params = { pid: tree.dept_id }
|
||||
@@ -254,7 +274,7 @@ export default {
|
||||
[CRUD.HOOK.afterValidateCU]() {
|
||||
if (this.form.isTop !== '1' && this.form.pid == null) {
|
||||
this.$message({
|
||||
message: '上级部门不能为空',
|
||||
message: i18n.t('Dept.msg.tip2'),
|
||||
type: 'warning'
|
||||
})
|
||||
return false
|
||||
@@ -266,15 +286,16 @@ export default {
|
||||
},
|
||||
// 改变状态
|
||||
changeEnabled(data, val) {
|
||||
const satus = this.enabledTypeOptions.find(item => { return item.key == data.is_used })
|
||||
debugger
|
||||
this.$confirm('此操作将 "' + satus.display_name + '" ' + data.name + '部门, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
const satus = this.enabledTypeOptions.find(item => {
|
||||
return item.key == data.is_used
|
||||
})
|
||||
this.$confirm(i18n.t('Dept.msg.tip3.1') + ' "' + satus.display_name + '" ' + data.name + i18n.t('Dept.msg.tip3.2'), i18n.t('common.Tips'), {
|
||||
confirmButtonText: i18n.t('common.Confirm'),
|
||||
cancelButtonText: i18n.t('common.Cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
crudDept.edit(data).then(res => {
|
||||
this.crud.notify(satus.display_name + '成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.notify(satus.display_name + i18n.t('common.Success'), CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
})
|
||||
}).catch(() => {
|
||||
data.is_used = !data.is_used
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-if="query.code === ''">
|
||||
<div class="my-code">点击字典查看详情</div>
|
||||
<div class="my-code">{{ $t('Dict.detail.see_title') }}</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<!--工具栏-->
|
||||
@@ -12,7 +12,7 @@
|
||||
v-model="query.label"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="输入字典标签查询"
|
||||
:placeholder="$t('Dict.detail.input_tip')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="toQuery"
|
||||
@@ -27,37 +27,40 @@
|
||||
:before-close="crud.cancelCU"
|
||||
:visible="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
width="500px"
|
||||
:width="computedLabelWidth"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
||||
<el-form-item label="字典标签" prop="label">
|
||||
<el-input v-model="form.label" style="width: 370px;" />
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
|
||||
<el-form-item :label="$t('Dict.detail.table.label')" prop="label">
|
||||
<el-input v-model="form.label" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="字典值" prop="value">
|
||||
<el-input v-model="form.value" style="width: 370px;" />
|
||||
<el-form-item :label="$t('Dict.detail.table.value')" prop="value">
|
||||
<el-input v-model="form.value" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="dict_sort">
|
||||
<el-form-item :label="$t('Dict.detail.table.sort')" prop="dict_sort">
|
||||
<el-input-number
|
||||
v-model.number="form.dict_sort"
|
||||
:min="0"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
style="width: 370px;"
|
||||
style="width: 240px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="参数1" prop="para1">
|
||||
<el-input v-model="form.para1" style="width: 370px;" />
|
||||
<el-form-item :label="$t('Dict.detail.table.param1')" prop="para1">
|
||||
<el-input v-model="form.para1" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="参数2" prop="para2">
|
||||
<el-input v-model="form.para2" style="width: 370px;" />
|
||||
<el-form-item :label="$t('Dict.detail.table.param2')" prop="para2">
|
||||
<el-input v-model="form.para2" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="参数3" prop="para3">
|
||||
<el-input v-model="form.para3" style="width: 370px;" />
|
||||
<el-form-item :label="$t('Dict.detail.table.param3')" prop="para3">
|
||||
<el-input v-model="form.para3" style="width: 240px;" />
|
||||
</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>
|
||||
<!--表格渲染-->
|
||||
@@ -69,20 +72,51 @@
|
||||
style="width: 100%;"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column label="所属字典" min-width="150" show-overflow-tooltip>
|
||||
<el-table-column :label="$t('Dict.detail.table.code')" min-width="150" show-overflow-tooltip>
|
||||
{{ query.code }}
|
||||
</el-table-column>
|
||||
<el-table-column prop="label" label="字典标签" align="center" width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="value" label="字典值" align="center" width="60" />
|
||||
<el-table-column prop="dict_sort" label="排序" align="center" width="65" />
|
||||
<el-table-column prop="para1" label="参数1" align="center" width="65" />
|
||||
<el-table-column prop="para2" label="参数2" align="center" width="65" />
|
||||
<el-table-column prop="para3" label="参数3" align="center" width="65" />
|
||||
<el-table-column
|
||||
prop="label"
|
||||
:label="$t('Dict.detail.table.label')"
|
||||
align="center"
|
||||
:min-width="flexWidth('label',crud.data,$t('Dict.detail.table.label'))"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="value"
|
||||
:label="$t('Dict.detail.table.value')"
|
||||
:min-width="flexWidth('value',crud.data,$t('Dict.detail.table.value'))"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="dict_sort"
|
||||
:label="$t('Dict.detail.table.sort')"
|
||||
:min-width="flexWidth('dict_sort',crud.data,$t('Dict.detail.table.sort'))"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="para1"
|
||||
:label="$t('Dict.detail.table.param1')"
|
||||
:min-width="flexWidth('para1',crud.data,$t('Dict.detail.table.param1'))"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="para2"
|
||||
:label="$t('Dict.detail.table.param2')"
|
||||
:min-width="flexWidth('para2',crud.data,$t('Dict.detail.table.param2'))"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="para3"
|
||||
:label="$t('Dict.detail.table.param3')"
|
||||
:min-width="flexWidth('para3',crud.data,$t('Dict.detail.table.param3'))"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
v-permission="['admin','dict:edit','dict:del']"
|
||||
label="操作"
|
||||
:label="$t('common.Operate')"
|
||||
align="center"
|
||||
width="115px"
|
||||
width="165px"
|
||||
fixed="right"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
@@ -105,15 +139,32 @@ import CRUD, { form, header, presenter } from '@crud/crud'
|
||||
import pagination from '@crud/Pagination'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import i18n from '@/i18n'
|
||||
|
||||
const defaultForm = { dict_id: null, name: null, label: null, value: null, dict_sort: null, dictType: null, para1: null, para2: null, para3: null, createId: null, createName: null, createTime: null, updateId: null, updateName: null, updateTime: null }
|
||||
const defaultForm = {
|
||||
dict_id: null,
|
||||
name: null,
|
||||
label: null,
|
||||
value: null,
|
||||
dict_sort: null,
|
||||
dictType: null,
|
||||
para1: null,
|
||||
para2: null,
|
||||
para3: null,
|
||||
createId: null,
|
||||
createName: null,
|
||||
createTime: null,
|
||||
updateId: null,
|
||||
updateName: null,
|
||||
updateTime: null
|
||||
}
|
||||
|
||||
export default {
|
||||
components: { pagination, rrOperation, udOperation },
|
||||
cruds() {
|
||||
return [
|
||||
CRUD({
|
||||
title: '字典详情',
|
||||
title: i18n.t('Dict.table.dict_detail'),
|
||||
url: 'api/dict/dictDetail',
|
||||
query: { code: '' },
|
||||
idField: 'dict_id',
|
||||
@@ -140,13 +191,13 @@ export default {
|
||||
dict_id: null,
|
||||
rules: {
|
||||
label: [
|
||||
{ required: true, message: '请输入字典标签', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Dict.detail.rules.r1'), trigger: 'blur' }
|
||||
],
|
||||
value: [
|
||||
{ required: true, message: '请输入字典值', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Dict.detail.rules.r2'), trigger: 'blur' }
|
||||
],
|
||||
dict_sort: [
|
||||
{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }
|
||||
{ required: true, message: i18n.t('Dict.detail.rules.r3'), trigger: 'blur', type: 'number' }
|
||||
]
|
||||
},
|
||||
permission: {
|
||||
@@ -155,6 +206,22 @@ export default {
|
||||
del: ['admin', 'dict:del']
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
computedLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'en') {
|
||||
return `450px`
|
||||
}
|
||||
return `420px`
|
||||
},
|
||||
computedFormLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'en') {
|
||||
return `140px`
|
||||
}
|
||||
return `100px`
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -7,19 +7,19 @@
|
||||
:before-close="crud.cancelCU"
|
||||
:visible="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
width="500px"
|
||||
:width="computedLabelWidth"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
||||
<el-form-item label="字典编码" prop="code">
|
||||
<el-input v-model="form.code" style="width: 370px;" />
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
|
||||
<el-form-item :label="$t('Dict.table.dict_code')" prop="code">
|
||||
<el-input v-model="form.code" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="名称">
|
||||
<el-input v-model="form.name" style="width: 370px;" />
|
||||
<el-form-item :label="$t('Dict.table.dict_name')">
|
||||
<el-input v-model="form.name" style="width: 240px;" />
|
||||
</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>
|
||||
<!-- 字典列表 -->
|
||||
@@ -34,7 +34,7 @@
|
||||
v-model="query.blurry"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="输入名称或者描述搜索"
|
||||
:placeholder="$t('Dict.placeholder.blurry')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
@@ -54,12 +54,11 @@
|
||||
@current-change="handleCurrentChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column show-overflow-tooltip prop="code" label="编码" />
|
||||
<el-table-column show-overflow-tooltip prop="name" label="名称" />
|
||||
<el-table-column show-overflow-tooltip prop="code" :label="$t('Dict.table.code')" />
|
||||
<el-table-column show-overflow-tooltip prop="name" :label="$t('Dict.table.name')" />
|
||||
<el-table-column
|
||||
v-permission="['admin','dict:edit','dict:del']"
|
||||
label="操作"
|
||||
width="130px"
|
||||
:label="$t('common.Operate')"
|
||||
align="center"
|
||||
fixed="right"
|
||||
>
|
||||
@@ -79,7 +78,7 @@
|
||||
<el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>字典详情</span>
|
||||
<span>{{ $t('Dict.table.dict_detail') }}</span>
|
||||
<el-button
|
||||
v-if="checkPermission(['admin','dict:add']) && this.$refs.dictDetail && this.$refs.dictDetail.query.code"
|
||||
class="filter-item"
|
||||
@@ -88,7 +87,7 @@
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="$refs.dictDetail && $refs.dictDetail.crud.toAdd()"
|
||||
>新增
|
||||
>{{ $t('common.Create') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<dictDetail ref="dictDetail" :permission="permission" />
|
||||
@@ -108,6 +107,7 @@ import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import i18n from '@/i18n'
|
||||
|
||||
const defaultForm = {
|
||||
dict_id: null,
|
||||
@@ -127,7 +127,7 @@ export default {
|
||||
components: { crudOperation, pagination, rrOperation, udOperation, dictDetail },
|
||||
cruds() {
|
||||
return [
|
||||
CRUD({ title: '字典', url: 'api/dict', idField: 'dict_id', crudMethod: { ...crudDict }})
|
||||
CRUD({ title: i18n.t('Dict.title'), url: 'api/dict', idField: 'dict_id', crudMethod: { ...crudDict }})
|
||||
]
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm)],
|
||||
@@ -139,7 +139,7 @@ export default {
|
||||
],
|
||||
rules: {
|
||||
code: [
|
||||
{ required: true, message: '请输入编码', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Dict.rules.r1'), trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
permission: {
|
||||
@@ -149,6 +149,22 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
computedLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'zh') {
|
||||
return `380px`
|
||||
}
|
||||
return `450px`
|
||||
},
|
||||
computedFormLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'zh') {
|
||||
return `80px`
|
||||
}
|
||||
return `160px`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
checkPermission,
|
||||
// 获取数据前设置好接口地址
|
||||
|
||||
@@ -36,9 +36,9 @@
|
||||
:before-close="crud.cancelCU"
|
||||
:visible.sync="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
width="650px"
|
||||
:width="computedLabelWidth"
|
||||
>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="100px">
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
|
||||
<el-form-item :label="$t('menu.dialog.menu_type')" prop="type">
|
||||
<el-radio-group v-model="form.type" size="mini">
|
||||
<el-radio-button label="1">{{ $t('menu.dialog.system') }}</el-radio-button>
|
||||
@@ -69,20 +69,20 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-show="form.type.toString() !== '2' && form.type.toString() !== '1'" :label="$t('menu.dialog.menu_chain')" prop="iframe">
|
||||
<el-radio-group v-model="form.iframe" size="mini">
|
||||
<el-radio-button label="true">是</el-radio-button>
|
||||
<el-radio-button label="false">否</el-radio-button>
|
||||
<el-radio-button label="true">{{ $t('common.Yes') }}</el-radio-button>
|
||||
<el-radio-button label="false">{{ $t('common.No') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-show="form.type.toString() === '2'" :label="$t('menu.dialog.menu_cache')" prop="cache">
|
||||
<el-radio-group v-model="form.cache" size="mini">
|
||||
<el-radio-button label="true">是</el-radio-button>
|
||||
<el-radio-button label="false">否</el-radio-button>
|
||||
<el-radio-button label="true">{{ $t('common.Yes') }}</el-radio-button>
|
||||
<el-radio-button label="false">{{ $t('common.No') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-show="form.type.toString() !== '2' && form.type.toString() !== '1' " :label="$t('menu.dialog.menu_visible')" prop="hidden">
|
||||
<el-radio-group v-model="form.hidden" size="mini">
|
||||
<el-radio-button label="false">是</el-radio-button>
|
||||
<el-radio-button label="true">否</el-radio-button>
|
||||
<el-radio-button label="false">{{ $t('common.Yes') }}</el-radio-button>
|
||||
<el-radio-button label="true">{{ $t('common.No') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.type.toString() !== '2'" :label="$t('menu.dialog.default_title')" prop="title">
|
||||
@@ -190,20 +190,20 @@
|
||||
<el-table-column prop="component" :label="$t('menu.table.path')" min-width="120" />
|
||||
<el-table-column prop="iframe" :label="$t('menu.table.outside_chain')" :formatter="crud.formatIsOrNot" :min-width="flexWidth('iframe',crud.data,$t('menu.table.outside_chain'))">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.iframe">YES</span>
|
||||
<span v-else>NO</span>
|
||||
<span v-if="scope.row.iframe">{{ $t('common.Yes') }}</span>
|
||||
<span v-else>{{ $t('common.No') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="cache" :label="$t('menu.table.cache')" :formatter="crud.formatIsOrNot" :min-width="flexWidth('cache',crud.data,$t('menu.table.cache'))">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.cache">YES</span>
|
||||
<span v-else>NO</span>
|
||||
<span v-if="scope.row.cache">{{ $t('common.Yes') }}</span>
|
||||
<span v-else>{{ $t('common.No') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="hidden" :label="$t('menu.table.visible')" :formatter="crud.formatIsOrNot" :min-width="flexWidth('hidden',crud.data,$t('menu.table.visible'))">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.hidden">NO</span>
|
||||
<span v-else>YES</span>
|
||||
<span v-if="scope.row.hidden">{{ $t('common.No') }}</span>
|
||||
<span v-else>{{ $t('common.Yes') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_time" :label="$t('menu.table.create_time')" :min-width="flexWidth('create_time',crud.data,$t('menu.table.create_time'))" />
|
||||
@@ -299,6 +299,28 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
computedLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'en') {
|
||||
return `800px`
|
||||
}
|
||||
if (item === 'in') {
|
||||
return `800px`
|
||||
}
|
||||
return `650px`
|
||||
},
|
||||
computedFormLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'en') {
|
||||
return `140px`
|
||||
}
|
||||
if (item === 'in') {
|
||||
return `150px`
|
||||
}
|
||||
return `100px`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
normalizer(node) {
|
||||
return {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
v-model="query.job_name"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="输入任务名称搜索"
|
||||
:placeholder="$t('Scheduling.placeholder.search')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="toQuery"
|
||||
@@ -24,7 +24,8 @@
|
||||
type="info"
|
||||
icon="el-icon-tickets"
|
||||
@click="doLog"
|
||||
>日志
|
||||
>
|
||||
{{ $t('Scheduling.placeholder.log') }}
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<Log ref="log" />
|
||||
@@ -36,60 +37,67 @@
|
||||
:visible.sync="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
append-to-body
|
||||
width="730px"
|
||||
:width="computedLabelWidth"
|
||||
>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="100px">
|
||||
<el-form-item label="任务名称" prop="job_name">
|
||||
<el-form
|
||||
ref="form"
|
||||
:inline="true"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
size="mini"
|
||||
:label-width="computedFormLabelWidth"
|
||||
>
|
||||
<el-form-item :label="$t('Scheduling.table.job_name')" prop="job_name">
|
||||
<el-input v-model="form.job_name" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务描述" prop="description">
|
||||
<el-form-item :label="$t('Scheduling.table.description')" prop="description">
|
||||
<el-input v-model="form.description" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Bean名称" prop="bean_name">
|
||||
<el-form-item :label="$t('Scheduling.table.bean_name')" prop="bean_name">
|
||||
<el-input v-model="form.bean_name" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="执行方法" prop="method_name">
|
||||
<el-form-item :label="$t('Scheduling.table.method_name')" prop="method_name">
|
||||
<el-input v-model="form.method_name" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Cron表达式" prop="cron_expression">
|
||||
<el-form-item :label="$t('Scheduling.table.cron_expression')" prop="cron_expression">
|
||||
<!-- <el-input v-model="form.cron_expression" style="width: 220px;" />-->
|
||||
<el-input v-model="form.cron_expression" placeholder="请输入CRON 表达式" style="width: 220px;">
|
||||
<el-input v-model="form.cron_expression" :placeholder="$t('Scheduling.placeholder.cron_expression')" style="width: 220px;">
|
||||
<template slot="append">
|
||||
<el-button type="primary" @click="handleShowCron">
|
||||
生成表达式
|
||||
{{ $t('Scheduling.placeholder.build_corn') }}
|
||||
<i class="el-icon-time el-icon--right" />
|
||||
</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="子任务ID">
|
||||
<el-input v-model="form.sub_task" placeholder="多个用逗号隔开,按顺序执行" style="width: 220px;" />
|
||||
<el-form-item :label="$t('Scheduling.dialog.sub_task')">
|
||||
<el-input v-model="form.sub_task" :placeholder="$t('Scheduling.dialog.p1')" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务负责人" prop="person_in_charge">
|
||||
<el-form-item :label="$t('Scheduling.dialog.person_in_charge')" prop="person_in_charge">
|
||||
<el-input v-model="form.person_in_charge" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="告警邮箱" prop="email">
|
||||
<el-input v-model="form.email" placeholder="多个邮箱用逗号隔开" style="width: 220px;" />
|
||||
<el-form-item :label="$t('Scheduling.dialog.email')" prop="email">
|
||||
<el-input v-model="form.email" :placeholder="$t('Scheduling.dialog.p2')" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="失败后暂停">
|
||||
<el-form-item :label="$t('Scheduling.dialog.pause_after_failure')">
|
||||
<el-radio-group v-model="form.pause_after_failure" style="width: 220px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
<el-radio :label="true">{{ $t('common.Yes') }}</el-radio>
|
||||
<el-radio :label="false">{{ $t('common.No') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务状态">
|
||||
<el-form-item :label="$t('Scheduling.dialog.is_pause')">
|
||||
<el-radio-group v-model="form.is_pause" style="width: 220px">
|
||||
<el-radio :label="false">启用</el-radio>
|
||||
<el-radio :label="true">暂停</el-radio>
|
||||
<el-radio :label="false">{{ $t('Scheduling.dialog.start') }}</el-radio>
|
||||
<el-radio :label="true">{{ $t('Scheduling.dialog.stop') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="参数内容">
|
||||
<el-form-item :label="$t('Scheduling.dialog.params')">
|
||||
<el-input v-model="form.params" style="width: 556px;" rows="4" 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>
|
||||
<!--表格渲染-->
|
||||
@@ -101,35 +109,35 @@
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
||||
<el-table-column show-overflow-tooltip prop="job_id" label="任务ID" />
|
||||
<el-table-column show-overflow-tooltip prop="job_name" label="任务名称" min-width="120" />
|
||||
<el-table-column show-overflow-tooltip prop="bean_name" label="Bean名称" />
|
||||
<el-table-column show-overflow-tooltip prop="method_name" label="执行方法" />
|
||||
<el-table-column show-overflow-tooltip prop="params" label="参数" />
|
||||
<el-table-column show-overflow-tooltip prop="job_id" :label="$t('Scheduling.table.job_id')" />
|
||||
<el-table-column show-overflow-tooltip prop="job_name" :label="$t('Scheduling.table.job_name')" min-width="120" />
|
||||
<el-table-column show-overflow-tooltip prop="bean_name" :label="$t('Scheduling.table.bean_name')" />
|
||||
<el-table-column show-overflow-tooltip prop="method_name" :label="$t('Scheduling.table.method_name')" />
|
||||
<el-table-column show-overflow-tooltip prop="params" :label="$t('Scheduling.table.params')" />
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="cron_expression"
|
||||
label="cron表达式"
|
||||
:label="$t('Scheduling.table.cron_expression')"
|
||||
min-width="100"
|
||||
show-tooltip-when-overflow
|
||||
/>
|
||||
<el-table-column show-overflow-tooltip prop="is_pause" width="90px" label="状态">
|
||||
<el-table-column show-overflow-tooltip prop="is_pause" width="90px" :label="$t('Scheduling.table.is_pause')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.is_pause ? 'warning' : 'success'">{{
|
||||
scope.row.is_pause ? '已暂停' : '运行中'
|
||||
scope.row.is_pause ? $t('Scheduling.table.is_pause_ok') : $t('Scheduling.table.is_pause_no')
|
||||
}}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="description" width="150px" label="描述" />
|
||||
<el-table-column show-overflow-tooltip prop="create_time" width="136px" label="创建日期">
|
||||
<el-table-column show-overflow-tooltip prop="description" width="150px" :label="$t('Scheduling.table.description')" />
|
||||
<el-table-column show-overflow-tooltip prop="create_time" width="150px" :label="$t('Scheduling.table.create_time')">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-permission="['admin','timing:edit','timing:del']"
|
||||
label="操作"
|
||||
:label="$t('common.Operate')"
|
||||
width="170px"
|
||||
align="center"
|
||||
fixed="right"
|
||||
@@ -141,7 +149,8 @@
|
||||
style="margin-right: 3px;"
|
||||
type="text"
|
||||
@click="crud.toEdit(scope.row)"
|
||||
>编辑
|
||||
>
|
||||
{{ $t('common.Editors') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-permission="['admin','timing:edit']"
|
||||
@@ -149,16 +158,17 @@
|
||||
type="text"
|
||||
size="mini"
|
||||
@click="execute(scope.row.job_id)"
|
||||
>执行
|
||||
>
|
||||
{{ $t('Scheduling.table.execute') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-permission="['admin','timing:edit']"
|
||||
style="margin-left: 3px"
|
||||
type="text"
|
||||
size="mini"
|
||||
@click="updateStatus(scope.row.job_id,scope.row.is_pause ? '恢复' : '暂停')"
|
||||
@click="updateStatus(scope.row.job_id,scope.row.is_pause ? $t('Scheduling.table.recover') : $t('Scheduling.table.pause'))"
|
||||
>
|
||||
{{ scope.row.is_pause ? '恢复' : '暂停' }}
|
||||
{{ scope.row.is_pause ? $t('Scheduling.table.recover') : $t('Scheduling.table.pause') }}
|
||||
</el-button>
|
||||
<el-popover
|
||||
:ref="scope.row.job_id"
|
||||
@@ -166,20 +176,25 @@
|
||||
placement="top"
|
||||
width="200"
|
||||
>
|
||||
<p>确定停止并删除该任务吗?</p>
|
||||
<p>{{ $t('Scheduling.msg.tip1') }}</p>
|
||||
<div style="text-align: right; margin: 0">
|
||||
<el-button size="mini" type="text" @click="$refs[scope.row.job_id].doClose()">取消</el-button>
|
||||
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row.job_id)">确定
|
||||
<el-button size="mini" type="text" @click="$refs[scope.row.job_id].doClose()">
|
||||
{{ $t('common.Cancel') }}
|
||||
</el-button>
|
||||
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row.job_id)">
|
||||
{{ $t('common.Confirm') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-button slot="reference" type="text" size="mini">删除</el-button>
|
||||
<el-button slot="reference" type="text" size="mini">
|
||||
{{ $t('common.Delete') }}
|
||||
</el-button>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
<el-dialog title="Cron表达式生成器" :visible.sync="openCron" append-to-body class="scrollbar" destroy-on-close>
|
||||
<el-dialog :title="$t('Scheduling.table.openCron')" :visible.sync="openCron" append-to-body class="scrollbar" destroy-on-close>
|
||||
<crontab :expression="expression" @hide="openCron=false" @fill="crontabFill" />
|
||||
</el-dialog>
|
||||
</div>
|
||||
@@ -193,6 +208,7 @@ import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import Crontab from './components/crontab'
|
||||
import i18n from '@/i18n'
|
||||
|
||||
const defaultForm = {
|
||||
job_id: null,
|
||||
@@ -212,7 +228,7 @@ export default {
|
||||
name: 'Timing',
|
||||
components: { Log, pagination, crudOperation, rrOperation, Crontab },
|
||||
cruds() {
|
||||
return CRUD({ title: '定时任务', idField: 'job_id', url: 'api/jobs', crudMethod: { ...crudJob }})
|
||||
return CRUD({ title: i18n.t('Scheduling.title'), idField: 'job_id', url: 'api/jobs', crudMethod: { ...crudJob }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
@@ -225,22 +241,22 @@ export default {
|
||||
},
|
||||
rules: {
|
||||
job_name: [
|
||||
{ required: true, message: '请输入任务名称', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Scheduling.rules.r1'), trigger: 'blur' }
|
||||
],
|
||||
description: [
|
||||
{ required: true, message: '请输入任务描述', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Scheduling.rules.r2'), trigger: 'blur' }
|
||||
],
|
||||
bean_name: [
|
||||
{ required: true, message: '请输入Bean名称', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Scheduling.rules.r3'), trigger: 'blur' }
|
||||
],
|
||||
method_name: [
|
||||
{ required: true, message: '请输入方法名称', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Scheduling.rules.r4'), trigger: 'blur' }
|
||||
],
|
||||
cron_expression: [
|
||||
{ required: true, message: '请输入Cron表达式', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Scheduling.rules.r5'), trigger: 'blur' }
|
||||
],
|
||||
person_in_charge: [
|
||||
{ required: true, message: '请输入负责人名称', trigger: 'blur' }
|
||||
{ required: true, message: i18n.t('Scheduling.rules.r6'), trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
// 是否显示Cron表达式弹出层
|
||||
@@ -249,6 +265,28 @@ export default {
|
||||
expression: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
computedLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'en') {
|
||||
return `800px`
|
||||
}
|
||||
if (item === 'in') {
|
||||
return `860px`
|
||||
}
|
||||
return `730px`
|
||||
},
|
||||
computedFormLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'en') {
|
||||
return `140px`
|
||||
}
|
||||
if (item === 'in') {
|
||||
return `170px`
|
||||
}
|
||||
return `100px`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 执行
|
||||
execute(id) {
|
||||
|
||||
@@ -1,39 +1,45 @@
|
||||
<template>
|
||||
<el-dialog :visible.sync="dialog" append-to-body title="执行日志" width="88%">
|
||||
<el-dialog :visible.sync="dialog" append-to-body :title="$t('Scheduling.log.dialog_title')" width="88%">
|
||||
<!-- 搜索 -->
|
||||
<div class="head-container">
|
||||
<el-input v-model="query.job_name" clearable size="mini" placeholder="输入任务名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery" />
|
||||
<el-input v-model="query.job_name" clearable size="mini" :placeholder="$t('Scheduling.placeholder.search')" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery" />
|
||||
<date-range-picker v-model="query.create_time" class="date-item" />
|
||||
<el-select v-model="query.is_success" placeholder="日志状态" clearable size="mini" class="filter-item" style="width: 110px" @change="toQuery">
|
||||
<el-select v-model="query.is_success" :placeholder="$t('Scheduling.log.log_status')" clearable size="mini" class="filter-item" style="width: 110px" @change="toQuery">
|
||||
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.displayName" :value="item.key" />
|
||||
</el-select>
|
||||
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
|
||||
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">
|
||||
{{ $t('Scheduling.log.search') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<!--表格渲染-->
|
||||
<el-table v-loading="loading" :data="data" style="width: 100%;margin-top: -10px;">
|
||||
<el-table-column show-overflow-tooltip prop="job_name" label="任务名称" />
|
||||
<el-table-column show-overflow-tooltip prop="bean_name" label="Bean名称" />
|
||||
<el-table-column show-overflow-tooltip prop="method_name" label="执行方法" />
|
||||
<el-table-column show-overflow-tooltip prop="params" width="120px" label="参数" />
|
||||
<el-table-column show-overflow-tooltip prop="cron_expression" label="cron表达式" />
|
||||
<el-table-column prop="create_time" label="异常详情" width="110px">
|
||||
<el-table-column show-overflow-tooltip prop="job_name" :label="$t('Scheduling.table.job_name')" />
|
||||
<el-table-column show-overflow-tooltip prop="bean_name" :label="$t('Scheduling.table.bean_name')" />
|
||||
<el-table-column show-overflow-tooltip prop="method_name" :label="$t('Scheduling.table.method_name')" />
|
||||
<el-table-column show-overflow-tooltip prop="params" width="120px" :label="$t('Scheduling.table.params')" />
|
||||
<el-table-column show-overflow-tooltip prop="cron_expression" :label="$t('Scheduling.table.cron_expression')" />
|
||||
<el-table-column prop="description" :label="$t('Scheduling.log.description')" width="110px">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-show="scope.row.exception_detail" size="mini" type="text" @click="info(scope.row.exception_detail)">查看详情</el-button>
|
||||
<el-button v-show="scope.row.exception_detail" size="mini" type="text" @click="info(scope.row.exception_detail)">
|
||||
{{ $t('Scheduling.log.see_description') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip align="center" prop="time" width="100px" label="耗时(毫秒)" />
|
||||
<el-table-column align="center" prop="is_success" width="80px" label="状态">
|
||||
<el-table-column show-overflow-tooltip align="center" prop="time" width="100px" :label="$t('Scheduling.log.elapsed')" />
|
||||
<el-table-column align="center" prop="is_success" width="80px" :label="$t('Scheduling.table.is_pause')">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.is_success ? 'success' : 'danger'">{{ scope.row.is_success ? '成功' : '失败' }}</el-tag>
|
||||
<el-tag :type="scope.row.is_success ? 'success' : 'danger'">
|
||||
{{ scope.row.is_success ? $t('Scheduling.log.success') : $t('Scheduling.log.fail') }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="100" show-overflow-tooltip prop="create_time" label="创建日期">
|
||||
<el-table-column min-width="100" show-overflow-tooltip prop="create_time" :label="$t('Scheduling.table.create_time')">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-dialog :visible.sync="errorDialog" append-to-body title="异常详情" width="85%">
|
||||
<el-dialog :visible.sync="errorDialog" append-to-body :title="$t('Scheduling.log.description')" width="85%">
|
||||
<pre v-highlightjs="errorInfo"><code class="java" /></pre>
|
||||
</el-dialog>
|
||||
<!--分页组件-->
|
||||
@@ -52,16 +58,17 @@
|
||||
<script>
|
||||
import crud from '@/mixins/crud'
|
||||
import DateRangePicker from '@/components/DateRangePicker'
|
||||
import i18n from '@/i18n'
|
||||
export default {
|
||||
components: { DateRangePicker },
|
||||
mixins: [crud],
|
||||
data() {
|
||||
return {
|
||||
title: '任务日志',
|
||||
title: i18n.t('Scheduling.log.title'),
|
||||
errorInfo: '', errorDialog: false,
|
||||
enabledTypeOptions: [
|
||||
{ key: '1', displayName: '成功' },
|
||||
{ key: '0', displayName: '失败' }
|
||||
{ key: '1', displayName: i18n.t('Scheduling.log.success') },
|
||||
{ key: '0', displayName: i18n.t('Scheduling.log.fail') }
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
v-model="deptName"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="请输入部门名称"
|
||||
:placeholder="$t('User.placeholder.dep_tip')"
|
||||
prefix-icon="el-icon-search"
|
||||
class="filter-item"
|
||||
@input="getDeptDatas"
|
||||
@@ -30,7 +30,7 @@
|
||||
v-model="query.blurry"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="输入账号或者名称"
|
||||
:placeholder="$t('User.placeholder.blu_tip')"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
@@ -39,7 +39,7 @@
|
||||
v-model="query.is_used"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="状态"
|
||||
:placeholder="$t('User.table.enabled')"
|
||||
class="filter-item"
|
||||
style="width: 90px"
|
||||
@change="crud.toQuery"
|
||||
@@ -62,23 +62,23 @@
|
||||
:before-close="crud.cancelCU"
|
||||
:visible.sync="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
width="700px"
|
||||
:width="computedLabelWidth"
|
||||
>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="100px">
|
||||
<el-form-item label="用户名" prop="username">
|
||||
<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-input v-model="form.username" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="电话" prop="phone">
|
||||
<el-form-item :label="$t('User.table.phone')" prop="phone">
|
||||
<el-input v-model.number="form.phone" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="preson_name">
|
||||
<el-form-item :label="$t('User.table.person_name')" prop="preson_name">
|
||||
<el-input v-model="form.person_name" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-form-item :label="$t('User.table.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="部门" prop="depts" :rules="[{ required: true, message: '请选择部门', trigger: 'change' }]">
|
||||
<el-form-item v-if="crud.status.add" :label="$t('User.table.depts')" prop="depts" :rules="[{ required: true, message: '请选择部门', trigger: 'change' }]">
|
||||
<treeselect
|
||||
v-model="form.depts"
|
||||
:load-options="loadDepts"
|
||||
@@ -87,20 +87,20 @@
|
||||
:multiple="true"
|
||||
:flat="true"
|
||||
:normalizer="normalizer"
|
||||
placeholder="选择部门类目"
|
||||
:placeholder="$t('User.placeholder.dep_select_tip')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<br v-if="!crud.status.add">
|
||||
<el-form-item v-if="crud.status.add" label="密码" 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-form-item>
|
||||
<el-form-item label="性别">
|
||||
<el-form-item :label="$t('User.table.gender')">
|
||||
<el-radio-group v-model="form.gender" style="width: 178px">
|
||||
<el-radio label="男">男</el-radio>
|
||||
<el-radio label="女">女</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-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="is_uesd">
|
||||
<el-form-item :label="$t('User.table.enabled')" prop="is_uesd">
|
||||
<el-switch
|
||||
v-model="form.is_used"
|
||||
active-color="#409EFF"
|
||||
@@ -108,14 +108,14 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<br v-if="!crud.status.edit">
|
||||
<el-form-item v-if="crud.status.add" style="margin-bottom: 0;" label="角色" prop="roles">
|
||||
<el-form-item v-if="crud.status.add" style="margin-bottom: 0;" :label="$t('User.dialog.role')" prop="roles">
|
||||
<el-select
|
||||
v-model="roleDatas"
|
||||
style="width: 512px"
|
||||
multiple
|
||||
active-value="1"
|
||||
inactive-value="0"
|
||||
placeholder="请选择"
|
||||
:placeholder="$t('common.Please_select')"
|
||||
@remove-tag="deleteTag"
|
||||
@change="changeRole"
|
||||
>
|
||||
@@ -130,8 +130,8 @@
|
||||
</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>
|
||||
<!--表格渲染-->
|
||||
@@ -143,50 +143,54 @@
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
||||
<el-table-column prop="username" label="用户名" :min-width="flexWidth('username',crud.data,'用户名')" />
|
||||
<el-table-column prop="username" :label="$t('User.table.user_name')" :min-width="flexWidth('username',crud.data,$t('User.table.user_name'))" />
|
||||
<el-table-column
|
||||
prop="person_name"
|
||||
label="姓名"
|
||||
:min-width="flexWidth('person_name',crud.data,'姓名')"
|
||||
:label="$t('User.table.person_name')"
|
||||
:min-width="flexWidth('person_name',crud.data,$t('User.table.person_name'))"
|
||||
/>
|
||||
<el-table-column prop="gender" label="性别" :min-width="flexWidth('gender',crud.data,'性别')" />
|
||||
<el-table-column prop="phone" label="电话" :min-width="flexWidth('phone',crud.data,'电话')" />
|
||||
<el-table-column prop="email" label="邮箱" :min-width="flexWidth('email',crud.data,'邮箱')" />
|
||||
<el-table-column show-overflow-tooltip prop="depts" label="部门" :min-width="flexWidth('depts',crud.data,'邮箱')">
|
||||
<el-table-column prop="gender" :label="$t('User.table.gender')" :min-width="flexWidth('gender',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>
|
||||
</el-table-column>
|
||||
<el-table-column prop="phone" :label="$t('User.table.phone')" :min-width="flexWidth('phone',crud.data,$t('User.table.phone'))" />
|
||||
<el-table-column prop="email" :label="$t('User.table.email')" :min-width="flexWidth('email',crud.data,$t('User.table.email'))" />
|
||||
<el-table-column show-overflow-tooltip prop="depts" :label="$t('User.table.depts')" :min-width="flexWidth('depts',crud.data,$t('User.table.depts'))">
|
||||
<template slot-scope="scope">
|
||||
<span v-for="(item, index) in scope.row.depts" :key="index">
|
||||
{{ item.name }}<span v-if="index !== scope.row.depts.length - 1">、</span>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="enabled">
|
||||
<el-table-column :label="$t('User.table.enabled')" align="center" prop="enabled">
|
||||
<template slot-scope="scope">
|
||||
<span :style="{'color': caseStatusColorFilter(scope.row.is_used)}">{{ enabledTypeOptions.find(item => {return item.key == scope.row.is_used}).display_name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_time" label="创建日期" :min-width="flexWidth('create_time',crud.data,'创建日期')" />
|
||||
<el-table-column prop="create_time" :label="$t('User.table.create_time')" :min-width="flexWidth('create_time',crud.data,$t('User.table.create_time'))" />
|
||||
<el-table-column
|
||||
label="操作"
|
||||
:label="$t('common.Operate')"
|
||||
fixed="right"
|
||||
align="center"
|
||||
width="200"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="crud.toEdit(scope.row)">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handdeleted(scope.row)">删除</el-button>
|
||||
<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-delete" @click="handdeleted(scope.row)">{{ $t('common.Delete') }}</el-button>
|
||||
<el-dropdown v-hasPermi="['system:user:resetPwd', 'system:user:edit']" size="mini">
|
||||
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">{{ $t('common.More') }}</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item icon="el-icon-refresh-right"><span @click="resetPassword(scope.row)">重置密码</span></el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-refresh-right"><span @click="resetPassword(scope.row)">{{ $t('User.table.reset_pwd') }}</span></el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-key">
|
||||
<span @click="openDeptDrawer(scope.row)">部门权限</span>
|
||||
<span @click="openDeptDrawer(scope.row)">{{ $t('User.table.dept_reg') }}</span>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-key">
|
||||
<span @click="openDataDialog(scope.row)">数据权限</span>
|
||||
<span @click="openDataDialog(scope.row)">{{ $t('User.table.data_reg') }}</span>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-lock"><span @click="changeEnabled(scope.row)">{{ enabledTypeOptions.find(item => {return item.key !== scope.row.is_used}).display_name }}账号</span></el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-lock"><span @click="changeEnabled(scope.row)">{{ enabledTypeOptions.find(item => {return item.key !== scope.row.is_used}).display_name }}{{ $t('User.table.account') }}</span></el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-circle-check">
|
||||
<span @click="openRoleDrawer(scope.row)">分配角色</span>
|
||||
<span @click="openRoleDrawer(scope.row)">{{ $t('User.table.assign_roles') }}</span>
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
@@ -306,14 +310,14 @@
|
||||
:data="dataPermissions"
|
||||
style="width: 100%; max-height: 500px"
|
||||
>
|
||||
<el-table-column prop="permission_scope_type" label="权限类型" min-width="100" show-overflow-tooltip>
|
||||
<el-table-column prop="permission_scope_type" :label="$t('User.table.permission_scope_type')" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.permission_scope_type[scope.row.permission_scope_type] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="permissionName" label="权限范围" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="deptName" label="部门名称" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="person_name" label="用户名称" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="permissionName" :label="$t('User.table.permissionName')" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="deptName" :label="$t('User.table.deptName')" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="person_name" :label="$t('User.table.person_name')" min-width="100" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
<relevance-user-dialog :dialog-show.sync="relevanceUser" :is-single="false" :users="userIds" @selectUsers="selectUsers" />
|
||||
@@ -336,6 +340,7 @@ import { mapGetters } from 'vuex'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import RelevanceUserDialog from '@/views/system/user/dialog/relevanceUserDialog'
|
||||
import RelevanceDeptDialog from '@/views/system/user/dialog/relevanceDeptDialog'
|
||||
import i18n from '@/i18n'
|
||||
|
||||
let userRoles = []
|
||||
const defaultForm = {
|
||||
@@ -343,7 +348,7 @@ const defaultForm = {
|
||||
depts: [],
|
||||
username: null,
|
||||
person_name: null,
|
||||
gender: '男',
|
||||
gender: '1',
|
||||
email: null,
|
||||
is_used: true,
|
||||
roles: [],
|
||||
@@ -354,7 +359,7 @@ export default {
|
||||
name: 'User',
|
||||
components: { RelevanceDeptDialog, RelevanceUserDialog, Treeselect, crudOperation, rrOperation, udOperation, pagination },
|
||||
cruds() {
|
||||
return CRUD({ title: '用户', idField: 'user_id', url: 'api/users', crudMethod: { ...crudUser }})
|
||||
return CRUD({ title: i18n.t('User.title'), idField: 'user_id', url: 'api/users', crudMethod: { ...crudUser }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
// 数据字典
|
||||
@@ -372,8 +377,8 @@ export default {
|
||||
del: ['admin', 'user:del']
|
||||
},
|
||||
enabledTypeOptions: [
|
||||
{ key: true, display_name: '激活' },
|
||||
{ key: false, display_name: '锁定' }
|
||||
{ key: true, display_name: i18n.t('User.table.activate') },
|
||||
{ key: false, display_name: i18n.t('User.table.locked') }
|
||||
],
|
||||
rules: {
|
||||
username: [
|
||||
@@ -410,7 +415,21 @@ export default {
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'user'
|
||||
])
|
||||
]),
|
||||
computedLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'zh') {
|
||||
return `650px`
|
||||
}
|
||||
return `720px`
|
||||
},
|
||||
computedFormLabelWidth() {
|
||||
const item = localStorage.getItem('lang')
|
||||
if (item === 'zh') {
|
||||
return `80px`
|
||||
}
|
||||
return `120px`
|
||||
}
|
||||
},
|
||||
beforeMount() {
|
||||
this.deptTree()
|
||||
|
||||
Reference in New Issue
Block a user