You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
374 lines
13 KiB
374 lines
13 KiB
<template> |
|
<el-dialog :title="title" append-to-body :modelValue="openShow" width="45%" @close="closeDialog"> |
|
<el-form :model="detailForm" :rules="executeRules" ref="executeForm" label-width="100"> |
|
<el-row> |
|
<el-col :span="12"> |
|
<el-form-item label="项目名称:"> |
|
<el-input disabled v-model="executeForm.projectName"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="项目负责人:"> |
|
<el-input disabled v-model="executeForm.projectHead"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="项目背景:"> |
|
<el-input disabled v-model="executeForm.projectBackcloth"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="项目目标:"> |
|
<el-input disabled v-model="executeForm.projectTarget"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="预期效果:"> |
|
<el-input disabled v-model="executeForm.desiredResult"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="里程碑计划:"> |
|
<el-input disabled v-model="detailForm.milestonePlan"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="里程碑负责人:"> |
|
<el-input disabled v-model="detailForm.milestoneMan"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="里程碑节点:"> |
|
<el-input disabled v-model="detailForm.milestoneNode"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="执行类型:" prop="executeType"> |
|
<el-select |
|
:disabled="subTitle == '核查' || subTitle == '核准'" |
|
v-model="detailForm.executeType" |
|
@change="executeTypeChange" |
|
> |
|
<el-option |
|
v-for="(item, index) in executeResultList" |
|
:label="item.dictValue" |
|
:value="item.dictKey" |
|
></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="12"> |
|
<el-form-item label="延期时间:" v-if="detailForm.executeType == 1"> |
|
<el-date-picker |
|
:disabled="subTitle == '核查' || subTitle == '核准'" |
|
style="width: 100%" |
|
v-model="detailForm.delayTime" |
|
type="date" |
|
placeholder="选择日期时间" |
|
format="YYYY-MM-DD" |
|
value-format="YYYY-MM-DD" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item label="里程碑描述:" prop="milestoneMemo"> |
|
<el-input |
|
:disabled="subTitle == '核查' || subTitle == '核准'" |
|
type="textarea" |
|
v-model="detailForm.milestoneMemo" |
|
></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item label="里程碑进展:" prop="evolve"> |
|
<el-input |
|
:disabled="subTitle == '核查' || subTitle == '核准'" |
|
type="textarea" |
|
v-model="detailForm.evolve" |
|
></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item label="下一步计划:" prop="lastPlan"> |
|
<el-input |
|
:disabled="subTitle == '核查' || subTitle == '核准'" |
|
type="textarea" |
|
v-model="detailForm.lastPlan" |
|
></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<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-col> |
|
<el-col :span="12"> |
|
<el-form-item label="核查人:" v-if="subTitle == '执行'"> |
|
<el-select v-model="detailForm.userId" clearable filterable @change="handleUserChange"> |
|
<el-option |
|
v-for="item in memberList" |
|
:label="item.realName" |
|
:value="item.id" |
|
></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item label="核查结果:" v-if="subTitle == '核查'"> |
|
<el-select v-model="detailForm.checkResult" clearable filterable> |
|
<el-option label="通过" value="2"></el-option> |
|
<el-option label="不通过" value="3"></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item label="审核人:" v-if="subTitle == '核查' && detailForm.checkResult == 1"> |
|
<el-select v-model="detailForm.userId" clearable filterable> |
|
<el-option |
|
v-for="item in memberList" |
|
:label="item.realName" |
|
:value="item.id" |
|
></el-option> |
|
</el-select> |
|
</el-form-item> |
|
</el-col> |
|
<div v-if="subTitle == '核准'" style="color: #ffc300; margin-bottom: 10px"> |
|
评价等级分为:优(95以上,节点推进超前、完成质量高)、良(85-95分,节点推进正常、质量较好)、中(75-84,节点推进轻微拖期,完成质量一般)、差(75以下,进展滞后,完成质量较差) |
|
</div> |
|
<el-col :span="24"> |
|
<el-form-item v-if="subTitle == '核准'" label="评价分数:"> |
|
<el-input v-model="detailForm.score"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item v-if="subTitle == '核准'" label="评语:"> |
|
<el-input type="textarea" v-model="detailForm.evaluate"></el-input> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-form-item |
|
label="审核意见:" |
|
prop="checkOpinion" |
|
label-width="80px" |
|
v-if="subTitle == '核准'" |
|
> |
|
<el-input |
|
type="textarea" |
|
placeholder="请输入审核意见" |
|
v-model="detailForm.checkOpinion" |
|
></el-input> |
|
</el-form-item> |
|
</el-col> |
|
</el-row> |
|
</el-form> |
|
|
|
<template #footer> |
|
<span class="dialog-footer"> |
|
<el-button @click="closeDialog" :loading="loadingShow">取 消</el-button> |
|
<el-button type="primary" @click="submit" :loading="loadingShow">确 定</el-button> |
|
</span> |
|
</template> |
|
</el-dialog> |
|
</template> |
|
<script> |
|
import { getRoleUserList } from '@/api/processManagement/taskDispatch'; |
|
import { projectExecute, projectCheck, projectApprove } from '@/api/flowManagement/index'; |
|
import { getDictionary } from '@/api/system/dict'; |
|
|
|
export default { |
|
props: { |
|
showDialog: { |
|
type: Boolean, |
|
default: false, |
|
}, |
|
title: { |
|
type: String, |
|
default: '', |
|
}, |
|
rowItem: { |
|
type: Object, |
|
default: () => ({}), |
|
}, |
|
detailForm: { |
|
type: Object, |
|
default: () => ({}), |
|
}, |
|
}, |
|
data() { |
|
return { |
|
loadingShow: false, |
|
openShow: false, |
|
memberList: [], |
|
executeForm: {}, |
|
executeRules: { |
|
executeType: [{ required: true, message: '请选择执行类型', trigger: 'blur' }], |
|
milestoneMemo: [{ required: true, message: '请填写里程碑描述', trigger: 'blur' }], |
|
evolve: [{ required: true, message: '请填写里程碑进展', trigger: 'blur' }], |
|
lastPlan: [{ required: true, message: '请填写下一步计划', trigger: 'blur' }], |
|
}, |
|
subTitle: '', |
|
executeResultList: [], |
|
}; |
|
}, |
|
mounted() { |
|
this.openShow = this.showDialog; |
|
this.executeForm = this.rowItem; |
|
console.log(this.detailForm, 'title'); |
|
this.detailForm.checkResult = null; |
|
this.subTitle = this.title; |
|
console.log(this.rowItem, 'rowItem'); |
|
this.getRoleUserList(); |
|
this.getExecuteResult(); |
|
}, |
|
methods: { |
|
executeTypeChange() { |
|
this.detailForm.delayTime = ''; |
|
}, |
|
handleUserChange() { |
|
this.detailForm.checkMan = |
|
this.memberList.find(item => item.id === this.detailForm.userId)?.realName || ''; |
|
}, |
|
getExecuteResult() { |
|
getDictionary({ code: 'flow_project_executeResult' }).then(res => { |
|
this.executeResultList = res.data.data; |
|
}); |
|
}, |
|
// 获取人员 |
|
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.loadingShow = true; |
|
// this.executeDialog = false; |
|
if (this.title == '执行') { |
|
let query_ = { |
|
...this.detailForm, |
|
fmProjectApplication: { |
|
...this.executeForm, |
|
}, |
|
attachList: this.existingFiles, |
|
}; |
|
query_.checkResult = 1; |
|
query_.fmProjectApplication.approvalStatus = 4; |
|
query_.fmProjectApplication.delayTime = |
|
query_.fmProjectApplication.delayTime + ' 00:00:00'; |
|
projectExecute(query_) |
|
.then(res => { |
|
this.$message.success('操作成功!'); |
|
this.closeDialog(); |
|
this.loadingShow = false; |
|
}) |
|
.catch(err => { |
|
this.loadingShow = false; |
|
}); |
|
} |
|
if (this.title == '核查') { |
|
let query_ = { |
|
...this.detailForm, |
|
fmProjectApplication: { |
|
...this.executeForm, |
|
}, |
|
// attachList: this.existingFiles, |
|
}; |
|
// if (query_.checkResult == 2) { |
|
// query_.fmProjectApplication.approvalStatus = 6; |
|
// } |
|
// if (query_.checkResult == 3) { |
|
// query_.fmProjectApplication.approvalStatus = 5; |
|
// } |
|
console.log(query_, '核查query_'); |
|
projectCheck(query_) |
|
.then(res => { |
|
this.$message.success('操作成功!'); |
|
this.closeDialog(); |
|
this.loadingShow = false; |
|
}) |
|
.catch(err => { |
|
this.loadingShow = false; |
|
}); |
|
} |
|
if (this.title == '核准') { |
|
let query_ = { |
|
...this.detailForm, |
|
fmProjectApplication: { |
|
...this.executeForm, |
|
}, |
|
// attachList: this.existingFiles, |
|
}; |
|
if (this.detailForm.score < 75) { |
|
this.$confirm('评价分数小于75,需要打回待审核状态,确认是否继续?', { |
|
confirmButtonText: '确定', |
|
cancelButtonText: '取消', |
|
type: 'warning', |
|
}) |
|
.then(() => { |
|
// return removePersonAbility(row.id); |
|
// query_.fmProjectApplication.approvalStatus = 7; |
|
projectApprove(query_) |
|
.then(res => { |
|
this.$message.success('操作成功!'); |
|
this.closeDialog(); |
|
this.loadingShow = false; |
|
}) |
|
.catch(err => { |
|
this.loadingShow = false; |
|
}); |
|
}) |
|
.catch(() => { |
|
this.loadingShow = false; |
|
}); |
|
} else { |
|
// query_.fmProjectApplication.approvalStatus = 8; |
|
projectApprove(query_) |
|
.then(res => { |
|
this.$message.success('操作成功!'); |
|
this.closeDialog(); |
|
this.loadingShow = false; |
|
}) |
|
.catch(err => { |
|
this.loadingShow = false; |
|
}); |
|
} |
|
} |
|
} |
|
}); |
|
}, |
|
}, |
|
}; |
|
</script> |
|
<style lang="scss" scoped></style>
|
|
|