opt: 日志管理,用户,角色,系统管理实现国际化

This commit is contained in:
yanps
2024-12-21 15:42:08 +08:00
parent 08731e551a
commit c63404b718
23 changed files with 563 additions and 383 deletions

View File

@@ -12,7 +12,7 @@
icon="el-icon-plus"
@click="crud.toAdd"
>
新增
{{ $t('auto.common.Create') }}
</el-button>
<el-button
v-if="crud.optShow.edit"
@@ -24,7 +24,7 @@
:disabled="crud.selections.length !== 1"
@click="crud.toEdit(crud.selections[0])"
>
修改
{{ $t('auto.common.Update') }}
</el-button>
<el-button
v-if="crud.optShow.del"
@@ -38,7 +38,7 @@
:disabled="crud.selections.length === 0"
@click="toDelete(crud.selections)"
>
删除
{{ $t('auto.common.Delete') }}
</el-button>
<el-button
v-if="crud.optShow.download"
@@ -49,7 +49,7 @@
type="warning"
icon="el-icon-download"
@click="crud.doExport"
>导出</el-button>
>{{ $t('auto.common.Export') }}</el-button>
<!--右侧-->
<slot name="right" />
</span>
@@ -86,7 +86,7 @@
:indeterminate="allColumnsSelectedIndeterminate"
@change="handleCheckAllChange"
>
全选
{{ $t('auto.common.SelectAll') }}
</el-checkbox>
<el-checkbox
v-for="item in tableColumns"
@@ -190,9 +190,9 @@ export default {
this.tableColumns = columns
},
toDelete(datas) {
this.$confirm(`确认删除选中的${datas.length}条数据?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
this.$confirm(this.$t('auto.common.Tip1') + ` ${datas.length} ` + this.$t('auto.common.Tip2'), this.$t('auto.common.Tips'), {
confirmButtonText: this.$t('auto.common.Confirm'),
cancelButtonText: this.$t('auto.common.Cancel'),
type: 'warning'
}).then(() => {
this.crud.delAllLoading = true

View File

@@ -5,9 +5,9 @@
<el-button v-if="crud.optShow.reset" class="filter-item" size="mini" type="warning" icon="el-icon-refresh-left" @click="crud.resetQuery()">重置</el-button>
-->
<el-dropdown split-button type="primary" class="filter-item" @click="crud.toQuery">
<i class="el-icon-search el-icon--left" />查询
<i class="el-icon-search el-icon--left" />{{ $t('auto.common.Query') }}
<el-dropdown-menu slot="dropdown">
<el-dropdown-item icon="el-icon-zoom-out" @click.native="crud.resetQuery()">重置</el-dropdown-item>
<el-dropdown-item icon="el-icon-zoom-out" @click.native="crud.resetQuery()">{{ $t('auto.common.Reset') }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>

View File

@@ -1,13 +1,13 @@
<template>
<div>
<el-button v-if="isVisiableEdit" v-permission="permission.edit" type="text" :loading="crud.status.cu === 2" :disabled="disabledEdit" size="mini" icon="el-icon-edit" @click="crud.toEdit(data)">修改</el-button>
<el-button v-if="isVisiableEdit" v-permission="permission.edit" type="text" :loading="crud.status.cu === 2" :disabled="disabledEdit" size="mini" icon="el-icon-edit" @click="crud.toEdit(data)">{{ $t('auto.common.Update') }}</el-button>
<el-popover v-model="pop" v-permission="permission.del" placement="top" width="180" trigger="manual" @show="onPopoverShow" @hide="onPopoverHide">
<p>{{ msg }}</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="doCancel">取消</el-button>
<el-button :loading="crud.dataStatus[crud.getDataId(data)].delete === 2" type="primary" size="mini" @click="crud.doDelete(data)">确定</el-button>
</div>
<el-button v-if="isVisiableDel" slot="reference" type="text" :disabled="disabledDle" icon="el-icon-delete" size="mini" @click="toDelete">删除</el-button>
<el-button v-if="isVisiableDel" slot="reference" type="text" :disabled="disabledDle" icon="el-icon-delete" size="mini" @click="toDelete">{{ $t('auto.common.Delete') }}</el-button>
</el-popover>
</div>

View File

@@ -1,6 +1,7 @@
import { download, initData } from '@/api/data'
import { downloadFile, parseTime } from '@/utils/index'
import Vue from 'vue'
import i18n from '@/i18n'
/**
* CRUD配置
@@ -84,7 +85,7 @@ function CRUD(options) {
},
// 标题
get title() {
return this.add > CRUD.STATUS.NORMAL ? `新增${crud.title}` : this.edit > CRUD.STATUS.NORMAL ? `编辑${crud.title}` : this.view > CRUD.STATUS.NORMAL ? `${crud.title}详情` : crud.title
return this.add > CRUD.STATUS.NORMAL ? i18n.t('auto.common.Create') + ' ' + i18n.t(`${crud.title}`) : this.edit > CRUD.STATUS.NORMAL ? i18n.t('auto.common.Editors') + ' ' + i18n.t(`${crud.title}`) : crud.title
}
},
msg: {
@@ -363,6 +364,7 @@ function CRUD(options) {
callVmHook(crud, CRUD.HOOK.afterSubmit)
crud.refresh()
}).catch(err => {
console.log(err)
crud.status.edit = CRUD.STATUS.NORMAL
callVmHook(crud, CRUD.HOOK.afterEditError)
})

View File

@@ -1,26 +1,26 @@
export default {
'department': {
'table_title': {
'Department_name': 'Tên bộ phận',
'enter_department_name': 'Vui lòng nhập tên bộ phận',
'Department': 'Trang chủ',
'select_dept': 'Chọn loại bộ phận'
'Department_name': 'Nombre del Departamento',
'enter_department_name': 'Por favor, introduzca el nombre del departamento.',
'Department': 'Departamento',
'select_dept': 'Selección de categorías sectoriales'
},
'table_value': {
'Sort': 'Sắp xếp',
'Name': 'Tên',
'State': 'Trạng thái',
'CreateDate': 'Ngày tạo',
'Operate': 'Hoạt động',
'top_departments': 'Bộ phận cao hơn'
'Sort': 'Ordenar',
'Name': 'Nombre',
'State': 'Estado',
'CreateDate': 'Fecha de creación',
'Operate': 'Operación',
'top_departments': 'Autoridades superiores'
},
'other': {
'Department_code': 'Bộ mã hóa',
'Department_sort': 'Phân loại ngành',
'External_identification': 'Nhận dạng bên ngoài',
'Top_departments': 'Bộ phận hàng đầu',
'enable': 'Bật',
'disable': 'Tắt',
'Department_code': 'Código del Departamento',
'Department_sort': 'Clasificación sectorial',
'External_identification': 'Identificación externa',
'Top_departments': 'Departamento superior',
'enable': 'Habilitar',
'disable': 'Desactivado',
'Tip1': 'Hành động này sẽ"',
'Tip2': '"',
'Tip3': 'Bộ phận, có tiếp tục không?',
@@ -32,9 +32,9 @@ export default {
'confirm_delete_msg': 'Có xác định xóa bỏ không, nếu có các nút cấp dưới thì xóa cùng một, hành động này không thể hủy bỏ!'
},
'rules': {
'name': 'Vui lòng nhập tên',
'dept_sort': 'Vui lòng nhập số serial',
'top_dept': 'Cấp trên không được để trống'
'name': 'Por favor, introduzca el nombre',
'dept_sort': 'Por favor, introduzca el número de serie',
'top_dept': 'Las autoridades superiores no pueden estar vacías'
}
}
}

View File

@@ -35,16 +35,16 @@ export default {
'login_rm': 'Ghi nhớ tôi',
'login': 'Đăng nhập',
'login_ing': 'Đăng nhập...',
'Create': 'Mới',
'Update': 'Sửa đổi',
'Delete': 'Xoá',
'Create': 'Nuevo',
'Update': 'Modificación',
'Delete': 'Eliminar',
'Export': 'Xuất',
'Editors': 'Chỉnh sửa',
'SelectAll': 'Chọn tất cả',
'Query': 'Yêu cầu',
'Reset': 'Đặt lại',
'Confirm': 'Xác nhận',
'Cancel': 'Hủy bỏ',
'Query': 'Consulta',
'Reset': 'Restablecer',
'Confirm': 'Confirmación',
'Cancel': 'Cancelación',
'Forced_cancellation': 'Buộc hủy',
'Initialize': 'Khởi tạo',
'Operate': 'Hoạt động',
@@ -67,9 +67,9 @@ export default {
'moreMenu': 'Thêm thực đơn',
'browses': 'Duyệt',
'fz': 'Zoom toàn màn hình',
'Tips': 'Mẹo',
'Tip1': 'Xác nhận xóa đã chọn',
'Tip2': 'Dữ liệu?',
'Tips': 'Consejos',
'Tip1': 'Confirmar la eliminación de los seleccionados',
'Tip2': '¿Datos?',
'Tip3': 'Tên người dùng không được sử dụng như đăng nhập',
'Tip4': 'Số điện thoại không được lặp lại',
'Tip5': 'Vui lòng nhập số điện thoại',

View File

@@ -0,0 +1,49 @@
export default {
'es_log': {
'title': 'Exception log',
'table': {
'label': 'label',
'Belonging_tags': 'Belonging tags',
'level': 'Level',
'log_level': 'Log Level',
'api': 'Interface',
'input_api': 'Please enter the interface',
'keywords': 'Keywords',
'content': 'Please enter the content',
'tracking': 'Link Tracking',
'table1': 'Please enter the link ID',
'table2': 'SQL Log',
'table3': 'HTTP Log',
'table4': 'Time frame',
'table5': 'Start Time',
'table6': 'End Time',
'table7': 'time slot',
'table8': 'Please select a label',
'table9': 'Switch query criteria',
'table10': 'Display quantity',
'table11': 'current page',
'table12': 'Total number of articles',
'table13': 'query',
'table25': 'Clear logs',
'table14': 'Last 5 minutes',
'table15': 'Last 15 minutes',
'table16': 'Last 30 minutes',
'table17': 'Last hour',
'table18': 'Last 3 hours',
'table19': 'Last 6 hours',
'table20': 'Last 12 hours',
'table21': 'Last 24 hours',
'table22': 'Last 2 days',
'table23': 'Last 7 days',
'table24': 'Last 14 days'
},
'placeholder': {
'cleared': 'clear',
'select': 'Please enter the content you want to search for'
},
'msg': {
'message': 'Are you sure to clear all exception logs?',
'title': 'Tips'
}
}
}

View File

@@ -0,0 +1,49 @@
export default {
'es_log': {
'title': 'Nhật ký ngoại lệ',
'table': {
'label': 'Etiquetas',
'Belonging_tags': 'Etiqueta a la que pertenece',
'level': 'Nivel',
'log_level': 'Nivel de registro',
'api': 'Interfaz',
'input_api': 'Por favor, introduzca la interfaz',
'keywords': 'Palabras clave',
'content': 'Por favor, introduzca el contenido',
'tracking': 'Rastreo de enlaces',
'table1': 'Por favor, introduzca el id del enlace',
'table2': 'Registro de SQL',
'table3': 'Registro https',
'table4': 'Rango de tiempo',
'table5': 'Hora de inicio',
'table6': 'Fin del tiempo',
'table7': 'Período de tiempo',
'table8': 'Por favor, seleccione la etiqueta',
'table9': 'Cambiar las condiciones de consulta',
'table10': 'Número de barras de visualización',
'table11': 'Página actual',
'table12': 'Número total de artículos',
'table13': 'Consulta',
'table25': 'Vaciar el registro',
'table14': 'Últimos 5 minutos',
'table15': 'Últimos 15 minutos',
'table16': 'Últimos 30 minutos',
'table17': 'Última Hora',
'table18': 'Las últimas 3 horas',
'table19': 'Las últimas 6 horas',
'table20': 'Las últimas 12 horas',
'table21': 'Las últimas 24 horas',
'table22': 'Los últimos 2 días',
'table23': 'Los últimos 7 días',
'table24': 'Los últimos 14 días'
},
'placeholder': {
'cleared': 'Trống rỗng',
'select': 'Vui lòng nhập những gì bạn muốn tìm kiếm'
},
'msg': {
'message': 'Xác nhận xóa tất cả nhật ký ngoại lệ?',
'title': 'Mẹo'
}
}
}

View File

@@ -0,0 +1,49 @@
export default {
'es_log': {
'title': '异常日志',
'table': {
'label': '标签',
'Belonging_tags': '所属标签',
'level': '级别',
'log_level': '日志级别',
'api': '接口',
'input_api': '请输入接口',
'keywords': '关键字',
'content': '请输入内容',
'tracking': '链路追踪',
'table1': '请输入链路id',
'table2': 'sql日志',
'table3': 'HTTP日志',
'table4': '时间范围',
'table5': '开始时间',
'table6': '结束时间',
'table7': '时间段',
'table8': '请选择标签',
'table9': '切换查询条件',
'table10': '显示条数',
'table11': '当前页',
'table12': '总条数',
'table13': '查询',
'table25': '清除日志',
'table14': '最近5分钟',
'table15': '最近15分钟',
'table16': '最近30分钟',
'table17': '最近1小时',
'table18': '最近3小时',
'table19': '最近6小时',
'table20': '最近12小时',
'table21': '最近24小时',
'table22': '最近2天',
'table23': '最近7天',
'table24': '最近14天'
},
'placeholder': {
'cleared': '清空',
'select': '请输入你要搜索的内容'
},
'msg': {
'message': '确认清空所有异常日志吗?',
'title': '提示'
}
}
}

View File

@@ -36,7 +36,7 @@ export default {
'default_title': 'Default Title',
'zh_title': 'ZH-Title',
'en_title': 'EN-Title',
'id_title': 'ID-Title',
'id_title': 'Spanish Title',
'ko_title': 'KO-Title',
'router_path': 'Router Path',
'menu_sort': 'Menu Sort',

View File

@@ -0,0 +1,57 @@
export default {
'menu': {
'title': 'Thực đơn',
'placeholder': {
'fuzzy_search': 'Búsqueda inútil',
'owning_system': 'Sistema afiliado',
'choose_icon': 'Haga clic en el icono de selección',
'component_tip': 'Coincide con el campo Nombre dentro del componente',
'choose_superior_category': 'Selección de la categoría superior'
},
'table_title': {
'menu_title': 'Título del menú',
'system': 'Sistema afiliado',
'icon': 'Iconos',
'sort': 'Ordenar',
'permission_ident': 'Identificación de permisos',
'path': 'Ruta del componente',
'outside_chain': 'Cadena externa',
'cache': 'Caché',
'visible': 'Visible',
'create_time': 'Fecha de creación',
'SystemParam': 'Parámetros del sistema',
'dataPermission': 'Permisos de datos'
},
'dialog': {
'menu_type': 'Tipo de menú',
'system': 'Sistema',
'catalogue': 'Catálogo',
'menu': 'Menú',
'button': 'Botones',
'button_name': 'Nombre del botón',
'menu_icon': 'Iconos del menú',
'menu_chain': 'Menú de cadena exterior',
'menu_cache': 'Caché de menú',
'menu_visible': 'El menú es visible',
'default_title': 'Título predeterminado',
'zh_title': 'Título en chino',
'en_title': 'Título en inglés',
'id_title': 'Título español',
'ko_title': '韩国标题',
'router_path': 'Dirección de ruta',
'menu_sort': 'Clasificación de menús',
'component_name': 'Nombre del componente',
'component_path': 'Ruta del componente',
'superior_class': 'Categoría superior',
'operate': 'Operación',
'top_class': 'Categoría superior'
},
'msg': {
'delete_msg': '¡¿ está seguro de eliminar? Cómo eliminar los nodos inferiores si existe, esta operación no se puede cancelar!'
},
'rules': {
'title': 'Por favor, introduzca el título',
'path': 'Por favor, introduzca la dirección'
}
}
}

View File

@@ -1,57 +0,0 @@
export default {
'menu': {
'title': 'Thực đơn',
'placeholder': {
'fuzzy_search': 'Tìm kiếm mờ',
'owning_system': 'Hệ thống sở hữu',
'choose_icon': 'Click chọn icon',
'component_tip': 'Khớp trường name bên trong component',
'choose_superior_category': 'Chọn loại cao hơn'
},
'table_title': {
'menu_title': 'Tiêu đề menu',
'system': 'Hệ thống sở hữu',
'icon': 'Biểu tượng',
'sort': 'Sắp xếp',
'permission_ident': 'Nhận dạng quyền',
'path': 'Đường dẫn thành phần',
'outside_chain': 'Chuỗi ngoài',
'cache': 'Bộ nhớ tạm',
'visible': 'Hiển thị',
'create_time': 'Ngày tạo',
'SystemParam': 'Thông số hệ thống',
'dataPermission': 'Quyền dữ liệu'
},
'dialog': {
'menu_type': 'Loại menu',
'system': 'Hệ thống',
'catalogue': 'Thư mục',
'menu': 'Thực đơn',
'button': 'Nút bấm',
'button_name': 'Tên nút',
'menu_icon': 'Biểu tượng menu',
'menu_chain': 'Thực đơn chuỗi bên ngoài',
'menu_cache': 'Bộ nhớ cache trình đơn',
'menu_visible': 'Hiển thị menu',
'default_title': 'Tiêu đề mặc định',
'zh_title': '中文标题',
'en_title': '英文标题',
'id_title': '印尼标题',
'ko_title': '韩国标题',
'router_path': 'Địa chỉ định tuyến',
'menu_sort': 'Sắp xếp thực đơn',
'component_name': 'Tên thành phần',
'component_path': 'Đường dẫn thành phần',
'superior_class': 'Lớp trên',
'operate': 'Hoạt động',
'top_class': 'Phân loại hàng đầu'
},
'msg': {
'delete_msg': 'Có xác định xóa bỏ không, nếu có các nút cấp dưới thì xóa cùng một, hành động này không thể hủy bỏ!'
},
'rules': {
'title': 'Vui lòng nhập tiêu đề',
'path': 'Vui lòng nhập địa chỉ'
}
}
}

View File

@@ -36,7 +36,7 @@ export default {
'default_title': '默认标题',
'zh_title': '中文标题',
'en_title': '英文标题',
'id_title': '印尼标题',
'id_title': '西班牙标题',
'ko_title': '韩国标题',
'router_path': '路由地址',
'menu_sort': '菜单排序',

View File

@@ -0,0 +1,32 @@
export default {
'role': {
'table_title': {
'taskCode_or_instCode': 'Số lệnh (Directive Number)',
'input_taskCode_or_instCode': 'Nhập số nhiệm vụ hoặc số lệnh',
'input_name': 'Introduzca el nombre'
},
'table_value': {
'roleList': 'Lista de personajes',
'Name': 'Nombre del personaje',
'Description': 'Descripción',
'CreateDate': 'Fecha de creación',
'Operate': 'Operación',
'Role': 'Personajes',
'remark': 'Nota',
'Name2': 'Nombre'
},
'other': {
'Menu_assignments': 'Asignación de menús',
'Save': 'Guardar',
'Menu_Tip': 'Seleccione el menú de asignación de roles especificado'
},
'msg': {
'delete_msg': '¿Confirmar la eliminación de los 1 Datos seleccionados?',
'saveSuccessful': 'Guardar con éxito'
},
'rules': {
'name': 'Por favor, introduzca el nombre',
'permission': 'Por favor, introduzca los permisos'
}
}
}

View File

@@ -1,32 +0,0 @@
export default {
'role': {
'table_title': {
'taskCode_or_instCode': 'Số lệnh (Directive Number)',
'input_taskCode_or_instCode': 'Nhập số nhiệm vụ hoặc số lệnh',
'input_name': 'Nhập tên'
},
'table_value': {
'roleList': 'Danh sách nhân vật',
'Name': 'Tên nhân vật',
'Description': 'Mô tả',
'CreateDate': 'Ngày tạo',
'Operate': 'Hoạt động',
'Role': 'Vai trò',
'remark': 'Ghi chú',
'Name2': 'Tên'
},
'other': {
'Menu_assignments': 'Phân bổ menu',
'Save': 'Lưu',
'Menu_Tip': 'Chọn menu gán vai trò đã chỉ định'
},
'msg': {
'delete_msg': 'Xác nhận xóa 1 mục dữ liệu đã chọn?',
'saveSuccessful': 'Lưu thành công'
},
'rules': {
'name': 'Vui lòng nhập tên',
'permission': 'Vui lòng nhập quyền'
}
}
}

View File

@@ -0,0 +1,51 @@
export default {
'user': {
'table_title': {
'Department_name': 'Nombre del Departamento',
'enter_department_name': 'Por favor, introduzca el nombre del departamento.',
'Account_Number (Name)': 'Cuenta (nombre)',
'Enter_Account_Number (Name)': 'Introduzca la cuenta o el nombre',
'State': 'Estado',
'Search': 'Buscar',
'System': 'Sistema afiliado'
},
'table_value': {
'Username': 'Nombre de usuario',
'Name': 'Nombre',
'Sex': 'Género',
'Phone': 'Teléfono',
'Mailbox': 'Buzón',
'Department': 'Departamento',
'State': 'Estado',
'create_Date': 'Fecha de creación',
'Operate': 'Operación',
'Password': 'Contraseña',
'boy': 'Hombre',
'girl': 'Mujer',
'Select_Sector_Categories': 'Selección de categorías sectoriales',
'User': 'Usuarios',
'activation': 'Activar',
'lock': 'Bloqueo'
},
'other': {
'Revise': 'Modificación',
'Delete': 'Eliminar',
'More': 'Más',
'Reset': 'Restablecer la contraseña',
'Department_permissions': 'Competencias departamentales',
'Data_Permissions': 'Permisos de datos',
'Lock_account': 'Cuenta',
'Assign_roles': 'Asignar roles'
},
'msg': {
'delete_msg': '¿Confirmar la eliminación de los 1 Datos seleccionados?'
},
'rules': {
'username1': 'Introduzca el nombre de usuario',
'username2': 'Longitud entre 2 y 20 caracteres',
'person_name1': 'Introduzca el nombre del usuario',
'person_name2': 'Độ dài từ 2 đến 20 ký tự',
'department': 'Por favor, elija el Departamento'
}
}
}

View File

@@ -1,51 +0,0 @@
export default {
'user': {
'table_title': {
'Department_name': 'Tên bộ phận',
'enter_department_name': 'Vui lòng nhập tên bộ phận',
'Account_Number (Name)': 'Số tài khoản (Tên)',
'Enter_Account_Number (Name)': 'Vui lòng nhập số tài khoản hoặc tên',
'State': 'Trạng thái',
'Search': 'Tìm kiếm',
'System': 'Hệ thống sở hữu'
},
'table_value': {
'Username': 'Tên người dùng',
'Name': 'Tên',
'Sex': 'Giới tính',
'Phone': 'Điện thoại',
'Mailbox': 'Hộp thư',
'Department': 'Trang chủ',
'State': 'Trạng thái',
'create_Date': 'Ngày tạo',
'Operate': 'Hoạt động',
'Password': 'Mật khẩu',
'boy': 'Nam',
'girl': 'Phụ nữ',
'Select_Sector_Categories': 'Chọn loại bộ phận',
'User': 'Người dùng',
'activation': 'Kích hoạt',
'lock': 'Khóa'
},
'other': {
'Revise': 'Sửa đổi',
'Delete': 'Xoá',
'More': 'Thêm',
'Reset': 'Đặt lại mật khẩu',
'Department_permissions': 'Thẩm quyền bộ phận',
'Data_Permissions': 'Quyền dữ liệu',
'Lock_account': 'Số tài khoản',
'Assign_roles': 'Phân bổ vai trò'
},
'msg': {
'delete_msg': 'Xác nhận xóa 1 mục dữ liệu đã chọn?'
},
'rules': {
'username1': 'Vui lòng nhập tên người dùng',
'username2': 'Độ dài từ 2 đến 20 ký tự',
'person_name1': 'Vui lòng nhập tên người dùng',
'person_name2': 'Độ dài từ 2 đến 20 ký tự',
'department': 'Vui lòng chọn bộ phận'
}
}
}

View File

@@ -1,8 +1,8 @@
<template>
<div class="navbar">
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
<breadcrumb v-if="!topNav" id="breadcrumb-container" class="breadcrumb-container" />
<top-nav v-if="topNav" id="topmenu-container" class="topmenu-container" />
<div class="right-menu">
<template v-if="device!=='mobile'">
@@ -15,8 +15,8 @@
<el-tooltip content="全屏缩放" effect="dark" placement="bottom">
<screenfull id="screenfull" class="right-menu-item hover-effect" />
</el-tooltip>
<notice-icon class="right-menu-item"/>
<notice-icon-reader ref="noticeIconReader"/>
<notice-icon class="right-menu-item" />
<notice-icon-reader ref="noticeIconReader" />
<!-- <el-tooltip content="布局设置" effect="dark" placement="bottom">
<size-select id="size-select" class="right-menu-item hover-effect" />
@@ -66,14 +66,11 @@ import { mapGetters } from 'vuex'
import Breadcrumb from '@/components/Breadcrumb'
import Hamburger from '@/components/Hamburger'
import TopNav from '@/components/TopNav'
import Doc from '@/components/Doc'
import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch'
import Avatar from '@/assets/images/avatar.png'
import NoticeIcon from "@/views/system/notice/NoticeIcon.vue";
import NoticeIconReader from "@/views/system/notice/NoticeIconReader.vue";
import NoticeIcon from '@/views/system/notice/NoticeIcon.vue'
import NoticeIconReader from '@/views/system/notice/NoticeIconReader.vue'
export default {
components: {
@@ -82,14 +79,9 @@ export default {
Breadcrumb,
Hamburger,
Screenfull,
SizeSelect,
Search,
Doc,
TopNav
},
created() {
this.setLang(localStorage.getItem('lang'))
},
data() {
return {
Avatar: Avatar,
@@ -97,6 +89,9 @@ export default {
language: '简体中文'
}
},
created() {
this.setLang(localStorage.getItem('lang'))
},
computed: {
...mapGetters([
'sidebar',
@@ -142,9 +137,9 @@ export default {
this.$store.dispatch('app/toggleSideBar')
},
open() {
this.$confirm('确定注销并退出系统吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
this.$confirm(this.$t('auto.common.Tip13'), this.$t('auto.common.Tips'), {
confirmButtonText: this.$t('auto.common.Confirm'),
cancelButtonText: this.$t('auto.common.Cancel'),
type: 'warning'
}).then(() => {
this.logout()

View File

@@ -3,12 +3,12 @@
<div class="head-container">
<!--工具栏-->
<el-form :inline="true" class="demo-form-inline" label-suffix=":" label-width="90px">
<el-form-item label="标签">
<el-form-item :label="$t('es_log.table.label')">
<el-select
v-model="system"
clearable
style="width: 100px; height: 35px;top: -5px;"
placeholder="所属标签"
:placeholder="$t('es_log.table.Belonging_tags')"
>
<el-option
v-for="item in systemOptions"
@@ -18,12 +18,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="级别">
<el-form-item :label="$t('es_log.table.level')">
<el-select
v-model="logLevelValue"
clearable
style="width: 100px; height: 35px;top: -5px;"
placeholder="日志级别"
:placeholder="$t('es_log.table.log_level')"
>
<el-option
v-for="item in labelsOptions"
@@ -33,32 +33,32 @@
/>
</el-select>
</el-form-item>
<el-form-item label="接口">
<el-form-item :label="$t('es_log.table.api')">
<el-input
v-model="requestMethod"
size="mini"
placeholder="请输入接口"
:placeholder="$t('es_log.table.input_api')"
clearable
/>
</el-form-item>
<el-form-item label="关键字">
<el-form-item :label="$t('es_log.table.keywords')">
<el-input
v-model="message"
size="mini"
placeholder="请输入内容"
:placeholder="$t('es_log.table.content')"
clearable
/>
</el-form-item>
<el-form-item label="链路追踪">
<el-form-item :label="$t('es_log.table.tracking')">
<el-input
v-model="traceId"
size="mini"
placeholder="请输入链路id"
:placeholder="$t('es_log.table.table1')"
clearable
/>
</el-form-item>
<el-form-item label="SQL日志" prop="filterSql">
<el-form-item :label="$t('es_log.table.table2')" prop="filterSql">
<el-switch
v-model="filterSql"
active-color="#F56C6C"
@@ -67,7 +67,7 @@
inactive-valu="0"
/>
</el-form-item>
<el-form-item label="HTTP日志" prop="isRequest">
<el-form-item :label="$t('es_log.table.table3')" prop="isRequest">
<el-switch
v-model="isRequest"
active-color="#409EFF"
@@ -77,22 +77,22 @@
/>
</el-form-item>
<el-form-item v-show="!showOptions" label="时间范围">
<el-form-item v-show="!showOptions" :label="$t('es_log.table.table4')">
<el-date-picker
v-model="timeRange"
size="mini"
clearable
type="datetimerange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
:start-placeholder="$t('es_log.table.table5')"
:end-placeholder="$t('es_log.table.table6')"
align="right"
@change="queryData"
@blur="queryData"
/>
</el-form-item>
<el-form-item v-show="showOptions" label="时间段">
<el-select v-model="timeZoneValue" filterable placeholder="请选择标签" size="mini" @change="queryData">
<el-form-item v-show="showOptions" :label="$t('es_log.table.table7')">
<el-select v-model="timeZoneValue" filterable :placeholder="$t('es_log.table.table8')" size="mini" @change="queryData">
<el-option
v-for="item in timeZoneOptions"
:key="item.index"
@@ -102,11 +102,11 @@
</el-select>
</el-form-item>
<el-form-item>
<el-tooltip class="item" effect="dark" content="切换查询条件" placement="top">
<el-tooltip class="item" effect="dark" :content="$t('es_log.table.table9')" placement="top">
<span class="el-icon-sort" @click="changeShow" />
</el-tooltip>
</el-form-item>
<el-form-item label="显示条数">
<el-form-item :label="$t('es_log.table.table10')">
<el-input-number
v-model="size"
size="mini"
@@ -116,7 +116,7 @@
:step="10"
/>
</el-form-item>
<el-form-item label="当前页">
<el-form-item :label="$t('es_log.table.table11')">
<el-input-number
v-model="page"
size="mini"
@@ -126,7 +126,7 @@
:step="1"
/>
</el-form-item>
<el-form-item label="总条数">
<el-form-item :label="$t('es_log.table.table12')">
<el-input
v-model="total"
size="small"
@@ -136,14 +136,14 @@
</el-form-item>
<el-form-item>
<el-dropdown split-button type="primary" size="mini" @click="queryData">
查询
{{ $t('es_log.table.table13') }}
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, index) in runStatuOptions" :key="index" @click.native="startInterval(item)">{{ item.label }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-form-item>
<el-form-item>
<el-button @click="clearLogs">清空日志</el-button>
<el-button @click="clearLogs">{{ $t('es_log.table.table25') }}</el-button>
</el-form-item>
</el-form>
</div>
@@ -244,37 +244,37 @@ export default {
value: 1800000
}],
timeZoneOptions: [{
label: '最近5分钟',
label: this.$t('es_log.table.table14'),
value: 300 * 1000
}, {
label: '最近15分钟',
label: this.$t('es_log.table.table15'),
value: 900 * 1000
}, {
label: '最近30分钟',
label: this.$t('es_log.table.table16'),
value: 1800 * 1000
}, {
label: '最近1小时',
label: this.$t('es_log.table.table17'),
value: 3600 * 1000
}, {
label: '最近3小时',
label: this.$t('es_log.table.table18'),
value: 3600 * 1000 * 3
}, {
label: '最近6小时',
label: this.$t('es_log.table.table19'),
value: 3600 * 1000 * 6
}, {
label: '最近12小时',
label: this.$t('es_log.table.table20'),
value: 3600 * 1000 * 12
}, {
label: '最近24小时',
label: this.$t('es_log.table.table21'),
value: 3600 * 1000 * 24
}, {
label: '最近2天',
label: this.$t('es_log.table.table22'),
value: 3600 * 1000 * 24 * 2
}, {
label: '最近7天',
label: this.$t('es_log.table.table23'),
value: 3600 * 1000 * 24 * 7
}, {
label: '最近15天',
label: this.$t('es_log.table.table24'),
value: 3600 * 1000 * 24 * 15
}],
timeZoneValue: '',

View File

@@ -8,7 +8,7 @@
v-model="query.name"
clearable
size="mini"
placeholder="输入部门名称搜索"
:placeholder="$t('department.table_title.enter_department_name')"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
@@ -17,7 +17,7 @@
v-model="query.is_used"
clearable
size="mini"
placeholder="状态"
:placeholder="$t('department.table_value.State')"
class="filter-item"
style="width: 90px"
@change="crud.toQuery"
@@ -37,13 +37,13 @@
width="500px"
>
<el-form ref="form" inline :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="部门编码" prop="code">
<el-form-item :label="$t('department.other.Department_code')" prop="code">
<el-input v-model="form.code" :disabled="true" style="width: 370px;" />
</el-form-item>
<el-form-item label="部门名称" prop="name">
<el-form-item :label="$t('department.table_title.Department_name')" prop="name" :min-width="flexWidth('code',crud.data,$t('department.other.Department_code'))">
<el-input v-model="form.name" style="width: 370px;" />
</el-form-item>
<el-form-item label="部门排序" prop="dept_sort">
<el-form-item :label="$t('department.other.Department_sort')" prop="dept_sort" :min-width="flexWidth('code',crud.data,$t('department.other.Department_code'))">
<el-input-number
v-model.number="form.dept_sort"
:min="0"
@@ -52,16 +52,18 @@
style="width: 370px;"
/>
</el-form-item>
<el-form-item label="外部标识" prop="extId">
<el-form-item :label="$t('department.other.External_identification')" prop="ext_id" :min-width="flexWidth('code',crud.data,$t('department.other.Department_code'))">
<el-input v-model="form.ext_id" style="width: 370px;" />
</el-form-item>
<el-form-item label="顶级部门">
<el-form-item :label="$t('department.other.Top_departments')" :min-width="flexWidth('code',crud.data,$t('department.other.Department_code'))">
<el-radio-group v-model="form.isTop" style="width: 140px">
<el-radio label="1">是</el-radio>
<el-radio label="0"></el-radio>
<el-row>
<el-radio label="1">{{ $t('auto.common.true') }}</el-radio>
<el-radio label="0">{{ $t('auto.common.false') }}</el-radio>
</el-row>
</el-radio-group>
</el-form-item>
<el-form-item label="状态" prop="isUesd">
<el-form-item :label="$t('department.table_value.State')" prop="is_used" :min-width="flexWidth('code',crud.data,$t('department.other.Department_code'))">
<el-switch
v-model="form.is_used"
active-color="#409EFF"
@@ -70,7 +72,7 @@
inactive-valu="false"
/>
</el-form-item>
<el-form-item v-if="form.isTop === '0'" style="margin-bottom: 0;" label="上级部门" prop="pid">
<el-form-item v-if="form.isTop === '0'" style="margin-bottom: 0;" :label="$t('department.other.Top_departments')" prop="pid" :min-width="flexWidth('code',crud.data,$t('department.other.Department_code'))">
<treeselect
v-model="form.pid"
:load-options="loadDepts"
@@ -82,8 +84,8 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
<el-button type="text" @click="crud.cancelCU">{{ $t('task.select.Cancel') }}</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('task.select.Confirm') }}</el-button>
</div>
</el-dialog>
<!--表格渲染 :load="getDeptDatas" 点击事件 row-key需要指定唯一的数据id-->
@@ -101,23 +103,23 @@
>
<el-table-column :selectable="checkboxT" type="selection" width="55" />
<!-- <el-table-column label="编码" prop="code" />-->
<el-table-column label="名称" prop="name" />
<el-table-column label="排序" prop="dept_sort" />
<el-table-column label="状态" align="center" prop="is_used">
<el-table-column :label="$t('department.table_value.Name')" prop="name" :min-width="flexWidth('name',crud.data,$t('department.table_value.Name'))" />
<el-table-column :label="$t('department.table_value.Sort')" prop="dept_sort" :min-width="flexWidth('dept_sort',crud.data,$t('department.table_value.Sort'))" />
<el-table-column :label="$t('department.table_value.State')" align="center" prop="is_used" :min-width="flexWidth('is_used',crud.data,$t('department.table_value.State'))">
<template slot-scope="scope">
<el-switch
v-model="scope.row.is_used"
:disabled="scope.row.id === 1"
active-color="#409EFF"
inactive-color="#F56C6C"
@change="changeEnabled(scope.row, scope.row.is_used,)"
@change="changeEnabled(scope.row, scope.row.is_used)"
/>
</template>
</el-table-column>
<el-table-column prop="create_time" label="创建日期" />
<el-table-column prop="create_time" :label="$t('department.table_value.CreateDate')" :min-width="flexWidth('create_time',crud.data,$t('department.table_value.CreateDate'))" />
<el-table-column
v-permission="['admin','dept:edit','dept:del']"
label="操作"
:label="$t('department.table_value.Operate')"
width="130px"
align="center"
fixed="right"
@@ -127,7 +129,7 @@
:data="scope.row"
:permission="permission"
:disabled-dle="scope.row.id === 1"
msg="确定删除吗,如果存在下级节点则一并删除此操作不能撤销"
:msg="$t('menu.msg.delete_msg')"
/>
</template>
</el-table-column>
@@ -143,6 +145,7 @@ import CRUD, { crud, form, header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import i18n from '@/i18n'
const defaultForm = {
code: null,
@@ -158,7 +161,7 @@ export default {
name: 'Dept',
components: { Treeselect, crudOperation, rrOperation, udOperation },
cruds() {
return CRUD({ title: '部门', idField: 'dept_id', url: 'api/dept/vo', crudMethod: { ...crudDept }})
return CRUD({ title: i18n.t('department.table_title.Department'), idField: 'dept_id', url: 'api/dept/vo', crudMethod: { ...crudDept }})
},
mixins: [presenter(), header(), form(defaultForm), crud()],
// 设置数据字典
@@ -265,7 +268,7 @@ export default {
},
// 改变状态
changeEnabled(data, val) {
const satus = this.enabledTypeOptions.find(item => { return item.key == data.is_used })
const satus = this.enabledTypeOptions.find(item => { return item.key === data.is_used })
this.$confirm('此操作将 "' + satus.display_name + '" ' + data.name + '部门, 是否继续?', '提示', {
confirmButtonText: '确定',

View File

@@ -8,7 +8,7 @@
v-model="query.blurry"
clearable
size="mini"
placeholder="模糊搜索"
:placeholder="$t('menu.placeholder.fuzzy_search')"
style="width: 200px;margin-bottom: 10px"
class="filter-item"
@keyup.enter.native="queryBlurry"
@@ -16,11 +16,12 @@
<el-select
v-model="query.systemType"
style="width: 100px; height: 35px;top: -5px;"
placeholder="所属系统"
:placeholder="$t('menu.placeholder.owning_system')"
@change="changetype"
>
<el-option
v-for="item in dict.system_type"
:key="item.id"
:label="item.label"
:value="item.value"
/>
@@ -39,15 +40,15 @@
width="650px"
>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="菜单类型" prop="type">
<el-form-item :label="$t('menu.dialog.menu_type')" prop="type">
<el-radio-group v-model="form.type" size="mini">
<el-radio-button label="1">系统</el-radio-button>
<el-radio-button label="2">目录</el-radio-button>
<el-radio-button label="3">菜单</el-radio-button>
<el-radio-button label="4">按钮</el-radio-button>
<el-radio-button label="1">{{ $t('menu.dialog.system') }}</el-radio-button>
<el-radio-button label="2">{{ $t('menu.dialog.catalogue') }}</el-radio-button>
<el-radio-button label="3">{{ $t('menu.dialog.menu') }}</el-radio-button>
<el-radio-button label="4">{{ $t('menu.dialog.button') }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-show="form.type.toString() !== '1' && form.type.toString() !== '4' " label="菜单图标" prop="icon">
<el-form-item v-show="form.type.toString() !== '1' && form.type.toString() !== '4' " :label="$t('menu.dialog.menu_icon')" prop="icon">
<el-popover
placement="bottom-start"
width="450"
@@ -55,7 +56,7 @@
@show="$refs['iconSelect'].reset()"
>
<IconSelect ref="iconSelect" @selected="selected" />
<el-input slot="reference" v-model="form.icon" style="width: 450px;" placeholder="点击选择图标" readonly>
<el-input slot="reference" v-model="form.icon" style="width: 450px;" :placeholder="$t('menu.placeholder.choose_icon')" readonly>
<svg-icon
v-if="form.icon"
slot="prefix"
@@ -67,41 +68,62 @@
</el-input>
</el-popover>
</el-form-item>
<el-form-item v-show="form.type.toString() !== '2' && form.type.toString() !== '1'" label="外链菜单" 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-button label="true"></el-radio-button>
<el-radio-button label="false"></el-radio-button>
<el-radio-button label="true">{{ $t('auto.common.true') }}</el-radio-button>
<el-radio-button label="false">{{ $t('auto.common.false') }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-show="form.type.toString() === '3'" label="菜单缓存" 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-button label="true"></el-radio-button>
<el-radio-button label="false"></el-radio-button>
<el-radio-button label="true">{{ $t('auto.common.true') }}</el-radio-button>
<el-radio-button label="false">{{ $t('auto.common.false') }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-show="form.type.toString() !== '2' && form.type.toString() !== '1' " label="菜单隐藏" 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-button label="true"></el-radio-button>
<el-radio-button label="false">否</el-radio-button>
<el-radio-button label="false">{{ $t('auto.common.true') }}</el-radio-button>
<el-radio-button label="true">{{ $t('auto.common.false') }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.type.toString() !== '2'" label="菜单标题" prop="title">
<el-form-item v-if="form.type.toString() !== '2'" :label="$t('menu.dialog.default_title')" prop="title">
<el-input
v-model="form.title"
:style=" form.type.toString() === '0' ? 'width: 450px' : 'width: 190px'"
placeholder="菜单标题"
:placeholder="$t('menu.dialog.default_title')"
/>
</el-form-item>
<el-form-item v-if="form.type.toString() === '2'" label="目录名称" prop="title">
<el-input v-model="form.title" placeholder="目录名称" style="width: 190px;" />
<el-form-item v-if="form.type.toString() !== '2'" :label="$t('menu.dialog.zh_title')" prop="zh_title">
<el-input
v-model="form.zh_title"
:style=" form.type.toString() === '0' ? 'width: 450px' : 'width: 190px'"
:placeholder="$t('menu.dialog.zh_title')"
/>
</el-form-item>
<el-form-item v-show="form.type.toString() !== '1' " label="权限标识" prop="permission">
<el-input v-model="form.permission" :disabled="form.iframe" placeholder="权限标识" style="width: 190px;" />
<el-form-item v-if="form.type.toString() !== '2'" :label="$t('menu.dialog.en_title')" prop="en_title">
<el-input
v-model="form.en_title"
:style=" form.type.toString() === '0' ? 'width: 450px' : 'width: 190px'"
:placeholder="$t('menu.dialog.en_title')"
/>
</el-form-item>
<el-form-item v-if="form.type.toString() !== '1' && form.type.toString() !== '2'" label="路由地址" prop="path">
<el-input v-model="form.path" placeholder="路由地址" style="width: 190px;" />
<el-form-item v-if="form.type.toString() !== '2'" :label="$t('menu.dialog.id_title')" prop="in_title">
<el-input
v-model="form.in_title"
:style=" form.type.toString() === '0' ? 'width: 450px' : 'width: 190px'"
:placeholder="$t('menu.dialog.id_title')"
/>
</el-form-item>
<el-form-item label="菜单排序" prop="menu_sort">
<el-form-item v-if="form.type.toString() === '2'" :label="$t('menu.dialog.button_name')" prop="title">
<el-input v-model="form.title" :placeholder="$t('menu.dialog.button_name')" style="width: 190px;" />
</el-form-item>
<el-form-item v-show="form.type.toString() !== '1' " :label="$t('menu.table_title.permission_ident')" prop="permission">
<el-input v-model="form.permission" :disabled="form.iframe" :placeholder="$t('menu.table_title.permission_ident')" style="width: 190px;" />
</el-form-item>
<el-form-item v-if="form.type.toString() !== '1' && form.type.toString() !== '2'" :label="$t('menu.dialog.router_path')" prop="path">
<el-input v-model="form.path" :placeholder="$t('menu.dialog.router_path')" style="width: 190px;" />
</el-form-item>
<el-form-item :label="$t('menu.dialog.menu_sort')" prop="menu_sort">
<el-input-number
v-model.number="form.menu_sort"
:min="0"
@@ -110,13 +132,13 @@
style="width: 190px;"
/>
</el-form-item>
<el-form-item v-show="!form.iframe && form.type.toString() === '3' " label="组件名称" prop="componentName">
<el-input v-model="form.componentName" style="width: 190px;" placeholder="匹配组件内Name字段" />
<el-form-item v-show="!form.iframe && form.type.toString() === '3' " :label="$t('menu.dialog.component_name')" prop="component_name">
<el-input v-model="form.component_name" style="width: 190px;" :placeholder="$t('menu.placeholder.component_tip')" />
</el-form-item>
<el-form-item v-show="!form.iframe && (form.type.toString() === '2' ||form.type.toString() === '3' ) " label="组件路径" prop="component">
<el-input v-model="form.component" style="width: 190px;" placeholder="组件路径" />
<el-form-item v-show="!form.iframe && (form.type.toString() === '2' ||form.type.toString() === '3' ) " :label="$t('menu.dialog.component_path')" prop="component">
<el-input v-model="form.component" style="width: 190px;" :placeholder="$t('menu.dialog.component_path')" />
</el-form-item>
<el-form-item label="上级类目" prop="pid">
<el-form-item :label="$t('menu.dialog.superior_class')" prop="pid">
<!-- normalizer转换- loadMenus 点击扩展的时候会调用该方法-->
<treeselect
v-model="form.pid"
@@ -124,13 +146,13 @@
:load-options="loadMenus"
:normalizer="normalizer"
style="width: 450px;"
placeholder="选择上级类目"
:placeholder="$t('menu.placeholder.choose_superior_category')"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
<el-button type="text" @click="crud.cancelCU">{{ $t('auto.common.Cancel') }}</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<!--表格渲染-->
@@ -149,46 +171,46 @@
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column label="菜单标题" prop="title" :min-width="100" />
<el-table-column label="所属系统" prop="systemType" :min-width="flexWidth('systemType',crud.data,'所属系统')">
<el-table-column :label="$t('menu.table_title.menu_title')" prop="title" :min-width="100" />
<el-table-column :label="$t('menu.table_title.system')" prop="systemType" :min-width="flexWidth('systemType',crud.data,$t('menu.table_title.system'))">
<template slot-scope="scope">
{{ dict.label.system_type[scope.row.systemType] }} : {{ scope.row.systemType }}
</template>
</el-table-column>
<el-table-column prop="icon" label="图标" align="center" :min-width="flexWidth('icon',crud.data,'图标')">
<el-table-column prop="icon" :label="$t('menu.table_title.icon')" align="center" :min-width="flexWidth('icon',crud.data,$t('menu.table_title.icon'))">
<template slot-scope="scope">
<svg-icon :icon-class="scope.row.icon ? scope.row.icon : ''" />
</template>
</el-table-column>
<el-table-column prop="menu_sort" align="center" label="排序" :min-width="flexWidth('menu_sort',crud.data,'排序')">
<el-table-column prop="menu_sort" align="center" :label="$t('menu.table_title.sort')" :min-width="flexWidth('menu_sort',crud.data,$t('menu.table_title.sort'))">
<template slot-scope="scope">
{{ scope.row.menu_sort }}
</template>
</el-table-column>
<el-table-column prop="permission" label="权限标识" :min-width="flexWidth('permission',crud.data,'权限标识')" />
<el-table-column prop="component" label="组件路径" min-width="120" />
<el-table-column prop="iframe" label="外链" :formatter="crud.formatIsOrNot" :min-width="flexWidth('iframe',crud.data,'外链')">
<el-table-column prop="permission" :label="$t('menu.table_title.permission_ident')" :min-width="flexWidth('permission',crud.data,$t('menu.table_title.permission_ident'))" />
<el-table-column prop="component" :label="$t('menu.table_title.path')" min-width="120" />
<el-table-column prop="iframe" :label="$t('menu.table_title.outside_chain')" :formatter="crud.formatIsOrNot" :min-width="flexWidth('iframe',crud.data,$t('menu.table_title.outside_chain'))">
<template slot-scope="scope">
<span v-if="scope.row.iframe">是</span>
<span v-else>否</span>
</template>
</el-table-column>
<el-table-column prop="cache" label="缓存" :formatter="crud.formatIsOrNot" :min-width="flexWidth('cache',crud.data,'缓存')">
<el-table-column prop="cache" :label="$t('menu.table_title.cache')" :formatter="crud.formatIsOrNot" :min-width="flexWidth('cache',crud.data,$t('menu.table_title.cache'))">
<template slot-scope="scope">
<span v-if="scope.row.cache"></span>
<span v-else></span>
<span v-if="scope.row.cache">YES</span>
<span v-else> NO</span>
</template>
</el-table-column>
<el-table-column prop="hidden" label="可见" :formatter="crud.formatIsOrNot" :min-width="flexWidth('hidden',crud.data,'可见')">
<el-table-column prop="hidden" :label="$t('menu.table_title.visible')" :formatter="crud.formatIsOrNot" :min-width="flexWidth('hidden',crud.data,$t('menu.table_title.visible'))">
<template slot-scope="scope">
<span v-if="scope.row.hidden"></span>
<span v-else></span>
<span v-if="scope.row.hidden">NO</span>
<span v-else>YES</span>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建日期" :min-width="flexWidth('createTime',crud.data,'创建日期')" />
<el-table-column prop="createTime" :label="$t('menu.table_title.create_time')" :min-width="flexWidth('createTime',crud.data,$t('menu.table_title.create_time'))" />
<el-table-column
v-permission="['admin','menu:edit','menu:del']"
label="操作"
:label="$t('auto.common.Operate')"
width="130px"
align="center"
fixed="right"
@@ -197,7 +219,7 @@
<udOperation
:data="scope.row"
:permission="permission"
msg="确定删除吗,如果存在下级节点则一并删除此操作不能撤销"
:msg="$t('menu.msg.delete_msg')"
/>
</template>
</el-table-column>
@@ -216,6 +238,7 @@ import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import Dict from '../../../components/Dict/Dict'
import i18n from '@/i18n'
// crud交由presenter持有
const defaultForm = {
@@ -240,7 +263,7 @@ export default {
name: 'Menu',
components: { Treeselect, IconSelect, crudOperation, rrOperation, udOperation },
cruds() {
return CRUD({ title: '菜单', idField: 'menu_id', url: 'api/sysMenu', crudMethod: { ...crudMenu }})
return CRUD({ title: i18n.t('menu.title'), idField: 'menu_id', url: 'api/sysMenu', crudMethod: { ...crudMenu }})
},
mixins: [presenter(), header(), form(defaultForm), crud()],
dicts: ['system_type'],

View File

@@ -8,7 +8,7 @@
v-model="query.blurry"
size="mini"
clearable
placeholder="输入名称"
:placeholder="$t('role.table_title.input_name')"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
@@ -27,16 +27,16 @@
width="520px"
>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="角色名称" prop="name">
<el-form-item :label="$t('role.table_value.Name')" prop="name">
<el-input v-model="form.name" style="width: 380px;" />
</el-form-item>
<el-form-item label="备注" prop="description">
<el-form-item :label="$t('role.table_value.Name')" prop="description">
<el-input v-model="form.remark" style="width: 380px;" rows="2" type="textarea" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
<el-button type="text" @click="crud.cancelCU">{{ $t('task.select.Cancel') }}</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('task.select.Confirm') }}</el-button>
</div>
</el-dialog>
<el-row :gutter="15">
@@ -44,7 +44,7 @@
<el-col :span="12" style="margin-bottom: 10px">
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">角色列表</span>
<span class="role-span">{{ $t('role.table_value.roleList') }}</span>
</div>
<el-table
ref="table"
@@ -56,16 +56,16 @@
@current-change="handleCurrentChange"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="name" label="名称" min-width="100" show-overflow-tooltip />
<el-table-column show-overflow-tooltip prop="remark" label="描述" />
<el-table-column show-overflow-tooltip width="135px" prop="createTime" label="创建日期">
<el-table-column prop="name" :label="$t('role.table_value.Name')" :min-width="flexWidth('name',crud.data,$t('role.table_value.Name'))" show-overflow-tooltip />
<el-table-column show-overflow-tooltip prop="remark" :label="$t('role.table_value.Description')" :min-width="flexWidth('remark',crud.data,$t('role.table_value.Description'))" />
<el-table-column show-overflow-tooltip :min-width="flexWidth('create_time',crud.data,$t('role.table_value.CreateDate'))" prop="create_time" :label="$t('role.table_value.CreateDate')">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
<span>{{ parseTime(scope.row.create_time) }}</span>
</template>
</el-table-column>
<el-table-column
v-permission="['admin','roles:edit','roles:del']"
label="操作"
:label="$t('role.table_value.Operate')"
width="130px"
align="center"
fixed="right"
@@ -87,7 +87,7 @@
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<el-tooltip class="item" effect="dark" content="选择指定角色分配菜单" placement="top">
<span class="role-span">菜单分配</span>
<span class="role-span">{{ $t('role.other.Menu_assignments') }}</span>
</el-tooltip>
<el-button
v-permission="['admin','roles:edit']"
@@ -98,7 +98,7 @@
style="float: right; padding: 6px 10px"
type="primary"
@click="saveMenu"
>保存
>{{ $t('role.other.Save') }}
</el-button>
</div>
@@ -130,13 +130,14 @@ import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import i18n from '@/i18n'
const defaultForm = { role_id: null, name: null, remark: null }
export default {
name: 'Role',
components: { pagination, crudOperation, rrOperation, udOperation, crudMenu },
components: { pagination, crudOperation, rrOperation, udOperation },
cruds() {
return CRUD({ idField: 'role_id', title: '角色', url: 'api/sysRole', crudMethod: { ...crudRoles }})
return CRUD({ idField: 'role_id', title: i18n.t('role.table_value.Role'), url: 'api/sysRole', crudMethod: { ...crudRoles }})
},
mixins: [presenter(), header(), form(defaultForm), crud()],
data() {

View File

@@ -8,7 +8,7 @@
v-model="deptName"
clearable
size="mini"
placeholder="请输入部门名称"
:placeholder="$t('user.table_title.enter_department_name')"
prefix-icon="el-icon-search"
class="filter-item"
@input="getDeptDatas"
@@ -30,7 +30,7 @@
v-model="query.blurry"
clearable
size="mini"
placeholder="输入账号或者名称"
:placeholder="$t('user.table_title.Enter_Account_Number (Name)')"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
@@ -39,7 +39,7 @@
v-model="query.is_used"
clearable
size="mini"
placeholder="状态"
:placeholder="$t('user.table_title.State')"
class="filter-item"
style="width: 90px"
@change="crud.toQuery"
@@ -65,42 +65,42 @@
width="700px"
>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="100px">
<el-form-item label="用户名" prop="username">
<el-form-item :label="$t('user.table_value.Username')" prop="username">
<el-input v-model="form.username" style="width: 200px;" />
</el-form-item>
<el-form-item label="电话" prop="phone">
<el-form-item :label="$t('user.table_value.Phone')" prop="phone">
<el-input v-model.number="form.phone" style="width: 200px;" />
</el-form-item>
<el-form-item label="姓名" prop="preson_name">
<el-form-item :label="$t('user.table_value.Name')" prop="preson_name">
<el-input v-model="form.person_name" style="width: 200px;" />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-form-item :label="$t('user.table_value.Mailbox')" prop="email">
<el-input v-model="form.email" style="width: 200px;" />
</el-form-item>
<br v-if="!crud.status.edit">
<el-form-item v-if="crud.status.add" label="部门" prop="depts" :rules="[{ required: true, message: '请选择部门', trigger: 'change' }]">
<el-form-item v-if="crud.status.add" :label="$t('user.table_value.Department')" prop="depts" :rules="[{ required: true, message: '请选择部门', trigger: 'change' }]">
<treeselect
v-model="form.depts"
:load-options="loadDepts"
:options="deptDatas"
style="width: 370px;"
style="width: 200px;"
:multiple="true"
:flat="true"
:normalizer="normalizer"
placeholder="选择部门类目"
:placeholder="$t('user.table_value.Select_Sector_Categories')"
/>
</el-form-item>
<br v-if="!crud.status.add">
<el-form-item v-if="crud.status.add" label="密码" prop="password">
<el-form-item v-if="crud.status.add" :label="$t('user.table_value.Password')" prop="password">
<el-input v-model="form.password" style="width: 200px;" show-password auto-complete="new-password" />
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="form.gender" style="width: 178px">
<el-radio label="">男</el-radio>
<el-radio label="">女</el-radio>
<el-form-item :label="$t('user.table_value.Sex')">
<el-radio-group v-model="form.gender" style="width: 200px">
<el-radio :label="$t('user.table_value.boy')">{{ $t('user.table_value.boy') }}</el-radio>
<el-radio :label="$t('user.table_value.girl')">{{ $t('user.table_value.girl') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="状态" prop="is_uesd">
<el-form-item :label="$t('user.table_value.State')" prop="is_uesd">
<el-switch
v-model="form.is_used"
active-color="#409EFF"
@@ -108,14 +108,14 @@
/>
</el-form-item>
<br v-if="!crud.status.edit">
<el-form-item v-if="crud.status.add" style="margin-bottom: 0;" label="角色" prop="roles">
<el-form-item v-if="crud.status.add" style="margin-bottom: 0;" :label="$t('role.table_value.Role')" prop="roles">
<el-select
v-model="roleDatas"
style="width: 512px"
style="width: 200px"
multiple
active-value="1"
inactive-value="0"
placeholder="请选择"
:placeholder="$t('auto.common.please')"
@remove-tag="deleteTag"
@change="changeRole"
>
@@ -130,8 +130,8 @@
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
<el-button type="text" @click="crud.cancelCU">{{ $t('auto.common.Cancel') }}</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<!--表格渲染-->
@@ -143,48 +143,50 @@
@selection-change="crud.selectionChangeHandler"
>
<el-table-column :selectable="checkboxT" type="selection" width="55" />
<el-table-column prop="username" label="用户名" :min-width="flexWidth('username',crud.data,'用户名')" />
<el-table-column prop="username" :label="$t('user.table_value.Username')" :min-width="flexWidth('username',crud.data,$t('user.table_value.Username'))" />
<el-table-column
prop="person_name"
label="姓名"
:min-width="flexWidth('person_name',crud.data,'姓名')"
:label="$t('user.table_value.Name')"
:min-width="flexWidth('person_name',crud.data,$t('user.table_value.Name'))"
/>
<el-table-column prop="gender" label="性别" :min-width="flexWidth('person_name',crud.data,'性别')" />
<el-table-column prop="phone" label="电话" :min-width="flexWidth('phone',crud.data,'电话')" />
<el-table-column prop="email" label="邮箱" :min-width="flexWidth('email',crud.data,'邮箱')" />
<el-table-column show-overflow-tooltip prop="depts" label="部门">
<el-table-column prop="gender" :label="$t('user.table_value.Sex')" :min-width="flexWidth('gender',crud.data,$t('user.table_value.Sex'))" />
<el-table-column prop="phone" :label="$t('user.table_value.Phone')" :min-width="flexWidth('phone',crud.data,$t('user.table_value.Phone'))" />
<el-table-column prop="email" :label="$t('user.table_value.Mailbox')" :min-width="flexWidth('email',crud.data,$t('user.table_value.Mailbox'))" />
<el-table-column show-overflow-tooltip prop="depts" :label="$t('user.table_value.Department')" :min-width="flexWidth('depts',crud.data,$t('user.table_value.Department'))">
<template slot-scope="scope">
<span v-for=" item in scope.row.depts" :key="item.index">{{ item.name }} </span>
<span v-for="(item, index) in scope.row.depts" :key="index">
{{ item.name }}<span v-if="index !== scope.row.depts.length - 1">、</span>
</span>
</template>
</el-table-column>>
<el-table-column label="状态" align="center" prop="enabled">
</el-table-column>
<el-table-column :label="$t('user.table_value.State')" align="center" prop="enabled" :min-width="flexWidth('enabled',crud.data,$t('user.table_value.State'))">
<template slot-scope="scope">
<span :style="{'color': caseStatusColorFilter(scope.row.is_used)}">{{ enabledTypeOptions.find(item => {return item.key == scope.row.is_used}).display_name }}</span>
</template>
</el-table-column>
<el-table-column prop="create_time" label="创建日期" :min-width="flexWidth('create_time',crud.data,'创建日期')" />
<el-table-column prop="create_time" :label="$t('user.table_value.create_Date')" :min-width="flexWidth('create_time',crud.data,$t('user.table_value.create_Date'))" />
<el-table-column
label="操作"
:label="$t('user.table_value.Operate')"
fixed="right"
align="center"
width="200"
>
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="crud.toEdit(scope.row)">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handdeleted(scope.row)">删除</el-button>
<el-dropdown 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-edit" @click="crud.toEdit(scope.row)">{{ $t('user.other.Revise') }}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handdeleted(scope.row)">{{ $t('user.other.Delete') }}</el-button>
<el-dropdown v-hasPermi="['system:user:resetPwd', 'system:user:edit']" size="mini">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">{{ $t('user.other.More') }}</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item icon="el-icon-refresh-right"><span @click="resetPassword(scope.row)">重置密码</span></el-dropdown-item>
<el-dropdown-item icon="el-icon-refresh-right"><span @click="resetPassword(scope.row)">{{ $t('user.other.Reset') }}</span></el-dropdown-item>
<el-dropdown-item icon="el-icon-key">
<span @click="openDeptDrawer(scope.row)">分配部门</span>
<span @click="openDeptDrawer(scope.row)">{{ $t('user.other.Department_permissions') }}</span>
</el-dropdown-item>
<el-dropdown-item icon="el-icon-key">
<span @click="openDataDialog(scope.row)">数据权限</span>
<span @click="openDataDialog(scope.row)">{{ $t('user.other.Data_Permissions') }}</span>
</el-dropdown-item>
<el-dropdown-item icon="el-icon-lock"><span @click="changeEnabled(scope.row)">{{ enabledTypeOptions.find(item => {return item.key !== scope.row.is_used}).display_name }}账号</span></el-dropdown-item>
<el-dropdown-item icon="el-icon-lock"><span @click="changeEnabled(scope.row)">{{ enabledTypeOptions.find(item => {return item.key !== scope.row.is_used}).display_name }}{{ $t('user.other.Lock_account') }}</span></el-dropdown-item>
<el-dropdown-item icon="el-icon-circle-check">
<span @click="openRoleDrawer(scope.row)">分配角色</span>
<span @click="openRoleDrawer(scope.row)">{{ $t('user.other.Assign_roles') }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@@ -323,13 +325,13 @@ import { getAll, getLevel } from '@/views/system/role/role'
import CRUD, { crud, form, header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
import { mapGetters } from 'vuex'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import RelevanceUserDialog from '@/views/system/user/dialog/relevanceUserDialog'
import RelevanceDeptDialog from '@/views/system/user/dialog/relevanceDeptDialog'
import i18n from '@/i18n'
let userRoles = []
const defaultForm = {
@@ -346,9 +348,9 @@ const defaultForm = {
}
export default {
name: 'User',
components: { RelevanceDeptDialog, RelevanceUserDialog, Treeselect, crudOperation, rrOperation, udOperation, pagination },
components: { RelevanceDeptDialog, RelevanceUserDialog, Treeselect, crudOperation, rrOperation, pagination },
cruds() {
return CRUD({ title: '用户', idField: 'user_id', url: 'api/users', crudMethod: { ...crudUser }})
return CRUD({ title: i18n.t('user.table_value.User'), idField: 'user_id', url: 'api/users', crudMethod: { ...crudUser }})
},
mixins: [presenter(), header(), form(defaultForm), crud()],
// 数据字典
@@ -366,8 +368,8 @@ export default {
del: ['admin', 'user:del']
},
enabledTypeOptions: [
{ key: true, display_name: '激活' },
{ key: false, display_name: '锁定' }
{ key: true, display_name: i18n.t('user.table_value.activation') },
{ key: false, display_name: i18n.t('user.table_value.lock') }
],
rules: {
username: [
@@ -445,7 +447,6 @@ export default {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.crud.delAllLoading = true
this.crud.doDelete(datas)
}).catch(() => {
@@ -583,7 +584,6 @@ export default {
},
// 切换部门
handleNodeClick(data) {
this.query.dept_id = data.dept_id
this.query.needAll = true
this.crud.toQuery()
@@ -696,7 +696,7 @@ export default {
this.$nextTick(function() {
for (var index = 0; index < res.length; index++) {
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {
if (this.dataDialog.dataScopeType[i].value == res[index].permissionScopeType) {
if (this.dataDialog.dataScopeType[i].value === res[index].permissionScopeType) {
this.dataDialog.dataScopeType[i].permissionId = res[index].permissionId
if (res[index].users) this.dataDialog.dataScopeType[i].users = res[index].users
if (res[index].depts) this.dataDialog.dataScopeType[i].depts = res[index].depts
@@ -716,7 +716,7 @@ export default {
},
openRelevance(row, index) {
for (var i = 0; i < this.permissions.length; i++) {
if (this.permissions[i].permissionId != undefined && this.permissions[i].permissionId && this.permissions[i].permissionId != row.permissionId) {
if (this.permissions[i].permissionId !== undefined && this.permissions[i].permissionId && this.permissions[i].permissionId !== row.permissionId) {
this.$delete(this.dataDialog.dataScopeType[index], this.permissions[i].permissionId.toString())
}
}
@@ -725,15 +725,15 @@ export default {
this.deptIds = []
this.userIds = []
console.log(row)
if (row.permissionId == '1605129738328870912') { // 选择用户
if (row.permissionId === '1605129738328870912') { // 选择用户
this.userIds = this.dataDialog.dataScopeType[index].users
this.rowData = row
this.relevanceUser = true
} else if (row.permissionId == '1605129882164137984') { // 选择部门
} else if (row.permissionId === '1605129882164137984') { // 选择部门
this.deptIds = this.dataDialog.dataScopeType[index].depts
this.rowData = row
this.relevanceDept = true
} else if (row.permissionId == '1605128919449735168') { // 自身
} else if (row.permissionId === '1605128919449735168') { // 自身
const param = {
user_id: this.dataDialog.user_id
}
@@ -746,8 +746,8 @@ export default {
},
selectUsers(row) { // row对话框传来的数据
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {
if (this.dataDialog.dataScopeType[i].dictId == this.rowData.dictId) {
if (this.dataDialog.dataScopeType[i].depts != undefined && this.dataDialog.dataScopeType[i].depts.length > 0) this.dataDialog.dataScopeType[i].depts = []
if (this.dataDialog.dataScopeType[i].dictId === this.rowData.dictId) {
if (this.dataDialog.dataScopeType[i].depts !== undefined && this.dataDialog.dataScopeType[i].depts.length > 0) this.dataDialog.dataScopeType[i].depts = []
this.dataDialog.dataScopeType[i].users = row
break
}
@@ -756,8 +756,8 @@ export default {
},
selectDepts(row) {
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {
if (this.dataDialog.dataScopeType[i].dictId == this.rowData.dictId) {
if (this.dataDialog.dataScopeType[i].users != undefined && this.dataDialog.dataScopeType[i].users.length > 0) this.dataDialog.dataScopeType[i].users = []
if (this.dataDialog.dataScopeType[i].dictId === this.rowData.dictId) {
if (this.dataDialog.dataScopeType[i].users !== undefined && this.dataDialog.dataScopeType[i].users.length > 0) this.dataDialog.dataScopeType[i].users = []
this.dataDialog.dataScopeType[i].depts = row
break
}
@@ -855,7 +855,7 @@ export default {
checkNode.parent.indeterminate = false
}
// 如果取消所有第二节点的勾选状态,则第一层父节点也取消勾选
if (checkNode.level == 2 && checkNode.parent.childNodes.every(ele => !ele.checked)) {
if (checkNode.level === 2 && checkNode.parent.childNodes.every(ele => !ele.checked)) {
checkNode.parent.checked = false
checkNode.parent.indeterminate = false
}
@@ -880,4 +880,13 @@ export default {
height: 30px;
line-height: 30px;
}
.el-form-item__label {
white-space: nowrap;
}
.no-wrap {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>