From 4a125073dfb0acfefc473e9439ff6a551735e0e5 Mon Sep 17 00:00:00 2001
From: Admin <978517621@qq.com>
Date: 星期五, 05 八月 2022 15:07:42 +0800
Subject: [PATCH] 班组接口对接

---
 src/views/system/personShiftManage/shiftManage/teamManage/index.vue |  278 ++++++++++++++++++++++++++++---------------------------
 1 files changed, 143 insertions(+), 135 deletions(-)

diff --git a/src/views/system/personShiftManage/workingHoursSet/index.vue b/src/views/system/personShiftManage/shiftManage/teamManage/index.vue
similarity index 69%
copy from src/views/system/personShiftManage/workingHoursSet/index.vue
copy to src/views/system/personShiftManage/shiftManage/teamManage/index.vue
index 7eeca06..56e9ca5 100644
--- a/src/views/system/personShiftManage/workingHoursSet/index.vue
+++ b/src/views/system/personShiftManage/shiftManage/teamManage/index.vue
@@ -4,7 +4,7 @@
 		<el-row class="homeCard">
 			<el-col :span="8">
 				<div class="grid-content topInfo">
-					<el-input v-model="searchWord" placeholder="休息时间组名称"></el-input>
+					<el-input v-model="searchWord" placeholder="时间策略名称"></el-input>
 					<el-button type="primary" @click="searchRecord">查询</el-button>
 					<el-button plain @click="clearSearch">重置</el-button>
 				</div>
@@ -29,9 +29,9 @@
 						@selection-change="handleSelectionChange"
 				>
 					<el-table-column type="selection" width="100" />
-					<el-table-column property="name" label="工作时间组名称"/>
-					<el-table-column property="list" :formatter="toNames" label="关联工作时段"/>
-					<el-table-column property="info" label="描述信息"/>
+					<el-table-column property="groupName" label="班组名称"/>
+					<el-table-column property="groupMembers" label="班组人员" width="180" :show-overflow-tooltip="true"/>
+					<el-table-column property="groupInfo" label="描述"/>
 					<el-table-column fixed="right" label="操作" align="center" width="250">
 						<template #default="scope">
 							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
@@ -56,48 +56,50 @@
 			</div>
 		</div>
 		</div>
-		<el-dialog v-model="dialogDetails" title="工作时间组">
+		<el-dialog v-model="dialogDetails" title="时间策略">
 			<el-form :model="details" label-width="120px">
-				<el-form-item label="时间组名称">
+				<el-form-item label="班组名称">
 					<el-input
-							v-model="details.name"
+							v-model="details.groupName"
 							readonly
 					/>
 				</el-form-item>
-				<el-form-item label="关联工作时段" v-if="details.list.length>0">
-					<el-input
-							v-model="details.list"
-							readonly
-					/>
+				<el-form-item label="班组人员">
+					<el-input v-model="details.groupMembers" type="textarea" readonly/>
 				</el-form-item>
-				<el-form-item label="描述信息" v-if="details.info">
-					<el-input
-							v-model="details.info"
-							type="textarea"
-							readonly
-					/>
+				<el-form-item label="描述">
+					<el-input v-model="details.groupInfo" type="textarea" readonly/>
 				</el-form-item>
 				<el-form-item>
 					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
 				</el-form-item>
 			</el-form>
 		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="工作时间组编辑" @close="closeAdd" @open="openAdd">
+		<el-dialog v-model="dialogAddRecord" title="时间策略编辑" @close="closeAdd" @open="openAdd">
 			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
-				<el-form-item label="时间组名称" prop="name">
+				<el-form-item label="班组名称" prop="groupName">
 					<el-input
-							v-model="addRecord.name"
+							v-model="addRecord.groupName"
 					>
 					</el-input>
 				</el-form-item>
