深海科学与工程研究所安全巡检系统
祖安之光
2025-10-15 6390fa18f5c2df1158a0d664786797b0e8b2fbf9
src/views/saftyCheckMng/dailyCheck/index.vue
@@ -21,17 +21,10 @@
<!--          </el-select>-->
          <el-cascader v-model="queryParams.researchGroup" placeholder="请选择" :options="deptList" :show-all-levels="false" :props="{value: 'deptId',label: 'deptName',children: 'children',emitPath: false,checkStrictly: true}"/>
        </el-form-item>
        <el-form-item label="参加检查人员:" >
          <el-select v-model="queryParams.searchCheckUserId" placeholder="请选择" clearable>
            <el-option
                v-for="item in userList"
                :key="item.userId"
                :label="item.nickName"
                :value="item.userId">
            </el-option>
          </el-select>
        <el-form-item label="参加检查人员" >
          <el-input v-model.trim="queryParams.checkUser" placeholder="参加检查人员"></el-input>
        </el-form-item>
        <el-form-item label="检查类型:" >
        <el-form-item label="检查类型" >
          <el-select v-model="queryParams.checkType" placeholder="请选择" clearable>
            <el-option
                v-for="item in checkTypeList"
@@ -41,13 +34,13 @@
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="隐患:" >
        <el-form-item label="隐患" >
          <el-select v-model="queryParams.haveMainHazard" placeholder="请选择" clearable>
            <el-option :key="1" label="有" :value="1"></el-option>
            <el-option :key="0" label="无" :value="0"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="检查日期:" >
        <el-form-item label="检查日期" >
          <el-date-picker
              v-model="checkDate"
              type="daterange"
@@ -70,12 +63,12 @@
      <el-table-column prop="checkDate" align="center" label="检查时间"/>
      <el-table-column prop="checkPlace" align="center" label="检查地点"/>
      <el-table-column prop="checkRoom" align="center" label="检查房间号"/>
      <el-table-column prop="enactmentDate" align="center" label="参加检查人员">
      <el-table-column prop="checkUser" align="center" label="参加检查人员"/>
      <el-table-column prop="researchGroupName" align="center" label="被检查部门/研究组">
        <template #default="scope">
          {{scope.row.dailySafetyInspectionUsers.map(i=>i.checkUser).join('、')}}
          {{ scope.row.dailySafetyInspectionDepts.filter(item=>item.deptName && item.deptName !== '').map(i=>i.deptName).join('、') }}
        </template>
      </el-table-column>
      <el-table-column prop="researchGroupName" align="center" label="被检查部门/研究组"/>
      <el-table-column prop="checkContent" align="center" label="检查内容"/>
      <el-table-column label="操作" align="center">
        <template #default="scope">
@@ -116,14 +109,16 @@
    pageNum: 1,
    pageSize: 10,
    researchGroup: null,
    searchCheckUserId: null,
    checkUser: '',
    checkType: null,
    haveMainHazard: null,
    checkBeginDate: '',
    checkEndDate: ''
  },
  originDeptList: [],
  dataList: [],
  deptList: [],
  safetyDeptList: [],
  userList: [],
  checkTypeList: [
    {
@@ -156,17 +151,9 @@
      },
      {
        label: '参加检查人员',
        prop: 'dailySafetyInspectionUsers',
        type: 'select',
        multiple: true,
        filterable: true,
        rules: [{ required: true, message: '请选择人员', trigger: 'change' }],
        options: () => {
          return state.userList.map(user => ({
            value: user.userId,
            label: user.nickName
          }))
        }
        prop: 'checkUser',
        type: 'text',
        rules: [{ required: true, message: '请输入人员', trigger: 'blur' }],
      },
      {
        label: '检查地点',
@@ -182,7 +169,7 @@
      },
      {
        label: '被检查部门/研究组',
        prop: 'researchGroup',
        prop: 'dailySafetyInspectionDepts',
        type: 'cascader',
        showAllLevels: false,
        props: {
@@ -190,10 +177,11 @@
          label: 'deptName',
          children: 'children',
          emitPath: false,
          checkStrictly: true
          checkStrictly: true,
          multiple: true
        },
        rules: [{ required: true, message: '请选择部门', trigger: 'blur' }],
        options: () => state.deptList
        options: () => state.safetyDeptList
      },
      {
        label: '检查类型',
@@ -235,15 +223,9 @@
      },
      {
        label: '复查人员',
        prop: 'reCheckUserId',
        type: 'select',
        rules: [{ required: true, message: '请选择复查人员', trigger: 'blur' }],
        options: () => {
          return state.userList.map(user => ({
            value: user.userId,
            label: user.nickName
          }))
        }
        prop: 'reCheckUser',
        type: 'text',
        rules: [{ required: true, message: '请输入复查人员', trigger: 'blur' }]
      },
      {
        label: '复查时间',
@@ -278,9 +260,11 @@
})
function getDeptList() {
  listDept({safety: '1'}).then(response => {
  listDept().then(response => {
    state.originDeptList = response.data
    state.deptList = proxy.handleTree(response.data, "deptId")
  });
    state.safetyDeptList = proxy.handleTree(response.data.filter(item=>item.safety == '1'), "deptId")
  })
}
function getUserList() {
@@ -305,7 +289,6 @@
const downloadFile = async (val)=>{
    let tableData = val
    tableData.checkNames = val.dailySafetyInspectionUsers.map(item=>item.checkUser).join('、')
    try {
      generateWordDocument('/dailyCheckSheet.docx', tableData, '日常安全检查记录表.docx');
    } catch (error){
@@ -317,10 +300,7 @@
}
const openDialog = (type, value) => {
  let initalData = JSON.parse(JSON.stringify(value))
  if(type == 'edit' || type == 'view'){
    initalData.dailySafetyInspectionUsers = value.dailySafetyInspectionUsers.map(i=>i.checkUserId)
  }
  const initalData = JSON.parse(JSON.stringify(value))
  dialogRef.value.openDialog(type, initalData)
}
@@ -330,7 +310,7 @@
    pageNum: 1,
    pageSize: 10,
    researchGroup: null,
    searchCheckUserId: null,
    checkUser: '',
    checkType: null,
    haveMainHazard: null,
    checkBeginDate: '',
@@ -361,14 +341,14 @@
const handleSubmit = async (data, type) => {
  const params = JSON.parse(JSON.stringify(data))
  params.dailySafetyInspectionUsers = params.dailySafetyInspectionUsers.map(item=>{
  console.log(state.originDeptList,'ori')
  params.dailySafetyInspectionDepts = params.dailySafetyInspectionDepts.map(i=>{
    return {
      checkUserId: item,
      checkUser: state.userList.find(i=>i.userId == item)?.nickName,
      dailySafetyInspectionId: params.id
      deptId: i,
      deptName: state.originDeptList.find(item=>item.deptId == i)?.deptName
    }
  })
  params.reCheckUser = state.userList.find(i=>i.userId == params.reCheckUserId)?.nickName
  // params.reCheckUser = state.userList.find(i=>i.userId == params.reCheckUserId)?.nickName
  // 调用API保存数据
  if (type === '新增') {
    delete params.id