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