shish 3 lat temu
rodzic
commit
51f4028edc

+ 2 - 1
ghsApp/src/pages.json

@@ -297,7 +297,8 @@
 				{ "path": "order", "style": { "navigationBarTitleText": "采购订单", "enablePullDownRefresh": true } },
 				{ "path": "order", "style": { "navigationBarTitleText": "采购订单", "enablePullDownRefresh": true } },
        			{ "path": "supplier", "style": { "navigationBarTitleText": "供应商", "enablePullDownRefresh": true } },
        			{ "path": "supplier", "style": { "navigationBarTitleText": "供应商", "enablePullDownRefresh": true } },
         		{ "path": "suppAdd", "style": { "navigationBarTitleText": "添加供应商", "enablePullDownRefresh": true } },
         		{ "path": "suppAdd", "style": { "navigationBarTitleText": "添加供应商", "enablePullDownRefresh": true } },
-				{ "path": "info", "style": { "navigationBarTitleText": "订单详情", "enablePullDownRefresh": true } }
+				{ "path": "info", "style": { "navigationBarTitleText": "订单详情", "enablePullDownRefresh": true } },
+				{ "path": "refund", "style": { "navigationBarTitleText": "申请退款", "enablePullDownRefresh": true } }
 			]
 			]
 		},
 		},
 		{
 		{

+ 11 - 2
ghsApp/src/pagesPurchase/info.vue

@@ -53,7 +53,10 @@
 				<view>结算状态:</view>
 				<view>结算状态:</view>
 					<view style="color:red;">欠款</view>
 					<view style="color:red;">欠款</view>
 					<view class="price">
 					<view class="price">
-					<button @click="goToClear(detailInfo)" class="admin-button-com">全部欠款单</button>
+						
+
+						<text @click="goToClear(detailInfo)" style="font-weight:normal;color:#3385FF;">查看全部欠款</text>
+
 					</view>
 					</view>
 				</view>
 				</view>
 				<view class="order-info_box" v-else>
 				<view class="order-info_box" v-else>
@@ -67,7 +70,9 @@
 			</view>
 			</view>
 
 
 			<view class="title">
 			<view class="title">
-				商品信息 <text @click="printAllLabel(detailInfo)" style="float:right;font-weight:normal;color:#3385FF;margin-right:10upx;">打全部标签</text>
+				商品信息 
+				<text @click="printAllLabel(detailInfo)" style="float:right;font-weight:normal;color:#3385FF;">打全部标签</text>
+				<text @click="goRefund(detailInfo)" style="float:right;font-weight:normal;color:#3385FF;margin-right:60upx;">申请退款</text>
 			</view>
 			</view>
 			<view class="module-com content-box">
 			<view class="module-com content-box">
 				<view class="commodity-view">
 				<view class="commodity-view">
@@ -208,6 +213,10 @@ export default {
 		};
 		};
 	},
 	},
 	methods: {
 	methods: {
+		goRefund(info){
+			this.$msg('开发中')
+			this.$util.pageTo({url:'/pagesPurchase/refund?id='+info.id})
+		},
 		printLabel(item){
 		printLabel(item){
 			let that = this
 			let that = this
 			that.$util.confirmModal({content:'确认打印'},() => {
 			that.$util.confirmModal({content:'确认打印'},() => {

+ 281 - 0
ghsApp/src/pagesPurchase/refund.vue

@@ -0,0 +1,281 @@
+<template>
+	<view class="app-content">
+		<view class="flex refund-item">
+			<view class="refund-label">退款方式:</view>
+			<view class="flex list">
+				<view class="flex" @tap="refundType=1" >
+					<view class="flex-center radioBtn" :class="refundType==1?'active':''">
+					</view>退货并退款</view>
+				<view style="margin-left: 30upx" class="flex" @tap="refundType=2">
+					<view class="flex-center radioBtn" :class="refundType==1?'':'active'">
+						</view>仅退款</view>
+			</view>
+		</view>
+		<view class="refund-item-list" v-if="refundType==1">
+			<view class="refund-label"><text></text>选择花材:</view>
+			<view>
+				<view class="list" v-for="(res,i) in product" :key="i">
+				<view class="flex list-title" >
+					<text class="product-name">{{res.name}}</text>
+					<text class="product-num">{{ `${parseFloat(res.xhNum)}` }}{{res.xhUnitName}}</text>
+					<text class="product-price">{{`${parseFloat(res.xhUnitPrice)}`}}元/{{res.xhUnitName}}</text>
+				</view>
+				<view class="flex list-val" style="font-size:26upx;font-weight:bold;">
+					<input type="number" placeholder="退货数" v-model="res.refundCount" placeholder-style="color:#CCCCCC" />
+					<text style="margin-left:10upx;">{{res.xhUnitName}}</text>
+					<text style="color:green;margin-left:20upx;">可退{{Number(res.xhNum)-Number(res.refundNum)}}{{res.xhUnitName}}</text>
+				</view>
+			</view>
+			</view>
+		</view>
+		<view class="flex refund-item">
+			<view class="refund-label">订单金额:</view>
+			<view class="list">
+				¥{{parseFloat(orderInfo.orderPrice)||0}}
+				<text style="margin-left:25upx;font-size:25upx;color:green;" v-if="Number(orderInfo.tkPrice)>0">已退¥{{orderInfo.tkPrice ? parseFloat(orderInfo.tkPrice) : 0}}</text>
+			</view>
+		</view>
+		<view class="flex refund-item">
+			<view class="refund-label">可退金额:</view>
+			<view class="list">¥{{couldRefundPrice}}</view>
+		</view>
+		<view class="flex refund-item">
+			<view class="refund-label">合计退款:</view>
+			<view class="list">¥{{refundPrice}}</view>
+		</view>
+		<view class="flex refund-item">
+			<view class="refund-label"><text></text>实际退款:</view>
+			<input type="digit" v-model="refundMoney">
+		</view>
+		<view class="refund-item">
+			<view class="refund-label">备注:</view>
+			<textarea v-model="remark" />
+		</view>
+		<view class="flex-center btn-box" style="margin-bottom:50upx;margin-top:20upx;">
+			<view class="flex-center btn" @tap="cancelRefund">取消</view>
+			<view class="flex-center btn active" @tap="confirmRefund" style="margin-left: 80upx">确定</view>
+		</view>
+	</view>
+</template>
+<script>
+import TuiListCell from "@/components/plugin/list-cell";
+import { getDetail,refund } from "@/api/order/index";
+export default {
+	name: "refund",
+	components: {
+		TuiListCell
+	},
+	data() {
+		return {
+			product:[],
+			refundMoney:0,
+			refundType:1,
+			remark:'',
+			orderInfo:{},
+			couldRefundPrice:0
+		};
+	},
+	onShow() {
+	},
+	computed:{
+		refundPrice(){
+			console.log('tttt')
+			let price = 0
+			if(this.product){
+				for (const item of this.product) {
+					if(Number(item.refundCount)>0){
+						let currentPrice = Number(item.refundCount)*Number(item.xhUnitPrice)
+						currentPrice.toFixed(2)
+						price = Number(price) + Number(currentPrice)
+						price.toFixed(2)
+					}
+				}
+			}
+			price = parseFloat(price.toFixed(2))
+			this.refundMoney = price
+			return price
+		}
+	},
+	watch:{
+	},
+	methods: {
+		cancelRefund(){
+			uni.navigateBack({delta: 1});
+		},
+		confirmRefund(){
+			let hasError = false
+			let product = []
+			let that = this
+			this.product.forEach(ele=>{
+				let currentRefundCont = ele.refundCount ? Number(ele.refundCount) :0
+				let currentNum = ele.xhNum ? Number(ele.xhNum) : 0
+				let hasRefundNum = ele.refundNum ? Number(ele.refundNum) : 0
+				let couldRefundNum = Number(currentNum) - Number(hasRefundNum)
+				if(Number(currentRefundCont) > Number(couldRefundNum)){
+					uni.showToast({title:ele.name+'超过可退数量',icon:'none'})
+					hasError = true;
+					return false
+				}
+				if(Number(ele.refundCount)>0){
+					product.push({
+						"productId":ele.productId,
+						"num":ele.refundCount,
+						"unitType":ele.unitType,
+						unitName:ele.xhUnitName,
+						unitType:ele.xhUnitType,
+						unitPrice:ele.xhUnitPrice
+					})
+				}
+			})
+			if(hasError){
+				return
+			}
+			if(this.$util.isEmpty(product)&&this.refundType==1){
+				uni.showToast({title:'请选择商品',icon:'none'})
+				return;
+			}
+			let refundParams = {
+				id:this.option.id,
+				product:JSON.stringify(product),
+				price:this.refundMoney,
+				remark:this.remark,
+				refundType:this.refundType,
+				getOriginalItem:1
+			};
+			that.$util.confirmModal({content:'确认退款?'},() => {
+				uni.showLoading({title: "提交中",mask:true})
+				refund(refundParams).then(res => {
+					if(res.code == 1){
+						uni.hideLoading()
+						uni.navigateTo({url:'/common/success',query:{titleType:1}})
+					}
+				})
+			})
+		},
+		async init() {
+			//getOriginalItem 取原有的花材结构(小菊的花材结构有变化)
+			const res = await getDetail({ id: this.option.id,getOriginalItem:1 })
+			this.orderInfo = res.data
+			
+			this.couldRefundPrice = Number(res.data.orderPrice) - Number(res.data.tkPrice)
+			this.couldRefundPrice = this.couldRefundPrice.toFixed(2)
+			this.couldRefundPrice = parseFloat(this.couldRefundPrice)
+
+			this.product = res.data.product.map(ele=>{
+				return {...ele,refundCount:null}
+			})
+		}
+	}
+};
+</script>
+<style lang="scss" scoped>
+	.app-content{
+		height: calc(100vh - 30upx * 2);
+		padding: 30upx;
+		background: #FFFFFF;
+		font-size: 30upx;
+		.radioBtn{
+			width: 30upx;
+			height: 30upx;
+			margin-right: 10upx;
+			border: 1upx solid #ddd;
+			border-radius: 50%;
+			&.active{
+				position: relative;
+				border: 1upx solid #3385ff;
+				&:after{
+					content: '';
+					position: absolute;
+					width: 18upx;
+					height: 18upx;
+					background: #3385ff;
+					border-radius: 50%;
+				}
+			}
+		}
+		.refund-item-list{
+			display: flex;
+			padding-bottom: 30upx;
+			padding-top: 30upx;
+			border-top: 1upx solid #e6e4e4;
+			border-bottom: 1upx solid #e6e4e4;
+			.refund-label{
+				width: 200upx;
+				color:#666666;
+				font-size:26upx;
+				text{color: red;}
+			}
+			.list{
+				margin-bottom: 10upx;
+				.list-title{
+					height: 60upx;
+					padding-bottom: 20upx;
+					font-size:26upx;
+					font-weight:bold;
+					.product-name{
+						overflow: hidden;
+						text-overflow:ellipsis;
+						white-space: nowrap;
+						width:190upx;
+					}
+					.product-price{
+						overflow: hidden;
+						text-overflow:ellipsis;
+						white-space: nowrap;
+						width:130upx;
+						margin-left:10upx;
+					}
+					.product-num{
+						width:90upx;
+						overflow: hidden;
+						text-overflow:ellipsis;
+						white-space: nowrap;
+						margin-left:10upx;
+					}
+				}
+				.list-val{
+					input{
+						width: 200upx;
+						border: 1upx solid #ddd;
+						text-align: center;
+						font-weight: normal;
+					}
+				}
+			}
+		}
+		.refund-item{
+			display: flex;
+			padding: 18upx 0;
+			.refund-label{
+				width: 200upx;
+				color:#666666;
+				font-size:26upx;
+				text{
+					color: red;
+				}
+			}
+			input{
+				border: 1upx solid #ddd;
+			}
+			textarea{
+				width: calc(100% - 210upx);
+				height:150upx;
+				border: 1upx solid #ddd;
+			}
+		}
+		.btn-box{
+			.btn{
+				width: 220upx;
+				height: 90upx;
+				border: 1upx solid #666666;
+				border-radius: 10upx;
+				color:#666666;
+				&.active{
+					background: #3385ff;
+					color: #fff;
+					border: 1upx solid #3385ff;
+				}
+			}
+		}
+	}
+</style>