zhouwx
2025-12-02 be8d7e4f0aea2b49ac7a9963df6482864abe3502
src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue
@@ -9,7 +9,7 @@
        :close-on-click-modal="false"
    >
      <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules"  >
        <el-form-item v-if="state.isAdmin" label="企业:" prop="companyId">
        <el-form-item v-if="state.isAdmin" label="单位:" prop="companyId">
          <el-select v-model="state.form.companyId" placeholder="请选择" :disabled="state.title=='编辑'" style="width: 100%" clearable @change="getDeptList">
            <el-option
                v-for="item in state.companyList"
@@ -20,7 +20,7 @@
          </el-select>
        </el-form-item>
        <el-row :gutter="24">
          <el-col :span="8">
          <el-col :span="12">
            <el-form-item label="受审核部门:" prop="deptId">
              <el-select
                  clearable
@@ -40,7 +40,7 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
          <el-col :span="12">
            <el-form-item label="审核员:" prop="personId">
              <el-select clearable v-model="state.form.personId" :disabled="state.title =='查看'" filterable placeholder="内审员" style="width: 100%">
                <el-option
@@ -52,24 +52,36 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="内审时间:" prop="checkTime">
        </el-row>
        <el-row :gutter="24">
          <el-col :span="12">
            <el-form-item label="内审时间:" prop="startTime">
              <el-date-picker
                  v-model="state.form.checkTime"
                  type="datetime"
                  :disabled="state.title =='查看'"
                  v-model="checkTime"
                  type="datetimerange"
                  range-separator="至"
                  start-placeholder="开始日期"
                  end-placeholder="结束日期"
                  format="YYYY-MM-DD HH:mm:ss"
                  value-format="YYYY-MM-DD HH:mm:ss"
                  placeholder="请选择内审时间"
                  style="width: 100%"
                  style="width: 100%;"
              />
              <!--              <el-date-picker-->
              <!--                  v-model="state.form.checkTime"-->
              <!--                  type="datetime"-->
              <!--                  value-format="YYYY-MM-DD HH:mm:ss"-->
              <!--                  placeholder="请选择内审时间"-->
              <!--                  style="width: 100%"-->
              <!--              />-->
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-col :span="24">
            <div style="display: flex;align-items: center">
              <span style="font-size: 15px;font-weight: 700;margin-right: 10px" >内审检查表:</span>
              <el-button type="primary" :disabled="state.title === '查看'"  @click="addTableData">新增</el-button>
<!--              <el-button type="primary" :disabled="state.title === '查看'"  @click="addTableData">新增</el-button>-->
            </div>
            <el-table style="margin-top: 15px;margin-bottom: 20px" :data="state.form.checkCatalogues" :border="true">
              <el-table-column label="适用条款" align="center">
@@ -85,7 +97,7 @@
                  </div>
                </template>
              </el-table-column>
              <el-table-column label="审核发现" prop="find" align="center" width="180">
              <el-table-column label="审核发现" prop="find" align="center" width="300">
                <template #default="{row,$index}">
                  <div v-for="(i,index) in row.checkContents" :key="index">
                    <el-form-item :prop="'checkCatalogues.' + '[' + $index + '].' +'checkContents.' + '[' + index + ']' + '.find'" :rules="state.formRules.find">
@@ -95,7 +107,7 @@
                </template>
              </el-table-column>
              <el-table-column label="审核结果" align="center" >
                <el-table-column label="符合" prop="conform" align="center" width="90">
                <el-table-column label="符合" prop="conform" align="center" width="70">
                  <template #default="{row,$index}">
                    <div v-for="(i,index) in row.checkContents" :key="index">
                      <el-form-item :prop="'checkCatalogues.' + '[' + $index + '].' +'checkContents.' + '[' + index + ']' + '.result'" :rules="state.formRules.result">