-				<el-form-item label="关联工作时段" prop="list">
-					<el-select v-model="addRecord.list" multiple>
-						<el-option v-for="(item,index) in workTimeList" :key="index" :label="item.name" :value="item.id" />
+				<el-form-item label="选择部门" prop="department">
+					<el-cascader
+							v-model="addRecord.department"
+							:options="departmentList"
+							:props="casProps"
+							:show-all-levels="false"
+							@change="handleChange"
+					/>
+				</el-form-item>
+				<el-form-item label="选择人员" prop="groupMembers" v-if="addRecord.department !== ''">
+					<el-select v-model="addRecord.groupMembers" multiple>
+						<el-option v-for="(item,index) in workerList" :label="item.username" :key="index" :value="item.uid">{{item.username}}</el-option>
 					</el-select>
 				</el-form-item>
-				<el-form-item label="描述信息" prop="info">
+				<el-form-item label="描述" prop="groupInfo">
 					<el-input
-							v-model="addRecord.info"
+							v-model="addRecord.groupInfo"
 							type="textarea"
 					>
 					</el-input>
@@ -138,15 +140,15 @@
 	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
 	import { ElTable } from 'element-plus'
 	import { FormInstance, FormRules, ElMessage } from 'element-plus'
-	import { workingHoursSetApi } from '/@/api/basicDateManage/personShiftManage/workingHoursSet';
-	import { workingHoursApi } from '/@/api/basicDateManage/personShiftManage/workingHours';
+	import { teamManageApi } from '/@/api/basicDateManage/personShiftManage/teamManage';
 
 
 	// 定义接口来定义对象的类型
 	interface stateType {
 		tableData: Array<string>,
-		pageRecord: Array<string>,
-		workTimeList: Array<string>,
+		departmentList: Array<any>,
+		workerList: Array<string>,
+		casProps: {},
 		multipleSelection: Array<any>,
 		deleteArr: Array<any>,
 		dialogDetails: boolean,
@@ -160,14 +162,17 @@
 		searchWord: string,
 		totalSize: number,
 		addRecord: {
-			name: string,
-			list: Array<any>,
-			info: string
+			groupName: string,
+			department: number | null,
+			depId: number | null,
+			groupMembers: Array<any>,
+			groupInfo: string
 		},
 		details: {
-			name: string,
-			list: Array<any>,
-			info: string
+			groupName: string,
+			department: number | null,
+			groupMembers: Array<any>,
+			groupInfo: string
 		}
 	}
 
@@ -185,30 +190,43 @@
 			chosenIndex: null,
 			searchWord: '',
 			tableData: [],
-			pageRecord: [],
-			workTimeList: [],
+			departmentList: [],
+			department: '',
+			workerList: [],
+			casProps: {
+				expandTrigger: 'hover',
+				emitPath: false,
+				value: 'depId',
+				label: 'depName'
+			},
 			multipleSelection: [],
 			dialogDetails: false,
 			dialogAddRecord: false,
 			deleteDialog: false,
 			deleteSetDialog: false,
 			addRecord: {
-				name: '',
-				list: [],
-				info: ''
+				groupName: '',
+				department: null,
+				groupMembers: [],
+				depId: null,
+				groupInfo: ''
 			},
 			details: {
-				name: '',
-				list: [],
-				info: ''
+				groupName: '',
+				department: null,
+				groupMembers: [],
+				depId: null,
+				groupInfo: ''
 			},
 			deleteId: null,
 			deleteArr: []
 		})
 		interface User {
-			name: string,
-			list: [],
-			info: string
+			groupName: string,
+			department: number | null,
+			depId: number,
+			groupMembers: Array<any>,
+			groupInfo: string
 		}
 		const multipleTableRef = ref<InstanceType<typeof ElTable>>()
 		const toggleSelection = (rows?: User[]) => {
@@ -235,27 +253,27 @@
 
 		const addRef = ref<FormInstance>()
 		const addRules = reactive<FormRules>({
-			name: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
-			list: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
+			groupName: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
+			department: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
+			groupMembers: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
 		})
 
 		// 页面载入时执行方法
 		onMounted(() => {
 			getListByPage()
-			getWorkTimePeriod()
+			getAllDepartment()
 		})
 
-		// 分页获取工作时间组列表
+		// 分页获取班组管理列表
 		const getListByPage = async ()=>{
-			const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{name: state.searchWord}}
-			let res = await workingHoursSetApi().postWorkTimeGroupPage(data);
+			const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{groupName: state.searchWord,containGroupMemberEnable: true}}
+			let res = await teamManageApi().getRecordPage(data);
 			if (res.data.code === '200') {
-				state.pageRecord = res.data.data
 				state.tableData = res.data.data.map((item)=>{
-					if(item.list == null){
-						item.list = []
+					if(!item.groupMembers || item.groupMembers == null){
+						item.groupMembers = []
 					}else{
-						item.list= Array.from(item.list,({workTimePeriodId})=>workTimePeriodId)
+						item.groupMembers= Array.from(item.groupMembers,({username})=>username)
 					}
 					return item
 				})
@@ -268,30 +286,26 @@
 			}
 		}
 
