Parcourir la source

!13 用户钱包及明细.搜索页修复.个人信息移除多余页面.商品列表字段优化,分类子商品展示
Merge pull request !13 from Bluemark/vue3_tmp

芋道源码 il y a 1 an
Parent
commit
63c831464d

+ 1 - 1
App.vue

@@ -21,7 +21,7 @@
     if (args) {
     }
 
-    // 获取剪贴板
+    // 获取剪贴板 
     uni.getClipboardData({
       success: (res) => { },
     });

+ 12 - 11
pages/goods/list.vue

@@ -137,8 +137,8 @@
       total: 1,
       last_page: 1,
     },
-    currentSort: 'weigh',
-    currentOrder: 'desc',
+    // currentSort: 'weigh',
+    // currentOrder: 'desc',
     currentTab: 0,
     filterParams: {},
     curFilter: 0,
@@ -148,32 +148,32 @@
     tabList: [
       {
         name: '综合推荐',
-        value: 'weigh',
+        // value: '',
         list: [
           {
             label: '综合推荐',
-            sort: 'weigh',
-            order: 'desc',
+            // sort: '',
+            // order: true,
           },
           {
             label: '价格升序',
             sort: 'price',
-            order: 'asc',
+            order: true,
           },
           {
             label: '价格降序',
             sort: 'price',
-            order: 'desc',
+            order: false,
           },
         ],
       },
       {
         name: '销量',
-        value: 'total_sales',
+        // value: 'salesCount',
       },
       {
         name: '新品优先',
-        value: 'create_time',
+        // value: 'create_time',
       },
     ],
     loadStatus: '',
@@ -239,6 +239,7 @@
 
   // 点击筛选项
   const onFilterItem = (val) => {
+	  console.log(val)
     if (
       state.currentSort === state.tabList[0].list[val].sort &&
       state.currentOrder === state.tabList[0].list[val].order
@@ -258,8 +259,8 @@
   async function getList(Sort, Order, categoryId, keyword, page = 1, list_rows = 6) {
     state.loadStatus = 'loading';
     const res = await sheep.$api.goods.list({
-      sort: Sort,
-      order: Order,
+      sortField: Sort,
+      sortAsc: Order,
       category_id: !keyword ? categoryId : '',
       pageSize:list_rows,
       keyword: keyword,

+ 6 - 4
pages/index/category.vue

@@ -82,7 +82,8 @@
 		});
 		if (code === 0) {
 			state.categoryList = {
-				children: data
+				children: data,
+				style: 'first_one'
 			};
 		}
 	}
@@ -96,17 +97,18 @@
 				total: 1,
 				last_page: 1,
 			};
+			getGoodsList(state.categoryList.children[val].id);
 		}
 		// 这段代码本来是在判断里的
