rev:代码合并
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<el-col style="margin-bottom: 10px">
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">字段配置:{{ tableName }}</span>
|
||||
<span class="role-span">字段配置:{{ table_name }}</span>
|
||||
<el-button
|
||||
:loading="genLoading"
|
||||
icon="el-icon-s-promotion"
|
||||
@@ -34,8 +34,8 @@
|
||||
</div>
|
||||
<el-form size="mini" label-width="90px">
|
||||
<el-table v-loading="loading" :data="data" :max-height="tableHeight" size="mini" style="width: 100%;margin-bottom: 15px">
|
||||
<el-table-column prop="columnName" label="字段名称" />
|
||||
<el-table-column prop="columnType" label="字段类型" />
|
||||
<el-table-column prop="column_name" label="字段名称" />
|
||||
<el-table-column prop="column_type" label="字段类型" />
|
||||
<el-table-column prop="remark" label="字段描述">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="data[scope.$index].remark" size="mini" class="edit-input" />
|
||||
@@ -43,22 +43,22 @@
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="必填" width="70px">
|
||||
<template slot-scope="scope">
|
||||
<el-checkbox v-model="data[scope.$index].notNull" />
|
||||
<el-checkbox v-model="data[scope.$index].not_null" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="列表" width="70px">
|
||||
<template slot-scope="scope">
|
||||
<el-checkbox v-model="data[scope.$index].listShow" />
|
||||
<el-checkbox v-model="data[scope.$index].list_show" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="表单" width="70px">
|
||||
<template slot-scope="scope">
|
||||
<el-checkbox v-model="data[scope.$index].formShow" />
|
||||
<el-checkbox v-model="data[scope.$index].form_show" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="表单类型">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="data[scope.$index].formType" filterable class="edit-input" clearable size="mini" placeholder="请选择">
|
||||
<el-select v-model="data[scope.$index].form_type" filterable class="edit-input" clearable size="mini" placeholder="请选择">
|
||||
<el-option
|
||||
label="文本框"
|
||||
value="Input"
|
||||
@@ -84,7 +84,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="查询方式">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="data[scope.$index].queryType" filterable class="edit-input" clearable size="mini" placeholder="请选择">
|
||||
<el-select v-model="data[scope.$index].query_type" filterable class="edit-input" clearable size="mini" placeholder="请选择">
|
||||
<el-option
|
||||
label="="
|
||||
value="="
|
||||
@@ -106,8 +106,8 @@
|
||||
value="Like"
|
||||
/>
|
||||
<el-option
|
||||
label="NotNull"
|
||||
value="NotNull"
|
||||
label="not_null"
|
||||
value="not_null"
|
||||
/>
|
||||
<el-option
|
||||
label="BetWeen"
|
||||
@@ -118,7 +118,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="日期注解">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="data[scope.$index].dateAnnotation" filterable class="edit-input" clearable size="mini" placeholder="请选择">
|
||||
<el-select v-model="data[scope.$index].date_annotation" filterable class="edit-input" clearable size="mini" placeholder="请选择">
|
||||
<el-option
|
||||
label="自动创建时间"
|
||||
value="CreationTimestamp"
|
||||
@@ -132,8 +132,11 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="关联字典">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="data[scope.$index].dictName" filterable class="edit-input" clearable size="mini" placeholder="请选择">
|
||||
<el-option v-for="item in dicts" :key="item.id" :label="item.remark === '' ? item.name : item.remark" :value="item.name" />
|
||||
<el-select v-model="data[scope.$index].dict_name" filterable class="edit-input" clearable size="mini" placeholder="请选择">
|
||||
<el-option v-for="item in dicts" :key="item.dict_id" :label="item.code === '' ? item.name : item.code" :value="item.code">
|
||||
<span style="float: left">{{ item.code }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.name }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -159,8 +162,8 @@
|
||||
<el-input v-model="form.author" style="width: 40%" />
|
||||
<span style="color: #C0C0C0;margin-left: 10px;">类上面的作者名称</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="模块名称" prop="moduleName">
|
||||
<el-input v-model="form.moduleName" style="width: 40%" />
|
||||
<el-form-item label="模块名称" prop="module_name">
|
||||
<el-input v-model="form.module_name" style="width: 40%" />
|
||||
<span style="color: #C0C0C0;margin-left: 10px;">模块的名称,请选择项目中已存在的模块</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="至于包下" prop="pack">
|
||||
@@ -168,7 +171,7 @@
|
||||
<span style="color: #C0C0C0;margin-left: 10px;">项目包的名称,生成的代码放到哪个包里面</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="接口名称" prop="apiAlias">
|
||||
<el-input v-model="form.apiAlias" style="width: 40%" />
|
||||
<el-input v-model="form.api_alias" style="width: 40%" />
|
||||
<span style="color: #C0C0C0;margin-left: 10px;">接口的名称,用于控制器与接口文档中</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="前端路径" prop="path">
|
||||
@@ -208,8 +211,8 @@ export default {
|
||||
mixins: [crud],
|
||||
data() {
|
||||
return {
|
||||
activeName: 'first', tableName: '', tableHeight: 550, columnLoading: false, configLoading: false, dicts: [], syncLoading: false, genLoading: false,
|
||||
form: { id: null, tableName: '', author: '', pack: '', path: '', moduleName: '', cover: 'false', apiPath: '', prefix: '', apiAlias: null },
|
||||
activeName: 'first', table_name: '', tableHeight: 550, columnLoading: false, configLoading: false, dicts: [], syncLoading: false, genLoading: false,
|
||||
form: { id: null, table_name: '', author: '', pack: '', path: '', module_name: '', cover: 'false', apiPath: '', prefix: '', api_alias: null },
|
||||
rules: {
|
||||
author: [
|
||||
{ required: true, message: '作者不能为空', trigger: 'blur' }
|
||||
@@ -217,13 +220,13 @@ export default {
|
||||
pack: [
|
||||
{ required: true, message: '包路径不能为空', trigger: 'blur' }
|
||||
],
|
||||
moduleName: [
|
||||
module_name: [
|
||||
{ required: true, message: '包路径不能为空', trigger: 'blur' }
|
||||
],
|
||||
path: [
|
||||
{ required: true, message: '前端路径不能为空', trigger: 'blur' }
|
||||
],
|
||||
apiAlias: [
|
||||
api_alias: [
|
||||
{ required: true, message: '接口名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
cover: [
|
||||
@@ -234,10 +237,10 @@ export default {
|
||||
},
|
||||
created() {
|
||||
this.tableHeight = document.documentElement.clientHeight - 385
|
||||
this.tableName = this.$route.params.tableName
|
||||
this.table_name = this.$route.params.tableName
|
||||
this.$nextTick(() => {
|
||||
this.init()
|
||||
get(this.tableName).then(data => {
|
||||
get(this.table_name).then(data => { // 获取作者等信息
|
||||
this.form = data
|
||||
this.form.cover = this.form.cover.toString()
|
||||
})
|
||||
@@ -249,7 +252,7 @@ export default {
|
||||
methods: {
|
||||
beforeInit() {
|
||||
this.url = 'api/generator/columns'
|
||||
const tableName = this.tableName
|
||||
const tableName = this.table_name
|
||||
this.params = { tableName }
|
||||
return true
|
||||
},
|
||||
@@ -281,7 +284,7 @@ export default {
|
||||
},
|
||||
sync() {
|
||||
this.syncLoading = true
|
||||
sync([this.tableName]).then(() => {
|
||||
sync([this.table_name]).then(() => {
|
||||
this.init()
|
||||
this.notify('同步成功', 'success')
|
||||
this.syncLoading = false
|
||||
@@ -294,7 +297,7 @@ export default {
|
||||
save(this.data).then(res => {
|
||||
this.notify('保存成功', 'success')
|
||||
// 生成代码
|
||||
generator(this.tableName, 0).then(data => {
|
||||
generator(this.table_name, 0).then(data => {
|
||||
this.genLoading = false
|
||||
this.notify('生成成功', 'success')
|
||||
}).catch(err => {
|
||||
@@ -311,15 +314,15 @@ export default {
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss">
|
||||
.edit-input {
|
||||
.el-input__inner {
|
||||
border: 1px solid #e5e6e7;
|
||||
}
|
||||
.edit-input {
|
||||
.el-input__inner {
|
||||
border: 1px solid #e5e6e7;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .input-with-select .el-input-group__prepend {
|
||||
background-color: #fff;
|
||||
}
|
||||
::v-deep .input-with-select .el-input-group__prepend {
|
||||
background-color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -23,29 +23,29 @@
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column show-overflow-tooltip prop="tableName" label="表名" />
|
||||
<el-table-column show-overflow-tooltip prop="table_name" label="表名" />
|
||||
<el-table-column show-overflow-tooltip prop="engine" label="数据库引擎" />
|
||||
<el-table-column show-overflow-tooltip prop="coding" label="字符编码集" />
|
||||
<el-table-column show-overflow-tooltip prop="remark" label="备注" />
|
||||
<el-table-column prop="createTime" label="创建日期">
|
||||
<el-table-column prop="create_time" label="创建日期">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="160px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" style="margin-right: 2px" type="text">
|
||||
<router-link :to="'/sys-tools/generator/preview/' + scope.row.tableName">
|
||||
<router-link :to="'/sys-tools/generator/preview/' + scope.row.table_name">
|
||||
预览
|
||||
</router-link>
|
||||
</el-button>
|
||||
<el-button size="mini" style="margin-left: -1px;margin-right: 2px" type="text" @click="toDownload(scope.row.tableName)">下载</el-button>
|
||||
<el-button size="mini" style="margin-left: -1px;margin-right: 2px" type="text" @click="toDownload(scope.row.table_name)">下载</el-button>
|
||||
<el-button size="mini" style="margin-left: -1px;margin-right: 2px" type="text">
|
||||
<router-link :to="'/sys-tools/generator/config/' + scope.row.tableName">
|
||||
<router-link :to="'/sys-tools/generator/config/' + scope.row.table_name">
|
||||
配置
|
||||
</router-link>
|
||||
</el-button>
|
||||
<el-button type="text" style="margin-left: -1px" size="mini" @click="toGen(scope.row.tableName)">生成</el-button>
|
||||
<el-button type="text" style="margin-left: -1px" size="mini" @click="toGen(scope.row.table_name)">生成</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -79,9 +79,9 @@ export default {
|
||||
this.crud.optShow = { add: false, edit: false, del: false, download: false }
|
||||
},
|
||||
methods: {
|
||||
toGen(tableName) {
|
||||
toGen(table_name) {
|
||||
// 生成代码
|
||||
generator(tableName, 0).then(data => {
|
||||
generator(table_name, 0).then(data => {
|
||||
this.$notify({
|
||||
title: '生成成功',
|
||||
type: 'success',
|
||||
@@ -89,16 +89,16 @@ export default {
|
||||
})
|
||||
})
|
||||
},
|
||||
toDownload(tableName) {
|
||||
toDownload(table_name) {
|
||||
// 打包下载
|
||||
generator(tableName, 2).then(data => {
|
||||
downloadFile(data, tableName, 'zip')
|
||||
generator(table_name, 2).then(data => {
|
||||
downloadFile(data, table_name, 'zip')
|
||||
})
|
||||
},
|
||||
sync() {
|
||||
const tables = []
|
||||
this.crud.selections.forEach(val => {
|
||||
tables.push(val.tableName)
|
||||
tables.push(val.table_name)
|
||||
})
|
||||
this.syncLoading = true
|
||||
sync(tables).then(() => {
|
||||
|
||||
@@ -31,18 +31,18 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="username" label="用户名" />
|
||||
<el-table-column prop="requestIp" label="IP" />
|
||||
<el-table-column prop="request_ip" label="IP" />
|
||||
<el-table-column show-overflow-tooltip prop="address" label="IP来源" />
|
||||
<el-table-column prop="description" label="描述" show-overflow-tooltip />
|
||||
<el-table-column prop="browser" label="浏览器" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="createTime" label="创建日期" min-width="100" show-overflow-tooltip>
|
||||
<el-table-column prop="create_time" label="创建日期" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="异常详情" width="100px">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click="info(scope.row.id)">查看详情</el-button>
|
||||
<el-button size="mini" type="text" @click="info(scope.row.log_id)">查看详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -83,9 +83,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
// 获取异常详情
|
||||
info(id) {
|
||||
info(log_id) {
|
||||
this.dialog = true
|
||||
getErrDetail(id).then(res => {
|
||||
getErrDetail(log_id).then(res => {
|
||||
this.errorInfo = res.exception
|
||||
})
|
||||
},
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="username" label="用户名" />
|
||||
<el-table-column prop="requestIp" label="IP" />
|
||||
<el-table-column prop="request_ip" label="IP" />
|
||||
<el-table-column show-overflow-tooltip prop="address" label="IP来源" />
|
||||
<el-table-column prop="description" label="描述" show-overflow-tooltip />
|
||||
<el-table-column prop="browser" label="浏览器" min-width="120" show-overflow-tooltip />
|
||||
@@ -42,9 +42,9 @@
|
||||
<el-tag v-else type="danger">{{ scope.row.time }}ms</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" width="180px">
|
||||
<el-table-column prop="create_time" label="创建日期" width="180px">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="排序">
|
||||
<el-input-number
|
||||
v-model.number="form.orderSort"
|
||||
v-model.number="form.order_sort"
|
||||
:min="0"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
@@ -26,7 +26,7 @@
|
||||
<el-input v-model="form.remark" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否启用">
|
||||
<el-switch v-model="form.isUsed" active-value="1" inactive-value="0" />
|
||||
<el-switch v-model="form.is_used" active-value="1" inactive-value="0" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@@ -37,19 +37,19 @@
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column v-if="false" prop="permissionId" label="permissionId" :min-width="flexWidth('permissionId',crud.data,'permissionId')" />
|
||||
<el-table-column v-if="false" prop="permission_id" label="permission_id" :min-width="flexWidth('permission_id',crud.data,'permission_id')" />
|
||||
<el-table-column prop="code" label="编码" :min-width="flexWidth('code',crud.data,'编码')" />
|
||||
<el-table-column prop="name" label="名称" :min-width="flexWidth('name',crud.data,'名称')" />
|
||||
<el-table-column prop="orderSort" label="排序" :min-width="flexWidth('orderSort',crud.data,'排序')" />
|
||||
<el-table-column prop="order_sort" label="排序" :min-width="flexWidth('order_sort',crud.data,'排序')" />
|
||||
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
|
||||
<el-table-column prop="createName" label="创建人" :min-width="flexWidth('createName',crud.data,'创建人')" />
|
||||
<el-table-column prop="isUsed" label="是否启用" :min-width="flexWidth('isUsed',crud.data,'是否启用')" >
|
||||
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
|
||||
<el-table-column prop="is_used" label="是否启用" :min-width="flexWidth('is_used',crud.data,'是否启用')" >
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.isUsed==1?'是':'否' }}
|
||||
{{ scope.row.is_used==1?'是':'否' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createName" label="创建人" :min-width="flexWidth('createName',crud.data,'创建人')" />
|
||||
<el-table-column prop="updateTime" label="修改时间" :min-width="flexWidth('updateTime',crud.data,'修改时间')" />
|
||||
<el-table-column prop="update_name" label="更新人" :min-width="flexWidth('update_name',crud.data,'创建人')" />
|
||||
<el-table-column prop="update_time" label="修改时间" :min-width="flexWidth('update_time',crud.data,'修改时间')" />
|
||||
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<udOperation
|
||||
@@ -73,13 +73,13 @@ import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
|
||||
const defaultForm = { permissionId: null, code: null, name: null, orderSort: '1', remark: null, createName: null, isUsed: '1', createId: null, createTime: null, updateTime: null, updateId: null, updateName: null }
|
||||
const defaultForm = { permission_id: null, code: null, name: null, order_sort: '1', remark: null, createName: null, is_used: '1', createId: null, createTime: null, updateTime: null, updateId: null, updateName: null }
|
||||
export default {
|
||||
name: 'DataPermission',
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({ title: '数据权限', url: 'api/dataPermission', idField: 'permissionId', sort: 'order_sort,asc', crudMethod: { ...crudDataPermission }})
|
||||
return CRUD({ title: '数据权限', url: 'api/dataPermission', idField: 'permission_id', sort: 'order_sort,asc', crudMethod: { ...crudDataPermission }})
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
/>
|
||||
<el-select
|
||||
v-model="query.isUsed"
|
||||
v-model="query.is_used"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="状态"
|
||||
@@ -38,22 +38,22 @@
|
||||
>
|
||||
<el-form ref="form" inline :model="form" :rules="rules" size="mini" label-width="80px">
|
||||
<el-form-item label="部门编码" prop="code">
|
||||
<el-input v-model="form.code" :disabled="true" style="width: 370px;" />
|
||||
<el-input v-model="form.code" :disabled="crud.status.edit" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="name">
|
||||
<el-input v-model="form.name" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门排序" prop="deptSort">
|
||||
<el-form-item label="部门排序" prop="dept_sort">
|
||||
<el-input-number
|
||||
v-model.number="form.deptSort"
|
||||
v-model.number="form.dept_sort"
|
||||
:min="0"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
style="width: 370px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="外部标识" prop="extId">
|
||||
<el-input v-model="form.extId" style="width: 370px;" />
|
||||
<el-form-item label="外部标识" prop="ext_id">
|
||||
<el-input v-model="form.ext_id" style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="顶级部门">
|
||||
<el-radio-group v-model="form.isTop" style="width: 140px">
|
||||
@@ -61,9 +61,9 @@
|
||||
<el-radio label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="isUesd">
|
||||
<el-form-item label="状态" prop="is_used">
|
||||
<el-switch
|
||||
v-model="form.isUsed"
|
||||
v-model="form.is_used"
|
||||
active-color="#409EFF"
|
||||
inactive-color="#F56C6C"
|
||||
active-value = 'true'
|
||||
@@ -90,11 +90,12 @@
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="crud.loading"
|
||||
:default-sort = "{prop: 'dept_sort', order: 'ascending'}"
|
||||
lazy
|
||||
:load="getDeptDatas"
|
||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
||||
:tree-props="{children: 'children', hasChildren: 'has_children'}"
|
||||
:data="crud.data"
|
||||
row-key="deptId"
|
||||
row-key="dept_id"
|
||||
@select="crud.selectChange"
|
||||
@select-all="crud.selectAllChange"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
@@ -102,19 +103,19 @@
|
||||
<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="deptSort" />
|
||||
<el-table-column label="状态" align="center" prop="isUsed">
|
||||
<el-table-column label="排序" prop="dept_sort" />
|
||||
<el-table-column label="状态" align="center" prop="is_used">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.isUsed"
|
||||
v-model="scope.row.is_used"
|
||||
:disabled="scope.row.id === 1"
|
||||
active-color="#409EFF"
|
||||
inactive-color="#F56C6C"
|
||||
@change="changeEnabled(scope.row, scope.row.isUsed,)"
|
||||
@change="changeEnabled(scope.row, scope.row.is_used)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" />
|
||||
<el-table-column prop="create_time" label="创建日期" />
|
||||
<el-table-column
|
||||
v-permission="['admin','dept:edit','dept:del']"
|
||||
label="操作"
|
||||
@@ -136,7 +137,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudDept from '@/views/system/dept/dept'
|
||||
import crudDept from './dept'
|
||||
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
@@ -150,15 +151,15 @@ const defaultForm = {
|
||||
isTop: '1',
|
||||
sub_count: 0,
|
||||
pid: null,
|
||||
deptSort: 999,
|
||||
isUsed: true,
|
||||
extId: null
|
||||
dept_sort: 999,
|
||||
is_used: true,
|
||||
ext_id: null
|
||||
}
|
||||
export default {
|
||||
name: 'Dept',
|
||||
components: { Treeselect, crudOperation, rrOperation, udOperation },
|
||||
cruds() {
|
||||
return CRUD({ title: '部门', idField: 'deptId', url: 'api/dept/vo', crudMethod: { ...crudDept }})
|
||||
return CRUD({ title: '部门', idField: 'dept_id', url: 'api/dept/vo', crudMethod: { ...crudDept }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
// 设置数据字典
|
||||
@@ -170,7 +171,7 @@ export default {
|
||||
name: [
|
||||
{ required: true, message: '请输入名称', trigger: 'blur' }
|
||||
],
|
||||
deptSort: [
|
||||
dept_sort: [
|
||||
{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }
|
||||
]
|
||||
},
|
||||
@@ -187,7 +188,7 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
getDeptDatas(tree, treeNode, resolve) {
|
||||
const params = { pid: tree.deptId }
|
||||
const params = { pid: tree.dept_id }
|
||||
setTimeout(() => {
|
||||
crudDept.getDeptvo(params).then(res => {
|
||||
resolve(res.content)
|
||||
@@ -201,7 +202,7 @@ export default {
|
||||
} else {
|
||||
form.isTop = '1'
|
||||
}
|
||||
form.isUsed = `${form.isUsed}`
|
||||
form.is_used = `${form.is_used}`
|
||||
if (form.pid != null) {
|
||||
this.getSupDepts(form.pid)
|
||||
} else {
|
||||
@@ -220,15 +221,15 @@ export default {
|
||||
if (data.children) {
|
||||
this.buildDepts(data.children)
|
||||
}
|
||||
if (data.hasChildren && !data.children) {
|
||||
if (data.has_children && !data.children) {
|
||||
data.children = null
|
||||
}
|
||||
})
|
||||
},
|
||||
getDepts() {
|
||||
crudDept.getDeptvo({ isUsed: true }).then(res => {
|
||||
crudDept.getDeptvo({ is_used: true }).then(res => {
|
||||
this.depts = res.content.map(function(obj) {
|
||||
if (obj.hasChildren) {
|
||||
if (obj.has_children) {
|
||||
obj.children = null
|
||||
}
|
||||
return obj
|
||||
@@ -238,7 +239,7 @@ export default {
|
||||
// 获取弹窗内部门数据
|
||||
loadDepts({ action, parentNode, callback }) {
|
||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
||||
crudDept.getDeptvo({ isUsed: true, pid: parentNode.deptId }).then(res => {
|
||||
crudDept.getDeptvo({ is_used: true, pid: parentNode.dept_id }).then(res => {
|
||||
parentNode.children = res.content.map(function(obj) {
|
||||
obj.children = null
|
||||
return obj
|
||||
@@ -265,8 +266,8 @@ export default {
|
||||
},
|
||||
// 改变状态
|
||||
changeEnabled(data, val) {
|
||||
const satus = this.enabledTypeOptions.find(item => { return item.key == data.isUsed })
|
||||
|
||||
const satus = this.enabledTypeOptions.find(item => { return item.key == data.is_used })
|
||||
debugger
|
||||
this.$confirm('此操作将 "' + satus.display_name + '" ' + data.name + '部门, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
@@ -276,7 +277,7 @@ export default {
|
||||
this.crud.notify(satus.display_name + '成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
})
|
||||
}).catch(() => {
|
||||
data.isUsed = !data.isUsed
|
||||
data.is_used = !data.is_used
|
||||
})
|
||||
},
|
||||
checkboxT(row, rowIndex) {
|
||||
@@ -284,7 +285,7 @@ export default {
|
||||
},
|
||||
normalizer(node) {
|
||||
return {
|
||||
id: node.deptId,
|
||||
id: node.dept_id,
|
||||
label: node.name,
|
||||
children: node.children
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="dict_sort">
|
||||
<el-input-number
|
||||
v-model.number="form.dictSort"
|
||||
v-model.number="form.dict_sort"
|
||||
:min="0"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
@@ -74,7 +74,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="label" label="字典标签" align="center" width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="value" label="字典值" align="center" width="60" />
|
||||
<el-table-column prop="dictSort" label="排序" align="center" width="65" />
|
||||
<el-table-column prop="dict_sort" label="排序" align="center" width="65" />
|
||||
<el-table-column prop="para1" label="参数1" align="center" width="65" />
|
||||
<el-table-column prop="para2" label="参数2" align="center" width="65" />
|
||||
<el-table-column prop="para3" label="参数3" align="center" width="65" />
|
||||
@@ -106,7 +106,7 @@ import pagination from '@crud/Pagination'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
|
||||
const defaultForm = { dictId: null, name: null, label: null, value: null, dictSort: null, dictType: null, para1: null, para2: null, para3: null, createId: null, createName: null, createTime: null, updateId: null, updateName: null, updateTime: null }
|
||||
const defaultForm = { dict_id: null, name: null, label: null, value: null, dict_sort: null, dictType: null, para1: null, para2: null, para3: null, createId: null, createName: null, createTime: null, updateId: null, updateName: null, updateTime: null }
|
||||
|
||||
export default {
|
||||
components: { pagination, rrOperation, udOperation },
|
||||
@@ -116,8 +116,8 @@ export default {
|
||||
title: '字典详情',
|
||||
url: 'api/dict/dictDetail',
|
||||
query: { code: '' },
|
||||
idField: 'dictId',
|
||||
sort: ['dictSort,asc', 'dictId,desc'],
|
||||
idField: 'dict_id',
|
||||
sort: ['dict_sort,asc', 'dict_id,desc'],
|
||||
crudMethod: { ...crudDictDetail },
|
||||
optShow: {
|
||||
add: true,
|
||||
@@ -133,11 +133,11 @@ export default {
|
||||
presenter(),
|
||||
header(),
|
||||
form(function() {
|
||||
return Object.assign({ dict: { dictId: this.dictId }}, defaultForm)
|
||||
return Object.assign({ dict: { dict_id: this.dict_id }}, defaultForm)
|
||||
})],
|
||||
data() {
|
||||
return {
|
||||
dictId: null,
|
||||
dict_id: null,
|
||||
rules: {
|
||||
label: [
|
||||
{ required: true, message: '请输入字典标签', trigger: 'blur' }
|
||||
@@ -145,7 +145,7 @@ export default {
|
||||
value: [
|
||||
{ required: true, message: '请输入字典值', trigger: 'blur' }
|
||||
],
|
||||
dictSort: [
|
||||
dict_sort: [
|
||||
{ required: true, message: '请输入序号', trigger: 'blur', type: 'number' }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!--表单组件-->
|
||||
<el-dialog append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" :title="crud.status.title" width="500px">
|
||||
<el-dialog
|
||||
append-to-body
|
||||
:close-on-click-modal="false"
|
||||
:before-close="crud.cancelCU"
|
||||
:visible="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
width="500px"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
|
||||
<el-form-item label="字典编码" prop="code">
|
||||
<el-input v-model="form.code" style="width: 370px;" />
|
||||
@@ -23,7 +30,15 @@
|
||||
<div class="head-container">
|
||||
<div v-if="crud.props.searchToggle">
|
||||
<!-- 搜索 -->
|
||||
<el-input v-model="query.blurry" clearable size="mini" placeholder="输入名称或者描述搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
|
||||
<el-input
|
||||
v-model="query.blurry"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="输入名称或者描述搜索"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
/>
|
||||
<rrOperation />
|
||||
</div>
|
||||
<crudOperation :permission="permission" />
|
||||
@@ -36,11 +51,18 @@
|
||||
highlight-current-row
|
||||
style="width: 100%;"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
@current-change="handleCurrentChange">
|
||||
@current-change="handleCurrentChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column show-overflow-tooltip prop="code" label="编码" />
|
||||
<el-table-column show-overflow-tooltip prop="name" label="名称" />
|
||||
<el-table-column v-permission="['admin','dict:edit','dict:del']" label="操作" width="130px" align="center" fixed="right">
|
||||
<el-table-column
|
||||
v-permission="['admin','dict:edit','dict:del']"
|
||||
label="操作"
|
||||
width="130px"
|
||||
align="center"
|
||||
fixed="right"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<udOperation
|
||||
:data="scope.row"
|
||||
@@ -66,7 +88,8 @@
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="$refs.dictDetail && $refs.dictDetail.crud.toAdd()"
|
||||
>新增</el-button>
|
||||
>新增
|
||||
</el-button>
|
||||
</div>
|
||||
<dictDetail ref="dictDetail" :permission="permission" />
|
||||
</el-card>
|
||||
@@ -86,14 +109,25 @@ import pagination from '@crud/Pagination'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
|
||||
const defaultForm = { dictId: null, code: null, name: null, label: null, value: null, dictSort: 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,
|
||||
code: null,
|
||||
name: null,
|
||||
label: null,
|
||||
value: null,
|
||||
dict_sort: null,
|
||||
dict_type: null,
|
||||
para1: null,
|
||||
para2: null,
|
||||
para3: null
|
||||
}
|
||||
|
||||
export default {
|
||||
name: 'Dict',
|
||||
components: { crudOperation, pagination, rrOperation, udOperation, dictDetail },
|
||||
cruds() {
|
||||
return [
|
||||
CRUD({ title: '字典', url: 'api/dict', idField: 'dictId', crudMethod: { ...crudDict }})
|
||||
CRUD({ title: '字典', url: 'api/dict', idField: 'dict_id', crudMethod: { ...crudDict }})
|
||||
]
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm)],
|
||||
|
||||
@@ -67,10 +67,10 @@
|
||||
<el-radio-button label="0">否</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="菜单可见" 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="1">是</el-radio-button>
|
||||
<el-radio-button label="0">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.type.toString() !== '2'" label="菜单标题" prop="title">
|
||||
@@ -89,9 +89,9 @@
|
||||
<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>
|
||||
<el-form-item label="菜单排序" prop="menuSort">
|
||||
<el-form-item label="菜单排序" prop="menu_sort">
|
||||
<el-input-number
|
||||
v-model.number="form.menuSort"
|
||||
v-model.number="form.menu_sort"
|
||||
:min="0"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
@@ -130,7 +130,7 @@
|
||||
:auto-load-root-options="false"
|
||||
:data="crud.data"
|
||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
||||
row-key="menuId"
|
||||
row-key="menu_id"
|
||||
|
||||
@select="crud.selectChange"
|
||||
@select-all="crud.selectAllChange"
|
||||
@@ -144,9 +144,9 @@
|
||||
<svg-icon :icon-class="scope.row.icon ? scope.row.icon : ''" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="menuSort" align="center" label="排序" :min-width="flexWidth('menuSort',crud.data,'排序')">
|
||||
<el-table-column prop="menu_sort" align="center" label="排序" :min-width="flexWidth('menu_sort',crud.data,'排序')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.menuSort }}
|
||||
{{ scope.row.menu_sort }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="permission" label="权限标识" :min-width="flexWidth('permission',crud.data,'权限标识')" />
|
||||
@@ -176,7 +176,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudMenu from '@/views/system/menu/menu'
|
||||
import crudMenu from '../menu'
|
||||
import IconSelect from '@/components/IconSelect'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
@@ -188,9 +188,9 @@ import udOperation from '@crud/UD.operation'
|
||||
|
||||
// crud交由presenter持有
|
||||
const defaultForm = {
|
||||
menuId: null,
|
||||
menu_id: null,
|
||||
title: null,
|
||||
menuSort: 999,
|
||||
menu_sort: 999,
|
||||
path: null,
|
||||
system_type: null,
|
||||
category: null,
|
||||
@@ -209,7 +209,7 @@ export default {
|
||||
name: 'Menu',
|
||||
components: { Treeselect, IconSelect, crudOperation, rrOperation, udOperation },
|
||||
cruds() {
|
||||
return CRUD({ title: '菜单', idField: 'menuId', url: 'api/sysMenu', crudMethod: { ...crudMenu }})
|
||||
return CRUD({ title: '菜单', idField: 'menu_id', url: 'api/sysMenu', crudMethod: { ...crudMenu }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
@@ -222,7 +222,7 @@ export default {
|
||||
},
|
||||
normalizer(node) {
|
||||
return {
|
||||
id: node.menuId,
|
||||
id: node.menu_id,
|
||||
label: node.title,
|
||||
children: node.children
|
||||
}
|
||||
@@ -241,37 +241,37 @@ export default {
|
||||
// 新增与编辑前做的操作
|
||||
[CRUD.HOOK.afterToCU](crud, form) {
|
||||
this.menus = []
|
||||
if (form.menuId) { // 修改
|
||||
if (form.menu_id) { // 修改
|
||||
if (!form.pid) { // 一级菜单,一级的父级菜单的pid为0.
|
||||
form.pid = 0
|
||||
}
|
||||
this.getSupDepts(form.menuId)
|
||||
this.getSupDepts(form.menu_id)
|
||||
} else { // 新增
|
||||
this.menus.push({ menuId: 0, title: '顶级类目', children: null })
|
||||
this.menus.push({ menu_id: 0, title: '顶级类目', children: null })
|
||||
}
|
||||
},
|
||||
getMenus(tree, treeNode, resolve) {
|
||||
const params = { pid: tree.menuId }
|
||||
const params = { pid: tree.menu_id }
|
||||
setTimeout(() => {
|
||||
crudMenu.getMenus(params).then(res => {
|
||||
resolve(res.content)
|
||||
})
|
||||
}, 100)
|
||||
},
|
||||
getSupDepts(menuId) {
|
||||
crudMenu.getMenuSuperior(menuId).then(res => {
|
||||
getSupDepts(menu_id) {
|
||||
crudMenu.getMenuSuperior(menu_id).then(res => {
|
||||
const children = res.map(function(obj) {
|
||||
if (!obj.leaf && !obj.children) {
|
||||
obj.children = null
|
||||
}
|
||||
return obj
|
||||
})
|
||||
this.menus = [{ menuId: 0, title: '顶级类目', children: children }]
|
||||
this.menus = [{ menu_id: 0, title: '顶级类目', children: children }]
|
||||
})
|
||||
},
|
||||
loadMenus({ action, parentNode, callback }) {
|
||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
||||
crudMenu.getMenusTree(parentNode.menuId).then(res => {
|
||||
crudMenu.getMenusTree(parentNode.menu_id).then(res => {
|
||||
parentNode.children = res.map(function(obj) {
|
||||
if (!obj.leaf) {
|
||||
obj.children = null
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
@keyup.enter.native="queryBlurry"
|
||||
/>
|
||||
<el-select
|
||||
v-model="query.systemType"
|
||||
v-model="query.system_type"
|
||||
style="width: 100px; height: 35px;top: -5px;"
|
||||
placeholder="所属系统"
|
||||
@change="changetype"
|
||||
@@ -75,14 +75,14 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-show="form.type.toString() === '3'" label="菜单缓存" 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">是</el-radio-button>
|
||||
<el-radio-button label="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="菜单可见" 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">是</el-radio-button>
|
||||
<el-radio-button label="true">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="form.type.toString() !== '2'" label="菜单标题" prop="title">
|
||||
@@ -101,17 +101,17 @@
|
||||
<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>
|
||||
<el-form-item label="菜单排序" prop="menuSort">
|
||||
<el-form-item label="菜单排序" prop="menu_sort">
|
||||
<el-input-number
|
||||
v-model.number="form.menuSort"
|
||||
v-model.number="form.menu_sort"
|
||||
:min="0"
|
||||
:max="999"
|
||||
controls-position="right"
|
||||
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="组件名称" prop="component_name">
|
||||
<el-input v-model="form.component_name" style="width: 190px;" placeholder="匹配组件内Name字段" />
|
||||
</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="组件路径" />
|
||||
@@ -141,8 +141,8 @@
|
||||
:load="getMenus"
|
||||
:auto-load-root-options="false"
|
||||
:data="crud.data"
|
||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
|
||||
row-key="menuId"
|
||||
:tree-props="{children: 'children', hasChildren: 'has_children'}"
|
||||
row-key="menu_id"
|
||||
|
||||
@select="crud.selectChange"
|
||||
@select-all="crud.selectAllChange"
|
||||
@@ -150,9 +150,9 @@
|
||||
>
|
||||
<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="所属系统" prop="system_type" :min-width="flexWidth('system_type',crud.data,'所属系统')">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.system_type[scope.row.systemType] }} : {{scope.row.systemType}}
|
||||
{{ dict.label.system_type[scope.row.system_type] }} : {{scope.row.system_type}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="icon" label="图标" align="center" :min-width="flexWidth('icon',crud.data,'图标')">
|
||||
@@ -160,9 +160,9 @@
|
||||
<svg-icon :icon-class="scope.row.icon ? scope.row.icon : ''" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="menuSort" align="center" label="排序" :min-width="flexWidth('menuSort',crud.data,'排序')">
|
||||
<el-table-column prop="menu_sort" align="center" label="排序" :min-width="flexWidth('menu_sort',crud.data,'排序')">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.menuSort }}
|
||||
{{ scope.row.menu_sort }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="permission" label="权限标识" :min-width="flexWidth('permission',crud.data,'权限标识')" />
|
||||
@@ -185,7 +185,7 @@
|
||||
<span v-else>是</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="创建日期" :min-width="flexWidth('createTime',crud.data,'创建日期')" />
|
||||
<el-table-column prop="create_time" label="创建日期" :min-width="flexWidth('create_time',crud.data,'创建日期')" />
|
||||
<el-table-column
|
||||
v-permission="['admin','menu:edit','menu:del']"
|
||||
label="操作"
|
||||
@@ -206,7 +206,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudMenu from '@/views/system/menu/menu'
|
||||
import crudMenu from './menu'
|
||||
import IconSelect from '@/components/IconSelect'
|
||||
import Treeselect from '@riophae/vue-treeselect'
|
||||
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
|
||||
@@ -220,20 +220,20 @@ import Dict from '../../../components/Dict/Dict'
|
||||
|
||||
// crud交由presenter持有
|
||||
const defaultForm = {
|
||||
menuId: null,
|
||||
menu_id: null,
|
||||
title: null,
|
||||
menuSort: 999,
|
||||
menu_sort: 999,
|
||||
path: null,
|
||||
systemType: null,
|
||||
system_type: null,
|
||||
category: null,
|
||||
component: null,
|
||||
componentName: null,
|
||||
component_name: null,
|
||||
iframe: false,
|
||||
roles: [],
|
||||
pid: 0,
|
||||
icon: null,
|
||||
cache: 0,
|
||||
hidden: 0,
|
||||
cache: false,
|
||||
hidden: false,
|
||||
type: 0,
|
||||
permission: null
|
||||
}
|
||||
@@ -241,7 +241,7 @@ export default {
|
||||
name: 'Menu',
|
||||
components: { Treeselect, IconSelect, crudOperation, rrOperation, udOperation, DateRangePicker },
|
||||
cruds() {
|
||||
return CRUD({ title: '菜单', idField: 'menuId', url: 'api/sysMenu', crudMethod: { ...crudMenu }})
|
||||
return CRUD({ title: '菜单', idField: 'menu_id', sort: 'menu_id,asc', url: 'api/sysMenu', crudMethod: { ...crudMenu }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
dicts: ['system_type'],
|
||||
@@ -268,7 +268,7 @@ export default {
|
||||
methods: {
|
||||
normalizer(node) {
|
||||
return {
|
||||
id: node.menuId,
|
||||
id: node.menu_id,
|
||||
label: node.title,
|
||||
children: node.children
|
||||
}
|
||||
@@ -280,7 +280,7 @@ export default {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
changetype() {
|
||||
const sysType = this.dict.dict.system_type[this.query.systemType]
|
||||
const sysType = this.dict.dict.system_type[this.query.system_type]
|
||||
this.query.pid = sysType.para1
|
||||
this.crud.toQuery()
|
||||
},
|
||||
@@ -292,15 +292,14 @@ export default {
|
||||
},
|
||||
// 新增与编辑前做的操作
|
||||
[CRUD.HOOK.afterToCU](crud, form) {
|
||||
console.log(this.dict)
|
||||
this.menus = []
|
||||
if (form.menuId) { // 修改
|
||||
if (form.menu_id) { // 修改
|
||||
if (!form.pid) { // 一级菜单,一级的父级菜单的pid为0.
|
||||
form.pid = 0
|
||||
}
|
||||
this.getSupMenus(form.menuId)
|
||||
this.getSupMenus(form.menu_id)
|
||||
} else { // 新增
|
||||
this.menus.push({ menuId: 0, title: '顶级类目', children: null })
|
||||
this.menus.push({ menu_id: 0, title: '顶级类目', children: null })
|
||||
}
|
||||
},
|
||||
[CRUD.HOOK.afterSubmit](crud, form) {
|
||||
@@ -322,27 +321,27 @@ export default {
|
||||
}
|
||||
},
|
||||
getMenus(tree, treeNode, resolve) {
|
||||
const params = { pid: tree.menuId, systemType: tree.systemType }
|
||||
const params = { pid: tree.menu_id, system_type: tree.system_type }
|
||||
setTimeout(() => {
|
||||
crudMenu.getMenus(params).then(res => {
|
||||
resolve(res.content)
|
||||
})
|
||||
}, 100)
|
||||
},
|
||||
getSupMenus(menuId) {
|
||||
crudMenu.getMenuSuperior(menuId).then(res => {
|
||||
getSupMenus(menu_id) {
|
||||
crudMenu.getMenuSuperior(menu_id).then(res => {
|
||||
const children = res.map(function(obj) {
|
||||
if (!obj.leaf && !obj.children) {
|
||||
obj.children = null
|
||||
}
|
||||
return obj
|
||||
})
|
||||
this.menus = [{ menuId: 0, title: '顶级类目', children: children }]
|
||||
this.menus = [{ menu_id: 0, title: '顶级类目', children: children }]
|
||||
})
|
||||
},
|
||||
loadMenus({ action, parentNode, callback }) {
|
||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
||||
crudMenu.getMenusTree(parentNode.menuId).then(res => {
|
||||
crudMenu.getMenusTree(parentNode.menu_id).then(res => {
|
||||
parentNode.children = res.map(function(obj) {
|
||||
if (!obj.leaf) {
|
||||
obj.children = null
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
<!--工具栏-->
|
||||
<div class="head-container">
|
||||
<div v-if="crud.props.searchToggle">
|
||||
<!-- 搜索 -->
|
||||
<el-form
|
||||
:inline="true"
|
||||
class="demo-form-inline"
|
||||
@@ -14,10 +13,9 @@
|
||||
<el-form-item label="模糊查询">
|
||||
<el-input
|
||||
v-model="query.code"
|
||||
size="mini"
|
||||
clearable
|
||||
placeholder="编码、名称"
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
style="width: 240px"
|
||||
placeholder="编码/名称"
|
||||
/>
|
||||
</el-form-item>
|
||||
<rrOperation />
|
||||
@@ -63,11 +61,11 @@
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column v-if="false" prop="id" label="id" />
|
||||
<el-table-column prop="code" label="编码" min-width="60" show-overflow-tooltip />
|
||||
<el-table-column prop="code" label="编码" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="name" label="名称" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="value" label="值" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="150px" align="center">
|
||||
<el-table-column prop="value" label="值" min-width="270" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" />
|
||||
<el-table-column v-permission="['admin','param:edit','param:del']" label="操作" width="150px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<udOperation
|
||||
:data="scope.row"
|
||||
@@ -96,11 +94,7 @@ const defaultForm = {
|
||||
name: null,
|
||||
value: null,
|
||||
remark: null,
|
||||
isActive: 1,
|
||||
createName: null,
|
||||
createTime: null,
|
||||
updateOptname: null,
|
||||
updateTime: null
|
||||
is_active: true
|
||||
}
|
||||
export default {
|
||||
name: 'Param',
|
||||
@@ -120,6 +114,9 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
permission: {
|
||||
add: ['admin', 'param:add'],
|
||||
edit: ['admin', 'param:edit'],
|
||||
del: ['admin', 'param:del']
|
||||
},
|
||||
|
||||
rules: {
|
||||
@@ -142,7 +139,7 @@ export default {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.webSocket()
|
||||
// this.webSocket()
|
||||
},
|
||||
methods: {
|
||||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||||
|
||||
@@ -9,36 +9,36 @@
|
||||
<div class="el-table el-table--enable-row-hover el-table--medium">
|
||||
<table cellspacing="0" style="width: 100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><div class="cell">Redis版本:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.redis_version }}</div></td>
|
||||
<td><div class="cell">运行模式:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.redis_mode == "standalone" ? "单机" : "集群" }}</div></td>
|
||||
<td><div class="cell">端口:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.tcp_port }}</div></td>
|
||||
<td><div class="cell">客户端数:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.connected_clients }}</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="cell">运行时间(天):</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.uptime_in_days }}</div></td>
|
||||
<td><div class="cell">使用内存:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.used_memory_human }}</div></td>
|
||||
<td><div class="cell">使用CPU:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ parseFloat(cache.info.used_cpu_user_children).toFixed(2) }}</div></td>
|
||||
<td><div class="cell">内存配置:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.maxmemory_human }}</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="cell">AOF是否开启:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.aof_enabled === "0" ? "否" : "是" }}</div></td>
|
||||
<td><div class="cell">RDB是否成功:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.rdb_last_bgsave_status }}</div></td>
|
||||
<td><div class="cell">Key数量:</div></td>
|
||||
<td><div v-if="cache.dbSize" class="cell">{{ cache.dbSize }} </div></td>
|
||||
<td><div class="cell">网络入口/出口:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.instantaneous_input_kbps }}kps/{{ cache.info.instantaneous_output_kbps }}kps</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="cell">Redis版本:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.redis_version }}</div></td>
|
||||
<td><div class="cell">运行模式:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.redis_mode == "standalone" ? "单机" : "集群" }}</div></td>
|
||||
<td><div class="cell">端口:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.tcp_port }}</div></td>
|
||||
<td><div class="cell">客户端数:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.connected_clients }}</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="cell">运行时间(天):</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.uptime_in_days }}</div></td>
|
||||
<td><div class="cell">使用内存:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.used_memory_human }}</div></td>
|
||||
<td><div class="cell">使用CPU:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ parseFloat(cache.info.used_cpu_user_children).toFixed(2) }}</div></td>
|
||||
<td><div class="cell">内存配置:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.maxmemory_human }}</div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="cell">AOF是否开启:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.aof_enabled === "0" ? "否" : "是" }}</div></td>
|
||||
<td><div class="cell">RDB是否成功:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.rdb_last_bgsave_status }}</div></td>
|
||||
<td><div class="cell">Key数量:</div></td>
|
||||
<td><div v-if="cache.dbSize" class="cell">{{ cache.dbSize }} </div></td>
|
||||
<td><div class="cell">网络入口/出口:</div></td>
|
||||
<td><div v-if="cache.info" class="cell">{{ cache.info.instantaneous_input_kbps }}kps/{{ cache.info.instantaneous_output_kbps }}kps</div></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -194,7 +194,7 @@ export default {
|
||||
})
|
||||
// 查询 Redis Key 模板列表
|
||||
getKeyDefineList().then(res => {
|
||||
// console.log(res)
|
||||
console.log(res)
|
||||
this.keyDefineList = res.info
|
||||
this.keyDefineListLoad = false
|
||||
})
|
||||
|
||||
@@ -58,9 +58,9 @@
|
||||
<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 show-overflow-tooltip width="135px" prop="create_time" label="创建日期">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -112,7 +112,7 @@
|
||||
check-strictly
|
||||
accordion
|
||||
show-checkbox
|
||||
node-key="menuId"
|
||||
node-key="menu_id"
|
||||
@check="menuChange"
|
||||
/>
|
||||
</el-card>
|
||||
@@ -123,20 +123,20 @@
|
||||
|
||||
<script>
|
||||
import crudRoles from './role'
|
||||
import crudMenu from '@/views/system/menu'
|
||||
import { getChild, getMenusTree } from '@/views/system/menu/menu'
|
||||
import crudMenu from '../menu/menu'
|
||||
import { getChild, getMenusTree } from '../menu/menu'
|
||||
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'
|
||||
|
||||
const defaultForm = { roleId: null, name: null, remark: null }
|
||||
const defaultForm = { role_id: null, name: null, remark: null }
|
||||
export default {
|
||||
name: 'Role',
|
||||
components: { pagination, crudOperation, rrOperation, udOperation, crudMenu },
|
||||
cruds() {
|
||||
return CRUD({ idField: 'roleId', title: '角色', url: 'api/sysRole', crudMethod: { ...crudRoles } })
|
||||
return CRUD({ idField: 'role_id', title: '角色', url: 'api/sysRole', crudMethod: { ...crudRoles } })
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
@@ -164,7 +164,7 @@ export default {
|
||||
methods: {
|
||||
getMenuDatas(node, resolve) {
|
||||
setTimeout(() => {
|
||||
getMenusTree(node.data.menuId ? node.data.menuId : 0).then(res => {
|
||||
getMenusTree(node.data.menu_id ? node.data.menu_id : 0).then(res => {
|
||||
resolve(res)
|
||||
})
|
||||
}, 100)
|
||||
@@ -203,7 +203,7 @@ export default {
|
||||
// 清空菜单的选中
|
||||
this.$refs.menu.setCheckedKeys([])
|
||||
// 保存当前的角色id
|
||||
this.currentId = val.roleId
|
||||
this.currentId = val.role_id
|
||||
// 初始化默认选中的key
|
||||
this.menuIds = []
|
||||
val.menus.forEach(function(data) {
|
||||
@@ -214,9 +214,9 @@ export default {
|
||||
},
|
||||
menuChange(menu) {
|
||||
// 获取该节点的所有子节点,id 包含自身
|
||||
getChild(menu.menuId).then(childIds => {
|
||||
getChild(menu.menu_id).then(childIds => {
|
||||
// 判断是否在 menuIds 中,如果存在则删除,否则添加
|
||||
if (this.menuIds.indexOf(menu.menuId) !== -1) {
|
||||
if (this.menuIds.indexOf(menu.menu_id) !== -1) {
|
||||
for (let i = 0; i < childIds.length; i++) {
|
||||
const index = this.menuIds.indexOf(childIds[i])
|
||||
if (index !== -1) {
|
||||
@@ -237,7 +237,7 @@ export default {
|
||||
// 保存菜单
|
||||
saveMenu() {
|
||||
this.menuLoading = true
|
||||
const role = { roleId: this.currentId, menus: [] }
|
||||
const role = { role_id: this.currentId, menus: [] }
|
||||
// 得到已选中的 key 值
|
||||
this.menuIds.forEach(function(menuId) {
|
||||
const menu = { menuId: menuId }
|
||||
@@ -258,7 +258,7 @@ export default {
|
||||
// 无刷新更新 表格数据
|
||||
crudRoles.get(this.currentId).then(res => {
|
||||
for (let i = 0; i < this.crud.data.length; i++) {
|
||||
if (res.menuId === this.crud.data[i].menuId) {
|
||||
if (res.menu_id === this.crud.data[i].menu_id) {
|
||||
this.crud.data[i] = res
|
||||
break
|
||||
}
|
||||
|
||||
@@ -4,7 +4,15 @@
|
||||
<div class="head-container">
|
||||
<div v-if="crud.props.searchToggle">
|
||||
<!-- 搜索 -->
|
||||
<el-input v-model="query.jobName" 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="输入任务名称搜索"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
@keyup.enter.native="toQuery"
|
||||
/>
|
||||
<rrOperation />
|
||||
</div>
|
||||
<crudOperation :permission="permission">
|
||||
@@ -16,28 +24,36 @@
|
||||
type="info"
|
||||
icon="el-icon-tickets"
|
||||
@click="doLog"
|
||||
>日志</el-button>
|
||||
>日志
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<Log ref="log" />
|
||||
</div>
|
||||
<!--Form表单-->
|
||||
<el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" append-to-body width="730px">
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:before-close="crud.cancelCU"
|
||||
:visible.sync="crud.status.cu > 0"
|
||||
:title="crud.status.title"
|
||||
append-to-body
|
||||
width="730px"
|
||||
>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="mini" label-width="100px">
|
||||
<el-form-item label="任务名称" prop="jobName">
|
||||
<el-input v-model="form.jobName" style="width: 220px;" />
|
||||
<el-form-item label="任务名称" prop="job_name">
|
||||
<el-input v-model="form.job_name" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务描述" prop="description">
|
||||
<el-input v-model="form.description" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Bean名称" prop="beanName">
|
||||
<el-input v-model="form.beanName" style="width: 220px;" />
|
||||
<el-form-item label="Bean名称" prop="bean_name">
|
||||
<el-input v-model="form.bean_name" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="执行方法" prop="methodName">
|
||||
<el-input v-model="form.methodName" style="width: 220px;" />
|
||||
<el-form-item label="执行方法" prop="method_name">
|
||||
<el-input v-model="form.method_name" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Cron表达式" prop="cronExpression">
|
||||
<!-- <el-input v-model="form.cronExpression" style="width: 220px;" />-->
|
||||
<el-input v-model="form.cronExpression" placeholder="请输入CRON 表达式" style="width: 220px;">
|
||||
<el-form-item label="Cron表达式" prop="cron_expression">
|
||||
<!-- <el-input v-model="form.cron_expression" style="width: 220px;" />-->
|
||||
<el-input v-model="form.cron_expression" placeholder="请输入CRON 表达式" style="width: 220px;">
|
||||
<template slot="append">
|
||||
<el-button type="primary" @click="handleShowCron">
|
||||
生成表达式
|
||||
@@ -47,22 +63,22 @@
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="子任务ID">
|
||||
<el-input v-model="form.subTask" placeholder="多个用逗号隔开,按顺序执行" style="width: 220px;" />
|
||||
<el-input v-model="form.sub_task" placeholder="多个用逗号隔开,按顺序执行" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务负责人" prop="person_in_charge">
|
||||
<el-input v-model="form.personInCharge" style="width: 220px;" />
|
||||
<el-input v-model="form.person_in_charge" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="告警邮箱" prop="email">
|
||||
<el-input v-model="form.email" placeholder="多个邮箱用逗号隔开" style="width: 220px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="失败后暂停">
|
||||
<el-radio-group v-model="form.pauseAfterFailure" style="width: 220px">
|
||||
<el-radio-group v-model="form.pause_after_failure" style="width: 220px">
|
||||
<el-radio :label="true">是</el-radio>
|
||||
<el-radio :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务状态">
|
||||
<el-radio-group v-model="form.isPause" style="width: 220px">
|
||||
<el-radio-group v-model="form.is_pause" style="width: 220px">
|
||||
<el-radio :label="false">启用</el-radio>
|
||||
<el-radio :label="true">暂停</el-radio>
|
||||
</el-radio-group>
|
||||
@@ -77,42 +93,84 @@
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="crud.loading"
|
||||
:data="crud.data"
|
||||
style="width: 100%;"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column :selectable="checkboxT" type="selection" width="55" />
|
||||
<el-table-column show-overflow-tooltip prop="jobId" label="任务ID" />
|
||||
<el-table-column show-overflow-tooltip prop="jobName" label="任务名称" min-width="120" />
|
||||
<el-table-column show-overflow-tooltip prop="beanName" label="Bean名称" />
|
||||
<el-table-column show-overflow-tooltip prop="methodName" label="执行方法" />
|
||||
<el-table-column show-overflow-tooltip prop="job_id" label="任务ID" />
|
||||
<el-table-column show-overflow-tooltip prop="job_name" label="任务名称" min-width="120" />
|
||||
<el-table-column show-overflow-tooltip prop="bean_name" label="Bean名称" />
|
||||
<el-table-column show-overflow-tooltip prop="method_name" label="执行方法" />
|
||||
<el-table-column show-overflow-tooltip prop="params" label="参数" />
|
||||
<el-table-column show-overflow-tooltip prop="cronExpression" label="cron表达式" min-width="100" show-tooltip-when-overflow />
|
||||
<el-table-column show-overflow-tooltip prop="isPause" width="90px" label="状态">
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="cron_expression"
|
||||
label="cron表达式"
|
||||
min-width="100"
|
||||
show-tooltip-when-overflow
|
||||
/>
|
||||
<el-table-column show-overflow-tooltip prop="is_pause" width="90px" label="状态">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.isPause ? 'warning' : 'success'">{{ scope.row.isPause ? '已暂停' : '运行中' }}</el-tag>
|
||||
<el-tag :type="scope.row.is_pause ? 'warning' : 'success'">{{
|
||||
scope.row.is_pause ? '已暂停' : '运行中'
|
||||
}}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip prop="description" width="150px" label="描述" />
|
||||
<el-table-column show-overflow-tooltip prop="createTime" width="136px" label="创建日期">
|
||||
<el-table-column show-overflow-tooltip prop="create_time" width="136px" label="创建日期">
|
||||
<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','timing:edit','timing:del']" label="操作" width="170px" align="center" fixed="right">
|
||||
<el-table-column
|
||||
v-permission="['admin','timing:edit','timing:del']"
|
||||
label="操作"
|
||||
width="170px"
|
||||
align="center"
|
||||
fixed="right"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button v-permission="['admin','timing:edit']" size="mini" style="margin-right: 3px;" type="text" @click="crud.toEdit(scope.row)">编辑</el-button>
|
||||
<el-button v-permission="['admin','timing:edit']" style="margin-left: -2px" type="text" size="mini" @click="execute(scope.row.jobId)">执行</el-button>
|
||||
<el-button v-permission="['admin','timing:edit']" style="margin-left: 3px" type="text" size="mini" @click="updateStatus(scope.row.jobId,scope.row.isPause ? '恢复' : '暂停')">
|
||||
{{ scope.row.isPause ? '恢复' : '暂停' }}
|
||||
<el-button
|
||||
v-permission="['admin','timing:edit']"
|
||||
size="mini"
|
||||
style="margin-right: 3px;"
|
||||
type="text"
|
||||
@click="crud.toEdit(scope.row)"
|
||||
>编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-permission="['admin','timing:edit']"
|
||||
style="margin-left: -2px"
|
||||
type="text"
|
||||
size="mini"
|
||||
@click="execute(scope.row.job_id)"
|
||||
>执行
|
||||
</el-button>
|
||||
<el-button
|
||||
v-permission="['admin','timing:edit']"
|
||||
style="margin-left: 3px"
|
||||
type="text"
|
||||
size="mini"
|
||||
@click="updateStatus(scope.row.job_id,scope.row.is_pause ? '恢复' : '暂停')"
|
||||
>
|
||||
{{ scope.row.is_pause ? '恢复' : '暂停' }}
|
||||
</el-button>
|
||||
<el-popover
|
||||
:ref="scope.row.jobId"
|
||||
:ref="scope.row.job_id"
|
||||
v-permission="['admin','timing:del']"
|
||||
placement="top"
|
||||
width="200"
|
||||
>
|
||||
<p>确定停止并删除该任务吗?</p>
|
||||
<div style="text-align: right; margin: 0">
|
||||
<el-button size="mini" type="text" @click="$refs[scope.row.jobId].doClose()">取消</el-button>
|
||||
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row.jobId)">确定</el-button>
|
||||
<el-button size="mini" type="text" @click="$refs[scope.row.job_id].doClose()">取消</el-button>
|
||||
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row.job_id)">确定
|
||||
</el-button>
|
||||
</div>
|
||||
<el-button slot="reference" type="text" size="mini">删除</el-button>
|
||||
</el-popover>
|
||||
@@ -136,12 +194,25 @@ import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import Crontab from './components/crontab'
|
||||
|
||||
const defaultForm = { jobId: null, beanName: null, cronExpression: null, isPause: false, jobName: null, methodName: null, params: null, description: null, personInCharge: null, email: null, subTask: null, pauseAfterFailure: true, createId: null, createName: null, createTime: null, updateId: null, updateName: null, updateTime: null }
|
||||
const defaultForm = {
|
||||
job_id: null,
|
||||
bean_name: null,
|
||||
cron_expression: null,
|
||||
is_pause: false,
|
||||
job_name: null,
|
||||
method_name: null,
|
||||
params: null,
|
||||
description: null,
|
||||
person_in_charge: null,
|
||||
email: null,
|
||||
sub_task: null,
|
||||
pause_after_failure: true
|
||||
}
|
||||
export default {
|
||||
name: 'Timing',
|
||||
components: { Log, pagination, crudOperation, rrOperation, Crontab },
|
||||
cruds() {
|
||||
return CRUD({ title: '定时任务', idField: 'jobId', url: 'api/jobs', crudMethod: { ...crudJob }})
|
||||
return CRUD({ title: '定时任务', idField: 'job_id', url: 'api/jobs', crudMethod: { ...crudJob }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
@@ -153,22 +224,22 @@ export default {
|
||||
del: ['admin', 'timing:del']
|
||||
},
|
||||
rules: {
|
||||
jobName: [
|
||||
job_name: [
|
||||
{ required: true, message: '请输入任务名称', trigger: 'blur' }
|
||||
],
|
||||
description: [
|
||||
{ required: true, message: '请输入任务描述', trigger: 'blur' }
|
||||
],
|
||||
beanName: [
|
||||
bean_name: [
|
||||
{ required: true, message: '请输入Bean名称', trigger: 'blur' }
|
||||
],
|
||||
methodName: [
|
||||
method_name: [
|
||||
{ required: true, message: '请输入方法名称', trigger: 'blur' }
|
||||
],
|
||||
cronExpression: [
|
||||
cron_expression: [
|
||||
{ required: true, message: '请输入Cron表达式', trigger: 'blur' }
|
||||
],
|
||||
personInCharge: [
|
||||
person_in_charge: [
|
||||
{ required: true, message: '请输入负责人名称', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
@@ -225,12 +296,12 @@ export default {
|
||||
},
|
||||
/** cron表达式按钮操作 */
|
||||
handleShowCron() {
|
||||
this.expression = this.form.cronExpression
|
||||
this.expression = this.form.cron_expression
|
||||
this.openCron = true
|
||||
},
|
||||
/** 确定后回传值 */
|
||||
crontabFill(value) {
|
||||
this.form.cronExpression = value
|
||||
this.form.cron_expression = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,34 +2,34 @@
|
||||
<el-dialog :visible.sync="dialog" append-to-body title="执行日志" width="88%">
|
||||
<!-- 搜索 -->
|
||||
<div class="head-container">
|
||||
<el-input v-model="query.jobName" clearable size="mini" placeholder="输入任务名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery" />
|
||||
<date-range-picker v-model="query.createTime" class="date-item" />
|
||||
<el-select v-model="query.isSuccess" placeholder="日志状态" clearable size="mini" class="filter-item" style="width: 110px" @change="toQuery">
|
||||
<el-input v-model="query.job_name" clearable size="mini" placeholder="输入任务名称搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="toQuery" />
|
||||
<date-range-picker v-model="query.create_time" class="date-item" />
|
||||
<el-select v-model="query.is_success" placeholder="日志状态" clearable size="mini" class="filter-item" style="width: 110px" @change="toQuery">
|
||||
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.displayName" :value="item.key" />
|
||||
</el-select>
|
||||
<el-button class="filter-item" size="mini" type="success" icon="el-icon-search" @click="toQuery">搜索</el-button>
|
||||
</div>
|
||||
<!--表格渲染-->
|
||||
<el-table v-loading="loading" :data="data" style="width: 100%;margin-top: -10px;">
|
||||
<el-table-column show-overflow-tooltip prop="jobName" label="任务名称" />
|
||||
<el-table-column show-overflow-tooltip prop="beanName" label="Bean名称" />
|
||||
<el-table-column show-overflow-tooltip prop="methodName" label="执行方法" />
|
||||
<el-table-column show-overflow-tooltip prop="job_name" label="任务名称" />
|
||||
<el-table-column show-overflow-tooltip prop="bean_name" label="Bean名称" />
|
||||
<el-table-column show-overflow-tooltip prop="method_name" label="执行方法" />
|
||||
<el-table-column show-overflow-tooltip prop="params" width="120px" label="参数" />
|
||||
<el-table-column show-overflow-tooltip prop="cronExpression" label="cron表达式" />
|
||||
<el-table-column show-overflow-tooltip prop="cron_expression" label="cron表达式" />
|
||||
<el-table-column prop="create_time" label="异常详情" width="110px">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-show="scope.row.exceptionDetail" size="mini" type="text" @click="info(scope.row.exceptionDetail)">查看详情</el-button>
|
||||
<el-button v-show="scope.row.exception_detail" size="mini" type="text" @click="info(scope.row.exception_detail)">查看详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column show-overflow-tooltip align="center" prop="time" width="100px" label="耗时(毫秒)" />
|
||||
<el-table-column align="center" prop="is_success" width="80px" label="状态">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.isSuccess ? 'success' : 'danger'">{{ scope.row.isSuccess ? '成功' : '失败' }}</el-tag>
|
||||
<el-tag :type="scope.row.is_success ? 'success' : 'danger'">{{ scope.row.is_success ? '成功' : '失败' }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="100" show-overflow-tooltip prop="createTime" label="创建日期">
|
||||
<el-table-column min-width="100" show-overflow-tooltip prop="create_time" label="创建日期">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -87,11 +87,11 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.java.hljs{
|
||||
color: #444;
|
||||
background: #ffffff !important;
|
||||
}
|
||||
::v-deep .el-dialog__body{
|
||||
padding: 0 20px 10px 20px !important;
|
||||
}
|
||||
.java.hljs{
|
||||
color: #444;
|
||||
background: #ffffff !important;
|
||||
}
|
||||
::v-deep .el-dialog__body{
|
||||
padding: 0 20px 10px 20px !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -20,22 +20,15 @@
|
||||
</div>
|
||||
<ul class="user-info">
|
||||
<li><div style="height: 100%"><svg-icon icon-class="login" /> 登录账号<div class="user-right">{{ user.username }}</div></div></li>
|
||||
<li><svg-icon icon-class="user1" /> 用户姓名 <div class="user-right">{{ user.personName }}</div></li>
|
||||
<li><svg-icon icon-class="dept" /> 所属部门
|
||||
<el-tooltip effect="dark" placement="top">
|
||||
<div slot="content">
|
||||
<span v-for="item in depts">{{ item.name }} </span>
|
||||
</div>
|
||||
<span class="user-right" v-for="item in depts">{{ item.name }}<span v-if="depts.length>1">...</span></span>
|
||||
</el-tooltip>
|
||||
</li>
|
||||
<li><svg-icon icon-class="user1" /> 用户姓名 <div class="user-right">{{ user.person_name }}</div></li>
|
||||
<!-- <li><svg-icon icon-class="dept" /> 所属部门 <div class="user-right"> {{ user.dept.name }}</div></li>-->
|
||||
<li><svg-icon icon-class="phone" /> 手机号码 <div class="user-right">{{ user.phone }}</div></li>
|
||||
<li><svg-icon icon-class="email" /> 用户邮箱 <div class="user-right">{{ user.email }}</div></li>
|
||||
<li>
|
||||
<svg-icon icon-class="anq" /> 安全设置
|
||||
<div class="user-right">
|
||||
<a @click="$refs.pass.dialog = true">修改密码</a>
|
||||
<a @click="$refs.email.dialog = true">修改邮箱</a>
|
||||
<!-- <a @click="$refs.email.dialog = true">修改邮箱</a>-->
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -48,8 +41,8 @@
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="用户资料" name="first">
|
||||
<el-form ref="form" :model="form" :rules="rules" style="margin-top: 10px;" size="mini" label-width="65px">
|
||||
<el-form-item label="姓名" prop="personName">
|
||||
<el-input v-model="form.personName" style="width: 35%" />
|
||||
<el-form-item label="姓名" prop="person_name">
|
||||
<el-input v-model="form.person_name" style="width: 35%" />
|
||||
<span style="color: #C0C0C0;margin-left: 10px;">用户姓名不作为登录使用</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号" prop="phone">
|
||||
@@ -71,7 +64,7 @@
|
||||
<el-tab-pane label="操作日志" name="second">
|
||||
<el-table v-loading="loading" :data="data" style="width: 100%;">
|
||||
<el-table-column prop="description" label="行为" min-width="130" show-overflow-tooltip />
|
||||
<el-table-column prop="requestIp" label="IP" />
|
||||
<el-table-column prop="request_ip" label="IP" />
|
||||
<el-table-column show-overflow-tooltip prop="address" label="IP来源" />
|
||||
<el-table-column prop="browser" label="浏览器" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="time" label="请求耗时" align="center">
|
||||
@@ -90,7 +83,7 @@
|
||||
<div style="display:inline-block;float: right;cursor: pointer" @click="init">创建日期<i class="el-icon-refresh" style="margin-left: 40px" /></div>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
<span>{{ parseTime(scope.row.create_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -123,7 +116,7 @@ import store from '@/store'
|
||||
import { isvalidPhone } from '@/utils/validate'
|
||||
import { parseTime } from '@/utils/index'
|
||||
import crud from '@/mixins/crud'
|
||||
import { editUser } from '@/views/system/user'
|
||||
import { editUser } from '@/views/system/user/user'
|
||||
import Avatar from '@/assets/images/avatar.png'
|
||||
export default {
|
||||
name: 'Center',
|
||||
@@ -149,9 +142,8 @@ export default {
|
||||
'Authorization': getToken()
|
||||
},
|
||||
form: {},
|
||||
deptsName: '',
|
||||
rules: {
|
||||
personName: [
|
||||
person_name: [
|
||||
{ required: true, message: '请输入用户姓名', trigger: 'blur' },
|
||||
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
|
||||
],
|
||||
@@ -164,13 +156,12 @@ export default {
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'user',
|
||||
'depts',
|
||||
'updateAvatarApi',
|
||||
'baseApi'
|
||||
])
|
||||
},
|
||||
created() {
|
||||
this.form = { id: this.user.id, personName: this.user.personName, gender: this.user.gender, phone: this.user.phone }
|
||||
this.form = { id: this.user.id, person_name: this.user.person_name, gender: this.user.gender, phone: this.user.phone }
|
||||
store.dispatch('GetInfo').then(() => {})
|
||||
},
|
||||
methods: {
|
||||
@@ -211,24 +202,24 @@ export default {
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss">
|
||||
.avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 50%;
|
||||
.avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.user-info {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
li{
|
||||
border-bottom: 1px solid #F0F3F4;
|
||||
padding: 11px 0;
|
||||
font-size: 13px;
|
||||
}
|
||||
.user-info {
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
li{
|
||||
border-bottom: 1px solid #F0F3F4;
|
||||
padding: 11px 0;
|
||||
font-size: 13px;
|
||||
}
|
||||
.user-right {
|
||||
float: right;
|
||||
a{
|
||||
color: #317EF3;
|
||||
}
|
||||
.user-right {
|
||||
float: right;
|
||||
a{
|
||||
color: #317EF3;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
import crudDept from '@/views/system/dept/dept'
|
||||
import crudDept from '../../dept/dept'
|
||||
import CRUD, { header, presenter } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
/>
|
||||
<el-select
|
||||
v-model="query.isUsed"
|
||||
v-model="query.is_used"
|
||||
clearable
|
||||
size="mini"
|
||||
placeholder="状态"
|
||||
@@ -72,7 +72,7 @@
|
||||
<el-input v-model.number="form.phone" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="preson_name">
|
||||
<el-input v-model="form.personName" style="width: 200px;" />
|
||||
<el-input v-model="form.person_name" style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="form.email" style="width: 200px;" />
|
||||
@@ -91,7 +91,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<br v-if="!crud.status.add">
|
||||
<el-form-item v-if="crud.status.add" label="密码" prop="password">
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-input v-model="form.password" style="width: 200px;" show-password auto-complete="new-password" />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别">
|
||||
@@ -100,9 +100,9 @@
|
||||
<el-radio label="女">女</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="isUesd">
|
||||
<el-form-item label="状态" prop="is_uesd">
|
||||
<el-switch
|
||||
v-model="form.isUsed"
|
||||
v-model="form.is_used"
|
||||
active-color="#409EFF"
|
||||
inactive-color="#F56C6C"
|
||||
/>
|
||||
@@ -122,9 +122,9 @@
|
||||
<!--:disabled="level !== 1 && item.level <= level"-->
|
||||
<el-option
|
||||
v-for="item in roles"
|
||||
:key="item.roleId"
|
||||
:key="item.role_id"
|
||||
:label="item.name"
|
||||
:value="item.roleId"
|
||||
:value="item.role_id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@@ -145,24 +145,26 @@
|
||||
<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="personName"
|
||||
prop="person_name"
|
||||
label="姓名"
|
||||
:min-width="flexWidth('personName',crud.data,'姓名')"
|
||||
:min-width="flexWidth('person_name',crud.data,'姓名')"
|
||||
/>
|
||||
<el-table-column prop="gender" label="性别" :min-width="flexWidth('personName',crud.data,'性别')" />
|
||||
<el-table-column prop="gender" label="性别" :min-width="flexWidth('gender',crud.data,'性别')" />
|
||||
<el-table-column prop="phone" label="电话" :min-width="flexWidth('phone',crud.data,'电话')" />
|
||||
<el-table-column prop="email" label="邮箱" :min-width="flexWidth('email',crud.data,'邮箱')" />
|
||||
<el-table-column show-overflow-tooltip prop="depts" label="部门">
|
||||
<el-table-column show-overflow-tooltip prop="depts" label="部门" :min-width="flexWidth('depts',crud.data,'邮箱')">
|
||||
<template slot-scope="scope">
|
||||
<span v-for=" item in scope.row.depts" :key="item.index">{{ item.name }} </span>
|
||||
</template>
|
||||
</el-table-column>>
|
||||
<el-table-column label="状态" align="center" prop="enabled">
|
||||
<template slot-scope="scope">
|
||||
<span :style="{'color': caseStatusColorFilter(scope.row.isUsed)}">{{ enabledTypeOptions.find(item => {return item.key == scope.row.isUsed}).display_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 prop="createTime" label="创建日期" :min-width="flexWidth('createTime',crud.data,'创建日期')" />
|
||||
<el-table-column label="状态" align="center" prop="enabled">
|
||||
<template slot-scope="scope">
|
||||
<span :style="{'color': caseStatusColorFilter(scope.row.is_used)}">{{ enabledTypeOptions.find(item => {return item.key == scope.row.is_used}).display_name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="create_time" label="创建日期" :min-width="flexWidth('create_time',crud.data,'创建日期')" />
|
||||
<el-table-column
|
||||
label="操作"
|
||||
fixed="right"
|
||||
@@ -172,17 +174,17 @@
|
||||
<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-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-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-key">
|
||||
<span @click="openDeptDrawer(scope.row)">分配部门</span>
|
||||
<span @click="openDeptDrawer(scope.row)">部门权限</span>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-key">
|
||||
<span @click="openDataDialog(scope.row)">数据权限</span>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-lock"><span @click="changeEnabled(scope.row)">{{ enabledTypeOptions.find(item => {return item.key !== scope.row.isUsed}).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 }}账号</span></el-dropdown-item>
|
||||
<el-dropdown-item icon="el-icon-circle-check">
|
||||
<span @click="openRoleDrawer(scope.row)">分配角色</span>
|
||||
</el-dropdown-item>
|
||||
@@ -214,7 +216,7 @@
|
||||
:data="deptsDatas"
|
||||
:default-checked-keys="depChecked"
|
||||
:props="deptProps"
|
||||
node-key="deptId"
|
||||
node-key="dept_id"
|
||||
highlight-current
|
||||
check-strictly
|
||||
@check="handCheck"
|
||||
@@ -249,8 +251,8 @@
|
||||
<el-form-item label="用户名" prop="username">
|
||||
<el-input v-model="dataDialog.username" disabled style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="presonName">
|
||||
<el-input v-model="dataDialog.personName" disabled style="width: 200px;" />
|
||||
<el-form-item label="姓名" prop="person_name">
|
||||
<el-input v-model="dataDialog.person_name" disabled style="width: 200px;" />
|
||||
</el-form-item>
|
||||
<el-table
|
||||
ref="dialogTable"
|
||||
@@ -263,15 +265,15 @@
|
||||
<el-table-column label="数据权限">
|
||||
<template slot-scope="scope">
|
||||
<el-select
|
||||
v-model="scope.row.permissionId"
|
||||
v-model="scope.row.permission_id"
|
||||
placeholder="请选择"
|
||||
@change="openRelevance(scope.row, scope.$index)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in permissions"
|
||||
:key="item.permissionId"
|
||||
:key="item.permission_id"
|
||||
:label="item.name"
|
||||
:value="item.permissionId"
|
||||
:value="item.permission_id"
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
@@ -304,10 +306,14 @@
|
||||
:data="dataPermissions"
|
||||
style="width: 100%; max-height: 500px"
|
||||
>
|
||||
<el-table-column prop="permissionScopeType" label="权限类型" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="permission_scope_type" label="权限类型" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.permission_scope_type[scope.row.permission_scope_type] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="permissionName" label="权限范围" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="deptName" label="部门名称" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="personName" label="用户名称" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="person_name" label="用户名称" min-width="100" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
<relevance-user-dialog :dialog-show.sync="relevanceUser" :is-single="false" :users="userIds" @selectUsers="selectUsers" />
|
||||
@@ -317,7 +323,7 @@
|
||||
|
||||
<script>
|
||||
import crudUser from '@/views/system/user/user'
|
||||
import crudDept from '@/views/system/dept/dept'
|
||||
import crudDept from '../dept/dept'
|
||||
import crudDataPermission from '@/views/system/dataPermission/dataPermission'
|
||||
import { getAll, getLevel } from '@/views/system/role/role'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
@@ -333,13 +339,13 @@ import RelevanceDeptDialog from '@/views/system/user/dialog/relevanceDeptDialog'
|
||||
|
||||
let userRoles = []
|
||||
const defaultForm = {
|
||||
deptId: null,
|
||||
dept_id: null,
|
||||
depts: [],
|
||||
username: null,
|
||||
personName: null,
|
||||
person_name: null,
|
||||
gender: '男',
|
||||
email: null,
|
||||
isUsed: true,
|
||||
is_used: true,
|
||||
roles: [],
|
||||
phone: null,
|
||||
password: null
|
||||
@@ -348,7 +354,7 @@ export default {
|
||||
name: 'User',
|
||||
components: { RelevanceDeptDialog, RelevanceUserDialog, Treeselect, crudOperation, rrOperation, udOperation, pagination },
|
||||
cruds() {
|
||||
return CRUD({ title: '用户', idField: 'userId', url: 'api/users', crudMethod: { ...crudUser }})
|
||||
return CRUD({ title: '用户', idField: 'user_id', url: 'api/users', crudMethod: { ...crudUser }})
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
// 数据字典
|
||||
@@ -374,7 +380,7 @@ export default {
|
||||
{ required: true, message: '请输入用户名', trigger: 'blur' },
|
||||
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
|
||||
],
|
||||
personName: [
|
||||
person_name: [
|
||||
{ required: true, message: '请输入用户姓名', trigger: 'blur' },
|
||||
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
|
||||
]
|
||||
@@ -389,7 +395,7 @@ export default {
|
||||
dataPerm: false,
|
||||
dataDialog: {},
|
||||
permissions: [],
|
||||
permissionId: '',
|
||||
permission_id: '',
|
||||
multipleSelection: [], // 选中
|
||||
relevanceUser: false, // 关联用户
|
||||
rowData: {}, // 当行数据
|
||||
@@ -433,8 +439,8 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
caseStatusColorFilter(isUsed) {
|
||||
if (isUsed === true) {
|
||||
caseStatusColorFilter(is_used) {
|
||||
if (is_used === true) {
|
||||
return '#378be2'
|
||||
}
|
||||
return '#F56C6C'
|
||||
@@ -453,13 +459,13 @@ export default {
|
||||
// 新增与编辑前做的操作
|
||||
[CRUD.HOOK.afterToCU](crud, form) {
|
||||
this.getRoles()
|
||||
if (form.deptId == null) {
|
||||
if (form.dept_id == null) {
|
||||
crudDept.getDepts()
|
||||
} else {
|
||||
this.getSupDepts(form.deptId)
|
||||
this.getSupDepts(form.dept_id)
|
||||
}
|
||||
// this.getRoleLevel() 暂时不用
|
||||
form.isUsed = form.enabled.toString()
|
||||
// form.is_used = form.enabled.toString()
|
||||
},
|
||||
// 新增前将多选的值设置为空
|
||||
[CRUD.HOOK.beforeToAdd]() {
|
||||
@@ -511,7 +517,6 @@ export default {
|
||||
q = { name: node }
|
||||
}
|
||||
crudDept.getDeptTree(q).then(res => {
|
||||
console.log('res', res)
|
||||
if (resolve) {
|
||||
resolve(res.content)
|
||||
} else {
|
||||
@@ -529,10 +534,7 @@ export default {
|
||||
}, 100)
|
||||
},
|
||||
getDepts() {
|
||||
console.log('获取部门')
|
||||
crudDept.getDepts({ isUsed: true }).then(res => {
|
||||
console.log('获取的部门信息', res)
|
||||
|
||||
crudDept.getDepts({ is_used: true }).then(res => {
|
||||
this.depts = res.content.map(function(obj) {
|
||||
if (obj.hasChildren) {
|
||||
obj.children = null
|
||||
@@ -543,7 +545,6 @@ export default {
|
||||
},
|
||||
getSupDepts(deptId) {
|
||||
crudDept.getDeptSuperior(deptId).then(res => {
|
||||
console.log('父部门', res)
|
||||
const date = res.content
|
||||
this.buildDepts(date)
|
||||
this.depts = date
|
||||
@@ -562,7 +563,7 @@ export default {
|
||||
// 获取弹窗内部门数据
|
||||
loadDepts({ action, parentNode, callback }) {
|
||||
if (action === LOAD_CHILDREN_OPTIONS) {
|
||||
crudDept.getDeptvo({ isUsed: true, pid: parentNode.dept_id }).then(res => {
|
||||
crudDept.getDeptvo({ is_used: true, pid: parentNode.dept_id }).then(res => {
|
||||
parentNode.children = res.content.map(function(obj) {
|
||||
obj.children = null
|
||||
return obj
|
||||
@@ -575,27 +576,27 @@ export default {
|
||||
},
|
||||
normalizer(node) {
|
||||
return {
|
||||
id: node.deptId,
|
||||
id: node.dept_id,
|
||||
label: node.name,
|
||||
children: node.children
|
||||
}
|
||||
},
|
||||
// 切换部门
|
||||
handleNodeClick(data) {
|
||||
this.query.deptId = data.deptId
|
||||
this.query.dept_id = data.dept_id
|
||||
this.query.needAll = true
|
||||
this.crud.toQuery()
|
||||
this.query.deptId = null
|
||||
this.query.dept_id = null
|
||||
},
|
||||
// 改变状态
|
||||
changeEnabled(row) {
|
||||
const satus = this.enabledTypeOptions.find(item => { return item.key !== row.isUsed })
|
||||
const satus = this.enabledTypeOptions.find(item => { return item.key !== row.is_used })
|
||||
this.$confirm('此操作将' + satus.display_name + '账号:' + row.username + ', 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
row.isUsed = satus.key
|
||||
row.is_used = satus.key
|
||||
crudUser.edit(row).then(res => {
|
||||
this.crud.toQuery()
|
||||
this.crud.notify('账号' + row.username + '已' + satus.display_name)
|
||||
@@ -638,13 +639,13 @@ export default {
|
||||
crudDept.getDeptTree().then(res => {
|
||||
this.deptsDatas = res.content
|
||||
})
|
||||
this.openDrawer()
|
||||
this.openDrawer() // 打开抽屉
|
||||
this.drawerTitle = '分配部门权限'
|
||||
this.flag = true
|
||||
// 默认选中
|
||||
const deptIds = []
|
||||
for (var index in row.depts) {
|
||||
deptIds.push(row.depts[index].deptId)
|
||||
deptIds.push(row.depts[index].dept_id)
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.deptUser.setCheckedKeys(deptIds)
|
||||
@@ -679,23 +680,25 @@ export default {
|
||||
this.multipleSelection = []
|
||||
// 获取权限范围
|
||||
crudDataPermission.getDataScopeType().then(res => {
|
||||
console.log('权限范围', res)
|
||||
this.dataDialog.dataScopeType = res
|
||||
// permissions
|
||||
crudDataPermission.getDataPermissionOption().then(res => {
|
||||
// console.log(res)
|
||||
console.log('数据权限', res)
|
||||
this.permissions = res
|
||||
this.dataDialog.personName = row.personName
|
||||
this.dataDialog.person_name = row.person_name
|
||||
this.dataDialog.username = row.username
|
||||
this.dataDialog.userId = row.userId
|
||||
this.dataPermissionTitle = '[' + row.personName + '] 数据权限'
|
||||
this.dataDialog.user_id = row.user_id
|
||||
this.dataPermissionTitle = '[' + row.person_name + '] 数据权限'
|
||||
this.dataPerm = true
|
||||
// 回显数据
|
||||
crudDataPermission.getDataShow(row.userId).then(res => {
|
||||
crudDataPermission.getDataShow(row.user_id).then(res => {
|
||||
console.log('要回显的数据', res)
|
||||
this.$nextTick(function() {
|
||||
for (var index = 0; index < res.length; index++) {
|
||||
for (var i = 0; i < this.dataDialog.dataScopeType.length; i++) {
|
||||
if (this.dataDialog.dataScopeType[i].value == res[index].permissionScopeType) {
|
||||
this.dataDialog.dataScopeType[i].permissionId = res[index].permissionId
|
||||
this.dataDialog.dataScopeType[i].permission_id = res[index].permission_id
|
||||
if (res[index].users) this.dataDialog.dataScopeType[i].users = res[index].users
|
||||
if (res[index].depts) this.dataDialog.dataScopeType[i].depts = res[index].depts
|
||||
// 选中
|
||||
@@ -714,24 +717,23 @@ 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) {
|
||||
this.$delete(this.dataDialog.dataScopeType[index], this.permissions[i].permissionId.toString())
|
||||
if (this.permissions[i].permission_id != undefined && this.permissions[i].permission_id && this.permissions[i].permission_id != row.permission_id) {
|
||||
this.$delete(this.dataDialog.dataScopeType[index], this.permissions[i].permission_id.toString())
|
||||
}
|
||||
}
|
||||
this.$set(this.dataDialog.dataScopeType[index], this.dataDialog.dataScopeType[index].permissionId, row.permissionId)
|
||||
this.$set(this.dataDialog.dataScopeType[index], this.dataDialog.dataScopeType[index].permission_id, row.permission_id)
|
||||
this.rowData = {}
|
||||
this.deptIds = []
|
||||
this.userIds = []
|
||||
console.log(row)
|
||||
if (row.permissionId == '1605129738328870912') { // 选择用户
|
||||
if (row.permission_id == '1605129738328870912') { // 选择用户
|
||||
this.userIds = this.dataDialog.dataScopeType[index].users
|
||||
this.rowData = row
|
||||
this.relevanceUser = true
|
||||
} else if (row.permissionId == '1605129882164137984') { // 选择部门
|
||||
} else if (row.permission_id == '1605129882164137984') { // 选择部门
|
||||
this.deptIds = this.dataDialog.dataScopeType[index].depts
|
||||
this.rowData = row
|
||||
this.relevanceDept = true
|
||||
} else if (row.permissionId == '1605128919449735168') { // 自身
|
||||
} else if (row.permission_id == '1605128919449735168') { // 自身
|
||||
const param = {
|
||||
userId: this.dataDialog.userId
|
||||
}
|
||||
@@ -744,7 +746,7 @@ 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].dict_id == this.rowData.dict_id) {
|
||||
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
|
||||
@@ -754,7 +756,7 @@ 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].dict_id == 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
|
||||
@@ -767,10 +769,9 @@ export default {
|
||||
},
|
||||
savePermise() {
|
||||
const param = {
|
||||
userId: this.dataDialog.userId,
|
||||
user_id: this.dataDialog.user_id,
|
||||
datas: this.multipleSelection
|
||||
}
|
||||
console.log('param', param)
|
||||
crudDataPermission.saveDataPermission(param).then(res => {
|
||||
this.dataPerm = false
|
||||
this.crud.notify('添加数据权限成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
@@ -783,7 +784,7 @@ export default {
|
||||
this.depChecked = []
|
||||
},
|
||||
giveValue(row) {
|
||||
this.depCheckedId = row.userId
|
||||
this.depCheckedId = row.user_id
|
||||
},
|
||||
clearCheck() { // 清空选中
|
||||
if (this.flag) this.$refs.deptUser.setCheckedKeys([])
|
||||
@@ -801,12 +802,12 @@ export default {
|
||||
},
|
||||
saveChecked() {
|
||||
const user = {
|
||||
userId: this.depCheckedId
|
||||
user_id: this.depCheckedId
|
||||
}
|
||||
if (this.flag) {
|
||||
user.deptIds = this.$refs.deptUser.getCheckedKeys()
|
||||
} else {
|
||||
user.rolesIds = this.crud.selections.map(item => (item.roleId))
|
||||
user.rolesIds = this.crud.selections.map(item => (item.role_id))
|
||||
}
|
||||
crudUser.edit(user).then(res => {
|
||||
this.cancelForm()
|
||||
@@ -864,7 +865,6 @@ export default {
|
||||
permissionScopeType: row.value
|
||||
}
|
||||
crudDataPermission.getDataDetail(param).then(res => {
|
||||
console.log(res)
|
||||
this.dataPermissions = res
|
||||
})
|
||||
this.showData = true
|
||||
|
||||
Reference in New Issue
Block a user