|
|
|
@ -1,166 +1,97 @@ |
|
|
|
<template> |
|
|
|
<div class="role-container"> |
|
|
|
<el-card class="flex1"> |
|
|
|
<el-tabs v-model.trim="activeName" |
|
|
|
@tab-click="tabClick" |
|
|
|
class="el-tabs"> |
|
|
|
<el-tab-pane label="工作端" |
|
|
|
name="work"> |
|
|
|
<el-tabs v-model.trim="activeName" @tab-click="tabClick" class="el-tabs"> |
|
|
|
<el-tab-pane label="工作端" name="work"> |
|
|
|
<div class="now-name"> |
|
|
|
上下拖动可改变角色顺序 |
|
|
|
<el-button type="primary" |
|
|
|
size="small" |
|
|
|
@click="handleSaveSort">保存顺序</el-button> |
|
|
|
<el-button type="primary" size="small" @click="handleSaveSort">保存顺序</el-button> |
|
|
|
</div> |
|
|
|
<el-table ref="roleTable" |
|
|
|
v-loading="loading1" |
|
|
|
:data="roleList" |
|
|
|
row-key="roleKey" |
|
|
|
border |
|
|
|
<el-table ref="roleTable" v-loading="loading1" :data="roleList" row-key="roleKey" border |
|
|
|
style="width: 100%"> |
|
|
|
<el-table-column type="index" |
|
|
|
header-align="left" |
|
|
|
align="left" |
|
|
|
width="50"></el-table-column> |
|
|
|
<el-table-column prop="roleName" |
|
|
|
label="角色名称" |
|
|
|
header-align="left" |
|
|
|
align="left" |
|
|
|
width="180"> |
|
|
|
<el-table-column type="index" header-align="left" align="left" width="50"></el-table-column> |
|
|
|
<el-table-column prop="roleName" label="角色名称" header-align="left" align="left" width="180"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-input v-if="scope.row.isEdit" |
|
|
|
v-model.trim="scope.row.roleName" |
|
|
|
clearable> |
|
|
|
<el-input v-if="scope.row.isEdit" v-model.trim="scope.row.roleName" clearable> |
|
|
|
</el-input> |
|
|
|
<span v-else>{{ scope.row.constName }}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column v-if="!funcShow" |
|
|
|
prop="roleKey" |
|
|
|
header-align="left" |
|
|
|
align="left" |
|
|
|
label="角色Key" |
|
|
|
<el-table-column v-if="!funcShow" prop="roleKey" header-align="left" align="left" label="角色Key" |
|
|
|
width="150"></el-table-column> |
|
|
|
<el-table-column prop="description" |
|
|
|
label="角色职责" |
|
|
|
header-align="left" |
|
|
|
align="left"> |
|
|
|
<el-table-column prop="description" label="角色职责" header-align="left" align="left"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<p style="text-align:left;margin:3px 0" |
|
|
|
v-for="(item,index) in scope.row.descriptionList" |
|
|
|
:key="index">{{item}}</p> |
|
|
|
v-for="(item, index) in scope.row.descriptionList" :key="index">{{ item }}</p> |
|
|
|
<!-- <p>{{scope.row.description}}</p> --> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column width="450" |
|
|
|
label="操作"> |
|
|
|
<el-table-column width="450" label="操作"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button type="primary" |
|
|
|
size="mini" |
|
|
|
<el-button type="primary" size="mini" |
|
|
|
@click="handelChangeDuty(scope.row)">修改职责</el-button> |
|
|
|
<el-button type="primary" |
|
|
|
size="mini" |
|
|
|
<el-button type="primary" size="mini" |
|
|
|
@click="toOperationConfig(scope.row.roleKey, scope.row.roleName)">功能权限</el-button> |
|
|
|
<span v-if="scope.row.isEdit" |
|
|
|
style="display: inline-block; margin-left: 10px;"> |
|
|
|
<el-button type="primary" |
|
|
|
size="small" |
|
|
|
@click="saveName(scope.row)">保存</el-button> |
|
|
|
<el-button size="small" |
|
|
|
@click="scope.row.isEdit=false">取消</el-button> |
|
|
|
<span v-if="scope.row.isEdit" style="display: inline-block; margin-left: 10px;"> |
|
|
|
<el-button type="primary" size="small" @click="saveName(scope.row)">保存</el-button> |
|
|
|
<el-button size="small" @click="scope.row.isEdit = false">取消</el-button> |
|
|
|
</span> |
|
|
|
<el-button v-else |
|
|
|
type="primary" |
|
|
|
size="mini" |
|
|
|
<el-button v-else type="primary" size="mini" |
|
|
|
@click="handleChangeName(scope.row)">修改名称</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</el-tab-pane> |
|
|
|
<el-tab-pane label="居民端" |
|
|
|
name="resi"> |
|
|
|
<el-tab-pane label="居民端" name="resi"> |
|
|
|
</el-tab-pane> |
|
|
|
</el-tabs> |
|
|
|
</el-card> |
|
|
|
<!-- 角色职责弹出框 --> |
|
|
|
<el-dialog :visible.sync="dutyShow" |
|
|
|
:close-on-click-modal="false" |
|
|
|
:close-on-press-escape="false" |
|
|
|
title="角色职责" |
|
|
|
width="30%" |
|
|
|
@closed="handleDutyClosed"> |
|
|
|
<div class="div_duty" |
|
|
|
v-if="dutyShow"> |
|
|
|
<el-input type="textarea" |
|
|
|
:rows="8" |
|
|
|
v-model.trim="description"></el-input> |
|
|
|
<el-dialog :visible.sync="dutyShow" :close-on-click-modal="false" :close-on-press-escape="false" title="角色职责" |
|
|
|
width="30%" @closed="handleDutyClosed"> |
|
|
|
<div class="div_duty" v-if="dutyShow"> |
|
|
|
<el-input type="textarea" :rows="8" v-model.trim="description"></el-input> |
|
|
|
<div class="div_btn"> |
|
|
|
<el-button type="primary" |
|
|
|
size="small" |
|
|
|
@click="updateRole()">保存</el-button> |
|
|
|
<el-button size="small" |
|
|
|
@click="dutyShow=false">取消</el-button> |
|
|
|
<el-button type="primary" size="small" @click="updateRole()">保存</el-button> |
|
|
|
<el-button size="small" @click="dutyShow = false">取消</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
<!-- 功能配置弹出框 --> |
|
|
|
<el-dialog :visible.sync="funcShow" |
|
|
|
:close-on-click-modal="false" |
|
|
|
:close-on-press-escape="false" |
|
|
|
width="70%" |
|
|
|
top="30px" |
|
|
|
title="功能列表" |
|
|
|
@closed="handleDialogClosed"> |
|
|
|
<div class="role-flex" |
|
|
|
v-if="funcShow"> |
|
|
|
<el-dialog :visible.sync="funcShow" :close-on-click-modal="false" :close-on-press-escape="false" width="70%" |
|
|
|
top="30px" title="功能列表" @closed="handleDialogClosed"> |
|
|
|
<div class="role-flex" v-if="funcShow"> |
|
|
|
<el-card class="flex1"> |
|
|
|
<div class="now-name">当前角色: {{ roleName }}</div> |
|
|
|
<div class="now-name"> |
|
|
|
<el-button type="primary" |
|
|
|
size="small" |
|
|
|
@click="saveOperations4Role">保存功能</el-button> |
|
|
|
<el-button type="primary" size="small" @click="saveOperations4Role">保存功能</el-button> |
|
|
|
</div> |
|
|
|
<el-table v-loading="loading2" |
|
|
|
height="580" |
|
|
|
ref="opeTable" |
|
|
|
:data="opeList" |
|
|
|
border |
|
|
|
<el-table v-loading="loading2" height="580" ref="opeTable" :data="opeList" border |
|
|
|
@select="handleSelectionChange"> |
|
|
|
<el-table-column type="selection" |
|
|
|
width="55"></el-table-column> |
|
|
|
<el-table-column type="selection" width="55"></el-table-column> |
|
|
|
<!-- <el-table-column prop="operationKey" label="操作Key"></el-table-column> --> |
|
|
|
<el-table-column prop="operationName" |
|
|
|
label="操作名称"></el-table-column> |
|
|
|
<el-table-column prop="operationName" label="操作名称"></el-table-column> |
|
|
|
<!-- <el-table-column prop="brief" label="简介"></el-table-column> --> |
|
|
|
<el-table-column label="操作"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button type="primary" |
|
|
|
size="small" |
|
|
|
<el-button type="primary" size="small" |
|
|
|
@click="toScopeConfig(scope.row.operationKey, scope.row.operationName)">范围配置</el-button> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</el-card> |
|
|
|
<el-card v-show="roleShow" |
|
|
|
style="width: 250px; margin-left: 10px;"> |
|
|
|
<el-card v-show="roleShow" style="width: 250px; margin-left: 10px;"> |
|
|
|
<div class="now-name">当前功能: {{ funcName }}</div> |
|
|
|
<div class="now-name"> |
|
|
|
<el-button type="primary" |
|
|
|
size="small" |
|
|
|
@click="saveSettings">保存范围</el-button> |
|
|
|
<el-button type="primary" |
|
|
|
size="small" |
|
|
|
@click="toAllClient">同步到所有客户</el-button> |
|
|
|
<el-button type="primary" size="small" @click="saveSettings">保存范围</el-button> |
|
|
|
<el-button type="primary" size="small" @click="toAllClient">同步到所有客户</el-button> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<el-row :gutter="12"> |
|
|
|
<el-col v-loading="loading3"> |
|
|
|
<el-card shadow="hover"> |
|
|
|
<el-checkbox-group class="t" |
|
|
|
v-model.trim="checkedScopes" |
|
|
|
@change="roleChange"> |
|
|
|
<el-checkbox v-for="scope in scopeOptions" |
|
|
|
:label="scope.scopeKey" |
|
|
|
<el-checkbox-group class="t" v-model.trim="checkedScopes" @change="roleChange"> |
|
|
|
<el-checkbox v-for="scope in scopeOptions" :label="scope.scopeKey" |
|
|
|
:key="scope.scopeKey">{{ scope.scopeName }}</el-checkbox> |
|
|
|
</el-checkbox-group> |
|
|
|
</el-card> |
|
|
|
@ -480,24 +411,30 @@ export default { |
|
|
|
.role-flex { |
|
|
|
display: flex; |
|
|
|
} |
|
|
|
|
|
|
|
.flex1 { |
|
|
|
flex: 1; |
|
|
|
} |
|
|
|
|
|
|
|
.now-name { |
|
|
|
/* display: flex; |
|
|
|
justify-content: space-between; */ |
|
|
|
margin-bottom: 10px; |
|
|
|
} |
|
|
|
|
|
|
|
.aui-wrapper .el-card+.el-card { |
|
|
|
margin-top: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.role-container .el-dialog__body { |
|
|
|
padding: 0 20px 20px; |
|
|
|
} |
|
|
|
|
|
|
|
.div_duty { |
|
|
|
height: 300px; |
|
|
|
position: relative; |
|
|
|
} |
|
|
|
|
|
|
|
.div_btn { |
|
|
|
position: absolute; |
|
|
|
bottom: 30px; |
|
|
|
|