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.
 
 
 
 
 
 

475 lines
17 KiB

<template>
<div>
<!-- 标题按钮部分开始 -->
<div class="tab-header webtop">
<!-- 标题 -->
<div>外采申请表详情</div>
<!-- start 详情按钮 -->
<div>
<el-button type="primary" @click="openAgree"> </el-button>
<el-button type="danger" @click="openReject"> </el-button>
<el-button type="danger" @click="openStop"> </el-button>
</div>
<!-- end 详情按钮 -->
</div>
<!-- 标题按钮部分结束 -->
<div>
<el-form ref="form_obj" :model="formobj" label-position="right" class="formadd" >
<el-row >
<el-col :span="3" class="tleftb" >申请编号</el-col>
<el-col :span="5" class="trightb"><el-form-item prop="applicationCode">
<span>{{ formobj.applicationCode }}</span></el-form-item></el-col>
<el-col :span="3" class="tleftb">申请人姓名</el-col>
<el-col :span="5" class="trightb"><el-form-item prop="createByName"><span>{{ formobj.createByName }}</span></el-form-item></el-col>
<el-col :span="3" class="tleftb">申请日期</el-col>
<el-col :span="5" class="trightb"><el-form-item prop="applicationDate"><span>{{ formobj.applicationDate }}</span></el-form-item></el-col>
</el-row>
<el-row>
<el-col :span="3" class="tleftb">外采类型</el-col>
<el-col :span="21" class="trightb">
<el-form-item prop="externalMiningTypeValue">
<span v-show="formobj.externalMiningTypeKey==2">政策外采</span>
<span v-show="formobj.externalMiningTypeKey==1">直接外采</span>
</el-form-item></el-col>
</el-row>
<el-row>
<el-col :span="3" class="tleftb">采购单位名称</el-col>
<el-col :span="21" class="trightb"><el-form-item prop="purchasingUnitName"><span>{{ formobj.purchasingUnitName }}</span></el-form-item></el-col>
</el-row>
<el-row>
<el-col :span="3" class="tleftb">车型名称</el-col>
<el-col :span="21" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.modelName }}</span></el-form-item></el-col>
</el-row>
<el-row>
<el-col :span="3" class="tleftb">常用配置名称</el-col>
<el-col :span="21" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.configName }}</span></el-form-item></el-col>
</el-row>
<el-row><el-col :span="3" class="tleftb">采购价格</el-col>
<el-col :span="9" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.purchasePrice }}</span></el-form-item></el-col>
<el-col :span="4" class="tleftb">销售指导价</el-col>
<el-col :span="8" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.guidedPrice }}</span></el-form-item></el-col>
</el-row>
<el-row> <el-col :span="3" class="tleftb">厂家合同价</el-col>
<el-col :span="9" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.manufactorSettlementPrice }}</span></el-form-item></el-col>
<el-col :span="4" class="tleftb">台数</el-col>
<el-col :span="8" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.num }}</span></el-form-item></el-col>
</el-row>
<el-row> <el-col :span="3" class="tleftb">订金</el-col>
<el-col :span="9" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.deposit }}</span></el-form-item></el-col>
<el-col :span="4" class="tleftb">费用名称</el-col>
<el-col :span="8" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.expenseName }}</span></el-form-item></el-col>
</el-row>
<el-row> <el-col :span="3" class="tleftb">费用金额合计</el-col>
<el-col :span="21" class="trightb"><el-form-item prop="useOrg"><span>{{ formobj.totalExpenseAmount }}</span></el-form-item></el-col>
</el-row>
<div class="listcon" v-show="formobj.externalMiningTypeKey==2">
<div style="border:1px solid #c0c0c0;padding:5px 5px 5px 5px;">
车辆列表
</div>
<el-table :data="formobj.baseOutsourcingApplicationVehicleDtos" border style="width: 100%" >‘
<el-table-column width="60px" label="序号" type="index" align="center" />
<el-table-column prop="vinNo" label="车架号" align="center" />
</el-table>
</div>
<span class="el-icon-picture-outline">流程图</span>
<flow :xmlData="xmlData" :taskData="taskList"></flow>
</el-form>
</div>
<!-- 选择待办人 的弹出框-->
<el-dialog title="选择待办人" :visible.sync="nodeDialogVisible" width="80%">
<el-form label-position="right" class="formadd" >
<el-row>
<el-col :span="4" class="tleftb">当前环节</el-col>
<el-col :span="20" class="trightb">
<el-form-item prop="purchasingUnitName"><span>{{ formobj.taskName }}->{{ nextNode.name }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">意见</el-col>
<el-col :span="20" class="trightb">
<el-input size="small" v-model="formobj.comment" placeholder="审批意见" class="addinputw" clearable ></el-input>
</el-col>
</el-row>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="agree">确 定</el-button>
<el-button type="info " size="mini" @click="closeNodeDialog">取 消</el-button>
</div>
</el-form>
</el-dialog>
<!-- 选择待办人 的弹出框-->
<el-dialog title="选择待办人" :visible.sync="nodeDialogVisibleForReject" width="80%">
<el-form label-position="right" class="formadd" >
<el-row>
<el-col :span="4" class="tleftb">当前环节</el-col>
<el-col :span="20" class="trightb">
<el-form-item prop="purchasingUnitName"><span>{{ formobj.taskName }}->{{ nextNode.name }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">意见</el-col>
<el-col :span="20" class="trightb">
<el-input size="small" v-model="formobj.comment" placeholder="审批意见" class="addinputw" clearable ></el-input>
</el-col>
</el-row>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="agree">确 定</el-button>
<el-button type="info " size="mini" @click="closeNodeDialog"> </el-button>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import flow from '@/views/baseoutsourcingapplication/workflow/flow'
import req from '@/api/baseoutsourcingapplication/baseoutsourcingapplication'
export default {
name: 'BaseOutsourcingApplicationInfo',
components: {
flow
},
data() {
return {
//角色sid
roleSid:"",
//选择待办人弹框
nodeDialogVisible:false,
nodeDialogVisibleForReject:false,
//选择用户弹框
nodeUserDialogVisible:false,
// 模型xml数据
xmlData: "",
//根据角色查询的用户数组
users:[],
//选择的用户的姓名
userName:'',
//选择的用户sid
userSid:'',
taskList: [],
//获取环节时默认是最后一个环节
endTask:true,
startTask:true,
//下一环节
nextNode:{},
formobj: {
sid: '',
comment:'',
applicationCode: '123456', // 申请编号
createByName: window.sessionStorage.getItem('name'), // 申请人姓名
applicationDate: '', // 申请日期
externalMiningTypeKey: '1', // 外采类型key
externalMiningTypeValue: '', // 外采类型value
purchasingUnitName: '', // 采购单位名称
modelSid: '', // 车型sid
modelName: '', // 车型名称
configName: '', // 常用配置名称
configSid: '', // 常用配置sid
purchasePrice: '', // 采购价格
guidedPrice: '', // 销售指导价
manufactorSettlementPrice: '', // 厂家合同价
num: '0', // 台数
deposit: '', // 订金
expenseName: '', // 费用名称
totalExpenseAmount: '', // 费用金额合计
orgSid: '', // 部门sid
orgSidPath: window.sessionStorage.getItem('orgSidPath'),
baseOutsourcingApplicationVehicleDtos:[],
businessSid: '',//同意办理列表
instanceId: '',
taskId: '',
taskDefKey: '',
taskName: '',
nextNodeSid:'',
nextUserSid:'',
userSid: window.sessionStorage.getItem('userSid')
},
regectList: { // 驳回列表
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
userSid: window.sessionStorage.getItem('userSid')
},
stopList: { // 终止列表
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
userSid: window.sessionStorage.getItem('userSid')
}
}
},
created() {
// ===获取sid
var a = window.location.href.indexOf('?') + 1 // 第一个?后面的一个字符的位置
var b = window.location.href.indexOf('#data') // 第一个#data出现的位置
const info = window.location.href.slice(a, b)
var sid = info.substr(info.indexOf('=') + 1)
this.showInfo(sid)
// ===获取参数
var one = window.location.href.lastIndexOf('#') + 1
var two = window.location.href.lastIndexOf('}') + 1
const data = decodeURI(window.location.href.slice(one, two)) // url解码unescape()已从web中移除,尽量不使用
var tar = data.substr(data.indexOf('=') + 1)
const obj = JSON.parse(tar)
// 同意列表 父级页面传递过来的流程的相关的属性参数
this.formobj.businessSid = sid
this.formobj.instanceId = obj.instanceId
this.formobj.taskId = obj.taskId
this.formobj.taskDefKey = obj.taskDefKey
this.formobj.taskName = obj.taskName
// 驳回列表
this.regectList.businessSid = sid
this.regectList.instanceId = obj.instanceId
this.regectList.taskId = obj.taskId
// 终止列表
this.stopList.businessSid = sid
this.stopList.instanceId = obj.instanceId
this.stopList.taskId = obj.taskId
//加载流程图相关的数据
this.getModelDetail(obj.deployId)
this.getFlowViewer(obj.instanceId)
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//告诉父级页面,子页面的弹框高度。
code: 2,
data: 1500 + 'px'
}
}, '*')
},
methods: {
//关闭弹出框 选择待办人弹框
closeNodeDialog(){
this.nodeDialogVisible = false
this.nodeDialogVisibleForReject=false
},
//根据环节上配置的角色查询用户
selectUser() {
this.nodeUserDialogVisible=true
req.getUsers(this.nextNode.candidateGroups[0]).then(res => {
var users = res.data
var sid="";
for(var i=0;i<users.length;i++){
sid=sid+users[i].sid+",";
}
sid=sid.substr(0,str.length - 1)
this.userSid = sid
})
},
//选中下一环节的用户
checkedUser(val) {
this.userName = val.name
this.userSid = val.sid
this.nodeUserDialogVisible = false
},
/** xml 文件 */
getModelDetail(deployId) {
// 发送请求获取xml
req.readXml(deployId).then(res =>{
this.xmlData = res.data
})
},
//已办环节的节点
getFlowViewer(procInsId){
req.getFlowViewer(procInsId).then(res =>{
this.taskList = res.data
})
},
// 终止
openStop() {
this.$confirm('是否确认执行终止操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.handleStop()
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消终止'
})
})
},
// 驳回
openReject() {
req.getPreviousNodesForReject(this.formobj).then(resp=>{
if (resp.success) {
var arr= resp.data;
//循环获取当前环节的下一个环节信息
var startTask=arr[0].startTask;
if(startTask){
alert('当前环节不能驳回!');
}
this.nextNode=startTask
this.nodeDialogVisibleForReject = true
}
});
},
// 同意
openAgree() {
//查验下一环节要用到,流程定义的id
req.getNextNodesForSubmit(this.formobj).then(resp=>{
if (resp.success) {
var arr= resp.data;
this.nextNode=arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
});
},
handleReturn() {
this.$emit('doback')
},
showInfo(sid) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
const _this = this
req
.fetchBySid(sid)
.then(resp => {
if (resp.success) {
const vdata = resp.data
_this.formobj.applicationCode = vdata.applicationCode // 申请编号
_this.formobj.createByName = vdata.createByName // 申请人姓名
_this.formobj.applicationDate = vdata.applicationDate // 申请日期
_this.formobj.externalMiningTypeKey = vdata.externalMiningTypeKey // 外采类型key
_this.formobj.externalMiningTypeValue = vdata.externalMiningTypeValue // 外采类型value
_this.formobj.purchasingUnitSid = vdata.purchasingUnitSid // 采购单位sid
_this.formobj.purchasingUnitName = vdata.purchasingUnitName // 采购单位名称
_this.formobj.modelSid = vdata.modelSid // 车型sid
_this.formobj.modelName = vdata.modelName // 车型名称
_this.formobj.configName = vdata.configName // 常用配置名称
_this.formobj.purchasePrice = vdata.purchasePrice // 采购价格
_this.formobj.guidedPrice = vdata.guidedPrice // 销售指导价
_this.formobj.manufactorSettlementPrice = vdata.manufactorSettlementPrice // 厂家合同价
_this.formobj.num = vdata.num // 台数
_this.formobj.deposit = vdata.deposit // 订金
_this.formobj.expenseName = vdata.expenseName // 费用名称
_this.formobj.totalExpenseAmount = vdata.totalExpenseAmount // 费用金额合计
_this.formobj.orgSid = vdata.orgSid // 部门sid
_this.formobj.baseOutsourcingApplicationVehicleDtos = vdata.baseOutsourcingApplicationVehicleVos
}
})
.catch(e => {
_this.formobj = {}
})
},
reject(){
if(this.formobj.comment==''){
alert('请填写审批意见!');
}
this.handleReject();
},
//同意任务
agree() {
if(this.formobj.comment==''){
alert('请填写审批意见!');
}
//意见
//下一环节的用户sid
//调用后台接口流转
req.agreeTask(this.formobj).then((response) => {
if (response.code === '200') {
this.nodeDialogVisible=false;
//子页面向父级页面传递值
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//操作成功,告诉父级页面关闭弹框
code: 1
}
}, '*')
} else {
this.$notify({
title: '提示',
message: '执行失败',
type: 'error',
duration: 2000
})
}
})
},
/** 驳回任务 */
handleReject() {
this.regectList.comment = this.formobj.comment
req.rejectTask(this.regectList).then((response) => {
if (response.code === '200') {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible=false;
window.parent.postMessage({
cmd: 'returnHeight',
params: {
code: 1
}
}, '*')
// this.refreshIt()
} else {
this.$notify({
title: '提示',
message: '执行失败',
type: 'error',
duration: 2000
})
}
})
} ,
/** 终止任务 */
handleStop() {
this.stopList.comment = this.comment
req.breakTask(this.stopList).then((response) => {
if (response.code === '200') {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible=false;
window.parent.postMessage({
cmd: 'returnHeight',
params: {
code: 1,
data: document.body.scrollHeight + 'px'
}
}, '*')
// this.refreshIt()
} else {
this.$notify({
title: '提示',
message: '执行失败',
type: 'error',
duration: 2000
})
}
})
}
}
}
</script>
<style scoped>
.tleftb{
font-size: 12px;
}
.trightb{
font-size: 12px;
}
.box-card {
width: 100%;
margin-bottom: 20px;
}
</style>