Admin
2022-09-13 ea2b0825e761a55b17e7bfa044e8267de09c27a9
src/views/specialWorkSystem/workPlan/workReservation/index.vue
@@ -5,23 +5,20 @@
            <el-col :span="6" style="display:flex;align-items: center">
               <span style="white-space: nowrap">申请部门:</span>
               <div class="grid-content topInfo">
                  <el-input v-model="workPermitNo" placeholder="请输入部门名称"></el-input>
                  <el-cascader v-model="searchDep" :options="departmentList" :props="casProps" :show-all-levels="false"/>
               </div>
            </el-col>
            <el-col :span="6" style="display:flex;align-items: center">
               <span style="white-space: nowrap">预约日期:</span>
            <el-col :span="6" style="display:flex;align-items: center;">
               <span style="white-space: nowrap;margin-left: 20px">预约日期:</span>
               <div class="grid-content topInfo">
                  <el-select v-model="workType" placeholder="请选择作业类型">
                     <el-option
                           v-for="item in workTypeList"
                           :key="item.id"
                           :label="item.name"
                           :value="item.id"
                     />
                  </el-select>
                  <el-date-picker
                        v-model="searchDate"
                        type="date"
                        format="YYYY-MM-DD" value-format="YYYY-MM-DD"
                  />
               </div>
            </el-col>
            <el-button type="primary" @click="searchRecord">查询</el-button>
            <el-button style="margin-left: 20px" type="primary" @click="searchRecord">查询</el-button>
            <el-button plain @click="clearSearch">重置</el-button>
         </el-row>
         <div class="homeCard">
@@ -40,16 +37,16 @@
               >
<!--                  <el-table-column type="selection" width="55" />-->
                  <el-table-column type="index" label="序号" width="80" />
                  <el-table-column prop="department" label="申请部门"/>
                  <el-table-column prop="time" label="预约时间"/>
                  <el-table-column prop="fireWork" label="动火作业"/>
                  <el-table-column prop="spaceWork" label="受限空间作业"/>
                  <el-table-column prop="hangWork" label="吊装作业"/>
                  <el-table-column prop="dirtyWork" label="动土作业"/>
                  <el-table-column prop="cut" label="断路作业"/>
                  <el-table-column prop="high" label="高处作业" />
                  <el-table-column prop="tempUse" label="临时用电作业"/>
                  <el-table-column prop="block" label="盲板抽堵作业"/>
                  <el-table-column prop="applyDepName" label="申请部门"/>
                  <el-table-column prop="appointmentTime" label="预约时间"/>
                  <el-table-column prop="hotWork" label="动火作业"/>
                  <el-table-column prop="confinedSpaceOper" label="受限空间作业"/>
                  <el-table-column prop="liftingOper" label="吊装作业"/>
                  <el-table-column prop="groundBreakingOper" label="动土作业"/>
                  <el-table-column prop="openCircuitOper" label="断路作业"/>
                  <el-table-column prop="workAtHeight" label="高处作业" />
                  <el-table-column prop="temporaryPowerOper" label="临时用电作业"/>
                  <el-table-column prop="blindPlatePluggingOper" 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>
@@ -78,61 +75,61 @@
         <el-form :model="details" label-width="120px">
            <el-form-item label="申请部门">
               <el-input
                     v-model="details.department"
                     v-model="details.applyDepName"
                     readonly
               />
            </el-form-item>
            <el-form-item label="预约时间">
               <el-input
                     v-model="details.time"
                     v-model="details.appointmentTime"
                     readonly
               />
            </el-form-item>
            <el-form-item label="动火作业">
               <el-input
                     v-model="details.fireWork"
                     v-model="details.hotWork"
                     readonly
               />
            </el-form-item>
            <el-form-item label="受限空间作业">
               <el-input
                     v-model="details.spaceWork"
                     v-model="details.confinedSpaceOper"
                     readonly
               />
            </el-form-item>
            <el-form-item label="吊装作业">
               <el-input
                     v-model="details.hangWork"
                     v-model="details.liftingOper"
                     readonly
               />
            </el-form-item>
            <el-form-item label="动土作业">
               <el-input
                     v-model="details.dirtyWork"
                     v-model="details.groundBreakingOper"
                     readonly
               />
            </el-form-item>
            <el-form-item label="断路作业">
               <el-input
                     v-model="details.cut"
                     v-model="details.openCircuitOper"
                     readonly
               />
            </el-form-item>
            <el-form-item label="高处作业">
               <el-input
                     v-model="details.high"
                     v-model="details.workAtHeight"
                     readonly
               />
            </el-form-item>
            <el-form-item label="临时用电作业">
               <el-input
                     v-model="details.tempUse"
                     v-model="details.temporaryPowerOper"
                     readonly
               />
            </el-form-item>
            <el-form-item label="盲板抽堵作业">
               <el-input
                     v-model="details.block"
                     v-model="details.blindPlatePluggingOper"
                     readonly
               />
            </el-form-item>
