From 654c6b9c6fdcf98621fbe4d638e7bfdb3b60820f Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期三, 03 十二月 2025 16:17:06 +0800
Subject: [PATCH] 修改

---
 src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue |  311 +++++++++++++++++++++++++++++++++------------------
 1 files changed, 201 insertions(+), 110 deletions(-)

diff --git a/src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue b/src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue
index 90db55c..eddbf99 100644
--- a/src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue
+++ b/src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue
@@ -3,7 +3,7 @@
     <el-dialog
         v-model="dialogVisible"
         :title="state.title"
-        width="950px"
+        width="1480px"
         :before-close="handleClose"
         :close-on-press-escape="false"
         :close-on-click-modal="false"
@@ -53,98 +53,116 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="内审时间:" prop="checkTime">
+            <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-form-item>
           </el-col>
         </el-row>
+        <el-row :gutter="24">
 
+        </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">
-                <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" width="430">
                 <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>
-                  </div>
+                  <el-form-item :prop="'checkCatalogues.' + '[' + $index + ']' + '.pointKey'" :rules="state.formRules.pointKey">
+                    <div v-if="showEditor" >
+                      <t-editor style="width: 100%;" :height="300" 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="180">
+              <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>
-                  </div>
+                  <el-form-item :prop="'checkCatalogues.' + '[' + $index + ']' + '.find'" :rules="state.formRules.find">
+                    <div v-if="showEditor" >
+                      <t-editor style="width: 100%;" :height="300" 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="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">-->
+<!--                        <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="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
-                            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">
-                  <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">
-                  <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>
@@ -165,16 +183,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 +222,38 @@
   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";
+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 ) {
+    callback();
+  } else {
+    callback(new Error('请选择时间'));
+  }
+}
 const state = reactive({
   title: '',
   form: {
     id: null,
     deptId: null,
     personId: null,
-    checkTime: '',
+    startTime: '',
+    endTime:'',
     companyId: null,
     checkCatalogues: []
   },
@@ -228,10 +268,11 @@
     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' }],
+    pointKey: [{ required: true, message: '请输入审核要点',  trigger: 'blur' }],
+    find: [{ required: true, message: '请输入审核发现',  trigger: 'blur' }],
     result: [{ required: true, message: '',  trigger: 'blur' }],
 
 
@@ -264,6 +305,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 => {
@@ -271,6 +313,21 @@
         state.form[key] = value[key]
       }
     })
+    checkTime.value = [state.form.startTime,state.form.endTime]
+    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)
@@ -280,16 +337,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 +376,15 @@
 }
 
 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();
   if(valid){
     console.log('f',state.form)
@@ -408,11 +487,11 @@
     id: null,
     deptId: null,
     personId: null,
-    checkTime: '',
+    startTime: '',
+    endTime:'',
     companyId: null,
     checkCatalogues: []
   }
-
   superRef.value.clearValidate();
   superRef.value.resetFields()
   dialogVisible.value = false;
@@ -426,24 +505,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,
@@ -456,7 +535,6 @@
   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})
@@ -465,11 +543,24 @@
 
 }
 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
+    }
+  })
+
 
 };
+const inputFind = (val,index)=> {
+  state.form.checkCatalogues[index].find = val
+}
+const inputPonit = (val,index)=> {
+  state.form.checkCatalogues[index].pointKey = val
+}
+
+
 defineExpose({
   openDialog
 });

--
Gitblit v1.9.2