Files
orange-admin/orange-demo-multi-web/src/views/upms/formSysMenu/index.vue
2021-03-31 09:43:36 +08:00

242 lines
7.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<el-form label-width="100px" size="mini" label-position="right" @submit.native.prevent>
<filter-box :item-width="350">
<el-button slot="operator" type="primary" size="mini" :plain="true"
@click="refreshFormSysMenu(true)">
刷新
</el-button>
<el-button slot="operator" type="primary" size="mini" :disabled="!checkPermCodeExist('formSysMenu:fragmentSysMenu:add')"
@click="onCreateSysMenuClick()">
新建
</el-button>
</filter-box>
</el-form>
<el-row>
<el-col :span="24">
<el-table :data="formSysMenu.SysMenu.impl.dataList" size="mini"
header-cell-class-name="table-header-gray" row-key="menuId">
<el-table-column label="菜单名称" prop="menuName" width="300px">
</el-table-column>
<el-table-column label="菜单图标" prop="icon" width="100px">
<template slot-scope="scope">
<i :class="scope.row.icon" />
</template>
</el-table-column>
<el-table-column label="菜单顺序" prop="showOrder" width="100px">
</el-table-column>
<el-table-column label="菜单类型" prop="menuType" width="100px">
<template slot-scope="scope">
<el-tag size="mini" :type="getMenuType(scope.row)">{{SysMenuType.getValue(scope.row.menuType)}}</el-tag>
</template>
</el-table-column>
<el-table-column label="菜单路由" prop="formRouterName" min-width="250px">
</el-table-column>
<el-table-column label="操作" fixed="right" width="200px">
<template slot-scope="scope">
<el-button @click="onEditSysMenuClick(scope.row)" type="text" size="mini"
:disabled="!checkPermCodeExist('formSysMenu:fragmentSysMenu:update')">
编辑
</el-button>
<el-button @click="onAddChildSysMenuClick(scope.row)" type="text" size="mini"
:disabled="!checkPermCodeExist('formSysMenu:fragmentSysMenu:add') || scope.row.menuType === SysMenuType.BUTTON">
添加
</el-button>
<el-button @click="onDeleteClick(scope.row)" type="text" size="mini"
:disabled="!checkPermCodeExist('formSysMenu:fragmentSysMenu:delete')">
删除
</el-button>
<el-button @click="onShowPermList(scope.row)" type="text" size="mini"
v-if="checkPermCodeExist('formSysMenu:fragmentSysMenu:listSysMenuPermDetail')"
:disabled="scope.row.menuType === SysMenuType.DIRECTORY">
权限详情
</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
</div>
</template>
<script>
import { treeDataTranslate } from '@/utils';
/* eslint-disable-next-line */
import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/widget.js';
/* eslint-disable-next-line */
import { uploadMixin, statsDateRangeMixin, cachePageMixin, cachedPageChildMixin } from '@/core/mixins';
/* eslint-disable-next-line */
import { DictionaryController, SystemController } from '@/api';
import formEditSysMenu from '@/views/upms/formEditSysMenu';
import formMenuPerm from './formSysMenuPerm';
export default {
name: 'formSysMenu',
props: {
},
mixins: [uploadMixin, statsDateRangeMixin, cachePageMixin],
data () {
return {
formSysMenu: {
formFilter: {
},
formFilterCopy: {
},
SysMenu: {
impl: new TableWidget(this.loadSysMenuData, this.loadSysMenuVerify, false)
},
isInit: false
}
}
},
methods: {
getMenuType (row) {
if (row.menuType === this.SysMenuType.DIRECTORY) {
return 'primary'
} else if (row.menuType === this.SysMenuType.MENU) {
return 'success';
} else if (row.menuType === this.SysMenuType.FRAGMENT) {
return 'danger';
} else if (row.menuType === this.SysMenuType.BUTTON) {
return 'warning';
}
},
/**
* 菜单数据数据获取函数返回Primise
*/
loadSysMenuData (params) {
return new Promise((resolve, reject) => {
SystemController.getMenuPermList(this, params).then(res => {
this.allMenuList = res.data.map((item) => {
return {...item};
});
resolve({
dataList: treeDataTranslate(res.data, 'menuId'),
totalCount: res.data.length
});
}).catch(e => {
reject(e);
});
});
},
/**
* 菜单数据数据获取检测函数返回true正常获取数据返回false停止获取数据
*/
loadSysMenuVerify () {
return true;
},
/**
* 菜单数据当前页变化函数
*/
onSysMenuCurrentPageChange (newPage) {
this.formSysMenu.SysMenu.impl.onCurrentPageChange(newPage);
},
/**
* 菜单数据每页显示数量变化函数(跳转回第一页)
*/
onSysMenuPageSizeChange (newPage) {
this.formSysMenu.SysMenu.impl.onPageSizeChange(newPage);
},
/**
* 更新菜单管理
*/
refreshFormSysMenu (reloadData = false) {
// 重新获取数据组件的数据
if (reloadData) {
this.formSysMenu.SysMenu.impl.refreshTable(true, 1);
} else {
this.formSysMenu.SysMenu.impl.refreshTable();
}
this.formSysMenu.isInit = true;
},
/**
* 新建
*/
onCreateSysMenuClick () {
let params = {
menuList: this.allMenuList
};
this.$dialog.show('新建', formEditSysMenu, {
area: ['800px']
}, params).then(res => {
this.refreshFormSysMenu();
}).catch(e => {});
},
/**
* 编辑
*/
onEditSysMenuClick (row) {
SystemController.viewMenu(this, {menuId: row.menuId}).then(res => {
let params = {
rowData: res.data,
menuId: row.menuId,
menuList: this.allMenuList
};
this.$dialog.show('编辑', formEditSysMenu, {
area: ['800px']
}, params).then(res => {
this.formSysMenu.SysMenu.impl.refreshTable();
}).catch(e => {});
}).catch(e => {});
},
/**
* 添加子菜单
*/
onAddChildSysMenuClick (row) {
let params = {
parentId: row.menuId,
menuList: this.allMenuList
};
this.$dialog.show('添加子菜单', formEditSysMenu, {
area: ['800px']
}, params).then(res => {
this.formSysMenu.SysMenu.impl.refreshTable();
}).catch(e => {});
},
/**
* 删除
*/
onDeleteClick (row) {
let params = {
menuId: row.menuId
};
this.$confirm('是否删除此菜单项?').then(res => {
SystemController.deleteMenu(this, params).then(res => {
this.$message.success('删除成功');
this.formSysMenu.SysMenu.impl.refreshTable();
}).catch(e => {});
}).catch(e => {});
},
/**
* 权限详情
*/
onShowPermList (row) {
let params = {
menuId: row.menuId
};
this.$dialog.show('权限详情 - ' + row.menuName, formMenuPerm, {
area: '1200px',
offset: '30px'
}, params).catch(e => {
});
},
onResume () {
this.refreshFormSysMenu();
},
initFormData () {
},
formInit () {
this.initFormData();
this.refreshFormSysMenu();
}
},
created () {
this.formInit();
}
}
</script>