Commit 8dea2093 authored by renjintao's avatar renjintao

examine1 mesplan

parent e8758b38
<template> <template>
<div style="padding:30px 0"> <div style="padding:30px 0">
<Detail :idVal="detailId" /> <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> --> <!-- <Footer :idVal="detailId" :footerStatu="footerStatu" @showModalCheckOk='modalCheckOk=true'></Footer> -->
<div class="footers" v-if="footerStatu === '2'" style="text-align:left;"> <div class="footers" v-if="footerStatu === '2'" style="text-align:left;">
<Form <Form :model="formMyCheck" :label-width="100" :rules="ruleValidate" inline ref="formValidate">
:model="formMyCheck" <Row>
:label-width="100" <Col span="18">
:rules="ruleValidate" <FormItem label="审批意见:">
inline <RadioGroup v-model="formMyCheck.radioSp" style="width:200px">
ref="formValidate" <Radio label="通过"></Radio>
> <Radio label="驳回"></Radio>
<Row> <Radio label="终止"></Radio>
<Col span="18"> </RadioGroup>
<FormItem label="审批意见:"> </FormItem>
<RadioGroup v-model="formMyCheck.radioSp" style="width:200px"> <FormItem label="驳回节点:" v-if="formMyCheck.radioSp === '驳回'" prop="rejectToNodeId">
<Radio label="通过"></Radio> <Select style="width:200px" clearable transfer placeholder="请选择驳回节点" v-model="formMyCheck.rejectToNodeId">
<Radio label="驳回"></Radio> <Option value class="option-text">请选择驳回节点</Option>
<Radio label="终止"></Radio> <Option v-for="(item, index) in nodeList" :value="item.value" :label="item.label" :key="index" :disabled="item.statu > 0 ? false : true"></Option>
</RadioGroup> </Select>
</FormItem> <RadioGroup type="button" size="small" @on-change="changeToNode">
<FormItem <Radio label="1">上一节点</Radio>
label="驳回节点:" <Radio label="2">第一节点</Radio>
v-if="formMyCheck.radioSp === '驳回'" </RadioGroup>
prop="rejectToNodeId" </FormItem>
> <FormItem label="原因:" v-if="
<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 === '终止' formMyCheck.radioSp === '驳回' || formMyCheck.radioSp === '终止'
" " prop="comment">
prop="comment" <Input v-model="formMyCheck.comment" style="width:400px;margin-left:10px" placeholder="请输入原因" />
> </FormItem>
<Input </Col>
v-model="formMyCheck.comment" <Col span="6" style="text-align:right;padding-right:40px">
style="width:400px;margin-left:10px" <Button type="primary" @click="nextCheckOk">下一步</Button>
placeholder="请输入原因" </Col>
/> </Row>
</FormItem> </Form>
</Col>
<Col span="6" style="text-align:right;padding-right:40px">
<Button type="primary" @click="nextCheckOk">下一步</Button>
</Col>
</Row>
</Form>
</div> </div>
<!-- 订单审里通过form --> <!-- 订单审核通过form -->
<Modal <Modal v-model="modalCheckOk" title="订单审核" width="800" :scrollable="true">
v-model="modalCheckOk" <Form :model="formMyCheck" :label-width="100" v-if="false">
title="订单审里" <Row>
width="800" <Col span="12">
:scrollable="true" <FormItem label="工时:" style="width:100%">
> <InputNumber v-model="formMyCheck.workHours" :step="1" :min="2" style="width:240px" />
<Form :model="formMyCheck" :label-width="100"> </FormItem>
<Row> </Col>
<Col span="12"> <Col span="12">
<FormItem label="工时:" style="width:100%"> <FormItem label="打印周期:" style="width:100%">
<InputNumber <InputNumber v-model="formMyCheck.printPeriod" :step="1" :min="2" style="width:240px" />
v-model="formMyCheck.workHours" </FormItem>
:step="1" </Col>
:min="2" </Row>
style="width:240px" <Row>
/> <Col span="12">
</FormItem> <FormItem label="设备:" style="width:100%">
</Col> <Input v-model="formMyCheck.equipment" style="width:240px" />
<Col span="12"> </FormItem>
<FormItem label="打印周期:" style="width:100%"> </Col>
<InputNumber <Col span="12">
v-model="formMyCheck.printPeriod" <FormItem label="材料重量:" style="width:100%">
:step="1" <Input v-model="formMyCheck.materialWeight" style="width:240px" />
:min="2" </FormItem>
style="width:240px" </Col>
/> </Row>
</FormItem> </Form>
</Col> <br />
</Row> <h4>
<Row> 您确定 <span class="new-red">通过</span> 此订单审批?
<Col span="12"> </h4>
<FormItem label="设备:" style="width:100%"> <br />
<Input v-model="formMyCheck.equipment" style="width:240px" /> <div slot="footer">
</FormItem> <Button @click="modalCheckOk = false">取消</Button>
</Col> <Button type="primary" @click="checkOk" v-show="footerStatue">确定</Button>
<Col span="12"> </div>
<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>
</Modal> </Modal>
<Modal <Modal v-model="modalCheckNo" title="订单审批" width="800" :scrollable="true">
v-model="modalCheckNo" <br />
title="订单审批" <h4>
width="800" 您确定 <span class="new-red">{{ statuTitle }}</span> 此订单审批?
:scrollable="true" </h4>
> <br />
<br /> <div slot="footer">
<h4> <Button @click="modalCheckNo = false">取消</Button>
您确定 <span class="new-red">{{ statuTitle }}</span> 此订单审批? <Button type="primary" @click="checkFalse">确定</Button>
</h4> </div>
<br />
<div slot="footer">
<Button @click="modalCheckNo = false">取消</Button>
<Button type="primary" @click="checkFalse">确定</Button>
</div>
</Modal> </Modal>
</div> </div>
</template> </template>
<script> <script>
import Api from '../api' import Api from '../api'
import Detail from './detail' import Detail from './detail'
import Process from '../process' import Process from '../process'
export default { export default {
layout: 'empty', layout: 'empty',
name: 'Index', name: 'Index',
components: { components: {
Detail, Detail,
Process, 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
}, },
getDetailInfos(idVal) { data() {
this.getDetailRecords = [] return {
let param = { currentUserId: 0,
Id: idVal formMyCheck: {
} radioSp: '通过',
Api.getdetail(param).then((r) => { comment: '',
this.testObj = r workHours: 0, //工时
if (r.success) { printPeriod: 0, //打印周期
this.currentNodeID = r.result.currentNodeId equipment: '', //设备
this.passId=r.result.currentRecordId materialWeight: 0, //材料重量
this.nextNodeUserIdList=this.$refs.userProcess.immutData//获取下一节点的审核人 rejectToNodeId: null
this.getNodes(r.result.nodes) },
} else { modalCheckOk: false,
this.$Message.error('加载失败') 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) { props: {},
if (val == '1') { async fetch({
this.formMyCheck.rejectToNodeId = this.preNodeID store,
} else { params
this.formMyCheck.rejectToNodeId = this.firstNodeID }) {
} await store.dispatch('loadDictionary') // 加载数据字典
// await store.dispatch("loadUsers");//加载缓存的用户
}, },
//审批通过 created() {
checkOk() { this.currentUserId = this.$store.state.userInfo.userId
let param = { this.detailId = this.$http.common.getquerystring('id')
id: this.passId, this.footerStatu = this.$http.common.getquerystring('statu')
comment: '', this.getDetailInfos(this.detailId)
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
})
}, },
//审批终止 methods: {
checkCancel() { nextCheckOk() {
let param = { if (this.formMyCheck.radioSp == '通过') {
id: this.passId, this.footerStatue = true
comment: this.formMyCheck.comment this.modalCheckOk = true
} } else if (this.formMyCheck.radioSp == '驳回') {
Api.terminate(param).then((r) => { this.$refs['formValidate'].validate((valid) => {
if (r.success) { if (valid) {
this.$Message.success('终止审批成功') this.modalCheckNo = true
this.footerStatu = 3 this.statuTitle = '驳回'
} else { } else {}
this.$Message.error('加载失败') })
} 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) { watch: {}
key = 'MaterialPlacode' + '.' + key
return this.$t(key)
}
},
watch: {}
} }
</script> </script>
<template> <template>
<div class="orderDetail"> <div class="orderDetail">
<Row> <Row>
<Col span="8"> <Col span="8">
<span class="fwBold">{{l('mesCode')}}</span> <span class="fwBold">{{l('mesCode')}}</span>
<p>{{entity.mesCode}}</p> <p>{{entity.mesCode}}</p>
</Col> </Col>
<Col span="8"> <Col span="8">
<span class="fwBold">{{l('taskType')}}</span> <span class="fwBold">{{l('taskType')}}</span>
<p> <state code="plan.order.taskType" :value="entity.taskType" type="text"></state></p> <p>
</Col> <state code="plan.order.taskType" :value="entity.taskType" type="text"></state>
<Col span="8"> </p>
</Col>
<Col span="8">
<span class="fwBold">{{l('quantity')}}</span> <span class="fwBold">{{l('quantity')}}</span>
<p>{{entity.quantity}}</p> <p>{{entity.quantity}}</p>
</Col> </Col>
</Row> </Row>
<Row> <Row>
<Col span="8"> <Col span="8">
<span class="fwBold">{{l('status')}}</span> <span class="fwBold">{{l('status')}}</span>
<p><state code="plan.order.status" :value="entity.status" type="text"></state></p> <p>
</Col> <state code="plan.order.status" :value="entity.status" type="text"></state>
<Col span="8"> </p>
</Col>
<Col span="8">
<span class="fwBold">{{l('productName')}}</span> <span class="fwBold">{{l('productName')}}</span>
<p>{{entity.productName}}</p> <p>{{entity.productName}}</p>
</Col> </Col>
<Col span="8"> <Col span="8">
<span class="fwBold">{{l('drawnNumber')}}</span> <span class="fwBold">{{l('drawnNumber')}}</span>
<p>{{entity.drawnNumber}}</p> <p>{{entity.drawnNumber}}</p>
</Col> </Col>
</Row> </Row>
<Row> <Row>
<Col span="8"> <Col span="8">
<span class="fwBold">{{l('batchNumber')}}</span> <span class="fwBold">{{l('batchNumber')}}</span>
<p>{{entity.batchNumber}}</p> <p>{{entity.batchNumber}}</p>
</Col> </Col>
<Col span="8"> <Col span="8">
<span class="fwBold">{{l('projectNumber')}}</span> <span class="fwBold">{{l('projectNumber')}}</span>
<p>{{entity.projectNumber}}</p> <p>{{entity.projectNumber}}</p>
</Col> </Col>
<Col span="8"> <Col span="8">
<span class="fwBold">{{l('urgencyLevel')}}</span> <span class="fwBold">{{l('urgencyLevel')}}</span>
<p><state code="plan.order.urgencyLevel" :value="entity.urgencyLevel" type="text"></state></p> <p>
</Col> <state code="plan.order.urgencyLevel" :value="entity.urgencyLevel" type="text"></state>
</p>
</Col>
</Row> </Row>
<Row> <Row>
<Col span="8"> <Col span="8">
<span class="fwBold">{{l('demandStartDate')}}</span> <span class="fwBold">{{l('demandStartDate')}}</span>
<p><DTSpan type="date" v-model="entity.demandStartDate"></DTSpan></p> <p>
</Col> <DTSpan type="date" v-model="entity.demandStartDate"></DTSpan>
<Col span="8"> </p>
</Col>
<Col span="8">
<span class="fwBold">{{l('demandFinishDate')}}</span> <span class="fwBold">{{l('demandFinishDate')}}</span>
<p><DTSpan type="date" v-model="entity.demandFinishDate"></DTSpan></p> <p>
</Col> <DTSpan type="date" v-model="entity.demandFinishDate"></DTSpan>
<Col span="8"> </p>
</Col>
<Col span="8">
<span class="fwBold">{{l('taskRequire')}}</span> <span class="fwBold">{{l('taskRequire')}}</span>
<p>{{entity.taskRequire}}</p> <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>
<Row class="lastRow"> <Row class="lastRow">
<Col span="24"> <Col span="24">
<span class="fwBold">{{l('remark')}}</span> <span class="fwBold">{{l('remark')}}</span>
<p>{{entity.remark}}</p> <p>{{entity.remark}}</p>
</Col> </Col>
</Row> </Row>
</div> </div>
</template> </template>
<script> <script>
import Api from "./api"; import Api from "./api";
export default { export default {
name: "detail", name: "detail",
data() { data() {
return { return {
entity: {} entity: {}
}; };
},
props: {
row: {
type: Object,
default: () => {
return null;
}
}
},
methods: {
handleClose() {
this.$emit("on-close");
}, },
l(key) { props: {
key = "mes_plan" + "." + key; row: {
return this.$t(key); type: Object,
} default: () => {
}, return null;
watch: { }
row(v) { }
if (v != null) { },
this.entity = this.$u.clone(this.row); 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> </script>
<style lang="less"> <style lang="less">
.orderDetail .orderDetail {
{ line-height: 30px;
line-height: 30px; width: 90%;
width: 90%; margin: 0 auto;
margin: 0 auto;
.ivu-row{ .ivu-row {
padding-top: 20px; padding-top: 20px;
padding-bottom: 20px; padding-bottom: 20px;
border-bottom:#ccc solid 1px; border-bottom: #ccc solid 1px;
} }
.lastRow
{ .lastRow {
border-bottom:none; border-bottom: none;
} }
} }
</style> </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