@@ -143,56 +140,57 @@
           </span>
         </template>
      </el-dialog>
      <el-dialog v-model="dialogAddRecord" title="作业预约编辑" @close="closeAdd" @open="openAdd">
      <el-dialog v-model="dialogAddRecord" title="作业预约编辑" @close="closeAdd">
         <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
            <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 label="申请部门" prop="applyDepId">
               <el-cascader :disabled = isDisabled v-model="addRecord.applyDepId" :options="departmentList" :props="casProps" :show-all-levels="false" @change="handleChange" />
            </el-form-item>
            <el-form-item label="预约时间" prop="time">
            <el-form-item label="预约时间" prop="appointmentTime">
               <el-date-picker
                     v-model="addRecord.time"
                     type="datetime"
                     format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
                     v-model="addRecord.appointmentTime"
                     type="date"
                     format="YYYY-MM-DD" value-format="YYYY-MM-DD"
                     :disabled = isDisabled
               />
            </el-form-item>
            <el-form-item label="动火作业">
            <el-form-item label="动火作业" prop="hotWork">
               <el-input
                     v-model="addRecord.fireWork"
                     v-model="addRecord.hotWork"
               />
            </el-form-item>
            <el-form-item label="受限空间作业">
            <el-form-item label="受限空间作业" prop="confinedSpaceOper">
               <el-input
                     v-model="addRecord.spaceWork"
                     v-model="addRecord.confinedSpaceOper"
               />
            </el-form-item>
            <el-form-item label="吊装作业">
            <el-form-item label="吊装作业" prop="liftingOper">
               <el-input
                     v-model="addRecord.hangWork"
                     v-model="addRecord.liftingOper"
               />
            </el-form-item>
            <el-form-item label="动土作业">
            <el-form-item label="动土作业" prop="groundBreakingOper">
               <el-input
                     v-model="addRecord.dirtyWork"
                     v-model="addRecord.groundBreakingOper"
               />
            </el-form-item>
            <el-form-item label="断路作业">
            <el-form-item label="断路作业" prop="openCircuitOper">
               <el-input
                     v-model="addRecord.cut"
                     v-model="addRecord.openCircuitOper"
               />
            </el-form-item>
            <el-form-item label="高处作业">
            <el-form-item label="高处作业" prop="workAtHeight">
               <el-input
                     v-model="addRecord.high"
                     v-model="addRecord.workAtHeight"
               />
            </el-form-item>
            <el-form-item label="临时用电作业">
            <el-form-item label="临时用电作业" prop="temporaryPowerOper">
               <el-input
                     v-model="addRecord.tempUse"
                     v-model="addRecord.temporaryPowerOper"
               />
            </el-form-item>
            <el-form-item label="盲板抽堵作业">
            <el-form-item label="盲板抽堵作业" prop="blindPlatePluggingOper">
               <el-input
                     v-model="addRecord.block"
                     v-model="addRecord.blindPlatePluggingOper"
               />
            </el-form-item>
         </el-form>
@@ -201,6 +199,15 @@
            <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
            <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
           </span>
         </template>
      </el-dialog>
      <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
         <span>您确定要删除该条记录吗?</span>
         <template #footer>
                <span class="dialog-footer">
                    <el-button @click="deleteDialog = false" size="default">取消</el-button>
                    <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
                </span>
         </template>
      </el-dialog>
   </div>
