| | |
| | | <template> |
| | | <el-card class="layout" shadow="hover"> |
| | | <el-steps :active="proStatus.index" finish-status="success" style="" align-center> |
| | | <el-steps |
| | | :active="proStatus.index" |
| | | finish-status="success" |
| | | style="" |
| | | align-center |
| | | > |
| | | <el-step v-for="(s, i) in getSteps" :key="i" :title="s" /> |
| | | </el-steps> |
| | | |
| | |
| | | </el-descriptions> |
| | | |
| | | <el-scrollbar> |
| | | <el-descriptions title=" " :column="2" direction="vertical" size="small" border> |
| | | <el-descriptions |
| | | title=" " |
| | | :column="2" |
| | | direction="vertical" |
| | | size="small" |
| | | border |
| | | > |
| | | <template v-for="(pic, t) in pics" :key="t"> |
| | | <template v-if="pic.path.length > 0"> |
| | | <el-descriptions-item |
| | | :label="pic.title" |
| | | :label-class-name="t == 0 ? 'descriptions-label-1' : 'descriptions-label-2'" |
| | | :label-class-name=" |
| | | t == 0 ? 'descriptions-label-1' : 'descriptions-label-2' |
| | | " |
| | | > |
| | | <el-space> |
| | | <el-image |
| | |
| | | <el-row v-if="true" style="margin-top: 16px"> |
| | | <el-col :span="12"> |
| | | <el-row justify="start" class="btn-group"> |
| | | <el-button type="success" size="small" @click="updatePro" plain>问题更正</el-button> |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | @click="updateChange" |
| | | plain |
| | | :disabled="!proStatus.changeable" |
| | | <el-button type="success" size="small" @click="updatePro" plain |
| | | >问题更正</el-button |
| | | > |
| | | <el-button type="primary" size="small" @click="updateChange" plain |
| | | >整改检验</el-button |
| | | > |
| | | <el-button type="info" size="small" @click="currProRecent" plain>问题复现</el-button> |
| | | <el-button type="info" size="small" @click="currProRecent" plain |
| | | >问题复现</el-button |
| | | > |
| | | </el-row> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-row justify="end" class="btn-group"> |
| | | <el-button type="danger" size="small" @click="deletePro" :disabled="!proStatus.deletable" |
| | | <el-button |
| | | type="danger" |
| | | size="small" |
| | | @click="deletePro" |
| | | :disabled="!proStatus.deletable" |
| | | >删除</el-button |
| | | > |
| | | <el-button type="warning" size="small" @click="rejectPro" :disabled="!proStatus.checkable" |
| | | <el-button |
| | | v-if="proStatus.name.indexOf('不通过') != -1" |
| | | type="danger" |
| | | size="small" |
| | | @click="revokePro" |
| | | :disabled="proStatus.checkable" |
| | | >撤销驳回</el-button |
| | | > |
| | | <el-button |
| | | v-else |
| | | type="warning" |
| | | size="small" |
| | | @click="rejectPro" |
| | | :disabled="!proStatus.checkable" |
| | | >驳回</el-button |
| | | > |
| | | <el-button type="success" size="small" @click="passPro" :disabled="!proStatus.checkable" |
| | | <el-button |
| | | v-if=" |
| | | proStatus.name.indexOf('不通过') == -1 && |
| | | proStatus.name.indexOf('通过') != -1 |
| | | " |
| | | type="danger" |
| | | size="small" |
| | | @click="revokePro" |
| | | :disabled="proStatus.checkable" |
| | | >撤销通过</el-button |
| | | > |
| | | <el-button |
| | | v-else |
| | | type="success" |
| | | size="small" |
| | | @click="passPro" |
| | | :disabled="!proStatus.checkable" |
| | | >通过</el-button |
| | | > |
| | | </el-row> |
| | | </el-col> |
| | | </el-row> |
| | | </el-card> |
| | | <el-dialog v-model="proAddOrUpdDialogVisible" :before-close="proAddOrUpdDialogClose" width="80%"> |
| | | <CompProblemAddOrUpd |
| | | v-if="proAddOrUpdDialogVisible" |
| | | :problem="deepCopyPro" |
| | | :subtask="deepCopySubtask" |
| | | :topTask="deepCopyTopTask" |
| | | ref="compProblemAddOrUpdRef" |
| | | @submited="onProSubmited" |
| | | /> |
| | | </el-dialog> |
| | | <el-dialog |
| | | width="80%" |
| | | title="整改检验" |
| | | v-model="changeEditDialogVisible" |
| | | :before-close="changeEditDialogClose" |
| | | > |
| | | <ComChangeEdit |
| | | v-if="changeEditDialogVisible" |
| | | :problemId="problem.guid" |
| | | :oldChangeFileList="problem.mediafileList" |
| | | :subtask="subtask" |
| | | :month="month" |
| | | @submited="onChangeSubmited" |
| | | /> |
| | | </el-dialog> |
| | | <CompProblemAddOrUpd |
| | | title="问题更正" |
| | | v-if="proAddOrUpdDialogVisible" |
| | | v-model:visible="proAddOrUpdDialogVisible" |
| | | :problem="deepCopyPro" |
| | | :subtask="subtask" |
| | | :topTask="topTask" |
| | | ref="compProblemAddOrUpdRef" |
| | | @cancel="onProCanceled" |
| | | @submit="onProSubmited" |
| | | /> |
| | | <!-- 整改 --> |
| | | <ComChangeEdit |
| | | :title="changeType == 1 ? '整改检验' : '整改提交'" |
| | | v-if="changeDialogVisible" |
| | | v-model:visible="changeDialogVisible" |
| | | :changeType="changeType" |
| | | :problemId="problem.guid" |
| | | :subtask="subtask" |
| | | :month="month" |
| | | :oldChangeFileList="problem.mediafileList" |
| | | @cancel="onChangeCanceled" |
| | | @submit="onChangeSubmited" |
| | | /> |
| | | <!-- 问题复现 --> |
| | | <el-dialog |
| | | width="80%" |
| | | <CompProRecent |
| | | title="问题复现" |
| | | v-model="proRecentDialogVisible" |
| | | :before-close="proRecentDialogClose" |
| | | > |
| | | <CompProRecent |
| | | v-if="proRecentDialogVisible" |
| | | :subtask="subtask" |
| | | :topTask="topTask" |
| | | :problem="problem"/> |
| | | </el-dialog> |
| | | v-if="proRecentDialogVisible" |
| | | v-model:visible="proRecentDialogVisible" |
| | | :subtask="subtask" |
| | | :topTask="topTask" |
| | | :problem="problem" |
| | | /> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | import CompProRecent from './CompProRecent.vue'; |
| | | import { useCloned } from '@vueuse/core'; |
| | | export default { |
| | | emits: ['submmit', 'cancel'], |
| | | components: { |
| | | CompProblemAddOrUpd, |
| | | ComChangeEdit, |
| | |
| | | default: 1 |
| | | } |
| | | }, |
| | | emits: ['submit'], |
| | | data() { |
| | | return { |
| | | changeDialogVisible: false, |
| | | changeType: -1, |
| | | addChangeDialogVisible: false, |
| | | // 近期情况 |
| | | proRecentDialogVisible: false, |
| | | month: -1, |
| | |
| | | ] |
| | | }; |
| | | }, |
| | | mounted() { |
| | | console.log(this.topTask); |
| | | |
| | | }, |
| | | mounted() {}, |
| | | computed: { |
| | | // 问题名称 |
| | | title() { |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | // 近期情况弹窗关闭 |
| | | proRecentDialogClose() { |
| | | this.proRecentDialogVisible = false; |
| | | }, |
| | | newProblem() { |
| | | this.proAddOrUpdDialogVisible = true; |
| | | onProCanceled() { |
| | | this.proAddOrUpdDialogVisible = false; |
| | | }, |
| | | onProSubmited(isOk) { |
| | | this.$emit('updated', isOk); |
| | | this.$emit('submit', isOk); |
| | | this.proAddOrUpdDialogVisible = false; |
| | | }, |
| | | onChangeCanceled() { |
| | | }, |
| | | onChangeSubmited(isOk) { |
| | | console.log("zhenggaisubmit"); |
| | | |
| | | this.$emit('updated', isOk); |
| | | this.changeEditDialogVisible = false; |
| | | this.$emit('submit', isOk); |
| | | this.changeDialogVisible = false; |
| | | }, |
| | | proAddOrUpdDialogClose() { |
| | | this.proAddOrUpdDialogVisible = false; |
| | | deletePro() { |
| | | useMessageBoxTip({ |
| | | confirmMsg: '是否删除问题', |
| | | confirmTitle: '确定', |
| | | onConfirm: () => { |
| | | return problemApi |
| | | .deleteProblem({ |
| | | pid: this.problem.guid |
| | | }) |
| | | .then((res) => { |
| | | if (res.success) { |
| | | this.$emit('submit'); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | changeEditDialogClose() { |
| | | this.changeEditDialogVisible = false; |
| | | }, |
| | | deletePro() {}, |
| | | rejectPro() { |
| | | this.checkPro(false); |
| | | }, |
| | | passPro() { |
| | | this.checkPro(true); |
| | | }, |
| | | revokePro() { |
| | | const pro = this.problem; |
| | | let status = this.proStatus; |
| | | let doneMsg; |
| | | if (status.index <= 2) { |
| | | doneMsg = '问题未审核'; |
| | | } else if (status.index <= 3) { |
| | | doneMsg = '整改未审核'; |
| | | } |
| | | useMessageBoxTip({ |
| | | confirmMsg: `确认撤回到${doneMsg}?`, |
| | | confirmTitle: '审核撤回', |
| | | onConfirm: () => { |
| | | const { status, action } = ProCheckProxy.proBeforeStatus( |
| | | pro.extension3 |
| | | ); |
| | | return problemApi |
| | | .checkProblem({ pId: pro.guid, action: action }) |
| | | .then((res) => { |
| | | if (res.success) { |
| | | this.$emit('submit', false); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | checkPro(pass) { |
| | | const pro = this.problem; |
| | |
| | | confirmMsg: `确认是否${doneMsg}该问题?`, |
| | | confirmTitle: '问题审核', |
| | | onConfirm: () => { |
| | | const { status, action } = ProCheckProxy.proNextStatus(pro.extension3, pass); |
| | | return problemApi.checkProblem({ pId: pro.guid, action: action }).then((res) => { |
| | | if (res.success) { |
| | | pro.extension3 = status; |
| | | this.$emit('submit'); |
| | | } |
| | | }); |
| | | const { status, action } = ProCheckProxy.proNextStatus( |
| | | pro.extension3, |
| | | pass |
| | | ); |
| | | return problemApi |
| | | .checkProblem({ pId: pro.guid, action: action }) |
| | | .then((res) => { |
| | | if (res.success) { |
| | | this.$emit('submit', false); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | updatePro() { |
| | | console.log("clone", this.topTask); |
| | | |
| | | this.deepCopyPro = useCloned(this.problem).cloned.value; |
| | | this.deepCopySubtask = useCloned(this.subtask).cloned.value; |
| | | this.deepCopyTopTask = useCloned(this.topTask).cloned.value; |
| | | this.$nextTick(() => { |
| | | this.proAddOrUpdDialogVisible = true; |
| | | }); |
| | | }, |
| | | updateChange() { |
| | | getCurrentMouth() { |
| | | // 使用Date对象解析日期字符串 |
| | | var date = new Date(this.subtask.subtask.planstarttime); |
| | | // 获取月份信息,月份是从0开始的,所以需要加1 |
| | |
| | | // 获取年份 |
| | | var year = date.getFullYear(); |
| | | this.month = `${year}-${this.month}`; |
| | | this.changeEditDialogVisible = true; |
| | | }, |
| | | updateChange() { |
| | | this.getCurrentMouth(); |
| | | if (!this.problem.ischanged) { |
| | | this.changeType = 0; |
| | | } else { |
| | | this.changeType = 1; |
| | | } |
| | | this.changeDialogVisible = true; |
| | | }, |
| | | currProRecent() { |
| | | this.proRecentDialogVisible = true; |