Преглед изворни кода

我的 优惠券和积分数据 积分列表 售后订单列表 售后订单详情 隐藏手机号绑定弹窗

落日晚风 пре 1 година
родитељ
комит
ef254d2d3c

+ 341 - 343
pages/order/aftersale/detail.vue

@@ -1,357 +1,355 @@
 <!-- 售后详情 -->
 <template>
-  <s-layout title="售后详情" :navbar="!isEmpty(state.info) && state.loading ? 'inner' : 'normal'">
-    <view class="content_box" v-if="!isEmpty(state.info) && state.loading">
-      <!-- 步骤条 -->
-      <view
-        class="steps-box ss-flex"
-        :style="[
+	<s-layout title="售后详情" :navbar="!isEmpty(state.info) && state.loading ? 'inner' : 'normal'">
+		<view class="content_box" v-if="!isEmpty(state.info) && state.loading">
+			<!-- 步骤条 -->
+			<!-- 这个没找到替换方案 -->
+			<view class="steps-box ss-flex" :style="[
           {
             marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
             paddingTop: Number(statusBarHeight + 88) + 'rpx',
           },
-        ]"
-      >
-        <!-- <uni-steps :options="state.list" :active="state.active" active-color="#fff" /> -->
-        <view class="ss-flex">
-          <view class="steps-item" v-for="(item, index) in state.list" :key="index">
-            <view class="ss-flex">
-              <text
-                class="sicon-circleclose"
-                v-if="
+        ]">
+				<!-- <uni-steps :options="state.list" :active="state.active" active-color="#fff" /> -->
+				<view class="ss-flex">
+					<view class="steps-item" v-for="(item, index) in state.list" :key="index">
+						<view class="ss-flex">
+							<text class="sicon-circleclose" v-if="
                   (state.list.length - 1 == index && state.info.aftersale_status === -2) ||
                   (state.list.length - 1 == index && state.info.aftersale_status === -1)
-                "
-              ></text>
-              <text
-                class="sicon-circlecheck"
-                v-else
-                :class="state.active >= index ? 'activity-color' : 'info-color'"
-              ></text>
-
-              <view
-                v-if="state.list.length - 1 != index"
-                class="line"
-                :class="state.active >= index ? 'activity-bg' : 'info-bg'"
-              ></view>
-            </view>
-            <view
-              class="steps-item-title"
-              :class="state.active >= index ? 'activity-color' : 'info-color'"
-              >{{ item.title }}</view
-            >
-          </view>
-        </view>
-      </view>
-
-      <!-- 服务状态 -->
-      <view
-        class="status-box ss-flex ss-col-center ss-row-between ss-m-x-20"
-        @tap="sheep.$router.go('/pages/order/aftersale/log', { id: state.aftersaleId })"
-      >
-        <view class="">
-          <view class="status-text">{{ state.info.aftersale_status_desc }}</view>
-          <view class="status-time">{{ state.info.update_time }}</view>
-        </view>
-        <text class="ss-iconfont _icon-forward" style="color: #666"></text>
-      </view>
-
-      <!-- 退款金额 -->
-      <view class="aftersale-money ss-flex ss-col-center ss-row-between">
-        <view class="aftersale-money--title">退款总额</view>
-        <view class="aftersale-money--num">¥{{ state.info.refund_fee }}</view>
-      </view>
-      <!-- 服务商品 -->
-      <view class="order-shop">
-        <s-goods-item
-          :title="state.info.goods_title"
-          :price="state.info.goods_price"
-          :img="state.info.goods_image"
-          priceColor="#333333"
-          :titleWidth="480"
-          :skuText="state.info.goods_sku_text"
-          :num="state.info.goods_num"
-        ></s-goods-item>
-      </view>
-
-      <!-- 服务内容 -->
-      <view class="aftersale-content">
-        <view class="aftersale-item ss-flex ss-col-center">
-          <view class="item-title">服务单号:</view>
-          <view class="item-content ss-m-r-16">{{ state.info.aftersale_sn }}</view>
-          <button class="ss-reset-button copy-btn" @tap="onCopy">复制</button>
-        </view>
-        <view class="aftersale-item ss-flex ss-col-center">
-          <view class="item-title">申请时间:</view>
-          <view class="item-content">{{ state.info.create_time }}</view>
-        </view>
-        <view class="aftersale-item ss-flex ss-col-center">
-          <view class="item-title">售后类型:</view>
-          <view class="item-content">{{ state.info.type_text }}</view>
-        </view>
-        <view class="aftersale-item ss-flex ss-col-center">
-          <view class="item-title">申请原因:</view>
-          <view class="item-content">{{ state.info.reason }}</view>
-        </view>
-        <view class="aftersale-item ss-flex ss-col-center">
-          <view class="item-title">相关描述:</view>
-          <view class="item-content">{{ state.info.content }}</view>
-        </view>
-      </view>
-    </view>
-    <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)">
-      <view class="foot_box">
-        <button
-          class="ss-reset-button btn"
-          v-if="state.info.btns?.includes('cancel')"
-          @tap="onApply(state.info.id)"
-          >取消申请</button
-        >
-        <!-- <button
-          class="ss-reset-button btn"
-          v-if="state.info.btns?.includes('delete')"
-          @tap="onDelete(state.info.id)"
-          >删除</button
-        > -->
-        <button class="ss-reset-button contcat-btn btn" @tap="sheep.$router.go('/pages/chat/index')"
-          >联系客服</button
-        >
-      </view>
-    </su-fixed>
-  </s-layout>
+                "></text>
+							<text class="sicon-circlecheck" v-else
+								:class="state.active >= index ? 'activity-color' : 'info-color'"></text>
+
+							<view v-if="state.list.length - 1 != index" class="line"
+								:class="state.active >= index ? 'activity-bg' : 'info-bg'"></view>
+						</view>
+						<view class="steps-item-title" :class="state.active >= index ? 'activity-color' : 'info-color'">
+							{{ item.title }}
+						</view>
+					</view>
+				</view>
+			</view>
+
+			<!-- 服务状态 -->
+			<!-- 			<view class="status-box ss-flex ss-col-center ss-row-between ss-m-x-20"
+				@tap="sheep.$router.go('/pages/order/aftersale/log', { id: state.aftersaleId })">
+				<view class="">
+					<view class="status-text">{{ state.info.aftersale_status_desc }}</view>
+					<view class="status-time">{{ state.info.update_time }}</view>
+				</view>
+				<text class="ss-iconfont _icon-forward" style="color: #666"></text>
+			</view> -->
+
+			<!-- 退款金额 -->
+			<view class="aftersale-money ss-flex ss-col-center ss-row-between">
+				<view class="aftersale-money--title">退款总额</view>
+				<view class="aftersale-money--num">¥{{ state.info.refundPrice/100 }}</view>
+			</view>
+			<!-- 服务商品 -->
+			<view class="order-shop">
+				<!-- 		<s-goods-item :title="state.info.goods_title" :price="state.info.goods_price"
+					:img="state.info.goods_image" priceColor="#333333" :titleWidth="480"
+					:skuText="state.info.goods_sku_text" :num="state.info.goods_num"></s-goods-item> -->
+				<s-goods-item :img=" state.info.picUrl" :title=" state.info.spuName" priceColor="#333333"
+					:titleWidth="480" :skuText=" state.info.properties.reduce((a,b)=>a+b.valueName+' ','')"
+					:price=" state.info.refundPrice/100" :num=" state.info.count"></s-goods-item>
+			</view>
+
+			<!-- 服务内容 -->
+			<view class="aftersale-content">
+				<view class="aftersale-item ss-flex ss-col-center">
+					<view class="item-title">服务单号:</view>
+					<view class="item-content ss-m-r-16">{{ state.info.no }}</view>
+					<button class="ss-reset-button copy-btn" @tap="onCopy">复制</button>
+				</view>
+				<view class="aftersale-item ss-flex ss-col-center">
+					<view class="item-title">申请时间:</view>
+					<view class="item-content">
+						{{ sheep.$helper.timeFormat(state.info.createTime, 'yyyy-mm-dd hh:MM:ss') }}
+					</view>
+				</view>
+				<view class="aftersale-item ss-flex ss-col-center">
+					<view class="item-title">售后类型:</view>
+					<view class="item-content">{{ status2[state.info.way] }}</view>
+				</view>
+				<view class="aftersale-item ss-flex ss-col-center">
+					<view class="item-title">申请原因:</view>
+					<view class="item-content">{{ state.info.applyReason }}</view>
+				</view>
+				<view class="aftersale-item ss-flex ss-col-center">
+					<view class="item-title">相关描述:</view>
+					<view class="item-content">{{ state.info.applyDescription }}</view>
+				</view>
+			</view>
+		</view>
+		<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)">
+			<view class="foot_box">
+				<button class="ss-reset-button btn" v-if="state.info.btns?.includes('cancel')"
+					@tap="onApply(state.info.id)">取消申请</button>
+				<button class="ss-reset-button btn" v-if="state.info.btns?.includes('delete')"
+					@tap="onDelete(state.info.id)">删除</button>
+				<button class="ss-reset-button contcat-btn btn"
+					@tap="sheep.$router.go('/pages/chat/index')">联系客服</button>
+			</view>
+		</su-fixed> -->
+	</s-layout>
 </template>
 
 <script setup>
