多体系建设信息化条统-前端
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
@@ -104,18 +104,48 @@
                  <el-table-column label="日期" prop="date" align="center">
                    <template #default="{row,$index}">
                      <el-form-item :prop="'deptList.' + '[' + $index + ']' + '.date'" :rules="state.rules.date">
                        <el-input :disabled="title === '查看'" type="textarea" v-model="row.date" placeholder="请输入"></el-input>
                        <el-date-picker
                            :disabled="title === '查看'"
                            v-model="row.date"
                            type="date"
                            placeholder="请选择"
                            format="YYYY-MM-DD"
                        />
<!--                        <el-input :disabled="title === '查看'" type="textarea" v-model="row.date" placeholder="请输入"></el-input>-->
                      </el-form-item>
                    </template>
                  </el-table-column>
                  <el-table-column label="时间" prop="time" align="center">
                  <el-table-column label="时间" prop="endTime" align="center" width="140">
                    <template #default="{row,$index}">
                      <el-form-item :prop="'deptList.' + '[' + $index + ']' + '.time'" :rules="state.rules.time">
                        <el-input :disabled="title === '查看'" type="textarea" v-model="row.time" placeholder="请输入"></el-input>
                      <el-form-item :prop="'deptList.' + '[' + $index + ']' + '.endTime'" :rules="state.rules.endTime">
<!--                        <el-input :disabled="title === '查看'" type="textarea" v-model="row.time" placeholder="请输入"></el-input>-->
                       <div style="display: flex;flex-direction: column;align-items: center">
                         <el-time-select
                             :disabled="title === '查看'"
                             v-model="row.startTime"
                             style="width: 120px"
                             :max-time="row.endTime"
                             class="mr-4"
                             placeholder="开始"
                             start="00:00"
                             step="00:15"
                             end="23:59"
                         />
                         <el-time-select
                             :disabled="title === '查看'"
                             v-model="row.endTime"
                             style="width: 120px;margin-top: 5px"
                             :min-time="row.startTime"
                             placeholder="结束"
                             start="00:00"
                             step="00:15"
                             end="23:59"
                         />
                       </div>
                      </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
@@ -140,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>
@@ -242,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("");
@@ -269,7 +300,7 @@
  form: {
    id: '',
    companyId: null,
    year: "", //年份
    year: "2025", //年份
    auditPurpose: "", //审核目的
    reviewBasis: "", //审核依据
    reviewScope: "", //审核范围
@@ -286,6 +317,7 @@
    ratifyId: null, //批准人id
    deptList: []
  },
  interUserList: [],
  formRules:{
    companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }],
    year:  [{ required: true, message: '请输入年份', trigger: 'blur' }],
@@ -303,7 +335,7 @@
  },
  rules: {
    date: [{required: true, message: "", trigger: "blur"}],
    time: [{required: true, message: "", trigger: "blur"}],
    endTime: [{required: true, message: "", trigger: "blur"}],
    deptId: [{required: true, message: "", trigger: "blur"}],
    checkId: [{required: true, message: "", trigger: "blur"}],
@@ -351,13 +383,22 @@
  }
  await getDeptList()
  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ;
  state.form.year = new Date().getFullYear().toString()
  if(type === 'edit' || type === 'review') {
    state.form = JSON.parse(JSON.stringify(value));
    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('、')
@@ -366,6 +407,7 @@
      })
    })
  }
  await getUserList()
  await  getPeopleList()
  dialogVisible.value = true;
@@ -389,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]
@@ -404,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)
@@ -510,14 +560,18 @@
  state.form.proofreadId = null
  state.form.checkId = null
  state.form.ratifyId = null
  state.form.deptList.forEach(item => {
    item.checkId = []
  })
  getPeopleList()
  getUserList()
  getDeptList()
}
const reset = () => {
  state.form = {
    id: '',
    companyId: null,
    year: "", //年份
    year: "2025", //年份
    auditPurpose: "", //审核目的
    reviewBasis: "", //审核依据
    reviewScope: "", //审核范围
@@ -541,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
});