| | |
| | | <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" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="受审核部门:" prop="deptId"> |
| | | <el-select |
| | | clearable |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="审核员:" prop="personId"> |
| | | <el-select clearable v-model="state.form.personId" :disabled="state.title =='查看'" filterable placeholder="内审员" style="width: 100%"> |
| | | <el-option |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="内审时间:" prop="startTime"> |
| | | <el-date-picker |
| | | :disabled="state.title =='查看'" |
| | |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | 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-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | |
| | | </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="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> |
| | | </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="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">--> |
| | |
| | | <!-- </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> |
| | |
| | | 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 ) { |
| | |
| | | // 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' }], |
| | | |
| | | |
| | |
| | | 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 => { |
| | |
| | | } |
| | | }) |
| | | 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) |
| | |
| | | } |
| | | |
| | | 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(); |
| | |
| | | companyId: null, |
| | | checkCatalogues: [] |
| | | } |
| | | |
| | | superRef.value.clearValidate(); |
| | | superRef.value.resetFields() |
| | | dialogVisible.value = false; |
| | |
| | | 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, |
| | |
| | | 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}) |
| | |
| | | |
| | | |
| | | }; |
| | | const inputFind = (val,index)=> { |
| | | state.form.checkCatalogues[index].find = val |
| | | } |
| | | const inputPonit = (val,index)=> { |
| | | state.form.checkCatalogues[index].pointKey = val |
| | | } |
| | | |
| | | |
| | | defineExpose({ |
| | | openDialog |
| | | }); |