@@ -109,7 +121,7 @@
                    </div>
                  </template>
                </el-table-column>
                <el-table-column label="轻微不符合" prop="minor" align="center" width="90">
                <el-table-column label="不符合" prop="minor" align="center" width="90">
                  <template #default="{row,$index}">
                    <div v-for="(i,index) in row.checkContents" :key="index">
                      <el-form-item :prop="'checkCatalogues.' + '[' + $index + '].' +'checkContents.' + '[' + index + ']' + '.result'" :rules="state.formRules.result">
@@ -123,21 +135,20 @@
                    </div>
                  </template>
                </el-table-column>
                <el-table-column label="严重不符合" prop="serious" align="center" width="90">
                  <template #default="{row,$index}">
                    <div v-for="(i,index) in row.checkContents" :key="index">
                      <el-form-item :prop="'checkCatalogues.' + '[' + $index + '].' +'checkContents.' + '[' + index + ']' + '.result'" :rules="state.formRules.result">
                        <el-radio
                            style="height: 100px"
                            v-model="i.result"
                            :label="3"
                            :disabled="state.title === '查看'"
                        ></el-radio>
                      </el-form-item>
                    </div>
                  </template>
                </el-table-column>
<!--                <el-table-column label="严重不符合" prop="serious" align="center" width="90">-->
<!--                  <template #default="{row,$index}">-->
<!--                    <div v-for="(i,index) in row.checkContents" :key="index">-->
<!--                      <el-form-item :prop="'checkCatalogues.' + '[' + $index + '].' +'checkContents.' + '[' + index + ']' + '.result'" :rules="state.formRules.result">-->
<!--                        <el-radio-->
<!--                            style="height: 100px"-->
<!--                            v-model="i.result"-->
<!--                            :label="3"-->
<!--                            :disabled="state.title === '查看'"-->
<!--                        ></el-radio>-->
<!--                      </el-form-item>-->
<!--                    </div>-->
<!--                  </template>-->
<!--                </el-table-column>-->
              </el-table-column>
              <el-table-column label="操作" align="center" width="120" v-if="state.title !== '查看'" >
                <template #default="scope">
@@ -165,16 +176,24 @@
    >
      <el-form :model="state.termForm" size="default" ref="termRef" :rules="state.rules"  >
        <el-form-item  label="体系标准款项:" prop="id">
          <el-tree-select
              v-model="state.termForm.id"
              :data="state.menuOptions"
              :props="{ value: 'id', label: 'name', children: 'children' }"
              value-key="id"
              placeholder="体系标准款项"
              check-strictly
              style="width: 100%"
              @node-click="handleTreeSelect"
          />
<!--          <el-tree-select-->
<!--              v-model="state.termForm.id"-->
<!--              :data="state.menuOptions"-->
<!--              :props="{ value: 'id', label: 'name', children: 'children' }"-->
<!--              value-key="id"-->
<!--              placeholder="体系标准款项"-->
<!--              check-strictly-->
<!--              style="width: 100%"-->
<!--              @node-click="handleTreeSelect"-->
<!--          />-->
          <el-select clearable v-model="state.termForm.id"  filterable placeholder="体系标准款项" @change="handleTreeSelect" style="width: 100%">
            <el-option
                v-for="item in state.menuOptions"
                :key="item.id"
                :label="item.name"
                :value="item.id"
            />
          </el-select>
        </el-form-item>
      </el-form>
      <template #footer>
