问题售后系统APP端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

267 lines
6.2 KiB

<template>
<view class="page-css">
<view class="list_box">
<view class="list_item" v-for="(item,index) in listData" :key="item.id">
<view class="name">
<text class="name_text">{{item.name}}</text>
<text class="code_text">{{item.code}}</text>
</view>
<view class="">规格:{{item.specifications}}</view>
<view class="model_box">
<span>型号:{{item.modelNum}}</span>
<view class="add_box">
<u-number-box v-model="item.addNum" @change="valChange(item)"></u-number-box>
</view>
</view>
</view>
</view>
<view class="fixed_box">
<view class="" style="position: relative;margin-left: 20rpx;" @click="showPopup">
<u-badge type="error" :count="selectedNum" :offset="[0,2]"></u-badge>
<!-- <image src="../" alt="" style="width: 80rpx;height: 80rpx;" /> -->
<image src="../../static/images/shop.png" mode="" style="width: 80rpx;height: 80rpx;"></image>
</view>
<view class="button_box">
<u-button type="primary" :plain="true" style="width: 100%;height: 100%;" @click="addCommodity()">确定</u-button>
</view>
</view>
<u-popup
v-model="showSelected"
mode="bottom"
border-radius="30"
:mask-close-able="false"
:closeable="true"
@close="closePop"
>
<view class="popup-content">
<view class="title_box">商品清单</view>
<scroll-view scroll-y="true" :style="{height:selectedNum > 3 ? '530rpx' : ''}">
<view class="selected_box">
<view class="selected_box_item" v-for="(item,index) in selectedArr" :key="item.id">
<view class="name">
<view class="name_left">
<text class="name_text">{{item.name}}</text>
<text class="code_text" style="margin-left: 20rpx;">{{item.code}}</text>
</view>
<view class="delete_box" @click="deleteNum(item)">
<image style="width: 32rpx;height: 32rpx;" src="../../static/images/delete.png" mode=""></image>
</view>
</view>
<view class="">规格:{{item.specifications}}</view>
<view class="model_box">
<span>型号:{{item.modelNum}}</span>
<view class="add_box">
<u-number-box v-model="item.addNum" @change="valChange(item)"></u-number-box>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</u-popup>
</view>
</template>
<script>
export default{
data(){
return{
listData:[],
selectedNum:0,
showSelected:false,
selectedArr:[],
optionArr:[],
formData:{},
}
},
onLoad(option) {
this.optionArr = option.selectArr ? JSON.parse(option.selectArr) : [],
this.selectedArr = JSON.parse(JSON.stringify(this.optionArr))
this.selectedNum = this.optionArr.length
this.formData = {
date:option.date ? option.date : '',
address:option.address ? option.address : ''
}
},
mounted(){
this.getList()
},
methods:{
getList(){
console.log('111111111111111111111')
this.$u.api.getAllGoods().then(res =>{
if(this.optionArr.length == 0){
res.data.forEach(item =>{
item.addNum = 0
})
this.listData = res.data
}else{
res.data.map(item =>{
item.addNum = 0
this.optionArr.map(item1=>{
if(item.id == item1.id){
item.addNum = item1.addNum
}
})
})
this.listData = res.data
console.log('listData====================',this.listData)
}
})
},
deleteNum(item){
item.addNum = 0
this.selectedNum = this.listData.filter(item => item.addNum != 0).length
this.selectedArr = this.listData.filter(item => item.addNum != 0)
},
addNum(item){
item.addNum = item.addNum + 1
},
valChange(value){
this.listData.map(item =>{
if(item.id == value.id){
item.addNum = value.addNum
}
})
this.selectedNum = this.listData.filter(item => item.addNum != 0).length
this.selectedArr = this.listData.filter(item => item.addNum != 0)
},
addCommodity(){
if(this.selectedArr.length == 0){
uni.showToast({ title: "至少选择一个商品", icon: "none" });
}else{
uni.redirectTo({
url:'/pages/commodity/addOrder?selectArr=' + JSON.stringify(this.selectedArr) + '&date=' + this.formData.date + '&address=' + this.formData.address
})
}
},
showPopup(){
if(this.selectedNum && this.selectedNum != 0){
this.showSelected = true
}
},
closePop(){
}
}
}
</script>
<style lang="scss" scoped>
.page-css {
width: 100%;
padding: 0;
padding-top: 20rpx;
padding-bottom: 140rpx;
background: rgba(239, 239, 239, 1);
.list_box{
width: 95%;
margin: 0 auto;
.list_item{
padding: 20rpx;
width: 100%;
background: #fff;
border-radius: 10rpx;
margin-bottom: 20rpx;
.name{
margin-bottom: 10rpx;
display: flex;
.name_text{
font-size: 14px;
font-weight: bold;
}
.code_text{
margin-left: 30rpx;
}
}
.model_box{
display: flex;
justify-content: space-between;
.add_box{
display: flex;
align-items: center;
.add_item{
width: 30rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #000;
margin: 0 20rpx;
}
}
}
}
}
.fixed_box{
position: fixed;
bottom: 0;
width: 100%;
height: 120rpx;
background: #fff;
display: flex;
z-index: 300000;
align-items: center;
justify-content: space-between;
.button_box{
width: 200rpx;
height: 60rpx;
margin-right: 40rpx;
}
}
.popup-content {
position: relative;
background: #fff;
box-shadow: 0px, -2px rgba(0, 0, 0, 0.25);
padding: 32rpx;
position: relative;
padding-bottom: 140rpx;
.title_box{
font-size: 18px;
width: 100%;
text-align: center;
margin-bottom: 20rpx;
}
.selected_box{
width: 100%;
margin: 0 auto;
max-height: 530rpx;
.selected_box_item{
padding: 20rpx;
margin-bottom: 10rpx;
border-radius: 20rpx;
background: #e6e6e6;
.name{
display: flex;
justify-content: space-between;
}
.model_box{
display: flex;
justify-content: space-between;
}
}
}
}
}
</style>