多体系建设信息化条统-前端
zhouwx
2026-02-06 17c33ce1481c99184ef76d8becd0d21690ad8328
src/views/work/selfProblems/plan/components/planDialog.vue
@@ -3,13 +3,13 @@
    <el-dialog
        v-model="dialogVisible"
        :title="title"
        width="50%"
        width="1100px"
        :before-close="handleClose"
        :close-on-press-escape="false"
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules"  label-width="100px" >
        <el-form-item label="企业名称:" prop="companyId" v-if="state.isAdmin">
        <el-form-item label="单位名称:" prop="companyId" v-if="state.isAdmin">
          <el-select
              v-model="state.form.companyId"
              filterable
@@ -145,7 +145,7 @@
                      </el-form-item>
                    </template>
                  </el-table-column>
                  <el-table-column label="受审核部门" prop="deptId" align="center">
                  <el-table-column label="受审核部门" prop="deptId" align="center" width="190">
                    <template  #default="{row,$index}">
                      <el-form-item :prop="'deptList.' + '[' + $index + ']' + '.deptId'" :rules="state.rules.deptId">
                        <el-select
@@ -170,15 +170,15 @@
                      <span>{{row.termNum}}</span>
                    </template>
                  </el-table-column>
                  <el-table-column label="审核员" prop="dept" align="center">
                  <el-table-column label="审核员" prop="dept" align="center" width="230">
                    <template #default="{row,$index}">
                      <el-form-item :prop="'deptList.' + '[' + $index + ']' + '.checkId'" :rules="state.rules.checkId">
                        <el-select clearable v-model="row.checkId" :disabled="title =='查看'" filterable  style="width: 240px">
                        <el-select clearable v-model="row.checkId" :disabled="title =='查看'" collapse-tags  collapse-tags-tooltip  filterable multiple  style="width: 240px">
                          <el-option
                              v-for="item in state.peopleList"
                              :key="item.id"
                              :label="item.name"
                              :value="item.id"
                              v-for="item in state.interUserList"
                              :key="item.personId"
                              :label="item.personName"
                              :value="item.personId"
                          />
                        </el-select>
                      </el-form-item>
@@ -272,6 +272,7 @@
import {getUser} from "@/api/onlineEducation/user";
import {getDept} from "@/api/qualityObjectives/object";
import {addPlan, editPlan} from "@/api/selfProblems/plan";
import {getPersonPage} from "@/api/selfProblems/nameList";
const dialogVisible = ref(false);
const title = ref("");
@@ -316,6 +317,7 @@
    ratifyId: null, //批准人id
    deptList: []
  },
  interUserList: [],
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    year:  [{ required: true, message: '请输入年份', trigger: 'blur' }],
@@ -387,8 +389,16 @@
    checkTime.value = [state.form.reviewStart,state.form.reviewEnd]
    checkStartTime.value = [state.form.firstStarttime,state.form.firstEndtime]
    checkEndTime.value = [state.form.lastStarttime,state.form.lastEndtime]
    state.form.deptList = state.form.deptList.map(item => {
      return {
        ...item,
        checkId:item.checkId.split(',').map(Number)
      }
    })
    await nextTick(()=> {
      state.form.deptList.forEach(item => {
        state.deptList.forEach(i => {
          if(i.deptId == item.deptId){
            item.termNum = sortVersionNumbers(i.caluseVO1List?.map(x=>x.clauseNum)).join('、')
@@ -397,6 +407,7 @@
      })
    })
  }
  await getUserList()
  await  getPeopleList()
  dialogVisible.value = true;
@@ -420,7 +431,7 @@
const onSubmit = async () => {
  state.form.reviewStart = checkTime.value[0]
  state.form.reviewEnd = checkTime.value[0]
  state.form.reviewEnd = checkTime.value[1]
  state.form.firstStarttime = checkStartTime.value[0]
  state.form.firstEndtime = checkStartTime.value[1]
  state.form.lastStarttime = checkEndTime.value[0]
@@ -435,24 +446,32 @@
    ElMessage.warning('请添加受审部门信息')
    return
  }
  console.log('111',state.form)
  state.form.deptList.forEach(item => {
    item.checkId = item.checkId.join(',')
  })
  if(valid){
    if(title.value === '新增'){
      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
      const res = await addPlan(data)
      if(res.code === 200){
        ElMessage({
          type: 'success',
          message: '新增成功'
        });
      }else{
        ElMessage.warning(res.message)
      try {
        const res = await addPlan(data)
        if(res.code === 200){
          ElMessage({
            type: 'success',
            message: '新增成功'
          });
        }else{
          ElMessage.warning(res.message)
        }
        emit("getList")
        busRef.value.clearValidate();
        reset();
        dialogVisible.value = false;
      }catch (e) {
        state.form.deptList.forEach(item => {
          item.checkId = item.checkId.split(',').map(Number)
        })
      }
      emit("getList")
      busRef.value.clearValidate();
      reset();
      dialogVisible.value = false;
    }else if(title.value === '编辑'){
      const {...data} = JSON.parse(JSON.stringify(state.form))
      const res = await editPlan(data)
@@ -541,7 +560,11 @@
  state.form.proofreadId = null
  state.form.checkId = null
  state.form.ratifyId = null
  state.form.deptList.forEach(item => {
    item.checkId = []
  })
  getPeopleList()
  getUserList()
  getDeptList()
}
const reset = () => {
@@ -572,6 +595,25 @@
  checkStartTime.value = []
  checkEndTime.value = []
}
const getUserList = async ()=> {
  if(state.isAdmin && (state.form.companyId == 0 || state.form.companyId == null)){
    return
  }
  const res = await getPersonPage({companyId: state.form.companyId,pageNum: 1,pageSize: 999})
  if(res.code == 200){
    state.userList = res.data.list?res.data.list.map(item=>{
      const user = item.id
      const {id, ...data} = item
      return {
        ...data,
        userId: user
      }
    }):[]
    state.interUserList = state.userList
  }else{
    ElMessage.warning(res.message)
  }
}
defineExpose({
  openDialog
});