瀏覽代碼

update:1.同步最新的代码到生产

ruhuxu 4 周之前
父節點
當前提交
cb67dff791
共有 64 個文件被更改,包括 2949 次插入2584 次删除
  1. 28 1
      locale/en.json
  2. 30 3
      locale/zh-Hans.json
  3. 1 0
      package.json
  4. 3 1
      pages.json
  5. 1 1
      pages/chat/components/order.vue
  6. 7 10
      pages/goods/index.vue
  7. 4 2
      pages/index/index.vue
  8. 11 5
      pages/order/aftersale/apply.vue
  9. 13 10
      pages/order/aftersale/detail.vue
  10. 5 4
      pages/order/aftersale/list.vue
  11. 80 124
      pages/order/confirm.vue
  12. 466 448
      pages/order/detail.vue
  13. 31 16
      pages/order/list.vue
  14. 20 20
      pages/public/merchant.vue
  15. 421 383
      pages/user/info.vue
  16. 5 5
      pages/user/setting.vue
  17. 235 213
      pages/user/wallet/consumptionLog.vue
  18. 442 427
      pages/user/wallet/consumptionTransfers.vue
  19. 60 45
      pages/user/wallet/score.vue
  20. 331 296
      pages/user/wallet/scoreToConsumption.vue
  21. 52 27
      pages/user/wallet/team.vue
  22. 3 2
      sheep/api/distri/consumption.js
  23. 11 0
      sheep/api/member/user.js
  24. 8 0
      sheep/api/trade/order.js
  25. 13 6
      sheep/components/s-auth-modal/components/account-login.vue
  26. 2 2
      sheep/components/s-auth-modal/components/phone-international-input.vue
  27. 15 14
      sheep/components/s-auth-modal/components/register.vue
  28. 8 8
      sheep/components/s-auth-modal/s-auth-modal.vue
  29. 13 11
      sheep/components/s-goods-column/s-goods-column.vue
  30. 7 6
      sheep/components/s-goods-item/s-goods-item.vue
  31. 3 0
      sheep/components/s-layout/s-layout.vue
  32. 2 2
      sheep/components/s-menu-grid/s-menu-grid.vue
  33. 287 0
      sheep/components/s-pay-password/s-pay-password.vue
  34. 12 15
      sheep/components/s-select-sku/s-select-sku.vue
  35. 1 1
      sheep/components/s-user-card/s-user-card.vue
  36. 4 4
      sheep/components/s-wallet-card/s-wallet-card.vue
  37. 79 110
      sheep/components/s-wallet-modal/s-wallet-modal.vue
  38. 1 1
      sheep/hooks/useApp.js
  39. 45 0
      sheep/hooks/useModal.js
  40. 28 0
      sheep/scss/index.scss
  41. 1 1
      sheep/scss/style/_text.scss
  42. 21 12
      sheep/store/modal.js
  43. 2 2
      sheep/store/user.js
  44. 13 1
      sheep/validate/form.js
  45. 1 0
      static/icon/close.svg
  46. 1 0
      uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
  47. 19 25
      unpackage/dist/cache/.vite/deps/_metadata.json
  48. 0 214
      unpackage/dist/cache/.vite/deps/blueimp-md5.js
  49. 0 3
      unpackage/dist/cache/.vite/deps/blueimp-md5.js.map
  50. 3 3
      unpackage/dist/cache/.vite/deps/chunk-LDIJA43U.js
  51. 0 0
      unpackage/dist/cache/.vite/deps/chunk-LDIJA43U.js.map
  52. 67 67
      unpackage/dist/cache/.vite/deps/chunk-SMXOUF54.js
  53. 0 0
      unpackage/dist/cache/.vite/deps/chunk-SMXOUF54.js.map
  54. 1 1
      unpackage/dist/cache/.vite/deps/dayjs.js
  55. 3 3
      unpackage/dist/cache/.vite/deps/dayjs_locale_zh-cn.js
  56. 2 2
      unpackage/dist/cache/.vite/deps/dayjs_plugin_duration.js
  57. 2 2
      unpackage/dist/cache/.vite/deps/dayjs_plugin_relativeTime.js
  58. 2 2
      unpackage/dist/cache/.vite/deps/libphonenumber-js.js
  59. 2 2
      unpackage/dist/cache/.vite/deps/libphonenumber-js_mobile.js
  60. 2 2
      unpackage/dist/cache/.vite/deps/lodash.js
  61. 14 14
      unpackage/dist/cache/.vite/deps/luch-request.js
  62. 1 1
      unpackage/dist/cache/.vite/deps/pinia-plugin-persist-uni.js
  63. 2 2
      unpackage/dist/cache/.vite/deps/qs-canvas.js
  64. 2 2
      unpackage/dist/cache/.vite/deps/weixin-js-sdk.js

+ 28 - 1
locale/en.json

@@ -304,7 +304,7 @@
 		"wechat_register": "WeChat Register",
 		"wechat_no_account": "Your WeChat has no account, please register via sharing",
 		"link_id": "Invitation Code",
-		"enter_link_id": "Please enter the invitation code (optional)"
+		"enter_link_id": "Please enter the invitation code"
 	},
 	"review": {
 		"all_reviews": "All Reviews",
@@ -500,6 +500,12 @@
 		"username": "Username",
 		"nickname": "Nickname",
 		"password": "Password",
+		"登陆密码":"Login Password",
+		"请输入登陆密码":"Please enter login password",
+		"点击修改登录密码":"Click to change login password",
+		"支付密码":"Payment Password",
+		"请输入支付密码":"Please enter payment password",
+		"点击修改支付密码":"Click to change payment password",
 		"confirm_password": "Confirm password",
 		"email": "Email",
 		"phone": "Phone",
@@ -526,6 +532,23 @@
 		"balance": "Balance",
 		"commission": "Commission",
 		"consumption_points": "Consumption",
+		"积分": "Points",
+		"红积分": "Red Points",
+		"黄积分": "Yellow Points",
+		"绿积分": "Green Points",
+		"峰值记录": "Peak Record",
+		"红积分记录": "Red Points Record",
+		"黄积分记录": "Yellow Points Record",
+		"绿积分记录": "Green Points Record",
+		"积分记录": "Points Record",
+		"积分转换": "Points Conversion",
+		"积分转换类型": "Points Conversion Type",
+		"红转绿": "Red to Green",
+		"黄转红": "Yellow to Red",
+		"请输入转换积分": "Please enter the conversion points",
+		"转换后不可逆,是否继续": "Conversion is irreversible, continue?",
+		"积分转让": "Points Transfer",
+		"转让积分类型": "Transfer Points Type",
 		"team": "Team",
 		"people": "People",
 		"generation_rules": "Net Worth Rules",
@@ -596,6 +619,8 @@
 		"total_people": "Total {count} People",
 		"retain_performance": "Keep Score",
 		"referrer": "Referrer",
+		"parent": "Parent",
+		"descendant": "Descendant",
 		"direct_referral": "Direct Referral",
 		"team_count": "Team: {count} People",
 		"new_performance_value": "New Score",
@@ -775,6 +800,8 @@
 		"nicknameNotnull": "Nickname cannot be empty",
 		"password": "Please enter your password",
 		"passwordNotnull": "Password cannot be empty",
+		"请输入支付密码":"Please enter your payment password",
+		"请输入6位数字":"Please enter 6 digits",
 		"confirm_password": "Please confirm your password",
 		"confirmPasswordNotnull": "Confirm password cannot be empty",
 		"email": "Please enter your email",

+ 30 - 3
locale/zh-Hans.json

@@ -305,7 +305,7 @@
 		"wechat_register": "微信注册",
 		"wechat_no_account": "您的微信没有账号,请先注册",
 		"link_id": "邀请码",
-		"enter_link_id": "请输入邀请码(选填)"
+		"enter_link_id": "请输入邀请码"
 	},
 	// 评论
 	"review": {
@@ -498,7 +498,7 @@
 		"shopping_cart": "购物车",
 		"browsing_history": "浏览记录",
 		"my_favorites": "我的收藏",
-		"customer_service": "客服"
+		"customer_service": "客服"
 	},
 	// 用户相关
 	"user": {
@@ -506,6 +506,12 @@
 		"username": "用户名",
 		"nickname": "昵称",
 		"password": "密码",
+		"登陆密码":"登陆密码",
+		"请输入登陆密码":"请输入登陆密码",
+		"点击修改登录密码":"点击修改登录密码",
+		"支付密码":"支付密码",
+		"请输入支付密码":"请输入支付密码",
+		"点击修改支付密码":"点击修改支付密码",
 		"confirm_password": "确认密码",
 		"email": "邮箱",
 		"phone": "手机号",
@@ -532,6 +538,23 @@
 		"balance": "余额",
 		"commission": "佣金",
 		"consumption_points": "消费分",
+		"积分": "积分",
+		"红积分": "红积分",
+		"黄积分": "黄积分",
+		"绿积分": "绿积分",
+		"峰值记录": "峰值记录",
+		"红积分记录": "红积分记录",
+		"黄积分记录": "黄积分记录",
+		"绿积分记录": "绿积分记录",
+		"积分记录": "积分记录",
+		"积分转换": "积分转换",
+		"积分转换类型": "积分转换类型",
+		"红转绿": "红转绿",
+		"黄转红": "黄转红",
+		"请输入转换积分": "请输入转换积分",
+		"转换后不可逆,是否继续": "转换后不可逆,是否继续",
+		"积分转让": "积分转让",
+		"转让积分类型": "转让积分类型",
 		"team": "团队",
 		"people": "人",
 		"generation_rules": "身价产生规则",
@@ -539,7 +562,7 @@
 		"recharge": "充值",
 		"withdraw": "提现",
 		"transfer_points": "转消费分",
-		"points_transfer": "消费分转让",
+		"points_transfer": "分转让",
 		"current_peak": "当前可获得峰值:",
 		"commission_record": "佣金记录",
 		"points_record": "消费分记录",
@@ -602,6 +625,8 @@
 		"total_people": "共{count}人",
 		"retain_performance": "保留绩效值",
 		"referrer": "推荐人",
+		"parent": "上级",
+		"descendant": "下级",
 		"direct_referral": "直推人",
 		"team_count": "团队:{count}人",
 		"new_performance_value": "新增绩效值:",
@@ -781,6 +806,8 @@
 		"nicknameNotnull": "昵称不能为空",
 		"password": "请输入密码",
 		"passwordNotnull": "密码不能为空",
+		"请输入6位数字":"请输入6位数字",
+		"请输入支付密码":"请输入支付密码",
 		"confirm_password": "请确认密码",
 		"confirmPasswordNotnull": "确认密码不能为空",
 		"email": "请输入邮箱",

+ 1 - 0
package.json

@@ -91,6 +91,7 @@
     }
   },
   "dependencies": {
+    "@dcloudio/uni-ui": "^1.5.7",
     "@hyoga/uni-socket.io": "^1.0.1",
     "axios": "^1.7.2",
     "blueimp-md5": "^2.19.0",

+ 3 - 1
pages.json

@@ -3,7 +3,9 @@
 		"autoscan": true,
 		"custom": {
 			"^s-(.*)": "@/sheep/components/s-$1/s-$1.vue",
-			"^su-(.*)": "@/sheep/ui/su-$1/su-$1.vue"
+			"^su-(.*)": "@/sheep/ui/su-$1/su-$1.vue",
+			"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
+
 		}
 	},
 	"pages": [{

+ 1 - 1
pages/chat/components/order.vue

@@ -28,7 +28,7 @@
           </view>
           <view class="order-total ss-flex ss-row-between ss-m-t-8">
             <span>共{{ orderData.items.length }}件商品</span>
-            <span>合计 ¥{{ orderData.pay_fee }}</span>
+            <span>合计 {{ orderData.pay_fee }}</span>
           </view>
           <view class="ss-flex ss-row-right ss-m-t-8">
             <span class="status">{{ orderData.status_text }}</span>

+ 7 - 10
pages/goods/index.vue

@@ -19,9 +19,9 @@
 						<view class="ss-flex ss-row-between ss-col-center ss-m-b-26">
 							<view class="price-box ss-flex ss-col-center">
 								<view class="price-text ss-m-r-16 ss-flex ss-col-center">
-									<image src="@/static/icon/points.png"  v-if="state.goodsInfo.spuPayType == 2" class="ss-m-r-10" style="width:40rpx;height:40rpx"   ></image>
-									<text v-else>¥</text>
 									
+									<view class="points-red" v-if="state.goodsInfo.areaId == 1"></view>
+									<view class="points-green" v-if="state.goodsInfo.areaId == 2"></view>
 									<text v-if="state.goodsInfo.highPrecision">
 										
 										{{fen2yuan6(state.selectedSku.highPrecisionPrice || state.goodsInfo.highPrecisionPrice)  }}
@@ -85,16 +85,16 @@
 				<detail-tabbar v-model="state.goodsInfo">
 					<!-- {{state.goodsInfo.spuType }}  {{state.goodsInfo.spuPayType }} -->
 					<!-- 如果有库存并且不是积分商品和虚拟商品 可以加入购物车和购买 -->
-					<view class="buy-box ss-flex ss-col-center ss-p-r-20" v-if="state.goodsInfo.stock > 0 && state.goodsInfo.spuType && state.goodsInfo.spuPayType == 1">
+					<view class="buy-box ss-flex ss-col-center ss-p-r-20" v-if="state.goodsInfo.stock > 0 ">
 						<button class="ss-reset-button add-btn ui-Shadow-Main"  @tap="state.showSelectSku = true">
 							{{$t('common.add_to_cart')}}
 						</button>
 						<button class="ss-reset-button buy-btn ui-Shadow-Main" @tap="state.showSelectSku = true">
-							{{$t('common.buy_now')}}
+							{{$t('common.redeem_now')}}
 						</button>
 					</view>
 
-					<view class="buy-box ss-flex ss-col-center ss-p-r-20"  v-else-if="state.goodsInfo.stock > 0 &&  state.goodsInfo.spuPayType != 1 || !state.goodsInfo.spuType">
+					<!-- <view class="buy-box ss-flex ss-col-center ss-p-r-20"  v-else-if="state.goodsInfo.stock > 0 &&  state.goodsInfo.spuPayType != 1 || !state.goodsInfo.spuType">
 						<button class="ss-reset-button disabled-btn buy-btn ui-Shadow-Main " @tap="state.showSelectSku = true">
 							<template v-if="state.goodsInfo.spuPayType != 1 && !state.goodsInfo.spuType" >
 								{{$t('common.redeem_now')}}
@@ -106,7 +106,7 @@
 								 {{$t('common.redeem_now')}}
 							 </template>
 						</button>
-					</view>
+					</view> -->
 					<view class="buy-box ss-flex ss-col-center ss-p-r-20" v-else>
 						<button class="ss-reset-button disabled-btn" disabled style="background: #999999;"> {{$t('common.sold_out')}} </button>
 					</view>
@@ -375,10 +375,7 @@
 				line-height: 30rpx;
 				font-family: OPPOSANS;
 
-				// &::before {
-				// 	content: '¥';
-				// 	font-size: 30rpx;
-				// }
+			
 			}
 
 			.origin-price-text {

+ 4 - 2
pages/index/index.vue

@@ -1,7 +1,8 @@
 <!-- 商城首页,支持店铺装修 -->
 <template>
 	<view v-if="template">
-		
+		{{ android }}
+		{{ androidJiGuangId }}
 		<s-layout :title="$t('common.home')" navbar="custom" tabbar="/pages/index/index" :bgStyle="template.page"
 			:navbarStyle="template.style?.navbar" onShareAppMessage>
 			<s-block v-for="(item, index) in template.components" :key="index" :styles="item.property.style">
@@ -30,7 +31,8 @@
 	} from '@/sheep/hooks/useModal';
 	// 隐藏原生tabBar
 	uni.hideTabBar();
-	
+	const androidJiGuangId = computed(() => getAndroidJiGuangId())
+	const android = computed(() => isAndroid())
 	
 	const template = computed(() => sheep.$store('app').template?.home);
 	

+ 11 - 5
pages/order/aftersale/apply.vue

@@ -9,6 +9,7 @@
         :skuText="state.item.properties?.map((property) => property.valueName).join(' ')"
         :price="state.item.price"
         :num="state.item.count"
+        :areaId="state.integralType"
       />
     </view>
 
@@ -38,7 +39,10 @@
       <view class="refund-item ss-flex ss-col-center ss-row-between" @tap="state.showModal = true">
         <text class="item-title">{{t('order.refund_amount')}}</text>
         <view class="ss-flex refund-cause ss-col-center">
-          <text class="ss-m-r-20">¥{{ fen2yuan(state.item.payPrice) }}</text>
+          <view class="points-red" v-if="state.integralType == 1"></view>
+          <view class="points-green" v-if="state.integralType == 3"></view>
+          <!-- {{ state }} -->
+          <text class="ss-m-r-20">{{ fen2yuan(state.order.payIntegral) }}</text>
         </view>
       </view>
       <!-- 申请原因 -->
@@ -128,7 +132,7 @@
   import { reactive, ref } from 'vue';
   import OrderApi from '@/sheep/api/trade/order';
   import TradeConfigApi from '@/sheep/api/trade/config';
-  import { fen2yuan } from '@/sheep/hooks/useGoods';
+  import { fen2yuan,points2point } from '@/sheep/hooks/useGoods';
   import AfterSaleApi from '@/sheep/api/trade/afterSale';
   import { t } from '@/locale'
   const form = ref(null);
@@ -152,7 +156,8 @@
     ],
     reasonList: [], // 可选的申请原因数组
     showModal: false, // 是否显示申请原因弹窗
-    currentValue: '' // 当前选择的售后原因
+    currentValue: '', // 当前选择的售后原因
+    integralType:0
   });
   const formData = reactive({
     way: '',
@@ -196,7 +201,8 @@
     // #endif
     let data = {
       orderItemId: state.itemId,
-      refundPrice: state.item.payPrice,
+      refundIntegral: state.order.payIntegral,
+      refundIntegralType:state.integralType,
       ...formData,
     };
     const { code } = await AfterSaleApi.createAfterSale(data);
@@ -239,7 +245,7 @@
     }
     state.orderId = options.orderId;
     state.itemId = parseInt(options.itemId);
-
+    state.integralType = options.integralType;
     // 读取订单信息
     const { code, data } = await OrderApi.getOrder(state.orderId);
     if (code !== 0) {

+ 13 - 10
pages/order/aftersale/detail.vue

@@ -1,7 +1,6 @@
 <!-- 售后详情 -->
 <template>
 	<s-layout :title="t('order.after_sales_details')" :navbar="!isEmpty(state.info) && state.loading ? 'inner' : 'normal'">
-		
 		<view class="content_box" v-if="!isEmpty(state.info) && state.loading">
 			<!-- 步骤条 -->
 			<view class="steps-box ss-flex" :style="[
@@ -10,9 +9,7 @@
             paddingTop: Number(statusBarHeight + 88) + 'rpx',
           },
         ]">
-		
 				<view class="ss-flex">
-					
 					<view class="steps-item" v-for="(item, index) in state.list" :key="index">
 						<view class="ss-flex">
 							
@@ -50,30 +47,36 @@
 			<view class="aftersale-content ss-m-y-20">
 				<view class="aftersale-item ss-flex ss-col-center">
 					<view class="item-title">{{ t('order.total_refund') }}:</view>
-					<view class="item-content">
-						¥{{ fen2yuan(state.info.refundPriceTotal) }}
+					<view class="item-content ss-flex ss-col-center">
+						<view class="points-red" v-if="state.info.refundIntegralType == 1"></view>
+						<view class="points-green" v-if="state.info.refundIntegralType == 3"></view>
+						{{ fen2yuan(state.info.refundIntegralTotal) }}
 					</view>
 				</view>
 				<view class="aftersale-item ss-flex ss-col-center">
 					<view class="item-title">{{ t('order.refund_amount') }}:</view>
-					<view class="item-content">¥{{ fen2yuan(state.info.refundPrice) }}</view>
+					<view class="item-content ss-flex ss-col-center">
+						<view class="points-red" v-if="state.info.refundIntegralType == 1"></view>
+						<view class="points-green" v-if="state.info.refundIntegralType == 3"></view>
+						{{ fen2yuan(state.info.refundIntegral) }}
+					</view>
 				</view>
-				<view class="aftersale-item ss-flex ss-col-center">
+				<!-- <view class="aftersale-item ss-flex ss-col-center">
 					<view class="item-title"> {{ t('order.refund_commission') }}:</view>
 					<view class="item-content">¥{{ points2point(state.info.refundIntegral) }}</view>
 				</view>
 				<view class="aftersale-item ss-flex ss-col-center">
 					<view class="item-title"> {{ t('order.refund_points') }}:</view>
 					<view class="item-content">¥{{ points2point(state.info.refundConsumptionPoints) }}</view>
-				</view>
+				</view> -->
 			</view>
 			
 			<!-- 服务商品 -->
 			
 			<view class="order-shop">
-				<s-goods-item :price="state.info.refundPriceTotal" :img="state.info.picUrl" :title="state.info.spuName" :titleWidth="480"
+				<s-goods-item :price="state.info.refundIntegralTotal" :img="state.info.picUrl" :title="state.info.spuName" :titleWidth="480"
 					:skuText="state.info.properties.map((property) => property.valueName).join(' ')"
-					:num="state.info.count" />
+					:num="state.info.count" :areaId="state.info.refundIntegralType" />
 			</view>
 
 			<!-- 服务内容 -->

+ 5 - 4
pages/order/aftersale/list.vue

@@ -15,11 +15,12 @@
 					<text class="state">{{ formatAfterSaleStatus(order) }}</text>
 				</view>
 				<s-goods-item
-          :img="order.picUrl"
-          :title="order.spuName"
+					:img="order.picUrl"
+					:title="order.spuName"
 					:skuText="order.properties.map((property) => property.valueName).join(' ')"
-          :price="order.refundPrice"
-        />
+					:price="order.refundIntegral"
+					:areaId="order.refundIntegralType"
+				/>
 				<view class="apply-box ss-flex ss-col-center ss-row-between border-bottom ss-p-x-20">
 					<view class="ss-flex ss-col-center">
 						<view class="title ss-m-r-20">{{ order.way === 10 ? t('order.refund_only') : t('order.refund_and_return') }}</view>

+ 80 - 124
pages/order/confirm.vue

@@ -11,21 +11,21 @@
 
 		<!-- 商品信息 -->
 		<!-- {{shopsByNames}} -->
-
+		
 		<view class="order-card-box ss-m-b-14" v-for="(items, name) in shopsByNames" :key="name">
 
 			<view class="title-text ss-p-x-20 ss-p-t-20">
 				{{name}}
 			</view>
-
+			
 			<s-goods-item v-for="item in items.items" :key="item?.skuId" :img="item?.picUrl" :title="item?.spuName"
 				:skuText="item?.properties?.map((property) => property.valueName).join(' ')"
 				:price="item.highPrecisionPrice ?  item?.highPrecisionPrice :item?.price " :num="item?.count"
-				:virtualPirce="item.highPrecisionPrice ? true :false " />
+				:areaId="state.orderInfo.shopAreaId" />
 			<view class="order-item ss-flex ss-col-center ss-row-between ss-p-x-20 bg-white ss-r-10">
 				<view class="item-title">{{ t('confirm.shipping_fee') }}</view>
 				<view class="ss-flex ss-col-center">
-					{{items.price.deliveryPrice?"¥"+fen2yuan(items.price.deliveryPrice):t('confirm.free_shipping')}}
+					{{items.price.deliveryPrice?fen2yuan(items.price.deliveryPrice):t('confirm.free_shipping')}}
 				</view>
 			</view>
 			<!-- 暂不做开发票 -->
@@ -60,9 +60,8 @@
 			<view class="order-item ss-flex ss-col-center ss-row-between ss-p-x-20 bg-white ss-r-10" v-else>
 				<view class="item-title">{{ t('common.total') }}</view>
 				<view class="ss-flex ss-col-center">
-					<image src="@/static/icon/points.png" v-if="state.orderPayload.spuPayType == 2"
-						style="width:30rpx;height:30rpx"></image>
-					<text v-else>¥</text>
+					<view class="points-red" v-if="state.orderInfo.shopAreaId == 1"></view>
+					<view class="points-green" v-if="state.orderInfo.shopAreaId == 2"></view>
 					{{fen2yuan(items.price.payPrice)}}
 				</view>
 			</view>
@@ -77,16 +76,13 @@
 				<view class="order-item ss-flex ss-col-center ss-row-between">
 					<view class="item-title">{{ t('confirm.total_price') }} {{ t('confirm.total_items',{count:totalItemCount}) }}</view>
 					<view class="ss-flex ss-col-center">
+						<view class="points-red" v-if="state.orderInfo.shopAreaId == 1"></view>
+						<view class="points-green" v-if="state.orderInfo.shopAreaId == 2"></view>
 						<text class="item-value ss-m-r-24">
-							<image src="@/static/icon/points.png" v-if="state.orderPayload.spuPayType == 2"
-								style="width:30rpx;height:30rpx"></image>
-							<text v-else>¥</text>
-							<text
-								v-if="state.orderPayload.highPrecision">{{ fen2yuan6(state.orderInfo.price.virtualTotalPrice)  }}
-							</text>
-							<text v-else>
+							
+							
 								{{ fen2yuan(state.orderInfo.price.totalPrice) }}
-							</text>
+							
 						</text>
 					</view>
 				</view>
@@ -94,20 +90,19 @@
 				<view class="order-item ss-flex ss-col-center ss-row-between">
 					<view class="item-title">{{ t('confirm.shipping_fee') }}</view>
 					<view class="ss-flex ss-col-center">
+						
 						<text class="item-value ss-m-r-24">
-							<image src="@/static/icon/points.png" v-if="state.orderPayload.spuPayType == 2"
+							<!-- <image src="@/static/icon/points.png" v-if="state.orderPayload.spuPayType == 2"
 								style="width:30rpx;height:30rpx"></image>
-							<text v-else>¥</text>
+							<text v-else>¥</text> -->
 							{{ fen2yuan(state.orderInfo.price.deliveryPrice) }}
 						</text>
 					</view>
 				</view>
-				<view class="order-item ss-flex ss-col-center ss-row-between" v-if="state.orderPayload.spuPayType != 2">
+				<!-- <view class="order-item ss-flex ss-col-center ss-row-between" v-if="state.orderPayload.spuPayType != 2">
 					<view class="item-title">{{ t('confirm.commission_deduction') }}</view>
 					<view class="ss-flex ss-col-center" @tap="state.showPoints = true">
-						<!-- <text class="item-value text-red">
-			
-		    </text> -->
+						
 						<text class="item-value" :class="state.usedPoint > 0 ? 'text-red' : 'text-disabled'">
 							{{ state.usedPoint > 0 ?  t('confirm.deduction',{count:state.usedPoint})  : t('confirm.no_commission') }}
 						</text>
@@ -117,15 +112,14 @@
 				<view class="order-item ss-flex ss-col-center ss-row-between" v-if="state.orderPayload.spuPayType != 2">
 						<view class="item-title">{{ t('confirm.consumption_point_deduction') }}</view>
 						<view class="ss-flex ss-col-center" @tap="state.showConsumptionPoints = true">
-							<!-- <text class="item-value text-red">
-				</text> -->
+							
 				
 							<text class="item-value" :class="state.usedConsumptionPoints > 0 ? 'text-red' : 'text-disabled'">
 								{{ state.usedConsumptionPoints > 0 ?  t('confirm.deduction',{count:state.usedConsumptionPoints}) : t('confirm.no_consumption_points') }}
 							</text>
 							<text class="_icon-forward item-icon" />
 						</view>
-					</view>
+					</view> -->
 
 				<!-- 优惠劵:只有 type = 0 普通订单(非拼团、秒杀、砍价),才可以使用优惠劵 -->
 				<!-- 暂时隐藏优惠卷 -->
@@ -171,10 +165,11 @@
 				<view>{{   t('common.total')  }}:</view>
 				<view class="total-num text-red ss-flex">
 
-					<image src="@/static/icon/points.png" class='ss-m-r-10' v-if="state.orderPayload.spuPayType == 2"
+					<!-- <image src="@/static/icon/points.png" class='ss-m-r-10' v-if="state.orderPayload.spuPayType == 2"
 						style="width:30rpx;height:30rpx"></image>
-					<text v-else>¥</text>
-
+					<text v-else>¥</text> -->
+					<view class="points-red" v-if="state.orderInfo.shopAreaId == 1"></view>
+					<view class="points-green" v-if="state.orderInfo.shopAreaId == 2"></view>
 					<text
 						v-if="state.orderPayload.highPrecision">{{ fen2yuan6(state.orderInfo.price.virtualTotalPrice) }}
 					</text>
@@ -186,16 +181,7 @@
 			</view>
 		</view>
 
-		<!-- 佣金-->
-		<s-points-pop v-model="state.couponInfo" :currentMemberPoints="state.currentMemberPoints"
-			:currentTotalPrice="state.currentTotalPrice" :currentDeliveryPrice="state.currentDeliveryPrice"
-			:show="state.showPoints" @confirm="onInputPoints" @close="state.showPoints = false" />
-			
-		<!-- 消费分 -->
-		<s-consumptionPoints-pop v-model="state.couponInfo" :currentMemberConsumptionPoints="state.currentMemberConsumptionPoints"
-			:currentTotalPrice="state.currentTotalPrice" :currentDeliveryPrice="state.currentDeliveryPrice"
-			:show="state.showConsumptionPoints" @confirm="onInputConsumptionPoints" @close="state.showConsumptionPoints = false" />
-		
+
 		<!-- 满额折扣弹框 TODO 非繁人:后续要把优惠信息打进去 -->
 		<!-- <s-discount-list
       v-model="state.orderInfo"
@@ -207,20 +193,11 @@
 		<su-fixed bottom :opacity="false" bg="bg-white" placeholder :noFixed="false" :index="200">
 			<view class="footer-box border-top ss-flex ss-row-between ss-p-x-20 ss-col-center">
 				<view class="total-box-footer ss-flex ss-col-center">
-					<view v-if="state.orderPayload.highPrecision">
-						<image src="@/static/icon/points.png" v-if="state.orderPayload.spuPayType == 2"
-							style="width:30rpx;height:30rpx"></image>
-						{{ fen2yuan6(state.orderInfo.price.virtualPayPrice) - 0.01 }}
-						¥0.01
-					</view>
-					<view class="total-num ss-font-30 text-red " v-else-if="state.orderPayload.spuPayType == 2">
-						<image src="@/static/icon/points.png" v-if="state.orderPayload.spuPayType == 2"
-							style="width:30rpx;height:30rpx"></image>
-						{{ state.usedPoint }}
-						¥0.01
-					</view>
-					<view class="total-num ss-font-30 text-red" v-else>
-						¥{{ finalPrice }}
+					
+					<view class="total-num ss-font-30 text-red ss-flex ss-col-center" >
+						<view class="points-red" v-if="state.orderInfo.shopAreaId == 1"></view>
+						<view class="points-green" v-if="state.orderInfo.shopAreaId == 2"></view>
+						{{ finalPrice }}
 					</view>
 				</view>
 
@@ -245,7 +222,6 @@
 		isEmpty
 	} from 'lodash';
 	import OrderApi from '@/sheep/api/trade/order';
