深海科学与工程研究所安全巡检系统
祖安之光
2025-09-15 9fe04f4d9567a4de97f5f25d36557ab70b833782
src/views/saftyCheckMng/dailyCheck/index.vue
@@ -11,24 +11,51 @@
          >新增</el-button>
        </el-form-item>
        <el-form-item label="被检查部门/研究组:" >
          <el-select v-model="queryParams.researchGroup" placeholder="请选择" clearable>
            <el-option
                v-for="item in deptList"
                :key="item.deptId"
                :label="item.deptName"
                :value="item.deptId">
            </el-option>
          </el-select>
<!--          <el-select v-model="queryParams.researchGroup" placeholder="请选择" clearable>-->
<!--            <el-option-->
<!--                v-for="item in deptList"-->
<!--                :key="item.deptId"-->
<!--                :label="item.deptName"-->
<!--                :value="item.deptId">-->
<!--            </el-option>-->
<!--          </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.userName"
                :label="item.nickName"
                :value="item.userId">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="检查类型:" >
          <el-select v-model="queryParams.checkType" placeholder="请选择" clearable>
            <el-option
                v-for="item in checkTypeList"
                :key="item.value"
                :label="item.label"
                :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <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-date-picker
              v-model="checkDate"
              type="daterange"
              value-format="YYYY-MM-DD"
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
          />
        </el-form-item>
        <el-form-item >
          <el-button type="primary" @click="getList">查询</el-button>
@@ -89,11 +116,33 @@
    pageNum: 1,
    pageSize: 10,
    researchGroup: null,
    searchCheckUserId: null
    searchCheckUserId: null,
    checkType: null,
    haveMainHazard: null,
    checkBeginDate: '',
    checkEndDate: ''
  },
  dataList: [],
  deptList: [],
  userList: [],
  checkTypeList: [
    {
      value: 1,
      label: '综合检查'
    },
    {
      value: 2,
      label: '部门检查'
    },
    {
      value: 3,
      label: '实验室自查'
    },
    {
      value: 4,
      label: '专项检查'
    }
  ],
  total: 0,
  formConfig: {
    formItems: [
@@ -115,7 +164,7 @@
        options: () => {
          return state.userList.map(user => ({
            value: user.userId,
            label: user.userName
            label: user.nickName
          }))
        }
      },
@@ -134,14 +183,25 @@
      {
        label: '被检查部门/研究组',
        prop: 'researchGroup',
        type: 'select',
        type: 'cascader',
        showAllLevels: false,
        props: {
          value: 'deptId',
          label: 'deptName',
          children: 'children',
          emitPath: false,
          checkStrictly: true
        },
        rules: [{ required: true, message: '请选择部门', trigger: 'blur' }],
        options: () => {
          return state.deptList.map(dept => ({
            value: dept.deptId,
            label: dept.deptName
          }))
        }
        options: () => state.deptList
      },
      {
        label: '检查类型',
        prop: 'checkType',
        type: 'select',
        filterable: true,
        rules: [{ required: true, message: '请选择检查类型', trigger: 'change' }],
        options: () => state.checkTypeList
      },
      {
        label: '检查内容',
@@ -154,6 +214,7 @@
        label: '存在的主要隐患/问题',
        prop: 'mainHazard',
        type: 'textarea',
        placeholder: '没有则填“无”',
        autosize: { minRows: 3 },
        rules: [{ required: true, message: '请输入存在的主要隐患/问题', trigger: 'blur' }]
      },
@@ -161,6 +222,7 @@
        label: '整改措施',
        prop: 'rectificationMeasures',
        type: 'textarea',
        placeholder: '没有则填“无”',
        autosize: { minRows: 3 },
        rules: [{ required: true, message: '请输入整改措施', trigger: 'blur' }]
      },
@@ -168,16 +230,18 @@
        label: '复查结果',
        prop: 'examinationResults',
        type: 'textarea',
        autosize: { minRows: 3 }
        autosize: { minRows: 3 },
        rules: [{ required: true, message: '请输入复查结果', trigger: 'blur' }]
      },
      {
        label: '复查人员',
        prop: 'reCheckUserId',
        type: 'select',
        rules: [{ required: true, message: '请选择复查人员', trigger: 'blur' }],
        options: () => {
          return state.userList.map(user => ({
            value: user.userId,
            label: user.userName
            label: user.nickName
          }))
        }
      },
@@ -186,7 +250,8 @@
        prop: 'reCheckDate',
        type: 'date',
        dateType: 'date',
        valueFormat: 'YYYY-MM-DD'
        valueFormat: 'YYYY-MM-DD',
        rules: [{ required: true, message: '请选择复查时间', trigger: 'blur' }]
      },
      {
        label: '备注',
@@ -197,10 +262,11 @@
    ]
  },
  dataLoader: {},
  api: {}
  api: {},
  checkDate: []
});
const { queryParams, total, dataList,deptList, userList, formConfig, dataLoader, api } = toRefs(state);
const { queryParams, total, dataList,deptList, userList, formConfig, dataLoader, api, checkTypeList, checkDate } = toRefs(state);
onMounted(async ()=>{
  await getList()
  await getDeptList()
@@ -213,19 +279,20 @@
function getDeptList() {
  listDept({}).then(response => {
    state.deptList = response.data
    state.deptList = proxy.handleTree(response.data, "deptId")
  });
}
function getUserList() {
  listUser().then(res => {
  listUser({pageNum: 1,pageSize: 999}).then(res => {
    state.userList = res.rows;
    state.total = res.total;
  })
};
const getList = async () => {
  loading.value = true
  state.queryParams.checkBeginDate = state.checkDate[0] || ''
  state.queryParams.checkEndDate = state.checkDate[1] || ''
  const res = await getDailySafetyInspectList(state.queryParams)
  if(res.code == 200){
    state.dataList = res.rows || []
@@ -263,8 +330,13 @@
    pageNum: 1,
    pageSize: 10,
    researchGroup: null,
    searchCheckUserId: null
    searchCheckUserId: null,
    checkType: null,
    haveMainHazard: null,
    checkBeginDate: '',
    checkEndDate: ''
  }
  state.checkDate = []
  await getList()
}
const handleDelete = (val) => {
@@ -292,11 +364,11 @@
  params.dailySafetyInspectionUsers = params.dailySafetyInspectionUsers.map(item=>{
    return {
      checkUserId: item,
      checkUser: state.userList.find(i=>i.userId == item)?.userName,
      checkUser: state.userList.find(i=>i.userId == item)?.nickName,
      dailySafetyInspectionId: params.id
    }
  })
  params.reCheckUser = state.userList.find(i=>i.userId == params.reCheckUserId)?.userName
  params.reCheckUser = state.userList.find(i=>i.userId == params.reCheckUserId)?.nickName
  // 调用API保存数据
  if (type === '新增') {
    delete params.id