288 lines
8.1 KiB
Vue
288 lines
8.1 KiB
Vue
<template>
|
|
<div>
|
|
<div flex style="height: 100%;">
|
|
<base-layout title="菜单树" style="width:260px;" :bottonShow="false" :isPage="false" :mainColor="mainColor"
|
|
ref="treeLayout" :operateButtonSwitch="false"
|
|
>
|
|
<div slot="main">
|
|
<base-tree ref="baseTree" @handleNodeClick="handleNodeClick" :menuData="menuData"></base-tree>
|
|
</div>
|
|
</base-layout>
|
|
<div style="flex:1;">
|
|
<!-- <div style="">
|
|
<p>标准按钮</p>
|
|
<div flex-wrap="cross:centet;height: 100px;overflow: auto;">
|
|
<el-button v-for="(item,index) in standardList" :type="item.type?item.type:'primary'"
|
|
size="small" style="margin-left: 5px;margin-bottom: 10px;" @click="funNewClick(item)"
|
|
:key="index">
|
|
{{item.menuName}}
|
|
</el-button>
|
|
</div>
|
|
</div> -->
|
|
<base-layout title="按钮权限" ref="buttonLayout" :isPage="true" @onFuncBtn="getFuncBtn"
|
|
@pageChange="pageChange"
|
|
>
|
|
<div slot="main" slot-scope="{ tableHeight }" style="height: 100%;">
|
|
<base-table ref="customtable" :border="true" :showIndex="false" :tabLoading.sync="tabLoading"
|
|
:tableHeight="tableHeight" :tableData="tableData" @radioChange="radioChange" :slotrow="true"
|
|
:tableColumn="tableColumn"
|
|
>
|
|
</base-table>
|
|
</div>
|
|
</base-layout>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 按钮权限弹窗 -->
|
|
<base-dialog :closeEscape="true" :showClose="true" :closeModal="false" :dialogVisible.sync="settingsDialog"
|
|
class="userDialog" title="按钮权限" width="700px" top="10vh"
|
|
>
|
|
<base-form ref="customForm" :formRow="formRow" :isFunBtn="isFunBtn" :formdata="formdata" @onSubmit="getSubmit">
|
|
</base-form>
|
|
</base-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import baseTable from '@/components/base/baseTable'
|
|
import baseLayout from '@/components/base/baseNewLayout'
|
|
import baseDialog from '@/components/base/BaseNewDialog/index.vue'
|
|
import baseTree from '@/components/base/BaseMenuTree/index.vue'
|
|
import baseForm from '@/components/base/baseNewForm/index.vue'
|
|
import configData from './configData'
|
|
import {
|
|
GetMenuTree
|
|
} from '@/api/apis/menuManage'
|
|
import {
|
|
buttonGetMenBillList,
|
|
buttonGetBillList,
|
|
buttonSaveData,
|
|
buttonDelData, buttonGetBillData
|
|
} from '@/api/apis/buttonList'
|
|
import { authApi } from '@/api/apis/auth'
|
|
|
|
export default {
|
|
name: 'review',
|
|
components: {
|
|
baseLayout,
|
|
baseTable,
|
|
baseDialog,
|
|
baseTree,
|
|
baseForm
|
|
},
|
|
data() {
|
|
return {
|
|
radioIndex: false,
|
|
radioID: false,
|
|
mainColor: '#f8f8f8',
|
|
tabLoading: false,
|
|
standardList: [{
|
|
icon: 'el-icon-search',
|
|
menuName: '新增'
|
|
}],
|
|
tableData: [],
|
|
settingsDialog: false,
|
|
settingCenter: 'left',
|
|
isFunBtn: true,
|
|
formRow: configData.formRow,
|
|
// buttonList: [{
|
|
// 'menuName': '新增',
|
|
// icon: 'el-icon-plus'
|
|
// },
|
|
// {
|
|
// 'menuName': '编辑',
|
|
// icon: 'el-icon-edit'
|
|
// },
|
|
// {
|
|
// 'menuName': '删除',
|
|
// icon: 'el-icon-delete',
|
|
// type: 'danger'
|
|
// },
|
|
// ],
|
|
btnEvenName: '',
|
|
menuData: [],
|
|
formdata: {},
|
|
pageModel: {
|
|
pageSize: 100,
|
|
menuId: '',
|
|
pageNum: 1
|
|
},
|
|
radioRow: {},//当前选中行
|
|
clickTreeRow: {}//当前选中树
|
|
}
|
|
},
|
|
computed: {
|
|
// 表头配置
|
|
tableColumn() {
|
|
return configData.tableColumnJson
|
|
}
|
|
},
|
|
mounted() {
|
|
this.initPage()
|
|
},
|
|
methods: {
|
|
initPage() {
|
|
this.getMenuData()
|
|
this.getTableData()
|
|
},
|
|
async getMenuData() {
|
|
let res = await authApi('sysMenuConfigService', '', 'queryEntityTree', '', { state: 0 })
|
|
if (res.status == 200) {
|
|
let arr = res.attribute[0]
|
|
this.menuData = res.attribute
|
|
}
|
|
},
|
|
// 树状图点击事件
|
|
handleNodeClick(data) {
|
|
this.clickTreeRow = data
|
|
this.pageModel.menuId = data.id
|
|
this.pageModel.pageNum = 1
|
|
this.RefreshTable()
|
|
},
|
|
// 刷新table
|
|
RefreshTable() {
|
|
this.radioID = false
|
|
this.radioIndex = false
|
|
this.$nextTick(() => {
|
|
this.$refs.buttonLayout.pageClear()
|
|
this.$refs.customtable.clearRadioIndex()
|
|
})
|
|
this.getTableData()
|
|
},
|
|
pageChange(model) {
|
|
this.pageModel.pageNum = model.page
|
|
this.pageModel.pageSize = model.limit
|
|
this.getTableData()
|
|
},
|
|
// 单选
|
|
radioChange(val) {
|
|
this.radioIndex = val.index
|
|
this.radioID = val.id
|
|
this.radioRow = val
|
|
},
|
|
async getTableData() {
|
|
this.tabLoading = true
|
|
let params = {
|
|
...this.pageModel
|
|
}
|
|
this.tabLoading = true
|
|
this.tableData = []
|
|
const res = await authApi('sysButtonConfigService', '', 'queryEntityPage', '', params)
|
|
if (res.status == 200) {
|
|
this.tableData = res.attribute.list
|
|
this.$nextTick(() => {
|
|
this.$refs.buttonLayout.setPageTotal(res.attribute.total)
|
|
})
|
|
this.tabLoading = false
|
|
}
|
|
},
|
|
//详情
|
|
async buttonGetBillData(id) {
|
|
const res = await authApi('sysButtonConfigService', '', 'getEntity', '', { id })
|
|
if (res.status == 200) {
|
|
this.$nextTick(() => {
|
|
this.$refs.customForm.choiceAssignment(res.attribute)
|
|
})
|
|
}
|
|
this.tabLoading = false
|
|
}
|
|
,
|
|
btnadd() {
|
|
console.log('添加')
|
|
}
|
|
,
|
|
test() {
|
|
console.log('测试')
|
|
}
|
|
,
|
|
|
|
// 按钮点击事件
|
|
getFuncBtn(btnEven) {
|
|
this.btnEvenName = btnEven.menuName
|
|
// let ftnFunction = 'test'
|
|
// this[ftnFunction]()
|
|
if (btnEven.menuName == '新增') {
|
|
if (!this.pageModel.menuId) {
|
|
this.$vmNews('请选择菜单')
|
|
return
|
|
}
|
|
// this.$refs.customForm.resetForm()
|
|
this.settingsDialog = true
|
|
this.$nextTick(() => {
|
|
this.$refs.customForm.choiceAssignment({})
|
|
})
|
|
|
|
}
|
|
if (btnEven.menuName == '编辑') {
|
|
if (this.radioID === false) {
|
|
this.$vmNews('请选择一条数据')
|
|
return
|
|
}
|
|
this.settingsDialog = true
|
|
this.buttonGetBillData(this.radioID)
|
|
}
|
|
if (btnEven.menuName == '删除') {
|
|
if (this.radioID === false) {
|
|
this.$vmNews('请选择一条数据')
|
|
return
|
|
}
|
|
if(this.clickTreeRow.formId){
|
|
this.$vmNews("系统自动生成的按钮无法删除")
|
|
return
|
|
}
|
|
this.$confirm('确定删除吗?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(async() => {
|
|
let params = {
|
|
id: this.radioID
|
|
}
|
|
const res = await authApi('sysButtonConfigService', '', 'deleteEntity', '', params)
|
|
|
|
if (res.status == 200) {
|
|
this.$vmNews('删除成功', 'success')
|
|
this.pageModel.pageNum = 1
|
|
this.RefreshTable()
|
|
}
|
|
}).catch(() => {
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
,
|
|
|
|
//表单提交
|
|
async getSubmit(data) {
|
|
let params = {
|
|
...data
|
|
}
|
|
let res
|
|
if (this.btnEvenName == '编辑') {
|
|
delete params.createTime
|
|
delete params.index
|
|
res = await authApi('sysButtonConfigService', '', 'updateEntity', '', params)
|
|
} else {
|
|
params.menuId = this.pageModel.menuId
|
|
res = await authApi('sysButtonConfigService', '', 'saveEntity', '', params)
|
|
}
|
|
|
|
if (res.status == 200) {
|
|
this.$vmNews('保存成功', 'success')
|
|
this.pageModel.pageNum = 1
|
|
this.RefreshTable()
|
|
this.settingsDialog = false
|
|
}
|
|
}
|
|
,
|
|
funNewClick(item) {
|
|
// this.$emit('onFuncBtn', item);
|
|
}
|
|
}
|
|
|
|
}
|
|
</script>
|
|
|
|
<style></style>
|