@@ -215,13 +222,13 @@
   import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
   import { ElTable, ElMessage, ElMessageBox } from 'element-plus'
   import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus'
   import { workReserveApi } from '/@/api/specialWorkSystem/workPlan/workReservation';
   import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage';
   import {holidayGroupApi} from "/@/api/systemManage/basicDateManage/personShiftManage/holidayTimeGroup";
   // 定义接口来定义对象的类型
   interface stateType {
      tableData: Array<any>;
      departmentList: Array<any>;
      department:string;
      casProps: {};
      multipleSelection: Array<any>;
      deleteArr: Array<any>;
@@ -233,8 +240,9 @@
      pageSize: number;
      chosenIndex: null | number;
      deleteId: null | number;
      workPermitNo: string;
      workType: number | null;
      searchDep: number | null;
      searchDate: string;
      isDisabled:boolean;
      totalSize: number;
      addRecord: {
@@ -256,11 +264,11 @@
            pageSize: 10,
            totalSize: 0,
            chosenIndex: null,
            workPermitNo: '',
            workType: null,
            searchDep: null,
            searchDate: '',
            isDisabled: false,
            tableData: [],
            departmentList: [],
            department: '',
            casProps: {
               expandTrigger: 'hover',
               emitPath: false,
@@ -291,18 +299,21 @@
         const addRef = ref<FormInstance>();
         const addRules = reactive<FormRules>({
            workPermitNo: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            combustible: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            oxygen: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            carbonMonoxide: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            hydrogenSulfide: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            info: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
            applyDepId: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            appointmentTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            hotWork: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            groundBreakingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            blindPlatePluggingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            temporaryPowerOper   : [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            workAtHeight: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            openCircuitOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            liftingOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            confinedSpaceOper: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
         });
         // 页面载入时执行方法
         onMounted(() => {
            // getListByPage()
            getListByPage()
            getAllDepartment()
         });
@@ -321,9 +332,8 @@
         // 分页获取气体检测列表
         const getListByPage = async () => {
            getAll()
            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { workType: state.workType, workPermitNo: state.workPermitNo } };
            let res = await workProcessApi().getDetectionListPage(data);
            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { applyDepId: state.searchDep, appointmentTime: state.searchDate } };
            let res = await workReserveApi().getReserveListPage(data);
            if (res.data.code === '200') {
               state.tableData = JSON.parse(JSON.stringify(res.data.data))
               state.totalSize = res.data.total;
@@ -335,22 +345,9 @@
            }
         };
         // 获取用户列表
         const getAll = async ()=>{
            const res = await workApplyApi().getAllUsers()
            if (res.data.code === '200') {
               state.workerList = JSON.parse(JSON.stringify(res.data.data))
            } else {
               ElMessage({
                  type: 'warning',
                  message: res.data.msg
               });
            }
         };
         // 关键词查询记录
         const searchRecord = async () => {
            if (state.workPermitNo == ''&& state.workType == null) {
            if (state.searchDep == null && state.searchDate == '') {
               ElMessage({
                  type: 'warning',
                  message: '请输入查询关键词'
@@ -361,14 +358,31 @@
         };
         const clearSearch = async () => {
            state.workPermitNo = '';
            state.workType = null;
            state.searchDep = null;
            state.searchDate = '';
            getListByPage();
         };
         // 添加气体检测方法
         // 添加记录方法
         const addRecord = async (data: any) => {
            let res = await workProcessApi().postDetectionReport(data);
            let res = await workReserveApi().addRecord(data);
            if (res.data.code === '200') {
               ElMessage({
                  type: 'success',
                  message: res.data.msg
               });
               getListByPage();
            } else {
               ElMessage({
                  type: 'warning',
                  message: res.data.msg
               });
            }
         };
         // 修改记录方法
         const editRecord = async (data: any) => {
            let res = await workReserveApi().editRecord(data);
            if (res.data.code === '200') {
               ElMessage({
                  type: 'success',
@@ -388,7 +402,7 @@
            state.dialogAddRecord = true;
            state.chosenIndex = index;
            state.addRecord = JSON.parse(JSON.stringify(row));
            console.log(state.addRecord, 'state.addRecord');
            state.isDisabled = true
         };
         // 新增修改记录
@@ -397,15 +411,23 @@
            await formEl.validate(async (valid, fields) => {
               if (valid) {
                  const data = {
                     workPermitNo: state.addRecord.workPermitNo,
                     info: state.addRecord.info,
                     combustible: Number(state.addRecord.combustible),
                     oxygen: Number(state.addRecord.oxygen),
                     carbonMonoxide: Number(state.addRecord.carbonMonoxide),
                     hydrogenSulfide: Number(state.addRecord.hydrogenSulfide),
                     source: 2,
                     applyDepId: state.addRecord.applyDepId,
                     appointmentTime: state.addRecord.appointmentTime,
                     hotWork: Number(state.addRecord.hotWork),
                     groundBreakingOper: Number(state.addRecord.groundBreakingOper),
                     blindPlatePluggingOper: Number(state.addRecord.blindPlatePluggingOper),
                     temporaryPowerOper: Number(state.addRecord.temporaryPowerOper),
                     workAtHeight: Number(state.addRecord.workAtHeight),
                     openCircuitOper: Number(state.addRecord.openCircuitOper),
                     liftingOper: Number(state.addRecord.liftingOper),
                     confinedSpaceOper: Number(state.addRecord.confinedSpaceOper),
                  };
                  await addRecord(data);
                  if (state.chosenIndex == null) {
                     await addRecord(data);
                  } else {
                     data.id = state.addRecord.id
                     await editRecord(data);
                  }
                  state.dialogAddRecord = false;
                  getListByPage();
               } else {
@@ -435,9 +457,9 @@
         };
         // 删除班组策略方法
         // 删除方法
         const deleteRecord = async (data: any) => {
            let res = await teamStrategyApi().deleteRecord(data);
            let res = await workReserveApi().deleteRecord(data);
            if (res.data.code === '200') {
               ElMessage({
                  type: 'success',
@@ -453,12 +475,12 @@
         };
         const deleteRecordBtn = (row) => {
            state.deleteId = row.groupStrategyId;
            state.deleteId = row.id;
            state.deleteDialog = true;
         };
         const conFirmDelete = () => {
            deleteRecord({ groupStrategyId: state.deleteId });
            deleteRecord({ id: state.deleteId });
            state.deleteDialog = false;
         };
@@ -466,13 +488,9 @@
         const closeAdd = () => {
            state.addRecord = {};
            state.chosenIndex = null;
            state.isDisabled = false
         };
         const openAdd = () => {
            if (state.chosenIndex == null) {
               state.addRecord.info = '';
            }
         };
         const indexClear = () => {
            state.deleteId = null;
         };
@@ -504,7 +522,6 @@
            handleCurrentChange,
            confirmAddRecord,
            closeAdd,
            openAdd,
            indexClear,
            ...toRefs(state)
         };