|
@@ -2,43 +2,17 @@
|
|
|
<div class="bf-rolelist">
|
|
|
<!-- 角色列表 -->
|
|
|
<div class="cont">
|
|
|
- <div
|
|
|
- v-if="title"
|
|
|
- class="paren_header"
|
|
|
- >
|
|
|
+ <div v-if="title" class="paren_header">
|
|
|
<p>{{ title }}</p>
|
|
|
</div>
|
|
|
<template v-if="dataList.length">
|
|
|
- <div
|
|
|
- :class="active ? 'bgActive' : 'bgActivecheckbox'"
|
|
|
- class="paren_content"
|
|
|
- >
|
|
|
+ <div :class="active ? 'bgActive' : 'bgActivecheckbox'" class="paren_content">
|
|
|
<template v-if="!type">
|
|
|
- <el-scrollbar
|
|
|
- class="scrollBar"
|
|
|
- style="height: 100%"
|
|
|
- >
|
|
|
- <el-row
|
|
|
- v-infinite-scroll="load"
|
|
|
- :infinite-scroll-distance="20"
|
|
|
- infinite-scroll-disabled="disabled"
|
|
|
- class="scCont scrollbar"
|
|
|
- :gutter="16"
|
|
|
- >
|
|
|
- <el-checkbox-group
|
|
|
- @change="checkChange"
|
|
|
- v-model="checkList"
|
|
|
- >
|
|
|
- <el-col
|
|
|
- :span="number"
|
|
|
- v-for="(item, index) in dataList"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <div
|
|
|
- @click="handleBg(item, index)"
|
|
|
- :class="active && msg === index ? 'bgColor' : ''"
|
|
|
- class="cide"
|
|
|
- >
|
|
|
+ <el-scrollbar class="scrollBar" style="height: 100%">
|
|
|
+ <el-row v-infinite-scroll="load" :infinite-scroll-distance="20" infinite-scroll-disabled="disabled" class="scCont scrollbar" :gutter="16">
|
|
|
+ <el-checkbox-group @change="checkChange" v-model="checkList">
|
|
|
+ <el-col :span="number" v-for="(item, index) in dataList" :key="index">
|
|
|
+ <div @click="handleBg(item, index)" :class="active && msg === index ? 'bgColor' : ''" class="cide">
|
|
|
<div class="cide_header">
|
|
|
<p :title="item.name">{{ item.name }}</p>
|
|
|
<el-checkbox :label="index"></el-checkbox>
|
|
@@ -50,43 +24,19 @@
|
|
|
</el-scrollbar>
|
|
|
</template>
|
|
|
<template v-if="total > 1">
|
|
|
- <p
|
|
|
- class="center"
|
|
|
- v-if="loading"
|
|
|
- >加载中...</p>
|
|
|
- <p
|
|
|
- class="center"
|
|
|
- v-if="noMore"
|
|
|
- >没有更多数据了~</p>
|
|
|
+ <p class="center" v-if="loading">加载中...</p>
|
|
|
+ <p class="center" v-if="noMore">没有更多数据了~</p>
|
|
|
</template>
|
|
|
</div>
|
|
|
</template>
|
|
|
<template v-else-if="mainData.length">
|
|
|
- <div
|
|
|
- :class="active ? 'bgActive' : 'bgActivecheckbox'"
|
|
|
- class="paren_content"
|
|
|
- >
|
|
|
+ <div :class="active ? 'bgActive' : 'bgActivecheckbox'" class="paren_content">
|
|
|
<template v-if="type">
|
|
|
- <el-scrollbar
|
|
|
- class="scrollBar"
|
|
|
- style="height: 100%"
|
|
|
- >
|
|
|
+ <el-scrollbar class="scrollBar" style="height: 100%">
|
|
|
<el-row :gutter="16">
|
|
|
- <el-radio-group
|
|
|
- style="display: block"
|
|
|
- @change="radioChange"
|
|
|
- v-model="radio"
|
|
|
- >
|
|
|
- <el-col
|
|
|
- :span="number"
|
|
|
- v-for="(item, index) in mainData"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <div
|
|
|
- @click.stop="handleBg(index)"
|
|
|
- :class="active && msg === index ? 'bgColor' : ''"
|
|
|
- class="cide"
|
|
|
- >
|
|
|
+ <el-radio-group style="display: block" @change="radioChange" v-model="radio">
|
|
|
+ <el-col :span="number" v-for="(item, index) in mainData" :key="index">
|
|
|
+ <div @click.stop="handleBg(index)" :class="active && msg === index ? 'bgColor' : ''" class="cide">
|
|
|
<div class="cide_header">
|
|
|
<p>{{ item.name }}</p>
|
|
|
<el-radio :label="index"></el-radio>
|
|
@@ -100,10 +50,7 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<template v-else>
|
|
|
- <el-empty
|
|
|
- :imageSize="imageSize"
|
|
|
- description="暂无数据"
|
|
|
- ></el-empty>
|
|
|
+ <el-empty :imageSize="imageSize" description="暂无数据"></el-empty>
|
|
|
</template>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -168,7 +115,7 @@ export default {
|
|
|
default: 0
|
|
|
}
|
|
|
},
|
|
|
- data() {
|
|
|
+ data () {
|
|
|
return {
|
|
|
radio: null,
|
|
|
checkList: [],
|
|
@@ -186,13 +133,13 @@ export default {
|
|
|
},
|
|
|
watch: {
|
|
|
radioCheck: {
|
|
|
- handler(num) {
|
|
|
+ handler (num) {
|
|
|
this.radio = num
|
|
|
},
|
|
|
deep: true
|
|
|
},
|
|
|
roleType: {
|
|
|
- handler(msg) {
|
|
|
+ handler (msg) {
|
|
|
const obj = {}
|
|
|
obj[msg] = msg
|
|
|
this.msgDatas.push(obj)
|
|
@@ -200,7 +147,7 @@ export default {
|
|
|
deep: true
|
|
|
},
|
|
|
dataList: {
|
|
|
- handler(arr) {
|
|
|
+ handler (arr) {
|
|
|
if (arr && arr.length) {
|
|
|
this.asyncData.push(true)
|
|
|
}
|
|
@@ -208,7 +155,7 @@ export default {
|
|
|
deep: true
|
|
|
},
|
|
|
checkBoxList: {
|
|
|
- handler(arr) {
|
|
|
+ handler (arr) {
|
|
|
if (arr && arr.length) {
|
|
|
this.asyncData.push(true)
|
|
|
}
|
|
@@ -216,7 +163,7 @@ export default {
|
|
|
deep: true
|
|
|
},
|
|
|
asyncData: {
|
|
|
- handler(arr) {
|
|
|
+ handler (arr) {
|
|
|
if (arr && arr.length >= 2) {
|
|
|
if (this.roleType == 'account') {
|
|
|
this.checkBoxs('UserId')
|
|
@@ -229,15 +176,18 @@ export default {
|
|
|
deep: true
|
|
|
},
|
|
|
GroupIds: {
|
|
|
- handler() {
|
|
|
+ handler () {
|
|
|
const obj = {}
|
|
|
obj['GroupIds'] = 'GroupIds'
|
|
|
this.msgDatas.push(obj)
|
|
|
+ // if (this.roleType == 'q') {
|
|
|
+ // this.checkList = []
|
|
|
+ // }
|
|
|
},
|
|
|
deep: true
|
|
|
},
|
|
|
msgDatas: {
|
|
|
- handler(arr) {
|
|
|
+ handler (arr) {
|
|
|
if (arr && arr.length >= 2) {
|
|
|
if (this.queryAll) {
|
|
|
this.getRoleData('RoleId', 'RoleName')
|
|
@@ -261,7 +211,7 @@ export default {
|
|
|
deep: true
|
|
|
},
|
|
|
selectedRoleId: {
|
|
|
- handler(val) {
|
|
|
+ handler (val) {
|
|
|
if (val === -1) {
|
|
|
this.msg = -1
|
|
|
}
|
|
@@ -269,26 +219,26 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
- noMore() {
|
|
|
+ noMore () {
|
|
|
return this.pageNum >= this.total
|
|
|
},
|
|
|
- disabled() {
|
|
|
+ disabled () {
|
|
|
return this.loading || this.noMore
|
|
|
}
|
|
|
},
|
|
|
- created() {
|
|
|
+ created () {
|
|
|
const obj = this.$store.state.app.systemSet
|
|
|
const { OpenGroup } = typeof obj === 'string' ? JSON.parse(obj) : obj
|
|
|
this.OpenGroup = OpenGroup
|
|
|
},
|
|
|
methods: {
|
|
|
// 选中
|
|
|
- handleBg(item, i) {
|
|
|
+ handleBg (item, i) {
|
|
|
this.msg = i
|
|
|
this.$emit('checkClick', item)
|
|
|
},
|
|
|
//多选框
|
|
|
- checkChange(arr) {
|
|
|
+ checkChange (arr) {
|
|
|
const datas = this.formatChecks(arr)
|
|
|
// if (this.roleType == 'account') {
|
|
|
// datas = this.formatChecks(arr, 'UserId');
|
|
@@ -296,11 +246,11 @@ export default {
|
|
|
this.$emit('checkChange', datas)
|
|
|
},
|
|
|
//单选框
|
|
|
- radioChange(val) {
|
|
|
+ radioChange (val) {
|
|
|
this.$emit('radioChange', val)
|
|
|
},
|
|
|
//格式化选中回调
|
|
|
- formatChecks(arr, key) {
|
|
|
+ formatChecks (arr, key) {
|
|
|
const datas = []
|
|
|
// const ids = []
|
|
|
this.dataList.forEach((item, index) => {
|
|
@@ -316,7 +266,7 @@ export default {
|
|
|
return datas
|
|
|
},
|
|
|
//多选框默认选中
|
|
|
- checkBoxs(ids) {
|
|
|
+ checkBoxs (ids) {
|
|
|
const datas = []
|
|
|
const type = typeof this.checkBoxList[0]
|
|
|
if (type == 'object') {
|
|
@@ -338,7 +288,7 @@ export default {
|
|
|
}
|
|
|
this.checkList = datas
|
|
|
},
|
|
|
- checkRole() {
|
|
|
+ checkRole () {
|
|
|
const datas = []
|
|
|
this.dataList.forEach((item, index) => {
|
|
|
this.checkBoxList.forEach(p => {
|
|
@@ -350,7 +300,7 @@ export default {
|
|
|
this.checkList = datas
|
|
|
},
|
|
|
//获取列表
|
|
|
- async getRoleData(ids, names) {
|
|
|
+ async getRoleData (ids, names) {
|
|
|
try {
|
|
|
this.loading = true
|
|
|
const obj = {
|
|
@@ -394,7 +344,7 @@ export default {
|
|
|
},
|
|
|
|
|
|
//获取列表2
|
|
|
- async getRoleDataByUpId() {
|
|
|
+ async getRoleDataByUpId () {
|
|
|
try {
|
|
|
this.loading = true
|
|
|
const obj = {
|
|
@@ -429,7 +379,7 @@ export default {
|
|
|
},
|
|
|
|
|
|
//滚动加载数据
|
|
|
- load() {
|
|
|
+ load () {
|
|
|
this.pageNum += 1
|
|
|
if (this.roleType == 'account') {
|
|
|
this.getRoleData('UserId', 'UserName')
|
|
@@ -443,7 +393,7 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
-@import './rolelist.scss';
|
|
|
+@import "./rolelist.scss";
|
|
|
.paren_content {
|
|
|
::v-deep .el-radio__label {
|
|
|
display: none;
|