Преглед изворни кода

Merge branch 'master' of http://182.92.174.150:3000/tiegu/czo

lz пре 3 година
родитељ
комит
a25072386d
2 измењених фајлова са 165 додато и 47 уклоњено
  1. 18 0
      src/api/system/employeenInfo.js
  2. 147 47
      src/views/system/employeenInfo/index.vue

+ 18 - 0
src/api/system/employeenInfo.js

@@ -40,6 +40,15 @@ export function levelList() {
 	})
 }
 
+// 查询角色列表
+export function listRole(query) {
+	return request({
+	  url: '/system/role/list',
+	  method: 'get',
+	  params: query
+	})
+  }
+
 // 新增员工账号信息
 export function addUser(data) {
 	return request({
@@ -63,4 +72,13 @@ export function getAuthRole(userId) {
         url: '/system/user/authRole/' + userId,
         method: 'GET'
     })
+}
+
+// 更新员工授权功能权限
+export function updateAuthRole(data) {
+	return request({
+		url: '/system/user/authRole',
+		method: 'put',
+		data: data
+	})
 }

+ 147 - 47
src/views/system/employeenInfo/index.vue

@@ -78,7 +78,7 @@
 				<div class="basics"><a href="javascript:void(0);" @click="getBasicsInfo">基础信息</a></div>
 			</div>
 			<!-- 账号信息 -->
-			<el-form ref="accountForm" :model="accountForm" :rules="rules" label-width="90px" v-show="accountShow">
+			<el-form ref="accountForm" :model="accountForm" :rules="accountForms" label-width="90px" v-show="accountShow">
 				<el-row>
 					<el-col :span="12">
 						<el-form-item label="序号" prop="userId">
@@ -105,15 +105,21 @@
 				</el-row>
 				<el-row>
 					<el-col :span="12">
-						<el-form-item label="账号状态" prop="status">
+						<!-- <el-form-item label="账号状态" prop="status">
 							<el-radio v-model="accountForm.status" label="0">正常</el-radio>
 							<el-radio v-model="accountForm.status" label="1">停用</el-radio>
+						</el-form-item> -->
+						<el-form-item label="账号状态" prop="status">
+							<el-radio v-model="accountForm.status" v-for="dict in dict.type.sys_account_status" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
-						<el-form-item label="性别" prop="sex">
+						<!-- <el-form-item label="性别" prop="sex">
 							<el-radio v-model="accountForm.sex" label="0">男</el-radio>
 							<el-radio v-model="accountForm.sex" label="1">女</el-radio>
+						</el-form-item> -->
+						<el-form-item label="性别" prop="sex">
+							<el-radio v-model="accountForm.sex" v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
 						</el-form-item>
 					</el-col>
 				</el-row>
@@ -151,12 +157,12 @@
 				<el-row>
 					<el-col :span="12">
 						<el-form-item label="年龄">
-							<el-input placeholder="请输入年龄" maxlength="30" />
+							<el-input placeholder="请输入年龄" v-model="ageInfo.age" maxlength="30" />
 						</el-form-item>
 					</el-col>
 					<el-col :span="12">
 						<el-form-item label="出生日期">
-							<el-input placeholder="请输入出生日期" maxlength="30" />
+							<el-input placeholder="请输入出生日期" v-model="ageInfo.birthday" maxlength="30" />
 						</el-form-item>
 					</el-col>
 				</el-row>
@@ -549,11 +555,20 @@
 			</div>
 		</el-dialog>
 
-		<!-- 修改角色权限对话框 -->
+		<!-- 功能权限对话框 -->
 		<el-dialog title="功能权限" :visible.sync="dialogTableRolePermissions">
-			<el-table border>
-				<el-table-column label="名称" align="center" width="180"></el-table-column>
-				<el-table-column label="描述" align="center"></el-table-column>
+			<el-table v-loading="loading" border :data="roleListAll">
+				<el-table-column label="名称" align="left" width="180">
+					<template scope="scope">
+						<input type="checkbox" :checked="scope.row.checked" @change="roleChange(scope.row)" />
+						<span class="role_">{{ scope.row.roleName }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column label="描述" align="center">
+					<template scope="scpoe">
+						<span>{{ scpoe.row.remark }}</span>
+					</template>
+				</el-table-column>
 			</el-table>
 			<div slot="footer" class="dialog-footer">
 				<el-button size="small" @click="cancalRolePermissions">取 消</el-button>
@@ -565,18 +580,18 @@
 		<el-dialog title="责权信息" :visible.sync="dialogPower" width="30%" :before-close="handleClose">
 			<div class="">
 				<span>级别职务:</span>
-				<el-select v-model="jodId" placeholder="请选择" @change="changeJob()">
-					<el-option v-for="item in levelJobs" :key="item.jobId" :label="item.jobName" :value="item.jobId"> </el-option>
+				<el-select v-model="jodId" placeholder="请选择" @change="changeJob">
+					<el-option v-for="item in levelJobs" :key="item.jobId" :label="item.jobName" :value="item"> </el-option>
 				</el-select>
 			</div>
 			<div class="responsibility">
 				<span>责任</span>
 			</div>
-			<el-input type="textarea" :rows="3" v-model="responsibility" :disabled="true" placeholder="请输入内容"> </el-input>
+			<el-input type="textarea" :rows="3" v-model="responsibility" readonly placeholder="请输入内容"> </el-input>
 			<div class="responsibility">
 				<span>权利</span>
 			</div>
-			<el-input type="textarea" :rows="3" v-model="right" :disabled="true" placeholder="请输入内容"> </el-input>
+			<el-input type="textarea" :rows="3" v-model="right" readonly placeholder="请输入内容"> </el-input>
 		</el-dialog>
 
 		<!-- 修改头像对话框 -->
@@ -585,7 +600,7 @@
 </template>
 
 <script>
-import { getUser, delUser, addUser, updateUser, getStaffList, getLevelTreeSelect, getResponsibilityRight, getNatureTreeSelect, getAuthRole } from '@/api/system/employeenInfo'
+import { getUser, delUser, addUser, updateUser, getStaffList, getLevelTreeSelect, listRole, getNatureTreeSelect, getAuthRole, updateAuthRole } from '@/api/system/employeenInfo'
 import { getToken } from '@/utils/auth'
 import { treeselect } from '@/api/system/dept'
 import userAvatar from './profile/userAvatar.vue'
@@ -595,7 +610,23 @@ import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 
 export default {
 	name: 'employeenInfo',
-	dicts: ['sys_normal_disable', 'sys_user_sex'],
+	dicts: [
+		'sys_normal_disable',
+		'sys_user_sex',
+		'sys_account_status',
+		'sys_employee_education',
+		'sys_marital _status',
+		'sys_employee _personality',
+		'sys_staff_adept',
+		'sys_income _situation',
+		'sys_staff_hobby',
+		'sys_staff_height',
+		'sys_staff_appearance',
+		'sys_staff_constitution',
+		'sys_staff_medicalHistory',
+		'sys_staff_criminalLaw',
+		'sys_spare_relationship'
+	],
 	components: { Treeselect, TreeChoice, userAvatar },
 	data() {
 		return {
@@ -661,48 +692,54 @@ export default {
 				{ key: 7, label: `手机号码`, visible: true }
 			],
 			// 表单校验
-			rules: {
-				// userName: [
-				// 	{ required: true, message: '用户名称不能为空', trigger: 'blur' },
-				// 	{ min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' }
-				// ],
-				// nickName: [{ required: true, message: '用户昵称不能为空', trigger: 'blur' }],
-				// password: [
-				// 	{ required: true, message: '用户密码不能为空', trigger: 'blur' },
-				// 	{ min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
-				// ],
-				// email: [
-				// 	{
-				// 		type: 'email',
-				// 		message: "'请输入正确的邮箱地址",
-				// 		trigger: ['blur', 'change']
-				// 	}
-				// ],
-				// phonenumber: [
-				// 	{
-				// 		pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-				// 		message: '请输入正确的手机号码',
-				// 		trigger: 'blur'
-				// 	}
-				// ]
+			accountForms: {
+				realName: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
+				phonenumber: [
+					{ required: true, message: '手机号不能为空', trigger: 'blur' },
+					{
+						pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+						message: '请输入正确的手机号码',
+						trigger: 'blur'
+					}
+				],
+				idNumber: [
+					{ required: true, message: '身份证号不能为空', trigger: 'blur' },
+					{
+						pattern: /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
+						message: '请输入正确的身份证号码',
+						trigger: 'blur'
+					}
+				],
+				deptIds: [{ required: true, message: '请选择公司部门', trigger: 'submit' }],
+				levelJobIds: [{ required: true, message: '请选择职称级别', trigger: 'submit' }],
+				naturePostIds: [{ required: true, message: '请选择性质岗位', trigger: 'submit' }]
 			},
 			dialogTableRolePermissions: false, // 角色权限弹出层
 			dialogPower: false, // 责权信息弹出层
 			accountShow: true, // 账号信息
 			basicsShow: false, // 基础信息
 			props: { multiple: true }, // 联级多选
-			// propsLevel: { multiple: true },
 			levelList: [], // 级别列表
 			natureList: [], // 性质岗位列表
 			levelJobs: [], // 责权信息列表
 			jodId: '', // 职位id
 			responsibility: '', // 职责
 			right: '', // 权力
+			roleList: [], // 角色列表
+			roleListAll: [], // 所有角色
+			dateRange: [], // 日期范围
+			rolesParams: {
+				roleName: undefined,
+				roleKey: undefined,
+				roleSort: undefined
+			}
+			// checked: false,
 		}
 	},
 	created() {
 		this.getList()
 		this.getTreeselect()
+		this.getRoleList()
 	},
 	methods: {
 		/** 查询用户列表 */
@@ -720,6 +757,15 @@ export default {
 				this.deptOptions = response.data
 			})
 		},
+		/** 查询角色列表 */
+		getRoleList() {
+			listRole(this.addDateRange(this.queryParams, this.dateRange)).then((response) => {
+				this.roleListAll = response.rows
+				this.roleListAll.forEach((element) => {
+					element.checked = false
+				})
+			})
+		},
 		// 节点单击事件
 		handleNodeClick(data) {
 			this.queryParams.deptId = data.id
@@ -772,7 +818,9 @@ export default {
 					this.userList.map(function (item) {
 						return item.userId
 					})
-				) + 1
+				) +
+				1 +
+				''
 			// getUser().then((response) => {
 			// 	// this.postOptions = response.posts
 			// 	// this.roleOptions = response.roles
@@ -781,14 +829,38 @@ export default {
 		},
 		// 修改角色权限
 		getRolePermissions(row) {
+			this.userId = row.userId
 			getAuthRole(row.userId).then((res) => {
-				console.log(res)
+				if (res.code === 200) {
+					this.roleList = res.roles
+					console.log(this.roleList)
+					this.dialogTableRolePermissions = true
+					this.roleList.forEach((element) => {
+						this.roleListAll.forEach((e) => {
+							if (e.roleId == element.roleId) {
+								e.checked = true
+							}
+						})
+					})
+				}
 			})
-			this.dialogTableRolePermissions = true
+		},
+		// 切换角色选中状态
+		roleChange(row, index) {
+			row.checked = !row.checked
 		},
 		// 保存角色权限修改
 		saveRolePermissions() {
-			this.dialogTableRolePermissions = false
+			let newArr = this.roleListAll.filter((item, index, c) => item.checked == true)
+			let roleIds = newArr.map((item, index, c) => item.roleId)
+			let roleIdsStr = roleIds.join(',')
+			updateAuthRole({ userId: this.userId, roleIds: roleIdsStr }).then((res) => {
+				if (res.code === 200) {
+					this.dialogTableRolePermissions = false
+					// this.getRolePermissions()
+					// console.log(this.roleList)
+				}
+			})
 		},
 		// 取消角色权限修改
 		cancalRolePermissions() {
@@ -798,14 +870,15 @@ export default {
 		getDutiesPowers(row) {
 			let staff = this.userList.find((item, index, c) => item.userId === row.userId)
 			this.levelJobs = staff.levelJobs
-			this.jodId = this.levelJobs[0].jobId
+			// this.jodId = this.levelJobs[0].jobId
 			console.log(this.levelJobs)
 			this.dialogPower = true
 		},
 		// 选择职责权限
 		changeJob(val) {
-			// console.log(val)
-			console.log(123)
+			console.log(val)
+			this.responsibility = val.responsibility
+			this.right = val.right
 		},
 		// 账号信息
 		getAccountInfo() {
@@ -952,6 +1025,30 @@ export default {
 		submitFileForm() {
 			this.$refs.upload.submit()
 		}
+	},
+	computed: {
+		//获取主题颜色
+		theme() {
+			return this.$store.state.settings.theme
+		},
+		//根据身份证号获取年龄和生日
+		ageInfo() {
+			let num = this.accountForm.idNumber
+			if (/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(num)) {
+				let birthday = num.substring(6, 10) + '-' + num.substring(10, 12) + '-' + num.substring(12, 14)
+				var birthdays = new Date(birthday.replace(/-/g, '/'))
+				let d = new Date()
+				let age = d.getFullYear() - birthdays.getFullYear() - (d.getMonth() < birthdays.getMonth() || (d.getMonth() == birthdays.getMonth() && d.getDate() < birthdays.getDate()) ? 1 : 0)
+				return {
+					age,
+					birthday
+				}
+			}
+			return {
+				age: '',
+				birthday: ''
+			}
+		}
 	}
 }
 </script>
@@ -1007,4 +1104,7 @@ export default {
 .search_form .el-form-item {
 	margin-bottom: 0;
 }
+.role_ {
+	margin-left: 5px;
+}
 </style>