Admin
2022-08-05 4a125073dfb0acfefc473e9439ff6a551735e0e5
src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue
copy from src/views/system/personShiftManage/workingHoursSet/index.vue copy to src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue
文件从 src/views/system/personShiftManage/workingHoursSet/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,8 +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="name" label="时间策略名称"/>
               <el-table-column property="workList" label="关联工作时间组"/>
               <el-table-column property="restList" label="关联休息时间组"/>
               <el-table-column property="info" label="描述信息"/>
               <el-table-column fixed="right" label="操作" align="center" width="250">
                  <template #default="scope">
@@ -56,17 +57,23 @@
         </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"
                     readonly
               />
            </el-form-item>
            <el-form-item label="关联工作时段" v-if="details.list.length>0">
            <el-form-item label="关联工作时间组">
               <el-input
                     v-model="details.list"
                     v-model="details.workList"
                     readonly
               />
            </el-form-item>
            <el-form-item label="关联休息时间组">
               <el-input
                     v-model="details.restList"
                     readonly
               />
            </el-form-item>
@@ -82,17 +89,22 @@
            </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="name">
               <el-input
                     v-model="addRecord.name"
               >
               </el-input>
            </el-form-item>
            <el-form-item label="关联工作时段" prop="list">
               <el-select v-model="addRecord.list" multiple>
            <el-form-item label="关联工作时间组" prop="workList">
               <el-select v-model="addRecord.workList">
                  <el-option v-for="(item,index) in workTimeList" :key="index" :label="item.name" :value="item.id" />
               </el-select>
            </el-form-item>
            <el-form-item label="关联休息时间组" prop="restList">
               <el-select v-model="addRecord.restList">
                  <el-option v-for="(item,index) in restTimeList" :key="index" :label="item.name" :value="item.id" />
               </el-select>
            </el-form-item>
            <el-form-item label="描述信息" prop="info">
@@ -138,15 +150,14 @@
   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 { timeStrategyApi } from '/@/api/basicDateManage/personShiftManage/timeStrategy';
   // 定义接口来定义对象的类型
   interface stateType {
      tableData: Array<string>,
      pageRecord: Array<string>,
      workTimeList: Array<string>,
      restTimeList: Array<string>,
      multipleSelection: Array<any>,
      deleteArr: Array<any>,
      dialogDetails: boolean,
@@ -161,12 +172,14 @@
      totalSize: number,
      addRecord: {
         name: string,
         list: Array<any>,
         workList: string,
         restList: string,
         info: string
      },
      details: {
         name: string,
         list: Array<any>,
         workList: string,
         restList: string,
         info: string
      }
   }
@@ -185,8 +198,8 @@
         chosenIndex: null,
         searchWord: '',
         tableData: [],
         pageRecord: [],
         workTimeList: [],
         restTimeList: [],
         multipleSelection: [],
         dialogDetails: false,
         dialogAddRecord: false,
@@ -194,12 +207,14 @@
         deleteSetDialog: false,
         addRecord: {
            name: '',
            list: [],
            workList: '',
            restList: '',
            info: ''
         },
         details: {
            name: '',
            list: [],
            workList: '',
            restList: '',
            info: ''
         },
         deleteId: null,
@@ -207,7 +222,8 @@
      })
      interface User {
         name: string,
         list: [],
         workList: string,
         restList: string,
         info: string
      }
      const multipleTableRef = ref<InstanceType<typeof ElTable>>()
