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.
342 lines
11 KiB
342 lines
11 KiB
|
2 months ago
|
<template>
|
||
|
|
<view class="page1">
|
||
|
|
<view class="search" style="position: fixed;top: 0;z-index: 99;">
|
||
|
|
<uni-datetime-picker style="margin-bottom:20rpx;" v-model="range" @change="searchList" type="daterange" />
|
||
|
|
<uni-search-bar class="uni-mt-10" radius="5" placeholder="输入客户名称/销售人员搜索" cancelButton="none"
|
||
|
|
@confirm="searchList" />
|
||
|
|
</view>
|
||
|
|
<view class="u-transition" style="display:flex;background: #ecf5ff;width: 100%;color: #5fd9ee;height: 80rpx;line-height: 80rpx;padding-left: 20rpx;">
|
||
|
|
<view>点击列表可跳转至退货单</view>
|
||
|
|
</view>
|
||
|
|
<view class="ulList" v-if="inventoryList.length > 0" style="overflow: scroll;margin-top:300rpx;">
|
||
|
|
<ul :style="{'margin-bottom':btnStatus==false?'160rpx':''}">
|
||
|
|
<li v-for="(item,index) in inventoryList" :key="index">
|
||
|
|
<checkbox-group @change="checkboxChange">
|
||
|
|
<label class="uni-list-cell uni-list-cell-pd" >
|
||
|
|
<checkbox v-if="btnStatus==false" :value="item" style="float: left;width: 60rpx;line-height: 300rpx;margin: 0 20rpx;" />
|
||
|
|
<view :style="{width:btnStatus==false?'95%':'100%'}" @tap="gotoDetail(item.saleId)">
|
||
|
|
<!-- :extra="'数量:'+(item.productCount == null ?'暂无':item.productCount)" -->
|
||
|
|
<uni-card :title="item.userName == null ?'暂无':item.userName" :sub-title="item.createTime == null ?'暂无':item.createTime" >
|
||
|
|
<view class="uni-body"><text class="cardText">销售员:</text> {{item.createByName == null ?'暂无':item.createByName}}</view>
|
||
|
|
<view class="uni-body" v-if="item.totalAmount > 0">
|
||
|
|
<text class="cardText">退货金额:</text>
|
||
|
|
<text class="priceText">{{item.totalAmount == null ?'暂无':item.totalAmount}}</text>
|
||
|
|
<!-- <text decode class="cardText">{{' 退货数: '}}</text>
|
||
|
|
<text class="priceText">{{item.productCount == null ?'暂无':item.productCount}}</text> -->
|
||
|
|
</view>
|
||
|
|
<view class="uni-body"> <text class="cardText">
|
||
|
|
订单状态:</text>{{item.status == '0' ?'待抢单' :item.status == '2' ?'作废' :item.status == '1' ?'待取货' :item.status == '3' ?'待送达' :item.status == '4' ?'已完成' :item.status == '5' ?'下游客户待退货' :item.status == '00' ?'退货待抢单' :item.status == '01' ?'退货待取货' :item.status == '03' ?'退货待送达' :item.status == '04' ?'待确认退货' :item.status == '6' ?'待配货':item.status == '8' ?'待物流上门':item.status == '9' ?'已完成' :'挂单'}}
|
||
|
|
</view>
|
||
|
|
<!-- <view class="floatRight" v-if="item.status == 4" @tap.stop="cancelOrder(item)">撤销</view>
|
||
|
|
<view class="floatRight" v-if="item.status == 4" @tap.stop="cancelOrder(item,'goPay')">撤销并复制</view> -->
|
||
|
|
</uni-card>
|
||
|
|
</view>
|
||
|
|
</label>
|
||
|
|
</checkbox-group>
|
||
|
|
</li>
|
||
|
|
<u-loadmore :status="status" />
|
||
|
|
</ul>
|
||
|
|
|
||
|
|
</view>
|
||
|
|
<u-empty v-else mode="order" margin-top="200"></u-empty>
|
||
|
|
</view>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
export default {
|
||
|
|
data() {
|
||
|
|
return {
|
||
|
|
searchStr: '',
|
||
|
|
type: '',
|
||
|
|
inventoryList: [],
|
||
|
|
status: 'loadmore',
|
||
|
|
page: 1,
|
||
|
|
totalPages: 0,
|
||
|
|
// type:'',
|
||
|
|
range:[],
|
||
|
|
btnStatus:true,
|
||
|
|
returnList:new Map(),
|
||
|
|
};
|
||
|
|
},
|
||
|
|
onLoad(options) {
|
||
|
|
this.getMonth();
|
||
|
|
this.type = options.type;
|
||
|
|
this.listStatus = options.listStatus
|
||
|
|
|
||
|
|
},
|
||
|
|
onShow(){
|
||
|
|
this.getOrderInfoList()
|
||
|
|
},
|
||
|
|
onReachBottom() {
|
||
|
|
if (this.page >= this.totalPages) return;
|
||
|
|
this.status = 'loading';
|
||
|
|
this.page = ++this.page;
|
||
|
|
this.getOrderInfoList();
|
||
|
|
},
|
||
|
|
methods: {
|
||
|
|
//获取当月1日到当前时间
|
||
|
|
getMonth() {
|
||
|
|
let date = new Date()
|
||
|
|
let year = date.getFullYear().toString() //'年'
|
||
|
|
let month = date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1).toString():(date.getMonth()+1).toString() //'月'
|
||
|
|
let da = date.getDate() < 10 ? '0'+date.getDate().toString():date.getDate().toString() //'日'
|
||
|
|
let end = year + '-' + month + '-' + da //当天
|
||
|
|
let beg = year + '-' + month + '-01' //当月第一天
|
||
|
|
this.range = [beg,end]
|
||
|
|
},
|
||
|
|
gotoDetail(id) {
|
||
|
|
this.page = 1
|
||
|
|
uni.navigateTo({
|
||
|
|
url: '/package1/index/orderDetail?id=' + id
|
||
|
|
})
|
||
|
|
},
|
||
|
|
searchList(res) {
|
||
|
|
this.searchStr = res.value
|
||
|
|
this.page = 1;
|
||
|
|
this.inventoryList = [];
|
||
|
|
this.getOrderInfoList()
|
||
|
|
},
|
||
|
|
// 订单查询
|
||
|
|
getOrderInfoList() {
|
||
|
|
this.status = 'loading';
|
||
|
|
this.tui.request("/app/return/getReturnSaleList", "POST", {
|
||
|
|
pageNum:this.page,
|
||
|
|
pageSize:10,
|
||
|
|
startTime:this.range[0],
|
||
|
|
endTime:this.range[1],
|
||
|
|
createByName:"",
|
||
|
|
userId:"",//(客户精准搜索)
|
||
|
|
userName:"",//(客户模糊搜索)
|
||
|
|
}, false, false).then((res) => {
|
||
|
|
this.status = 'nomore';
|
||
|
|
if (res.code == 200) {
|
||
|
|
if (this.page == 1) {
|
||
|
|
this.inventoryList = res.result.records
|
||
|
|
} else {
|
||
|
|
this.inventoryList = [...this.inventoryList, ...res.result.records]
|
||
|
|
}
|
||
|
|
this.totalPages = res.result.page
|
||
|
|
} else {
|
||
|
|
this.tui.toast(res.message)
|
||
|
|
}
|
||
|
|
}).catch((res) => {})
|
||
|
|
},
|
||
|
|
sliceMsg(val) {
|
||
|
|
var name = ''
|
||
|
|
if (typeof(val) == 'string') {
|
||
|
|
let newObj = JSON.parse(val)
|
||
|
|
for (let as in newObj) {
|
||
|
|
name += newObj[as] + '/'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return name;
|
||
|
|
},
|
||
|
|
//退款接口
|
||
|
|
async getReturnOrder(id) {
|
||
|
|
let that = this;
|
||
|
|
await this.tui.request("/app/return/list", "post", {
|
||
|
|
remark: 3,
|
||
|
|
saleId: id
|
||
|
|
}, false, false).then((res) => {
|
||
|
|
if (res.code == 200 && res.result != null && res.result != undefined) {
|
||
|
|
if (res.result != '') {
|
||
|
|
res.result.forEach(item => {
|
||
|
|
this.tui.request("/app/return/get/" + item.id, "GET", null, false,false).then((res) => {
|
||
|
|
if (res.code == 200 && res.result != null && res.result != undefined) {
|
||
|
|
for(let i=0;i<res.result.saleDetailDTOList.length;i++){
|
||
|
|
res.result.saleDetailDTOList[i].stockLogList = new Map()
|
||
|
|
that.returnList.set(res.result.saleDetailDTOList[i].productId,res.result.saleDetailDTOList[i])
|
||
|
|
for(let m=0;m<res.result.saleDetailDTOList[i].stockLogList1.length;m++){
|
||
|
|
res.result.saleDetailDTOList[i].stockLogList1[m].productCount = 0-res.result.saleDetailDTOList[i].stockLogList1[m].productCount
|
||
|
|
that.returnList.get(res.result.saleDetailDTOList[i].productId).stockLogList.set(res.result.saleDetailDTOList[i].stockLogList1[m].attributeList,res.result.saleDetailDTOList[i].stockLogList1[m])
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}).catch((res) => {})
|
||
|
|
})
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
this.tui.toast(res.message)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
},
|
||
|
|
// 取消订单
|
||
|
|
async cancelOrder(item, type) {
|
||
|
|
let that = this;
|
||
|
|
await this.getReturnOrder(item.saleId)
|
||
|
|
await this.tui.modal("提示", "您确定要撤销订单吗?", true, (res) => {
|
||
|
|
if (res) {
|
||
|
|
that.cancelOk(item,type)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
},
|
||
|
|
// 取消订单
|
||
|
|
cancelOk(item,type) {
|
||
|
|
let that = this;
|
||
|
|
that.tui.request('/app/sale/cancelSale', "POST", {
|
||
|
|
id:item.saleId
|
||
|
|
}, true, true).then((res1) => {
|
||
|
|
if (res1.code == 200) {
|
||
|
|
if (type == 'goPay') {
|
||
|
|
that.goSaleGoods(item)
|
||
|
|
} else {
|
||
|
|
that.getOrderInfoList()
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
that.tui.toast(res.message)
|
||
|
|
}
|
||
|
|
}).catch((res1) => {})
|
||
|
|
},
|
||
|
|
//带参数跳转到开单页
|
||
|
|
goSaleGoods(item) {
|
||
|
|
let dataList = []
|
||
|
|
if(!item.saleDetailDTOList){
|
||
|
|
item.saleDetailDTOList = []
|
||
|
|
}
|
||
|
|
this.returnList.forEach(function(value, key) {
|
||
|
|
item.saleDetailDTOList.push(value)
|
||
|
|
})
|
||
|
|
if (item.saleDetailDTOList) {
|
||
|
|
for (let i = 0; i < item.saleDetailDTOList.length; i++) {
|
||
|
|
|
||
|
|
let obj = {}
|
||
|
|
let attrMap = new Map()
|
||
|
|
let newSaleDetailDTOList = []
|
||
|
|
let num = 0
|
||
|
|
|
||
|
|
for (let m = 0; m < item.saleDetailDTOList[i].stockLogList1.length; m++) {
|
||
|
|
if (attrMap.has(item.saleDetailDTOList[i].stockLogList1[m].attributeList) == true) {
|
||
|
|
let hasCount = attrMap.get(item.saleDetailDTOList[i].stockLogList1[m].attributeList)
|
||
|
|
newSaleDetailDTOList[hasCount].productCount = Number(newSaleDetailDTOList[hasCount]
|
||
|
|
.productCount) + Number(item.saleDetailDTOList[i].stockLogList1[m].productCount)
|
||
|
|
} else {
|
||
|
|
item.saleDetailDTOList[i].stockLogList1[m].name = this.sliceMsg(item.saleDetailDTOList[i]
|
||
|
|
.stockLogList1[m].attributeList)
|
||
|
|
newSaleDetailDTOList.push(item.saleDetailDTOList[i].stockLogList1[m])
|
||
|
|
attrMap.set(item.saleDetailDTOList[i].stockLogList1[m].attributeList, num)
|
||
|
|
num++
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
obj.saleDetailQueryDTO = newSaleDetailDTOList
|
||
|
|
obj.num = 0
|
||
|
|
obj.id = item.saleDetailDTOList[i].productId
|
||
|
|
obj.price = item.saleDetailDTOList[i].price
|
||
|
|
obj.lsprice = item.saleDetailDTOList[i].price
|
||
|
|
obj.categoryId = item.saleDetailDTOList[i].categoryId
|
||
|
|
obj.zPrice = item.saleDetailDTOList[i].discountAmount
|
||
|
|
obj.unitPrice = item.saleDetailDTOList[i].discountAmount || item.saleDetailDTOList[i]
|
||
|
|
.wholesalePrice
|
||
|
|
obj.productName = item.saleDetailDTOList[i].productName
|
||
|
|
obj.productPicture = item.saleDetailDTOList[i].productPicture + '?time=' + new Date().getTime()
|
||
|
|
obj.productSn = item.saleDetailDTOList[i].productSn
|
||
|
|
obj.wholesalePrice = item.saleDetailDTOList[i].wholesalePrice
|
||
|
|
obj.returnPrice = item.saleDetailDTOList[i].returnPrice
|
||
|
|
obj.saleId = item.id
|
||
|
|
obj.remark = item.remark
|
||
|
|
obj.xsyId = item.createBy
|
||
|
|
obj.createByName = item.createByName
|
||
|
|
dataList.push(obj)
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
let obj = {}
|
||
|
|
obj.num = 0
|
||
|
|
obj.price = 0
|
||
|
|
obj.saleId = item.id
|
||
|
|
obj.remark = item.remark
|
||
|
|
obj.xsyId = item.createBy
|
||
|
|
obj.createByName = item.createByName
|
||
|
|
dataList.push(obj)
|
||
|
|
}
|
||
|
|
this.$nextTick(()=>{
|
||
|
|
this.tui.request("/app/customer/list", "post", {
|
||
|
|
notBuyDays: "",
|
||
|
|
pageNum: 1,
|
||
|
|
pageSize: 10,
|
||
|
|
searchStr: item.userName,
|
||
|
|
sort: "",
|
||
|
|
}, false, false).then((res) => {
|
||
|
|
if (res.code == 200) {
|
||
|
|
this.returnList = new Map()
|
||
|
|
uni.setStorageSync('khName', JSON.stringify(res.result.records[0]))
|
||
|
|
uni.setStorageSync('carList1', JSON.stringify(dataList))
|
||
|
|
uni.setStorageSync('hangOrder', true)
|
||
|
|
uni.switchTab({
|
||
|
|
url: '/pages/inventory/goodsList1'
|
||
|
|
})
|
||
|
|
}
|
||
|
|
})
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style lang="scss">
|
||
|
|
page,.page1{
|
||
|
|
font-size: 28rpx;
|
||
|
|
}
|
||
|
|
.u-transition{
|
||
|
|
width: 100%;
|
||
|
|
position: fixed;
|
||
|
|
top: 226rpx;
|
||
|
|
z-index: 99;
|
||
|
|
}
|
||
|
|
.search {
|
||
|
|
padding: 20rpx;
|
||
|
|
background-color: #fff;
|
||
|
|
width: 100%;
|
||
|
|
background-color: #fff;
|
||
|
|
}
|
||
|
|
.uni-searchbar{
|
||
|
|
padding: 20rpx 0 !important;
|
||
|
|
}
|
||
|
|
.dayin-text{
|
||
|
|
flex: 1;
|
||
|
|
text-align: right;
|
||
|
|
padding-right: 20rpx;
|
||
|
|
text-decoration: underline;
|
||
|
|
color: blue;
|
||
|
|
}
|
||
|
|
.ulList {
|
||
|
|
|
||
|
|
ul {
|
||
|
|
li {
|
||
|
|
font-size: 24rpx;
|
||
|
|
|
||
|
|
.floatRight {
|
||
|
|
float: right;
|
||
|
|
padding: 14rpx;
|
||
|
|
color: $u-primary;
|
||
|
|
font-size: 26rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.cardText {
|
||
|
|
font-size: 24rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
.priceText {
|
||
|
|
color: $u-primary;
|
||
|
|
font-size: 28rpx;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
.order-bottom{
|
||
|
|
background: #fff;
|
||
|
|
height: 120rpx;
|
||
|
|
width: 100%;
|
||
|
|
position: fixed;
|
||
|
|
bottom:0;
|
||
|
|
|
||
|
|
button{
|
||
|
|
width: 90%;
|
||
|
|
height: 80rpx;
|
||
|
|
margin: 0 auto;
|
||
|
|
background: #088FEB;
|
||
|
|
color: #fff;
|
||
|
|
margin-top: 20rpx;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</style>
|