|
@@ -16,21 +16,27 @@
|
|
|
<div class="search-box">
|
|
|
<!-- <input class="search-txt" type="text" id="serachname" :value="filterText" placeholder="搜索相关人名" @oninput="personnelSearch()" @compositionend="personnelSearch()"> -->
|
|
|
<el-input v-model="filterText" placeholder="Please input" class="search-txt" />
|
|
|
+ <svg class="serachbox-empty" aria-hidden="true" @click="filterText=''">
|
|
|
+ <use xlink:href="#icon-qingkong"></use>
|
|
|
+ </svg>
|
|
|
<svg class="serachbox-icon" aria-hidden="true">
|
|
|
<use xlink:href="#icon-sousuotianchong"></use>
|
|
|
</svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="refreshbtn">
|
|
|
- <el-button @click="refresh">
|
|
|
- <svg class="refreshbtn-icon" aria-hidden="true">
|
|
|
- <use xlink:href="#icon-yunduanshuaxin-copy"></use>
|
|
|
- </svg>
|
|
|
- {{$t(`personnelManagement.synchronization.title`)}}
|
|
|
- </el-button>
|
|
|
+ <div class="totalnum">总人数:<span>{{tableData.length}}</span></div>
|
|
|
+ <div class="refresh-btn">
|
|
|
+ <el-button @click="refresh()">
|
|
|
+ <svg class="refreshbtn-icon" aria-hidden="true">
|
|
|
+ <use xlink:href="#icon-yunduanshuaxin-copy"></use>
|
|
|
+ </svg>
|
|
|
+ {{$t(`personnelManagement.synchronization.title`)}}
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="manage-table">
|
|
|
- <el-table :data="tableData.value" style="width: 100%" height="80vh" v-loading="loading" element-loading-text="数据加载中..." class="customer-table" :empty-text='$t(`personnelManagement.personnelTable.nodatas`)'>
|
|
|
+ <el-table :data="tableData" style="width: 100%" height="85vh" v-loading="loading" element-loading-text="数据加载中..." class="customer-table" :empty-text='$t(`personnelManagement.personnelTable.nodatas`)'>
|
|
|
<el-table-column prop="id" :label="$t(`personnelManagement.personnelTable.serialnum`)" sortable align="center" />
|
|
|
<el-table-column :label="$t(`personnelManagement.personnelTable.headportrait`)" align="center">
|
|
|
<template #default="scope">
|
|
@@ -74,18 +80,31 @@
|
|
|
<el-table-column prop="tmdId" :label="$t(`personnelManagement.personnelTable.tmdids`)" align="center">
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="title" :label="$t(`personnelManagement.personnelTable.position`)" sortable align="center" />
|
|
|
- <el-table-column :label="$t(`personnelManagement.personnelTable.operate`)" align="center" v-if="PowerShow">
|
|
|
+ <el-table-column :label="$t(`personnelManagement.personnelTable.operate`)" align="center">
|
|
|
<template #default="scope">
|
|
|
<el-button type="primary" size="small" @click="handleClick(scope.$index,tableData)">
|
|
|
<svg class="qxmages" aria-hidden="true">
|
|
|
<use xlink:href="#icon-quanxianguanli-"></use>
|
|
|
</svg>
|
|
|
- {{$t(`personnelManagement.personnelTable.operatecontent`)}}
|
|
|
+ <!-- {{$t(`personnelManagement.personnelTable.operatecontent`)}} -->
|
|
|
+ 编辑
|
|
|
</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</div>
|
|
|
+ <div class="personnel-drawer">
|
|
|
+ <el-drawer v-model="drawer" title="用户相关信息配置" :direction="direction" :modal="false">
|
|
|
+ <el-tabs v-model="activeName" class="demo-tabs">
|
|
|
+ <el-tab-pane label="权限/身份" name="first">
|
|
|
+ <Operates></Operates>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="关联学校" name="second">
|
|
|
+ <Correlation></Correlation>
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ </el-drawer>
|
|
|
+ </div>
|
|
|
<div class="manatips">
|
|
|
<el-dialog v-model="managebox" :title="$t(`personnelManagement.authority.title`)" width="40%">
|
|
|
<div class="manageboxs">
|
|
@@ -117,14 +136,20 @@ import { getCurrentInstance, reactive, ref, watch } from 'vue'
|
|
|
import { useStore } from 'vuex'
|
|
|
import { ElMessage, ElLoading } from 'element-plus'
|
|
|
import jwt_decode from 'jwt-decode'
|
|
|
+import Operates from '@/view/systemConfig/operate.vue'
|
|
|
+import Correlation from '@/view/systemConfig/correlation.vue'
|
|
|
export default {
|
|
|
+ components: {
|
|
|
+ Operates,
|
|
|
+ Correlation,
|
|
|
+ },
|
|
|
setup() {
|
|
|
let { proxy } = getCurrentInstance()
|
|
|
const store = useStore()
|
|
|
- let PowerShow = proxy.$access.inspectPower('orgusers-upd')
|
|
|
+ // let PowerShow = proxy.$access.inspectPower('orgusers-upd')
|
|
|
let staffData = ref([])
|
|
|
let loading = ref(true)
|
|
|
- let tableData = reactive([])
|
|
|
+ let tableData = ref([])
|
|
|
var numid = ref(1)
|
|
|
let department = ref([])
|
|
|
let options = ref([
|
|
@@ -186,6 +211,9 @@ export default {
|
|
|
let original = ref([])
|
|
|
let filterText = ref('')
|
|
|
let timer = ref('')
|
|
|
+ let drawer = ref(false)
|
|
|
+ let direction = ref('rtl')
|
|
|
+ const activeName = ref('first')
|
|
|
//处理名单
|
|
|
getEvery()
|
|
|
function process(val) {}
|
|
@@ -225,64 +253,63 @@ export default {
|
|
|
}
|
|
|
// 处理各个部门
|
|
|
function handleClick(index, data) {
|
|
|
- console.log(index, data, 'click')
|
|
|
- let userData = data.value[index]
|
|
|
- nowUser.value = data.value[index]
|
|
|
- let manaPermission = JSON.parse(localStorage.getItem('management'))
|
|
|
- // let userBind = userData.tmdId ? true : true
|
|
|
- operateUser.value = userData
|
|
|
- console.log(userData)
|
|
|
- typeof userData.permissions !== 'object' ? userData.permissions.split(',') : ''
|
|
|
- console.log(userData, '查看数据')
|
|
|
- let arrData = []
|
|
|
- for (let i in manaPermission) {
|
|
|
- let name = manaPermission[i].rowKey
|
|
|
- let result = userData.permissions.includes(name)
|
|
|
- result
|
|
|
- ? arrData.push({
|
|
|
- name: manaPermission[i].discription,
|
|
|
- rowKey: manaPermission[i].rowKey,
|
|
|
- state: true,
|
|
|
- })
|
|
|
- : arrData.push({
|
|
|
- name: manaPermission[i].discription,
|
|
|
- rowKey: manaPermission[i].rowKey,
|
|
|
- state: false,
|
|
|
- })
|
|
|
- }
|
|
|
- // let showData = []
|
|
|
- // arrData.forEach((item) => {
|
|
|
- // item.rowKey.includes('read') ? '' : showData.push(item)
|
|
|
- // })
|
|
|
- //处理是否管理员
|
|
|
- userData.handleRoles.includes('admin') ? (userisAdmin.value.state = true) : (userisAdmin.value.state = false)
|
|
|
- let ardata = [
|
|
|
- // { id: 1, name: '能力点标准管理(读)', children: [] },
|
|
|
- // { id: 2, name: '批量创区(读)', children: [] },
|
|
|
- // { id: 3, name: '批量创校(读)', children: [] },
|
|
|
- // { id: 4, name: '钉钉组织架构人员管理(读)', children: [] },
|
|
|
- ]
|
|
|
- let textname = ['能力点', '区域', '学校', '钉钉架构']
|
|
|
- let num = 0
|
|
|
- //处理类似于层级的权限呈现
|
|
|
- for (let i in arrData) {
|
|
|
- let oddEven = i % 2 == 0 ? 'odd' : 'even'
|
|
|
- if (oddEven === 'odd') {
|
|
|
- arrData[i].children = []
|
|
|
- arrData[i].text = textname[num]
|
|
|
- ardata.push(arrData[i])
|
|
|
- num += 1
|
|
|
- } else if (oddEven === 'even') {
|
|
|
- for (let y in ardata) {
|
|
|
- ardata[ardata.length - 1].children.push(arrData[i])
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- console.log(ardata, '循环的结果')
|
|
|
- manageList.value = ardata
|
|
|
- console.log(manageList, '结果')
|
|
|
- managebox.value = true
|
|
|
+ // console.log(index, data, 'click')
|
|
|
+ drawer.value = true
|
|
|
+
|
|
|
+ // let userData = data.value[index]
|
|
|
+ // nowUser.value = data.value[index]
|
|
|
+ // let manaPermission = JSON.parse(localStorage.getItem('management'))
|
|
|
+ // // let userBind = userData.tmdId ? true : true
|
|
|
+ // operateUser.value = userData
|
|
|
+ // console.log(userData)
|
|
|
+ // typeof userData.permissions !== 'object' ? userData.permissions.split(',') : ''
|
|
|
+ // console.log(userData, '查看数据')
|
|
|
+ // let arrData = []
|
|
|
+ // for (let i in manaPermission) {
|
|
|
+ // let name = manaPermission[i].rowKey
|
|
|
+ // let result = userData.permissions.includes(name)
|
|
|
+ // result
|
|
|
+ // ? arrData.push({
|
|
|
+ // name: manaPermission[i].discription,
|
|
|
+ // rowKey: manaPermission[i].rowKey,
|
|
|
+ // state: true,
|
|
|
+ // })
|
|
|
+ // : arrData.push({
|
|
|
+ // name: manaPermission[i].discription,
|
|
|
+ // rowKey: manaPermission[i].rowKey,
|
|
|
+ // state: false,
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //处理是否管理员
|
|
|
+ // userData.handleRoles.includes('admin') ? (userisAdmin.value.state = true) : (userisAdmin.value.state = false)
|
|
|
+ // let ardata = [
|
|
|
+ // // { id: 1, name: '能力点标准管理(读)', children: [] },
|
|
|
+ // // { id: 2, name: '批量创区(读)', children: [] },
|
|
|
+ // // { id: 3, name: '批量创校(读)', children: [] },
|
|
|
+ // // { id: 4, name: '钉钉组织架构人员管理(读)', children: [] },
|
|
|
+ // ]
|
|
|
+ // let textname = ['能力点', '区域', '学校', '钉钉架构']
|
|
|
+ // let num = 0
|
|
|
+ // //处理类似于层级的权限呈现
|
|
|
+ // for (let i in arrData) {
|
|
|
+ // let oddEven = i % 2 == 0 ? 'odd' : 'even'
|
|
|
+ // if (oddEven === 'odd') {
|
|
|
+ // arrData[i].children = []
|
|
|
+ // arrData[i].text = textname[num]
|
|
|
+ // ardata.push(arrData[i])
|
|
|
+ // num += 1
|
|
|
+ // } else if (oddEven === 'even') {
|
|
|
+ // for (let y in ardata) {
|
|
|
+ // ardata[ardata.length - 1].children.push(arrData[i])
|
|
|
+ // break
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // console.log(ardata, '循环的结果')
|
|
|
+ // manageList.value = ardata
|
|
|
+ // console.log(manageList, '结果')
|
|
|
+ // managebox.value = true
|
|
|
}
|
|
|
//删除所用
|
|
|
function dataindexOf(val) {
|
|
@@ -299,45 +326,6 @@ export default {
|
|
|
operateUser.value.permissions.splice(index, 1)
|
|
|
}
|
|
|
}
|
|
|
- //处理调整个人权限
|
|
|
- function changeManage(rowkey, state) {
|
|
|
- console.log(rowkey, state)
|
|
|
- console.log(operateUser, manageList, '当前操作的人')
|
|
|
- console.log(PowerShow)
|
|
|
- if (!PowerShow) {
|
|
|
- ElMessage.error(proxy.$t(`commonMsg.notoperate`))
|
|
|
- return
|
|
|
- }
|
|
|
- let manaName = []
|
|
|
- manageList.value.forEach((item) => {
|
|
|
- item.state === true ? manaName.push(item.rowKey) : ''
|
|
|
- })
|
|
|
- let users = JSON.parse(localStorage.getItem('userData'))
|
|
|
- console.log(manaName)
|
|
|
- // if (operateUser.value.tmdId) {
|
|
|
- let data = {
|
|
|
- partitionKey: operateUser.value.partitionKey,
|
|
|
- rowKey: operateUser.value.rowKey,
|
|
|
- permissions: manaName,
|
|
|
- tmdId: users.tmdId,
|
|
|
- tmdName: users.tmdName,
|
|
|
- }
|
|
|
- proxy.$api
|
|
|
- .updateManege(data)
|
|
|
- .then((res) => {
|
|
|
- res.state === 200 ? (ElMessage.success(proxy.$t(`commonMsg.operateSuccess`)), (operateUser.value.permissions = manaName), synchronous(users, operateUser, manaName)) : ''
|
|
|
- // state ? (operateUser.value.handlePermissions = operateUser.value.handlePermissions.concat(manaName)) : dataremove(rowkey)
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- ElMessage.error(proxy.$t(`commonMsg.operateError`))
|
|
|
- })
|
|
|
- // } else {
|
|
|
- // manageList.value.forEach((element) => {
|
|
|
- // element.state = false
|
|
|
- // })
|
|
|
- // ElMessage(proxy.$t(`commonMsg.nonactivated`))
|
|
|
- // }
|
|
|
- }
|
|
|
//任命系统管理员
|
|
|
function changeAdmin(state) {
|
|
|
let nowState = state
|
|
@@ -372,22 +360,31 @@ export default {
|
|
|
//人员名单刷新
|
|
|
function refresh() {
|
|
|
let user = JSON.parse(localStorage.getItem('userData'))
|
|
|
+ if (user.tmdId === '' || user.tmdName === '') {
|
|
|
+ ElMessage.error('用户数据异常,操作失败')
|
|
|
+ return
|
|
|
+ }
|
|
|
const loading = ElLoading.service({
|
|
|
lock: true,
|
|
|
text: '更新可能需要一些时间,请等待~',
|
|
|
background: 'rgba(0, 0, 0, 0.7)',
|
|
|
})
|
|
|
let data = { tmdId: user.tmdId, tmdName: user.tmdName }
|
|
|
- proxy.$api.getStaffList(data).then((res) => {
|
|
|
- res.state === 200 ? ElMessage.success('人员名单已更新') : ElMessage.error('人员名单更新失败,请稍后重试')
|
|
|
- loading.close()
|
|
|
- })
|
|
|
+ proxy.$api
|
|
|
+ .getStaffList(data)
|
|
|
+ .then((res) => {
|
|
|
+ res.state === 200 ? ElMessage.success('人员名单已更新') : res.state === 401 ? ElMessage.error('非系统管理员无法操作') : ElMessage.error('人员名单更新失败,请稍后重试')
|
|
|
+ loading.close()
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ ElMessage.error('操作失败,非系统管理人员无法操作!')
|
|
|
+ loading.close()
|
|
|
+ })
|
|
|
}
|
|
|
//人员搜索
|
|
|
function personnelSearch() {
|
|
|
let arr = tableData.value
|
|
|
let newArr = arr.filter((item) => {
|
|
|
- console.log(item)
|
|
|
// return (item.name && item.name.includes(filterText.value)) || (item.mobile && item.mobile.includes(filterText.value)) || (item.mobile && item.mobile.tmdId.includes(filterText.value))
|
|
|
return item.name.includes(filterText.value)
|
|
|
})
|
|
@@ -421,12 +418,10 @@ export default {
|
|
|
changeDepartment,
|
|
|
managebox,
|
|
|
manageList,
|
|
|
- changeManage,
|
|
|
operateUser,
|
|
|
dataindexOf,
|
|
|
dataremove,
|
|
|
synchronous,
|
|
|
- PowerShow,
|
|
|
refresh,
|
|
|
isAdmin,
|
|
|
userisAdmin,
|
|
@@ -434,6 +429,9 @@ export default {
|
|
|
nowUser,
|
|
|
personnelSearch,
|
|
|
filterText,
|
|
|
+ drawer,
|
|
|
+ direction,
|
|
|
+ activeName,
|
|
|
}
|
|
|
},
|
|
|
}
|
|
@@ -448,7 +446,9 @@ export default {
|
|
|
margin-right: 5px;
|
|
|
}
|
|
|
.manage-table {
|
|
|
+ width: 100%;
|
|
|
padding: 0% 1%;
|
|
|
+ transition: all 0.6s ease-out;
|
|
|
}
|
|
|
.select-box {
|
|
|
width: 68%;
|
|
@@ -534,14 +534,25 @@ export default {
|
|
|
/* justify-content: center; */
|
|
|
margin-top: 12px;
|
|
|
margin-left: 1%;
|
|
|
+ /* width: 250px; */
|
|
|
+ transition: 0.4s;
|
|
|
+}
|
|
|
+.search-box:hover {
|
|
|
+ /* width: 250px; */
|
|
|
}
|
|
|
.search-box:hover > .search-txt {
|
|
|
- width: 200px;
|
|
|
+ width: 180px;
|
|
|
padding: 0 6px;
|
|
|
}
|
|
|
.search-box:hover > .search-btn {
|
|
|
background: white;
|
|
|
}
|
|
|
+.search-box:hover > .serachbox-icon {
|
|
|
+ opacity: 0;
|
|
|
+}
|
|
|
+.search-box:hover > .serachbox-empty {
|
|
|
+ display: inline-block;
|
|
|
+}
|
|
|
.search-btn {
|
|
|
float: right;
|
|
|
width: 40px;
|
|
@@ -566,11 +577,25 @@ export default {
|
|
|
width: 0px;
|
|
|
}
|
|
|
.serachbox-icon {
|
|
|
- width: 1.4em;
|
|
|
- height: 1.4em;
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
vertical-align: 1.2em;
|
|
|
fill: currentColor;
|
|
|
overflow: hidden;
|
|
|
+ float: right;
|
|
|
+ opacity: 1;
|
|
|
+}
|
|
|
+.serachbox-empty {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ vertical-align: 1.3em;
|
|
|
+ fill: currentColor;
|
|
|
+ overflow: hidden;
|
|
|
+ color: #95a5a6;
|
|
|
+ margin-right: 5px;
|
|
|
+ cursor: pointer;
|
|
|
+ float: right;
|
|
|
+ display: none;
|
|
|
}
|
|
|
|
|
|
.contentbox {
|
|
@@ -630,6 +655,22 @@ export default {
|
|
|
.pass {
|
|
|
color: #1afa29;
|
|
|
}
|
|
|
+.identity {
|
|
|
+ width: 20%;
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+.personnel-drawer {
|
|
|
+ line-height: 20px;
|
|
|
+}
|
|
|
+.totalnum {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #95afc0;
|
|
|
+ display: inline-block;
|
|
|
+ margin-right: 15px;
|
|
|
+}
|
|
|
+.refresh-btn {
|
|
|
+ display: inline-block;
|
|
|
+}
|
|
|
</style>
|
|
|
<style>
|
|
|
.manatips .el-dialog__header,
|
|
@@ -650,7 +691,7 @@ export default {
|
|
|
line-height: 65px !important;
|
|
|
}
|
|
|
.search-box .el-input__inner {
|
|
|
- opacity: 0.1;
|
|
|
+ /* opacity: 0.1; */
|
|
|
width: 0px;
|
|
|
/* padding: 0px; */
|
|
|
height: 0px;
|
|
@@ -661,7 +702,7 @@ export default {
|
|
|
border-radius: 8px;
|
|
|
}
|
|
|
.search-box:hover .el-input__inner {
|
|
|
- opacity: 1;
|
|
|
+ /* opacity: 1; */
|
|
|
width: 100%;
|
|
|
height: 30px;
|
|
|
padding-bottom: 10px;
|
|
@@ -678,4 +719,17 @@ export default {
|
|
|
top: 2px;
|
|
|
right: 4px;
|
|
|
}
|
|
|
+.personnel-drawer .el-drawer.rtl {
|
|
|
+ top: 6%;
|
|
|
+}
|
|
|
+.personnel-drawer .el-drawer__header {
|
|
|
+ line-height: 20px;
|
|
|
+ text-align: left;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ padding: 5px;
|
|
|
+ font-size: 14px;
|
|
|
+}
|
|
|
+.personnel-drawer .el-drawer__body {
|
|
|
+ padding: 0px 10px;
|
|
|
+}
|
|
|
</style>
|