@@ -236,29 +252,46 @@
      const addRef = ref<FormInstance>()
      const addRules = reactive<FormRules>({
         name: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
         list: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
         workList: [{required: true, message: '该内容不能为空', trigger: 'blur'}],
         restList: [{required: true, message: '该内容不能为空', trigger: 'blur'}]
      })
      // 页面载入时执行方法
      onMounted(() => {
         getListByPage()
         getWorkTimePeriod()
         getWorkTimeList()
         getRestTimeList()
      })
      // 分页获取工作时间组列表
      // 分页获取休息时间组列表
      const getListByPage = async ()=>{
         const data = {pageSize: state.pageSize,pageIndex: state.pageIndex,searchParams:{name: state.searchWord}}
         let res = await workingHoursSetApi().postWorkTimeGroupPage(data);
         let res = await timeStrategyApi().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.workTimeGroupRespDTO == null || item.workTimeGroupRespDTO.list == []){
               //    item.workList = []
               // }else{
               //    item.workList= Array.from(item.workTimeGroupRespDTO.list,({workTimeGroupId})=>workTimeGroupId)
               // }
               // if(item.breakTimeGroupRespDTO == null || item.breakTimeGroupRespDTO.list == []){
               //    item.restList = []
               // }else{
               //    item.restList= Array.from(item.breakTimeGroupRespDTO.list,({breakTimeGroupId})=>breakTimeGroupId)
               // }
               if(item.workTimeGroupRespDTO == null){
                  item.workList = ''
               }else{
                  item.list= Array.from(item.list,({workTimePeriodId})=>workTimePeriodId)
                  item.workList= item.workTimeGroupRespDTO.name
               }
               if(item.breakTimeGroupRespDTO == null){
                  item.restList = ''
               }else{
                  item.restList= item.breakTimeGroupRespDTO.name
               }
               return item
            })
            console.log(state.tableData,'state.tableData')
            state.totalSize = res.data.total
         } else {
            ElMessage({
@@ -268,29 +301,24 @@
         }
      }
      // 表格数据格式化
      const toNames =(row, column, cellValue, index) => {
         if(row.list==[]){
            return []
      // 获取工作时间组列表
      const getWorkTimeList = async () => {
         let res = await timeStrategyApi().getWorkTimeList();
         if (res.data.code === '200') {
            state.workTimeList = res.data.data
         }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()
            ElMessage({
               type: 'warning',
               message: res.data.msg
            });
         }
      }
      // 获取工作时段列表
      const getWorkTimePeriod = async () => {
         let res = await workingHoursApi().getWorkTimePeriod();
      // 获取休息时间组列表
      const getRestTimeList = async () => {
         let res = await timeStrategyApi().getRestTimeList();
         if (res.data.code === '200') {
            state.workTimeList = res.data.data
            console.log(state.workTimeList,'list')
            state.restTimeList = res.data.data
         } else {
            ElMessage({
               type: 'warning',
@@ -318,7 +346,7 @@
      // 添加工作时段方法
      const addRecord = async (data:any) => {
         let res = await workingHoursSetApi().addWorkTimeGroup(data);
         let res = await timeStrategyApi().addRecord(data);
         if (res.data.code === '200') {
            ElMessage({
               type: 'success',
@@ -335,7 +363,7 @@
      // 修改工作时段方法
      const editRecord = async (data:any) => {
         let res = await workingHoursSetApi().updateWorkTimeGroup(data);
         let res = await timeStrategyApi().updateRecord(data);
         if (res.data.code === '200') {
            ElMessage({
               type: 'success',
@@ -358,13 +386,19 @@
               const data = {
                  name: state.addRecord.name,
                  info: state.addRecord.info,
                  workTimePeriodIds: state.addRecord.list
                  workTimeGroupId: state.addRecord.workList,
                  breakTimeGroupId: state.addRecord.restList
               }
               if (state.chosenIndex == null) {
                  await addRecord(data)
               } else {
                  data.id = JSON.stringify(state.addRecord.id),
                        console.log(data,'修改参数')
                  data.id = JSON.stringify(state.addRecord.id)
                  if(typeof state.addRecord.workList == 'string'){
                     data.workTimeGroupId = state.addRecord.workTimeGroupId
                  }
                  if(typeof state.addRecord.restList == 'string'){
                     data.breakTimeGroupId = state.addRecord.breakTimeGroupId
                  }
                  await editRecord(data)
               }
               state.dialogAddRecord = false
@@ -377,7 +411,7 @@
      // 删除工作时间组方法
      const deleteRecord = async (data:any) => {
         let res = await workingHoursSetApi().deleteWorkTimeGroup(data);
         let res = await timeStrategyApi().deleteRecord(data);
         if (res.data.code === '200') {
            ElMessage({
               type: 'success',
@@ -415,7 +449,7 @@
      };
      const conFirmDeleteBatch = async () => {
         let res = await workingHoursSetApi().deletBatchWorkTimeGroup({ids: state.deleteArr});
         let res = await timeStrategyApi().deletBatchRecord({ids: state.deleteArr});
         if (res.data.code === '200') {
            state.deleteSetDialog = false
            ElMessage({
@@ -444,18 +478,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
      }
@@ -468,6 +490,7 @@
         state.dialogAddRecord = true
         state.chosenIndex = index
         state.addRecord = JSON.parse(JSON.stringify(row))
         console.log(state.addRecord,'state.addRecord')
      }
      const closeAdd = () => {
         state.addRecord = {}
@@ -496,7 +519,6 @@
         Delete,
         Refresh,
         Plus,
         toNames,
         toggleSelection,
         handleSelectionChange,
         searchRecord,
@@ -505,7 +527,8 @@
         deleteRecordBtn,
         conFirmDelete,
         getListByPage,
         getWorkTimePeriod,
         getWorkTimeList,
         getRestTimeList,
         reLoadData,
         deleteRecord,
         deleteBatchBtn,