-	import CouponApi from '@/sheep/api/promotion/coupon';
 	import {
 		fen2yuan,
 		points2point,
@@ -255,6 +231,7 @@
 	import {
 		isAndroid,
 	} from '@/sheep/hooks/useApp'
+	import { showInputPayPassword,showWalletModal } from '@/sheep/hooks/useModal';
 	const Android = isAndroid();
 	const state = reactive({
 		orderPayload: {},
@@ -272,7 +249,8 @@
 		usedPoint: 0, //用户使用的佣金 
 		usedConsumptionPoints:0,//用户使用的消费分
 		currentTotalPrice: 0, //当前的整个订单的总价格
-		currentDeliveryPrice: 0 // 当前订单的总运费
+		currentDeliveryPrice: 0, // 当前订单的总运费
+		orderIds:[]
 	});
 	const finalPrice = computed(() => {
 		return fen2yuan(state.orderInfo.price.payPrice - (100 * state.usedPoint) - (100 * state.usedConsumptionPoints));
@@ -327,31 +305,7 @@
 		}
 		await getOrderInfo();
 	}
-	// 使用佣金
-	async function onInputPoints(points) {
-		if (points == undefined) {
-			points = 0
-		}
-		const payprice = state.currentTotalPrice
-		console.log(points,payprice)
-		// state.orderInfo.price.payPrice = (payprice - points) * 100
-		state.usedPoint = points
-		// 与消费分互斥
-		state.usedConsumptionPoints = 0 
-		state.showPoints = false;
-	}
-	// 使用消费分
-	function onInputConsumptionPoints(points) {
-		if (points == undefined) {
-			points = 0
-		}
-		const payprice = state.currentTotalPrice
-		// state.orderInfo.price.payPrice = (payprice - points) * 100
-		state.usedConsumptionPoints = points
-		// 与佣金互斥
-		state.usedPoint = 0 
-		state.showConsumptionPoints = false;
-	}
+
 	// 提交订单
 	function onConfirm() {
 
@@ -359,19 +313,7 @@
 			sheep.$helper.toast(t('confirm.select_shipping_address'))
 			return;
 		}
-		// 如果使用的佣金为0 那就不需要提示
-		if (parseFloat(state.usedPoint) && parseFloat(state.usedPoint) > parseFloat(state.currentMemberPoints)) {
-			sheep.$helper.toast(t('confirm.insufficient_commission'));
-			return;
-		}
-		if (parseFloat(state.usedConsumptionPoints) && parseFloat(state.usedConsumptionPoints) > parseFloat(state.currentMemberConsumptionPoints)) {
-			sheep.$helper.toast(t('confirm.insufficient_consumption_points'));
-			return;
-		}
-		if (parseFloat(state.usedPoint) && parseFloat(state.usedConsumptionPoints) ) {
-			sheep.$helper.toast(t('confirm.commission_points_no_mix'));
-			return;
-		}
+	
 		submitOrder();
 	}
 	// 截取小数 不保留四舍五入
@@ -388,45 +330,59 @@
 	
 	// 创建订单&跳转
 	async function submitOrder() {
-		
-		// 处理每个店铺的留言 以{店铺id:留言}的形式返回
-		const shops = shopsByNames.value;
-		const shopRemarks = {};
-		Object.keys(shops).forEach(shopName => {
-			const shop = shops[shopName];
-			shopRemarks[shop.shopId] = shop.remark;
-		});
-		// 如果不是高精度商品 就走原来的程序,如果是高精度的商品,就拿到高精度返回的商品总价 / 100 然后保留四位小数再干掉两位,实现佣金可以刚好大于当前佣金的0.01
-		const usedPoint = state.orderPayload.highPrecision ? customRound((state.orderInfo.price.virtualPayPrice / 100 ), 2):  state.usedPoint;
-		
-		const {
-			code,
-			data
-		} = await OrderApi.createOrder({
-			items: state.orderPayload.items,
-			couponId: state.orderPayload.couponId,
-			addressId: state.addressInfo.id,
-			deliveryType: state.orderPayload.spuType == 1 ? 1 : 3, // TODO 非繁人:需要支持【门店自提】
-			pointStatus: false, // TODO 非繁人:需要支持【佣金选择】
-			combinationActivityId: state.orderPayload.combinationActivityId,
-			combinationHeadId: state.orderPayload.combinationHeadId,
-			seckillActivityId: state.orderPayload.seckillActivityId,
-			payIntegral: usedPoint,
-			payConsumptionPoints:state.usedConsumptionPoints,
-			shopRemarks: shopRemarks
-		});
-		if (code !== 0) {
-			return;
+		if(state.orderIds.length === 0){
+			// 处理每个店铺的留言 以{店铺id:留言}的形式返回
+			const shops = shopsByNames.value;
+			const shopRemarks = {};
+			Object.keys(shops).forEach(shopName => {
+				const shop = shops[shopName];
+				shopRemarks[shop.shopId] = shop.remark;
+			});
+			// 如果不是高精度商品 就走原来的程序,如果是高精度的商品,就拿到高精度返回的商品总价 / 100 然后保留四位小数再干掉两位,实现佣金可以刚好大于当前佣金的0.01
+			const usedPoint = state.orderPayload.highPrecision ? customRound((state.orderInfo.price.virtualPayPrice / 100 ), 2):  state.usedPoint;
+			const {
+				code,
+				data
+			} = await OrderApi.createOrder({
+				items: state.orderPayload.items,
+				couponId: state.orderPayload.couponId,
+				addressId: state.addressInfo.id,
+				deliveryType: state.orderPayload.spuType == 1 ? 1 : 3, // TODO 非繁人:需要支持【门店自提】
+				pointStatus: false, // TODO 非繁人:需要支持【佣金选择】
+				combinationActivityId: state.orderPayload.combinationActivityId,
+				combinationHeadId: state.orderPayload.combinationHeadId,
+				seckillActivityId: state.orderPayload.seckillActivityId,
+				payIntegral: usedPoint,
+				payConsumptionPoints:state.usedConsumptionPoints,
+				shopRemarks: shopRemarks,
+				areaId:state.orderInfo.shopAreaId
+			});
+			if (code !== 0) {
+				return;
+			}
+			state.orderIds = data.ids
 		}
 		// 更新购物车列表,如果来自购物车
 		if (state.orderPayload.items[0].cartId > 0) {
 			sheep.$store('cart').getList();
 		}
+
+		showInputPayPassword(async (password) => {
+			const {
+				data,
+				code
+			} = await OrderApi.payOrder({orderIds:state.orderIds,payPassword:password});
+			if (code === 0) {
+				showWalletModal()
+			}
+		},() => {
+			sheep.$helper.toast("取消支付")
+		})
 		// 跳转到支付页面
-		sheep.$router.redirect('/pages/pay/index', {
-			id: data.payOrderId,
-			type:1
-		});
+		// sheep.$router.redirect('/pages/pay/index', {
+		// 	id: data.payOrderId,
+		// 	type:1
+		// });
 	}
 
 	// 检查库存 & 计算订单价格

+ 466 - 448
pages/order/detail.vue

@@ -3,22 +3,22 @@
 	<s-layout :title="t('order.order_details')" class="index-wrap" navbar="inner">
 		<!-- 订单状态 TODO -->
 		<view class="state-box ss-flex-col ss-col-center ss-row-right" :style="[
-        {
-          marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
-          paddingTop: Number(statusBarHeight + 88) + 'rpx',
-        },
-      ]">
+			{
+				marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
+				paddingTop: Number(statusBarHeight + 88) + 'rpx',
+			},
+		]">
 			<view class="ss-flex ss-m-t-32 ss-m-b-20">
 				<image v-if="
-            state.orderInfo.status_code == 'unpaid' ||
-            state.orderInfo.status === 10 || // 待发货
-            state.orderInfo.status_code == 'nocomment'
-          " class="state-img" :src="sheep.$url.static('/static/images/order_loading.png')">
+					state.orderInfo.status_code == 'unpaid' ||
+					state.orderInfo.status === 10 || // 待发货
+					state.orderInfo.status_code == 'nocomment'
+				" class="state-img" :src="sheep.$url.static('/static/images/order_loading.png')">
 				</image>
 				<image v-if="
-            state.orderInfo.status_code == 'completed' ||
-            state.orderInfo.status_code == 'refund_agree'
-          " class="state-img" :src="sheep.$url.static('/static/images/order_success.png')">
+					state.orderInfo.status_code == 'completed' ||
+					state.orderInfo.status_code == 'refund_agree'
+				" class="state-img" :src="sheep.$url.static('/static/images/order_success.png')">
 				</image>
 				<image v-if="state.orderInfo.status_code == 'cancel' || state.orderInfo.status_code == 'closed'"
 					class="state-img" :src="sheep.$url.static('/static/images/order_close.png')">
@@ -46,38 +46,40 @@
 
 		<view class="detail-goods" :style="[{ marginTop: state.orderInfo.receiverAreaId > 0 ? '0' : '-40rpx' }]">
 			<!-- 订单信息 TODO 非繁人: -->
-	
+
 			<view class="order-list" v-for="item in state.orderInfo.items" :key="item.goods_id">
-				
+
 				<view class="order-card">
 					<s-goods-item @tap="onGoodsDetail(item.spuId)" :img="item.picUrl" :title="item.spuName"
-						:skuText="item.properties.map((property) => property.valueName).join(' ')" :price="item.spuPayType === 2 ? item.highPrecisionPrice : item.price "
-						:num="item.count" :virtualPirce="item.spuPayType === 2">
-						<template #tool>
+						:skuText="item.properties.map((property) => property.valueName).join(' ')"
+						:price="item.spuPayType === 2 ? item.highPrecisionPrice : item.price" :num="item.count"
+						:areaId="state.integralType">
+						<!-- <template #tool>
 							<view class="ss-flex">
 								<button class="ss-reset-button apply-btn"
 									v-if="[30].includes(state.orderInfo.status) && item.afterSaleStatus === 0"
 									@tap.stop="
-                    sheep.$router.go('/pages/order/aftersale/apply', {
-                      orderId: state.orderInfo.id,
-                      itemId: item.id,
-                    })
-                  ">
-									 {{ t('order.apply_for_service') }}
+										sheep.$router.go('/pages/order/aftersale/apply', {
+											orderId: state.orderInfo.id,
+											itemId: item.id,
+											integralType:state.integralType
+										})
+										">
+									{{ t('order.apply_for_service') }}
 								</button>
 								<button class="ss-reset-button apply-btn" v-if="item.afterSaleStatus === 10" @tap.stop="
-                    sheep.$router.go('/pages/order/aftersale/detail', {
-                      id: item.afterSaleId,
-                    })
-                  ">
-									 {{ t('order.refund_in_progress') }}
+									sheep.$router.go('/pages/order/aftersale/detail', {
+										id: item.afterSaleId,
+									})
+									">
+									{{ t('order.refund_in_progress') }}
 								</button>
 								<button class="ss-reset-button apply-btn" v-if="item.afterSaleStatus === 20" @tap.stop="
-                    sheep.$router.go('/pages/order/aftersale/detail', {
-                      id: item.afterSaleId,
-                    })
-                  ">
-									 {{ t('order.refund_successful') }}
+									sheep.$router.go('/pages/order/aftersale/detail', {
+										id: item.afterSaleId,
+									})
+									">
+									{{ t('order.refund_successful') }}
 								</button>
 							</view>
 						</template>
@@ -85,7 +87,7 @@
 							<button class="ss-reset-button tag-btn" v-if="item.status_text">
 								{{ item.status_text }}
 							</button>
-						</template>
+						</template> -->
 					</s-goods-item>
 				</view>
 			</view>
@@ -102,7 +104,7 @@
 					<button class="ss-reset-button copy-btn" @tap="onCopy">{{ t('order.copy') }}</button>
 				</view>
 
-				
+
 				<view class="notice-item">
 					<text class="title">{{ t('order.customer_message') }}:</text>
 					<text class="detail">
@@ -121,10 +123,10 @@
 						{{ sheep.$helper.timeFormat(state.orderInfo.payTime, 'yyyy-mm-dd hh:MM:ss') }}
 					</text>
 				</view>
-				<view class="notice-item">
+				<!-- <view class="notice-item">
 					<text class="title">{{ t('order.payment_method') }}:</text>
 					<text class="detail">{{ state.orderInfo.payChannelName || '-' }}</text>
-				</view>
+				</view> -->
 			</view>
 		</view>
 
@@ -133,33 +135,37 @@
 			<view class="notice-item ss-flex ss-row-between">
 				<text class="title">{{ t('order.total_amount') }}</text>
 				<view class="ss-flex">
-					<text class="detail">¥{{ fen2yuan(state.orderInfo.totalPrice) }}</text>
+					<view class="points-red" v-if="state.integralType == 1"></view>
+					<view class="points-green" v-if="state.integralType == 3"></view>
+					<text class="detail">
+						{{ fen2yuan(state.orderInfo.totalPrice) }}
+					</text>
 				</view>
 			</view>
 			<view class="notice-item ss-flex ss-row-between">
 				<text class="title">{{ t('order.shipping_fee') }}</text>
-				<text class="detail">{{ fen2yuan(state.orderInfo.deliveryPrice) }}</text>
+				<text class="detail">{{ fen2yuan(state.orderInfo.deliveryPrice) }}</text>
 			</view>
-			<view class="notice-item ss-flex ss-row-between" v-if="state.orderInfo.payIntegral > 0">
+			<!-- <view class="notice-item ss-flex ss-row-between" v-if="state.orderInfo.payIntegral > 0">
 				<text class="title">{{ t('order.use_commission') }}</text>
 				<text class="detail">{{ points2point(state.orderInfo.payIntegral) }}</text>
 			</view>
 			<view class="notice-item ss-flex ss-row-between" v-if="state.orderInfo.payConsumptionPoints > 0">
 				<text class="title">{{ t('order.use_points') }}</text>
 				<text class="detail">{{ points2point(state.orderInfo.payConsumptionPoints) }}</text>
-			</view>
-			<!-- TODO 非繁人:优惠劵抵扣、佣金抵扣 -->
-			<view class="notice-item ss-flex ss-row-between" v-if="state.orderInfo.discountPrice > 0">
-				<text class="title">{{ t('order.discount_amount') }}</text>
-				<text class="detail">¥{{ fen2yuan(state.orderInfo.discountPrice) }}</text>
-			</view>
+			</view> -->
+			
 			<view class="notice-item all-rpice-item ss-flex ss-m-t-20">
-				<text class="title">{{ state.orderInfo.payStatus ? t('order.paid') : t('order.amount_due') }}</text>
-				<text class="detail all-price">¥{{ fen2yuan(state.orderInfo.payPrice) }}</text>
+				<text class="title ss-m-r-10">{{ state.orderInfo.payStatus ? t('order.paid') : t('order.amount_due') }}</text>
+				<view class="points-red" v-if="state.integralType == 1"></view>
+				<view class="points-green" v-if="state.integralType == 3"></view>
+				<text class="detail all-price">{{ fen2yuan(state.orderInfo.totalPrice) }}</text>
 			</view>
 			<view class="notice-item all-rpice-item ss-flex ss-m-t-20" v-if="state.orderInfo.refundPrice > 0">
 				<text class="title">{{ t('order.refunded') }}</text>
-				<text class="detail all-price">¥{{ fen2yuan(state.orderInfo.refundPrice) }}</text>
+				<view class="points-red" v-if="state.integralType == 1"></view>
+				<view class="points-green" v-if="state.integralType == 3"></view>
+				<text class="detail all-price">{{ fen2yuan(state.orderInfo.refundPrice) }}</text>
 			</view>
 		</view>
 
@@ -173,7 +179,7 @@
 					@tap="onCancel(state.orderInfo.id)">
 					{{ t('order.cancel_order') }}
 				</button>
-				
+
 				<button class="ss-reset-button pay-btn ui-BG-Main-Gradient"
 					v-if="state.orderInfo.buttons?.includes('pay')" @tap="onPay(state.orderInfo.payOrderId)">
 					{{ t('order.continue_payment') }}
@@ -188,7 +194,8 @@
 					
 				</button> -->
 				<!-- 商家发货&&用户不售后就能看到物流 -->
-				<button class="ss-reset-button cancel-btn" v-if="state.orderInfo.buttons?.includes('express') && !state.orderInfo.items[0]?.refundStatus"
+				<button class="ss-reset-button cancel-btn"
+					v-if="state.orderInfo.buttons?.includes('express') && !state.orderInfo.items[0]?.refundStatus"
 					@tap="onExpress(state.orderInfo.id)">
 					{{ t('order.view_logistics') }}
 				</button>
@@ -215,464 +222,475 @@
 </template>
 
 <script setup>
