init
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
.goodsSearch{
|
||||
background-color: white;
|
||||
padding: 38rpx 40rpx 0rpx 40rpx;
|
||||
.searchBox-title{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
.title{
|
||||
font-size: 32rpx;
|
||||
color: #0F0F0F;
|
||||
font-weight: bold;
|
||||
.label{
|
||||
display: inline-block;
|
||||
width: 62rpx;
|
||||
height: 30rpx;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
background-image: url('../../../static/required.png');
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
}
|
||||
.stopSend{
|
||||
font-size: 24rpx;
|
||||
color: #888888;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.gantanhao{
|
||||
display: inline-block;
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
background-image: url('../../../static/gantanhao.png');
|
||||
}
|
||||
}
|
||||
}
|
||||
.selected-goods{
|
||||
padding-top: 32rpx;
|
||||
overflow: hidden;
|
||||
.goods{
|
||||
position: relative;
|
||||
margin-bottom: 46rpx;
|
||||
border: 2rpx solid #E63E32;
|
||||
border-radius: 32rpx;
|
||||
font-size: 24rpx;
|
||||
color:#E63E32 ;
|
||||
text-align: center;
|
||||
line-height: 34rpx;
|
||||
padding:15rpx 22rpx 15rpx 18rpx ;
|
||||
height: 34rpx;
|
||||
display: inline-block;
|
||||
image{
|
||||
position: absolute;
|
||||
right: 0rpx;
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
bottom: 10rpx;
|
||||
top: -20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
.seachBox{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
::v-deep .uni-searchbar{
|
||||
padding-left: 0rpx!important;
|
||||
.uni-searchbar__box{
|
||||
border-radius: 34rpx!important;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
}
|
||||
uni-search-bar{
|
||||
flex: auto;
|
||||
}
|
||||
.search-icon{
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
background-image: url('../../../static/search.png');
|
||||
}
|
||||
.search-btn{
|
||||
font-weight: bold;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
}
|
||||
.recent-send,.recent-send-goods,.hot-send-goods{
|
||||
padding: 20rpx 40rpx 0rpx 0rpx;
|
||||
.recent-send-title{
|
||||
font-size: 26rpx;
|
||||
color: #0F0F0F;
|
||||
}
|
||||
.recent-send-list{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding-bottom: 44rpx;
|
||||
.recent-send-item{
|
||||
margin-right: 20rpx;
|
||||
margin-top: 35rpx;
|
||||
font-size: 24rpx;
|
||||
color: #0F0F0F;
|
||||
padding:15rpx 22rpx 15rpx 18rpx ;
|
||||
height: 34rpx;
|
||||
background: #F4F4F4;
|
||||
border-radius: 32rpx;
|
||||
text-align: center;
|
||||
line-height: 34rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.recent-send-goods{
|
||||
.title{
|
||||
font-size: 32rpx;
|
||||
color: #0F0F0F;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
.hot-send-goods{
|
||||
font-size: 28rpx;
|
||||
padding-top: 0rpx;
|
||||
.title{
|
||||
font-size: 28rpx;
|
||||
color: #0F0F0F;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
.search-list{
|
||||
.seatch-list-item{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 102rpx;
|
||||
border-bottom: 2rpx solid #F4F4F4;
|
||||
.label{
|
||||
font-size: 28rpx;
|
||||
color: #151515;
|
||||
}
|
||||
.classify{
|
||||
font-size: 28rpx;
|
||||
color: #888888;
|
||||
}
|
||||
}
|
||||
}
|
||||
::v-deep .uni-popup{
|
||||
.uni-popup__wrapper{
|
||||
background-color:white!important;
|
||||
padding:36rpx 33rpx 43rpx 33rpx ;
|
||||
border-radius: 24rpx 24rpx 0 0;
|
||||
}
|
||||
.title{
|
||||
font-size: 30rpx;
|
||||
color: #151515;
|
||||
text-align: center;
|
||||
margin-bottom: 34rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content{
|
||||
font-size: 28rpx;
|
||||
color: #151515;
|
||||
line-height: 40prx;
|
||||
margin-top: 28rpx;
|
||||
}
|
||||
.btn{
|
||||
width: 404rpx;
|
||||
height: 88rpx;
|
||||
background-color: #E84134;
|
||||
border-radius: 44rpx;
|
||||
text-align: center;
|
||||
line-height: 88rpx;
|
||||
color: white;
|
||||
margin: 0 auto;
|
||||
margin-top: 42rpx;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,270 @@
|
||||
<!-- 物品类型弹窗页面 -->
|
||||
<template>
|
||||
<view class="goodsSearch">
|
||||
<!-- 头部 -->
|
||||
<view class="searchBox-title">
|
||||
<view class="title">
|
||||
物品名称
|
||||
<view class="label"></view>
|
||||
</view>
|
||||
<view class="stopSend" @click="openForbidGoodsDialog">
|
||||
禁寄物品
|
||||
<view class="gantanhao"></view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 搜索框 -->
|
||||
<view class="seachBox" v-if="!isSelectedGoods">
|
||||
<uni-search-bar :cancelButton='isFocus && searchValue?"none":"auto"' :focus="isFocus" placeholder="请输入搜索内容"
|
||||
v-model="searchValue" @blur="blur" @focus="focus" @input="input" @cancel="cancel" @clear="clear">
|
||||
<template v-slot:searchIcon>
|
||||
<view class="search-icon"></view>
|
||||
</template>
|
||||
</uni-search-bar>
|
||||
<view class="search-btn" @click="userDefined" v-if="searchValue && isFocus">确定</view>
|
||||
</view>
|
||||
|
||||
<!-- 最近寄件 -->
|
||||
<view class="recent-send-goods" v-if='!isSelectedGoods && recentSendList.data.length && !isInput'>
|
||||
<view class="title">最近寄件</view>
|
||||
<view class="recent-send-list">
|
||||
<view class="recent-send-item" v-for="(item,index) in recentSendList.data" :key='index'
|
||||
@click="handleClick(item)">
|
||||
{{item.name}}{{item.goodsType?'('+item.goodsType.name+')':''}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 选择的物品 -->
|
||||
<view class="selected-goods" v-if="isSelectedGoods">
|
||||
<view class="goods" @click.prevent="handleSelectedGoods">
|
||||
<image src='../../../static/shanchu-after.png' @click.stop="handleCancelGood"></image>
|
||||
{{goods.info.name}}{{goods.info.goodsType?'('+goods.info.goodsType.name+')':""}}
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
|
||||
<!-- 热门寄件 -->
|
||||
<view class="hot-send-goods" v-if='!isSelectedGoods && !isInput && isFocus'>
|
||||
<view class="title">热门寄件</view>
|
||||
<view class="recent-send-list">
|
||||
<view class="recent-send-item" v-for="(item,index) in hotSendList.data" :key='index'
|
||||
@click="handleClick(item)">
|
||||
{{item.name}}{{item.goodsType?'('+item.goodsType.name+')':''}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 模糊查询出的列表 -->
|
||||
<view class="search-list" v-if="isInput">
|
||||
<view class="seatch-list-item" @click="handleClick(item)" v-for="(item,index) in dimSearchList.data"
|
||||
:key="index">
|
||||
<view class="label">{{item.name}}</view>
|
||||
<view class="classify">{{item.name}}{{item.goodsType?'('+item.goodsType.name+')':''}}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 禁寄物品弹窗 -->
|
||||
<uni-popup ref="popup" type="bottom" :safe-area="false">
|
||||
<view class="title">禁止寄递物品目录</view>
|
||||
<view class="content">
|
||||
1.枪支(含仿制品、主要零部件)弹药。
|
||||
</view>
|
||||
<view class="content">
|
||||
2.管制器具。如匕首、三棱刮刀、带有自锁装置的弹簧刀(跳刀)、弩、催泪器等。
|
||||
</view>
|
||||
<view class="content">
|
||||
3.爆炸物品。如炸药、雷管、导火索、烟花、鞭炮、摔炮、拉炮、砸炮等。
|
||||
</view>
|
||||
<view class="content">
|
||||
4.压缩和液化气体及其容器。如氢气、甲烷、乙烷、乙炔、打火机、氯气、压缩氧气、氮气等。
|
||||
</view>
|
||||
<view class="content">
|
||||
5.易燃液体。如汽油、柴油、煤油、桐油、丙酮、乙醚、油漆、生漆、苯、酒精、松香油等。
|
||||
</view>
|
||||
<view class="content">
|
||||
6.易燃固体、自燃物质、遇水易燃物质。如红磷、硫磺、固体酒精、火柴、活性炭等。
|
||||
</view>
|
||||
<view class="content">
|
||||
7.氧化剂和过氧化物。如高锰酸盐、高氯酸盐、氧化氢、双氧水等。
|
||||
</view>
|
||||
<view class="content">
|
||||
8.毒性物质。如砷、砒霜、汞化物、铊化物、氰化物、硒粉、苯酚、汞、剧毒农药等。
|
||||
</view>
|
||||
<view class="content">
|
||||
9.生化制品、传染性、感染性物质。如病菌、炭疽、寄生虫、排泄物、医疗废弃物、尸骨、动物器官等。
|
||||
</view>
|
||||
<view class="content">
|
||||
10.放射性物质。如铀、钴、镭、钚等。
|
||||
</view>
|
||||
|
||||
<view class="btn" @click="closeForbidGoodsDialog">知道了</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
reactive,
|
||||
onMounted,
|
||||
} from 'vue';
|
||||
import {
|
||||
usualGoodsList,
|
||||
goodsList
|
||||
} from '@/pages/api/order.js'
|
||||
import {
|
||||
useStore
|
||||
} from 'vuex';
|
||||
const store = useStore(); //vuex获取、储存数据
|
||||
const users = store.state.user
|
||||
const emits = defineEmits(["@getGoodsInfo"]);
|
||||
const props = defineProps({
|
||||
isShowOther: {
|
||||
type: Function,
|
||||
required: true
|
||||
},
|
||||
})
|
||||
const goods = reactive({
|
||||
info: {}
|
||||
})
|
||||
const isSelectedGoods = ref(false) //是否选择了物品
|
||||
const popup = ref()
|
||||
const searchValue = ref('')
|
||||
const isFocus = ref(false) //是否搜索框为聚焦状态
|
||||
const isInput = ref(false) //是否搜索框为输入状态
|
||||
const isUpload = ref(true) //是否输入框加载完毕
|
||||
//模糊查询出的列表数据
|
||||
const dimSearchList = reactive({
|
||||
data: []
|
||||
})
|
||||
//热门寄件物品
|
||||
const hotSendList = reactive({
|
||||
data: []
|
||||
})
|
||||
|
||||
const recentSendList = reactive({
|
||||
data: [],
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
getData()
|
||||
})
|
||||
|
||||
const getData = () => {
|
||||
usualGoodsList({
|
||||
name: ''
|
||||
}).then((res) => {
|
||||
if (res.data) {
|
||||
hotSendList.data = res.data.slice(0, 6)
|
||||
}
|
||||
}).catch((err) => {
|
||||
uni.showToast({
|
||||
title: '网络异常',
|
||||
duration: 2000,
|
||||
icon: 'none'
|
||||
});
|
||||
})
|
||||
isSelectedGoods.value = users.goodsInfo.name
|
||||
if (isSelectedGoods.value) goods.info = users.goodsInfo
|
||||
|
||||
goodsList().then((res) => {
|
||||
if (res.data) {
|
||||
recentSendList.data = res.data.slice(0, 5)
|
||||
}
|
||||
}).catch((err) => {
|
||||
uni.showToast({
|
||||
title: '网络异常',
|
||||
duration: 2000,
|
||||
icon: 'none'
|
||||
});
|
||||
})
|
||||
}
|
||||
const handleSelectedGoods = () => {
|
||||
searchValue.value = goods.info.name
|
||||
isFocus.value = true
|
||||
isInput.value = true
|
||||
isSelectedGoods.value = false
|
||||
dimSearch(searchValue.value)
|
||||
props.isShowOther(true, 'always')
|
||||
}
|
||||
//模糊查询列表数据
|
||||
const dimSearch = (key) => {
|
||||
if (!isUpload.value) return
|
||||
isUpload.value = false
|
||||
usualGoodsList({
|
||||
name: key
|
||||
}).then((res) => {
|
||||
dimSearchList.data = res.data
|
||||
isUpload.value = true
|
||||
})
|
||||
}
|
||||
|
||||
const input = (e) => {
|
||||
isFocus.value = e ? true : false
|
||||
isInput.value = Boolean(e)
|
||||
if (!isUpload.value) return
|
||||
searchValue.value = e
|
||||
dimSearch(e)
|
||||
props.isShowOther(e ? true : false)
|
||||
}
|
||||
const cancel = () => {
|
||||
isInput.value = false
|
||||
props.isShowOther(false)
|
||||
}
|
||||
const clear = () => {
|
||||
props.isShowOther(true)
|
||||
}
|
||||
const blur = () => {
|
||||
console.log('blur')
|
||||
}
|
||||
const focus = () => {
|
||||
isFocus.value = true
|
||||
props.isShowOther(true)
|
||||
}
|
||||
|
||||
//用户自定义的物品
|
||||
const userDefined = () => {
|
||||
goods.info = {
|
||||
name: searchValue.value
|
||||
}
|
||||
isSelectedGoods.value = Boolean(searchValue.value)
|
||||
props.isShowOther(false)
|
||||
emits('getGoodsInfo', {
|
||||
name: searchValue.value
|
||||
})
|
||||
isFocus.value = false
|
||||
}
|
||||
//取消物品选择
|
||||
const handleCancelGood = () => {
|
||||
goods.info = {}
|
||||
store.commit('user/setGoodsInfo', {})
|
||||
emits('getGoodsInfo', {})
|
||||
isSelectedGoods.value = false
|
||||
searchValue.value = ''
|
||||
isFocus.value = false
|
||||
isInput.value = false
|
||||
}
|
||||
|
||||
//点击标签物品
|
||||
const handleClick = (item) => {
|
||||
searchValue.value = item.value
|
||||
isFocus.value = true
|
||||
goods.info = item
|
||||
isSelectedGoods.value = true
|
||||
isInput.value = false
|
||||
props.isShowOther(false)
|
||||
emits('getGoodsInfo', item)
|
||||
}
|
||||
|
||||
//打开禁寄物品弹窗
|
||||
const openForbidGoodsDialog = () => {
|
||||
popup.value.open('bottom');
|
||||
}
|
||||
|
||||
//关闭禁寄物品弹窗
|
||||
const closeForbidGoodsDialog = () => {
|
||||
popup.value.close();
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped src='./goodsSearch.scss'></style>
|
@@ -0,0 +1,109 @@
|
||||
.weightAndVolume{
|
||||
background-color: white;
|
||||
margin-top: 20rpx;
|
||||
padding:56rpx 40rpx ;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin-bottom: 200rpx;
|
||||
.volume-box{
|
||||
margin-top: 50rpx;
|
||||
.isVolumeInfo{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
.isVolumeInfo-title{
|
||||
font-size: 24rpx;
|
||||
color: #888888;
|
||||
margin-right: 18rpx;
|
||||
}
|
||||
::v-deep .uni-switch-input::before{
|
||||
background-color: #CCCCCC;
|
||||
width: 120rpx;
|
||||
}
|
||||
::v-deep .uni-switch-input.uni-switch-input-checked:after{
|
||||
transform: translateX(60rpx);
|
||||
}
|
||||
::v-deep .uni-switch-input{
|
||||
width: 120rpx;
|
||||
}
|
||||
switch{
|
||||
position: relative;
|
||||
left: 20rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.weight-box,.volume-box,.isVolumeInfo-title-box{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
.unit{
|
||||
position: absolute;
|
||||
right: 126rpx;
|
||||
top:16rpx ;
|
||||
}
|
||||
.weight-box-title,.volume-box-title{
|
||||
font-weight: bold;
|
||||
font-size: 32rpx;
|
||||
color: #0F0F0F;
|
||||
}
|
||||
.uni-numbox{
|
||||
height: 76rpx;
|
||||
.uni-numbox__value{
|
||||
height: 76rpx!important;
|
||||
margin: 0;
|
||||
background-color: #F9F9F9!important;
|
||||
width: 220rpx;
|
||||
}
|
||||
.uni-numbox__plus,.uni-numbox__minus{
|
||||
width: 76rpx;
|
||||
border-radius: 0rpx 36rpx 36rpx 0;
|
||||
background-color: #ECECEC!important;
|
||||
.uni-numbox--text{
|
||||
span{
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
.uni-numbox__minus{
|
||||
border-radius: 36rpx 0rpx 0rpx 36rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.isVolumeInfo-title-box{
|
||||
justify-content: flex-end;
|
||||
margin-top: 10rpx;
|
||||
.unit{
|
||||
|
||||
}
|
||||
}
|
||||
.long-width-height{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 16rpx;
|
||||
.cheng{
|
||||
margin: 0 12rpx;
|
||||
height: 19rpx;
|
||||
line-height: 30rpx;
|
||||
}
|
||||
.long,.width,.height{
|
||||
::v-deep .uni-input-wrapper,.uni-input{
|
||||
background-color: #F4F4F4;
|
||||
border-radius: 36rpx;
|
||||
width: 198rpx;
|
||||
height: 74rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
.accounting-rules{
|
||||
font-size: 24rpx;
|
||||
color: #888888;
|
||||
margin-top: 40rpx;
|
||||
.red{
|
||||
color: #E84134;
|
||||
font-size: 24rpx;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,244 @@
|
||||
<!-- 重量和体积 -->
|
||||
<template>
|
||||
<view class="weightAndVolume">
|
||||
<!-- 重量 -->
|
||||
<view class="weight-box">
|
||||
<view class="weight-box-title">预估重量</view>
|
||||
<!-- <uni-number-box max="9999" min="1" :value="weight" @change="changeWeight" /> -->
|
||||
<view class="number-box">
|
||||
<view class="minus-btn" :class="isLessThan ? 'active' : ''" @click="handleMinus">-</view>
|
||||
<input class="uni-input" type="digit" maxlength="4" v-model="weight" @blur="handleWeigthBlur"/>
|
||||
<view class="add-btn" :class="isExceed ? 'active' : ''" @click="handleAdd">+</view>
|
||||
</view>
|
||||
<view class="unit">kg</view>
|
||||
</view>
|
||||
<!-- 体积 -->
|
||||
<view class="volume-box">
|
||||
<view class="volume-box-title">总体积</view>
|
||||
<view class="isVolumeInfo">
|
||||
<view class="isVolumeInfo-title">补充体积预估费用更准确</view>
|
||||
<switch color="#1DC779" style="transform:scale(0.7)" @change="switchChange" :checked="isVolumeInfo" />
|
||||
</view>
|
||||
</view>
|
||||
<!-- 体积输入框 -->
|
||||
<view class="isVolumeInfo-title-box" v-if='isVolumeInfo'>
|
||||
<uni-number-box />
|
||||
<view class="number-box">
|
||||
<view class="minus-btn" :class="isLessThanVolume ? 'active' : ''" @click="handleVolumeMinus">-</view>
|
||||
<input class="uni-input" type="digit" maxlength="6" v-model="volume" @blur="handleVolume" />
|
||||
<view class="add-btn" :class="isExceedVolume ? 'active' : ''" @click="handleVolumeAdd">+</view>
|
||||
</view>
|
||||
<view class="unit">m³</view>
|
||||
</view>
|
||||
<!-- 长宽高输入框 -->
|
||||
<view class="long-width-height" v-if="isVolumeInfo">
|
||||
<view class="long">
|
||||
<input class="uni-input" type="digit" :value="long" maxlength="3" placeholder="长 cm"
|
||||
@input="longFun" />
|
||||
</view>
|
||||
<view class="cheng">*</view>
|
||||
<view class="width">
|
||||
<input class="uni-input" type="digit" :value="width" maxlength="3" placeholder="宽 cm"
|
||||
@input="widthFun" />
|
||||
</view>
|
||||
<view class="cheng">*</view>
|
||||
<view class="height">
|
||||
<input class="uni-input" type="digit" :value="height" maxlength="3" placeholder="高 cm"
|
||||
@input="heightFun" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="accounting-rules">
|
||||
注:实际质量与体积以收派员确定为准,物品在包装后重量可能会增加,重量体积大时会体积重量收费,
|
||||
<text class="red" @click="openAccountRulesDialog">了解计费规则</text>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
onMounted,
|
||||
} from 'vue';
|
||||
import {
|
||||
useStore
|
||||
} from 'vuex';
|
||||
const emits = defineEmits(["@getWeight", '@getVolume']);
|
||||
let isLessThan = ref(true); //判断重量是否小于0.1
|
||||
let isExceed = ref(false); //判断重量是否大于9999
|
||||
let isLessThanVolume = ref(true); //判断体积是否小于0.0001m³
|
||||
let isExceedVolume = ref(false); //判断体积是否大于99m³
|
||||
const weight = ref(1) //重量
|
||||
const volume = ref(0) //体积
|
||||
const long = ref() //长
|
||||
const width = ref() //宽
|
||||
const height = ref() //高
|
||||
const isVolumeInfo = ref(false)
|
||||
const store = useStore(); //vuex获取、储存数据
|
||||
const users = store.state.user
|
||||
onMounted(() => {
|
||||
weight.value = users.weight
|
||||
width.value = users.width
|
||||
height.value = users.height
|
||||
long.value = users.long
|
||||
volume.value = users.volume ? (Number(users.volume) / 1000000) : 0
|
||||
isVolumeInfo.value = users.width && users.long && users.height
|
||||
})
|
||||
// 减重量
|
||||
const handleMinus = () => {
|
||||
// 重量减去1
|
||||
if (weight.value > 1) {
|
||||
weight.value--;
|
||||
isExceed.value = false; //右侧加号去除置灰
|
||||
weight.value = weight.value.toFixed(1);
|
||||
}
|
||||
if (weight.value <= 1) {
|
||||
|
||||
isLessThan.value = true; //左侧减号置灰
|
||||
if (weight.value <= 0.1) {
|
||||
weight.value = 0.1
|
||||
}
|
||||
}
|
||||
emits('getWeight', weight.value)
|
||||
};
|
||||
|
||||
// 加重量
|
||||
const handleAdd = () => {
|
||||
// 重量加1
|
||||
if (weight.value < 9999) {
|
||||
++weight.value;
|
||||
isLessThan.value = false; //左侧减号去除置灰
|
||||
}
|
||||
if (weight.value === 9999) {
|
||||
isExceed.value = true; //右侧加号置灰
|
||||
}
|
||||
if (weight.value <= 1) {
|
||||
// weight.value = 1;
|
||||
isLessThan.value = true; //左侧减号置灰
|
||||
}
|
||||
emits('getWeight', weight.value)
|
||||
};
|
||||
|
||||
//触发重量输入如果输入0,自动判断为1kg,最小可输入值为0.1kg,最大值为9999kg
|
||||
const handleWeigthBlur = e => {
|
||||
let value = e.detail.value;
|
||||
if (value < 0.1) {
|
||||
value = 1;
|
||||
isLessThan.value = true; //左侧减号置灰
|
||||
} else {
|
||||
if (value >= 0.1 && value <= 1) {
|
||||
isLessThan.value = true;
|
||||
} else {
|
||||
isLessThan.value = false; //左侧减号去除置灰
|
||||
}
|
||||
|
||||
if (value >= 9999) {
|
||||
isExceed.value = true; //右侧加号置灰
|
||||
value = 9999;
|
||||
uni.showToast({
|
||||
title: '重量最大可不能超过9999kg',
|
||||
duration: 1000,
|
||||
icon: 'none'
|
||||
});
|
||||
} else {
|
||||
isExceed.value = false; //右侧加号去除置灰
|
||||
}
|
||||
}
|
||||
weight.value = value
|
||||
emits('getWeight', weight.value)
|
||||
};
|
||||
|
||||
|
||||
// 体积
|
||||
const handleVolume = e => {
|
||||
let value = Number(e.detail.value);
|
||||
if (value < 0.0001) {
|
||||
isLessThanVolume.value = true;
|
||||
value = 0;
|
||||
} else {
|
||||
isLessThanVolume.value = false;
|
||||
if (value >= 999) {
|
||||
isExceedVolume.value = true; //右侧加号置灰
|
||||
value = 999;
|
||||
uni.showToast({
|
||||
title: '体积最大可不能超过999m³',
|
||||
duration: 1000,
|
||||
icon: 'none'
|
||||
});
|
||||
} else {
|
||||
value = Number(e.detail.value);
|
||||
isExceedVolume.value = false; //右侧加号去除置灰
|
||||
}
|
||||
|
||||
}
|
||||
volume.value = value
|
||||
emits('getVolume', (volume.value) * 1000000, long.value, width.value, height.value)
|
||||
};
|
||||
// 减体积
|
||||
const handleVolumeMinus = () => {
|
||||
// 体积减去1
|
||||
if (volume.value > 1) {
|
||||
volume.value--;
|
||||
isExceedVolume.value = false; //右侧加号去除置灰
|
||||
volume.value = volume.value.toFixed(1);
|
||||
}
|
||||
// 体积
|
||||
if (volume.value <= 1) {
|
||||
|
||||
isLessThanVolume.value = true; //左侧减号置灰
|
||||
if (weight.value <= 0.0001) {
|
||||
weight.value = 0.0001
|
||||
}
|
||||
}
|
||||
emits('getVolume', (volume.value) * 1000000, long.value, width.value, height.value)
|
||||
|
||||
};
|
||||
// 加体积
|
||||
const handleVolumeAdd = () => {
|
||||
// 体积加1
|
||||
if (volume.value < 999) {
|
||||
++volume.value;
|
||||
isLessThanVolume.value = false; //左侧减号去除置灰
|
||||
}
|
||||
if (volume.value === 999) {
|
||||
isExceedVolume.value = true; //右侧加号置灰
|
||||
}
|
||||
emits('getVolume', (volume.value) * 1000000, long.value, width.value, height.value)
|
||||
};
|
||||
|
||||
|
||||
//是否显示具体体积
|
||||
const switchChange = (e) => {
|
||||
isVolumeInfo.value = e.detail.value
|
||||
}
|
||||
//修改长度
|
||||
const longFun = (e) => {
|
||||
long.value = e.detail.value
|
||||
let valueFun = (Number(long.value) * Number(width.value) * Number(height.value)) / 1000000
|
||||
volume.value = valueFun < 0.0001 ? 0.0001 : valueFun
|
||||
emits('getVolume', ((volume.value) * 1000000), e.detail.value, width.value, height.value)
|
||||
}
|
||||
//修改宽度
|
||||
const widthFun = (e) => {
|
||||
width.value = e.detail.value
|
||||
let valueFun = (Number(long.value) * Number(width.value) * Number(height.value)) / 1000000
|
||||
volume.value = valueFun < 0.0001 ? 0.0001 : valueFun
|
||||
emits('getVolume', (volume.value) * 1000000, long.value, e.detail.value, height.value)
|
||||
}
|
||||
//修改高度
|
||||
const heightFun = (e) => {
|
||||
height.value = e.detail.value
|
||||
let valueFun = (Number(long.value) * Number(width.value) * Number(height.value)) / 1000000
|
||||
volume.value = valueFun < 0.0001 ? 0.0001 : valueFun
|
||||
emits('getVolume', (volume.value) * 1000000, long.value, width.value, e.detail.value)
|
||||
}
|
||||
|
||||
//打开计费规则弹窗
|
||||
const openAccountRulesDialog = () => {
|
||||
uni.navigateTo({
|
||||
url: '/subPages/account-rules/index'
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<style src="./weightAndVolume.scss" lang="scss" scoped></style>
|
Reference in New Issue
Block a user