Commit 8dea2093 authored by renjintao's avatar renjintao

examine1 mesplan

parent e8758b38
<template>
<div style="padding:30px 0">
<div style="padding:30px 0">
<Detail :idVal="detailId" />
<Process ref="userProcess" :idVal="detailId" :resulstInfo="testObj" @node-click="show"/>
<Process ref="userProcess" :idVal="detailId" :resulstInfo="testObj" @node-click="show" />
<!-- <Footer :idVal="detailId" :footerStatu="footerStatu" @showModalCheckOk='modalCheckOk=true'></Footer> -->
<div class="footers" v-if="footerStatu === '2'" style="text-align:left;">
<Form
:model="formMyCheck"
:label-width="100"
:rules="ruleValidate"
inline
ref="formValidate"
>
<Row>
<Col span="18">
<FormItem label="审批意见:">
<RadioGroup v-model="formMyCheck.radioSp" style="width:200px">
<Radio label="通过"></Radio>
<Radio label="驳回"></Radio>
<Radio label="终止"></Radio>
</RadioGroup>
</FormItem>
<FormItem
label="驳回节点:"
v-if="formMyCheck.radioSp === '驳回'"
prop="rejectToNodeId"
>
<Select
style="width:200px"
clearable
transfer
placeholder="请选择驳回节点"
v-model="formMyCheck.rejectToNodeId"
>
<Option value class="option-text">请选择驳回节点</Option>
<Option
v-for="(item, index) in nodeList"
:value="item.value"
:label="item.label"
:key="index"
:disabled="item.statu > 0 ? false : true"
></Option>
</Select>
<RadioGroup type="button" size="small" @on-change="changeToNode">
<Radio label="1">上一节点</Radio>
<Radio label="2">第一节点</Radio>
</RadioGroup>
</FormItem>
<FormItem
label="原因:"
v-if="
<Form :model="formMyCheck" :label-width="100" :rules="ruleValidate" inline ref="formValidate">
<Row>
<Col span="18">
<FormItem label="审批意见:">
<RadioGroup v-model="formMyCheck.radioSp" style="width:200px">
<Radio label="通过"></Radio>
<Radio label="驳回"></Radio>
<Radio label="终止"></Radio>
</RadioGroup>
</FormItem>
<FormItem label="驳回节点:" v-if="formMyCheck.radioSp === '驳回'" prop="rejectToNodeId">
<Select style="width:200px" clearable transfer placeholder="请选择驳回节点" v-model="formMyCheck.rejectToNodeId">
<Option value class="option-text">请选择驳回节点</Option>
<Option v-for="(item, index) in nodeList" :value="item.value" :label="item.label" :key="index" :disabled="item.statu > 0 ? false : true"></Option>
</Select>
<RadioGroup type="button" size="small" @on-change="changeToNode">
<Radio label="1">上一节点</Radio>
<Radio label="2">第一节点</Radio>
</RadioGroup>
</FormItem>
<FormItem label="原因:" v-if="
formMyCheck.radioSp === '驳回' || formMyCheck.radioSp === '终止'
"
prop="comment"
>
<Input
v-model="formMyCheck.comment"
style="width:400px;margin-left:10px"
placeholder="请输入原因"
/>
</FormItem>
</Col>
<Col span="6" style="text-align:right;padding-right:40px">
<Button type="primary" @click="nextCheckOk">下一步</Button>
</Col>
</Row>
</Form>
" prop="comment">
<Input v-model="formMyCheck.comment" style="width:400px;margin-left:10px" placeholder="请输入原因" />
</FormItem>
</Col>
<Col span="6" style="text-align:right;padding-right:40px">
<Button type="primary" @click="nextCheckOk">下一步</Button>
</Col>
</Row>
</Form>
</div>
<!-- 订单审里通过form -->
<Modal
v-model="modalCheckOk"
title="订单审里"
width="800"
:scrollable="true"
>
<Form :model="formMyCheck" :label-width="100">
<Row>
<Col span="12">
<FormItem label="工时:" style="width:100%">
<InputNumber
v-model="formMyCheck.workHours"
:step="1"
:min="2"
style="width:240px"
/>
</FormItem>
</Col>
<Col span="12">
<FormItem label="打印周期:" style="width:100%">
<InputNumber
v-model="formMyCheck.printPeriod"
:step="1"
:min="2"
style="width:240px"
/>
</FormItem>
</Col>
</Row>
<Row>
<Col span="12">
<FormItem label="设备:" style="width:100%">
<Input v-model="formMyCheck.equipment" style="width:240px" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="材料重量:" style="width:100%">
<Input v-model="formMyCheck.materialWeight" style="width:240px" />
</FormItem>
</Col>
</Row>
</Form>
<div slot="footer">
<Button @click="modalCheckOk = false">取消</Button>
<Button type="primary" @click="checkOk" v-show="footerStatue">确定</Button>
</div>
<!-- 订单审核通过form -->
<Modal v-model="modalCheckOk" title="订单审核" width="800" :scrollable="true">
<Form :model="formMyCheck" :label-width="100" v-if="false">
<Row>
<Col span="12">
<FormItem label="工时:" style="width:100%">
<InputNumber v-model="formMyCheck.workHours" :step="1" :min="2" style="width:240px" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="打印周期:" style="width:100%">
<InputNumber v-model="formMyCheck.printPeriod" :step="1" :min="2" style="width:240px" />
</FormItem>
</Col>
</Row>
<Row>
<Col span="12">
<FormItem label="设备:" style="width:100%">
<Input v-model="formMyCheck.equipment" style="width:240px" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="材料重量:" style="width:100%">
<Input v-model="formMyCheck.materialWeight" style="width:240px" />
</FormItem>
</Col>
</Row>
</Form>
<br />
<h4>
您确定 <span class="new-red">通过</span> 此订单审批?
</h4>
<br />
<div slot="footer">
<Button @click="modalCheckOk = false">取消</Button>
<Button type="primary" @click="checkOk" v-show="footerStatue">确定</Button>
</div>
</Modal>
<Modal
v-model="modalCheckNo"
title="订单审批"
width="800"
:scrollable="true"
>
<br />
<h4>
您确定 <span class="new-red">{{ statuTitle }}</span> 此订单审批?
</h4>
<br />
<div slot="footer">
<Button @click="modalCheckNo = false">取消</Button>
<Button type="primary" @click="checkFalse">确定</Button>
</div>
<Modal v-model="modalCheckNo" title="订单审批" width="800" :scrollable="true">
<br />
<h4>
您确定 <span class="new-red">{{ statuTitle }}</span> 此订单审批?
</h4>
<br />
<div slot="footer">
<Button @click="modalCheckNo = false">取消</Button>
<Button type="primary" @click="checkFalse">确定</Button>
</div>
</Modal>
</div>
</div>
</template>
<script>
import Api from '../api'
import Detail from './detail'
import Process from '../process'
export default {
layout: 'empty',
name: 'Index',
components: {
Detail,
Process,
},
data() {
return {
currentUserId: 0,
formMyCheck: {
radioSp: '通过',
comment: '',
workHours: 0, //工时
printPeriod: 0, //打印周期
equipment: '', //设备
materialWeight: 0, //材料重量
rejectToNodeId: null
},
modalCheckOk: false,
footerStatue:true,
modalCheckNo: false,
detailId: null,
statuTitle: '',
footerStatu: null, //是否显示footer
getDetailResults: [], //getdetail返回数据
getDetailResultOrder: [], //getdetail返回订单detail数据
getDetailProcess: [], //getdetail返回process信息
getDetailRecords: [], //getdetail返回当前records信息
passId: null, //通过审批/驳回/终止接口 id,
nodeList: [], //返回节点
currentNodeID: null, //当前节点
firstNodeID: null, //第一个节点
preNodeID: null, //上一个节点
nextNodeUserIdList: [], //通过时提交的下一个节点UserId
testObj: {},
ruleValidate: {
rejectToNodeId: [
{
required: true,
message: '请选择驳回节点',
type: 'number',
trigger: 'change'
}
],
comment: [
{
required: true,
message: '请输入原因',
trigger: 'blur'
}
]
}
}
},
props: {},
async fetch({ store, params }) {
await store.dispatch('loadDictionary') // 加载数据字典
// await store.dispatch("loadUsers");//加载缓存的用户
},
created() {
this.currentUserId=this.$store.state.userInfo.userId
this.detailId = this.$http.common.getquerystring('id')
this.footerStatu = this.$http.common.getquerystring('statu')
this.getDetailInfos(this.detailId)
},
methods: {
nextCheckOk() {
if (this.formMyCheck.radioSp == '通过') {
this.footerStatue=true
this.modalCheckOk = true
} else if (this.formMyCheck.radioSp == '驳回') {
this.$refs['formValidate'].validate((valid) => {
if (valid) {
this.modalCheckNo = true
this.statuTitle = '驳回'
} else {
}
})
} else {
this.$refs['formValidate'].validate((valid) => {
if (valid) {
this.modalCheckNo = true
this.statuTitle = '终止'
} else {
}
})
}
},
show(a){
this.footerStatue=false
let contextDate=JSON.parse(a.contextData)
this.formMyCheck=contextDate
this.modalCheckOk=true
layout: 'empty',
name: 'Index',
components: {
Detail,
Process,
},
getDetailInfos(idVal) {
this.getDetailRecords = []
let param = {
Id: idVal
}
Api.getdetail(param).then((r) => {
this.testObj = r
if (r.success) {
this.currentNodeID = r.result.currentNodeId
this.passId=r.result.currentRecordId
this.nextNodeUserIdList=this.$refs.userProcess.immutData//获取下一节点的审核人
this.getNodes(r.result.nodes)
} else {
this.$Message.error('加载失败')
data() {
return {
currentUserId: 0,
formMyCheck: {
radioSp: '通过',
comment: '',
workHours: 0, //工时
printPeriod: 0, //打印周期
equipment: '', //设备
materialWeight: 0, //材料重量
rejectToNodeId: null
},
modalCheckOk: false,
footerStatue: true,
modalCheckNo: false,
detailId: null,
statuTitle: '',
footerStatu: null, //是否显示footer
getDetailResults: [], //getdetail返回数据
getDetailResultOrder: [], //getdetail返回订单detail数据
getDetailProcess: [], //getdetail返回process信息
getDetailRecords: [], //getdetail返回当前records信息
passId: null, //通过审批/驳回/终止接口 id,
nodeList: [], //返回节点
currentNodeID: null, //当前节点
firstNodeID: null, //第一个节点
preNodeID: null, //上一个节点
nextNodeUserIdList: [], //通过时提交的下一个节点UserId
testObj: {},
ruleValidate: {
rejectToNodeId: [{
required: true,
message: '请选择驳回节点',
type: 'number',
trigger: 'change'
}],
comment: [{
required: true,
message: '请输入原因',
trigger: 'blur'
}]
}
}
})
},
//根据当前登录用户返回records的id
getRecordsId(records) {
records.forEach((data) => {
if (data.operatorId == this.currentUserId) {
this.passId = data.id
}
})
},
//获取流程节点
getNodes(nodes) {
this.nodeList = []
nodes.forEach((data) => {
let nodeObj = {}
nodeObj.value = data.id
nodeObj.label = data.name
nodeObj.statu = 1
this.nodeList.push(nodeObj)
})
//第一节点node的ID
this.firstNodeID = this.nodeList[0].value
//根据当前nodeid找到上一节点的nodeId
var index = this.nodeList.findIndex(
(item) => item.value == this.currentNodeID
)
if (index > 0) {
this.preNodeID = this.nodeList[index - 1].value
} else {
this.preNodeID = this.nodeList[0].value
}
//根据当前nodeid找到下一节点的defaultUser
// this.nextNodeUserIdList = []
// if (index + 1 < nodes.length) {
// this.nextNodeUserIdList = nodes[index + 1].defaultUsers.immutable
// }
//返回当前节点的records,用于查找在records里当前登录用户的对应的id
//this.getDetailRecords = nodes[index].records
//this.getRecordsId(this.getDetailRecords)
},
changeToNode(val) {
if (val == '1') {
this.formMyCheck.rejectToNodeId = this.preNodeID
} else {
this.formMyCheck.rejectToNodeId = this.firstNodeID
}
props: {},
async fetch({
store,
params
}) {
await store.dispatch('loadDictionary') // 加载数据字典
// await store.dispatch("loadUsers");//加载缓存的用户
},
//审批通过
checkOk() {
let param = {
id: this.passId,
comment: '',
nextOperationIdList: this.nextNodeUserIdList,
data: {
workHours: this.formMyCheck.workHours,
printPeriod: this.formMyCheck.printPeriod,
equipment: this.formMyCheck.equipment,
materialWeight: this.formMyCheck.materialWeight
}
}
Api.pass(param).then((r) => {
if (r.success) {
this.$Message.success('审批通过成功')
this.footerStatu = 3
} else {
this.$Message.error('审批通过失败')
}
})
this.modalCheckOk = false
},
//审批驳回
checkNo() {
let param = {
id: this.passId,
comment: this.formMyCheck.comment,
rejectToNodeId: this.formMyCheck.rejectToNodeId
}
Api.reject(param).then((r) => {
if (r.success) {
this.$Message.success('驳回审批成功')
this.footerStatu = 3
} else {
this.$Message.error('加载失败')
}
this.modalCheckNo = false
})
created() {
this.currentUserId = this.$store.state.userInfo.userId
this.detailId = this.$http.common.getquerystring('id')
this.footerStatu = this.$http.common.getquerystring('statu')
this.getDetailInfos(this.detailId)
},
//审批终止
checkCancel() {
let param = {
id: this.passId,
comment: this.formMyCheck.comment
}
Api.terminate(param).then((r) => {
if (r.success) {
this.$Message.success('终止审批成功')
this.footerStatu = 3
} else {
this.$Message.error('加载失败')
methods: {
nextCheckOk() {
if (this.formMyCheck.radioSp == '通过') {
this.footerStatue = true
this.modalCheckOk = true
} else if (this.formMyCheck.radioSp == '驳回') {
this.$refs['formValidate'].validate((valid) => {
if (valid) {
this.modalCheckNo = true
this.statuTitle = '驳回'
} else {}
})
} else {
this.$refs['formValidate'].validate((valid) => {
if (valid) {
this.modalCheckNo = true
this.statuTitle = '终止'
} else {}
})
}
},
show(a) {
this.footerStatue = false
let contextDate = JSON.parse(a.contextData)
this.formMyCheck = contextDate
this.modalCheckOk = true
},
getDetailInfos(idVal) {
this.getDetailRecords = []
let param = {
Id: idVal
}
Api.getdetail(param).then((r) => {
this.testObj = r
if (r.success) {
this.currentNodeID = r.result.currentNodeId
this.passId = r.result.currentRecordId
this.nextNodeUserIdList = this.$refs.userProcess.immutData //获取下一节点的审核人
this.getNodes(r.result.nodes)
} else {
this.$Message.error('加载失败')
}
})
},
//根据当前登录用户返回records的id
getRecordsId(records) {
records.forEach((data) => {
if (data.operatorId == this.currentUserId) {
this.passId = data.id
}
})
},
//获取流程节点
getNodes(nodes) {
this.nodeList = []
nodes.forEach((data) => {
let nodeObj = {}
nodeObj.value = data.id
nodeObj.label = data.name
nodeObj.statu = 1
this.nodeList.push(nodeObj)
})
//第一节点node的ID
this.firstNodeID = this.nodeList[0].value
//根据当前nodeid找到上一节点的nodeId
var index = this.nodeList.findIndex(
(item) => item.value == this.currentNodeID
)
if (index > 0) {
this.preNodeID = this.nodeList[index - 1].value
} else {
this.preNodeID = this.nodeList[0].value
}
//根据当前nodeid找到下一节点的defaultUser
// this.nextNodeUserIdList = []
// if (index + 1 < nodes.length) {
// this.nextNodeUserIdList = nodes[index + 1].defaultUsers.immutable
// }
//返回当前节点的records,用于查找在records里当前登录用户的对应的id
//this.getDetailRecords = nodes[index].records
//this.getRecordsId(this.getDetailRecords)
},
changeToNode(val) {
if (val == '1') {
this.formMyCheck.rejectToNodeId = this.preNodeID
} else {
this.formMyCheck.rejectToNodeId = this.firstNodeID
}
},
//审批通过
checkOk() {
let param = {
id: this.passId,
comment: '',
nextOperationIdList: this.nextNodeUserIdList,
data: null,
// {
// workHours: this.formMyCheck.workHours,
// printPeriod: this.formMyCheck.printPeriod,
// equipment: this.formMyCheck.equipment,
// materialWeight: this.formMyCheck.materialWeight
//}
}
Api.pass(param).then((r) => {
if (r.success) {
this.$Message.success('审批通过成功')
this.footerStatu = 3
} else {
this.$Message.error('审批通过失败')
}
})
this.modalCheckOk = false
},
//审批驳回
checkNo() {
let param = {
id: this.passId,
comment: this.formMyCheck.comment,
rejectToNodeId: this.formMyCheck.rejectToNodeId
}
Api.reject(param).then((r) => {
if (r.success) {
this.$Message.success('驳回审批成功')
this.footerStatu = 3
} else {
this.$Message.error('加载失败')
}
this.modalCheckNo = false
})
},
//审批终止
checkCancel() {
let param = {
id: this.passId,
comment: this.formMyCheck.comment
}
Api.terminate(param).then((r) => {
if (r.success) {
this.$Message.success('终止审批成功')
this.footerStatu = 3
} else {
this.$Message.error('加载失败')
}
this.modalCheckNo = false
})
},
//终止或驳回
checkFalse() {
if (this.formMyCheck.radioSp == '驳回') {
this.checkNo()
} else if (this.formMyCheck.radioSp == '终止') {
this.checkCancel()
}
this.footerStatu = 3
},
l(key) {
key = 'MaterialPlacode' + '.' + key
return this.$t(key)
}
this.modalCheckNo = false
})
},
//终止或驳回
checkFalse() {
if (this.formMyCheck.radioSp == '驳回') {
this.checkNo()
} else if (this.formMyCheck.radioSp == '终止') {
this.checkCancel()
}
this.footerStatu = 3
},
l(key) {
key = 'MaterialPlacode' + '.' + key
return this.$t(key)
}
},
watch: {}
watch: {}
}
</script>
<template>
<div class="orderDetail">
<div class="orderDetail">
<Row>
<Col span="8">
<Col span="8">
<span class="fwBold">{{l('mesCode')}}</span>
<p>{{entity.mesCode}}</p>
</Col>
<Col span="8">
</Col>
<Col span="8">
<span class="fwBold">{{l('taskType')}}</span>
<p> <state code="plan.order.taskType" :value="entity.taskType" type="text"></state></p>
</Col>
<Col span="8">
<p>
<state code="plan.order.taskType" :value="entity.taskType" type="text"></state>
</p>
</Col>
<Col span="8">
<span class="fwBold">{{l('quantity')}}</span>
<p>{{entity.quantity}}</p>
</Col>
</Col>
</Row>
<Row>
<Col span="8">
<Col span="8">
<span class="fwBold">{{l('status')}}</span>
<p><state code="plan.order.status" :value="entity.status" type="text"></state></p>
</Col>
<Col span="8">
<p>
<state code="plan.order.status" :value="entity.status" type="text"></state>
</p>
</Col>
<Col span="8">
<span class="fwBold">{{l('productName')}}</span>
<p>{{entity.productName}}</p>
</Col>
<Col span="8">
</Col>
<Col span="8">
<span class="fwBold">{{l('drawnNumber')}}</span>
<p>{{entity.drawnNumber}}</p>
</Col>
</Col>
</Row>
<Row>
<Col span="8">
<Col span="8">
<span class="fwBold">{{l('batchNumber')}}</span>
<p>{{entity.batchNumber}}</p>
</Col>
<Col span="8">
</Col>
<Col span="8">
<span class="fwBold">{{l('projectNumber')}}</span>
<p>{{entity.projectNumber}}</p>
</Col>
<Col span="8">
</Col>
<Col span="8">
<span class="fwBold">{{l('urgencyLevel')}}</span>
<p><state code="plan.order.urgencyLevel" :value="entity.urgencyLevel" type="text"></state></p>
</Col>
<p>
<state code="plan.order.urgencyLevel" :value="entity.urgencyLevel" type="text"></state>
</p>
</Col>
</Row>
<Row>
<Col span="8">
<Row>
<Col span="8">
<span class="fwBold">{{l('demandStartDate')}}</span>
<p><DTSpan type="date" v-model="entity.demandStartDate"></DTSpan></p>
</Col>
<Col span="8">
<p>
<DTSpan type="date" v-model="entity.demandStartDate"></DTSpan>
</p>
</Col>
<Col span="8">
<span class="fwBold">{{l('demandFinishDate')}}</span>
<p><DTSpan type="date" v-model="entity.demandFinishDate"></DTSpan></p>
</Col>
<Col span="8">
<p>
<DTSpan type="date" v-model="entity.demandFinishDate"></DTSpan>
</p>
</Col>
<Col span="8">
<span class="fwBold">{{l('taskRequire')}}</span>
<p>{{entity.taskRequire}}</p>
</Col>
</Col>
</Row>
<Row>
<Col span="8">
<span class="fwBold">{{l('productingPreparationPeople')}}</span>
<p>
<WorkShopName v-model="entity.productingPreparationPeople" v-if="entity.productingPreparationPeople>0"></WorkShopName>
</p>
</Col>
<Col span="8">
<span class="fwBold">{{l('quotationPeople')}}</span>
<p>
<User v-model="entity.quotationPeople" v-if="entity.quotationPeople>0"></User>
</p>
</Col>
<Col span="8">
<span class="fwBold">&nbsp;</span>
<p>&nbsp;</p>
</Col>
</Row>
<Row class="lastRow">
<Col span="24">
<Col span="24">
<span class="fwBold">{{l('remark')}}</span>
<p>{{entity.remark}}</p>
</Col>
</Col>
</Row>
</div>
</div>
</template>
<script>
import Api from "./api";
export default {
name: "detail",
data() {
return {
entity: {}
};
},
props: {
row: {
type: Object,
default: () => {
return null;
}
}
},
methods: {
handleClose() {
this.$emit("on-close");
name: "detail",
data() {
return {
entity: {}
};
},
l(key) {
key = "mes_plan" + "." + key;
return this.$t(key);
}
},
watch: {
row(v) {
if (v != null) {
this.entity = this.$u.clone(this.row);
}
props: {
row: {
type: Object,
default: () => {
return null;
}
}
},
methods: {
handleClose() {
this.$emit("on-close");
},
l(key) {
key = "mes_plan" + "." + key;
return this.$t(key);
}
},
watch: {
row(v) {
if (v != null) {
this.entity = this.$u.clone(this.row);
}
}
}
}
};
</script>
<style lang="less">
.orderDetail
{
line-height: 30px;
width: 90%;
margin: 0 auto;
.ivu-row{
padding-top: 20px;
padding-bottom: 20px;
border-bottom:#ccc solid 1px;
}
.lastRow
{
border-bottom:none;
}
.orderDetail {
line-height: 30px;
width: 90%;
margin: 0 auto;
.ivu-row {
padding-top: 20px;
padding-bottom: 20px;
border-bottom: #ccc solid 1px;
}
.lastRow {
border-bottom: none;
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment