Admin
2022-09-21 999cab6fb3fc6d2a288d365da991351c5a396bf0
src/views/specialWorkSystem/workProcess/gasCheck/index.vue
@@ -5,15 +5,15 @@
            <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="searchWord"></el-input>
                  <el-input v-model="workPermitNo" placeholder="请输入作业证编号"></el-input>
               </div>
            </el-col>
            <el-col :span="6" style="display:flex;align-items: center">
               <span style="white-space: nowrap">作业类型:</span>
               <div class="grid-content topInfo">
                  <el-select v-model="searchType" placeholder="请选择作业类型">
                  <el-select v-model="workType" placeholder="请选择作业类型">
                     <el-option
                           v-for="item in workType"
                           v-for="item in workTypeList"
                           :key="item.id"
                           :label="item.name"
                           :value="item.id"
@@ -30,30 +30,29 @@
                  <el-col :span="12" class="mainCardBtn">
                     <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button>
                  </el-col>
                  <el-button type="primary" :icon="Refresh" size="default"/>
                  <el-button type="primary" :icon="Refresh" size="default" @click="reLoadData"/>
               </el-row>
               <el-table
                     ref="multipleTableRef"
                     :data="tableData"
                     style="width: 100%"
                     height="calc(100% - 100px)"
                     :header-cell-style="{background: '#fafafa'}"
               >
                  <el-table-column type="index" label="序号" width="200"/>
                  <el-table-column property="id" label="作业证编号" width="200"/>
                  <el-table-column property="workType" label="作业类型" width="200"/>
<!--                  <el-table-column property="combustible" label="可燃气%"/>-->
                  <el-table-column property="combustible" label="可燃气%">
                     <template #default="scope">
                        <span :class="scope.row.combustible > 0 ? 'red': ''">{{ scope.row.combustible }}</span>
                     </template>
                  </el-table-column>
                  <el-table-column type="index" label="序号" width="80"/>
                  <el-table-column property="workPermitNo" label="作业证编号"/>
                  <el-table-column property="workTypeDesc" label="作业类型"/>
                  <el-table-column property="combustible" label="可燃气%"/>
<!--                  <el-table-column property="combustible" label="可燃气%">-->
<!--                     <template #default="scope">-->
<!--                        <span :class="scope.row.combustible > 0 ? 'red': ''">{{ scope.row.combustible }}</span>-->
<!--                     </template>-->
<!--                  </el-table-column>-->
                  <el-table-column property="oxygen" label="氧气%"/>
                  <el-table-column property="co" label="一氧化碳ppm"/>
                  <el-table-column property="hs" label="硫化氢ppm"/>
                  <el-table-column property="desc" label="描述" width="200"/>
                  <el-table-column property="name" label="分析人"/>
                  <el-table-column property="updateTime" label="分析时间"/>
                  <el-table-column property="carbonMonoxide" label="一氧化碳ppm"/>
                  <el-table-column property="hydrogenSulfide" label="硫化氢ppm"/>
                  <el-table-column property="info" label="描述" show-overflow-tooltip width="200"/>
                  <el-table-column property="operatorUname" label="分析人"/>
                  <el-table-column property="operationTime" label="分析时间" align="center" width="180"/>
                  <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>
@@ -68,7 +67,7 @@
                        small=false
                        background
                        layout="total, sizes, prev, pager, next, jumper"
                        :total="100"
                        :total="totalSize"
                        @size-change="handleSizeChange"
                        @current-change="handleCurrentChange"
                  />
@@ -79,10 +78,10 @@
      <el-dialog v-model="dialogDetails" title="检测记录">
         <el-form :model="details" label-width="120px">
            <el-form-item label="作业证编号">
               <el-input v-model="details.id" readonly/>
               <el-input v-model="details.workPermitNo" readonly/>
            </el-form-item>
            <el-form-item label="作业类型">
               <el-input v-model="details.workType" readonly/>
               <el-input v-model="details.workTypeDesc" readonly/>
            </el-form-item>
            <el-form-item label="可燃气%">
               <el-input v-model="details.combustible" readonly/>