-		// 表格数据格式化
-		const toNames =(row, column, cellValue, index) => {
-			if(row.list==[]){
-				return []
-			}else{
-				const nameList = []
-				for(let i=0;i<row.list.length;i++){
-					for(let t=0;t<state.workTimeList.length;t++){
-						if(row.list[i]==state.workTimeList[t].id){
-							nameList.push(state.workTimeList[t].name)
-						}
-					}
-				}
-				return nameList.join()
+		// 获取部门列表
+		const getAllDepartment = async () => {
+			let res = await teamManageApi().getAllDepartment();
+			if (res.data.code === '200') {
+				state.departmentList = res.data.data
+			} else {
+				ElMessage({
+					type: 'warning',
+					message: res.data.msg
+				});
 			}
 		}
 
-		// 获取工作时段列表
-		const getWorkTimePeriod = async () => {
-			let res = await workingHoursApi().getWorkTimePeriod();
-			if (res.data.code === '200') {
-				state.workTimeList = res.data.data
-				console.log(state.workTimeList,'list')
-			} else {
+		const handleChange = async (value)=>{
+			state.addRecord.depId = value
+			console.log(state.addRecord.department,'de')
+			let res = await teamManageApi().getAllMember(value);
+			if(res.data.code === '200'){
+				state.workerList = res.data.data
+			}else{
 				ElMessage({
 					type: 'warning',
 					message: res.data.msg
@@ -316,9 +330,9 @@
 			getListByPage()
 		}
 
-		// 添加工作时段方法
+		// 添加班组管理方法
 		const addRecord = async (data:any) => {
-			let res = await workingHoursSetApi().addWorkTimeGroup(data);
+			let res = await teamManageApi().addRecord(data);
 			if (res.data.code === '200') {
 				ElMessage({
 					type: 'success',
@@ -334,8 +348,16 @@
 		};
 
 		// 修改工作时段方法
+		const editRecordBtn = async (index, row) => {
+			state.addRecord = JSON.parse(JSON.stringify(row))
+			state.addRecord.department = ''
+			state.addRecord.groupMembers = []
+			state.dialogAddRecord = true
+			state.chosenIndex = index
+		}
+
 		const editRecord = async (data:any) => {
-			let res = await workingHoursSetApi().updateWorkTimeGroup(data);
+			let res = await teamManageApi().updateRecord(data);
 			if (res.data.code === '200') {
 				ElMessage({
 					type: 'success',
@@ -356,15 +378,15 @@
 			await formEl.validate(async (valid, fields) => {
 				if (valid) {
 					const data = {
-						name: state.addRecord.name,
-						info: state.addRecord.info,
-						workTimePeriodIds: state.addRecord.list
+						groupName: state.addRecord.groupName,
+						groupInfo: state.addRecord.groupInfo,
+						depId: state.addRecord.depId,
+						groupMemberIds: state.addRecord.groupMembers
 					}
 					if (state.chosenIndex == null) {
 						await addRecord(data)
 					} else {
-						data.id = JSON.stringify(state.addRecord.id),
-								console.log(data,'修改参数')
+						data.groupId = JSON.stringify(state.addRecord.groupId)
 						await editRecord(data)
 					}
 					state.dialogAddRecord = false
@@ -377,7 +399,7 @@
 
 		// 删除工作时间组方法
 		const deleteRecord = async (data:any) => {
-			let res = await workingHoursSetApi().deleteWorkTimeGroup(data);
+			let res = await teamManageApi().deleteRecord(data);
 			if (res.data.code === '200') {
 				ElMessage({
 					type: 'success',
@@ -393,44 +415,49 @@
 		}
 
 		const deleteRecordBtn = (row) => {
-			state.deleteId = row.id
+			console.log(row,'row')
+			state.deleteId = row.groupId
 			state.deleteDialog = true
 		}
 
 		const conFirmDelete = () => {
-			deleteRecord({ id: state.deleteId })
+			deleteRecord({ groupId: state.deleteId })
 			state.deleteDialog = false
 		}
 
 		// 批量删除
 		const deleteBatchBtn = async () => {
-			if (state.deleteArr.length > 0) {
-				state.deleteSetDialog = true
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: '请先选择要删除的记录'
-				});
-			}
+			ElMessage({
+				type: 'warning',
+				message: '抱歉,本页面暂不支持批量删除'
+			});
+			// if (state.deleteArr.length > 0) {
+			// 	state.deleteSetDialog = true
+			// } else {
+			// 	ElMessage({
+			// 		type: 'warning',
+			// 		message: '请先选择要删除的记录'
+			// 	});
+			// }
 		};
 
-		const conFirmDeleteBatch = async () => {
-			let res = await workingHoursSetApi().deletBatchWorkTimeGroup({ids: state.deleteArr});
-			if (res.data.code === '200') {
-				state.deleteSetDialog = false
-				ElMessage({
-					type: 'success',
-					message: res.data.msg
-				});
-				getListByPage()
-			} else {
-				ElMessage({
-					type: 'warning',
-					message: res.data.msg
-				});
-				state.deleteSetDialog = false
-			}
-		}
+		// const conFirmDeleteBatch = async () => {
+		// 	let res = await teamManageApi().deletBatchRecord({ids: state.deleteArr});
+		// 	if (res.data.code === '200') {
+		// 		state.deleteSetDialog = false
+		// 		ElMessage({
+		// 			type: 'success',
+		// 			message: res.data.msg
+		// 		});
+		// 		getListByPage()
+		// 	} else {
+		// 		ElMessage({
+		// 			type: 'warning',
+		// 			message: res.data.msg
+		// 		});
+		// 		state.deleteSetDialog = false
+		// 	}
+		// }
 
 		const handleSizeChange = (val: number) => {
 			state.pageSize = val
@@ -444,18 +471,6 @@
 		// 查看记录
 		const viewRecord = (row) => {
 			state.details = JSON.parse(JSON.stringify(row))
-			if(row.list==[]){
-				state.details.list = []
-			}else{
-				state.details.list = []
-				for(let i=0;i<row.list.length;i++){
-					for(let t=0;t<state.workTimeList.length;t++){
-						if(row.list[i]==state.workTimeList[t].id){
-							state.details.list.push(state.workTimeList[t].name)
-						}
-					}
-				}
-			}
 			state.dialogDetails = true
 		}
 
@@ -463,12 +478,7 @@
 		const reLoadData = async () =>{
 			getListByPage()
 		}
-		// 点击修改
-		const editRecordBtn = (index, row) => {
-			state.dialogAddRecord = true
-			state.chosenIndex = index
-			state.addRecord = JSON.parse(JSON.stringify(row))
-		}
+
 		const closeAdd = () => {
 			state.addRecord = {}
 			state.chosenIndex = null
@@ -496,7 +506,7 @@
 			Delete,
 			Refresh,
 			Plus,
-			toNames,
+			handleChange,
 			toggleSelection,
 			handleSelectionChange,
 			searchRecord,
@@ -505,11 +515,9 @@
 			deleteRecordBtn,
 			conFirmDelete,
 			getListByPage,
-			getWorkTimePeriod,
 			reLoadData,
 			deleteRecord,
 			deleteBatchBtn,
-			conFirmDeleteBatch,
 			handleSizeChange,
 			handleCurrentChange,
 			confirmAddRecord,

--
Gitblit v1.9.2