平板端快衣店
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.
 
 
 
 
 

858 lines
24 KiB

<template>
<view class="container">
<uni-card :title="sales.userName == null ?'暂无':sales.userName" thumbnail="/static/images/dingdan/dd0.png">
<view class="uni-body" v-if="sales.province != null">{{sales.province + sales.area + sales.city + sales.receiveAddress}} </view>
</uni-card>
<view class="tui-order-item boxbg">
<view class="content-box">
<view class="shop-box" style="border-top:5px solid #eee;" v-for="(item,index) in list" :key="index">
<view class="shop-name" style="position: relative;">
<img :src="item.productPicture" alt=""
style="width: 140rpx;height: 140rpx;margin: 30rpx 0 0 30rpx;">
<view class="shop-productName">
<view style="color:#FF5809;">品名:{{item.productName}} ({{item.productSn == null ? '暂无':item.productSn}})</view>
<view>单价:{{item.purchasePrice == null ? '暂无':item.purchasePrice}} 数量:{{item.productCount == null ? '暂无':item.productCount}} 总价:{{item.discountAmount == null ? '暂无':item.discountAmount}}</view>
<view v-if="item.supplierName !=undefined">供应商:{{item.supplierName == null ? '暂无':item.supplierName}}</view>
</view>
</view>
<view class="shop-type">
<view class="shop-collapse" v-for="(item1,index1) in item.stockLogList1" :key='index1'>
<text>{{item1.attributeList | sliceMsg}}</text>
<text>数量:{{item1.productCount}}</text>
<!-- <u-number-box integer v-if="isReturn" :max="item1.productCount - " :min="0" -->
<u-number-box integer v-if="isReturn" :max="item1.productCount" :min="0"
v-model="item1.returnCount"></u-number-box>
</view>
</view>
</view>
</view>
<view class="tui-goods-info">
<view class="tui-price-flex tui-size32 tui-pbtm20">
<view class="tui-flex-shrink">总金额</view>
<view class="tui-goods-price">
<view class="tui-size-24">¥</view>
<view class="tui-price-large">{{ sales.totalAmount == null ?'暂无':sales.totalAmount }}</view>
</view>
</view>
<view class="tui-price-flex tui-size32">
<view class="tui-flex-shrink">实收金额</view>
<view class="tui-goods-price">
<view class="tui-size-24">¥</view>
<view class="tui-price-large">{{ sales.realAmount == null ?'暂无':sales.realAmount }}</view>
</view>
</view>
<view class="tui-price-flex tui-size32">
<view class="tui-flex-shrink">已收金额</view>
<view class="tui-goods-price">
<view class="tui-size-24">¥</view>
<view class="tui-price-large">{{ sales.alreadyEarn == null ?'暂无':sales.alreadyEarn }}</view>
</view>
</view>
<view class="tui-price-flex tui-size32">
<view class="tui-flex-shrink">其他费用</view>
<view class="tui-goods-price">
<view class="tui-size-24">¥</view>
<view class="tui-price-large">{{ sales.otherExpense == null ?'暂无':sales.otherExpense}}</view>
</view>
</view>
<view class="tui-price-flex tui-size32">
<view class="tui-flex-shrink">备注</view>
<view class="tui-goods-price">
<view class="tui-price-large">{{ sales.remark == null ?'暂无':sales.remark}}</view>
</view>
</view>
<view class="tui-price-flex tui-size32">
<view class="tui-flex-shrink">欠款</view>
<view class="tui-goods-price tui-primary-color">
<view class="tui-size-24">¥</view>
<view class="tui-price-large">{{ sales.noEarn == null ?'暂无':sales.noEarn}}</view>
</view>
</view>
<view class="tui-price-flex tui-size32" v-if="isReturn">
<view class="tui-flex-shrink">已选金额</view>
<view class="tui-goods-price">
<view class="tui-size-24">¥</view>
<input type="digit" style="width: 150rpx;text-align: right;border-bottom: 1px solid #eee;" v-model='changeAmount'>
<!-- <view class="tui-price-large">{{ changeAmount}}</view> -->
</view>
</view>
<view class="tui-price-flex tui-size32" v-if="isReturn">
<view class="tui-flex-shrink">退货金额</view>
<view class="tui-goods-price">
<view class="tui-size-24">¥</view>
<view class="tui-price-large">{{ returnAmount}}</view>
</view>
</view>
<view class="tui-price-flex tui-size32" v-if="editNoPrice">
<view class="tui-flex-shrink">还款金额</view>
<view class="tui-goods-price">
<view class="tui-price-large"><uni-easyinput v-model="newEarn" trim="all" @change="getNoPay" />
</view>
</view>
</view>
<view class="tui-price-flex tui-size32" v-if="isReturn">
<view class="tui-flex-shrink">平台取货</view>
<view class="tui-goods-price">
<uni-data-checkbox v-model="radio1" :localdata="sex"
@change="checkBoxChange"></uni-data-checkbox>
</view>
</view>
<!-- && orderByWorkerCandidates.length > 0 -->
<view class="tui-price-flex tui-size32" v-if="isReturn && radio1 == 0">
<view class="tui-flex-shrink">配送人员</view>
<view class="tui-goods-price">
<uni-combox :candidates="orderByWorkerCandidates" placeholder="请选择配送人员"
v-model="orderByWorker"></uni-combox>
</view>
</view>
</view>
</view>
<view class="tui-order-info boxbg" v-if="isgys">
<view class="tui-order-title">
退款历史
</view>
<view class="tui-order-content">
<u-collapse :value="[shopList[0].saleId]">
<u-collapse-item v-for="(item,index) in shopList" :key="index" :title="item.productName"
:name="item.saleId">
<view class="u-collapse-content" v-for="(val, index2) in item.stockLogList1" :key="index2">
<!-- <u-icon name="checkmark-circle" color="#5fd9ee" size="20" v-if="isReturn"></u-icon>
<u-icon name="checkmark-circle" color="#999" size="20" v-if="isReturn"></u-icon> -->
{{ val.attributeList.substr(1).substring(0,val.attributeList.substr(1).length-1).replace(/\"/g, "") }}
* {{val.productCount}}
<!-- <u-number-box integer v-if="isReturn" :max="val.productCount" :min="0"
v-model="val.returnCount"></u-number-box> -->
</view>
</u-collapse-item>
</u-collapse>
</view>
</view>
<view class="tui-order-info boxbg">
<view class="tui-order-title">
回款历史
</view>
<view class="tui-order-content" style="border-bottom: 1px solid #E0E0E0;" v-for="(item,index) in collection">
<view class="tui-order-flex">
<view class="tui-item-title">回款金额:</view>
<view class="tui-item-content">{{ item.amount }}</view>
</view>
<view class="tui-order-flex">
<view class="tui-item-title">操作人:</view>
<view class="tui-item-content">{{ item.createByName }}</view>
</view>
<view class="tui-order-flex">
<view class="tui-item-title">操作时间:</view>
<view class="tui-item-content">{{ item.createTime }}</view>
</view>
</view>
</view>
<view class="tui-order-info boxbg" v-if="isgys">
<view class="tui-order-title">
物流信息
</view>
<view class="tui-order-content">
<view class="tui-order-flex">
<view class="tui-item-title">订单号:</view>
<view class="tui-item-content">{{ sales.id }}</view>
</view>
<view class="tui-order-flex">
<view class="tui-item-title">物流单:</view>
<!-- <view class="tui-item-content">{{ order.kdOrderId }}</view> -->
<image show-menu-by-longpress
:src="orderXd.orderPicture"
@tap="showImage"></image>
</view>
<view class="tui-order-flex">
<view class="tui-item-title">创建时间:</view>
<view class="tui-item-content">{{ sales.createTime }}</view>
</view>
<view class="tui-order-flex">
<view class="tui-item-title">配送方式:</view>
<view class="tui-item-content">
{{ sales.transportType == 0 ? '物流' : sales.transportType == 1 ? '快递' : sales.transportType == 2 ? '自送' : sales.transportType == 3 ? '拼包':'发车' }}
</view>
</view>
<view class="tui-order-flex">
<view class="tui-item-title">配送公司:</view>
<view class="tui-item-content">
{{ sales.companyName == null ?'暂无':sales.companyName}}
</view>
</view>
<view class="tui-order-flex">
<view class="tui-item-title">配送人员:</view>
<view class="tui-item-content">
{{ sales.transCompany == null ?'暂无':sales.transCompany}}
</view>
</view>
<view class="tui-order-flex">
<view class="tui-item-title">配送状态:</view>
<view class="tui-item-content">
{{ sales.status == 0 ?'待抢单' :sales.status == 1 ?'待取货' :sales.status == 3 ?'待送达' :sales.status == 4 ?'已完成' :sales.status == 5 ?'下游客户待退货' :sales.status == 00 ?'退货待抢单' :sales.status == 01 ?'退货待取货' :sales.status == 03 ?'退货待送达' :sales.status == 04 ?'待确认退货' :sales.status == 6 ?'待配货' :'挂单'}}
</view>
</view>
</view>
</view>
<u-popup :show="popupShow" @close="close" @open="open" mode="bottom">
<view class="popupBox">
</view>
</u-popup>
<view class="tui-tabbar">
<view class="tui-btn-mr">
<kk-printer ref="kkprinter" :bufferData="bufferData" @onPrint="onPrint"></kk-printer>
</view>
<view class="tui-btn-mr" v-if="sales.status == 0 || sales.status == 1" @click="cancelOrder">取消订单</view>
<view class="tui-btn-mr" v-if="sales.status == 4" @click="returnGoods">{{ !isReturn ? '退货' : '确认退货'}}</view>
<view class="tui-btn-mr" @tap="inputDialogToggle()" v-if="!editNoPrice">回款</view>
</view>
<!-- 回款金额输入框 -->
<uni-popup ref="inputDialog" type="dialog">
<uni-popup-dialog ref="inputClose" mode="input" title="回款金额" placeholder="请输入回款金额"
@confirm="sureNpPay"></uni-popup-dialog>
</uni-popup>
</view>
</template>
<script>
import util from '@/components/kk-printer/utils/util.js';
import * as blesdk from '@/components/kk-printer/utils/bluetoolth.js';
import kkPrinter from '@/components/kk-printer/index.vue';
export default {
data() {
return {
radio1: 1,
sex: [{
text: '是',
value: 0
}, {
text: '否',
value: 1
}],
orderByWorkerCandidates: [],
orderByWorker: '',
bufferData: '',
show: false,
popupShow: false,
sales: {},
order: {},
list: [],
isReturn: false,
orderByWorkerList: [],
inventoryList: [],
shopList: [],
editNoPrice: false,
newEarn: 0,
qrcodeData: '',
isgys: true,
isReturnPrice: 1,
type: '',
orderXd:[],
collection:[]
}
},
components: {
kkPrinter
},
computed: {
returnAmount() {
if (this.changeAmount) {
if (this.sales.noEarn >= this.changeAmount) {
this.sales.newNoEarn = (this.sales.noEarn - this.changeAmount).toFixed(2);
return 0
} else {
this.sales.newNoEarn = 0
return (this.changeAmount - this.sales.noEarn).toFixed(2)
}
}
},
changeAmount() {
if (this.isReturn) {
let sum = 0
this.list.forEach(item1 => {
item1.stockLogList1.forEach(v => {
if (v.returnCount) {
sum = v.returnCount * item1.wholesalePrice + sum
}
});
})
return (sum * this.sales.discount * 0.1).toFixed(2)
} else {
return 0
}
},
},
filters: {
sliceMsg(val) {
var name = ''
if (typeof(val) == 'string') {
let newObj = JSON.parse(val)
for (let as in newObj) {
name += newObj[as] + '/'
}
}
return name;
},
maxNum(val){
if(val >= 10){
return 10
}else if(val < 0){
return 0
}
}
},
onLoad(option) {
if (option.id != null && option.id != undefined && option.id != "") {
if (option.type == 'gys') {
this.type = option.type;
this.tui.request("/app/purchase/getPurchaseAllData", "post", {
id: option.id
}, false, true).then((res) => {
if (res.code == 200) {
this.isgys = false
this.sales = res.result.purchase
this.list = res.result.purchaseDetails
} else {
this.tui.toast(res.message)
}
}).catch((res) => {})
} else {
this.tui.request("/app/sale/get/" + option.id, "GET", null, false, false).then((res) => {
if (res.code == 200 && res.result != null && res.result != undefined) {
this.sales = res.result.sale
this.list = res.result.saleDetailDTOList
this.order = res.result.customer
this.orderXd = res.result.orderXd
} else {
this.tui.toast(res.message)
}
}).catch((res) => {})
this.getReturnOrder(option.id)
this.collectionList(option.id)
}
}
},
methods: {
//回款历史
collectionList(id){
this.tui.request('/app/dealingRecord/getDealingsRecordList','post', {
orderId:id
},false,true).then(res => {
this.collection = res.result
}).catch(res => {});
},
onPrint(opt) {
let strCmd = blesdk.CreatCPCLPage(600, 1040, 1, 1);
strCmd += blesdk.addCPCLSETMAG(2, 2)
blesdk.addCPCLSETBOLD('bold')
strCmd += blesdk.addCPCLText('40', '30', '24', '0', 0, '沧州明珠商贸城--快衣店')
strCmd += blesdk.addCPCLSETMAG(3, 3)
blesdk.addCPCLSETBOLD('bold')
strCmd += blesdk.addCPCLText('50', '120', '24', '0', 0, '收:' + this.sales.userName)
strCmd += blesdk.addCPCLSETMAG(1, 1)
strCmd += blesdk.addCPCLText('50', '250', '24', '0', 0, "15257485325")
strCmd += blesdk.addCPCLSETMAG(2, 2)
blesdk.addCPCLSETBOLD('bold')
strCmd += blesdk.addCPCLText('50', '330', '24', '0', 0, this.sales.province + '/' + this.sales.city + '/' +
this.sales.area)
strCmd += blesdk.addCPCLSETMAG(1, 1)
strCmd += blesdk.addCPCLText('50', '410', '24', '0', 0, this.sales.receiveAddress)
strCmd += blesdk.addCPCLSETMAG(2, 2)
blesdk.addCPCLSETBOLD('bold')
strCmd += blesdk.addCPCLText('0', '490', '24', '0', 0, '——————————————————————————————')
strCmd += blesdk.addCPCLText('50', '570', '24', '0', 0, '发货方式:'+ this.sales.companyName)
strCmd += blesdk.addCPCLSETMAG(2, 2)
strCmd += blesdk.addCPCLText('0', '650', '24', '0', 0, '——————————————————————————————')
strCmd += blesdk.addCPCLText('50', '730', '24', '0', 0, '店铺:'+this.sales.shopName)
strCmd += blesdk.addCPCLText('50', '810', '24', '0', 0, '13521030702')
strCmd += blesdk.addCPCLText('50', '890', '24', '0', 0, '地址:早市10059')
strCmd += blesdk.addCPCLLocation(0);
strCmd += blesdk.addCPCLPrint();
this.bufferData = strCmd;
},
//点击图片放大
showImage() {
uni.previewImage({
urls: [this.orderXd.orderPicture],
current: this.orderXd.orderPicture
})
},
sureNpPay(e) {
if(this.type=='gys'){
this.tui.request('/app/purchase/editPayPrice','post', {
id:this.sales.id,
price:e
},false,true).then(res => {
uni.showToast({
title: res.message,
icon: 'none'
})
uni.navigateBack();
}).catch(res => {});
}else{
this.sales.alreadyEarn = (this.sales.alreadyEarn * 1) + (this.newEarn * 1);
this.tui.request('/app/sale/editPayPrice','post', {
id:this.sales.id,
price:e
},false,true).then(res => {
uni.showToast({
title: res.message,
icon: 'none'
})
uni.navigateBack();
}).catch(res => {});
}
},
//回款金额输入框
inputDialogToggle() {
this.$refs.inputDialog.open()
},
//回款按钮 this.type==gys时,是上游客户欠款接口。否则为销售单欠款接口
editnoEarn() {
this.editNoPrice = true;
},
getNoPay(en) {
if (en != undefined) {
if (0 < en && en <= this.sales.noEarn) {
this.sales.noEarn = this.sales.newEarn - en;
} else {
uni.showToast({
title: '请输入正确金额',
icon: "none"
});
}
}
},
getReturnOrder(id) {
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) {
this.inventoryList = res.result
this.inventoryList.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) {
this.shopList.push(...res.result.saleDetailDTOList);
}
}).catch((res) => {})
})
} else {
this.tui.toast(res.message)
}
}).catch((res) => {})
},
checkBoxChange() {
if (this.radio1 == 0 && this.orderByWorkerList.length == 0) {
this.transCompanyInput()
}
},
transCompanyInput() {
this.tui.request("/worker/getWXByCondition", "post", {}, false, false).then((res) => {
if (res.code == 200) {
this.orderByWorkerList = res.result;
this.orderByWorkerCandidates = res.result.map(item => {
return item.workerName
})
} else {
this.tui.toast(res.message)
}
})
},
open() {
this.popupShow = true
},
close() {
this.popupShow = false
},
sureReturn() {
this.list.forEach(item1 => {
item1.stockLogList1.forEach(item2 => {
if (item2.returnCount) {
item2.productCount = item2.returnCount
} else {
item2.productCount = 0
}
})
})
let worderId = ''
if (this.orderByWorker) {
for (let key in this.orderByWorkerList) {
if (this.orderByWorker == this.orderByWorkerList[key].workerName) {
worderId = this.orderByWorkerList[key].workerId
}
}
}
this.sales.noEarn = this.sales.newNoEarn;
this.sales.saleId = this.sales.id;
this.sales.totalAomount = this.returnAmount;
this.tui.request("/app/return/rtg", "post", {
returnSale: this.sales,
returnSaleDetailList: this.list,
transCompany: this.radio1 == 0 ? '99999999' : '',
orderByWorker: worderId,
isReturnPrice: 1
}, false, false).then((res) => {
uni.showToast({
title: res.message
});
if (res.code == 200) {
uni.navigateBack()
} else {
this.tui.toast(res.message)
}
}).catch((res) => {})
},
returnGoods() {
// for(let i=0;i<this.list.length;i++){
// this.inventoryList.forEach(item => {
// this.list[i].returnCount = this.list[i].productCount - item.productCount
// })
// }
if (this.isReturn) {
this.sureReturn()
} else {
this.isReturn = true;
}
},
getPrice(price) {
price = price || 0;
return price.toFixed(2)
},
logistics() {
this.tui.href("/pages/my/logistics/logistics")
},
cancelOrder() {
// 撤销订单
this.tui.modal("提示", "您确定要取消该订单吗?", true, (res) => {
if (res) {
this.tui.request("/app/sales/status", "POST", {
orderId: this.sales.id,
status: 3
}, true, true).then((res1) => {
if (res1.code == 200) {
this.tui.toast("取消订单成功")
uni.navigateBack()
} else {
this.tui.toast(res.message)
}
}).catch((res1) => {})
}
})
},
},
}
</script>
<style lang="scss" scoped>
.btn-wrap {
width: 164rpx;
height: 80rpx;
border-radius: 16upx;
border: 2upx solid $u-primary;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
}
.container {
padding-bottom: 118rpx;
.boxbg {
background-color: #fff;
margin: 30upx;
padding: 20upx;
border-radius: 10upx;
box-shadow: 0px 1px 10px 2px #e2e2e2;
}
.tui-order-item {
.u-collapse-content {
display: flex;
justify-content: space-between;
line-height: 30px;
}
.tui-goods-item {
width: 100%;
padding: 20rpx 30rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
.tui-goods-img {
width: 180rpx;
height: 180rpx;
display: block;
flex-shrink: 0;
}
.tui-goods-center {
flex: 1;
padding: 20rpx 8rpx;
box-sizing: border-box;
.tui-goods {
word-break: break-all;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
line-height: 32rpx;
}
.tui-goods-name {
font-weight: 700;
max-width: 310rpx;
font-size: 26rpx;
}
.tui-goods-attr {
font-size: 22rpx;
color: #888888;
padding-top: 20rpx;
}
}
.tui-price-right {
text-align: right;
font-size: 26upx;
font-weight: 700;
line-height: 30rpx;
padding-top: 160rpx;
}
}
.tui-goods-info {
width: 100%;
padding: 30rpx;
box-sizing: border-box;
background: #fff;
line-height: 26px;
.tui-price-flex {
display: flex;
align-items: center;
justify-content: space-between;
}
.tui-size32 {
font-size: 32rpx;
font-weight: 500;
}
.tui-size-24 {
font-size: 24rpx;
// line-height: 24rpx;
}
.tui-price-large {
font-size: 32rpx;
// line-height: 30rpx;
.lineText {
text-decoration: line-through;
font-size: 12px;
color: #888;
}
}
.tui-flex-shrink {
flex-shrink: 0;
}
.tui-goods-price {
width: 100%;
display: flex;
align-items: flex-end;
justify-content: flex-end;
font-size: 24rpx;
}
.tui-primary-color {
color: #EB0909;
}
.tui-pbtm20 {
padding-bottom: 20rpx;
}
}
}
.tui-order-info {
margin-top: 20rpx;
}
}
.tui-color-red {
color: #E41F19;
padding-right: 30rpx;
}
.tui-size24 {
padding-bottom: 20rpx;
font-size: 24rpx;
line-height: 24rpx;
color: #888;
}
.tui-order-title {
position: relative;
font-size: 28upx;
line-height: 28upx;
padding-left: 16upx;
box-sizing: border-box;
}
.tui-order-title::before {
content: '';
position: absolute;
left: 0;
top: 0;
border-left: 8upx solid $u-primary;
height: 120%;
border-radius: 4upx;
}
.tui-order-content {
width: 100%;
padding: 24rpx 30rpx;
box-sizing: border-box;
background: #fff;
font-size: 24rpx;
line-height: 30rpx;
}
.tui-order-flex {
display: flex;
padding-top: 18rpx;
}
.tui-order-flex:first-child {
padding-top: 0
}
.tui-item-title {
width: 132rpx;
flex-shrink: 0;
}
.tui-item-content {
color: #666;
line-height: 32rpx;
}
.tui-safe-area {
height: 1rpx;
padding-bottom: env(safe-area-inset-bottom);
}
.tui-tabbar {
width: 100%;
height: 98rpx;
background: #fff;
position: fixed;
left: 0;
bottom: 0;
display: flex;
align-items: center;
justify-content: flex-end;
font-size: 26rpx;
box-shadow: 0 0 1px rgba(0, 0, 0, .3);
padding-bottom: env(safe-area-inset-bottom);
z-index: 996;
}
.tui-btn-mr {
width:130rpx;
height: 60rpx;
background: #088FEB;
color: #fff;
border-radius: 10px;
line-height: 60rpx;
text-align: center;
margin-right: 30rpx;
}
.tui-contact {
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
}
.tui-contact image {
width: 36rpx;
height: 36rpx;
margin-right: 16rpx;
}
.content-box {
width: 100%;
height: auto;
background: #fff;
margin-bottom: 20rpx;
}
.shop-box {
width: 95%;
margin: 0 auto;
}
.shop-name {
width: 100%;
height: 200rpx;
line-height: 80rpx;
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
font-size: 28rpx;
font-weight: bold;
display: flex;
}
.shop-productName {
flex: 1;
display: flex;
flex-direction: column;
padding-left: 20rpx;
}
.shop-productName view {
height: 55rpx;
}
.shop-collapse {
display: flex;
height: 80rpx;
font-size: 26rpx;
line-height: 80rpx;
}
.shop-collapse text {
flex: 1;
text-align: center;
padding-right: 40rpx;
border-right: 1px solid #eee;
}
</style>