-  import sheep from '@/sheep';
-  import { onLoad } from '@dcloudio/uni-app';
-  import { reactive } from 'vue';
-  import { isEmpty } from 'lodash';
-
-  const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
-  const headerBg = sheep.$url.css('/static/img/shop/order/order_bg.png');
-  const state = reactive({
-    active: 0,
-    aftersaleId: 0,
-    info: {},
-    list: [
-      {
-        title: '提交申请',
-      },
-      {
-        title: '处理中',
-      },
-    ],
-    loading: false,
-  });
-
-  function onApply(orderId) {
-    uni.showModal({
-      title: '提示',
-      content: '确定要取消此申请吗?',
-      success: async function (res) {
-        if (res.confirm) {
-          const { error } = await sheep.$api.order.aftersale.cancel(orderId);
-          if (error === 0) {
-            getDetail(state.aftersaleId);
-          }
-        }
-      },
-    });
-  }
-
-  function onDelete(orderId) {
-    uni.showModal({
-      title: '提示',
-      content: '确定要删除吗?',
-      success: async function (res) {
-        if (res.confirm) {
-          const { error } = await sheep.$api.order.aftersale.delete(orderId);
-          if (error === 0) {
-            sheep.$router.back();
-          }
-        }
-      },
-    });
-  }
-  const onCopy = () => {
-    sheep.$helper.copyText(state.info.aftersale_sn);
-  };
-  async function getDetail(id) {
-    const { error, data } = await sheep.$api.order.aftersale.detail(id);
-    state.loading = true;
-    if (error === 0) {
-      state.info = data;
-      if (state.info.aftersale_status === -2 || state.info.aftersale_status === -1) {
-        state.list.push({ title: state.info.aftersale_status_text });
-        state.active = 2;
-      } else {
-        state.list.push({ title: '完成' });
-        state.active = state.info.aftersale_status;
-      }
-    } else {
-      state.info = null;
-    }
-  }
-  onLoad((options) => {
-    state.aftersaleId = options.id;
-    getDetail(options.id);
-  });
+	import sheep from '@/sheep';
+	import {
+		onLoad
+	} from '@dcloudio/uni-app';
+	import {
+		reactive
+	} from 'vue';
+	import {
+		isEmpty
+	} from 'lodash';
+
+	const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
+	const headerBg = sheep.$url.css('/static/img/shop/order/order_bg.png');
+	const state = reactive({
+		active: 0,
+		aftersaleId: 0,
+		info: {},
+		list: [{
+				title: '提交申请',
+			},
+			{
+				title: '处理中',
+			},
+		],
+		loading: false,
+	});
+
+	const status2 = {
+		10: '仅退款',
+		20: '退货退款'
+	}
+
+	function onApply(orderId) {
+		uni.showModal({
+			title: '提示',
+			content: '确定要取消此申请吗?',
+			success: async function(res) {
+				if (res.confirm) {
+					const {
+						error
+					} = await sheep.$api.order.aftersale.cancel(orderId);
+					if (error === 0) {
+						getDetail(state.aftersaleId);
+					}
+				}
+			},
+		});
+	}
+
+	function onDelete(orderId) {
+		uni.showModal({
+			title: '提示',
+			content: '确定要删除吗?',
+			success: async function(res) {
+				if (res.confirm) {
+					const {
+						error
+					} = await sheep.$api.order.aftersale.delete(orderId);
+					if (error === 0) {
+						sheep.$router.back();
+					}
+				}
+			},
+		});
+	}
+	const onCopy = () => {
+		sheep.$helper.copyText(state.info.aftersale_sn);
+	};
+	async function getDetail(id) {
+		const {
+			code,
+			data
+		} = await sheep.$api.order.aftersale.detail(id);
+		state.loading = true;
+		if (code === 0) {
+			state.info = data;
+			if (state.info.aftersale_status === -2 || state.info.aftersale_status === -1) {
+				state.list.push({
+					title: state.info.aftersale_status_text
+				});
+				state.active = 2;
+			} else {
+				state.list.push({
+					title: '完成'
+				});
+				state.active = state.info.aftersale_status;
+			}
+		} else {
+			state.info = null;
+		}
+	}
+	onLoad((options) => {
+		state.aftersaleId = options.id;
+		getDetail(options.id);
+	});
 </script>
 
 <style lang="scss" scoped>
