Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

lanceJiang 1 rok temu
rodzic
commit
d88ad33ccb

+ 9 - 2
src/api/system/department.ts

@@ -6,7 +6,8 @@ const api = {
 	page: '/sys/department/list-tree',
 	create: '/sys/department/create',
 	update: '/sys/department/update',
-	delete: '/sys/department/delete'
+	delete: '/sys/department/delete',
+	listAll: '/sys/department/list-all'
 }
 /**
  * 部门管理 - 列表
@@ -40,8 +41,14 @@ function departmentDeleteApi(data: any): AxiosPromise {
 		data
 	})
 }
+
+function departmentListAllApi(): AxiosPromise {
+	return request({ url: api.listAll, method: 'get' })
+}
+
 export default {
 	departmentPageApi,
 	departmentAddOrEditSaveApi,
-	departmentDeleteApi
+	departmentDeleteApi,
+	departmentListAllApi
 }

+ 12 - 2
src/api/system/user.ts

@@ -9,7 +9,8 @@ const api = {
 	delete: '/sys/user/delete',
 	resetPassword: '/sys/user/reset-password',
 	assignRoles: '/sys/user/assign-roles',
-	roleIds: '/sys/user/role-ids'
+	assignDepartment: '/sys/user/assign-departments',
+	roleIds: '/sys/user/rel-ids'
 }
 
 /**
@@ -65,6 +66,14 @@ function userAssignRolesApi(data: any): AxiosPromise {
 		data
 	})
 }
+
+function userAssignDepartmentApi(data: any): AxiosPromise {
+	return request({
+		url: api.assignDepartment,
+		method: 'post',
+		data
+	})
+}
 /**
  * 用户管理 - 绑定角色
  */
@@ -92,6 +101,7 @@ const user = {
 	userResetPasswordApi,
 	userAssignRolesApi,
 	userRoleIdsApi,
-	userGetApi
+	userGetApi,
+	userAssignDepartmentApi
 }
 export default user

+ 32 - 6
src/views/setting/user/assign-role.vue

@@ -1,6 +1,6 @@
 <template>
-	<el-dialog v-model="visibleDialog" title="分配角色/部门" :width="550" destroy-on-close @closed="handleCancel">
-		<el-select v-model="roleIds" style="width: 500px" multiple filterable placeholder="请选择分配角色">
+	<el-dialog v-model="visibleDialog" :title="`分配${currentTypeFlag ? '角色' : '部门'}`" :width="550" destroy-on-close @closed="handleCancel">
+		<el-select v-model="roleIds" style="width: 500px" multiple filterable :placeholder="`请选择分配${currentTypeFlag ? '角色' : '部门'}`">
 			<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id">
 				<span style="float: left">{{ item.name }}</span>
 				<span style="float: right; color: var(--el-text-color-secondary); font-size: 13px">{{ item.alias }}</span>
@@ -18,6 +18,7 @@ import { ref, nextTick, watch, computed } from 'vue'
 import { ElMessage } from 'element-plus'
 import user from '@/api/system/user'
 import role from '@/api/system/role'
