Commit 8aef4bed authored by dragondean@qq.com's avatar dragondean@qq.com

控货详情等

parent 97ca3518
......@@ -42,4 +42,46 @@ export function getRleaseInfo(orderId){
url:'/ecw/order-cargo-control/release/info/' + orderId,
method:'get'
})
}
// 获得控货订单放货详情
export function getPickRleaseInfo(orderId){
return request({
url:'/ecw/order-cargo-control-pick/release/info/' + orderId,
method:'get'
})
}
// 放货修改与反复核申请
export function updateApply(data){
return request({
url: '/ecw/order-cargo-control-pick/update/apply',
method: 'put',
data
})
}
// 复核
export function review(id){
return request({
url: '/ecw/order-cargo-control-pick/review/' + id,
method: 'put'
})
}
// 取消放货
export function cancel(id){
return request({
url: '/ecw/order-cargo-control-pick/cancel/' + id,
method: 'put'
})
}
// 取消审批
export function cancelApproval(approvalId, params){
return request({
url: '/ecw/order-cargo-control-pick/cancel/approval/' + approvalId,
method: 'get',
params
})
}
\ No newline at end of file
......@@ -49,6 +49,9 @@ export default {
return this.list.map(item => {
item.label = item.contactsName
let more = []
if(item.customerName){
more.push(item.customerName)
}
if(item.phoneNew){
more.push(item.phoneNew)
}
......
......@@ -106,6 +106,8 @@ export const DICT_TYPE = {
ECW_PAYMENT_STATE: 'payment_state',//付款单状态
ECW_INVOICING_TYPE: 'invoicing_type',
ECW_PRICE_TYPE: 'price_type',
ECW_RELEASE_STATUS: 'release_status', // 放货状态
ECW_PICK_RECURRENT_NUCLEAR_TYPE: 'PICK_RECURRENT_NUCLEAR_TYPE', // 放货反复核类型
//--------ecw---------
CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source',
......
......@@ -4,80 +4,76 @@
<el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-row>
<el-col :span="6">
<el-form-item label="订单号" prop="field101">
<el-form-item label="订单号">
{{detail.orderNo}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总控货数" prop="field104">
<el-form-item label="总控货数">
{{detail.sumNum}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="体积" prop="field103">
<el-form-item label="体积">
{{detail.sumVolume}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="重量" prop="field102">
<el-form-item label="重量">
{{detail.sumWeight}} kg
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="可放货箱数" prop="field105">
{{detail.sumNum - detail.pickNum}}
<el-form-item label="可放货箱数">
{{detail.sumNum - detail.releaseNum}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="已放货箱数" prop="field106">
{{detail.pickNum}}
<el-form-item label="已放货箱数">
{{detail.releaseNum}}
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="page-title">放货详情</div>
<el-table :data="[1]" border>
<el-table :data="detail.cargoControlPickBackVOList || []" border>
<el-table-column label="序号" width="50px">
</el-table-column>
<el-table-column label="收货人">
1
</el-table-column>
<el-table-column label="控货箱数">
1
</el-table-column>
<el-table-column label="放货箱数">
1
</el-table-column>
<el-table-column label="体积(m³)">
1
</el-table-column>
<el-table-column label="提单号">
1
</el-table-column>
<el-table-column label="备注">
1
</el-table-column>
<el-table-column label="操作人">
1
</el-table-column>
<el-table-column label="日期">
1
<template slot-scope="scope">{{scope.$index + 1}}</template>
</el-table-column>
<el-table-column label="收货人" prop="consigneeName" />
<el-table-column label="收货人电话" prop="consigneePhone" />
<el-table-column label="控货箱数" prop="controlNum"></el-table-column>
<el-table-column label="放货箱数" prop="pickNum"></el-table-column>
<el-table-column label="体积(m³)" prop="pickVolume"></el-table-column>
<el-table-column label="提单号" prop="tidanNo"></el-table-column>
<el-table-column label="备注" prop="remarks"></el-table-column>
<el-table-column label="操作人" prop="name"></el-table-column>
<el-table-column label="日期" prop="createTime">
<template slot-scope="{row}">
{{row.createTime|parseTime}}
</template>
</el-table-column>
<el-table-column label="状态">
1
<el-table-column label="状态" prop="status">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_RELEASE_STATUS" :value="row.status" />
</template>
</el-table-column>
<el-table-column label="操作" width="300px">
<template slot-scope="{row}">
<el-button type="primary" size="mini" @click="showEdit=true">修改</el-button>
<el-button type="danger" size="mini">取消</el-button>
<el-button type="success" size="mini" @click="review">放货复核</el-button>
<template slot-scope="scope">
<el-button v-if="scope.row.status == 1" type="primary" size="mini" @click="editIndex=scope.$index">修改</el-button>
<el-button v-if="scope.row.status == 1" type="danger" size="mini" @click="cancel(scope.row.id)">取消</el-button>
<el-button v-if="scope.row.status == 1" type="success" size="mini" @click="review(scope.row.id)">放货复核</el-button>
<el-button v-if="scope.row.status == 3" type="danger" size="mini" @click="fallbackIndex=scope.$index">反复核</el-button>
<el-button v-if="scope.row.status == 3" type="success" size="mini" @click="$alert('// TODO')">调货</el-button>
<el-button v-if="[2,4].indexOf(scope.row.status) > -1" type="primary" size="mini" @click="showApprovalDetail(scope.row.id)">审核详情</el-button>
<el-button v-if="[2,4].indexOf(scope.row.status) > -1" type="danger" size="mini" @click="cancelApproval(scope.row.id)">取消审核</el-button>
</template>
</el-table-column>
</el-table>
<div class="page-title">历史放货记录</div>
<!-- <div class="page-title">历史放货记录</div>
<el-table :data="[1]" border>
<el-table-column label="序号" width="50px">
......@@ -106,33 +102,96 @@
<el-table-column label="备注">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
</el-table>
<edit v-if="showEdit" @close="showEdit=false" />
</el-table> -->
<fallback v-if="fallbackIndex !== null" :order="detail" :index="fallbackIndex" @close="fallbackIndex=null" @success="onFallbackSuccess" />
<edit v-if="editIndex !== null" @close="editIndex=null" :order="detail" :index="editIndex" @success="onEditSuccess" />
</div>
</template>
<script>
import edit from './components/CargoControlEdit.vue'
import {createPick, getRleaseInfo} from '@/api/ecw/orderCargoControl'
import {createPick, getPickRleaseInfo, review, cancel, cancelApproval} from '@/api/ecw/orderCargoControl'
import {parseTime} from '@/utils/ruoyi'
import Fallback from './components/Fallback'
export default {
components: {edit},
filters: {parseTime},
components: {edit, Fallback},
data(){
return {
showEdit: false,
detail: null,
formData:{},
rules: {}
rules: {},
editIndex: null, // 修改索引
fallbackIndex: null, // 反复核索引
}
},
created(){
getRleaseInfo(this.$route.query.id).then(res => this.detail = res.data)
this.loadData()
},
methods:{
review(){
loadData(){
console.log('loadData')
getPickRleaseInfo(this.$route.query.id).then(res => this.detail = res.data)
},
review(id){
this.$confirm('已核实放货信息,确认放货?')
.then(res => {
this.$alert('// TODO ')
return review(id)
})
.then(res => {
this.$message.success('操作成功')
this.loadData()
})
},
unReview(){
},
cancel(id){
this.$confirm('确定取消这条放货么?')
.then(res => {
return cancel(id)
})
.then(res => {
this.$message.success('操作成功')
this.loadData()
})
},
onEditSuccess(){
console.log('onEditSuccess')
this.loadData()
this.editIndex = null
},
onFallbackSuccess(){
this.fallbackIndex = null
this.loadData()
},
// 查看审核详情
showApprovalDetail(id){
this.$router.push('/bpm/process-instance/detail?id=' + this.getApproval(id, 'formId'))
},
// 取消审核
cancelApproval(id){
this.$confirm('确定取消此申请么?')
.then(res => {
let approvalId = this.getApproval(id)
return cancelApproval(approvalId, {reason: ''})
})
.then(res => {
this.$message.success('操作成功')
this.loadData()
})
},
// 根据id查找审核id
getApproval(id, field = 'orderApprovalId'){
if(!this.detail.orderApprovalBackVOList || !this.detail.orderApprovalBackVOList.length){
this.$message.error('未找到审批ID')
Promise.reject('未找到审批ID')
}
let item = this.detail.orderApprovalBackVOList.find(item => {
let details = JSON.parse(item.details)
return details.cargoControlPickId == id && details.applyStatus == 1
})
console.log({item})
return item[field]
}
}
}
......
......@@ -2,53 +2,52 @@
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-form v-if="agreement" ref="elForm" :model="formData" size="small" label-width="100px" >
<el-form-item label="订单号" prop="field101">
111
{{order.orderNo}}
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="收货人" prop="field104">
111
{{info.consigneeName}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货人电话" prop="field103">
111
{{info.consigneePhone}}
</el-form-item>
</el-col>
</el-row>
<el-form-item label="总控货箱数" prop="field105">
111
{{order.sumNum}}
</el-form-item>
<el-form-item label="原放货箱数" prop="field106">
111
{{info.pickNum}}
</el-form-item>
<el-form-item label="现放货箱数" prop="field106">
<el-input v-model="formData.cnt" placeholder=""></el-input>
<el-input v-model="formData.currentPickNum" placeholder=""></el-input>
</el-form-item>
<el-form-item label="备注" prop="field106">
<el-input v-model="formData.cnt" placeholder=""></el-input>
<el-input v-model="formData.remarks" placeholder=""></el-input>
</el-form-item>
<el-form-item label="控货手机号" prop="field106">
13000000000
{{info.phone}}
</el-form-item>
<el-form-item label="手机验证码" prop="field106">
<el-input v-model="formData.cnt" placeholder="" style="width: 100px; margin-right:10px"></el-input>
<el-button type="default">获取验证码</el-button>
<el-input v-model="formData.code" placeholder="" style="width: 100px; margin-right:10px"></el-input>
<send-sms-code :order-id="order.orderId" :scene="5" />
</el-form-item>
<div class="title">审批流程</div>
<work-flow bmpkey="free_apple" />
<work-flow xmlkey="release_goods" v-model="ccIdArr" />
<el-form-item label="">
<el-button type="primary" @click="$alert('// TODO')">提交申请</el-button>
<el-button type="primary" @click="submit">提交申请</el-button>
<el-button @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
<div v-else>
<need-know keyname="control" />
<div style="margin-top:30px">
......@@ -61,16 +60,23 @@
<script>
import WorkFlow from '@/components/WorkFlow'
import NeedKnow from '@/components/NeedKnow'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
import {updateApply} from '@/api/ecw/orderCargoControl'
export default {
props:{
orderId: [String, Number]
orderId: [String, Number],
order: Object,
index: Number
},
components: {NeedKnow, WorkFlow},
components: {NeedKnow, WorkFlow, SendSmsCode},
data(){
return {
show: false,
detail: null,
formData:{},
ccIdArr:[],
formData:{
applyType: 7, // 放货修改
ccIds: ''
},
agreement: false, // 是否同意协议
}
},
......@@ -78,20 +84,41 @@ export default {
title(){
let t = '放货修改'
return t
},
info(){
return this.order.cargoControlPickBackVOList[this.index]
}
},
watch:{
ccIdArr(val){
this.$set(this.formData, 'ccIds', val.join(','))
}
},
created(){
this.show = true
this.loadData()
/* this.loadData() */
},
methods:{
loadData(){
/* loadData(){
},
}, */
closeDialog(){
this.show = false
this.$emit('close');
},
submit(){
let data = Object.assign({}, this.formData, {
cargoControlPickId: this.info.id,
orderId: this.order.orderId,
orderNo: this.order.orderNo
})
updateApply(data).then(res => {
this.$message.success('修改成功')
this.show = false
this.$emit('success')
})
}
}
}
......
<template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-form ref="form" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-form-item label="订单号">
{{order.orderNo}}
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="收货人">
{{info.consigneeName}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货人电话">
+{{info.consigneeCountryCode}} {{info.consigneePhone}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="总控货箱数">
{{order.sumNum}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="原放货箱数">
{{info.pickNum}}
</el-form-item>
</el-col>
</el-row>
<el-form-item label="反复核原因" prop="recurrentNuclearType">
<dict-selector :type="DICT_TYPE.ECW_PICK_RECURRENT_NUCLEAR_TYPE" v-model="formData.recurrentNuclearType" form-type="radio" />
</el-form-item>
<el-form-item label="控货手机号">
+{{info.countryCode}} {{info.phone}}
</el-form-item>
<el-form-item label="手机验证码" prop="code">
<el-input v-model="formData.code" placeholder="" style="width: 100px; margin-right:10px"></el-input>
<send-sms-code :order-id="order.orderId" :scene="5" />
</el-form-item>
<div class="title">审批流程</div>
<work-flow xmlkey="release_goods" v-model="ccIdArr" />
<el-form-item label="">
<el-button type="primary" @click="submit">提交申请</el-button>
<el-button @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
</el-dialog>
</template>
<script>
import WorkFlow from '@/components/WorkFlow'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
import {updateApply} from '@/api/ecw/orderCargoControl'
export default {
props:{
order: Object,
index: Number
},
components: {WorkFlow, SendSmsCode},
data(){
return {
show: false,
ccIdArr:[],
formData:{
applyType: 8, // 放货反复核申请
ccIds: ''
},
rules:{
recurrentNuclearType: [{required: true, message: '请选择反复核原因'}],
code: [{required: true, message: '请填写验证码'}]
}
}
},
computed:{
title(){
let t = '反复核'
return t
},
info(){
return this.order.cargoControlPickBackVOList[this.index]
}
},
watch:{
ccIdArr(val){
this.$set(this.formData, 'ccIds', val.join(','))
}
},
created(){
this.show = true
/* this.loadData() */
},
methods:{
/* loadData(){
}, */
closeDialog(){
this.show = false
this.$emit('close');
},
submit(){
this.$refs.form.validate().then(res => {
let data = Object.assign({}, this.formData, {
cargoControlPickId: this.info.id,
orderId: this.order.orderId,
orderNo: this.order.orderNo
})
updateApply(data).then(res => {
this.$message.success('修改成功')
this.show = false
this.$emit('success');
})
})
}
}
}
</script>
<style lang="scss" scoped>
.title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
content: '';
width:5px;
height: 15px;
background:#666;
margin-right:10px;
}
}
</style>
<!--拆单审核中的申请信息部分-->
<template>
<div v-if="detail">
<el-descriptions :column="4" v-if="order">
<el-descriptions-item label="订单号">{{order.orderNo}}</el-descriptions-item>
<el-descriptions-item label="运输方式">
<dict-tag class="mr-10" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" />
</el-descriptions-item>
<el-descriptions-item label="出货方式">
{{channel ? channel.nameZh : ''}}
</el-descriptions-item>
<el-descriptions-item label="订单状态">
<el-tag size="small">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="order.status" />
</el-tag>
</el-descriptions-item>
<el-descriptions-item label="唛头">{{order.marks}}</el-descriptions-item>
<el-descriptions-item label="始发仓">
{{order.logisticsInfoDto.startTitleZh}}
</el-descriptions-item>
<el-descriptions-item label="目的仓">
{{order.logisticsInfoDto.destAddressZh}}
</el-descriptions-item>
</el-descriptions>
<template v-for="item in detail.orderSplitBackVOList">
<div class="title mt-20" :key="item.orderNo">
<span class="mr-10">{{item.orderNo}}</span>
<dict-tag class="mr-10" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item.transportId" />
<span class="mr-10" v-if="item.channelName">{{item.channelName}}</span>
<span>发往{{item.dstWarehouseName}}</span>
</div>
<el-table :data="item.orderSplitItemBackVOList" :key="'items-' + item.orderNo">
<el-table-column label="序号">
<template slot-scope="scope">{{scope.$index+1}}</template>
</el-table-column>
<el-table-column label="中文品名">
<template slot-scope="{row}">{{row.prodTitleZh}}</template>
</el-table-column>
<el-table-column label="英文品名">
<template slot-scope="{row}">{{row.prodTitleEn}}</template>
</el-table-column>
<el-table-column label="品牌">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" />
</template>
</el-table-column>
<el-table-column label="体积">
<template slot-scope="{row}">{{row.volume}}</template>
</el-table-column>
<el-table-column label="重量">
<template slot-scope="{row}">{{row.weight}}kg</template>
</el-table-column>
<el-table-column label="箱数">
<template slot-scope="{row}">{{row.num}}</template></el-table-column>
</el-table>
</template>
</div>
</template>
<script>
import {getApproval, getOrder} from '@/api/ecw/order'
import {getChannel} from '@/api/ecw/channel'
export default {
name: 'MergeDetail',
props:{
id: [String, Number]
},
data(){
return {
detail: null,
order: null,
channel: null
}
},
watch:{
id(){
this.getData()
},
detail(){
this.getOrder()
},
order(){
if(this.order.channelId){
this.getChannel()
}
}
},
created(){
if(this.id){
this.getData()
}
},
methods:{
getData(){
getApproval(this.id).then(res => {
this.detail = JSON.parse(res.data.details)
})
},
getOrder(){
getOrder(this.detail.orderId).then(res => {
this.order = res.data
})
},
getChannel(){
getChannel(this.order.channelId).then(res => {
this.channel = res.data
})
}
}
}
</script>
<style scoped lang="scss">
.title{
padding: 10px 0;
span{
font-size: 14px;
font-weight: bold;
}
}
</style>
\ No newline at end of file
......@@ -88,7 +88,7 @@
<el-table-column label="商品编码" align="center" prop="productCode" >
<template slot-scope="{row}">
<el-link type="primary" @click.native="handleUpdate(scope.row)">
<el-link type="primary" @click.native="handleUpdate(row)">
{{ row.productDO ? row.productDO.productCode : '无productDO字段' }}
</el-link>
</template>
......@@ -110,7 +110,7 @@
<el-table-column label="商品名称" align="center" prop="productName">
<template slot-scope="{row}">
<el-link type="primary" @click.native="handleUpdate(scope.row)">
<el-link type="primary" @click.native="handleUpdate(row)">
{{ row.productDO ? row.productDO.titleZh + '/' + row.productDO.titleEn : '无productDO字段' }}
</el-link>
</template>
......
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