@@ -196,24 +215,33 @@
  addInternalAuditCheck, getInternalAuditCheckInfo,
  updateInternalAuditCheck
} from "@/api/innerReview/meetingReview";
import {getDepart} from "@/api/orgStructure/depart";
import {getDepart, getSysClause} from "@/api/orgStructure/depart";
import {listUser} from "@/api/system/user";
import {getPersonPage} from "@/api/selfProblems/nameList";
import {getCatalogue} from "@/api/qualityManage/catalog";
import Cookies from "js-cookie";
import {getUser} from "@/api/onlineEducation/user";
const emit = defineEmits(["getList"]);
const dialogVisible = ref(false)
const superRef = ref()
const termRef = ref()
const checkTime = ref([])
const validateFieldsReview = (rule, value, callback) =>{
  if (checkTime.value && checkTime.value.length >0 ) {
    callback();
  } else {
    callback(new Error('请选择时间'));
  }
}
const state = reactive({
  title: '',
  form: {
    id: null,
    deptId: null,
    personId: null,
    checkTime: '',
    startTime: '',
    endTime:'',
    companyId: null,
    checkCatalogues: []
  },
@@ -228,7 +256,8 @@
    deptId: [{ required: true, message: '请选择受审核部门', trigger: 'blur' }],
    internalAuditCheckPeople: [{ required: true, message: '请选择受审核人', trigger: 'blur' }],
    personId: [{ required: true, message: '请选择内审员', trigger: 'blur' }],
    checkTime: [{ required: true, message: '请选择内审时间',  trigger: 'blur' }],
    // checkTime: [{ required: true, message: '请选择内审时间',  trigger: 'blur' }],
    startTime: [{ required: true,validator: validateFieldsReview, trigger: 'blur' }],//审核时间
    checkRecord: [{ required: true, message: '请填写检查记录',  trigger: 'blur' }],
    pointKey: [{ required: true, message: '',  trigger: 'blur' }],
    find: [{ required: true, message: '',  trigger: 'blur' }],
@@ -271,6 +300,13 @@
        state.form[key] = value[key]
      }
    })
    checkTime.value = [state.form.startTime,state.form.endTime]
    console.log('1',state.form)
    state.form.checkCatalogues.forEach(item => {
      if(item.checkContents && item.checkContents.length == 0){
        item.checkContents.push({})
      }
    })
  }
  await getUserList()
  await getDepartList(state.form.companyId)
@@ -280,16 +316,29 @@
const getCatalogList = async() => {
  state.menuOptions = [];
  const param = {
    type: 1,
    number: 4
  }
  const res = await getCatalogue(param)
  const res = await getSysClause()
  if(res.code == 200){
    state.menuOptions =await handleTree(res.data.data);
    state.menuOptions = res.data.map(i=>{
      return {
        id:i.id,
        clauseNum: i.clauseNum,
        content: i.name,
        name: i.clauseNum + ' '+i.name
      }
    })
  }else{
    ElMessage.warning(res.message)
  }
  // const param = {
  //   type: 1,
  //   number: 4
  // }
  // const res = await getCatalogue(param)
  // if(res.code == 200){
  //   state.menuOptions =await handleTree(res.data.data);
  // }else{
  //   ElMessage.warning(res.message)
  // }
}
const handleTree = (val) => {
  const traverse = (nodes, currentPath = '') => {
@@ -306,6 +355,8 @@
}
const onSubmit = async () => {
  state.form.startTime = checkTime.value[0]
  state.form.endTime = checkTime.value[1]
  const valid = await superRef.value.validate();
  if(valid){
    console.log('f',state.form)
@@ -408,7 +459,8 @@
    id: null,
    deptId: null,
    personId: null,
    checkTime: '',
    startTime: '',
    endTime:'',
    companyId: null,
    checkCatalogues: []
  }
@@ -455,6 +507,7 @@
const onSubmitTerm = async () =>{
  const valid = await termRef.value.validate();
  if(valid){
    state.form.checkCatalogues.push({
      checkContents: [{}],
      catalogueId:state.termForm.id,
@@ -465,9 +518,14 @@
}
const handleTreeSelect = (node) => {
  state.termForm.id = node.id
  state.termForm.number = node.number
  state.termForm.mess = node.mess
  state.menuOptions.forEach(item => {
    if(item.id == node){
      state.termForm.id = node
      state.termForm.number = item.clauseNum
      state.termForm.mess = item.name
    }
  })
};
defineExpose({