-  // 步骤条
-  .steps-box {
-    width: 100%;
-    height: 190rpx;
-    background: v-bind(headerBg) no-repeat,
-      linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-    background-size: 750rpx 100%;
-    padding-left: 72rpx;
-
-    .steps-item {
-      .sicon-circleclose {
-        font-size: 24rpx;
-        color: #fff;
-      }
-      .sicon-circlecheck {
-        font-size: 24rpx;
-      }
-      .steps-item-title {
-        font-size: 24rpx;
-        font-weight: 400;
-        margin-top: 16rpx;
-        margin-left: -36rpx;
-        width: 100rpx;
-        text-align: center;
-      }
-    }
-  }
-  .activity-color {
-    color: #fff;
-  }
-  .info-color {
-    color: rgba(#fff, 0.4);
-  }
-  .activity-bg {
-    background: #fff;
-  }
-  .info-bg {
-    background: rgba(#fff, 0.4);
-  }
-
-  .line {
-    width: 270rpx;
-    height: 4rpx;
-  }
-
-  // 服务状态
-  .status-box {
-    position: relative;
-    z-index: 3;
-    background-color: #fff;
-    border-radius: 20rpx 20rpx 0px 0px;
-    padding: 20rpx;
-    margin-top: -20rpx;
-
-    .status-text {
-      font-size: 28rpx;
-
-      font-weight: 500;
-      color: rgba(51, 51, 51, 1);
-      margin-bottom: 20rpx;
-    }
-
-    .status-time {
-      font-size: 24rpx;
-
-      font-weight: 400;
-      color: rgba(153, 153, 153, 1);
-    }
-  }
-
-  // 退款金额
-  .aftersale-money {
-    background-color: #fff;
-    height: 98rpx;
-    padding: 0 20rpx;
-    margin: 20rpx;
-
-    .aftersale-money--title {
-      font-size: 28rpx;
-
-      font-weight: 500;
-      color: rgba(51, 51, 51, 1);
-    }
-
-    .aftersale-money--num {
-      font-size: 28rpx;
-      font-family: OPPOSANS;
-      font-weight: 500;
-      color: #ff3000;
-    }
-  }
-
-  // order-shop
-  .order-shop {
-    padding: 20rpx;
-    background-color: #fff;
-    margin: 0 20rpx 20rpx 20rpx;
-  }
-
-  // 服务内容
-  .aftersale-content {
-    background-color: #fff;
-    padding: 20rpx;
-    margin: 0 20rpx;
-
-    .aftersale-item {
-      height: 60rpx;
-
-      .copy-btn {
-        background: #eeeeee;
-        color: #333;
-        border-radius: 20rpx;
-        width: 75rpx;
-        height: 40rpx;
-        font-size: 22rpx;
-      }
-
-      .item-title {
-        color: #999;
-        font-size: 28rpx;
-      }
-
-      .item-content {
-        color: #333;
-        font-size: 28rpx;
-      }
-    }
-  }
-
-  // 底部功能
-  .foot_box {
-    height: 100rpx;
-    background-color: #fff;
-    display: flex;
-    align-items: center;
-    justify-content: flex-end;
-
-    .btn {
-      width: 160rpx;
-      line-height: 60rpx;
-      background: rgba(238, 238, 238, 1);
-      border-radius: 30rpx;
-      padding: 0;
-      margin-right: 20rpx;
-      font-size: 26rpx;
-
-      font-weight: 400;
-      color: rgba(51, 51, 51, 1);
-    }
-  }
-</style>
+	// 步骤条
+	.steps-box {
+		width: 100%;
+		height: 190rpx;
+		background: v-bind(headerBg) no-repeat,
+			linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+		background-size: 750rpx 100%;
+		padding-left: 72rpx;
+
+		.steps-item {
+			.sicon-circleclose {
+				font-size: 24rpx;
+				color: #fff;
+			}
+
+			.sicon-circlecheck {
+				font-size: 24rpx;
+			}
+
+			.steps-item-title {
+				font-size: 24rpx;
+				font-weight: 400;
+				margin-top: 16rpx;
+				margin-left: -36rpx;
+				width: 100rpx;
+				text-align: center;
+			}
+		}
+	}
+
+	.activity-color {
+		color: #fff;
+	}
+
+	.info-color {
+		color: rgba(#fff, 0.4);
+	}
+
+	.activity-bg {
+		background: #fff;
+	}
+
+	.info-bg {
+		background: rgba(#fff, 0.4);
+	}
+
+	.line {
+		width: 270rpx;
+		height: 4rpx;
+	}
+
+	// 服务状态
+	.status-box {
+		position: relative;
+		z-index: 3;
+		background-color: #fff;
+		border-radius: 20rpx 20rpx 0px 0px;
+		padding: 20rpx;
+		margin-top: -20rpx;
+
+		.status-text {
+			font-size: 28rpx;
+
+			font-weight: 500;
+			color: rgba(51, 51, 51, 1);
+			margin-bottom: 20rpx;
+		}
+
+		.status-time {
+			font-size: 24rpx;
+
+			font-weight: 400;
+			color: rgba(153, 153, 153, 1);
+		}
+	}
+
+	// 退款金额
+	.aftersale-money {
+		background-color: #fff;
+		height: 98rpx;
+		padding: 0 20rpx;
+		margin: 20rpx;
+
+		.aftersale-money--title {
+			font-size: 28rpx;
+
+			font-weight: 500;
+			color: rgba(51, 51, 51, 1);
+		}
+
+		.aftersale-money--num {
+			font-size: 28rpx;
+			font-family: OPPOSANS;
+			font-weight: 500;
+			color: #ff3000;
+		}
+	}
+
+	// order-shop
+	.order-shop {
+		padding: 20rpx;
+		background-color: #fff;
+		margin: 0 20rpx 20rpx 20rpx;
+	}
+
+	// 服务内容
+	.aftersale-content {
+		background-color: #fff;
+		padding: 20rpx;
+		margin: 0 20rpx;
+
+		.aftersale-item {
+			height: 60rpx;
+
+			.copy-btn {
+				background: #eeeeee;
+				color: #333;
+				border-radius: 20rpx;
+				width: 75rpx;
+				height: 40rpx;
+				font-size: 22rpx;
+			}
+
+			.item-title {
+				color: #999;
+				font-size: 28rpx;
+			}
+
+			.item-content {
+				color: #333;
+				font-size: 28rpx;
+			}
+		}
+	}
+
+	// 底部功能
+	.foot_box {
+		height: 100rpx;
+		background-color: #fff;
+		display: flex;
+		align-items: center;
+		justify-content: flex-end;
+
+		.btn {
+			width: 160rpx;
+			line-height: 60rpx;
+			background: rgba(238, 238, 238, 1);
+			border-radius: 30rpx;
+			padding: 0;
+			margin-right: 20rpx;
+			font-size: 26rpx;
+
+			font-weight: 400;
+			color: rgba(51, 51, 51, 1);
+		}
+	}
+</style>

+ 229 - 226
pages/order/aftersale/list.vue

@@ -1,235 +1,238 @@
 <!-- 售后列表 -->
 <template>
-  <s-layout title="售后列表">
-    <!-- tab -->
-    <su-sticky bgColor="#fff">
-      <su-tabs
-        :list="tabMaps"
-        :scrollable="false"
-        @change="onTabsChange"
-        :current="state.currentTab"
-      ></su-tabs>
-    </su-sticky>
-    <s-empty v-if="state.pagination.total === 0" icon="/static/data-empty.png" text="暂无数据">
-    </s-empty>
-    <!-- 列表 -->
-    <view v-if="state.pagination.total > 0">
-      <view
-        class="list-box ss-m-y-20"
-        v-for="order in state.pagination.data"
-        :key="order.id"
-        @tap="sheep.$router.go('/pages/order/aftersale/detail', { id: order.id })"
-      >
-        <view class="order-head ss-flex ss-col-center ss-row-between">
-          <text class="no">服务单号:{{ order.aftersale_sn }}</text>
-          <text class="state">{{ order.aftersale_status_text }}</text>
-        </view>
-        <s-goods-item
-          :img="order.goods_image"
-          :title="order.goods_title"
-          :skuText="order.goods_sku_text"
-          :price="order.goods_price"
-          :num="order.goods_num"
-        ></s-goods-item>
-        <view class="apply-box ss-flex ss-col-center ss-row-between border-bottom ss-p-x-20">
-          <view class="ss-flex ss-col-center">
-            <view class="title ss-m-r-20">{{ order.type_text }}</view>
-            <view class="value">{{ order.aftersale_status_desc }}</view>
-          </view>
-          <text class="_icon-forward"></text>
-        </view>
-        <view class="tool-btn-box ss-flex ss-col-center ss-row-right ss-p-r-20">
-          <view>
-            <button
-              class="ss-reset-button tool-btn"
-              @tap.stop="onApply(order.id)"
-              v-if="order.btns.includes('cancel')"
-              >取消申请</button
-            >
-          </view>
-          <view>
-            <button
-              class="ss-reset-button tool-btn"
-              @tap.stop="onDelete(order.id)"
-              v-if="order.btns.includes('delete')"
-              >删除</button
-            >
-          </view>
-        </view>
-      </view>
-    </view>
-    <uni-load-more
-      v-if="state.pagination.total > 0"
-      :status="state.loadStatus"
-      :content-text="{
+	<s-layout title="售后列表">
+		<!-- tab -->
+		<su-sticky bgColor="#fff">
+			<su-tabs :list="tabMaps" :scrollable="false" @change="onTabsChange" :current="state.currentTab"></su-tabs>
+		</su-sticky>
+		<s-empty v-if="state.pagination.total === 0" icon="/static/data-empty.png" text="暂无数据">
+		</s-empty>
+		<!-- 列表 -->
+		<view v-if="state.pagination.total > 0">
+			<view class="list-box ss-m-y-20" v-for="order in state.pagination.data" :key="order.id"
+				@tap="sheep.$router.go('/pages/order/aftersale/detail', { id: order.id })">
+				<view class="order-head ss-flex ss-col-center ss-row-between">
+					<text class="no">服务单号:{{ order.no }}</text>
+					<text class="state">{{ status[order.status] }}</text>
+				</view>
+				<s-goods-item :img="order.picUrl" :title="order.spuName"
+					:skuText="order.properties.reduce((a,b)=>a+b.valueName+' ','')" :price="order.refundPrice/100"
+					:num="order.count"></s-goods-item>
+				<view class="apply-box ss-flex ss-col-center ss-row-between border-bottom ss-p-x-20">
+					<view class="ss-flex ss-col-center">
+						<!-- 此处需修改 -->
+						<view class="title ss-m-r-20">{{ status2[order.way] }}</view>
+						<!-- <view class="value">{{ order.aftersale_status_desc }}</view> -->
+						<view class="value">{{ order.applyReason }}</view>
+					</view>
+					<text class="_icon-forward"></text>
+				</view>
+				<!-- 				<view class="tool-btn-box ss-flex ss-col-center ss-row-right ss-p-r-20">
+					<view>
+						<button class="ss-reset-button tool-btn" @tap.stop="onApply(order.id)"
+							v-if="order.btns.includes('cancel')">取消申请</button>
+					</view>
+					<view>
+						<button class="ss-reset-button tool-btn" @tap.stop="onDelete(order.id)"
+							v-if="order.btns.includes('delete')">删除</button>
+					</view>
+				</view> -->
+			</view>
+		</view>
+		<uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
         contentdown: '上拉加载更多',
-      }"
-      @tap="loadmore"
-    />
-  </s-layout>
+      }" @tap="loadmore" />
+	</s-layout>
 </template>
 
 <script setup>
-  import sheep from '@/sheep';
-  import { onLoad, onReachBottom } from '@dcloudio/uni-app';
-  import { computed, reactive } from 'vue';
-  import _ from 'lodash';
-
-  const pagination = {
-    data: [],
-    current_page: 1,
-    total: 1,
-    last_page: 1,
-  };
-  const state = reactive({
-    currentTab: 0,
-    showApply: false,
-    pagination: {
-      data: [],
-      current_page: 1,
-      total: 1,
-      last_page: 1,
-    },
-    loadStatus: '',
-  });
-
-  const tabMaps = [
-    {
-      name: '全部',
-      value: 'all',
-    },
-    {
-      name: '申请中',
-      value: 'nooper',
-    },
-    {
-      name: '处理中',
-      value: 'ing',
-    },
-    {
-      name: '已完成',
-      value: 'completed',
-    },
-    {
-      name: '已拒绝',
-      value: 'refuse',
-    },
-  ];
-  // 切换选项卡
-  function onTabsChange(e) {
-    state.pagination = pagination
-    state.currentTab = e.index;
-    getOrderList();
-  }
-
-  // 获取售后列表
-  async function getOrderList(page = 1, list_rows = 5) {
-    state.loadStatus = 'loading';
-    let res = await sheep.$api.order.aftersale.list({
-      type: tabMaps[state.currentTab].value,
-      list_rows,
-      page,
-    });
-    if (res.error === 0) {
-        let orderList = _.concat(state.pagination.data, res.data.data);
-        state.pagination = {
-          ...res.data,
-          data: orderList,
-        };
-
-      if (state.pagination.current_page < state.pagination.last_page) {
-        state.loadStatus = 'more';
-      } else {
-        state.loadStatus = 'noMore';
-      }
-    }
-  }
-
-  function onApply(orderId) {
-    uni.showModal({
-      title: '提示',
-      content: '确定要取消此申请吗?',
-      success: async function (res) {
-        if (res.confirm) {
-          const { error } = await sheep.$api.order.aftersale.cancel(orderId);
-          if (error === 0) {
-            state.pagination = pagination
-            getOrderList();
-          }
-        }
-      },
-    });
-  }
-
-  function onDelete(orderId) {
-    uni.showModal({
-      title: '提示',
-      content: '确定要删除吗?',
-      success: async function (res) {
-        if (res.confirm) {
-          const { error } = await sheep.$api.order.aftersale.delete(orderId);
-          if (error === 0) {
-            state.pagination = pagination
-            getOrderList();
-          }
-        }
-      },
-    });
-  }
-
-  onLoad(async (options) => {
-    if (options.type) {
-      state.currentTab = options.type;
-    }
-    getOrderList();
-  });
-
-  // 加载更多
-  function loadmore() {
-    if (state.loadStatus !== 'noMore') {
-      getOrderList(state.pagination.current_page + 1);
-    }
-  }
-
-  // 上拉加载更多
-  onReachBottom(() => {
-    loadmore();
-  });
+	import sheep from '@/sheep';
+	import {
+		onLoad,
+		onReachBottom
+	} from '@dcloudio/uni-app';
+	import {
+		computed,
+		reactive
+	} from 'vue';
+	import _ from 'lodash';
+
+	const pagination = {
+		data: [],
+		current_page: 1,
+		total: 1,
+		last_page: 1,
+	};
+	const state = reactive({
+		currentTab: 0,
+		showApply: false,
+		pagination: {
+			data: [],
+			current_page: 1,
+			total: 1,
+			last_page: 1,
+		},
+		loadStatus: '',
+	});
+	// 字典需要登录 尚未接入 先用固定值代替
+	const status = {
+		10: '申请售后',
+		20: '商品待退货',
+		30: '商家待收货',
+		40: '等待退款',
+		50: '退款成功',
+		61: '买家取消',
+		62: '商家拒绝',
+		63: '商家拒收货'
+	}
+	const status2 = {
+		10: '仅退款',
+		20: '退货退款'
+	}
+	const tabMaps = [{
+			name: '全部',
+			value: 'all',
+		},
+		// {
+		//   name: '申请中',
+		//   value: 'nooper',
+		// },
+		// {
+		//   name: '处理中',
+		//   value: 'ing',
+		// },
+		// {
+		//   name: '已完成',
+		//   value: 'completed',
+		// },
+		// {
+		//   name: '已拒绝',
+		//   value: 'refuse',
+		// },
+	];
+	// 切换选项卡
+	function onTabsChange(e) {
+		state.pagination = pagination
+		state.currentTab = e.index;
+		getOrderList();
+	}
+
+	// 获取售后列表
+	async function getOrderList(page = 1, list_rows = 5) {
+		pagination.current_page = page;
+		state.loadStatus = 'loading';
+		let res = await sheep.$api.order.aftersale.list({
+			// type: tabMaps[state.currentTab].value,
+			pageSize: list_rows,
+			pageNo: page,
+		});
+		console.log(res, '未处理前售后列表数据')
+		if (res.code === 0) {
+			let orderList = _.concat(state.pagination.data, res.data.list);
+
+			state.pagination = {
+				total: res.data.total,
+				...res.data,
+				data: orderList,
+			};
+			console.log(state.pagination, '售后订单数据')
+			// if (state.pagination.current_page < state.pagination.last_page) {
+			state.loadStatus = 'more';
+			// } else {
+			// state.loadStatus = 'noMore';
+			// }
+		}
+	}
+
+	function onApply(orderId) {
+		uni.showModal({
+			title: '提示',
+			content: '确定要取消此申请吗?',
+			success: async function(res) {
+				if (res.confirm) {
+					const {
+						error
+					} = await sheep.$api.order.aftersale.cancel(orderId);
+					if (error === 0) {
+						state.pagination = pagination
+						getOrderList();
+					}
+				}
+			},
+		});
+	}
+
+	function onDelete(orderId) {
+		uni.showModal({
+			title: '提示',
+			content: '确定要删除吗?',
+			success: async function(res) {
+				if (res.confirm) {
+					const {
+						error
+					} = await sheep.$api.order.aftersale.delete(orderId);
+					if (error === 0) {
+						state.pagination = pagination
+						getOrderList();
+					}
+				}
+			},
+		});
+	}
+
+	onLoad(async (options) => {
+		if (options.type) {
+			state.currentTab = options.type;
+		}
+		getOrderList();
+	});
+
+	// 加载更多
+	function loadmore() {
+		// if (state.loadStatus !== 'noMore') {
+		getOrderList(pagination.current_page + 1);
+		// }
+	}
+
+	// 上拉加载更多
+	onReachBottom(() => {
+		loadmore();
+	});
 </script>
 
 <style lang="scss" scoped>
-  .list-box {
-    background-color: #fff;
-
-    .order-head {
-      padding: 0 25rpx;
-      height: 77rpx;
-    }
-
-    .apply-box {
-      height: 82rpx;
-
-      .title {
-        font-size: 24rpx;
-      }
-
-      .value {
-        font-size: 22rpx;
-        color: $dark-6;
-      }
-    }
-
-    .tool-btn-box {
-      height: 100rpx;
-
-      .tool-btn {
-        width: 160rpx;
-        height: 60rpx;
-        background: #f6f6f6;
-        border-radius: 30rpx;
-        font-size: 26rpx;
-        font-weight: 400;
-      }
-    }
-  }
-</style>
+	.list-box {
+		background-color: #fff;
+
+		.order-head {
+			padding: 0 25rpx;
+			height: 77rpx;
+		}
+
+		.apply-box {
+			height: 82rpx;
+
+			.title {
+				font-size: 24rpx;
+			}
+
+			.value {
+				font-size: 22rpx;
+				color: $dark-6;
+			}
+		}
+
+		.tool-btn-box {
+			height: 100rpx;
+
+			.tool-btn {
+				width: 160rpx;
+				height: 60rpx;
+				background: #f6f6f6;
+				border-radius: 30rpx;
+				font-size: 26rpx;
+				font-weight: 400;
+			}
+		}
+	}
+</style>

+ 266 - 268
pages/user/wallet/score.vue

@@ -1,281 +1,279 @@
 <!-- 页面  -->
 <template>
-  <s-layout class="wallet-wrap" title="我的积分" navbar="inner">
-    <view
-      class="header-box ss-flex ss-flex-col ss-row-center ss-col-center"
-      :style="[
+	<s-layout class="wallet-wrap" title="我的积分" navbar="inner">
+		<view class="header-box ss-flex ss-flex-col ss-row-center ss-col-center" :style="[
         {
           marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
           paddingTop: Number(statusBarHeight + 88) + 'rpx',
         },
-      ]"
-    >
-      <view class="header-bg"><view class="bg"></view></view>
-      <view class="score-box ss-flex-col ss-row-center ss-col-center">
-        <view class="ss-m-b-30">
-          <text class="all-title ss-m-r-8">当前积分</text>
-          <!-- <text class="cicon-help-o"></text> -->
-        </view>
-        <text class="all-num">{{ userInfo.score || 0 }}</text>
-      </view>
-    </view>
-    <!-- tab -->
-    <su-sticky :customNavHeight="sys_navBar">
-      <!-- 统计 -->
-      <view class="filter-box ss-p-x-30 ss-flex ss-col-center ss-row-between">
-        <uni-datetime-picker v-model="state.data" type="daterange" @change="onChangeTime" :end="state.today">
-          <button class="ss-reset-button date-btn">
-            <text>{{ dateFilterText }}</text>
-            <text class="cicon-drop-down ss-seldate-icon"></text>
-          </button>
-        </uni-datetime-picker>
-
-        <view class="total-box">
-          <view class="ss-m-b-10">总收入¥{{ state.pagination.income }}</view>
-          <view>总支出¥{{ -state.pagination.expense }}</view>
-        </view>
-      </view>
-      <su-tabs
-        :list="tabMaps"
-        @change="onChange"
-        :scrollable="false"
-        :current="state.currentTab"
-      ></su-tabs>
-    </su-sticky>
-    <!-- list -->
-    <view class="list-box">
-      <view v-if="state.pagination.total > 0">
-        <view
-          class="list-item ss-flex ss-col-center ss-row-between"
-          v-for="item in state.pagination.data"
-          :key="item.id"
-        >
-          <view class="ss-flex-col">
-            <view class="name">{{ item.event_text }}{{ item.memo ? '-' + item.memo : '' }}</view>
-            <view class="time">{{ item.create_time }}</view>
-          </view>
-          <view class="add" v-if="item.amount > 0">+{{ parseInt(item.amount) }}</view>
-          <view class="minus" v-else>{{ parseInt(item.amount) }}</view>
-        </view>
-      </view>
-      <s-empty v-else text="暂无数据" icon="/static/data-empty.png" />
-    </view>
-
-    <uni-load-more
-      v-if="state.pagination.total > 0"
-      :status="state.loadStatus"
-      :content-text="{
+      ]">
+			<view class="header-bg">
+				<view class="bg"></view>
+			</view>
+			<view class="score-box ss-flex-col ss-row-center ss-col-center">
+				<view class="ss-m-b-30">
+					<text class="all-title ss-m-r-8">当前积分</text>
+					<!-- <text class="cicon-help-o"></text> -->
+				</view>
+				<text class="all-num">{{ userInfo.point || 0 }}</text>
+			</view>
+		</view>
+		<!-- tab -->
+		<su-sticky :customNavHeight="sys_navBar">
+			<!-- 统计 -->
+			<!-- 			<view class="filter-box ss-p-x-30 ss-flex ss-col-center ss-row-between">
+				<uni-datetime-picker v-model="state.data" type="daterange" @change="onChangeTime" :end="state.today">
+					<button class="ss-reset-button date-btn">
+						<text>{{ dateFilterText }}</text>
+						<text class="cicon-drop-down ss-seldate-icon"></text>
+					</button>
+				</uni-datetime-picker>
+
+				<view class="total-box">
+					<view class="ss-m-b-10">总收入¥{{ state.pagination.income }}</view>
+					<view>总支出¥{{ -state.pagination.expense }}</view>
+				</view>
+			</view> -->
+			<su-tabs :list="tabMaps" @change="onChange" :scrollable="false" :current="state.currentTab"></su-tabs>
+		</su-sticky>
+		<!-- list -->
+		<view class="list-box">
+			<view v-if="state.pagination.total > 0">
+				<view class="list-item ss-flex ss-col-center ss-row-between" v-for="item in state.pagination.data"
+					:key="item.id">
+					<view class="ss-flex-col">
+						<view class="name">{{ item.title }}{{ item.description ? '-' + item.description : '' }}</view>
+						<view class="time">{{ sheep.$helper.timeFormat(item.createTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
+					</view>
+					<view class="add" v-if="item.point > 0">+{{ parseInt(item.point) }}</view>
+					<view class="minus" v-else>{{ parseInt(item.point) }}</view>
+				</view>
+			</view>
+			<s-empty v-else text="暂无数据" icon="/static/data-empty.png" />
+		</view>
+
+		<uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
         contentdown: '上拉加载更多',
-      }"
-      @tap="onLoadMore"
-    />
-  </s-layout>
+      }" @tap="onLoadMore" />
+	</s-layout>
 </template>
 
 <script setup>
-  import sheep from '@/sheep';
-  import { onLoad, onReachBottom } from '@dcloudio/uni-app';
-  import { computed, reactive } from 'vue';
-  import _ from 'lodash';
-  import dayjs from 'dayjs';
-  import { onPageScroll } from '@dcloudio/uni-app';
-  onPageScroll(() => {});
-
-  const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
-  const userInfo = computed(() => sheep.$store('user').userInfo);
-  const sys_navBar = sheep.$platform.navbar;
-
-  const pagination = {
-    data: [],
-    current_page: 1,
-    total: 1,
-    last_page: 1,
-    expense: 0,
-    income: 0,
-  };
-
-  const state = reactive({
-    currentTab: 0,
-    pagination,
-    loadStatus: '',
-    date: [],
-    today:'',
-  });
-
-  const tabMaps = [
-    {
-      name: '全部',
-      value: 'all',
-    },
-
-    {
-      name: '收入',
-      value: 'income',
-    },
-    {
-      name: '支出',
-      value: 'expense',
-    },
-  ];
-
-  const dateFilterText = computed(() => {
-    if (state.date[0] === state.date[1]) {
-      return state.date[0];
-    } else {
-      return state.date.join('~');
-    }
-  });
-
-  async function getLogList(page = 1, list_rows = 8) {
-    state.loadStatus = 'loading';
-    let res = await sheep.$api.user.wallet.log({
-      type: 'score',
-      list_rows,
-      page,
-      tab: tabMaps[state.currentTab].value,
-      date: appendTimeHMS(state.date),
-    });
-    if (res.error === 0) {
-      let list = _.concat(state.pagination.data, res.data.list.data);
-      state.pagination = {
-        ...res.data.list,
-        data: list,
-        income: res.data.income,
-        expense: res.data.expense,
-      };
-      if (state.pagination.current_page < state.pagination.last_page) {
-        state.loadStatus = 'more';
-      } else {
-        state.loadStatus = 'noMore';
-      }
-    }
-  }
-  onLoad(async (options) => {
-    state.today = dayjs().format('YYYY-MM-DD');
-    state.date = [state.today, state.today];
-    getLogList();
-  });
-
-  function onChange(e) {
-    state.pagination = pagination;
-    state.currentTab = e.index;
-    getLogList();
-  }
-  function onChangeTime(e) {
-    state.date[0] = e[0];
-    state.date[1] = e[e.length - 1];
-    state.pagination = pagination;
-    getLogList();
-  }
-
-  function appendTimeHMS(arr) {
-    return [arr[0] + ' 00:00:00', arr[1] + ' 23:59:59'];
-  }
-
-  function onLoadMore() {
-    if (state.loadStatus !== 'noMore') {
-      getLogList(state.pagination.current_page + 1);
-    }
-  }
-  onReachBottom(() => {
-    onLoadMore();
-  });
+	import sheep from '@/sheep';
+	import {
+		onLoad,
+		onReachBottom
+	} from '@dcloudio/uni-app';
+	import {
+		computed,
+		reactive
+	} from 'vue';
+	import _ from 'lodash';
+	import dayjs from 'dayjs';
+	import {
+		onPageScroll
+	} from '@dcloudio/uni-app';
+	onPageScroll(() => {});
+
+	const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
+	const userInfo = computed(() => sheep.$store('user').userInfo);
+	const sys_navBar = sheep.$platform.navbar;
+
+	const pagination = {
+		data: [],
+		current_page: 1,
+		total: 1,
+		last_page: 1,
+		expense: 0,
+		income: 0,
+	};
+
+	const state = reactive({
+		currentTab: 0,
+		pagination,
+		loadStatus: '',
+		date: [],
+		today: '',
+	});
+
+	const tabMaps = [{
+			name: '全部',
+			value: 'all',
+		},
+
+		// {
+		// 	name: '收入',
+		// 	value: 'income',
+		// },
+		// {
+		// 	name: '支出',
+		// 	value: 'expense',
+		// },
+	];
+
+	const dateFilterText = computed(() => {
+		if (state.date[0] === state.date[1]) {
+			return state.date[0];
+		} else {
+			return state.date.join('~');
+		}
+	});
+
+	async function getLogList(page = 1, list_rows = 8) {
+		pagination.current_page = page;
+		state.loadStatus = 'loading';
+		let res = await sheep.$api.user.wallet.log2({
+			// type: 'score',
+			pageSize: list_rows,
+			pageNo: page,
+			// tab: tabMaps[state.currentTab].value,
+			// date: appendTimeHMS(state.date),
+		});
+		console.log(res, '优惠券列表')
+		if (res.code === 0) {
+			let list = _.concat(state.pagination.data, res.data.list);
+			console.log(list, '处理后数据')
+			state.pagination = {
+				total: res.data.total,
+				...res.data.list,
+				data: list,
+				// income: res.data.income,
+				// expense: res.data.expense,
+			};
+			// if (state.pagination.current_page < state.pagination.last_page) {
+			state.loadStatus = 'more';
+			// } else {
+			// 	state.loadStatus = 'noMore';
+			// }
+		}
+	}
+	onLoad(async (options) => {
+		state.today = dayjs().format('YYYY-MM-DD');
+		state.date = [state.today, state.today];
+		getLogList();
+	});
+
+	function onChange(e) {
+		state.pagination = pagination;
+		state.currentTab = e.index;
+		getLogList();
+	}
+
+	function onChangeTime(e) {
+		state.date[0] = e[0];
+		state.date[1] = e[e.length - 1];
+		state.pagination = pagination;
+		getLogList();
+	}
+
+	function appendTimeHMS(arr) {
+		return [arr[0] + ' 00:00:00', arr[1] + ' 23:59:59'];
+	}
+
+	function onLoadMore() {
+		// if (state.loadStatus !== 'noMore') {
+		getLogList(pagination.current_page + 1);
+		// }
+	}
+	onReachBottom(() => {
+		onLoadMore();
+	});
 </script>
 
 <style lang="scss" scoped>
-  .header-box {
-    width: 100%;
-    background: linear-gradient(180deg, var(--ui-BG-Main) 0%, var(--ui-BG-Main-gradient) 100%)
-      no-repeat;
-    background-size: 750rpx 100%;
-    padding: 0 0 120rpx 0;
-    box-sizing: border-box;
-
-    .score-box {
-      height: 100%;
-
-      .all-num {
-        font-size: 50rpx;
-        font-weight: bold;
-        color: #fff;
-        font-family: OPPOSANS;
-      }
-
-      .all-title {
-        font-size: 26rpx;
-        font-weight: 500;
-        color: #fff;
-      }
-
-      .cicon-help-o {
-        color: #fff;
-        font-size: 28rpx;
-      }
-    }
-  }
-  // 筛选
-  .filter-box {
-    height: 114rpx;
-    background-color: $bg-page;
-
-    .total-box {
-      font-size: 24rpx;
-      font-weight: 500;
-      color: $dark-9;
-    }
-
-    .date-btn {
-      background-color: $white;
-      line-height: 54rpx;
-      border-radius: 27rpx;
-      padding: 0 20rpx;
-      font-size: 24rpx;
-      font-weight: 500;
-      color: $dark-6;
-
-      .ss-seldate-icon {
-        font-size: 50rpx;
-        color: $dark-9;
-      }
-    }
-  }
-
-  .list-box {
-    .list-item {
-      background: #fff;
-      border-bottom: 1rpx solid #dfdfdf;
-      padding: 30rpx;
-
-      .name {
-        font-size: 28rpx;
-
-        font-weight: 500;
-        color: rgba(102, 102, 102, 1);
-        line-height: 28rpx;
-        margin-bottom: 20rpx;
-      }
-
-      .time {
-        font-size: 24rpx;
-
-        font-weight: 500;
-        color: rgba(196, 196, 196, 1);
-        line-height: 24px;
-      }
-
-      .add {
-        font-size: 30rpx;
-
-        font-weight: 500;
-        color: #e6b873;
-      }
-
-      .minus {
-        font-size: 30rpx;
-
-        font-weight: 500;
-        color: $dark-3;
-      }
-    }
-  }
-</style>
+	.header-box {
+		width: 100%;
+		background: linear-gradient(180deg, var(--ui-BG-Main) 0%, var(--ui-BG-Main-gradient) 100%) no-repeat;
+		background-size: 750rpx 100%;
+		padding: 0 0 120rpx 0;
+		box-sizing: border-box;
+
+		.score-box {
+			height: 100%;
+
+			.all-num {
+				font-size: 50rpx;
+				font-weight: bold;
+				color: #fff;
+				font-family: OPPOSANS;
+			}
+
+			.all-title {
+				font-size: 26rpx;
+				font-weight: 500;
+				color: #fff;
+			}
+
+			.cicon-help-o {
+				color: #fff;
+				font-size: 28rpx;
+			}
+		}
+	}
+
+	// 筛选
+	.filter-box {
+		height: 114rpx;
+		background-color: $bg-page;
+
+		.total-box {
+			font-size: 24rpx;
+			font-weight: 500;
+			color: $dark-9;
+		}
+
+		.date-btn {
+			background-color: $white;
+			line-height: 54rpx;
+			border-radius: 27rpx;
+			padding: 0 20rpx;
+			font-size: 24rpx;
+			font-weight: 500;
+			color: $dark-6;
+
+			.ss-seldate-icon {
+				font-size: 50rpx;
+				color: $dark-9;
+			}
+		}
+	}
+
+	.list-box {
+		.list-item {
+			background: #fff;
+			border-bottom: 1rpx solid #dfdfdf;
+			padding: 30rpx;
+
+			.name {
+				font-size: 28rpx;
+
+				font-weight: 500;
+				color: rgba(102, 102, 102, 1);
+				line-height: 28rpx;
+				margin-bottom: 20rpx;
+			}
+
+			.time {
+				font-size: 24rpx;
+
+				font-weight: 500;
+				color: rgba(196, 196, 196, 1);
+				line-height: 24px;
+			}
+
+			.add {
+				font-size: 30rpx;
+
+				font-weight: 500;
+				color: #e6b873;
+			}
+
+			.minus {
+				font-size: 30rpx;
+
+				font-weight: 500;
+				color: $dark-3;
+			}
+		}
+	}
+</style>

+ 13 - 4
sheep/api/order.js

@@ -147,14 +147,23 @@ export default {
 				data,
 			}),
 		list: (params) =>