@@ -91,34 +90,40 @@
               <el-input v-model="details.oxygen" readonly/>
            </el-form-item>
            <el-form-item label="一氧化碳ppm">
               <el-input v-model="details.co" readonly/>
               <el-input v-model="details.carbonMonoxide" readonly/>
            </el-form-item>
            <el-form-item label="硫化氢ppm">
               <el-input v-model="details.hs" readonly/>
               <el-input v-model="details.hydrogenSulfide" readonly/>
            </el-form-item>
            <el-form-item label="描述">
               <el-input v-model="details.desc" type="textarea" readonly/>
               <el-input v-model="details.info" type="textarea" readonly/>
            </el-form-item>
            <el-form-item label="分析人">
               <el-input v-model="details.name" readonly/>
               <el-input v-model="details.operatorUname" readonly/>
            </el-form-item>
            <el-form-item label="分析时间">
               <el-input v-model="details.updateTime" readonly/>
            </el-form-item>
            <el-form-item>
               <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
               <el-input v-model="details.operationTime" readonly/>
            </el-form-item>
         </el-form>
         <template #footer>
           <span class="dialog-footer">
            <el-button type="primary" @click="dialogDetails = false">确认</el-button>
           </span>
         </template>
      </el-dialog>
      <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="id">
               <el-input v-model="addRecord.id"> </el-input>
            <el-form-item label="作业证编号" prop="workPermitNo">
               <el-input v-model="addRecord.workPermitNo" placeholder="作业编号须为已审批作业的编号,可点击右方按钮查询">
                  <template #append>
                     <el-button :icon="Search" @click="dialogPermitNo = true"/>
                  </template>
               </el-input>
            </el-form-item>
            <el-form-item label="作业类型" prop="groupMembers">
               <el-select v-model="addRecord.groupMembers">
            <el-form-item label="作业类型" prop="workType">
               <el-select v-model="addRecord.workType">
                  <el-option
                        v-for="item in workType"
                        v-for="item in workTypeList"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id"
@@ -131,34 +136,45 @@
            <el-form-item label="氧气%" prop="oxygen">
               <el-input v-model="addRecord.oxygen"/>
            </el-form-item>
            <el-form-item label="一氧化碳ppm" prop="combustible">
               <el-input v-model="addRecord.co"/>
            <el-form-item label="一氧化碳ppm" prop="carbonMonoxide">
               <el-input v-model="addRecord.carbonMonoxide"/>
            </el-form-item>
            <el-form-item label="硫化氢ppm" prop="oxygen">
               <el-input v-model="addRecord.hs"/>
            <el-form-item label="硫化氢ppm" prop="hydrogenSulfide">
               <el-input v-model="addRecord.hydrogenSulfide"/>
            </el-form-item>
            <el-form-item label="描述" prop="desc">
               <el-input v-model="addRecord.desc" type="textarea"> </el-input>
            </el-form-item>
            <el-form-item>
               <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
               <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
            <el-form-item label="描述" prop="info">
               <el-input v-model="addRecord.info" type="textarea"> </el-input>
            </el-form-item>
         </el-form>
         <template #footer>
           <span class="dialog-footer">
            <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="dialogPermitNo" title="选择相应的作业编号">
         <permit-no ref="permitNoInfo"></permit-no>
         <template #footer>
           <span class="dialog-footer">
            <el-button type="warning" @click="dialogPermitNo = false" size="default" plain>取消</el-button>
            <el-button type="primary" @click="confirmPermitNo" size="default">确认</el-button>
           </span>
         </template>
      </el-dialog>
   </div>
