Commit 7073c288 authored by dragondean@qq.com's avatar dragondean@qq.com

完善放货,调货

parent 19322c62
......@@ -31,6 +31,12 @@ export default {
margin-right:10px;
}
}
.flex{
display: flex;
}
.flex-1{
flex: 1;
}
.ml-10{
margin-left: 10px;
}
......
......@@ -25,4 +25,21 @@ export function create(data){
method: 'post',
data
})
}
// 创建订单控货人放货记录
export function createPick(data){
return request({
url: '/ecw/order-cargo-control-pick/create',
method: 'post',
data
})
}
//获得控货订单放货编辑详情
export function getRleaseInfo(orderId){
return request({
url:'/ecw/order-cargo-control/release/info/' + orderId,
method:'get'
})
}
\ No newline at end of file
......@@ -34,6 +34,14 @@ export function getNeedKnow(id) {
})
}
// 根据key获得须知
export function getNeedKnowByKey(key) {
return request({
url: '/system/need-know/getByKey?id=' + key,
method: 'get'
})
}
// 获得须知分页
export function getNeedKnowPage(query) {
return request({
......
<template>
<selector v-model="valueSync" :options="countryList" value-field="tel" key-field="id" :label-field="item => item.nameZh + item.tel" filterable clearable></selector>
</template>
<script>
import {getCountryListAll} from '@/api/ecw/country'
import selector from '@/components/Selector'
export default {
components: {selector},
props: {
value: String,
},
data(){
return {
valueSync: '',
countryList:[]
}
},
watch:{
valueSync(){
this.$emit('input', this.valueSync)
},
value(){
this.valueSync = this.value
}
},
created(){
if(this.value){
this.valueSync = value
}
getCountryListAll().then(res => {
this.countryList = res.data
})
},
methods:{
}
}
</script>
\ No newline at end of file
......@@ -22,7 +22,7 @@
</div>
</template>
<script>
import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts'
import {getCustomerContactsSelect, getCustomerContactsListByCustomer} from '@/api/ecw/customerContacts'
import QuickCreate from '@/views/ecw/customer/components/quickCreate'
export default {
......@@ -82,11 +82,13 @@ export default {
},
onQuickCreateSuccess(id){
this.showQuickCreate = false
getCustomerContactsSelect({ids: id}).then(res => {
getCustomerContactsListByCustomer({customerId: id}).then(res => {
if(!res.data || !res.data.length){
return this.$message.error('联系人信息获取失败')
}
this.list.unshift(res.data[0])
let data = res.data[0]
data.contactsName = data.name // 字段名跟getCustomerContactsSelect对齐
this.list.unshift(data)
this.index = 0
})
}
......
<template>
<el-select v-model="valueSync" :multiple="multiple" :disabled="disabled">
<el-option v-for="item in optionsFormated" :key="item.value" :label="item.label" :value="item.value" />
<el-select v-model="valueSync" :multiple="multiple" :disabled="disabled" :filterable="filterable">
<el-option v-for="item in optionsFormated" :key="item.key" :label="item.label" :value="item.value" />
</el-select>
</template>
<script>
......@@ -21,6 +21,11 @@ export default {
type: String,
default: 'value'
},
keyField:{
type: String,
default: 'value'
},
filterable: Boolean,
multiple: Boolean,
clearable: Boolean,
defaultable: Boolean, // 没有值的时候是否选择第一项
......@@ -32,7 +37,8 @@ export default {
this.options.forEach((item, index) => {
arr.push({
label: typeof this.labelField == 'string' ? item[this.labelField] : (this.labelField)(item, index),
value: item[this.valueField]
value: item[this.valueField],
key: item[this.keyField]
})
})
return arr
......
......@@ -4,7 +4,7 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="日期筛选">
<dict-selector :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" v-model="dateFilterType" style="width: 150px; margin-right: 5px" />
<dict-selector defaultable :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" v-model="dateFilterType" class="w-100 mr-10" />
<el-date-picker v-model="dateFilter" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item label="始发地" prop="startWarehouseId">
......@@ -82,7 +82,7 @@
<template slot-scope="{row}">{{row.totalNum}}</template>
</el-table-column>
<el-table-column label="已放箱数" align="center" prop="sumWeight">
<template slot-scope="{row}">// TODO</template>
<template slot-scope="{row}">{{row.releaseNum}}</template>
</el-table-column>
<el-table-column label="订单状态" align="center" prop="status">
<template slot-scope="scope">
......@@ -95,11 +95,11 @@
</template>
</el-table-column>
<el-table-column label="放货人" align="center" prop="sumWeight">
<template slot-scope="{row}">// TODO</template>
<template slot-scope="{row}">{{row.cargoControlName}}</template>
</el-table-column>
<el-table-column label="控货状态" align="center" prop="transportId">
<template slot-scope="{row}">
// TODO
<dict-tag :type="DICT_TYPE.CONTROL_GOODS_STATUS" :value="row.cargoControlStatus" />
</template>
</el-table-column>
......@@ -110,8 +110,8 @@
<el-button type="text" size="mini" @click="showEditOrderId=scope.row.orderId" >修改</el-button>
<el-button type="text" size="mini" >取消</el-button>
<el-button type="text" size="mini" @click="review(scope.row)" >放货复核</el-button>
<el-button type="text" size="mini" @click="$router.push('detail?id=' + scope.row.orderId)" >查看</el-button>
<el-button type="text" size="mini" >调货</el-button>
<el-button type="text" size="mini" @click="$router.push('cargo_control/detail?id=' + scope.row.orderId)" >查看</el-button>
<el-button type="text" size="mini" @click="showTransferCargoOrderId=scope.row.orderId" >调货</el-button>
<el-button type="text" size="mini" >反复核</el-button>
<el-button type="text" size="mini" @click="showTransferOrder = scope.row" >控货权转移</el-button>
</template>
......@@ -124,6 +124,7 @@
<transfer v-if="showTransferOrder" v-bind="showTransferOrder" @close="showTransferOrder=null" />
<release v-if="showReleaseOrderId" :order-id="showReleaseOrderId" @close="showReleaseOrderId=null" />
<release v-if="showEditOrderId" :order-id="showEditOrderId" @close="showEditOrderId=null" />
<transfer-cargo v-if="showTransferCargoOrderId" :order-id="showTransferCargoOrderId" @close="showTransferCargoOrderId=null" />
</div>
</template>
......@@ -137,12 +138,13 @@ import Transfer from '@/views/ecw/order/components/Transfer'
import Release from './components/Release'
import CargoControlEdit from './components/CargoControlEdit'
import { getCargoControlOrderPage } from "@/api/ecw/orderCargoControl"
import TransferCargo from '@/views/ecw/order/components/TransferCargo'
export default {
name: "OrderCargonControl",
components: {
CustomerSelector, ProductSelector, Selector, Transfer, Release,CargoControlEdit
CustomerSelector, ProductSelector, Selector, Transfer, Release,CargoControlEdit, TransferCargo
},
data() {
return {
......@@ -178,6 +180,7 @@ export default {
showTransferOrder: null, // 控制权转移操作订单
showReleaseOrderId: null, // 放货ID
showEditOrderId: null, // 修改ID
showTransferCargoOrderId: null, // 调货ID
};
},
computed: {
......
<template>
<div class="app-container">
<div class="app-container" v-if="detail">
<div class="page-title">控货订单</div>
<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">
111
{{detail.orderNo}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总控货数" prop="field104">
111
{{detail.sumNum}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="体积" prop="field103">
111
{{detail.sumVolume}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="重量" prop="field102">
111 kg
{{detail.sumWeight}} kg
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="可放货箱数" prop="field105">
111
{{detail.sumNum - detail.pickNum}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="已放货箱数" prop="field106">
111
{{detail.pickNum}}
</el-form-item>
</el-col>
</el-row>
......@@ -113,14 +113,20 @@
</template>
<script>
import edit from './components/CargoControlEdit.vue'
import {createPick, getRleaseInfo} from '@/api/ecw/orderCargoControl'
export default {
components: {edit},
data(){
return {
showEdit: false,
formData:{}
detail: null,
formData:{},
rules: {}
}
},
created(){
getRleaseInfo(this.$route.query.id).then(res => this.detail = res.data)
},
methods:{
review(){
this.$confirm('已核实放货信息,确认放货?')
......
<template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-form v-if="agreement" ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="1000px">
<el-form v-if="agreement" ref="form" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-row>
<el-col :span="6">
<el-form-item label="订单号" prop="field101">
{{detail.orderNO}}
<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">
// TODO
<el-form-item label="总控货箱数">
{{detail.sumNum}}
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="剩余放货箱数" prop="field106">
// TODO
<el-form-item label="剩余放货箱数">
{{detail.sumNum - detail.releaseNum }}
</el-form-item>
</el-col>
</el-row>
<div class="title">请填写放货信息</div>
<el-row>
<el-col :span="8">
<el-form-item label="收货人" prop="field108">
<el-input v-model="formData.field108" placeholder="请输入收货人" clearable ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收货人电话" prop="field109">
<el-input v-model="formData.field109" placeholder="请输入收货人电话" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收货人邮箱" prop="field110">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-table :data="[1]" border>
<el-table-column label="控货箱数">
</el-table-column>
<el-table-column label="放货箱数">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="体积(m³)">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="重量(kg)">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="备注">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
</el-table>
<el-form-item label="控货手机号" prop="field117" style="margin-top:20px">
<el-input v-model="formData.field117" placeholder="请输入控货手机号" clearable >
</el-input>
<div class="flex">
<el-form-item label="收货人" prop="consigneeName">
<el-input v-model="formData.consigneeName" placeholder="请输入收货人" clearable class="w-150" ></el-input>
</el-form-item>
<el-form-item label="手机验证码" prop="field118">
<el-input v-model="formData.field118" placeholder="请输入手机验证码" clearable style="width:200px; margin-right:10px" ></el-input>
<el-button type="success">获取验证码</el-button>
<el-form-item label="收货人电话" prop="consigneePhone">
<!-- <el-input v-model="formData.field109" placeholder="区号" clearable class="w-150"></el-input> -->
<area-code-selector v-model="formData.consigneeCountryCode" class="w-150" />
<el-input v-model="formData.consigneePhone" placeholder="请输入收货人电话" clearable class="w-150 ml-10"></el-input>
</el-form-item>
<el-form-item label="" prop="field117" style="margin-top:20px">
<el-button type="success">确认放货</el-button>
<el-button type="default" @click="closeDialog">关闭</el-button>
<el-form-item label="收货人邮箱" prop="consigneeEmail">
<el-input v-model="formData.consigneeEmail" placeholder="请输入收货人邮箱" clearable class="w-150" ></el-input>
</el-form-item>
</div>
<el-table :data="[formData]" border>
<el-table-column label="控货箱数">
{{detail.sumNum}}
</el-table-column>
<el-table-column label="放货箱数">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="体积(m³)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickVolume" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="重量(kg)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickWeight" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="备注">
<template slot-scope="{row}">
<el-input v-model="row.remarks" placeholder="" clearable></el-input>
</template>
</el-table-column>
</el-table>
<el-form-item label="控货手机号" prop="field117" style="margin-top:20px">
<el-input :value="detail.phone" readonly placeholder="请输入控货手机号" >
</el-input>
</el-form-item>
<el-form-item label="手机验证码" prop="code">
<el-input v-model="formData.code" placeholder="请输入手机验证码" clearable class="w-150 mr-10"></el-input>
<!-- <el-button type="success">获取验证码</el-button> -->
<send-sms-code :order-id="detail.orderId" scene="5" />
</el-form-item>
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">确认放货</el-button>
<el-button type="default" @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
<div v-else>
......@@ -94,16 +99,29 @@
<script>
import ReleaseAgreement from "./ReleaseAgreement"
import {getOrder} from '@/api/ecw/order'
import {createPick, getRleaseInfo} from '@/api/ecw/orderCargoControl'
import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
export default {
props:{
orderId: [String, Number]
},
components: {ReleaseAgreement},
components: {ReleaseAgreement, AreaCodeSelector, SendSmsCode},
data(){
return {
show: false,
detail: null,
formData:{},
formData:{
"pickNum": 0,
"pickQuantity": 0,
"pickVolume": 0,
"pickWeight": 0,
"remarks": "",
},
rules:{
consigneeName: {required: true, message: '请填写收货人'},
code: {required: true, message: '请填写验证码'}
},
agreement: false, // 是否同意协议
}
},
......@@ -122,13 +140,26 @@ export default {
},
methods:{
loadData(){
getOrder(this.orderId).then(res => this.detail = res.data)
getRleaseInfo(this.orderId).then(res => this.detail = res.data)
},
closeDialog(){
this.show = false
this.$emit('close');
},
submit(){
this.$refs.form.validate(valid => {
if(!valid){
return false
}
console.log('submit')
createPick(this.formData).then(res => {
this.$message.success(res.msg || '操作成功')
this.closeDialog()
})
})
}
}
}
</script>
......
......@@ -18,4 +18,19 @@
</pre>
</div>
</template>
\ No newline at end of file
</template>
<script>
import {getNeedKnowByKey} from '@/api/system/needKnow'
export default {
data(){
return {
detail: ''
}
},
created(){
getNeedKnowByKey('control').then(res => {
this.detail = res.data
})
}
}
</script>
\ No newline at end of file
<template>
<span @click="send">{{text}}</span>
<el-button @click="send" :disabled="leftTime > 0 && leftTime < 60">{{text}}</el-button>
</template>
<script>
import {sendSmsCode} from '@/api/ecw/orderCargoControl'
......
<template>
<el-dialog title="调货" visible :before-close="closeDialog" :close-on-click-modal="false" width="800px">
<!--调货-->
<el-form ref="form" :model="formData" :rules="rules" size="small" label-width="150px" >
<el-row>
<el-col :span="12">
<el-form-item label="收货人">
{{detail.orderNo}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货人电话">
{{detail.sumNum}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="选择控货订单">
<el-select v-model="formData.order" placeholder="请选择控货中的订单" multiple>
<el-option :label="1" :value="1"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-table :data="[formData,formData]" border>
<el-table-column label="订单号">
{{detail.sumNum}}
</el-table-column>
<el-table-column label="目的地">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="总控货数">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="放货箱数">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="体积(m³)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickVolume" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="重量(kg)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickWeight" placeholder="" clearable></el-input>
</template>
</el-table-column>
</el-table>
<el-form-item label="备注" prop="remarks" class="mt-10">
<el-input v-model="formData.remarks" clearable></el-input>
</el-form-item>
<el-form-item label="控货手机号" prop="field117" style="margin-top:20px">
{{detail.consigneeCountryCode}} {{detail.phone}}
</el-form-item>
<el-form-item label="手机验证码" prop="code">
<el-input v-model="formData.code" placeholder="请输入手机验证码" clearable class="w-150 mr-10"></el-input>
<send-sms-code :order-id="detail.orderId" scene="5" />
</el-form-item>
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">提交申请</el-button>
<el-button type="default" @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
</el-dialog>
</template>
<script>
import ReleaseAgreement from "./ReleaseAgreement"
import {createPick, getRleaseInfo} from '@/api/ecw/orderCargoControl'
import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
export default {
props:{
orderId: [String, Number]
},
components: {ReleaseAgreement, AreaCodeSelector, SendSmsCode},
data(){
return {
show: false,
detail: null,
formData:{
"pickNum": 0,
"pickQuantity": 0,
"pickVolume": 0,
"pickWeight": 0,
"remarks": "",
},
rules:{
consigneeName: {required: true, message: '请填写收货人'},
code: {required: true, message: '请填写验证码'}
},
}
},
created(){
this.show = true
this.loadData()
},
methods:{
loadData(){
getRleaseInfo(this.orderId).then(res => this.detail = res.data)
},
closeDialog(){
this.show = false
this.$emit('close');
},
submit(){
this.$refs.form.validate(valid => {
if(!valid){
return false
}
console.log('submit')
})
}
}
}
</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>
\ No newline at end of file
......@@ -63,7 +63,7 @@
<el-row :gutter="10" class="mb8">
<!--全部路线吗没有新增入口,指定商品的路线价格才有添加路线-->
<el-col :span="1.5" v-if="$route.query.product_id">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:product-price:create']">添加路线</el-button>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:product-price:create']">新建价格</el-button>
</el-col>
<el-col :span="1.5">
<el-button v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="handleBatchEdit" :disabled="multiple">设置已选路线价格</el-button>
......
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