373 lines
14 KiB
Vue
373 lines
14 KiB
Vue
<template>
|
|
<tpx-page>
|
|
<tpx-layout v-if="!pageLoading">
|
|
<template v-slot:body>
|
|
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
|
|
<view class="blcok" style="background-color: #0E0708;">
|
|
<u-row>
|
|
<image class="mr-20" style="height: 28rpx;width: 34rpx;"
|
|
:src="getCdnUrl(`post/gangbo.png`)"></image>
|
|
<u-text size="24" color="#fff" text="下单后会有业务员及时联系您,请保持电话畅通!"></u-text>
|
|
</u-row>
|
|
</view>
|
|
|
|
<view class="blcok-white">
|
|
<!-- 地址选择 -->
|
|
<bpe-addressinfo-tmp v-model:value="submitParam" @onChange="handleAddressChange"></bpe-addressinfo-tmp>
|
|
</view>
|
|
|
|
<view class="com-section mt-30">路线信息</view>
|
|
<view class="blcok-white">
|
|
<view class="yunf-input-item">
|
|
<tpx-select v-model:value="submitParam.pickupMethod" :list="dicData.emis_qujian_fangshi"
|
|
mode="drop"
|
|
>
|
|
<tpx-text-item label="取件方式" :value="submitParam.pickupMethod" :list="dicData.emis_qujian_fangshi"></tpx-text-item>
|
|
</tpx-select>
|
|
</view>
|
|
|
|
<template v-if="submitParam.reciever.country && submitParam.sender.country">
|
|
<view class="yunf-input-item">
|
|
<tpx-select v-model:value="submitParam.transLine" v-model:text="submitParam.transLineTypeName" v-model:resObject="wayRes"
|
|
:getListFun="getTransLineList" :transKeyVal="{valKey: 'lineCode',titleKey: 'lineName'}"
|
|
:searchParam="waySearchParam" @onChange="handleWayChange" placeholder="请选择路线"
|
|
>
|
|
<tpx-text-item label="路线" :value="submitParam.transLineTypeName"></tpx-text-item>
|
|
</tpx-select>
|
|
</view>
|
|
</template>
|
|
|
|
<view v-if="submitParam.transLine" class="yunf-input-item">
|
|
<tpx-select v-model:value="submitParam.destinationCode" v-model:text="submitParam.destinationName" v-model:resObject="destPostRes" :getListFun="getDestPositionList" :transKeyVal="{valKey: 'destCode',titleKey: 'destName'}" :isWhite="true"
|
|
:searchParam="destPostParam" @onChange="handleDestPostChange" placeholder="请选择目的地"
|
|
>
|
|
<tpx-text-item label="目的地" :value="submitParam.destinationName"></tpx-text-item>
|
|
</tpx-select>
|
|
</view>
|
|
|
|
<view v-if="submitParam.destinationCode" class="yunf-input-item">
|
|
<tpx-text-item label="目的网点">
|
|
<template v-slot:right>{{submitParam.dispatchUnderlingSiteName}}</template>
|
|
</tpx-text-item>
|
|
</view>
|
|
|
|
<view>
|
|
<view class="pt-30 pb-30" style="border-bottom: 2rpx solid #F6F6F6;;"
|
|
|
|
>
|
|
<u-row>
|
|
<view>
|
|
<u-text text="选择仓库" size="28" :bold="true"></u-text>
|
|
</view>
|
|
<u-row custom-style="flex: 1;" justify="end" align="center">
|
|
<u-text align="right" margin="0 12rpx 0 0" size="26" color="#999"
|
|
text="请选择"></u-text>
|
|
<u-icon size="26" name="arrow-right" color="#333"></u-icon>
|
|
</u-row>
|
|
</u-row>
|
|
</view>
|
|
|
|
<view class="pt-30 pb-30" style="border-bottom: 2rpx solid #F6F6F6;;">
|
|
<u-row>
|
|
<view>
|
|
<u-text text="期望上门时间 " size="28" :bold="true"></u-text>
|
|
</view>
|
|
<u-row custom-style="flex: 1;" justify="end" align="center">
|
|
<u-text align="right" margin="0 12rpx 0 0" size="26" text="1小时内"></u-text>
|
|
<u-icon size="26" name="arrow-right" color="#333"></u-icon>
|
|
</u-row>
|
|
</u-row>
|
|
</view>
|
|
|
|
<view class="yunf-input-item">
|
|
<tpx-select v-model:value="submitParam.paymentType" :list="dicData.emis_payment_type"
|
|
mode="drop"
|
|
>
|
|
<tpx-text-item label="付款方式" :value="submitParam.paymentType" :list="dicData.emis_payment_type"></tpx-text-item>
|
|
</tpx-select>
|
|
</view>
|
|
<template v-if="isShowYueJie">
|
|
<view class="yunf-input-item">
|
|
<tpx-select v-model:value="submitParam.custNo" v-model:text="submitParam.customerName" v-model:resObject="yuejieRes" :getListFun="getMonthpayAccountList" :transKeyVal="{valKey: 'custNo',titleKey: 'custName'}"
|
|
@onChange="handleYueJieSelect" placeholder="请选择月结账户"
|
|
>
|
|
<tpx-text-item label="月结账户" :value="submitParam.customerName"></tpx-text-item>
|
|
</tpx-select>
|
|
</view>
|
|
<template v-if="submitParam.custNo">
|
|
<view class="yunf-input-item">
|
|
<tpx-text-item label="月结编号">
|
|
<template v-slot:right>{{submitParam.custNo}}</template>
|
|
</tpx-text-item>
|
|
</view>
|
|
</template>
|
|
</template>
|
|
|
|
</view>
|
|
</view>
|
|
|
|
<view class="com-section mt-30" @click="handleDialogClick(goodChooseModal)">
|
|
<u-row justify="space-between">
|
|
<text>货物信息</text>
|
|
<u-icon name="edit-pen" size="42"></u-icon>
|
|
</u-row>
|
|
</view>
|
|
<view class="blcok-white">
|
|
<bpe-goodstatic-tmp v-model:value="submitParam"></bpe-goodstatic-tmp>
|
|
</view>
|
|
|
|
<view class="com-section mt-30">产品类型</view>
|
|
<view class="blcok-white yunf-list" style="padding-bottom: 2rpx;">
|
|
<tpx-checkitems :list="[{}]" v-model:value="submitParam.prodId" v-slot="curPro" min-checked="1" type="single">
|
|
<view slot :class="`yunf-item ${curPro.checked?'active':''}`">
|
|
<u-row justify="between">
|
|
<u-col span="8">
|
|
<u-text :text="`柬埔寨-国际特快`" size="28" :bold="true"></u-text>
|
|
<u-text margin="6rpx" text="1-2工作日 ¥80元起" size="26" color="#999"></u-text>
|
|
</u-col>
|
|
<u-col span="4">
|
|
<u-text align="right" text="运费预估" size="26" color="#999"></u-text>
|
|
<u-text align="right" margin="6rpx" text="32" size="26" :bold="true" mode="price"
|
|
color="#B12D29"></u-text>
|
|
</u-col>
|
|
</u-row>
|
|
</view>
|
|
</tpx-checkitems>
|
|
<tpx-empty v-if="false" size="sm"></tpx-empty>
|
|
</view>
|
|
|
|
<view class="com-section mt-30">给快递员捎话</view>
|
|
<view class="blcok-white">
|
|
<tpx-tags :list="[{}]" v-model:value="submitParam.tips"></tpx-tags>
|
|
<u-textarea v-model="submitParam.otherDes" border="surround" height="160" placeholder="其他说明"
|
|
maxlength="50" count></u-textarea>
|
|
<u-line margin="20rpx 0 10rpx 0"></u-line>
|
|
<u-row justify="between">
|
|
<text class="clr-sub">您的专属快递员</text>
|
|
<u-row>
|
|
<text class="">李晓</text>
|
|
<view class="ml-10">
|
|
<u-avatar size="50" :src="''"></u-avatar>
|
|
</view>
|
|
</u-row>
|
|
</u-row>
|
|
</view>
|
|
|
|
</view>
|
|
</template>
|
|
<template v-slot:footer>
|
|
<view class="pos-rlt blcok-white" style="border-radius: 0;margin-top: 0;">
|
|
<u-row justify="between">
|
|
<view>
|
|
<u-row align="top">
|
|
<u-checkbox-group placement="column" @change="handleAgree()">
|
|
<u-checkbox size="26" labelSize="26" :checked="agreePrivateRule" label="我已同意接受"
|
|
label-color=":#999" activeColor="#B12D29"
|
|
custom-style="margin-bottom: 10rpx;"></u-checkbox>
|
|
</u-checkbox-group>
|
|
<view @click="handleDialogClick(privacyModal)" class="pl-10" style="padding-top: 6rpx;">
|
|
<u-text text="《快件运单契约条款》" size="26"></u-text>
|
|
</view>
|
|
</u-row>
|
|
<view @click="handleAgree()">
|
|
<u-row>
|
|
<view class="mr-10">
|
|
<u-text text="预估" :bold="true" size="28"></u-text>
|
|
</view>
|
|
<u-text :text="80" mode="price" color="#B12D29" :bold="true" size="28"></u-text>
|
|
</u-row>
|
|
<u-text margin="10rpx 0 0 0" text="温馨提示:具体费用以快递小哥核实为准" color="#999" size="26"></u-text>
|
|
</view>
|
|
</view>
|
|
<u-row>
|
|
<u-button size="large" shape="circle"
|
|
custom-style="width: 200rpx;height:80rpx;font-size: 30rpx;" type="primary">下单</u-button>
|
|
</u-row>
|
|
</u-row>
|
|
</view>
|
|
</template>
|
|
</tpx-layout>
|
|
<buns-privacy-dialog v-model:show="privacyModal.show"> </buns-privacy-dialog>
|
|
<buns-revtime-sheet v-model:show="revtimeModal.show" v-model:value="submitParam.revtime"></buns-revtime-sheet>
|
|
<buns-edit-sheet percentHeight="70" title="货物信息" v-model:show="goodChooseModal.show" v-model:value="submitParam" v-slot="tempObject" @onSure="handleGoodInfoSure">
|
|
<bpe-goodsize-tmp ref="goodSize" :value="tempObject.value"></bpe-goodsize-tmp>
|
|
<view class="mt-30">
|
|
<bpe-gooditem-edit-tmp :value="tempObject.value"></bpe-gooditem-edit-tmp>
|
|
</view>
|
|
<view class="mt-30">
|
|
<bpe-goodphoto-tmp :value="tempObject.value" filedName="goodsPics">
|
|
<template v-slot:title>
|
|
<text class="font-weight font-28">货物照片</text>
|
|
</template>
|
|
</bpe-goodphoto-tmp>
|
|
</view>
|
|
</buns-edit-sheet>
|
|
</tpx-page>
|
|
</template>
|
|
|
|
<script>
|
|
import BpeAddressinfoTmp from "@/components/buns-post-edit-templates/bpe-addressinfo-tmp"
|
|
import BpeGoodstaticTmp from "@/components/buns-post-edit-templates/bpe-goodstatic-tmp"
|
|
import BpeGooditemEditTmp from "@/components/buns-post-edit-templates/bpe-gooditem-edit-tmp"
|
|
import BpeGoodphotoTmp from "@/components/buns-post-edit-templates/bpe-goodphoto-tmp"
|
|
import BpeGoodsizeTmp from "@/components/buns-post-edit-templates/bpe-goodsize-tmp"
|
|
import { debounce } from "@/common/util"
|
|
import * as apiService from "@/common/api"
|
|
import { getOrderModels } from "./model"
|
|
|
|
export default {
|
|
components: { BpeAddressinfoTmp, BpeGoodstaticTmp, BpeGooditemEditTmp, BpeGoodphotoTmp, BpeGoodsizeTmp },
|
|
props: {
|
|
// hasLeftWin: {
|
|
// type: Boolean
|
|
// }
|
|
},
|
|
computed: {
|
|
waySearchParam() {
|
|
return { country: this.submitParam.reciever.country, fromCountry: this.submitParam.sender.country }
|
|
},
|
|
destPostParam(){
|
|
const { country } = this.submitParam.reciever
|
|
return { lineCode: this.submitParam.transLine, countryCode: country }
|
|
},
|
|
dicData() {
|
|
return this.$store.getters.dicData
|
|
},
|
|
isShowYueJie(){
|
|
let { submitParam } = this
|
|
return submitParam.paymentType == 2 || submitParam.paymentType == 4 || submitParam.paymentType == 5
|
|
},
|
|
},
|
|
data() {
|
|
return this.getDefaultData()
|
|
},
|
|
onShareAppMessage() {
|
|
return {
|
|
// title: '',
|
|
// path: 'TODO'
|
|
}
|
|
},
|
|
onLoad() {
|
|
this.initData();
|
|
},
|
|
onUnload() {
|
|
|
|
},
|
|
methods: {
|
|
getTransLineList: apiService.getTransLineList,
|
|
getDefaultData() { // data的默认数据
|
|
return {
|
|
pageLoading: true,
|
|
isEdit: false,
|
|
queryOption: {
|
|
type: '', // edit 修改
|
|
defaultSubParams: '', // 提交默认参数
|
|
billCode: '', // 运单id
|
|
orderSn: '', // 订单id
|
|
copyBillCode: '', // 复制的运单id
|
|
},
|
|
wayRes: { list: [] },
|
|
productRes: { list: [] },
|
|
yuejieRes: { list: [] },
|
|
destPostRes: { list: [] },
|
|
wareRes: { list: [] },
|
|
agreePrivateRule: false,
|
|
privacyModal: {
|
|
show: false,
|
|
},
|
|
revtimeModal: {
|
|
show: false,
|
|
},
|
|
goodChooseModal: {
|
|
show: false,
|
|
},
|
|
submitParam: {
|
|
...getOrderModels(),
|
|
sendSiteCode: this.$store.getters.userInfo.ownerSiteCode,
|
|
}
|
|
}
|
|
},
|
|
async initData() { // 初始化
|
|
this.queryOption.billCode = this.queryOption.billCode || this.queryOption.copyBillCode
|
|
this.isEdit = Boolean(this.queryOption.billCode || this.queryOption.orderSn)
|
|
if(this.queryOption.defaultSubParams) {
|
|
try{
|
|
this.queryOption.defaultSubParams = JSON.parse(decodeURIComponent(this.queryOption.defaultSubParams))
|
|
Object.assign(this.submitParam, this.queryOption.defaultSubParams)
|
|
}catch(e){
|
|
console.error("queryOption.defaultSubParams=====转换失败===", this.queryOption.defaultSubParams)
|
|
}
|
|
}
|
|
if(this.isEdit) {
|
|
let res = await apiService.getOrderDetail({...this.queryOption, _loading: true})
|
|
let data = res.data || {}
|
|
data.goodsPics = (data.goodsPics && data.goodsPics.split(",")) || []
|
|
this.submitParam = res.data
|
|
// 复制场景 清除billCode orderSn
|
|
if(this.queryOption.copyBillCode) {
|
|
delete this.submitParam.billCode
|
|
delete this.submitParam.orderSn
|
|
}
|
|
}
|
|
this.pageLoading = false
|
|
},
|
|
handleAddressChange() { // 地址切换
|
|
let { wayRes, submitParam } = this.getDefaultData()
|
|
if(this.submitParam.reciever.country && this.submitParam.sender.country) {
|
|
this.submitParam.transLine = submitParam.transLine
|
|
this.submitParam.transLineTypeName = submitParam.transLineTypeName
|
|
this.handleWayChange() // 调用线路切换,清空后续数据
|
|
}
|
|
},
|
|
handleWayChange(val) { // 线路切换
|
|
let { productRes, submitParam } = this.getDefaultData()
|
|
// 清空产品类型数据
|
|
this.submitParam.productType = submitParam.productType
|
|
this.submitParam.productTypeName = submitParam.productTypeName
|
|
const item = this.wayRes.list.filter(t=> t.val == val)[0]
|
|
this.updateDltDestSite({ lineCode: val })
|
|
},
|
|
async updateDltDestSite({ lineCode }) {
|
|
const { country, province, city, county, address } = this.submitParam.reciever
|
|
let res = await apiService.getCaculteDestSite({ lineCode, country, province, city, county, address })
|
|
// 更新路线推荐的默认目的地
|
|
let data = res.data || {}
|
|
this.submitParam.destinationCode = data.destCode
|
|
this.submitParam.destinationName = data.destName
|
|
this.submitParam.dispatchUnderlingSiteCode = data.siteCode;
|
|
this.submitParam.dispatchUnderlingSiteName = data.siteName;
|
|
},
|
|
handleAgree() {
|
|
this.agreePrivateRule = !this.agreePrivateRule
|
|
},
|
|
handleDialogClick(curModal){
|
|
curModal.show = true
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
@import '@/common/uni-nvue.scss';
|
|
|
|
page {
|
|
background-color: #F6F6F6;
|
|
height: 100% !important;
|
|
}
|
|
</style>
|
|
<style scoped lang="scss">
|
|
.yunf-item {
|
|
margin-bottom: 20rpx;
|
|
padding: 30rpx;
|
|
background: #F6F6F6;
|
|
border-radius: 20rpx;
|
|
border: 2rpx solid transparent;
|
|
&.active {
|
|
border-color: $uni-color-primary;
|
|
}
|
|
}
|
|
.yunf-input-item{
|
|
padding: 26rpx 0;
|
|
border-bottom: 2rpx solid #F6F6F6;
|
|
}
|
|
</style> |