You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

395 lines
11 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="rightContainer">
<a-breadcrumb class="newBreadcrumb mt0 mb16">
<a-breadcrumb-item href>
<router-link :to="{name:'merchantBack'}">
<a-icon type="home" />
</router-link>
</a-breadcrumb-item>
<a-breadcrumb-item>
<span @click="cancelAdd" v-if="secondBreadcrumb" style="cursor:pointer">角色管理</span>
<span v-else>角色管理</span>
</a-breadcrumb-item>
<a-breadcrumb-item v-if="secondBreadcrumb">{{secondBreadcrumb}}</a-breadcrumb-item>
</a-breadcrumb>
<div class="contentbody bodyContainer">
<div class="fsa pb16" v-if="secondBreadcrumb == ''">
<div class="f20 fw500">{{secondBreadcrumb || '角色管理'}}</div>
<a-button class="addmemeber f14" @click="addRole('add')">
<i class="iconfont icon-fangda mr4"></i> 添加角色
</a-button>
</div>
<div v-if="secondBreadcrumb == ''">
<a-table :columns="columns" :data-source="roleList" :pagination="false" @change="onChange" :loading="{spinning: isspinning,tip: '加载中',wrapperClassName: 'spinstyle'}" :rowKey="(record) => record.id">
<!-- <a slot="index" slot-scope="record, text, index">{{ index + 1 }}</a> -->
<div slot="setting" class="setting" slot-scope="text, record" style="color: #1890FF">
<a @click="showDetail(record)">详情</a>
<a :class="record.roleType == 1 ?'':'unclick'" class="delete" @click="record.roleType == 1 ? addRole('edit',record):''">编辑</a>
<a :class="record.roleType == 1 ?'':'unclick'" @click="record.roleType == 1 ? delRole(record):''">删除</a>
</div>
</a-table>
<div class="pagecontainer mt16 fss dn">
<a-pagination :current="pagination.pageNum" :default-current="1" :defaultPageSize="20" :show-total="total => `共${total}条`" :total="pagination.total" @change="onChange" size="small" show-size-changer show-quick-jumper />
</div>
</div>
</div>
</div>
</template>
<script>
import { getRoleListApi, addRoleApi, updateRoleApi, delRoleApi } from '../../api/merchantConfig'
export default {
// 组件名称
name: 'RoleManagement',
// 局部注册的组件
components: {},
// 组件参数 接收来自父组件的数据
props: {},
// 组件状态值
data() {
return {
tablenodata: {
// 空状态文本内容
emptyText: () => (
<div>
<div>
<img src="https://user-images.githubusercontent.com/507615/54591670-ac0a0180-4a65-11e9-846c-e55ffce0fe7b.png" style="width:105px;height:90px;marginTop:20px" />
</div>
<div style="marginBottom:20px">暂无数据</div>
</div>
),
},
secondBreadcrumb: '',
roleList: [1, 2, 3, 4],
pagination: {
pageNum: 1,
pageSize: 20,
total: 3, //分页配置
status: 0,
keys: null,
size: 'small',
showTotal: function (total, range) {
return `共${total}条`
},
pageSizeOptions: ['25', '50', '100'],
showSizeChanger: true,
// searchTag: 1,
},
isspinning: false,
roleList: [],
}
},
// 计算属性
computed: {
columns() {
const columns = [
{
title: '排序',
dataIndex: 'index',
key: 'index',
customRender: (text, row, index) => {
if (row.children) {
return ''
} else {
return index + 1
}
},
// ellipsis: true,
width: 60,
},
{
title: '角色',
dataIndex: 'roleName',
key: 'roleName',
scopedSlots: { customRender: 'roleName' },
ellipsis: true,
width: 150,
},
// {
// title: '角色',
// dataIndex: 'role',
// key: 'role',
// width: 100,
// ellipsis: true,
// },
{
title: '角色备注',
dataIndex: 'desp',
key: 'desp',
// width: 100,
// filters: this.groupList,
// customRender: (text, row, index) => {
// let text1
// this.groupList.forEach((item) => {
// if (item.id == text) {
// text1 = item.teamName
// }
// })
// return text1
// },
ellipsis: true,
},
// {
// title: '权限',
// dataIndex: 'permission',
// key: 'permission',
// ellipsis: true,
// },
{
title: '操作',
dataIndex: 'setting',
key: 'setting',
// sorter: (a, b) => a.userApplyOrder.localeCompare(b.userApplyOrder),
scopedSlots: { customRender: 'setting' },
ellipsis: true,
// sortOrder: sortedInfo.columnKey == "userApplyOrder" && sortedInfo.order,
// ellipsis: true,
width: 140,
},
]
return columns
},
},
// 侦听器
watch: {},
// 生命周期钩子 注:没用到的钩子请自行删除
/**
* 组件实例创建完成属性已绑定但DOM还未生成$ el属性还不存在
*/
beforeCreate() {},
created() {
this.$emit('setTitle', '角色管理')
this.getRoleList()
console.log(this.middleauthor)
},
/**
* el 被新创建的 vm.el 替换,并挂载到实例上去之后调用该钩子。
* 如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.el 也在文档内。
*/
mounted() {},
// 组件方法
methods: {
checkboxChange(e, key, index) {
// console.log(e)
// console.log(key)
// console.log(index)
// console.log(this.authorityList[key]);
// console.log(this.authorityList[key][index]);
if (e.children) {
this.authorityList[key].checked = !this.authorityList[key].checked
} else {
this.authorityList[key].children[index].checked = !this.authorityList[key].children[index].checked
}
console.log(this.authorityList)
},
inputpageChange(e) {
const pagenumcount = this.pagination.total / this.pagination.pageSize
console.log(pagenumcount)
if (e.target.value) {
if (e.target.value > pagenumcount) {
this.pagination.pageNum = Math.ceil(pagenumcount)
} else {
this.pagination.pageNum = e.target.value
}
} else {
this.pagination.pageNum = 1
}
// this.getJobList();
this.getMemberList()
console.log(e)
},
choiceGroup() {},
onChange(e, e1, e2) {
console.log(e)
console.log(e1)
console.log(e2)
if (typeof e == 'number') {
this.pagination.pageNum = e
this.getMemberList()
}
},
showDetail(val) {
let that = this
this.secondBreadcrumb = '角色详情'
console.log(val)
that.$router.push({
name: 'RoleManagementDetail',
query: {
item: JSON.stringify(val),
},
})
},
addRole(type, val) {
let that = this
this.currentRole = val
if (type == 'add') {
this.$confirm({
title: '添加角色',
content: '【添加角色】属高敏感权限,基于账户安全考虑,请再次确认是否创建',
onOk() {
that.$router.push({
name: 'AddRoleManagement',
query: {
// item: val,
type: 'add',
roleList: JSON.stringify(that.roleList),
},
})
},
onCancel() {},
})
// this.secondBreadcrumb = '添加角色'
} else {
this.$router.push({
name: 'AddRoleManagement',
query: {
item: JSON.stringify(val),
roleList: JSON.stringify(this.roleList),
},
})
// this.secondBreadcrumb = '编辑角色'
// setTimeout(() => {
// this.roleForm.setFieldsValue({
// roleName: val.roleName,
// desp: val.desp,
// })
// }, 10)
}
this.$forceUpdate()
},
delRole(val) {
let that = this
that.$confirm({
title: '删除',
content: '确定要删除该角色吗?',
centered: true,
onOk(e1, e2) {
console.log(e1)
console.log(e2)
that.delSubmit(val)
return new Promise((res) => {
setTimeout(() => {
res()
}, 2000)
})
},
onCancel() {},
})
},
getRoleList() {
getRoleListApi().then(({ data }) => {
console.log(data)
if (data.status == 200) {
this.roleList = data.data.list
}
})
},
/**
* 删除角色信息表单提交
*/
delSubmit(val) {
console.log(val)
delRoleApi(val.id).then(({ data }) => {
console.log(data)
if (data.status == 200) {
this.secondBreadcrumb = ''
this.$message.success('删除成功')
this.getRoleList()
} else {
this.$message.fail('删除失败')
}
})
},
/**
* 取消编辑或者新增角色
*/
cancelAdd() {
this.secondBreadcrumb = ''
// this.authorityList = JSON.parse(JSON.stringify(this.middleauthor))
},
},
}
</script>
<style scoped lang="less">
.addmemeber {
border: 0;
padding: 0 12px;
height: 32px;
line-height: 32px;
color: #fff;
background: #1890ff;
border-radius: 4px;
i {
font-size: 12px;
}
&:hover {
background: #40a9ff;
}
}
.ant-divider {
margin: 16px 0 22px 0;
}
.delete {
border-left: 1px solid #979797;
border-right: 1px solid #979797;
padding: 0 9px;
margin: 0 9px;
}
/deep/.ant-table {
.ant-table-content {
.ant-table-body {
.ant-table-thead {
th {
padding: 12px 0;
div {
padding: 0px 8px;
}
&:not(:first-child) {
> span {
// line-height: 22px;
> div {
// line-height: 1;
border-left: 1px solid #ddd;
padding-left: 12px;
}
}
}
}
.ant-table-row-cell-break-word {
font-size: 14px !important;
font-weight: bold;
}
.ant-table-row-cell-ellipsis {
font-size: 14px !important;
font-weight: bold;
}
}
.ant-table-tbody {
.ant-table-row-cell-ellipsis {
font-size: 14px !important;
padding: 12px 14px;
}
.ant-table-row-expand-icon {
// color: #000;
padding: 0;
}
.ant-table-row-indent {
display: none !important;
}
}
}
}
}
.unclick {
color: #ccc;
cursor: not-allowed;
}
</style>