-		getGoodsList(state.categoryList.children[val].id);
+		// getGoodsList(state.categoryList.children[val].id);
 	};
 
 	async function getGoodsList(id, page = 1, list_rows = 6) {
 		state.loadStatus = 'loading';
 		const res = await sheep.$api.goods.list({
 			categoryId: id,
-			pageSize:list_rows,
-			pageNo:page,
+			pageSize: list_rows,
+			pageNo: page,
 		});
 		if (res.code === 0) {
 			let couponList = _.concat(state.pagination.data, res.data.list);

+ 22 - 0
pages/index/index.vue

@@ -26,6 +26,28 @@
 	uni.hideTabBar();
 
 	const template = computed(() => sheep.$store('app').template?.home);
+	// 在此处拦截改变一下首页轮播图 此处先写死后期复活 放到启动函数里
+	(async function() {
+		console.log('原代码首页定制化数据',template)
+		let {
+			data
+		} = await index2Api.decorate();
+		console.log('首页导航配置化过高无法兼容',JSON.parse(data[1].value))
+		// 改变首页底部数据 但是没有通过数组id获取商品数据接口
+		// let {
+		// 	data: datas
+		// } = await index2Api.spids();
+		// template.value.data[9].data.goodsIds = datas.list.map(item => item.id);
+		template.value.data[0].data.list = JSON.parse(data[0].value).map(item => {
+			return {
+				src: item.picUrl,
+				url: item.url,
+				title: item.name,
+				type: "image"
+			}
+		})
+	}())
+
 
 	onLoad((options) => {
 		// #ifdef MP

+ 548 - 595
pages/order/list.vue

@@ -1,121 +1,85 @@
 <!-- 页面 -->
 <template>
-  <s-layout title="我的订单">
-    <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/order-empty.png"
-      text="暂无订单"
-    ></s-empty>
-    <view v-if="state.pagination.total > 0">
-      <view
-        class="bg-white order-list-card-box ss-r-10 ss-m-t-14 ss-m-20"
-        v-for="order in state.pagination.data"
-        :key="order.id"
-        @tap="onOrderDetail(order.order_sn)"
-      >
-        <view class="order-card-header ss-flex ss-col-center ss-row-between ss-p-x-20">
-          <view class="order-no">订单号:{{ order.order_sn }}</view>
-          <view class="order-state ss-font-26" :class="formatOrderColor(order.status_code)">{{
-            order.status_text
+	<s-layout title="我的订单">
+		<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/order-empty.png" text="暂无订单"></s-empty>
+		<view v-if="state.pagination.total > 0">
+			<view class="bg-white order-list-card-box ss-r-10 ss-m-t-14 ss-m-20" v-for="order in state.pagination.data"
+				:key="order.id" @tap="onOrderDetail(order.no)">
+				<view class="order-card-header ss-flex ss-col-center ss-row-between ss-p-x-20">
+					<view class="order-no">订单号:{{ order.no }}</view>
+					<view class="order-state ss-font-26" :class="formatOrderColor(order.status_code)">{{
+            order.status
           }}</view>
-        </view>
-        <view class="border-bottom" v-for="item in order.items" :key="item.id">
-          <s-goods-item
-            :img="item.goods_image"
-            :title="item.goods_title"
-            :skuText="item.goods_sku_text"
-            :price="item.goods_price"
-            :score="order.score_amount"
-            :num="item.goods_num"
-          >
-            <template #tool>
-              <view class="ss-flex">
-                <button
-                  class="ss-reset-button apply-btn"
-                  v-if="item.btns.includes('aftersale')"
-                  @tap.stop="
+				</view>
+				<view class="border-bottom" v-for="item in order.items" :key="item.id">
+					<s-goods-item :img="item.picUrl" :title="item.spuName" :skuText="item.properties.length>1? item.properties.reduce((items2,items)=>items2.valueName+' '+items.valueName):item.properties[0].valueName"
+						:price="item.price/100" :score="order.score_amount" :num="item.count">
+						<template #tool>
+							<view class="ss-flex">
+								<!-- <button class="ss-reset-button apply-btn" v-if="item.btns.includes('aftersale')"
+									@tap.stop="
                     sheep.$router.go('/pages/order/aftersale/apply', {
                       item: JSON.stringify(item),
                     })
-                  "
-                >
-                  申请售后
-                </button>
-                <button
-                  class="ss-reset-button apply-btn"
-                  v-if="item.btns.includes('re_aftersale')"
-                  @tap.stop="
+                  ">
+									申请售后
+								</button>
+								<button class="ss-reset-button apply-btn" v-if="item.btns.includes('re_aftersale')"
+									@tap.stop="
                     sheep.$router.go('/pages/order/aftersale/apply', {
                       item: JSON.stringify(item),
                     })
-                  "
-                >
-                  重新售后
-                </button>
-
-                <button
-                  class="ss-reset-button apply-btn"
-                  v-if="item.btns.includes('aftersale_info')"
-                  @tap.stop="
+                  ">
+									重新售后
+								</button>
+
+								<button class="ss-reset-button apply-btn" v-if="item.btns.includes('aftersale_info')"
+									@tap.stop="
                     sheep.$router.go('/pages/order/aftersale/detail', {
                       id: item.ext.aftersale_id,
                     })
-                  "
-                >
-                  售后详情
-                </button>
-                <button
-                  class="ss-reset-button apply-btn"
-                  v-if="item.btns.includes('buy_again')"
-                  @tap.stop="
+                  ">
+									售后详情
+								</button>
+								<button class="ss-reset-button apply-btn" v-if="item.btns.includes('buy_again')"
+									@tap.stop="
                     sheep.$router.go('/pages/goods/index', {
                       id: item.goods_id,
                     })
-                  "
-                >
-                  再次购买
-                </button>
-              </view>
-            </template>
-          </s-goods-item>
-        </view>
-        <view class="pay-box ss-m-t-30 ss-flex ss-row-right ss-p-r-20">
-          <view v-if="order.total_discount_fee > 0" class="ss-flex ss-col-center ss-m-r-8">
-            <view class="discounts-title">优惠:¥</view>
-            <view class="discounts-money">{{ order.total_discount_fee }}</view>
-          </view>
-          <view class="ss-flex ss-col-center ss-m-r-8">
-            <view class="discounts-title">运费:¥</view>
-            <view class="discounts-money">{{ order.dispatch_amount }}</view>
-          </view>
-          <view class="ss-flex ss-col-center">
-            <view class="discounts-title pay-color">总金额:</view>
-            <view class="discounts-money pay-color" v-if="Number(order.order_amount) > 0"
-              >¥{{ order.order_amount }}</view
-            >
-            <view v-if="order.score_amount && Number(order.order_amount) > 0">+</view>
-            <view class="discounts-money pay-color ss-flex ss-col-center" v-if="order.score_amount">
-              <image
-                :src="sheep.$url.static('/static/img/shop/goods/score1.svg')"
-                class="score-img"
-              ></image>
-              <view>{{ order.score_amount }}</view>
-            </view>
-          </view>
-        </view>
-        <view
-          class="order-card-footer ss-flex ss-col-center ss-p-x-20"
-          :class="order.btns.length > 3 ? 'ss-row-between' : 'ss-row-right'"
-        >
-          <!-- <su-popover>
+                  ">
+									再次购买
+								</button> -->
+							</view>
+						</template>
+					</s-goods-item>
+				</view>
+				<view class="pay-box ss-m-t-30 ss-flex ss-row-right ss-p-r-20">
+					<!-- <view v-if="order.total_discount_fee > 0" class="ss-flex ss-col-center ss-m-r-8">
+						<view class="discounts-title">优惠:¥</view>
+						<view class="discounts-money">{{ order.total_discount_fee }}</view>
+					</view> -->
+				<!-- 	<view class="ss-flex ss-col-center ss-m-r-8">
+						<view class="discounts-title">运费:¥</view>
+						<view class="discounts-money">{{ order.dispatch_amount }}</view>
+					</view> -->
+					<view class="ss-flex ss-col-center">
+						<view class="discounts-title pay-color">共{{count}}件商品,总金额:</view>
+						<view class="discounts-money pay-color" v-if="Number(order.payPrice) > 0">
+							¥{{ order.payPrice/100 }}</view>
+						<view v-if="order.score_amount && Number(order.payPrice) > 0">+</view>
+						<view class="discounts-money pay-color ss-flex ss-col-center" v-if="order.score_amount">
+							<image :src="sheep.$url.static('/static/img/shop/goods/score1.svg')" class="score-img">
+							</image>
+							<view>{{ order.score_amount }}</view>
+						</view>
+					</view>
+				</view>
+				<!-- :class="order.btns.length > 3 ? 'ss-row-between' : 'ss-row-right'" -->
+				<view class="order-card-footer ss-flex ss-col-center ss-p-x-20">
+					<!-- <su-popover>
             <button class="more-btn ss-reset-button" @click.stop>更多</button>
             <template #content>
               <view class="more-item-box">
@@ -131,502 +95,491 @@
               </view>
             </template>
           </su-popover> -->
-          <view class="ss-flex ss-col-center">
-            <button
-              v-if="order.btns.includes('groupon')"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onOrderGroupon(order)"
-            >
-              {{ order.status_code === 'groupon_ing' ? '邀请拼团' : '拼团详情' }}
-            </button>
-            <button
-              v-if="order.btns.includes('invoice')"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onOrderInvoice(order.invoice?.id)"
-            >
-              查看发票
-            </button>
-            <button
-              v-if="order.btns.length === 0"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onOrderDetail(order.order_sn)"
-            >
-              查看详情
-            </button>
-
-            <button
-              v-if="order.btns.includes('confirm')"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onConfirm(order)"
-            >
-              确认收货
-            </button>
-
-            <button
-              v-if="order.btns.includes('express')"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onExpress(order.id)"
-            >
-              查看物流
-            </button>
-
-            <button
-              v-if="order.btns.includes('apply_refund')"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onRefund(order.id)"
-            >
-              申请退款
-            </button>
-            <button
-              v-if="order.btns.includes('re_apply_refund')"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onRefund(order.id)"
-            >
-              重新退款
-            </button>
-
-            <button
-              v-if="order.btns.includes('cancel')"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onCancel(order.id)"
-            >
-              取消订单
-            </button>
-
-            <button
-              v-if="order.btns.includes('comment')"
-              class="tool-btn ss-reset-button"
-              @tap.stop="onComment(order.order_sn)"
-            >
-              评价晒单
-            </button>
-
-            <button
-              v-if="order.btns.includes('delete')"
-              class="delete-btn ss-reset-button"
-              @tap.stop="onDelete(order.id)"
-            >
-              删除订单
-            </button>
-
-            <button
-              v-if="order.btns.includes('pay')"
-              class="tool-btn ss-reset-button ui-BG-Main-Gradient"
-              @tap.stop="onPay(order.order_sn)"
-            >
-              继续支付
-            </button>
-          </view>
-        </view>
-      </view>
-    </view>
-
-    <!-- 加载更多 -->
-    <uni-load-more
-      v-if="state.pagination.total > 0"
-      :status="state.loadStatus"
-      :content-text="{
+					<view class="ss-flex ss-col-center">
+		<!-- 				<button v-if="order.btns.includes('groupon')" class="tool-btn ss-reset-button"
+							@tap.stop="onOrderGroupon(order)">
+							{{ order.status_code === 'groupon_ing' ? '邀请拼团' : '拼团详情' }}
+						</button>
+						<button v-if="order.btns.includes('invoice')" class="tool-btn ss-reset-button"
+							@tap.stop="onOrderInvoice(order.invoice?.id)">
+							查看发票
+						</button>
+						<button v-if="order.btns.length === 0" class="tool-btn ss-reset-button"
+							@tap.stop="onOrderDetail(order.order_sn)">
+							查看详情
+						</button>
+
+						<button v-if="order.btns.includes('confirm')" class="tool-btn ss-reset-button"
+							@tap.stop="onConfirm(order)">
+							确认收货
+						</button>
+
+						<button v-if="order.btns.includes('express')" class="tool-btn ss-reset-button"
+							@tap.stop="onExpress(order.id)">
+							查看物流
+						</button>
+
+						<button v-if="order.btns.includes('apply_refund')" class="tool-btn ss-reset-button"
+							@tap.stop="onRefund(order.id)">
+							申请退款
+						</button>
+						<button v-if="order.btns.includes('re_apply_refund')" class="tool-btn ss-reset-button"
+							@tap.stop="onRefund(order.id)">
+							重新退款
+						</button>
+
+						<button v-if="order.btns.includes('cancel')" class="tool-btn ss-reset-button"
+							@tap.stop="onCancel(order.id)">
+							取消订单
+						</button>
+
+						<button v-if="order.btns.includes('comment')" class="tool-btn ss-reset-button"
+							@tap.stop="onComment(order.order_sn)">
+							评价晒单
+						</button>
+
+						<button v-if="order.btns.includes('delete')" class="delete-btn ss-reset-button"
+							@tap.stop="onDelete(order.id)">
+							删除订单
+						</button>
+
+						<button v-if="order.btns.includes('pay')" class="tool-btn ss-reset-button ui-BG-Main-Gradient"
+							@tap.stop="onPay(order.order_sn)">
+							继续支付
+						</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 { computed, reactive } from 'vue';
-  import { onLoad, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app';
-  import { formatOrderColor } from '@/sheep/hooks/useGoods';
-  import sheep from '@/sheep';
-  import _ from 'lodash';
-  import { isEmpty } from 'lodash';
-
-  const pagination = {
-    data: [],
-    current_page: 1,
-    total: 1,
-    last_page: 1,
-  };
-  // 数据
-  const state = reactive({
-    currentTab: 0,
-    pagination: {
-      data: [],
-      current_page: 1,
-      total: 1,
-      last_page: 1,
-    },
-    loadStatus: '',
-    deleteOrderId: 0,
-    error: 0,
-  });
-
-  const tabMaps = [
-    {
-      name: '全部',
-      value: 'all',
-    },
-    {
-      name: '待付款',
-      value: 'unpaid',
-    },
-    {
-      name: '待发货',
-      value: 'nosend',
-    },
-    {
-      name: '待收货',
-      value: 'noget',
-    },
-    {
-      name: '待评价',
-      value: 'nocomment',
-    },
-  ];
-
-  // 切换选项卡
-  function onTabsChange(e) {
-    if (state.currentTab === e.index) return;
-
-    state.pagination = pagination;
-    state.currentTab = e.index;
-
-    getOrderList();
-  }
-
-  // 订单详情
-  function onOrderDetail(orderSN) {
-    sheep.$router.go('/pages/order/detail', {
-      orderSN,
-    });
-  }
-
-  // 分享拼团
-  function onOrderGroupon(order) {
-    sheep.$router.go('/pages/activity/groupon/detail', {
-      id: order.ext.groupon_id,
-    });
-  }
-
-  // 查看发票
-  function onOrderInvoice(invoiceId) {
-    sheep.$router.go('/pages/order/invoice', {
-      invoiceId,
-    });
-  }
-
-  // 继续支付
-  function onPay(orderSN) {
-    sheep.$router.go('/pages/pay/index', {
-      orderSN,
-    });
-  }
-
-  // 评价
-  function onComment(orderSN) {
-    sheep.$router.go('/pages/goods/comment/add', {
-      orderSN,
-    });
-  }
-
-  // 确认收货
-  async function onConfirm(order, ignore = false) {
-    // 需开启确认收货组件
-    // todo:
-    // 1.怎么检测是否开启了发货组件功能?如果没有开启的话就不能在这里return出去
-    // 2.如果开启了走mpConfirm方法,需要在App.vue的show方法中拿到确认收货结果
-    let isOpenBusinessView = true;
-    if (
-      sheep.$platform.name === 'WechatMiniProgram' &&
-      !isEmpty(order.wechat_extra_data) &&
-      isOpenBusinessView &&
-      !ignore
-    ) {
-      mpConfirm(order);
-      return;
-    }
-
-    // 正常的确认收货流程
-
-    const { error } = await sheep.$api.order.confirm(order.id);
-    if (error === 0) {
-      state.pagination = pagination;
-      getOrderList();
-    }
-  }
-
-  // #ifdef MP-WEIXIN
-  // 小程序确认收货组件
-  function mpConfirm(order) {
-    if (!wx.openBusinessView) {
-      sheep.$helper.toast(`请升级微信版本`);
-      return;
-    }
-    wx.openBusinessView({
-      businessType: 'weappOrderConfirm',
-      extraData: {
-        merchant_id: '1481069012',
-        merchant_trade_no: order.wechat_extra_data.merchant_trade_no,
-        transaction_id: order.wechat_extra_data.transaction_id,
-      },
-      success(response) {
-        console.log('success:', response);
-        if (response.errMsg === 'openBusinessView:ok') {
-          if (response.extraData.status === 'success') {
-            onConfirm(order, true);
-          }
-        }
-      },
-      fail(error) {
-        console.log('error:', error);
-      },
-      complete(result) {
-        console.log('result:', result);
-      },
-    });
-  }
-  // #endif
-
-  // 查看物流
-  async function onExpress(orderId) {
-    sheep.$router.go('/pages/order/express/list', {
-      orderId,
-    });
-  }
-
-  // 取消订单
-  async function onCancel(orderId) {
-    uni.showModal({
-      title: '提示',
-      content: '确定要取消订单吗?',
-      success: async function (res) {
-        if (res.confirm) {
-          const { error, data } = await sheep.$api.order.cancel(orderId);
-          if (error === 0) {
-            let index = state.pagination.data.findIndex((order) => order.id === orderId);
-            state.pagination.data[index] = data;
-          }
-        }
-      },
-    });
-  }
-
-  // 删除订单
-  function onDelete(orderId) {
-    uni.showModal({
-      title: '提示',
-      content: '确定要删除订单吗?',
-      success: async function (res) {
-        if (res.confirm) {
-          const { error, data } = await sheep.$api.order.delete(orderId);
-          if (error === 0) {
-            let index = state.pagination.data.findIndex((order) => order.id === orderId);
-            state.pagination.data.splice(index, 1);
-          }
-        }
-      },
-    });
-  }
-
-  // 申请退款
-  async function onRefund(orderId) {
-    uni.showModal({
-      title: '提示',
-      content: '确定要申请退款吗?',
-      success: async function (res) {
-        if (res.confirm) {
-          // #ifdef MP
-          sheep.$platform.useProvider('wechat').subscribeMessage('order_refund');
-          // #endif
-          const { error, data } = await sheep.$api.order.applyRefund(orderId);
-          if (error === 0) {
-            let index = state.pagination.data.findIndex((order) => order.id === orderId);
-            state.pagination.data[index] = data;
-          }
-        }
-      },
-    });
-  }
-
-  // 获取订单列表
-  async function getOrderList(page = 1, list_rows = 5) {
-    state.loadStatus = 'loading';
-    let res = await sheep.$api.order.list({
-      type: tabMaps[state.currentTab].value,
-      list_rows,
-      page,
-    });
-    state.error = res.error;
-    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';
-      }
-    }
-  }
-
-  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();
-  });
-
-  //下拉刷新
-  onPullDownRefresh(() => {
-    state.pagination = pagination;
-    getOrderList();
-    setTimeout(function () {
-      uni.stopPullDownRefresh();
-    }, 800);
-  });
+	import {
+		computed,
+		reactive
+	} from 'vue';
+	import {
+		onLoad,
+		onReachBottom,
+		onPullDownRefresh
+	} from '@dcloudio/uni-app';
+	import {
+		formatOrderColor
+	} from '@/sheep/hooks/useGoods';
+	import sheep from '@/sheep';
+	import _ from 'lodash';
+	import {
+		isEmpty
+	} from 'lodash';
+
+	const pagination = {
+		data: [],
+		current_page: 1,
+		total: 1,
+		last_page: 1,
+	};
+	// 数据
+	const state = reactive({
+		currentTab: 0,
+		pagination: {
+			data: [],
+			current_page: 1,
+			total: 1,
+			last_page: 1,
+		},
+		loadStatus: '',
+		deleteOrderId: 0,
+		error: 0,
+	});
+
+	const tabMaps = [{
+			name: '全部',
+			// value: 'all',
+		},
+		{
+			name: '待付款',
+			value: 0,
+		},
+		{
+			name: '待发货',
+			value: 10,
+		},
+		{
+			name: '待收货',
+			value: 20,
+		},
+		{
+			name: '待评价',
+			value: 30,
+		},
+	];
+
+	// 切换选项卡
+	function onTabsChange(e) {
+		if (state.currentTab === e.index) return;
+
+		state.pagination = pagination;
+		state.currentTab = e.index;
+
+		getOrderList();
+	}
+
+	// 订单详情
+	function onOrderDetail(orderSN) {
+		sheep.$router.go('/pages/order/detail', {
+			orderSN,
+		});
+	}
+
+	// 分享拼团
+	function onOrderGroupon(order) {
+		sheep.$router.go('/pages/activity/groupon/detail', {
+			id: order.ext.groupon_id,
+		});
+	}
+
+	// 查看发票
+	function onOrderInvoice(invoiceId) {
+		sheep.$router.go('/pages/order/invoice', {
+			invoiceId,
+		});
+	}
+
+	// 继续支付
+	function onPay(orderSN) {
+		sheep.$router.go('/pages/pay/index', {
+			orderSN,
+		});
+	}
+
+	// 评价
+	function onComment(orderSN) {
+		sheep.$router.go('/pages/goods/comment/add', {
+			orderSN,
+		});
+	}
+
+	// 确认收货
+	async function onConfirm(order, ignore = false) {
+		// 需开启确认收货组件
+		// todo:
+		// 1.怎么检测是否开启了发货组件功能?如果没有开启的话就不能在这里return出去
+		// 2.如果开启了走mpConfirm方法,需要在App.vue的show方法中拿到确认收货结果
+		let isOpenBusinessView = true;
+		if (
+			sheep.$platform.name === 'WechatMiniProgram' &&
+			!isEmpty(order.wechat_extra_data) &&
+			isOpenBusinessView &&
+			!ignore
+		) {
+			mpConfirm(order);
+			return;
+		}
+
+		// 正常的确认收货流程
+
+		const {
+			error
+		} = await sheep.$api.order.confirm(order.id);
+		if (error === 0) {
+			state.pagination = pagination;
+			getOrderList();
+		}
+	}
+
+	// #ifdef MP-WEIXIN
+	// 小程序确认收货组件
+	function mpConfirm(order) {
+		if (!wx.openBusinessView) {
+			sheep.$helper.toast(`请升级微信版本`);
+			return;
+		}
+		wx.openBusinessView({
+			businessType: 'weappOrderConfirm',
+			extraData: {
+				merchant_id: '1481069012',
+				merchant_trade_no: order.wechat_extra_data.merchant_trade_no,
+				transaction_id: order.wechat_extra_data.transaction_id,
+			},
+			success(response) {
+				console.log('success:', response);
+				if (response.errMsg === 'openBusinessView:ok') {
+					if (response.extraData.status === 'success') {
+						onConfirm(order, true);
+					}
+				}
+			},
+			fail(error) {
+				console.log('error:', error);
+			},
+			complete(result) {
+				console.log('result:', result);
+			},
+		});
+	}
+	// #endif
+
+	// 查看物流
+	async function onExpress(orderId) {
+		sheep.$router.go('/pages/order/express/list', {
+			orderId,
+		});
+	}
+
+	// 取消订单
+	async function onCancel(orderId) {
+		uni.showModal({
+			title: '提示',
+			content: '确定要取消订单吗?',
+			success: async function(res) {
+				if (res.confirm) {
+					const {
+						error,
+						data
+					} = await sheep.$api.order.cancel(orderId);
+					if (error === 0) {
+						let index = state.pagination.data.findIndex((order) => order.id === orderId);
+						state.pagination.data[index] = data;
+					}
+				}
+			},
+		});
+	}
+
+	// 删除订单
+	function onDelete(orderId) {
+		uni.showModal({
+			title: '提示',
+			content: '确定要删除订单吗?',
+			success: async function(res) {
+				if (res.confirm) {
+					const {
+						error,
+						data
+					} = await sheep.$api.order.delete(orderId);
+					if (error === 0) {
+						let index = state.pagination.data.findIndex((order) => order.id === orderId);
+						state.pagination.data.splice(index, 1);
+					}
+				}
+			},
+		});
+	}
+
+	// 申请退款
+	async function onRefund(orderId) {
+		uni.showModal({
+			title: '提示',
+			content: '确定要申请退款吗?',
+			success: async function(res) {
+				if (res.confirm) {
+					// #ifdef MP
+					sheep.$platform.useProvider('wechat').subscribeMessage('order_refund');
+					// #endif
+					const {
+						error,
+						data
+					} = await sheep.$api.order.applyRefund(orderId);
+					if (error === 0) {
+						let index = state.pagination.data.findIndex((order) => order.id === orderId);
+						state.pagination.data[index] = data;
+					}
+				}
+			},
+		});
+	}
+
+	// 获取订单列表
+	async function getOrderList(page = 1, list_rows = 5) {
+		state.loadStatus = 'loading';
+		let res = await sheep.$api.order.list({
+			status: tabMaps[state.currentTab].value,
+			pageSize: list_rows,
+			pageNo: page,
+			commentStatus: tabMaps[state.currentTab].value==30?false:null
+		});
+		state.error = res.code;
+		if (res.code === 0) {
+			let orderList = _.concat(state.pagination.data, res.data.list);
+			state.pagination = {
+				...res.data,
+				data: orderList,
+			};
+			console.log(state.pagination)
+			if (state.pagination.data.length < state.pagination.total) {
+				state.loadStatus = 'more';
+			} else {
+				state.loadStatus = 'noMore';
+			}
+		}
+	}
+
+	onLoad(async (options) => {
+		if (options.type) {
+			state.currentTab = options.type;
+		}
+		getOrderList();
+	});
+
+	// 加载更多
+	function loadmore() {
+		if (state.loadStatus !== 'noMore') {
+			getOrderList(parseInt((state.pagination.data.length/5)+1));
+		}
+	}
+
+	// 上拉加载更多
+	onReachBottom(() => {
+		loadmore();
+	});
+
+	//下拉刷新
+	onPullDownRefresh(() => {
+		state.pagination = pagination;
+		getOrderList();
+		setTimeout(function() {
+			uni.stopPullDownRefresh();
+		}, 800);
+	});
 </script>
 
 <style lang="scss" scoped>
-  .score-img {
-    width: 36rpx;
-    height: 36rpx;
-    margin: 0 4rpx;
-  }
-  .tool-btn {
-    width: 160rpx;
-    height: 60rpx;
-    background: #f6f6f6;
-    font-size: 26rpx;
-    border-radius: 30rpx;
-    margin-right: 10rpx;
-
-    &:last-of-type {
-      margin-right: 0;
-    }
-  }
-  .delete-btn {
-    width: 160rpx;
-    height: 56rpx;
-    color: #ff3000;
-    background: #fee;
-    border-radius: 28rpx;
-    font-size: 26rpx;
-    margin-right: 10rpx;
-    line-height: normal;
-
-    &:last-of-type {
-      margin-right: 0;
-    }
-  }
-
-  .apply-btn {
-    width: 140rpx;
-    height: 50rpx;
-    border-radius: 25rpx;
-    font-size: 24rpx;
-    border: 2rpx solid #dcdcdc;
-    line-height: normal;
-    margin-left: 16rpx;
-  }
-
-  .swiper-box {
-    flex: 1;
-
-    .swiper-item {
-      height: 100%;
-      width: 100%;
-    }
-  }
-
-  .order-list-card-box {
-    .order-card-header {
-      height: 80rpx;
-
-      .order-no {
-        font-size: 26rpx;
-        font-weight: 500;
-      }
-
-      .order-state {
-      }
-    }
-
-    .pay-box {
-      .discounts-title {
-        font-size: 24rpx;
-        line-height: normal;
-        color: #999999;
-      }
-
-      .discounts-money {
-        font-size: 24rpx;
-        line-height: normal;
-        color: #999;
-        font-family: OPPOSANS;
-      }
-
-      .pay-color {
-        color: #333;
-      }
-    }
-
-    .order-card-footer {
-      height: 100rpx;
-
-      .more-item-box {
-        padding: 20rpx;
-
-        .more-item {
-          height: 60rpx;
-
-          .title {
-            font-size: 26rpx;
-          }
-        }
-      }
-
-      .more-btn {
-        color: $dark-9;
-        font-size: 24rpx;
-      }
-
-      .content {
-        width: 154rpx;
-        color: #333333;
-        font-size: 26rpx;
-        font-weight: 500;
-      }
-    }
-  }
-
-  :deep(.uni-tooltip-popup) {
-    background: var(--ui-BG);
-  }
-  .warning-color {
-    color: #faad14;
-  }
-  .danger-color {
-    color: #ff3000;
-  }
-  .success-color {
-    color: #52c41a;
-  }
-  .info-color {
-    color: #999999;
-  }
-</style>
+	.score-img {
+		width: 36rpx;
+		height: 36rpx;
+		margin: 0 4rpx;
+	}
+
+	.tool-btn {
+		width: 160rpx;
+		height: 60rpx;
+		background: #f6f6f6;
+		font-size: 26rpx;
+		border-radius: 30rpx;
+		margin-right: 10rpx;
+
+		&:last-of-type {
+			margin-right: 0;
+		}
+	}
+
+	.delete-btn {
+		width: 160rpx;
+		height: 56rpx;
+		color: #ff3000;
+		background: #fee;
+		border-radius: 28rpx;
+		font-size: 26rpx;
+		margin-right: 10rpx;
+		line-height: normal;
+
+		&:last-of-type {
+			margin-right: 0;
+		}
+	}
+
+	.apply-btn {
+		width: 140rpx;
+		height: 50rpx;
+		border-radius: 25rpx;
+		font-size: 24rpx;
+		border: 2rpx solid #dcdcdc;
+		line-height: normal;
+		margin-left: 16rpx;
+	}
+
+	.swiper-box {
+		flex: 1;
+
+		.swiper-item {
+			height: 100%;
+			width: 100%;
+		}
+	}
+
+	.order-list-card-box {
+		.order-card-header {
+			height: 80rpx;
+
+			.order-no {
+				font-size: 26rpx;
+				font-weight: 500;
+			}
+
+			.order-state {}
+		}
+
+		.pay-box {
+			.discounts-title {
+				font-size: 24rpx;
+				line-height: normal;
+				color: #999999;
+			}
+
+			.discounts-money {
+				font-size: 24rpx;
+				line-height: normal;
+				color: #999;
+				font-family: OPPOSANS;
+			}
+
+			.pay-color {
+				color: #333;
+			}
+		}
+
+		.order-card-footer {
+			height: 100rpx;
+
+			.more-item-box {
+				padding: 20rpx;
+
+				.more-item {
+					height: 60rpx;
+
+					.title {
+						font-size: 26rpx;
+					}
+				}
+			}
+
+			.more-btn {
+				color: $dark-9;
+				font-size: 24rpx;
+			}
+
+			.content {
+				width: 154rpx;
+				color: #333333;
+				font-size: 26rpx;
+				font-weight: 500;
+			}
+		}
+	}
+
+	:deep(.uni-tooltip-popup) {
+		background: var(--ui-BG);
+	}
+
+	.warning-color {
+		color: #faad14;
+	}
+
+	.danger-color {
+		color: #ff3000;
+	}
+
+	.success-color {
+		color: #52c41a;
+	}
+
+	.info-color {
+		color: #999999;
+	}
+</style>

+ 239 - 242
pages/user/address/edit.vue

@@ -1,264 +1,261 @@
 <template>
-  <s-layout :title="state.model.id ? '编辑地址' : '新增地址'">
-    <uni-forms
-      ref="addressFormRef"
-      v-model="state.model"
-      :rules="state.rules"
-      validateTrigger="bind"
-      labelWidth="160"
-      labelAlign="left"
-      border
-      :labelStyle="{ fontWeight: 'bold' }"
-    >
-      <view class="bg-white form-box ss-p-x-30">
-        <uni-forms-item name="consignee" label="收货人" class="form-item">
-          <uni-easyinput
-            v-model="state.model.consignee"
-            placeholder="请填写收货人姓名"
-            :inputBorder="false"
-            placeholderStyle="color:#BBBBBB;font-size:30rpx;font-weight:400;line-height:normal"
-          />
-        </uni-forms-item>
+	<s-layout :title="state.model.id ? '编辑地址' : '新增地址'">
+		<uni-forms ref="addressFormRef" v-model="state.model" :rules="state.rules" validateTrigger="bind"
+			labelWidth="160" labelAlign="left" border :labelStyle="{ fontWeight: 'bold' }">
+			<view class="bg-white form-box ss-p-x-30">
+				<uni-forms-item name="consignee" label="收货人" class="form-item">
+					<uni-easyinput v-model="state.model.consignee" placeholder="请填写收货人姓名" :inputBorder="false"
+						placeholderStyle="color:#BBBBBB;font-size:30rpx;font-weight:400;line-height:normal" />
+				</uni-forms-item>
 
-        <uni-forms-item name="mobile" label="手机号" class="form-item">
-          <uni-easyinput
-            v-model="state.model.mobile"
-            type="number"
-            placeholder="请输入手机号"
-            :inputBorder="false"
-            placeholderStyle="color:#BBBBBB;font-size:30rpx;font-weight:400;line-height:normal"
-          >
-          </uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item
-          name="region"
-          label="省市区"
-          @tap="state.showRegion = true"
-          class="form-item"
-        >
-          <uni-easyinput
-            v-model="state.model.region"
-            disabled
-            :inputBorder="false"
-            :styles="{ disableColor: '#fff', color: '#333' }"
-            placeholderStyle="color:#BBBBBB;font-size:30rpx;font-weight:400;line-height:normal"
-            placeholder="请选择省市区"
-          >
-            <template v-slot:right>
-              <uni-icons type="right"></uni-icons>
-            </template>
-          </uni-easyinput>
-        </uni-forms-item>
-        <uni-forms-item
-          name="address"
-          label="详细地址"
-          :formItemStyle="{ alignItems: 'flex-start' }"
-          :labelStyle="{ lineHeight: '5em' }"
-          class="textarea-item"
-        >
-          <uni-easyinput
-            :inputBorder="false"
-            type="textarea"
-            v-model="state.model.address"
-            placeholderStyle="color:#BBBBBB;font-size:30rpx;font-weight:400;line-height:normal"
-            placeholder="请输入详细地址"
-            clearable
-          ></uni-easyinput>
-        </uni-forms-item>
-      </view>
+				<uni-forms-item name="mobile" label="手机号" class="form-item">
+					<uni-easyinput v-model="state.model.mobile" type="number" placeholder="请输入手机号" :inputBorder="false"
+						placeholderStyle="color:#BBBBBB;font-size:30rpx;font-weight:400;line-height:normal">
+					</uni-easyinput>
+				</uni-forms-item>
+				<uni-forms-item name="region" label="省市区" @tap="state.showRegion = true" class="form-item">
+					<uni-easyinput v-model="state.model.region" disabled :inputBorder="false"
+						:styles="{ disableColor: '#fff', color: '#333' }"
+						placeholderStyle="color:#BBBBBB;font-size:30rpx;font-weight:400;line-height:normal"
+						placeholder="请选择省市区">
+						<template v-slot:right>
+							<uni-icons type="right"></uni-icons>
+						</template>
+					</uni-easyinput>
+				</uni-forms-item>
+				<uni-forms-item name="address" label="详细地址" :formItemStyle="{ alignItems: 'flex-start' }"
+					:labelStyle="{ lineHeight: '5em' }" class="textarea-item">
+					<uni-easyinput :inputBorder="false" type="textarea" v-model="state.model.address"
+						placeholderStyle="color:#BBBBBB;font-size:30rpx;font-weight:400;line-height:normal"
+						placeholder="请输入详细地址" clearable></uni-easyinput>
+				</uni-forms-item>
+			</view>
 
-      <view class="ss-m-y-20 bg-white ss-p-x-30 ss-flex ss-row-between ss-col-center default-box">
-        <view class="default-box-title"> 设为默认地址 </view>
-        <su-switch style="transform: scale(0.8)" v-model="state.model.is_default"></su-switch>
-      </view>
-    </uni-forms>
-    <su-fixed bottom :opacity="false" bg="" placeholder :noFixed="false" :index="10">
-      <view class="footer-box ss-flex-col ss-row-between ss-p-20">
-        <view class="ss-m-b-20"
-          ><button class="ss-reset-button save-btn ui-Shadow-Main" @tap="onSave">保存</button></view
-        >
-        <button v-if="state.model.id" class="ss-reset-button cancel-btn" @tap="onDelete">
-          删除
-        </button>
-      </view>
-    </su-fixed>
-    <!-- 省市区弹窗 -->
-    <su-region-picker
-      :show="state.showRegion"
-      @cancel="state.showRegion = false"
-      @confirm="onRegionConfirm"
-    >
-    </su-region-picker>
-  </s-layout>
+			<view class="ss-m-y-20 bg-white ss-p-x-30 ss-flex ss-row-between ss-col-center default-box">
+				<view class="default-box-title"> 设为默认地址 </view>
+				<su-switch style="transform: scale(0.8)" v-model="state.model.is_default"></su-switch>
+			</view>
+		</uni-forms>
+		<su-fixed bottom :opacity="false" bg="" placeholder :noFixed="false" :index="10">
+			<view class="footer-box ss-flex-col ss-row-between ss-p-20">
+				<view class="ss-m-b-20"><button class="ss-reset-button save-btn ui-Shadow-Main"
+						@tap="onSave">保存</button></view>
+				<button v-if="state.model.id" class="ss-reset-button cancel-btn" @tap="onDelete">
+					删除
+				</button>
+			</view>
+		</su-fixed>
+		<!-- 省市区弹窗 -->
+		<su-region-picker :show="state.showRegion" @cancel="state.showRegion = false" @confirm="onRegionConfirm">
+		</su-region-picker>
+	</s-layout>
 </template>
 
 <script setup>
-  import { computed, watch, ref, reactive, unref } from 'vue';
-  import sheep from '@/sheep';
-  import { onLoad, onPageScroll } from '@dcloudio/uni-app';
-  import _ from 'lodash';
-  import { consignee, mobile, address, region } from '@/sheep/validate/form';
+	import {
+		computed,
+		watch,
+		ref,
+		reactive,
+		unref
+	} from 'vue';
+	import sheep from '@/sheep';
+	import {
+		onLoad,
+		onPageScroll
+	} from '@dcloudio/uni-app';
+	import _ from 'lodash';
+	import {
+		consignee,
+		mobile,
+		address,
+		region
+	} from '@/sheep/validate/form';
 
-  const addressFormRef = ref(null);
-  const state = reactive({
-    showRegion: false,
-    model: {
-      consignee: '',
-      mobile: '',
-      address: '',
-      is_default: false,
-      region: '',
-    },
-    rules: {
-      consignee,
-      mobile,
-      address,
-      region,
-    },
-  });
-  watch(
-    () => state.model.province_name,
-    (newValue) => {
-      if (newValue) {
-        state.model.region = `${state.model.province_name}-${state.model.city_name}-${state.model.district_name}`;
-      }
-    },
-    {
-      deep: true,
-    },
-  );
-  const onRegionConfirm = (e) => {
-    state.model = {
-      ...state.model,
-      ...e,
-    };
-    state.showRegion = false;
-  };
-  const getAreaData = () => {
-    if (_.isEmpty(uni.getStorageSync('areaData'))) {
-      sheep.$api.data.area().then((res) => {
-        if (res.error === 0) {
-          uni.setStorageSync('areaData', res.data);
-        }
-      });
-    }
-  };
-  const onSave = async () => {
-    const validate = await unref(addressFormRef)
-      .validate()
-      .catch((error) => {
-        console.log('error: ', error);
-      });
-    if (!validate) return;
+	const addressFormRef = ref(null);
+	const state = reactive({
+		showRegion: false,
+		model: {
+			consignee: '',
+			mobile: '',
+			address: '',
+			is_default: false,
+			region: '',
+		},
+		rules: {
+			consignee,
+			mobile,
+			address,
+			region,
+		},
+	});
+	watch(
+		() => state.model.province_name,
+		(newValue) => {
+			if (newValue) {
+				state.model.region =
+					`${state.model.province_name}-${state.model.city_name}-${state.model.district_name}`;
+			}
+		}, {
+			deep: true,
+		},
+	);
+	const onRegionConfirm = (e) => {
+		state.model = {
+			...state.model,
+			...e,
+		};
+		state.showRegion = false;
+	};
+	const getAreaData = () => {
+		if (_.isEmpty(uni.getStorageSync('areaData'))) {
+			sheep.$api.data.area().then((res) => {
+				if (res.code === 0) {
+					uni.setStorageSync('areaData', res.data);
+				}
+			});
+		}
+	};
+	const onSave = async () => {
+		const validate = await unref(addressFormRef)
+			.validate()
+			.catch((error) => {
+				console.log('error: ', error);
+			});
+		if (!validate) return;
 
-    let res = null;
-    if (state.model.id) {
-      res = await sheep.$api.user.address.update(state.model.id, state.model);
-    } else {
-      res = await sheep.$api.user.address.create(state.model);
-    }
-    if (res.error === 0) {
-      sheep.$router.back();
-    }
-  };
+		let res = null;
+		if (state.model.id) {
+			res = await sheep.$api.user.address.update({
+				id: state.model.id,
+				areaId: state.model.district_id,
+				defaultStatus: state.model.is_default,
+				detailAddress: state.model.address,
+				mobile: state.model.mobile,
+				name: state.model.consignee
+			});
+		} else {
+			res = await sheep.$api.user.address.create({
+				areaId: state.model.district_id,
+				defaultStatus: state.model.is_default,
+				detailAddress: state.model.address,
+				mobile: state.model.mobile,
+				name: state.model.consignee
+			});
+		}
+		if (res.code === 0) {
+			sheep.$router.back();
+		}
+	};
 
-  const onDelete = () => {
-    uni.showModal({
-      title: '提示',
-      content: '确认删除此收货地址吗?',
-      success: async function (res) {
-        if (res.confirm) {
-          const { error } = await sheep.$api.user.address.delete(state.model.id);
-          if (res.error === 0) {
-            sheep.$router.back();
-          }
-        }
-      },
-    });
-  };
-  onLoad(async (options) => {
-    getAreaData();
-    if (options.id) {
-      let res = await sheep.$api.user.address.detail(options.id);
-      if (res.error === 0) {
-        state.model = {
-          ...state.model,
-          ...res.data,
-        };
-      }
-    }
+	const onDelete = () => {
+		uni.showModal({
+			title: '提示',
+			content: '确认删除此收货地址吗?',
+			success: async function(res) {
+				if (res.confirm) {
+					const {
+						code
+					} = await sheep.$api.user.address.delete(state.model.id);
+					if (code === 0) {
+						sheep.$router.back();
+					}
+				}
+			},
+		});
+	};
+	onLoad(async (options) => {
+		getAreaData();
+		if (options.id) {
+			let res = await sheep.$api.user.address.detail(options.id);
+			if (res.code === 0) {
+				state.model = {
+					...state.model,
+					district_id: res.data.areaId,
+					is_default: res.data.defaultStatus,
+					address: res.data.detailAddress,
+					mobile: res.data.mobile,
+					consignee: res.data.name,
+					id: res.data.id,
+					province_name: res.data.areaName.split(' ')[0],
+					city_name: res.data.areaName.split(' ')[1],
+					district_name: res.data.areaName.split(' ')[2]
+				};
+			}
+		}
 
-    if (options.data) {
-      let data = JSON.parse(options.data);
-      state.model = {
-        ...state.model,
-        ...data,
-      };
-    }
-  });
+		if (options.data) {
+			let data = JSON.parse(options.data);
+			console.log(data)
+			state.model = {
+				...state.model,
+				...data,
+			};
+		}
+	});
 </script>
 
 <style lang="scss" scoped>
-  :deep() {
-    .uni-forms-item__label .label-text {
-      font-size: 28rpx !important;
-      color: #333333 !important;
-      line-height: normal !important;
-    }
+	:deep() {
+		.uni-forms-item__label .label-text {
+			font-size: 28rpx !important;
+			color: #333333 !important;
+			line-height: normal !important;
+		}
 
-    .uni-easyinput__content-input {
-      font-size: 28rpx !important;
-      color: #333333 !important;
-      line-height: normal !important;
-      padding-left: 0 !important;
-    }
+		.uni-easyinput__content-input {
+			font-size: 28rpx !important;
+			color: #333333 !important;
+			line-height: normal !important;
+			padding-left: 0 !important;
+		}
 
-    .uni-easyinput__content-textarea {
-      font-size: 28rpx !important;
-      color: #333333 !important;
-      line-height: normal !important;
-      margin-top: 8rpx !important;
-    }
+		.uni-easyinput__content-textarea {
+			font-size: 28rpx !important;
+			color: #333333 !important;
+			line-height: normal !important;
+			margin-top: 8rpx !important;
+		}
 
-    .uni-icons {
-      font-size: 40rpx !important;
-    }
+		.uni-icons {
+			font-size: 40rpx !important;
+		}
 
-    .is-textarea-icon {
-      margin-top: 22rpx;
-    }
+		.is-textarea-icon {
+			margin-top: 22rpx;
+		}
 
-    .is-disabled {
-      color: #333333;
-    }
-  }
+		.is-disabled {
+			color: #333333;
+		}
+	}
 
-  .default-box {
-    width: 100%;
-    box-sizing: border-box;
-    height: 100rpx;
+	.default-box {
+		width: 100%;
+		box-sizing: border-box;
+		height: 100rpx;
 
-    .default-box-title {
-      font-size: 28rpx;
-      color: #333333;
-      line-height: normal;
-    }
-  }
+		.default-box-title {
+			font-size: 28rpx;
+			color: #333333;
+			line-height: normal;
+		}
+	}
 
-  .footer-box {
-    .save-btn {
-      width: 710rpx;
-      height: 80rpx;
-      border-radius: 40rpx;
-      background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-      color: $white;
-    }
+	.footer-box {
+		.save-btn {
+			width: 710rpx;
+			height: 80rpx;
+			border-radius: 40rpx;
+			background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+			color: $white;
+		}
 
-    .cancel-btn {
-      width: 710rpx;
-      height: 80rpx;
-      border-radius: 40rpx;
-      background: var(--ui-BG);
-    }
-  }
-</style>
+		.cancel-btn {
+			width: 710rpx;
+			height: 80rpx;
+			border-radius: 40rpx;
+			background: var(--ui-BG);
+		}
+	}
+</style>

+ 17 - 14
pages/user/goods-collect.vue

@@ -35,25 +35,26 @@
             <label
               class="check-box ss-flex ss-col-center ss-p-l-10"
               v-if="state.editMode"
-              @tap="onSelect(item.goods_id)"
+              @tap="onSelect(item.spuId)"
             >
               <radio
-                :checked="state.selectedCollectList.includes(item.goods_id)"
+                :checked="state.selectedCollectList.includes(item.spuId)"
                 color="var(--ui-BG-Main)"
                 style="transform: scale(0.8)"
-                @tap.stop="onSelect(item.goods_id)"
+                @tap.stop="onSelect(item.spuId)"
               />
             </label>
+			  <!-- :skuText="item.goods.subtitle" -->
             <s-goods-item
-              :title="item.goods.title"
-              :img="item.goods.image"
-              :price="item.goods.price[0]"
-              :skuText="item.goods.subtitle"
+              :title="item.spuName"
+              :img="item.picUrl"
+              :price="item.price"
+            
               priceColor="#FF3000"
               :titleWidth="400"
               @tap="
                 sheep.$router.go('/pages/goods/index', {
-                  id: item.goods_id,
+                  id: item.spuId,
                 })
               "
             >
@@ -126,15 +127,17 @@
   async function getData(page = 1, list_rows = 6) {
     state.loadStatus = 'loading';
     let res = await sheep.$api.user.favorite.list({
-      list_rows,
-      page,
+      pageSize:list_rows,
+      pageNo:page,
     });
-    if (res.error === 0) {
-      let orderList = _.concat(state.pagination.data, res.data.data);
+    if (res.code === 0) {
+		console.log('yudao收藏列表',res)
+      let orderList = _.concat(state.pagination.data, res.data.list);
       state.pagination = {
         ...res.data,
         data: orderList,
       };
+	  // 没有原接口文档不太理解这字段意思
       if (state.pagination.current_page < state.pagination.last_page) {
         state.loadStatus = 'more';
       } else {
@@ -173,8 +176,8 @@
   async function onCancel() {
     if (state.selectedCollectList) {
       state.selectedCollectList = state.selectedCollectList.toString();
-      const { error } = await sheep.$api.user.favorite.cancel(state.selectedCollectList);
-      if (error === 0) {
+      const { code } = await sheep.$api.user.favorite.cancel(state.selectedCollectList);
+      if (code === 0) {
         state.editMode = false;
         state.selectedCollectList = [];
         state.selectAll = false;

+ 14 - 7
pages/user/info.vue

@@ -36,7 +36,7 @@
       </view>
 
       <view class="bg-white ss-p-x-30">
-        <uni-forms-item name="username" label="用户名" @tap="onChangeUsername" class="label-box">
+      <!--  <uni-forms-item name="username" label="用户名" @tap="onChangeUsername" class="label-box">
           <uni-easyinput
             v-model="userInfo.username"
             disabled
@@ -53,7 +53,7 @@
               </button>
             </template>
           </uni-easyinput>
-        </uni-forms-item>
+        </uni-forms-item> -->
 
         <uni-forms-item name="nickname" label="昵称">
           <uni-easyinput
@@ -65,7 +65,7 @@
           />
         </uni-forms-item>
 
-        <uni-forms-item name="gender" label="性别">
+<!--        <uni-forms-item name="gender" label="性别">
           <view class="ss-flex ss-col-center ss-h-100">
             <radio-group @change="onChangeGender" class="ss-flex ss-col-center">
               <label class="radio" v-for="item in genderRadioMap" :key="item.value">
@@ -81,7 +81,7 @@
               </label>
             </radio-group>
           </view>
-        </uni-forms-item>
+        </uni-forms-item> -->
 
         <uni-forms-item name="mobile" label="手机号" @tap="onChangeMobile">
           <uni-easyinput
@@ -312,12 +312,17 @@
 
   // 保存信息
   async function onSubmit() {
-    const { error, data } = await sheep.$api.user.update({
+    // const { error, data } = await sheep.$api.user.update({
+    //   avatar: state.model.avatar,
+    //   nickname: state.model.nickname,
+    //   gender: state.model.gender,
+    // });  
+	 const { code, data } = await sheep.$api.user.update({
       avatar: state.model.avatar,
       nickname: state.model.nickname,
-      gender: state.model.gender,
+      // gender: state.model.gender,
     });
-    if (error === 0) {
+    if (code === 0) {
       getUserInfo();
     }
   }
@@ -327,6 +332,8 @@
     state.model = clone(userInfo);
 
     if (sheep.$platform.name !== 'H5') {
+		return;
+		// 这个先注释,要不然小程序保存个人信息有问题,
       let { data, error } = await sheep.$api.user.thirdOauthInfo();
       if (error === 0) {
         state.thirdOauthInfo = data;

+ 336 - 344
pages/user/wallet/money.vue

@@ -1,352 +1,344 @@
 <template>
-  <s-layout class="wallet-wrap" title="钱包">
-    <!-- 钱包卡片 -->
-    <view class="header-box ss-flex ss-row-center ss-col-center">
-      <view class="card-box ui-BG-Main ui-Shadow-Main">
-        <view class="card-head ss-flex ss-col-center">
-          <view class="card-title ss-m-r-10">钱包余额(元)</view>
-          <view
-            @tap="state.showMoney = !state.showMoney"
-            class="ss-eye-icon"
-            :class="state.showMoney ? 'cicon-eye' : 'cicon-eye-off'"
-          ></view>
-        </view>
-        <view class="ss-flex ss-row-between ss-col-center ss-m-t-64">
-          <view class="money-num">{{ state.showMoney ? userInfo.money : '*****' }}</view>
-          <button class="ss-reset-button topup-btn" @tap="sheep.$router.go('/pages/pay/recharge')">
-            充值
-          </button>
-        </view>
-      </view>
-    </view>
-
-    <su-sticky>
-      <!-- 统计 -->
-      <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.toFixed(2) }}</view>
-          <view>总支出¥{{ (-state.pagination.expense).toFixed(2) }}</view>
-        </view>
-      </view>
-      <su-tabs
-        :list="tabMaps"
-        @change="onChange"
-        :scrollable="false"
-        :current="state.currentTab"
-      ></su-tabs>
-    </su-sticky>
-    <s-empty v-if="state.pagination.total === 0" text="暂无数据" icon="/static/data-empty.png" />
-    <!-- 钱包记录 -->
-    <view v-if="state.pagination.total > 0">
-      <view
-        class="wallet-list ss-flex border-bottom"
-        v-for="item in state.pagination.data"
-        :key="item.id"
-      >
-        <view class="list-content">
-          <view class="title-box ss-flex ss-row-between ss-m-b-20">
-            <text class="title ss-line-1"
-              >{{ item.event_text }}{{ item.memo ? '-' + item.memo : '' }}</text
-            >
-            <view class="money">
-              <text v-if="item.amount >= 0" class="add">+{{ item.amount }}</text>
-              <text v-else class="minus">{{ item.amount }}</text>
-            </view>
-          </view>
-          <text class="time">{{ item.create_time }}</text>
-        </view>
-      </view>
-    </view>
-    <uni-load-more
-      v-if="state.pagination.total > 0"
-      :status="state.loadStatus"
-      :content-text="{
+	<s-layout class="wallet-wrap" title="钱包">
+		<!-- 钱包卡片 -->
+		<view class="header-box ss-flex ss-row-center ss-col-center">
+			<view class="card-box ui-BG-Main ui-Shadow-Main">
+				<view class="card-head ss-flex ss-col-center">
+					<view class="card-title ss-m-r-10">钱包余额(元)</view>
+					<view @tap="state.showMoney = !state.showMoney" class="ss-eye-icon"
+						:class="state.showMoney ? 'cicon-eye' : 'cicon-eye-off'"></view>
+				</view>
+				<view class="ss-flex ss-row-between ss-col-center ss-m-t-64">
+					<view class="money-num">{{ state.showMoney ? userInfo.money : '*****' }}</view>
+					<button class="ss-reset-button topup-btn" @tap="sheep.$router.go('/pages/pay/recharge')">
+						充值
+					</button>
+				</view>
+			</view>
+		</view>
+
+		<su-sticky>
+			<!-- 统计 -->
+			<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">
+					 <!-- state.pagination.income.toFixed(2) -->
+					<view class="ss-m-b-10">总收入¥{{ }}</view>
+					<view>总支出¥{{  }}</view>
+					<!-- (-state.pagination.expense).toFixed(2) -->
+				</view>
+			</view>
+			<su-tabs :list="tabMaps" @change="onChange" :scrollable="false" :current="state.currentTab"></su-tabs>
+		</su-sticky>
+		<s-empty v-if="state.pagination.total === 0" text="暂无数据" icon="/static/data-empty.png" />
+		<!-- 钱包记录 -->
+		<view v-if="state.pagination.total > 0">
+			<view class="wallet-list ss-flex border-bottom" v-for="item in state.pagination.data" :key="item.id">
+				<view class="list-content">
+					<view class="title-box ss-flex ss-row-between ss-m-b-20">
+						<!-- <text class="title ss-line-1">{{ item.event_text }}{{ item.memo ? '-' + item.memo : '' }}</text> -->
+						<text class="title ss-line-1">{{ item.title }}</text>
+						<view class="money">
+							<text v-if="(item.amount >= 0||item.price>=0)" class="add">+{{ item.amount||item.price }}</text>
+							<text v-else class="minus">{{ item.price }}</text>
+						</view>
+					</view>
+					<text class="time">{{ item.createTime }}</text>
+				</view>
+			</view>
+		</view>
+		<uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
         contentdown: '上拉加载更多',
-      }"
-    />
-  </s-layout>
+      }" />
+	</s-layout>
 </template>
 
 <script setup>
-  import { computed, watch, reactive } from 'vue';
-  import { onLoad, onReachBottom } from '@dcloudio/uni-app';
-  import sheep from '@/sheep';
-  import dayjs from 'dayjs';
-  import _ from 'lodash';
-
-  const headerBg = sheep.$url.css('/static/img/shop/user/wallet_card_bg.png');
-
-  const pagination = {
-    data: [],
-    current_page: 1,
-    total: 1,
-    last_page: 1,
-    expense: 0,
-    income: 0,
-  };
-  // 数据
-  const state = reactive({
-    showMoney: false,
-    date: [],
-    currentTab: 0,
-    pagination,
-    loadStatus: '',
-    today: '',
-  });
-
-  const tabMaps = [
-    {
-      name: '全部',
-      value: 'all',
-    },
-    {
-      name: '收入',
-      value: 'income',
-    },
-    {
-      name: '支出',
-      value: 'expense',
-    },
-  ];
-  const userInfo = computed(() => sheep.$store('user').userInfo);
-
-  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: 'money',
-      tab: tabMaps[state.currentTab].value,
-      list_rows,
-      page,
-      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'];
-  }
-
-  onReachBottom(() => {
-    if (state.loadStatus !== 'noMore') {
-      getLogList(state.pagination.current_page + 1);
-    }
-  });
+	import {
+		computed,
+		watch,
+		reactive
+	} from 'vue';
+	import {
+		onLoad,
+		onReachBottom
+	} from '@dcloudio/uni-app';
+	import sheep from '@/sheep';
+	import dayjs from 'dayjs';
+	import _ from 'lodash';
+
+	const headerBg = sheep.$url.css('/static/img/shop/user/wallet_card_bg.png');
+
+	const pagination = {
+		data: [],
+		current_page: 1,
+		total: 1,
+		last_page: 1,
+		expense: 0,
+		income: 0,
+	};
+	// 数据
+	const state = reactive({
+		showMoney: false,
+		date: [],
+		currentTab: 0,
+		pagination,
+		loadStatus: '',
+		today: '',
+	});
+
+	const tabMaps = [{
+			name: '全部',
+			// value: 'all',
+		},
+		{
+			name: '收入',
+			value: '1',
+		},
+		{
+			name: '支出',
+			value: '2',
+		},
+	];
+	const userInfo = computed(() => sheep.$store('user').userInfo);
+	console.log(userInfo)
+	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: 'money',
+			type: tabMaps[state.currentTab].value,
+			pageSize: list_rows,
+			pageNo: page,
+			// date: appendTimeHMS(state.date),
+		});
+		if (res.code === 0) {
+			let list = _.concat(state.pagination.data, res.data.list);
+			state.pagination = {
+				...res.data,
+				data: list,
+				income: res.data.income,
+				expense: res.data.expense,
+			};
+			console.log('交易数据',state.pagination)
+			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'];
+	}
+
+	onReachBottom(() => {
+		if (state.loadStatus !== 'noMore') {
+			getLogList(state.pagination.current_page + 1);
+		}
+	});
 </script>
 
 <style lang="scss" scoped>
-  // 钱包
-  .header-box {
-    background-color: $white;
-    padding: 30rpx;
-
-    .card-box {
-      width: 100%;
-      min-height: 300rpx;
-      padding: 40rpx;
-      background-size: 100% 100%;
-      border-radius: 30rpx;
-      overflow: hidden;
-      position: relative;
-      z-index: 1;
-      box-sizing: border-box;
-
-      &::after {
-        content: '';
-        display: block;
-        width: 100%;
-        height: 100%;
-        z-index: 2;
-        position: absolute;
-        top: 0;
-        left: 0;
-        background: v-bind(headerBg)
-          no-repeat;
-        pointer-events: none;
-      }
-
-      .card-head {
-        color: $white;
-        font-size: 30rpx;
-      }
-
-      .ss-eye-icon {
-        font-size: 40rpx;
-        color: $white;
-      }
-
-      .money-num {
-        font-size: 70rpx;
-        line-height: 70rpx;
-        font-weight: 500;
-        color: $white;
-        font-family: OPPOSANS;
-      }
-
-      .reduce-num {
-        font-size: 26rpx;
-        font-weight: 400;
-        color: $white;
-      }
-
-      .topup-btn {
-        width: 120rpx;
-        height: 60rpx;
-        line-height: 60rpx;
-        border-radius: 30px;
-        font-size: 26rpx;
-        font-weight: 500;
-        background-color: $white;
-        color: var(--ui-BG-Main);
-      }
-    }
-  }
-
-  // 筛选
-
-  .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;
-      }
-    }
-  }
-
-  .tabs-box {
-    background: $white;
-    border-bottom: 2rpx solid #eeeeee;
-  }
-
-  // tab
-  .wallet-tab-card {
-    .tab-item {
-      height: 80rpx;
-      position: relative;
-
-      .tab-title {
-        font-size: 30rpx;
-      }
-
-      .cur-tab-title {
-        font-weight: $font-weight-bold;
-      }
-
-      .tab-line {
-        width: 60rpx;
-        height: 6rpx;
-        border-radius: 6rpx;
-        position: absolute;
-        left: 50%;
-        transform: translateX(-50%);
-        bottom: 2rpx;
-        background-color: var(--ui-BG-Main);
-      }
-    }
-  }
-
-  // 钱包记录
-  .wallet-list {
-    padding: 30rpx;
-    background-color: #ffff;
-
-    .head-img {
-      width: 70rpx;
-      height: 70rpx;
-      border-radius: 50%;
-      background: $gray-c;
-    }
-
-    .list-content {
-      justify-content: space-between;
-      align-items: flex-start;
-      flex: 1;
-
-      .title {
-        font-size: 28rpx;
-        color: $dark-3;
-        width: 400rpx;
-      }
-
-      .time {
-        color: $gray-c;
-        font-size: 22rpx;
-      }
-    }
-
-    .money {
-      font-size: 28rpx;
-      font-weight: bold;
-      font-family: OPPOSANS;
-      .add {
-        color: var(--ui-BG-Main);
-      }
-
-      .minus {
-        color: $dark-3;
-      }
-    }
-  }
-</style>
+	// 钱包
+	.header-box {
+		background-color: $white;
+		padding: 30rpx;
+
+		.card-box {
+			width: 100%;
+			min-height: 300rpx;
+			padding: 40rpx;
+			background-size: 100% 100%;
+			border-radius: 30rpx;
+			overflow: hidden;
+			position: relative;
+			z-index: 1;
+			box-sizing: border-box;
+
+			&::after {
+				content: '';
+				display: block;
+				width: 100%;
+				height: 100%;
+				z-index: 2;
+				position: absolute;
+				top: 0;
+				left: 0;
+				background: v-bind(headerBg) no-repeat;
+				pointer-events: none;
+			}
+
+			.card-head {
+				color: $white;
+				font-size: 30rpx;
+			}
+
+			.ss-eye-icon {
+				font-size: 40rpx;
+				color: $white;
+			}
+
+			.money-num {
+				font-size: 70rpx;
+				line-height: 70rpx;
+				font-weight: 500;
+				color: $white;
+				font-family: OPPOSANS;
+			}
+
+			.reduce-num {
+				font-size: 26rpx;
+				font-weight: 400;
+				color: $white;
+			}
+
+			.topup-btn {
+				width: 120rpx;
+				height: 60rpx;
+				line-height: 60rpx;
+				border-radius: 30px;
+				font-size: 26rpx;
+				font-weight: 500;
+				background-color: $white;
+				color: var(--ui-BG-Main);
+			}
+		}
+	}
+
+	// 筛选
+
+	.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;
+			}
+		}
+	}
+
+	.tabs-box {
+		background: $white;
+		border-bottom: 2rpx solid #eeeeee;
+	}
+
+	// tab
+	.wallet-tab-card {
+		.tab-item {
+			height: 80rpx;
+			position: relative;
+
+			.tab-title {
+				font-size: 30rpx;
+			}
+
+			.cur-tab-title {
+				font-weight: $font-weight-bold;
+			}
+
+			.tab-line {
+				width: 60rpx;
+				height: 6rpx;
+				border-radius: 6rpx;
+				position: absolute;
+				left: 50%;
+				transform: translateX(-50%);
+				bottom: 2rpx;
+				background-color: var(--ui-BG-Main);
+			}
+		}
+	}
+
+	// 钱包记录
+	.wallet-list {
+		padding: 30rpx;
+		background-color: #ffff;
+
+		.head-img {
+			width: 70rpx;
+			height: 70rpx;
+			border-radius: 50%;
+			background: $gray-c;
+		}
+
+		.list-content {
+			justify-content: space-between;
+			align-items: flex-start;
+			flex: 1;
+
+			.title {
+				font-size: 28rpx;
+				color: $dark-3;
+				width: 400rpx;
+			}
+
+			.time {
+				color: $gray-c;
+				font-size: 22rpx;
+			}
+		}
+
+		.money {
+			font-size: 28rpx;
+			font-weight: bold;
+			font-family: OPPOSANS;
+
+			.add {
+				color: var(--ui-BG-Main);
+			}
+
+			.minus {
+				color: $dark-3;
+			}
+		}
+	}
+</style>

+ 7 - 3
sheep/api/app.js

@@ -107,16 +107,20 @@ export default {
       title: '上传中',
     });
     return new Promise((resolve, reject) => {
+		// 此处先换成yudao
       uni.uploadFile({
-        url: baseUrl + '/file/api/upload',
+        url: 'http://api-dashboard.yudao.iocoder.cn' + '/app-api/infra/file/upload',
         filePath: file,
         name: 'file',
         formData: {
           group,
         },
         header: {
-          Accept: 'text/json',
-          Authorization: token,
+          // Accept: 'text/json',
+          // Authorization: token,
+		  Accept : '*/*',
+		  'tenant-id' :'1',
+		  Authorization:  'Bearer test247',
         },
         success: (uploadFileRes) => {
           let result = JSON.parse(uploadFileRes.data);

+ 8 - 2
sheep/api/data.js

@@ -1,11 +1,17 @@
 import request from '@/sheep/request';
+import request2 from '@/sheep/request2';
 
 export default {
   area: () =>
-    request({
-      url: 'data/area',
+    request2({
+      url: 'system/area/tree',
       method: 'GET',
     }),
+  // area: () =>
+  //   request({
+  //     url: 'data/area',
+  //     method: 'GET',
+  //   }),
   faq: () =>
     request({
       url: 'data/faq',

+ 5 - 0
sheep/api/index2.js

@@ -6,4 +6,9 @@ export default {
       url: 'promotion/decorate/list?page=1',
       method: 'GET',
     }),
+  spids: () =>
+    request2({
+      url: 'product/spu/page?recommendType=best&pageNo=1&pageSize=10',
+      method: 'GET',
+    }),
 };

+ 12 - 2
sheep/api/order.js

@@ -1,4 +1,5 @@
 import request from '@/sheep/request';
+import request2 from '@/sheep/request2';
 
 export default {
   // 订单详情
@@ -33,14 +34,23 @@ export default {
     }),
   // 订单列表
   list: (params) =>
-    request({
-      url: 'order/order',
+    request2({
+      url: 'trade/order/page',
       method: 'GET',
       params,
       custom: {
         showLoading: false,
       },
     }),
+  // list: (params) =>
+  //   request({
+  //     url: 'order/order',
+  //     method: 'GET',
+  //     params,
+  //     custom: {
+  //       showLoading: false,
+  //     },
+  //   }),
   // 计算订单信息
   calc: (data) =>
     request({

+ 422 - 320
sheep/api/user.js

@@ -1,331 +1,433 @@
 import request from '@/sheep/request';
+import request2 from '@/sheep/request2';
 import $platform from '@/sheep/platform';
 
 export default {
-  profile: () =>
-    request({
-      url: '/user/api/user/profile',
-      method: 'GET',
-      custom: {
-        showLoading: false,
-        auth: true,
-      },
-    }),
-  update: (data) =>
-    request({
-      url: '/user/api/user/update',
-      method: 'POST',
-      custom: {
-        showSuccess: true,
-        auth: true,
-      },
-      data,
-    }),
-  // 账号登录
-  accountLogin: (data) =>
-    request({
-      url: '/user/api/user/accountLogin',
-      method: 'POST',
-      data,
-      custom: {
-        showSuccess: true,
-        loadingMsg: '登录中',
-      },
-    }),
-  // 短信登录
-  smsLogin: (data) =>
-    request({
-      url: '/user/api/user/smsLogin',
-      method: 'POST',
-      data,
-      custom: {
-        showSuccess: true,
-        loadingMsg: '登录中',
-      },
-    }),
-  // 短信注册
-  smsRegister: (data) =>
-    request({
-      url: '/user/api/user/smsRegister',
-      method: 'POST',
-      data,
-      custom: {
-        showSuccess: true,
-        loadingMsg: '正在注册',
-      },
-    }),
-  // 重置密码
-  resetPassword: (data) =>
-    request({
-      url: '/user/api/user/resetPassword',
-      method: 'POST',
-      data,
-      custom: {
-        showSuccess: true,
-        loadingMsg: '验证中',
-      },
-    }),
+	profile: () =>
+		request2({
+			url: 'member/user/get',
+			method: 'GET',
+			custom: {
+				showLoading: false,
+				auth: true,
+			},
+		}),
+	balance: () =>
+		request2({
+			url: '/app-api/pay/wallet/get',
+			method: 'GET',
+			custom: {
+				showLoading: false,
+				auth: true,
+			},
+		}),
+	// profile: () =>
+	//   request({
+	//     url: '/user/api/user/profile',
+	//     method: 'GET',
+	//     custom: {
+	//       showLoading: false,
+	//       auth: true,
+	//     },
+	//   }),
+	// update: (data) =>
+	//   request({
+	//     url: '/user/api/user/update',
+	//     method: 'POST',
+	//     custom: {
+	//       showSuccess: true,
+	//       auth: true,
+	//     },
+	//     data,
+	//   }),
+	update: (data) =>
+		request2({
+			url: 'member/user/update',
+			method: 'PUT',
+			custom: {
+				showSuccess: true,
+				auth: true,
+			},
+			data,
+		}),
+	// 账号登录
+	accountLogin: (data) =>
+		request({
+			url: '/user/api/user/accountLogin',
+			method: 'POST',
+			data,
+			custom: {
+				showSuccess: true,
+				loadingMsg: '登录中',
+			},
+		}),
+	// 短信登录
+	smsLogin: (data) =>
+		request({
+			url: '/user/api/user/smsLogin',
+			method: 'POST',
+			data,
+			custom: {
+				showSuccess: true,
+				loadingMsg: '登录中',
+			},
+		}),
+	// 短信注册
+	smsRegister: (data) =>
+		request({
+			url: '/user/api/user/smsRegister',
+			method: 'POST',
+			data,
+			custom: {
+				showSuccess: true,
+				loadingMsg: '正在注册',
+			},
+		}),
+	// 重置密码
+	resetPassword: (data) =>
+		request({
+			url: '/user/api/user/resetPassword',
+			method: 'POST',
+			data,
+			custom: {
+				showSuccess: true,
+				loadingMsg: '验证中',
+			},
+		}),
 
-  // 修改密码
-  changePassword: (data) =>
-    request({
-      url: '/user/api/user/changePassword',
-      method: 'POST',
-      data,
-      custom: {
-        showSuccess: true,
-        loadingMsg: '验证中',
-      },
-    }),
+	// 修改密码
+	changePassword: (data) =>
+		request({
+			url: '/user/api/user/changePassword',
+			method: 'POST',
+			data,
+			custom: {
+				showSuccess: true,
+				loadingMsg: '验证中',
+			},
+		}),
 
-  // 绑定、更换手机号
-  changeMobile: (data) =>
-    request({
-      url: '/user/api/user/changeMobile',
-      method: 'POST',
-      data,
-      custom: {
-        showSuccess: true,
-        loadingMsg: '验证中',
-      },
-    }),
+	// 绑定、更换手机号
+	changeMobile: (data) =>
+		request({
+			url: '/user/api/user/changeMobile',
+			method: 'POST',
+			data,
+			custom: {
+				showSuccess: true,
+				loadingMsg: '验证中',
+			},
+		}),
 
-  // 修改用户名
-  changeUsername: (data) =>
-    request({
-      url: '/user/api/user/changeUsername',
-      method: 'POST',
-      data,
-      custom: {
-        showSuccess: true,
-        loadingMsg: '验证中',
-      },
-    }),
+	// 修改用户名
+	changeUsername: (data) =>
+		request({
+			url: '/user/api/user/changeUsername',
+			method: 'POST',
+			data,
+			custom: {
+				showSuccess: true,
+				loadingMsg: '验证中',
+			},
+		}),
 
-  // 更新小程序信息
-  updateMpUserInfo: (data) =>
-    request({
-      url: '/user/api/user/updateMpUserInfo',
-      method: 'POST',
-      data,
-    }),
+	// 更新小程序信息
+	updateMpUserInfo: (data) =>
+		request({
+			url: '/user/api/user/updateMpUserInfo',
+			method: 'POST',
+			data,
+		}),
 
-  // 第三方授权信息
-  thirdOauthInfo: () =>
-    request({
-      url: '/user/api/user/thirdOauth',
-      method: 'GET',
-      params: {
-        provider: $platform.provider,
-        platform: $platform.platform,
-      },
-      custom: {
-        showLoading: false,
-      },
-    }),
+	// 第三方授权信息
+	thirdOauthInfo: () =>
+		request({
+			url: '/user/api/user/thirdOauth',
+			method: 'GET',
+			params: {
+				provider: $platform.provider,
+				platform: $platform.platform,
+			},
+			custom: {
+				showLoading: false,
+			},
+		}),
 
-  // 添加分享记录
-  addShareLog: (data) =>
-    request({
-      url: 'share/add',
-      method: 'POST',
-      data,
-      custom: {
-        showError: false,
-      },
-    }),
-  share: {
-    list: (params) =>
-      request({
-        url: 'share/list',
-        method: 'GET',
-        params,
-      }),
-  },
-  // 账号登出
-  logout: (data) =>
-    request({
-      url: '/user/api/user/logout',
-      method: 'POST',
-      data,
-    }),
-  // 账号注销
-  logoff: (data) =>
-    request({
-      url: '/user/api/user/logoff',
-      method: 'POST',
-      data,
-    }),
+	// 添加分享记录
+	addShareLog: (data) =>
+		request({
+			url: 'share/add',
+			method: 'POST',
+			data,
+			custom: {
+				showError: false,
+			},
+		}),
+	share: {
+		list: (params) =>
+			request({
+				url: 'share/list',
+				method: 'GET',
+				params,
+			}),
+	},
+	// 账号登出
+	logout: (data) =>
+		request({
+			url: '/user/api/user/logout',
+			method: 'POST',
+			data,
+		}),
+	// 账号注销
+	logoff: (data) =>
+		request({
+			url: '/user/api/user/logoff',
+			method: 'POST',
+			data,
+		}),
 
-  address: {
-    default: () =>
-      request({
-        url: 'user/address/default',
-        method: 'GET',
-        custom: {
-          showError: false,
-        },
-      }),
-    list: () =>
-      request({
-        url: 'user/address',
-        method: 'GET',
-        custom: {},
-      }),
-    create: (data) =>
-      request({
-        url: 'user/address',
-        method: 'POST',
-        data,
-        custom: {
-          showSuccess: true,
-        },
-      }),
-    update: (id, data) =>
-      request({
-        url: 'user/address/' + id,
-        method: 'PUT',
-        data,
-        custom: {
-          showSuccess: true,
-        },
-      }),
-    detail: (id) =>
-      request({
-        url: 'user/address/' + id,
-        method: 'GET',
-      }),
-    delete: (id) =>
-      request({
-        url: 'user/address/' + id,
-        method: 'DELETE',
-      }),
-  },
-  invoice: {
-    list: () =>
-      request({
-        url: 'user/invoice',
-        method: 'GET',
-        custom: {},
-      }),
-    create: (data) =>
-      request({
-        url: 'user/invoice',
-        method: 'POST',
-        data,
-        custom: {
-          showSuccess: true,
-        },
-      }),
-    update: (id, data) =>
-      request({
-        url: 'user/invoice/' + id,
-        method: 'PUT',
-        data,
-        custom: {
-          showSuccess: true,
-        },
-      }),
-    detail: (id) =>
-      request({
-        url: 'user/invoice/' + id,
-        method: 'GET',
-      }),
-    delete: (id) =>
-      request({
-        url: 'user/invoice/' + id,
-        method: 'DELETE',
-      }),
-  },
-  favorite: {
-    list: (params) =>
-      request({
-        url: 'user/goodsLog/favorite',
-        method: 'GET',
-        params,
-      }),
-    do: (id) =>
-      request({
-        url: 'user/goodsLog/favorite',
-        method: 'POST',
-        data: {
-          goods_id: id,
-        },
-        custom: {
-          showSuccess: true,
-          auth: true,
-        },
-      }),
-    cancel: (id) =>
-      request({
-        url: 'user/goodsLog/favorite',
-        method: 'POST',
-        data: {
-          goods_ids: id,
-        },
-        custom: {
-          showSuccess: true,
-          auth: true,
-        },
-      }),
-  },
-  view: {
-    list: (params) =>
-      request({
-        url: 'user/goodsLog/views',
-        method: 'GET',
-        params,
-        custom: {},
-      }),
-    delete: (data) =>
-      request({
-        url: 'user/goodsLog/viewDel',
-        method: 'DELETE',
-        data,
-        custom: {
-          showSuccess: true,
-        },
-      }),
-  },
-  wallet: {
-    log: (params) =>
-      request({
-        url: '/user/api/walletLog',
-        method: 'GET',
-        params,
-        custom: {},
-      }),
-  },
-  account: {
-    info: (params) =>
-      request({
-        url: 'user/account',
-        method: 'GET',
-        params,
-        custom: {
-          showError: false,
-          auth: true,
-        },
-      }),
-    save: (data) =>
-      request({
-        url: 'user/account',
-        method: 'POST',
-        data,
-        custom: {
-          showSuccess: true,
-          auth: true,
-        },
-      }),
-  },
-  //数量接口
-  data: () =>
-    request({
-      url: 'user/user/data',
-      method: 'GET',
-      custom: {
-        showLoading: false,
-        auth: true,
-      },
-    }),
-};
+	address: {
+		default: () =>
+			request({
+				url: 'user/address/default',
+				method: 'GET',
+				custom: {
+					showError: false,
+				},
+			}),
+		list: () =>
+			request2({
+				url: 'member/address/list',
+				method: 'GET',
+				custom: {},
+			}),
+		// list: () =>
+		//   request({
+		//     url: 'user/address',
+		//     method: 'GET',
+		//     custom: {},
+		//   }),
+		create: (data) =>
+			request2({
+				url: 'member/address/create',
+				method: 'POST',
+				data,
+				custom: {
+					showSuccess: true,
+				},
+			}),
+		// create: (data) =>
+		//   request({
+		//     url: 'user/address',
+		//     method: 'POST',
+		//     data,
+		//     custom: {
+		//       showSuccess: true,
+		//     },
+		//   }),
+		update: ( data) =>
+			request2({
+				url: 'member/address/update',
+				method: 'PUT',
+				data,
+				custom: {
+					showSuccess: true,
+				},
+			}),
+		// update: (id, data) =>
+		// 	request({
+		// 		url: 'user/address/' + id,
+		// 		method: 'PUT',
+		// 		data,
+		// 		custom: {
+		// 			showSuccess: true,
+		// 		},
+		// 	}),
+		detail: (id) =>
+			request2({
+				url: 'member/address/get?id=' + id,
+				method: 'GET',
+			}),
+		// detail: (id) =>
+		//   request({
+		//     url: 'user/address/' + id,
+		//     method: 'GET',
+		//   }),
+		delete: (id) =>
+			request2({
+				url: 'member/address/delete?id=' + id,
+				method: 'DELETE',
+			}),
+		// delete: (id) =>
+		// 	request({
+		// 		url: 'user/address/' + id,
+		// 		method: 'DELETE',
+		// 	}),
+	},
+	invoice: {
+		list: () =>
+			request({
+				url: 'user/invoice',
+				method: 'GET',
+				custom: {},
+			}),
+		create: (data) =>
+			request({
+				url: 'user/invoice',
+				method: 'POST',
+				data,
+				custom: {
+					showSuccess: true,
+				},
+			}),
+		update: (id, data) =>
+			request({
+				url: 'user/invoice/' + id,
+				method: 'PUT',
+				data,
+				custom: {
+					showSuccess: true,
+				},
+			}),
+		detail: (id) =>
+			request({
+				url: 'user/invoice/' + id,
+				method: 'GET',
+			}),
+		delete: (id) =>
+			request({
+				url: 'user/invoice/' + id,
+				method: 'DELETE',
+			}),
+	},
+	favorite: {
+		list: (params) =>
+			request2({
+				url: 'product/favorite/page',
+				method: 'GET',
+				params,
+			}),
+		do: (id) =>
+			request({
+				url: 'user/goodsLog/favorite',
+				method: 'POST',
+				data: {
+					goods_id: id,
+				},
+				custom: {
+					showSuccess: true,
+					auth: true,
+				},
+			}),
+		// 取消收藏
+		cancel: (id) =>
+			request2({
+				url: 'product/favorite/delete-list',
+				method: 'DELETE',
+				data: {
+					spuIds: id.split(',').map(item=>item*1),
+					// spuIds: id.split(',').join(','),
+				},
+				custom: {
+					showSuccess: true,
+					auth: true,
+				},
+			}),
+		// cancel: (id) =>
+		//   request({
+		//     url: 'user/goodsLog/favorite',
+		//     method: 'POST',
+		//     data: {
+		//       goods_ids: id,
+		//     },
+		//     custom: {
+		//       showSuccess: true,
+		//       auth: true,
+		//     },
+		//   }),
+	},
+	view: {
+		list: (params) =>
+			request({
+				url: 'user/goodsLog/views',
+				method: 'GET',
+				params,
+				custom: {},
+			}),
+		delete: (data) =>
+			request({
+				url: 'user/goodsLog/viewDel',
+				method: 'DELETE',
+				data,
+				custom: {
+					showSuccess: true,
+				},
+			}),
+	},
+	wallet: {
+		log: (params) =>
+			request2({
+				url: 'pay/wallet-transaction/page',
+				method: 'GET',
+				params,
+				custom: {},
+			}),
+			// log: (params) =>
+			// request({
+			// 	url: '/user/api/walletLog',
+			// 	method: 'GET',
+			// 	params,
+			// 	custom: {},
+			// }),
+	},
+	account: {
+		info: (params) =>
+			request({
+				url: 'user/account',
+				method: 'GET',
+				params,
+				custom: {
+					showError: false,
+					auth: true,
+				},
+			}),
+		save: (data) =>
+			request({
+				url: 'user/account',
+				method: 'POST',
+				data,
+				custom: {
+					showSuccess: true,
+					auth: true,
+				},
+			}),
+	},
+	//数量接口
+	// data: () =>
+	//   request({
+	//     url: 'user/user/data',
+	//     method: 'GET',
+	//     custom: {
+	//       showLoading: false,
+	//       auth: true,
+	//     },
+	//   }),
+	data: () =>
+		request2({
+			url: 'trade/order/get-count',
+			method: 'GET',
+			custom: {
+				showLoading: false,
+				auth: true,
+			},
+		}),
+	data2: () =>
+		request2({
+			url: 'trade/after-sale/get-applying-count',
+			method: 'GET',
+			custom: {
+				showLoading: false,
+				auth: true,
+			},
+		}),
+};

+ 5 - 4
sheep/components/s-address-item/s-address-item.vue

@@ -9,13 +9,14 @@
           class="ss-m-r-10"
           size="small"
           custom-style="background-color: var(--ui-BG-Main); border-color: var(--ui-BG-Main); color: #fff;"
-          v-if="props.item.is_default"
+          v-if="props.item.defaultStatus"
           text="默认"
         ></uni-tag>
-        {{ props.item.province_name }} {{ props.item.city_name }} {{ props.item.district_name }}
+        {{ props.item.areaName }}
+		<!-- {{ props.item.city_name }} {{ props.item.district_name }} -->
       </view>
-      <view class="address-text">{{ props.item.address }}</view>
-      <view class="person-text">{{ props.item.consignee }} {{ props.item.mobile }}</view>
+      <view class="address-text">{{ props.item.detailAddress }}</view>
+      <view class="person-text">{{ props.item.name }} {{ props.item.mobile }}</view>
     </view>
     <view v-else><view class="address-text ss-m-b-10">请选择收货地址</view></view>
     <slot>

+ 15 - 14
sheep/components/s-goods-column/s-goods-column.vue

@@ -65,7 +65,7 @@
       <view v-if="tagStyle.show" class="tag-icon-box">
         <image class="tag-icon" :src="sheep.$url.cdn(tagStyle.src)"></image>
       </view>
-      <image class="md-img-box" :src="sheep.$url.cdn(data.image)" mode="widthFix"></image>
+      <image class="md-img-box" :src="sheep.$url.cdn(data.image||data.picUrl)" mode="widthFix"></image>
       <view
         class="md-goods-content ss-flex-col ss-row-around ss-p-b-20 ss-p-t-20 ss-p-x-16"
         :id="elId"
@@ -75,7 +75,7 @@
           class="md-goods-title ss-line-1"
           :style="[{ color: titleColor, width: titleWidth ? titleWidth + 'rpx' : '' }]"
         >
-          {{ data.title }}
+          {{ data.title||data.name }}
         </view>
         <view
           v-if="goodsFields.subtitle?.show"
@@ -106,12 +106,12 @@
           </view>
 
           <view
-            v-if="goodsFields.original_price?.show && data.original_price > 0"
+            v-if="(goodsFields.original_price?.show||goodsFields.marketPrice?.show) &&( data.original_price > 0|| data.marketPrice > 0)"
             class="goods-origin-price ss-m-t-16 font-OPPOSANS ss-flex"
             :style="[{ color: originPriceColor }]"
           >
             <text class="price-unit ss-font-20">{{ priceUnit }}</text>
-            <view class="ss-m-l-8">{{ data.original_price }}</view>
+            <view class="ss-m-l-8">{{ data.original_price||data.marketPrice }}</view>
           </view>
         </view>
 
@@ -141,7 +141,7 @@
       <view v-if="grouponTag" class="groupon-tag ss-flex ss-row-center">
         <view class="tag-icon">拼团</view>
       </view>
-      <image class="lg-img-box" :src="sheep.$url.cdn(data.image)" mode="aspectFill"></image>
+      <image class="lg-img-box" :src="sheep.$url.cdn(data.image||data.picUrl)" mode="aspectFill"></image>
       <view class="lg-goods-content ss-flex-1 ss-flex-col ss-row-between ss-p-b-10 ss-p-t-20">
         <view>
           <view
@@ -149,7 +149,7 @@
             class="lg-goods-title ss-line-2"
             :style="[{ color: titleColor }]"
           >
-            {{ data.title }}
+            {{ data.title||data.name }}
           </view>
           <view
             v-if="goodsFields.subtitle?.show"
@@ -177,12 +177,12 @@
               {{ isArray(data.price) ? data.price[0] : data.price }}
             </view>
             <view
-              v-if="goodsFields.original_price?.show && data.original_price > 0"
+              v-if="(goodsFields.original_price?.show||goodsFields.marketPrice?.show) &&( data.original_price > 0|| data.marketPrice > 0)"
               class="goods-origin-price ss-flex ss-col-bottom font-OPPOSANS"
               :style="[{ color: originPriceColor }]"
             >
               <text class="price-unit ss-font-20">{{ priceUnit }}</text>
-              <view class="ss-m-l-8">{{ data.original_price }}</view>
+              <view class="ss-m-l-8">{{ data.original_price||data.marketPrice }}</view>
             </view>
           </view>
           <view class="ss-m-t-8 ss-flex ss-col-center ss-flex-wrap">
@@ -204,7 +204,7 @@
         <image class="tag-icon" :src="sheep.$url.cdn(tagStyle.src)"></image>
       </view>
 
-      <image class="sl-img-box" :src="sheep.$url.cdn(data.image)" mode="aspectFill"></image>
+      <image class="sl-img-box" :src="sheep.$url.cdn(data.image||data.picUrl)" mode="aspectFill"></image>
 
       <view class="sl-goods-content">
         <view>
@@ -213,7 +213,7 @@
             class="sl-goods-title ss-line-1"
             :style="[{ color: titleColor }]"
           >
-            {{ data.title }}
+            {{ data.title||data.name }}
           </view>
           <view
             v-if="goodsFields.subtitle?.show"
@@ -241,12 +241,12 @@
               {{ isArray(data.price) ? data.price[0] : data.price }}
             </view>
             <view
-              v-if="goodsFields.original_price?.show && data.original_price > 0"
+              v-if="(goodsFields.original_price?.show||goodsFields.marketPrice?.show) &&( data.original_price > 0|| data.marketPrice > 0)"
               class="goods-origin-price ss-m-t-16 font-OPPOSANS ss-flex"
               :style="[{ color: originPriceColor }]"
             >
               <text class="price-unit ss-font-20">{{ priceUnit }}</text>
-              <view class="ss-m-l-8">{{ data.original_price }}</view>
+              <view class="ss-m-l-8">{{ data.original_price||data.marketPrice }}</view>
             </view>
           </view>
           <view class="ss-m-t-16 ss-flex ss-flex-wrap">
@@ -313,6 +313,7 @@
           original_price: { show: true },
           sales: { show: true },
           stock: { show: true },
+          salesCount: { show: true },
         };
       },
     },
@@ -396,8 +397,8 @@
   // 格式化销量、库存信息
   const salesAndStock = computed(() => {
     let text = [];
-    if (props.goodsFields.sales?.show) {
-      text.push(formatSales(props.data.sales_show_type, props.data.sales));
+    if (props.goodsFields.salesCount?.show) {
+      text.push(formatSales(props.data.sales_show_type, props.data.salesCount));
     }
     if (props.goodsFields.stock?.show) {
       text.push(formatStock(props.data.stock_show_type, props.data.stock));

+ 1 - 0
sheep/components/s-order-card/s-order-card.vue

@@ -64,6 +64,7 @@
   ];
 
   const numData = computed(() => sheep.$store('user').numData);
+  console.log('更换后的yuda订单数量',numData)
 </script>
 
 <style lang="scss" scoped>

+ 1 - 0
sheep/components/s-user-card/s-user-card.vue

@@ -62,6 +62,7 @@
 
   // 用户信息
   const userInfo = computed(() => sheep.$store('user').userInfo);
+  console.log('用户信息',userInfo)
 
   // 是否登录
   const isLogin = computed(() => sheep.$store('user').isLogin);

+ 178 - 171
sheep/request2/index.js

@@ -4,214 +4,221 @@
  */
 
 import Request from 'luch-request';
-import { baseUrl, apiPath } from '@/sheep/config';
+import {
+	baseUrl,
+	apiPath
+} from '@/sheep/config';
 import $store from '@/sheep/store';
 import $platform from '@/sheep/platform';
-import { showAuthModal } from '@/sheep/hooks/useModal';
+import {
+	showAuthModal
+} from '@/sheep/hooks/useModal';
 
 const options = {
-  // 显示操作成功消息 默认不显示
-  showSuccess: false,
-  // 成功提醒 默认使用后端返回值
-  successMsg: '',
-  // 显示失败消息 默认显示
-  showError: true,
-  // 失败提醒 默认使用后端返回信息
-  errorMsg: '',
-  // 显示请求时loading模态框 默认显示
-  showLoading: true,
-  // loading提醒文字
-  loadingMsg: '加载中',
-  // 需要授权才能请求 默认放开
-  auth: false,
-  // ...
+	// 显示操作成功消息 默认不显示
+	showSuccess: false,
+	// 成功提醒 默认使用后端返回值
+	successMsg: '',
+	// 显示失败消息 默认显示
+	showError: true,
+	// 失败提醒 默认使用后端返回信息
+	errorMsg: '',
+	// 显示请求时loading模态框 默认显示
+	showLoading: true,
+	// loading提醒文字
+	loadingMsg: '加载中',
+	// 需要授权才能请求 默认放开
+	auth: false,
+	// ...
 };
 
 // Loading全局实例
 let LoadingInstance = {
-  target: null,
-  count: 0,
+	target: null,
+	count: 0,
 };
 
 /**
  * 关闭loading
  */
 function closeLoading() {
-  if (LoadingInstance.count > 0) LoadingInstance.count--;
-  if (LoadingInstance.count === 0) uni.hideLoading();
+	if (LoadingInstance.count > 0) LoadingInstance.count--;
+	if (LoadingInstance.count === 0) uni.hideLoading();
 }
 
 /**
  * @description 请求基础配置 可直接使用访问自定义请求
  */
 const http = new Request({
-  baseURL: 'https://api.shopro.sheepjs.com/',
-  timeout: 8000,
-  method: 'GET',
-  header: {
-    Accept: 'text/json',
-    'Content-Type': 'application/json;charset=UTF-8',
-    platform: $platform.name,
-  },
-  // #ifdef APP-PLUS
-  sslVerify: false,
-  // #endif
-  // #ifdef H5
-  // 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
-  withCredentials: false,
-  // #endif
-  custom: options,
+	baseURL: 'https://api.shopro.sheepjs.com/',
+	timeout: 8000,
+	method: 'GET',
+	header: {
+		Accept: 'text/json',
+		'Content-Type': 'application/json;charset=UTF-8',
+		platform: $platform.name,
+	},
+	// #ifdef APP-PLUS
+	sslVerify: false,
+	// #endif
+	// #ifdef H5
+	// 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
+	withCredentials: false,
+	// #endif
+	custom: options,
 });
 
 /**
  * @description 请求拦截器
  */
 http.interceptors.request.use(
-  (config) => {
-	  // console.log(config);
-    if (config.custom.auth && !$store('user').isLogin) {
-      showAuthModal();
-      return Promise.reject();
-    }
-    if (config.custom.showLoading) {
-      LoadingInstance.count++;
-      LoadingInstance.count === 1 &&
-        uni.showLoading({
-          title: config.custom.loadingMsg,
-          mask: true,
-          fail: () => {
-            uni.hideLoading();
-          },
-        });
-    }
-    const token = uni.getStorageSync('token');
-    if (token) config.header['Authorization'] = token;
-    // TODO 芋艿:特殊处理
-    if (config.url.indexOf('/app-api/') !== -1) {
-      config.header['Accept'] = '*/*'
-      config.header['tenant-id'] = '1';
-      config.header['Authorization'] = 'Bearer test247';
-    }
-    return config;
-  },
-  (error) => {
-    return Promise.reject(error);
-  },
+	(config) => {
+		// console.log(config);
+		if (config.custom.auth && !$store('user').isLogin) {
+			showAuthModal();
+			return Promise.reject();
+		}
+		if (config.custom.showLoading) {
+			LoadingInstance.count++;
+			LoadingInstance.count === 1 &&
+				uni.showLoading({
+					title: config.custom.loadingMsg,
+					mask: true,
+					fail: () => {
+						uni.hideLoading();
+					},
+				});
+		}
+		const token = uni.getStorageSync('token');
+		if (token) config.header['Authorization'] = token;
+		// TODO 芋艿:特殊处理
+		if (config.url.indexOf('/app-api/') !== -1) {
+			config.header['Accept'] = '*/*'
+			config.header['tenant-id'] = '1';
+			config.header['Authorization'] = 'Bearer test247';
+		}
+		return config;
+	},
+	(error) => {
+		return Promise.reject(error);
+	},
 );
 
 /**
  * @description 响应拦截器
  */
 http.interceptors.response.use(
-  (response) => {
-    // 自动设置登陆令牌
-    if (response.header.authorization || response.header.Authorization) {
-      $store('user').setToken(response.header.authorization || response.header.Authorization);
-    }
+	(response) => {
+		// 自动设置登陆令牌
+		if (response.header.authorization || response.header.Authorization) {
+			$store('user').setToken(response.header.authorization || response.header.Authorization);
+		}
 
-    response.config.custom.showLoading && closeLoading();
-    if (response.data.code !== 0) {
-      if (response.config.custom.showError)
-        uni.showToast({
-          title: response.data.msg || '服务器开小差啦,请稍后再试~',
-          icon: 'none',
-          mask: true,
-        });
-      return Promise.resolve(response.data);
-    }
-    if (
-      response.data.error === 0 &&
-      response.data.msg !== '' &&
-      response.config.custom.showSuccess
-    ) {
-      uni.showToast({
-        title: response.config.custom.successMsg || response.data.msg,
-        icon: 'none',
-      });
-    }
-    return Promise.resolve(response.data);
-  },
-  (error) => {
-    const userStore = $store('user');
-    const isLogin = userStore.isLogin;
-    let errorMessage = '网络请求出错';
-    if (error !== undefined) {
-      switch (error.statusCode) {
-        case 400:
-          errorMessage = '请求错误';
-          break;
-        case 401:
-          if (isLogin) {
-            errorMessage = '您的登陆已过期';
-          } else {
-            errorMessage = '请先登录';
-          }
-          userStore.logout(true);
-          showAuthModal();
-          break;
-        case 403:
-          errorMessage = '拒绝访问';
-          break;
-        case 404:
-          errorMessage = '请求出错';
-          break;
-        case 408:
-          errorMessage = '请求超时';
-          break;
-        case 429:
-          errorMessage = '请求频繁, 请稍后再访问';
-          break;
-        case 500:
-          errorMessage = '服务器开小差啦,请稍后再试~';
-          break;
-        case 501:
-          errorMessage = '服务未实现';
-          break;
-        case 502:
-          errorMessage = '网络错误';
-          break;
-        case 503:
-          errorMessage = '服务不可用';
-          break;
-        case 504:
-          errorMessage = '网络超时';
-          break;
-        case 505:
-          errorMessage = 'HTTP版本不受支持';
-          break;
-      }
-      if (error.errMsg.includes('timeout')) errorMessage = '请求超时';
-      // #ifdef H5
-      if (error.errMsg.includes('Network'))
-        errorMessage = window.navigator.onLine ? '服务器异常' : '请检查您的网络连接';
-      // #endif
-    }
+		response.config.custom.showLoading && closeLoading();
+		if (response.data.code !== 0) {
+			if (response.config.custom.showError)
+				uni.showToast({
+					title: response.data.msg || '服务器开小差啦,请稍后再试~',
+					icon: 'none',
+					mask: true,
+				});
+			return Promise.resolve(response.data);
+		}
+		if (
+			response.data.error === 0 &&
+			response.data.msg !== '' &&
+			response.config.custom.showSuccess
+		) {
+			uni.showToast({
+				title: response.config.custom.successMsg || response.data.msg,
+				icon: 'none',
+			});
+		}
+		return Promise.resolve(response.data);
+	},
+	(error) => {
+		const userStore = $store('user');
+		const isLogin = userStore.isLogin;
+		let errorMessage = '网络请求出错';
+		if (error !== undefined) {
+			switch (error.statusCode) {
+				case 400:
+					errorMessage = '请求错误';
+					break;
+				case 401:
+					if (isLogin) {
+						errorMessage = '您的登陆已过期';
+					} else {
+						errorMessage = '请先登录';
+					}
+					userStore.logout(true);
+					showAuthModal();
+					break;
+				case 403:
+					errorMessage = '拒绝访问';
+					break;
+				case 404:
+					errorMessage = '请求出错';
+					break;
+				case 408:
+					errorMessage = '请求超时';
+					break;
+				case 429:
+					errorMessage = '请求频繁, 请稍后再访问';
+					break;
+				case 500:
+					errorMessage = '服务器开小差啦,请稍后再试~';
+					break;
+				case 501:
+					errorMessage = '服务未实现';
+					break;
+				case 502:
+					errorMessage = '网络错误';
+					break;
+				case 503:
+					errorMessage = '服务不可用';
+					break;
+				case 504:
+					errorMessage = '网络超时';
+					break;
+				case 505:
+					errorMessage = 'HTTP版本不受支持';
+					break;
+			}
+			if (error.errMsg.includes('timeout')) errorMessage = '请求超时';
+			// #ifdef H5
+			if (error.errMsg.includes('Network'))
+				errorMessage = window.navigator.onLine ? '服务器异常' : '请检查您的网络连接';
+			// #endif
+		}
 
-    if (error && error.config) {
-      if (error.config.custom.showError === false) {
-        uni.showToast({
-          title: error.data?.msg || errorMessage,
-          icon: 'none',
-          mask: true,
-        });
-      }
-      error.config.custom.showLoading && closeLoading();
-    }
+		if (error && error.config) {
+			if (error.config.custom.showError === false) {
+				uni.showToast({
+					title: error.data?.msg || errorMessage,
+					icon: 'none',
+					mask: true,
+				});
+			}
+			error.config.custom.showLoading && closeLoading();
+		}
 
-    return false;
-  },
+		return false;
+	},
 );
 
 const request = (config) => {
-  if (config.url[0] !== '/') {
-    config.url = '/app-api/' + config.url;
-  }
-  // TODO 芋艿:额外拼接
-  if (config.url.indexOf('/app-api/') >= 0) {
-    config.url = 'http://api-dashboard.yudao.iocoder.cn' + config.url; // 调用【云端】
-    // config.url = 'http://127.0.0.1:48080' + config.url; // 调用【本地】
-  }
-  return http.middleware(config);
+	if (config.url[0] !== '/') {
+		config.url = '/app-api/' + config.url;
+	}
+	// TODO 芋艿:额外拼接
+	if (config.url.indexOf('/app-api/') >= 0) {
+		// 设置接口地址
+		config.url = 'http://api-dashboard.yudao.iocoder.cn' + config.url; // 调用【云端】
+		// config.url = 'https://app.test.huizhizao.vip/prod-api' + config.url; // 调用【云端】
+		// config.url = 'http://127.0.0.1:48080' + config.url; // 调用【本地】
+	}
+	return http.middleware(config);
 };
 
-export default request;
+export default request;

+ 1 - 1
sheep/store/modal.js

@@ -16,7 +16,7 @@ const modal = defineStore({
     }
   }),
   persist: {
-    enabled: true,
+    enabled: true, 
     strategies: [
       {
         key: 'modal-store',

+ 15 - 5
sheep/store/user.js

@@ -44,8 +44,11 @@ const user = defineStore({
   actions: {
     // 获取个人信息
     async getInfo() {
-      const { error, data } = await userApi.profile();
-      if (error !== 0) return;
+      const { code, data } = await userApi.profile();
+	  // 为了兼容 获取用户余额 可能还会用到其他参数
+      const { code:code2, data:data2 } = await userApi.balance();
+      if (code !== 0||code2!=0) return;
+	  data.money=data2.balance/100;
       this.userInfo = data;
 
       return Promise.resolve(data);
@@ -62,9 +65,16 @@ const user = defineStore({
 
     // 获取订单、优惠券等其他资产信息
     async getNumData() {
-      const { error, data } = await userApi.data();
-      if (error === 0) {
-        this.numData = data;
+      const { code, data } = await userApi.data();
+      const data2 = await userApi.data2();
+      if (code === 0&&data2.code===0) {
+		  console.log('订单数据',data);
+        this.numData = {order_num:{
+			noget:data.deliveredCount,
+			unpaid:data.unpaidCount,
+			nocomment:data.uncommentedCount,
+			aftersale:data2.data
+		}};
       }
     },