重点工作管理接口联调

dev-scheduling
zhangdi 3 months ago
parent 79679149f5
commit 7899199ea9
  1. 162
      src/views/flowManagement/managementOfKeyTasks.vue
  2. 198
      src/views/flowManagement/milestoneDialog.vue

@ -108,145 +108,8 @@
></review> ></review>
<!-- 执行/核查/核准弹窗 --> <!-- 执行/核查/核准弹窗 -->
<el-dialog append-to-body :title="subTitle" v-model="executeDialog"> <milestoneDialog :title="subTitle" :showDialog='executeDialog' v-if="executeDialog" @closeDialog="closeDialog" :rowItem="detailForm"></milestoneDialog>
<el-form :model="executeForm" :rules="executeRules" ref="executeForm" label-width="100">
<el-form-item label="项目名称">
<el-input disabled v-model="detailForm.projectName"></el-input>
</el-form-item>
<el-form-item label="项目负责人">
<el-input disabled v-model="detailForm.projectHead.userName"></el-input>
</el-form-item>
<el-form-item label="里程碑计划">
<el-input disabled v-model="executeForm.milestonePlan"></el-input>
</el-form-item>
<el-form-item label="里程碑负责人">
<el-input disabled v-model="executeForm.milestoneMan.userName"></el-input>
</el-form-item>
<el-form-item label="项目目标">
<el-input disabled v-model="executeForm.fmProjectApplication.projectTarget"></el-input>
</el-form-item>
<el-form-item label="预期效果">
<el-input disabled v-model="executeForm.fmProjectApplication.desiredResult"></el-input>
</el-form-item>
<el-form-item label="项目背景">
<el-input disabled v-model="executeForm.fmProjectApplication.projectBackcloth"></el-input>
</el-form-item>
<el-form-item label="里程碑节点">
<el-input disabled v-model="executeForm.milestoneNode"></el-input>
</el-form-item>
<el-form-item label="执行类型" prop="executeResult">
<el-select
:disabled="subTitle == '核查' || subTitle == '核准'"
v-model="executeForm.executeResult"
>
<el-option label="延期" :value="1"></el-option>
<el-option label="终止" :value="2"></el-option>
<el-option label="完成" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="延期时间" v-if="executeForm.executeResult == 1">
<el-date-picker
:disabled="subTitle == '核查' || subTitle == '核准'"
style="width: 100%"
v-model="executeForm.delayTime"
type="datetime"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item label="里程碑描述" prop="milestoneMemo">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
type="textarea"
v-model="executeForm.milestoneMemo"
></el-input>
</el-form-item>
<el-form-item label="里程碑进展" prop="evolve">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
type="textarea"
v-model="executeForm.evolve"
></el-input>
</el-form-item>
<el-form-item label="下一步计划" prop="lastPlan">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
type="textarea"
v-model="executeForm.lastPlan"
></el-input>
</el-form-item>
<el-form-item
label="附件"
v-if="subTitle == '执行' || subTitle == '核查' || subTitle == '核准'"
>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">不能上传 exe 附件且不超过 20M</div>
</el-upload>
<div v-if="subTitle == '核查' || subTitle == '核准'" class="attachment-list">
<h4>附件下载</h4>
<ul>
<li v-for="(file, index) in existingFiles" :key="index">
<a href="javascript:void(0)" @click="downloadFile(file)">{{ file.name }}</a>
<el-button type="text" size="small" @click="removeExistingFile(index)"
>删除</el-button
>
</li>
</ul>
</div>
</el-form-item>
<el-form-item label="核查人" v-if="subTitle == '执行'">
<el-select v-model="executeForm.userId">
<el-option label="审核人一" value="1"></el-option>
<el-option label="审核人二" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="核查结果" v-if="subTitle == '核查'">
<el-select v-model="executeForm.checkResult">
<el-option label="通过" value="1"></el-option>
<el-option label="不通过" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="审核人" v-if="subTitle == '核查' && executeForm.checkResult == 1">
<el-select v-model="executeForm.userId">
<el-option label="审核人一" value="1"></el-option>
<el-option label="审核人二" value="2"></el-option>
</el-select>
</el-form-item>
<div v-if="subTitle == '核准'" style="color: #ffc300; margin-bottom: 10px">
评价等级分为:(95以上节点推进超前完成质量高)(85-95节点推进正常质量较好)(75-84节点推进轻微拖期完成质量一般)(75以下进展滞后完成质量较差)
</div>
<el-form-item v-if="subTitle == '核准'" label="评价分数">
<el-input v-model="executeForm.score"></el-input>
</el-form-item>
<el-form-item v-if="subTitle == '核准'" label="评语">
<el-input type="textarea" v-model="executeForm.evaluate"></el-input>
</el-form-item>
<el-form-item label="审核意见" prop="checkOpinion" label-width="80px">
<el-input
type="textarea"
placeholder="请输入审核意见"
v-model="checkForm.checkOpinion"
></el-input>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="executeDialog = false"> </el-button>
<el-button type="primary" @click="submitExecute"> </el-button>
</span>
</template>
</el-dialog>
</basic-container> </basic-container>
</template> </template>
@ -259,8 +122,9 @@ import {
} from '../../api/flowManagement/index'; } from '../../api/flowManagement/index';
import AddDialog from './addDialog.vue'; import AddDialog from './addDialog.vue';
import review from './review.vue'; import review from './review.vue';
import milestoneDialog from './milestoneDialog.vue';
export default { export default {
components: { AddDialog, review }, components: { AddDialog, review,milestoneDialog },
data() { data() {
return { return {
// //
@ -279,13 +143,6 @@ export default {
checkResult: [{ required: true, message: '请选择审核结果', trigger: 'blur' }], checkResult: [{ required: true, message: '请选择审核结果', trigger: 'blur' }],
}, },
executeDialog: false, executeDialog: false,
executeForm: {},
executeRules: {
executeResult: [{ required: true, message: '请选择执行类型', trigger: 'blur' }],
milestoneMemo: [{ required: true, message: '请填写里程碑描述', trigger: 'blur' }],
evolve: [{ required: true, message: '请填写里程碑进展', trigger: 'blur' }],
lastPlan: [{ required: true, message: '请填写下一步计划', trigger: 'blur' }],
},
data: [], data: [],
form: {}, form: {},
existingFiles: [], // existingFiles: [], //
@ -415,6 +272,7 @@ export default {
closeDialog(type) { closeDialog(type) {
this.checkDialog = false; this.checkDialog = false;
this.addDialogVisible = false this.addDialogVisible = false
this.executeDialog = false
if (type) { if (type) {
this.onLoad(this.page, this.query); this.onLoad(this.page, this.query);
} }
@ -472,25 +330,14 @@ export default {
}, },
// //
executeRow(row, detail) { executeRow(row, detail) {
this.executeForm = {};
this.detailForm = row; this.detailForm = row;
this.subTitle = '执行'; this.subTitle = '执行';
this.executeDialog = true; this.executeDialog = true;
}, },
//
submitExecute() {
this.$refs.executeForm.validate(valid => {
if (valid) {
this.executeDialog = false;
}
});
},
// //
auditRow(row, detail) { auditRow(row, detail) {
this.subTitle = '核查'; this.subTitle = '核查';
this.detailForm = row; this.detailForm = row;
this.executeForm = detail;
this.executeForm.checkResult = '';
// //
this.existingFiles = [ this.existingFiles = [
{ name: '项目计划书.pdf', url: '#' }, { name: '项目计划书.pdf', url: '#' },
@ -502,7 +349,6 @@ export default {
examineRow(row, detail) { examineRow(row, detail) {
this.subTitle = '核准'; this.subTitle = '核准';
this.detailForm = row; this.detailForm = row;
this.executeForm = detail;
// //
this.existingFiles = [ this.existingFiles = [
{ name: '项目计划书.pdf', url: '#' }, { name: '项目计划书.pdf', url: '#' },

@ -0,0 +1,198 @@
<template>
<el-dialog :title="title" append-to-body :modelValue="openShow" width="30%" @close="closeDialog">
<el-form :model="executeForm" :rules="executeRules" ref="executeForm" label-width="100">
<el-form-item label="项目名称">
<el-input disabled v-model="detailForm.projectName"></el-input>
</el-form-item>
<el-form-item label="项目负责人">
<el-input disabled v-model="detailForm.projectHead.userName"></el-input>
</el-form-item>
<el-form-item label="里程碑计划">
<el-input disabled v-model="executeForm.milestonePlan"></el-input>
</el-form-item>
<el-form-item label="里程碑负责人">
<el-input disabled v-model="executeForm.milestoneMan.userName"></el-input>
</el-form-item>
<el-form-item label="项目目标">
<el-input disabled v-model="executeForm.fmProjectApplication.projectTarget"></el-input>
</el-form-item>
<el-form-item label="预期效果">
<el-input disabled v-model="executeForm.fmProjectApplication.desiredResult"></el-input>
</el-form-item>
<el-form-item label="项目背景">
<el-input disabled v-model="executeForm.fmProjectApplication.projectBackcloth"></el-input>
</el-form-item>
<el-form-item label="里程碑节点">
<el-input disabled v-model="executeForm.milestoneNode"></el-input>
</el-form-item>
<el-form-item label="执行类型" prop="executeResult">
<el-select
:disabled="subTitle == '核查' || subTitle == '核准'"
v-model="executeForm.executeResult"
>
<el-option label="延期" :value="1"></el-option>
<el-option label="终止" :value="2"></el-option>
<el-option label="完成" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="延期时间" v-if="executeForm.executeResult == 1">
<el-date-picker
:disabled="subTitle == '核查' || subTitle == '核准'"
style="width: 100%"
v-model="executeForm.delayTime"
type="datetime"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item label="里程碑描述" prop="milestoneMemo">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
type="textarea"
v-model="executeForm.milestoneMemo"
></el-input>
</el-form-item>
<el-form-item label="里程碑进展" prop="evolve">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
type="textarea"
v-model="executeForm.evolve"
></el-input>
</el-form-item>
<el-form-item label="下一步计划" prop="lastPlan">
<el-input
:disabled="subTitle == '核查' || subTitle == '核准'"
type="textarea"
v-model="executeForm.lastPlan"
></el-input>
</el-form-item>
<el-form-item
label="附件"
v-if="subTitle == '执行' || subTitle == '核查' || subTitle == '核准'"
>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">不能上传 exe 附件且不超过 20M</div>
</el-upload>
<div v-if="subTitle == '核查' || subTitle == '核准'" class="attachment-list">
<h4>附件下载</h4>
<ul>
<li v-for="(file, index) in existingFiles" :key="index">
<a href="javascript:void(0)" @click="downloadFile(file)">{{ file.name }}</a>
<el-button type="text" size="small" @click="removeExistingFile(index)"
>删除</el-button
>
</li>
</ul>
</div>
</el-form-item>
<el-form-item label="核查人" v-if="subTitle == '执行'">
<el-select v-model="executeForm.userId">
<el-option v-for="item in memberList" :label="item.realName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="核查结果" v-if="subTitle == '核查'">
<el-select v-model="executeForm.checkResult">
<el-option label="通过" value="1"></el-option>
<el-option label="不通过" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="审核人" v-if="subTitle == '核查' && executeForm.checkResult == 1">
<el-select v-model="executeForm.userId">
<el-option v-for="item in memberList" :label="item.realName" :value="item.id"></el-option>
</el-select>
</el-form-item>
<div v-if="subTitle == '核准'" style="color: #ffc300; margin-bottom: 10px">
评价等级分为:(95以上节点推进超前完成质量高)(85-95节点推进正常质量较好)(75-84节点推进轻微拖期完成质量一般)(75以下进展滞后完成质量较差)
</div>
<el-form-item v-if="subTitle == '核准'" label="评价分数">
<el-input v-model="executeForm.score"></el-input>
</el-form-item>
<el-form-item v-if="subTitle == '核准'" label="评语">
<el-input type="textarea" v-model="executeForm.evaluate"></el-input>
</el-form-item>
<el-form-item label="审核意见" prop="checkOpinion" label-width="80px">
<el-input
type="textarea"
placeholder="请输入审核意见"
v-model="checkForm.checkOpinion"
></el-input>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submitExecute"> </el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import { getRoleUserList } from '@/api/processManagement/taskDispatch';
export default {
props: {
showDialog: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '',
},
rowItem:{
type: Object,
default: () => ({})
}
},
data() {
return {
openShow: false,
memberList: [],
executeForm:{},
executeRules: {
executeResult: [{ required: true, message: '请选择执行类型', trigger: 'blur' }],
milestoneMemo: [{ required: true, message: '请填写里程碑描述', trigger: 'blur' }],
evolve: [{ required: true, message: '请填写里程碑进展', trigger: 'blur' }],
lastPlan: [{ required: true, message: '请填写下一步计划', trigger: 'blur' }],
},
};
},
mounted() {
this.openShow = this.showDialog;
this.executeForm = this.rowItem;
this.getRoleUserList();
},
methods: {
//
getRoleUserList() {
getRoleUserList({ size: 999999, current: 1 }).then(res => {
this.memberList = res.data.data.records;
});
},
closeDialog() {
this.openShow = false;
this.$emit('closeDialog');
},
submit() {
this.$refs.executeForm.validate(valid => {
if (valid) {
this.executeDialog = false;
}
});
},
},
};
</script>
<style lang="scss" scoped></style>
Loading…
Cancel
Save