-	import sheep from '@/sheep';
-	import {
-		onLoad
-	} from '@dcloudio/uni-app';
-	import {
-		reactive,
-		computed,
-		watch
-	} from 'vue';
-	import {
-		isEmpty
-	} from 'lodash';
-	import {
-		fen2yuan,
-		formatOrderStatus,
-		formatOrderStatusDescription,
-		handleOrderButtons,
-		points2point
-	} from '@/sheep/hooks/useGoods';
-	import OrderApi from '@/sheep/api/trade/order';
-	import AfterSaleApi from '@/sheep/api/trade/afterSale';
-	import {
-		showAuthModal
-	} from '@/sheep/hooks/useModal';
-	import { t } from '@/locale'
-	const userInfo = sheep.$store('user').userInfo;
-	const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
-	const headerBg = sheep.$url.css('/static/images/order_bg.png');
-
-	const state = reactive({
-		orderInfo: {},
-		merchantTradeNo: '', // 商户订单号
-		comeinType: '', // 进入订单详情的来源类型
+import sheep from '@/sheep';
+import {
+	onLoad
+} from '@dcloudio/uni-app';
+import {
+	reactive,
+	computed,
+	watch
+} from 'vue';
+import {
+	isEmpty
+} from 'lodash';
+import {
+	fen2yuan,
+	formatOrderStatus,
+	formatOrderStatusDescription,
+	handleOrderButtons,
+	points2point
+} from '@/sheep/hooks/useGoods';
+import {
+	showInputPayPassword,
+	showWalletModal
+} from '@/sheep/hooks/useModal';
+import OrderApi from '@/sheep/api/trade/order';
+import AfterSaleApi from '@/sheep/api/trade/afterSale';
+import {
+	showAuthModal
+} from '@/sheep/hooks/useModal';
+import { t } from '@/locale'
+const userInfo = sheep.$store('user').userInfo;
+const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
+const headerBg = sheep.$url.css('/static/images/order_bg.png');
+
+const state = reactive({
+	orderInfo: {},
+	merchantTradeNo: '', // 商户订单号
+	comeinType: '', // 进入订单详情的来源类型
+	integralType: 0
+});
+
+// 复制
+const onCopy = () => {
+	sheep.$helper.copyText(state.orderInfo.no);
+};
+
+// 去支付
+function onPay(id) {
+	const orderIds = [id]
+		showInputPayPassword(async (password) => {
+			const {
+				data,
+				code
+			} = await OrderApi.payOrder({orderIds:orderIds,payPassword:password});
+			if (code === 0) {
+				showWalletModal()
+			}
+		},() => {
+			sheep.$helper.toast("取消支付")
+		})
+}
+
+// 查看商品
+function onGoodsDetail(id) {
+	// console.log(id)
+	sheep.$router.go('/pages/goods/index', {
+		id,
 	});
+}
+
+// 取消订单
+async function onCancel(orderId) {
+	uni.showModal({
+		title: t('setting.prompt'),
+		content: t('order.confirm_cancel_order'),
+		success: async function (res) {
+			if (!res.confirm) {
+				return;
+			}
+			const {
+				code
+			} = await OrderApi.cancelOrder(orderId);
+			if (code === 0) {
+				await getOrderDetail(orderId);
+			}
+		},
+	});
+}
 
-	// 复制
-	const onCopy = () => {
-		sheep.$helper.copyText(state.orderInfo.no);
-	};
-
-	// 去支付
-	function onPay(id) {
-		sheep.$router.go('/pages/pay/index', {
-			id: id,
-			openType: 2,
-			type:1,
-		});
-	}
-
-	// 查看商品
-	function onGoodsDetail(id) {
-		// console.log(id)
-		sheep.$router.go('/pages/goods/index', {
-			id,
-		});
-	}
-
-	// 取消订单
-	async function onCancel(orderId) {
-		uni.showModal({
-			title: t('setting.prompt'),
-			content:  t('order.confirm_cancel_order'),
-			success: async function(res) {
-				if (!res.confirm) {
+// 查看物流
+async function onExpress(id) {
+	sheep.$router.go('/pages/order/express/log', {
+		id,
+	});
+}
+
+// 确认收货 TODO 非繁人:待测试
+async function onConfirm(orderId, ignore = false) {
+	// 需开启确认收货组件
+	// todo: 非繁人:待接入微信
+	// 1.怎么检测是否开启了发货组件功能?如果没有开启的话就不能在这里return出去
+	// 2.如果开启了走mpConfirm方法,需要在App.vue的show方法中拿到确认收货结果
+	let isOpenBusinessView = true;
+	uni.showModal({
+		title: t('setting.prompt'),
+		content: t('order.confirm_receipt_question'),
+		success: async function (res) {
+			if (res.confirm) {
+				if (
+					sheep.$platform.name === 'WechatMiniProgram' &&
+					!isEmpty(state.orderInfo.wechat_extra_data) &&
+					isOpenBusinessView &&
+					!ignore
+				) {
+					mpConfirm(orderId);
 					return;
 				}
+
+				// 正常的确认收货流程
 				const {
 					code
-				} = await OrderApi.cancelOrder(orderId);
+				} = await OrderApi.receiveOrder(orderId);
 				if (code === 0) {
 					await getOrderDetail(orderId);
 				}
-			},
-		});
-	}
-	
-	// 查看物流
-	async function onExpress(id) {
-		sheep.$router.go('/pages/order/express/log', {
-			id,
-		});
-	}
-	
-	// 确认收货 TODO 非繁人:待测试
-	async function onConfirm(orderId, ignore = false) {
-		// 需开启确认收货组件
-		// todo: 非繁人:待接入微信
-		// 1.怎么检测是否开启了发货组件功能?如果没有开启的话就不能在这里return出去
-		// 2.如果开启了走mpConfirm方法,需要在App.vue的show方法中拿到确认收货结果
-		let isOpenBusinessView = true;
-		uni.showModal({
-			title: t('setting.prompt'),
-			content:  t('order.confirm_receipt_question'),
-			success: async function(res) {
-				if (res.confirm) {
-					if (
-						sheep.$platform.name === 'WechatMiniProgram' &&
-						!isEmpty(state.orderInfo.wechat_extra_data) &&
-						isOpenBusinessView &&
-						!ignore
-					) {
-						mpConfirm(orderId);
-						return;
-					}
-
-					// 正常的确认收货流程
-					const {
-						code
-					} = await OrderApi.receiveOrder(orderId);
-					if (code === 0) {
-						await getOrderDetail(orderId);
-					}
-				}
-			},
-		});
-
-
+			}
+		},
+	});
+}
+
+// #ifdef MP-WEIXIN
+// 小程序确认收货组件
+function mpConfirm(orderId) {
+	if (!wx.openBusinessView) {
+		sheep.$helper.toast(t('order.upgrade_wechat'));
+		return;
 	}
-
-	// #ifdef MP-WEIXIN
-	// 小程序确认收货组件
-	function mpConfirm(orderId) {
-		if (!wx.openBusinessView) {
-			sheep.$helper.toast(t('order.upgrade_wechat'));
-			return;
-		}
-		wx.openBusinessView({
-			businessType: 'weappOrderConfirm',
-			extraData: {
-				merchant_trade_no: state.orderInfo.wechat_extra_data.merchant_trade_no,
-				transaction_id: state.orderInfo.wechat_extra_data.transaction_id,
-			},
-			success(response) {
-				console.log('success:', response);
-				if (response.errMsg === 'openBusinessView:ok') {
-					if (response.extraData.status === 'success') {
-						onConfirm(orderId, true);
-					}
+	wx.openBusinessView({
+		businessType: 'weappOrderConfirm',
+		extraData: {
+			merchant_trade_no: state.orderInfo.wechat_extra_data.merchant_trade_no,
+			transaction_id: state.orderInfo.wechat_extra_data.transaction_id,
+		},
+		success(response) {
+			console.log('success:', response);
+			if (response.errMsg === 'openBusinessView:ok') {
+				if (response.extraData.status === 'success') {
+					onConfirm(orderId, true);
 				}
-			},
-			fail(error) {
-				console.log('error:', error);
-			},
-			complete(result) {
-				console.log('result:', result);
-			},
-		});
-	}
-	// #endif
+			}
+		},
+		fail(error) {
+			console.log('error:', error);
+		},
+		complete(result) {
+			console.log('result:', result);
+		},
+	});
+}
+// #endif
 
-	// 评价
-	function onComment(id) {
-		sheep.$router.go('/pages/goods/comment/add', {
-			id
+// 评价
+function onComment(id) {
+	sheep.$router.go('/pages/goods/comment/add', {
+		id
+	});
+}
+// 取消售后申请
+function onApply(id) {
+	uni.showModal({
+		title: t('setting.prompt'),
+		content: t('order.confirm_cancel_request'),
+		success: async function (res) {
+			if (!res.confirm) {
+				return;
+			}
+			const {
+				code
+			} = await AfterSaleApi.cancelAfterSale(id);
+			if (code === 0) {
+				await getOrderDetail(id);
+			}
+		},
+	});
+}
+async function getOrderDetail(id) {
+	// 对详情数据进行适配
+	let res;
+	if (state.comeinType === 'wechat') {
+		// TODO 非繁人:微信场景下
+		res = await OrderApi.getOrder(id, {
+			merchant_trade_no: state.merchantTradeNo,
 		});
+	} else {
+		res = await OrderApi.getOrder(id);
 	}
-	// 取消售后申请
-	function onApply(id) {
-		uni.showModal({
-			title: t('setting.prompt'),
-			content: t('order.confirm_cancel_request'),
-			success: async function(res) {
-				if (!res.confirm) {
-					return;
-				}
-				const {
-					code
-				} = await AfterSaleApi.cancelAfterSale(id);
-				if (code === 0) {
-					await getOrderDetail(id);
-				}
-			},
-		});
+	if (res.code === 0) {
+		state.orderInfo = res.data;
+		handleOrderButtons(state.orderInfo);
+	} else {
+		sheep.$router.back();
 	}
-	async function getOrderDetail(id) {
-		// 对详情数据进行适配
-		let res;
-		if (state.comeinType === 'wechat') {
-			// TODO 非繁人:微信场景下
-			res = await OrderApi.getOrder(id, {
-				merchant_trade_no: state.merchantTradeNo,
-			});
-		} else {
-			res = await OrderApi.getOrder(id);
+}
+const isLogin = computed(() => sheep.$store('user').isLogin);
+// 监听到在这个页面登陆,并刷新页面
+watch(
+	() => isLogin.value,
+	(newVal) => {
+		if (newVal) {
+			window.location.reload()
 		}
-		if (res.code === 0) {
-			state.orderInfo = res.data;
-			handleOrderButtons(state.orderInfo);
-		} else {
-			sheep.$router.back();
-		}
-	}
-	const isLogin = computed(() => sheep.$store('user').isLogin);
-	// 监听到在这个页面登陆,并刷新页面
-	watch(
-		() => isLogin.value,
-		(newVal) => {
-			if (newVal) {
-				window.location.reload()
-			}
-		}, {
-			deep: true, // 深度监听
-		},
-	);
-
-	onLoad(async (options) => {
-
-		//如果没登陆就进来则有可能是在微信消息推送进来的 提示登陆
-		if (!isLogin.value) {
-			showAuthModal();
-			sheep.$helper.toast(t('order.not_logged_in',{user:options.username}), 3000);
-		} else {
-			
-			// 如果
-			if (options.username) {
-				//  如果登陆了但不是该订单的账号,提示有问题
-					console.log(JSON.parse(uni.getStorageSync("user-store")).userInfo.username)
-					if (options.username != JSON.parse(uni.getStorageSync("user-store")).userInfo.username) {
-						sheep.$helper.toast(t('order.account_switch_needed',{user1:JSON.parse(uni.getStorageSync("user-store")).userInfo.username,user2:options.username}),3000);
-					}
+	}, {
+	deep: true, // 深度监听
+},
+);
+
+onLoad(async (options) => {
+
+	//如果没登陆就进来则有可能是在微信消息推送进来的 提示登陆
+	if (!isLogin.value) {
+		showAuthModal();
+		sheep.$helper.toast(t('order.not_logged_in', { user: options.username }), 3000);
+	} else {
+
+		// 如果
+		if (options.username) {
+			//  如果登陆了但不是该订单的账号,提示有问题
+			console.log(JSON.parse(uni.getStorageSync("user-store")).userInfo.username)
+			if (options.username != JSON.parse(uni.getStorageSync("user-store")).userInfo.username) {
+				sheep.$helper.toast(t('order.account_switch_needed', { user1: JSON.parse(uni.getStorageSync("user-store")).userInfo.username, user2: options.username }), 3000);
 			}
 		}
+	}
 
-		let id = 0;
-		if (options.id) {
-			id = options.id;
-		}
-		// TODO 非繁人:下面两个变量,后续接入
-		state.comeinType = options.comein_type;
-		if (state.comeinType === 'wechat') {
-			state.merchantTradeNo = options.merchant_trade_no;
-		}
-		await getOrderDetail(id);
-	});
+	let id = 0;
+	if (options.id) {
+		id = options.id;
+	}
+	state.integralType = options.integralType;
+	// TODO 非繁人:下面两个变量,后续接入
+	state.comeinType = options.comein_type;
+	if (state.comeinType === 'wechat') {
+		state.merchantTradeNo = options.merchant_trade_no;
+	}
+	await getOrderDetail(id);
+});
 </script>
 
 <style lang="scss" scoped>
-	.score-img {
-		width: 36rpx;
-		height: 36rpx;
-		margin: 0 4rpx;
-	}
-
-	.apply-btn {
-		padding:0 10rpx;
-		// width: 140rpx;
-		height: 50rpx;
-		border-radius: 25rpx;
-		font-size: 24rpx;
-		border: 2rpx solid #dcdcdc;
-		line-height: normal;
-		margin-left: 16rpx;
+.score-img {
+	width: 36rpx;
+	height: 36rpx;
+	margin: 0 4rpx;
+}
+
+.apply-btn {
+	padding: 0 10rpx;
+	// width: 140rpx;
+	height: 50rpx;
+	border-radius: 25rpx;
+	font-size: 24rpx;
+	border: 2rpx solid #dcdcdc;
+	line-height: normal;
+	margin-left: 16rpx;
+}
+
+.state-box {
+	color: rgba(#fff, 0.9);
+	width: 100%;
+	background: v-bind(headerBg) no-repeat,
+		linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	background-size: 750rpx 100%;
+	box-sizing: border-box;
+
+	.state-img {
+		width: 60rpx;
+		height: 60rpx;
+		margin-right: 20rpx;
 	}
-
-	.state-box {
-		color: rgba(#fff, 0.9);
-		width: 100%;
-		background: v-bind(headerBg) no-repeat,
-			linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		background-size: 750rpx 100%;
-		box-sizing: border-box;
-
-		.state-img {
-			width: 60rpx;
-			height: 60rpx;
-			margin-right: 20rpx;
-		}
+}
+
+.order-address-box {
+	background-color: #fff;
+	border-radius: 10rpx;
+	margin: -50rpx 20rpx 16rpx 20rpx;
+	padding: 44rpx 34rpx 42rpx 20rpx;
+	font-size: 30rpx;
+	box-sizing: border-box;
+	font-weight: 500;
+	color: rgba(51, 51, 51, 1);
+
+	.address-username {
+		margin-right: 20rpx;
 	}
 
-	.order-address-box {
-		background-color: #fff;
-		border-radius: 10rpx;
-		margin: -50rpx 20rpx 16rpx 20rpx;
-		padding: 44rpx 34rpx 42rpx 20rpx;
-		font-size: 30rpx;
-		box-sizing: border-box;
+	.address-detail {
+		font-size: 26rpx;
 		font-weight: 500;
-		color: rgba(51, 51, 51, 1);
-
-		.address-username {
-			margin-right: 20rpx;
-		}
-
-		.address-detail {
-			font-size: 26rpx;
-			font-weight: 500;
-			color: rgba(153, 153, 153, 1);
-			margin-top: 20rpx;
-		}
+		color: rgba(153, 153, 153, 1);
+		margin-top: 20rpx;
 	}
+}
 
-	.detail-goods {
-		border-radius: 10rpx;
-		margin: 0 20rpx 20rpx 20rpx;
+.detail-goods {
+	border-radius: 10rpx;
+	margin: 0 20rpx 20rpx 20rpx;
 
-		.order-list {
-			margin-bottom: 20rpx;
-			background-color: #fff;
+	.order-list {
+		margin-bottom: 20rpx;
+		background-color: #fff;
 
-			.order-card {
-				padding: 20rpx 0;
+		.order-card {
+			padding: 20rpx 0;
 
-				.order-sku {
-					font-size: 24rpx;
+			.order-sku {
+				font-size: 24rpx;
 
-					font-weight: 400;
-					color: rgba(153, 153, 153, 1);
-					width: 450rpx;
-					margin-bottom: 20rpx;
+				font-weight: 400;
+				color: rgba(153, 153, 153, 1);
+				width: 450rpx;
+				margin-bottom: 20rpx;
 
-					.order-num {
-						margin-right: 10rpx;
-					}
+				.order-num {
+					margin-right: 10rpx;
 				}
+			}
 
-				.tag-btn {
-					margin-left: 16rpx;
-					font-size: 24rpx;
-					height: 36rpx;
-					color: var(--ui-BG-Main);
-					border: 2rpx solid var(--ui-BG-Main);
-					border-radius: 14rpx;
-					padding: 0 4rpx;
-				}
+			.tag-btn {
+				margin-left: 16rpx;
+				font-size: 24rpx;
+				height: 36rpx;
+				color: var(--ui-BG-Main);
+				border: 2rpx solid var(--ui-BG-Main);
+				border-radius: 14rpx;
+				padding: 0 4rpx;
 			}
 		}
 	}
+}
 
-	// 订单信息。
-	.notice-box {
-		background: #fff;
-		border-radius: 10rpx;
-		margin: 0 20rpx 20rpx 20rpx;
+// 订单信息。
+.notice-box {
+	background: #fff;
+	border-radius: 10rpx;
+	margin: 0 20rpx 20rpx 20rpx;
 
-		.notice-box__head {
-			font-size: 30rpx;
+	.notice-box__head {
+		font-size: 30rpx;
 
-			font-weight: 500;
-			color: rgba(51, 51, 51, 1);
-			line-height: 80rpx;
-			border-bottom: 1rpx solid #dfdfdf;
-			padding: 0 25rpx;
-		}
+		font-weight: 500;
+		color: rgba(51, 51, 51, 1);
+		line-height: 80rpx;
+		border-bottom: 1rpx solid #dfdfdf;
+		padding: 0 25rpx;
+	}
 
-		.notice-box__content {
-			padding: 20rpx;
+	.notice-box__content {
+		padding: 20rpx;
 
-			.self-pickup-box {
-				width: 100%;
+		.self-pickup-box {
+			width: 100%;
 
-				.self-pickup--img {
-					width: 200rpx;
-					height: 200rpx;
-					margin: 40rpx 0;
-				}
+			.self-pickup--img {
+				width: 200rpx;
+				height: 200rpx;
+				margin: 40rpx 0;
 			}
 		}
+	}
 
-		.notice-item,
-		.notice-item--center {
-			display: flex;
-			align-items: center;
-			line-height: normal;
-			margin-bottom: 24rpx;
-
-			.title {
-				font-size: 28rpx;
-				color: #999;
-			}
+	.notice-item,
+	.notice-item--center {
+		display: flex;
+		align-items: center;
+		line-height: normal;
+		margin-bottom: 24rpx;
 
-			.detail {
-				font-size: 28rpx;
-				color: #333;
-				flex: 1;
-			}
+		.title {
+			font-size: 28rpx;
+			color: #999;
 		}
-	}
 
-	.copy-btn {
-		width: 100rpx;
-		line-height: 50rpx;
-		border-radius: 25rpx;
-		padding: 0;
-		background: rgba(238, 238, 238, 1);
-		font-size: 22rpx;
-		font-weight: 400;
-		color: rgba(51, 51, 51, 1);
+		.detail {
+			font-size: 28rpx;
+			color: #333;
+			flex: 1;
+		}
 	}
-
-	// 订单价格信息
-	.order-price-box {
-		background-color: #fff;
-		border-radius: 10rpx;
-		padding: 20rpx;
-		margin: 0 20rpx 20rpx 20rpx;
-
-		.notice-item {
-			line-height: 70rpx;
-
-			.title {
-				font-size: 28rpx;
-				color: #999;
-			}
-
-			.detail {
-				font-size: 28rpx;
-				color: #333;
-				font-family: OPPOSANS;
-			}
+}
+
+.copy-btn {
+	width: 100rpx;
+	line-height: 50rpx;
+	border-radius: 25rpx;
+	padding: 0;
+	background: rgba(238, 238, 238, 1);
+	font-size: 22rpx;
+	font-weight: 400;
+	color: rgba(51, 51, 51, 1);
+}
+
+// 订单价格信息
+.order-price-box {
+	background-color: #fff;
+	border-radius: 10rpx;
+	padding: 20rpx;
+	margin: 0 20rpx 20rpx 20rpx;
+
+	.notice-item {
+		line-height: 70rpx;
+
+		.title {
+			font-size: 28rpx;
+			color: #999;
 		}
 
-		.all-rpice-item {
-			justify-content: flex-end;
-			align-items: center;
-
-			.title {
-				font-size: 26rpx;
-				font-weight: 500;
-				color: #333333;
-				line-height: normal;
-			}
-
-			.all-price {
-				font-size: 26rpx;
-				font-family: OPPOSANS;
-				line-height: normal;
-				color: $red;
-			}
+		.detail {
+			font-size: 28rpx;
+			color: #333;
+			font-family: OPPOSANS;
 		}
 	}
 
-	// 底部
-	.footer-box {
-		height: 100rpx;
-		width: 100%;
-		box-sizing: border-box;
-		border-radius: 10rpx;
-		padding-right: 20rpx;
-
-		.cancel-btn {
-			// width: 160rpx;
-			padding:0 10rpx;
-			height: 60rpx;
-			background: #eeeeee;
-			border-radius: 30rpx;
-			margin-right: 20rpx;
+	.all-rpice-item {
+		justify-content: flex-end;
+		align-items: center;
+
+		.title {
 			font-size: 26rpx;
-			font-weight: 400;
+			font-weight: 500;
 			color: #333333;
+			line-height: normal;
 		}
 
-		.pay-btn {
-			width: 160rpx;
-			height: 60rpx;
+		.all-price {
 			font-size: 26rpx;
-			border-radius: 30rpx;
-			font-weight: 500;
-			color: #fff;
+			font-family: OPPOSANS;
+			line-height: normal;
+			color: $red;
 		}
 	}
+}
+
+// 底部
+.footer-box {
+	height: 100rpx;
+	width: 100%;
+	box-sizing: border-box;
+	border-radius: 10rpx;
+	padding-right: 20rpx;
+
+	.cancel-btn {
+		// width: 160rpx;
+		padding: 0 10rpx;
+		height: 60rpx;
+		background: #eeeeee;
+		border-radius: 30rpx;
+		margin-right: 20rpx;
+		font-size: 26rpx;
+		font-weight: 400;
+		color: #333333;
+	}
+
+	.pay-btn {
+		width: 160rpx;
+		height: 60rpx;
+		font-size: 26rpx;
+		border-radius: 30rpx;
+		font-weight: 500;
+		color: #fff;
+	}
+}
 </style>

+ 31 - 16
pages/order/list.vue

@@ -7,7 +7,8 @@
 		<s-empty v-if="state.pagination.total === 0" icon="/static/order-empty.png" :text="t('order.no_orders')" />
 		<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,index) in state.pagination.list"
-				:key="order.id" @tap="onOrderDetail(order.id)">
+				:key="order.id" @tap="onOrderDetail(order.id,order.integralType)">
+				
 				<view class="order-card-header ss-flex ss-col-center ss-row-between ss-p-x-20">
 					<view class="order-no">{{ t('order.order_number') }}:{{ order.no }}</view>
 					<view class="order-state ss-font-26" :class="formatOrderColor(order)">
@@ -20,14 +21,18 @@
 					
 					<s-goods-item :img="item.picUrl" :title="item.spuName"
 						:skuText="item.properties.map((property) => property.valueName).join(' ')" :price="item.spuPayType === 2?  item.highPrecisionPrice: item.price"
-						:num="item.count" :virtualPirce="item.spuPayType === 2"
+						:num="item.count" :areaId="order.integralType"
 						/>
 				</view>
 				<view class="pay-box ss-m-t-30 ss-flex ss-row-right ss-p-r-20">
 					<view class="ss-flex ss-col-center">
 						<view class="discounts-title pay-color">  {{ t('order.total_items',{count:order.productCount})}} ,</view>
-						<view class="discounts-money pay-color">
-							{{ t('order.total_amount') }}:¥{{ fen2yuan(order.payPrice) }}
+						<view class="discounts-money pay-color ss-flex ss-col-center">
+							<!-- {{ order }} -->
+							{{ t('order.total_amount') }}: 
+							<view class="points-red" v-if="order.integralType == 1"></view>
+							<view class="points-green" v-if="order.integralType == 3"></view>
+							{{ fen2yuan(order.payIntegral) }}
 						</view>
 					</view>
 				</view>
@@ -40,7 +45,7 @@
 							{{ t('order.group_details') }}
 						</button>
 						<button v-if="order.buttons.length === 0" class="tool-btn ss-reset-button"
-							@tap.stop="onOrderDetail(order.id)">
+							@tap.stop="onOrderDetail(order.id,order.integralType)">
 							{{ t('order.view_details') }}
 						</button>
 						<button v-if="order.buttons.includes('express')" class="tool-btn ss-reset-button"
@@ -66,7 +71,7 @@
 						</button>
 						
 						<button v-if="order.buttons.includes('pay')"
-							class="tool-btn ss-reset-button ui-BG-Main-Gradient" @tap.stop="onPay(order.payOrderId)">
+							class="tool-btn ss-reset-button ui-BG-Main-Gradient" @tap.stop="onPay(order.id)">
 							{{ t('order.continue_payment') }}
 						</button>
 					</view>
@@ -106,7 +111,8 @@
 	import OrderApi from '@/sheep/api/trade/order';
 	import {
 		showWalletModal,
-		colseWalletModal
+		colseWalletModal,
+		showInputPayPassword
 	} from '@/sheep/hooks/useModal';
 	import { t } from '@/locale'
 	const pagination = {
@@ -174,9 +180,11 @@
 	}
 
 	// 订单详情
-	function onOrderDetail(id) {
+	function onOrderDetail(id,integralType) {
+		console.log(integralType)
 		sheep.$router.go('/pages/order/detail', {
 			id,
+			integralType
 		});
 	}
 
@@ -189,11 +197,18 @@
 	
 	// 继续支付
 	function onPay(id) {
-		sheep.$router.go('/pages/pay/index', {
-			id: id,
-			type:1,
-			openType:2
-		});
+		const orderIds = [id]
+		showInputPayPassword(async (password) => {
+			const {
+				data,
+				code
+			} = await OrderApi.payOrder({orderIds:orderIds,payPassword:password});
+			if (code === 0) {
+				showWalletModal()
+			}
+		},() => {
+			sheep.$helper.toast("取消支付")
+		})
 	}
 
 	// 评价
@@ -364,9 +379,9 @@
 
 	onLoad(async (options) => {
 		// 支付成功回到订单列表,佣金弹窗
-		if(options.points !== undefined || options.scoialStatus !== undefined){
-			showWalletModal({points: options.points , socialStatus: options.socialStatus})
-		}
+		// if(options.points !== undefined || options.scoialStatus !== undefined){
+		// 	showWalletModal({points: options.points , socialStatus: options.socialStatus})
+		// }
 		if (options.type) {
 			state.currentTab = options.type;
 		}

+ 20 - 20
pages/public/merchant.vue

@@ -70,7 +70,7 @@
 							:inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
 							:disabled="state.formStatus" />
 					</uni-forms-item>
-					<uni-forms-item name="bankName" :label="t('merchant.bank')" :required="!state.formStatus">
+					<!-- <uni-forms-item name="bankName" :label="t('merchant.bank')" :required="!state.formStatus">
 						<uni-easyinput v-model="state.model.bankName" type="bankName" :placeholder="t('merchant.enter_bank')"
 							:inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
 							:disabled="state.formStatus" />
@@ -84,7 +84,7 @@
 						<uni-easyinput v-model="state.model.accountNumber" type="number" :placeholder="t('merchant.enter_account_number')"
 							:inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false"
 							:disabled="state.formStatus" />
-					</uni-forms-item>
+					</uni-forms-item> -->
 
 					<uni-forms-item name="logoUrl" label="Logo">
 						<s-uploader v-model:url="state.model.logoUrl" fileMediatype="image" limit="1" mode="grid"
@@ -270,24 +270,24 @@
 			// 		errorMessage:  t('merchant.legal_person_phone_required'),
 			// 	}, ],
 			// },
-			accountName: {
-				rules: [{
-					required: true,
-					errorMessage: t('merchant.account_name_required'),
-				}, ],
-			},
-			accountNumber: {
-				rules: [{
-					required: true,
-					errorMessage:  t('merchant.account_number_required'),
-				}, ],
-			},
-			bankName: {
-				rules: [{
-					required: true,
-					errorMessage:  t('merchant.bank_required'),
-				}, ],
-			},
+			// accountName: {
+			// 	rules: [{
+			// 		required: true,
+			// 		errorMessage: t('merchant.account_name_required'),
+			// 	}, ],
+			// },
+			// accountNumber: {
+			// 	rules: [{
+			// 		required: true,
+			// 		errorMessage:  t('merchant.account_number_required'),
+			// 	}, ],
+			// },
+			// bankName: {
+			// 	rules: [{
+			// 		required: true,
+			// 		errorMessage:  t('merchant.bank_required'),
+			// 	}, ],
+			// },
 		}
 	});
 	const placeholderStyle = 'color:#BBBBBB;font-size:28rpx;line-height:normal';

+ 421 - 383
pages/user/info.vue

@@ -12,11 +12,12 @@
 						<!-- #ifdef MP -->
 						<button class="ss-reset-button avatar-action-btn" open-type="chooseAvatar"
 							@chooseavatar="onChooseAvatar">
-							{{$t('user.change')}}
+							{{ $t('user.change') }}
 						</button>
 						<!-- #endif -->
 						<!-- #ifndef MP -->
-						<button class="ss-reset-button avatar-action-btn" @tap="onChangeAvatar">{{$t('user.change')}}</button>
+						<button class="ss-reset-button avatar-action-btn"
+							@tap="onChangeAvatar">{{ $t('user.change') }}</button>
 						<!-- #endif -->
 					</view>
 				</view>
@@ -24,8 +25,9 @@
 
 			<view class="bg-white ss-p-x-30">
 				<uni-forms-item name="username" :label="$t('user.username')" :error-message="state.usernameErrorMsg">
-					<uni-easyinput v-model="state.model.username" :placeholder="$t('rules.username')" :inputBorder="false"
-						:placeholderStyle="placeholderStyle" @blur="verifyUsername" :clearable="false">
+					<uni-easyinput v-model="state.model.username" :placeholder="$t('rules.username')"
+						:inputBorder="false" :placeholderStyle="placeholderStyle" @blur="verifyUsername"
+						:clearable="false">
 						<template v-slot:right>
 							<view v-if="!state.verifyUsername" class="icon">
 								<image style :src="sheep.$url.static('/static/images/shibai.png')" />
@@ -36,10 +38,10 @@
 						</template>
 					</uni-easyinput>
 				</uni-forms-item>
-				<uni-forms-item name="nickname" :label="$t('user.nickname')">
+				<!-- <uni-forms-item name="nickname" :label="$t('user.nickname')">
 					<uni-easyinput v-model="state.model.nickname" type="nickname" :placeholder="t('rules.nickname')"
 						:inputBorder="false" :placeholderStyle="placeholderStyle" :clearable="false" />
-				</uni-forms-item>
+				</uni-forms-item> -->
 				<uni-forms-item name="sex" :label="$t('user.sex')">
 					<view class="ss-flex ss-col-center ss-h-100">
 						<radio-group @change="onChangeGender" class="ss-flex ss-col-center">
@@ -55,8 +57,9 @@
 				</uni-forms-item>
 
 				<uni-forms-item name="mobile" :label="$t('user.phone')" @tap="onChangeMobile">
-					<uni-easyinput v-model="userInfo.mobile" :placeholder="t('user.bind_phone')" :inputBorder="false" disabled
-						:styles="{ disableColor: '#fff' }" :placeholderStyle="placeholderStyle" :clearable="false">
+					<uni-easyinput v-model="userInfo.mobile" :placeholder="t('user.bind_phone')" :inputBorder="false"
+						disabled :styles="{ disableColor: '#fff' }" :placeholderStyle="placeholderStyle"
+						:clearable="false">
 						<template v-slot:right>
 							<view class="ss-flex ss-col-center">
 								<su-radio v-if="userInfo.verification?.mobile" :modelValue="true" />
@@ -67,22 +70,27 @@
 						</template>
 					</uni-easyinput>
 				</uni-forms-item>
-
-
-
-				<uni-forms-item name="password" :label="$t('user.password')" @tap="onSetPassword">
-					<uni-easyinput v-model="userInfo.password" :placeholder="$t('rules.click_change_password')" :inputBorder="false"
-						:styles="{ disableColor: '#fff' }" disabled
-						placeholderStyle="color:#BBBBBB;font-size:28rpx;line-height:normal" :clearable="false">
-						<template v-slot:right>
-							<view class="ss-flex ss-col-center">
-								<su-radio class="ss-flex" v-if="userInfo.verification?.password" :modelValue="true" />
-								<button v-else class="ss-reset-button ss-flex ss-col-center ss-row-center">
-									<text class="_icon-forward" style="color: #bbbbbb; font-size: 26rpx" />
-								</button>
-							</view>
-						</template>
-					</uni-easyinput>
+				<uni-forms-item name="password" :label="$t('user.登陆密码')" @tap="onSetPassword">
+					<view class="input-like ss-flex ss-row-between ss-col-center">
+						<text class="placeholder">{{ $t('user.点击修改登录密码') }}</text>
+						<view class="ss-flex ss-col-center">
+							<su-radio class="ss-flex" v-if="userInfo.verification?.password" :modelValue="true" />
+							<button v-else class="ss-reset-button ss-flex ss-col-center ss-row-center">
+								<text class="_icon-forward" style="color: #bbbbbb; font-size: 26rpx" />
+							</button>
+						</view>
+					</view>
+				</uni-forms-item>
+				<uni-forms-item name="password" :label="$t('user.支付密码')" @tap="onSetPayPayPayPassword">
+					<view class="input-like ss-flex ss-row-between ss-col-center">
+						<text class="placeholder">{{ $t('user.点击修改支付密码') }}</text>
+						<view class="ss-flex ss-col-center">
+							<su-radio class="ss-flex" v-if="userInfo.verification?.password" :modelValue="true" />
+							<button v-else class="ss-reset-button ss-flex ss-col-center ss-row-center">
+								<text class="_icon-forward" style="color: #bbbbbb; font-size: 26rpx" />
+							</button>
+						</view>
+					</view>
 				</uni-forms-item>
 			</view>
 
@@ -92,416 +100,446 @@
 
 		<su-fixed bottom placeholder bg="none">
 			<view class="footer-box ss-p-20">
-				<button class="ss-rest-button logout-btn" @tap="onSubmit">{{$t('common.save')}}</button>
+				<button class="ss-rest-button logout-btn" @tap="onSubmit">{{ $t('common.save') }}</button>
 			</view>
 		</su-fixed>
 	</s-layout>
 </template>
 
 <script setup>
-	import {
-		computed,
-		reactive,
-		onBeforeMount,
-		ref
-	} from 'vue';
-	import sheep from '@/sheep';
-	import {
-		clone
-	} from 'lodash';
-	import {
-		onLoad,
-		onShow
-	} from '@dcloudio/uni-app';
-	import {
-		showAuthModal
-	} from '@/sheep/hooks/useModal';
-	import FileApi from '@/sheep/api/infra/file';
-	import UserApi from '@/sheep/api/member/user';
-	import AuthUtil from '@/sheep/api/member/auth';
-	import {
-		closeAuthModal,
-	} from '@/sheep/hooks/useModal';
-	import { useI18n } from 'vue-i18n';
-	const { t } = useI18n();
-	const state = reactive({
-		verifyUsername: true,
-		usernameErrorMsg: '',
-		model: {
-
-		}, // 个人信息
-		rules: {},
-		thirdInfo: {}, // 社交用户的信息
-	});
-	const userInfo = computed(() => sheep.$store('user').userInfo);
-	const placeholderStyle = 'color:#BBBBBB;font-size:28rpx;line-height:normal';
-
-	const sexRadioMap = [{
-			name: t('user.male'),
-			value: '1',
+import {
+	computed,
+	reactive,
+	onBeforeMount,
+	ref
+} from 'vue';
+import sheep from '@/sheep';
+import {
+	clone
+} from 'lodash';
+import {
+	onLoad,
+	onShow
+} from '@dcloudio/uni-app';
+import {
+	showAuthModal
+} from '@/sheep/hooks/useModal';
+import FileApi from '@/sheep/api/infra/file';
+import UserApi from '@/sheep/api/member/user';
+import AuthUtil from '@/sheep/api/member/auth';
+import {
+	closeAuthModal,
+	showSetPayPassword,
+	showChangePayPassword
+} from '@/sheep/hooks/useModal';
+import { useI18n } from 'vue-i18n';
+const { t } = useI18n();
+const state = reactive({
+	verifyUsername: true,
+	usernameErrorMsg: '',
+	model: {
+
+	}, // 个人信息
+	rules: {},
+	thirdInfo: {}, // 社交用户的信息
+	
+});
+
+const userInfo = computed(() => sheep.$store('user').userInfo);
+const placeholderStyle = 'color:#BBBBBB;font-size:28rpx;line-height:normal';
+
+const sexRadioMap = [{
+	name: t('user.male'),
+	value: '1',
+},
+{
+	name: t('user.female'),
+	value: '2',
+}
+];
+
+
+// 选择性别
+function onChangeGender(e) {
+	state.model.sex = e.detail.value;
+}
+
+// 修改手机号
+const onChangeMobile = () => {
+	showAuthModal('changeMobile');
+};
+
+// 选择微信的头像,进行上传
+function onChooseAvatar(e) {
+	const tempUrl = e.detail.avatarUrl || '';
+	uploadAvatar(tempUrl);
+}
+// 手动选择头像,进行上传
+function onChangeAvatar() {
+	uni.chooseImage({
+		success: async (chooseImageRes) => {
+			const tempUrl = chooseImageRes.tempFilePaths[0];
+			await uploadAvatar(tempUrl);
 		},
-		{
-			name: t('user.female'),
-			value: '2',
-		}
-	];
 
+	});
+}
 
-	// 选择性别
-	function onChangeGender(e) {
-		state.model.sex = e.detail.value;
+// 上传头像文件
+async function uploadAvatar(tempUrl) {
+	if (!tempUrl) {
+		return;
 	}
+	// 压缩图片
+	const compressedImage = await compressImage(tempUrl);
+	let {
+		data
+	} = await FileApi.uploadFile(compressedImage);
+	state.model.avatar = data;
+}
+
+function compressImage(imagePath, scale = 0.5) { // 这里的 scale 是压缩比例,默认为 0.5(即 50%)
+	return new Promise((resolve, reject) => {
+		const canvas = document.createElement('canvas');
+		const ctx = canvas.getContext('2d');
+		const img = new Image();
+		img.src = imagePath;
+
+		img.onload = () => {
+			const originalWidth = img.width;
+			const originalHeight = img.height;
+
+			// 根据原始尺寸进行比例压缩
+			const newWidth = originalWidth * scale;
+			const newHeight = originalHeight * scale;
+
+			// 设置 canvas 尺寸为压缩后的尺寸
+			canvas.width = newWidth;
+			canvas.height = newHeight;
+
+			// 在 canvas 上绘制压缩后的图片
+			ctx.drawImage(img, 0, 0, newWidth, newHeight);
+
+			// 将 canvas 转换为 base64 格式图片,压缩质量0.7
+			const compressedImage = canvas.toDataURL('image/jpeg', 0.7);
+			resolve(compressedImage);
+		};
+
+		img.onerror = (err) => {
+			reject(err);
+		};
+	});
+}
 
-	// 修改手机号
-	const onChangeMobile = () => {
-		showAuthModal('changeMobile');
-	};
-
-	// 选择微信的头像,进行上传
-	function onChooseAvatar(e) {
-		const tempUrl = e.detail.avatarUrl || '';
-		uploadAvatar(tempUrl);
-	}
-	// 手动选择头像,进行上传
-	function onChangeAvatar() {
-		uni.chooseImage({
-			success: async (chooseImageRes) => {
-				const tempUrl = chooseImageRes.tempFilePaths[0];
-				await uploadAvatar(tempUrl);
-			},
+// 修改密码
+function onSetPassword() {
+	showAuthModal('changePassword');
+}
 
-		});
-	}
 
-	// 上传头像文件
-	async function uploadAvatar(tempUrl) {
-		if (!tempUrl) {
-			return;
-		}
-		// 压缩图片
-		const compressedImage = await compressImage(tempUrl);
-		let {
-			data
-		} = await FileApi.uploadFile(compressedImage);
-		state.model.avatar = data;
+// 点击修改/设置支付密码
+function onSetPayPayPayPassword() {
+	if (userInfo.value.havePayPassword) {
+		showChangePayPassword()
+	} else {
+		showSetPayPassword()
 	}
+}
 
-	function compressImage(imagePath, scale = 0.5) { // 这里的 scale 是压缩比例,默认为 0.5(即 50%)
-	  return new Promise((resolve, reject) => {
-	    const canvas = document.createElement('canvas');
-	    const ctx = canvas.getContext('2d');
-	    const img = new Image();
-	    img.src = imagePath;
-	
-	    img.onload = () => {
-	      const originalWidth = img.width;
-	      const originalHeight = img.height;
-	
-	      // 根据原始尺寸进行比例压缩
-	      const newWidth = originalWidth * scale;
-	      const newHeight = originalHeight * scale;
-	
-	      // 设置 canvas 尺寸为压缩后的尺寸
-	      canvas.width = newWidth;
-	      canvas.height = newHeight;
-	
-	      // 在 canvas 上绘制压缩后的图片
-	      ctx.drawImage(img, 0, 0, newWidth, newHeight);
-	
-	      // 将 canvas 转换为 base64 格式图片,压缩质量0.7
-	      const compressedImage = canvas.toDataURL('image/jpeg', 0.7);
-	      resolve(compressedImage);
-	    };
-	
-	    img.onerror = (err) => {
-	      reject(err);
-	    };
-	  });
+// 绑定第三方账号
+async function bindThirdOauth() {
+	let result = await sheep.$platform.useProvider('wechat').bind();
+	if (result) {
+		await getUserInfo();
 	}
-
-	// 修改密码
-	function onSetPassword() {
-		showAuthModal('changePassword');
+}
+
+// 解绑第三方账号
+function unBindThirdOauth() {
+	uni.showModal({
+		title: t('rules.unbind_reminder'),
+		content: t('rules.unbind_warning'),
+		cancelText: t('common.cancel'),
+		confirmText: t('common.confirm'),
+		success: async function (res) {
+			if (!res.confirm) {
+				return;
+			}
+			const result = await sheep.$platform.useProvider('wechat').unbind(state.thirdInfo.openid);
+			if (result) {
+				await getUserInfo();
+			}
+		},
+	});
+}
+let lastUsername = ref('')
+async function verifyUsername(e) {
+	// console.log(e.detail.value,state.username)
+
+	const username = e.detail.value;
+	if (username == '' || username == lastUsername.value) {
+		// 为空或者没改东西,不调校验
+		return false;
+	} else if (username === state.username) {
+		// 如果输入的用户名跟原来的本身的用户名一致,不做查询,默认正确(即点进来又点出去,没改变的)
+		state.usernameErrorMsg = '';
+		state.verifyUsername = true
+		return false;
 	}
-
-	// 绑定第三方账号
-	async function bindThirdOauth() {
-		let result = await sheep.$platform.useProvider('wechat').bind();
-		if (result) {
-			await getUserInfo();
-		}
+	lastUsername.value = username
+	// 提交数据
+	const {
+		data
+	} = await AuthUtil.verifyUsername(username);
+	// false就是已经有这个用户名,可以登录,true是没有,可以使用
+	if (!data) {
+		state.usernameErrorMsg = t('rules.username_taken')
+		state.verifyUsername = data
+	} else {
+		state.usernameErrorMsg = ''
+		state.verifyUsername = data
 	}
-
-	// 解绑第三方账号
-	function unBindThirdOauth() {
-		uni.showModal({
-			title: t('rules.unbind_reminder'),
-			content:t('rules.unbind_warning'),
-			cancelText: t('common.cancel'),
-			confirmText: t('common.confirm'),
-			success: async function(res) {
-				if (!res.confirm) {
-					return;
-				}
-				const result = await sheep.$platform.useProvider('wechat').unbind(state.thirdInfo.openid);
-				if (result) {
-					await getUserInfo();
-				}
-			},
+}
+// 保存信息
+async function onSubmit() {
+	const {
+		code
+	} = await UserApi.updateUser({
+		avatar: state.model.avatar,
+		nickname: state.model.nickname,
+		username: state.model.username,
+		sex: state.model.sex,
+	});
+	if (code === 0 && state.model.username !== state.username) {
+		// 修改成功并且是修改了用户名退出登录
+		uni.showToast({
+			icon: 'success',
+			title: t('rules.modify_success'),
 		});
+		// 成功后,只需要1秒后推出登录关闭弹窗
+		setTimeout(function () {
+			sheep.$store('user').logout();
+			closeAuthModal();
+			sheep.$router.go('/pages/index/user')
+		}, 1000)
 	}
-	let lastUsername = ref('')
-	async function verifyUsername(e) {
-		// console.log(e.detail.value,state.username)
-
-		const username = e.detail.value;
-		if (username == '' || username == lastUsername.value) {
-			// 为空或者没改东西,不调校验
-			return false;
-		} else if (username === state.username) {
-			// 如果输入的用户名跟原来的本身的用户名一致,不做查询,默认正确(即点进来又点出去,没改变的)
-			state.usernameErrorMsg = '';
-			state.verifyUsername = true
-			return false;
-		}
-		lastUsername.value = username
-		// 提交数据
-		const {
-			data
-		} = await AuthUtil.verifyUsername(username);
-		// false就是已经有这个用户名,可以登录,true是没有,可以使用
-		if (!data) {
-			state.usernameErrorMsg = t('rules.username_taken')
-			state.verifyUsername = data
-		} else {
-			state.usernameErrorMsg = ''
-			state.verifyUsername = data
-		}
+	if (code === 0) {
+		await getUserInfo();
 	}
-	// 保存信息
-	async function onSubmit() {
-		const {
-			code
-		} = await UserApi.updateUser({
-			avatar: state.model.avatar,
-			nickname: state.model.nickname,
-			username: state.model.username,
-			sex: state.model.sex,
-		});
-		if (code === 0 && state.model.username !== state.username) {
-			// 修改成功并且是修改了用户名退出登录
-			uni.showToast({
-				icon: 'success',
-				title: t('rules.modify_success'),
-			});
-			// 成功后,只需要1秒后推出登录关闭弹窗
-			setTimeout(function() {
-				sheep.$store('user').logout();
-				closeAuthModal();
-				sheep.$router.go('/pages/index/user')
-			}, 1000)
-		}
-		if (code === 0) {
-			await getUserInfo();
-		}
+}
+
+// 获得用户信息
+const getUserInfo = async () => {
+	// 个人信息
+	const userInfo = await sheep.$store('user').getInfo();
+	state.model = clone(userInfo);
+	state.username = userInfo.username
+	// 获得社交用户的信息
+	if (sheep.$platform.name !== 'H5') {
+		let result = await sheep.$platform.useProvider('wechat').getInfo();
+		state.thirdInfo = result || {};
 	}
-
-	// 获得用户信息
-	const getUserInfo = async () => {
-		// 个人信息
-		const userInfo = await sheep.$store('user').getInfo();
-		state.model = clone(userInfo);
-		state.username = userInfo.username
-		// 获得社交用户的信息
-		if (sheep.$platform.name !== 'H5') {
-			let result = await sheep.$platform.useProvider('wechat').getInfo();
-			state.thirdInfo = result || {};
-		}
-	};
-	
-	onShow(async () => {
-		await getUserInfo();
-	});
-	onLoad(async (options) => {
-		getUserInfo();
-		// uni.$on('submitComplete', getUserInfo);
-		// setTimeout(getUserInfo, 2000)
-	});
+};
+
+onShow(async () => {
+	await getUserInfo();
+});
+onLoad(async (options) => {
+	getUserInfo();
+	// uni.$on('submitComplete', getUserInfo);
+	// setTimeout(getUserInfo, 2000)
+});
 </script>
 
 <style lang="scss" scoped>
-	.icon {
-		display: flex;
-		align-items: center;
-		margin-right: 7rpx
+.icon {
+	display: flex;
+	align-items: center;
+	margin-right: 7rpx
+}
+
+.icon image {
+	width: 35rpx;
+	height: 35rpx;
+}
+
+:deep() {
+	.uni-file-picker {
+		border-radius: 50%;
 	}
 
-	.icon image {
-		width: 35rpx;
-		height: 35rpx;
+	.uni-file-picker__container {
+		margin: -14rpx -12rpx;
 	}
 
-	:deep() {
-		.uni-file-picker {
-			border-radius: 50%;
-		}
-
-		.uni-file-picker__container {
-			margin: -14rpx -12rpx;
-		}
-
-		.file-picker__progress {
-			height: 0 !important;
-		}
-
-		.uni-list-item__content-title {
-			font-size: 28rpx !important;
-			color: #333333 !important;
-			line-height: normal !important;
-		}
-
-		.uni-icons {
-			font-size: 40rpx !important;
-		}
-
-		.is-disabled {
-			color: #333333;
-		}
+	.file-picker__progress {
+		height: 0 !important;
 	}
 
-	:deep(.disabled) {
-		opacity: 1;
+	.uni-list-item__content-title {
+		font-size: 28rpx !important;
+		color: #333333 !important;
+		line-height: normal !important;
 	}
 
-	.gender-name {
-		font-size: 28rpx;
-		font-weight: 500;
-		line-height: normal;
-		color: #333333;
+	.uni-icons {
+		font-size: 40rpx !important;
 	}
 
-	.title-box {
-		font-size: 28rpx;
-		font-weight: 500;
-		color: #666666;
-		line-height: 100rpx;
+	.is-disabled {
+		color: #333333;
 	}
-
-	.logout-btn {
-		width: 710rpx;
-		height: 80rpx;
-		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 40rpx;
-		font-size: 30rpx;
+}
+
+:deep(.disabled) {
+	opacity: 1;
+}
+
+.gender-name {
+	font-size: 28rpx;
+	font-weight: 500;
+	line-height: normal;
+	color: #333333;
+}
+
+.title-box {
+	font-size: 28rpx;
+	font-weight: 500;
+	color: #666666;
+	line-height: 100rpx;
+}
+
+.logout-btn {
+	width: 710rpx;
+	height: 80rpx;
+	background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 40rpx;
+	font-size: 30rpx;
+	font-weight: 500;
+	color: $white;
+}
+
+.radio-dark {
+	filter: grayscale(100%);
+	filter: gray;
+	opacity: 0.4;
+}
+
+.content-img {
+	border-radius: 50%;
+}
+
+.header-box-content {
+	position: relative;
+	width: 160rpx;
+	height: 160rpx;
+	overflow: hidden;
+	border-radius: 50%;
+}
+
+.avatar-action {
+	position: absolute;
+	left: 50%;
+	transform: translateX(-50%);
+	bottom: 0;
+	z-index: 1;
+	width: 160rpx;
+	height: 46rpx;
+	background: rgba(#000000, 0.3);
+
+	.avatar-action-btn {
+		width: 160rpx;
+		height: 46rpx;
 		font-weight: 500;
-		color: $white;
-	}
-
-	.radio-dark {
-		filter: grayscale(100%);
-		filter: gray;
-		opacity: 0.4;
-	}
-
-	.content-img {
-		border-radius: 50%;
+		font-size: 24rpx;
+		color: #ffffff;
 	}
-
-	.header-box-content {
-		position: relative;
-		width: 160rpx;
-		height: 160rpx;
-		overflow: hidden;
-		border-radius: 50%;
+}
+
+// 绑定项
+.account-list {
+	background-color: $white;
+	height: 100rpx;
+	padding: 0 20rpx;
+
+	.list-img {
+		width: 40rpx;
+		height: 40rpx;
+		margin-right: 10rpx;
 	}
 
-	.avatar-action {
-		position: absolute;
-		left: 50%;
-		transform: translateX(-50%);
-		bottom: 0;
-		z-index: 1;
-		width: 160rpx;
-		height: 46rpx;
-		background: rgba(#000000, 0.3);
-
-		.avatar-action-btn {
-			width: 160rpx;
-			height: 46rpx;
-			font-weight: 500;
-			font-size: 24rpx;
-			color: #ffffff;
-		}
+	.list-name {
+		font-size: 28rpx;
+		color: #333333;
 	}
 
-	// 绑定项
-	.account-list {
-		background-color: $white;
-		height: 100rpx;
-		padding: 0 20rpx;
-
-		.list-img {
-			width: 40rpx;
-			height: 40rpx;
-			margin-right: 10rpx;
+	.info {
+		.avatar {
+			width: 38rpx;
+			height: 38rpx;
+			border-radius: 50%;
+			overflow: hidden;
 		}
 
-		.list-name {
+		.name {
 			font-size: 28rpx;
-			color: #333333;
+			font-weight: 400;
+			color: $dark-9;
 		}
+	}
 
-		.info {
-			.avatar {
-				width: 38rpx;
-				height: 38rpx;
-				border-radius: 50%;
-				overflow: hidden;
-			}
-
-			.name {
-				font-size: 28rpx;
-				font-weight: 400;
-				color: $dark-9;
-			}
+	.bind-box {
+		width: 100rpx;
+		height: 50rpx;
+		line-height: normal;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 24rpx;
+
+		.bind-btn {
+			width: 100%;
+			height: 100%;
+			border-radius: 25rpx;
+			background: #f4f4f4;
+			color: #999999;
 		}
 
-		.bind-box {
-			width: 100rpx;
-			height: 50rpx;
-			line-height: normal;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			font-size: 24rpx;
-
-			.bind-btn {
-				width: 100%;
-				height: 100%;
-				border-radius: 25rpx;
-				background: #f4f4f4;
-				color: #999999;
-			}
-
-			.relieve-btn {
-				width: 100%;
-				height: 100%;
-				border-radius: 25rpx;
-				background: var(--ui-BG-Main-opacity-1);
-				color: var(--ui-BG-Main);
-			}
+		.relieve-btn {
+			width: 100%;
+			height: 100%;
+			border-radius: 25rpx;
+			background: var(--ui-BG-Main-opacity-1);
+			color: var(--ui-BG-Main);
 		}
 	}
-
-	.list-border {
+}
+
+.list-border {
+	font-size: 28rpx;
+	font-weight: 400;
+	color: #333333;
+	border-bottom: 2rpx solid #eeeeee;
+}
+
+image {
+	width: 100%;
+	height: 100%;
+}
+
+:deep(.uni-forms-item__content) {
+  display: flex;
+  align-items: center;
+}
+.input-like {
+	width: 100%;
+
+	background-color: #fff;
+	
+	.placeholder {
+		color: #BBBBBB;
 		font-size: 28rpx;
-		font-weight: 400;
-		color: #333333;
-		border-bottom: 2rpx solid #eeeeee;
-	}
-
-	image {
-		width: 100%;
-		height: 100%;
+		line-height: normal;
 	}
+}
 </style>

+ 5 - 5
pages/user/setting.vue

@@ -13,7 +13,7 @@
 					<uni-list-chat
 						clickable
 						:avatar-circle="true"
-						:title="state.model?.nickname"
+						:title="state.model?.username"
 						:avatar="state.model?.avatar"
 						:note="$t('setting.signature')"
 						@tap="sheep.$router.go('/pages/user/info')"
@@ -40,7 +40,7 @@
 						:border="false"
 					/>
 					
-					<uni-list-item
+					<!-- <uni-list-item
 					title="支付宝账号"
 					showArrow
 					clickable
@@ -64,7 +64,7 @@
 								>{{$t('setting.bank_card')}}&nbsp;&nbsp;{{bankAccount?bankAccount:'未绑定'}}
 							</p>
 						</template>
-					</uni-list-item>
+					</uni-list-item> -->
 					<!-- <uni-list-item
 						clickable
 						@tap="sheep.$router.go('/pages/user/invoice/list')"
@@ -135,7 +135,7 @@
 						:border="false"
 					>
 						<template v-slot:body>
-							<p style="width: 100%; display: flex; align-items: center">
+							<p style="width: 100%; display: flex; align-items: center;">
 								{{$t('setting.my_qrcode')}} &nbsp;&nbsp;&nbsp;&nbsp;
 								<su-image
 									class="content-img"
@@ -407,7 +407,7 @@
 			height: 0 !important;
 		}
 
-		.uni-list-item__content-title {
+		.uni-list-item__content-title ,.uni-list-item{
 			font-size: 32rpx !important;
 			color: #333333 !important;
 			line-height: normal !important;

+ 235 - 213
pages/user/wallet/consumptionLog.vue

@@ -1,26 +1,58 @@
 <template>
 	<!-- 消费分来源 -->
-	<s-layout class="wallet-wrap" :bgStyle="{'backgroundColor':'#ffffff'}" title="" navbar="normal">
+	<s-layout class="wallet-wrap" :bgStyle="{ 'backgroundColor': '#ffffff' }" title="" navbar="normal">
 
 		<view class="model-box ss-flex-col">
 			<scroll-view class="list-box" scroll-y="true" @touchmove.stop>
-				<view v-if="state.pagination.total > 0" style="padding: 20rpx;">
+				<!-- 查积分记录 -->
+				<view v-if="state.pagination.total > 0 && state.integralType" style="padding: 20rpx;">
 					<view class="list-item ss-flex ss-col-center ss-row-between "
-						v-for="(item,index)  in state.pagination.list" :key="item.id"
+						v-for="(item, index)  in state.pagination.list" :key="item.id"
 						style="padding:0;padding: 20rpx 0;border-bottom: 1px solid #c4c4c4;">
 						<view class="ss-flex ss-col-center" style="width: 100%;">
 							<view class="ss-flex ss-m-t-10"
-								style="flex-direction: column;align-items: flex-start;width: 100%;">
-								<view class="name" style="width: 100%;"> {{ item.consumptionStatusName  }}{{ [3,4].includes(item.consumptionStatus) ? "(" + item.generateUserName +")" : ""}} {{ item.consumptionStatus === 1 ? "("+t('wallet.balance') +":" + points2point(item.practicalConsumptionPoints)+")" : ""}}
-									<text  style="float: right;" class="color-red"
-										:class="{'color-green':item.consumptionPoints < 0}" > 
-										{{item.consumptionPoints > 0 ? '+'+points2point(item.consumptionPoints) : points2point(item.consumptionPoints)}}
+								style="flex-direction: column;align-items: flex-start;width: 100%;" >
+								<view class="name" style="width: 100%;"> {{ item.consumptionStatusName }} {{
+									[11].includes(item.integralStatus) ? "(" + item.generateUserName + ")" : ""}}
+									 {{ item.ancestorQuotaAmount > 0 ? `(超出金额:${points2point(item.ancestorQuotaAmount)})` : "" }}
+									<text style="float: right;" class="color-red"
+										:class="{ 'color-green': item.practicalIntegralPoints < 0 }">
+										{{ item.practicalIntegralPoints > 0 ? '+' + points2point(item.practicalIntegralPoints) :
+											points2point(item.practicalIntegralPoints)}}
 									</text>
-									
+
+								</view>
+								<view class="time " style="width: 100%;">
+									{{ sheep.$helper.timeFormat(item.createTime, 'yyyy-mm-dd hh:MM') }}
+									<text style="float: right;">{{ t('wallet.balance') }}:{{
+										points2point(item.afterIntegralPoints)}}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<!-- 查峰值记录 -->
+				<view v-else-if="!state.integralType && state.pagination.total > 0" style="padding: 20rpx;">
+					<view class="list-item ss-flex ss-col-center ss-row-between "
+						v-for="(item, index)  in state.pagination.list" :key="item.id"
+						style="padding:0;padding: 20rpx 0;border-bottom: 1px solid #c4c4c4;">
+						<view class="ss-flex ss-col-center" style="width: 100%;">
+							<view class="ss-flex ss-m-t-10"
+								style="flex-direction: column;align-items: flex-start;width: 100%;" >
+								<view class="name" style="width: 100%;"> {{ item.consumptionStatusName }} {{
+									[11].includes(item.integralStatus) ? "(" + item.generateUserName + ")" : ""}}
+									 {{ item.ancestorQuotaAmount > 0 ? `(超出金额:${points2point(item.ancestorQuotaAmount)})` : "" }}
+									<text style="float: right;" class="color-red"
+										:class="{ 'color-green': item.maxAvailablePointsAmount < 0 }">
+										{{ item.maxAvailablePointsAmount > 0 ? '+' + points2point(item.maxAvailablePointsAmount) :
+											points2point(item.maxAvailablePointsAmount)}}
+									</text>
+
 								</view>
 								<view class="time " style="width: 100%;">
-									{{sheep.$helper.timeFormat(item.createTime, 'yyyy-mm-dd hh:MM')}}
-									<text style="float: right;">{{ t('wallet.balance') }}:{{ points2point(item.afterConsumptionPoints)}}</text>
+									{{ sheep.$helper.timeFormat(item.createTime, 'yyyy-mm-dd hh:MM') }}
+									<text style="float: right;">{{ t('wallet.balance') }}:{{
+										points2point(item.afterMaxAvailablePointsAmount)}}</text>
 								</view>
 							</view>
 						</view>
@@ -28,8 +60,8 @@
 				</view>
 				<s-empty v-else text="暂无数据" paddingTop="200" icon="/static/data-empty.png" />
 				<uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
-					  contentdown: t('common.click_to_load_more'),
-					}" @tap="onLoadMore(true)" @scrolltolower="onLoadMore(true)" />
+					contentdown: t('common.click_to_load_more'),
+				}" @tap="onLoadMore(true)" @scrolltolower="onLoadMore(true)" />
 			</scroll-view>
 
 		</view>
@@ -37,243 +69,233 @@
 </template>
 
 <script setup>
-	import sheep from '@/sheep';
-	import {
-		onLoad,
-		onReachBottom
-	} from '@dcloudio/uni-app';
-	import {
-		computed,
-		reactive
-	} from 'vue';
-	import {
-		points2point
-	} from '@/sheep/hooks/useGoods';
-	import _ from 'lodash';
-	import dayjs from 'dayjs';
-	import PointApi from '@/sheep/api/member/point';
-	import {
-		resetPagination
-	} from '@/sheep/util';
-	import ConsumptionApi from '@/sheep/api/distri/consumption';
-	import { t } from '@/locale'
-	const userWallet = computed(() => sheep.$store('user').userWallet);
-	const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
-	const userInfo = computed(() => sheep.$store('user').userInfo);
-	const sys_navBar = sheep.$platform.navbar;
-
-	const state = reactive({
-		currentTab: 0,
-		pagination: {
-			list: [],
-			total: 0,
-			pageSize: 10,
-			pageNo: 1,
-		},
-		loadStatus: '',
-		showModel: false,
-		showQueModel: false
+import sheep from '@/sheep';
+import {
+	onLoad,
+	onReachBottom
+} from '@dcloudio/uni-app';
+import {
+	computed,
+	reactive
+} from 'vue';
+import {
+	points2point
+} from '@/sheep/hooks/useGoods';
+import _ from 'lodash';
+import dayjs from 'dayjs';
+import PointApi from '@/sheep/api/member/point';
+import {
+	resetPagination
+} from '@/sheep/util';
+import ConsumptionApi from '@/sheep/api/distri/consumption';
+import { t } from '@/locale'
+const userWallet = computed(() => sheep.$store('user').userWallet);
+const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
+const userInfo = computed(() => sheep.$store('user').userInfo);
+const sys_navBar = sheep.$platform.navbar;
+
+const state = reactive({
+	integralType: 0,
+	pagination: {
+		list: [],
+		total: 0,
+		pageSize: 10,
+		pageNo: 1,
+	},
+	loadStatus: '',
+	showModel: false,
+	showQueModel: false
+});
+
+
+async function getLogList() {
+	state.loadStatus = 'loading';
+	// isFreeze为true是冻结佣金 isFreeze为false是已拿到的佣金
+	let {
+		code,
+		data
+	} = await ConsumptionApi.getConsumptionLog({
+		pageNo: state.pagination.pageNo,
+		pageSize: state.pagination.pageSize,
+		integralType: state.integralType
 	});
+	if (code !== 0) {
+		return;
+	}
+	let list = _.concat(state.pagination.list, data.list);
+	state.pagination.list = list;
+	state.pagination.total = data.total;
+	state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';
+}
 
 
-	async function getLogList() {
-		state.loadStatus = 'loading';
-		// isFreeze为true是冻结佣金 isFreeze为false是已拿到的佣金
-		let {
-			code,
-			data
-		} = await ConsumptionApi.getConsumptionLog({
-			pageNo: state.pagination.pageNo,
-			pageSize: state.pagination.pageSize,
-		
-		});
-		if (code !== 0) {
-			return;
-		}
-		let list = _.concat(state.pagination.list, data.list);
-		state.pagination.list = list;
-		state.pagination.total = data.total;
-		state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';
-	}
-	
-	// 列表标题
-	const title = (item) => {
-		// {{ item.profitStatusName || '空' }}
-		let title = item.profitStatusName + '';
-		// 如果有返回username就显示
-		if(item.username){
-			title += '('+item.username+ ')'
-		}
 
 
-		return title;
-	}
-	
-	
-	function onLoadMore(isFreeze) {
-		if (state.loadStatus === 'noMore') {
-			return;
-		}
-		state.pagination.pageNo++;
-		getLogList();
+function onLoadMore() {
+	if (state.loadStatus === 'noMore') {
+		return;
 	}
-
-	onReachBottom(() => {
-		onLoadMore();
-	});
-	onLoad(() => {
-		getLogList();
-	});
+	state.pagination.pageNo++;
+	getLogList();
+}
+
+onReachBottom(() => {
+	onLoadMore();
+});
+onLoad((options) => {
+	state.integralType = options.integralType;
+	getLogList();
+});
 </script>
 
 <style lang="scss" scoped>
-	.color-red {
-		color: red;
-	}
-
-	.color-green {
-		color: green;
+.color-red {
+	color: red;
+}
+
+.color-green {
+	color: green;
+}
+
+.score-box {
+	margin: 20rpx;
+	border-radius: 20rpx;
+	padding-top: 100rpx;
+}
+
+.avatar-box {
+	width: 100rpx;
+	height: 100rpx;
+	border-radius: 50%;
+	overflow: hidden;
+
+	.avatar-img {
+		width: 100%;
+		height: 100%;
 	}
+}
+
+.value-box {
+	width: 100rpx;
+	height: 100rpx;
+	line-height: 100rpx;
+	text-align: center;
+	border-radius: 50%;
+	border: 2px solid #f6f6f6;
+}
+
+.btn {
+	width: 300rpx;
+	background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 20rpx;
+	font-size: 30rpx;
+	font-weight: 500;
+	line-height: 80rpx;
+	color: $white;
+	position: relative;
+	z-index: 1;
+}
+
+.header-box {
+	width: 100%;
+	background: linear-gradient(180deg, var(--ui-BG-Main) 0%, var(--ui-BG-Main-gradient) 100%) no-repeat;
+	background-size: 750rpx 100%;
+	padding: 0 0 120rpx 0;
+	box-sizing: border-box;
 
 	.score-box {
-		margin: 20rpx;
-		border-radius: 20rpx;
-		padding-top: 100rpx;
-	}
+		height: 100%;
 
-	.avatar-box {
-		width: 100rpx;
-		height: 100rpx;
-		border-radius: 50%;
-		overflow: hidden;
+		.all-num {
+			font-size: 50rpx;
+			font-weight: bold;
+			color: #fff;
+			font-family: OPPOSANS;
+		}
 
-		.avatar-img {
-			width: 100%;
-			height: 100%;
+		.all-title {
+			font-size: 26rpx;
+			font-weight: 500;
+			color: #fff;
 		}
-	}
 
-	.value-box {
-		width: 100rpx;
-		height: 100rpx;
-		line-height: 100rpx;
-		text-align: center;
-		border-radius: 50%;
-		border: 2px solid #f6f6f6;
+		.cicon-help-o {
+			color: #fff;
+			font-size: 28rpx;
+		}
 	}
+}
 
-	.btn {
-		width: 300rpx;
-		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 20rpx;
-		font-size: 30rpx;
-		font-weight: 500;
-		line-height: 80rpx;
-		color: $white;
-		position: relative;
-		z-index: 1;
-	}
+// 筛选
+.filter-box {
+	height: 114rpx;
+	background-color: $bg-page;
 
-	.header-box {
-		width: 100%;
-		background: linear-gradient(180deg, var(--ui-BG-Main) 0%, var(--ui-BG-Main-gradient) 100%) no-repeat;
-		background-size: 750rpx 100%;
-		padding: 0 0 120rpx 0;
-		box-sizing: border-box;
-
-		.score-box {
-			height: 100%;
-
-			.all-num {
-				font-size: 50rpx;
-				font-weight: bold;
-				color: #fff;
-				font-family: OPPOSANS;
-			}
-
-			.all-title {
-				font-size: 26rpx;
-				font-weight: 500;
-				color: #fff;
-			}
-
-			.cicon-help-o {
-				color: #fff;
-				font-size: 28rpx;
-			}
-		}
+	.total-box {
+		font-size: 24rpx;
+		font-weight: 500;
+		color: $dark-9;
 	}
 
-	// 筛选
-	.filter-box {
-		height: 114rpx;
-		background-color: $bg-page;
+	.date-btn {
+		background-color: $white;
+		line-height: 54rpx;
+		border-radius: 27rpx;
+		padding: 0 20rpx;
+		font-size: 24rpx;
+		font-weight: 500;
+		color: $dark-6;
 
-		.total-box {
-			font-size: 24rpx;
-			font-weight: 500;
+		.ss-seldate-icon {
+			font-size: 50rpx;
 			color: $dark-9;
 		}
-
-		.date-btn {
-			background-color: $white;
-			line-height: 54rpx;
-			border-radius: 27rpx;
-			padding: 0 20rpx;
-			font-size: 24rpx;
-			font-weight: 500;
-			color: $dark-6;
-
-			.ss-seldate-icon {
-				font-size: 50rpx;
-				color: $dark-9;
-			}
-		}
 	}
+}
 
 
-	.list-box {
-		// width: 600rpx;
-		// padding: 0 30rpx;
-		overflow-y: auto;
-		height: 100vh;
+.list-box {
+	// width: 600rpx;
+	// padding: 0 30rpx;
+	overflow-y: auto;
+	height: 100vh;
 
-		.list-item {
+	.list-item {
 
-			background: #fff;
-			// border-bottom: 1rpx solid #dfdfdf;
-			padding: 30rpx;
+		background: #fff;
+		// border-bottom: 1rpx solid #dfdfdf;
+		padding: 30rpx;
 
-			.name {
-				font-size: 28rpx;
+		.name {
+			font-size: 28rpx;
 
-				font-weight: 500;
-				color: rgba(102, 102, 102, 1);
-				line-height: 28rpx;
-				// margin-bottom: 20rpx;
-			}
+			font-weight: 500;
+			color: rgba(102, 102, 102, 1);
+			line-height: 28rpx;
+			// margin-bottom: 20rpx;
+		}
 
-			.time {
-				font-size: 24rpx;
+		.time {
+			font-size: 24rpx;
 
-				font-weight: 500;
-				color: rgba(196, 196, 196, 1);
-				line-height: 24px;
-			}
+			font-weight: 500;
+			color: rgba(196, 196, 196, 1);
+			line-height: 24px;
+		}
 
-			.add {
-				font-size: 30rpx;
+		.add {
+			font-size: 30rpx;
 
-				font-weight: 500;
-				color: #e6b873;
-			}
+			font-weight: 500;
+			color: #e6b873;
+		}
 
-			.minus {
-				font-size: 30rpx;
+		.minus {
+			font-size: 30rpx;
 
-				font-weight: 500;
-				color: $dark-3;
-			}
+			font-weight: 500;
+			color: $dark-3;
 		}
 	}
+}
 </style>

+ 442 - 427
pages/user/wallet/consumptionTransfers.vue

@@ -1,71 +1,65 @@
 <template>
-	<s-layout class="set-wrap" :title="t('wallet.points_transfer')" :bgStyle="{ color: '#FFF' }">
+	<s-layout class="set-wrap" :title="t('wallet.积分转让')" :bgStyle="{ color: '#FFF' }">
 		<uni-forms :model="state.model" :rules="state.rules" validateTrigger="bind" labelPosition="left" border
 			class="form-box" labelWidth='200' ref="FormRef">
 			<view class="bg-white ss-p-x-30">
-				<uni-forms-item name="recipientUserName" :label="t('wallet.recipient')" :required="true"
-					:error-message="state.usernameErrorMsg">
-					<uni-easyinput v-model="state.model.recipientUserName" type="recipientUserName"
-						:placeholder="t('wallet.enter_recipient_username')" :inputBorder="false" :clearable="false" @blur="verifyUsername">
-						<template v-slot:right>
-							<view v-if="state.verifyUsername" class="icon">
-								<image style :src="sheep.$url.static('/static/images/shibai.png')" />
-							</view>
-							<view v-else class="icon">
-								<image :src="sheep.$url.static('/static/images/chenggong.png')" />
-							</view>
-						</template>
-					</uni-easyinput>
+				<uni-forms-item name="integralType" :label="t('wallet.转让积分类型')" :required="true">
+					<uni-data-picker v-model="state.model.integralType"
+						:localdata="[{ value: 1, text: t('wallet.红积分') }, { value: 2, text: t('wallet.黄积分') }, { value: 3, text: t('wallet.绿积分') }]"
+						placeholder="请选择类型" style="width: 100%;" />
 				</uni-forms-item>
-				<uni-forms-item name="recipientUserPhone" :label="t('wallet.recipient_phone')" :required="true"
-					:error-message="state.mobileErrorMsg">
-					<uni-easyinput v-model="state.model.recipientUserPhone" type="number"
-						:placeholder="t('wallet.enter_recipient_phone')" :inputBorder="false" :clearable="false"
-						@blur="verifyPhone" >
-						<template v-slot:right>
-							<view v-if="state.verifyMobile" class="icon">
-								<image style :src="sheep.$url.static('/static/images/shibai.png')" />
-							</view>
-							<view v-else class="icon">
-								<image :src="sheep.$url.static('/static/images/chenggong.png')" />
-							</view>
-						</template>
-					</uni-easyinput>
-				</uni-forms-item>
-				<uni-forms-item name="mobile" :label="t('account.phone_number')" class="mobile loginUniFormItem ss-p-t-10"
-					>
-					<uni-easyinput v-model="state.model.smsCodeUseReqDTO.mobile" type="smsCodeUseReqDTO"
-						:placeholder="t('account.enter_phone_number')" :inputBorder="false" :clearable="false" :disabled="true">
-						<template v-slot:right>
-							<button class="ss-reset-button code-btn code-btn-start" :disabled="verifyUsername == true || state.verifyMobile == true"
-								:class="{ 'disabled': verifyUsername == true || state.verifyMobile == true }"
-								@tap="getSmsCode('consumptionTransfers', state.model.smsCodeUseReqDTO.mobile)">
-								{{ getSmsTimer('consumptionTransfers') }}
-							</button>
-						</template>
-					</uni-easyinput>
-				</uni-forms-item>
-				<uni-forms-item name="smsCodeUseReqDTO.code" :label="t('account.verification_code')" :required="true">
-					<uni-easyinput v-model="state.model.smsCodeUseReqDTO.code" type="number"
-						:placeholder="t('account.enter_verification_code')" :inputBorder="false" :clearable="false" >
-					</uni-easyinput>
-				</uni-forms-item>
-				<uni-forms-item name="consumptionPoints" :label="t('wallet.transfer_amount')" :required="true">
-					<uni-easyinput v-model="state.model.consumptionPoints" type="number"
-						:placeholder="t('wallet.enter_transfer_amount')" :inputBorder="false" :clearable="false" @input="validateInput" />
-				</uni-forms-item>
-
+				<template v-if="state.model.integralType">
+					<uni-forms-item name="recipientUserName" :label="t('wallet.recipient')" :required="true"
+						:error-message="state.usernameErrorMsg">
+						<uni-easyinput v-model="state.model.recipientUserName" type="recipientUserName"
+							:placeholder="t('wallet.enter_recipient_username')" :inputBorder="false" :clearable="false"
+							@blur="verifyUsername">
+							<template v-slot:right>
+								<view v-if="state.verifyUsername" class="icon">
+									<image style :src="sheep.$url.static('/static/images/shibai.png')" />
+								</view>
+								<view v-else class="icon">
+									<image :src="sheep.$url.static('/static/images/chenggong.png')" />
+								</view>
+							</template>
+						</uni-easyinput>
+					</uni-forms-item>
+					<uni-forms-item name="recipientUserPhone" :label="t('wallet.recipient_phone')" :required="true"
+						:error-message="state.mobileErrorMsg">
+						<uni-easyinput v-model="state.model.recipientUserPhone" type="number"
+							:placeholder="t('wallet.enter_recipient_phone')" :inputBorder="false" :clearable="false"
+							@blur="verifyPhone">
+							<template v-slot:right>
+								<view v-if="state.verifyMobile" class="icon">
+									<image style :src="sheep.$url.static('/static/images/shibai.png')" />
+								</view>
+								<view v-else class="icon">
+									<image :src="sheep.$url.static('/static/images/chenggong.png')" />
+								</view>
+							</template>
+						</uni-easyinput>
+					</uni-forms-item>
+
+					<uni-forms-item name="consumptionPoints" :label="t('wallet.transfer_amount')" :required="true">
+						<uni-easyinput v-model="state.model.consumptionPoints" type="number"
+							:placeholder="t('wallet.enter_transfer_amount')" :inputBorder="false" :clearable="false"
+							@input="validateInput" />
+					</uni-forms-item>
+				</template>
 
 			</view>
 		</uni-forms>
 		<view class="ss-flex ss-row-center ss-col-center ss-m-t-30">
-			{{t('wallet.current_transferable_amount')}}<text class="text-red">{{canUseConsumptionPoints}}</text>
+			<template v-if="state.model.integralType">
+				{{ t('wallet.current_transferable_amount') }}<text class="text-red">{{ canUseConsumptionPoints }}</text>
+			</template>
 			<!-- <button class="ss-m-l-10 all-btn " @click="useAllPonints">{{t('common.all')}}</button> -->
 
 		</view>
-		<su-fixed bottom placeholder bg="none">
+
+		<su-fixed bottom placeholder bg="none" v-if="state.model.integralType">
 			<view class="footer-box ss-p-20 ss-flex">
-				<button class="ss-rest-button btn" @tap="onSubmit">{{t('common.confirm')}}</button>
+				<button class="ss-rest-button btn" @tap="onSubmit">{{ t('common.confirm') }}</button>
 			</view>
 		</su-fixed>
 
@@ -74,419 +68,440 @@
 
 
 <script setup>
-	import {
-		computed,
-		reactive,
-		onBeforeMount,
-		ref,
-		unref,
-		watch,
-		nextTick
-	} from 'vue';
-	import sheep from '@/sheep';
-	import {
-		clone
-	} from 'lodash';
-	import {
-		onLoad
-	} from '@dcloudio/uni-app';
-	import {
-		points2point
-	} from '@/sheep/hooks/useGoods';
-	import {
-		email
-	} from '@/sheep/validate/form';
-
-	import AuthUtil from '@/sheep/api/member/auth';
-	import ConsumptionApi from '@/sheep/api/distri/consumption';
-	import {
-		showAuthModal,
-		closeAuthModal,
-		getSmsCode,
-		getSmsTimer,
-		showWalletModal,
-		colseWalletModal
-	} from '@/sheep/hooks/useModal';
-	import { t } from '@/locale'
-	const userInfo = computed(() => sheep.$store('user').userInfo);
-	const userWallet = computed(() => sheep.$store('user').userWallet);
-	const state = reactive({
-		verifyUsername: true,
-		verifyMobile:true,
-		usernameErrorMsg: '',
-		mobileErrorMsg: '',
-		model: {
-			recipientUserName: undefined,
-			recipientUserId: undefined,
-			recipientUserPhone: undefined,
-			consumptionPoints: undefined,
-			smsCodeUseReqDTO: {
-				mobile: undefined,
-				scene: 11,
-				code: undefined
-			}
+import {
+	computed,
+	reactive,
+	onBeforeMount,
+	ref,
+	unref,
+	watch,
+	nextTick
+} from 'vue';
+import sheep from '@/sheep';
+import {
+	clone
+} from 'lodash';
+import {
+	onLoad
+} from '@dcloudio/uni-app';
+import {
+	points2point
+} from '@/sheep/hooks/useGoods';
+import {
+	email
+} from '@/sheep/validate/form';
+import { showInputPayPassword } from '@/sheep/hooks/useModal'
+import AuthUtil from '@/sheep/api/member/auth';
+import ConsumptionApi from '@/sheep/api/distri/consumption';
+import {
+	showAuthModal,
+	closeAuthModal,
+	getSmsCode,
+	getSmsTimer,
+	showWalletModal,
+	colseWalletModal
+} from '@/sheep/hooks/useModal';
+import { t } from '@/locale'
+
+const userInfo = computed(() => sheep.$store('user').userInfo);
+const userWallet = computed(() => sheep.$store('user').userWallet);
+
+const state = reactive({
+	verifyUsername: true,
+	verifyMobile: true,
+	usernameErrorMsg: '',
+	mobileErrorMsg: '',
+	model: {
+		recipientUserName: undefined,
+		recipientUserId: undefined,
+		recipientUserPhone: undefined,
+		consumptionPoints: undefined,
+		integralType: undefined,
+		// smsCodeUseReqDTO: {
+		// 	mobile: undefined,
+		// 	scene: 11,
+		// 	code: undefined
+		// }
+	},
+	rules: {
+		recipientUserName: {
+			rules: [{
+				required: true,
+				errorMessage: t('wallet.recipient_cannot_be_empty'),
+			},],
 		},
-		rules: {
-			recipientUserName: {
-				rules: [{
-					required: true,
-					errorMessage: t('wallet.recipient_cannot_be_empty'),
-				}, ],
-			},
-			recipientUserPhone: {
-				rules: [{
-					required: true,
-					errorMessage: t('wallet.recipient_phone_cannot_be_empty'),
-				}, ],
-			},
-			"smsCodeUseReqDTO.code": {
-				rules: [{
-					required: true,
-					errorMessage: t('wallet.verification_code_cannot_be_empty'),
-				}, ],
+		recipientUserPhone: {
+			rules: [{
+				required: true,
+				errorMessage: t('wallet.recipient_phone_cannot_be_empty'),
+			},],
+		},
+		"smsCodeUseReqDTO.code": {
+			rules: [{
+				required: true,
+				errorMessage: t('wallet.verification_code_cannot_be_empty'),
+			},],
+		},
+		consumptionPoints: {
+			rules: [{
+				required: true,
+				errorMessage: t('wallet.transfer_amount_cannot_be_empty'),
 			},
-			consumptionPoints: {
-				rules: [{
-					required: true,
-					errorMessage: t('wallet.transfer_amount_cannot_be_empty'),
-				}, 
-				{
-				  validateFunction: function (rule, value, data, callback) {
-
-				    if (value<=0) {
-				      callback(t('wallet.transfer_amount_less_than_zero'));
-				    }
-				    return true;
-				  },
+			{
+				validateFunction: function (rule, value, data, callback) {
+
+					if (value <= 0) {
+						callback(t('wallet.transfer_amount_less_than_zero'));
+					}
+					return true;
 				},
-				],
 			},
-		}
-	});
-	const canUseConsumptionPoints = computed(() => points2point(userWallet.value.integralDO.consumptionPoints));
-	let lastUsername = ref('')
-	async function verifyUsername(e) {
-		const username = e.detail.value;
-		if(username == lastUsername.value) return;
-		if (username == '') {
-			state.verifyUsername = true
-			return false;
-		}else if (username === userInfo.value.username) {
-			state.usernameErrorMsg = t('wallet.recipient_cannot_be_self')
-			return false;
-		}
-		lastUsername.value = username
-		// 提交数据
-		const {
-			data
-		} = await AuthUtil.verifyUsername(username);
-		if (data) {
-			state.usernameErrorMsg = t('wallet.user_does_not_exist')
-		} else {
-			state.usernameErrorMsg = ''
-		}
-		state.verifyUsername = data
+			],
+		},
 	}
-	
-	async function verifyPhone(e) {
-		const phone = e.detail.value;
-		if (phone == ''  || !state.model.recipientUserName) {
-			// 为空或者没输入用户名,不调校验
-			state.verifyMobile = true
-			return false;
-		}
-		
-		// 提交数据
-		const {
-			data
-		} = await AuthUtil.verifyPhone(state.model.recipientUserName, phone);
-		// false就是已经有这个用户名,可以登录,true是没有,不可以登录
-		if (!data || data.mobile !== phone ) {
-			state.mobileErrorMsg = t('wallet.username_phone_mismatch')
-			state.verifyMobile = true
-		} else {
-			state.mobileErrorMsg = ''
-			state.model.recipientUserId = data.id
-			state.verifyMobile = false
-		}
+});
+const canUseConsumptionPoints = computed(() => {
+	if (state.model.integralType == 1) {
+		return points2point(userWallet.value.integralDO.redCurrentQuota);
+	} else if (state.model.integralType == 2) {
+		return points2point(userWallet.value.integralDO.yellowCurrentQuota);
+	} else if (state.model.integralType == 3) {
+		return points2point(userWallet.value.integralDO.greenCurrentQuota);
 	}
-	
-	async function validateInput(value) {
-		// 确保输入是整数
-		const intValue = parseInt(value);
-		const strPoints = value.toString()
-		const [integerPart, decimalPart] = strPoints.split('.')
-		if (decimalPart) {
-			const points = parseFloat(`${integerPart}.${decimalPart.slice(0, 2)}`);
-			// 使用 nextTick 确保 DOM 更新
-			nextTick(() => {
-				state.model.consumptionPoints = integerPart;
-			});
-		}
-		
-		if (intValue > parseInt(canUseConsumptionPoints.value)) {
-			nextTick(() => {
-				state.model.consumptionPoints = parseInt(canUseConsumptionPoints.value); 
-			});
-
-		} else {
-			nextTick(() => {
-				state.model.consumptionPoints = intValue; 
-			});
-		}
+	return 0;
+});
+let lastUsername = ref('')
+async function verifyUsername(e) {
+	const username = e.detail.value;
+	if (username == lastUsername.value) return;
+	if (username == '') {
+		state.verifyUsername = true
+		return false;
+	} else if (username === userInfo.value.username) {
+		state.usernameErrorMsg = t('wallet.recipient_cannot_be_self')
+		return false;
+	}
+	lastUsername.value = username
+	// 提交数据
+	const {
+		data
+	} = await AuthUtil.verifyUsername(username);
+	if (data) {
+		state.usernameErrorMsg = t('wallet.user_does_not_exist')
+	} else {
+		state.usernameErrorMsg = ''
+	}
+	state.verifyUsername = data
+}
+
+async function verifyPhone(e) {
+	const phone = e.detail.value;
+	if (phone == '' || !state.model.recipientUserName) {
+		// 为空或者没输入用户名,不调校验
+		state.verifyMobile = true
+		return false;
 	}
 
-	// 提交审核
-	const FormRef = ref(null);
-	const onSubmit = async () => {
-		
-		if(state.model.recipientUserName === userInfo.value.username){
-			uni.showToast({
-				title: t('wallet.cannot_transfer_to_self'),
-				icon: 'none',
-				duration: 2000
-			})
-			return;
-		}else if (state.verifyUsername ) {
-			return;
-		}else if(state.verifyMobile ){
-			return;
-		}
-		// 参数校验
-		const validate = await unref(FormRef)
-			.validate()
-			.catch((error) => {
-				console.log('error: ', error);
-			});
-		if (!validate) {
-			return;
-		}
+	// 提交数据
+	const {
+		data
+	} = await AuthUtil.verifyPhone(state.model.recipientUserName, phone);
+	// false就是已经有这个用户名,可以登录,true是没有,不可以登录
+	if (!data || data.mobile !== phone) {
+		state.mobileErrorMsg = t('wallet.username_phone_mismatch')
+		state.verifyMobile = true
+	} else {
+		state.mobileErrorMsg = ''
+		state.model.recipientUserId = data.id
+		state.verifyMobile = false
+	}
+}
+
+async function validateInput(value) {
+	// 确保输入是整数
+	const intValue = parseInt(value);
+	const strPoints = value.toString()
+	const [integerPart, decimalPart] = strPoints.split('.')
+	if (decimalPart) {
+		const points = parseFloat(`${integerPart}.${decimalPart.slice(0, 2)}`);
+		// 使用 nextTick 确保 DOM 更新
+		nextTick(() => {
+			state.model.consumptionPoints = integerPart;
+		});
+	}
+
+	if (intValue > parseInt(canUseConsumptionPoints.value)) {
+		nextTick(() => {
+			state.model.consumptionPoints = parseInt(canUseConsumptionPoints.value);
+		});
+
+	} else {
+		nextTick(() => {
+			state.model.consumptionPoints = intValue;
+		});
+	}
+}
+
+// 提交审核
+const FormRef = ref(null);
+const onSubmit = async () => {
+
+	if (state.model.recipientUserName === userInfo.value.username) {
+		uni.showToast({
+			title: t('wallet.cannot_transfer_to_self'),
+			icon: 'none',
+			duration: 2000
+		})
+		return;
+	} else if (state.verifyUsername) {
+		return;
+	} else if (state.verifyMobile) {
+		return;
+	}
+	// 参数校验
+	const validate = await unref(FormRef)
+		.validate()
+		.catch((error) => {
+			console.log('error: ', error);
+		});
+	if (!validate) {
+		return;
+	}
+
+	showInputPayPassword(async (password) => {
+		state.model.payPassword = password
 		const {
 			data,
 			code
 		} = await ConsumptionApi.createConsumptionLog(state.model);
 		if (code === 0) {
-			showWalletModal({msg:t('wallet.transfer_successful')})
+			sheep.$helper.toast(t('wallet.transfer_successful'))
 			uni.$emit('consumptionTransfersComplete');
 			sheep.$router.redirect('/pages/user/wallet/score')
 		}
-	}
-
-	const isLogin = computed(() => sheep.$store('user').isLogin);
-	// 监听到在这个页面登陆,并刷新页面
-	watch(
-		() => isLogin.value,
-		(newVal) => {
-			if (newVal) {
-				window.location.reload()
-			}
-		}, {
-			deep: true, // 深度监听
-		},
-	);
-	
-	onLoad(async (options) => {
-		if (!isLogin.value) {
-			showAuthModal();
+	})
+}
+
+const isLogin = computed(() => sheep.$store('user').isLogin);
+// 监听到在这个页面登陆,并刷新页面
+watch(
+	() => isLogin.value,
+	(newVal) => {
+		if (newVal) {
+			window.location.reload()
 		}
-		state.model.smsCodeUseReqDTO.mobile = userInfo.value.mobile
-	});
+	}, {
+	deep: true, // 深度监听
+},
+);
+
+onLoad(async (options) => {
+	if (!isLogin.value) {
+		showAuthModal();
+	}
+});
 </script>
 
 <style lang="scss" scoped>
-	.code-btn-start {
-
-		width: 158rpx;
-		height: 56rpx;
-		line-height: normal;
-		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 28rpx;
-		font-size: 26rpx;
-		font-weight: 500;
-		color: #fff;
-
-	}
-
-	.disabled {
-		border: 1px solid #f7f7f7;
-		background: gainsboro !important;
-	}
-
-	.icon {
-		display: flex;
-		align-items: center;
-		margin-right: 7rpx
-	}
-
-	.icon image {
-		width: 35rpx;
-		height: 35rpx;
+:deep(.uni-forms-item__content) {
+	display: flex;
+	align-items: center;
+	flex: 1;
+}
+
+.code-btn-start {
+
+	width: 158rpx;
+	height: 56rpx;
+	line-height: normal;
+	background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 28rpx;
+	font-size: 26rpx;
+	font-weight: 500;
+	color: #fff;
+
+}
+
+.disabled {
+	border: 1px solid #f7f7f7;
+	background: gainsboro !important;
+}
+
+.icon {
+	display: flex;
+	align-items: center;
+	margin-right: 7rpx
+}
+
+.icon image {
+	width: 35rpx;
+	height: 35rpx;
+}
+
+:deep() {
+
+	.file-picker__progress {
+		height: 0 !important;
 	}
 
-	:deep() {
-
-		.file-picker__progress {
-			height: 0 !important;
-		}
-
-		.uni-list-item__content-title {
-			font-size: 28rpx !important;
-			color: #333333 !important;
-			line-height: normal !important;
-		}
-
-		.uni-icons {
-			font-size: 40rpx !important;
-		}
-
-		.is-disabled {
-			color: #333333;
-		}
+	.uni-list-item__content-title {
+		font-size: 28rpx !important;
+		color: #333333 !important;
+		line-height: normal !important;
 	}
 
-	:deep(.disabled) {
-		opacity: 1;
+	.uni-icons {
+		font-size: 40rpx !important;
 	}
 
-	.gender-name {
-		font-size: 28rpx;
-		font-weight: 500;
-		line-height: normal;
+	.is-disabled {
 		color: #333333;
 	}
-
-	.title-box {
-		font-size: 28rpx;
-		font-weight: 500;
-		color: #666666;
-		line-height: 100rpx;
-	}
-
-	.btn {
-		width: 710rpx;
-		height: 80rpx;
-		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 40rpx;
-		font-size: 30rpx;
-		font-weight: 500;
-		color: $white;
-	}
-
-	.btn-two {
-		width: 310rpx;
-		height: 80rpx;
-		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 40rpx;
-		font-size: 30rpx;
+}
+
+:deep(.disabled) {
+	opacity: 1;
+}
+
+.gender-name {
+	font-size: 28rpx;
+	font-weight: 500;
+	line-height: normal;
+	color: #333333;
+}
+
+.title-box {
+	font-size: 28rpx;
+	font-weight: 500;
+	color: #666666;
+	line-height: 100rpx;
+}
+
+.btn {
+	width: 710rpx;
+	height: 80rpx;
+	background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 40rpx;
+	font-size: 30rpx;
+	font-weight: 500;
+	color: $white;
+}
+
+.btn-two {
+	width: 310rpx;
+	height: 80rpx;
+	background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 40rpx;
+	font-size: 30rpx;
+	font-weight: 500;
+	color: $white;
+}
+
+.radio-dark {
+	filter: grayscale(100%);
+	filter: gray;
+	opacity: 0.4;
+}
+
+.content-img {
+	border-radius: 50%;
+}
+
+.header-box-content {
+	position: relative;
+	width: 160rpx;
+	height: 160rpx;
+	overflow: hidden;
+	border-radius: 50%;
+}
+
+.avatar-action {
+	position: absolute;
+	left: 50%;
+	transform: translateX(-50%);
+	bottom: 0;
+	z-index: 1;
+	width: 160rpx;
+	height: 46rpx;
+	background: rgba(#000000, 0.3);
+
+	.avatar-action-btn {
+		width: 160rpx;
+		height: 46rpx;
 		font-weight: 500;
-		color: $white;
-	}
-
-	.radio-dark {
-		filter: grayscale(100%);
-		filter: gray;
-		opacity: 0.4;
+		font-size: 24rpx;
+		color: #ffffff;
 	}
-
-	.content-img {
-		border-radius: 50%;
+}
+
+// 绑定项
+.account-list {
+	background-color: $white;
+	height: 100rpx;
+	padding: 0 20rpx;
+
+	.list-img {
+		width: 40rpx;
+		height: 40rpx;
+		margin-right: 10rpx;
 	}
 
-	.header-box-content {
-		position: relative;
-		width: 160rpx;
-		height: 160rpx;
-		overflow: hidden;
-		border-radius: 50%;
+	.list-name {
+		font-size: 28rpx;
+		color: #333333;
 	}
 
-	.avatar-action {
-		position: absolute;
-		left: 50%;
-		transform: translateX(-50%);
-		bottom: 0;
-		z-index: 1;
-		width: 160rpx;
-		height: 46rpx;
-		background: rgba(#000000, 0.3);
-
-		.avatar-action-btn {
-			width: 160rpx;
-			height: 46rpx;
-			font-weight: 500;
-			font-size: 24rpx;
-			color: #ffffff;
+	.info {
+		.avatar {
+			width: 38rpx;
+			height: 38rpx;
+			border-radius: 50%;
+			overflow: hidden;
 		}
-	}
-
-	// 绑定项
-	.account-list {
-		background-color: $white;
-		height: 100rpx;
-		padding: 0 20rpx;
 
-		.list-img {
-			width: 40rpx;
-			height: 40rpx;
-			margin-right: 10rpx;
-		}
-
-		.list-name {
+		.name {
 			font-size: 28rpx;
-			color: #333333;
+			font-weight: 400;
+			color: $dark-9;
 		}
+	}
 
-		.info {
-			.avatar {
-				width: 38rpx;
-				height: 38rpx;
-				border-radius: 50%;
-				overflow: hidden;
-			}
-
-			.name {
-				font-size: 28rpx;
-				font-weight: 400;
-				color: $dark-9;
-			}
+	.bind-box {
+		width: 100rpx;
+		height: 50rpx;
+		line-height: normal;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 24rpx;
+
+		.bind-btn {
+			width: 100%;
+			height: 100%;
+			border-radius: 25rpx;
+			background: #f4f4f4;
+			color: #999999;
 		}
 
-		.bind-box {
-			width: 100rpx;
-			height: 50rpx;
-			line-height: normal;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			font-size: 24rpx;
-
-			.bind-btn {
-				width: 100%;
-				height: 100%;
-				border-radius: 25rpx;
-				background: #f4f4f4;
-				color: #999999;
-			}
-
-			.relieve-btn {
-				width: 100%;
-				height: 100%;
-				border-radius: 25rpx;
-				background: var(--ui-BG-Main-opacity-1);
-				color: var(--ui-BG-Main);
-			}
+		.relieve-btn {
+			width: 100%;
+			height: 100%;
+			border-radius: 25rpx;
+			background: var(--ui-BG-Main-opacity-1);
+			color: var(--ui-BG-Main);
 		}
 	}
-
-	.list-border {
-		font-size: 28rpx;
-		font-weight: 400;
-		color: #333333;
-		border-bottom: 2rpx solid #eeeeee;
-	}
-
-	image {
-		width: 100%;
-		height: 100%;
-	}
+}
+
+.list-border {
+	font-size: 28rpx;
+	font-weight: 400;
+	color: #333333;
+	border-bottom: 2rpx solid #eeeeee;
+}
+
+image {
+	width: 100%;
+	height: 100%;
+}
 </style>

+ 60 - 45
pages/user/wallet/score.vue

@@ -1,86 +1,101 @@
-<!-- 我的佣金 -->
+<!-- 钱包 -->
 <template>
 	<s-layout class="wallet-wrap" :bgStyle="{'backgroundColor':'#ffffff'}" :title="t('wallet.wallet')" navbar="normal">
 		<view class="score-box bg-white ss-flex-col ss-row-center ss-col-center">
-			<view class="ss-flex ss-m-y-30 w-100">
+			
+			<view class="ss-flex ss-m-t-30 w-100">
 				<view class="ss-flex"  style="flex-direction: column;flex:1;border-right:1px solid #f6f6f6">
-					<view class="ss-m-b-10  circle value-box ss-flex ss-row-center" :style="circleStyle">
-						<view>{{ t('wallet.commission') }}</view>
+					<view class="ss-m-b-10  circle value-box ss-flex ss-row-center" style="background:#fc000f">
+						<view style="color:#fc000f">{{ t('wallet.红积分') }}</view>
 					</view>
-					<view class="ss-m-b-30 ss-font-40" :style="{color:percentageColor}">
-						<text class="all-title ss-m-r-8">{{ points2point(userWallet.integralDO.currentQuota) }}</text>
+					<view class="ss-m-b-30 ss-font-40  text-center" style="color:#fc000f">
+						<text class="all-title ss-m-r-8">{{ points2point(userWallet.integralDO.redCurrentQuota) }}</text>
 					</view>
-					<view class="ss-flex">
-						<view class="all-title ss-m-r-8">
-							<button class="btn ss-reset-button" @tap="sheep.$router.go('/pages/user/wallet/withdraw')">
-								{{ t('wallet.withdraw') }}
-							</button>
-						</view>
-						<view class="all-title ss-m-r-8">
-							<button class="btn ss-reset-button" @tap="sheep.$router.go('/pages/user/wallet/scoreToConsumption')">
-								{{ t('wallet.transfer_points') }}
-							</button>
-						</view>
+					
+				</view>
+				<view class="ss-flex"  style="flex-direction: column;flex:1;border-right:1px solid #f6f6f6">
+					<view class="ss-m-b-10  circle value-box ss-flex ss-row-center" style="background:#ecb80b">
+						<view style="color:#ecb80b">{{ t('wallet.黄积分') }}</view>
+					</view>
+					<view class="ss-m-b-30 ss-font-40  text-center" style="color:#ecb80b">
+						<text class="all-title ss-m-r-8">{{ points2point(userWallet.integralDO.yellowCurrentQuota) }}</text>
 					</view>
+					
 				</view>
 				<view class="ss-flex" style="flex-direction: column;flex:1;">
 					<view class="ss-m-b-10  circle value-box ss-flex ss-row-center" style="background:#0c912f">
-						<view>{{ t('wallet.consumption_points') }}</view>
+						<view  style="color:#0c912f">{{ t('wallet.绿积分') }}</view>
 					</view>
-					<view class="ss-m-b-30 ss-font-40" style="color:#0c912f">
-						<text class="all-title ss-m-r-8">{{ points2point(userWallet.integralDO.consumptionPoints) }}</text>
-					</view>
-					<view class="ss-flex">
-						<view class="all-title ss-m-x-8" >
-							<button class="btn ss-reset-button" @tap="sheep.$router.go('/pages/user/wallet/topupConsumptionPoints')">
-								{{ t('wallet.recharge') }}
-							</button>
-						</view>
-						<view class="all-title ss-m-x-8">
-							
-							<button class="btn ss-reset-button" @tap="sheep.$router.go('/pages/user/wallet/consumptionTransfers')">
-								{{ t('wallet.points_transfer') }}
-							</button>
-						</view>
+					<view class="ss-m-b-30 ss-font-40  text-center" style="color:#0c912f">
+						<text class="all-title ss-m-r-8">{{ points2point(userWallet.integralDO.greenCurrentQuota) }}</text>
 					</view>
+					
+				</view>
+			</view>
+			
+			<view class="ss-flex ss-m-b-30">
+				
+				<view class="all-title ss-m-x-8">
+					<button class="btn ss-reset-button"  @tap="sheep.$router.go('/pages/user/wallet/scoreToConsumption')">
+						{{ t('wallet.积分转换') }}
+					</button>
+				</view>
+				<view class="all-title ss-m-x-8" >
+					<button class="btn ss-reset-button"  @tap="sheep.$router.go('/pages/user/wallet/consumptionTransfers')">
+						{{ t('wallet.积分转让') }}
+					</button>
 				</view>
 			</view>
+			
 			<!-- 分割线 -->
 			<view style="width: 100%;height: 20rpx;background-color: #ececec;"></view>
 			<uni-list :border="false" class="ss-p-t-10 ss-w-100">
-				<uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/maxScoreLog')" title="当前可获得峰值"
+				<!-- <uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/maxScoreLog')" title="当前可获得峰值"
 					showArrow :border="false">
 					<template v-slot:body>
 						<p style="width: 100%">
 							{{t('wallet.current_peak')+ points2point(userWallet.integralDO.accumulatedQuota + userWallet.integralDO.ancestorQuota) }}/{{ points2point(userWallet.integralDO.highQuotaTotal) }}
 						</p>
 					</template>
-				</uni-list-item>
+				</uni-list-item> -->
 				<!-- <uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/ScoreLog', {isFreeze: true})"
 					title="待确权" showArrow :border="false">
 					<template v-slot:body>
 						<p style="width: 100%">待确权:{{points2point(userWallet.integralDO.freezeQuota)}}</p>
 					</template>
 				</uni-list-item> -->
-				<uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/ScoreLog',{isFreeze: false})"
-					title="佣金记录" showArrow :border="false">
+				<uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/consumptionLog')"
+					title="峰值记录" showArrow :border="false">
 					<template v-slot:body>
-						<p style="width: 100%">{{ t('wallet.commission_record') }}</p>
+						<p style="width: 100%">{{ t('wallet.峰值记录') }}  {{ points2point(userWallet.integralDO.accumulatedQuota  + userWallet.integralDO.ancestorQuota + userWallet.integralDO.luckyQuota)   }}/{{ points2point(userWallet.integralDO.highQuotaTotal)}}</p>
 					</template>
 				</uni-list-item>
-				<uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/consumptionLog')"
-					title="消费分记录" showArrow :border="false">
+				<uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/consumptionLog',{integralType: 1})"
+					title="红积分记录" showArrow :border="false">
 					<template v-slot:body>
-						<p style="width: 100%">{{ t('wallet.points_record') }}</p>
+						<p style="width: 100%">{{ t('wallet.红积分记录') }}</p>
 					</template>
 				</uni-list-item>
+				<uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/consumptionLog',{integralType: 2})"
+					title="黄积分记录" showArrow :border="false">
+					<template v-slot:body>
+						<p style="width: 100%">{{ t('wallet.黄积分记录') }}</p>
+					</template>
+				</uni-list-item>
+				<uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/consumptionLog',{integralType: 3})"
+					title="绿积分记录" showArrow :border="false">
+					<template v-slot:body>
+						<p style="width: 100%">{{ t('wallet.绿积分记录') }}</p>
+					</template>
+				</uni-list-item>
+				
 				<!-- <uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/consumptionTransfersLog')"
 					title="消费分转账" showArrow :border="false">
 					<template v-slot:body>
 						<p style="width: 100%">消费分转账</p>
 					</template>
 				</uni-list-item> -->
-				<uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/withdrawalLog')" title="提现记录"
+				<!-- <uni-list-item clickable @tap="sheep.$router.go('/pages/user/wallet/withdrawalLog')" title="提现记录"
 					showArrow :border="false">
 					<template v-slot:body>
 						<p style="width: 100%">{{ t('wallet.withdrawal') }}</p>
@@ -90,7 +105,7 @@
 					<template v-slot:body>
 						<p style="width: 100%">{{ t('wallet.commission_rules') }}</p>
 					</template>
-				</uni-list-item>
+				</uni-list-item> -->
 			</uni-list>
 
 		</view>
@@ -271,8 +286,8 @@
 	}
 
 	.value-box {
-		width: 150rpx;
-		height: 150rpx;
+		width: 160rpx;
+		height: 160rpx;
 		text-align: center;
 		border-radius: 50%;
 		font-weight: bold;

+ 331 - 296
pages/user/wallet/scoreToConsumption.vue

@@ -1,22 +1,31 @@
 <template>
-	<s-layout class="set-wrap" :title="t('wallet.commission_to_points')" :bgStyle="{ color: '#FFF' }">
+	<s-layout class="set-wrap" :title="t('wallet.积分转换')" :bgStyle="{ color: '#FFF' }">
 		<uni-forms :model="state.model" :rules="state.rules" validateTrigger="bind" labelPosition="left" border
 			class="form-box" labelWidth='200' ref="FormRef">
 			<view class="bg-white ss-p-x-30">
-				<uni-forms-item name="quota" :label="t('wallet.consumption_points')" :required="true">
-					<uni-easyinput v-model="state.model.quota" type="number"
-						:placeholder="t('wallet.enter_transfer_amount')" :inputBorder="false" :clearable="false" @input="validateInput" />
+				<uni-forms-item name="integralType" :label="t('wallet.积分转换类型')" :required="true">
+					<uni-data-picker v-model="state.model.integralType"
+						:localdata="state.data" placeholder="请选择类型"
+						style="width: 100%;" />
 				</uni-forms-item>
+				<template v-if="state.model.integralType">
+					<uni-forms-item name="quota" :label="t('wallet.积分')" :required="true">
+						<uni-easyinput v-model="state.model.quota" type="number" :placeholder="t('wallet.请输入转换积分')"
+							:inputBorder="false" :clearable="false" @input="validateInput" />
+					</uni-forms-item>
+				</template>
 
 
 			</view>
 		</uni-forms>
 		<view class="ss-flex ss-row-center ss-col-center ss-m-t-30">
-			{{t('wallet.current_commission_available')}}:<text class="text-red">{{currentQuota}}</text>
+			<template v-if="state.model.integralType">
+				{{ t('wallet.current_commission_available') }}:<text class="text-red">{{ currentQuota }}</text>
+			</template>
 			<!-- <button class="ss-m-l-10 all-btn " @click="useAllPonints">全部</button> -->
 
 		</view>
-		<su-fixed bottom placeholder bg="none">
+		<su-fixed bottom placeholder bg="none" v-if="state.model.integralType">
 			<view class="footer-box ss-p-20 ss-flex">
 				<button class="ss-rest-button btn" @tap="onSubmit">{{ t('common.confirm') }}</button>
 			</view>
@@ -27,109 +36,128 @@
 
 
 <script setup>
-	import {
-		computed,
-		reactive,
-		onBeforeMount,
-		ref,
-		unref,
-		watch,
-		nextTick
-	} from 'vue';
-	import sheep from '@/sheep';
-	import {
-		clone
-	} from 'lodash';
-	import {
-		onLoad
-	} from '@dcloudio/uni-app';
-	import {
-		points2point
-	} from '@/sheep/hooks/useGoods';
-	import {
-		email
-	} from '@/sheep/validate/form';
-
-	import AuthUtil from '@/sheep/api/member/auth';
-	import ConsumptionApi from '@/sheep/api/distri/consumption';
-	import {
-		showAuthModal,
-	} from '@/sheep/hooks/useModal';
-	import { t } from '@/locale'
-	const userInfo = computed(() => sheep.$store('user').userInfo);
-	const userWallet = computed(() => sheep.$store('user').userWallet);
-	const state = reactive({
-
-		model: {
-			quota: undefined,
-		},
-		rules: {
-			quota: {
-				rules: [{
-					required: true,
-					errorMessage: t('wallet.transfer_amount_cannot_be_empty'),
-				}, 
-				{
-				  validateFunction: function (rule, value, data, callback) {
-				    if (value<=0) {
-				      callback(t('wallet.transfer_amount_cannot_be_zero'));
-				    }
-				    return true;
-				  },
+import {
+	computed,
+	reactive,
+	onBeforeMount,
+	ref,
+	unref,
+	watch,
+	nextTick
+} from 'vue';
+import sheep from '@/sheep';
+import {
+	clone
+} from 'lodash';
+import {
+	onLoad
+} from '@dcloudio/uni-app';
+import {
+	points2point
+} from '@/sheep/hooks/useGoods';
+import {
+	email
+} from '@/sheep/validate/form';
+
+import AuthUtil from '@/sheep/api/member/auth';
+import ConsumptionApi from '@/sheep/api/distri/consumption';
+import {
+	showAuthModal,
+	showInputPayPassword
+} from '@/sheep/hooks/useModal';
+import { t } from '@/locale'
+const userInfo = computed(() => sheep.$store('user').userInfo);
+const userWallet = computed(() => sheep.$store('user').userWallet);
+console.log(userWallet.value.categoryId)
+const typeOptions = computed(() => {
+  const options = []
+  // 只有 categoryId 为 3 时才显示红转绿选项
+  if (userWallet.value.categoryId === 3) {
+    options.push({ value: 1, text: t('wallet.红转绿') })
+  }
+  // 黄转红选项始终存在
+  options.push({ value: 2, text: t('wallet.黄转红') })
+  
+  return options
+})
+const state = reactive({
+	data: typeOptions,
+	model: {
+		quota: undefined,
+		integralType: undefined,
+	},
+	rules: {
+		quota: {
+			rules: [{
+				required: true,
+				errorMessage: t('wallet.transfer_amount_cannot_be_empty'),
+			},
+			{
+				validateFunction: function (rule, value, data, callback) {
+					if (value <= 0) {
+						callback(t('wallet.transfer_amount_cannot_be_zero'));
+					}
+					return true;
 				},
-				],
 			},
-		}
-	});
-	const currentQuota = computed(() => points2point(userWallet.value.integralDO.currentQuota));
-	
-	async function validateInput(value) {
-		// 确保输入是整数
-		const intValue = parseInt(value);
-		const strPoints = value.toString()
-		const [integerPart, decimalPart] = strPoints.split('.')
-		if (decimalPart) {
-			nextTick(() => {
-				state.model.quota = integerPart;
-			});
-		}
-		
-		if (intValue > parseInt(currentQuota.value)) {
-			nextTick(() => {
-				state.model.quota = parseInt(currentQuota.value); 
-			});
-
-		} else {
-			nextTick(() => {
-				state.model.quota = intValue; 
-			});
-		}
+			],
+		},
+	}
+});
+const currentQuota = computed(() => {
+	if (state.model.integralType == 1) {
+		return points2point(userWallet.value.integralDO.redCurrentQuota);
+	} else {
+		return points2point(userWallet.value.integralDO.yellowCurrentQuota);
+	}
+});
+
+async function validateInput(value) {
+	// 确保输入是整数
+	const intValue = parseInt(value);
+	const strPoints = value.toString()
+	const [integerPart, decimalPart] = strPoints.split('.')
+	if (decimalPart) {
+		nextTick(() => {
+			state.model.quota = integerPart;
+		});
 	}
 
-	// 提交审核
-	const FormRef = ref(null);
-	const onSubmit = async () => {
-		// 参数校验
-		const validate = await unref(FormRef)
-			.validate()
-			.catch((error) => {
-				console.log('error: ', error);
-			});
-		if (!validate) {
-			return;
-		}
-		uni.showModal({
-			title: t('setting.prompt'),
-			content: t('wallet.commission_to_points_irreversible'),
-			
-			success: async function(res) {
-				if (!res.confirm) {
-					return;
-				}
-				const {
-					data,
-					code
-				} = await ConsumptionApi.quotaTransition(state.model.quota);
+	if (intValue > parseInt(currentQuota.value)) {
+		nextTick(() => {
+			state.model.quota = parseInt(currentQuota.value);
+		});
+
+	} else {
+		nextTick(() => {
+			state.model.quota = intValue;
+		});
+	}
+}
+
+// 提交审核
+const FormRef = ref(null);
+const onSubmit = async () => {
+	// 参数校验
+	const validate = await unref(FormRef)
+		.validate()
+		.catch((error) => {
+			console.log('error: ', error);
+		});
+	if (!validate) {
+		return;
+	}
+	uni.showModal({
+		title: t('setting.prompt'),
+		content: t('wallet.转换后不可逆,是否继续'),
+
+		success: function (res) {
+			if (!res.confirm) {
+				return;
+			}
+			showInputPayPassword(async (password) => {
+				state.model.payPassword = password
+				const { data, code } = await ConsumptionApi.quotaTransition(state.model);
 				if (code === 0) {
 					uni.showToast({
 						title: t('wallet.conversion_successful'),
@@ -139,224 +167,231 @@
 					uni.$emit('consumptionTransfersComplete');
 					sheep.$router.redirect('/pages/user/wallet/score')
 				}
-			},
-		});
-		
-	}
-
-	const isLogin = computed(() => sheep.$store('user').isLogin);
-	// 监听到在这个页面登陆,并刷新页面
-	watch(
-		() => isLogin.value,
-		(newVal) => {
-			if (newVal) {
-				window.location.reload()
-			}
-		}, {
-			deep: true, // 深度监听
-		},
-	);
-
-	onLoad(async (options) => {
-		if (!isLogin.value) {
-			showAuthModal();
+			})
 		}
 	});
-</script>
-
-<style lang="scss" scoped>
-	.code-btn-start {
-
-		width: 158rpx;
-		height: 56rpx;
-		line-height: normal;
-		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 28rpx;
-		font-size: 26rpx;
-		font-weight: 500;
-		color: #fff;
-
-	}
-
-	.disabled {
-		border: 1px solid #f7f7f7;
-	}
-
-	.icon {
-		display: flex;
-		align-items: center;
-		margin-right: 7rpx
-	}
-
-	.icon image {
-		width: 35rpx;
-		height: 35rpx;
-	}
-
-	:deep() {
-
-		.file-picker__progress {
-			height: 0 !important;
-		}
-
-		.uni-list-item__content-title {
-			font-size: 28rpx !important;
-			color: #333333 !important;
-			line-height: normal !important;
-		}
 
-		.uni-icons {
-			font-size: 40rpx !important;
-		}
+}
 
-		.is-disabled {
-			color: #333333;
+const isLogin = computed(() => sheep.$store('user').isLogin);
+// 监听到在这个页面登陆,并刷新页面
+watch(
+	() => isLogin.value,
+	(newVal) => {
+		if (newVal) {
+			window.location.reload()
 		}
+	}, {
+	deep: true, // 深度监听
+},
+);
+
+onLoad(async (options) => {
+	if (!isLogin.value) {
+		showAuthModal();
 	}
+});
+</script>
 
-	:deep(.disabled) {
-		opacity: 1;
+<style lang="scss" scoped>
+:deep(.uni-forms-item__content) {
+	display: flex;
+	align-items: center;
+	flex: 1;
+}
+
+.code-btn-start {
+
+	width: 158rpx;
+	height: 56rpx;
+	line-height: normal;
+	background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 28rpx;
+	font-size: 26rpx;
+	font-weight: 500;
+	color: #fff;
+
+}
+
+.disabled {
+	border: 1px solid #f7f7f7;
+}
+
+.icon {
+	display: flex;
+	align-items: center;
+	margin-right: 7rpx
+}
+
+.icon image {
+	width: 35rpx;
+	height: 35rpx;
+}
+
+:deep() {
+
+	.file-picker__progress {
+		height: 0 !important;
 	}
 
-	.gender-name {
-		font-size: 28rpx;
-		font-weight: 500;
-		line-height: normal;
-		color: #333333;
+	.uni-list-item__content-title {
+		font-size: 28rpx !important;
+		color: #333333 !important;
+		line-height: normal !important;
 	}
 
-	.title-box {
-		font-size: 28rpx;
-		font-weight: 500;
-		color: #666666;
-		line-height: 100rpx;
+	.uni-icons {
+		font-size: 40rpx !important;
 	}
 
-	.btn {
-		width: 710rpx;
-		height: 80rpx;
-		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 40rpx;
-		font-size: 30rpx;
-		font-weight: 500;
-		color: $white;
+	.is-disabled {
+		color: #333333;
 	}
-
-	.btn-two {
-		width: 310rpx;
-		height: 80rpx;
-		background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 40rpx;
-		font-size: 30rpx;
+}
+
+:deep(.disabled) {
+	opacity: 1;
+}
+
+.gender-name {
+	font-size: 28rpx;
+	font-weight: 500;
+	line-height: normal;
+	color: #333333;
+}
+
+.title-box {
+	font-size: 28rpx;
+	font-weight: 500;
+	color: #666666;
+	line-height: 100rpx;
+}
+
+.btn {
+	width: 710rpx;
+	height: 80rpx;
+	background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 40rpx;
+	font-size: 30rpx;
+	font-weight: 500;
+	color: $white;
+}
+
+.btn-two {
+	width: 310rpx;
+	height: 80rpx;
+	background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 40rpx;
+	font-size: 30rpx;
+	font-weight: 500;
+	color: $white;
+}
+
+.radio-dark {
+	filter: grayscale(100%);
+	filter: gray;
+	opacity: 0.4;
+}
+
+.content-img {
+	border-radius: 50%;
+}
+
+.header-box-content {
+	position: relative;
+	width: 160rpx;
+	height: 160rpx;
+	overflow: hidden;
+	border-radius: 50%;
+}
+
+.avatar-action {
+	position: absolute;
+	left: 50%;
+	transform: translateX(-50%);
+	bottom: 0;
+	z-index: 1;
+	width: 160rpx;
+	height: 46rpx;
+	background: rgba(#000000, 0.3);
+
+	.avatar-action-btn {
+		width: 160rpx;
+		height: 46rpx;
 		font-weight: 500;
-		color: $white;
+		font-size: 24rpx;
+		color: #ffffff;
 	}
-
-	.radio-dark {
-		filter: grayscale(100%);
-		filter: gray;
-		opacity: 0.4;
-	}
-
-	.content-img {
-		border-radius: 50%;
-	}
-
-	.header-box-content {
-		position: relative;
-		width: 160rpx;
-		height: 160rpx;
-		overflow: hidden;
-		border-radius: 50%;
+}
+
+// 绑定项
+.account-list {
+	background-color: $white;
+	height: 100rpx;
+	padding: 0 20rpx;
+
+	.list-img {
+		width: 40rpx;
+		height: 40rpx;
+		margin-right: 10rpx;
 	}
 
-	.avatar-action {
-		position: absolute;
-		left: 50%;
-		transform: translateX(-50%);
-		bottom: 0;
-		z-index: 1;
-		width: 160rpx;
-		height: 46rpx;
-		background: rgba(#000000, 0.3);
-
-		.avatar-action-btn {
-			width: 160rpx;
-			height: 46rpx;
-			font-weight: 500;
-			font-size: 24rpx;
-			color: #ffffff;
-		}
+	.list-name {
+		font-size: 28rpx;
+		color: #333333;
 	}
 
-	// 绑定项
-	.account-list {
-		background-color: $white;
-		height: 100rpx;
-		padding: 0 20rpx;
-
-		.list-img {
-			width: 40rpx;
-			height: 40rpx;
-			margin-right: 10rpx;
+	.info {
+		.avatar {
+			width: 38rpx;
+			height: 38rpx;
+			border-radius: 50%;
+			overflow: hidden;
 		}
 
-		.list-name {
+		.name {
 			font-size: 28rpx;
-			color: #333333;
+			font-weight: 400;
+			color: $dark-9;
 		}
+	}
 
-		.info {
-			.avatar {
-				width: 38rpx;
-				height: 38rpx;
-				border-radius: 50%;
-				overflow: hidden;
-			}
-
-			.name {
-				font-size: 28rpx;
-				font-weight: 400;
-				color: $dark-9;
-			}
+	.bind-box {
+		width: 100rpx;
+		height: 50rpx;
+		line-height: normal;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 24rpx;
+
+		.bind-btn {
+			width: 100%;
+			height: 100%;
+			border-radius: 25rpx;
+			background: #f4f4f4;
+			color: #999999;
 		}
 
-		.bind-box {
-			width: 100rpx;
-			height: 50rpx;
-			line-height: normal;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			font-size: 24rpx;
-
-			.bind-btn {
-				width: 100%;
-				height: 100%;
-				border-radius: 25rpx;
-				background: #f4f4f4;
-				color: #999999;
-			}
-
-			.relieve-btn {
-				width: 100%;
-				height: 100%;
-				border-radius: 25rpx;
-				background: var(--ui-BG-Main-opacity-1);
-				color: var(--ui-BG-Main);
-			}
+		.relieve-btn {
+			width: 100%;
+			height: 100%;
+			border-radius: 25rpx;
+			background: var(--ui-BG-Main-opacity-1);
+			color: var(--ui-BG-Main);
 		}
 	}
-
-	.list-border {
-		font-size: 28rpx;
-		font-weight: 400;
-		color: #333333;
-		border-bottom: 2rpx solid #eeeeee;
-	}
-
-	image {
-		width: 100%;
-		height: 100%;
-	}
+}
+
+.list-border {
+	font-size: 28rpx;
+	font-weight: 400;
+	color: #333333;
+	border-bottom: 2rpx solid #eeeeee;
+}
+
+image {
+	width: 100%;
+	height: 100%;
+}
 </style>

+ 52 - 27
pages/user/wallet/team.vue

@@ -3,9 +3,9 @@
 	<s-layout class="wallet-wrap" :bgStyle="{'backgroundColor':'#ffffff'}" title="" navbar="normal">
 
 		<view class="model-box ss-flex-col">
-			<view class="all-title ss-p-x-45 ss-p-t-30">
+			<!-- <view class="all-title ss-p-x-45 ss-p-t-30">
 				<text style="float: right;">{{ t('team.total_people',{count:state.teamCount}) }}</text>
-			</view>
+			</view> -->
 
 			<view class="list-box" style="width: 100%;padding: 0;height: calc(100vh - 7.5rem) ;">
 				<!-- 推荐人 -->
@@ -19,35 +19,61 @@
 							</view>
 							<!-- 头像 -->
 							<view class="avatar-box ss-m-x-20">
-								<image class="avatar-img" :src="state.ancestor.avatar" mode="aspectFill"></image>
+								<image class="avatar-img" :src="state.referrerUser.avatar" mode="aspectFill"></image>
 							</view>
 							<view class="ss-flex ss-m-t-10"
 								style="flex-direction: column;align-items: flex-start;width: calc(100% - 5.5rem);">
 								<view class="name" style="width: 100%;">
 									<text
-										style="width:50%;display: inline-block;">{{ state.ancestor.username ||'昵称:'+state.ancestor.descNickName  }}</text>
-									<text class="time"
-										style="float: right;color: #666666">{{ t('team.retain_performance') }}:{{points2point(state.ancestor.residueSocial)}}</text>
+										style="width:50%;display: inline-block;">{{ state.referrerUser.username  }}</text>
+									<!-- <text class="time" style="float: right;color: #666666">{{ t('team.retain_performance') }}:{{points2point(state.referrerUser.residueSocial)}}</text> -->
 								</view>
 								<view class="time" style="width: 100%;color: #999;">
-									<text>{{state.ancestor.socialStatusLevel || "等级1" }}</text> / <text>{{t('team.referrer')}}</text>
-									<text style="float: right;"> {{ t('team.team_count',{count:state.ancestor.descendantsCount}) }}</text>
+									 <text>{{  t('team.referrer') }}</text>
+									<!-- <text style="float: right;"> {{ t('team.team_count',{count:state.ancestor.descendantsCount}) }}</text> -->
 								</view>
 							</view>
 						</view>
 					</view>
 				</view>
-				<!-- 直推人和后代 -->
+				<!-- 上级 -->
+				<!-- <view v-if="state.parentUser.username != state.referrerUser.username">
+					<view class="list-item ss-flex ss-col-center ss-row-between "
+						style="padding-top: 30rpx; padding-bottom: 0;">
+						<view class="ss-flex ss-col-center"
+							style="width: 100%;border-bottom: 1px solid #ededed;padding-bottom: 30rpx">
+							<view>
+								&nbsp;&nbsp;
+							</view>
+						
+							<view class="avatar-box ss-m-x-20">
+								<image class="avatar-img" :src="state.parentUser.avatar" mode="aspectFill"></image>
+							</view>
+							<view class="ss-flex ss-m-t-10"
+								style="flex-direction: column;align-items: flex-start;width: calc(100% - 5.5rem);">
+								<view class="name" style="width: 100%;">
+									<text
+										style="width:50%;display: inline-block;">{{ state.parentUser.username  }}</text>
+								</view>
+								<view class="time" style="width: 100%;color: #999;">
+									 <text>{{t('team.parent')}}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view> -->
+				<!-- 下级 -->
 				<view>
 					<scroll-view style="width: 100%;" scroll-y="true" @touchmove.stop>
 						<view v-if="state.descendants.total > 0">
 							<view class="list-item ss-flex ss-col-center ss-row-between "
-								v-for="(item,index)  in state.descendants.list" :key="item.id"
+								v-for="(item,index)  in state.descendants" :key="item.id"
 								style="padding-top: 30rpx ;padding-bottom: 0;">
+							
 								<view class="ss-flex ss-col-center"
 									style="width: 100%;border-bottom: 1px solid #ededed;padding-bottom: 30rpx">
 									<view>
-										{{item.sort}}
+										{{index+1}}
 									</view>
 									<!-- 头像 -->
 									<view class="avatar-box ss-m-x-20">
@@ -58,15 +84,15 @@
 										style="flex-direction: column;align-items: flex-start;width: calc(100% - 5.5rem);">
 										<view class="name" style="width: 100%;">
 											<text style="width:50%;display: inline-block;">
-												{{ item.username || '昵称:'+ item.descNickName}}</text>
-											<text class="time"
-												style="float: right;color: #666666;">{{t('team.new_performance_value')}}:{{points2point(item.residueSocial)}}</text>
-										</view>
+												{{ item.username}}</text>
+											<!-- <text class="time"
+												style="float: right;color: #666666;">{{t('team.new_performance_value')}}:{{points2point(item.residueSocial)}}</text>-->
+										</view> 
 
 										<view class="time" style="width: 100%;color: #999">
-											{{item.socialStatusLevel}} / <text>{{item.depth == 1? t('team.direct_referral') :''}}</text>
-											<text style="float: right;"> {{ t('team.team_count',{count:item.descendantsCount}) }}</text>
-
+											<!-- {{item.socialStatusLevel}} / <text>{{item.depth == 1? t('team.direct_referral') :''}}</text>
+											<text style="float: right;"> {{ t('team.team_count',{count:item.descendantsCount}) }}</text> -->
+											<text>{{t('team.descendant')}}</text>
 										</view>
 									</view>
 								</view>
@@ -122,9 +148,8 @@
 			list: []
 		},
 		teamCount: 0,
-		ancestor: {
-
-		}
+		referrerUser: {},
+		parentUser: {}
 	});
 
 
@@ -151,17 +176,17 @@
 		// 团队人员数量
 		state.teamCount = data.teamCount
 		// 直推人
-		state.ancestor = data.ancestor
+		state.referrerUser = data.referrerUser
+		state.parentUser = data.parentUser
+		state.descendants = data.descendants
 
-		let descendantsList = _.concat(state.descendants.list, data.descendants.list);
+		let descendantsList = _.concat(state.descendants.list, data.descendants);
 
 		// 后代
 		state.descendants.list = descendantsList
-		// console.log(state.descendants.list)
 
-		// state.pagination.list = data.list;
-		state.descendants.total = data.descendants.total;
-		state.pagination.total = data.descendants.total;
+		state.descendants.total = data.descendants.length;
+		state.pagination.total = data.descendants.length;
 		state.loadStatus = state.descendants.list.length < state.descendants.total ? 'more' : 'noMore';
 	}
 

+ 3 - 2
sheep/api/distri/consumption.js

@@ -37,10 +37,11 @@ const ConsumptionApi = {
 			},
 		});
 	},
-	quotaTransition: (quota) => {
+	quotaTransition: (params) => {
 		return request({
-			url: '/distri/integral/quotaTransition?quota=' + quota,
+			url: '/distri/integral/quotaTransition',
 			method: 'PUT',
+			data: params,
 			custom: {
 				showLoading: true,
 				showError: true,

+ 11 - 0
sheep/api/member/user.js

@@ -105,6 +105,17 @@ const UserApi = {
         successMsg: t('account.modification_successful')
       }
     });
+  },
+  updatePayPassword: (data) => {
+    return request({
+      url: '/member/user/update-payPassword',
+      method: 'PUT',
+      data,
+      custom: {
+        showSuccess: true,
+        successMsg: t('common.update_success')
+      }
+    });
   },
 	// 更新安卓用户的极光id
 	updateAndroidJiGuangId: (registerId) => {

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

@@ -134,6 +134,14 @@ const OrderApi = {
       data,
     });
   },
+  // 支付
+  payOrder: (data) => {
+    return request({
+      url: `/trade/order/submit`,
+      method: 'POST',
+      data,
+    });
+  },
 };
 
 export default OrderApi;

+ 13 - 6
sheep/components/s-auth-modal/components/account-login.vue

@@ -1,13 +1,13 @@
-<!-- 号密码登录 accountLogin  -->
+<!-- 手机号密码登录 accountLogin  -->
 <template>
 	<view>
 		<!-- 表单项 -->
 		<uni-forms ref="accountLoginRef" v-model="state.model" :rules="state.rules" validateTrigger="bind"
 			labelWidth="160" labelAlign="center" class="loginUniForm">
-			<uni-forms-item name="username" :label="t('account.username')" class="loginUniFormItem">
-				<uni-easyinput :placeholder="t('account.enter_username')" v-model="state.model.username" :inputBorder="false">
-				</uni-easyinput>
+			<uni-forms-item name="mobile" :label="t('account.phone_number')" class="loginUniFormItem" :error-message="state.mobileErrorMsg">
+				<phoneInternationalInput :verify-username="true" @input="mobileInput"/>
 			</uni-forms-item>
+			
 
 			<uni-forms-item name="password" :label="t('account.password')" class="loginUniFormItem">
 				<uni-easyinput type="password" :placeholder="t('account.enter_password')" v-model="state.model.password" :inputBorder="false">
@@ -33,6 +33,7 @@
 	import sheep from '@/sheep';
 	import {
 		username,
+
 		password
 	} from '@/sheep/validate/form';
 	import {
@@ -41,6 +42,12 @@
 	} from '@/sheep/hooks/useModal';
 	import AuthUtil from '@/sheep/api/member/auth';
 	import { t } from '@/locale'
+	import phoneInternationalInput from './phone-international-input.vue';
+	const mobileInput = (mobile,mobileError)=>{
+		// console.log(mobile,mobileError);
+		state.model.mobile = mobile;
+		state.mobileErrorMsg = mobileError;
+	}
 	const accountLoginRef = ref(null);
 
 	const emits = defineEmits(['onConfirm']);
@@ -55,11 +62,11 @@
 	// 数据
 	const state = reactive({
 		model: {
-			username: '', // 账号
+			mobile: '', // 账号
 			password: '', // 密码
 		},
 		rules: {
-			username,
+			
 			password,
 		},
 	});

+ 2 - 2
sheep/components/s-auth-modal/components/phone-international-input.vue

@@ -7,12 +7,12 @@
 		</view>
 	</picker>
 	<uni-easyinput :placeholder="t('account.phone_number')" v-model="state.model.mobile"  @input="verifyMobile" :inputBorder="false" type="number" 	style="float: left;width: calc(100% - 110rpx);">
-		<template v-slot:right>
+		<!-- <template v-slot:right>
 			<button class="ss-reset-button code-btn code-btn-start" :disabled="!verifyUsername || selectedCode != 86"
 				:class="{ 'disabled': !verifyUsername || selectedCode != 86}" @tap="getSmsCode('smsLogin', state.model.mobile)">
 				{{ getSmsTimer('smsLogin') }}
 			</button>
-		</template>
+		</template> -->
 	</uni-easyinput>
 
 </template>

+ 15 - 14
sheep/components/s-auth-modal/components/register.vue

@@ -13,21 +13,15 @@
 				</template>
 				</uni-easyinput>
 			</uni-forms-item>
-			<uni-forms-item name="password" :label="t('account.password')" class="loginUniFormItem">
-				<uni-easyinput type="password" :placeholder="t('account.enter_password')" v-model="state.model.password" :inputBorder="false">
+			<uni-forms-item name="password" :label="t('user.登陆密码')" class="loginUniFormItem">
+				<uni-easyinput type="password" :placeholder="t('user.请输入登陆密码')" v-model="state.model.password" :inputBorder="false">
 				</uni-easyinput>
 			</uni-forms-item>
-			
+
 			<uni-forms-item name="mobile" :label="t('account.phone_number')" class="mobile loginUniFormItem ss-p-t-10" :error-message="state.mobileErrorMsg">
 				<phoneInternationalInput :verify-username="state.verifyUsername" @input="mobileInput"/>
 			</uni-forms-item>
-
-			<uni-forms-item name="code" :label="t('account.verification_code')" class="loginUniFormItem">
-				<uni-easyinput :placeholder="t('account.enter_verification_code')" v-model="state.model.code" :inputBorder="false" type="number"
-					maxlength="4">
-				</uni-easyinput>
-			</uni-forms-item>
-			<uni-forms-item name="linkId" :label="t('account.link_id')" class="loginUniFormItem" v-if="!hasStorageLinkId">
+			<uni-forms-item name="linkId" :label="t('account.link_id')" class="loginUniFormItem" >
 				<uni-easyinput :placeholder="t('account.enter_link_id')" v-model="state.model.linkId" :inputBorder="false" type="input">
 				</uni-easyinput>
 			</uni-forms-item>
@@ -50,10 +44,11 @@
 	} from 'vue';
 	import sheep from '@/sheep';
 	import {
-		code,
+		// code,
 		mobile,
 		username,
-		password
+		password,
+		payPassword
 	} from '@/sheep/validate/form';
 	import { 
 		showAuthModal,
@@ -81,13 +76,19 @@
 			username:'', // 用户名
 			password:'', // 密码
 			mobile: '', // 手机号
-			code: '', // 验证码
+			// code: '', // 验证码
 			linkId: uni.getStorageSync("linkId") || undefined, // 邀请码
 		},
 		rules: {
 			username,
 			password,
-			code,
+			linkId: {
+				rules: [{
+					required: true,
+					errorMessage: t('account.enter_link_id')
+				}]
+			}
+			// code,
 		},
 	});
 	const smsLoginRef = ref(null);

+ 8 - 8
sheep/components/s-auth-modal/s-auth-modal.vue

@@ -7,17 +7,17 @@
 				
 				<view class="ss-flex ss-m-b-20">
 					<view
-						:class="[isActive=='accountLogin' ?`head-title ss-m-r-40 head-title-animation`:`head-title-active ss-m-r-40`]"
+						:class="[isActive=='accountLogin' ?`head-title head-title-line head-title-animation ss-m-r-40`:` ss-m-r-40 head-title-active head-title-line`]"
 						@tap="isActive='accountLogin';showAuthModal('accountLogin','accountLogin')">
 						
 						{{t('account.account_login')}}
 					</view>
-					<view
+					<!-- <view
 						:class="[isActive=='smsLogin'?`head-title head-title-line head-title-animation ss-m-r-40`:` ss-m-r-40 head-title-active head-title-line`]"
 						@tap="isActive='smsLogin';showAuthModal('smsLogin','smsLogin')">
 						
 						{{t('account.sms_login')}}
-					</view>
+					</view> -->
 					<view
 						:class="[isActive=='register' ?`head-title head-title-line head-title-animation`:`head-title-active head-title-line`]"
 						@tap="isActive='register';showAuthModal('register','register')" > 
@@ -46,7 +46,7 @@
 			</view>
 			
 			<!-- 微信公众号授权登陆  在验证码登录 账号登录中显示-->
-			<view v-if="['accountLogin', 'smsLogin'].includes(authType)"
+			<!-- <view v-if="['accountLogin', 'smsLogin'].includes(authType)"
 				class="auto-login-box ss-flex ss-flex-col ss-row-center ss-col-center">
 				<view class="wx-login-btn " @tap="thirdLogin('wechat')" v-if=" ['WechatOfficialAccount', 'WechatMiniProgram', 'App'].includes(sheep.$platform.name) && sheep.$platform.isWechatInstalled">
 
@@ -54,9 +54,9 @@
 
 					<text>{{t('account.wechat_authorization_login')}}</text>
 				</view>
-			</view>
-			<!-- 微信公众号授权登陆 在账号注册中显示 -->
-			<view v-if="['register'].includes(authType)"
+			</view> -->
+			<!-- 微信公众号授权注册 在账号注册中显示 -->
+			<!-- <view v-if="['register'].includes(authType)"
 				class="auto-login-box ss-flex ss-flex-col ss-row-center ss-col-center">
 				<view class="wx-login-btn " @tap="thirdRegister('wechat')" v-if=" ['WechatOfficialAccount', 'WechatMiniProgram', 'App'].includes(sheep.$platform.name) && sheep.$platform.isWechatInstalled">
 			
@@ -64,7 +64,7 @@
 			
 					<text>{{t('account.wechat_authorization_register')}}</text>
 				</view>
-			</view>
+			</view> -->
 			<!-- 1. 微信公众号授权登录 第一次登陆时弹窗绑定手机号 accountLogin -->
 			<officialAccountFirstLogin v-if="authType === 'officialAccountFirstLogin'" :agreeStatus="state.protocol" @onConfirm="onConfirm" />
 			

+ 13 - 11
sheep/components/s-goods-column/s-goods-column.vue

@@ -2,7 +2,8 @@
 <template>
 	
 	<view class="ss-goods-wrap">
-
+		
+		
 		<!-- xs卡片:横向紧凑型,一行放两个,图片左内容右边  -->
 		<view v-if="size === 'xs'" class="xs-goods-card ss-flex ss-col-stretch" :style="[elStyles]" @tap="onClick">
 			<view v-if="tagStyle.show" class="tag-icon-box">
@@ -19,8 +20,9 @@
 				<view v-if="goodsFields.price?.show" class="xs-goods-price ss-flex"
 					:style="[{ color: goodsFields.price.color }]">
 					
-					<image src="@/static/icon/points.png"  v-if="data.spuPayType == 2" class="ss-m-r-10" style="width:40rpx;height:40rpx"   ></image>
-					<text v-else>¥</text>
+					<view class="points-red" v-if="data.areaId == 1"></view>
+					<view class="points-green" v-if="data.areaId == 2"></view>
+
 					<text v-if="data.highPrecision">
 						{{ (isArray(data.highPrecisionPrice) ? fen2yuan6(data.highPrecisionPrice[0]) : fen2yuan6(data.highPrecisionPrice)) }}
 					</text>
@@ -54,8 +56,8 @@
 				
 				<view v-if="goodsFields.price?.show" class="sm-goods-price ss-flex"
 					:style="[{ color: goodsFields.price.color }]">
-					<image src="@/static/icon/points.png"  v-if="data.spuPayType == 2" class="ss-m-r-10" style="width:40rpx;height:40rpx"   ></image>
-					<text v-else>¥</text>
+					<view class="points-red" v-if="data.areaId == 1"></view>
+					<view class="points-green" v-if="data.areaId == 2"></view>
 					<!-- <text class="price-unit ss-font-24">{{ priceUnit }}</text> -->
 					<text v-if="data.highPrecision">
 						{{ (isArray(data.highPrecisionPrice) ? fen2yuan6(data.highPrecisionPrice[0]) : fen2yuan6(data.highPrecisionPrice)) }}
@@ -96,8 +98,8 @@
 				<view class="ss-flex ss-col-center ss-m-t-16">
 					<view v-if="goodsFields.price?.show" class="md-goods-price  ss-flex ss-m-r-10"
 						:style="[{ color: goodsFields.price.color }]">
-						<image src="@/static/icon/points.png"  v-if="data.spuPayType == 2" class="ss-m-r-10" style="width:40rpx;height:40rpx"   ></image>
-						<text v-else>¥</text>
+						<view class="points-red" v-if="data.areaId == 1"></view>
+						<view class="points-green" v-if="data.areaId == 2"></view>
 						<!-- <text class="price-unit ss-font-24">{{ priceUnit }}</text> -->
 						<text v-if="data.highPrecision">
 							{{ (isArray(data.highPrecisionPrice) ? fen2yuan6(data.highPrecisionPrice[0]) : fen2yuan6(data.highPrecisionPrice)) }}
@@ -160,8 +162,8 @@
 						<view v-if="goodsFields.price?.show"
 							class="lg-goods-price ss-m-r-12 ss-flex ss-col-bottom ss-flex"
 							:style="[{ color: goodsFields.price.color }]">
-							<image src="@/static/icon/points.png"  v-if="data.spuPayType == 2" class="ss-m-r-10" style="width:40rpx;height:40rpx"   ></image>
-							<text v-else>¥</text>
+							<view class="points-red" v-if="data.areaId == 1"></view>
+							<view class="points-green" v-if="data.areaId == 2"></view>
 							<!-- <text class="ss-font-24">{{ priceUnit }}</text> -->
 							<text v-if="data.highPrecision">
 								{{ (isArray(data.highPrecisionPrice) ? fen2yuan6(data.highPrecisionPrice[0]) : fen2yuan6(data.highPrecisionPrice)) }}
@@ -221,8 +223,8 @@
 					</slot>
 					<view v-if="goodsFields.price?.show" class="ss-flex ss-col-bottom ss-flex ss-m-t-10">
 						<view class="sl-goods-price ss-m-r-12" :style="[{ color: goodsFields.price.color }]">
-							<image src="@/static/icon/points.png"  v-if="data.spuPayType == 2" class="ss-m-r-10" style="width:40rpx;height:40rpx"   ></image>
-							<text v-else>¥</text>
+							<view class="points-red" v-if="data.areaId == 1"></view>
+							<view class="points-green" v-if="data.areaId == 2"></view>
 							<!-- <text class="price-unit ss-font-24">{{ priceUnit }}</text> -->
 							{{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
 						</view>

+ 7 - 6
sheep/components/s-goods-item/s-goods-item.vue

@@ -28,9 +28,10 @@
               :style="[{ color: priceColor }]"
               
             >
-				
-				<template v-if="virtualPirce"><image src="@/static/icon/points.png"  style="width:30rpx;height:30rpx"></image>  {{fen2yuan6(price)}}</template>
-				<template v-else>¥{{ fen2yuan(price) }}</template>
+            
+              <view class="points-red" v-if="areaId == 1"></view>
+              <view class="points-green" v-if="areaId == 2 || areaId == 3"></view>
+				      {{ fen2yuan(price) }}
               
             </view>
             <view v-if="num" class="total-text ss-flex ss-col-center">x {{ num }}</view>
@@ -105,9 +106,9 @@
       type: [String],
       default: '',
     },
-	virtualPirce:{
-		type:[Boolean],
-		default:false
+	areaId:{
+		type:[Number],
+		default:0
 	}
   });
   const skuString = computed(() => {

+ 3 - 0
sheep/components/s-layout/s-layout.vue

@@ -38,6 +38,9 @@
 			<s-share-modal :shareInfo="shareInfo" />
 			<!-- 全局快捷入口 -->
 			<s-menu-tools />
+
+			<!-- 全局支付密码弹窗 -->
+			<s-pay-password />
 		</view>
 	</view>
 </template>

+ 2 - 2
sheep/components/s-menu-grid/s-menu-grid.vue

@@ -56,7 +56,7 @@
       if (Array.isArray(newList) && newList.length > 0) {
         initData.value = newList.map(item => ({
 			...item,
-			isVisible: item.title === '商户入驻' ? false : (item.isVisible !== undefined ? item.isVisible : true),
+			isVisible: item.title === '商户入驻' ? true : (item.isVisible !== undefined ? item.isVisible : true),
 
         }));
       } else {
@@ -76,7 +76,7 @@
 			// 检查用户信息后修改 initData 的 isVisible 属性
 			if (userInfo?.agent) {
 			  const targetIndex = initData.value.findIndex(
-				(item) => item.title === '商户入驻'
+				  (item) => item.title === '商户入驻'
 			  );
 			  if (targetIndex !== -1) {
 				// 使用 splice 替换对象,确保响应性

+ 287 - 0
sheep/components/s-pay-password/s-pay-password.vue

@@ -0,0 +1,287 @@
+<template>
+    <view class="paymentCodeBox" v-if="show">
+      <view class="password-set-page">
+        <view class="setPage">
+          <view class="hint mb-30 height110 width100Percent ss-font-32 ss-color-222 ss-font-bold">
+            {{ title }}
+            <view class="imgClose" @click="onClose">
+              <image src="@/static/icon/close.svg" style="width:50rpx;height:50rpx"></image>
+            </view>
+          </view>
+          
+          <view class="code">
+            <view class="numFont">
+              <view v-for="(item, index) in 6" :key="index">{{ password[index] && '●' || '' }}</view>
+            </view>
+          </view>
+          
+          <view class="keyboard">
+            <button v-for="(item, index) in 9" :key="index" @click="key(index + 1)">
+              <text>{{ index + 1 }}</text>
+            </button>
+            <button class="hide"></button>
+            <button @click="key(0)">
+              <text>0</text>
+            </button>
+            <button @click="del">
+              <image src="@/static/icon/close.svg" mode="aspectFill"></image>
+            </button>
+          </view>
+        </view>
+      </view>
+    </view>
+  </template>
+  
+  <script setup>
+  import { ref, computed } from 'vue'
+  import sheep from '@/sheep'
+  import { hidePayPassword } from '@/sheep/hooks/useModal'
+  import UserApi from '@/sheep/api/member/user';
+  
+  const modalStore = sheep.$store('modal')
+  const password = ref('')
+  
+  const show = computed(() => modalStore.payPassword.show)
+  const title = computed(() => modalStore.payPassword.title)
+  
+  // 处理密码输入完成
+  async function handleComplete(inputPassword) {
+    const { type, step, callback, oldPassword, newPassword } = modalStore.payPassword
+    
+    if (type === 'input') {
+      callback?.(inputPassword)
+      hidePayPassword()
+    } else if (type === 'change') {
+      if (step === 1) {
+        modalStore.$patch((state) => {
+          state.payPassword.oldPassword = inputPassword
+          state.payPassword.step = 2
+          state.payPassword.title = '请输入新支付密码'
+        })
+      } else if (step === 2) {
+        modalStore.$patch((state) => {
+          state.payPassword.newPassword = inputPassword
+          state.payPassword.step = 3
+          state.payPassword.title = '请确认新支付密码'
+        })
+      } else if (step === 3) {
+        if (inputPassword === newPassword) {
+          try {
+            const { code } = await UserApi.updatePayPassword({
+              payPassword: inputPassword,
+              oldPayPassword: oldPassword
+            })
+            if (code === 0) {
+              uni.showToast({
+                title: '修改成功',
+                icon: 'success'
+              })
+              callback?.({ oldPassword, newPassword: inputPassword })
+            }
+            hidePayPassword()
+          } catch (error) {
+            uni.showToast({
+              title: error.message || '修改失败',
+              icon: 'none'
+            })
+            hidePayPassword()
+          }
+        } else {
+          uni.showToast({
+            title: '两次密码不一致',
+            icon: 'none'
+          })
+          modalStore.$patch((state) => {
+            state.payPassword.step = 2
+            state.payPassword.title = '请输入新支付密码'
+          })
+        }
+      }
+    } else if (type === 'set') {
+      if (step === 1) {
+        modalStore.$patch((state) => {
+          state.payPassword.newPassword = inputPassword
+          state.payPassword.step = 2
+          state.payPassword.title = '请确认支付密码'
+        })
+      } else if (step === 2) {
+        if (inputPassword === newPassword) {
+          try {
+            const { code } = await UserApi.updatePayPassword({
+              payPassword: inputPassword
+            })
+            if (code === 0) {
+              uni.showToast({
+                title: '设置成功',
+                icon: 'success'
+              })
+              callback?.(inputPassword)
+            }
+            hidePayPassword()
+          } catch (error) {
+            uni.showToast({
+              title: error.message || '设置失败',
+              icon: 'none'
+            })
+            hidePayPassword()
+          }
+        } else {
+          uni.showToast({
+            title: '两次密码不一致',
+            icon: 'none'
+          })
+          modalStore.$patch((state) => {
+            state.payPassword.step = 1
+            state.payPassword.title = '设置支付密码'
+          })
+        }
+      }
+    }
+    // 清空当前输入
+    password.value = ''
+  }
+  
+  // 输入数字
+  function key(num) {
+    if (password.value.length < 6) {
+      password.value += num
+      if (password.value.length === 6) {
+        handleComplete(password.value)
+      }
+    }
+  }
+  
+  // 删除数字
+  function del() {
+    if (password.value.length > 0) {
+      password.value = password.value.substring(0, password.value.length - 1)
+    }
+  }
+  
+  // 关闭弹窗
+  function onClose() {
+    hidePayPassword()
+    modalStore.payPassword.onCancel?.()
+  }
+  </script>
+  
+  <style lang="scss" scoped>
+  .paymentCodeBox {
+    width: 100%;
+    height: 100vh;
+    background: rgba(0, 0, 0, .5);
+    position: fixed;
+    top: 0;
+    left: 0;
+    z-index: 999;
+    
+    .password-set-page {
+      position: fixed;
+      bottom: 0;
+      width: 100%;
+      height: 100vh;
+      overflow: hidden;
+      z-index: 999999;
+      
+      .setPage {
+        position: fixed;
+        bottom: 0;
+        width: 100%;
+        background: #fff;
+        border-radius: 20rpx 20rpx 0 0;
+        
+        .hint {
+          line-height: 110rpx;
+          position: relative;
+          text-align: center;
+          border-bottom: 1rpx solid #ECECEC;
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          padding: 0 20rpx;
+          .imgClose {
+            display: flex;
+            align-items: center;
+            justify-content: center;
+          }
+        }
+      }
+      
+      .code {
+        margin: 30rpx 0;
+        .numFont {
+          display: flex;
+          width: 690rpx;
+          margin: 0 auto;
+          
+          view {
+            flex: 1;
+            height: 100rpx;
+            border: 1rpx solid #D9D9D9;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            font-size: 60rpx;
+            
+            &:not(:last-child) {
+              border-right: none;
+            }
+          }
+        }
+      }
+      
+      .slipBox {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        
+        .goto {
+          align-items: center;
+          
+          .imgBox {
+            width: 9rpx;
+            height: 16rpx;
+            
+            .img {
+              width: 100%;
+              height: 100%;
+            }
+          }
+        }
+      }
+      
+      .keyboard {
+        width: 100%;
+        background: #EEEEEE;
+        display: flex;
+        flex-wrap: wrap;
+        padding-bottom: env(safe-area-inset-bottom);
+        
+        button {
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          width: calc(100% / 3);
+          height: 120rpx;
+          background: #FFFFFF;
+          border-radius: 0;
+          margin: 1rpx 0 0 0;
+          font-size: 50rpx;
+          
+          &.hide {
+            background: #EEEEEE;
+          }
+          
+          &:active:not(.hide) {
+            background: #EEEEEE;
+          }
+          
+          image {
+            width: 52rpx;
+            height: 38rpx;
+          }
+        }
+      }
+    }
+  }
+  </style>

+ 12 - 15
sheep/components/s-select-sku/s-select-sku.vue

@@ -13,17 +13,13 @@
 					<view class="goods-title ss-line-2">{{ goodsInfo.name }}</view>
 					<view class="header-right-bottom ss-flex ss-col-center ss-row-between">
 						<view class="ss-flex">
-							<view class="price-text">
-								<image src="@/static/icon/points.png" v-if="goodsInfo.spuPayType == 2"
-									style="width: 30rpx; height: 30rpx"></image>
+							<view class="price-text ss-flex ss-col-center">
+								
+								<view class="points-red" v-if="goodsInfo.areaId == 1"></view>
+								<view class="points-green" v-if="goodsInfo.areaId == 2"></view>
+								
+								{{ fen2yuan(state.selectedSku.price || goodsInfo.price) }}
 								
-								<text v-if="goodsInfo.highPrecision">
-									{{ fen2yuan6(state.selectedSku.highPrecisionPrice || goodsInfo.highPrecisionPrice) }}
-								</text>
-								<text v-else>
-									{{ fen2yuan(state.selectedSku.price || goodsInfo.price) }}
-								</text>
-								<!-- {{ fen2yuan(state.selectedSku.price || goodsInfo.price) }} -->
 							</view>
 							<view class="origin-price-text ss-m-l-10" v-if="
 									state.selectedSku.promotionFee >= 0 ||
@@ -84,12 +80,13 @@
 			</view>
 			<!-- 操作区 -->
 			<view class="modal-footer border-top">
-				<view class="buy-box ss-flex ss-col-center ss-flex ss-col-center ss-row-center"
-					v-if="goodsInfo.spuType && goodsInfo.spuPayType == 1">
+				
+				<view class="buy-box ss-flex ss-col-center ss∂-flex ss-col-center ss-row-center"
+					>
 					<button class="ss-reset-button add-btn ui-Shadow-Main" @tap="onAddCart">{{$t('common.add_to_cart')}}</button>
-					<button class="ss-reset-button buy-btn ui-Shadow-Main" @tap="onBuy">{{$t('common.buy_now')}}</button>
+					<button class="ss-reset-button buy-btn ui-Shadow-Main" @tap="onBuy">{{$t('common.redeem_now')}}</button>
 				</view>
-				<view class="buy-box ss-flex ss-col-center ss-p-r-20" v-else>
+				<!-- <view class="buy-box ss-flex ss-col-center ss-p-r-20" v-else>
 					<button class="ss-reset-button disabled-btn one-buy-btn ui-Shadow-Main " @tap="onBuy">
 						<template v-if="goodsInfo.spuPayType != 1 && !goodsInfo.spuType">
 							{{$t('common.redeem_now')}}
@@ -101,7 +98,7 @@
 							{{$t('common.redeem_now')}}
 						</template>
 					</button>
-				</view>
+				</view> -->
 			</view>
 		</view>
 	</su-popup>

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

@@ -16,7 +16,7 @@
 						<view class="nick-name ss-m-r-20">{{ userInfo?.username || username }}</view>
 
 					</view>
-					<view class="user-name ss-m-t-5">{{$t('user.nickname')}}:{{ userInfo?.nickname || nickname }}</view>
+					<!-- <view class="user-name ss-m-t-5">{{$t('user.nickname')}}:{{ userInfo?.nickname || nickname }}</view> -->
 				</view>
 			</view>
 			<view class="right-box ss-m-r-30">

+ 4 - 4
sheep/components/s-wallet-card/s-wallet-card.vue

@@ -53,9 +53,10 @@
 				<view class="value-box ">
 					<view class="value-text">{{$t('wallet.wallet')}}</view>
 				</view>
-				<view class="menu-title  ss-m-t-15 text-center">{{$t('wallet.commission')}}:{{ points2point(userWallet.integralDO.currentQuota)  }}</view>
-				<view class="menu-title  ss-m-t-15 text-center">{{$t('wallet.consumption_points')}}:{{ points2point(userWallet.integralDO.consumptionPoints)  }}</view>
-				<!-- <view class="menu-title ss-m-t-15">待确权:{{ points2point(userWallet.integralDO.freezeQuota)  }}</view> -->
+
+				<view class="menu-title  ss-m-t-15 text-center">{{ $t('wallet.红积分') }}:{{ points2point(userWallet.integralDO.redCurrentQuota || 0)  }}</view>
+				<view class="menu-title  ss-m-t-15 text-center">{{ $t('wallet.黄积分') }}:{{ points2point(userWallet.integralDO.yellowCurrentQuota || 0)  }}</view>
+				<view class="menu-title  ss-m-t-15 text-center">{{ $t('wallet.绿积分') }}:{{ points2point(userWallet.integralDO.greenCurrentQuota || 0)  }}</view>
 			</view>
 			<view class="menu-item ss-flex-1 ss-flex-col  ss-col-center ss-row-center"
 				@tap="sheep.$router.go('/pages/user/wallet/team')">
@@ -115,7 +116,6 @@
 		}
 		const progress = ((userWallet.value.socialStatusPoint / (userWallet.value.socialStatusPoint +
 		userWallet.value.socialUpNeed)) * 100) + "%"
-		// console.log(progress)
 		return progress
 	})
 

+ 79 - 110
sheep/components/s-wallet-modal/s-wallet-modal.vue

@@ -1,35 +1,21 @@
 <template>
 	<!-- 规格弹窗 -->
 	<!-- showClose -->
-	<su-popup :show="show" @close="colseWalletModal" type="center"  round="10">
+	<su-popup :show="show" @close="colseWalletModal" type="center" round="10">
 		<view class="model-box ss-flex-col">
 			<view class="ss-m-t-56 ss-flex-col ss-col-center">
 				<text class="cicon-check-round"></text>
-				<template v-if="!state.msg">
-					<view class="score-title">{{ t('pop.congratulations') }}</view>
-					<template v-if="state.points && state.points  !== 'null' && points2point(state.points) > 0 || state.socialStatus && state.socialStatus  !== 'null'">
-						<view class="model-title ss-flex ss-col-center ss-m-t-15 ss-font-35" v-if="state.points && points2point(state.points) > 0"> 
-							{{ t('pop.commission_earned') }}:{{ points2point(state.points) }}
-						</view>
-						<view class="model-title ss-flex ss-col-center ss-m-t-15 ss-font-35" v-if="state.socialStatus">
-							{{ t('pop.social_value_earned') }}:{{state.socialStatus}}
-						</view>
-					</template>
-					<template v-else>
-						<view class="model-title ss-flex ss-col-center ss-m-y-15 " >
-							{{ t('pop.order_success') }}
-						</view>
-					</template>
-				</template>
-				
-				<template v-else>
-
-					<view class="model-title ss-flex ss-col-center ss-m-y-15 ">{{state.msg}}</view>
-				</template>
+				<view class="score-title">{{ t('pop.congratulations') }}</view>
+				<view class="model-title ss-flex ss-col-center ss-m-y-15 ">
+					{{ t('pop.order_success') }}
+				</view>
 			</view>
 			<view class="model-bg ss-flex-col ss-col-center ss-row-right">
-				<view class="ss-m-b-40">
-					<button class="ss-reset-button confirm-btn" @tap="colseWalletModal();">{{ t('common.confirm') }}</button>
+				<view class="ss-m-b-40 ss-flex ss-row-center " style="gap: 10rpx;">
+					<button class="ss-reset-button confirm-btn"
+						@tap="colseWalletModal(); sheep.$router.redirect('/pages/index/index')">返回首页</button>
+					<button class="ss-reset-button confirm-btn "
+						@tap="colseWalletModal(); sheep.$router.redirect('/pages/order/list', { type: 2 })">查看订单</button>
 				</view>
 			</view>
 		</view>
@@ -37,103 +23,86 @@
 </template>
 
 <script setup>
-	import {
-		computed,
-		reactive,
-		ref,
-		watch
-	} from 'vue';
-	import sheep from '@/sheep';
+import {
+	computed,
+	reactive,
+	ref,
+	watch
+} from 'vue';
+import sheep from '@/sheep';
 
-	import {
-		showWalletModal,
-		colseWalletModal
-	} from '@/sheep/hooks/useModal';
-	import {
-		points2point
-	} from '@/sheep/hooks/useGoods';
-	import { t } from '@/locale'
- 	const headerBg = sheep.$url.css('/static/images/sign.png');
-	const show = computed(() => sheep.$store('modal').getWallet);
-	const state = computed(() => sheep.$store('modal').getWalletInfo)
-	// 监听签到成功 3s之后自动关闭
-	// watch(() => show.value, (newValue) => {
-	// 	if(newValue){
-	// 		setTimeout(colseSignUpModal,3000)
-	// 	}
-	// })
+import {
+	showWalletModal,
+	colseWalletModal
+} from '@/sheep/hooks/useModal';
+import {
+	points2point
+} from '@/sheep/hooks/useGoods';
+import { t } from '@/locale'
+const headerBg = sheep.$url.css('/static/images/sign.png');
+const show = computed(() => sheep.$store('modal').getWallet);
+const state = computed(() => sheep.$store('modal').getWalletInfo)
+// 监听签到成功 3s之后自动关闭
+// watch(() => show.value, (newValue) => {
+// 	if(newValue){
+// 		setTimeout(colseSignUpModal,3000)
+// 	}
+// })
 </script>
 
 <style lang="scss" scoped>
-	.model-box {
-		width: 520rpx;
-		// height: 590rpx;
-		background: linear-gradient(177deg, #ff6000 0%, #fe832a 100%);
-		// background: linear-gradient(177deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
-		border-radius: 10rpx;
-
-		.cicon-check-round {
-			// font-size: 70rpx;
-			color: #fff;
-		}
+.model-box {
+	width: 520rpx;
+	// height: 590rpx;
+	background: linear-gradient(177deg, #ff6000 0%, #fe832a 100%);
+	// background: linear-gradient(177deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
+	border-radius: 10rpx;
 
-		.score-title {
-			font-size: 34rpx;
-			font-family: OPPOSANS;
-			font-weight: 500;
-			color: #fcff00;
-		}
+	.cicon-check-round {
+		// font-size: 70rpx;
+		color: #fff;
+	}
 
-		.model-title {
-			// font-size: 28rpx;
-			font-weight: 500;
-			color: #ffffff;
-		}
+	.score-title {
+		font-size: 34rpx;
+		font-family: OPPOSANS;
+		font-weight: 500;
+		color: #fcff00;
+	}
 
-		.model-bg {
-			width: 520rpx;
-			height: 6.75rem;
-			background-size: 100% 100%;
-			background-image: v-bind(headerBg);
-			background-repeat: no-repeat;
-			border-radius: 0 0 10rpx 10rpx;
+	.model-title {
+		// font-size: 28rpx;
+		font-weight: 500;
+		color: #ffffff;
+	}
 
-			.title {
-				font-size: 34rpx;
-				font-weight: bold;
-				// color: var(--ui-BG-Main);
-				color: #ff6000;
-			}
+	.model-bg {
+		width: 520rpx;
+		height: 6.75rem;
+		background-size: 100% 100%;
+		background-image: v-bind(headerBg);
+		background-repeat: no-repeat;
+		border-radius: 0 0 10rpx 10rpx;
 
-			.subtitle {
-				font-size: 26rpx;
-				font-weight: 500;
-				color: #999999;
-			}
+		.title {
+			font-size: 34rpx;
+			font-weight: bold;
+			// color: var(--ui-BG-Main);
+			color: #ff6000;
+		}
 
-			.cancel-btn {
-				width: 220rpx;
-				height: 70rpx;
-				border: 2rpx solid #ff6000;
-				border-radius: 35rpx;
-				font-size: 28rpx;
-				font-weight: 500;
-				color: #ff6000;
-				line-height: normal;
-				margin-right: 10rpx;
-			}
 
-			.confirm-btn {
-				width: 300rpx;
-				height: 70rpx;
-				background: linear-gradient(90deg, #ff6000, #fe832a);
-				box-shadow: 0 0.2em 0.5em rgba(#ff6000, 0.4);
-				border-radius: 35rpx;
-				font-size: 28rpx;
-				font-weight: 500;
-				color: #ffffff;
-				line-height: normal;
-			}
+		.confirm-btn {
+			width: 200rpx;
+			height: 70rpx;
+			background: linear-gradient(90deg, #ff6000, #fe832a);
+			box-shadow: 0 0.2em 0.5em rgba(#ff6000, 0.4);
+			border-radius: 35rpx;
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #ffffff;
+			line-height: normal;
 		}
 	}
+}
 </style>

+ 1 - 1
sheep/hooks/useApp.js

@@ -12,7 +12,7 @@ const userInfo = computed(() => sheep.$store('user').userInfo);
  */
 export function isBetaUser() {
 	const username = userInfo.value.username;
-	return username === 'ru10' || username === '迷鹿' || username === '非繁';
+	return username === 'ru10' || username === '迷鹿' || username === '非繁' || username === 'ru10x';
 }
 
 /**

+ 45 - 0
sheep/hooks/useModal.js

@@ -176,6 +176,51 @@ export function closeMenuTools() {
 	});
 }
 
+// 显示输入支付密码
+export function showInputPayPassword(callback,onCancel) {
+	sheep.$store('modal').$patch((state) => {
+	  state.payPassword = {
+		show: true,
+		type: 'input',
+		title: '请输入支付密码',
+		callback,
+		onCancel,
+		step: 0
+	  }
+	})
+  }
+  // 显示修改支付密码
+export function showChangePayPassword(callback) {
+	sheep.$store('modal').$patch((state) => {
+	  state.payPassword = {
+		show: true,
+		type: 'change',
+		title: '请输入原支付密码',
+		callback,
+		step: 1
+	  }
+	})
+  }
+  
+// 显示设置支付密码
+export function showSetPayPassword(callback) {
+	sheep.$store('modal').$patch((state) => {
+	  state.payPassword = {
+		show: true,
+		type: 'set',
+		title: '设置支付密码',
+		callback,
+		step: 1
+	  }
+	})
+  }
+  
+  // 隐藏支付密码
+  export function hidePayPassword() {
+	sheep.$store('modal').$patch((state) => {
+	  state.payPassword.show = false
+	})
+  }
 // 发送短信验证码  60秒
 export function getSmsCode(event, mobile) {
 	const modalStore = $store('modal');

+ 28 - 0
sheep/scss/index.scss

@@ -25,3 +25,31 @@ page {
   color: transparent;
   display: none;
 }
+
+.points-red,
+.points-green {
+  position: relative;
+  width: 40rpx;
+  height: 40rpx;
+  margin-right: 4rpx;
+  &::before {
+    content: '积';
+    color: #fff; 
+    font-size: 24rpx;
+    position: absolute;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    width: 100%;
+    height: 100%;
+    border-radius: 50%;
+    background-color: #FF4D4F;  // 红色背景
+  }
+}
+
+.points-green {
+  &::before {
+    background-color: #52C41A;  // 绿色背景
+    content: '积';
+  }
+}

+ 1 - 1
sheep/scss/style/_text.scss

@@ -90,7 +90,7 @@
     color: inherit !important;
   }
   &-price::before {
-    content: '¥';
+    content: '';
     font-size: 80%;
     margin-right: 4rpx;
   }

+ 21 - 12
sheep/store/modal.js

@@ -4,21 +4,31 @@ const modal = defineStore({
   id: 'modal',
   state: () => ({
     auth: '', // 授权弹框 accountLogin|smsLogin|resetPassword|changeMobile|changePassword|changeUsername
-	  isActive: '',
+    isActive: '',
     share: false, // 分享弹框
     shareInfo: {
       spuId: 0,
     }, // 分享弹框信息
-    signUp:false, // 签到弹框
-    signUpInfo:{}, // 签到弹框信息
-	subscribe:false, // 关注弹框
-	getWallet:false, // 获得佣金/身价弹窗
-	getWalletInfo:{
-		points:0,
-		socialStatus:0,
-	}, // 获得佣金/身价弹窗信息
+    signUp: false, // 签到弹框
+    signUpInfo: {}, // 签到弹框信息
+    subscribe: false, // 关注弹框
+    getWallet: false, // 获得佣金/身价弹窗
+    getWalletInfo: {
+      points: 0,
+      socialStatus: 0,
+    }, // 获得佣金/身价弹窗信息
     menu: false, // 快捷菜单弹框
     advHistory: [], // 广告弹框记录
+    payPassword: { // 支付密码弹框
+      show: false,
+      type: '', // 'input', 'change', 'set'
+      title: '',
+      callback: null,
+      onCancel: null,
+      step: 0,
+      oldPassword: '',
+      newPassword: ''
+    },
     lastTimer: {
       // 短信验证码计时器,为了防止刷新请求做了持久化
       smsLogin: 0,
@@ -28,9 +38,8 @@ const modal = defineStore({
       resetPassword: 0,
       changePassword: 0,
       consumptionTransfers: 0,
-	  zeroBuy:0,
-	  
-    }
+      zeroBuy: 0,
+    },
   }),
   persist: {
     enabled: true,

+ 2 - 2
sheep/store/user.js

@@ -121,8 +121,8 @@ const user = defineStore({
 			// 如果是安卓设备,判断是否注册极光推送
 			if(android.value){
 				// 如果后台没返回或者返回来的跟从webview中传来的不一致,拿最新的webview中的拿
-				if(!data.androidRegisterId || data.androidRegisterId !== androidJiGuangId.value){
-					await UserApi.updateAndroidJiGuangId(androidJiGuangId.value || '')
+				if(!data.androidRegisterId || data.androidRegisterId !== androidJiGuangId.value && androidJiGuangId.value){
+					await UserApi.updateAndroidJiGuangId(androidJiGuangId.value)
 				}
 			}
 			this.userWallet = data;

+ 13 - 1
sheep/validate/form.js

@@ -56,7 +56,19 @@ export const password = {
     },
   ],
 };
-
+// 支付密码
+export const payPassword = {
+  rules: [
+    {
+      required: true,
+      errorMessage: t('rules.请输入支付密码'),
+    },
+    {
+      pattern: /^\d{6}$/,
+      errorMessage: t('rules.请输入6位数字'),
+    }
+  ],
+};
 // 短信验证码
 export const code = {
   rules: [

+ 1 - 0
static/icon/close.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1736494005030" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4246" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M557.312 513.248l265.28-263.904c12.544-12.48 12.608-32.704 0.128-45.248-12.512-12.576-32.704-12.608-45.248-0.128l-265.344 263.936-263.04-263.84C236.64 191.584 216.384 191.52 203.84 204 191.328 216.48 191.296 236.736 203.776 249.28l262.976 263.776L201.6 776.8c-12.544 12.48-12.608 32.704-0.128 45.248 6.24 6.272 14.464 9.44 22.688 9.44 8.16 0 16.32-3.104 22.56-9.312l265.216-263.808 265.44 266.24c6.24 6.272 14.432 9.408 22.656 9.408 8.192 0 16.352-3.136 22.592-9.344 12.512-12.48 12.544-32.704 0.064-45.248L557.312 513.248z" fill="#272636" p-id="4247"></path></svg>

+ 1 - 0
uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue

@@ -470,6 +470,7 @@ export default {
 	min-height: 36px;
 	/* #endif */
 	flex: 1;
+	
 }
 
 .label-icon {

+ 19 - 25
unpackage/dist/cache/.vite/deps/_metadata.json

@@ -1,88 +1,82 @@
 {
-  "hash": "93d93a46",
-  "configHash": "03fe6156",
-  "lockfileHash": "c5aa5d7c",
-  "browserHash": "7c3a73fd",
+  "hash": "fd22e899",
+  "configHash": "01e16000",
+  "lockfileHash": "11edce59",
+  "browserHash": "71462b3b",
   "optimized": {
     "dayjs": {
       "src": "../../../../../node_modules/dayjs/dayjs.min.js",
       "file": "dayjs.js",
-      "fileHash": "a5d70b69",
+      "fileHash": "673ce01f",
       "needsInterop": true
     },
     "dayjs/locale/zh-cn": {
       "src": "../../../../../node_modules/dayjs/locale/zh-cn.js",
       "file": "dayjs_locale_zh-cn.js",
-      "fileHash": "2091ad2c",
+      "fileHash": "eed66374",
       "needsInterop": true
     },
     "dayjs/plugin/duration": {
       "src": "../../../../../node_modules/dayjs/plugin/duration.js",
       "file": "dayjs_plugin_duration.js",
-      "fileHash": "bda095a5",
+      "fileHash": "02160f3d",
       "needsInterop": true
     },
     "dayjs/plugin/relativeTime": {
       "src": "../../../../../node_modules/dayjs/plugin/relativeTime.js",
       "file": "dayjs_plugin_relativeTime.js",
-      "fileHash": "6aa01131",
+      "fileHash": "78d9cd5c",
       "needsInterop": true
     },
     "lodash": {
       "src": "../../../../../node_modules/lodash/lodash.js",
       "file": "lodash.js",
-      "fileHash": "a5370eb1",
+      "fileHash": "9f457834",
       "needsInterop": true
     },
     "luch-request": {
       "src": "../../../../../node_modules/luch-request/src/lib/luch-request.js",
       "file": "luch-request.js",
-      "fileHash": "14ee24d6",
+      "fileHash": "715525f1",
       "needsInterop": false
     },
     "pinia-plugin-persist-uni": {
       "src": "../../../../../node_modules/pinia-plugin-persist-uni/dist/pinia-persist-uni.es.js",
       "file": "pinia-plugin-persist-uni.js",
-      "fileHash": "6c13fdfe",
+      "fileHash": "2a23ba35",
       "needsInterop": false
     },
     "weixin-js-sdk": {
       "src": "../../../../../node_modules/weixin-js-sdk/index.js",
       "file": "weixin-js-sdk.js",
-      "fileHash": "6ca53d47",
+      "fileHash": "d1667dcc",
       "needsInterop": true
     },
     "qs-canvas": {
       "src": "../../../../../node_modules/qs-canvas/index.js",
       "file": "qs-canvas.js",
-      "fileHash": "bf826b12",
+      "fileHash": "6dcf3a19",
       "needsInterop": true
     },
     "libphonenumber-js": {
       "src": "../../../../../node_modules/libphonenumber-js/index.js",
       "file": "libphonenumber-js.js",
-      "fileHash": "8a0e396d",
+      "fileHash": "2c0d6e62",
       "needsInterop": false
     },
     "libphonenumber-js/mobile": {
       "src": "../../../../../node_modules/libphonenumber-js/mobile/index.js",
       "file": "libphonenumber-js_mobile.js",
-      "fileHash": "ce1e6053",
+      "fileHash": "bdad686e",
       "needsInterop": false
-    },
-    "blueimp-md5": {
-      "src": "../../../../../node_modules/blueimp-md5/js/md5.js",
-      "file": "blueimp-md5.js",
-      "fileHash": "e9debfe9",
-      "needsInterop": true
     }
   },
   "chunks": {
-    "chunk-YXGYH7HS": {
-      "file": "chunk-YXGYH7HS.js"
+    "chunk-SMXOUF54": {
+      "file": "chunk-SMXOUF54.js"
     },
-    "chunk-TEB2NVOQ": {
-      "file": "chunk-TEB2NVOQ.js"
+    "chunk-LDIJA43U": {
+      "file": "chunk-LDIJA43U.js"
     },
     "chunk-UQGIA5KH": {
       "file": "chunk-UQGIA5KH.js"

+ 0 - 214
unpackage/dist/cache/.vite/deps/blueimp-md5.js

@@ -1,214 +0,0 @@
-import {
-  __commonJS
-} from "./chunk-UQGIA5KH.js";
-
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/blueimp-md5/js/md5.js
-var require_md5 = __commonJS({
-  "../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/blueimp-md5/js/md5.js"(exports, module) {
-    (function($) {
-      "use strict";
-      function safeAdd(x, y) {
-        var lsw = (x & 65535) + (y & 65535);
-        var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
-        return msw << 16 | lsw & 65535;
-      }
-      function bitRotateLeft(num, cnt) {
-        return num << cnt | num >>> 32 - cnt;
-      }
-      function md5cmn(q, a, b, x, s, t) {
-        return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
-      }
-      function md5ff(a, b, c, d, x, s, t) {
-        return md5cmn(b & c | ~b & d, a, b, x, s, t);
-      }
-      function md5gg(a, b, c, d, x, s, t) {
-        return md5cmn(b & d | c & ~d, a, b, x, s, t);
-      }
-      function md5hh(a, b, c, d, x, s, t) {
-        return md5cmn(b ^ c ^ d, a, b, x, s, t);
-      }
-      function md5ii(a, b, c, d, x, s, t) {
-        return md5cmn(c ^ (b | ~d), a, b, x, s, t);
-      }
-      function binlMD5(x, len) {
-        x[len >> 5] |= 128 << len % 32;
-        x[(len + 64 >>> 9 << 4) + 14] = len;
-        var i;
-        var olda;
-        var oldb;
-        var oldc;
-        var oldd;
-        var a = 1732584193;
-        var b = -271733879;
-        var c = -1732584194;
-        var d = 271733878;
-        for (i = 0; i < x.length; i += 16) {
-          olda = a;
-          oldb = b;
-          oldc = c;
-          oldd = d;
-          a = md5ff(a, b, c, d, x[i], 7, -680876936);
-          d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
-          c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
-          b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
-          a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
-          d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
-          c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
-          b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
-          a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
-          d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
-          c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
-          b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
-          a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
-          d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
-          c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
-          b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
-          a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
-          d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
-          c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
-          b = md5gg(b, c, d, a, x[i], 20, -373897302);
-          a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
-          d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
-          c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
-          b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
-          a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
-          d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
-          c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
-          b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
-          a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
-          d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
-          c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
-          b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
-          a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
-          d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
-          c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
-          b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
-          a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
-          d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
-          c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
-          b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
-          a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
-          d = md5hh(d, a, b, c, x[i], 11, -358537222);
-          c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
-          b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
-          a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
-          d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
-          c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
-          b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
-          a = md5ii(a, b, c, d, x[i], 6, -198630844);
-          d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
-          c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
-          b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
-          a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
-          d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
-          c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
-          b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
-          a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
-          d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
-          c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
-          b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
-          a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
-          d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
-          c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
-          b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
-          a = safeAdd(a, olda);
-          b = safeAdd(b, oldb);
-          c = safeAdd(c, oldc);
-          d = safeAdd(d, oldd);
-        }
-        return [a, b, c, d];
-      }
-      function binl2rstr(input) {
-        var i;
-        var output = "";
-        var length32 = input.length * 32;
-        for (i = 0; i < length32; i += 8) {
-          output += String.fromCharCode(input[i >> 5] >>> i % 32 & 255);
-        }
-        return output;
-      }
-      function rstr2binl(input) {
-        var i;
-        var output = [];
-        output[(input.length >> 2) - 1] = void 0;
-        for (i = 0; i < output.length; i += 1) {
-          output[i] = 0;
-        }
-        var length8 = input.length * 8;
-        for (i = 0; i < length8; i += 8) {
-          output[i >> 5] |= (input.charCodeAt(i / 8) & 255) << i % 32;
-        }
-        return output;
-      }
-      function rstrMD5(s) {
-        return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));
-      }
-      function rstrHMACMD5(key, data) {
-        var i;
-        var bkey = rstr2binl(key);
-        var ipad = [];
-        var opad = [];
-        var hash;
-        ipad[15] = opad[15] = void 0;
-        if (bkey.length > 16) {
-          bkey = binlMD5(bkey, key.length * 8);
-        }
-        for (i = 0; i < 16; i += 1) {
-          ipad[i] = bkey[i] ^ 909522486;
-          opad[i] = bkey[i] ^ 1549556828;
-        }
-        hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
-        return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));
-      }
-      function rstr2hex(input) {
-        var hexTab = "0123456789abcdef";
-        var output = "";
-        var x;
-        var i;
-        for (i = 0; i < input.length; i += 1) {
-          x = input.charCodeAt(i);
-          output += hexTab.charAt(x >>> 4 & 15) + hexTab.charAt(x & 15);
-        }
-        return output;
-      }
-      function str2rstrUTF8(input) {
-        return unescape(encodeURIComponent(input));
-      }
-      function rawMD5(s) {
-        return rstrMD5(str2rstrUTF8(s));
-      }
-      function hexMD5(s) {
-        return rstr2hex(rawMD5(s));
-      }
-      function rawHMACMD5(k, d) {
-        return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
-      }
-      function hexHMACMD5(k, d) {
-        return rstr2hex(rawHMACMD5(k, d));
-      }
-      function md5(string, key, raw) {
-        if (!key) {
-          if (!raw) {
-            return hexMD5(string);
-          }
-          return rawMD5(string);
-        }
-        if (!raw) {
-          return hexHMACMD5(key, string);
-        }
-        return rawHMACMD5(key, string);
-      }
-      if (typeof define === "function" && define.amd) {
-        define(function() {
-          return md5;
-        });
-      } else if (typeof module === "object" && module.exports) {
-        module.exports = md5;
-      } else {
-        $.md5 = md5;
-      }
-    })(exports);
-  }
-});
-export default require_md5();
-//# sourceMappingURL=blueimp-md5.js.map

文件差異過大導致無法顯示
+ 0 - 3
unpackage/dist/cache/.vite/deps/blueimp-md5.js.map


+ 3 - 3
unpackage/dist/cache/.vite/deps/chunk-TEB2NVOQ.js → unpackage/dist/cache/.vite/deps/chunk-LDIJA43U.js

@@ -2,9 +2,9 @@ import {
   __commonJS
 } from "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/dayjs/dayjs.min.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/dayjs/dayjs.min.js
 var require_dayjs_min = __commonJS({
-  "../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/dayjs/dayjs.min.js"(exports, module) {
+  "../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/dayjs/dayjs.min.js"(exports, module) {
     !function(t, e) {
       "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e();
     }(exports, function() {
@@ -299,4 +299,4 @@ var require_dayjs_min = __commonJS({
 export {
   require_dayjs_min
 };
-//# sourceMappingURL=chunk-TEB2NVOQ.js.map
+//# sourceMappingURL=chunk-LDIJA43U.js.map

+ 0 - 0
unpackage/dist/cache/.vite/deps/chunk-TEB2NVOQ.js.map → unpackage/dist/cache/.vite/deps/chunk-LDIJA43U.js.map


+ 67 - 67
unpackage/dist/cache/.vite/deps/chunk-YXGYH7HS.js → unpackage/dist/cache/.vite/deps/chunk-SMXOUF54.js

@@ -1,4 +1,4 @@
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/ParseError.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/ParseError.js
 function _typeof(obj) {
   "@babel/helpers - typeof";
   return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) {
@@ -148,7 +148,7 @@ var ParseError = function(_Error) {
   return _createClass(ParseError2);
 }(_wrapNativeSuper(Error));
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/tools/semver-compare.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/tools/semver-compare.js
 function semver_compare_default(a, b) {
   a = a.split("-");
   b = b.split("-");
@@ -172,13 +172,13 @@ function semver_compare_default(a, b) {
   return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/isObject.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/isObject.js
 var objectConstructor = {}.constructor;
 function isObject(object) {
   return object !== void 0 && object !== null && object.constructor === objectConstructor;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/metadata.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/metadata.js
 function _typeof2(obj) {
   "@babel/helpers - typeof";
   return _typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) {
@@ -730,7 +730,7 @@ function setVersion(metadata) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/parseDigits.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/parseDigits.js
 function _createForOfIteratorHelperLoose(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -855,7 +855,7 @@ function parseDigits(string) {
   return result2;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js
 function _createForOfIteratorHelperLoose2(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -914,7 +914,7 @@ function parsePhoneNumberCharacter(character, prevParsedCharacters, emitEvent) {
   return parseDigit(character);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/constants.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/constants.js
 var MIN_LENGTH_FOR_NSN = 2;
 var MAX_LENGTH_FOR_NSN = 17;
 var MAX_LENGTH_COUNTRY_CODE = 3;
@@ -928,7 +928,7 @@ var TILDES = "~⁓∼~";
 var VALID_PUNCTUATION = "".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);
 var PLUS_CHARS = "++";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/extension/createExtensionPattern.js
 var RFC3966_EXTN_PREFIX = ";ext=";
 var getExtensionDigitsPattern = function getExtensionDigitsPattern2(maxLength) {
   return "([".concat(VALID_DIGITS, "]{1,").concat(maxLength, "})");
@@ -955,7 +955,7 @@ function createExtensionPattern(purpose) {
   return rfcExtn + "|" + explicitExtn + "|" + ambiguousExtn + "|" + americanStyleExtnWithSuffix + "|" + autoDiallingExtn + "|" + onlyCommasExtn;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/isViablePhoneNumber.js
 var MIN_LENGTH_PHONE_NUMBER_PATTERN = "[" + VALID_DIGITS + "]{" + MIN_LENGTH_FOR_NSN + "}";
 var VALID_PHONE_NUMBER = "[" + PLUS_CHARS + "]{0,1}(?:[" + VALID_PUNCTUATION + "]*[" + VALID_DIGITS + "]){3,}[" + VALID_PUNCTUATION + VALID_DIGITS + "]*";
 var VALID_PHONE_NUMBER_START_REG_EXP = new RegExp("^[" + PLUS_CHARS + "]{0,1}(?:[" + VALID_PUNCTUATION + "]*[" + VALID_DIGITS + "]){1,2}$", "i");
@@ -973,7 +973,7 @@ function isViablePhoneNumberStart(number) {
   return VALID_PHONE_NUMBER_START_REG_EXP.test(number);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/RFC3966.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/RFC3966.js
 function _slicedToArray(arr, i) {
   return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray3(arr, i) || _nonIterableRest();
 }
@@ -1092,7 +1092,7 @@ function formatRFC3966(_ref) {
   return "tel:".concat(number).concat(ext ? ";ext=" + ext : "");
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.util.js
 function _createForOfIteratorHelperLoose4(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -1185,7 +1185,7 @@ function populateTemplateWithDigits(template, position, digits) {
   return [template, position];
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/mergeArrays.js
 function _createForOfIteratorHelperLoose5(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -1236,7 +1236,7 @@ function mergeArrays(a, b) {
   });
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js
 function checkNumberLength(nationalNumber, metadata) {
   return checkNumberLengthForType(nationalNumber, void 0, metadata);
 }
@@ -1271,12 +1271,12 @@ function checkNumberLengthForType(nationalNumber, type, metadata) {
   return possible_lengths.indexOf(actual_length, 1) >= 0 ? "IS_POSSIBLE" : "INVALID_LENGTH";
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js
 function applyInternationalSeparatorStyle(formattedNumber) {
   return formattedNumber.replace(new RegExp("[".concat(VALID_PUNCTUATION, "]+"), "g"), " ").trim();
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js
 var FIRST_GROUP_PATTERN = /(\$\d)/;
 function formatNationalNumberUsingFormat(number, format, _ref) {
   var useInternationalFormat = _ref.useInternationalFormat, withNationalPrefix = _ref.withNationalPrefix, carrierCode = _ref.carrierCode, metadata = _ref.metadata;
@@ -1302,7 +1302,7 @@ function formatNationalNumberUsingFormat(number, format, _ref) {
   return formattedNumber;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.complete.js
 function formatCompleteNumber(state, format, _ref) {
   var metadata = _ref.metadata, shouldTryNationalPrefixFormattingRule = _ref.shouldTryNationalPrefixFormattingRule, getSeparatorAfterNationalPrefix = _ref.getSeparatorAfterNationalPrefix;
   var matcher = new RegExp("^(?:".concat(format.pattern(), ")$"));
@@ -1359,7 +1359,7 @@ function isValidFormattedNationalNumber(formattedNationalNumber, state) {
   return parseDigits(formattedNationalNumber) === state.getNationalDigits();
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js
 function _classCallCheck3(instance, Constructor) {
   if (!(instance instanceof Constructor)) {
     throw new TypeError("Cannot call a class as a function");
@@ -1553,7 +1553,7 @@ function expandSingleElementArray(array) {
   return array;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternMatcher.js
 function _createForOfIteratorHelperLoose6(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -1774,7 +1774,7 @@ function _match(characters, tree, last) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/AsYouTypeFormatter.js
 function _createForOfIteratorHelperLoose7(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -2165,7 +2165,7 @@ var AsYouTypeFormatter = function() {
   return AsYouTypeFormatter2;
 }();
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/isPossible.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/isPossible.js
 function isPossiblePhoneNumber(input, options, metadata) {
   if (options === void 0) {
     options = {};
@@ -2211,13 +2211,13 @@ function isPossibleNumber(nationalNumber, metadata) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/matchesEntirely.js
 function matchesEntirely(text, regular_expression) {
   text = text || "";
   return new RegExp("^(?:" + regular_expression + ")$").test(text);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/getNumberType.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/getNumberType.js
 function _createForOfIteratorHelperLoose8(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -2297,7 +2297,7 @@ function isNumberTypeEqualTo(nationalNumber, type, metadata) {
   return matchesEntirely(nationalNumber, type.pattern());
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/isValid.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/isValid.js
 function isValidNumber(input, options, metadata) {
   options = options || {};
   metadata = new Metadata(metadata);
@@ -2309,7 +2309,7 @@ function isValidNumber(input, options, metadata) {
   return matchesEntirely(nationalNumber, metadata.nationalNumberPattern());
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/getPossibleCountriesForNumber.js
 function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {
   var _metadata = new Metadata(metadata);
   var possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode);
@@ -2329,7 +2329,7 @@ function couldNationalNumberBelongToCountry(nationalNumber, country2, metadata)
   return false;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/getIddPrefix.js
 var SINGLE_IDD_PREFIX_REG_EXP = /^[\d]+(?:[~\u2053\u223C\uFF5E][\d]+)?$/;
 function getIddPrefix(country2, callingCode, metadata) {
   var countryMetadata = new Metadata(metadata);
@@ -2342,7 +2342,7 @@ function getIddPrefix(country2, callingCode, metadata) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/format.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/format.js
 function _createForOfIteratorHelperLoose9(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -2508,7 +2508,7 @@ function formatIDD(nationalNumber, carrierCode, countryCallingCode, fromCountry,
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/PhoneNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/PhoneNumber.js
 function ownKeys2(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -2694,7 +2694,7 @@ function getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJs
   };
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/AsYouTypeState.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/AsYouTypeState.js
 function _classCallCheck7(instance, Constructor) {
   if (!(instance instanceof Constructor)) {
     throw new TypeError("Cannot call a class as a function");
@@ -2817,7 +2817,7 @@ var AsYouTypeState = function() {
   return AsYouTypeState2;
 }();
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/stripIddPrefix.js
 var CAPTURING_DIGIT_PATTERN = new RegExp("([" + VALID_DIGITS + "])");
 function stripIddPrefix(number, country2, callingCode, metadata) {
   if (!country2) {
@@ -2839,7 +2839,7 @@ function stripIddPrefix(number, country2, callingCode, metadata) {
   return number;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js
 function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {
   if (number && metadata.numberingPlan.nationalPrefixForParsing()) {
     var prefixPattern = new RegExp("^(?:" + metadata.numberingPlan.nationalPrefixForParsing() + ")");
@@ -2883,7 +2883,7 @@ function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {
   };
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/extractNationalNumber.js
 function extractNationalNumber(number, metadata) {
   var _extractNationalNumbe = extractNationalNumberFromPossiblyIncompleteNumber(number, metadata), carrierCode = _extractNationalNumbe.carrierCode, nationalNumber = _extractNationalNumbe.nationalNumber;
   if (nationalNumber !== number) {
@@ -2921,7 +2921,7 @@ function isPossibleIncompleteNationalNumber(nationalNumber, metadata) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js
 function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country2, callingCode, metadata) {
   var countryCallingCode = country2 ? getCountryCallingCode(country2, metadata) : callingCode;
   if (number.indexOf(countryCallingCode) === 0) {
@@ -2942,7 +2942,7 @@ function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number,
   };
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/extractCountryCallingCode.js
 function extractCountryCallingCode(number, country2, callingCode, metadata) {
   if (!number) {
     return {};
@@ -2991,7 +2991,7 @@ function extractCountryCallingCode(number, country2, callingCode, metadata) {
   return {};
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/AsYouTypeParser.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/AsYouTypeParser.js
 function _slicedToArray2(arr, i) {
   return _arrayWithHoles2(arr) || _iterableToArrayLimit2(arr, i) || _unsupportedIterableToArray10(arr, i) || _nonIterableRest2();
 }
@@ -3343,7 +3343,7 @@ function extractFormattedDigitsAndPlus(text) {
   return [formattedDigits, hasPlus];
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/getCountryByNationalNumber.js
 function _createForOfIteratorHelperLoose10(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -3400,7 +3400,7 @@ function getCountryByNationalNumber(nationalPhoneNumber, _ref) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/getCountryByCallingCode.js
 var USE_NON_GEOGRAPHIC_COUNTRY_CODE2 = false;
 function getCountryByCallingCode(callingCode, _ref) {
   var nationalPhoneNumber = _ref.nationalNumber, defaultCountry = _ref.defaultCountry, metadata = _ref.metadata;
@@ -3423,7 +3423,7 @@ function getCountryByCallingCode(callingCode, _ref) {
   });
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/AsYouType.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/AsYouType.js
 function _slicedToArray3(arr, i) {
   return _arrayWithHoles3(arr) || _iterableToArrayLimit3(arr, i) || _unsupportedIterableToArray12(arr, i) || _nonIterableRest3();
 }
@@ -3880,7 +3880,7 @@ var AsYouType = function() {
   return AsYouType2;
 }();
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/extension/extractExtension.js
 var EXTN_PATTERN = new RegExp("(?:" + createExtensionPattern() + ")$", "i");
 function extractExtension(number) {
   var start = number.search(EXTN_PATTERN);
@@ -3901,7 +3901,7 @@ function extractExtension(number) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/extractPhoneContext.js
 var PLUS_SIGN = "+";
 var RFC3966_VISUAL_SEPARATOR_ = "[\\-\\.\\(\\)]?";
 var RFC3966_PHONE_DIGIT_ = "([" + VALID_DIGITS + "]|" + RFC3966_VISUAL_SEPARATOR_ + ")";
@@ -3942,7 +3942,7 @@ function isPhoneContextValid(phoneContext) {
   return RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) || RFC3966_DOMAINNAME_PATTERN_.test(phoneContext);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js
 function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, _ref) {
   var extractFormattedPhoneNumber2 = _ref.extractFormattedPhoneNumber;
   var phoneContext = extractPhoneContext(numberToParse);
@@ -3976,7 +3976,7 @@ function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse,
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/parse.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/parse.js
 var MAX_INPUT_STRING_LENGTH = 250;
 var PHONE_NUMBER_START_PATTERN = new RegExp("[" + PLUS_CHARS + VALID_DIGITS + "]");
 var AFTER_PHONE_NUMBER_END_PATTERN = new RegExp("[^" + VALID_DIGITS + "#]+$");
@@ -4148,7 +4148,7 @@ function parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCo
   };
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError_.js
 function ownKeys3(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -4184,7 +4184,7 @@ function parsePhoneNumberWithError(text, options, metadata) {
   }), metadata);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/normalizeArguments.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/normalizeArguments.js
 function ownKeys4(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -4311,13 +4311,13 @@ function normalizeArguments(args) {
   };
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/parsePhoneNumberWithError.js
 function parsePhoneNumberWithError2() {
   var _normalizeArguments = normalizeArguments(arguments), text = _normalizeArguments.text, options = _normalizeArguments.options, metadata = _normalizeArguments.metadata;
   return parsePhoneNumberWithError(text, options, metadata);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/parsePhoneNumber_.js
 function ownKeys5(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -4363,13 +4363,13 @@ function parsePhoneNumber2(text, options, metadata) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/parsePhoneNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/parsePhoneNumber.js
 function parsePhoneNumber3() {
   var _normalizeArguments = normalizeArguments(arguments), text = _normalizeArguments.text, options = _normalizeArguments.options, metadata = _normalizeArguments.metadata;
   return parsePhoneNumber2(text, options, metadata);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/isValidPhoneNumber.js
 function ownKeys6(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -4408,7 +4408,7 @@ function isValidPhoneNumber() {
   return phoneNumber && phoneNumber.isValid() || false;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/isPossiblePhoneNumber.js
 function ownKeys7(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -4447,7 +4447,7 @@ function isPossiblePhoneNumber2() {
   return phoneNumber && phoneNumber.isPossible() || false;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/validatePhoneNumberLength.js
 function ownKeys8(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -4499,7 +4499,7 @@ function validatePhoneNumberLength() {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js
 function _defineProperties10(target, props) {
   for (var i = 0; i < props.length; i++) {
     var descriptor = props[i];
@@ -4622,7 +4622,7 @@ var LRUCache = function() {
   return LRUCache2;
 }();
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js
 function _classCallCheck11(instance, Constructor) {
   if (!(instance instanceof Constructor)) {
     throw new TypeError("Cannot call a class as a function");
@@ -4665,7 +4665,7 @@ var RegExpCache = function() {
   return RegExpCache2;
 }();
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/util.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/util.js
 function limit(lower, upper) {
   if (lower < 0 || upper <= 0 || upper < lower) {
     throw new TypeError();
@@ -4686,7 +4686,7 @@ function endsWith(string, substring) {
   return string.indexOf(substring, string.length - substring.length) === string.length - substring.length;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/utf-8.js
 var _pZ = "   ᠎ - \u2028\u2029   ";
 var pZ = "[".concat(_pZ, "]");
 var PZ = "[^".concat(_pZ, "]");
@@ -4719,7 +4719,7 @@ function isInvalidPunctuationSymbol(character) {
   return character === "%" || pSc_regexp.test(character);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/matchPhoneNumberStringAgainstPhoneNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/matchPhoneNumberStringAgainstPhoneNumber.js
 function matchPhoneNumberStringAgainstPhoneNumber(phoneNumberString, phoneNumber, metadata) {
   var phoneNumberStringContainsCallingCode = true;
   var parsedPhoneNumber = parsePhoneNumber3(phoneNumberString, metadata);
@@ -4759,7 +4759,7 @@ function matchPhoneNumberStringAgainstPhoneNumber(phoneNumberString, phoneNumber
   return "NO_MATCH";
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/Leniency.js
 function _createForOfIteratorHelperLoose11(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -5012,13 +5012,13 @@ function allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, for
   return normalizedCandidate.slice(fromIndex).contains(number.getExtension());
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js
 var SECOND_NUMBER_START_PATTERN = /[\\/] *x/;
 function parsePreCandidate(candidate) {
   return trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js
 var SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\d\/[01]?\d)|(?:[01]?\d\/[0-3]?\d))\/(?:[12]\d)?\d{2}/;
 var TIME_STAMPS = /[12]\d{3}[-/]?[01]\d[-/]?[0-3]\d +[0-2]\d$/;
 var TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\d/;
@@ -5035,7 +5035,7 @@ function isValidPreCandidate(candidate, offset, text) {
   return true;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js
 var OPENING_PARENS = "(\\[([";
 var CLOSING_PARENS = ")\\])]";
 var NON_PARENS = "[^".concat(OPENING_PARENS).concat(CLOSING_PARENS, "]");
@@ -5066,7 +5066,7 @@ function isValidCandidate(candidate, offset, text, leniency) {
   return true;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js
 function _createForOfIteratorHelperLoose12(o, allowArrayLike) {
   var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
   if (it)
@@ -5336,7 +5336,7 @@ var PhoneNumberMatcher = function() {
   return PhoneNumberMatcher2;
 }();
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/legacy/findNumbers.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/legacy/findNumbers.js
 function findNumbers() {
   var _normalizeArguments = normalizeArguments(arguments), text = _normalizeArguments.text, options = _normalizeArguments.options, metadata = _normalizeArguments.metadata;
   var matcher = new PhoneNumberMatcher(text, options, metadata);
@@ -5347,7 +5347,7 @@ function findNumbers() {
   return results;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/legacy/searchNumbers.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/legacy/searchNumbers.js
 function _defineProperty9(obj, key, value) {
   if (key in obj) {
     Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
@@ -5376,7 +5376,7 @@ function searchNumbers() {
   });
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js
 function ownKeys9(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -5418,7 +5418,7 @@ function findPhoneNumbersInText() {
   return results;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js
 function ownKeys10(object, enumerableOnly) {
   var keys = Object.keys(object);
   if (Object.getOwnPropertySymbols) {
@@ -5470,19 +5470,19 @@ function searchPhoneNumbersInText() {
   });
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/getCountries.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/getCountries.js
 function getCountries(metadata) {
   return new Metadata(metadata).getCountries();
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/getExampleNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/getExampleNumber.js
 function getExampleNumber(country2, examples, metadata) {
   if (examples[country2]) {
     return new PhoneNumber(country2, examples[country2], metadata);
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js
 function formatIncompletePhoneNumber(value, optionsOrDefaultCountry, metadata) {
   if (!metadata) {
     metadata = optionsOrDefaultCountry;
@@ -5534,4 +5534,4 @@ export {
   getExampleNumber,
   formatIncompletePhoneNumber
 };
-//# sourceMappingURL=chunk-YXGYH7HS.js.map
+//# sourceMappingURL=chunk-SMXOUF54.js.map

+ 0 - 0
unpackage/dist/cache/.vite/deps/chunk-YXGYH7HS.js.map → unpackage/dist/cache/.vite/deps/chunk-SMXOUF54.js.map


+ 1 - 1
unpackage/dist/cache/.vite/deps/dayjs.js

@@ -1,6 +1,6 @@
 import {
   require_dayjs_min
-} from "./chunk-TEB2NVOQ.js";
+} from "./chunk-LDIJA43U.js";
 import "./chunk-UQGIA5KH.js";
 export default require_dayjs_min();
 //# sourceMappingURL=dayjs.js.map

+ 3 - 3
unpackage/dist/cache/.vite/deps/dayjs_locale_zh-cn.js

@@ -1,13 +1,13 @@
 import {
   require_dayjs_min
-} from "./chunk-TEB2NVOQ.js";
+} from "./chunk-LDIJA43U.js";
 import {
   __commonJS
 } from "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/dayjs/locale/zh-cn.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/dayjs/locale/zh-cn.js
 var require_zh_cn = __commonJS({
-  "../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/dayjs/locale/zh-cn.js"(exports, module) {
+  "../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/dayjs/locale/zh-cn.js"(exports, module) {
     !function(e, _) {
       "object" == typeof exports && "undefined" != typeof module ? module.exports = _(require_dayjs_min()) : "function" == typeof define && define.amd ? define(["dayjs"], _) : (e = "undefined" != typeof globalThis ? globalThis : e || self).dayjs_locale_zh_cn = _(e.dayjs);
     }(exports, function(e) {

+ 2 - 2
unpackage/dist/cache/.vite/deps/dayjs_plugin_duration.js

@@ -2,9 +2,9 @@ import {
   __commonJS
 } from "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/dayjs/plugin/duration.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/dayjs/plugin/duration.js
 var require_duration = __commonJS({
-  "../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/dayjs/plugin/duration.js"(exports, module) {
+  "../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/dayjs/plugin/duration.js"(exports, module) {
     !function(t, s) {
       "object" == typeof exports && "undefined" != typeof module ? module.exports = s() : "function" == typeof define && define.amd ? define(s) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs_plugin_duration = s();
     }(exports, function() {

+ 2 - 2
unpackage/dist/cache/.vite/deps/dayjs_plugin_relativeTime.js

@@ -2,9 +2,9 @@ import {
   __commonJS
 } from "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/dayjs/plugin/relativeTime.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/dayjs/plugin/relativeTime.js
 var require_relativeTime = __commonJS({
-  "../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/dayjs/plugin/relativeTime.js"(exports, module) {
+  "../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/dayjs/plugin/relativeTime.js"(exports, module) {
     !function(r, e) {
       "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (r = "undefined" != typeof globalThis ? globalThis : r || self).dayjs_plugin_relativeTime = e();
     }(exports, function() {

文件差異過大導致無法顯示
+ 2 - 2
unpackage/dist/cache/.vite/deps/libphonenumber-js.js


文件差異過大導致無法顯示
+ 2 - 2
unpackage/dist/cache/.vite/deps/libphonenumber-js_mobile.js


+ 2 - 2
unpackage/dist/cache/.vite/deps/lodash.js

@@ -2,9 +2,9 @@ import {
   __commonJS
 } from "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/lodash/lodash.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/lodash/lodash.js
 var require_lodash = __commonJS({
-  "../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/lodash/lodash.js"(exports, module) {
+  "../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/lodash/lodash.js"(exports, module) {
     (function() {
       var undefined;
       var VERSION = "4.17.21";

+ 14 - 14
unpackage/dist/cache/.vite/deps/luch-request.js

@@ -1,6 +1,6 @@
 import "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/utils.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/utils.js
 var toString = Object.prototype.toString;
 function isArray(val) {
   return toString.call(val) === "[object Array]";
@@ -56,7 +56,7 @@ function isUndefined(val) {
   return typeof val === "undefined";
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/helpers/buildURL.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/helpers/buildURL.js
 function encode(val) {
   return encodeURIComponent(val).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
 }
@@ -101,17 +101,17 @@ function buildURL(url, params, paramsSerializer) {
   return url;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/helpers/isAbsoluteURL.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/helpers/isAbsoluteURL.js
 function isAbsoluteURL(url) {
   return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/helpers/combineURLs.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/helpers/combineURLs.js
 function combineURLs(baseURL, relativeURL) {
   return relativeURL ? baseURL.replace(/\/+$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/core/buildFullPath.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/core/buildFullPath.js
 function buildFullPath(baseURL, requestedURL) {
   if (baseURL && !isAbsoluteURL(requestedURL)) {
     return combineURLs(baseURL, requestedURL);
@@ -119,7 +119,7 @@ function buildFullPath(baseURL, requestedURL) {
   return requestedURL;
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/core/settle.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/core/settle.js
 function settle(resolve, reject, response) {
   const validateStatus2 = response.config.validateStatus;
   const status = response.statusCode;
@@ -130,7 +130,7 @@ function settle(resolve, reject, response) {
   }
 }
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/adapters/index.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/adapters/index.js
 var mergeKeys = (keys, config2) => {
   let config = {};
   keys.forEach((prop) => {
@@ -204,12 +204,12 @@ var adapters_default = (config) => {
   });
 };
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/core/dispatchRequest.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/core/dispatchRequest.js
 var dispatchRequest_default = (config) => {
   return adapters_default(config);
 };
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/core/InterceptorManager.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/core/InterceptorManager.js
 function InterceptorManager() {
   this.handlers = [];
 }
@@ -234,7 +234,7 @@ InterceptorManager.prototype.forEach = function forEach2(fn) {
 };
 var InterceptorManager_default = InterceptorManager;
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/core/mergeConfig.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/core/mergeConfig.js
 var mergeKeys2 = (keys, globalsConfig, config2) => {
   let config = {};
   keys.forEach((prop) => {
@@ -295,7 +295,7 @@ var mergeConfig_default = (globalsConfig, config2 = {}) => {
   return config;
 };
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/core/defaults.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/core/defaults.js
 var defaults_default = {
   baseURL: "",
   header: {},
@@ -313,7 +313,7 @@ var defaults_default = {
   forcedJSONParsing: true
 };
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/utils/clone.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/utils/clone.js
 var clone = function() {
   "use strict";
   function _instanceof(obj, type) {
@@ -510,7 +510,7 @@ var clone = function() {
 }();
 var clone_default = clone;
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/core/Request.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/core/Request.js
 var Request = class {
   /**
    * @param {Object} arg - 全局配置
@@ -651,7 +651,7 @@ var Request = class {
   }
 };
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/luch-request/src/lib/luch-request.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/luch-request/src/lib/luch-request.js
 var luch_request_default = Request;
 export {
   luch_request_default as default

+ 1 - 1
unpackage/dist/cache/.vite/deps/pinia-plugin-persist-uni.js

@@ -1,6 +1,6 @@
 import "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/pinia-plugin-persist-uni/dist/pinia-persist-uni.es.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/pinia-plugin-persist-uni/dist/pinia-persist-uni.es.js
 var _a;
 var _b;
 var isH5 = typeof uni !== "undefined" ? ["web", "h5", void 0].includes((_b = (_a = uni == null ? void 0 : uni.getSystemInfoSync()) == null ? void 0 : _a.uniPlatform) == null ? void 0 : _b.toLocaleLowerCase()) : true;

+ 2 - 2
unpackage/dist/cache/.vite/deps/qs-canvas.js

@@ -5,9 +5,9 @@ import {
   __privateSet
 } from "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/qs-canvas/index.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/qs-canvas/index.js
 var require_qs_canvas = __commonJS({
-  "../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/qs-canvas/index.js"(exports, module) {
+  "../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/qs-canvas/index.js"(exports, module) {
     var QSCanvas = function() {
       var _nc;
       const platform = getPlatform(), isUni = platform == "uni", isNode = platform == "node", isWeb = platform == "web", imgCache = {}, vmCache = {}, asyncDrawWhiteList = Object.freeze([

+ 2 - 2
unpackage/dist/cache/.vite/deps/weixin-js-sdk.js

@@ -2,9 +2,9 @@ import {
   __commonJS
 } from "./chunk-UQGIA5KH.js";
 
-// ../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/weixin-js-sdk/index.js
+// ../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/weixin-js-sdk/index.js
 var require_weixin_js_sdk = __commonJS({
-  "../../../../../../Users/xuruhua/Desktop/zx/mall-newfeifan-zx-app/node_modules/weixin-js-sdk/index.js"(exports, module) {
+  "../../../../../../Users/xuruhua/Desktop/zx/new-zx-front-app/node_modules/weixin-js-sdk/index.js"(exports, module) {
     !function(e, n) {
       module.exports = n(e);
     }(typeof window === "object" && window, function(r, e) {

部分文件因文件數量過多而無法顯示