| | |
| | | <el-dialog |
| | | v-model="dialogVisible" |
| | | :title="title" |
| | | width="900px" |
| | | width="950px" |
| | | :before-close="handleClose" |
| | | :close-on-press-escape="false" |
| | | :close-on-click-modal="false" |
| | |
| | | <el-col :span="24"> |
| | | <el-form-item label="年份:" prop="year" > |
| | | <el-select |
| | | :disabled="title === '查看'" |
| | | :disabled="title === '查看' || title === '编辑'" |
| | | v-model="state.form.year" |
| | | filterable |
| | | allow-create |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="年度质量体系改进计划:" prop="customerRecordNeeds" > |
| | | <el-form-item label="年度质量体系改进计划:" prop="plans" > |
| | | <el-button |
| | | :disabled="title === '查看'" |
| | | type="primary" |
| | |
| | | style="margin-left: 10px;margin-bottom: 10px" |
| | | >新增</el-button> |
| | | <div style="display: flex;width: 100%;"> |
| | | <el-table :data="state.form.customerRecordNeeds" :border="true" > |
| | | <el-table :data="state.form.plans" :border="true" > |
| | | <el-table-column type="index" label="序号" align="center"></el-table-column> |
| | | <el-table-column label="改 进 项" prop="customerName" align="center" width="120"> |
| | | <el-table-column label="改 进 项" prop="items" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <el-form-item :prop="'customerRecordNeeds.' + '[' + $index + ']' + 'customerName'" :rules="state.rules.customerName"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" :rows="4" v-model="row.customerName" placeholder="请输入"></el-input> |
| | | <el-form-item :prop="'plans.' + '[' + $index + ']' + 'items'" :rules="state.rules.items"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" :rows="4" v-model="row.items" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="具体措施" prop="customerNeed" align="center" width="120"> |
| | | <el-table-column label="具体措施" prop="measure" align="center" > |
| | | <template #default="{row,$index}"> |
| | | |
| | | <el-form-item :prop="'customerRecordNeeds.' + '[' + $index + ']' + 'customerName'" :rules="state.rules.customerNeed"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" :rows="4" v-model="row.customerNeed" placeholder="请输入"></el-input> |
| | | <el-form-item :prop="'plans.' + '[' + $index + ']' + 'measure'" :rules="state.rules.measure"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" :rows="4" v-model="row.measure" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="责任部门" prop="disposeId" align="center" width="120"> |
| | | <el-table-column label="责任部门" prop="dutyId" align="center" width="150"> |
| | | <template #default="{row,$index}"> |
| | | |
| | | <el-form-item :prop="'customerRecordNeeds.' + '[' + $index + ']' + 'customerName'" :rules="state.rules.disposeId"> |
| | | <el-form-item :prop="'plans.' + '[' + $index + ']' + 'dutyId'" :rules="state.rules.dutyId"> |
| | | <el-select |
| | | :disabled="title === '查看'" |
| | | v-model="row.disposeId" |
| | | v-model="row.dutyId" |
| | | placeholder="请选择部门" |
| | | style="width: 240px;margin-bottom: 5px" |
| | | > |
| | |
| | | :key="item.deptId" |
| | | :label="item.deptName" |
| | | :value="item.deptId" |
| | | />'customerRecordNeeds.' + '[' + $index + ']' + 'customerName' |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="完成时间" prop="disposeMess" align="center" width="120"> |
| | | <el-table-column label="完成时间" prop="finishTime" align="center" width="150"> |
| | | <template #default="{row,$index}"> |
| | | <el-form-item :prop="'customerRecordNeeds.' + '[' + $index + ']' + 'customerName'" :rules="state.rules.disposeMess"> |
| | | <el-form-item :prop="'plans.' + '[' + $index + ']' + 'finishTime'" :rules="state.rules.finishTime"> |
| | | <el-date-picker |
| | | v-model="row.calibrationTime" |
| | | v-model="row.finishTime" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="完成时间" |
| | | :disabled="state.title =='查看'" |
| | | :disabled="title =='查看'" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="跟踪验证" prop="remark" align="center" width="120"> |
| | | <el-table-column label="跟踪验证" prop="verify" align="center" > |
| | | <template #default="{row,$index}"> |
| | | <el-form-item :prop="'customerRecordNeeds.' + '[' + $index + ']' + 'customerName'" :rules="state.rules.remark"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" :rows="4" v-model="row.remark" placeholder="请输入"></el-input> |
| | | <el-form-item :prop="'plans.' + '[' + $index + ']' + 'verify'" :rules="state.rules.verify"> |
| | | <el-input style="margin-top: 10px" :disabled="title === '查看'" type="textarea" :rows="4" v-model="row.verify" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="编制:" prop="compilationId" > |
| | | <el-select clearable v-model="state.form.compilationId" :disabled="title =='查看'" filterable style="width: 200px"> |
| | | <el-form-item label="编制:" prop="fictionId" > |
| | | <el-select clearable v-model="state.form.fictionId" :disabled="title =='查看'" filterable style="width: 200px"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="审核:" prop="compilationId" > |
| | | <el-select clearable v-model="state.form.compilationId" :disabled="title =='查看'" filterable style="width: 200px"> |
| | | <el-form-item label="审核:" prop="checkId" > |
| | | <el-select clearable v-model="state.form.checkId" :disabled="title =='查看'" filterable style="width: 200px"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="24"> |
| | | <el-form-item label="批准:" prop="compilationId" > |
| | | <el-select clearable v-model="state.form.compilationId" :disabled="title =='查看'" filterable style="width: 200px"> |
| | | <el-form-item label="批准:" prop="ratifyId" > |
| | | <el-select clearable v-model="state.form.ratifyId" :disabled="title =='查看'" filterable style="width: 200px"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | import {addTable, editTable, getTargetById} from "@/api/qualityObjectives/table"; |
| | | import {addNeedDiscren, editNeedDiscren} from "@/api/need/need"; |
| | | import {addCustomerNeed, editCustomerNeed} from "@/api/customerNeed"; |
| | | import {addInside, editInside} from "@/api/continuousImprovement"; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | |
| | | form: { |
| | | id: '', |
| | | companyId: null, |
| | | recordName: null, |
| | | customerRecordNeeds:[], |
| | | year: "", //年份 |
| | | fictionId: null, //编制 |
| | | checkId: null, //审核 |
| | | ratifyId: null, //批准 |
| | | plans:[], |
| | | }, |
| | | rules: { |
| | | companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }], |
| | | recordName: [{ required: true, message: '请输入记录名称', trigger: 'blur' }], |
| | | customerName: [{required: true, message: "", trigger: "blur"}], |
| | | customerNeed: [{required: true, message: "", trigger: "blur"}], |
| | | needSource: [{required: true, message: "", trigger: "blur"}], |
| | | registrantId: [{required: true, message: "", trigger: "blur"}], |
| | | disposeId: [{required: true, message: "", trigger: "blur"}], |
| | | disposeMess: [{required: true, message: "", trigger: "blur"}], |
| | | customerRecordNeeds:[{ required: true, message: '请填写需求登记列表', trigger: 'blur' }], |
| | | year: [{ required: true, message: '请输入年份', trigger: 'blur' }], // |
| | | fictionId: [{ required: true, message: '请选择编制', trigger: 'blur' }], |
| | | checkId: [{ required: true, message: '请选择审核', trigger: 'blur' }], |
| | | ratifyId: [{ required: true, message: '请选择批准', trigger: 'blur' }], |
| | | items: [{required: true, message: "", trigger: "blur"}], |
| | | measure: [{required: true, message: "", trigger: "blur"}], |
| | | dutyId: [{required: true, message: "", trigger: "blur"}], |
| | | finishTime: [{required: true, message: "", trigger: "blur"}], |
| | | // verify: [{required: true, message: "", trigger: "blur"}], |
| | | plans:[{ required: true, message: '请填写年度质量体系改进计划表', trigger: 'blur' }], |
| | | }, |
| | | peopleList: [], |
| | | isAdmin: false, |
| | |
| | | state.form.companyId = value.companyId |
| | | state.form.companyName = value.companyName |
| | | } |
| | | state.form.customerRecordNeeds.forEach(item => { |
| | | item.customerName = item.customerName |
| | | const obj = { |
| | | recordId: state.form.id, |
| | | customerNeed: item.customerNeed, |
| | | disposeId: item.disposeId, |
| | | disposeMess: item.disposeMess, |
| | | needSource: item.needSource?.split(','), |
| | | registrantId: item.registrantId, |
| | | remark: item.remark, |
| | | } |
| | | item.expectContentMesses=[obj] |
| | | }) |
| | | |
| | | console.log('xx',state.form) |
| | | |
| | | } |
| | |
| | | dialogVisible.value = true; |
| | | } |
| | | const onSubmit = async () => { |
| | | let dataDemo = JSON.parse(JSON.stringify(state.form)) |
| | | let flag = false |
| | | for (const i of dataDemo.customerRecordNeeds) { |
| | | if(!i.expectContentMesses[0].needSource || i.expectContentMesses[0].needSource.length ==0){ |
| | | ElMessage.warning('请完善需求来源') |
| | | flag = true |
| | | return |
| | | } |
| | | } |
| | | if(flag) return |
| | | let dataArr = [] |
| | | dataArr = dataDemo.customerRecordNeeds.map(item => { |
| | | return { |
| | | customerName: item.customerName, |
| | | customerNeed: item.expectContentMesses[0].customerNeed, |
| | | disposeId: item.expectContentMesses[0].disposeId, |
| | | disposeMess: item.expectContentMesses[0].disposeMess, |
| | | needSource: item.expectContentMesses[0].needSource?.join(','), |
| | | registrantId: item.expectContentMesses[0].registrantId, |
| | | remark: item.expectContentMesses[0].remark, |
| | | } |
| | | }) |
| | | dataDemo.customerRecordNeeds = dataArr |
| | | const valid = await busRef.value.validate(); |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | const {id, ...data} = dataDemo |
| | | const res = await addCustomerNeed(data) |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addInside(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = dataDemo |
| | | data.customerRecordNeeds.forEach(i => { |
| | | i.recordId = data.id |
| | | }) |
| | | const res = await editCustomerNeed(data) |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | // data.plans.forEach(i => { |
| | | // i.recordId = data.id |
| | | // }) |
| | | const res = await editInside(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | state.form = { |
| | | id: '', |
| | | companyId: null, |
| | | recordName: null, |
| | | customerRecordNeeds:[], |
| | | year: "", //年份 |
| | | fictionId: null, //编制 |
| | | checkId: null, //审核 |
| | | ratifyId: null, //批准 |
| | | plans:[], |
| | | } |
| | | state.companyList = [] |
| | | } |
| | | |
| | | const selectValueCom = (val) => { |
| | | state.form.fictionId = null |
| | | state.form.checkId = null |
| | | state.form.ratifyId = null |
| | | state.form.plans.forEach(item => { |
| | | item.dutyId = null |
| | | }) |
| | | state.companyList.forEach(item => { |
| | | if(item.name === val){ |
| | | state.form.companyId = item.id |
| | |
| | | |
| | | |
| | | const addTableData = () => { |
| | | state.form.customerRecordNeeds.push({}) |
| | | state.form.plans.push({}) |
| | | } |
| | | const addObject = (val,itemIndex) => { |
| | | state.form.customerRecordNeeds.forEach((item,index) => { |
| | | state.form.plans.forEach((item,index) => { |
| | | if(index == itemIndex){ |
| | | item.expectContentMesses.push({}) |
| | | } |
| | | }) |
| | | } |
| | | const delObject = (val,itemIndex) => { |
| | | state.form.customerRecordNeeds = state.form.customerRecordNeeds.filter(item=> item != val) |
| | | state.form.plans = state.form.plans.filter(item=> item != val) |
| | | } |
| | | const handleChangeNum = (value) => { |
| | | if (!/^\d+$/.test(value)) { // 验证是否为数字 |