zhouwx
2025-12-03 59a4f02701ef3b232b9f1d54ba0b29a1e8764704
src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue
@@ -3,7 +3,7 @@
    <el-dialog
        v-model="dialogVisible"
        :title="state.title"
        width="950px"
        width="1200px"
        :before-close="handleClose"
        :close-on-press-escape="false"
        :close-on-click-modal="false"
@@ -85,54 +85,67 @@
            </div>
            <el-table style="margin-top: 15px;margin-bottom: 20px" :data="state.form.checkCatalogues" :border="true">
              <el-table-column label="适用条款" align="center">
                <el-table-column label="体系标准款项" prop="number" align="center"></el-table-column>
                <el-table-column label="标题" prop="mess" align="center"></el-table-column>
                <el-table-column label="体系标准款项" prop="number" align="center" width="110"></el-table-column>
                <el-table-column label="标题" prop="mess" align="center" width="150"></el-table-column>
              </el-table-column>
              <el-table-column label="审核要点" prop="pointKey" align="center" width="180">
              <el-table-column label="审核要点" prop="pointKey" align="left" header-align="center">
                <template #default="{row,$index}">
                  <div v-for="(i,index) in row.checkContents" :key="index">
                    <el-form-item :prop="'checkCatalogues.' + '[' + $index + '].' +'checkContents.' + '[' + index + ']' + '.pointKey'" :rules="state.formRules.pointKey">
                      <el-input style="margin-top: 10px" :disabled="state.title === '查看'" type="textarea" :rows="4" v-model="i.pointKey" placeholder="请输入"></el-input>
                    </el-form-item>
                  <el-form-item :prop="'checkCatalogues.' + '[' + $index + ']' + '.pointKey'" :rules="state.formRules.pointKey">
                    <div v-if="showEditor" >
                      <t-editor style="width: 380px;" :height="250" ref="myEditor" :toolbar="toolbar"
                                :value="row.pointKey" @input="inputPonit($event,$index)"></t-editor>
                  </div>
                    <div v-else >
                      <div class="reviewTable" v-html="row.pointKey" ></div>
                    </div>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column label="审核发现" prop="find" align="center" width="300">
              <el-table-column label="审核发现" prop="find" align="left" header-align="center">
                <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">
                      <el-input style="margin-top: 10px" :disabled="state.title === '查看'" type="textarea" :rows="4" v-model="i.find" placeholder="请输入"></el-input>
                    </el-form-item>
                  <el-form-item :prop="'checkCatalogues.' + '[' + $index + ']' + '.find'" :rules="state.formRules.find">
                    <div v-if="showEditor" >
                      <t-editor style="width: 380px;" :height="250" ref="myEditor" :toolbar="toolbar"
                                :value="row.find" @input="inputFind($event,$index)"></t-editor>
                  </div>
                    <div v-else >
                      <div class="reviewTable" v-html="row.find" ></div>
                    </div>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column label="审核结果" align="center" >
                <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">
                        <el-radio
                            style="height: 100px"
                            v-model="i.result"
                            :label="1"
                           :disabled="state.title === '查看'"
                        > </el-radio>
                      </el-form-item>
                    </div>
                  </template>
                </el-table-column>
<!--                <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">-->
<!--                        <el-radio-->
<!--                            style="height: 100px"-->
<!--                            v-model="i.result"-->
<!--                            :label="1"-->
<!--                           :disabled="state.title === '查看'"-->
<!--                        > </el-radio>-->
<!--                      </el-form-item>-->
<!--                    </div>-->
<!--                  </template>-->
<!--                </el-table-column>-->
                <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">
                        <el-radio
<!--                    <div v-for="(i,index) in row.checkContents" :key="index">-->
                      <el-form-item :prop="'checkCatalogues.' + '[' + $index + ']' + '.result'" :rules="state.formRules.result">
                        <el-checkbox
                            style="height: 100px"
                            v-model="i.result"
                            :label="2"
                            v-model="row.result"
                            :disabled="state.title === '查看'"
                        ></el-radio>
                        />
<!--                        <el-radio-->
<!--                            style="height: 100px"-->
<!--                            v-model="row.result"-->
<!--                            :label="2"-->
<!--                            :disabled="state.title === '查看'"-->
<!--                        ></el-radio>-->
                      </el-form-item>
                    </div>
<!--                    </div>-->
                  </template>
                </el-table-column>
<!--                <el-table-column label="严重不符合" prop="serious" align="center" width="90">-->
@@ -150,12 +163,12 @@
<!--                  </template>-->
<!--                </el-table-column>-->
              </el-table-column>
              <el-table-column label="操作" align="center" width="120" v-if="state.title !== '查看'" >
                <template #default="scope">
                  <el-button link type="primary"  @click="addObject(scope.row,scope.$index)" >添加</el-button>
                  <el-button link type="danger"  @click="delObject(scope.row,scope.$index)" >删除</el-button>
                </template>
              </el-table-column>
