feat: 基础部分的国际化
This commit is contained in:
@@ -29,9 +29,9 @@ public class SecurityUtils {
|
|||||||
return json.toBean(CurrentUser.class);
|
return json.toBean(CurrentUser.class);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} 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 SysUser user;
|
||||||
|
|
||||||
private List<String> permissions = new ArrayList<>();
|
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
|
@Autowired
|
||||||
private ISysUserService userService;
|
private ISysUserService userService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public ResponseEntity<Object> query(UserQuery query, PageQuery page){
|
public ResponseEntity<Object> query(UserQuery query, PageQuery page){
|
||||||
return new ResponseEntity(TableDataInfo.build(userService.getUserDetail(query, page)),HttpStatus.OK);
|
return new ResponseEntity(TableDataInfo.build(userService.getUserDetail(query, page)),HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Log("新增用户")
|
@Log("新增用户")
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public ResponseEntity<Object> create(@RequestBody Map user){
|
public ResponseEntity<Object> create(@RequestBody Map user){
|
||||||
userService.create(user);
|
userService.create(user);
|
||||||
@@ -72,7 +69,6 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Log("修改用户")
|
@Log("修改用户")
|
||||||
|
|
||||||
@PutMapping
|
@PutMapping
|
||||||
public ResponseEntity<Object> update( @RequestBody Map resources) throws Exception {
|
public ResponseEntity<Object> update( @RequestBody Map resources) throws Exception {
|
||||||
userService.update(resources);
|
userService.update(resources);
|
||||||
@@ -80,7 +76,6 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Log("修改用户:个人中心")
|
@Log("修改用户:个人中心")
|
||||||
|
|
||||||
public ResponseEntity<Object> center(@RequestBody SysUser resources){
|
public ResponseEntity<Object> center(@RequestBody SysUser resources){
|
||||||
if(!resources.getUser_id().equals(StpUtil.getLoginIdAsLong())){
|
if(!resources.getUser_id().equals(StpUtil.getLoginIdAsLong())){
|
||||||
throw new BadRequestException(LangProcess.msg("error_SystemAuthError"));
|
throw new BadRequestException(LangProcess.msg("error_SystemAuthError"));
|
||||||
@@ -90,14 +85,12 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Log("删除用户")
|
@Log("删除用户")
|
||||||
|
|
||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
|
||||||
userService.removeByIds(ids);
|
userService.removeByIds(ids);
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = "/updatePass")
|
@PostMapping(value = "/updatePass")
|
||||||
public ResponseEntity<Object> updatePass(@RequestBody JSONObject passVo) throws Exception {
|
public ResponseEntity<Object> updatePass(@RequestBody JSONObject passVo) throws Exception {
|
||||||
// 解密,得到字符密码
|
// 解密,得到字符密码
|
||||||
@@ -122,7 +115,6 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Log("修改邮箱")
|
@Log("修改邮箱")
|
||||||
|
|
||||||
@PostMapping(value = "/updateEmail/{code}")
|
@PostMapping(value = "/updateEmail/{code}")
|
||||||
public ResponseEntity<Object> updateEmail(@PathVariable String code,@RequestBody SysUser user) throws Exception {
|
public ResponseEntity<Object> updateEmail(@PathVariable String code,@RequestBody SysUser user) throws Exception {
|
||||||
String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,user.getPassword());
|
String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,user.getPassword());
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
window.g = {
|
window.g = {
|
||||||
dev: {
|
dev: {
|
||||||
VUE_APP_BASE_API: 'http://10.93.41.201:8010'
|
VUE_APP_BASE_API: 'http://127.0.0.1:8010'
|
||||||
},
|
},
|
||||||
prod: {
|
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>
|
<script>
|
||||||
import { DatePicker, DatePickerOptions } from 'element-ui'
|
import { DatePicker, DatePickerOptions } from 'element-ui'
|
||||||
import { calendarShortcuts } from '@/utils/shortcuts'
|
import { calendarShortcuts } from '@/utils/shortcuts'
|
||||||
|
import i18n from "@/i18n";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DateRangePicker',
|
name: 'DateRangePicker',
|
||||||
@@ -34,11 +35,11 @@ export default {
|
|||||||
},
|
},
|
||||||
startPlaceholder: {
|
startPlaceholder: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '开始日期'
|
default: i18n.t('common.startDate')
|
||||||
},
|
},
|
||||||
endPlaceholder: {
|
endPlaceholder: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '结束日期'
|
default: i18n.t('common.endDate')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
|
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
|
||||||
import zh from './zh-CN'
|
import zh from './zh-CN'
|
||||||
import menu from './menu/zh'
|
import menu from './menu/zh'
|
||||||
import param from './param/zh'
|
import param from './dict/zh'
|
||||||
import customer from './customer/zh'
|
import customer from './customer/zh'
|
||||||
import unit from './unit/zh'
|
import unit from './unit/zh'
|
||||||
import vehicleInfo from './vehicle/info/zh'
|
import vehicleInfo from './vehicle/info/zh'
|
||||||
|
import user from './user/zh'
|
||||||
|
import scheduler from './scheduling/zh'
|
||||||
|
import dept from './dept/zh'
|
||||||
|
import dict from './dict/zh'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
...zhLocale,
|
...zhLocale,
|
||||||
@@ -13,5 +17,9 @@ export default {
|
|||||||
...param,
|
...param,
|
||||||
...customer,
|
...customer,
|
||||||
...unit,
|
...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',
|
'Create': 'Create',
|
||||||
'Update': 'Update',
|
'Update': 'Update',
|
||||||
'Delete': 'Delete',
|
'Delete': 'Delete',
|
||||||
|
'More': 'More',
|
||||||
'Export': 'Export',
|
'Export': 'Export',
|
||||||
'Editors': 'Editor',
|
'Editors': 'Editor',
|
||||||
'SelectAll': 'SelectAll',
|
'SelectAll': 'SelectAll',
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import enLocale from 'element-ui/lib/locale/lang/en'
|
import enLocale from 'element-ui/lib/locale/lang/en'
|
||||||
import en from './en'
|
import en from './en'
|
||||||
import menu from './menu/en'
|
import menu from './menu/en'
|
||||||
import param from './param/en'
|
import param from './dict/en'
|
||||||
import customer from './customer/en'
|
import customer from './customer/en'
|
||||||
import unit from './unit/en'
|
import unit from './unit/en'
|
||||||
import vehicleInfo from './vehicle/info/en'
|
import vehicleInfo from './vehicle/info/en'
|
||||||
|
import user from './user/en'
|
||||||
|
import scheduler from './scheduling/en'
|
||||||
|
import dept from './dept/en'
|
||||||
|
import dict from './dict/en'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
...enLocale,
|
...enLocale,
|
||||||
@@ -13,5 +17,9 @@ export default {
|
|||||||
...param,
|
...param,
|
||||||
...customer,
|
...customer,
|
||||||
...unit,
|
...unit,
|
||||||
...vehicleInfo
|
...vehicleInfo,
|
||||||
|
...user,
|
||||||
|
...scheduler,
|
||||||
|
...dept,
|
||||||
|
...dict
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ export default {
|
|||||||
'Create': 'Buat',
|
'Create': 'Buat',
|
||||||
'Update': 'Kemaskini',
|
'Update': 'Kemaskini',
|
||||||
'Delete': 'Hapus',
|
'Delete': 'Hapus',
|
||||||
|
'More': 'Lebih',
|
||||||
'Export': 'Ekspor',
|
'Export': 'Ekspor',
|
||||||
'Editors': 'Editor',
|
'Editors': 'Editor',
|
||||||
'SelectAll': 'Pilih Semua',
|
'SelectAll': 'Pilih Semua',
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
import idLocale from 'element-ui/lib/locale/lang/id'
|
import idLocale from 'element-ui/lib/locale/lang/id'
|
||||||
import id from './in'
|
import id from './in'
|
||||||
import menu from './menu/in'
|
import menu from './menu/in'
|
||||||
import param from './param/in'
|
import param from './dict/in'
|
||||||
import customer from './customer/in'
|
import customer from './customer/in'
|
||||||
import unit from './unit/in'
|
import unit from './unit/in'
|
||||||
import vehicleInfo from './vehicle/info/in'
|
import vehicleInfo from './vehicle/info/in'
|
||||||
|
import user from './user/in'
|
||||||
|
import scheduler from './scheduling/in'
|
||||||
|
import dept from './dept/in'
|
||||||
|
import dict from './dict/in'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
...idLocale,
|
...idLocale,
|
||||||
@@ -13,5 +17,9 @@ export default {
|
|||||||
...param,
|
...param,
|
||||||
...customer,
|
...customer,
|
||||||
...unit,
|
...unit,
|
||||||
...vehicleInfo
|
...vehicleInfo,
|
||||||
|
...user,
|
||||||
|
...scheduler,
|
||||||
|
...dept,
|
||||||
|
...dict
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
export default {
|
export default {
|
||||||
'menu': {
|
'menu': {
|
||||||
'home': 'home',
|
'home': 'Dashboard',
|
||||||
'title': 'Menu',
|
'title': 'Menu',
|
||||||
'placeholder': {
|
'placeholder': {
|
||||||
'fuzzy_search': 'fuzzy search',
|
'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': '新增',
|
'Create': '新增',
|
||||||
'Update': '修改',
|
'Update': '修改',
|
||||||
'Delete': '删除',
|
'Delete': '删除',
|
||||||
|
'More': '更多',
|
||||||
'Export': '导出',
|
'Export': '导出',
|
||||||
'Editors': '编辑',
|
'Editors': '编辑',
|
||||||
'SelectAll': '全选',
|
'SelectAll': '全选',
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
v-model="query.name"
|
v-model="query.name"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="输入部门名称搜索"
|
:placeholder="$t('Dept.search.input_name')"
|
||||||
style="width: 200px;"
|
style="width: 200px;"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@keyup.enter.native="crud.toQuery"
|
@keyup.enter.native="crud.toQuery"
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
v-model="query.is_used"
|
v-model="query.is_used"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="状态"
|
:placeholder="$t('Dept.table.is_used')"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
style="width: 90px"
|
style="width: 90px"
|
||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
@@ -34,16 +34,16 @@
|
|||||||
:before-close="crud.cancelCU"
|
:before-close="crud.cancelCU"
|
||||||
:visible.sync="crud.status.cu > 0"
|
:visible.sync="crud.status.cu > 0"
|
||||||
:title="crud.status.title"
|
:title="crud.status.title"
|
||||||
width="500px"
|
:width="computedLabelWidth"
|
||||||
>
|
>
|
||||||
<el-form ref="form" inline :model="form" :rules="rules" size="mini" label-width="80px">
|
<el-form ref="form" inline :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
|
||||||
<el-form-item label="部门编码" prop="code">
|
<el-form-item :label="$t('Dept.dialog.code')" prop="code">
|
||||||
<el-input v-model="form.code" :disabled="crud.status.edit" style="width: 370px;" />
|
<el-input v-model="form.code" :disabled="crud.status.edit" style="width: 370px;" />
|
||||||
</el-form-item>
|
</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-input v-model="form.name" style="width: 370px;" />
|
||||||
</el-form-item>
|
</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
|
<el-input-number
|
||||||
v-model.number="form.dept_sort"
|
v-model.number="form.dept_sort"
|
||||||
:min="0"
|
:min="0"
|
||||||
@@ -52,45 +52,42 @@
|
|||||||
style="width: 370px;"
|
style="width: 370px;"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="外部标识" prop="ext_id">
|
<el-form-item :label="$t('Dept.dialog.isTop')">
|
||||||
<el-input v-model="form.ext_id" style="width: 370px;" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="顶级部门">
|
|
||||||
<el-radio-group v-model="form.isTop" style="width: 140px">
|
<el-radio-group v-model="form.isTop" style="width: 140px">
|
||||||
<el-radio label="1">是</el-radio>
|
<el-radio label="1">{{ $t('common.Yes') }}</el-radio>
|
||||||
<el-radio label="0">否</el-radio>
|
<el-radio label="0">{{ $t('common.No') }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="is_used">
|
<el-form-item :label="$t('Dept.table.is_used')" prop="is_used">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="form.is_used"
|
v-model="form.is_used"
|
||||||
active-color="#409EFF"
|
active-color="#409EFF"
|
||||||
inactive-color="#F56C6C"
|
inactive-color="#F56C6C"
|
||||||
active-value = 'true'
|
active-value="true"
|
||||||
inactive-valu='false'
|
inactive-valu="false"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</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
|
<treeselect
|
||||||
v-model="form.pid"
|
v-model="form.pid"
|
||||||
:load-options="loadDepts"
|
:load-options="loadDepts"
|
||||||
:options="depts"
|
:options="depts"
|
||||||
style="width: 370px;"
|
style="width: 370px;"
|
||||||
:normalizer="normalizer"
|
:normalizer="normalizer"
|
||||||
placeholder="选择部门类目"
|
:placeholder="$t('Dept.dialog.select_dep')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
<el-button type="text" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
|
||||||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('common.Confirm') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--表格渲染 :load="getDeptDatas" 点击事件 row-key需要指定唯一的数据id-->
|
<!--表格渲染 :load="getDeptDatas" 点击事件 row-key需要指定唯一的数据id-->
|
||||||
<el-table
|
<el-table
|
||||||
ref="table"
|
ref="table"
|
||||||
v-loading="crud.loading"
|
v-loading="crud.loading"
|
||||||
:default-sort = "{prop: 'dept_sort', order: 'ascending'}"
|
:default-sort="{prop: 'dept_sort', order: 'ascending'}"
|
||||||
lazy
|
lazy
|
||||||
:load="getDeptDatas"
|
:load="getDeptDatas"
|
||||||
:tree-props="{children: 'children', hasChildren: 'has_children'}"
|
:tree-props="{children: 'children', hasChildren: 'has_children'}"
|
||||||
@@ -102,9 +99,9 @@
|
|||||||
>
|
>
|
||||||
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
||||||
<!-- <el-table-column label="编码" prop="code" />-->
|
<!-- <el-table-column label="编码" prop="code" />-->
|
||||||
<el-table-column label="名称" prop="name" />
|
<el-table-column :label="$t('Dept.table.name')" prop="name" />
|
||||||
<el-table-column label="排序" prop="dept_sort" />
|
<el-table-column :label="$t('Dept.table.dept_sort')" prop="dept_sort" />
|
||||||
<el-table-column label="状态" align="center" prop="is_used">
|
<el-table-column :label="$t('Dept.table.is_used')" align="center" prop="is_used">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="scope.row.is_used"
|
v-model="scope.row.is_used"
|
||||||
@@ -115,10 +112,10 @@
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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
|
<el-table-column
|
||||||
v-permission="['admin','dept:edit','dept:del']"
|
v-permission="['admin','dept:edit','dept:del']"
|
||||||
label="操作"
|
:label="$t('common.Operate')"
|
||||||
width="130px"
|
width="130px"
|
||||||
align="center"
|
align="center"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
@@ -128,7 +125,7 @@
|
|||||||
:data="scope.row"
|
:data="scope.row"
|
||||||
:permission="permission"
|
:permission="permission"
|
||||||
:disabled-dle="scope.row.id === 1"
|
:disabled-dle="scope.row.id === 1"
|
||||||
msg="确定删除吗,如果存在下级节点则一并删除,此操作不能撤销!"
|
:msg="$t('Dept.msg.tip1')"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -144,6 +141,7 @@ import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
|||||||
import rrOperation from '@crud/RR.operation'
|
import rrOperation from '@crud/RR.operation'
|
||||||
import crudOperation from '@crud/CRUD.operation'
|
import crudOperation from '@crud/CRUD.operation'
|
||||||
import udOperation from '@crud/UD.operation'
|
import udOperation from '@crud/UD.operation'
|
||||||
|
import i18n from '@/i18n'
|
||||||
|
|
||||||
const defaultForm = {
|
const defaultForm = {
|
||||||
code: null,
|
code: null,
|
||||||
@@ -159,7 +157,7 @@ export default {
|
|||||||
name: 'Dept',
|
name: 'Dept',
|
||||||
components: { Treeselect, crudOperation, rrOperation, udOperation },
|
components: { Treeselect, crudOperation, rrOperation, udOperation },
|
||||||
cruds() {
|
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()],
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||||
// 设置数据字典
|
// 设置数据字典
|
||||||
@@ -169,10 +167,10 @@ export default {
|
|||||||
depts: [],
|
depts: [],
|
||||||
rules: {
|
rules: {
|
||||||
name: [
|
name: [
|
||||||
{ required: true, message: '请输入名称', trigger: 'blur' }
|
{ required: true, message: i18n.t('Dept.rules.r1'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
dept_sort: [
|
dept_sort: [
|
||||||
{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }
|
{ required: true, message: i18n.t('Dept.rules.r2'), trigger: 'blur', type: 'number' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
permission: {
|
permission: {
|
||||||
@@ -181,11 +179,33 @@ export default {
|
|||||||
del: ['admin', 'dept:del']
|
del: ['admin', 'dept:del']
|
||||||
},
|
},
|
||||||
enabledTypeOptions: [
|
enabledTypeOptions: [
|
||||||
{ key: true, display_name: '启用' },
|
{ key: true, display_name: i18n.t('Dept.dialog.start') },
|
||||||
{ key: false, display_name: '禁用' }
|
{ 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: {
|
methods: {
|
||||||
getDeptDatas(tree, treeNode, resolve) {
|
getDeptDatas(tree, treeNode, resolve) {
|
||||||
const params = { pid: tree.dept_id }
|
const params = { pid: tree.dept_id }
|
||||||
@@ -254,7 +274,7 @@ export default {
|
|||||||
[CRUD.HOOK.afterValidateCU]() {
|
[CRUD.HOOK.afterValidateCU]() {
|
||||||
if (this.form.isTop !== '1' && this.form.pid == null) {
|
if (this.form.isTop !== '1' && this.form.pid == null) {
|
||||||
this.$message({
|
this.$message({
|
||||||
message: '上级部门不能为空',
|
message: i18n.t('Dept.msg.tip2'),
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
})
|
||||||
return false
|
return false
|
||||||
@@ -266,15 +286,16 @@ export default {
|
|||||||
},
|
},
|
||||||
// 改变状态
|
// 改变状态
|
||||||
changeEnabled(data, val) {
|
changeEnabled(data, val) {
|
||||||
const satus = this.enabledTypeOptions.find(item => { return item.key == data.is_used })
|
const satus = this.enabledTypeOptions.find(item => {
|
||||||
debugger
|
return item.key == data.is_used
|
||||||
this.$confirm('此操作将 "' + satus.display_name + '" ' + data.name + '部门, 是否继续?', '提示', {
|
})
|
||||||
confirmButtonText: '确定',
|
this.$confirm(i18n.t('Dept.msg.tip3.1') + ' "' + satus.display_name + '" ' + data.name + i18n.t('Dept.msg.tip3.2'), i18n.t('common.Tips'), {
|
||||||
cancelButtonText: '取消',
|
confirmButtonText: i18n.t('common.Confirm'),
|
||||||
|
cancelButtonText: i18n.t('common.Cancel'),
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
crudDept.edit(data).then(res => {
|
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(() => {
|
}).catch(() => {
|
||||||
data.is_used = !data.is_used
|
data.is_used = !data.is_used
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<div v-if="query.code === ''">
|
<div v-if="query.code === ''">
|
||||||
<div class="my-code">点击字典查看详情</div>
|
<div class="my-code">{{ $t('Dict.detail.see_title') }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<!--工具栏-->
|
<!--工具栏-->
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
v-model="query.label"
|
v-model="query.label"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="输入字典标签查询"
|
:placeholder="$t('Dict.detail.input_tip')"
|
||||||
style="width: 200px;"
|
style="width: 200px;"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@keyup.enter.native="toQuery"
|
@keyup.enter.native="toQuery"
|
||||||
@@ -27,37 +27,40 @@
|
|||||||
:before-close="crud.cancelCU"
|
:before-close="crud.cancelCU"
|
||||||
:visible="crud.status.cu > 0"
|
:visible="crud.status.cu > 0"
|
||||||
:title="crud.status.title"
|
:title="crud.status.title"
|
||||||
width="500px"
|
:width="computedLabelWidth"
|
||||||
>
|
>
|
||||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
|
||||||
<el-form-item label="字典标签" prop="label">
|
<el-form-item :label="$t('Dict.detail.table.label')" prop="label">
|
||||||
<el-input v-model="form.label" style="width: 370px;" />
|
<el-input v-model="form.label" style="width: 240px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="字典值" prop="value">
|
<el-form-item :label="$t('Dict.detail.table.value')" prop="value">
|
||||||
<el-input v-model="form.value" style="width: 370px;" />
|
<el-input v-model="form.value" style="width: 240px;" />
|
||||||
</el-form-item>
|
</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
|
<el-input-number
|
||||||
v-model.number="form.dict_sort"
|
v-model.number="form.dict_sort"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="999"
|
:max="999"
|
||||||
controls-position="right"
|
controls-position="right"
|
||||||
style="width: 370px;"
|
style="width: 240px;"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="参数1" prop="para1">
|
<el-form-item :label="$t('Dict.detail.table.param1')" prop="para1">
|
||||||
<el-input v-model="form.para1" style="width: 370px;" />
|
<el-input v-model="form.para1" style="width: 240px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="参数2" prop="para2">
|
<el-form-item :label="$t('Dict.detail.table.param2')" prop="para2">
|
||||||
<el-input v-model="form.para2" style="width: 370px;" />
|
<el-input v-model="form.para2" style="width: 240px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="参数3" prop="para3">
|
<el-form-item :label="$t('Dict.detail.table.param3')" prop="para3">
|
||||||
<el-input v-model="form.para3" style="width: 370px;" />
|
<el-input v-model="form.para3" style="width: 240px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
<el-button type="text" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
|
||||||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{
|
||||||
|
$t('common.Confirm')
|
||||||
|
}}
|
||||||
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--表格渲染-->
|
<!--表格渲染-->
|
||||||
@@ -69,20 +72,51 @@
|
|||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
@selection-change="crud.selectionChangeHandler"
|
@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 }}
|
{{ query.code }}
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="label" label="字典标签" align="center" width="120" show-overflow-tooltip />
|
<el-table-column
|
||||||
<el-table-column prop="value" label="字典值" align="center" width="60" />
|
prop="label"
|
||||||
<el-table-column prop="dict_sort" label="排序" align="center" width="65" />
|
:label="$t('Dict.detail.table.label')"
|
||||||
<el-table-column prop="para1" label="参数1" align="center" width="65" />
|
align="center"
|
||||||
<el-table-column prop="para2" label="参数2" align="center" width="65" />
|
:min-width="flexWidth('label',crud.data,$t('Dict.detail.table.label'))"
|
||||||
<el-table-column prop="para3" label="参数3" align="center" width="65" />
|
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
|
<el-table-column
|
||||||
v-permission="['admin','dict:edit','dict:del']"
|
v-permission="['admin','dict:edit','dict:del']"
|
||||||
label="操作"
|
:label="$t('common.Operate')"
|
||||||
align="center"
|
align="center"
|
||||||
width="115px"
|
width="165px"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
@@ -105,15 +139,32 @@ import CRUD, { form, header, presenter } from '@crud/crud'
|
|||||||
import pagination from '@crud/Pagination'
|
import pagination from '@crud/Pagination'
|
||||||
import rrOperation from '@crud/RR.operation'
|
import rrOperation from '@crud/RR.operation'
|
||||||
import udOperation from '@crud/UD.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 {
|
export default {
|
||||||
components: { pagination, rrOperation, udOperation },
|
components: { pagination, rrOperation, udOperation },
|
||||||
cruds() {
|
cruds() {
|
||||||
return [
|
return [
|
||||||
CRUD({
|
CRUD({
|
||||||
title: '字典详情',
|
title: i18n.t('Dict.table.dict_detail'),
|
||||||
url: 'api/dict/dictDetail',
|
url: 'api/dict/dictDetail',
|
||||||
query: { code: '' },
|
query: { code: '' },
|
||||||
idField: 'dict_id',
|
idField: 'dict_id',
|
||||||
@@ -140,13 +191,13 @@ export default {
|
|||||||
dict_id: null,
|
dict_id: null,
|
||||||
rules: {
|
rules: {
|
||||||
label: [
|
label: [
|
||||||
{ required: true, message: '请输入字典标签', trigger: 'blur' }
|
{ required: true, message: i18n.t('Dict.detail.rules.r1'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
value: [
|
value: [
|
||||||
{ required: true, message: '请输入字典值', trigger: 'blur' }
|
{ required: true, message: i18n.t('Dict.detail.rules.r2'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
dict_sort: [
|
dict_sort: [
|
||||||
{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }
|
{ required: true, message: i18n.t('Dict.detail.rules.r3'), trigger: 'blur', type: 'number' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
permission: {
|
permission: {
|
||||||
@@ -155,6 +206,22 @@ export default {
|
|||||||
del: ['admin', 'dict:del']
|
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>
|
</script>
|
||||||
|
|||||||
@@ -7,19 +7,19 @@
|
|||||||
:before-close="crud.cancelCU"
|
:before-close="crud.cancelCU"
|
||||||
:visible="crud.status.cu > 0"
|
:visible="crud.status.cu > 0"
|
||||||
:title="crud.status.title"
|
:title="crud.status.title"
|
||||||
width="500px"
|
:width="computedLabelWidth"
|
||||||
>
|
>
|
||||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
<el-form ref="form" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
|
||||||
<el-form-item label="字典编码" prop="code">
|
<el-form-item :label="$t('Dict.table.dict_code')" prop="code">
|
||||||
<el-input v-model="form.code" style="width: 370px;" />
|
<el-input v-model="form.code" style="width: 240px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="名称">
|
<el-form-item :label="$t('Dict.table.dict_name')">
|
||||||
<el-input v-model="form.name" style="width: 370px;" />
|
<el-input v-model="form.name" style="width: 240px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
<el-button type="text" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
|
||||||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('common.Confirm') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 字典列表 -->
|
<!-- 字典列表 -->
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
v-model="query.blurry"
|
v-model="query.blurry"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="输入名称或者描述搜索"
|
:placeholder="$t('Dict.placeholder.blurry')"
|
||||||
style="width: 200px;"
|
style="width: 200px;"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@keyup.enter.native="crud.toQuery"
|
@keyup.enter.native="crud.toQuery"
|
||||||
@@ -54,12 +54,11 @@
|
|||||||
@current-change="handleCurrentChange"
|
@current-change="handleCurrentChange"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column show-overflow-tooltip prop="code" label="编码" />
|
<el-table-column show-overflow-tooltip prop="code" :label="$t('Dict.table.code')" />
|
||||||
<el-table-column show-overflow-tooltip prop="name" label="名称" />
|
<el-table-column show-overflow-tooltip prop="name" :label="$t('Dict.table.name')" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-permission="['admin','dict:edit','dict:del']"
|
v-permission="['admin','dict:edit','dict:del']"
|
||||||
label="操作"
|
:label="$t('common.Operate')"
|
||||||
width="130px"
|
|
||||||
align="center"
|
align="center"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
>
|
>
|
||||||
@@ -79,7 +78,7 @@
|
|||||||
<el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11">
|
<el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11">
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>字典详情</span>
|
<span>{{ $t('Dict.table.dict_detail') }}</span>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="checkPermission(['admin','dict:add']) && this.$refs.dictDetail && this.$refs.dictDetail.query.code"
|
v-if="checkPermission(['admin','dict:add']) && this.$refs.dictDetail && this.$refs.dictDetail.query.code"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@@ -88,7 +87,7 @@
|
|||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
@click="$refs.dictDetail && $refs.dictDetail.crud.toAdd()"
|
@click="$refs.dictDetail && $refs.dictDetail.crud.toAdd()"
|
||||||
>新增
|
>{{ $t('common.Create') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
<dictDetail ref="dictDetail" :permission="permission" />
|
<dictDetail ref="dictDetail" :permission="permission" />
|
||||||
@@ -108,6 +107,7 @@ import crudOperation from '@crud/CRUD.operation'
|
|||||||
import pagination from '@crud/Pagination'
|
import pagination from '@crud/Pagination'
|
||||||
import rrOperation from '@crud/RR.operation'
|
import rrOperation from '@crud/RR.operation'
|
||||||
import udOperation from '@crud/UD.operation'
|
import udOperation from '@crud/UD.operation'
|
||||||
|
import i18n from '@/i18n'
|
||||||
|
|
||||||
const defaultForm = {
|
const defaultForm = {
|
||||||
dict_id: null,
|
dict_id: null,
|
||||||
@@ -127,7 +127,7 @@ export default {
|
|||||||
components: { crudOperation, pagination, rrOperation, udOperation, dictDetail },
|
components: { crudOperation, pagination, rrOperation, udOperation, dictDetail },
|
||||||
cruds() {
|
cruds() {
|
||||||
return [
|
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)],
|
mixins: [presenter(), header(), form(defaultForm)],
|
||||||
@@ -139,7 +139,7 @@ export default {
|
|||||||
],
|
],
|
||||||
rules: {
|
rules: {
|
||||||
code: [
|
code: [
|
||||||
{ required: true, message: '请输入编码', trigger: 'blur' }
|
{ required: true, message: i18n.t('Dict.rules.r1'), trigger: 'blur' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
permission: {
|
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: {
|
methods: {
|
||||||
checkPermission,
|
checkPermission,
|
||||||
// 获取数据前设置好接口地址
|
// 获取数据前设置好接口地址
|
||||||
|
|||||||
@@ -36,9 +36,9 @@
|
|||||||
:before-close="crud.cancelCU"
|
:before-close="crud.cancelCU"
|
||||||
:visible.sync="crud.status.cu > 0"
|
:visible.sync="crud.status.cu > 0"
|
||||||
:title="crud.status.title"
|
:title="crud.status.title"
|
||||||
width="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-form-item :label="$t('menu.dialog.menu_type')" prop="type">
|
||||||
<el-radio-group v-model="form.type" size="mini">
|
<el-radio-group v-model="form.type" size="mini">
|
||||||
<el-radio-button label="1">{{ $t('menu.dialog.system') }}</el-radio-button>
|
<el-radio-button label="1">{{ $t('menu.dialog.system') }}</el-radio-button>
|
||||||
@@ -69,20 +69,20 @@
|
|||||||
</el-form-item>
|
</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-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-group v-model="form.iframe" size="mini">
|
||||||
<el-radio-button label="true">是</el-radio-button>
|
<el-radio-button label="true">{{ $t('common.Yes') }}</el-radio-button>
|
||||||
<el-radio-button label="false">否</el-radio-button>
|
<el-radio-button label="false">{{ $t('common.No') }}</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-show="form.type.toString() === '2'" :label="$t('menu.dialog.menu_cache')" prop="cache">
|
<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-group v-model="form.cache" size="mini">
|
||||||
<el-radio-button label="true">是</el-radio-button>
|
<el-radio-button label="true">{{ $t('common.Yes') }}</el-radio-button>
|
||||||
<el-radio-button label="false">否</el-radio-button>
|
<el-radio-button label="false">{{ $t('common.No') }}</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</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-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-group v-model="form.hidden" size="mini">
|
||||||
<el-radio-button label="false">是</el-radio-button>
|
<el-radio-button label="false">{{ $t('common.Yes') }}</el-radio-button>
|
||||||
<el-radio-button label="true">否</el-radio-button>
|
<el-radio-button label="true">{{ $t('common.No') }}</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="form.type.toString() !== '2'" :label="$t('menu.dialog.default_title')" prop="title">
|
<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="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'))">
|
<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">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.iframe">YES</span>
|
<span v-if="scope.row.iframe">{{ $t('common.Yes') }}</span>
|
||||||
<span v-else>NO</span>
|
<span v-else>{{ $t('common.No') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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'))">
|
<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">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.cache">YES</span>
|
<span v-if="scope.row.cache">{{ $t('common.Yes') }}</span>
|
||||||
<span v-else>NO</span>
|
<span v-else>{{ $t('common.No') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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'))">
|
<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">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.hidden">NO</span>
|
<span v-if="scope.row.hidden">{{ $t('common.No') }}</span>
|
||||||
<span v-else>YES</span>
|
<span v-else>{{ $t('common.Yes') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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'))" />
|
<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: {
|
methods: {
|
||||||
normalizer(node) {
|
normalizer(node) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
v-model="query.job_name"
|
v-model="query.job_name"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="输入任务名称搜索"
|
:placeholder="$t('Scheduling.placeholder.search')"
|
||||||
style="width: 200px;"
|
style="width: 200px;"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@keyup.enter.native="toQuery"
|
@keyup.enter.native="toQuery"
|
||||||
@@ -24,7 +24,8 @@
|
|||||||
type="info"
|
type="info"
|
||||||
icon="el-icon-tickets"
|
icon="el-icon-tickets"
|
||||||
@click="doLog"
|
@click="doLog"
|
||||||
>日志
|
>
|
||||||
|
{{ $t('Scheduling.placeholder.log') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</crudOperation>
|
</crudOperation>
|
||||||
<Log ref="log" />
|
<Log ref="log" />
|
||||||
@@ -36,60 +37,67 @@
|
|||||||
:visible.sync="crud.status.cu > 0"
|
:visible.sync="crud.status.cu > 0"
|
||||||
:title="crud.status.title"
|
:title="crud.status.title"
|
||||||
append-to-body
|
append-to-body
|
||||||
width="730px"
|
:width="computedLabelWidth"
|
||||||
>
|
>
|
||||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="100px">
|
<el-form
|
||||||
<el-form-item label="任务名称" prop="job_name">
|
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-input v-model="form.job_name" style="width: 220px;" />
|
||||||
</el-form-item>
|
</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-input v-model="form.description" style="width: 220px;" />
|
||||||
</el-form-item>
|
</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-input v-model="form.bean_name" style="width: 220px;" />
|
||||||
</el-form-item>
|
</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-input v-model="form.method_name" style="width: 220px;" />
|
||||||
</el-form-item>
|
</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" 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">
|
<template slot="append">
|
||||||
<el-button type="primary" @click="handleShowCron">
|
<el-button type="primary" @click="handleShowCron">
|
||||||
生成表达式
|
{{ $t('Scheduling.placeholder.build_corn') }}
|
||||||
<i class="el-icon-time el-icon--right" />
|
<i class="el-icon-time el-icon--right" />
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="子任务ID">
|
<el-form-item :label="$t('Scheduling.dialog.sub_task')">
|
||||||
<el-input v-model="form.sub_task" placeholder="多个用逗号隔开,按顺序执行" style="width: 220px;" />
|
<el-input v-model="form.sub_task" :placeholder="$t('Scheduling.dialog.p1')" style="width: 220px;" />
|
||||||
</el-form-item>
|
</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-input v-model="form.person_in_charge" style="width: 220px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="告警邮箱" prop="email">
|
<el-form-item :label="$t('Scheduling.dialog.email')" prop="email">
|
||||||
<el-input v-model="form.email" placeholder="多个邮箱用逗号隔开" style="width: 220px;" />
|
<el-input v-model="form.email" :placeholder="$t('Scheduling.dialog.p2')" style="width: 220px;" />
|
||||||
</el-form-item>
|
</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-group v-model="form.pause_after_failure" style="width: 220px">
|
||||||
<el-radio :label="true">是</el-radio>
|
<el-radio :label="true">{{ $t('common.Yes') }}</el-radio>
|
||||||
<el-radio :label="false">否</el-radio>
|
<el-radio :label="false">{{ $t('common.No') }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</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-group v-model="form.is_pause" style="width: 220px">
|
||||||
<el-radio :label="false">启用</el-radio>
|
<el-radio :label="false">{{ $t('Scheduling.dialog.start') }}</el-radio>
|
||||||
<el-radio :label="true">暂停</el-radio>
|
<el-radio :label="true">{{ $t('Scheduling.dialog.stop') }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</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-input v-model="form.params" style="width: 556px;" rows="4" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
<el-button type="text" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
|
||||||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('common.Confirm') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--表格渲染-->
|
<!--表格渲染-->
|
||||||
@@ -101,35 +109,35 @@
|
|||||||
@selection-change="crud.selectionChangeHandler"
|
@selection-change="crud.selectionChangeHandler"
|
||||||
>
|
>
|
||||||
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
<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_id" :label="$t('Scheduling.table.job_id')" />
|
||||||
<el-table-column show-overflow-tooltip prop="job_name" label="任务名称" min-width="120" />
|
<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="Bean名称" />
|
<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="执行方法" />
|
<el-table-column show-overflow-tooltip prop="method_name" :label="$t('Scheduling.table.method_name')" />
|
||||||
<el-table-column show-overflow-tooltip prop="params" label="参数" />
|
<el-table-column show-overflow-tooltip prop="params" :label="$t('Scheduling.table.params')" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
prop="cron_expression"
|
prop="cron_expression"
|
||||||
label="cron表达式"
|
:label="$t('Scheduling.table.cron_expression')"
|
||||||
min-width="100"
|
min-width="100"
|
||||||
show-tooltip-when-overflow
|
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">
|
<template slot-scope="scope">
|
||||||
<el-tag :type="scope.row.is_pause ? 'warning' : 'success'">{{
|
<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>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column show-overflow-tooltip prop="description" width="150px" 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="136px" label="创建日期">
|
<el-table-column show-overflow-tooltip prop="create_time" width="150px" :label="$t('Scheduling.table.create_time')">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-permission="['admin','timing:edit','timing:del']"
|
v-permission="['admin','timing:edit','timing:del']"
|
||||||
label="操作"
|
:label="$t('common.Operate')"
|
||||||
width="170px"
|
width="170px"
|
||||||
align="center"
|
align="center"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
@@ -141,7 +149,8 @@
|
|||||||
style="margin-right: 3px;"
|
style="margin-right: 3px;"
|
||||||
type="text"
|
type="text"
|
||||||
@click="crud.toEdit(scope.row)"
|
@click="crud.toEdit(scope.row)"
|
||||||
>编辑
|
>
|
||||||
|
{{ $t('common.Editors') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-permission="['admin','timing:edit']"
|
v-permission="['admin','timing:edit']"
|
||||||
@@ -149,16 +158,17 @@
|
|||||||
type="text"
|
type="text"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="execute(scope.row.job_id)"
|
@click="execute(scope.row.job_id)"
|
||||||
>执行
|
>
|
||||||
|
{{ $t('Scheduling.table.execute') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-permission="['admin','timing:edit']"
|
v-permission="['admin','timing:edit']"
|
||||||
style="margin-left: 3px"
|
style="margin-left: 3px"
|
||||||
type="text"
|
type="text"
|
||||||
size="mini"
|
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-button>
|
||||||
<el-popover
|
<el-popover
|
||||||
:ref="scope.row.job_id"
|
:ref="scope.row.job_id"
|
||||||
@@ -166,20 +176,25 @@
|
|||||||
placement="top"
|
placement="top"
|
||||||
width="200"
|
width="200"
|
||||||
>
|
>
|
||||||
<p>确定停止并删除该任务吗?</p>
|
<p>{{ $t('Scheduling.msg.tip1') }}</p>
|
||||||
<div style="text-align: right; margin: 0">
|
<div style="text-align: right; margin: 0">
|
||||||
<el-button size="mini" type="text" @click="$refs[scope.row.job_id].doClose()">取消</el-button>
|
<el-button size="mini" type="text" @click="$refs[scope.row.job_id].doClose()">
|
||||||
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row.job_id)">确定
|
{{ $t('common.Cancel') }}
|
||||||
|
</el-button>
|
||||||
|
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row.job_id)">
|
||||||
|
{{ $t('common.Confirm') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</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>
|
</el-popover>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<!--分页组件-->
|
<!--分页组件-->
|
||||||
<pagination />
|
<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" />
|
<crontab :expression="expression" @hide="openCron=false" @fill="crontabFill" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
@@ -193,6 +208,7 @@ import rrOperation from '@crud/RR.operation'
|
|||||||
import crudOperation from '@crud/CRUD.operation'
|
import crudOperation from '@crud/CRUD.operation'
|
||||||
import pagination from '@crud/Pagination'
|
import pagination from '@crud/Pagination'
|
||||||
import Crontab from './components/crontab'
|
import Crontab from './components/crontab'
|
||||||
|
import i18n from '@/i18n'
|
||||||
|
|
||||||
const defaultForm = {
|
const defaultForm = {
|
||||||
job_id: null,
|
job_id: null,
|
||||||
@@ -212,7 +228,7 @@ export default {
|
|||||||
name: 'Timing',
|
name: 'Timing',
|
||||||
components: { Log, pagination, crudOperation, rrOperation, Crontab },
|
components: { Log, pagination, crudOperation, rrOperation, Crontab },
|
||||||
cruds() {
|
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()],
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||||
data() {
|
data() {
|
||||||
@@ -225,22 +241,22 @@ export default {
|
|||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
job_name: [
|
job_name: [
|
||||||
{ required: true, message: '请输入任务名称', trigger: 'blur' }
|
{ required: true, message: i18n.t('Scheduling.rules.r1'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
description: [
|
description: [
|
||||||
{ required: true, message: '请输入任务描述', trigger: 'blur' }
|
{ required: true, message: i18n.t('Scheduling.rules.r2'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
bean_name: [
|
bean_name: [
|
||||||
{ required: true, message: '请输入Bean名称', trigger: 'blur' }
|
{ required: true, message: i18n.t('Scheduling.rules.r3'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
method_name: [
|
method_name: [
|
||||||
{ required: true, message: '请输入方法名称', trigger: 'blur' }
|
{ required: true, message: i18n.t('Scheduling.rules.r4'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
cron_expression: [
|
cron_expression: [
|
||||||
{ required: true, message: '请输入Cron表达式', trigger: 'blur' }
|
{ required: true, message: i18n.t('Scheduling.rules.r5'), trigger: 'blur' }
|
||||||
],
|
],
|
||||||
person_in_charge: [
|
person_in_charge: [
|
||||||
{ required: true, message: '请输入负责人名称', trigger: 'blur' }
|
{ required: true, message: i18n.t('Scheduling.rules.r6'), trigger: 'blur' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// 是否显示Cron表达式弹出层
|
// 是否显示Cron表达式弹出层
|
||||||
@@ -249,6 +265,28 @@ export default {
|
|||||||
expression: ''
|
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: {
|
methods: {
|
||||||
// 执行
|
// 执行
|
||||||
execute(id) {
|
execute(id) {
|
||||||
|
|||||||
@@ -1,39 +1,45 @@
|
|||||||
<template>
|
<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">
|
<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" />
|
<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-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.displayName" :value="item.key" />
|
||||||
</el-select>
|
</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>
|
</div>
|
||||||
<!--表格渲染-->
|
<!--表格渲染-->
|
||||||
<el-table v-loading="loading" :data="data" style="width: 100%;margin-top: -10px;">
|
<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="job_name" :label="$t('Scheduling.table.job_name')" />
|
||||||
<el-table-column show-overflow-tooltip prop="bean_name" label="Bean名称" />
|
<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="执行方法" />
|
<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="参数" />
|
<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="cron表达式" />
|
<el-table-column show-overflow-tooltip prop="cron_expression" :label="$t('Scheduling.table.cron_expression')" />
|
||||||
<el-table-column prop="create_time" label="异常详情" width="110px">
|
<el-table-column prop="description" :label="$t('Scheduling.log.description')" width="110px">
|
||||||
<template slot-scope="scope">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column show-overflow-tooltip align="center" prop="time" width="100px" 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="状态">
|
<el-table-column align="center" prop="is_success" width="80px" :label="$t('Scheduling.table.is_pause')">
|
||||||
<template slot-scope="scope">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<template slot-scope="scope">
|
||||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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>
|
<pre v-highlightjs="errorInfo"><code class="java" /></pre>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--分页组件-->
|
<!--分页组件-->
|
||||||
@@ -52,16 +58,17 @@
|
|||||||
<script>
|
<script>
|
||||||
import crud from '@/mixins/crud'
|
import crud from '@/mixins/crud'
|
||||||
import DateRangePicker from '@/components/DateRangePicker'
|
import DateRangePicker from '@/components/DateRangePicker'
|
||||||
|
import i18n from '@/i18n'
|
||||||
export default {
|
export default {
|
||||||
components: { DateRangePicker },
|
components: { DateRangePicker },
|
||||||
mixins: [crud],
|
mixins: [crud],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
title: '任务日志',
|
title: i18n.t('Scheduling.log.title'),
|
||||||
errorInfo: '', errorDialog: false,
|
errorInfo: '', errorDialog: false,
|
||||||
enabledTypeOptions: [
|
enabledTypeOptions: [
|
||||||
{ key: '1', displayName: '成功' },
|
{ key: '1', displayName: i18n.t('Scheduling.log.success') },
|
||||||
{ key: '0', displayName: '失败' }
|
{ key: '0', displayName: i18n.t('Scheduling.log.fail') }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
v-model="deptName"
|
v-model="deptName"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="请输入部门名称"
|
:placeholder="$t('User.placeholder.dep_tip')"
|
||||||
prefix-icon="el-icon-search"
|
prefix-icon="el-icon-search"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@input="getDeptDatas"
|
@input="getDeptDatas"
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
v-model="query.blurry"
|
v-model="query.blurry"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="输入账号或者名称"
|
:placeholder="$t('User.placeholder.blu_tip')"
|
||||||
style="width: 200px;"
|
style="width: 200px;"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@keyup.enter.native="crud.toQuery"
|
@keyup.enter.native="crud.toQuery"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
v-model="query.is_used"
|
v-model="query.is_used"
|
||||||
clearable
|
clearable
|
||||||
size="mini"
|
size="mini"
|
||||||
placeholder="状态"
|
:placeholder="$t('User.table.enabled')"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
style="width: 90px"
|
style="width: 90px"
|
||||||
@change="crud.toQuery"
|
@change="crud.toQuery"
|
||||||
@@ -62,23 +62,23 @@
|
|||||||
:before-close="crud.cancelCU"
|
:before-close="crud.cancelCU"
|
||||||
:visible.sync="crud.status.cu > 0"
|
:visible.sync="crud.status.cu > 0"
|
||||||
:title="crud.status.title"
|
:title="crud.status.title"
|
||||||
width="700px"
|
: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" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;">
|
||||||
<el-form-item label="用户名" prop="username">
|
<el-form-item :label="$t('User.table.user_name')" prop="username">
|
||||||
<el-input v-model="form.username" style="width: 200px;" />
|
<el-input v-model="form.username" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电话" prop="phone">
|
<el-form-item :label="$t('User.table.phone')" prop="phone">
|
||||||
<el-input v-model.number="form.phone" style="width: 200px;" />
|
<el-input v-model.number="form.phone" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="姓名" 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-input v-model="form.person_name" style="width: 200px;" />
|
||||||
</el-form-item>
|
</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-input v-model="form.email" style="width: 200px;" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<br v-if="!crud.status.edit">
|
<br v-if="!crud.status.edit">
|
||||||
<el-form-item v-if="crud.status.add" label="部门" 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
|
<treeselect
|
||||||
v-model="form.depts"
|
v-model="form.depts"
|
||||||
:load-options="loadDepts"
|
:load-options="loadDepts"
|
||||||
@@ -87,20 +87,20 @@
|
|||||||
:multiple="true"
|
:multiple="true"
|
||||||
:flat="true"
|
:flat="true"
|
||||||
:normalizer="normalizer"
|
:normalizer="normalizer"
|
||||||
placeholder="选择部门类目"
|
:placeholder="$t('User.placeholder.dep_select_tip')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<br v-if="!crud.status.add">
|
<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-input v-model="form.password" style="width: 200px;" show-password auto-complete="new-password" />
|
||||||
</el-form-item>
|
</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-group v-model="form.gender" style="width: 178px">
|
||||||
<el-radio label="男">男</el-radio>
|
<el-radio label="1">{{ $t('User.dialog.sex_male') }}</el-radio>
|
||||||
<el-radio label="女">女</el-radio>
|
<el-radio label="2">{{ $t('User.dialog.sex_female') }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="is_uesd">
|
<el-form-item :label="$t('User.table.enabled')" prop="is_uesd">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="form.is_used"
|
v-model="form.is_used"
|
||||||
active-color="#409EFF"
|
active-color="#409EFF"
|
||||||
@@ -108,14 +108,14 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<br v-if="!crud.status.edit">
|
<br v-if="!crud.status.edit">
|
||||||
<el-form-item v-if="crud.status.add" 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
|
<el-select
|
||||||
v-model="roleDatas"
|
v-model="roleDatas"
|
||||||
style="width: 512px"
|
style="width: 512px"
|
||||||
multiple
|
multiple
|
||||||
active-value="1"
|
active-value="1"
|
||||||
inactive-value="0"
|
inactive-value="0"
|
||||||
placeholder="请选择"
|
:placeholder="$t('common.Please_select')"
|
||||||
@remove-tag="deleteTag"
|
@remove-tag="deleteTag"
|
||||||
@change="changeRole"
|
@change="changeRole"
|
||||||
>
|
>
|
||||||
@@ -130,8 +130,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
<el-button type="text" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
|
||||||
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('common.Confirm') }}</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--表格渲染-->
|
<!--表格渲染-->
|
||||||
@@ -143,50 +143,54 @@
|
|||||||
@selection-change="crud.selectionChangeHandler"
|
@selection-change="crud.selectionChangeHandler"
|
||||||
>
|
>
|
||||||
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
<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
|
<el-table-column
|
||||||
prop="person_name"
|
prop="person_name"
|
||||||
label="姓名"
|
:label="$t('User.table.person_name')"
|
||||||
:min-width="flexWidth('person_name',crud.data,'姓名')"
|
: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="gender" :label="$t('User.table.gender')" :min-width="flexWidth('gender',crud.data,$t('User.table.gender'))">
|
||||||
<el-table-column prop="phone" label="电话" :min-width="flexWidth('phone',crud.data,'电话')" />
|
<template slot-scope="scope">
|
||||||
<el-table-column prop="email" label="邮箱" :min-width="flexWidth('email',crud.data,'邮箱')" />
|
{{ scope.row.gender === '1' ? $t('User.dialog.sex_male') : $t('User.dialog.sex_female') }}
|
||||||
<el-table-column show-overflow-tooltip prop="depts" label="部门" :min-width="flexWidth('depts',crud.data,'邮箱')">
|
</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">
|
<template slot-scope="scope">
|
||||||
<span v-for="(item, index) in scope.row.depts" :key="index">
|
<span v-for="(item, index) in scope.row.depts" :key="index">
|
||||||
{{ item.name }}<span v-if="index !== scope.row.depts.length - 1">、</span>
|
{{ item.name }}<span v-if="index !== scope.row.depts.length - 1">、</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<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>
|
<span :style="{'color': caseStatusColorFilter(scope.row.is_used)}">{{ enabledTypeOptions.find(item => {return item.key == scope.row.is_used}).display_name }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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
|
<el-table-column
|
||||||
label="操作"
|
:label="$t('common.Operate')"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
align="center"
|
align="center"
|
||||||
width="200"
|
width="200"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<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-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)">删除</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-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-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">
|
<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>
|
||||||
<el-dropdown-item icon="el-icon-key">
|
<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>
|
||||||
<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">
|
<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-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
@@ -306,14 +310,14 @@
|
|||||||
:data="dataPermissions"
|
:data="dataPermissions"
|
||||||
style="width: 100%; max-height: 500px"
|
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">
|
<template slot-scope="scope">
|
||||||
{{ dict.label.permission_scope_type[scope.row.permission_scope_type] }}
|
{{ dict.label.permission_scope_type[scope.row.permission_scope_type] }}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="permissionName" 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="部门名称" 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="用户名称" 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-table>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<relevance-user-dialog :dialog-show.sync="relevanceUser" :is-single="false" :users="userIds" @selectUsers="selectUsers" />
|
<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 '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||||
import RelevanceUserDialog from '@/views/system/user/dialog/relevanceUserDialog'
|
import RelevanceUserDialog from '@/views/system/user/dialog/relevanceUserDialog'
|
||||||
import RelevanceDeptDialog from '@/views/system/user/dialog/relevanceDeptDialog'
|
import RelevanceDeptDialog from '@/views/system/user/dialog/relevanceDeptDialog'
|
||||||
|
import i18n from '@/i18n'
|
||||||
|
|
||||||
let userRoles = []
|
let userRoles = []
|
||||||
const defaultForm = {
|
const defaultForm = {
|
||||||
@@ -343,7 +348,7 @@ const defaultForm = {
|
|||||||
depts: [],
|
depts: [],
|
||||||
username: null,
|
username: null,
|
||||||
person_name: null,
|
person_name: null,
|
||||||
gender: '男',
|
gender: '1',
|
||||||
email: null,
|
email: null,
|
||||||
is_used: true,
|
is_used: true,
|
||||||
roles: [],
|
roles: [],
|
||||||
@@ -354,7 +359,7 @@ export default {
|
|||||||
name: 'User',
|
name: 'User',
|
||||||
components: { RelevanceDeptDialog, RelevanceUserDialog, Treeselect, crudOperation, rrOperation, udOperation, pagination },
|
components: { RelevanceDeptDialog, RelevanceUserDialog, Treeselect, crudOperation, rrOperation, udOperation, pagination },
|
||||||
cruds() {
|
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()],
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||||
// 数据字典
|
// 数据字典
|
||||||
@@ -372,8 +377,8 @@ export default {
|
|||||||
del: ['admin', 'user:del']
|
del: ['admin', 'user:del']
|
||||||
},
|
},
|
||||||
enabledTypeOptions: [
|
enabledTypeOptions: [
|
||||||
{ key: true, display_name: '激活' },
|
{ key: true, display_name: i18n.t('User.table.activate') },
|
||||||
{ key: false, display_name: '锁定' }
|
{ key: false, display_name: i18n.t('User.table.locked') }
|
||||||
],
|
],
|
||||||
rules: {
|
rules: {
|
||||||
username: [
|
username: [
|
||||||
@@ -410,7 +415,21 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
...mapGetters([
|
...mapGetters([
|
||||||
'user'
|
'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() {
|
beforeMount() {
|
||||||
this.deptTree()
|
this.deptTree()
|
||||||
|
|||||||
Reference in New Issue
Block a user