From be8d7e4f0aea2b49ac7a9963df6482864abe3502 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: Tue, 02 Dec 2025 16:11:44 +0800
Subject: [PATCH] 修改
---
src/views/system/clauseManage/index.vue | 1
src/views/work/selfProblems/plan/components/planDialog.vue | 35 +++++++-
src/views/system/clauseManage/components/editDialog.vue | 12 ++
src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue | 162 +++++++++++++++++++++++++++-------------
public/innerReviewExport.docx | 0
src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue | 23 +++--
6 files changed, 161 insertions(+), 72 deletions(-)
diff --git a/public/innerReviewExport.docx b/public/innerReviewExport.docx
index bdec18e..032e0e9 100644
--- a/public/innerReviewExport.docx
+++ b/public/innerReviewExport.docx
Binary files differ
diff --git a/src/views/system/clauseManage/components/editDialog.vue b/src/views/system/clauseManage/components/editDialog.vue
index 81a01cb..8cb1680 100644
--- a/src/views/system/clauseManage/components/editDialog.vue
+++ b/src/views/system/clauseManage/components/editDialog.vue
@@ -15,6 +15,9 @@
<el-form-item label="条款内容:" prop="name">
<el-input v-model.trim="state.form.name" :disabled="state.title =='查看'" placeholder="条款内容"></el-input>
</el-form-item>
+ <el-form-item label="审核要点:" prop="points">
+ <el-input v-model.trim="state.form.points" :disabled="state.title =='查看'" placeholder="审核要点"></el-input>
+ </el-form-item>
</el-form>
<template #footer v-if="state.title !='查看'">
<span class="dialog-footer">
@@ -42,11 +45,13 @@
id: null,
clauseNum: '',
name: '',
- companyId: null
+ companyId: null,
+ points:''
},
formRules:{
clauseNum: [{ required: true, message: '请输入条款编码', trigger: 'blur' }],
- name: [{ required: true, message: '请输入条款内容', trigger: 'blur' }]
+ name: [{ required: true, message: '请输入条款内容', trigger: 'blur' }],
+ points: [{ required: true, message: '请输入审核要点', trigger: 'blur' }],
}
})
onMounted(() => {
@@ -98,7 +103,8 @@
id: null,
clauseNum: '',
name: '',
- companyId: null
+ companyId: null,
+ points:''
}
superRef.value.clearValidate();
superRef.value.resetFields()
diff --git a/src/views/system/clauseManage/index.vue b/src/views/system/clauseManage/index.vue
index a611882..caa2eaa 100644
--- a/src/views/system/clauseManage/index.vue
+++ b/src/views/system/clauseManage/index.vue
@@ -32,6 +32,7 @@
<el-table-column label="序号" type="index" align="center" width="80"/>
<el-table-column label="条款编号" prop="clauseNum" align="center"/>
<el-table-column label="条款内容" prop="name" align="center"/>
+ <el-table-column label="审核要点" prop="points" align="center"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
<template #default="scope">
<el-button link type="primary" @click="openDialog('view',scope.row)">查看</el-button>
diff --git a/src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue b/src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue
index 90db55c..2d2c883 100644
--- a/src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue
+++ b/src/views/work/selfProblems/internalAudit/innerReviewSheet/components/editDialog.vue
@@ -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({
diff --git a/src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue b/src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue
index 62d5054..9250ade 100644
--- a/src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue
+++ b/src/views/work/selfProblems/internalAudit/innerReviewSheet/index.vue
@@ -2,15 +2,15 @@
<div class="app-container">
<div style="display: flex;justify-content: space-between">
<el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
- <el-form-item>
- <el-button
- type="primary"
- plain
- icon="Plus"
- @click="openDialog('add',{})"
- v-hasPermi="['innerReviewSheet:list:add']"
- >新增</el-button>
- </el-form-item>
+<!-- <el-form-item>-->
+<!-- <el-button-->
+<!-- type="primary"-->
+<!-- plain-->
+<!-- icon="Plus"-->
+<!-- @click="openDialog('add',{})"-->
+<!-- v-hasPermi="['innerReviewSheet:list:add']"-->
+<!-- >新增</el-button>-->
+<!-- </el-form-item>-->
<el-form-item v-if="isAdmin" label="单位:" >
<el-select v-model="data.queryParams.companyId" placeholder="请选择" clearable>
<el-option
@@ -39,7 +39,7 @@
<el-table-column type="index" align="center" label="序号" width="80"></el-table-column>
<el-table-column label="检查表" align="center">
<template #default="scope">
- {{scope.row.deptName }}内审检查表
+ {{scope.row.year}}年{{scope.row.deptName }}内审检查表
</template>
</el-table-column>
<el-table-column label="受审核部门" prop="deptName" align="center"></el-table-column>
@@ -206,8 +206,9 @@
})
}
})
+ item.checkTime = item.startTime +'-'+item.endTime.slice(11)
try {
- generateWordDocument(templatePath.value, item, item.deptName+'_内审检查表.docx');
+ generateWordDocument(templatePath.value, item, item.year+'年'+item.deptName+'_内审检查表.docx');
} catch (error){
ElMessage({
type: 'warning',
diff --git a/src/views/work/selfProblems/plan/components/planDialog.vue b/src/views/work/selfProblems/plan/components/planDialog.vue
index d24d531..007e5f9 100644
--- a/src/views/work/selfProblems/plan/components/planDialog.vue
+++ b/src/views/work/selfProblems/plan/components/planDialog.vue
@@ -3,7 +3,7 @@
<el-dialog
v-model="dialogVisible"
:title="title"
- width="50%"
+ width="950px"
:before-close="handleClose"
:close-on-press-escape="false"
:close-on-click-modal="false"
@@ -175,10 +175,10 @@
<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-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' }],
@@ -397,6 +399,7 @@
})
})
}
+ await getUserList()
await getPeopleList()
dialogVisible.value = true;
@@ -420,7 +423,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]
@@ -542,6 +545,7 @@
state.form.checkId = null
state.form.ratifyId = null
getPeopleList()
+ getUserList()
getDeptList()
}
const reset = () => {
@@ -572,6 +576,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
});
--
Gitblit v1.9.2