瀏覽代碼

✨ 发起退货:100%

YunaiV 1 年之前
父節點
當前提交
08b6b38c05
共有 5 個文件被更改,包括 83 次插入70 次删除
  1. 10 0
      pages.json
  2. 4 1
      pages/order/aftersale/detail.vue
  3. 48 69
      pages/order/aftersale/return-delivery.vue
  4. 8 0
      sheep/api/trade/afterSale.js
  5. 13 0
      sheep/api/trade/delivery.js

+ 10 - 0
pages.json

@@ -193,6 +193,16 @@
 						"title": "申请售后"
 						"title": "申请售后"
 					}
 					}
 				},
 				},
+                {
+                  "path": "aftersale/return-delivery",
+                  "style": {
+                    "navigationBarTitleText": "退货物流"
+                  },
+                  "meta": {
+                    "auth": true,
+                    "title": "退货物流"
+                  }
+                },
 				{
 				{
 					"path": "aftersale/list",
 					"path": "aftersale/list",
 					"style": {
 					"style": {

+ 4 - 1
pages/order/aftersale/detail.vue

@@ -89,10 +89,13 @@
 		<s-empty v-if="isEmpty(state.info) && state.loading" icon="/static/order-empty.png" text="暂无该订单售后详情" />
 		<s-empty v-if="isEmpty(state.info) && state.loading" icon="/static/order-empty.png" text="暂无该订单售后详情" />
 		<su-fixed bottom placeholder bg="bg-white" v-if="!isEmpty(state.info)">
 		<su-fixed bottom placeholder bg="bg-white" v-if="!isEmpty(state.info)">
 			<view class="foot_box">
 			<view class="foot_box">
-				<!-- TODO 功能缺失:填写退货信息 -->
         <button class="ss-reset-button btn" v-if="state.info.buttons?.includes('cancel')"
         <button class="ss-reset-button btn" v-if="state.info.buttons?.includes('cancel')"
                 @tap="onApply(state.info.id)">
                 @tap="onApply(state.info.id)">
           取消申请
           取消申请
+        </button>
+        <button class="ss-reset-button btn" v-if="state.info.buttons?.includes('delivery')"
+                @tap="sheep.$router.go('/pages/order/aftersale/return-delivery', { id: state.info.id })">
+          填写退货
         </button>
         </button>
 				<button class="ss-reset-button contcat-btn btn" @tap="sheep.$router.go('/pages/chat/index')">
 				<button class="ss-reset-button contcat-btn btn" @tap="sheep.$router.go('/pages/chat/index')">
           联系客服
           联系客服

+ 48 - 69
pages/order/aftersale/eturn-delivery.vue → pages/order/aftersale/return-delivery.vue

@@ -1,7 +1,5 @@
 <template>
 <template>
-	<s-layout>
-		<!-- title='退货物流' -->
-		<!-- 不知为何加上页面就错误 -->
+	<s-layout title="退货物流">
 		<view>
 		<view>
 			<form @submit="subRefund" report-submit='true'>
 			<form @submit="subRefund" report-submit='true'>
 				<view class='apply-return'>
 				<view class='apply-return'>
@@ -9,17 +7,18 @@
 						<view class='item acea-row row-between-wrapper' style="display: flex;align-items: center;">
 						<view class='item acea-row row-between-wrapper' style="display: flex;align-items: center;">
 							<view>物流公司</view>
 							<view>物流公司</view>
 							<picker mode='selector' class='num' @change="bindPickerChange" :value="state.expressIndex"
 							<picker mode='selector' class='num' @change="bindPickerChange" :value="state.expressIndex"
-								:range="state.expresses" range-key="name">
+                      :range="state.expresses" range-key="name">
 								<view class="picker acea-row row-between-wrapper">
 								<view class="picker acea-row row-between-wrapper">
 									<view class='reason'>{{ state.expresses[state.expressIndex].name }}</view>
 									<view class='reason'>{{ state.expresses[state.expressIndex].name }}</view>
-									<text class='iconfont icon-jiantou'></text>
+                  <!-- TODO 芋艿:这里样式有问题,少了 > 按钮 -->
+									<text class='iconfont icon-jiantou' />
 								</view>
 								</view>
 							</picker>
 							</picker>
 						</view>
 						</view>
 						<view class='item textarea acea-row row-between' style="display: flex;align-items: center;">
 						<view class='item textarea acea-row row-between' style="display: flex;align-items: center;">
 							<view>物流单号</view>
 							<view>物流单号</view>
 							<input placeholder='请填写物流单号' class='num' name="logisticsNo"
 							<input placeholder='请填写物流单号' class='num' name="logisticsNo"
-								placeholder-class='placeholder' />
+                     placeholder-class='placeholder' />
 						</view>
 						</view>
 						<button class='returnBnt bg-color ss-reset-button ui-BG-Main-Gradient sub-btn'
 						<button class='returnBnt bg-color ss-reset-button ui-BG-Main-Gradient sub-btn'
 							form-type="submit"
 							form-type="submit"
@@ -32,77 +31,57 @@
 </template>
 </template>
 
 
 <script setup>
 <script setup>
-	import sheep from '@/sheep';
-	import {
-		onLoad,
-		onReachBottom,
-		onPullDownRefresh
-	} from '@dcloudio/uni-app';
-	import {
-		computed,
-		watch,
-		ref,
-		reactive,
-		unref
-	} from 'vue';
-	const state = reactive({
-		expressIndex: 0,
-		expresses: [{
-				"id": 1,
-				"name": "申通快递"
-			},
-			{
-				"id": 2,
-				"name": "顺丰速运"
-			},
-			{
-				"id": 3,
-				"name": "中通快递"
-			},
-			{
-				"id": 4,
-				"name": "韵达快递"
-			}
-		], //模拟物流公司数组
+	import { onLoad } from '@dcloudio/uni-app';
+	import { reactive } from 'vue';
+  import sheep from '@/sheep';
+  import AfterSaleApi from '@/sheep/api/trade/afterSale';
+  import DeliveryApi from '@/sheep/api/trade/delivery';
+
+  const state = reactive({
+    id: 0, // 售后编号
+		expressIndex: 0, // 选中的 expresses 下标
+		expresses: [], // 可选的快递列表
 	})
 	})
 
 
 	function bindPickerChange(e) {
 	function bindPickerChange(e) {
 		state.expressIndex = e.detail.value;
 		state.expressIndex = e.detail.value;
 	}
 	}
 
 
-	function subRefund(e) {
-		const formData = e.detail.value;
-		console.log(formData, '表单数据');
-		console.log(state.expresses[state.expressIndex].id, '物流公司id');
-		return;
-		// 下面是参考逻辑
-		AfterSaleApi.deliveryAfterSale({
-			id: this.id,
-			logisticsId: this.expresses[this.expressIndex].id,
-			logisticsNo: formData.logisticsNo,
-		}).then(res => {
-			this.$util.Tips({
-				title: '填写退货成功',
-				icon: 'success'
-			}, {
-				tab: 5,
-				url: '/pages/users/user_return_detail/index?id=' + this.id
-			});
-		}).catch(err => {
-			return this.$util.Tips({
-				title: err
-			});
-		})
-	}
-
-	function getList() {
-
-	}
-	onLoad(() => {
-		// 拿退货编号
+	async function subRefund(e) {
+    let data = {
+      id: state.id,
+      logisticsId: state.expresses[state.expressIndex].id,
+      logisticsNo: e.detail.value.logisticsNo,
+    };
+    const { code } = await AfterSaleApi.deliveryAfterSale(data);
+    if (code !== 0) {
+      return;
+    }
+    uni.showToast({
+      title: '填写退货成功',
+    });
+    sheep.$router.go('/pages/order/aftersale/detail', { id: state.id });
+	}
+
+  // 获得快递物流列表
+	async function getExpressList() {
+    const { code, data } = await DeliveryApi.getDeliveryExpressList();
+    if (code !== 0) {
+      return;
+    }
+    state.expresses = data;
+	}
+
+	onLoad(options => {
+    if (!options.id) {
+      sheep.$helper.toast(`缺少订单信息,请检查`);
+      return
+    }
+    state.id = options.id;
+    // 获得快递物流列表
+    getExpressList();
 	})
 	})
 </script>
 </script>
-
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 	.apply-return {
 	.apply-return {
 		padding: 20rpx 30rpx 70rpx 30rpx;
 		padding: 20rpx 30rpx 70rpx 30rpx;

+ 8 - 0
sheep/api/trade/afterSale.js

@@ -38,6 +38,14 @@ const AfterSaleApi = {
         afterSaleId,
         afterSaleId,
       },
       },
     });
     });
+  },
+  // 退回货物
+  deliveryAfterSale: (data) => {
+    return request({
+      url: `/app-api/trade/after-sale/delivery`,
+      method: 'PUT',
+      data,
+    });
   }
   }
 };
 };
 
 

+ 13 - 0
sheep/api/trade/delivery.js

@@ -0,0 +1,13 @@
+import request from '@/sheep/request';
+
+const DeliveryApi = {
+  // 获得快递公司列表
+  getDeliveryExpressList: () => {
+    return request({
+      url: `/app-api/trade/delivery/express/list`,
+      method: 'get',
+    });
+  }
+};
+
+export default DeliveryApi;