This commit is contained in:
aihe 2024-05-23 13:38:13 +08:00
parent 6bcd4b1913
commit 02c9609ed0
3 changed files with 246 additions and 226 deletions

View File

@ -12,7 +12,7 @@
<u-row justify="between">
<text class="font-28">包裹重量</text>
<view>
<tpx-input v-model:value="modelInfo.billWeight" :isWhite="true" placeholder="" suffix="kg" type="number"></tpx-input>
<tpx-input v-model:value="modelInfo.billWeight" :isWhite="true" placeholder="" inputAlign="right" suffix="kg" type="number"></tpx-input>
</view>
</u-row>
</view>
@ -23,13 +23,13 @@
<view style="width: 70%;">
<u-row justify="between">
<u-col span="3.7">
<tpx-input v-model:value="modelInfo.chang" :isWhite="true" placeholder="长" suffix="cm" type="number"></tpx-input>
<tpx-input v-model:value="modelInfo.chang" :isWhite="true" placeholder="长" inputAlign="right" suffix="cm" type="number"></tpx-input>
</u-col>
<u-col span="3.7">
<tpx-input v-model:value="modelInfo.kuan" :isWhite="true" placeholder="宽" suffix="cm" type="number"></tpx-input>
<tpx-input v-model:value="modelInfo.kuan" :isWhite="true" placeholder="宽" inputAlign="right" suffix="cm" type="number"></tpx-input>
</u-col>
<u-col span="3.7">
<tpx-input v-model:value="modelInfo.gao" :isWhite="true" placeholder="高" suffix="cm" type="number"></tpx-input>
<tpx-input v-model:value="modelInfo.gao" :isWhite="true" placeholder="高" inputAlign="right" suffix="cm" type="number"></tpx-input>
</u-col>
</u-row>

View File

