puyao 1 month ago
parent
commit
541d73cf3f
42 changed files with 2706 additions and 119 deletions
  1. 2 4
      api/common.js
  2. 26 1
      api/store.js
  3. 1 1
      assets/css/common.less
  4. BIN
      beiliyoucrm_user_app.zip
  5. 33 3
      main.js
  6. 18 6
      package-lock.json
  7. 61 17
      pages.json
  8. 1 0
      pages/auth/login.vue
  9. 6 0
      pages/healthy/detail.vue
  10. 3 3
      pages/healthy/index.vue
  11. 2 2
      pages/home/healthCourse.vue
  12. 16 12
      pages/home/index.vue
  13. 1 0
      pages/home/new/chineseMedicineList.vue
  14. 3 3
      pages/home/productList.vue
  15. 1 1
      pages/shopping/prescribe.vue
  16. 7 2
      pages/shopping/productDetails.vue
  17. 44 36
      pages/user/index.vue
  18. 1 1
      pages_company/order/confirmCompanyOrder.vue
  19. 44 7
      pages_company/order/confirmOrder.vue
  20. 1 0
      pages_company/order/productDetails.vue
  21. 6 4
      pages_company/storeOrderDetail.vue
  22. 1 1
      pages_company/storeProductPackageDetails.vue
  23. 5 3
      pages_index/index/diseaseDetails.vue
  24. 4 4
      pages_index/index/diseaseList.vue
  25. 6 0
      pages_index/index/doctorArticleDetails.vue
  26. 9 4
      pages_index/index/doctorArticleList.vue
  27. 6 0
      pages_index/index/questionsDetails.vue
  28. 332 0
      pages_shopping/store/integralGoodsDetails.vue
  29. 332 0
      pages_shopping/store/integralGoodsList.vue
  30. 174 0
      pages_shopping/store/integralLogsList.vue
  31. 536 0
      pages_shopping/store/integralOrderDetails.vue
  32. 399 0
      pages_shopping/store/integralOrderList.vue
  33. 606 0
      pages_shopping/store/integralOrderPay.vue
  34. 1 1
      pages_user/user/addPatient.vue
  35. 1 1
      pages_user/user/patient.vue
  36. 1 1
      pages_user/user/refundOrderDetail.vue
  37. 2 1
      pages_user/user/storeOrderDetail.vue
  38. BIN
      static/images/money.png
  39. BIN
      static/images/order.png
  40. BIN
      static/images/order_top_bg.png
  41. BIN
      static/images/wecha_pay.png
  42. 14 0
      utils/common.js

+ 2 - 4
api/common.js

@@ -26,10 +26,8 @@ let request = new Request().http
  export function getWeixinPrescribeTemps() {
  	 return request('/app/common/getWeixinPrescribeTemps',null,'GET');
  }
- 
- 
  export function getDictByKey(data) {
-  	 return request('/app/common/getDictByKey',data,'GET');
- } 
+ 	 return request('/app/common/getDictByKey',data,'GET');
+ }
  
  

+ 26 - 1
api/store.js

@@ -5,4 +5,29 @@ let request = new Request().http
  export function getStoreById(data) {
  	 return request('/app/store/getStoreById',data,'GET');
  }
- 
+ // 获取积分商城
+ export function getIntegralGoodsList(data) {
+ 	 return request('/app/integral/getIntegralGoodsList',data,'GET');
+ }
+ // 获取积分记录
+ export function getUserIntegralLogsList(data) {
+ 	 return request('/app/integral/getUserIntegralLogsList',data,'GET');
+ }
+ 
+
+ // 获取积分订单列表
+ export function getIntegralOrderList(data) {
+ 	 return request('/app/integral/getIntegralOrderList',data,'GET');
+ }
+ // 获取积分订单详情
+ export function getIntegralOrderById(data) {
+ 	 return request('/app/integral/getIntegralOrderById',data,'GET');
+ }
+ // 获取积分商品详情
+ export function getIntegralGoodsById(data) {
+ 	 return request('/app/integral/getIntegralGoodsById',data,'GET');
+ }
+ // 创建积分订单
+ export function createOrder(data) {
+  	return request('/app/integral/createOrder',data,'POST','application/json;charset=UTF-8');
+ }

+ 1 - 1
assets/css/common.less