-			request({
-				url: 'order/aftersale',
+			request2({
+				url: 'trade/after-sale/page',
 				method: 'GET',
 				params,
 				custom: {
 					showLoading: false,
 				},
 			}),
+		// list: (params) =>
+		// 	request({
+		// 		url: 'order/aftersale',
+		// 		method: 'GET',
+		// 		params,
+		// 		custom: {
+		// 			showLoading: false,
+		// 		},
+		// 	}),
 		//取消售后
 		cancel: (id) =>
 			request({
@@ -169,8 +178,8 @@ export default {
 			}),
 		// 售后详情
 		detail: (id) =>
-			request({
-				url: 'order/aftersale/' + id,
+			request2({
+				url: 'trade/after-sale/get?id=' + id,
 				method: 'GET',
 			}),
 	},

+ 18 - 0
sheep/api/user.js

@@ -3,6 +3,15 @@ import request2 from '@/sheep/request2';
 import $platform from '@/sheep/platform';
 
 export default {
+	getUnused: () =>
+		request2({
+			url: 'promotion/coupon/get-unused-count',
+			method: 'GET',
+			custom: {
+				showLoading: false,
+				auth: true,
+			},
+		}),
 	profile: () =>
 		request2({
 			url: 'member/user/get',
@@ -375,11 +384,20 @@ export default {
 	wallet: {
 		log: (params) =>
 			request2({
+				// url: 'member/point/record/page',
 				url: 'pay/wallet-transaction/page',
 				method: 'GET',
 				params,
 				custom: {},
 			}),
+		log2: (params) =>
+			request2({
+				url: 'member/point/record/page',
+				// url: 'pay/wallet-transaction/page',
+				method: 'GET',
+				params,
+				custom: {},
+			}),
 		// log: (params) =>
 		// request({
 		// 	url: '/user/api/walletLog',

+ 148 - 145
sheep/components/s-user-card/s-user-card.vue

@@ -1,34 +1,31 @@
 <!-- 页面 -->
 <template>
-  <view class="ss-user-info-wrap ss-p-t-50">
-    <view class="ss-flex ss-col-center ss-row-between ss-m-b-20">
-      <view class="left-box ss-flex ss-col-center ss-m-l-36">
-        <view class="avatar-box ss-m-r-24">
-          <image
-            class="avatar-img"
-            :src="
+	<view class="ss-user-info-wrap ss-p-t-50">
+		<view class="ss-flex ss-col-center ss-row-between ss-m-b-20">
+			<view class="left-box ss-flex ss-col-center ss-m-l-36">
+				<view class="avatar-box ss-m-r-24">
+					<image class="avatar-img" :src="
               isLogin
                 ? sheep.$url.cdn(userInfo.avatar)
                 : sheep.$url.static('/static/img/shop/default_avatar.png')
-            "
-            mode="aspectFill"
-            @tap="sheep.$router.go('/pages/user/info')"
-          ></image>
-        </view>
-        <view>
-          <view class="nickname-box ss-flex ss-col-center">
-            <view class="nick-name ss-m-r-20">{{ userInfo?.nickname || nickname }}</view>
-          </view>
-        </view>
-      </view>
-      <view class="right-box ss-m-r-52">
-        <button class="ss-reset-button" @tap="showShareModal">
-          <text class="sicon-qrcode"></text>
-        </button>
-      </view>
-    </view>
+            " mode="aspectFill" @tap="sheep.$router.go('/pages/user/info')"></image>
+				</view>
+				<view>
+					<view class="nickname-box ss-flex ss-col-center">
+						<view class="nick-name ss-m-r-20">{{ userInfo?.nickname || nickname }}</view>
+					</view>
+				</view>
+			</view>
+			<view class="right-box ss-m-r-52">
+				<button class="ss-reset-button" @tap="showShareModal">
+					<text class="sicon-qrcode"></text>
+				</button>
+			</view>
+		</view>
 
-    <view
+
+		<!-- 提示绑定手机号 先隐藏 yudao 需要再修改 -->
+		<!--    <view
       class="bind-mobile-box ss-flex ss-row-between ss-col-center"
       v-if="isLogin && !userInfo.verification?.mobile"
     >
@@ -37,129 +34,135 @@
         <view class="mobile-title ss-m-l-20"> 点击绑定手机号确保账户安全 </view>
       </view>
       <button class="ss-reset-button bind-btn" @tap="onBind">去绑定</button>
-    </view>
-  </view>
+    </view> -->
+	</view>
 </template>
 
 <script setup>
-  /**
-   * 用户卡片
-   *
-   * @property {Number} leftSpace 									- 容器左间距
-   * @property {Number} rightSpace 									- 容器右间距
-   *
-   * @property {String} avatar 					- 头像
-   * @property {String} nickname 					- 昵称
-   * @property {String} vip		  				- 等级
-   * @property {String} collectNum 				- 收藏数
-   * @property {String} likeNum 					- 点赞数
-   *
-   *
-   */
-  import { computed, reactive } from 'vue';
-  import sheep from '@/sheep';
-  import { showShareModal, showAuthModal } from '@/sheep/hooks/useModal';
-
-  // 用户信息
-  const userInfo = computed(() => sheep.$store('user').userInfo);
-  console.log('用户信息',userInfo)
-
-  // 是否登录
-  const isLogin = computed(() => sheep.$store('user').isLogin);
-  // 接收参数
-  const props = defineProps({
-    background: {
-      type: String,
-      default: '',
-    },
-    // 头像
-    avatar: {
-      type: String,
-      default: '',
-    },
-    nickname: {
-      type: String,
-      default: '请先登录',
-    },
-    vip: {
-      type: [String, Number],
-      default: '1',
-    },
-    collectNum: {
-      type: [String, Number],
-      default: '1',
-    },
-    likeNum: {
-      type: [String, Number],
-      default: '1',
-    },
-  });
-
-  function onBind() {
-    showAuthModal('changeMobile');
-  }
+	/**
+	 * 用户卡片
+	 *
+	 * @property {Number} leftSpace 									- 容器左间距
+	 * @property {Number} rightSpace 									- 容器右间距
+	 *
+	 * @property {String} avatar 					- 头像
+	 * @property {String} nickname 					- 昵称
+	 * @property {String} vip		  				- 等级
+	 * @property {String} collectNum 				- 收藏数
+	 * @property {String} likeNum 					- 点赞数
+	 *
+	 *
+	 */
+	import {
+		computed,
+		reactive
+	} from 'vue';
+	import sheep from '@/sheep';
+	import {
+		showShareModal,
+		showAuthModal
+	} from '@/sheep/hooks/useModal';
+
+	// 用户信息
+	const userInfo = computed(() => sheep.$store('user').userInfo);
+	console.log('用户信息', userInfo)
+
+	// 是否登录
+	const isLogin = computed(() => sheep.$store('user').isLogin);
+	// 接收参数
+	const props = defineProps({
+		background: {
+			type: String,
+			default: '',
+		},
+		// 头像
+		avatar: {
+			type: String,
+			default: '',
+		},
+		nickname: {
+			type: String,
+			default: '请先登录',
+		},
+		vip: {
+			type: [String, Number],
+			default: '1',
+		},
+		collectNum: {
+			type: [String, Number],
+			default: '1',
+		},
+		likeNum: {
+			type: [String, Number],
+			default: '1',
+		},
+	});
+
+	function onBind() {
+		showAuthModal('changeMobile');
+	}
 </script>
 
 <style lang="scss" scoped>
-  .ss-user-info-wrap {
-    box-sizing: border-box;
-
-    .avatar-box {
-      width: 100rpx;
-      height: 100rpx;
-      border-radius: 50%;
-      overflow: hidden;
-
-      .avatar-img {
-        width: 100%;
-        height: 100%;
-      }
-    }
-
-    .nick-name {
-      font-size: 34rpx;
-      font-weight: 400;
-      color: #333333;
-      line-height: normal;
-    }
-
-    .vip-img {
-      width: 30rpx;
-      height: 30rpx;
-    }
-
-    .sicon-qrcode {
-      font-size: 40rpx;
-    }
-  }
-
-  .bind-mobile-box {
-    width: 100%;
-    height: 84rpx;
-    padding: 0 34rpx 0 44rpx;
-    box-sizing: border-box;
-    background: #ffffff;
-    box-shadow: 0px -8rpx 9rpx 0px rgba(#e0e0e0, 0.3);
-
-    .cicon-mobile-o {
-      font-size: 30rpx;
-      color: #ff690d;
-    }
-
-    .mobile-title {
-      font-size: 24rpx;
-      font-weight: 500;
-      color: #ff690d;
-    }
-
-    .bind-btn {
-      width: 100rpx;
-      height: 50rpx;
-      background: #ff6100;
-      border-radius: 25rpx;
-      font-size: 24rpx;
-      font-weight: 500;
-      color: #ffffff;
-    }
-  }
-</style>
+	.ss-user-info-wrap {
+		box-sizing: border-box;
+
+		.avatar-box {
+			width: 100rpx;
+			height: 100rpx;
+			border-radius: 50%;
+			overflow: hidden;
+
+			.avatar-img {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.nick-name {
+			font-size: 34rpx;
+			font-weight: 400;
+			color: #333333;
+			line-height: normal;
+		}
+
+		.vip-img {
+			width: 30rpx;
+			height: 30rpx;
+		}
+
+		.sicon-qrcode {
+			font-size: 40rpx;
+		}
+	}
+
+	.bind-mobile-box {
+		width: 100%;
+		height: 84rpx;
+		padding: 0 34rpx 0 44rpx;
+		box-sizing: border-box;
+		background: #ffffff;
+		box-shadow: 0px -8rpx 9rpx 0px rgba(#e0e0e0, 0.3);
+
+		.cicon-mobile-o {
+			font-size: 30rpx;
+			color: #ff690d;
+		}
+
+		.mobile-title {
+			font-size: 24rpx;
+			font-weight: 500;
+			color: #ff690d;
+		}
+
+		.bind-btn {
+			width: 100rpx;
+			height: 50rpx;
+			background: #ff6100;
+			border-radius: 25rpx;
+			font-size: 24rpx;
+			font-weight: 500;
+			color: #ffffff;
+		}
+	}
+</style>

+ 78 - 87
sheep/components/s-wallet-card/s-wallet-card.vue

@@ -1,16 +1,14 @@
 <template>
-  <view class="ss-wallet-menu-wrap ss-flex ss-col-center">
-    <view
-      class="menu-item ss-flex-1 ss-flex-col ss-row-center ss-col-center"
-      @tap="sheep.$router.go('/pages/user/wallet/money')"
-    >
-      <view class="value-box ss-flex ss-col-bottom">
-        <view class="value-text ss-line-1">{{ userInfo.money }}</view>
-        <view class="unit-text ss-m-l-6">元</view>
-      </view>
-      <view class="menu-title ss-m-t-28">账户余额</view>
-    </view>
-    <!-- <view class="menu-item ss-flex-1 ss-flex-col ss-row-center ss-col-center"
+	<view class="ss-wallet-menu-wrap ss-flex ss-col-center">
+		<view class="menu-item ss-flex-1 ss-flex-col ss-row-center ss-col-center"
+			@tap="sheep.$router.go('/pages/user/wallet/money')">
+			<view class="value-box ss-flex ss-col-bottom">
+				<view class="value-text ss-line-1">{{ userInfo.money }}</view>
+				<view class="unit-text ss-m-l-6">元</view>
+			</view>
+			<view class="menu-title ss-m-t-28">账户余额</view>
+		</view>
+		<!-- <view class="menu-item ss-flex-1 ss-flex-col ss-row-center ss-col-center"
 			@tap="sheep.$router.go('/pages/user/wallet/commission')">
 			<view class="value-box ss-flex ss-col-bottom">
 				<view class="value-text">{{ userInfo?.commission || '0.00' }}</view>
@@ -18,93 +16,86 @@
 			</view>
 			<view class="menu-title ss-m-t-28">佣金</view>
 		</view> -->
-    <view
-      class="menu-item ss-flex-1 ss-flex-col ss-row-center ss-col-center"
-      @tap="sheep.$router.go('/pages/user/wallet/score')"
-    >
-      <view class="value-box ss-flex ss-col-bottom">
-        <view class="value-text">{{ userInfo.score }}</view>
-        <view class="unit-text ss-m-l-6">个</view>
-      </view>
-      <view class="menu-title ss-m-t-28">积分</view>
-    </view>
-    <view
-      class="menu-item ss-flex-1 ss-flex-col ss-row-center ss-col-center"
-      @tap="
+		<view class="menu-item ss-flex-1 ss-flex-col ss-row-center ss-col-center"
+			@tap="sheep.$router.go('/pages/user/wallet/score')">
+			<view class="value-box ss-flex ss-col-bottom">
+				<view class="value-text">{{ userInfo.point }}</view>
+				<view class="unit-text ss-m-l-6">个</view>
+			</view>
+			<view class="menu-title ss-m-t-28">积分</view>
+		</view>
+		<view class="menu-item ss-flex-1 ss-flex-col ss-row-center ss-col-center" @tap="
         sheep.$router.go('/pages/coupon/list', {
           type: 'geted',
         })
-      "
-    >
-      <view class="value-box ss-flex ss-col-bottom">
-        <view class="value-text">{{ numData.coupons_num }}</view>
-        <view class="unit-text ss-m-l-6">张</view>
-      </view>
-      <view class="menu-title ss-m-t-28">优惠券</view>
-    </view>
-    <view
-      class="menu-item ss-flex-col ss-row-center ss-col-center menu-wallet"
-      @tap="sheep.$router.go('/pages/user/wallet/money')"
-    >
-      <image
-        class="item-icon"
-        :src="sheep.$url.static('/static/img/shop/user/wallet_icon.png')"
-        mode="aspectFit"
-      >
-      </image>
-      <view class="menu-title ss-m-t-30">我的钱包</view>
-    </view>
-  </view>
+      ">
+			<view class="value-box ss-flex ss-col-bottom">
+				<view class="value-text">{{ numData.coupons_num }}</view>
+				<view class="unit-text ss-m-l-6">张</view>
+			</view>
+			<view class="menu-title ss-m-t-28">优惠券</view>
+		</view>
+		<view class="menu-item ss-flex-col ss-row-center ss-col-center menu-wallet"
+			@tap="sheep.$router.go('/pages/user/wallet/money')">
+			<image class="item-icon" :src="sheep.$url.static('/static/img/shop/user/wallet_icon.png')" mode="aspectFit">
+			</image>
+			<view class="menu-title ss-m-t-30">我的钱包</view>
+		</view>
+	</view>
 </template>
 
 <script setup>
-  /**
-   * 装修组件 - 订单菜单组
-   */
-  import { computed, ref } from 'vue';
-  import sheep from '@/sheep';
+	/**
+	 * 装修组件 - 订单菜单组
+	 */
+	import {
+		computed,
+		ref
+	} from 'vue';
+	import sheep from '@/sheep';
 
-  const userInfo = computed(() => sheep.$store('user').userInfo);
-  const numData = computed(() => sheep.$store('user').numData);
+	const userInfo = computed(() => sheep.$store('user').userInfo);
+	const numData = computed(() => sheep.$store('user').numData);
 </script>
 
 <style lang="scss" scoped>
-  .ss-wallet-menu-wrap {
-    .menu-wallet {
-      width: 144rpx;
-    }
-    .menu-item {
-      height: 160rpx;
+	.ss-wallet-menu-wrap {
+		.menu-wallet {
+			width: 144rpx;
+		}
+
+		.menu-item {
+			height: 160rpx;
 
-      .menu-title {
-        font-size: 24rpx;
-        line-height: 24rpx;
-        color: #333333;
-      }
+			.menu-title {
+				font-size: 24rpx;
+				line-height: 24rpx;
+				color: #333333;
+			}
 
-      .item-icon {
-        width: 44rpx;
-        height: 44rpx;
-      }
+			.item-icon {
+				width: 44rpx;
+				height: 44rpx;
+			}
 
-      .value-box {
-        height: 50rpx;
-        text-align: center;
+			.value-box {
+				height: 50rpx;
+				text-align: center;
 
-        .value-text {
-          font-size: 28rpx;
-          color: #000000;
-          line-height: 28rpx;
-          vertical-align: text-bottom;
-          font-family: OPPOSANS;
-        }
+				.value-text {
+					font-size: 28rpx;
+					color: #000000;
+					line-height: 28rpx;
+					vertical-align: text-bottom;
+					font-family: OPPOSANS;
+				}
 
-        .unit-text {
-          font-size: 24rpx;
-          color: #343434;
-          line-height: 24rpx;
-        }
-      }
-    }
-  }
-</style>
+				.unit-text {
+					font-size: 24rpx;
+					color: #343434;
+					line-height: 24rpx;
+				}
+			}
+		}
+	}
+</style>

+ 8 - 4
sheep/store/user.js

@@ -56,8 +56,9 @@ const user = defineStore({
 				code,
 				data
 			} = await userApi.profile();
+
 			// 为了兼容 获取用户余额 可能还会用到其他参数
-			// 优惠券数量,积分数量 应该在这里
+			// 优惠券数量,积分数量 应该在这里	
 			const {
 				code: code2,
 				data: data2
@@ -85,9 +86,12 @@ const user = defineStore({
 				data
 			} = await userApi.data();
 			const data2 = await userApi.data2();
+			let data3 = await userApi.getUnused();
+			console.log(data3.data, '优惠券')
 			if (code === 0 && data2.code === 0) {
 				console.log('订单数据', data);
 				this.numData = {
+					coupons_num: data3.data,
 					order_num: {
 						noget: data.deliveredCount,
 						unpaid: data.unpaidCount,
@@ -149,9 +153,9 @@ const user = defineStore({
 			// 登录后设置全局分享参数
 			$share.getShareInfo();
 			// 提醒绑定手机号
-			if (app().platform.bind_mobile && !this.userInfo.verification?.mobile) {
-				showAuthModal('changeMobile');
-			}
+			// if (app().platform.bind_mobile && !this.userInfo.verification?.mobile) {
+			// 	showAuthModal('changeMobile');
+			// }
 
 			// 添加分享记录
 			const shareLog = uni.getStorageSync('shareLog');