You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1352 lines
43 KiB
1352 lines
43 KiB
<template>
|
|
<div class="mod-user">
|
|
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
|
|
<el-form-item>
|
|
<el-input v-model="dataForm.userName" placeholder="用户账号" clearable></el-input>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button @click="getDataList()" type="primary">{{ buttons.search || '查询' }}</el-button>
|
|
<el-button v-if="isAuth('sys:user:save')" type="primary" @click="addOrUpdateHandle()">
|
|
{{ buttons.add || '新增' }}
|
|
</el-button>
|
|
<el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
|
|
@click="specialAuthorize()"
|
|
>{{ buttons.specialCompetencies || '特殊权限' }}
|
|
</el-button>
|
|
<el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
|
|
@click="siteAuthorize()"
|
|
> {{ buttons.factoryAuthorization || '工厂授权' }}
|
|
</el-button>
|
|
<el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
|
|
@click="buAuthorize()"
|
|
> {{ buttons.buAuthorization || 'BU授权' }}
|
|
</el-button>
|
|
<el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
|
|
@click="projectModel()"
|
|
> {{ buttons.projectAuthorization || '项目授权' }}
|
|
</el-button>
|
|
|
|
<el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
|
|
@click="FieldListModel()"
|
|
> {{ buttons.fieldAuthorization || '字段授权' }}
|
|
</el-button>
|
|
<el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
|
|
@click="roleAuthorize()"
|
|
> {{ buttons.roleAuthorization || '角色授权' }}
|
|
</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
|
|
<el-table
|
|
:data="dataList"
|
|
border
|
|
:height="height"
|
|
v-loading="dataListLoading"
|
|
@selection-change="selectionChangeHandle"
|
|
highlight-current-row
|
|
@current-change="handleCurrentChange"
|
|
style="width: 100%;">
|
|
|
|
<el-table-column
|
|
prop="username"
|
|
header-align="center"
|
|
align="center"
|
|
:label="buttons.username||'用户账号'">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="userDisplay"
|
|
header-align="center"
|
|
align="center"
|
|
:label="buttons.userDisplay||'用户名'">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="buDesc"
|
|
header-align="center"
|
|
align="center"
|
|
:label="'BU'">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="departmentName"
|
|
header-align="center"
|
|
align="center"
|
|
:label="'部门'">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="postName"
|
|
header-align="center"
|
|
align="center"
|
|
:label="'岗位'">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="email"
|
|
header-align="center"
|
|
align="center"
|
|
:label="buttons.email||'邮箱'">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="mobile"
|
|
header-align="center"
|
|
align="center"
|
|
:label="buttons.mobile||'手机号'">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="status"
|
|
header-align="center"
|
|
align="center"
|
|
:label="buttons.status||'状态'">
|
|
<template slot-scope="scope">
|
|
<el-link v-if="scope.row.status === 0" type="success">{{ buttons.disable || '禁用' }}</el-link>
|
|
<el-link v-else type="danger">{{ buttons.normal || '正常' }}</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="createTime"
|
|
header-align="center"
|
|
align="center"
|
|
width="180"
|
|
:label="buttons.createTime||'创建时间'">
|
|
</el-table-column>
|
|
<el-table-column
|
|
fixed="right"
|
|
header-align="center"
|
|
align="center"
|
|
width="150"
|
|
:label="buttons.cz||'操作'">
|
|
<template slot-scope="scope">
|
|
<!-- <a type="text" size="small" @click="generateData(scope.row)">{{ buttons.auth || '审核' }}</a>-->
|
|
<a type="text" size="small" @click="permissionList(scope.row)">权限清单</a>
|
|
<a v-if="isAuth('sys:user:update')" type="text" size="small"
|
|
@click="addOrUpdateHandle(scope.row.userId)">{{ buttons.edit || '修改' }}</a>
|
|
<a v-if="isAuth('sys:user:delete')" type="text" size="small"
|
|
@click="deleteHandle(scope.row.userId)">{{ buttons.delete || '删除' }}</a>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<el-pagination
|
|
@size-change="sizeChangeHandle"
|
|
@current-change="currentChangeHandle"
|
|
:current-page="pageIndex"
|
|
:page-sizes="[20, 50, 100, 200, 500]"
|
|
:page-size="pageSize"
|
|
:total="totalPage"
|
|
layout="total, sizes, prev, pager, next, jumper">
|
|
</el-pagination>
|
|
<!-- 权限清单 -->
|
|
<el-dialog title="权限清单" @close="closeDataDialog" @open="getUserAccessSiteInfoList" :close-on-click-modal="false" v-drag :visible.sync="permissionFlag" width="900px">
|
|
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
|
|
用户: <el-input v-model="selectUser.username" style="width: 130px" readonly></el-input>
|
|
名称: <el-input v-model="selectUser.userDisplay" style="width: 130px" readonly></el-input>
|
|
<el-tabs v-model="activeTable" style="margin-top: 0; width: 100%; min-height: 350px;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);border: 2px;" @tab-click="tabClick" class="customer-tab">
|
|
<!-- 工厂权限页签 -->
|
|
<el-tab-pane label="工厂权限" name="factory_information" style="height: 350px;">
|
|
<el-table
|
|
:data="userSiteList"
|
|
border
|
|
style="width: 100%;height: 500px">
|
|
<el-table-column
|
|
prop="siteID"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="50"
|
|
label="工厂编码">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="siteName"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="工厂名称">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="address"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="地址">
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
<!-- BU权限页签 -->
|
|
<el-tab-pane label="BU权限" name="BU_information" style="height: 350px;">
|
|
<el-table
|
|
:data="userBUList"
|
|
border
|
|
style="width: 100%;height: 500px">
|
|
<el-table-column
|
|
prop="site"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="50"
|
|
label="工厂编码">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="buNo"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="部门编码">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="buDesc"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="部门名称">
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
<!-- 项目权限页签 -->
|
|
<el-tab-pane label="项目权限" name="project_information" style="height: 350px;">
|
|
<el-table
|
|
:data="userProjectList"
|
|
border
|
|
style="width: 100%;height: 500px">
|
|
<el-table-column
|
|
prop="site"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="50"
|
|
label="工厂编码">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="buDesc"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="部门名称">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="projectId"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="50"
|
|
label="项目号">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="status"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="项目状态">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="needDate"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="要求完成时间">
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
<!-- 字段权限页签 -->
|
|
<el-tab-pane label="字段权限" name="field_function_information" style="height: 350px;">
|
|
<el-table
|
|
:data="userFieldList"
|
|
border
|
|
style="width: 100%;height: 500px">
|
|
<el-table-column
|
|
prop="functionName"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="50"
|
|
label="功能名称">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="functionGroup"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="功能分组">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="fieldDesc"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="50"
|
|
label="字段名称">
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
<!-- 特殊权限页签 -->
|
|
<el-tab-pane label="特殊权限" name="security_information" style="height: 350px;">
|
|
<el-table
|
|
:data="securityList"
|
|
border
|
|
v-loading="dataListLoading"
|
|
style="width: 100%;height: 500px">
|
|
<el-table-column
|
|
v-for="(item,index) in columnList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnHidden">
|
|
<el-checkbox v-model="scope.row[item.columnProp] "></el-checkbox>
|
|
</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
|
|
style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
<!-- 角色权限页签 -->
|
|
<el-tab-pane label="角色权限" name="role_information" style="height: 350px;">
|
|
<el-table
|
|
:data="userRoleList"
|
|
border
|
|
style="width: 100%;height: 500px">
|
|
<el-table-column
|
|
prop="site"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="50"
|
|
label="工厂编码">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="roleNo"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="角色编码">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="roleDesc"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="角色名称">
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</el-form>
|
|
<el-footer style="height:40px;margin-top: 20px;text-align:center">
|
|
<el-button @click="permissionFlag = false" type="primary">关闭</el-button>
|
|
</el-footer>
|
|
</el-dialog>
|
|
<!-- 弹窗, 新增 / 修改 -->
|
|
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
|
|
<!-- 审核权限 -->
|
|
<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-drag :title="inputSearch1"
|
|
:visible.sync="setUp.reviewFlag" width="518px">
|
|
<template>
|
|
<el-transfer v-model="checked" :data="transferData"
|
|
:titles="[buttons.allAuth || '所有权限', buttons.currentAuth || '当前权限']"></el-transfer>
|
|
</template>
|
|
<span slot="footer" class="dialog-footer">
|
|
<div style="margin-top: 5px">
|
|
<el-button type="primary" :disabled="setUp.saveButton" @click="saveUserRoleFlag()">确定</el-button>
|
|
<el-button type="primary" @click="setUp.reviewFlag = false">取消</el-button>
|
|
</div>
|
|
</span>
|
|
</el-dialog>
|
|
<!-- 特殊权限 -->
|
|
<el-dialog
|
|
v-drag
|
|
:title="'特殊性权限'"
|
|
:visible.sync="specialVisible"
|
|
width="820px"
|
|
:append-to-body="true">
|
|
<el-table
|
|
:data="securityList"
|
|
border
|
|
:height="securityHeight"
|
|
v-loading="dataListLoading"
|
|
style="width: 100%;">
|
|
<el-table-column
|
|
v-for="(item,index) in columnList" :key="index"
|
|
:sortable="item.columnSortable"
|
|
:prop="item.columnProp"
|
|
:header-align="item.headerAlign"
|
|
:show-overflow-tooltip="item.showOverflowTooltip"
|
|
:align="item.align"
|
|
:fixed="item.fixed==''?false:item.fixed"
|
|
:min-width="item.columnWidth"
|
|
:label="item.columnLabel">
|
|
<template slot-scope="scope">
|
|
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
|
|
<span v-if="item.columnHidden">
|
|
<el-checkbox v-model="scope.row[item.columnProp] "></el-checkbox>
|
|
</span>
|
|
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
|
|
style="width: 100px; height: 80px"/></span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button type="primary" @click="saveUserSecurity()">确定</el-button>
|
|
<el-button @click="specialVisible = false" type="primary">取消</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
<!-- 工厂授权 -->
|
|
<el-dialog
|
|
style="font-size: 12px"
|
|
v-drag
|
|
:title="'工厂授权'"
|
|
:visible.sync="siteVisible"
|
|
width="518px"
|
|
:append-to-body="true"
|
|
@close="closeDataDialog">
|
|
<el-transfer class="rq" filterable v-model="selectSitList" :data="siteList" :titles="['未授权工厂', '已授权工厂']"></el-transfer>
|
|
<span slot="footer" class="dialog-footer">
|
|
<div style="margin-top: 5px">
|
|
<el-button type="primary" @click="saveUserAssessSite()">确定</el-button>
|
|
<el-button @click="siteVisible = false" type="primary">取消</el-button>
|
|
</div>
|
|
|
|
</span>
|
|
</el-dialog>
|
|
|
|
<!-- BU授权 -->
|
|
<el-dialog
|
|
style="font-size: 12px"
|
|
v-drag
|
|
:title="'BU授权'"
|
|
:visible.sync="buVisible"
|
|
width="518px"
|
|
:append-to-body="true">
|
|
<el-transfer class="rq" filterable v-model="selectBUList" :props="{
|
|
key: 'buNo',
|
|
label: 'buDesc'
|
|
}" :data="buList" :titles="['未授权BU', '已授权BU']"></el-transfer>
|
|
<span slot="footer" class="dialog-footer">
|
|
<div style="margin-top: 5px">
|
|
<el-button type="primary" @click="saveBuAssessSite()">确定</el-button>
|
|
<el-button @click="buVisible = false" type="primary">取消</el-button>
|
|
</div>
|
|
|
|
</span>
|
|
</el-dialog>
|
|
<!-- 功能清单 -->
|
|
<el-dialog
|
|
width="600px"
|
|
title="功能清单"
|
|
:close-on-click-modal="false"
|
|
:visible.sync="functionFlag">
|
|
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
|
|
用户: <el-input v-model="selectUser.username" style="width: 130px" readonly></el-input>
|
|
名称: <el-input v-model="selectUser.userDisplay" style="width: 130px" readonly></el-input>
|
|
</el-form>
|
|
<el-table
|
|
height="300"
|
|
:data="functionList"
|
|
border
|
|
style="width: 100%">
|
|
<el-table-column
|
|
prop="functionName"
|
|
header-align="center"
|
|
align="left"
|
|
min-width="80"
|
|
label="功能名称">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="functionGroup"
|
|
header-align="center"
|
|
align="left"
|
|
min-width="100"
|
|
label="功能分组">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop=""
|
|
header-align="center"
|
|
align="center"
|
|
width="60"
|
|
label="操作">
|
|
<template slot-scope="scope" class="foo_container">
|
|
<a type="text" size="small" @click="accessModel(scope.row)">授权</a>
|
|
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button type="primary" @click="functionFlag = false">关闭</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
<!-- 字段授权 -->
|
|
<el-dialog
|
|
style="font-size: 12px"
|
|
v-drag
|
|
:title="'字段授权'"
|
|
:visible.sync="fieldFlag"
|
|
width="518px"
|
|
:append-to-body="true">
|
|
<el-transfer v-model="selectFieldList" class="rq" filterable :props="{
|
|
key: 'fieldId',
|
|
label: 'fieldDesc'
|
|
}" :data="fieldList" :titles="['未选择', '已选择']"></el-transfer>
|
|
<span slot="footer" class="dialog-footer">
|
|
<div style="margin-top: 5px">
|
|
<el-button type="primary" @click="saveAccessFieldListByUser()">确定</el-button>
|
|
<el-button @click="fieldFlag = false" type="primary">取消</el-button>
|
|
</div>
|
|
</span>
|
|
</el-dialog>
|
|
<!-- 角色授权 -->
|
|
<el-dialog
|
|
style="font-size: 12px"
|
|
v-drag
|
|
:title="'角色授权'"
|
|
:visible.sync="roleVisible"
|
|
width="518px"
|
|
:append-to-body="true">
|
|
<el-transfer class="rq" filterable v-model="selectRoleList" :props="{
|
|
key: 'roleNo',
|
|
label: 'roleDesc'
|
|
}" :data="roleList" :titles="['未授权角色', '已授权角色']"></el-transfer>
|
|
<span slot="footer" class="dialog-footer">
|
|
<div style="margin-top: 5px">
|
|
<el-button type="primary" @click="saveRoleAssessSite()">确定</el-button>
|
|
<el-button @click="roleVisible = false" type="primary">取消</el-button>
|
|
</div>
|
|
|
|
</span>
|
|
</el-dialog>
|
|
|
|
<el-dialog
|
|
width="600px"
|
|
title="项目权限"
|
|
:close-on-click-modal="false"
|
|
:visible.sync="projectRoleFlag">
|
|
<el-table
|
|
:data="projectRoleList"
|
|
border
|
|
:height="400"
|
|
v-loading="false"
|
|
style="width: 100%;">
|
|
<el-table-column
|
|
prop="projectId"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="50"
|
|
label="项目号">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop="projectDesc"
|
|
header-align="center"
|
|
align="center"
|
|
min-width="100"
|
|
label="项目描述">
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop=""
|
|
header-align="center"
|
|
align="center"
|
|
min-width="25"
|
|
label="">
|
|
<template slot-scope="scope">
|
|
<!-- 如果数据为Y,显示勾选框,否则不勾选 -->
|
|
<el-checkbox v-model="scope.row.checkAll" @change="changeAll(scope.row)"></el-checkbox>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop=""
|
|
header-align="center"
|
|
align="center"
|
|
min-width="25"
|
|
label="查询">
|
|
<template slot-scope="scope">
|
|
<!-- 如果数据为Y,显示勾选框,否则不勾选 -->
|
|
<el-checkbox v-model="scope.row.searchCheck" @change="changeCheck(scope.row,1)"></el-checkbox>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop=""
|
|
header-align="center"
|
|
align="center"
|
|
min-width="25"
|
|
label="修改">
|
|
<template slot-scope="scope">
|
|
<!-- 如果数据为Y,显示勾选框,否则不勾选 -->
|
|
<el-checkbox v-model="scope.row.updateCheck" @change="changeCheck(scope.row,2)"></el-checkbox>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop=""
|
|
header-align="center"
|
|
align="center"
|
|
min-width="25"
|
|
label="下载">
|
|
<template slot-scope="scope">
|
|
<!-- 如果数据为Y,显示勾选框,否则不勾选 -->
|
|
<el-checkbox v-model="scope.row.downCheck" @change="changeCheck(scope.row,3)"></el-checkbox>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
prop=""
|
|
header-align="center"
|
|
align="center"
|
|
min-width="25"
|
|
label="删除">
|
|
<template slot-scope="scope">
|
|
<!-- 如果数据为Y,显示勾选框,否则不勾选 -->
|
|
<el-checkbox v-model="scope.row.deleteCheck" @change="changeCheck(scope.row,4)"></el-checkbox>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
<div style="margin-top: 5px">
|
|
<el-button type="primary" @click="saveAccessProject()">确定</el-button>
|
|
<el-button @click="projectRoleFlag = false" type="primary">取消</el-button>
|
|
</div>
|
|
</span>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import {getUserAccessSiteList, saveUserAccessSiteList} from '@/api/factory/accessSite.js'
|
|
import {getSiteList} from '@/api/factory/site.js'
|
|
import {searchAccessBuList,searchAccessRoleList,saveAccessBU,saveAccessRole,searchAccessProjectForUser,saveAccessProject, getUserAccessSiteInfoList, getUserAccessBUInfoList, getUserAccessRoleInfoList, getUserAccessProjectInfoList} from '@/api/base/site.js'
|
|
import {
|
|
searchFieldFunctionList,searchAccessFieldListByUser,saveAccessFieldListByUser,getUserAccessFieldFunctionInfoList
|
|
} from "@/api/base/field.js"
|
|
import AddOrUpdate from './user-add-or-update'
|
|
import {getUserBusinessRoleList, saveUserBusinessRole} from '@/api/auditManagement/auditType.js'
|
|
import {
|
|
|
|
getUserSpecialSecurity,
|
|
saveUserSpecialSecurity,
|
|
updateUserSpecialSecurity,
|
|
} from '@/api/factory/userSpecialSecurity.js'
|
|
import {debounce, throttle} from "../../../utils/common";
|
|
import {
|
|
searchFunctionButtonList,
|
|
} from "@/api/sysLanguage.js"
|
|
import {
|
|
getBUList,
|
|
getDepartmentList,
|
|
getPostList,
|
|
saveAccessSiteForSite,
|
|
searchAccessSiteListBySite
|
|
} from '../../../api/base/site'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
accessSiteVisible: false,
|
|
projectRoleFlag: false,
|
|
projectRoleList: [],
|
|
accessSiteList: [],
|
|
showButton: true,
|
|
height: 200,
|
|
securityHeight: 300,
|
|
specialVisible: false,
|
|
siteVisible: false,
|
|
buVisible: false,
|
|
roleVisible: false,
|
|
currentData: {},
|
|
userId: this.$store.state.user.name,
|
|
transferData: [],
|
|
checked: [],
|
|
selectBUList: [],
|
|
buList: [],
|
|
selectRoleList: [],
|
|
roleList:[],
|
|
userSiteList: [],
|
|
userBUList:[],
|
|
userRoleList:[],
|
|
userProjectList:[],
|
|
userFieldList:[],
|
|
userData: [],
|
|
inputSearch1: '审核权限',
|
|
//设置
|
|
setUp: {
|
|
reviewFlag: false,
|
|
saveButton: false,
|
|
},
|
|
dataForm: {
|
|
id: 0,
|
|
userName: '',
|
|
password: '',
|
|
comfirmPassword: '',
|
|
languageDefault: '',
|
|
salt: '',
|
|
email: '',
|
|
mobile: '',
|
|
buNo: '',
|
|
buDesc: '',
|
|
roleNo: '',
|
|
roleDesc: '',
|
|
departmentNo:'',
|
|
departmentName:'',
|
|
postNo:'',
|
|
postName:'',
|
|
roleIdList: [],
|
|
status: 1,
|
|
site: '',
|
|
siteID: '',
|
|
siteName:'',
|
|
userDisplay: ''
|
|
},
|
|
// 初始页签
|
|
activeTable: 'factory_information',
|
|
columnList: [
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
serialNumber: 'security' + this.$route.meta.menuId + 'securitydesc',
|
|
tableId: this.$route.meta.menuId + 'security',
|
|
tableName: "securityTable",
|
|
columnProp: "securitydesc",
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: "参数描述",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnWidth: 70,
|
|
columnSortable: false,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
serialNumber: 'security' + this.$route.meta.menuId + 'securitydesc',
|
|
tableId: this.$route.meta.menuId + 'security',
|
|
tableName: "securityTable",
|
|
columnProp: "module",
|
|
headerAlign: "center",
|
|
align: "left",
|
|
columnLabel: "模块",
|
|
columnHidden: false,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: 20,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
{
|
|
userId: this.$store.state.user.name,
|
|
serialNumber: 'security' + this.$route.meta.menuId + 'securitydesc',
|
|
tableId: this.$route.meta.menuId + 'security',
|
|
tableName: "securityTable",
|
|
columnProp: "itemvalue",
|
|
headerAlign: "center",
|
|
align: "center",
|
|
columnLabel: "参数值",
|
|
columnHidden: true,
|
|
columnImage: false,
|
|
columnSortable: false,
|
|
columnWidth: 10,
|
|
sortLv: 0,
|
|
status: true,
|
|
fixed: '',
|
|
},
|
|
],
|
|
buttons: {
|
|
cz: '操作',
|
|
search: '查询',
|
|
add: '添加',
|
|
permissionList: '权限清单',
|
|
edit: '编辑',
|
|
delete: '删除',
|
|
specialCompetencies: '特殊权限',
|
|
factoryAuthorization: '工厂授权',
|
|
buAuthorization: 'BU授权',
|
|
roleAuthorization: '角色授权',
|
|
projectAuthorization: '项目授权',
|
|
createTime: '创建时间',
|
|
username: '用户账号',
|
|
userDisplay: '用户名',
|
|
email: '邮箱',
|
|
mobile: '手机号',
|
|
status: '状态',
|
|
disable: '禁用',
|
|
normal: '正常',
|
|
auth: '审核',
|
|
allAuth: '所有权限',
|
|
currentAuth: '当前权限',
|
|
fieldAuthorization:'字段授权',
|
|
role:'授权',
|
|
},
|
|
dataList: [],
|
|
securityList: [],
|
|
selectSpecialList: [],
|
|
siteList: [],
|
|
selectSitList: [],
|
|
selectUser: {},
|
|
pageIndex: 1,
|
|
pageSize: 20,
|
|
totalPage: 0,
|
|
dataListLoading: false,
|
|
dataListSelections: [],
|
|
addOrUpdateVisible: false,
|
|
functionFlag:false,
|
|
functionList:[],
|
|
rowFunctionId:'',
|
|
selectFieldList:[],
|
|
fieldList:[],
|
|
fieldFlag:false,
|
|
permissionFlag:false,
|
|
}
|
|
},
|
|
components: {
|
|
AddOrUpdate
|
|
},
|
|
activated() {
|
|
this.getDataList()
|
|
},
|
|
mounted() {
|
|
this.$nextTick(() => {
|
|
this.securityHeight = window.innerHeight - 300;
|
|
this.height = window.innerHeight - 200;
|
|
})
|
|
},
|
|
methods: {
|
|
// 获取button的词典
|
|
getFunctionButtonList() {
|
|
let queryButton = {
|
|
functionId: this.$route.meta.menuId,
|
|
tableId: '*',
|
|
languageCode: this.$i18n.locale,
|
|
objectType: 'button'
|
|
}
|
|
searchFunctionButtonList(queryButton).then(({data}) => {
|
|
if (data.code == 0 && data.data) {
|
|
this.buttons = data.data
|
|
}
|
|
})
|
|
},
|
|
/**
|
|
* 列表表格选择替换
|
|
* @param tab
|
|
* @param event
|
|
*/
|
|
tabClick (tab, event) {
|
|
// 刷新列表数据
|
|
this.refreshCurrentTabTable()
|
|
},
|
|
refreshCurrentTabTable() {
|
|
if (this.activeTable === 'factory_information') {
|
|
this.getUserAccessSiteInfoList()
|
|
}
|
|
if (this.activeTable === 'BU_information') {
|
|
this.getUserAccessBUInfoList()
|
|
}
|
|
if (this.activeTable === 'project_information'){
|
|
this.getUserAccessProjectInfoList()
|
|
}
|
|
if (this.activeTable === 'field_function_information'){
|
|
this.getUserAccessFieldFunctionInfoList()
|
|
}
|
|
if (this.activeTable === 'security_information'){
|
|
this.getUserSpecialSecurity()
|
|
}
|
|
if (this.activeTable === 'role_information'){
|
|
this.getUserAccessRoleInfoList()
|
|
}
|
|
},
|
|
// 特殊权限
|
|
specialAuthorize() {
|
|
this.specialVisible = true
|
|
this.searchUserSpecialSecurity()
|
|
},
|
|
// 获取特殊权限
|
|
searchUserSpecialSecurity() {
|
|
saveUserSpecialSecurity({userid: this.selectUser.username}).then(({data}) => {
|
|
if (data.code === 0) {
|
|
getUserSpecialSecurity(this.selectUser.username).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.securityList = data.dataList.map(item => {
|
|
item.itemvalue = item.itemvalue == 'Y' ? true : false;
|
|
return item;
|
|
})
|
|
}
|
|
})
|
|
}
|
|
})
|
|
},
|
|
// 保存用户权限
|
|
saveUserSecurity() {
|
|
let securityList = JSON.parse(JSON.stringify(this.securityList)).map(item => {
|
|
item.itemvalue = item.itemvalue === true ? 'Y' : 'N';
|
|
return item;
|
|
})
|
|
updateUserSpecialSecurity(securityList).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.specialVisible = false
|
|
} else {
|
|
this.$message.success(data.msg)
|
|
}
|
|
})
|
|
},
|
|
// 授权工厂
|
|
siteAuthorize() {
|
|
this.siteVisible = true
|
|
this.searchSiteList()
|
|
|
|
},
|
|
buAuthorize() {
|
|
this.buVisible = true
|
|
this.searchBuList()
|
|
|
|
},
|
|
roleAuthorize() {
|
|
this.roleVisible = true
|
|
this.searchRoleList()
|
|
},
|
|
//授权项目start
|
|
projectModel(){
|
|
let inData={
|
|
site:this.$store.state.user.site,
|
|
username:this.selectUser.username,
|
|
}
|
|
searchAccessProjectForUser(inData).then(({data}) => {
|
|
this.projectRoleList=data.rows
|
|
})
|
|
this.projectRoleFlag=true
|
|
},
|
|
changeAll(row){
|
|
if(row.checkAll){
|
|
row.searchCheck=true;
|
|
row.updateCheck=true;
|
|
row.downCheck=true;
|
|
row.deleteCheck=true;
|
|
row.searchFlag='Y'
|
|
row.updateFlag='Y'
|
|
row.downFlag='Y'
|
|
row.deleteFlag='Y'
|
|
}else {
|
|
row.searchCheck=false;
|
|
row.updateCheck=false;
|
|
row.downCheck=false;
|
|
row.deleteCheck=false;
|
|
row.searchFlag='N'
|
|
row.updateFlag='N'
|
|
row.downFlag='N'
|
|
row.deleteFlag='N'
|
|
}
|
|
},
|
|
changeCheck(row,type){
|
|
if(type==1){
|
|
if(row.searchCheck){
|
|
row.searchFlag='Y'
|
|
}else {
|
|
row.searchFlag='N'
|
|
}
|
|
}
|
|
if(type==2){
|
|
if(row.updateCheck){
|
|
row.updateFlag='Y'
|
|
}else {
|
|
row.updateFlag='N'
|
|
}
|
|
}
|
|
if(type==3){
|
|
if(row.downCheck){
|
|
row.downFlag='Y'
|
|
}else {
|
|
row.downFlag='N'
|
|
}
|
|
}
|
|
if(type==4){
|
|
if(row.deleteCheck){
|
|
row.deleteFlag='Y'
|
|
}else {
|
|
row.deleteFlag='N'
|
|
}
|
|
}
|
|
if(row.searchCheck&&row.updateCheck&&row.downCheck&&row.deleteCheck){
|
|
row.checkAll=true
|
|
}else{
|
|
row.checkAll=false
|
|
}
|
|
this.$forceUpdate();
|
|
},
|
|
saveAccessProject(){
|
|
let inData={
|
|
site:this.$store.state.user.site,
|
|
username:this.selectUser.username,
|
|
accessProjectList:this.projectRoleList
|
|
}
|
|
saveAccessProject(inData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success( '操作成功')
|
|
this.projectRoleFlag = false
|
|
} else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
})
|
|
},
|
|
//授权项目end
|
|
// 保存选中的授权工厂
|
|
saveUserAssessSite() {
|
|
let accessSiteList = this.selectSitList.map(item => {
|
|
let itemSite = {
|
|
userid: this.selectUser.username,
|
|
site: item
|
|
}
|
|
return itemSite;
|
|
})
|
|
let accessSite = {
|
|
userid: this.selectUser.username,
|
|
accessSiteList: accessSiteList
|
|
}
|
|
|
|
saveUserAccessSiteList(accessSite).then(({data}) => {
|
|
if (data.code === 0) {
|
|
this.$message.success(data.msg)
|
|
this.siteList = []
|
|
this.selectSitList = []
|
|
this.siteVisible = false
|
|
} else {
|
|
this.$message.warning(data.msg)
|
|
}
|
|
})
|
|
},
|
|
saveBuAssessSite(){
|
|
if(this.selectBUList.length==0){
|
|
this.$message.warning("请选择BU")
|
|
return false;
|
|
}
|
|
let inList=[];
|
|
for (let i = 0; i < this.selectBUList.length; i++) {
|
|
let inData={
|
|
site:this.$store.state.user.site,
|
|
username:this.selectUser.username,
|
|
buNo:this.selectBUList[i]
|
|
}
|
|
inList.push(inData)
|
|
}
|
|
saveAccessBU(inList).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success( '操作成功')
|
|
this.buVisible = false
|
|
} else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
})
|
|
},
|
|
saveRoleAssessSite(){
|
|
if(this.selectRoleList.length==0){
|
|
this.$message.warning("请选择角色")
|
|
return false;
|
|
}
|
|
let inList=[];
|
|
for (let i = 0; i < this.selectRoleList.length; i++) {
|
|
let inData={
|
|
site:this.$store.state.user.site,
|
|
username:this.selectUser.username,
|
|
roleNo:this.selectRoleList[i]
|
|
}
|
|
inList.push(inData)
|
|
}
|
|
saveAccessRole(inList).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success( '操作成功')
|
|
this.roleVisible = false
|
|
} else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
})
|
|
},
|
|
// 获取用户已授权的工厂列表
|
|
searchUserAccessSiteList() {
|
|
getUserAccessSiteList({userid: this.selectUser.username}).then(({data}) => {
|
|
this.selectSitList = data.dataList
|
|
})
|
|
},
|
|
// 获取所有可用工厂
|
|
searchSiteList() {
|
|
this.siteList=[]
|
|
getSiteList({active: 'Y'}).then(({data}) => {
|
|
if (data.code == 0) {
|
|
this.siteList = data.dataList
|
|
this.searchUserAccessSiteList()
|
|
}
|
|
})
|
|
},
|
|
searchBuList(){
|
|
searchAccessBuList({site:this.$store.state.user.site,
|
|
username: this.selectUser.username,
|
|
active:'Y'}).then(({data}) => {
|
|
this.selectBUList = data.selectBUList
|
|
this.buList=data.buList
|
|
})
|
|
},
|
|
searchRoleList(){
|
|
searchAccessRoleList({site:this.$store.state.user.site,
|
|
username: this.selectUser.username,
|
|
active:'Y'}).then(({data}) => {
|
|
this.selectRoleList = data.selectRoleList
|
|
this.roleList=data.roleList
|
|
})
|
|
},
|
|
// 选中行
|
|
handleCurrentChange(val) {
|
|
this.selectUser = val
|
|
this.showButton = false
|
|
},
|
|
saveUserRoleFlag() {
|
|
let saveList = []
|
|
let currentList = this.checked
|
|
// 当前未选择记录
|
|
if (currentList.length == 0) {
|
|
this.$confirm("当前未选择记录,是否继续?", '删除提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
}).then(() => {
|
|
let data = {
|
|
userId: this.currentData.userId,
|
|
}
|
|
saveList.push(data);
|
|
this.saveUserBusinessRole(saveList)
|
|
}).catch(() => {
|
|
return
|
|
})
|
|
} else {
|
|
for (let i = 0; i < currentList.length; i++) {
|
|
let data = {
|
|
userId: this.currentData.userId,
|
|
roleItemNo: currentList[i],
|
|
selectFlag: 'Y',
|
|
}
|
|
saveList.push(data);
|
|
}
|
|
this.saveUserBusinessRole(saveList)
|
|
}
|
|
},
|
|
saveUserBusinessRole(saveList) {
|
|
saveUserBusinessRole(saveList).then(({data}) => {
|
|
this.$alert(data.msg, '操作提示', {
|
|
confirmButtonText: '确定',
|
|
callback: action => {
|
|
if (data.code == 0) {
|
|
this.setUp.reviewFlag = false
|
|
}
|
|
this.setUp.saveButton = false
|
|
}
|
|
});
|
|
})
|
|
},
|
|
generateData(row) {
|
|
this.currentData = row
|
|
let queryData = {
|
|
active: 'Y',
|
|
userId: this.currentData.userId,
|
|
}
|
|
getUserBusinessRoleList(queryData).then(({data}) => {
|
|
let rows1Data = data.map.rows1
|
|
let rows2Data = data.map.rows2
|
|
let forData = []
|
|
let checkedList = []
|
|
for (let i = 0; i < rows1Data.length; i++) {
|
|
forData.push({
|
|
key: rows1Data[i].roleItemNo,
|
|
label: rows1Data[i].roleDesc,
|
|
});
|
|
}
|
|
for (let j = 0; j < rows2Data.length; j++) {
|
|
checkedList.push(rows2Data[j].roleItemNo)
|
|
}
|
|
this.transferData = forData;
|
|
this.checked = checkedList
|
|
this.setUp.reviewFlag = true
|
|
})
|
|
},
|
|
// 获取数据列表
|
|
getDataList: throttle(function () {
|
|
this.dataListLoading = true
|
|
this.$http({
|
|
url: this.$http.adornUrl('/sys/user/list'),
|
|
method: 'get',
|
|
params: this.$http.adornParams({
|
|
'page': this.pageIndex,
|
|
'limit': this.pageSize,
|
|
'username': this.dataForm.userName
|
|
})
|
|
}).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.dataList = data.page.list
|
|
this.totalPage = data.page.totalCount
|
|
} else {
|
|
this.dataList = []
|
|
this.totalPage = 0
|
|
}
|
|
this.dataListLoading = false
|
|
})
|
|
}, 1000),
|
|
// 每页数
|
|
sizeChangeHandle(val) {
|
|
this.pageSize = val
|
|
this.pageIndex = 1
|
|
this.getDataList()
|
|
},
|
|
// 当前页
|
|
currentChangeHandle(val) {
|
|
this.pageIndex = val
|
|
this.getDataList()
|
|
},
|
|
// 多选
|
|
selectionChangeHandle(val) {
|
|
this.dataListSelections = val
|
|
},
|
|
// 权限清单模态框
|
|
permissionList(row) {
|
|
this.activeTable = 'factory_information'
|
|
this.userData = row
|
|
this.permissionFlag = true
|
|
},
|
|
// 获取用户工厂权限信息
|
|
getUserAccessSiteInfoList () {
|
|
getUserAccessSiteInfoList(this.userData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.userSiteList = data.rows
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
// 获取用户BU权限信息
|
|
getUserAccessBUInfoList () {
|
|
getUserAccessBUInfoList(this.userData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.userBUList = data.rows
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
// 获取用户角色权限信息
|
|
getUserAccessRoleInfoList () {
|
|
getUserAccessRoleInfoList(this.userData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.userRoleList = data.rows
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
// 获取用户项目权限信息
|
|
getUserAccessProjectInfoList () {
|
|
getUserAccessProjectInfoList(this.userData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.userProjectList = data.rows
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
// 获取用户字段权限信息
|
|
getUserAccessFieldFunctionInfoList () {
|
|
getUserAccessFieldFunctionInfoList(this.userData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.userFieldList = data.rows
|
|
} else {
|
|
this.$alert(data.msg, '错误', {
|
|
confirmButtonText: '确定'
|
|
})
|
|
}
|
|
})
|
|
},
|
|
// 新增 / 修改
|
|
addOrUpdateHandle(id) {
|
|
this.addOrUpdateVisible = true
|
|
this.$nextTick(() => {
|
|
this.$refs.addOrUpdate.init(id)
|
|
})
|
|
},
|
|
// 删除
|
|
deleteHandle(id) {
|
|
var userIds = id ? [id] : this.dataListSelections.map(item => {
|
|
return item.userId
|
|
})
|
|
this.$confirm(`确定对[id=${userIds.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
this.$http({
|
|
url: this.$http.adornUrl('/sys/user/delete'),
|
|
method: 'post',
|
|
data: this.$http.adornData(userIds, false)
|
|
}).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success('操作成功')
|
|
this.getDataList()
|
|
} else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
})
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
FieldListModel(){
|
|
searchFieldFunctionList().then(({data}) => {
|
|
this.functionList=data.rows
|
|
});
|
|
this.functionFlag=true;
|
|
},
|
|
accessModel(row){
|
|
this.rowFunctionId=row.functionId;
|
|
searchAccessFieldListByUser({functionId:row.functionId,
|
|
username: this.selectUser.username,
|
|
}).then(({data}) => {
|
|
this.selectFieldList = data.accessFieldList
|
|
this.fieldList=data.fieldList
|
|
})
|
|
this.fieldFlag=true;
|
|
},
|
|
saveAccessFieldListByUser(){
|
|
let inList=[];
|
|
for (let i = 0; i < this.selectFieldList.length; i++) {
|
|
let inData={
|
|
username: this.selectUser.username,
|
|
fieldId:this.selectFieldList[i]
|
|
}
|
|
inList.push(inData)
|
|
}
|
|
let saveData={
|
|
username: this.selectUser.username,
|
|
functionId:this.rowFunctionId,
|
|
accessFieldList:inList,
|
|
}
|
|
saveAccessFieldListByUser(saveData).then(({data}) => {
|
|
if (data && data.code === 0) {
|
|
this.$message.success( '操作成功')
|
|
this.fieldFlag = false
|
|
} else {
|
|
this.$message.error(data.msg)
|
|
}
|
|
})
|
|
},
|
|
closeDataDialog() {
|
|
this.userSiteList=[];
|
|
this.userBUList=[];
|
|
this.userProjectList=[];
|
|
this.userFieldList=[];
|
|
this.siteList=[];
|
|
this.selectSitList=[];
|
|
this.userRoleList=[];
|
|
},
|
|
},
|
|
created() {
|
|
this.getFunctionButtonList()
|
|
}
|
|
}
|
|
</script>
|
|
<style>
|
|
|
|
|
|
.el-dialog__title {
|
|
line-height: 24px;
|
|
font-size: 16px;
|
|
color: #303133;
|
|
}
|
|
</style>
|