@@ -197,7 +197,7 @@ checkbox .wx-checkbox-input{
 	border-radius: 50%;
 }
 checkbox .wx-checkbox-input.wx-checkbox-input-checked {
-	background: linear-gradient(135deg, #66b2ef 0%, #018C39 100%);
+	background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
 	border: 1px solid #018C39;
 	border-radius: 50%;
 }

BIN
beiliyoucrm_user_app.zip


+ 33 - 3
main.js

@@ -11,15 +11,45 @@ import utils from './utils/common.js'
 Vue.prototype.utils = utils;
 
 import {
-	setData
+	setData,
 } from './utils/common.js'
 // vuex
 import store from '@/store/index.js'
 Vue.prototype.setData = setData;
-
 App.mpType = 'app'
 const app = new Vue({
 	...App,
 	store
 })
-app.$mount()
+app.$mount()
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+export function createApp() {
+	const app = createSSRApp(App)
+	app.use(uviewPlus)
+	app.config.globalProperties.$isLogin = isLogin
+	app.config.globalProperties.$isEmpty = isEmpty
+	app.config.globalProperties.$parsePhone = parsePhone
+	app.config.globalProperties.$showLoginPage = showLoginPage
+	app.config.globalProperties.$getRegistrationID = getRegistrationID
+	app.config.globalProperties.$navBack = navBack
+	app.config.globalProperties.$navTo = navTo
+	app.config.globalProperties.$qconfig = qconfig
+	app.config.globalProperties.$getAge = getAge
+	app.config.globalProperties.$parseIdCard = parseIdCard
+	app.config.globalProperties.$getDictLabelName = getDictLabelName
+	app.config.globalProperties.$parseText = parseText
+	app.config.globalProperties.$logout = logout,
+	app.config.globalProperties.$getUserInfo = getUserInfo,
+	app.config.globalProperties.$dateFormatStr = dateFormatStr,
+	app.config.globalProperties.$registerIdCode = registerIdCode,
+	app.config.globalProperties.$formatSeconds = formatSeconds, 
+	app.config.globalProperties.$formatDate = formatDate,
+	app.config.globalProperties.$parseIDCardInfo = parseIDCardInfo
+	app.config.globalProperties.$timeFormat = timeFormat;
+	app.config.globalProperties.$formatHour = formatHour;
+	return {
+		app
+	}
+}
+// #endif

+ 18 - 6
package-lock.json

@@ -1,23 +1,35 @@
 {
     "name": "shop",
     "version": "1.0.0",
-    "lockfileVersion": 1,
+    "lockfileVersion": 3,
     "requires": true,
-    "dependencies": {
-        "animate.css": {
+    "packages": {
+        "": {
+            "name": "shop",
+            "version": "1.0.0",
+            "dependencies": {
+                "animate.css": "^3.7.2",
+                "dayjs": "^1.11.13",
+                "uview-ui": "^2.0.36"
+            }
+        },
+        "node_modules/animate.css": {
             "version": "3.7.2",
             "resolved": "https://registry.npmmirror.com/animate.css/-/animate.css-3.7.2.tgz",
             "integrity": "sha512-0bE8zYo7C0KvgOYrSVfrzkbYk6IOTVPNqkiHg2cbyF4Pq/PXzilz4BRWA3hwEUBoMp5VBgrC29lQIZyhRWdBTw=="
         },
-        "dayjs": {
+        "node_modules/dayjs": {
             "version": "1.11.13",
             "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
             "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
         },
-        "uview-ui": {
+        "node_modules/uview-ui": {
             "version": "2.0.36",
             "resolved": "https://registry.npmmirror.com/uview-ui/-/uview-ui-2.0.36.tgz",
-            "integrity": "sha512-ASSZT6M8w3GTO1eFPbsgEFV0U5UujK+8pTNr+MSUbRNcRMC1u63DDTLJVeArV91kWM0bfAexK3SK9pnTqF9TtA=="
+            "integrity": "sha512-ASSZT6M8w3GTO1eFPbsgEFV0U5UujK+8pTNr+MSUbRNcRMC1u63DDTLJVeArV91kWM0bfAexK3SK9pnTqF9TtA==",
+            "engines": {
+                "HBuilderX": "^3.1.0"
+            }
         }
     }
 }

+ 61 - 17
pages.json

@@ -47,7 +47,7 @@
             "path" : "pages/home/productSearch",
             "style" :                                                                                    
             {
-                "navigationBarTitleText": "品搜索",
+                "navigationBarTitleText": "品搜索",
 				"app-plus": {
 					"titleNView": false
 				}
@@ -58,7 +58,7 @@
             "path" : "pages/home/productList",
             "style" :                                                                                    
             {
-                "navigationBarTitleText": "品列表",
+                "navigationBarTitleText": "品列表",
 				"app-plus": {
 					"titleNView": false
 				}
@@ -68,12 +68,9 @@
             "path" : "pages/healthy/index",
             "style" :                                                                                    
             {
-                "navigationBarTitleText": "健康知识",
-                "enablePullDownRefresh": false,
-                "navigationStyle": "custom",
-				"app-plus": {
-					"titleNView": false
-				}
+                "navigationBarTitleText": "健康百科",
+                "enablePullDownRefresh": false
+                
             }
             
         },
@@ -83,6 +80,7 @@
             {
                 "navigationBarTitleText": "",
                 "enablePullDownRefresh": false,
+				"navigationStyle": "custom",
 				"app-plus": {
 					"titleNView": false
 				}
@@ -123,7 +121,7 @@
             "path" : "pages/shopping/productDetails",
             "style" :                                                                                    
             {
-                "navigationBarTitleText": "品详情",
+                "navigationBarTitleText": "品详情",
                 "enablePullDownRefresh": false
             }
             
@@ -141,7 +139,7 @@
             "path" : "pages/shopping/productList",
             "style" :                                                                                    
             {
-                "navigationBarTitleText": "品列表",
+                "navigationBarTitleText": "品列表",
                 "enablePullDownRefresh": false,
                 "navigationStyle": "custom",
                 "app-plus": {
@@ -359,6 +357,7 @@
 				    "style" :                                                                                    
 				    {
 				        "navigationBarTitleText": "问答专区",
+						"navigationStyle": "custom",
 						"app-plus": {
 							"titleNView": false
 						}
@@ -379,6 +378,7 @@
 				    "style" :                                                                                    
 				    {
 				        "navigationBarTitleText": "疾病",
+						"navigationStyle": "custom",
 						"app-plus": {
 							"titleNView": false
 						}
@@ -500,7 +500,7 @@
 				    "path" : "index/doctorArticleList",
 				    "style" :                                                                                    
 				    {
-				        "navigationBarTitleText": "康复医案",
+				        "navigationBarTitleText": "",
 						"enablePullDownRefresh": false,
 						"navigationStyle": "custom",
 						"app-plus": {
@@ -512,7 +512,9 @@
 				    "path" : "index/doctorArticleDetails",
 				    "style" :                                                                                    
 				    {
-				        "navigationBarTitleText": "康复医案",
+				        "navigationBarTitleText": "",
+						"enablePullDownRefresh": false,
+						"navigationStyle": "custom",
 						"app-plus": {
 							"titleNView": false
 						}
@@ -528,7 +530,7 @@
 				{
 					"path": "user/addPatient",
 					"style": {
-						"navigationBarTitleText": "创建就诊人",
+						"navigationBarTitleText": "创建体验者",
 						"app-plus": {
 							"titleNView": false
 						}
@@ -584,7 +586,7 @@
 					"path" : "user/patient",
 					"style" :                                                                                    
 					{
-						"navigationBarTitleText": "病人列表",
+						"navigationBarTitleText": "体验者列表",
 						"enablePullDownRefresh": false
 					}
 					
@@ -723,7 +725,7 @@
 					"path" : "user/userTuiProduct",
 					"style" :                                                                                    
 					{
-						"navigationBarTitleText": "推广品",
+						"navigationBarTitleText": "推广品",
 						"enablePullDownRefresh": false
 					}
 					
@@ -982,7 +984,7 @@
 				{
 					"path": "order/productDetails",
 					"style": {
-						"navigationBarTitleText": "品详情",
+						"navigationBarTitleText": "品详情",
 						"app-plus": {
 							"titleNView": false
 						}
@@ -1027,7 +1029,7 @@
 				{
 					"path": "order/productShowDetails",
 					"style": {
-						"navigationBarTitleText": "品详情",
+						"navigationBarTitleText": "品详情",
 						"app-plus": {
 							"titleNView": false
 						}
@@ -1110,6 +1112,48 @@
 						"navigationStyle": "custom"
 				 	}
 				 	
+				 },
+				 {
+				 	"path" : "store/integralGoodsList",
+				 	"style" : 
+				 	{
+				 		"navigationBarTitleText" : "积分商城"
+				 	}
+				 },
+				 {
+				 	"path" : "store/integralLogsList",
+				 	"style" : 
+				 	{
+				 		"navigationBarTitleText" : "积分记录"
+				 	}
+				 },
+				 {
+				 	"path" : "store/integralOrderList",
+				 	"style" : 
+				 	{
+				 		"navigationBarTitleText" : "兑换记录"
+				 	}
+				 },
+				 {
+				 	"path" : "store/integralGoodsDetails",
+				 	"style" : 
+				 	{
+				 		"navigationBarTitleText" : "产品详情"
+				 	}
+				 },
+				 {
+				 	"path" : "store/integralOrderDetails",
+				 	"style" : 
+				 	{
+				 		"navigationBarTitleText" : "订单详情"
+				 	}
+				 },
+				 {
+				 	"path" : "store/integralOrderPay",
+				 	"style" : 
+				 	{
+				 		"navigationBarTitleText" : "积分兑换"
+				 	}
 				 }
 			]
 		},

+ 1 - 0
pages/auth/login.vue

@@ -161,6 +161,7 @@ export default {
 										icon:'none',
 										title: "登录成功",
 									});
+									uni.$emit('loginRefresh') // 触发全局事件
 									uni.setStorageSync('AppToken',res.token);
 									uni.setStorageSync('userInfo',JSON.stringify(res.user));
 									uni.hideLoading()

+ 6 - 0
pages/healthy/detail.vue

@@ -1,5 +1,11 @@
 <template>
 	<view class="content" :style="$store.state.theme.currentMoban">
+		<u-navbar
+			:title="item.title.length>12?item.title.slice(0,12)+'...':item.title"
+			:autoBack="true"
+		>
+		</u-navbar>
+		<view class="h140"></view>
 		<view class="detail-cont">
 			<view class="title">{{item.title}}</view>
 			<view class="info">

+ 3 - 3
pages/healthy/index.vue

@@ -2,8 +2,8 @@
 	<view>
 		<view class="top-content">
 			<!-- 这里是状态栏 -->
-			<view class="status_bar" :style="{height: statusBarHeight}"></view>
-			<view class="top-title">健康百科</view>
+			<!-- <view class="status_bar" :style="{height: statusBarHeight}"></view>
+			<view class="top-title">健康百科</view> -->
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
@@ -49,7 +49,7 @@
 				</view>
 			</view>
 		</mescroll-body>
-		<tabbar :actindex="1"></tabbar>
+		<!-- <tabbar :actindex="1"></tabbar> -->
 	</view>
 </template>
 

+ 2 - 2
pages/home/healthCourse.vue

@@ -5,7 +5,7 @@
 			 @click="acttab"></u-tabs>
 		</view>
 		<view v-if="acttabs==0" class="list-img flex-1 scrolly p20" >
-			<view class="bgf radius20 list mtb10" v-for="item in 9" >
+			<!-- <view class="bgf radius20 list mtb10" v-for="item in 9" >
 				<view class="posimg">
 					<image src="https://beiliyo-2025.obs.cn-north-4.myhuaweicloud.com/fs/20250116/1737005549926.png" mode="aspectFill" class="img"></image>
 					<image src="../../static/images/common/video_icon.png" class="ve"></image>
@@ -27,7 +27,7 @@
 						</view>
 					</view>
 				</view>
-			</view>
+			</view> -->
 		</view>
 		<view v-else>
 			<view class="column align-center">

+ 16 - 12
pages/home/index.vue

@@ -88,7 +88,7 @@
 		 
 		<!-- 在线问诊、处方查询 -->
 		<view class="online-inquiry mt20" >
-			<view class="item " @click="navTo('/pages/shopping/productList?cateId=183&pid=0&title=经典羊奶')">
+			<view class="item " @click="navTo('/pages_index/index/doctorArticleList?cateId=4&title=5G牧场')">
 				<image class="bg-img radius16" 
 				src="https://beiliyo-2025.obs.cn-north-4.myhuaweicloud.com/fs/20250115/1736956599556.png" mode=""></image>
 				<view class="inner">
@@ -111,13 +111,13 @@
 			<view class="module">
 				<!--养生有道-->
 				<view class="depts">
-						<view class="title">养生有道</view>
-						<view class="dept-box">
-							<view  @click="yangshengClick(item)"  class="dept" :key="index" v-for="(item,index) in menusB"  >
-								<image class="icon" :src="item.icon"></image>
-								<view class="title" >{{item.menuName}} </view>
-							</view>
+					<view class="title">养生有道</view>
+					<view class="dept-box">
+						<view  @click="yangshengClick(item)"  class="dept" :key="index" v-for="(item,index) in menusB"  >
+							<image class="icon" :src="item.icon"></image>
+							<view class="title" >{{item.menuName}} </view>
 						</view>
+					</view>
 				</view>
 				
 				<view class="doctor-articles"  v-if="menvKey.length>0&&menvKey[1].isShow">
@@ -392,7 +392,7 @@
 			<view class="pub-item" style="margin-top: 20rpx;" v-if="menvKey.length>0&&menvKey[3].isShow">
 				<view class="pub-title-box">
 					<text class="left">健康百科</text>
-					<view class="right" @click="switchTo('../healthy/index')">
+					<view class="right" @click="navTo('../healthy/index')">
 						<text class="text">更多</text>
 						<image src="../../static/images/common/arrow_right.png" mode=""></image>
 					</view>
@@ -582,15 +582,19 @@
 					{id:"5",title:"中药图解",page:"/pages_index/index/chineseMedicineList",icon:"https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/ff43572d0d004285b5a3b0ef2663c471.png"},
 					{id:"6",title:"名方今用",page:"/pages_index/index/famousPrescribeList",icon:"https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/45db770e58c34963b0d2ba24a958b617.png"},
 					{id:"7",title:"康复医案",page:"/pages_index/index/doctorArticleList",icon:"https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/e793942797b24035b51f94d894bdfa0b.png"},
-					{id:"8",title:"更多",page:"",icon:"https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/3ee6160289914ee4a8126573fe4dc0ae.png"}
+					// {id:"8",title:"更多",page:"",icon:"https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/3ee6160289914ee4a8126573fe4dc0ae.png"}
 				],
 				userinfoa:[],
 				isuser:false,
-				menvKey:{}
+				menvKey:{},
 			}
 			this.getStoreActivity();
 		},
 		onLoad(option) {
+			uni.$on('loginRefresh', () => {
+			    this.UserInfo = true
+			    this.getUserInfo()
+			})
 			if(option.userCode!=null){
 				uni.setStorageSync('userCode',option.userCode);
 				if(this.utils.checkLoginState()){
@@ -1191,7 +1195,7 @@
 		transition: all 0.5s;
 		background-color: #fff;
 		&.show-back{
-			// background: linear-gradient(135deg, #66b2ef 0%, #018C39 100%);
+			// background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
 		}
 		.status_bar {
 			
@@ -2534,7 +2538,7 @@
 			font-weight: 500;
 			color: #FFFFFF;
 			border: 1px solid #D2E6FF;
-			background: linear-gradient(135deg, #66b2ef 0%, #018C39 100%);
+			background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
 			border-radius: 24upx;
 			margin-left: 30upx;
 		}

+ 1 - 0
pages/home/new/chineseMedicineList.vue

@@ -104,6 +104,7 @@
 						if(res.code==200){
 							if(key=="sys_indication"){
 								this.indicationOptions=res.data;
+								
 							}
 							if(key=="sys_chinese_medicine_flavor"){
 								this.flavorOptions=res.data;

+ 3 - 3
pages/home/productList.vue

@@ -6,7 +6,7 @@
 				<view class="inner">
 					<image class="icon-search" src="../../static/images/search.png" mode=""></image>
 					<input type="text" @confirm="goSearch"   :value="form.productName" 
-						:placeholder="storeId ? '搜索店内商品' : '输入商品名称'" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
+						:placeholder="storeId ? '搜索店内产品' : '输入产品名称'" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 				</view>
 				<view class="icon-search">
 					<image @click="showChange(2)" v-if="showType==1"  src="../../static/images/search1.png" mode=""></image>
@@ -57,9 +57,9 @@
 								<text class="unit">¥</text>
 								<text class="num">{{item.price.toFixed(2)}} </text>
 							</view>
-							<view class="cart-img" @click="navgetTo('../shopping/cart')">
+							<!-- <view class="cart-img" @click="navgetTo('../shopping/cart')">
 								<view class="sale">已售 {{item.sales}} {{item.unitName}}</view>
-							</view>
+							</view> -->
 						</view>
 					</view>
 				</view>

+ 1 - 1
pages/shopping/prescribe.vue

@@ -463,7 +463,7 @@
 		justify-content: space-between;
 		.fixed-top-box{
 			width: 100%;
-			background: linear-gradient(135deg, #66b2ef 0%, #018C39 100%);
+			background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
 			position: fixed;
 			top: 0;
 			left: 0;

+ 7 - 2
pages/shopping/productDetails.vue

@@ -13,9 +13,9 @@
 				<swiper-item  class="swiper-item" v-for="(item,index) in  banner" :key="index">
 						<video id="myVideo" :src='item.url' v-show="item.type == 'video'"
 						show-mute-btn='true' @fullscreenchange='changvideo'
-						show-center-play-btn loop='true'
+						show-center-play-btn loop='true' 
 						vslide-gesture-in-fullscreen='true' :muted='muted' 
-						 enable-danmu  controls  autoplay="true" object-fit='contain'
+						 enable-danmu  controls  autoplay="true" object-fit='cover'
 						class="videotop"></video>
 						<image :src="item.url" mode="aspectFill"  v-show="item.type == 'image'"></image>
 					</swiper-item>
@@ -405,6 +405,11 @@
 							this.product.otPrice=this.product.otPrice.toFixed(2);
 							this.product.price=this.product.price.toFixed(2);
 							if(this.product.sliderImage!=null){
+								console.log(this.product.video+','+this.product.sliderImage
+								)
+								if(this.product.video!=null){
+									this.product.sliderImage=this.product.video+','+this.product.sliderImage
+								}
 								this.banner=this.product.sliderImage.split(',');
 								// 使用正则表达式过滤MP4文件
 								const mp4Files = this.banner.filter(fileName => fileName.split('.').pop() != "mp4");

+ 44 - 36
pages/user/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<view class="top-cont" :style="$store.state.theme.currentMoban">
+		<view class="top-cont" >
 			<image class="bg" 
 			src="https://beiliyo-2025.obs.cn-north-4.myhuaweicloud.com/fs/20250115/1736955760372.png" mode=""></image>
 			<view class="top-inner">
@@ -12,7 +12,7 @@
 							<image :src="user.avatar==null?'/static/images/common/my_heads.png':user.avatar"
 								mode="aspectFill"></image>
 						</view>
-						<view class="name-phone">
+						<view class="name-phone"  v-if="UserInfo">
 							<view class="name">{{user.nickname}}
 								<text class="fs24 ml12 base-color mb20 " v-if="user.isShow==1"
 								>会员</text>
@@ -21,6 +21,8 @@
 							</view>
 							<view class="phone">{{utils.parsePhone(user.phone)}}</view>
 						</view>
+						<view class="fs40 bold name-phone center " @click='getOrderCount()' 
+						v-else>立即登录</view>
 					</view>
 					<view class="right">
 						<!-- <uni-badge size="small" :text="msgNum" absolute="rightTop" type="error">
@@ -157,7 +159,7 @@
 						</view>
 					</view>
 				</view>
-				<view class="log-out" @click="loginout">退出登录</view>
+				<view class="log-out" @click="loginout" v-if="UserInfo">退出登录</view>
 				<view class="banner">
 					<image class="radius10"
 						src="https://beiliyo-2025.obs.cn-north-4.myhuaweicloud.com/fs/20250115/1736956202172.jpg" mode="widthFix">
@@ -180,7 +182,7 @@
 		getOrderCount
 	} from '@/api/storeOrder'
 	import {
-		getUserInfo,geticon
+		getUserInfo,geticon,checkLogin
 	} from '@/api/user'
 	import likeProduct from '@/components/likeProduct.vue'
 	export default {
@@ -205,25 +207,37 @@
 				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
 				// 消息数量
 				msgNum: 0,
-				iconlist:[]
-
+				iconlist:[],
+				UserInfo:uni.getStorageSync('AppToken')
 			};
 		},
-		onLoad() {
-			console.log("onload")
+		computed: {
+		    UserInfo() {
+		        return uni.getStorageSync('AppToken')
+		    }
 		},
 		onShow() {
 			console.log("onshow")
-			this.geticon()
-			//微信登录
-			this.getUserInfo();
-			this.getOrderCount();
+			 this.UserInfo = uni.getStorageSync('AppToken') // 强制更新登录状态
+			    this.geticon()
+			    if(this.UserInfo) {
+			        this.getUserInfo()
+			        this.getOrderCount()
+			        this.checkLogins()
+			    }
 		},
 		onReachBottom() {
 			console.log("onReachBottom")
 			this.$refs.product.getGoodsProducts();
 		},
 		methods: {
+			checkLogins(){
+				checkLogin().then(res=>{
+					if(res.code==200){
+						console.log(res)
+					}
+				})
+			},
 			callService() {
 				uni.makePhoneCall({
 					phoneNumber: "010-53822802",
@@ -279,9 +293,9 @@
 					res => {
 						if (res.code == 200) {
 							if (res.user != null) {
-								this.user = res.user;
 								uni.setStorageSync('users',this.user)
-								console.log(uni.getStorageSync('users',this.user))
+								 this.user = Object.assign({}, res.user) // 使用新对象触发响应式
+								  uni.$forceUpdate() // 强制更新视图
 							} else {
 								this.utils.loginOut();
 							}
@@ -297,28 +311,22 @@
 				);
 			},
 			loginout(){
-				// 1. 清除所有本地存储的用户相关数据
-				        uni.removeStorageSync('AppToken');    // 清除登录Token
-				        uni.removeStorageSync('userInfo');    // 清除用户信息
-				        uni.removeStorageSync('users');       // 清除用户详细信息
-						this.count0 = 0;
-						this.count1 = 0;
-						this.count2 = 0;
-				
-						// 3. 显示退出提示
-						uni.showToast({
-							title: '已退出登录',
-							icon: 'success',
-							duration: 500
-						});
-				
-						// 4. 1.5秒后跳转首页
-						setTimeout(() => {
-							uni.reLaunch({
-								url: '/pages/home/index' // 根据实际首页路径调整
-							});
-						}, 900);
-				
+			    uni.removeStorageSync('AppToken')
+			    uni.removeStorageSync('userInfo')
+			    uni.removeStorageSync('users')
+			    
+			    // 响应式更新数据
+			    this.UserInfo = null
+			    this.user = {
+			        isPromoter: 0,
+			        isWeixinAuth: 0,
+			        phone: "",
+			        nickname: "用户昵称",
+			        avatarUrl: "/static/images/detault_head.png"
+			    }
+			    
+			    uni.showToast({ title: '已退出登录', icon: 'success' })
+			    setTimeout(() => uni.reLaunch({ url: '/pages/home/index' }), 900)
 			},
 			// 跳转页面
 			navgetTo(url) {

+ 1 - 1
pages_company/order/confirmCompanyOrder.vue

@@ -77,8 +77,8 @@
 		},
 		onLoad(option) {
 			this.orderKey=option.orderKey;
+			console.log(this.orderKey)
 			this.getSalesOrder();
-			 
 		},
 		//发送给朋友
 		onShareAppMessage(res) {

+ 44 - 7
pages_company/order/confirmOrder.vue

@@ -59,6 +59,7 @@
 </template>
 
 <script>
+	import {getDicts} from '@/api/index'
 	import {getOrderCount} from '@/api/storeOrder'
 	import {getSalesOrder,addUserCart} from '@/api/companyOrder.js'
 	export default {
@@ -75,16 +76,42 @@
 				
 			}
 		},
+		// onLoad(option) {
+		// 	this.getDicts();
+		// 	console.log("获取orderKey"+option.orderKey);
+		//     this.orderKey = option.orderKey;
+		// 	console.log("获取orderKey"+this.orderKey);
+		//   },
+		//   onShow() {
+		//     if (this.utils.isLogin()) {
+		// 		console.log("获取orderKey"+this.orderKey);
+		//       this.getOrderCount();
+		//       this.getSalesOrder(); // 每次页面显示时重新加载数据
+		//     }
+		//   },
 		onLoad(option) {
+			this.getDicts();
+			this.orderKey=option.orderKey;
 			if(this.utils.isLogin()){
 				this.getOrderCount();
 			}
-			console.log("qxj option:"+JSON.stringify(option));
-			this.orderKey=option.orderKey;
-			this.getSalesOrder();
-			 
+		},
+		onShow() {	
+			if(uni.getStorageSync('AppToken')){
+				this.getSalesOrder();
+			}
 		},
 		methods: {
+			getDicts:function(){
+				getDicts().then(
+					res => {
+						if(res.code==200){
+							uni.setStorageSync('dicts',JSON.stringify(res));
+						} 
+					},
+					rej => {}
+				);
+			},
 			showOrder(){
 				this.utils.isLogin().then(res => {
 					if(res){
@@ -102,6 +129,7 @@
 					res => {
 						if(res.code==200){
 							this.count0=res.count0;
+							console.log(this.count0);
 							if(this.count0>0){
 								this.messageShow=true;
 							}
@@ -116,15 +144,24 @@
 				})
 			},
 			getSalesOrder(item){
+				console.log("获取orderKey"+this.orderKey);
 				var that=this;
+				that.totalPrice=0.00;
+				that.payPrice=0.00;
 				var data={createOrderKey:this.orderKey}
 				getSalesOrder(data).then(
 					res => {
 						if(res.code==200){
 							this.carts=res.carts;
-							this.carts.forEach(function(element) {
-								that.price.totalPrice+=element.price*element.cartNum;
-							});
+							// res.carts.forEach(function(element) {
+							// 	that.price.totalPrice+=element.price*element.cartNum;
+							// });
+							this.price.totalPrice = 0.00;
+                            this.carts.forEach(element => {
+                                const price = Number(element.price) || 0;
+                                const cartNum = Number(element.cartNum) || 0;
+                                this.price.totalPrice += price * cartNum;
+                            });
 							that.price.payPrice=res.totalMoney
 						}else{
 							uni.showToast({

+ 1 - 0
pages_company/order/productDetails.vue

@@ -234,6 +234,7 @@
 					uni.showToast({
 						icon:'none',
 						title: "库存不足",
+						duration:2000
 					});
 					return;
 				}

+ 6 - 4
pages_company/storeOrderDetail.vue

@@ -8,7 +8,7 @@
 				<view class="fixed-top-box">
 					<view class="status_bar" :style="{height: statusBarHeight}"></view>
 					<view class="back-box" @click="back">
-						<image src="../static/images/back_white.png" mode=""></image>
+						<image src="../static/images/back.png" mode=""></image>
 						<text class="title">订单详情</text>
 						<text></text>
 					</view>
@@ -374,7 +374,9 @@
 <style lang="scss">
 	.fixed-top-box{
 		width: 100%;
-		background: linear-gradient(135deg, #66b2ef 0%, #018C39 100%);
+		// background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
+		background-color: #fff;
+		color: #000000;
 		position: fixed;
 		top: 0;
 		left: 0;
@@ -414,7 +416,7 @@
 					font-size: 36upx;
 					font-family: PingFang SC;
 					font-weight: 500;
-					color: #FFFFFF;
+					color: #333;
 				}
 			}
 			.order-status{
@@ -542,7 +544,7 @@
 							display: inline-block;
 							padding: 0 6upx;
 							height: 30upx;
-							background: linear-gradient(90deg, #66b2ef 0%, #018C39 100%);
+							background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
 							border-radius: 4upx;
 							margin-right: 10upx;
 							font-size: 22upx;

+ 1 - 1
pages_company/storeProductPackageDetails.vue

@@ -901,7 +901,7 @@
 			font-weight: 500;
 			color: #FFFFFF;
 			border: 1px solid #D2E6FF;
-			background: linear-gradient(135deg, #66b2ef 0%, #018C39 100%);
+			background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
 			border-radius: 24upx;
 			margin-left: 30upx;
 		}

+ 5 - 3
pages_index/index/diseaseDetails.vue

@@ -1,5 +1,10 @@
 <template>
 	<view class="content" v-if="item!=null" >
+		<u-navbar
+			:title="item.diseaseName"
+			:autoBack="true"
+		></u-navbar>
+		<view style="height: 180rpx;"></view>
 		<view class="detail-cont">
 			<view class="title-box">
 				<view class="line"></view>
@@ -85,9 +90,6 @@
 	page{
 		height: 100%;
 	}
- 
-	.content{
-	}
 	.detail-cont{
 		margin: 20rpx;
 		padding: 15rpx;

+ 4 - 4
pages_index/index/diseaseList.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<view class="top-content" :style="$store.state.theme.currentMoban">
+		<view class="top-content" >
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
@@ -10,7 +10,7 @@
 			</view>
 			
 			<!-- 关键字列表 -->
-			<view class="dept-list">  
+			<!-- <view class="dept-list">  
 				<scroll-view   scroll-x="true" >
 					<view class="inner">
 						<view v-for="(item,index) in depts" :key="index" :class="deptId == item.deptId?'item active':'item'" @click="choseDept(item)">
@@ -18,9 +18,9 @@
 						</view>
 					</view>
 				</scroll-view>
-			</view>
+			</view> -->
 		</view>
-		<mescroll-body  top="192rpx"  ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
+		<mescroll-body  top="110rpx"  ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
 			<view class="disease-list">
 				<view class="item" v-for="(item,index) in dataList" :key="index" @click="showDetail(item)">
 					<view class="left">

+ 6 - 0
pages_index/index/doctorArticleDetails.vue

@@ -1,5 +1,11 @@
 <template>
 	<view class="content">
+		<u-navbar
+			:title="item.title.length>12?item.title.slice(0,12)+'...':item.title"
+			:autoBack="true"
+		>
+		</u-navbar>
+		<view style="height: 180rpx;"></view>
 		<view class="detail-cont">
 			<view class="title">{{item.title}}</view>
 			<view class="info">

+ 9 - 4
pages_index/index/doctorArticleList.vue

@@ -7,14 +7,14 @@
 		</u-navbar>
 		<view class="top-content flex-1" >
 			<!-- 搜索框 -->
-			<view class="h150"></view>
+			<view class="h170"></view>
 			<view class="search-cont">
 				<view class="inner">
 					<image class="icon-search" src="/static/images/search.png" mode=""></image>
 					<input type="text" v-model="keyword" placeholder="输入关键字搜索" confirm-type="search" @confirm="doSearch" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 				</view>
 			</view>
-			<view class="cate-list">
+			<view class="cate-list" v-if="showcate">
 				<!-- 关键字列表 -->
 				<scroll-view   scroll-x="true" >
 					<view class="inner">
@@ -87,7 +87,8 @@
 						tip: '暂无数据'
 					}
 				},
-				dataList: []
+				dataList: [],
+				showcate:true
 			};
 		},
 		onShow() {
@@ -95,7 +96,11 @@
 		},
 		onLoad(option) {
 			this.toptitle=option.title
-			console.log(option)
+			if(option.cateId){
+				this.showcate=false
+				this.cateId=option.cateId
+			}
+			console.log('标题',option)
 		},
 		methods:{
 			getDictByKey(key){

+ 6 - 0
pages_index/index/questionsDetails.vue

@@ -1,5 +1,11 @@
 <template>
 	<view class="content">
+		<u-navbar
+			:title="item.title.length>12?item.title.slice(0,12)+'...':item.title"
+			:autoBack="true"
+		>
+		</u-navbar>
+		<view class="h140"></view>
 		<view class="detail-cont">
 			<view class="title">{{item.title}}</view>
 			<view class="info">

+ 332 - 0
pages_shopping/store/integralGoodsDetails.vue

@@ -0,0 +1,332 @@
+<template>
+	<view class="content">
+		<view class="cont-box">
+			<view class="goods-banner" @click="showImg()">
+				<swiper
+					class="swiper" 
+					:indicator-dots="false" 
+					:circular="true" 
+					:autoplay="true" 
+					:interval="3000" 
+					:duration="1000"
+					indicator-color="rgba(255, 255, 255, 0.6)"
+					indicator-active-color="#ffffff"
+					@change="swiperChange"
+				>
+					<swiper-item  class="swiper-item" v-for="(item,index) in  imgs" :key="index">
+						<image :src="item" mode="aspectFit"></image>
+					</swiper-item>
+				</swiper>
+				<!-- 数量 -->
+				<view class="num-box">{{ activeImg }}/{{ imgs.length }}</view>
+			</view>
+			<view class="integral-box">
+				<view class="title">{{item.goodsName}}</view>
+				<view class="num-box">
+					<view class="price"  >{{item.integral}} 积分</view>
+					<view class="count">原价:{{item.otPrice.toFixed(2)}}元</view>
+				</view>
+				 
+			</view>
+			<view class="desc-box">
+				<view class="desc" v-html="item.descs" >
+					
+				</view>
+			</view>
+		</view>
+		<view class="btn-foot">
+			<view class="p-price-box">
+				<view class="p-name">兑换积分: </view>
+				<view class="p-price"  >{{item.integral}}</view>
+			</view>
+			<view class="btn-box">
+				<view class="btn buy" @click="submit()"  >
+					立即兑换
+				</view>
+			</view>
+		</view>
+	</view> 
+</template>
+
+<script>
+	import {getIntegralGoodsById,createOrder} from '@/api/store.js'
+	import {getUserInfo} from '@/api/user'
+	export default {
+		data() {
+			return {
+				imgs:[],
+				activeImg: 1,
+				goodsId:null,
+				item:{},
+			};
+		},
+		onLoad(option) {
+			this.goodsId=option.goodsId;
+			 
+		},
+		onShow() {
+			this.getIntegralGoodsById();
+		},
+		methods:{
+			submit(){
+				this.getUserInfo()
+				
+			},
+			swiperChange(event) {
+				this.activeImg = event.detail.current + 1
+			},
+			 getUserInfo(){
+			 	getUserInfo().then(
+			 		res => {
+			 			if(res.code==200){
+							uni.navigateTo({
+								url: "/pages_shopping/store/integralOrderPay?goodsId="+this.goodsId
+							})
+			 				if(res.user!=null){
+			 					this.integral=res.user.integral;
+			 				}
+			 			}else{
+			 				uni.showToast({
+			 					icon:'none',
+			 					title: "请求失败",
+			 				});
+			 			}
+			 		},
+			 		rej => {}
+			 	);
+			 },
+			showImg() {
+				 //预览图片
+				 uni.previewImage({
+				 	urls: this.imgs,
+				 	current: this.imgs[0]
+				 });
+			},
+			getIntegralGoodsById(){
+				let data = {goodsId:this.goodsId};
+				getIntegralGoodsById(data).then(
+					res => {
+						if(res.code==200){
+							this.item=res.data;
+							if(res.data.images!=null){
+								this.imgs=res.data.images.split(",")
+							}
+							else{
+								this.activeImg=0;
+							}
+							console.log(this.imgs)
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: "请求失败",
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		height: 100%;
+	}
+	.content{
+		height: 100%;
+		display: flex;
+		flex-direction: column;
+		 
+		.cont-box{
+			padding-bottom: 121rpx;
+			.integral-box{
+				background-color: #fff;
+				padding: 20rpx;
+				width: calc(100% - 40rpx);
+				display: flex;
+				flex-direction: column;
+				align-items: flex-start;
+				justify-content: flex-start;
+				 
+				.title{
+					font-weight: bold;
+					font-size: 34upx;
+					font-family: PingFang SC;
+					color: #111;
+				}
+				.desc{
+					margin-top: 15rpx;
+					display: flex;
+					align-items: flex-start;
+					justify-content: flex-start;
+					.cycle{
+						background-color: #eee;
+						border-radius: 30rpx;
+						padding: 5rpx 15rpx;
+						font-size: 26upx;
+						font-family: PingFang SC;
+						color: #FF5C03;
+					}
+					.duration{
+						margin-left: 10rpx;
+						background-color: #eee;
+						border-radius: 30rpx;
+						padding: 5rpx 15rpx;
+						font-size: 26upx;
+						font-family: PingFang SC;
+						color: #FF5C03;
+					}
+					
+				}
+				.num-box{
+					margin-top: 15rpx;
+					flex: 1;
+					display: flex;
+					align-items: flex-end;
+					justify-content: space-between;
+					width: 100%;
+					.price{
+						padding: 5rpx 10rpx;
+						background-color: #FF5C03;
+						border-radius: 30rpx;
+						font-size: 20upx;
+						font-family: PingFang SC;
+						color: #ffffff;
+					}
+					
+					.count{
+						font-size: 24upx;
+						font-family: PingFang SC;
+						color: #333333;
+					}
+					
+				}
+				
+				 
+			}
+			.desc-box{
+				background-color: #fff;
+				padding: 20rpx;
+				margin-top: 10rpx;
+				.title-box{
+					display: flex;
+					flex-direction: row;
+					align-items: center;
+					justify-content: flex-start;
+					.title{
+						font-size: 32upx;
+						font-family: PingFang SC;
+						font-weight: bold;
+						color: #111111;
+					}
+					.line{
+						margin-right: 15rpx;
+						height: 30rpx;
+						width: 6rpx;
+						background-color: #FF5C03;
+						
+					}
+					 
+				}
+				.desc{
+					margin-top: 15rpx;
+					font-size: 28upx;
+					font-family: PingFang SC;
+					color: #9a9a9c;
+				}
+			}
+			 
+		}
+	}
+	 
+	.btn-foot{
+		box-sizing: border-box;
+		width: 100%;
+		height: 121upx;
+		background: #FFFFFF;
+		padding: 0 32upx 0 28upx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		z-index: 99;
+		.p-price-box{
+			display: flex;
+			align-items: center;
+			.p-name{
+				font-size: 28upx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #666666;
+			}
+			.p-price{
+				margin-left: 10rpx;
+				color: #FF6633;
+				font-size: 32upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				
+			}
+		}
+		 
+		.btn-box{
+			display: flex;
+			align-items: center;
+			.btn{
+				width: 200upx;
+				height: 88upx;
+				line-height: 88upx;
+				text-align: center;
+				border-radius: 44upx;
+				margin-left: 20upx;
+				font-size: 30upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #FFFFFF;
+				&:first-child{
+					margin-left: 0;
+				}
+			 
+				&.buy{
+					background: #018C39;
+				}
+				 
+			}
+			
+		}
+	}
+	 
+	.goods-banner{
+		height: 756upx;
+		background-color: #FFFFFF;
+		position: relative;
+		.swiper-item{
+			box-sizing: border-box;
+		}
+		.swiper,
+		.swiper-item,
+		.swiper-item image{
+			width: 100%;
+			height: 100%;
+		}
+		.num-box{
+			width: 80upx;
+			height: 44upx;
+			line-height: 44upx;
+			text-align: center;
+			font-size: 24upx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			background: rgba(0, 0, 0, .3);
+			border-radius: 22upx;
+			position: absolute;
+			right: 30upx;
+			bottom: 30upx;
+			z-index: 10;
+		}
+	}
+</style>

+ 332 - 0
pages_shopping/store/integralGoodsList.vue

@@ -0,0 +1,332 @@
+<template>
+	<view class="content">
+		<view class="cont-box">
+			<view class="top-box">
+				<view class="my-integral">
+					<view class="left">
+						<view class="label">我的积分</view>
+						<view style="margin-top: 30rpx;display: flex;align-items: baseline;">
+							<view class="integral">{{integral}}</view>
+							<!-- <view class="integralbtn" @click="goIntegral">获取积分</view> -->
+						</view>
+					</view>
+					<view class="btn-box">
+						<view class="btn" @click="navTo('/pages_shopping/store/integralLogsList')">获得记录</view>
+						<view class="btn" @click="navTo('/pages_shopping/store/integralOrderList')">兑换记录</view>
+					</view>
+				</view>
+				<view class="tabs" v-if="tabs.length>0">
+					<u-tabs
+					 :current="tabIndex"
+					 :scrollable="true"
+					 :list="tabs"  
+					 lineColor="#018C39"
+					@change="tabChange">
+					</u-tabs>
+				</view>
+			</view>
+			<mescroll-body  top="288rpx" bottom="0"  ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
+			<view class="integral-box"  >
+				<view class="item"  @click="navTo('/pages_shopping/store/integralGoodsDetails?goodsId='+item.goodsId)"
+				 v-for="(item,index) in dataList" :key="index">
+					<view class="top">
+						<image :src="item.imgUrl"></image>
+					</view>
+					<view class="bottom">
+						<view class="title ellipsis2">
+							{{item.goodsName}}
+						</view>
+						<view class="price-box">
+							<view class="price">{{item.integral}}积分</view>
+							<!-- <view class="count">价值:{{item.otPrice.toFixed(2)}}元</view> -->
+						</view>
+					</view>
+				</view>
+			</view>
+			</mescroll-body>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+ import {getDictByKey} from '@/api/common.js'
+ import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+ import {getIntegralGoodsList} from '@/api/store.js'
+ import {getUserInfo} from '@/api/user'
+ export default {
+	mixins: [MescrollMixin], 
+ 	data() {
+ 		return {
+			integral:0,
+			type:"0",
+			typeOptions:[],
+			tabIndex:0,
+			tabs: [],
+			mescroll:null,
+			downOption: {   //下拉刷新
+			 	use:true,
+				auto: false // 不自动加载 (mixin已处理第一个tab触发downCallback)
+			},
+			upOption: {
+				onScroll:false,
+				use: true, // 是否启用上拉加载; 默认true
+				page: {
+					pae: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+					size: 10 // 每页数据的数量,默认10
+				},
+				noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+				textNoMore:"已经到底了",
+				empty: {
+					icon:'https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png',
+					tip: '暂无数据'
+				}
+			},
+			dataList: []
+ 		}
+ 	},
+	onLoad() {
+		this.getDictByKey("sys_integral_goods_type");
+		// this.getUserInfo();
+	},
+ 	methods: {
+		getUserInfo(){
+			getUserInfo().then(
+				res => {
+					if(res.code==200){
+						if(res.user!=null){
+							this.integral=res.user.integral;
+						}
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: "请求失败",
+						});
+					}
+				},
+				rej => {}
+			);
+		},
+		navTo(url) {
+			uni.navigateTo({
+				url: url
+			})
+		},
+		goIntegral() {
+			let pages = getCurrentPages();
+			let url = pages[ pages.length - 2];
+			if(pages.length > 1&&url&&url.route == 'pages/user/integral/points') {
+				uni.navigateBack()
+			} else {
+				uni.navigateTo({
+					url: '/pages/user/integral/points'
+				})
+			}
+		},
+		getDictByKey(key){
+			var data={key:key}
+			var that=this;
+			getDictByKey(data).then(
+				res => {
+					if(res.code==200){
+						this.typeOptions=res.data;
+						this.typeOptions.forEach(function(item,index){
+							var data={name:item.dictLabel};
+							that.tabs.push(data);
+						})
+						if(this.tabs.length>0){
+							this.tabIndex=0
+						}
+						
+					}
+				},
+				err => {
+				}
+			);
+			
+		},
+		tabChange(item){
+			console.log(item.index)
+			this.type=this.typeOptions[item.index].dictValue;
+			this.mescroll.resetUpScroll()
+		},
+		mescrollInit(mescroll) {
+			this.mescroll = mescroll;
+		},
+		/*下拉刷新的回调 */
+		downCallback(mescroll) {
+			mescroll.resetUpScroll()
+		},
+		upCallback(page) {
+			//联网加载数据
+			var that = this;
+			var data = {
+				pageNum: page.num,
+				pageSize: page.size
+			};
+			if(this.type!=null){
+				data.goodsType=this.type
+			}
+			getIntegralGoodsList(data).then(res => {
+				if(res.code==200){
+					//设置列表数据
+					if (page.num == 1) {
+						that.dataList = res.data.list; 
+						
+					} else {
+						that.dataList = that.dataList.concat(res.data.list);
+						 
+					}
+					that.mescroll.endBySize(res.data.list.length, res.data.total);
+					
+				}else{
+					uni.showToast({
+						icon:'none',
+						title: "请求失败",
+					});
+					that.dataList = null;
+					that.mescroll.endErr();
+				}
+			});
+		}
+		 
+ 	}
+ }
+ 
+ 
+</script>
+
+
+<style scoped lang="scss">
+page{
+	height: 100%;
+	background-color: #f5f5f5;
+}
+.content{
+	height: 100%;
+	.cont-box{
+		.top-box{
+			z-index: 999;
+			padding: 30rpx;
+			width: calc(100% - 60rpx);
+			// width: 100%;
+			position: absolute;
+			top: 0rpx;
+			left: 0rpx;
+			.my-integral{
+				height: 200rpx;
+				box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
+				background: linear-gradient(#018C39, #b2e2af);
+				border-radius: 30rpx;
+				display: flex;
+				align-items: flex-start;
+				justify-content: space-between;
+				padding: 30rpx;
+				.integralbtn {
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					color: #fff;
+					margin-left: 16rpx;
+					text-decoration: underline;
+				}
+				.btn{
+					margin-bottom: 30rpx;
+					background-color: #fff;
+					border-radius: 30rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					padding: 10rpx 15rpx;
+					font-size: 20upx;
+					font-family: PingFang SC;
+					color: #018C39;
+				}
+				.left{
+					.label{
+						font-size: 28upx;
+						font-family: PingFang SC;
+						color: #fff;
+					}
+					.integral{
+						font-weight: bold;
+						font-size: 40upx;
+						font-family: PingFang SC;
+						color: #fff;
+					}
+				}
+				.btn-box{
+					display: flex;
+					flex-direction: column;
+					align-items: flex-start;
+					justify-content: flex-start;
+				}
+			}
+			.tabs{
+				height: 88rpx;
+			}
+		}
+		.integral-box{
+			padding: 30rpx;
+			display: flex;
+			align-items: flex-start;
+			justify-content: flex-start;
+			flex-wrap: wrap;
+			.item{
+				box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
+				background-color: #fff;
+				width: calc(50% - 20rpx);
+				border-radius: 15rpx;
+				margin: 10rpx;
+				display: flex;
+				flex-direction: column;
+				align-items: flex-start;
+				justify-content: flex-start;
+				&:last-child{
+				}
+				.top{
+					width:100%;
+					height:300rpx;
+					image{
+						border-radius: 15rpx 15rpx 0rpx 0rpx;
+						width:100%;
+						height:300rpx;
+					}
+					
+				}
+				.bottom{
+					width: calc(100% - 30rpx);
+					padding: 15rpx;
+					.title{
+						font-weight: bold;
+						font-size: 28upx;
+						font-family: PingFang SC;
+						color: #111111;
+					}
+					.price-box{
+						margin-top: 10rpx;
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						width: 100%;
+						.price{
+							padding: 5rpx 10rpx;
+							background-color: #FF5C03;
+							border-radius: 30rpx;
+							font-size: 20upx;
+							font-family: PingFang SC;
+							color: #ffffff;
+						}
+						.count{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							color: #333333;
+						}
+						
+					}
+				}
+			}
+		}
+	}
+}
+
+</style>

+ 174 - 0
pages_shopping/store/integralLogsList.vue

@@ -0,0 +1,174 @@
+<template>
+	<view class="page">
+		<view class="content">
+			<mescroll-body      ref="mescrollRef" @init="mescrollInit" :up="upOption" :down="downOption" @down="downCallback" @up="upCallback">
+			<view class="logs-item" v-for="(item) in dataList">
+				<view class="left">
+					<text class="title"  >
+						{{ utils.getDictLabelNames(typeOptions,item.logType) }}
+					</text>
+					<view class="time">{{item.createTime}}</view>
+				</view>
+				<view class="right">
+					<text  :class="item.integral>0?'money green':'money red'">{{item.integral}}</text>
+					<text class="remark">剩余积分:{{item.balance}}</text>
+				</view>
+			</view>
+			</mescroll-body>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getDictByKey} from '@/api/common.js'
+	import {getUserIntegralLogsList} from '@/api/store.js'
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	export default {
+		mixins: [MescrollMixin], // 使用mixin
+		data() {
+			return {
+				typeOptions:[],
+				mescroll:null,
+				downOption: {
+					auto:false//不要自动加载
+				},
+				upOption: {
+					onScroll:false,
+					use: true, // 是否启用上拉加载; 默认true
+					page: {
+						num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+						size: 20 // 每页数据的数量,默认10
+					},
+					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+					textNoMore:"已经到底了",
+					empty: {
+						icon:'https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png',
+						tip: '暂无数据'
+					}
+				},
+				dataList: []
+				 
+			}
+		},
+		onLoad() {
+			this.getDictByKey("sys_integral_log_type");
+		},
+		methods: {
+			getDictByKey(key){
+				var data={key:key}
+				getDictByKey(data).then(
+					res => {
+						if(res.code==200){
+							this.typeOptions=res.data;
+						}
+					},
+					err => {
+					}
+				);
+				
+			},
+			mescrollInit(mescroll) {
+				this.mescroll = mescroll;
+			},
+			/*下拉刷新的回调 */
+			downCallback(mescroll) {
+				mescroll.resetUpScroll()
+			},
+			upCallback(page) {
+				//联网加载数据
+				var that = this;
+				var data = {
+					pageNum: page.num,
+					pageSize: page.size
+				};
+				uni.showLoading({
+					title:"加载中..."
+				})
+				getUserIntegralLogsList(data).then(res => {
+					uni.hideLoading()
+					if(res.code==200){
+						//设置列表数据
+						if (page.num == 1) {
+							that.dataList = res.data.list; 
+							
+						} else {
+							that.dataList = that.dataList.concat(res.data.list);
+							 
+						}
+						that.mescroll.endBySize(res.data.list.length, res.data.total);
+						
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: "请求失败",
+						});
+						that.dataList = null;
+						that.mescroll.endErr();
+					}
+				});
+			},
+			 
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.page{
+	}
+	.content{
+		.logs-item{
+			width:calc(100% - 20rpx);
+			background-color: #fff;
+			padding: 20rpx 10rpx;
+			display: flex;
+			align-items: flex-start;
+			justify-content: space-between;
+			border-top: 1rpx solid #efefef;
+			.left{
+				display: flex;
+				flex-direction: column;
+				align-items: flex-start;
+				justify-content: flex-start;
+				.title{
+					font-size: 26rpx;
+					color: #111;
+				}
+				.time{
+					margin-top: 20rpx;
+					font-size: 24rpx;
+					color: #a5a5a5;
+				}
+			}
+			.right{
+				display: flex;
+				flex-direction: column;
+				align-items: flex-end;
+				justify-content: flex-end;
+				.money{
+					font-size: 28rpx;
+					font-weight: bold;
+					color: #111;
+				}
+				.green{
+					color: green;
+				}
+				.red{
+					color:#ff0000;
+				}
+				.remark{
+					margin-top: 20rpx;
+					font-size: 24rpx;
+					color: #a5a5a5;
+					.green{
+						color: green;
+					}
+					.red{
+						color: red;
+					}
+				}
+			}
+		}
+		
+	}
+	 
+</style>

+ 536 - 0
pages_shopping/store/integralOrderDetails.vue

@@ -0,0 +1,536 @@
+<template>
+	<view>
+		<view class="cont">
+			<view class="bg"></view>
+			<view class="inner">			
+				<!-- 订单状态 -->
+				<view class="order-status">
+				 
+					<!-- 待发货 -->
+					<view v-if="order.status == 1" class="inner">
+						<view class="img-box">
+							<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/520e24fba47441b3b0f73b5250bb0b57.png" mode=""></image>
+						</view>
+						<view class="status-box">
+							<text class="status">待发货</text>
+							<text class="desc">等待后台发货</text>
+						</view>
+					</view>
+					<!-- 已发货、待收货 -->
+					<view v-if="order.status == 2" class="inner">
+						<view class="img-box">
+							<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/1e6ba423ff7e4537bef87a022d530015.png" mode=""></image>
+						</view>
+						<view class="status-box">
+							<text class="status">待收货</text>
+							<text class="desc">运输中</text>
+						</view>
+					</view>
+					<!-- 已完成 -->
+					<view v-if="order.status == 3" class="inner">
+						<view class="img-box">
+							<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/0712ba14f3a648afa69c9912fcbf9b61.png" mode=""></image>
+						</view>
+						<view class="status-box">
+							<text class="status">已完成</text>
+							<text class="desc">订单已确认收货,交易完成</text>
+						</view>
+					</view>
+					<!--交易取消 -->
+					<view v-if="order.status == -1" class="inner">
+						<view class="img-box">
+							<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/02f95bd03e854a9c8076aef1e6c05e74.png" mode=""></image>
+						</view>
+						<view class="status-box">
+							<text class="status">交易关闭</text>
+							<text class="desc">订单已取消</text>
+						</view>
+					</view>
+					 
+				</view>
+				<!-- 下单人信息 -->
+				<view class="order-placer" v-if="order.userName!=null">
+					<view class="inner">
+						<image class="location" src="/static/images/location.png" mode=""></image>
+						<view class="info">
+							<view class="name-phone">
+								<text class="text">{{order.userName}}</text>
+								<text class="text" v-if="order.userPhone!=null">{{order.userPhone}}</text>
+							</view>
+							<view class="address ellipsis2">
+								{{order.userAddress}}
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="content">
+					<view class="goods-list">
+						<view   class="item"  >
+							<view class="img-box">
+								<image :src="item.imgUrl==''?'/static/images/drug.svg':item.imgUrl" mode="aspectFill"></image>
+							</view>
+							<view class="info-box">
+								<view>
+									<view class="name-box ellipsis2">
+										 {{item.goodsName}}
+									</view>
+								</view>
+								<view class="price-num">
+									<view class="price">
+										<text class="unit">积分:</text>
+										<text class="num"  >{{item.integral}}</text>
+									</view>
+									<view class="num"  >x1</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<!-- 订单信息 -->
+					<view class="order-info">
+						<view class="title">订单信息</view>
+						<view class="item">
+							<text class="label">订单编号</text>
+							<view class="sn-box">
+								<text class="text">{{order.orderCode}}</text>
+								<view class="copy-btn" @click="copyOrderSn(order.orderCode)">复制</view>
+							</view>
+						</view>
+						<view class="item">
+							<text class="label">下单时间</text>
+							<text class="text">{{order.createTime}}</text>
+						</view>
+					 
+						<view   class="item">
+							<text class="label">使用积分</text>
+							<text class="text"  >¥{{order.integral}}</text>
+						</view>
+						<view   class="item" v-if="order.deliveryName!=null">
+						 	<text class="label">物流公司</text>
+						 	<text class="text"  >{{order.deliveryName}}</text>
+						</view>
+						<view   class="item" v-if="order.deliverySn!=null">
+						 	<text class="label">物流单号</text>
+						 	<text class="text"  >{{order.deliverySn}}</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 按钮 -->
+		<view   class="btn-box">
+			<!-- <view class="btn cancel">
+				联系客服
+				<button class='contact-btn' open-type="contact">
+				</button>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	
+	import {getIntegralOrderById} from '@/api/store.js'
+	export default {
+		data() {
+			return {
+				orderId:null,
+				order:null,
+				item:null,
+		 
+			};
+		},
+		onLoad(option) {
+			this.orderId = option.orderId
+		},
+		onShow() {
+			this.getIntegralOrderById()
+		},
+		methods: {
+			getIntegralOrderById(){
+				var data={orderId:this.orderId};
+				getIntegralOrderById(data).then(res => {
+					if(res.code==200){
+						 this.order=res.data;
+						 this.item=JSON.parse(this.order.itemJson) 
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: "请求失败",
+						});
+						 
+					}
+				});
+			},
+			 
+			// 复制订单编号
+			copyOrderSn(text) {
+				// 复制方法
+				uni.setClipboardData({
+					data:text,
+					success:()=>{
+						uni.showToast({
+							title:'内容已成功复制到剪切板',
+							icon:'none'
+						})
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.cont{
+		width: 100%;
+		position: relative;
+		.bg{
+			width: 100%;
+			height: 350upx;
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: 1;
+			background-color: #FF5C03;
+			background: linear-gradient(#FF5C03, #E2C99E);
+			border-radius: 0rpx 0rpx 100rpx 100rpx;
+		}
+		.inner{
+			position: relative;
+			padding: 30upx 0rpx;
+			width: 100%;
+			height: 100%;
+			z-index: 999;
+			.order-status{
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding: 0 30upx;
+				.inner{
+					display: flex;
+					align-items: center;
+					.img-box{
+						width: 96upx;
+						height: 96upx;
+						margin-right: 30upx;
+						image{
+							width: 100%;
+							height: 100%;
+						}
+					}
+					.status-box{
+						height: 96upx;
+						display: flex;
+						flex-direction: column;
+						justify-content: center;
+						.status{
+							font-size: 40upx;
+							font-family: PingFang SC;
+							font-weight: bold;
+							color: #FFFFFF;
+							line-height: 1;
+						}
+						.desc{
+							font-size: 26upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #FFFFFF;
+							line-height: 1;
+							margin-top: 30upx;
+						}
+					}
+				}
+			}
+			.order-placer{
+				margin-top: 30upx;
+				padding: 0 20upx;
+				.inner{
+					box-sizing: border-box;
+					border-radius: 16upx;
+					height: 150upx;
+					padding: 40upx 30upx;
+					display: flex;
+					align-items: center;
+					background: #FFFFFF;
+					.location{
+						width: 24upx;
+						height: 27upx;
+						margin-right: 18upx;
+						flex-shrink: 0;
+					}
+					.info{
+						.name-phone{
+							display: flex;
+							align-items: center;
+							.text{
+								font-size: 28upx;
+								font-family: PingFang SC;
+								font-weight: bold;
+								color: #333333;
+								line-height: 1;
+								margin-right: 20upx;
+								&:last-child{
+									margin-right: 0;
+								}
+							}
+						}
+						.address{
+							font-size: 26upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #999999;
+							line-height: 1.3;
+							margin-top: 10upx;
+						}
+					}
+				}
+				
+			}
+		}
+	}
+	.content{
+		margin: 20rpx 0rpx;
+		padding: 0 20upx 140rpx 20upx;
+		.goods-list{
+			padding: 0 30upx;
+			background-color: #FFFFFF;
+			border-radius: 16upx;
+			.item{
+				padding: 30upx 0;
+				border-bottom: 1px solid #EDEEEF;
+				display: flex;
+				align-items: center;
+				.img-box{
+					width: 160upx;
+					height: 160upx;
+					margin-right: 30upx;
+					image{
+						width: 100%;
+						height: 100%;
+					}
+				}
+				.info-box{
+					width: calc(100% - 190upx);
+					height: 160upx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-between;
+					.name-box{
+						font-size: 28upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #111111;
+						line-height: 40upx;
+						.tag{
+							display: inline-block;
+							padding: 0 6upx;
+							height: 30upx;
+							background: linear-gradient(90deg, #FF5C03 0%, #E2C99E 100%);
+							border-radius: 4upx;
+							margin-right: 10upx;
+							font-size: 22upx;
+							font-family: PingFang SC;
+							font-weight: bold;
+							color: #FFFFFF;
+							line-height: 30upx;
+							float: left;
+							margin-top: 7upx;
+						}
+					}
+					.spec{
+						margin-top: 18upx;
+						font-size: 24upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+						line-height: 1;
+					}
+					.price-num{
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						.price{
+							display: flex;
+							align-items: flex-end;
+							.unit{
+								font-size: 24upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #111111;
+								line-height: 1.2;
+								margin-right: 4upx;
+							}
+							.num{
+								font-size: 32upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #111111;
+								line-height: 1;
+							}
+						}
+						.num{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #999999;
+							line-height: 1;
+						}
+					}
+				}
+			}
+			.sub-total{
+				height: 88upx;
+				display: flex;
+				align-items: center;
+				justify-content: flex-end;
+				.discount{
+					font-size: 24upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 1;
+					margin-right: 30upx;
+				}
+				.label{
+					font-size: 24upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.price{
+					display: flex;
+					align-items: flex-end;
+					.unit{
+						font-size: 24upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #FF6633;
+						line-height: 1.2;
+						margin-right: 4upx;
+					}
+					.num{
+						font-size: 32upx;
+						font-family: PingFang SC;
+						font-weight: bold;
+						color: #FF6633;
+						line-height: 1;
+					}
+				}
+			}
+		}
+		.order-info{
+			margin-top: 20upx;
+			background: #FFFFFF;
+			border-radius: 16upx;
+			padding: 40upx 30upx;
+			.title{
+				font-size: 30upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #222222;
+				line-height: 1;
+			}
+			.item{
+				margin-top: 40upx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				.label{
+					font-size: 26upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #666666;
+					line-height: 1;
+				}
+				.text{
+					font-size: 26upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #222222;
+					line-height: 32upx;
+				}
+				.cont-text{
+					font-size: 26upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #666666;
+					.bold{
+						color: #111111;
+					}
+				}
+				.sn-box{
+					display: flex;
+					align-items: center;
+					.copy-btn{
+						width: 58upx;
+						height: 32upx;
+						line-height: 32upx;
+						text-align: center;
+						font-size: 22upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #222222;
+						background: #F5F5F5;
+						border-radius: 4upx;
+						margin-left: 24upx;
+					}
+				}
+				.check-box{
+					display: flex;
+					align-items: center;
+					image{
+						width: 14upx;
+						height: 24upx;
+						margin-left: 10upx;
+					}
+				}
+			}
+			.line{
+				width: 100%;
+				height: 1px;
+				background: #F0F0F0;
+				margin-top: 30upx;
+			}
+		}
+	}
+	.btn-box{
+		z-index: 999;
+		bottom: 0;
+		width: 100%;
+		position: fixed;
+		height: 120upx;
+		box-sizing: border-box;
+		background: #FFFFFF;
+		padding: 0 30upx;
+		display: flex;
+		align-items: center;
+		justify-content: flex-end;
+		.btn{
+			position: relative;
+			width: 155upx;
+			height: 64upx;
+			line-height: 64upx;
+			font-size: 26upx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			text-align: center;
+			border-radius: 32upx;
+			margin-left: 15upx;
+			&.cancel{
+				
+				border: 1px solid #DDDDDD;
+				color: #666666;
+			}
+			&.pay{
+				background: #FF5C03;
+				color: #FFFFFF;
+			}
+			.contact-btn {
+				top: 0;
+				position: absolute;
+				width:100%;
+				height:100%;
+				opacity: 0;
+			}
+		}
+	}
+</style>

+ 399 - 0
pages_shopping/store/integralOrderList.vue

@@ -0,0 +1,399 @@
+<template>
+	<view class="content">
+		<view class="top-fixed">
+			 <u-tabs
+			  :scrollable="false"
+			  :list="tabs"  
+			  lineColor="#018C39"
+			 @change="tabChange">
+			 </u-tabs>
+		</view>
+		<!-- 订单列表 -->
+		<mescroll-body  top="88rpx" bottom="0"  ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
+			<view class="order-list">
+				<view  v-for="(item,index) in dataList" :key="index" class="item" >
+					<!-- 订单号,状态 -->
+					<view class="ordersn-box" @click="showDetail(item)">
+						<view class="num">订单号:{{item.orderCode}}</view>
+						<view class="status-box">
+							<text   class="text info" v-if="item.status==1">	
+							{{utils.getDictLabelNames(orderStatusOptions,item.status)}}
+							</text>
+							<text   class="text success" v-if="item.status>1">
+							{{utils.getDictLabelNames(orderStatusOptions,item.status)}}
+							</text>
+							<text   class="text info" v-if="item.status<0">
+							{{utils.getDictLabelNames(orderStatusOptions,item.status)}}
+							</text>
+						</view>
+					</view>
+					<view  class="drug-list"  >
+						<view @click="showDetail(item)"    v-for="(subItem,subIndex) in item.items" :key="subIndex" class="drug-item" >
+							<view class="img-box">
+								<image :src="subItem.imgUrl==''?'/static/images/drug.svg':subItem.imgUrl" mode="aspectFill"></image>
+							</view>
+							<view class="drug-info"  >
+								<view>
+									<view class="name-box ellipsis2">
+										{{subItem.goodsName}}
+									</view>
+								</view>
+								<view class="num-box">
+									<view class="price">
+										<text class="unit">积分</text>
+										<text class="num" >{{subItem.integral}}</text>
+									</view>
+									<view class="amount"  >x1</view>
+								</view>
+							</view>
+						</view>
+						<!-- 实付金额、按钮 -->
+						<view class="bottom-box">
+							<view class="amount-paid">
+								<text class="label">使用积分:</text>
+								<view class="price-box">
+									<view class="unit">¥</view>
+									<view class="num" >{{item.integral}}</view>
+								</view>
+							</view>
+							<view class="btn-box">
+								<!-- <view    class="btn cancel">
+									联系客服
+									<button class='contact-btn' open-type="contact">
+									</button>
+								</view> -->
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</mescroll-body>
+	</view>
+</template>
+
+<script>
+ import {getDictByKey} from '@/api/common.js'
+ import {getIntegralOrderList} from '@/api/store.js'
+ import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+ 
+ export default {
+	mixins: [MescrollMixin],
+ 	data() {
+ 		return {
+			orderStatusOptions:[],
+			searchKey:"",
+			status:"0",
+			tabs: [
+				{name:"全部",id:"0"},
+				{name:"待发货",id:"1"},
+				{name:"待收货",id:"2"},
+				{name:"已完成",id:"3"},
+				{name:"已取消",id:"-1"}
+			],
+			mescroll:null,
+			// 上拉加载的配置
+			upOption: {
+				onScroll:false,
+				use: true, // 是否启用上拉加载; 默认true
+				page: {
+					pae: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+					size: 10 // 每页数据的数量,默认10
+				},
+				noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
+				textNoMore:"已经到底了",
+				empty: {
+					icon:'https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png',
+					tip: '暂无数据'
+				}
+			},
+			// 列表数据
+			dataList: []
+ 		}
+ 	},
+	onLoad() {
+		this.getDictByKey("sys_integral_order_status");
+	},
+ 	methods: {
+		getDictByKey(key){
+			var data={key:key}
+			getDictByKey(data).then(
+				res => {
+					if(res.code==200){
+						if(key=="sys_integral_order_status"){
+							this.orderStatusOptions=res.data;
+						}
+					}
+				},
+				err => {
+				}
+			);
+			
+		},
+		tabChange(item) {
+			this.status = item.id
+			this.mescroll.resetUpScroll()
+		},
+		mescrollInit(mescroll) {
+			this.mescroll = mescroll;
+		},
+		/*下拉刷新的回调 */
+		downCallback(mescroll) {
+			mescroll.resetUpScroll()
+		},
+		upCallback(page) {
+			//联网加载数据
+			var that = this;
+			var data = {
+				keyword:this.searchKey,
+				status:this.status,
+				pageNum: page.num,
+				pageSize: page.size
+			};
+			getIntegralOrderList(data).then(res => {
+				if(res.code==200){
+					res.data.list.forEach(function(value, index, array){
+						value.items=[];
+						value.items.push(JSON.parse(value.itemJson))
+					})
+					//设置列表数据
+					if (page.num == 1) {
+						that.dataList = res.data.list; 
+						
+					} else {
+						that.dataList = that.dataList.concat(res.data.list);
+						 
+					}
+					that.mescroll.endBySize(res.data.list.length, res.data.total);
+					
+				}else{
+					uni.showToast({
+						icon:'none',
+						title: "请求失败",
+					});
+					that.dataList = null;
+					that.mescroll.endErr();
+				}
+			});
+		},
+		// 查看订单详情
+		showDetail(item) {
+			uni.navigateTo({
+				url: './integralOrderDetails?orderId=' + item.orderId
+			})
+		},
+ 	}
+ }
+ 
+ 
+</script>
+
+
+<style scoped lang="scss">
+.top-fixed{
+		width: 100%;
+		position: absolute;
+		top: 0;
+		left: 0;
+		z-index: 10;
+		height: 88upx;
+		background-color: #fff;
+	}
+	.order-list{
+		padding: 20upx;
+		.item{
+			background: #FFFFFF;
+			border-radius: 16upx;
+			padding: 0 30upx;
+			margin-bottom: 20upx;
+			.ordersn-box{
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding: 34upx 0 20upx;
+				.num{
+					font-size: 26upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 1;
+				}
+				.status-box{
+					display: flex;
+					align-items: center;
+					.text{
+						font-size: 28upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						line-height: 1;
+						&.success{
+							color: #FF5C03;
+						}
+						&.black{
+							color: #111111;
+						}
+						&.info{
+							color: #999999;
+						}
+					}
+				}
+			}
+			.drug-list{
+				.drug-item{
+					padding: 30upx 0;
+					border-bottom: 1px soli #F0F0F0;
+					display: flex;
+					align-items: center;
+					.img-box{
+						width: 160upx;
+						height: 160upx;
+						margin-right: 30upx;
+						flex-shrink: 0;
+						image{
+							width: 100%;
+							height: 100%;
+						}
+					}
+					.drug-info{
+						width: calc(100% - 190upx);
+						height: 160upx;
+						display: flex;
+						flex-direction: column;
+						justify-content: space-between;
+						.name-box{
+							font-size: 28upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #111111;
+							line-height: 40upx;
+							.tag{
+								display: inline-block;
+								padding: 0 6upx;
+								height: 30upx;
+								background: linear-gradient(90deg, #C39A58 0%, #E2C99E 100%);
+								border-radius: 4upx;
+								margin-right: 10upx;
+								font-size: 22upx;
+								font-family: PingFang SC;
+								font-weight: bold;
+								color: #FFFFFF;
+								line-height: 30upx;
+								float: left;
+								margin-top: 7upx;
+							}
+						}
+						.spec{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #999999;
+							line-height: 1;
+							margin-top: 10upx;
+						}
+						.num-box{
+							display: flex;
+							align-items: center;
+							justify-content: space-between;
+							.price{
+								display: flex;
+								align-items: flex-end;
+								.unit{
+									font-size: 24upx;
+									font-family: PingFang SC;
+									font-weight: 500;
+									color: #111111;
+									line-height: 1.2;
+									margin-right: 4upx;
+								}
+								.num{
+									font-size: 32upx;
+									font-family: PingFang SC;
+									font-weight: 500;
+									color: #111111;
+									line-height: 1;
+								}
+							}
+							.amount{
+								font-size: 24upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #999999;
+								line-height: 1;
+							}
+						}
+					}
+				}
+				.bottom-box{
+					height: 110upx;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					.amount-paid{
+						display: flex;
+						align-items: center;
+						.label{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #999999;
+							line-height: 1;
+						}
+						.price-box{
+							display: flex;
+							align-items: flex-end;
+							.unit{
+								font-size: 24upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #FF6633;
+								line-height: 1.2;
+								margin-right: 4upx;
+							}
+							.num{
+								font-size: 32upx;
+								font-family: PingFang SC;
+								font-weight: bold;
+								color: #FF6633;
+								line-height: 1;
+							}
+						}
+					}
+					.btn-box{
+						box-sizing: border-box;
+						display: flex;
+						align-items: center;
+						.btn{
+							position: relative;
+							width: 155upx;
+							height: 64upx;
+							line-height: 64upx;
+							font-size: 26upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							text-align: center;
+							border-radius: 32upx;
+							margin-left: 15upx;
+							&:first-child{
+								margin-left: 0;
+							}
+							&.cancel{
+								border: 1px solid #DDDDDD;
+								color: #666666;
+							}
+							&.pay{
+								background: #FF5C03;
+								color: #FFFFFF;
+							}
+							.contact-btn {
+								top: 0;
+								position: absolute;
+								width:100%;
+								height:100%;
+								opacity: 0;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 606 - 0
pages_shopping/store/integralOrderPay.vue

@@ -0,0 +1,606 @@
+<template>
+	<view>
+		<view class="inner-box">
+			<!-- 收货人 -->
+			<view class="address-box" v-if="address==null" @click="openAddress()">
+				<view class="left">
+					<view class="name-box">
+						<text class="text name">添加收货地址</text>
+					</view>
+				</view>
+				<view class="arrow-box">
+					<image src="/static/images/arrow_gray.png" mode=""></image>
+				</view>
+			</view>
+			<view class="address-box" v-if="address!=null" @click="openAddress()">
+				<view class="left">
+					<view class="name-box">
+						<text class="text name">{{address.realName}}</text>
+						<text class="text" v-if="address.phone!=null">{{address.phone}}</text>
+					</view>
+					<view class="address">
+						{{address.address}} 
+					</view>
+				</view>
+				<view class="arrow-box">
+					<image src="/static/images/arrow_gray.png" mode=""></image>
+				</view>
+			</view>
+			<!-- 药品列表 -->
+			<view class="goods-list">
+				<view     class="item">
+					<view class="img-box">
+						<image :src="item.imgUrl==''?'/static/images/drug.svg':item.imgUrl" mode="aspectFill"></image>
+					</view>
+					<view class="info-box">
+						<view>
+							<view class="name-box ellipsis2">
+								{{item.goodsName}}
+							</view>
+							 
+						</view>
+						<view class="price-num">
+							<view class="price">
+								<text class="unit">积分</text>
+								<text class="num">{{item.integral}}</text>
+							</view>
+							<view class="num"  >x1</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="other-info">
+				<view class="item">
+					<view class="left">
+						<text class="label">所需积分:</text>
+					</view>
+					<view class="right">
+						<text class="text">{{item.integral}}</text>
+					</view>
+				</view>
+			</view>
+			 
+		</view>
+		 
+		<!-- 底部按钮 -->
+		<view class="btn-box">
+			<view class="btn" v-if="item!=null" @click="payOrder()">立即兑换</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getIntegralGoodsById,createOrder} from '@/api/store.js'
+	export default {
+		data() {
+			return {
+				addressId:null,
+				address:null,
+				orderId:null,
+				order:null,
+				item:null,
+			}
+		},
+		onLoad(option) {
+			this.goodsId=option.goodsId;
+			var that=this;
+			uni.$on('updateAddress', (e) => {
+				console.log(e)
+				that.addressId=e.id;
+				
+			 	that.address=e;
+				that.address.address=e.province+e.city+e.district+e.detail
+			})
+			this.getIntegralGoodsById();
+		},
+		methods: {
+			getIntegralGoodsById(){
+				var data={goodsId:this.goodsId};
+				console.log(data)
+				getIntegralGoodsById(data).then(
+					res => {
+						if(res.code==200){
+							this.item=res.data;
+							 
+						}else{
+							 
+						}
+					},
+					rej => {}
+				);
+			},
+			openAddress(){
+				uni.navigateTo({
+					url: '/pages_user/user/address'
+				})
+			},
+			payOrder(){
+				console.log(this.addressId)
+				if(this.addressId==null){
+					uni.showToast({
+						icon:'none',
+						title: "请选择收货地址",
+					});
+					return;
+					
+				}
+				var data = {
+					goodsId:this.goodsId,
+					addressId:this.addressId,
+				};
+				var that=this;
+				uni.showLoading();
+				createOrder(data).then(
+					res => {
+						if(res.code==200){
+							console.log(7898)
+							// uni.redirectTo({
+							// 	url:"./integralOrderPaySuccess?orderId="+res.order.orderId
+							// }) 
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+							setTimeout(()=>{
+								uni.redirectTo({
+									url:"/pages_shopping/store/integralOrderList"
+								}) 
+							},200)
+							
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					},
+					rej => {}
+				);
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.inner-box{
+		padding: 20upx 20upx 140upx;
+		.address-box{
+			box-sizing: border-box;
+			min-height: 171upx;
+			background: #FFFFFF;
+			border-radius: 16upx;
+			background-image: url(/static/images/address_bg.png);
+			background-repeat: no-repeat;
+			background-size: 100% 30upx;
+			background-position: left bottom;
+			padding: 38upx 30upx 36upx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			.left{
+				width: 92%;
+				.name-box{
+					display: flex;
+					align-items: center;
+					.text{
+						font-size: 32upx;
+						font-family: PingFang SC;
+						font-weight: bold;
+						color: #111111;
+						line-height: 1;
+						&.name{
+							margin-right: 30upx;
+						}
+					}
+				}
+				.address{
+					font-size: 28upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #666666;
+					line-height: 42upx;
+					text-align:left;
+					margin-top: 23upx;
+				}
+			}
+			.arrow-box{
+				width: 12upx;
+				height: 23upx;
+				display: flex;
+				align-items: cenetr;
+				justify-content: cenetr;
+				image{
+					width: 100%;
+					height: 100%;
+				}
+			}
+		}
+		.goods-list{
+			margin-top: 20upx;
+			padding: 0 30upx;
+			background-color: #FFFFFF;
+			border-radius: 16upx;
+			.item{
+				padding: 30upx 0;
+				border-bottom: 1px solid #EDEEEF;
+				display: flex;
+				align-items: center;
+				.img-box{
+					width: 160upx;
+					height: 160upx;
+					margin-right: 30upx;
+					image{
+						width: 100%;
+						height: 100%;
+					}
+				}
+				.info-box{
+					width: calc(100% - 190upx);
+					height: 160upx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-between;
+					.name-box{
+						font-size: 28upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #111111;
+						line-height: 40upx;
+						.tag{
+							display: inline-block;
+							padding: 0 6upx;
+							height: 30upx;
+							background: linear-gradient(90deg, #C39A58 0%, #E2C99E 100%);
+							border-radius: 4upx;
+							margin-right: 10upx;
+							font-size: 22upx;
+							font-family: PingFang SC;
+							font-weight: bold;
+							color: #FFFFFF;
+							line-height: 30upx;
+							float: left;
+							margin-top: 7upx;
+						}
+					}
+					.spec{
+						margin-top: 10upx;
+						font-size: 24upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+						line-height: 1;
+					}
+					.price-num{
+						display: flex;
+						align-items: center;
+						justify-content: space-between;
+						.price{
+							display: flex;
+							align-items: flex-end;
+							.unit{
+								font-size: 24upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #111111;
+								line-height: 1.2;
+								margin-right: 4upx;
+							}
+							.num{
+								font-size: 32upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #111111;
+								line-height: 1;
+							}
+						}
+						.num{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #999999;
+							line-height: 1;
+						}
+					}
+				}
+			}
+			.sub-total{
+				height: 88upx;
+				display: flex;
+				align-items: center;
+				justify-content: flex-end;
+				.label{
+					font-size: 24upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.price{
+					display: flex;
+					align-items: flex-end;
+					.unit{
+						font-size: 24upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #FF6633;
+						line-height: 1.2;
+						margin-right: 4upx;
+					}
+					.num{
+						font-size: 32upx;
+						font-family: PingFang SC;
+						font-weight: bold;
+						color: #FF6633;
+						line-height: 1;
+					}
+				}
+			}
+		}
+		.other-info{
+			margin-top: 20upx;
+			background-color: #fff;
+			border-radius: 20upx;
+			overflow: hidden;
+			padding: 0 30upx;
+			.title{
+				height: 80upx;
+				line-height: 80upx;
+				font-size: 30upx;
+				color: #000;
+				font-weight: bold;
+				border-bottom: 2upx solid #eeeeee;
+			}
+			.item{
+				height: 80upx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				&:last-child{
+					border-bottom: none;
+				}
+				.left{
+					flex: 1;
+					display: flex;
+					align-items: center;
+					.label{
+						min-width: 140rpx;
+						font-size: 28upx;
+						color: #000;
+					}
+					.text{
+						font-size: 28upx;
+						color: #1b1b1b;
+					}
+				}
+				.right{
+					display: flex;
+					align-items: center;
+					justify-content: flex-end;
+					.text{
+						font-size: 28upx;
+						color: #1b1b1b;
+					}
+					.ic-close{
+						margin-left: 10rpx;
+						width: 30rpx;
+						height:30rpx;
+					}
+					.ic-back{
+						margin-left: 10rpx;
+						width: 15rpx;
+						height:30rpx;
+					}
+				}
+				.item-btn{
+					max-width: 200rpx;
+					padding: 0rpx 15rpx;
+					height: 48upx;
+					border-radius: 24upx;
+					line-height: 48upx;
+					font-size: 24upx;
+					color: #000;
+					border: 1upx solid #d8d8d8;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+				}
+			}
+		}
+		.remarks{
+			height: 88upx;
+			padding: 0 30upx;
+			background: #FFFFFF;
+			border-radius: 16upx;
+			margin-top: 20upx;
+			display: flex;
+			align-items: center;
+			input{
+				width: 100%;
+				font-size: 28upx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #000000;
+			}
+			.input{
+				font-size: 28upx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+			}
+		}
+	}
+	
+	
+	.btn-box{
+	 	height: 140upx;
+	 	z-index: 9999;
+	 	width: 100%;
+	 	padding: 0rpx 30upx;
+	 	position: fixed;
+	 	bottom: 0;
+	 	left: 0;
+	 	box-sizing: border-box;
+	 	background-color: #ffffff;
+	 	display: flex;
+	 	align-items: center;
+	 	justify-content: center;
+	 	.btn{
+	 		width: 100%;
+	 		height: 88upx;
+	 		line-height: 88upx;
+	 		text-align: center;
+	 		font-size: 34upx;
+	 		font-family: PingFang SC;
+	 		font-weight: 400;
+	 		color: #FFFFFF;
+	 		background: #018C39;
+	 		border-radius: 10upx;
+	 	}
+	}
+	.pay-type{
+	 	box-sizing: border-box;
+	 	height: 192upx;
+	 	background: #FFFFFF;
+	 	border-radius: 16upx;
+	 	margin-top: 20upx;
+	 	padding: 40upx 30upx;
+	 	display: flex;
+	 	flex-direction: column;
+	 	justify-content: space-between;
+	 	.title{
+	 		font-size: 28upx;
+	 		font-family: PingFang SC;
+	 		font-weight: 500;
+	 		color: #999999;
+	 		line-height: 1;
+	 	}
+	 	.item{
+	 		display: flex;
+	 		align-items: center;
+	 		justify-content: space-between;
+	 		.left{
+	 			display: flex;
+	 			align-items: center;
+	 			image{
+	 				width: 44upx;
+	 				height: 44upx;
+	 				margin-right: 20upx;
+	 			}
+	 			.text{
+	 				font-size: 30upx;
+	 				font-family: PingFang SC;
+	 				font-weight: bold;
+	 				color: #222222;
+	 				line-height: 1;
+	 			}
+	 		}
+	 	}
+	}
+	.coupon{
+		height: 100%;
+		.empty{
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			height: 650rpx;
+			width: 100%;
+			image{
+				width: 280rpx;
+				height: 200rpx;
+			}
+		}
+	}
+	.coupon-box{
+		overflow-y: auto;
+		padding: 80rpx 20rpx 80rpx;
+		height: 650rpx;
+		width: 100%;
+		display: flex;
+		flex-direction: column;
+		align-items: flex-start;
+		justify-content: flex-start;
+		box-sizing: border-box;
+		.coupon-item{
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: flex-start;
+			margin-bottom: 16rpx;
+			height:170rpx;
+			&:last-child{
+				margin-bottom: 0rpx;
+			}
+			.left{
+				 color: #fff;
+				font-size: 36rpx;
+				font-weight: bold;
+				text-align: center;
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				justify-content: center;
+				position: relative;
+				width: 230rpx;
+				image{
+					position: absolute;
+					width: 230rpx;
+					height:170rpx;
+					color: #fff;
+				}
+				.num{
+					font-size: 40rpx;
+				}
+				.pic-num{
+					font-size: 20rpx;
+					z-index: 99;
+				}
+			}
+			.right{
+				
+				display: flex;
+				flex-direction: column;
+				align-items: flex-start;
+				justify-content: flex-start;
+				height:170rpx;
+				width: calc(100% - 230rpx);
+				padding: 0 17rpx 0 24rpx;
+				background-color: #fff;
+				box-sizing: border-box;
+				.title{
+					width: 100%;
+					font-size: 0.3 * 100rpx;
+					color: #282828;
+					height: 0.93 * 100rpx;
+					line-height: 0.93 * 100rpx;
+					border-bottom: 1px solid #f0f0f0;
+				}
+				.btns{
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					width: 100%;
+					font-size: 0.2 * 100rpx;
+					color: #999;
+					height: 0.76 * 100rpx;
+					.btn{
+						width: 1.36 * 100rpx;
+						height: 0.44 * 100rpx;
+						border-radius: 0.22 * 100rpx;
+						font-size: 0.22 * 100rpx;
+						color: #fff;
+						text-align: center;
+						line-height: 0.44 * 100rpx;
+						background-color: #FF5C03;
+						.gray{
+							 background-color: #ccc;
+						}
+					}
+					
+				}
+			}
+		}
+		
+	} 
+</style>
+ 
+

+ 1 - 1
pages_user/user/addPatient.vue

@@ -42,7 +42,7 @@
 			</view>
 		</view>
 		<view class="btn-box">
-			<view class="sub-btn" @click="submit()">保存就诊人</view>
+			<view class="sub-btn" @click="submit()">保存信息</view>
 		</view>
 	</view>
 </template>

+ 1 - 1
pages_user/user/patient.vue

@@ -23,7 +23,7 @@
 			</view>
 		</view>
 		<view class="btn-box">
-			<view class="sub-btn" @click="addPatient">创建用药人</view>
+			<view class="sub-btn" @click="addPatient">创建体验者</view>
 		</view>
 	</view>
 </template>

+ 1 - 1
pages_user/user/refundOrderDetail.vue

@@ -271,7 +271,7 @@
 <style lang="scss">
 	.fixed-top-box{
 		width: 100%;
-		background: linear-gradient(135deg, #66b2ef 0%, #018C39 100%);
+		background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
 		position: fixed;
 		top: 0;
 		left: 0;

+ 2 - 1
pages_user/user/storeOrderDetail.vue

@@ -173,6 +173,7 @@
 							<text class="label">支付方式</text>
 							<text class="text" v-if="order.payType==1">微信支付</text>
 							<text class="text" v-if="order.payType==2">物流代收</text>
+							<text class="text" v-if="order.payType==3">货到付款</text>
 						</view>
 						<view   class="item">
 							<text class="label">订单金额</text>
@@ -433,7 +434,7 @@
 <style lang="scss">
 	.fixed-top-box{
 		width: 100%;
-		//background: linear-gradient(135deg, #66b2ef 0%, #018C39 100%);
+		//background: linear-gradient(135deg, #018C39 0%, #1fbd2c 100%);
 		position: fixed;
 		top: 0;
 		left: 0;

BIN
static/images/money.png


BIN
static/images/order.png


BIN
static/images/order_top_bg.png


BIN
static/images/wecha_pay.png


+ 14 - 0
utils/common.js

@@ -62,6 +62,19 @@ var getDictLabelName= function(key,dictValue) {
 	});
 	return name;
 }
+var getDictLabelNames= function(dicts,dictValue) {
+	if(dictValue==null){
+		return "";
+	}
+	var name="";
+	dicts.forEach(function(item, index, array) {
+		 if(dictValue.toString()==item.dictValue.toString())
+		 {
+			 name=item.dictLabel
+		 }
+	});
+	return name;
+}
 var getDict= function(key) {
 	var dicts = uni.getStorageSync('dicts');
 	dicts=JSON.parse(dicts);
@@ -428,6 +441,7 @@ module.exports = {
         isEmpty : isEmpty,
 		checkLoginState : checkLoginState,
 		getDictLabelName:getDictLabelName,
+		getDictLabelNames:getDictLabelNames,
 		photosToArr:photosToArr,
 		dateFormat:dateFormat,
 		getProvider:getProvider,