+import department from '@/api/system/department'
 
 const myProps = defineProps({
 	modelValue: {
@@ -27,6 +28,10 @@ const myProps = defineProps({
 	userIds: {
 		type: Array,
 		default: () => []
+	},
+	typeModel: {
+		type: String,
+		default: 'role'
 	}
 })
 
@@ -52,10 +57,14 @@ const submit = async () => {
 	isSaveing.value = true
 	const _param = {
 		userIds: myProps.userIds,
-		roleIds: roleIds.value
+		[currentTypeFlag.value ? 'roleIds' : 'departmentIds']: roleIds.value
 	}
 	try {
-		await user.userAssignRolesApi(_param)
+		if (currentTypeFlag.value) {
+			await user.userAssignRolesApi(_param)
+		} else {
+			await user.userAssignDepartmentApi(_param)
+		}
 		ElMessage.success('分配成功')
 		isSaveing.value = false
 		visibleDialog.value = false
@@ -69,7 +78,7 @@ const submit = async () => {
 const open = async userIds => {
 	if (userIds.length === 1) {
 		let data = await user.userRoleIdsApi({ id: userIds[0] })
-		roleIds.value = data
+		roleIds.value = currentTypeFlag.value ? data.roleIds : data.departmentIds
 	}
 }
 
@@ -83,8 +92,21 @@ const loadRoles = async () => {
 	}
 }
 
+// 加载全部部门
+const loadDepartments = async () => {
+	try {
+		let data = await department.departmentListAllApi()
+		options.value = data
+	} catch (e) {
+		ElMessage.success('加载全量部门失败')
+	}
+}
 nextTick(() => {
-	loadRoles()
+	if (currentTypeFlag.value) {
+		loadRoles()
+	} else {
+		loadDepartments()
+	}
 })
 
 watch(
@@ -105,4 +127,8 @@ const visibleDialog = computed({
 		$myEmit('update:modelValue', val)
 	}
 })
+
+const currentTypeFlag = computed(() => {
+	return myProps.typeModel === 'role' // true: 角色 false: 部门
+})
 </script>

+ 25 - 4
src/views/setting/user/index.vue

@@ -47,8 +47,8 @@
 							<Delete />
 						</el-icon>
 					</el-button>
-					<el-button plain :disabled="curSelectionRows.length === 0" @click="assignRoleVisibile = true"> 分配角色 </el-button>
-					<el-button plain :disabled="curSelectionRows.length === 0"> 分配部门 </el-button>
+					<el-button plain :disabled="curSelectionRows.length === 0" @click="chooseThing('role')"> 分配角色 </el-button>
+					<el-button plain :disabled="curSelectionRows.length === 0" @click="chooseThing('department')"> 分配部门 </el-button>
 					<el-button plain :disabled="curSelectionRows.length === 0" @click="resetPwdVisibile = true"> 密码重置 </el-button>
 				</template>
 
@@ -94,6 +94,7 @@
 			v-if="assignRoleVisibile"
 			v-model="assignRoleVisibile"
 			:user-ids="curSelectionRows.map(item => item.id)"
+			:type-model="typeModel"
 			@successFn="updateParams()"
 			@closed="assignRoleVisibile = false"
 		></assign-role-dialog>
@@ -110,6 +111,7 @@
 <script lang="tsx" setup>
 import role from '@/api/system/role'
 import user from '@/api/system/user'
+import department from '@/api/system/department'
 import { computed, nextTick, ref, watch } from 'vue'
 import { ElMessage, ElTree } from 'element-plus'
 import { useTablePage } from '@/hooks/useTablePage'
@@ -178,7 +180,7 @@ const formsDialog = [
 		options: []
 	},
 	{
-		prop: 'roleIds1',
+		prop: 'departments',
 		label: '所属部门',
 		itemType: 'select',
 		multiple: true,
@@ -223,6 +225,7 @@ const filterNode = (value: string, data: Tree) => {
 }
 
 const treeData = ref([])
+const typeModel = ref('')
 
 // 获取左侧菜单数据
 const getGroup = async () => {
@@ -245,6 +248,18 @@ const getRolesList = async () => {
 	}
 }
 
+// 获取全部的部门列表
+const getDepartmentsList = async () => {
+	try {
+		const data = await department.departmentListAllApi()
+		formOptions.value.forms[8].options = data.map(item => {
+			return { value: item.id, label: item.name }
+		})
+	} catch (e) {
+		console.log(e)
+	}
+}
+
 // 左侧菜单点击
 const roleClick = data => {
 	console.log(data.id, 'data.id')
@@ -394,7 +409,7 @@ const table_edit = async row => {
 	try {
 		const data = await user.userRoleIdsApi({ id: row.id })
 		isCreate.value = false
-		activeData.value = { ...row, status: row.status ? true : false, roleIds: data }
+		activeData.value = { ...row, status: row.status ? true : false, roleIds: data?.roleIds }
 		visible.value = true
 	} catch (e) {
 		ElMessage.error(`获取用户所属角色失败~`)
@@ -424,9 +439,15 @@ const addHandler = () => {
 	visible.value = true
 }
 
+const chooseThing = item => {
+	assignRoleVisibile.value = true
+	typeModel.value = item
+}
+
 nextTick(() => {
 	getGroup()
 	getRolesList()
+	getDepartmentsList()
 	queryList()
 })