<!--              <el-table-column label="操作" align="center" width="120" v-if="state.title !== '查看'" >-->
<!--                <template #default="scope">-->
<!--                  <el-button link type="primary"  @click="addObject(scope.row,scope.$index)" >添加</el-button>-->
<!--                  <el-button link type="danger"  @click="delObject(scope.row,scope.$index)" >删除</el-button>-->
<!--                </template>-->
<!--              </el-table-column>-->
            </el-table>
          </el-col>
@@ -221,11 +234,16 @@
import {getCatalogue} from "@/api/qualityManage/catalog";
import Cookies from "js-cookie";
import {getUser} from "@/api/onlineEducation/user";
import TEditor from "@/components/Tinymce/Tinymce.vue";
const emit = defineEmits(["getList"]);
const dialogVisible = ref(false)
const superRef = ref()
const termRef = ref()
const myEditor = ref();
const isReview = ref(false);
const showEditor = ref(true);
const toolbar = ref('fontsizeselect | undo redo')
const checkTime = ref([])
const validateFieldsReview = (rule, value, callback) =>{
  if (checkTime.value && checkTime.value.length >0 ) {
@@ -259,8 +277,8 @@
    // 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' }],
    pointKey: [{ required: true, message: '请输入审核要点',  trigger: 'blur' }],
    find: [{ required: true, message: '请输入审核发现',  trigger: 'blur' }],
    result: [{ required: true, message: '',  trigger: 'blur' }],
@@ -293,6 +311,7 @@
    state.form.companyId = value.companyId
    state.companyList = companyList
  }
  showEditor.value = false
  state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看'
  if(state.title == '编辑'||state.title == '查看'){
    Object.keys(state.form).forEach(key => {
@@ -301,12 +320,20 @@
      }
    })
    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({})
    state.form.checkCatalogues = state.form.checkCatalogues.map(item => {
      return {
        ...item,
        result: item.result == 2 ? true:false
      }
    })
    console.log('1',state.form)
  }
  if (state.title == '查看') {
    showEditor.value = false
  }
  if (type === 'edit' || type === 'add') {
    showEditor.value = true;
  }
  await getUserList()
  await getDepartList(state.form.companyId)
@@ -355,6 +382,13 @@
}
const onSubmit = async () => {
  console.log('f',state.form)
  state.form.checkCatalogues = state.form.checkCatalogues.map(item => {
    return {
      ...item,
      result: item.result ? 2:1
    }
  })
  state.form.startTime = checkTime.value[0]
  state.form.endTime = checkTime.value[1]
  const valid = await superRef.value.validate();
@@ -478,24 +512,24 @@
  state.showDialog = true
  // state.form.checkCatalogues.push({checkContents: [{}]})
}
const addObject = (val,itemIndex) => {
  state.form.checkCatalogues.forEach((item,index) => {
    if(index == itemIndex){
      item.checkContents.push({})
    }
  })
}
const delObject = (val,itemIndex) => {
  state.form.checkCatalogues.forEach((item,index) => {
    if(index == itemIndex){
      if(item.checkContents.length == 1){
        state.form.checkCatalogues.splice(index,1)
      }else {
        item.checkContents.pop()
      }
    }
  })
}
// const addObject = (val,itemIndex) => {
//   state.form.checkCatalogues.forEach((item,index) => {
//     if(index == itemIndex){
//       item.checkContents.push({})
//     }
//   })
// }
// const delObject = (val,itemIndex) => {
//   state.form.checkCatalogues.forEach((item,index) => {
//     if(index == itemIndex){
//       if(item.checkContents.length == 1){
//         state.form.checkCatalogues.splice(index,1)
//       }else {
//         item.checkContents.pop()
//       }
//     }
//   })
// }
const handleCloseDialog = () => {
  state.termForm = {
    id: null,
@@ -507,9 +541,7 @@
const onSubmitTerm = async () =>{
  const valid = await termRef.value.validate();
  if(valid){
    state.form.checkCatalogues.push({
      checkContents: [{}],
      catalogueId:state.termForm.id,
      number: state.termForm.number,
      mess: state.termForm.mess})
@@ -528,6 +560,14 @@
};
const inputFind = (val,index)=> {
  state.form.checkCatalogues[index].find = val
}
const inputPonit = (val,index)=> {
  state.form.checkCatalogues[index].pointKey = val
}
defineExpose({
  openDialog
});