</template>
<script lang="ts">
   import { toRefs, reactive, ref, onMounted } from 'vue';
   import {toRefs, reactive, ref, onMounted, defineAsyncComponent} from 'vue';
   import { storeToRefs } from 'pinia';
   import { initBackEndControlRoutes } from '/@/router/backEnd';
   import { useUserInfo } from '/@/stores/userInfo';
   import { Session } from '/@/utils/storage';
   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 { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage';
   import { ElTable, ElMessage, ElMessageBox } from 'element-plus'
   import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus'
   import { workProcessApi } from '/@/api/specialWorkSystem/workProcess';
   // 定义接口来定义对象的类型
   interface stateType {
@@ -171,14 +187,15 @@
      deleteArr: Array<any>;
      dialogDetails: boolean;
      dialogAddRecord: boolean;
      dialogPermitNo: boolean;
      deleteDialog: boolean;
      deleteSetDialog: boolean;
      pageIndex: number;
      pageSize: number;
      chosenIndex: null | number;
      deleteId: null | number;
      searchWord: string;
      searchType: number | null;
      workPermitNo: string;
      workType: number | null;
      totalSize: number;
      addRecord: {
@@ -186,58 +203,26 @@
      details: {
      };
      workType: Array<any>
      workTypeList: Array<any>
   }
   export default {
      name: 'gasCheck',
      components: {},
      components: {
         permitNo: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workProcess/components/dialogPermitNo.vue'))
      },
      setup() {
         const userInfo = useUserInfo();
         const { userInfos } = storeToRefs(userInfo);
         const permitNoInfo = ref()
         const state = reactive<stateType>({
            pageIndex: 1,
            pageSize: 10,
            totalSize: 0,
            chosenIndex: null,
            searchWord: '',
            searchType: null,
            tableData: [
               {
                  id: 'GTXH-0000001',
                  workType: '动火作业',
                  combustible: 5,
                  oxygen: 20,
                  co: 0,
                  hs: 0,
                  desc: 'A车间动火作业过程气体检测异常',
                  name: '李羽飞',
                  updateTime: '2022-08-32 12:00:00'
               },
               {
                  id: 'GTXH-0000002',
                  workType: '动火作业',
                  combustible: 0,
                  oxygen: 20.8,
                  co: 0,
                  hs: 0,
                  desc: 'B车间动火作业过程气体检查',
                  name: '李羽飞',
                  updateTime: '2022-08-32 16:31:44'
               },
               {
                  id: 'GTXH-0000003',
                  workType: '动火作业',
                  combustible: 0,
                  oxygen: 21,
                  co: 0,
                  hs: 0,
                  desc: 'C车间动火作业过程气体检测异常',
                  name: '李羽飞',
                  updateTime: '2022-08-32 17:05:20'
               }
            ],
            workPermitNo: '',
            workType: null,
            tableData: [],
            departmentList: [],
            department: '',
            workerList: [],
@@ -250,6 +235,7 @@
            multipleSelection: [],
            dialogDetails: false,
            dialogAddRecord: false,
            dialogPermitNo: false,
            deleteDialog: false,
            deleteSetDialog: false,
            addRecord: {
@@ -260,7 +246,7 @@
            },
            deleteId: null,
            deleteArr: [],
            workType: [
            workTypeList: [
               { id: 1, name: '动火作业' },
               { id: 2, name: '受限空间作业' },
               { id: 3, name: '吊装作业' },
@@ -274,36 +260,26 @@
         const addRef = ref<FormInstance>();
         const addRules = reactive<FormRules>({
            id: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            workPermitNo: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            combustible: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            oxygen: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            co: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            hs: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            desc: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            updateTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
            carbonMonoxide: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            hydrogenSulfide: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
            info: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
         });
         // 页面载入时执行方法
         onMounted(() => {
            // getListByPage();
            // getAllDepartment();
            getListByPage()
         });
         // 分页获取班组管理列表
         // 分页获取气体检测列表
         const getListByPage = async () => {
            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { groupName: state.searchWord, containGroupMemberEnable: true } };
            let res = await teamManageApi().getRecordPage(data);
            const data = { pageSize: state.pageSize, pageIndex: state.pageIndex, searchParams: { workType: state.workType, workPermitNo: state.workPermitNo } };
            let res = await workProcessApi().getDetectionListPage(data);
            if (res.data.code === '200') {
               state.tableData = res.data.data.map((item) => {
                  if (!item.groupMembers || item.groupMembers == null) {
                     item.groupMembers = [];
                  } else {
                     item.groupMembers = Array.from(item.groupMembers, ({ username }) => username);
                  }
                  return item;
               });
               state.tableData = JSON.parse(JSON.stringify(res.data.data))
               state.totalSize = res.data.total;
            } else {
               ElMessage({
@@ -313,36 +289,21 @@
            }
         };
         // 获取部门列表
         const getAllDepartment = async () => {
            let res = await teamManageApi().getAllDepartment();
            if (res.data.code === '200') {
               state.departmentList = res.data.data;
            } else {
         const confirmPermitNo = ()=>{
            if(permitNoInfo.value.workPermitNo == ''){
               ElMessage({
                  type: 'warning',
                  message: res.data.msg
                  message: '请选择相应的作业编码'
               });
            }else{
               state.addRecord.workPermitNo = permitNoInfo.value.workPermitNo
               state.dialogPermitNo = false
            }
         };
         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
               });
            }
         };
         }
         // 关键词查询记录
         const searchRecord = async () => {
            if (state.searchWord == '') {
            if (state.workPermitNo == ''&& state.workType == null) {
               ElMessage({
                  type: 'warning',
                  message: '请输入查询关键词'
@@ -353,17 +314,18 @@
         };
         const clearSearch = async () => {
            state.searchWord = '';
            state.workPermitNo = '';
            state.workType = null;
            getListByPage();
         };
         // 添加班组管理方法
         // 添加气体检测方法
         const addRecord = async (data: any) => {
            let res = await teamManageApi().addRecord(data);
            let res = await workProcessApi().postDetectionReport(data);
            if (res.data.code === '200') {
               ElMessage({
                  type: 'success',
                  message: res.data.msg
                  message: '添加成功!'
               });
               getListByPage();
            } else {
@@ -380,18 +342,17 @@
            await formEl.validate(async (valid, fields) => {
               if (valid) {
                  const data = {
                     groupName: state.addRecord.groupName,
                     groupInfo: state.addRecord.groupInfo,
                     depId: state.addRecord.depId,
                     groupMemberIds: state.addRecord.groupMembers
                     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,
                  };
                  if (state.chosenIndex == null) {
                     await addRecord(data);
                  } else {
                     data.groupId = JSON.stringify(state.addRecord.groupId);
                     await editRecord(data);
                  }
                  await addRecord(data);
                  state.dialogAddRecord = false;
                  getListByPage();
               } else {
                  console.log('error submit!', fields);
               }
@@ -446,7 +407,9 @@
            Delete,
            Refresh,
            Plus,
            handleChange,
            Search,
            permitNoInfo,
            confirmPermitNo,
            searchRecord,
            clearSearch,
            viewRecord,