@ -1,6 +1,6 @@
<template>
<u-input shape="circle" :placeholder="placeholder" :modelValue="value" :clearable="clearable"
:custom-style="inputStyle" :readonly="readonly" :type="type"
:custom-style="inputStyle" :readonly="readonly" :type="type" :inputAlign="inputAlign"
:placeholder-style="`color: #999;${placeholderStyle};` " @change="handleChange"
>
<template v-if="suffix" #suffix>
@ -65,6 +65,11 @@
return ''
}
},
inputAlign:{
default () {
return ''
}
},
},
data() {
return {

View File

@ -1,231 +1,180 @@
<template>
<tpx-layout>
<template v-slot:body>
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
<tpx-page>
<tpx-layout>
<template v-slot:body>
<view class="com-jianju pos-rlt pb-30" style="padding-top: 2rpx;">
<view class="blcok-white" style="padding-top: 0;padding-bottom: 0;">
<view class="blcok-white" style="padding-top: 0;padding-bottom: 0;">
<view>
<view @click="handleDialogClick(countryModal)" class="pt-30 pb-30" style="border-bottom: 2rpx solid #F6F6F6;" >
<u-row>
<view>
<u-text text="始发网点" size="28" :bold="true"></u-text>
<view>
<view class="yunf-input-item">
<tpx-select v-model:value="submitParam.sendSiteCode" v-model:text="submitParam.sendSiteName" v-model:resObject="sendPostRes" :getListFun="getSendPositionList" :transKeyVal="{valKey: 'destCode',titleKey: 'destName'}" :isWhite="true"
:searchParam="sendPostParam" placeholder="请选择始发网点"
>
<tpx-text-item label="始发网点" :value="submitParam.sendSiteName"></tpx-text-item>
</tpx-select>
</view>
<view class="yunf-input-item">
<tpx-select v-model:value="submitParam.sendSiteCode" v-model:text="submitParam.sendSiteName" v-model:resObject="sendPostRes" :getListFun="getSendPositionList" :transKeyVal="{valKey: 'destCode',titleKey: 'destName'}" :isWhite="true"
:searchParam="sendPostParam" placeholder="请选择始目的国"
>
<tpx-text-item label="目的国" :value="submitParam.sendSiteName"></tpx-text-item>
</tpx-select>
</view>
<view class="yunf-input-item">
<tpx-select v-model:value="submitParam.sendSiteCode" v-model:text="submitParam.sendSiteName" v-model:resObject="sendPostRes" :getListFun="getSendPositionList" :transKeyVal="{valKey: 'destCode',titleKey: 'destName'}" :isWhite="true"
:searchParam="sendPostParam" placeholder="请选择省/州"
>
<tpx-text-item label="省/州" :value="submitParam.sendSiteName"></tpx-text-item>
</tpx-select>
</view>
<template v-if="submitParam.senderCountry">
<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>
<u-row custom-style="flex: 1;" justify="end" align="center">
<u-text align="right" margin="0 12rpx 0 0" size="26" text="柬埔寨"></u-text>
<u-icon size="26" name="arrow-right" color="#333"></u-icon>
</u-row>
</u-row>
</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 class="yunf-input-item">
<tpx-select v-model:value="submitParam.customsEclaration" :list="dicData.emis_declare_mode"
mode="drop"
>
<tpx-text-item label="报关方式" :value="submitParam.customsEclaration" :list="dicData.emis_declare_mode"></tpx-text-item>
</tpx-select>
</view>
<view class="yunf-input-item">
<tpx-select v-model:value="submitParam.customsClear" :list="dicData.emis_customs_clear"
mode="drop"
>
<tpx-text-item label="清关方式" :value="submitParam.customsClear" :list="dicData.emis_customs_clear"></tpx-text-item>
</tpx-select>
</view>
<view class="yunf-input-item" >
<tpx-text-item label="重量">
<template v-slot:right>
<tpx-input v-model:value="submitParam.billWeight" placeholder="" inputAlign="right" suffix="kg" type="number"></tpx-input>
</template>
</tpx-text-item>
</view>
<view class="yunf-input-item" >
<tpx-text-item label="体积">
<template v-slot:right>
<tpx-input v-model:value="submitParam.totalVolume" placeholder="" inputAlign="right" suffix="m³" type="number"></tpx-input>
</template>
</tpx-text-item>
</view>
</view>
<view @click="handleDialogClick(countryModal)" 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="柬埔寨"></u-text>
<u-icon size="26" name="arrow-right" color="#333"></u-icon>
</u-row>
</u-row>
</view>
<view @click="handleDialogClick(countryModal)" 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="柬埔寨"></u-text>
<u-icon size="26" name="arrow-right" color="#333"></u-icon>
</u-row>
</u-row>
</view>
<view @click="handleDialogClick(countryModal)" 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="柬埔寨"></u-text>
<u-icon size="26" name="arrow-right" color="#333"></u-icon>
</u-row>
</u-row>
</view>
<view @click="handleDialogClick(wayModal)" 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;;">
<tpx-select v-model:value="submitParam.type1" :list="baoguanList"
mode="drop"
>
<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>
</tpx-select>
</view>
<view class="pt-30 pb-30" style="border-bottom: 2rpx solid #F6F6F6;;">
<tpx-select v-model:value="submitParam.type2" :list="qingguanList"
mode="drop"
>
<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>
</tpx-select>
</view>
<view @click="handleDialogClick(goodChooseModal)" class="pt-30 pb-30" style="border-bottom: 2rpx solid #F6F6F6;;"
v-if="submitParam.type != sendTypeEnum.container"
>
<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>
</view>
<view class="com-section mt-30">产品类型</view>
<view class="blcok-white yunf-list" style="padding-bottom: 2rpx;">
<template v-if="true">
<view class="com-section mt-30">产品类型TODO</view>
<view class="blcok-white yunf-list" style="padding-bottom: 2rpx;">
<tpx-checkitems :list="proList" 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>
</view>
</template>
<tpx-checkitems :list="proList" 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>
<u-row justify="center">
<view class="mt-40">
<u-button @click="handleCalPost" size="large" shape="circle"
custom-style="width: 400rpx;height:80rpx;font-size: 30rpx;" type="primary">运费试算</u-button>
</view>
</tpx-checkitems>
</view>
<u-row justify="center">
<view class="mt-40">
<u-button @click="handleCalPost" size="large" shape="circle"
custom-style="width: 400rpx;height:80rpx;font-size: 30rpx;" type="primary">运费试算</u-button>
</view>
</u-row>
</view>
</template>
<template v-if="hasCalcuPost" v-slot:footer>
<view class="pos-rlt blcok-white" style="border-radius: 0;margin-top: 0;">
<u-row justify="between">
<view>
<view >
<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 @click="handleGoXiaDan" 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-country-sheet v-model:show="countryModal.show" v-model:value="submitParam.countryId"></buns-country-sheet>
<buns-way-sheet v-model:show="wayModal.show" v-model:value="submitParam.wayId"></buns-way-sheet>
</view>
</template>
<template v-if="hasCalcuPost" v-slot:footer>
<view class="pos-rlt blcok-white" style="border-radius: 0;margin-top: 0;">
<u-row justify="between">
<view>
<view >
<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 @click="handleGoXiaDan" 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>
</tpx-page>
<buns-edit-sheet title="填写预估重量体积" v-model:show="goodChooseModal.show" v-model:value="submitParam" v-slot="tempObject">
<bpe-goodsize-tmp :value="tempObject.value"></bpe-goodsize-tmp>
</buns-edit-sheet>
</template>
<script>
import getCdnUrl from "@/common/getCdnUrl"
import { sendTypeEnum, sendTypeList, qingguanList, baoguanList, } from "@/common/enum"
import { goto } from "@/common/untool"
import BpeGoodsizeTmp from "@/components/buns-post-edit-templates/bpe-goodsize-tmp"
import * as apiService from "@/common/api"
import { getOrderModels } from "./model"
export default {
components: { BpeGoodsizeTmp },
components: { },
props: {
// hasLeftWin: {
// type: Boolean
// }
},
computed: {
sendPostParam(){
return {}
},
waySearchParam() {
return { country: this.submitParam.reciever.country, fromCountry: this.submitParam.sender.country }
},
productSearchParam() {
return { transLineCode: this.submitParam.transLine }
},
destPostParam(){
const { country } = this.submitParam.reciever
return { lineCode: this.submitParam.transLine, countryCode: country }
},
dicData() {
return this.$store.getters.dicData
},
},
data() {
return {
...(JSON.parse(JSON.stringify({ sendTypeEnum, sendTypeList, qingguanList, baoguanList }))),
proList: [
{val: 1 },{ val: 2 }
],
tipsList: [
{ title: '请带纸箱', val: '请带纸箱' },
{ title: '需要爬楼', val: '需要爬楼' },
{ title: '来前电话', val: '来前电话' },
],
hasCalcuPost: false,
countryModal: {
show: false
},
wayModal: {
show: false,
},
goodChooseModal:{
show: false
},
submitParam: {
stockRoomId: '',
countryId: '',
wayId: '',
type: sendTypeList[0].val,
paytype: '',
otherDes: '',
prodId: 1,
tips: [],
revtime: ''
}
}
return this.getDefaultData()
},
onShareAppMessage() {
return {
@ -233,33 +182,95 @@
// path: 'TODO'
}
},
onLoad() {
onLoad(option) {
this.queryOption = option
this.initData();
this.initEvent()
},
onUnload() {
unmounted() {
},
methods: {
getCdnUrl,
initData() {
// uni.showLoading({
// title: '加载中'
// });
getDefaultData() { // data的默认数据
return {
pageLoading: true,
queryOption: {
},
sendPostRes: { list: [] },
wayRes: { list: [] },
productRes: { list: [] },
destPostRes: { list: [] },
submitParam: {
transLine: "", // 线路编码
calcFeeType: "", // 计费类型 1-重量计费 2-体积计费
billWeight: "", // 实际重量
totalVolume: "", // 总体积
dispatchUnderlingSiteCode: "", // 目的地站点
customsClear: "", // 清关方式
customsEclaration:"", // 清关方式
sendSiteCode: this.$store.getters.userInfo.ownerSiteCode, // 发件站点
}
}
},
handleAddressChoose(type) { // 1 寄件地址 2收件地址
goto(`address/list?tab=${type}&type=choose`)
getSendPositionList: apiService.getDestPositionList,
getTransLineList: apiService.getTransLineList,
getTransProductList: apiService.getTransProductList,
getRSDStaffList: apiService.getRSDStaffList,
getDestPositionList: apiService.getDestPositionList,
async initData() { // 初始化
this.pageLoading = false
},
initEvent() {
},
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 })
},
handleDestPostChange(val) {
const item = this.destPostRes.list.filter(t=> t.val == val)[0]
this.submitParam.dispatchUnderlingSiteCode = item.siteCode;
this.submitParam.dispatchUnderlingSiteName = item.siteName;
},
handleDialogClick(curModal){
curModal.show = true
},
handleCalPost() {
this.hasCalcuPost = true
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;
},
handleGoXiaDan(){
goto(`post/openorder?id=${222}`)
async handleGoodInfoSure() {
// 校验各个组件的参数
let res = await this.$refs.goodSize.validData()
},
async handleCalPost(type) {
let params = JSON.parse(JSON.stringify(this.submitParam));
params.goodsPics = params.goodsPics.join(",")
await saveServerHand(params)
this.showToast('操作成功')
// TOTO
debugger
}
}
}
</script>
@ -283,4 +294,8 @@
border-color: $uni-color-primary;
}
}
.yunf-input-item{
padding: 26rpx 0;
border-bottom: 2rpx solid #F6F6F6;
}
</style>