Parcourir la source

合并提交信息

puyao il y a 2 semaines
Parent
commit
3b19e712d0
100 fichiers modifiés avec 6164 ajouts et 913 suppressions
  1. 93 21
      App.vue
  2. 5 2
      api/class.js
  3. 8 0
      api/companyUser.js
  4. 8 4
      api/coupon.js
  5. 94 0
      api/courseAuto.js
  6. 12 0
      api/courseLook.js
  7. 20 0
      api/manageCompany.js
  8. 25 4
      api/payment.js
  9. 4 1
      api/storeOrder.js
  10. 4 0
      api/user.js
  11. 38 18
      common/request.js
  12. 1 1
      components/chengpeng-audio/redme.md
  13. 1 1
      components/im/tui-chat/message-elements/audio-message/index.vue
  14. 1 1
      components/im/tui-chat/message-elements/custom-message/index.vue
  15. 1 1
      components/im/tui-chat/message-elements/file-message/index.vue
  16. 2 2
      components/im/tui-chat/message-elements/video-message/index.vue
  17. 0 8
      components/im/tui-chat/message-input/index.vue
  18. 1 1
      components/im/tui-chat/message-private/service-evaluation/index.vue
  19. 4 4
      components/likeProduct.vue
  20. 2 2
      components/px-popup-bottom/px-popup-bottom.vue
  21. 10 10
      components/tabbar/tabbar.vue
  22. 4 4
      components/tuiProduct.vue
  23. 3 0
      main.js
  24. 8 5
      manifest.json
  25. 317 10
      package-lock.json
  26. 77 23
      pages.json
  27. 87 10
      pages/auth/login.vue
  28. 2 2
      pages/common/launch.vue
  29. 11 7
      pages/healthy/detail.vue
  30. 1 1
      pages/healthy/idea.vue
  31. 9 9
      pages/healthy/index.vue
  32. 2 2
      pages/healthy/readUsers.vue
  33. 0 1
      pages/home/cert.vue
  34. 15 5
      pages/home/components/HotProduct.vue
  35. 6 6
      pages/home/doctorCase.vue
  36. 60 75
      pages/home/index.vue
  37. 1 1
      pages/home/new/articleDetails.vue
  38. 2 2
      pages/home/new/articleList.vue
  39. 2 2
      pages/home/new/chineseMedicineDetails.vue
  40. 2 2
      pages/home/new/chineseMedicineList.vue
  41. 2 2
      pages/home/new/diseaseDetails.vue
  42. 2 2
      pages/home/new/diseaseList.vue
  43. 2 2
      pages/home/new/famousPrescribeDetails.vue
  44. 2 2
      pages/home/new/famousPrescribeList.vue
  45. 2 2
      pages/home/new/medicatedFoodDetails.vue
  46. 1 1
      pages/home/new/medicatedFoodList.vue
  47. 2 2
      pages/home/new/questionsDetails.vue
  48. 2 2
      pages/home/new/questionsList.vue
  49. 6 6
      pages/home/new/test.vue
  50. 2 2
      pages/home/new/testDetails.vue
  51. 2 2
      pages/home/new/testList.vue
  52. 2 2
      pages/home/new/vesselDetails.vue
  53. 2 2
      pages/home/new/vesselList.vue
  54. 24 21
      pages/home/productList.vue
  55. 3 3
      pages/home/productSearch.vue
  56. 1 1
      pages/index/index.vue
  57. 20 6
      pages/shopping/cart.vue
  58. 79 42
      pages/shopping/confirmOrder.vue
  59. 225 125
      pages/shopping/index.vue
  60. 1 1
      pages/shopping/payOrder.vue
  61. 11 11
      pages/shopping/paymentOrder.vue
  62. 14 14
      pages/shopping/prescribe.vue
  63. 28 25
      pages/shopping/productDetails.vue
  64. 1 1
      pages/shopping/success.vue
  65. 35 27
      pages/user/index.vue
  66. 1 1
      pages_company/auth/login.vue
  67. 2 2
      pages_company/coupon.vue
  68. 1 1
      pages_company/couponDetails.vue
  69. 38 13
      pages_company/index.vue
  70. 174 0
      pages_company/order/DirectDetail.vue
  71. 77 0
      pages_company/order/DirectDiscount.vue
  72. 17 3
      pages_company/order/cart.vue
  73. 9 5
      pages_company/order/confirmCompanyOrder.vue
  74. 29 6
      pages_company/order/confirmOrder.vue
  75. 2 2
      pages_company/order/coupon.vue
  76. 162 0
      pages_company/order/lineDetails.vue
  77. 12 12
      pages_company/order/productDetails.vue
  78. 13 13
      pages_company/order/productList.vue
  79. 6 6
      pages_company/order/productShowDetails.vue
  80. 237 0
      pages_company/paymentStatistics.vue
  81. 3 3
      pages_company/storeOrder.vue
  82. 11 11
      pages_company/storeOrderDetail.vue
  83. 3 3
      pages_company/storeProductPackage.vue
  84. 4 4
      pages_company/storeProductPackageDetails.vue
  85. 127 0
      pages_company/wechatcode.vue
  86. 5 2
      pages_course/becomeSale.vue
  87. 2 2
      pages_course/becomeVIP.vue
  88. 705 0
      pages_course/components/commentBox.vue
  89. 162 0
      pages_course/components/descInfo.vue
  90. 206 0
      pages_course/components/descInfoNav.vue
  91. 146 0
      pages_course/components/ques.vue
  92. 65 70
      pages_course/learn.vue
  93. 2 2
      pages_course/reward.vue
  94. 34 23
      pages_course/teacherClassroom.vue
  95. 2305 0
      pages_course/video.vue
  96. 129 128
      pages_course/videovip.vue
  97. 42 28
      pages_course/webview.vue
  98. 11 11
      pages_doctor/doctorDetail.vue
  99. 4 4
      pages_doctor/doctorIm.vue
  100. 4 4
      pages_doctor/doctorList.vue

+ 93 - 21
App.vue

@@ -2,33 +2,70 @@
 	import Vue from 'vue'
 	// import TIM from 'tim-wx-sdk';
 	// import COS from 'cos-wx-sdk-v5';
+	import {getMyStoreOrderById,finishOrder} from '@/api/storeOrder'
 	export default {
+		globalData: {
+			// wsUrl: 'wss://websocket.cdwjyyh.com',
+			wsUrl: '',
+			appId: 'wx94951f52d3ac5e25',
+		},
 		onLoad: function (){
 			
 		},
 		onLaunch: function() {
-			// uni.hideTabBar({ animation: true })
-			// uni.$TUIKit = TIM.create({
-			// 	SDKAppID: 1400693126
-			// });
-			// uni.$TUIKit.registerPlugin({
-			// 	'cos-wx-sdk': COS
-			// });
-			// uni.$TUIKitTIM = TIM;
-			// uni.$TUIKitEvent = TIM.EVENT;
-			// uni.$TUIKitVersion = TIM.VERSION;
-			// uni.$TUIKitTypes = TIM.TYPES; // 监听系统级事件
-			// uni.$resetLoginData = this.resetLoginData();
-			// uni.$TUIKit.on(uni.$TUIKitEvent.SDK_READY, this.onSDKReady);
-			// uni.$TUIKit.on(uni.$TUIKitEvent.SDK_NOT_READY, this.onSdkNotReady);
-			// uni.$TUIKit.on(uni.$TUIKitEvent.KICKED_OUT, this.onKickedOut);
-			// uni.$TUIKit.on(uni.$TUIKitEvent.ERROR, this.onTIMError);
-			// uni.$TUIKit.on(uni.$TUIKitEvent.NET_STATE_CHANGE, this.onNetStateChange);
-			// uni.$TUIKit.on(uni.$TUIKitEvent.SDK_RELOAD, this.onSDKReload);
-			// console.log('IM')
+			this.checkUpdate()
+			// 看课题目字体跟随系统变化
+			const systemInfo = uni.getSystemInfoSync();
+			const baseFontSize = 14; // 标准字体大小(你可以自定义)
+			const userFontSize = systemInfo.fontSizeSetting || baseFontSize;
+			// 计算比例
+			const scale = userFontSize / baseFontSize;
+			// 存储到全局变量或 Vuex
+			uni.setStorageSync('fontScale', scale);
 		},
-		onShow: function () {
+		onShow: function (option) {
 		    console.log('App Show')
+			
+			console.log('对应的请求参数:', option);
+			if (option.referrerInfo && option.referrerInfo.appId === 'wx1183b055aeec94d1') {
+			  const { extraData } = option.referrerInfo;
+			  console.log('确认收货操作状态:', extraData.status);
+			  console.log('错误信息(如果有):', extraData.errormsg);
+			  console.log('对应的请求参数:', extraData.req_extradata);
+						
+			  // 根据状态进行不同处理
+			  switch (extraData.status) {
+			    case 'success':
+			      // 重要:通知服务器查询订单状态进行最终确认,不要仅依赖前端回调
+				  const data={
+					  transactionId:extraData.req_extradata.transaction_id
+				  }
+			     finishOrder(data).then(res => {
+			     	if(res.code==200){
+			     		 // that.getMyStoreOrderById()
+			     		 uni.$emit('getOrderList',1);
+			     	}else{
+			     		uni.showToast({
+			     			icon:'none',
+			     			title: res.msg,
+			     		});
+			     	}
+			     });
+			      break;
+			    case 'fail':
+			      wx.showToast({ 
+			        title: `操作失败: ${extraData.errormsg || '未知错误'}`,
+			        icon: 'none'
+			      });
+			      break;
+			    case 'cancel':
+			      wx.showToast({ 
+			        title: '您取消了确认收货',
+			        icon: 'none'
+			      });
+			      break;
+			  }
+			}
 		    uni.getSystemInfo({
 				success: (result) => {
 					// 获取手机系统的状态栏高度(不同手机的状态栏高度不同)
@@ -76,6 +113,38 @@
 		},
 		 
 		methods: {
+			checkUpdate() {
+				const updateManager = uni.getUpdateManager();
+				updateManager.onCheckForUpdate(function(res) {
+					// 请求完新版本信息的回调
+					console.log('是否有新版本:', res.hasUpdate);
+				});
+			
+				updateManager.onUpdateReady(function() {
+					uni.showModal({
+						title: '更新提示',
+						content: '新版本已经准备好,是否重启小程序?',
+						confirmText: '立即重启',
+						confirmColor: '#2179f5',
+						showCancel: false,
+						success(res) {
+							if (res.confirm) {
+								// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
+								updateManager.applyUpdate();
+							}
+						}
+					});
+				});
+			
+				updateManager.onUpdateFailed(function() {
+					// 新的版本下载失败
+					uni.showModal({
+						title: '更新提示',
+						content: '新版本下载失败,请检查网络后重试。',
+						showCancel: false
+					});
+				});
+			},
 			// TODO:
 			resetLoginData() {
 				// this.globalData.expiresIn = '';
@@ -112,13 +181,16 @@
 	}
 </script>
  
+ <style lang="less">
+	 @import './assets/css/common.less';
+ </style>
+ 
 <style lang="scss">
 	
     /*每个页面公共css */
 	@import "uview-ui/index.scss";
 	@import './assets/iconfont/iconfont.css';
 	@import '@/assets/css/common.scss';
-	// @import './assets/css/common.less';
 	@import './assets/css/theme.scss';
 	page{
 		background-color: #f6f6f6;

+ 5 - 2
api/class.js

@@ -1,9 +1,12 @@
 import Request from '../common/request.js';
 let request = new Request().http
  export function courseList() {
- 	 return request('/app/course/getAppletCourse',null,'GET');
+ 	 return request('/course_auto/app/course/getAppletCourse',null,'GET');
  }
  // 课程详情
  export function courseDetails() {
- 	 return request('/app/course/getH5CourseByVideoId',data,'GET');
+ 	 return request('/course_auto/app/course/getH5CourseByVideoId',data,'GET');
  }
+ export function courseListB() {
+ 	 return request('/course_auto/app/course/getPrivateCourse',null,'GET');
+ }

+ 8 - 0
api/companyUser.js

@@ -15,6 +15,14 @@ let request = new Request().http
  export function getCompanyUserCard(data) {
  	 return request('/app/companyUser/getCompanyUserCard',data,'GET','application/json;charset=UTF-8');
  }
+ //获取公司微信收款码
+ export function getcomapycode(data) {
+ 	 return request('/app/companyUser/getCompanyWxaCodeByPayment',data,'GET','application/json;charset=UTF-8');
+ }
+ //生成公司微信收款码
+ export function generateComapycode(data) {
+ 	 return request('/app/payment/getWxaCodeByPayment',data,'GET','application/json;charset=UTF-8');
+ }
  
  
  

+ 8 - 4
api/coupon.js

@@ -11,8 +11,6 @@ let request = new Request().http
  	 return request('/app/coupon/getCouponIssueById',data,'GET');
  }
  
- 
- 
  export function receive(data) {
  	return request('/app/coupon/receive',data,'POST','application/json;charset=UTF-8');
  }
@@ -23,7 +21,13 @@ let request = new Request().http
  export function getMyEnableCouponList(data) {
  	 return request('/app/coupon/getMyEnableCouponList',data,'GET');
  }
+ //购买立减金
+ export function payCashCoupon(data) {
+ 	 return request('/app/coupon/purchaseCashCoupon',data,'POST','application/json;charset=UTF-8');
+ }
  
- 
-
+ //退款立减金
+ export function refundCashCoupon(data) {
+ 	 return request('/app/coupon/applyCashCouponRefund',data,'POST','application/json;charset=UTF-8');
+ }
  

+ 94 - 0
api/courseAuto.js

@@ -0,0 +1,94 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+export function loginByMp(data) {
+ 	 return request('/course_auto/app/wx/courseLogin',data,'POST','application/json;charset=UTF-8');
+ }
+
+// 获取真实链接
+export function getRealLink(data) {
+	return request('/course_auto/app/course/getRealLink', data, 'GET','');
+}
+
+// h5课程简介
+export function getH5CourseByVideoId(data) {
+	return request('/course_auto/app/course/getH5CourseByVideoId', data, 'GET','');
+}
+
+// h5课程详情加问答
+export function getH5CourseVideoDetails(data) {
+	return request('/course_auto/app/course/getH5CourseVideoDetails', data, 'GET','');
+}
+
+// 答题发红包
+export function courseAnswer(data) {
+	return request('/course_auto/app/course/courseAnswer', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// // 记录看课时间(旧)
+// export function getFinishCourseVideo(data) {
+// 	return request('/course_auto/app/course/getFinishCourseVideo', data, 'POST', 'application/json;charset=UTF-8');
+// }
+
+// 记录看课时间(新)
+export function getFinishCourseVideo(data) {
+	return request('/course_auto/app/course/updateWatchDuration', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 关注客服
+export function getIsAddKf(data) {
+	return request('/course_auto/app/course/isAddKf', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 流量(缓冲百分比)
+export function getInternetTraffic(data) {
+	return request('/course_auto/app/course/getInternetTraffic', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 每十分钟获得积分
+export function getIntegralByH5Video(data) {
+	return request('/course_auto/app/course/getIntegralByH5Video', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 发送奖励
+export function sendReward(data) {
+	return request('/course_auto/app/course/sendReward', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 播放错误上报
+export function getErrMsg(data) {
+	return request('/app/course/getErrMsg', data, 'POST', 'application/x-www-form-urlencoded');
+}
+
+
+// 获取getWxConfig
+export function getWxConfig(data) {
+	return request('/course_auto/app/wx/mp/getWxConfig', data, 'GET','');
+}
+
+// 保存评论数据
+export function saveMsg(data) {
+	return request('/course_auto/app/course/saveMsg', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 撤销评论
+export function revokeMsg(data) {
+	return request('/course_auto/app/course/revokeMsg', data, 'PUT', 'application/json;charset=UTF-8');
+}
+
+// 获取历史评论数据
+export function getComments(data) {
+	return request('/course_auto/app/course/getComments', data, 'GET');
+}
+
+// 企业理念
+export function getConcept() {
+	return request('/course_auto/app/index/getConcept', null, 'GET');
+}
+
+ export function getTypeTree(data) {
+ 	return request('/course_auto/app/user/complaint/getTypeTree', null, 'GET');
+ }
+ export function complaintRecord(data) {
+ 	return request('/course_auto/app/user/complaint/record', data, 'POST','application/json;charset=UTF-8');
+ }

+ 12 - 0
api/courseLook.js

@@ -61,4 +61,16 @@ export function getRealLink(data) {
  //获取头像以及昵称信息
  export function getusername(data) {
  	 return request('/companyapp/app/wx/h5/mp/userInfo',data,'POST','application/json;charset=UTF-8');
+ }
+ //h5授权登录
+ export function handleFsUserWx(data) {
+ 	 return request('/course_uniapp/app/wx/h5/mp/handleFsUserWx',data,'POST','application/json;charset=UTF-8');
+ }
+ //h5授权登录
+ export function H5logoinApp(data,type) {
+ 	 if(type&&type==1) {
+ 		return request('/app/wx/h5/mp/courseLoginByMp',data,'POST','application/json;charset=UTF-8'); 
+ 	 } else {
+ 		return request('/app/wx/h5/mp/loginByMp',data,'POST','application/json;charset=UTF-8'); 
+ 	 }
  }

+ 20 - 0
api/manageCompany.js

@@ -249,4 +249,24 @@ export function getprojectChange(data) {
 //生成小程序链接
 export function copyuniLink(data) {
 	return request('/companyapp/app/fs/course/getGotoWxAppLink', data, 'GET', 'application/json;charset=UTF-8');
+}
+//获取对应的项目编码
+export function getlinkCode(data) {
+	return request('/companyapp/app/fs/course/getProjectCode', data, 'GET', 'application/json;charset=UTF-8');
+}
+//更改课程时间
+export function updataTime(data){
+	return request('/companyapp/app/fs/course/setWatchTime',data, 'POST', 'application/json;charset=UTF-8');
+}
+//获取训练营
+export function trainingCampList(data){
+	return request('/companyapp/app/fs/course/trainingCampList',data, 'GET', 'application/json;charset=UTF-8');
+}
+//获取营期下拉列表
+export function courseList(data){
+	return request('/companyapp/app/fs/course/courseList',data, 'POST', 'application/json;charset=UTF-8');
+}
+//获取appid配置
+export function getLoginMiniAppId({appId}){
+	return request('/companyapp/app/fs/course/getLoginMiniAppId/'+appId,{},'GET', 'application/json;charset=UTF-8');
 }

+ 25 - 4
api/payment.js

@@ -3,9 +3,30 @@ let request = new Request().http
 
   
  export function payment(data) {
- 	 return request('/app/payment/payment',data,'POST','application/json;charset=UTF-8');
+ 	 return request('/app/payment/paymentByWxaCode',data,'POST','application/json;charset=UTF-8');
+ }
+  // 获取扫码立减金接口
+ export function paymentDirect(data) {
+ 	 return request('/app/scan/payment/getScanCodeDiscountAmount',data,'GET');
+ }
+ // 获取扫码统计列表
+ export function getPaymentList(data) {
+ 	 return request('/app/scan/payment/getScanPayStatPage',data,'POST','application/json;charset=UTF-8');
+ }
+ // 获取扫码统计数据
+ export function getPaymentData(data) {
+ 	 return request('/app/scan/payment/getScanPayStat',data,'POST','application/json;charset=UTF-8');
+ }
+ // 获取扫码流水详情
+ export function getPaymentDetail({paymentId}) {
+ 	 return request('/app/scan/payment/getPaymentDetail/'+paymentId,{},'GET','application/json;charset=UTF-8');
+ }
+ // 退款审核接口
+ export function toReviewRefund(data) {
+ 	 return request('/app/scan/payment/refund/audit',data,'PUT','application/json;charset=UTF-8');
+ }
+ // 退款接口
+ export function refundStorePayment(data) {
+ 	 return request('/app/scan/payment/refundStorePayment',data,'POST','application/json;charset=UTF-8');
  }
-  
- 
- 
  

+ 4 - 1
api/storeOrder.js

@@ -77,5 +77,8 @@ let request = new Request().http
  export function orderBindUser(data) {
  	 return request('/app/storeOrder/orderBindUser',data,'POST','application/json;charset=UTF-8');
  }  
- 
+ //获取确认收获类型
+ export function getReceiptType(data) {
+ 	 return request('/app/storeOrder/queryReceiptType',data,'GET','application/json;charset=UTF-8');
+ }  
  

+ 4 - 0
api/user.js

@@ -56,6 +56,10 @@ let request = new Request().http
  export function bindPromoter(data) {
  	 return request('/app/user/bindPromoter',data,'POST','application/json;charset=UTF-8');
  }
+ //获取跳转配置
+ export function getConfigByKey(data) {
+ 	 return request('/app/common/getConfigByKey',data,'GET');
+ }
  
  
  

+ 38 - 18
common/request.js

@@ -1,4 +1,6 @@
 // uni-app请求封装
+import store from '@/store/index.js'
+import {TOKEN_KEYAuto} from '@/utils/courseTool.js'
 export default class Request {
 	http(router, data = {}, method,contentType) {
 		let that = this;
@@ -6,7 +8,12 @@ export default class Request {
 		// let path = 'https://test.userapp.store.cdwjyyh.com';
 		// let path = 'https://user.test.ylrztop.com/api';
 		// let path = 'https://userapp.zkhj6.com'//中康
-		let path = 'http://zd7f9ae7.natappfree.cc'//中康
+		// let path = 'http://e6dde68c.natappfree.cc/store'//本地接口
+		let path = 'https://userapp.moonxiang.com/store'//北京存在文化商城
+		// let path = 'http://pa87de27.natappfree.cc/store'//本地(测试)
+		
+		// let path = 'https://user.test.ylrztop.com/prod-api/store'//云联融智优选
+		let type = 0
 		uni.setStorageSync('requestPath',path)
 		// uni.showLoading({
 		// 	title: '加载中'
@@ -14,23 +21,29 @@ export default class Request {
 		let token = uni.getStorageSync('AppToken');
 		if(router.indexOf("/companyapp")!=-1){
 			// router =router.replace('/companyapp','')
-			 // path = 'http://192.168.10.158:7015'//
+			 // path = 'http://t7e6ce29.natappfree.cc'//存在本地
+			 path = 'https://userapp.moonxiang.com'//存在文化
+			 type = 1
 			 token = uni.getStorageSync('ManageToken');
 		}
+		// 企微看课
+		if(router.indexOf("/course_auto")!=-1){
+			type = 2
+			router =router.replace('/course_auto','')
+			// path = 'https://userapp.gjh2024.com/apis'//金康键
+			// path = 'https://userapp.moonxiang.com/prod-api'//青岛市德瑞康
+			path = 'https://userapp.moonxiang.com'//存在
+			// path = 'https://user.test.ylrztop.com/prod-api'//云联融智优选
+			token =uni.getStorageSync(TOKEN_KEYAuto)
+			console.log("TOKEN_KEYAuto===",TOKEN_KEYAuto,token)
+		}
 		if(router.indexOf("/course_uniapp")!=-1){
+			type = 3
 			router =router.replace('/course_uniapp','')
 			//张玉朋
 			// let path = 'http://192.168.10.158:7014'//
-			// path = 'https://userapp.zkhj6.com'//中康
-			// path = 'https://user.test.ylrztop.com/api'//云融融智
-			// path = 'https://userapp.ashyisheng.com'//蜂巢快药(爱上嘉园)
-			// path = 'https://userapp.liangmiaoedu.com'//良苗
-			// path = 'https://usercourse.beliyostore.com'//倍力优
-			// path = 'https://userapp.bainian1000y.cn/prod-api'//百年康城
-			// path = 'https://userapp.whhm.ylrzcloud.com/prod-api'//惠名大药房
-			// path = 'https://userapp.cqsft.vip'//四福堂
-			// path = 'https://userapp.drkzyy.cn/prod-api'//青岛市德瑞康
 			// path = 'http://192.168.10.131:7014'
+			path = 'https://userapp.moonxiang.com'//存在
 			token =uni.getStorageSync('TOKEN_WEXIN')
 		}
 		return new Promise((resolve, reject) => {
@@ -53,6 +66,19 @@ export default class Request {
 				method: method,
 				success: (res) => {
 					//收到开发者服务器成功返回的回调函数
+					console.log(res)
+					//收到开发者服务器成功返回的回调函数
+					if(type !==0&&(res.data.code == 401 || res.data.code == 4001||res.data.code == 4004)) {
+						store.commit('setCoureLogin', 2);
+						uni.removeStorageSync("userinfos")
+						uni.removeStorageSync('userInfo');
+						uni.removeStorageSync('TOKEN_WEXIN');
+						if(type==2) {
+							uni.removeStorageSync(TOKEN_KEYAuto)
+						}
+						resolve({ code: 401, data: null });
+						return
+					}
 					if(res.data.code==401){//没有权限直接退出到登录界面
 						let pages = getCurrentPages();
 						pages.forEach(function(element) {
@@ -61,12 +87,6 @@ export default class Request {
 						  	return;
 						  }
 						});
-						// let url = pages[ pages.length - 1]; //当前页页面实例
-						// //如果登录界面已打开,自动关闭
-						// if(url!=undefined&&url.route=="pages/auth/login"){
-						//  	resolve(res.data)
-						// 	return;
-						// }
 						uni.navigateTo({
 							url:'/pages/auth/login',
 							success: () => {
@@ -79,7 +99,7 @@ export default class Request {
 						})
 						return;
 					}
-					if (res.data.token) {
+					if (res.data.token&&type==0) {
 						uni.setStorageSync('AppToken',res.data.token)
 					}
 					resolve(res.data)

+ 1 - 1
components/chengpeng-audio/redme.md

@@ -9,7 +9,7 @@
 ```javascript
 //html
 <template>
-  <free-audio startPic='https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/icon/play.png' endPic='https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/icon/stop.png' :audioId='audio1' :url='path'></free-audio>
+  <free-audio startPic='https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/icon/play.png' endPic='https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/icon/stop.png' :audioId='audio1' :url='path'></free-audio>
 </template>
 
 //js

+ 1 - 1
components/im/tui-chat/message-elements/audio-message/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<view :class="'audio-message ' + (isMine ? 'my-audio' : '')">
-		<image class="audio-icon" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/audio.png"></image>
+		<image class="audio-icon" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/audio.png"></image>
 		<view class="audio " @click="handlePlayAudioMessage" :style="'width: ' + 120 + 'rpx'">{{ '" ' + message.payload.second }}</view>
 	</view>
 </template>

+ 1 - 1
components/im/tui-chat/message-elements/custom-message/index.vue

@@ -19,7 +19,7 @@
 			<view class="custom-content">
 				<view class="custom-content-title">{{ renderDom[0].title }}</view>
 				<view class="custom-content-score">
-					<image v-for="(item, index) in renderDom[0].score" :key="index" class="score-star" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/star.png"></image>
+					<image v-for="(item, index) in renderDom[0].score" :key="index" class="score-star" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/star.png"></image>
 				</view>
 				<view class="custom-content-description">{{ renderDom[0].description }}</view>
 			</view>

+ 1 - 1
components/im/tui-chat/message-elements/file-message/index.vue

@@ -3,7 +3,7 @@
 		<view class="TUI-fileMessage">
 			<view class="fileMessage">
 				<view class="fileMessage-box">
-					<image class="file-icon" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/file.png"></image>
+					<image class="file-icon" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/file.png"></image>
 					<label @tap="download" class="file-title">{{ filePayload.fileName }}</label>
 				</view>
 			</view>

+ 2 - 2
components/im/tui-chat/message-elements/video-message/index.vue

@@ -1,11 +1,11 @@
 <template>
 	<view :class="'video-box ' + (isMine ? 'my-video' : '')" @click="playerHander">
-		<image class="video-icon" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/video-play.png"></image>
+		<image class="video-icon" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/video-play.png"></image>
 	</view>
 </template>
 
 <script>
-import videoIcon from 'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/video-play.png';
+import videoIcon from 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/video-play.png';
 export default {
 	data() {
 		return {

+ 0 - 8
components/im/tui-chat/message-input/index.vue

@@ -59,14 +59,6 @@
 					<image class="TUI-Extension-icon" src="/static/assets/send-video.svg"></image>
 					<view class="TUI-Extension-slot-name">发送视频</view>
 				</view>
-				<!-- <view class="TUI-Extension-slot" @tap="handleCalling(1)">
-					<image class="TUI-Extension-icon" src="/static/assets/audio-calling.svg"></image>
-					<view class="TUI-Extension-slot-name">语音通话</view>
-				</view>
-				<view class="TUI-Extension-slot" @tap="handleCalling(2)">
-					<image class="TUI-Extension-icon" src="/static/assets/video-calling.svg"></image>
-					<view class="TUI-Extension-slot-name">视频通话</view>
-				</view> -->
 				<view class="TUI-Extension-slot" @tap="handleServiceEvaluation">
 					<image class="TUI-Extension-icon" src="/static/assets/service-assess.svg"></image>
 					<view class="TUI-Extension-slot-name">服务评价</view>

+ 1 - 1
components/im/tui-chat/message-private/service-evaluation/index.vue

@@ -12,7 +12,7 @@
 						:key="index"
 						class="score-star"
 						:data-score="item"
-						:src="'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/star' + (item > score ? '-grey' : '') + '.png'"
+						:src="'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/star' + (item > score ? '-grey' : '') + '.png'"
 						@tap="handleScore"
 					></image>
 				</view>

+ 4 - 4
components/likeProduct.vue

@@ -1,7 +1,7 @@
 <template>
    <view>
 		<view class="like-title" v-show="list &&list.length > 0">
-			<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/like.png" mode=""></image>
+			<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/like.png" mode=""></image>
 			<text class="text">猜你喜欢</text>
 		</view>
 		<view class="like-list">
@@ -14,10 +14,10 @@
 					<view class="price-box">
 						<view class="now">
 							<text class="unit">¥</text>
-							<text class="num"  v-if="userinfoa.isShow==1&&isuser==false">{{item.price.toFixed(2)}}</text>
-							<text class="num" v-else>{{item.otPrice.toFixed(2)}}</text>
+							<text class="num"  >{{item.price.toFixed(2)}}</text>
+							<!-- <text class="num" v-else>{{item.otPrice.toFixed(2)}}</text> -->
 						</view>
-						<view class="old" v-if="userinfoa.isShow==1&&isuser==false">¥{{item.otPrice.toFixed(2)}}</view>
+						<view class="old" >¥{{item.otPrice.toFixed(2)}}</view>
 					</view>
 				</view>
 			</view>

+ 2 - 2
components/px-popup-bottom/px-popup-bottom.vue

@@ -24,7 +24,7 @@
 </template>
 
 <script>
-	// import iconClose from 'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/close40.png'
+	// import iconClose from 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/close40.png'
 	export default {
 		props: {
 			title: { //标题
@@ -82,7 +82,7 @@
 				isAnimaStart: false,
 				rpxRate: "",
 				cotRadius: 0,
-				closeIcon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/close40.png'
+				closeIcon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/close40.png'
 			}
 		},
 		watch: {

+ 10 - 10
components/tabbar/tabbar.vue

@@ -71,36 +71,36 @@
 			},
 			themeicon() {
 				this.tabbarList = [{
-						iconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/home.png",
-						selectedIconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/home_sel.png",
+						iconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/home.png",
+						selectedIconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/home_sel.png",
 						Text: '首页',
 						url: '/pages/home/index',
 						isshowed:true
 					},
 					{
-						iconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/health.png",
-						selectedIconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/health_sel.png",
+						iconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/health.png",
+						selectedIconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/health_sel.png",
 						Text: '健康百科',
 						url: '/pages/healthy/index',
 						isshowed:true
 					},
 					{
-						iconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/archive.png",
-						selectedIconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/archive_sel.png",
+						iconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/archive.png",
+						selectedIconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/archive_sel.png",
 						Text: '健康档案',
 						url: '/pages/healthy/idea',
 						isshowed:false
 					},
 					{
-						iconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/shop_mall.png",
-						selectedIconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/shop_mall_sel.png",
+						iconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/shop_mall.png",
+						selectedIconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/shop_mall_sel.png",
 						Text: '健康产品',
 						url: '/pages/shopping/index',
 						isshowed:false
 					},
 					{
-						iconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/my.png",
-						selectedIconPath: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/my_sel.png",
+						iconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/my.png",
+						selectedIconPath: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/my_sel.png",
 						Text: '我的',
 						url: '/pages/user/index',
 						isshowed:true

+ 4 - 4
components/tuiProduct.vue

@@ -1,7 +1,7 @@
 <template>
    <view>
 		<!-- <view class="like-title">
-			<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/tui.png" mode=""></image>
+			<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/tui.png" mode=""></image>
 			<text class="text">精选商品</text>
 		</view> -->
 		<view class="like-list">
@@ -14,10 +14,10 @@
 					<view class="price-box">
 						<view class="now">
 							<text class="unit">¥</text>
-							<text class="num"  v-if="userinfoa.isShow==1&&isuser==false">{{item.price.toFixed(2)}}</text>
-							<text class="num" v-else>{{item.otPrice.toFixed(2)}}</text>
+							<text class="num" >{{item.price.toFixed(2)}}</text>
+							<!-- <text class="num" >{{item.otPrice.toFixed(2)}}</text> -->
 						</view>
-						<view class="old" v-if="userinfoa.isShow==1&&isuser==false">¥{{item.otPrice.toFixed(2)}}</view>
+						<view class="old" >¥{{item.otPrice.toFixed(2)}}</view>
 					</view>
 				</view>
 			</view>

+ 3 - 0
main.js

@@ -8,8 +8,11 @@ import uView from 'uview-ui'
 import {formatSeconds}from './utils/tools.js'
 Vue.prototype.$formatSeconds = formatSeconds;
 import {isLoginCourse,isLoginCourseqw} from './utils/common.js'
+import {isLoginCourseAuto} from '@/utils/courseTool.js'
 Vue.prototype.$isLoginCourse = isLoginCourse
 Vue.prototype.$isLoginCourseqw = isLoginCourseqw
+Vue.prototype.$isLoginCourseAuto = isLoginCourseAuto
+
 Vue.use(uView)
 // uni.$u.config.unit = 'rpx'
   

+ 8 - 5
manifest.json

@@ -1,7 +1,7 @@
 {
-    "name" : "zhongkmall_user_app",
+    "name" : "存在文化商城小程序",
     "appid" : "__UNI__A8490FA",
-    "description" : "",
+    "description" : "存在文化商城小程序",
     "versionName" : "1.0.0",
     "versionCode" : "100",
     "transformPx" : false,
@@ -41,7 +41,9 @@
                 ]
             },
             /* ios打包配置 */
-            "ios" : {},
+            "ios" : {
+                "dSYMs" : false
+            },
             /* SDK配置 */
             "sdkConfigs" : {}
         }
@@ -50,7 +52,7 @@
     "quickapp" : {},
     /* 小程序特有相关 */
     "mp-weixin" : {
-        "appid" : "wxedde588767b358b1",
+        "appid" : "wx94951f52d3ac5e25",
         "setting" : {
             "urlCheck" : false
         },
@@ -59,7 +61,8 @@
             "scope.userLocation" : {
                 "desc" : "获取您的位置信息为了更好的推荐服务"
             }
-        }
+        },
+        "requiredPrivateInfos" : [ "chooseAddress" ]
     },
     "mp-alipay" : {
         "usingComponents" : true

+ 317 - 10
package-lock.json

@@ -1,30 +1,337 @@
 {
   "name": "zhongkmall_user_app",
   "version": "1.0.0",
-  "lockfileVersion": 1,
+  "lockfileVersion": 3,
   "requires": true,
-  "dependencies": {
-    "@vue/devtools-api": {
+  "packages": {
+    "": {
+      "name": "zhongkmall_user_app",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "dayjs": "^1.11.13",
+        "uview-ui": "^2.0.38",
+        "vuex": "^4.1.0"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.27.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+      "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.27.1",
+      "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+      "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+      "license": "MIT",
+      "peer": true,
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.28.0",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.0.tgz",
+      "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/types": "^7.28.0"
+      },
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.28.2",
+      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.2.tgz",
+      "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.27.1",
+        "@babel/helper-validator-identifier": "^7.27.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz",
+      "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.18.tgz",
+      "integrity": "sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.28.0",
+        "@vue/shared": "3.5.18",
+        "entities": "^4.5.0",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.2.1"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz",
+      "integrity": "sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-core": "3.5.18",
+        "@vue/shared": "3.5.18"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz",
+      "integrity": "sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@babel/parser": "^7.28.0",
+        "@vue/compiler-core": "3.5.18",
+        "@vue/compiler-dom": "3.5.18",
+        "@vue/compiler-ssr": "3.5.18",
+        "@vue/shared": "3.5.18",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.17",
+        "postcss": "^8.5.6",
+        "source-map-js": "^1.2.1"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz",
+      "integrity": "sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.5.18",
+        "@vue/shared": "3.5.18"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
       "version": "6.6.4",
       "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
       "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
     },
-    "dayjs": {
+    "node_modules/@vue/reactivity": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.18.tgz",
+      "integrity": "sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@vue/shared": "3.5.18"
+      }
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.18.tgz",
+      "integrity": "sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@vue/reactivity": "3.5.18",
+        "@vue/shared": "3.5.18"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz",
+      "integrity": "sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@vue/reactivity": "3.5.18",
+        "@vue/runtime-core": "3.5.18",
+        "@vue/shared": "3.5.18",
+        "csstype": "^3.1.3"
+      }
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.18.tgz",
+      "integrity": "sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-ssr": "3.5.18",
+        "@vue/shared": "3.5.18"
+      },
+      "peerDependencies": {
+        "vue": "3.5.18"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.18.tgz",
+      "integrity": "sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/csstype": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/dayjs": {
       "version": "1.11.13",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
-      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
+      "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
+      "license": "MIT"
+    },
+    "node_modules/entities": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
+      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "license": "BSD-2-Clause",
+      "peer": true,
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "license": "MIT",
+      "peer": true
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.17",
+      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz",
+      "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.5.0"
+      }
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.11",
+      "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
+      "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "peer": true,
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+      "license": "ISC",
+      "peer": true
+    },
+    "node_modules/postcss": {
+      "version": "8.5.6",
+      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
+      "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "nanoid": "^3.3.11",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
     },
-    "uview-ui": {
+    "node_modules/source-map-js": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
+      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+      "license": "BSD-3-Clause",
+      "peer": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/uview-ui": {
       "version": "2.0.38",
       "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.38.tgz",
-      "integrity": "sha512-6egHDf9lXHKpG3hEjRE0vMx4+VWwKk/ReTf5x18KrIKqdvdPRqO3+B8Unh7vYYwrIxzAWIlmhZ9RJpKI/4UqPQ=="
+      "integrity": "sha512-6egHDf9lXHKpG3hEjRE0vMx4+VWwKk/ReTf5x18KrIKqdvdPRqO3+B8Unh7vYYwrIxzAWIlmhZ9RJpKI/4UqPQ==",
+      "engines": {
+        "HBuilderX": "^3.1.0"
+      }
+    },
+    "node_modules/vue": {
+      "version": "3.5.18",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.18.tgz",
+      "integrity": "sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.5.18",
+        "@vue/compiler-sfc": "3.5.18",
+        "@vue/runtime-dom": "3.5.18",
+        "@vue/server-renderer": "3.5.18",
+        "@vue/shared": "3.5.18"
+      },
+      "peerDependencies": {
+        "typescript": "*"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
     },
-    "vuex": {
+    "node_modules/vuex": {
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
       "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
-      "requires": {
+      "dependencies": {
         "@vue/devtools-api": "^6.0.0-beta.11"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
       }
     }
   }

+ 77 - 23
pages.json

@@ -24,7 +24,7 @@
 		{
 			"path": "pages/home/index",
 			"style": {
-				"navigationBarTitleText": "中康智慧",
+				"navigationBarTitleText": "食养生活",
 				"enablePullDownRefresh": false,
 				"navigationStyle": "custom",
 				"app-plus": {
@@ -981,10 +981,55 @@
 						}
 					}
 				},
+				{
+					"path": "order/lineDetails",
+					"style": {
+						"navigationBarTitleText": "流水详情",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
 				{
 					"path": "alipayImg",
 					"style": {
-						"navigationBarTitleText": "支付宝收款",
+						"navigationBarTitleText": "收款",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "wechatcode",
+					"style": {
+						"navigationBarTitleText": "微信收款码",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "paymentStatistics",
+					"style": {
+						"navigationBarTitleText": "收款流水",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "order/DirectDiscount",
+					"style": {
+						"navigationBarTitleText": "立减金列表",
+						"app-plus": {
+							"titleNView": false
+						}
+					}
+				},
+				{
+					"path": "order/DirectDetail",
+					"style": {
+						"navigationBarTitleText": "立减金详情",
 						"app-plus": {
 							"titleNView": false
 						}
@@ -1022,7 +1067,7 @@
 				{
 					"path": "shopping/productList",
 					"style": {
-						"navigationBarTitleText": "品列表",
+						"navigationBarTitleText": "品列表",
 						"enablePullDownRefresh": false
 					}
 
@@ -1054,13 +1099,7 @@
 		},
 		{
 			"root": "pages_manage",
-			"pages": [{
-					"path": "teacherClassroom",
-					"style": {
-						"navigationBarTitleText": "名师课堂",
-						"enablePullDownRefresh": false
-					}
-				},
+			"pages": [
 				{
 					"path": "login",
 					"style": {
@@ -1095,16 +1134,9 @@
 						"navigationBarTitleText": "销售详情",
 						"enablePullDownRefresh": false
 					}
-				},
-				{
-					"path" : "learn",
-					"style" : 
-					{
-						"navigationBarTitleText" : "健康生活方式指导",
-						"enablePullDownRefresh": false
-					}
 				}
 				
+				
 			]
 		},
 		{
@@ -1224,19 +1256,42 @@
 						"navigationBarTitleText": "看课详情",
 						"enablePullDownRefresh": false
 					}
+				},
+				{
+					"path" : "learn",
+					"style" : 
+					{
+						"navigationBarTitleText" : "健康生活方式指导",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "teacherClassroom",
+					"style": {
+						"navigationBarTitleText": "名师课堂",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "video",
+					"style": {
+						"navigationBarTitleText": "",
+						"enablePullDownRefresh": false,
+						"navigationStyle": "custom"
+					}
 				}
 			]
 		}
 	],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "中康智慧",
+		"navigationBarTitleText": "食养生活",
 		"navigationBarBackgroundColor": "#FFFFFF",
 		"backgroundColor": "#FFFFFF"
 	},
 	"tabBar": {
 		"color": "#666666",
-		"selectedColor": "#2BC7B9",
+		"selectedColor": "#3BA737",
 		// "custom": true, 
 		"borderStyle": "white",
 		"backgroundColor": "#ffffff",
@@ -1250,18 +1305,17 @@
 				"selectedIconPath": "/static/tabbar/home_sel.png",
 				"text": "首页"
 			},
-
 			{
 				"pagePath": "pages/healthy/index",
 				"iconPath": "/static/tabbar/health.png",
 				"selectedIconPath": "/static/tabbar/health_sel.png",
-				"text": "健康百科"
+				"text": "食养百科"
 			},
 			{
 				"pagePath": "pages/shopping/index",
 				"iconPath": "/static/tabbar/shop_mall.png",
 				"selectedIconPath": "/static/tabbar/shop_mall_sel.png",
-				"text": "健康产品"
+				"text": "产品"
 			},
 			// {
 			// 	"pagePath": "pages/healthy/idea",

+ 87 - 10
pages/auth/login.vue

@@ -3,15 +3,27 @@
     <!-- #ifdef MP-WEIXIN -->
     <view  class="force-login-wrap">
       <view class="force-login__content y-f">
-        <open-data class="user-avatar" type="userAvatarUrl"></open-data>
-        <open-data class="user-name" type="userNickName"></open-data>
+		  <view class="logo">
+		  	<view class="logo-img">
+		  		<image  src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png"></image>
+		  	</view>
+		  	<view class="title">食养生活</view>
+		  </view>
+        <!-- <open-data class="user-avatar" type="userAvatarUrl"></open-data>
+        <open-data class="user-name" type="userNickName"></open-data> -->
         <view class="login-notice">为了提供更优质的服务,请先登录</view>
-		
-		<button
+		<view class="btns">
+			<button
+				class="author-btn"
+				open-type="getPhoneNumber"
+				@getphonenumber="phoneLogin"  >一键授权手机号登录</button>
+			<button class="author-btn" v-if="isAgreement==false" @click="handleAgree()">一键授权手机号登录</button>
+		</view>
+		<!-- <button
 			class="author-btn"
 			open-type="getPhoneNumber"
-			@getphonenumber="phoneLogin"  >手机号一键登录</button>
-       <!-- <button class="close-btn" @tap="back">暂不登录</button> -->
+			@getphonenumber="phoneLogin"  >手机号一键登录</button> -->
+       <button class="close-btn" @tap="back">暂不登录</button>
 		 <view class="tips">
 			 <checkbox  :checked="isAgreement" @click="handleAgreement()" />
 			 <view  @click="handleAgreement()">您同意并接受</view>
@@ -36,7 +48,13 @@ export default {
 		}
 	},
 	computed: {
-	},
+	    imgPath() {
+	      return this.$store.state.imgpath
+	    },
+		appid() {
+			return this.$store.state.appid
+		},
+	  },
 	onLoad(option) 
 	{
 		// #ifdef MP-WEIXIN
@@ -68,6 +86,15 @@ export default {
     
 	},
 	methods: {
+		handleAgree(){
+			
+			if(!this.isAgreement){
+			  	uni.showToast({
+			  		icon:'none',
+			  		title: "请先同意协议后再登录",
+			  	});
+			}
+		},
 		checkWeixin(){
 			var ua = window.navigator.userAgent.toLowerCase();
 			if (ua.match(/micromessenger/i) == 'micromessenger') {
@@ -152,7 +179,8 @@ export default {
 							   encryptedData: e.mp.detail.encryptedData,
 							   iv: e.mp.detail.iv,
 							   code: code,
-							   userCode:userCode
+							   userCode:userCode,
+							   appId:this.appid
 							})
 							.then( res => {
 								if(res.code==200){
@@ -210,19 +238,68 @@ export default {
 			// uni.switchTab({
 			// 	url: '/pages/home/index'
 			// });
-			uni.navigateBack()
+			uni.navigateBack({
+				delta: 1
+			});
 		}
 	}
 }
 </script>
 
 <style lang="scss">
+	.btns{
+		position: relative;
+		width: 630rpx;
+		height: 80rpx;
+		.author-btn{				
+			z-index:100;
+			position: absolute;
+			width: 630rpx;
+			height: 80rpx;
+			background: linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
+			background: -moz-linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
+			// box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
+			border-radius: 40rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: rgba(255, 255, 255, 1);
+		}
+	}
+	.logo{
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		.logo-img{
+			border: 4upx solid #FFFFFF;
+			box-shadow: 0px 5px 15px 2px rgba(0,0,0,0.1);
+			border-radius: 50%;
+			width: 80px;
+			height: 80px;
+			image{
+				border-radius: 50%;
+				width: 100%;
+				height: 100%;
+				overflow: hidden;
+			}
+		}
+		
+		.title{
+			margin-top: 20rpx;
+			font-size: 35rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #000;
+			margin-bottom: 30rpx;
+		}
+	}
 .container {
   flex: 1;
   display: flex;
   flex-direction: column;
   justify-content: flex-start;
-  position: relative;
+  // position: relative;
 }
 
 .force-login-wrap {

+ 2 - 2
pages/common/launch.vue

@@ -3,9 +3,9 @@
 		<view class="loadding" v-if="loadding==true">
 			<view class="circlebox">
 				<view class="circle"></view>
-				<image src="/static/logo.jpg"></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logo.png"></image>
 			</view>
-			<text class="text">中康智慧</text>
+			<text class="text">食养生活</text>
 		</view>
 	</view>
 </template>

+ 11 - 7
pages/healthy/detail.vue

@@ -8,7 +8,8 @@
 			</view>
 			<!-- 正文 -->
 			<view class="full-text">
-				<view v-html="item.contents"></view>
+				<!-- <view v-html="item.contents"></view> -->
+				 <u-parse :content="item.contents" showImgMenu></u-parse>
 			</view>
 		</view>
 		<!-- 最近阅读 -->
@@ -18,14 +19,14 @@
 				<view class="peop-box" @click="showUsers">
 					<view class="head-box">
 						<view class="head" v-for="(subitem,j) in views" :key="j">
-							<image :src="subitem.avatar==null?'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/detault_head.jpg':subitem.avatar" mode=""></image>
+							<image :src="subitem.avatar==null?'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/detault_head.png':subitem.avatar" mode=""></image>
 						</view>
 					</view>
-					<image class="arrow" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+					<image class="arrow" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 				</view>
 			</view>
 			<!-- <view class="share-btn">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/share.png" mode=""></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/share.png" mode=""></image>
 				<text>分享</text>
 				<button  class="share" data-name="shareBtn" open-type="share">分享</button>
 			</view> -->
@@ -33,7 +34,7 @@
 		<!-- 咨询按钮 -->
 		<view class="inquiry">
 			<view class="content">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/consult.png" mode=""></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/consult.png" mode=""></image>
 				<text class="text">咨询</text>
 				<button class="contact-btn" open-type="contact"></button>
 			</view>
@@ -54,6 +55,9 @@
 		},
 		onLoad(option) {
 			this.articleId=option.articleId;
+			if(uni.getStorageSync('AppToken')){
+						this.updateView();
+			}
 			// this.utils.isLogin().then(res => {
 			// 	if(res){
 			// 		this.updateView();
@@ -72,10 +76,9 @@
 		onShareAppMessage(res) {
 			return {
 				title: this.item.title,
-				path: '/pages/healthy/detail?articleId='+this.item.productId,
+				path: '/pages/healthy/detail?articleId='+this.item.articleId,
 				imageUrl: this.item.imageUrl //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
-			
 		},
 		//分享到朋友圈
 		onShareTimeline(res) {
@@ -99,6 +102,7 @@
 				getArticleByArticleId(data).then(
 					res => {
 						if(res.code==200){
+							console.log(res.data)
 							this.item=res.data;
 							this.views=res.views;
 						}else{

+ 1 - 1
pages/healthy/idea.vue

@@ -21,7 +21,7 @@
 				<view class="period">备注 {{item.remark!=null?item.remark:''}}</view>
 			</view>
 			<view v-if="docs.length == 0" class="no-data-box" @click="getMyDocList()">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png" mode="aspectFit"></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png" mode="aspectFit"></image>
 				<view class="empty-title">暂无数据</view>
 			</view>
 		</view>

+ 9 - 9
pages/healthy/index.vue

@@ -3,11 +3,11 @@
 		<view class="top-content">
 			<!-- 这里是状态栏 -->
 			<view class="status_bar" :style="{height: statusBarHeight}"></view>
-			<view class="top-title">健康百科</view>
+			<view class="top-title">食养百科</view>
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode=""></image>
 					<input type="text" v-model="searchValue" placeholder="输入关键字搜索" confirm-type="search" @confirm="doSearch" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 				</view>
 			</view>
@@ -32,11 +32,11 @@
 							<view class="readers">
 								<view class="head-box" v-if="item.viewsList!=null&&item.viewsList.length>0">
 									<view class="head" v-for="(subitem,j) in item.viewsList" :key="j" v-if="subitem!=null">
-										<image  :src="subitem.avatar==null?'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/detault_head.jpg':subitem.avatar" mode=""></image>
+										<image  :src="subitem.avatar==null?'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/detault_head.png':subitem.avatar" mode=""></image>
 									</view>
 								</view>
 								<view class="readings">
-									<image class="eye" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/eye.png" ></image>
+									<image class="eye" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/eye.png" ></image>
 									<text class="num">{{item.views}}</text>
 								</view>
 							</view>
@@ -80,7 +80,7 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png',
+						icon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png',
 						tip: '暂无数据'
 					},
 					textNoMore:'已经到底了'
@@ -246,15 +246,15 @@
 			font-size: 28upx;
 			font-family: PingFang SC;
 			font-weight: 500;
-			color: #2BC7B9;
+			color: #3BA737;
 			background: #F5FFFE;
-			border: 1px solid #2BC7B9;
+			border: 1px solid #3BA737;
 			border-radius: 32upx;
 			margin: 0 20upx 20upx 0;
 			&.active{
 				color: #FFFFFF;
-				background: #2BC7B9;
-				border: 1px solid #2BC7B9;
+				background: #3BA737;
+				border: 1px solid #3BA737;
 			}
 		}
 	}

+ 2 - 2
pages/healthy/readUsers.vue

@@ -4,7 +4,7 @@
 		<view class="user-list">
 			<view class="item" v-for="(item,index) in dataList" :key="index">
 				<view class="img-box">
-					<image :src="item.avatar==null?'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/detault_head.jpg':item.avatar" mode=""></image>
+					<image :src="item.avatar==null?'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/detault_head.png':item.avatar" mode=""></image>
 				</view>
 				<text class="name">{{item.nickname}}</text>
 			</view>
@@ -32,7 +32,7 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png',
+						icon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png',
 						tip: '暂无数据'
 					}
 				},

+ 0 - 1
pages/home/cert.vue

@@ -3,7 +3,6 @@
 		<view class="item" v-for="item in certs">
 			<image @click="showImg(item)" :src="item"></image>
 		</view>
-		
 	</view>
 </template>
 

+ 15 - 5
pages/home/components/HotProduct.vue

@@ -1,7 +1,10 @@
 <template>
     <view class="group-goods" v-if="detail.length>0">
         <view class="title-box x-bc"  >
-            <text class="title">热门榜单</text>
+			<view class="justify-start align-center">
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/hot_list.png" class="w40 h40"></image>
+				<text class="title"><text style="color:#FE4644">热门</text>榜单</text>
+			</view>
             <view class="group-people x-f" @tap="navTo('/pages/home/productList')">
                 <text class="tip">更多</text>
                 <text class="cuIcon-right"></text>
@@ -19,9 +22,9 @@
                                 </view>
                                 <view class="price-box">
                                     <view class="y-f">
-                                        <text class="seckill-current" v-if="user.isShow==1">¥{{  mgoods.price.toFixed(2)  }}</text>
-                                        <text class="seckill-current" v-else>¥{{  mgoods.otPrice.toFixed(2)  }}</text>
-                                        <text class="original" v-if="user.isShow==1">销量{{ mgoods.sales }}{{mgoods.unitName}}</text>
+                                        <text class="seckill-current" >¥{{  mgoods.price.toFixed(2)  }}</text>
+                                        <text class="old" >¥{{  mgoods.otPrice.toFixed(2)  }}</text>
+                                        <!-- <text class="original" v-if="user.isShow==1">销量{{ mgoods.sales }}{{mgoods.unitName}}</text> -->
                                     </view>
                                 </view>
                                 <view class="title">
@@ -286,7 +289,14 @@
 	      background-color: #ccc;
 	    }
 	  }
-	
+	.old{
+		font-size: 24upx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		text-decoration: line-through;
+		color: #BBBBBB;
+		line-height: 1.1;
+	}
 	  .price-box {
 	    width: 100%;
 	    margin-top: 10rpx;

+ 6 - 6
pages/home/doctorCase.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode=""></image>
 					<input type="text"  v-model="searchVal" placeholder="输入关键字搜索"  confirm-type="搜索" @confirm="goSearch" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 				</view>
 			</view>
@@ -19,7 +19,7 @@
 					>
 						<view class="text">
 							{{ item.departmentName }}
-							<image v-show="deptId == item.departmentId" class="tab-bg" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/tab_bg.png" mode=""></image>
+							<image v-show="deptId == item.departmentId" class="tab-bg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/tab_bg.png" mode=""></image>
 						</view>
 					</view>
 				</view>
@@ -56,8 +56,8 @@
 						<!-- 语音回答 -->
 						<view class="voice-inner" v-if="item.orderType == '2'">
 							<free-audio 
-								startPic='https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/play.png' 
-								endPic='https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/pause.png'
+								startPic='https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/play.png' 
+								endPic='https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/pause.png'
 								activeColor="#2BC7B9"
 								:audioId="'audio'+index"
 								:url='item.replyAudioUrl'
@@ -65,7 +65,7 @@
 						</view>
 					</view>
 					<view class="read-box">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/eye.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/eye.png" mode=""></image>
 						<text class="text">{{item.views}}人看过</text>
 					</view>
 				</view>
@@ -101,7 +101,7 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png',
+						icon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png',
 						tip: '暂无数据'
 					}
 				},

+ 60 - 75
pages/home/index.vue

@@ -1,21 +1,24 @@
 <template>
 	<view class="content">
 		<!-- 背景图片 -->
-		<image class="bg" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/hp_top_bg.png" mode=""></image>
+		<image class="bg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/hp_top_bg.png" mode=""></image>
 		<view>
 			<view class="top-inner">
 				<view class="fixed-top-box" :style="{ background: bgColor }">
 					<!-- 这里是状态栏 -->
 					<view class="status_bar" :style="{height: statusBarHeight}"></view>
 					<view class="top-title">
-						<view class="name">中康智慧</view>
+						<view class="name centerV">
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/name.png" style="width: 256rpx;" mode="widthFix"></image>
+						</view>
+						<!-- <view class="name">食养生活</view> -->
 						<!-- <view class="dot">•</view><view class="sub-name">七彩互联网医院</view> -->
 					</view>
 					<!-- 搜索框、购物车、客服 -->
 					<view class="func-cont">
 						<view class="search-cont" :style="{width:userinfoa.isShow==0 || isuser==true?'633rpx':''}">
 							<image class="icon-search"
-								src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode="">
+								src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode="">
 							</image>
 							<input type="text" value="" placeholder="请输入产品名称"
 								placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;"
@@ -25,20 +28,16 @@
 						<uni-badge size="small" :text="cartCount" absolute="rightTop" type="error"
 							v-show="userinfoa.isShow==1&&isuser==false">
 							<view class="img-item" @click="goAuthUrl('../shopping/cart')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/cart_wihte.png"
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/cart_wihte.png"
 									mode=""></image>
 							</view>
 						</uni-badge>
 						<view class="img-item" style="position: relative;">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/customer.png" mode="">
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/customer.png" mode="">
 							</image>
 							<button class="contact-btn" open-type="contact"></button>
 						</view>
 					</view>
-					<!-- <view class="tips">
-						<view class="left"></view>
-						<view class="right"  @click="navTo('./cert')">资质证明</view>
-					</view> -->
 				</view>
 			</view>
 			<!-- 头部间距 -->
@@ -52,7 +51,7 @@
 						:duration="1000" indicator-color="rgba(255, 255, 255, 0.6)" indicator-active-color="#ffffff">
 						<swiper-item class="swiper-item" v-for="(item,index) in advList" :key="index"
 							@click="handleAdvClick(item)">
-							<image :src="item.imageUrl" mode=""></image>
+							<image :src="item.imageUrl" mode="aspectFill"></image>
 						</swiper-item>
 					</swiper>
 				</view>
@@ -66,43 +65,23 @@
 			</view>
 
 		</view>
-
-		<!-- 在线问诊、处方查询 -->
-		<!-- <view class="online-inquiry">
-			<view class="item" @click="navTo('/pages_doctor/doctorQr')">
-				<image class="bg-img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/online_treat.png" mode=""></image>
-				<view class="inner">
-					<text class="title">医师咨询</text>
-					<text class="sub-title">权威医生 快速回复</text>
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/doctor.png" mode=""></image>
-				</view>
-			</view>
-			<view class="item" @click="goAuthUrl('/pages_user/user/prescribeOrder')">
-				<image class="bg-img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/chu_query.png" mode=""></image>
-				<view class="inner">
-					<text class="title">处方查询</text>
-					<text class="sub-title">快速查询处方单</text>
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/cu_search.png" mode=""></image>
-				</view>
-			</view>
-		</view> -->
-		<view class="open-class">
+		<view class="open-class bgf radius12">
 			<view class="title-box">
-				<text class="title">健康生活方式大讲堂</text>
-				<view class="more" @click="goClassList">
+				<text class="title">健康大讲堂</text>
+				<view class="more" @click="goClassList(1)">
 					<text>查看全部</text>
-					<image src="/static/assets/toright.png"></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/toright.png"></image>
 				</view>
 			</view>
-			<u-scroll-list :indicator="false">
-				<view class="class-item" @click="goClass(item.courseId)" v-for="(item, index) in classList"
+			<view class="justify-start">
+				<view class="class-item" @click="goClass(item.courseId,1)" v-for="(item, index) in classList"
 					:key="index">
 					<view class="img-box">
-						<image :src="item.imgUrl || '/static/assets/no-img.png'"  ></image>
+						<image :src="item.imgUrl || 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no-img.png'" mode="aspectFill" ></image>
 					</view>
 					<view>{{item.courseName}}</view>
 				</view>
-			</u-scroll-list>
+			</view>
 		</view>
 		<view class="modules">
 			<view class="module">
@@ -122,7 +101,7 @@
 						<view class="title">养生讲堂</view>
 						<view class="more"  @click="navTo('/pages_index/index/doctorArticleList')" >
 							<view class="text">更多</view>
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png"></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png"></image>
 						</view>
 					</view>
 					<scroll-view :scroll-x="true" style="white-space: nowrap;">
@@ -155,7 +134,7 @@
 			    		<view class="title">养生干货</view>
 			    		<view class="more" @click="navTo('/pages_index/index/articleList')">
 			    			<view class="text">更多</view>
-			    			<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png"></image>
+			    			<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png"></image>
 			    		</view>
 			    	</view>
 			    	<view class="article-box" v-if="articles.length>0">
@@ -189,7 +168,7 @@
 					<text class="left">健康百科</text>
 					<view class="right" @click="switchTo('../healthy/index')">
 						<text class="text">更多</text>
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 					</view>
 				</view>
 				<view class="inner">
@@ -202,11 +181,11 @@
 								@click="articleCateChange(item)">
 								<view class="text">
 									{{ item.cateName }}
-									<image v-show="item.cateId == cateId" class="tab-bg" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/tab_bg.png" mode=""></image>
+									<image v-show="item.cateId == cateId" class="tab-bg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/tab_bg.png" mode=""></image>
 								</view>
 							</view>
 						</view>
-						<image class="right-mask" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/mask.png" mode=""></image>
+						<image class="right-mask" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/mask.png" mode=""></image>
 					</view>
 					 
 					<view class="know-list">
@@ -217,11 +196,11 @@
 									<view class="readers">
 										<view class="head-box" v-if="item.viewsList!=null&&item.viewsList.length>0">
 											<view class="head" v-for="(subitem,j) in item.viewsList" :key="j" v-if="subitem!=null" >
-												<image :src="subitem.avatar==null?'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/detault_head.jpg':subitem.avatar" mode=""></image>
+												<image :src="subitem.avatar==null?'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/detault_head.png':subitem.avatar" mode=""></image>
 											</view>
 										</view>
 										<view class="readings">
-											<image class="eye" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/eye.png" mode=""></image>
+											<image class="eye" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/eye.png" mode=""></image>
 											<text class="num">{{item.views}}</text>
 										</view>
 									</view>
@@ -236,6 +215,7 @@
 				</view>
 			</view> -->
 			<!-- 精选药品 -->
+			<view class="centerV mtb20 fs32 bold">精品推荐</view>
 			<TuiProduct ref="tuiProduct" />
 
 		</view>
@@ -244,7 +224,7 @@
 		<!-- 限时消息 -->
 		<!-- <view class="message-box" >
 			<view class="left">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/close24.png" mode="" @click="closeMsg"></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/close24.png" mode="" @click="closeMsg"></image>
 				<view class="text ellipsis">关注公众号了解更新</view>
 			</view>
 			<view class="btn">查看</view>
@@ -269,7 +249,8 @@
 
 <script>
 	import {
-		courseList
+		courseList,
+		courseListB
 	} from '@/api/class.js'
 	import zModal from '@/components/z-modal/z-modal.vue'
 	import {
@@ -297,7 +278,7 @@
 	import {
 		getStoreConfig
 	} from '@/api/common'
-	// import tabBg from "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/tab_bg.png"
+	// import tabBg from "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/tab_bg.png"
 	import freeAudio from '@/components/chengpeng-audio/free-audio.vue'
 	import Menu from '@/components/Menu.vue'
 	import HotProduct from './components/HotProduct.vue'
@@ -362,7 +343,7 @@
 				articles: [], //养生干货
 				// 状态栏的高度
 				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
-				tabBg: "https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/tab_bg.png", // tab切换背景
+				tabBg: "https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/tab_bg.png", // tab切换背景
 				// 问诊案例类型
 				orderTypes: [{
 					name: '全部',
@@ -427,11 +408,20 @@
 				],
 				userinfoa: [],
 				isuser: false,
-				menvKey: []
+				menvKey: [],
+				classListb:{}
 			}
-			this.getStoreActivity();
+			// this.getStoreActivity();
 		},
 		onLoad(option) {
+			this.getMenu();
+			this.getIndexData()
+			this.getStoreConfig();
+			//this.getTuiDoctor()
+			this.getCanvas();
+			this.getDoctorArticleList();
+			this.getArticleList();
+			this.getshowmanv()
 			if (option.userCode != null) {
 				uni.setStorageSync('userCode', option.userCode);
 				if (this.utils.checkLoginState()) {
@@ -449,7 +439,7 @@
 					this.getUserInfo();
 				}
 			}
-			this.getStoreActivity()
+			// this.getStoreActivity()
 		},
 		// 暂停所有音频(一般用于页面切换时停止正在播放的音频)
 		onUnload() { //普通页面在 onUnload 生命周期中执行
@@ -468,34 +458,33 @@
 		},
 		onShareAppMessage(res) {
 			return {
-				title: '中康智慧-您的专属健康解决方案',
+				title: '食养生活-您的专属健康解决方案',
 				path: `/pages/common/launch`,
-				imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 		},
 		onReachBottom() {
 			console.log("onReachBottom")
-			//this.$refs.tuiProduct.getTuiProducts();
+			this.$refs.tuiProduct.getTuiProducts();
 		},
 		//分享到朋友圈
 		onShareTimeline(res) {
 			return {
-				title: '中康智慧-您的专属健康解决方案',
+				title: '食养生活-您的专属健康解决方案',
 				query: '', //页面参数
-				imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 		},
 		computed: {
 			// 计算属性的 getter
 			bgColor: function() {
 				var top = this.top / 30;
-				return 'rgba(43,199,185, ' + top + ')';
+				return 'rgba(59, 167, 55, ' + top + ')';
 			},
 		},
 		onShow() {
-			this.getMenu();
-			this.getIndexData()
-			//this.getTuiDoctorOrder();
+			
+			// this.getTuiDoctorOrder();
 			// console.log(uni.getStorageSync('isLocation'))
 			// if(uni.getStorageSync('isLocation')==""){
 			// 	this.getLocation();
@@ -508,17 +497,13 @@
 			if (this.utils.checkLoginState()) {
 				this.getCartCount();
 			}
-			this.getStoreConfig();
-			//this.getTuiDoctor()
-			this.getCanvas();
-			this.getDoctorArticleList();
-			this.getArticleList();
-			this.getshowmanv()
+			
 		},
 		methods: {
 			getCourseList() {
 				courseList().then(res => {
 					if (res.code == 200) {
+						console.log('公域',res.data)
 						this.classList = res.data.slice(0, 3)
 					} else {
 						uni.hideLoading();
@@ -528,16 +513,16 @@
 						});
 					}
 				})
-
 			},
-			goClass(id) {
+			goClass(id,type) {
+				console.log(id)
 				uni.navigateTo({
-					url: `/pages_manage/learn?courseId=${id}`
+					url:'/pages_course/learn?courseId='+id+'&type='+type
 				})
 			},
-			goClassList() {
+			goClassList(type) {
 				uni.navigateTo({
-					url: '/pages_manage/teacherClassroom'
+					url: '/pages_course/teacherClassroom?type='+type
 				})
 			},
 			getshowmanv() {
@@ -2038,7 +2023,7 @@
 		.open-class {
 			padding: 20rpx;
 			margin: 20rpx 15rpx 0rpx;
-			background-color: #f0f4f7;
+			// background-color: #f0f4f7;
 
 			.title-box {
 				display: flex;
@@ -2070,10 +2055,10 @@
 				margin-top: 24rpx;
 				background-color: #fff;
 				border-radius: 16rpx;
-				padding: 8rpx 10rpx 16rpx;
+				padding: 0 16rpx;
 				margin-right: 14rpx;
 				width: 250rpx;
-				height: 300rpx;
+				height: 280rpx;
 				font-size: 26rpx;
 				font-weight: 500;
 

+ 1 - 1
pages/home/new/articleDetails.vue

@@ -15,7 +15,7 @@
 		<!-- 咨询按钮 -->
 		<view class="inquiry">
 			<view class="content">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/consult.png" mode=""></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/consult.png" mode=""></image>
 				<text class="text">咨询</text>
 				<button class="contact-btn" open-type="contact"></button>
 			</view>

+ 2 - 2
pages/home/new/articleList.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/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>
@@ -27,7 +27,7 @@
 						<view class="info-box">
 							<view class="readers">
 								<view class="readings">
-									<image class="eye" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/eye.png" ></image>
+									<image class="eye" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/eye.png" ></image>
 									<text class="num">{{item.views}}</text>
 								</view>
 							</view>

+ 2 - 2
pages/home/new/chineseMedicineDetails.vue

@@ -61,7 +61,7 @@
 				return {
 					title: this.item.medicineName,
 					path: '/pages_index/chineseMedicineDetails?id='+this.id,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -71,7 +71,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.title,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/chineseMedicineList.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/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>
@@ -38,7 +38,7 @@
 					<view class="r-item" @click="showDetail(item)" v-for="item in dataList">
 						<view class="r-left">{{item.medicineName}}</view>
 						<view class="r-right">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/fire.png"></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/fire.png"></image>
 						</view>
 					</view>
 				</view>

+ 2 - 2
pages/home/new/diseaseDetails.vue

@@ -45,7 +45,7 @@
 				return {
 					title: this.item.diseaseName,
 					path: '/pages_index/diseaseDetails?id='+this.diseaseId,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -55,7 +55,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.diseaseName,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/diseaseList.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/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>
@@ -27,7 +27,7 @@
 						<view class="title ellipsis1">{{ item.diseaseName }}</view>
 					</view>
 					<view class="right">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png"></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png"></image>
 					</view>
 				</view>
 			</view>

+ 2 - 2
pages/home/new/famousPrescribeDetails.vue

@@ -61,7 +61,7 @@
 				return {
 					title: this.item.prescribeName,
 					path: '/pages_index/famousPrescribeDetails?id='+this.id,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -71,7 +71,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.title,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/famousPrescribeList.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/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>
@@ -41,7 +41,7 @@
 					<view class="r-item" @click="showDetail(item)" v-for="item in dataList">
 						<view class="r-left">{{item.prescribeName}}</view>
 						<view class="r-right">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/fire.png"></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/fire.png"></image>
 						</view>
 					</view>
 				</view>

+ 2 - 2
pages/home/new/medicatedFoodDetails.vue

@@ -39,7 +39,7 @@
 				return {
 					title: this.item.foodName,
 					path: '/pages_index/medicatedFoodDetails?id='+this.id,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -49,7 +49,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.title,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 1 - 1
pages/home/new/medicatedFoodList.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/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>

+ 2 - 2
pages/home/new/questionsDetails.vue

@@ -36,7 +36,7 @@
 				return {
 					title: this.item.vesselName,
 					path: '/pages_index/questionsDetails?id='+this.id,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -46,7 +46,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.title,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/questionsList.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/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>
@@ -27,7 +27,7 @@
 						<view class="info-box">
 							<view class="readers">
 								<view class="readings">
-									<image class="eye" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/eye.png" ></image>
+									<image class="eye" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/eye.png" ></image>
 									<text class="num">{{item.views}}</text>
 								</view>
 							</view>

+ 6 - 6
pages/home/new/test.vue

@@ -6,7 +6,7 @@
 					<text class="patient-title">选择体验者</text>
 					<view class="right" >
 						<text class="value">请点击添加</text>
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 					</view>
 				</view>
 				<view class="patient" @click="addPatient()" v-if="patient!=null">
@@ -20,7 +20,7 @@
 						</view>
 					</view>
 					<view class="right" >
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 					</view>
 				</view>
 			</view>
@@ -59,7 +59,7 @@
 			<view class="patient-box" @click="addPatient()" v-if="patient==null">
 				<text class="patient-title">选择体验者</text>
 				<view class="right" >
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 				</view>
 			</view>
 			<view class="patient" @click="addPatient()" v-if="patient!=null">
@@ -73,7 +73,7 @@
 					</view>
 				</view>
 				<view class="right" >
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 				</view>
 			</view>
 		</view>
@@ -135,7 +135,7 @@
 				return {
 					title: "健康体质检测",
 					path: '/pages_index/test?tempId='+this.tempId,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -145,7 +145,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: "健康体质检测",
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/testDetails.vue

@@ -49,7 +49,7 @@
 				return {
 					title: "健康自测",
 					path: '/pages_index/testDetails?tempId='+this.tempId,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -59,7 +59,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: "健康自测",
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/testList.vue

@@ -63,7 +63,7 @@
 				return {
 					title: "健康自测",
 					path: '/pages_index/testList',
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -73,7 +73,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: "健康自测",
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/vesselDetails.vue

@@ -41,7 +41,7 @@
 				return {
 					title: this.item.vesselName,
 					path: '/pages_index/vesselDetails?id='+this.id,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -51,7 +51,7 @@
 			if(this.utils.isLogin()){
 				return {
 					title: this.item.vesselName,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			

+ 2 - 2
pages/home/new/vesselList.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/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>
@@ -37,7 +37,7 @@
 					<view class="r-item" @click="showDetail(item)" v-for="item in dataList">
 						<view class="r-left">{{item.vesselName}}</view>
 						<view class="r-right">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/fire.png"></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/fire.png"></image>
 						</view>
 					</view>
 				</view>

+ 24 - 21
pages/home/productList.vue

@@ -4,12 +4,12 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
-					<input type="text" @confirm="goSearch"   :value="form.productName" placeholder="输入品名称" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode=""></image>
+					<input type="text" @confirm="goSearch"   :value="form.productName" placeholder="输入品名称" 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="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search1.png" mode=""></image>
-					<image @click="showChange(1)" v-if="showType==2"  src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search2.png" mode=""></image>
+					<image @click="showChange(2)" v-if="showType==1"  src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search1.png" mode=""></image>
+					<image @click="showChange(1)" v-if="showType==2"  src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search2.png" mode=""></image>
 				</view>
 			</view>
 			<!-- 排序框 -->
@@ -20,19 +20,19 @@
 				<view class="item" @click="searchChange('2')">
 					<text class="label">价格</text>
 					<view class="sort-img">
-						<image v-if="form.priceOrder==null||form.priceOrder=='desc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_up.png" mode="" @click="priceUp(true)"></image>
-						<image v-if="form.priceOrder=='asc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_up2.png" mode="" @click="priceUp(false)"></image>
-						<image v-if="form.priceOrder==null||form.priceOrder=='asc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_down.png" mode="" @click="priceDown(true)"></image>
-						<image v-if="form.priceOrder=='desc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_down2.png" mode="" @click="priceDown(false)"></image>
+						<image v-if="form.priceOrder==null||form.priceOrder=='desc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_up.png" mode="" @click="priceUp(true)"></image>
+						<image v-if="form.priceOrder=='asc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_up2.png" mode="" @click="priceUp(false)"></image>
+						<image v-if="form.priceOrder==null||form.priceOrder=='asc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_down.png" mode="" @click="priceDown(true)"></image>
+						<image v-if="form.priceOrder=='desc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_down2.png" mode="" @click="priceDown(false)"></image>
 					</view>
 				</view>
 				<view class="item" @click="searchChange('3')">
 					<text class="label">销量</text>
 					<view class="sort-img">
-						<image v-if="form.salesOrder==null||form.salesOrder=='desc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_up.png" mode="" @click="saleUp(true)"></image>
-						<image v-if="form.salesOrder=='asc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_up2.png" mode="" @click="saleUp(false)"></image>
-						<image v-if="form.salesOrder==null||form.salesOrder=='asc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_down.png" mode="" @click="saleDown(true)"></image>
-						<image v-if="form.salesOrder=='desc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_down2.png" mode="" @click="saleDown(false)"></image>
+						<image v-if="form.salesOrder==null||form.salesOrder=='desc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_up.png" mode="" @click="saleUp(true)"></image>
+						<image v-if="form.salesOrder=='asc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_up2.png" mode="" @click="saleUp(false)"></image>
+						<image v-if="form.salesOrder==null||form.salesOrder=='asc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_down.png" mode="" @click="saleDown(true)"></image>
+						<image v-if="form.salesOrder=='desc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_down2.png" mode="" @click="saleDown(false)"></image>
 					</view>
 				</view>
 				<view class="item" :class="form.newOrder=='desc'?'active':''" @click="searchChange('4')">
@@ -55,6 +55,7 @@
 							<view class="price">
 								<text class="unit">¥</text>
 								<text class="num">{{item.price.toFixed(2)}} </text>
+								<text class="old">¥{{item.otPrice.toFixed(2)}} </text>
 							</view>
 							<view class="cart-img" @click="navgetTo('../shopping/cart')">
 								<view class="sale">已售 {{item.sales}} {{item.unitName}}</view>
@@ -110,7 +111,7 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png',
+						icon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png',
 						tip: '暂无数据'
 					},
 					textNoMore:"已经到底了",
@@ -458,16 +459,18 @@
 							line-height: 1;
 						}
 					}
-					.old{
-						font-size: 26upx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						text-decoration: line-through;
-						color: #BBBBBB;
-						line-height: 1.1;
-					}
+					
 				}
 			}
 		}
 	}
+	.old{
+		font-size: 24upx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		text-decoration: line-through;
+		color: #BBBBBB;
+		line-height: 1.1;
+		margin-left: 16rpx;
+	}
 </style>

+ 3 - 3
pages/home/productSearch.vue

@@ -3,14 +3,14 @@
 		<!-- 搜索框 -->
 		<view class="search-cont">
 			<view class="inner">
-				<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
-				<input type="text" value="" placeholder="输入品名称" confirm-type="搜索" @confirm="goSearch" :focus='setFocus' placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
+				<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode=""></image>
+				<input type="text" value="" placeholder="输入品名称" confirm-type="搜索" @confirm="goSearch" :focus='setFocus' placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 			</view>
 		</view>
 		<!-- 搜索历史 -->
 		<view class="title-box">
 			<text class="title">历史搜索</text>
-			<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/del.png" mode="" @click="clearHistory"></image>
+			<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/del.png" mode="" @click="clearHistory"></image>
 		</view>
 		<view class="data-list">
 			<view class="item" v-for="(item,index) in searchHistory" :key="index" @click="doSearch(item)">

+ 1 - 1
pages/index/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="content">
-		<image class="logo" src="/static/logo.jpg"></image>
+		<image class="logo" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logo.png"></image>
 		<view class="text-area">
 			<text class="title">{{title}}</text>
 		</view>

+ 20 - 6
pages/shopping/cart.vue

@@ -22,12 +22,12 @@
 						</view>
 						<view class="num-box">
 							<view class="img-box" @click="delNum(item)">
-								<image v-if="item.cartNum <= 1" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/jian.png" mode=""></image>
-								<image v-else src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/jian2.png" mode=""></image>
+								<image v-if="item.cartNum <= 1" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/jian.png" mode=""></image>
+								<image v-else src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/jian2.png" mode=""></image>
 							</view>
 							<input  type="number" @change="changeNum($event,item)" :value="item.cartNum"   />
 							<view class="img-box" @click="addNum(item)">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/add.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/add.png" mode=""></image>
 							</view>
 						</view>
 					</view>
@@ -36,7 +36,7 @@
 		</view>
 	 
 		<view v-if="carts.length == 0" class="no-data-box">
-			<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png" mode="aspectFit"></image>
+			<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png" mode="aspectFit"></image>
 			<view class="empty-title">暂无数据</view>
 		</view>
 		<!-- 猜你喜欢 -->
@@ -224,7 +224,21 @@
 			},
 			// 购物车加法
 			addNum(item) {
-				console.log(item)
+				// console.log(item)
+				if(item.cartNum>=item.purchaseLimit&&item.purchaseLimit!=0){
+					uni.showToast({
+						icon:'none',
+						title: `本商品限购${item.purchaseLimit}件,您已购买${item.purchaseLimit}件,本次最多可购买${item.purchaseLimit}件`,
+					});
+					return
+				}
+				if(item.cartNum>=item.stock){
+					uni.showToast({
+						icon:'none',
+						title: `本商品库存${item.stock}件,您已购买${item.stock}件,本次最多可购买${item.stock}件`,
+					});
+					return
+				}
 				item.cartNum++
 				if(item.cartNum>=item.stock){
 					item.cartNum=item.stock;
@@ -452,7 +466,7 @@
 					font-family: PingFang SC;
 					font-weight: bold;
 					color: #FFFFFF;
-					background: #2BC7B9;
+					background: #3BA737;
 					border-radius: 44upx;
 				}
 			}

+ 79 - 42
pages/shopping/confirmOrder.vue

@@ -10,7 +10,7 @@
 					</vie>
 				</view>
 				<view class="arrow-box">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 				</view>
 			</view>
 			<view class="address-box" v-if="address!=null" @click="openAddress()">
@@ -24,7 +24,7 @@
 					</view>
 				</view>
 				<view class="arrow-box">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 				</view>
 			</view>
 			<!-- 药品列表 -->
@@ -59,9 +59,9 @@
 				</view>
 			</view>
 			<!-- 积分 -->
-			<view class="points">
+			<view class="points mt20" style="border-radius:16rpx 16rpx 0 0;">
 				<view class="left">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/points.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/points.png" mode=""></image>
 					<text class="text">可用积分</text>
 				</view>
 				<view class="right">
@@ -69,16 +69,25 @@
 					<evan-switch @change="integralChange" v-model="checked" activeColor="#2BC7B9" inactiveColor="rgba(0, 0, 0, 0.1)"></evan-switch>
 				</view>
 			</view>
-			<view class="points" @click="openCoupon()">
+			<view class="points" @click="openCoupon(0)">
 				<view class="left">
 					<text class="text">优惠券</text>
 				</view>
 				<view class="right">
 					<text class="text">{{couponText}}</text>
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow4.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow4.png" mode=""></image>
 				</view>
 			</view>
-			<view class="points">
+			<view class="points" @click="openCoupon(3)">
+				<view class="left">
+					<text class="text">立减金</text>
+				</view>
+				<view class="right">
+					<text class="text">{{DirectText}}</text>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow4.png" mode=""></image>
+				</view>
+			</view>
+			<view class="points " style="border-radius:0 0 16rpx 16rpx;">
 				<view class="left">
 					<text class="text">运费</text>
 				</view>
@@ -106,29 +115,30 @@
 		</view>
 		<popupBottom ref="popup" :visible.sync="couponVisible" title=" " bgColor="#f5f5f5" radius="30"    maxHeight="60%">
 		     <view class="coupon" style="height:650rpx;">
-				 <div class="coupon-list" v-if="couponsList.length > 0">
-				   <div class="item acea-row row-center-wrapper"  v-for="(item, index) in couponsList" :key="index">
-				     <div class="money" >
-				       <image v-if="item.status==0" class="img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/coupon1.png" mode="widthFix"></image>
-				 	  <image v-if="item.status!=0" class="img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/coupon2.png" mode="widthFix"></image>
-				 	  <div style="z-index: 999;">
+				 <view class="coupon-list" v-if="couponsList.length > 0">
+				   <view class="item acea-row row-center-wrapper"  v-for="(item, index) in couponsList" :key="index">
+				     <view class="money" >
+				       <image v-if="item.status==0" class="img" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/coupon1.png" mode="widthFix"></image>
+				 	  <image v-if="item.status!=0" class="img" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/coupon2.png" mode="widthFix"></image>
+				 	  <view style="z-index: 999;">
 				         ¥<span class="num">{{ item.couponPrice }}</span>
-				       </div>
-				       <div class="pic-num"  >满{{ item.useMinPrice }}元可用</div>
-				     </div>
-				     <div class="text">
-				       <div class="condition line1">
+				       </view>
+				       <view class="pic-num"  >满{{ item.useMinPrice }}元可用</view>
+				     </view>
+				     <view class="text">
+				       <view class="condition line1">
 				         {{ item.couponTitle }}
-				       </div>
-				       <div class="data acea-row row-between-wrapper">
-							<div >{{ item.limitTime }}到期</div>
-							<div class="bnt bg-color-red" @click="couponSelect(item)"  >选择</div>
-				       </div>
-				     </div>
-				   </div>
-				 </div>
+				       </view>
+				       <view class="data acea-row row-between-wrapper">
+						   <view v-if='selcouponType==3&&item.limitTime==null'>永久使用期限</view>
+							<view v-else>{{ item.limitTime }}到期</view>
+							<view class="bnt bg-color-red" @click="couponSelect(item)"  >选择</view>
+				       </view>
+				     </view>
+				   </view>
+				 </view>
 				 <view v-if="couponsList.length == 0" class="no-data-box" >
-				 	<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png" mode="aspectFit"></image>
+				 	<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png" mode="aspectFit"></image>
 				 	<view class="empty-title">暂无数据</view>
 				 </view>
 			 </view>
@@ -156,6 +166,8 @@
 				temps:[],
 				couponUserId:null,
 				couponText:"请选择",
+				DirecId:null,
+				DirectText:"请选择",
 				couponsList:[],
 				couponVisible:false,
 				price:{
@@ -177,8 +189,10 @@
 					mark:null,
 					companyId:null,
 					companyUserId:null
-				}
-				
+				},
+				selcouponType:3,
+				frist:false,
+				cartsprice:null
 			}
 		},
 		onLoad(option) {
@@ -193,6 +207,7 @@
 				this.form.addressId=e.id;
 			})
 			this.getWeixinOrderTemps();
+			this.frist=true
 		},
 		methods: {
 			getWeixinOrderTemps:function(){
@@ -209,17 +224,33 @@
 				);
 			},
 			couponSelect(item){
-				this.couponText="-¥"+item.couponPrice.toFixed(2);
-				this.couponUserId=item.id;
+				if(this.selcouponType==3){
+					this.DirectText="-¥"+item.couponPrice.toFixed(2);
+					this.DirecId=item.id;
+				}else{
+					this.couponText="-¥"+item.couponPrice.toFixed(2);
+					this.couponUserId=item.id;
+				}
 				this.couponVisible=false;
 				this.computed();
 			},
-			openCoupon(){
+			openCoupon(type){
+				this.couponVisible=true;
+				this.getMyEnableCouponLists(type)
+			},
+			getMyEnableCouponLists(type){
 				let that = this;
-				var data={couponType:0,useMinPrice:this.price.payPrice};
+				this.selcouponType=type
+				var data={couponType:type,useMinPrice:this.cartsprice};
 				getMyEnableCouponList(data).then(res => {
-				  this.couponVisible=true;
-				  that.couponsList = res.data
+					if(res.code==200){
+						that.couponsList = res.data
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
 				})
 			},
 			integralChange(e){
@@ -235,6 +266,7 @@
 							 
 							 this.carts=res.carts;
 							 this.form.orderKey=res.orderKey;
+							 this.cartsprice=res.totalPrice
 							 if(res.address!=null){
 								 this.form.addressId=res.address.id;
 								 this.address=res.address;
@@ -242,7 +274,6 @@
 							 }
 							 this.computed()
 						}else{
-							
 							uni.showToast({
 								icon:'none',
 								title: res.msg,
@@ -253,13 +284,13 @@
 				);
 			},
 			computed(item){
-				let data = {couponUserId:this.couponUserId,orderKey:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral};
+				let data = {couponUserId:this.couponUserId,deductionCouponUserId:this.DirecId,
+				orderKey:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral};
 				computed(data).then(
 					res => {
 						if(res.code==200){
 							 console.log(res)
 							 this.price=res.data
-							 
 						}else{
 							if(res.code==501){
 								uni.showToast({
@@ -322,10 +353,16 @@
 					title: '正在处理中...'
 				});
 				if(tuiUserId!=null&&tuiUserId!=undefined&&tuiUserId>0){
-					data = {orderCreateType:1,tuiUserId:tuiUserId,companyId:this.form.companyId,companyUserId:this.form.companyUserId,couponUserId:this.couponUserId,mark:this.form.mark,orderKey:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral,payType:1};
+					data = {orderCreateType:1,tuiUserId:tuiUserId,companyId:this.form.companyId,
+					companyUserId:this.form.companyUserId,couponUserId:this.couponUserId,deductionCouponUserId:this.DirecId,
+					mark:this.form.mark,orderKey:this.form.orderKey,addressId:this.form.addressId,
+					useIntegral:this.form.useIntegral,payType:1};
 				}
 				else{
-					data = {orderCreateType:1,companyId:this.form.companyId,companyUserId:this.form.companyUserId,couponUserId:this.couponUserId,mark:this.form.mark,orderKey:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral,payType:1};
+					data = {orderCreateType:1,companyId:this.form.companyId,deductionCouponUserId:this.DirecId,
+					companyUserId:this.form.companyUserId,couponUserId:this.couponUserId,
+					mark:this.form.mark,orderKey:this.form.orderKey,addressId:this.form.addressId,
+					useIntegral:this.form.useIntegral,payType:1};
 				}
 				if(this.storeId!=null&& this.storeId>0){
 					data.storeId=this.storeId;
@@ -393,7 +430,7 @@
 			min-height: 171upx;
 			background: #FFFFFF;
 			border-radius: 16upx;
-			background-image: url("https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/address_bg.png");
+			background-image: url("https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/address_bg.png");
 			background-repeat: no-repeat;
 			background-size: 100% 30upx;
 			background-position: left bottom;
@@ -563,7 +600,7 @@
 			height: 88upx;
 			padding: 0 30upx;
 			background: #FFFFFF;
-			border-radius: 16upx;
+			// border-radius: 16upx;
 			 
 			display: flex;
 			align-items: center;

+ 225 - 125
pages/shopping/index.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="content">
+	<view class="content" :style="$store.state.theme.currentMoban">
 		<view class="top-content">
 			<view class="status_bar" :style="{height: statusBarHeight}"></view>
 			<!-- 这里是状态栏 -->
@@ -7,152 +7,200 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
-					<input type="text" disabled   confirm-type="搜索" @click="toSearch" placeholder="输入药品名称" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
+					<image class="icon-search" src="../../static/images/search.png" mode=""></image>
+					<input type="text"  confirm-type="搜索" @click="toSearch" placeholder="输入商品名称"
+						placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 				</view>
 			</view>
 		</view>
-		<view  :style="{height: divHeight}"   class="medic-box">
+		<view :style="{height: divHeight}" class="medic-box">
 			<view class="cate-list">
-				<view 
-					v-for="(item,index) in cates" 
-					:key="index" 
-					:class="cateSelect == item.cateId?'item active':'item'" 
-					@click="choseCate(item)"
-				>{{item.cateName }}</view>
+				<view v-for="(item,index) in cates" :key="index" :class="cateSelect == item.cateId?'item active':'item'"
+					@click="choseCate(item)">{{item.cateName }}</view>
 			</view>
 			<view class="medic">
 				<!-- 轮播图 -->
-				<view class="banner-box">
-					<swiper
-						class="swiper" 
-						:indicator-dots="true" 
-						:circular="true" 
-						:autoplay="true" 
-						:interval="3000" 
-						:duration="1000"
-						indicator-color="rgba(255, 255, 255, 0.6)"
-						indicator-active-color="#ffffff">
-						<swiper-item class="swiper-item" v-for="(item,index) in advs" :key="index" @click="handleAdvClick(item)">
+				<!-- <view class="banner-box">
+					<swiper class="swiper" :indicator-dots="true" :circular="true" :autoplay="true" :interval="3000"
+						:duration="1000" indicator-color="rgba(255, 255, 255, 0.6)" indicator-active-color="#ffffff">
+						<swiper-item class="swiper-item" v-for="(item,index) in advs" :key="index"
+							@click="handleAdvClick(item)">
 							<image :src="item.imageUrl" mode=""></image>
 						</swiper-item>
 					</swiper>
-				</view>
-				<!-- 品列表 -->
+				</view> -->
+				<!-- 商品列表 -->
 				<view class="medic-list">
-						<!-- <view class="item" v-for="(item,index) in subCates" :key="index">
+					<!-- <view class="item" v-for="(item,index) in subCates" :key="index">
 							<view class="title">{{item.cateName}}</view> -->
-							<view class="inner-list">
-								<view class="definite"v-for="(subItem,index) in subCates"   @click="showProductList(subItem)">
-									<view class="img-box">
-										<image :src="subItem.pic" mode="aspectFit"></image>
-									</view>
-									<view class="name ellipsis">{{subItem.cateName}}</view>
-								</view>
+					<scroll-view scroll-y="true" class="hb" :refresher-enabled="isEnabled" :refresher-triggered="triggered"
+						refresher-background="rgba(0,0,0,0)" @refresherrefresh="pullDownRefresh"
+						@refresherrestore="triggered = false" :upper-threshold="100" :lower-threshold="100"
+						@refresherabort="triggered = false" @scrolltolower="reachBottom">
+					<view class="inner-list">
+						<view class="definite" v-for="(subItem,index) in subCates" @click="showProductList(subItem)">
+							<view class="img-box">
+								<image :src="subItem.image" mode="aspectFit"></image>
 							</view>
+							<view class="name ellipsis">{{subItem.productName}}</view>
+						</view>
+					</view>
+					<u-loadmore :status="status" />
+					</scroll-view>
+					<view v-if="subCates.length==0" class="center mt20 column">
+						<image src="../../static/images/no_data.png" 
+						style="width: 200rpx;height: 150rpx;"></image>
+						<text class="fs24">暂无商品</text>
+						</view>
 					<!-- 	</view> -->
 				</view>
 			</view>
 		</view>
-		<!-- <tabbar :actindex="3"></tabbar> -->
+		<!-- <tabbar :actindex="2"></tabbar> -->
 	</view>
 </template>
 
 <script>
-	import {getProductCate} from '@/api/product'
-	import {getAdv} from '@/api/adv'
+	import {
+		getProductCate,
+		getProducts
+	} from '@/api/product'
+	import {
+		getAdv
+	} from '@/api/adv'
 	export default {
 		data() {
 			return {
-				divHeight:'0px',
-				allCates:[],
-				cates:[],
-				subCates:[],
+				divHeight: '0px',
+				allCates: [],
+				cates: [],
+				subCates: [],
 				// 状态栏的高度
 				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
-				// 选中品分类
+				// 选中品分类
 				cateSelect: 0,
 				// 轮播图
 				advs: [],
-				isshow:false
+				theme:"beiliyou",
+				defaultOrder:'desc',
+				page: {
+					num: 1, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
+					size: 10 // 每页数据的数量,默认10
+				},
+				titname:'',
+				isEnabled: true,
+				triggered: false,
+				status:'loadmore'
 			};
 		},
 		onLoad() {
 			uni.showShareMenu({
-				withShareTicket:true,
+				withShareTicket: true,
 				//小程序的原生菜单中显示分享按钮,才能够让发送给朋友与分享到朋友圈两个按钮可以点击
-				menus:["shareAppMessage","shareTimeline"] //不设置默认发送给朋友
+				menus: ["shareAppMessage", "shareTimeline"] //不设置默认发送给朋友
 			})
 			this.getProductCate();
+			setTimeout(()=>{
+				this.cateSelect=this.allCates[0].cateId
+				this.getproduct()
+			},200)
 		},
 		onShow() {
-			var that=this;
-			setTimeout(function(){
+			var that = this;
+			setTimeout(function() {
 				let info = uni.createSelectorQuery().select(".top-content");
-		     info.boundingClientRect(function(data) { //data - 各种参数
-		//        	console.log(data.height)  // 获取元素宽度
+				info.boundingClientRect(function(data) { //data - 各种参数
+					console.log(data.height) // 获取元素宽度
 					// console.log(uni.upx2px(10)) 
-					that.divHeight="calc(100% - "+data.height+"px)"
-		      }).exec()
-			},500);
+					that.divHeight = "calc(100% - " + data.height + "px)"
+				}).exec()
+			}, 500);
 			this.getAdv();
 		},
-		methods:{
-			divHeight1(){
-			   return 'height:calc(100% - ${this.top}px);'
+		methods: {
+			// divHeight(){
+			//    return 'height:calc(100% - ${this.top}px);'
+			// },
+			pullDownRefresh(){
+				// 下拉
+				this.triggered = true; //下拉了状态为true
+				setTimeout(() => {
+					this.triggered = false;
+					uni.stopPullDownRefresh()
+					this.page.num= 1;
+					this.getproduct('refresh') //触底  不穿执行else
+					// 请求接口里面需要判断是不是最后一页   是最后一页 status赋值为‘loadmore’没有更多了
+					// 请求接口
+				}, 1000)
+			},
+			reachBottom(){
+				//上拉
+				// status这个是加载状态
+				if (this.status === 'loadmore') {
+					this.status = 'loading'
+					uni.showNavigationBarLoading()
+					setTimeout(() => {
+						this.page.num++
+						this.getproduct() //触底  不穿执行else
+						uni.hideNavigationBarLoading()
+					}, 1000);
+				}
 			},
 			toSearch() {
 				uni.navigateTo({
 					url: '../home/productSearch'
 				})
 			},
-			handleAdvClick(item){
+			handleAdvClick(item) {
 				console.log(item);
-				if(item.showType==1){
-					uni.setStorageSync('url',item.advUrl);
+				if (item.showType == 1) {
+					uni.setStorageSync('url', item.advUrl);
 					uni.navigateTo({
-						url:"../home/h5"
+						url: "../home/h5"
+					})
+				} else if (item.showType == 2) {
+					uni.navigateTo({
+						url: item.advUrl
+					})
+				} else if (item.showType == 3) {
+					uni.setStorageSync('content', item.content);
+					uni.navigateTo({
+						url: "../home/content"
 					})
 				}
-				else if(item.showType==2){
-					 uni.navigateTo({
-					 	url:item.advUrl
-					 })
-				}
-				else if(item.showType==3){
-					 uni.setStorageSync('content',item.content);
-					 uni.navigateTo({
-					 	url:"../home/content"
-					 })
-				}
+
 			},
-			getAdv(){
-				let data = {advType:2};
+			getAdv() {
+				let data = {
+					advType: 2
+				};
 				getAdv(data).then(
 					res => {
-						if(res.code==200){
-							this.advs=res.data;
+						if (res.code == 200) {
+							this.advs = res.data;
 						}
 					},
 					rej => {}
 				);
 			},
-			getProductCate(){
+			getProductCate() {
 				let data = {};
 				getProductCate(data).then(
 					res => {
-						if(res.code==200){
-							this.allCates=res.data;
-							this.cates = this.allCates.filter(function (item) {
-							     return item.pid==0
+						if (res.code == 200) {
+							this.allCates = res.data;
+							this.cates = this.allCates.filter(function(item) {
+								return item.pid == 0
 							});
-							if(this.cates!=null&&this.cates.length>0){
-								this.cateSelect=this.cates[0].cateId;
+							console.log(this.allCates,111)
+							console.log(this.cates)
+							if (this.cates != null && this.cates.length > 0) {
+								this.cateSelect = this.cates[0].cateId;
 								this.getSubCate()
 							}
-						}else{
+						} else {
 							uni.showToast({
-								icon:'none',
+								icon: 'none',
 								title: "请求失败",
 							});
 						}
@@ -160,33 +208,65 @@
 					rej => {}
 				);
 			},
-			// 品分类选择
+			// 品分类选择
 			choseCate(item) {
+				this.page.num=1
+				this.subCates=[]
 				this.cateSelect = item.cateId;
-				this.getSubCate()
-				
+				console.log(item)
+				this.titname=item.cateName
+				// this.getSubCate()
+				this.getproduct()
 			},
-			getSubCate(){
-				var that=this;
-				this.subCates = this.allCates.filter(function (item) {
+			getproduct(type){
+				var data = {
+					cateId:this.cateSelect,
+					defaultOrder:this.defaultOrder,
+					page: this.page.num,
+					pageSize: this.page.size,
+					productName:  "",
+					storeId: ""
+				};
+				getProducts(data).then(res=>{
+					if(res.code==200){
+						console.log(res)
+						if (type == 'refresh') {
+							this.subCates=res.data.list
+						} else {
+							// 加载更多 当前页和下一页合并
+							this.subCates = [...this.subCates, ...res.data.list]
+						}
+						if (this.page.num >= res.data.pages) {
+							//是否有下一页
+							this.status = 'nomore'
+						} else {
+							this.status = 'loadmore'
+						}
+					}
+				})
+			},
+			getSubCate() {
+				var that = this;
+				// this.subCates = this.allCates.filter(function(item) {
 					// let subList = that.allCates.filter(child => {
 					// 	//返回每一项的子级数组
 					// 	return child.pid === item.cateId
 					// });
 					// subList.length > 0 ? item.children = subList : [];
-				    return item.pid==that.cateSelect
-				});
-				 
+				// 	return item.pid == that.cateSelect
+				// });
+				// this.getProductCate()
 				console.log(this.subCates);
 			},
-			// 查看药品详情
+			// 查看品详情
 			showProductList(item) {
 				uni.navigateTo({
-					url: '/pages_shopping/shopping/productList?cateId='+item.cateId+"&pid="+item.pid
+					// url: './productList?cateId=' + item.cateId + "&pid=" + 0
+					url: '/pages/shopping/productDetails?productId=' + item.productId
 				})
 			},
 			goSearch(e) {
-				if(e.detail.value!=null&&e.detail.value!=""){
+				if (e.detail.value != null && e.detail.value != "") {
 					this.utils.addHisSearch(e.detail.value);
 				}
 				uni.navigateTo({
@@ -198,19 +278,21 @@
 </script>
 
 <style lang="scss">
-	page{
+	page {
 		height: 100%;
 		background-color: #fff;
 	}
-	
-	.content{
+
+	.content {
 		height: 100%;
 		display: flex;
 		flex-direction: column;
-		.top-content{
+
+		.top-content {
 			width: 100%;
 			z-index: 10;
-			.top-title{
+
+			.top-title {
 				height: 88upx;
 				line-height: 88upx;
 				font-size: 42upx;
@@ -220,10 +302,12 @@
 				padding-left: 41upx;
 				background-color: #FFFFFF;
 			}
-			.search-cont{
+
+			.search-cont {
 				padding: 16upx 30upx;
 				background-color: #FFFFFF;
-				.inner{
+
+				.inner {
 					box-sizing: border-box;
 					width: 100%;
 					height: 72upx;
@@ -232,12 +316,14 @@
 					display: flex;
 					align-items: center;
 					padding: 0 30upx;
-					.icon-search{
+
+					.icon-search {
 						width: 28upx;
 						height: 28upx;
 						margin-right: 20upx;
 					}
-					input{
+
+					input {
 						height: 60upx;
 						line-height: 60upx;
 						flex: 1;
@@ -245,9 +331,11 @@
 				}
 			}
 		}
-		.medic-box{
+
+		.medic-box {
 			display: flex;
-			.cate-list{
+
+			.cate-list {
 				box-sizing: border-box;
 				width: 200upx;
 				background: #F2F5F9;
@@ -255,7 +343,8 @@
 				flex-direction: column;
 				padding: 20upx 0;
 				overflow-y: scroll;
-				.item{
+
+				.item {
 					height: 100upx;
 					line-height: 100upx;
 					padding-left: 30upx;
@@ -264,13 +353,15 @@
 					font-weight: 500;
 					color: #333333;
 					position: relative;
-					&.active{
-						color: #2BC7B9;
-						&::after{
+
+					&.active {
+						color: #018C39;
+
+						&::after {
 							content: "";
 							width: 8upx;
 							height: 50upx;
-							background: #2BC7B9;
+							background: #018C39;
 							position: absolute;
 							top: 25upx;
 							left: 0;
@@ -278,29 +369,34 @@
 					}
 				}
 			}
-			.medic{
+
+			.medic {
 				box-sizing: border-box;
 				width: calc(100% - 200upx);
 				height: 100%;
 				padding: 0 30upx;
-				.banner-box{
+
+				.banner-box {
 					margin-top: 30rpx;
 					width: 100%;
 					height: 160upx;
 					border-radius: 10upx;
 					overflow: hidden;
+
 					.swiper,
 					.swiper-item,
-					.swiper-item image{
+					.swiper-item image {
 						width: 100%;
 						height: 100%;
 					}
 				}
-				.medic-list{
+
+				.medic-list {
 					box-sizing: border-box;
 					padding: 30upx 0;
 					overflow-y: auto;
-					height: calc(100% - 220upx);
+					// height: calc(100% - 100upx);
+					height: 100%;
 					position: relative;
 					// .item{
 					// 	.title{
@@ -311,28 +407,32 @@
 					// 		padding-top: 20upx;
 					// 		margin-bottom: 30upx;
 					// 	}
-						
+
 					// }
-					.inner-list{
+					.inner-list {
 						display: flex;
 						flex-wrap: wrap;
-						.definite{
-							width: calc(33% - 20upx);
+
+						.definite {
+							width: calc(50% - 30upx);
 							margin-right: 30upx;
 							margin-bottom: 30upx;
-							.img-box{
+
+							.img-box {
 								width: 100%;
-								height: 144upx;
+								height: 220upx;
 								background: #F5F5F5;
 								border-radius: 8upx;
 								overflow: hidden;
 								display: flex;
 								align-items: center;
-								image{	
+
+								image {
 									max-width: 100%;
 								}
 							}
-							.name{
+
+							.name {
 								width: 100%;
 								margin-top: 20upx;
 								font-size: 24upx;
@@ -341,7 +441,8 @@
 								color: #666666;
 								text-align: center;
 							}
-							&:nth-child(3n) {
+
+							&:nth-child(2n) {
 								margin-right: 0;
 							}
 						}
@@ -349,7 +450,6 @@
 				}
 			}
 		}
-		
+
 	}
-	
-</style>
+</style>

+ 1 - 1
pages/shopping/payOrder.vue

@@ -14,7 +14,7 @@
 				<view class="title">支付方式</view>
 				<view class="item">
 					<view class="left">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/wecha_pay.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/wecha_pay.png" mode=""></image>
 						<text class="text">微信支付</text>
 					</view>
 					<label>

+ 11 - 11
pages/shopping/paymentOrder.vue

@@ -18,7 +18,7 @@
 				<radio-group  @change="payTypeChange" v-if="order.isEditMoney!=null&&order.isEditMoney==1">
 					<view class="item"  >
 						<view class="left"  >
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/wecha_pay.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/wecha_pay.png" mode=""></image>
 							<text class="text">微信支付</text>
 						</view>
 						<label>
@@ -27,7 +27,7 @@
 					</view>
 					<view class="item"  >
 						<view class="left">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/pay_de.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/pay_de.png" mode=""></image>
 							<text class="text">物流代收</text>
 						</view>
 						<label>
@@ -39,7 +39,7 @@
 				<radio-group @change="payTypeChange" v-else-if="order.orderCreateType!=null&& order.orderCreateType==3">
 					<view class="item"  >
 						<view class="left" >
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/wecha_pay.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/wecha_pay.png" mode=""></image>
 							<text class="text">微信支付</text>
 						</view>
 						<label>
@@ -48,7 +48,7 @@
 					</view>
 					<view class="item" >
 						<view class="left">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/pay_de.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/pay_de.png" mode=""></image>
 							<text class="text">物流代收</text>
 						</view>
 						<label>
@@ -58,7 +58,7 @@
 					<!-- <view class="item" v-if="user!=null&&user.level==1 "> -->
 					<view class="item" >
 						<view class="left">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/pay_1.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/pay_1.png" mode=""></image>
 							<text class="text">货到付款</text>
 						</view>
 						<label>
@@ -69,7 +69,7 @@
 				<radio-group @change="payTypeChange" v-else-if="order.orderCreateType!=null&& order.orderCreateType==2">
 					<view class="item" v-if="payType==1||payType==4" >
 						<view class="left" >
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/wecha_pay.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/wecha_pay.png" mode=""></image>
 							<text class="text">微信支付</text>
 						</view>
 						<label>
@@ -78,7 +78,7 @@
 					</view>
 					<view class="item" v-if="payType==2||payType==4">
 						<view class="left" >
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/pay_de.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/pay_de.png" mode=""></image>
 							<text class="text">物流代收</text>
 						</view>
 						<label>
@@ -88,7 +88,7 @@
 					<!-- <view class="item" v-if="user!=null&&user.level==1 "> -->
 					<view class="item" v-if="payType==1||payType==4" >
 						<view class="left">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/pay_1.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/pay_1.png" mode=""></image>
 							<text class="text">货到付款</text>
 						</view>
 						<label>
@@ -99,7 +99,7 @@
 				<radio-group @change="payTypeChange" v-else-if="order.orderCreateType!=null&&(order.orderCreateType==1)">
 					<view class="item"  >
 						<view class="left" >
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/wecha_pay.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/wecha_pay.png" mode=""></image>
 							<text class="text">微信支付</text>
 						</view>
 						<label>
@@ -179,7 +179,7 @@
 		// 	return {
 		// 		title: "帮TA支付",
 		// 		path: '/pages_user/user/otherPaymentOrder?orderId='+this.orderId,
-		// 		imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+		// 		imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 		// 	}
 			
 		// },
@@ -315,7 +315,7 @@
 				})
 			},
 			payOrder(){
-				var data = {orderId:this.order.id,payType:this.order.payType};
+				var data = {orderId:this.order.id,payType:this.order.payType,appId:wx.getAccountInfoSync().miniProgram.appId,};
 				var that=this;
 				uni.showLoading();
 				pay(data).then(

+ 14 - 14
pages/shopping/prescribe.vue

@@ -3,7 +3,7 @@
 		<view class="fixed-top-box">
 			<view class="status_bar" :style="{height: statusBarHeight}"></view>
 			<view class="back-box" @click="back">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/back_white.png" mode=""></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/back_white.png" mode=""></image>
 				<text class="title">填写处方信息</text>
 				<text></text>
 			</view>
@@ -13,17 +13,17 @@
 			<!-- 步骤 -->
 			<view class="steps-box">
 				<view class="item active">填写信息</view>
-				<image class="arrow" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow4.png" mode=""></image>
+				<image class="arrow" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow4.png" mode=""></image>
 				<view class="item">医生开方</view>
-				<image class="arrow" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow4.png" mode=""></image>
+				<image class="arrow" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow4.png" mode=""></image>
 				<view class="item">支付订单</view>
-				<image class="arrow" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow4.png" mode=""></image>
+				<image class="arrow" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow4.png" mode=""></image>
 				<view class="item">厂家发货</view>
 			</view>
 			<!-- 提示 -->
 			<view class="tip-box">
 				<view class="top">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/safe2.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/safe2.png" mode=""></image>
 					<text class="text">依据国家规定、处方药需凭处方购买</text>
 				</view>
 				<view class="time-tip">填写问诊人信息、处方信息</view>
@@ -34,7 +34,7 @@
 					<view class="title-box">
 						<text class="title">选择问诊人</text>
 						<view class="add-box" @click="addPeople()">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/add26.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/add26.png" mode=""></image>
 							<text >添加</text>
 						</view>
 					</view>
@@ -47,7 +47,7 @@
 								<text class="ege">{{utils.getAge(item.birthday)}}岁</text>
 							</view>
 							<!-- 选中的对号角标 -->
-							<image v-if="patientId == item.patientId" class="active-img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/sel_right50.png" mode=""></image>
+							<image v-if="patientId == item.patientId" class="active-img" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/sel_right50.png" mode=""></image>
 						</view>
 					</view>
 				</view>
@@ -74,11 +74,11 @@
 						<view class="img" v-for="(item,index) in imgList" :key="index"  >
 							<image :src="item" mode="aspectFill"  @click="previewImage(index)"></image>
 							<view class="del" @click="delImg(index)" >
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/del2.png"></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/del2.png"></image>
 							</view>
 						</view>
 						<view class="chose-img" @tap="chooseImage(1)" v-if="imgList.length<4">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/adds.png"></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/adds.png"></image>
 						</view>
 					</view>
 					
@@ -104,7 +104,7 @@
 				<!-- 是否使用过此药 -->
 				<view class="check-box">
 					<view class="left">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/yao.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/yao.png" mode=""></image>
 						<text class="text">是否有过敏史</text>
 					</view>
 					<radio-group style="display: flex;align-items: center;">
@@ -120,7 +120,7 @@
 				</view>
 				<view class="check-box">
 					<view class="left">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/yao.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/yao.png" mode=""></image>
 						<text class="text">肝功能是否异常</text>
 					</view>
 					<radio-group style="display: flex;align-items: center;">
@@ -136,7 +136,7 @@
 				</view>
 				<view class="check-box">
 					<view class="left">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/yao.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/yao.png" mode=""></image>
 						<text class="text">肾功能是否异常</text>
 					</view>
 					<radio-group style="display: flex;align-items: center;">
@@ -152,7 +152,7 @@
 				</view>
 				<view class="check-box">
 					<view class="left">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/yao.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/yao.png" mode=""></image>
 						<text class="text">是否是备孕/怀孕/哺乳期</text>
 					</view>
 					<radio-group style="display: flex;align-items: center;">
@@ -221,7 +221,7 @@
 				return {
 					title: "填写处方信息",
 					path: "/pages/shopping/prescribe?orderId="+this.orderId,
-					imageUrl: 'https://zkzh-2024.oss-cn-beijing.aliyuncs.com/fs/20241127/5b9750f911804728b153ebe5c0051a6f.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 		},

+ 28 - 25
pages/shopping/productDetails.vue

@@ -29,17 +29,17 @@
 		<view class="det-info">
 			<view class="price-box">
 				<view class="price">
-					<text class="label"  v-if="userinfo.isShow==1&&isuser==false">会员价</text>
-					<text class="label"  v-else>零售价</text>
+					<text class="label" >折扣价</text>
 					<text class="unit">¥</text>
-					<text class="num" v-if="userinfo.isShow==1&&isuser==false">{{product.price}}</text>
-					<text class="num" v-else>{{product.otPrice}}</text>
-					<text class="label" v-if="userinfo.isShow==1&&isuser==false">零售价</text>
-					<text class="old" v-if="userinfo.isShow==1&&isuser==false">¥{{product.otPrice}}</text>
+					<text class="num" >{{product.price}}</text>
+					<text class="label" ></text>
+					<text class="old" >零售价¥{{product.otPrice}}</text>
+					<!-- <text class="label" v-if="userinfo.isShow==1&&isuser==false">零售价</text>
+					<text class="old" v-if="userinfo.isShow==1&&isuser==false">¥{{product.otPrice}}</text> -->
 				</view>
 				<view class="share-box" v-if="userinfo.isShow==1&&isuser==false">
 					<text class="text">分享</text>
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/share1.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/share1.png" mode=""></image>
 					<button  class="share" data-name="shareBtn" open-type="share">分享</button>
 				</view>
 			</view>
@@ -48,12 +48,15 @@
 			</view>
 			<view class="intro" v-if="product.productInfo!=null" v-html="product.productInfo.replace(/\n/g,'<br>')">
 			</view>
+			<view class="intro" v-if="attrs[0].attrValues!=null" >
+				产品规格:{{attrs[0].attrValues}}
+			</view>
 			<view class="safe-box">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/safe.png" mode=""></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/safe.png" mode=""></image>
 				<text class="text" v-if="userinfo.isShow==1&&isuser==false">免邮发货</text>
 				<view class="line" v-if="userinfo.isShow==1&&isuser==false"></view>
 				<view class="line"></view>
-				<text class="text">药师服务</text>
+				<text class="text">客服服务</text>
 				<view class="line"></view>
 				<text class="text">隐私保护</text>
 			</view>
@@ -63,16 +66,16 @@
 			<view class="left">
 				<!-- <view class="head-box">
 					<view class="head" v-for="(item,j) in 5" :key="j">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/head.jpg" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/head.jpg" mode=""></image>
 					</view>
 				</view> --> 
 				<view class="num-box">
 					已有 <text class="text">{{product.sales}}</text> 人购买
 				</view>
 			</view>
-			<!-- <view class="right">
+			<view class="right">
 				库存 <text class="text">{{product.stock}}{{product.unitName}}</text>
-			</view> -->
+			</view>
 			<!-- <view class="right">
 				 <text class="text">库存{{product.stock>0?'充足':'售罄'}} </text>
 			</view> -->
@@ -94,17 +97,17 @@
 		<view class="btn-foot" v-if="userinfo.isShow==1&&isuser==false">
 			<view class="menu-box">
 				<view class="item" @click="goHome">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/back_home.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/back_home.png" mode=""></image>
 					<text class="label">首页</text>
 				</view>
 				<view class="item" style="position: relative;">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/consult_small.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/consult_small.png" mode=""></image>
 					<text class="label">咨询</text>
 					<button class="contact-btn" open-type="contact"></button>
 				</view>
 				<view class="item" @click="navgetTo('./cart')">
 					<uni-badge size="small" :text="cartCount" absolute="rightTop" type="error">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/cart36.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/cart36.png" mode=""></image>
 					</uni-badge>
 					<text class="label">购物车</text>
 				</view>
@@ -142,7 +145,7 @@
 							<view class="input-box">
 								<input type="text" v-model="storeName" placeholder="请选择门店" class="form-input" disabled="disabled" />
 							</view>
-							<image class="arrow" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow_gray.png" mode=""></image>
+							<image class="arrow" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow_gray.png" mode=""></image>
 						</view>
 					</picker>
 				</view> -->
@@ -167,12 +170,12 @@
 					<view class="label">数量</view>
 					<view class="num-box">
 						<view class="img-box" @click="lessNum()">
-							<image v-if="specNum <= 1" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/jian.png" mode=""></image>
-							<image v-else src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/jian2.png" mode=""></image>
+							<image v-if="specNum <= 1" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/jian.png" mode=""></image>
+							<image v-else src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/jian2.png" mode=""></image>
 						</view>
 						<input   type="number" @change="changeNum" v-model="specNum"   />
 						<view class="img-box" @click="addNum()">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/add.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/add.png" mode=""></image>
 						</view>
 					</view>
 				</view>
@@ -181,7 +184,7 @@
 		</popupBottom>
 		
 		<view class="loadding" v-if="loadding==true">
-			<image src="../../static/logo.jpg"></image>
+			<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png"></image>
 			<text class="text">加载中...</text>
 		</view>
 		<u-modal :show="showModal" title="温馨提示" content="处方药须凭处方在药师指导下购买和使用" @confirm="hideModal()"></u-modal>
@@ -277,7 +280,7 @@
 				return {
 					title: this.product.productName,
 					path: '/pages/shopping/productDetails?productId='+this.product.productId+"&userId="+user.userId,
-					imageUrl: '/static/logo.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: this.product.image //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 		},
@@ -288,7 +291,7 @@
 				return {
 					title: this.product.productName,
 					query:'productId='+this.product.productId+"&userId="+user.userId,//页面参数
-					imageUrl: '/static/logo.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+					imageUrl: this.product.image  //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 				}
 			}
 			
@@ -584,7 +587,7 @@
 			left: 0;
 			bottom: 0;
 			z-index: 9;
-			background-image: url(https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/black_mask.png);
+			background-image: url(https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/black_mask.png);
 			background-size: 20upx 44upx;
 			background-repeat: repeat-x;
 		}
@@ -927,7 +930,7 @@
 					background: #FF6633;
 				}
 				&.buy{
-					background: #2BC7B9;
+					background: #3BA737;
 				}
 			}
 		}
@@ -1077,7 +1080,7 @@
 			font-family: PingFang SC;
 			font-weight: bold;
 			color: #FFFFFF;
-			background: #2BC7B9;
+			background: #3BA737;
 			border-radius: 44upx;
 			margin-top: 30upx;
 			// margin-bottom: 30upx;

+ 1 - 1
pages/shopping/success.vue

@@ -3,7 +3,7 @@
 		<view class="inner">
 			<view class="top">
 				<text class="title">支付成功</text>
-				 <image class="icon" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/success.png" ></image>
+				 <image class="icon" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/success.png" ></image>
 				 <view   class="btn-box">
 				 	<view class="btn cancel" @click="goOrderDetails(order.id)"> 查看订单</view>
 				 </view>

+ 35 - 27
pages/user/index.vue

@@ -7,7 +7,7 @@
 				<view class="user-info">
 					<view class="left">
 						<view class="head-img">
-							<image :src="user.avatar==null?'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/detault_head.jpg':user.avatar" mode="aspectFill"></image>
+							<image :src="user.avatar==null?'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/detault_head.png':user.avatar" mode="aspectFill"></image>
 						</view>
 						<view class="name-phone"  v-if="UserInfo">
 							<view class="name">{{user.nickname}}
@@ -16,7 +16,10 @@
 								<text class="fs24 ml12 mb20 " style="color: #666;" v-else
 								>非会员</text>
 							</view>
-							<view class="phone">{{utils.parsePhone(user.phone)}}</view>
+							<view class="phone justify-start align-center ">
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/phone_icon.png" class="w32 h32 mr10"></image>
+								<text>{{utils.parsePhone(user.phone)}}</text>
+							</view>
 						</view>
 						<view class="fs40 bold name-phone center " @click='getOrderCount()' 
 						v-else>立即登录</view>
@@ -24,12 +27,12 @@
 					<view class="right">
 						<uni-badge size="small" :text="msgNum" absolute="rightTop" type="error">
 							<view class="set" @click="navgetTo('/pages_user/user/personInfo')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/icon-set.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/icon-set.png" mode=""></image>
 							</view>
 						</uni-badge>
 						<!-- <uni-badge size="small" :text="msgNum" absolute="rightTop" type="error">
 							<view class="msg-box" @click="navgetTo('/pages_user/user/message')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/icon-msg.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/icon-msg.png" mode=""></image>
 							</view>
 							
 						</uni-badge> -->
@@ -42,35 +45,35 @@
 							<text class="title">我的订单</text>
 							<view class="all-order" @click="showOrder('')">
 								<text class="text">全部订单</text>
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow4.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow4.png" mode=""></image>
 							</view>
 						</view>
 						<view class="status-box">
 							<uni-badge size="small" :text=count0 absolute="rightTop" type="error">
 								<view class="item" @click="showOrder('0')">
-									<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/payment.png" mode=""></image>
+									<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/payment.png" mode=""></image>
 									<text class="text">待付款</text>
 								</view>
 							</uni-badge>
 							<uni-badge size="small" :text=count1 absolute="rightTop" type="error">
 							<view class="item" @click="showOrder('1')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/send_goods.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/send_goods.png" mode=""></image>
 								<text class="text">待发货</text>
 							</view>
 							</uni-badge>
 							<uni-badge size="small" :text=count2 absolute="rightTop" type="error">
 							<view class="item" @click="showOrder('2')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/sou_goods.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/sou_goods.png" mode=""></image>
 								<text class="text">待收货</text>
 							</view>
 							</uni-badge>
 							<view class="item" @click="showOrder('3')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/completed.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/completed.png" mode=""></image>
 								<text class="text">已完成</text>
 							</view>
 							<uni-badge size="small" :text=afterSalesCount absolute="rightTop" type="error">
 							<view class="item" @click="navgetTo('/pages_user/user/refundOrderList')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/after_sales.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/after_sales.png" mode=""></image>
 								<text class="text">售后/退款</text>
 							</view>
 							</uni-badge>
@@ -84,53 +87,53 @@
 						<view class="title">常用工具</view>
 						<view class="tools-list">
 							<view class="item" @click="navgetTo('/pages_user/user/address')" v-if="user.isShow==1">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/address.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/address.png" mode=""></image>
 								<text class="text">收货地址</text>
 							</view>
 							<view class="item no-marin-bottom" @click="navgetTo('/pages_user/user/integral')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/integral.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/integral.png" mode=""></image>
 								<text class="text">积分管理</text>
 							</view>
 							<view class="item no-marin-bottom"  @click="navgetTo('/pages_shopping/shopping/myCoupon')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/mycoupon.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/mycoupon.png" mode=""></image>
 								<text class="text">优惠券</text>
 							</view>
 							<view class="item no-marin-bottom" @click="navgetTo('/pages_user/user/storeProductRelation')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/footprint.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/footprint.png" mode=""></image>
 								<text class="text">我的足迹</text>
 							</view>
 							<view class="item no-marin-bottom" @click="openH5('/h5/userAgreement')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/service_file.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/service_file.png" mode=""></image>
 								<text class="text">用户协议</text>
 							</view>
 							<view class="item no-marin-bottom align-top"  @click="openH5('/h5/privacyPolicy')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/advice.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/advice.png" mode=""></image>
 								<text class="text">隐私保护</text>
 							</view>
 							<view class="item no-marin-bottom">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/customer1.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/customer1.png" mode=""></image>
 								<text class="text">专属客服</text>
 								<button class="contact-btn" open-type="contact"></button>
 							</view>
 							<!-- <view v-if="user.isPromoter==0" class="item no-marin-bottom"  @click="navgetTo('/pages_user/user/userTuiAdd')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/my_promotion.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/my_promotion.png" mode=""></image>
 								<text class="text">申请健康大使</text>
 							</view> -->
 							<!-- <view v-if="user.isPromoter==1" class="item no-marin-bottom"  @click="navgetTo('/pages_user/user/userTui')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/my_promotion.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/my_promotion.png" mode=""></image>
 								<text class="text">我的推广</text>
 							</view> -->
 							<view class="item no-marin-bottom"  @click="navgetTo('/pages/home/cert')">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/qualification.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/qualification.png" mode=""></image>
 								<text class="text">资质证书</text>
 							</view>
 	
 							<view class="item no-marin-bottom" @click="toManager()">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/Document.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/Document.png" mode=""></image>
 								<text class="text">制单管理</text>
 							</view>
 							 <view class="item no-marin-bottom" @click="toManagerCourse()">
-							 	<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/sale_file.png" mode=""></image>
+							 	<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/sale_file.png" mode=""></image>
 							 	<text class="text">销售管理</text>
 							 </view>
 						</view>
@@ -174,7 +177,7 @@
 					isWeixinAuth:0,
 					phone:"",
 					nickname:"用户昵称",
-					avatarUrl:"https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/detault_head.png"
+					avatarUrl:"https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/detault_head.png"
 				},
 				// 状态栏的高度
 				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
@@ -321,9 +324,11 @@
 		width: 100%;
 		height: 494upx;
 		position: relative;
-		background-image: url(https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/personl_top_bg.png);
-		background-repeat: repeat-x;
-		background-size: 40upx 100%;
+		// background-color: #111111;
+		// background-image: url(https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/personl_top_bg.png);
+		background-image: url('https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/personl_top_bg.png');
+		background-repeat: no-repeat;
+		// background-size: 40upx 100%;
 		.top-inner{
 			width: 100%;
 			height: 100%;
@@ -365,9 +370,12 @@
 							font-size: 28upx;
 							font-family: PingFang SC;
 							font-weight: 500;
-							color: #666666;
+							color: #fff;
 							line-height: 1;
 							margin-top: 30upx;
+							background: linear-gradient( 90deg, #F26F00 0%, #FF9D1F 100%);
+							border-radius: 24rpx;
+							padding: 8rpx 16rpx;
 						}
 					}
 				}

+ 1 - 1
pages_company/auth/login.vue

@@ -137,7 +137,7 @@ export default {
 				font-family: PingFang SC;
 				font-weight: bold;
 				color: #FFFFFF;
-				background: #2BC7B9;
+				background: #3BA737;
 				border-radius: 44upx;
 			}
 		}

+ 2 - 2
pages_company/coupon.vue

@@ -14,7 +14,7 @@
 	</view>
     <view class="tui-coupon-list">
       <view class="tui-coupon-item tui-top20" v-for="(item, index) in couponsList" :key="index">
-         <image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/bg_coupon_3x.png" class="tui-coupon-bg" mode="widthFix"></image>
+         <image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/bg_coupon_3x.png" class="tui-coupon-bg" mode="widthFix"></image>
 		<view class="tui-coupon-item-left">
           <view class="tui-coupon-price-box" :class="{ 'tui-color-grey': item.receiveCount>0 }">
             <view class="tui-coupon-price-sign">¥</view>
@@ -48,7 +48,7 @@
 	<Loading :loaded="loadend" :loading="loading"></Loading>
 	<!--暂无优惠券-->
 	<view v-if="couponsList.length == 0 && page > 1" class="no-data-box" >
-		<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png" mode="aspectFit"></image>
+		<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png" mode="aspectFit"></image>
 		<view class="empty-title">暂无数据</view>
 	</view>
   </view>

+ 1 - 1
pages_company/couponDetails.vue

@@ -2,7 +2,7 @@
   <view class="container">
     <view class="tui-coupon-list">
       <view class="tui-coupon-item tui-top20"  >
-         <image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/bg_coupon_3x.png" class="tui-coupon-bg" mode="widthFix"></image>
+         <image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/bg_coupon_3x.png" class="tui-coupon-bg" mode="widthFix"></image>
 		<view class="tui-coupon-item-left">
           <view class="tui-coupon-price-box"  >
             <view class="tui-coupon-price-sign">¥</view>

+ 38 - 13
pages_company/index.vue

@@ -17,34 +17,45 @@
 				<view class="title">常用工具</view>
 				<view class="tools-list">
 					<view class="item" @click="toCreateOrder()">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/order.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/order.png" mode=""></image>
 						<text class="text">商品制单</text>
 					</view>
 					<view class="item" @click="toCreateCoupon()">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/icon_coupon.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/icon_coupon.png" mode=""></image>
 						<text class="text">制单优惠券</text>
 					</view>
+					<view class="item" @click="toCreatejin()">
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/xianjin.png" mode=""></image>
+						<text class="text">制单立减金</text>
+					</view>
 					<view class="item" @click="toPay()">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/money.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/money.png" mode=""></image>
 						<text class="text">微信收款</text>
 					</view>
-					<view class="item" @click="alipay()">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/money.png" mode=""></image>
+					<!-- <view class="item" @click="alipay()">
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/money.png" mode=""></image>
 						<text class="text">支付宝收款</text>
-					</view>
+					</view> -->
 					<view class="item" @click="toOrder()">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/order.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/order.png" mode=""></image>
 						<text class="text">我的订单</text>
 					</view>
-					<view class="item" @click="toPackage()">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/package.png" mode=""></image>
+					<!-- <view class="item" @click="toPackage()">
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/package.png" mode=""></image>
 						<text class="text">商品套餐</text>
 					</view>
 					<view class="item" @click="toCoupon()">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/icon_coupon.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/icon_coupon.png" mode=""></image>
 						<text class="text">套餐优惠券</text>
-					</view>
-					 
+					</view> -->
+					 <view class="item" @click="toPaywechat()">
+					 	<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/app/image/wechat.png" mode=""></image>
+					 	<text class="text">微信收款码</text>
+					 </view>
+					 <view class="item" @click="toliushui()">
+					 	<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/liushui.png" mode=""></image>
+					 	<text class="text">收款流水</text>
+					 </view>
 				</view>
 			</view>
 			<!-- 退出登录按钮 -->
@@ -70,7 +81,21 @@
 			this.getUserInfo()
 		},
 		methods: {
-			
+			toCreatejin(){
+				uni.navigateTo({
+					url:'/pages_company/order/DirectDiscount?companyId='+this.user.companyId+"&companyUserId="+this.user.userId
+				})
+			},
+			toliushui(){
+				uni.navigateTo({
+					url:'/pages_company/paymentStatistics?companyId='+this.user.companyId+"&companyUserId="+this.user.userId
+				})
+			},
+			toPaywechat(){
+				uni.navigateTo({
+					url:'/pages_company/wechatcode?companyId='+this.user.companyId+"&companyUserId="+this.user.userId
+				})
+			},
 			alipay(){
 				// var url="http://alipay.yjf.runtzh.com/#/?companyId="+this.user.companyId+"&companyUserId="+this.user.userId
 				// uni.setClipboardData({

+ 174 - 0
pages_company/order/DirectDetail.vue

@@ -0,0 +1,174 @@
+<template>
+	<view class="hb column">
+		<view class="justify-between align-center p44 m20 colorf bgmap" >
+			<view class="justify-center">
+				<view>
+					<view class="fs48 bold">¥{{DirectDetail.couponPrice}}</view>
+				</view>
+				<view class="ml60">
+					<view>{{DirectDetail.couponName}}</view>
+					<view class="fs24 mt16">可与优惠卷叠加使用</view>
+				</view>
+			</view>
+			<!-- <view class="share-box" v-if="companytoken!=null">
+				<view class="bgf base-price plr28 ptb12 radius40">分享</view>
+				<button  class="share" data-name="shareBtn" open-type="share">分享</button>
+			</view> -->
+			<view class="bgf base-price plr18 ptb12 radius40" @click="payDic">¥{{DirectDetail.couponPrice}}购买</view>
+		</view>
+		<view>
+			<u-modal :show="showpay" :title="title" :content='content' @confirm='tocoupon'></u-modal>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { payCashCoupon} from '@/api/coupon'
+	import { loginByMiniApp} from '@/api/user'
+	export default {
+		data(){
+			return{
+				imageMap: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/Direct-sel.png',
+				DirectDetail:[],
+				companyUserId:'',
+				companytoken:uni.getStorageSync('CompanyUserToken'),
+				showpay:false,
+				title:'支付成功',
+				content:'立减金购买成功,请到我的-优惠卷(立减金)查看立减金!',
+				companyId:""
+			}
+		},
+		//发送给朋友
+		onShareAppMessage() {
+			return {
+				title: this.DirectDetail.nmae,
+				path: '/pages_company/order/DirectDetail?companyUserId='+this.companyUserId
+					+"&item="+JSON.stringify(this.DirectDetail)
+			}
+		},
+		onLoad(option) {
+			this.companyUserId=option.companyUserId
+			this.companyId=option.companyId
+			console.log(JSON.parse(option.item))
+			this.DirectDetail=JSON.parse(option.item)
+			if(!uni.getStorageSync('AppToken')||uni.getStorageSync('AppToken')==null){
+				this.gologin()
+			}
+		},
+		methods:{
+			gologin(){
+				let provider = 'weixin'
+				uni.login({
+					provider: provider,
+					success: async loginRes => {
+						console.log(loginRes)
+						uni.getUserInfo({
+						   provider: provider,
+						   success: (infoRes)=> {
+							    uni.showToast({
+									title: '处理中...',
+									icon: 'loading'
+							    });
+								loginByMiniApp({
+									code: loginRes.code,
+									encryptedData:infoRes.encryptedData,
+									iv:infoRes.iv,
+									appId:wx.getAccountInfoSync().miniProgram.appId,
+								}).then(res=>{
+									 uni.hideLoading();
+									 if (res.code == 200) {
+										 uni.setStorageSync('AppToken',res.token);
+										 uni.setStorageSync('userInfo',JSON.stringify(res.user));
+									 } else {
+										uni.showToast({
+											title: res.msg,
+											icon: 'none'
+										});
+									 }
+								 })
+						   }
+						});
+					}
+				})
+			},
+			payDic(){
+				const data={
+					id:this.DirectDetail.id,
+					couponId:this.DirectDetail.couponId,
+					companyId:this.companyId,
+					companyUserId:this.companyUserId,
+					userId:uni.getStorageSync('userInfo').userId
+				}
+				payCashCoupon(data).then(res=>{
+					let that =this
+					if(res.code==200){
+						console.log(res)
+						uni.requestPayment({
+							provider: 'wxpay',
+							timeStamp: res.result.timeStamp,
+							nonceStr: res.result.nonceStr,
+							package: res.result.packageValue,
+							signType: res.result.signType,
+							paySign: res.result.paySign,
+							success: function(res) {
+								uni.hideLoading();
+								console.log(that.showpay)
+								that.showpay=true
+								uni.showToast({
+									icon:'success',
+									title: "支付成功",
+								});
+							},
+							fail: function(err) {
+								console.log('fail:' + JSON.stringify(err));
+								uni.hideLoading();
+								uni.showToast({
+									icon:'none',
+									title: '用户取消支付!',
+								});
+								console.log(that.showpay)
+							}
+						});
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
+				})
+			},
+			tocoupon(){
+				uni.navigateTo({
+					url:'/pages_shopping/shopping/myCoupon?tabsact='+3
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.bgmap{
+		background: url('https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/Direct-sel.png');
+		background-size: cover;
+	}
+	.share-box{
+		width: 120upx;
+		height: 46upx;
+		border: 1px solid #2BC7B9;
+		border-radius: 23upx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		position: relative;
+		.share{
+			display: inline-block;
+			position: absolute;
+			top: 0;
+			left: 0;
+			width: 100%;
+			height: 100%;
+			opacity: 0;
+		}
+	}
+	
+</style>

+ 77 - 0
pages_company/order/DirectDiscount.vue

@@ -0,0 +1,77 @@
+<template>
+	<view class="hb column">
+		<view>
+			<view v-for="(item,index) in discountlist" :key="index"> 
+				<view class="justify-between align-center p48 m20 colorf bgmap" @click="todetail(item)"
+				>
+					<view class="justify-center">
+						<view>
+							<view class="fs48 bold">¥{{item.couponPrice}}</view>
+						</view>
+						<view class="ml80">
+							<view>{{item.couponName}}</view>
+							<view class="fs24 mt16">可与优惠卷叠加使用</view>
+						</view>
+					</view>
+					<view class="bgf base-price plr28 ptb12 radius40">查看</view>
+				</view>
+			</view>
+		</view>
+		<view v-if="discountlist.length == 0" class="centerV" >
+			<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png" mode="aspectFit"></image>
+			<view class="centerV">暂无数据</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { getCompanyCouponIssueList} from '@/api/coupon'
+	export default {
+		data(){
+			return{
+				discountlist:[],
+				companyUserId:"",
+				companyId:"",
+				imageMap: 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/Direct-sel.png',
+			}
+		},
+		onLoad(option) {
+			this.companyId=option.companyId
+			this.companyUserId=option.companyUserId
+			this.getCompanyCouponIssueLists()
+			console.log(option)
+		},
+		methods:{
+			todetail(item){
+				uni.navigateTo({
+					url: '/pages_company/order/DirectDetail?companyUserId='+this.companyUserId+'&companyId='+this.companyId
+					+"&item="+JSON.stringify(item)
+				})
+				console.log(JSON.stringify(item))
+			},
+			getCompanyCouponIssueLists(){
+				const data={
+					couponType:3,
+				}
+				getCompanyCouponIssueList(data).then(res=>{
+					if(res.code==200){
+						this.discountlist=res.data.list
+						console.log(this.discountlist)
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.bgmap{
+		background: url('https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/Direct-sel.png');
+		background-size: cover;
+	}
+</style>

+ 17 - 3
pages_company/order/cart.vue

@@ -22,12 +22,12 @@
 						</view>
 						<view class="num-box">
 							<view class="img-box" @click="delNum(item)">
-								<image v-if="item.cartNum <= 1" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/jian.png" mode=""></image>
-								<image v-else src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/jian2.png" mode=""></image>
+								<image v-if="item.cartNum <= 1" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/jian.png" mode=""></image>
+								<image v-else src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/jian2.png" mode=""></image>
 							</view>
 							<input type="text"  @change="changeNum($event,item)" :value="item.cartNum"   />
 							<view class="img-box" @click="addNum(item)">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/add.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/add.png" mode=""></image>
 							</view>
 						</view>
 					</view>
@@ -210,6 +210,20 @@
 			// 购物车加法
 			addNum(item) {
 				console.log(item)
+				if(item.cartNum>=item.purchaseLimit&&item.purchaseLimit!=0){
+					uni.showToast({
+						icon:'none',
+						title: `本商品限购${item.purchaseLimit}件,您已购买${item.purchaseLimit}件,本次最多可购买${item.purchaseLimit}件`,
+					});
+					return
+				}
+				if(item.cartNum>=item.stock){
+					uni.showToast({
+						icon:'none',
+						title: `本商品库存${item.stock}件,您已购买${item.stock}件,本次最多可购买${item.stock}件`,
+					});
+					return
+				}
 				item.cartNum++
 				if(item.cartNum>=item.stock){
 					item.cartNum=item.stock;

+ 9 - 5
pages_company/order/confirmCompanyOrder.vue

@@ -74,7 +74,9 @@
 				},
 				carts:[],
 				isAgreement:false,
-				payAmount:null
+				payAmount:null,
+				shareimg:'',
+				sharetitle:""
 			}
 		},
 		onLoad(option) {
@@ -85,18 +87,18 @@
 		//发送给朋友
 		onShareAppMessage(res) {
 			return {
-				title: "中康智慧-您的专属健康解决方案",
+				title: this.sharetitle,
 				path: '/pages_company/order/confirmOrder?orderKey='+this.orderKey,
-				imageUrl: '/static/logo.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl:this.shareimg//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 			
 		},
 		//分享到朋友圈
 		onShareTimeline(res) {
 			return {
-				title:"中康智慧-您的专属健康解决方案",
+				title:this.sharetitle,
 				query:'orderKey='+this.orderKey,
-				imageUrl:  '/static/logo.jpg' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+				imageUrl:this.shareimg //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
 		},
 		methods: {
@@ -157,6 +159,8 @@
 					res => {
 						if(res.code==200){
 							this.carts=res.carts;
+							this.shareimg=res.carts[0].productImage
+							this.sharetitle=res.carts[0].productName
 							this.carts.forEach(function(element) {
 								that.price.payPrice+=element.price*element.cartNum;
 							});

+ 29 - 6
pages_company/order/confirmOrder.vue

@@ -50,7 +50,7 @@
 		</view>
 		<view class="message-box" v-if="messageShow">
 			<view class="left">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/close24.png" mode="" @click="closeOrder()" ></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/close24.png" mode="" @click="closeOrder()" ></image>
 				<view class="text ellipsis">您有{{count0}}个待支付订单</view>
 			</view>
 			<view class="btn" @click="showOrder()">查看</view>
@@ -60,6 +60,7 @@
 
 <script>
 	import {getOrderCount} from '@/api/storeOrder'
+	import {getDicts} from '@/api/index.js'
 	import {getSalesOrder,addUserCart} from '@/api/companyOrder.js'
 	export default {
 		data() {
@@ -76,15 +77,30 @@
 			}
 		},
 		onLoad(option) {
+			this.getDicts()
 			if(this.utils.isLogin()){
 				this.getOrderCount();
 			}
-			console.log("qxj option:"+JSON.stringify(option));
+			// console.log("qxj option:"+JSON.stringify(option));
 			this.orderKey=option.orderKey;
-			this.getSalesOrder();
+			// this.getSalesOrde()
 			 
 		},
+		onShow() {
+			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){
@@ -120,11 +136,18 @@
 				var data={createOrderKey:this.orderKey}
 				getSalesOrder(data).then(
 					res => {
+						console.log('订单详情',res)
 						if(res.code==200){
 							this.carts=res.carts;
-							this.carts.forEach(function(element) {
-								that.price.totalPrice+=element.price*element.cartNum;
-							});
+							// this.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({

+ 2 - 2
pages_company/order/coupon.vue

@@ -2,7 +2,7 @@
   <view ref="container">
     <view class="tui-coupon-list">
       <view class="tui-coupon-item tui-top20" v-for="(item, index) in couponsList" :key="index">
-         <image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/bg_coupon_3x.png" class="tui-coupon-bg" mode="widthFix"></image>
+         <image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/bg_coupon_3x.png" class="tui-coupon-bg" mode="widthFix"></image>
 		<view class="tui-coupon-item-left">
           <view class="tui-coupon-price-box" :class="{ 'tui-color-grey': item.receiveCount>0 }">
             <view class="tui-coupon-price-sign">¥</view>
@@ -36,7 +36,7 @@
 	<Loading :loaded="loadend" :loading="loading"></Loading>
 	<!--暂无优惠券-->
 	<view v-if="couponsList.length == 0 && page > 1" class="no-data-box" >
-		<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png" mode="aspectFit"></image>
+		<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png" mode="aspectFit"></image>
 		<view class="empty-title">暂无数据</view>
 	</view>
   </view>

+ 162 - 0
pages_company/order/lineDetails.vue

@@ -0,0 +1,162 @@
+<template>
+	<view class="column hb bgf">
+		<view class="column align-center pt50 mlr50 pb40" style="border-bottom: 2rpx solid #f5f5f5;">
+			<view class="base-success fs52 bold">
+				<text>+</text>
+				<text>{{countDeatil.payMoney?countDeatil.payMoney.toFixed(2):'0.00'}}</text>
+			</view>
+			<view class="mt8 base-color-3" v-if="countDeatil.remark">备注:{{countDeatil.remark}}</view>
+		</view>
+		<view class="m40 fs24">
+			<view class="justify-start align-center ptb4">
+				<text style="width: 20%;" class="base-color-6">付款时间</text>
+				<text>{{countDeatil.payTime}}</text>
+			</view>
+			<view class="justify-start align-center ptb4">
+				<text style="width: 20%;" class="base-color-6">付款单号</text>
+				<text>{{countDeatil.payCode}}</text>
+			</view>
+			<view class="justify-start align-center ptb4">
+				<text style="width: 20%;" class="base-color-6">商户单号</text>
+				<text>{{countDeatil.tradeNo}}</text>
+			</view>
+		</view>
+		<view class="ptb40 fs24 mlr40" style="border-top: 2rpx solid #f5f5f5;border-bottom: 2rpx solid #f5f5f5;"
+		v-if="countDeatil.refundAuditStatus!==null">
+			<view class="justify-start align-center ptb4">
+				<text style="width: 20%;" class="base-color-6">退款记录</text>
+				<view>
+					<view class="base-color-red mb8" v-if="countDeatil.refundAuditStatus==2">
+						已退款¥{{countDeatil.refundMoney?countDeatil.refundMoney.toFixed(2):'0.00'}}</view>
+					<view class="orangecol" v-if="countDeatil.refundAuditStatus==1">
+						退款中¥{{countDeatil.refundMoney?countDeatil.refundMoney.toFixed(2):'0.00'}}</view>
+					<view class="orangecol" v-if="countDeatil.refundAuditStatus==0">
+						待退款¥{{countDeatil.refundMoney?countDeatil.refundMoney.toFixed(2):'0.00'}}</view>
+					<text>{{countDeatil.refundTime}}</text>
+				</view>
+			</view>
+		</view>
+		<view class="justify-start align-center p20 box mt20">
+			<view class="fs28 mr20" v-if="countDeatil.refundAuditStatus">当前状态</view>
+			<view class="refund" @click="showRefund=true" v-if="countDeatil.refundAuditStatus==null">退款</view>
+			<view class="review" @click="showReview=true" v-if="countDeatil.refundAuditStatus==0">退款审核</view>
+			<view class="refunding" v-if="countDeatil.refundAuditStatus==1">退款中</view>
+			<view class="refuned" v-if="countDeatil.refundAuditStatus==2">已退款</view>
+		</view>
+		<view>
+			<u-modal :show="showRefund" :title="title" :content='content'
+			:showCancelButton="true" @cancel='showRefund=false' @confirm='toRefund'></u-modal>
+		</view>
+		<view>
+			<u-modal :show="showReview" :title="titleReview" :content='contentReview'
+			 :showCancelButton='true' @cancel='showReview=false' @confirm='toReview'></u-modal>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getPaymentDetail,toReviewRefund,refundStorePayment} from '@/api/payment'
+	export default {
+		data() {
+			return {
+				paymentId:null,
+				showRefund:false,
+				showReview:false,
+				title:'退款',
+				content:'确认退款金额并退款!',
+				titleReview:'审核',
+				contentReview:'确认退款金额并同意当前订单退款!',
+				countDeatil:[]
+			}
+		},
+		onLoad(option) {
+			this.paymentId=option.paymentId
+			this.getPaymentDetails()
+			console.log(this.paymentId)
+		},
+		methods: {
+			toReview(){
+				const data={
+					paymentId:this.paymentId
+				}
+				toReviewRefund(data).then(res=>{
+					if(res.code==200){
+						uni.showToast({
+							icon:'none',
+							title: '操作成功!',
+						});
+						this.showReview=false
+						this.getPaymentDetails()
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
+				})
+			},
+			toRefund(){
+				const data={
+					paymentId:this.paymentId,
+					refundMoney:this.countDeatil.payMoney
+				}
+				refundStorePayment(data).then(res=>{
+					if(res.code==200){
+						uni.showToast({
+							icon:'none',
+							title: '操作成功!',
+						});
+						this.showRefund=false
+						this.getPaymentDetails()
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
+				})
+			},
+			getPaymentDetails(){
+				getPaymentDetail({paymentId:this.paymentId}).then(res=>{
+					console.log(res)
+					if(res.code==200){
+						console.log(res)
+						this.countDeatil=res.data
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.box{
+	view{
+		padding: 10rpx 28rpx;
+		border-radius: 40rpx;
+		font-size: 28rpx;
+	}
+}
+.review{
+	background-color: #ff8b06;
+	color: #fff;
+}
+.refund{
+	background-color: #ff1201;
+	color: #fff;
+}
+.refunding{
+	color: #ff8b06;
+}
+.refuned{
+	color: #ff1201;
+}
+.orangecol{
+	color: #ffa006;
+}
+</style>

+ 12 - 12
pages_company/order/productDetails.vue

@@ -39,11 +39,11 @@
 				{{product.productInfo}}
 			</view>
 			<view class="safe-box">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/safe.png" mode=""></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/safe.png" mode=""></image>
 				<text class="text">免邮发货</text>
 				<view class="line"></view>
-				<text class="text">药师服务</text>
-				<view class="line"></view>
+				<!-- <text class="text">服务</text>
+				<view class="line"></view> -->
 				<text class="text">隐私保护</text>
 			</view>
 		</view>
@@ -52,7 +52,7 @@
 			<view class="left">
 				<!-- <view class="head-box">
 					<view class="head" v-for="(item,j) in 5" :key="j">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/head.jpg" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/head.jpg" mode=""></image>
 					</view>
 				</view> -->
 				<view class="num-box">
@@ -83,17 +83,17 @@
 		<view class="btn-foot">
 			<view class="menu-box">
 				<view class="item" @click="goHome">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/back_home.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/back_home.png" mode=""></image>
 					<text class="label">首页</text>
 				</view>
 				<view class="item" style="position: relative;">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/consult_small.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/consult_small.png" mode=""></image>
 					<text class="label">咨询</text>
 					<button class="contact-btn" open-type="contact"></button>
 				</view>
 				<view class="item" @click="navgetTo('./cart')">
 					<uni-badge size="small" :text="cartCount" absolute="rightTop" type="error">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/cart36.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/cart36.png" mode=""></image>
 					</uni-badge>
 					<text class="label">购物车</text>
 				</view>
@@ -142,12 +142,12 @@
 					<view class="label">数量</view>
 					<view class="num-box">
 						<view class="img-box" @click="lessNum()">
-							<image v-if="specNum <= 1" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/jian.png" mode=""></image>
-							<image v-else src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/jian2.png" mode=""></image>
+							<image v-if="specNum <= 1" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/jian.png" mode=""></image>
+							<image v-else src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/jian2.png" mode=""></image>
 						</view>
 						<input type="text" @change="changeNum" v-model="specNum"    />
 						<view class="img-box" @click="addNum()">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/add.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/add.png" mode=""></image>
 						</view>
 					</view>
 				</view>
@@ -156,7 +156,7 @@
 		</popupBottom>
 	  
 		<view class="loadding" v-if="loadding==true">
-	    	<image src="../../static/logo.jpg"></image>
+	    	<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png"></image>
 	    	<text class="text">加载中...</text>
 	    </view>
 	
@@ -445,7 +445,7 @@
 			left: 0;
 			bottom: 0;
 			z-index: 9;
-			background-image: url(https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/black_mask.png);
+			background-image: url(https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/black_mask.png);
 			background-size: 20upx 44upx;
 			background-repeat: repeat-x;
 		}

+ 13 - 13
pages_company/order/productList.vue

@@ -4,13 +4,13 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode=""></image>
 					<input type="text" @confirm="goSearch"   :value="form.productName" placeholder="输入药品名称" 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="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search1.png" mode=""></image>
-					<image @click="showChange(1)" v-if="showType==2"  src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search2.png" mode=""></image>
-					<image @click="openCart()"   src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/carts.png" mode=""></image>
+					<image @click="showChange(2)" v-if="showType==1"  src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search1.png" mode=""></image>
+					<image @click="showChange(1)" v-if="showType==2"  src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search2.png" mode=""></image>
+					<image @click="openCart()"   src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/carts.png" mode=""></image>
 				</view>
 			</view>
 			<!-- 排序框 -->
@@ -21,19 +21,19 @@
 				<view class="item" @click="searchChange('2')">
 					<text class="label">价格</text>
 					<view class="sort-img">
-						<image v-if="form.priceOrder==null||form.priceOrder=='desc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_up.png" mode="" @click="priceUp(true)"></image>
-						<image v-if="form.priceOrder=='asc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_up2.png" mode="" @click="priceUp(false)"></image>
-						<image v-if="form.priceOrder==null||form.priceOrder=='asc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_down.png" mode="" @click="priceDown(true)"></image>
-						<image v-if="form.priceOrder=='desc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_down2.png" mode="" @click="priceDown(false)"></image>
+						<image v-if="form.priceOrder==null||form.priceOrder=='desc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_up.png" mode="" @click="priceUp(true)"></image>
+						<image v-if="form.priceOrder=='asc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_up2.png" mode="" @click="priceUp(false)"></image>
+						<image v-if="form.priceOrder==null||form.priceOrder=='asc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_down.png" mode="" @click="priceDown(true)"></image>
+						<image v-if="form.priceOrder=='desc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_down2.png" mode="" @click="priceDown(false)"></image>
 					</view>
 				</view>
 				<view class="item" @click="searchChange('3')">
 					<text class="label">销量</text>
 					<view class="sort-img">
-						<image v-if="form.salesOrder==null||form.salesOrder=='desc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_up.png" mode="" @click="saleUp(true)"></image>
-						<image v-if="form.salesOrder=='asc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_up2.png" mode="" @click="saleUp(false)"></image>
-						<image v-if="form.salesOrder==null||form.salesOrder=='asc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_down.png" mode="" @click="saleDown(true)"></image>
-						<image v-if="form.salesOrder=='desc'" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/price_arrow_down2.png" mode="" @click="saleDown(false)"></image>
+						<image v-if="form.salesOrder==null||form.salesOrder=='desc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_up.png" mode="" @click="saleUp(true)"></image>
+						<image v-if="form.salesOrder=='asc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_up2.png" mode="" @click="saleUp(false)"></image>
+						<image v-if="form.salesOrder==null||form.salesOrder=='asc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_down.png" mode="" @click="saleDown(true)"></image>
+						<image v-if="form.salesOrder=='desc'" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/price_arrow_down2.png" mode="" @click="saleDown(false)"></image>
 					</view>
 				</view>
 				<view class="item" :class="form.newOrder=='desc'?'active':''" @click="searchChange('4')">
@@ -112,7 +112,7 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png',
+						icon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png',
 						tip: '暂无数据'
 					},
 					textNoMore:"已经到底了",

+ 6 - 6
pages_company/order/productShowDetails.vue

@@ -40,11 +40,11 @@
 				{{product.productInfo}}
 			</view>
 			<view class="safe-box">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/safe.png" mode=""></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/safe.png" mode=""></image>
 				<text class="text">免邮发货</text>
 				<view class="line"></view>
-				<text class="text">药师服务</text>
-				<view class="line"></view>
+				<!-- <text class="text">药师服务</text>
+				<view class="line"></view> -->
 				<text class="text">隐私保护</text>
 			</view>
 		</view>
@@ -53,7 +53,7 @@
 			<view class="left">
 				<!-- <view class="head-box">
 					<view class="head" v-for="(item,j) in 5" :key="j">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/head.jpg" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/head.jpg" mode=""></image>
 					</view>
 				</view> -->
 				<view class="num-box">
@@ -82,7 +82,7 @@
 		</view>
 		
 		<view class="loadding" v-if="loadding==true">
-			<image src="../../static/logo.jpg"></image>
+			<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/image/logoshare.png"></image>
 			<text class="text">加载中...</text>
 		</view>
 		
@@ -199,7 +199,7 @@
 			left: 0;
 			bottom: 0;
 			z-index: 9;
-			background-image: url(https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/black_mask.png);
+			background-image: url(https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/black_mask.png);
 			background-size: 20upx 44upx;
 			background-repeat: repeat-x;
 		}

+ 237 - 0
pages_company/paymentStatistics.vue

@@ -0,0 +1,237 @@
+<template>
+	<view class="column hb flex-1" >
+		<view class="searchbox">
+			<view class="searchbox-bar x-ac">
+				<view :class="queryParam.type == index+1 ? 'searchbox-item searchbox-active':'searchbox-item'"
+					v-for="(item,index) in typeOption" :key="index" @click="handleType(index+1)">{{item.label}}</view>
+			</view>
+			<view class="x-ac ss mt20" v-show="queryParam.type == 4">
+				<view class="calendar-day x-c" @click="showCalendar = true"><u-icon name="calendar" color="#999"
+						size="20"></u-icon>{{startTime}}</view>
+				<view class="calendar-day x-c" @click="showCalendar = true"><u-icon name="calendar" color="#999"
+						size="20"></u-icon>{{endTime}}</view>
+			</view>
+		</view>
+		<view >
+			<u-calendar :show="showCalendar" :mode="mode" @confirm="confirmCalendar" style="flex: 0; overflow: hidden;"
+				@close="closeCalendar" :minDate="new Date().getTime()-(3600*1000*24*60)" :maxDate="new Date().getTime()"
+				></u-calendar>
+		</view>
+		<view class="justify-between p40 align-center">
+			<view>{{PaymentData.statPeriod}}</view>
+			<view class='base-color-6 fs24'>
+				<text class="base-color-dark fs32">{{PaymentData.payCount}}</text>笔
+			</view>
+			<view>
+				<view class='fs28 base-color-6'>收入:
+					<text class="base-success">¥{{PaymentData.totalSales?PaymentData.totalSales:'0.00'}}</text></view>
+				<!-- <view class='fs28 base-color-6 mt4'>退款:
+					<text class="base-color-red ">¥{{PaymentData.totalReturn?PaymentData.totalReturn:'0.00'}}</text></view> -->
+			</view>
+		</view>
+		<view class="column scrolly">
+			<scroll-view :scroll-y="true" class="hb pb40" :refresher-enabled="isEnabled" :refresher-triggered="triggered"
+				refresher-background="rgba(0,0,0,0)" @refresherrefresh="pullDownRefresh"
+				@refresherrestore="triggered = false" :upper-threshold="100" :lower-threshold="100"
+				@refresherabort="triggered = false" @scrolltolower="reachBottom">
+				<view class="bgf p40 m4 " v-for="(item,index) in paymentList" :key="index">
+					<!-- <view class="justify-between align-center" @click="tolineDetails(item)"> -->
+						<view class="justify-between align-center">
+						<view>
+							<view class="fs28 base-color-6 mt4" v-if="item.remark">备注:{{item.remark}}</view>
+							<view class="fs24 base-color-9">支付时间:{{item.payTime}}</view>
+						</view>
+						<view class="column centerV">
+							<view class="base-success fs40 bold">{{item.payMoney.toFixed(2)}}</view>
+							<!-- <view class="orangecol fs24" v-if="item.refundAuditStatus==0&&item.refundAuditStatus==1"
+							>{{item.refundAuditStatus==0?'待审核':'退款中'}}</view>
+							<view class="base-price fs24" v-if="item.refundAuditStatus==2"
+							>{{item.refundAuditStatus==2?'已退款':''}}</view> -->
+						</view>
+					</view>
+				</view>
+				<u-loadmore :status="status" />
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getPaymentList,getPaymentData} from '@/api/payment'
+	export default {
+		data() {
+			return {
+				typeOption: [{
+					label: '今日',
+					value: 1
+				}, {
+					label: '本月',
+					value: 2
+				}, {
+					label: '本年',
+					value: 3
+				}, {
+					label: '自定义',
+					value: 4
+				}],
+				queryParam: {
+					type: 1
+				},
+				showCalendar:false,
+				mode: 'range',
+				startTime:uni.$u.timeFormat(new Date(), 'yyyy-mm-dd'),
+				endTime:uni.$u.timeFormat(new Date(), 'yyyy-mm-dd'),
+				companyId:'',
+				companyUserId:'',
+				pageSize:12,
+				pageNum:1,
+				triggered: false,
+				status: 'loadmore',
+				isEnabled: true,
+				paymentList:[],
+				PaymentData:[]
+			}
+		},
+		onLoad(option) {
+			this.companyUserId=option.companyUserId
+			this.companyId=option.companyId
+			this.getlistDiscount()
+			this.getPaymentDatas("refresh")
+		},
+		methods:{
+			tolineDetails(item){
+				uni.navigateTo({
+					url:'/pages_company/order/lineDetails?paymentId='+item.paymentId
+				})
+			},
+			getPaymentDatas(){
+				const data={
+					companyUserId:this.companyUserId,
+					statType:this.queryParam.type,
+					startDate:this.startTime,
+					endDate:this.endTime,
+					companyId:this.companyId
+				}
+				getPaymentData(data).then(res=>{
+					if(res.code==200){
+						this.PaymentData=res.data
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
+				})
+			},
+			handleType(type) {
+				this.queryParam.type = type
+				if(this.queryParam.type != 4){
+					this.pageNum=1
+					this.paymentList=[]
+					this.getlistDiscount()
+					this.getPaymentDatas("refresh")
+				}
+				if (this.queryParam.type == 4) {
+				}
+			},
+			confirmCalendar(e) {
+				this.startTime = e[0]
+				this.endTime = e[e.length - 1]
+				this.paymentList=[]
+				this.getlistDiscount()
+				this.getPaymentDatas("refresh")
+				this.showCalendar = false
+			},
+			closeCalendar() {
+				this.showCalendar = false
+			},
+			pullDownRefresh() {
+				// 下拉刷新
+				this.triggered = true; //下拉了状态为true
+				setTimeout(() => {
+					this.triggered = false;
+					uni.stopPullDownRefresh()
+					this.pageNum = 1;
+					this.paymentList=[]
+					this.getlistDiscount('refresh') //触底  不穿执行else
+					// 请求接口里面需要判断是不是最后一页   是最后一页 status赋值为‘loadmore’没有更多了
+					// 请求接口
+				}, 1000)
+			},
+			reachBottom() {
+				// status这个是加载状态
+				console.log(111);
+				if (this.status === 'loadmore') {
+					this.status = 'loading'
+					uni.showNavigationBarLoading()
+					setTimeout(() => {
+						this.pageNum++
+						this.getlistDiscount() //触底  不穿执行else
+						uni.hideNavigationBarLoading()
+					}, 1000);
+				}
+			},
+			getlistDiscount(type){
+				const data={
+					companyUserId:this.companyUserId,
+					companyId:this.companyId,
+					statType:this.queryParam.type,
+					startDate:this.startTime,
+					endDate:this.endTime,
+					pageSize:this.pageSize,
+					pageNum:this.pageNum
+					}
+				getPaymentList(data).then(res=>{
+					if(res.code==200){
+						// refresh 下拉
+						if (type == 'refresh') {
+							this.paymentList = res.data.list
+						} else {
+							// 加载更多 当前页和下一页合并
+							this.paymentList = [...this.paymentList, ...res.data.list]
+						}
+						if (res.data.isLastPage) {
+							this.status = 'nomore'
+						} else {
+							this.status = 'loadmore'
+						}
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.orangecol{
+		color: #ffa006;
+	}
+	.searchbox {
+		background-color: #fff;
+		border-radius: 8rpx 8rpx 0 0;
+		padding: 15px;
+	
+		&-item {
+			height: 23px;
+			line-height: 23px;
+			width: 65px;
+			background: #f5f5f5;
+			text-align: center;
+			border-radius: 5px;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 400;
+			font-size: 12px;
+			color: #888;
+		}
+	
+		&-active {
+			color: #fff !important;
+			background-color: #1677ff !important;
+		}
+	}
+</style>

+ 3 - 3
pages_company/storeOrder.vue

@@ -2,7 +2,7 @@
 	<view>
 		<view class="search-cont">
 			<view class="inner">
-				<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+				<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode=""></image>
 				<input type="text" value="" placeholder="输入订单号" confirm-type="搜索" @confirm="goSearch"   placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 			</view>
 		</view>
@@ -83,7 +83,7 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png',
+						icon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png',
 						tip: '暂无数据'
 					}
 				},
@@ -251,7 +251,7 @@
 						font-family: PingFang SC;
 						font-weight: 500;
 						color: #FFFFFF;
-						background-image: url(https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/recom.png);
+						background-image: url(https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/recom.png);
 						background-repeat: no-repeat;
 						background-size: 100% 100%;
 						margin-right: 8upx;

+ 11 - 11
pages_company/storeOrderDetail.vue

@@ -2,13 +2,13 @@
 	<view>
 		<view class="top-cont">
 			<!-- 背景图片 -->
-			<image class="bg" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/order_top_bg.png" mode=""></image>
+			<image class="bg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/order_top_bg.png" mode=""></image>
 			<view class="top-inner">			
 				<!-- 这里是状态栏 -->
 				<view class="fixed-top-box">
 					<view class="status_bar" :style="{height: statusBarHeight}"></view>
 					<view class="back-box" @click="back">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/back_white.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/back_white.png" mode=""></image>
 						<text class="title">订单详情</text>
 						<text></text>
 					</view>
@@ -23,7 +23,7 @@
 					<!-- 待付款 -->
 					<view v-if="order.status == 0" class="inner">
 						<view class="img-box">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/pag96.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/pag96.png" mode=""></image>
 						</view>
 						<view class="status-box">
 							<text class="status">待付款</text>
@@ -33,7 +33,7 @@
 					<!-- 待发货 -->
 					<view v-if="order.status == 1" class="inner">
 						<view class="img-box">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/pag96.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/pag96.png" mode=""></image>
 						</view>
 						<view class="status-box">
 							<text class="status">待发货</text>
@@ -43,7 +43,7 @@
 					<!-- 已发货、待收货 -->
 					<view v-if="order.status == 2" class="inner">
 						<view class="img-box">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/receipt.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/receipt.png" mode=""></image>
 						</view>
 						<view class="status-box">
 							<text class="status">待收货</text>
@@ -53,7 +53,7 @@
 					<!-- 已完成 -->
 					<view v-if="order.status == 3" class="inner">
 						<view class="img-box">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/finish96.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/finish96.png" mode=""></image>
 						</view>
 						<view class="status-box">
 							<text class="status">已完成</text>
@@ -64,7 +64,7 @@
 					<!--交易取消 -->
 					<view v-if="order.status == -3" class="inner">
 						<view class="img-box">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/close_trade.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/close_trade.png" mode=""></image>
 						</view>
 						<view class="status-box">
 							<text class="status">交易关闭</text>
@@ -73,7 +73,7 @@
 					</view>
 					<view v-if="order.status == -1" class="inner">
 						<view class="img-box">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/close_trade.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/close_trade.png" mode=""></image>
 						</view>
 						<view class="status-box">
 							<text class="status">申请售后</text>
@@ -82,7 +82,7 @@
 					</view>
 					<view v-if="order.status == -2" class="inner">
 						<view class="img-box">
-							<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/close_trade.png" mode=""></image>
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/close_trade.png" mode=""></image>
 						</view>
 						<view class="status-box">
 							<text class="status">退款成功</text>
@@ -93,7 +93,7 @@
 				<!-- 下单人信息 -->
 				<view class="order-placer">
 					<view class="inner">
-						<image class="location" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/location.png" mode=""></image>
+						<image class="location" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/location.png" mode=""></image>
 						<view class="info">
 							<view class="name-phone">
 								<text class="text">{{order.realName}}</text>
@@ -206,7 +206,7 @@
 							<text class="label">电子处方</text>
 							<view class="check-box" @click="showImg()">
 								<text class="text">查看</text>
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow4.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow4.png" mode=""></image>
 							</view>
 						</view>
 					</view>

+ 3 - 3
pages_company/storeProductPackage.vue

@@ -3,7 +3,7 @@
 		<view class="top-fixed">
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode=""></image>
 					<input type="text" @confirm="goSearch"   :value="form.title" placeholder="输入套餐名称" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 				</view>
 			</view>
@@ -93,7 +93,7 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png',
+						icon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png',
 						tip: '暂无数据'
 					}
 				},
@@ -291,7 +291,7 @@
 						font-family: PingFang SC;
 						font-weight: 500;
 						color: #FFFFFF;
-						background-image: url(https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/recom.png);
+						background-image: url(https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/recom.png);
 						background-repeat: no-repeat;
 						background-size: 100% 100%;
 						margin-right: 8upx;

+ 4 - 4
pages_company/storeProductPackageDetails.vue

@@ -80,11 +80,11 @@
 		<view class="btn-foot">
 			<view class="menu-box">
 				<view class="item" @click="goHome">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/back_home.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/back_home.png" mode=""></image>
 					<text class="label">首页</text>
 				</view>
 				<view class="item" style="position: relative;">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/consult_small.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/consult_small.png" mode=""></image>
 					<text class="label">咨询</text>
 					<button class="contact-btn" open-type="contact"></button>
 				</view>
@@ -96,7 +96,7 @@
 		</view>
 		<view class="message-box" v-if="messageShow">
 			<view class="left">
-				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/close24.png" mode="" @click="closeOrder()" ></image>
+				<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/close24.png" mode="" @click="closeOrder()" ></image>
 				<view class="text ellipsis">您有{{count0}}个待支付订单</view>
 			</view>
 			<view class="btn" @click="showOrder()">查看</view>
@@ -284,7 +284,7 @@
 			left: 0;
 			bottom: 0;
 			z-index: 9;
-			background-image: url(https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/black_mask.png);
+			background-image: url(https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/black_mask.png);
 			background-size: 20upx 44upx;
 			background-repeat: repeat-x;
 		}

+ 127 - 0
pages_company/wechatcode.vue

@@ -0,0 +1,127 @@
+<template>
+	<view class="column centerV">
+		<view class="codeimg">
+			<view v-if="wechatImg!=null" class="centerV">
+				<image :src="wechatImg" style="width: 100%;" mode="aspectFit" :show-menu-by-longpress="true" ></image>
+				<view class="centerV">点击保存图片至本地!</view>
+			</view>
+			<view v-else>
+				<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png" style="width: 100%;"
+					mode="aspectFill"></image>
+				<view class="centerV">暂无二维码,请点击生成二维码</view>
+			</view>
+		</view>
+		<view class="centerV generate" @click="generatecode" v-if="wechatImg==null">点击生成</view>
+		<view class="centerV generate" @click="saveImage" v-else>保存图片</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getcomapycode,
+		generateComapycode
+	} from '@/api/companyUser'
+	export default {
+		data() {
+			return {
+				wechatImg: null,
+				companyId: '',
+				companyUserId:null
+			}
+		},
+		onLoad(option) {
+			this.companyId = option.companyId
+			this.companyUserId=option.companyUserId
+			this.getcomapycodes()
+		},
+		methods: {
+			saveImage() {
+				wx.downloadFile({
+				  url: this.wechatImg, //仅为示例,并非真实的资源
+				  success (res) {
+					  console.log(res)
+				    // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
+				    if (res.statusCode === 200) {
+						wx.saveImageToPhotosAlbum({
+							filePath: res.tempFilePath,
+							success: function(res) {
+								wx.showToast({
+									title: '已保存至相册',
+									icon: 'none',
+									duration: 1000
+								})
+							},
+							fail: function(err) {
+								console.log(err);
+								wx.showToast({
+									title: '保存失败',
+									icon: 'none',
+									duration: 1000
+								})
+							}
+						})
+				      wx.playVoice({
+				        filePath: res.tempFilePath
+				      })
+				    }
+				  }
+				})
+				
+			},
+			generatecode() {
+				const data = {
+					companyId: this.companyId,
+					appId: wx.getAccountInfoSync().miniProgram.appId,
+					companyUserId:this.companyUserId
+				}
+				generateComapycode(data).then(res => {
+					if (res.code == 200) {
+						this.getcomapycodes()
+						console.log(res)
+					} else {
+						uni.showToast({
+							icon: 'none',
+							title: res.msg,
+						});
+					}
+				})
+			},
+			getcomapycodes() {
+				const data = {
+					companyId: this.companyId,
+					companyUserId:this.companyUserId,
+					appId:wx.getAccountInfoSync().miniProgram.appId,
+				}
+				getcomapycode(data).then(res => {
+					if (res.code == 200) {
+						// 核心js代码:
+						this.wechatImg = res.data
+
+					} else {
+						uni.showToast({
+							icon: 'none',
+							title: res.msg,
+						});
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.codeimg {
+		width: 80%;
+		margin: 40rpx 0;
+	}
+
+	.generate {
+		background-color: #2BC7B9;
+		width: 70%;
+		margin: 0 auto;
+		border-radius: 40rpx;
+		padding: 20rpx 0;
+		color: #fff;
+		margin-top: 30rpx;
+	}
+</style>

+ 5 - 2
pages_course/becomeSale.vue

@@ -47,7 +47,8 @@
 				companyId:'',
 				phoneNumber:'',
 				nickName:'',
-				password:''
+				password:'',
+				companyUserId:''
 			}
 		},
 		computed: {
@@ -57,6 +58,7 @@
 		  },
 		onLoad(option) {
 			this.companyId = option.id
+			this.companyUserId = option.companyUserId
 		},
 		methods: {
 			close() {},
@@ -66,7 +68,8 @@
 					companyId:this.companyId,
 					phoneNumber:this.phoneNumber,
 					nickName:this.nickName,
-					password:this.password
+					password:this.password,
+					companyUserId:this.companyUserId
 				}
 				if(this.phoneNumber==''){
 					uni.showToast({ title: '请输入手机号!', icon: 'none' });

+ 2 - 2
pages_course/becomeVIP.vue

@@ -131,7 +131,7 @@
 		onLoad(option) {
 			console.log(option)
 			// let path = 'https://userapp.fbylive.com'//福本源
-			let path = 'https://userapp.zkhj6.com'//中康
+			// let path = 'https://userapp.zkhj6.com'//中康
 			// let path = 'https://user.test.ylrztop.com/api'//云融融智
 			// let path = 'https://userapp.ashyisheng.com'//蜂巢快药
 			// let path = 'https://userapp.whhm.ylrzcloud.com/prod-api'//惠名大药房
@@ -140,7 +140,7 @@
 			// let path = 'https://usercourse.beliyostore.com'//倍力优
 			// let path = 'https://userapp.bainian1000y.cn/prod-api'//百年康城
 			// let path = 'https://userapp.drkzyy.cn/prod-api'//青岛市德瑞康
-			// let path = 'https://companyapp.gjh2024.com/apis'//金康键
+			let path = 'https://userapp.moonxiang.com/prod-api'//存在文化
 			uni.setStorageSync('requestPath',path)
 			if(uni.getStorageSync('userInfo')&&JSON.stringify(uni.getStorageSync('userInfo'))!='{}') {
 				this.userInfo = JSON.parse(uni.getStorageSync('userInfo'))

+ 705 - 0
pages_course/components/commentBox.vue

@@ -0,0 +1,705 @@
+<template>
+	<view>
+		<template v-if="openCommentStatus==2">
+			<!-- <text v-for="(item, index) in activeDanmus" :key="item.commentId" class="danmu-item danmuMove"
+				:style="{
+				  top: item.top + 'px',
+				  ...item.style,
+				  'animation-duration': '8s'
+				 }" @animationend="animationend(item,index)">
+				{{ item.content }}
+			</text> -->
+		</template>
+		<view class="container-body" id="msglist" v-if="openCommentStatus==1">
+			<view class="listbox" v-for="(item, index) in msgs" :key="index" :id="'view' + index">
+				<text :class="userId&&item.userId == userId?'list-name my':'list-name'">
+					{{userId&&item.userId == userId ? '我' : item.nickName||'--'}}:
+				</text>
+				<text class="list-con">{{item.content||''}}</text>
+			</view>
+			<view class="empty" v-if="msgs&&msgs.length==0">暂无评论~</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { saveMsg,revokeMsg,getComments} from "@/api/courseAuto.js"
+	export default {
+		props: {
+			height:{
+				type: String,
+				default:'0px'
+			},
+			urlOption:{
+				type: Object,
+				default:{}
+			},
+			time:{
+				type: [String,Number],
+				default: 0
+			},
+			viewCommentNum:{
+				type: [String,Number],
+				default: 200
+			},
+			openCommentStatus:{
+				type: [String,Number],
+				default: 3
+			},
+			//  用户自己开启关闭弹幕展示 1,展示弹幕,0 关闭的弹幕
+			showDanmu:{
+				type: [String,Number],
+				default: 1
+			},
+		},
+		data() {
+			return {
+				statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
+				scrollTop: 0,
+				inputText:"",
+				isSocketOpen:false,
+				socket:null,
+				isSend:true,
+				commentList:[],
+				msgs: [],
+				pageNum: 1,
+				pageSize: 10,
+				userInfo: {},
+				userId: '',
+				pingpangTimes:null,
+				// 弹幕
+				danmuList: [],
+				tracks:[],
+				activeDanmus:[],
+				flagTime: 0,
+				danmuItemStyle:{
+					color: '#ffffff',
+					fontSize: '16px',
+					border: 'solid 1px #ffffff',
+					borderRadius: '5px',
+					padding: '2px 2px',
+					backgroundColor: 'rgba(255, 255, 255, 0.1)'
+				},
+				ctx: null,
+				danmuIndex:{}
+			}
+		},
+		mounted() {
+			this.getCommentsFun()
+			this.getUser();
+			this.initTracks()
+			if(!this.socket || !this.isSocketOpen) {
+				this.initSocket()
+			}
+		},
+		methods: {
+			back() {
+				uni.navigateBack()
+			},
+			getUser() {
+				const userInfo = uni.getStorageSync('userInfo');
+				if(userInfo&&JSON.stringify(userInfo)!='{}') {
+					this.userInfo = JSON.parse(userInfo)
+					this.userId = this.userInfo.userId || ''
+				}else {
+					this.userInfo = {}
+					this.userId = ''
+				}
+			},
+			getCommentsFun() {
+				let that = this
+				getComments({
+					pageNum: this.openCommentStatus==2 ? 1 : this.pageNum,
+					pageSize: this.openCommentStatus==2 ? this.viewCommentNum : this.pageSize,
+					courseId: this.urlOption.courseId,
+					videoId: this.urlOption.videoId,
+					openCommentStatus: this.openCommentStatus
+				}).then(res=>{
+					if(res.code==200){
+						if(this.openCommentStatus==2) {
+							this.danmuList = res.data.list.map(item=>({
+								commentId: item.commentId,
+								content: item.content,
+								time: item.time || this.time,
+								color: "#FFFFFF",
+								mode: item.mode || "scroll",
+								top: null,
+								style: {
+									color: item.isColor==1 ? item.color || this.danmuItemStyle.color : this.danmuItemStyle.color,//是否彩色1是0否
+									fontSize: item.fontSize || this.danmuItemStyle.fontSize, 
+									padding: this.danmuItemStyle.padding,
+									border:this.userInfo.userId ==item.userId ? item.color ? `solid 1px ${item.color}`: this.danmuItemStyle.border : 'none',
+									borderRadius: this.userInfo.userId==item.userId ? this.danmuItemStyle.borderRadius : 0,
+									backgroundColor: this.userInfo.userId==item.userId ? this.danmuItemStyle.backgroundColor : 'transparent'
+								},
+							}))
+							this.initDanmuIndex()
+							that.$emit('getMore',0)
+						} else if(this.openCommentStatus==1) {
+							this.danmuList = []
+							this.activeDanmus = []
+							this.danmuIndex = {};
+							let list = res.data.list.reverse()
+							if (that.pageNum == 1) {
+								that.commentList = list; 
+								that.handleScrollBottom();
+							} else {
+								that.commentList = that.commentList.concat(list);
+							}
+							that.msgs = [...list,...that.msgs]
+							if(that.commentList.length >= res.data.total || that.commentList.length >= Number(this.viewCommentNum||200)) {
+								that.$emit('getMore',1)
+							} else {
+								this.pageNum++
+								that.$emit('getMore',0)
+							}
+						} else {
+							that.danmuList = []
+							that.activeDanmus = []
+							that.danmuIndex = {};
+							that.commentList = [];
+							that.msgs = that.msgs;
+							that.$emit('getMore',0);
+						}
+					}
+					else{
+						that.danmuList = []
+						that.danmuIndex = {};
+						that.commentList = [];
+						that.msgs = that.msgs;
+						that.$emit('getMore',0);
+					}
+				})
+			},
+			saveMsg() {
+				if (this.inputText == "" || this.inputText.trim() == "") {
+					uni.showToast({
+						title: '请输入评论',
+						icon: "none"
+					})
+					return;
+				}
+				if (!this.isSend) {
+					return;
+				}
+				const param = {
+					userId: this.userId || '',
+					userType: 2, // 1-管理员,2-用户
+					courseId: this.urlOption.courseId,
+					videoId: this.urlOption.videoId,
+					type:1, // 评论类型 1:评论,2:回复,目前没有回复,默认传1就行了
+					content: this.inputText,
+					time: this.time,
+					fontSize: '16px',
+					mode: "scroll",
+					color: "#ffffff",
+				}
+				saveMsg(param).then(res=>{
+					if(res.code == 200) {
+						const status = res.status ? 0 : 1
+						this.sendMsg(param,status);
+					} else {
+						uni.showToast({
+							title: res.msg,
+							icon: "none"
+						})
+					}
+				})
+			},
+			handleInput(val) {
+				this.inputText = val
+				if(!this.isSocketOpen) {
+					// 重新发起会话
+					this.initSocket('reStart')
+				} else {
+					this.saveMsg();
+				}
+			},
+			handleScrollBottom() {
+				setTimeout(() => {
+					const query = uni.createSelectorQuery().in(this);
+					query.select('#msglist')
+						.boundingClientRect((res) => {
+							if(res) {
+								const scrollH = res.height;
+								this.scrollTop = res.height;
+								this.$emit('getScrollTop',this.scrollTop)
+							}
+						}).exec();
+				},500);
+			},
+			initSocket(type) { 
+				//创建一个socket连接
+				var userId = this.userInfo.userId;
+				var that = this;
+				if (this.socket) {
+					this.socket.close()
+					this.socket = null;
+				}
+				this.socket = uni.connectSocket({
+					url: getApp().globalData.wsDanmuUrl + "/app/webSocket/" + userId,
+					multiple: true,
+					success: res => {
+						console.log('WebSocket连接已打开1!');
+						that.isSocketOpen = true
+						// 保持心跳
+						if(that.pingpangTimes) {
+							clearInterval(that.pingpangTimes)
+							that.pingpangTimes= null
+						}
+						that.pingpangTimes=setInterval(()=>{
+							let data={
+								userId: that.userId || '',
+								userType: 2, // 1-管理员,2-用户
+								courseId: that.urlOption.courseId,
+								videoId: that.urlOption.videoId,
+								type:1, // 评论类型 1:评论,2:回复,目前没有回复,默认传1就行了
+								// msg: that.inputText,
+								cmd:'heartbeat'
+							};
+							that.socket.send({
+								data: JSON.stringify(data),
+								success: () => {
+									// console.log('WebSocket发送心条数据!');
+								},
+								fail: () => {
+									that.isSocketOpen=false
+								}
+							});
+						},15000)
+					},
+					error: res => {
+						console.log(res)
+					},
+				})
+				this.socket.onMessage((res) => {
+					console.log("收到消息parse",JSON.parse(res.data))
+					const redata = JSON.parse(res.data);
+					if(redata.cmd=="heartbeat"){
+						  //心跳
+						  // console.log("heartbeat")
+					}else if(redata.cmd=="sendMsg"){
+						that.isSend=true;
+						that.addMsg(redata);
+					}
+				})
+				//监听socket打开
+				this.socket.onOpen(() => {
+					console.log('WebSocket连接已打开2!');
+					that.isSocketOpen = true
+					that.isSend = true;
+					if(type=='reStart') {
+						// 重连的时候重新发消息
+						this.saveMsg()
+					}
+				})
+				//监听socket关闭
+				this.socket.onClose(() => {
+					that.isSocketOpen = false
+					that.socket = null
+					console.log('WebSocket连接已关闭!');
+					if(that.pingpangTimes) {
+						clearInterval(that.pingpangTimes)
+						that.pingpangTimes= null
+					}
+				})
+				//监听socket错误
+				this.socket.onError((err) => {
+					console.log("socket err:",err)
+					that.isSocketOpen = false
+					that.socket = null
+					if(that.pingpangTimes) {
+						clearInterval(that.pingpangTimes)
+						that.pingpangTimes= null
+					}
+				})
+			},
+			sendMsg(param,status) {
+				if(status == 1) {
+					this.isSend = true;
+					this.addMsg({msg: param.content,time: param.time},2)
+					return
+				}
+				if (this.isSocketOpen) {
+					var userId = this.userInfo.userId;
+					var data = {
+						userId: this.userId || '',
+						userType: 2, // 1-管理员,2-用户
+						courseId: this.urlOption.courseId,
+						videoId: this.urlOption.videoId,
+						type:1, // 评论类型 1:评论,2:回复,目前没有回复,默认传1就行了
+						msg: param.content,
+						cmd: 'sendMsg',
+						time: param.time,
+						fontSize: '16px',
+						mode: "scroll",
+						color: "#ffffff",
+					};
+					this.socket.send({
+						data: JSON.stringify(data),
+						success: () => {
+							console.log("发送成功")
+							this.isSend = false;
+						},
+						fail: () => {
+							console.log("发送失败")
+						}
+					});
+			
+				}
+			
+			},
+			addMsg(data,type) {
+				let obj  = {}
+				if (type==2) {
+					obj = {
+						content: data.msg,
+						courseId: this.urlOption.courseId,
+						type: 1,
+						userId: this.userId,
+						userType: 2,
+						videoId: this.urlOption.videoId,
+						nickName: '',
+						time: data.time,
+						fontSize: data.fontSize,
+						mode: data.mode,
+						color: data.color,
+					}
+				} else {
+					obj = {
+						content: data.msg,
+						courseId: this.urlOption.courseId,
+						type: data.type,
+						userId: data.userId,
+						userType: data.userType,
+						videoId: this.urlOption.videoId,
+						nickName: data.nickName,
+						time: data.time,
+						fontSize: data.fontSize,
+						mode: data.mode,
+						color: data.color,
+					}
+				}
+				if(this.openCommentStatus == 1){
+					this.msgs.push(obj)
+					this.handleScrollBottom();
+				} else if(this.openCommentStatus == 2) {
+					this.addDanmuMsg(obj)
+				}
+				this.inputText = ""
+				this.$emit("setInputText")
+			},
+			addDanmuMsg(content) {
+				const id = content.userId +'_' + new Date().getTime()
+				const mystyle = {
+					color: content.color || this.danmuItemStyle.color,
+					fontSize: content.fontSize || this.danmuItemStyle.fontSize,
+					border: content.color ? `solid 1px ${content.color}`: this.danmuItemStyle.border,
+					borderRadius: this.danmuItemStyle.borderRadius,
+					padding: this.danmuItemStyle.padding,
+					backgroundColor: this.danmuItemStyle.backgroundColor
+				}
+				const otherstyle = {
+					color: content.color || this.danmuItemStyle.color,
+					fontSize: content.fontSize || this.danmuItemStyle.fontSize,
+					padding: this.danmuItemStyle.padding,
+				}
+				const mode = content.mode || "scroll"
+				const obj = {
+					commentId: content.commentId || id,
+					userId: content.userId,
+					content: content.content,
+					time: this.flagTime + 1,
+					color: content.color || this.danmuItemStyle.color,
+					style: this.userInfo.userId == content.userId ? mystyle : otherstyle,
+					top: null
+				}
+				if(this.showDanmu == 0) return
+
+				// 如果danmuList超过最大大小,移除旧的弹幕
+				const maxDanmuListSize = 10000; // 设置最大大小
+				if (this.danmuList.length >= maxDanmuListSize) {
+					this.danmuList.shift(); // 移除最旧的弹幕
+				}
+				this.danmuList.push(obj);
+			
+				// 更新索引
+				if (!this.danmuIndex[obj.time]) {
+					this.danmuIndex[obj.time] = [];
+				}
+				this.danmuIndex[obj.time].push(obj);
+			},
+			closeWSocket() {
+				if(this.socket!=null){
+					this.socket.close()
+				}
+				if(this.pingpangTimes) {
+					clearInterval(this.pingpangTimes)
+					this.pingpangTimes= null
+				}
+			},
+			initTracks() {
+				this.tracks = [];
+				const trackHeight = 22; // 每行高度
+				const trackCount = 3;
+				for (let i = 0; i < trackCount; i++) {
+					this.tracks.push({
+						top: i * trackHeight + 10,
+						isFree: true,
+						releaseTime: 0 // 轨道释放时间
+					});
+				}
+			},
+			// 获取字体高度
+			getTextWidth(content) {
+				if (!this.ctx) {
+					this.ctx = uni.createCanvasContext('myCanvas')
+				}
+				const metrics = this.ctx.measureText(content)
+				return Math.ceil(metrics.width)
+			},
+			// 分配轨道
+			getFreeTrack(item) {
+				const screenWidth = uni.getSystemInfoSync().screenWidth;
+				const width = this.getTextWidth(item.content);
+				const passWidth = width + screenWidth;
+				const duration = 8; // 持续时间(秒)
+				const currentTime = Date.now();
+			
+				for (let i = 0; i < this.tracks.length; i++) {
+					if (this.tracks[i].isFree || this.tracks[i].releaseTime <= currentTime) {
+						this.tracks[i].isFree = false;
+						this.tracks[i].releaseTime = currentTime + Math.ceil(duration * 1000 / passWidth * width) + 1000;
+						return this.tracks[i].top;
+					}
+				}
+			
+				// 无可用轨道
+				if (this.userInfo.userId && item.userId == this.userInfo.userId) {
+					// console.log("自己发的弹幕");
+					let trackHeight = this.tracks[this.tracks.length - 1].top;
+					return Math.random() * trackHeight + 16; // 自己发的弹幕随机高度
+				} else {
+					// console.log("无可用轨道");
+					return 'abandon';
+				}
+			},
+			// 初始化时建立索引
+			initDanmuIndex() {
+			    this.danmuIndex = {};
+			    this.danmuList.forEach((item) => {
+			        if (!this.danmuIndex[item.time]) {
+			            this.danmuIndex[item.time] = [];
+			        }
+			        this.danmuIndex[item.time].push(item);
+			    });
+			},
+			// 检测并激活弹幕
+			checkDanmu(flagTime) {
+				this.flagTime = flagTime;
+				if(this.showDanmu == 0) return;
+				const newDanmus = this.danmuList.filter((item) => Math.abs(item.time - this.flagTime) < 1);
+				// 分配轨道高度
+				const aliveNewDanmus = newDanmus.map((item) => {
+					if (!item.top) {
+						item.top = this.getFreeTrack(item);
+					}
+					return item;
+				}).filter((item) => item.top !== 'abandon');
+				// 添加到活跃列表
+				this.activeDanmus = [...this.activeDanmus, ...aliveNewDanmus];
+				this.$emit("getActiveDanmus",this.activeDanmus)
+			},
+			animationend(moveItem, i) {
+				// 移除动画结束的弹幕(性能优化)
+				this.activeDanmus = this.activeDanmus.filter((item) => item.commentId !== moveItem.commentId)
+				this.$emit("getActiveDanmus",this.activeDanmus)
+			},
+		},
+		beforeDestroy() {
+			if(this.socket!=null){
+				this.socket.close()
+			}
+			if(this.pingpangTimes) {
+				clearInterval(this.pingpangTimes)
+				this.pingpangTimes= null
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.empty {
+		@include u-flex(row, center, center);
+		padding: 24rpx 50rpx;
+		color: #999999;
+	}
+	.listbox {
+		white-space: pre-wrap;
+		letter-spacing: 1px;
+		margin-bottom: 16rpx;
+	}
+	.list-name {
+		flex-shrink: 0;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 600;
+		font-size: 28rpx;
+		color: #222222;
+		margin-right: 16rpx;
+	}
+	.my {
+		color: #FF5C03;
+	}
+	.list-con {
+		font-family: PingFang SC, PingFang SC;
+		font-size: 28rpx;
+		color: #222222;
+	}
+	.nav-bar {
+		position: fixed;
+		z-index: 9999;
+		top: 0;
+		left: 0;
+		width: 100%;
+		overflow: hidden;
+
+		.nav-bg {
+			width: 100%;
+			height: 100%;
+			position: absolute;
+			left: 0;
+			top: 0;
+			z-index: 1;
+			background-color: #fff;
+		}
+
+		&-box {
+			position: relative;
+			padding: 0 24rpx;
+			@include u-flex(row, center, flex-start);
+			height: 88rpx;
+			box-sizing: border-box;
+			z-index: 3;
+		}
+
+		&-left {
+			width: 100%;
+			@include u-flex(row, center, flex-start);
+			overflow: hidden;
+
+			image {
+				flex-shrink: 0;
+				width: 64rpx;
+				height: 64rpx;
+				border-radius: 12rpx 12rpx 12rpx 12rpx;
+			}
+		}
+
+		&-name {
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 600;
+			font-size: 28rpx;
+			color: #222222;
+		}
+
+		&-head {
+			flex: 1;
+			overflow: hidden;
+			margin-left: 22rpx;
+			margin-right: 22rpx;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 400;
+			font-size: 23rpx;
+			color: #999999;
+		}
+	}
+
+	.page-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+	}
+
+	.container-body {
+		padding: 32rpx 30rpx;
+		box-sizing: border-box;
+	}
+
+	.TUI-message-list {
+		width: 100%;
+		box-sizing: border-box;
+	}
+	.chatinput {
+		position: fixed;
+		left: 32rpx;
+		right: 32rpx;
+		z-index: 999;
+		bottom: calc(var(--window-bottom) + 24rpx);
+		height: 96rpx;
+		background-color: green;
+		background: #FFFFFF;
+		box-shadow: 0rpx 8rpx 21rpx 0rpx rgba(0, 0, 0, 0.1);
+		border-radius: 24rpx 24rpx 24rpx 24rpx;
+		@include u-flex(row, center, center);
+		padding: 0 24rpx;
+		box-sizing: border-box;
+		.uni-input {
+			flex: 1;
+			margin-right: 32rpx;
+			font-size: 30rpx;
+		}
+	
+		.send {
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 400;
+			font-size: 28rpx;
+			color: #FFFFFF !important;
+			flex-shrink: 0;
+			padding: 0 20rpx;
+			height: 72rpx;
+			background: #FF5C03 !important;
+			border-radius: 8rpx 8rpx 8rpx 8rpx;
+			&::after {
+				border: none;
+			}
+		}
+	}
+	// .danmu-item {
+	// 	position: absolute;
+	// 	top: 0;
+	// 	white-space: nowrap;
+	// 	font-size: 16px;
+	// 	height: 20px;
+	// 	display: inline-flex;
+	// 	box-sizing: border-box;
+	// 	align-items: center;
+	// }
+	// .danmuMove {
+	// 	// animation: mymove 8s linear forwards;
+	// 	// animation-duration: 8s;
+	// 	animation-timing-function: linear;
+	// 	animation-delay: 0s;
+	// 	animation-iteration-count: 1;
+	// 	animation-direction: normal;
+	// 	animation-fill-mode: forwards;
+	// 	animation-play-state: running;
+	// 	animation-name: mymove;
+	// 	will-change: transform;
+	// }
+	
+	// @keyframes mymove {
+	// 	from {
+	// 		transform: translateX(100vw);
+	// 	}
+	
+	// 	to {
+	// 		transform: translateX(-100%);
+	// 	}
+	// }
+</style>

+ 162 - 0
pages_course/components/descInfo.vue

@@ -0,0 +1,162 @@
+<template>
+	<view class="descbox" style="padding-top: 20rpx;">
+		<template v-if="!isLogin||isAddKf!=1">
+			<view class="descbox-title">{{courseInfo.title || ''}}</view>
+			<view class="descbox-info">
+				<!-- <view class="descbox-info-l">
+					<view>{{courseInfo.views}}次播放</view>
+					<view class="descbox-info-time">总时长:{{courseInfo.totalDuration}}</view>
+				</view> -->
+				<view class="descbox-info-r expand" v-if="textHeight > 21">
+					<text @click="handleExpand">{{isExpand ? '收起简介' : '展开简介'}}</text>
+					<image :src="imgPath+'/app/image/course_arrow_up_icon.png'" v-show="isExpand"></image>
+					<image :src="imgPath+'/app/image/course_arrow_down_icon.png'" v-show="!isExpand"></image>
+				</view>
+			</view>
+		</template>
+		<view class="descbox-desc" id="descbox-desc" :style="{height: isExpand ? 'auto': '42rpx'}">
+			<text>{{courseInfo.description || ''}}</text>
+			<view :class="isExpand ? 'expand': 'expand expand-ab'" v-if="isLogin&&isAddKf==1&&textHeight > 21">
+				<text @click="handleExpand">{{isExpand ? '收起简介' : '展开简介'}}</text>
+				<image :src="imgPath+'/app/image/course_arrow_up_icon.png'" v-show="isExpand"></image>
+				<image :src="imgPath+'/app/image/course_arrow_down_icon.png'" v-show="!isExpand"></image>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			isLogin: {
+				type: Boolean,
+				default: false,
+			},
+			isAddKf: {
+				type: [String,Number],
+				default: 0,
+			},
+			courseInfo: {
+				type: Object,
+				default: {},
+			},
+		},
+		computed:{
+			imgPath() {
+			  return this.$store.state.imgpath
+			},
+		},
+		data() {
+			return {
+				// 是否展开
+				isExpand: true,
+				textHeight: 0, //文本高度
+			}
+		},
+		methods: {
+			// 展开简介
+			handleExpand() {
+				this.isExpand = !this.isExpand
+			},
+			getDescHeight() {
+				this.$nextTick(() => {
+					const query = uni.createSelectorQuery().in(this);
+					query
+						.select("#descbox-desc")
+						.boundingClientRect((data) => {
+							if(data) {
+								this.textHeight = data.height
+							}
+						})
+						.exec();
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.descbox {
+		padding: 0 32rpx;
+		margin-bottom: 20rpx;
+		background-color: #fff;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 400;
+		font-size: 28rpx;
+		color: #222222;
+		line-height: 42rpx;
+		word-break: break-word;
+	
+		&-title {
+			padding: 24rpx 0;
+			font-weight: 500;
+			font-size: 32rpx;
+		}
+	
+		&-info {
+			padding-top: 24rpx;
+			@include u-flex(row, center, space-between);
+			font-size: 26rpx;
+			color: #757575;
+	
+			&-l {
+				flex: 1;
+				@include u-flex(row, center, flex-start);
+			}
+	
+			&-time {
+				margin-left: 18rpx;
+				padding-left: 18rpx;
+				position: relative;
+	
+				&::after {
+					content: "";
+					width: 4rpx;
+					height: 4rpx;
+					background: #999999;
+					border-radius: 50%;
+					position: absolute;
+					left: 0;
+					top: 50%;
+					transform: translateY(-50%);
+				}
+			}
+	
+			&-r {
+				background: transparent;
+			}
+		}
+	
+		&-desc {
+			overflow: hidden;
+			position: relative;
+		}
+	}
+	.expand {
+		flex-shrink: 0;
+		@include u-flex(row, center, flex-end);
+		color: #FF5C03;
+		font-weight: 400;
+		font-size: 24rpx;
+	
+		image {
+			width: 32rpx;
+			height: 32rpx;
+		}
+	}
+	
+	.expand-ab {
+		position: absolute;
+		top: 0;
+		right: 0;
+		box-shadow: -50rpx 0 20rpx 8rpx #FFFFFF;
+		background-color: #fff;
+	}
+	
+</style>

+ 206 - 0
pages_course/components/descInfoNav.vue

@@ -0,0 +1,206 @@
+<template>
+	<view style="background-color: #fff;padding-bottom: 116rpx;">
+		<view class="title-content" id="title-content">
+			<!-- 答题时展示小节课程名,其他展示课程名 -->
+			<!-- 小节课程名 -->
+			<view class="subtitlebox" v-if="isLogin&&isAddKf==1">
+				{{courseInfo.title || ''}}
+			</view>
+			<!-- 课程名字 -->
+			<view class="miantitlebox" v-else>
+				{{courseInfo.courseName || ''}}
+			</view>
+		</view>
+		<view class="descbox" style="padding-top: 20rpx;" v-if="courseInfo.title || courseInfo.description">
+			<template v-if="!isLogin||isAddKf!=1">
+				<view class="descbox-title">{{courseInfo.title || ''}}</view>
+				<view class="descbox-info">
+					<!-- <view class="descbox-info-l">
+						<view>{{courseInfo.views}}次播放</view>
+						<view class="descbox-info-time">总时长:{{courseInfo.totalDuration}}</view>
+					</view> -->
+					<view class="descbox-info-r expand" v-if="textHeight > 21">
+						<text @click="handleExpand">{{isExpand ? '收起简介' : '展开简介'}}</text>
+						<image :src="imgPath+'/app/image/course_arrow_up_icon.png'" v-show="isExpand"></image>
+						<image :src="imgPath+'/app/image/course_arrow_down_icon.png'" v-show="!isExpand"></image>
+					</view>
+				</view>
+			</template>
+			<view class="descbox-desc" id="descbox-desc" v-if="courseInfo.description" :style="{height: isExpand ? 'auto': '42rpx'}">
+				<text>{{courseInfo.description || ''}}</text>
+				<view :class="isExpand ? 'expand': 'expand expand-ab'" v-if="isLogin&&isAddKf==1&&textHeight > 21">
+					<text @click="handleExpand">{{isExpand ? '收起简介' : '展开简介'}}</text>
+					<image :src="imgPath+'/app/image/course_arrow_up_icon.png'" v-show="isExpand"></image>
+					<image :src="imgPath+'/app/image/course_arrow_down_icon.png'" v-show="!isExpand"></image>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			isLogin: {
+				type: Boolean,
+				default: false,
+			},
+			isAddKf: {
+				type: [String,Number],
+				default: 0,
+			},
+			courseInfo: {
+				type: Object,
+				default: {},
+			},
+		},
+		computed:{
+			imgPath() {
+			  return this.$store.state.imgpath
+			},
+		},
+		data() {
+			return {
+				// 是否展开
+				isExpand: true,
+				textHeight: 0, //文本高度
+			}
+		},
+		methods: {
+			// 展开简介
+			handleExpand() {
+				this.isExpand = !this.isExpand
+			},
+			getDescHeight() {
+				this.$nextTick(() => {
+					const query = uni.createSelectorQuery().in(this);
+					query
+						.select("#descbox-desc")
+						.boundingClientRect((data) => {
+							if(data){
+								this.textHeight = data.height
+							}
+						})
+						.exec();
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.miantitlebox {
+		padding: 30rpx 32rpx;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 500;
+		font-size: 36rpx;
+		color: #222222;
+	}
+	.subtitlebox {
+		padding: 30rpx 0;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 500;
+		font-size: 36rpx;
+		color: #222222;
+	}
+	.title-content {
+		padding: 0 32rpx;
+		background-color: #fff;
+		font-size: 28rpx;
+		line-height: 1.6;
+	
+		.title {
+			font-size: 36rpx;
+			font-weight: 500;
+			color: #414858;
+		}
+	
+		.time-or-subtitle {
+			margin-top: 12rpx;
+			color: #666666;
+		}
+	}
+	.descbox {
+		padding: 14rpx 32rpx;
+		margin-bottom: 20rpx;
+		background-color: #fff;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 400;
+		font-size: 28rpx;
+		color: #222222;
+		line-height: 42rpx;
+		word-break: break-word;
+	
+		&-title {
+			margin-bottom: 24rpx;
+			font-weight: 500;
+			font-size: 32rpx;
+		}
+	
+		&-info {
+			margin-bottom: 24rpx;
+			@include u-flex(row, center, space-between);
+			font-size: 26rpx;
+			color: #757575;
+	
+			&-l {
+				flex: 1;
+				@include u-flex(row, center, flex-start);
+			}
+	
+			&-time {
+				margin-left: 18rpx;
+				padding-left: 18rpx;
+				position: relative;
+	
+				&::after {
+					content: "";
+					width: 4rpx;
+					height: 4rpx;
+					background: #999999;
+					border-radius: 50%;
+					position: absolute;
+					left: 0;
+					top: 50%;
+					transform: translateY(-50%);
+				}
+			}
+	
+			&-r {
+				background: transparent;
+			}
+		}
+	
+		&-desc {
+			overflow: hidden;
+			position: relative;
+		}
+	}
+	.expand {
+		flex-shrink: 0;
+		@include u-flex(row, center, flex-end);
+		color: #FF5C03;
+		font-weight: 400;
+		font-size: 24rpx;
+	
+		image {
+			width: 32rpx;
+			height: 32rpx;
+		}
+	}
+	
+	.expand-ab {
+		position: absolute;
+		top: 0;
+		right: 0;
+		box-shadow: -50rpx 0 20rpx 8rpx #FFFFFF;
+		background-color: #fff;
+	}
+	
+</style>

+ 146 - 0
pages_course/components/ques.vue

@@ -0,0 +1,146 @@
+<template>
+	<view class="ques-content" :style="{ fontSize: fontSize(28)}">
+		<view class="ques-content-tit" :style="{ fontSize: fontSize(36)}" v-show="openCommentStatus!=1">问答题</view>
+		<view v-for="(item,index) in quesList" :key="index">
+			<view class="ques-title" :style="{ fontSize: fontSize(32)}">
+				<text>{{index + 1}}.</text>
+				<view class="ques-type" :style="{ fontSize: fontSize(24)}" v-show="item.type == 1 || item.type == 2">
+					{{item.type == 1 ? '单选' : item.type == 2 ? '多选' : ''}}
+				</view>
+				<text>{{item.title}}</text>
+			</view>
+			<view :class="isAnswer(item,option.name) ?'ques-option ques-option-active':'ques-option'"
+				v-for="(option,idx) in item.questionOption" :key="idx" @click="handleAnswer(item,option,index)">
+				<view>
+					{{numberToLetter(idx)}}.
+				</view>
+				<view>{{option.name}}</view>
+			</view>
+		</view>
+		<view class="empty" v-if="quesList&&quesList.length==0">暂未设置题目~</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: ['quesList','openCommentStatus'],
+		data() {
+			return {
+				
+			}
+		},
+		computed: {
+			fontSize() {
+				return size=>{
+					const value = uni.upx2px(size)
+					const scale = uni.getStorageSync('fontScale') || 1;
+					if(scale<1){
+						return value + 'px';
+					}else {
+						return value * scale + 'px';
+					}
+				}
+			},
+			isAnswer() {
+				return (item, name) => {
+					if (item.type == 1) {
+						return item.answer == name
+					} else if (item.type == 2) {
+						const array = item.answer.split(',')
+						return array.some(i => i == name)
+					} else {
+						return false
+					}
+				}
+			}
+		},
+		methods: {
+			numberToLetter(num) {
+				// 将数字转换为字母的 ASCII 码
+				let letterCode = num + 65;
+				// 将 ASCII 码转换为大写字母
+				let letter = String.fromCharCode(letterCode);
+				return letter;
+			},
+			handleAnswer(item, option,index) {
+				const param = {
+					item,
+					option,
+					index
+				}
+				this.$emit("handleAnswer", param)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.empty {
+		@include u-flex(row, center, center);
+		padding: 24rpx 50rpx;
+		color: #999999;
+	}
+	.ques-content {
+		background-color: #fff;
+		padding: 24rpx 32rpx 24rpx 32rpx;
+		box-sizing: border-box;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 400;
+		font-size: 28rpx;
+		color: #222222;
+	}
+
+	.ques-content-tit {
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 600;
+		font-size: 36rpx;
+		color: #222222;
+	}
+
+	.ques-title {
+		margin: 48rpx 0 34rpx 0;
+		font-weight: 500;
+		font-size: 32rpx;
+		white-space: normal;
+	}
+
+	.ques-type {
+		flex-shrink: 0;
+		min-width: 72rpx;
+		min-height: 40rpx;
+		padding: 0 12rpx;
+		margin: 0 12rpx;
+		box-sizing: border-box;
+		background: #FF5C03;
+		border-radius: 8rpx 8rpx 8rpx 8rpx;
+		line-height: 40rpx;
+		text-align: center;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #FFFFFF;
+		display: inline-block;
+	}
+
+	.ques-option {
+		min-height: 88rpx;
+		padding: 24rpx 32rpx;
+		box-sizing: border-box;
+		margin-bottom: 24rpx;
+		background: #F5F7FA;
+		border-radius: 16rpx 16rpx 16rpx 16rpx;
+		display: flex;
+		align-items: center;
+
+		&-active {
+			color: #FF5C03 !important;
+			background: #FCF0E7 !important;
+		}
+	}
+</style>

+ 65 - 70
pages_manage/learn.vue → pages_course/learn.vue

@@ -1,64 +1,31 @@
 <template>
 	<view class="container">
 		<view class="top">
-			<image class="bg" src="/static/assets/learn-bg.png" mode="widthFix"></image>
+			<image class="bg " style="height: 600rpx;" :src="learncourse.imgUrl" mode="scaleToFill"></image>
 			<view class="top-box">
-				<view class="title">《健康生活方式指导》</view>
+				<view class="title">{{learncourse.courseName}}</view>
 				<view class="txt">
-					<image src="/static/assets/learn1.png"></image>
-					<text>共5节课</text>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/learn1.png"></image>
+					<text>共{{learnList.length}}节课</text>
 				</view>
 			</view>
 		</view>
 		<view class="container-body">
-			<!-- <view class="center-box">
-				<u-tabs lineColor="#f56c6c" :scrollable="false"
-					:activeStyle="{color: '#fd694f',fontWeight: 'bold',fontSize:'34rpx'}"
-					:inactiveStyle="{color: '#787878',fontSize:'34rpx'}" :list="tabList" @click="ontabList">
-				</u-tabs>
-				<view class="progress-box">
-					<image src="/static/assets/learn2.png"></image>
-					<text class="title">听课进度</text>
-					<text class="txt">已学习<text style="color: #f74d3a;">0</text>/5节课</text>
-				</view>
-				<view class="progress">
-					<u-line-progress inactiveColor="#f0f4f7" activeColor="#3c9cff" :percentage="0"
-						:showText="false"></u-line-progress>
-					<text>0%</text>
-				</view>
-			</view> -->
-
-			<!-- <view class="list">
-				<view class="img-box">
-					<view class="sub">第一课</view>
-					<image src="/static/assets/learn-img.png"></image>
-				</view>
-				<view class="right">
-					<view class="title">第一课 如何防控烦人的慢性病</view>
-					<view class="bottom">
-						<view class="tip">
-							<image src="/static/assets/learn3.png" mode="widthFix"></image>
-							<text>答题送金币+200</text>
-						</view>
-						<view class="btn">已学习4%</view>
-					</view>
-				</view>
-			</view> -->
 
 			<view class="list" v-for="(item,index) in learnList" :key="index">
 				<view class="img-box">
-					<view class="sub">第课</view>
-					<image :src="item.videoImgUrl || '/static/assets/no-img.png'"></image>
+					<view class="sub">第{{index+1}}课</view>
+					<image :src="item.videoImgUrl || 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no-img.png'" mode="aspectFill"></image>
 				</view>
 				<view class="right">
 					<view class="title">{{item.title}}</view>
 					<view class="bottom">
-						<view class="tip">
-							<image src="/static/assets/learn3.png" mode="widthFix"></image>
+						<!-- <view class="tip">
+							<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/learn3.png" mode="widthFix"></image>
 							<text>答题送金币+200</text>
-						</view>
-						<view @click="goLive(item)" class="btn" v-if="item.stauts==0">已学习4%</view>
-						<view @click="goLive(item)" class="btn-red" v-else>去学习</view>
+						</view> -->
+						<!-- <view @click="goLive(item)" class="btn" v-if="item.stauts==0">已学习4%</view> -->
+						<view @click="goLive(item)" class="btn-red">去学习</view>
 					</view>
 				</view>
 			</view>
@@ -69,7 +36,8 @@
 <script>
 	import { compile } from "vue";
 import {
-		courseList
+		courseList,
+		courseListB
 	} from '@/api/class.js'
 	
 	export default {
@@ -81,7 +49,9 @@ import {
 				}, {
 					name: '课程目录'
 				}],
-				learnList: []
+				learnList: [],
+				learncourse:{},
+				type:null,
 			}
 		},
 		computed: {
@@ -90,18 +60,56 @@ import {
 		onLoad(options) {
 			// 接收传递的课程 ID
 			if (options.courseId) {
+				console.log(options.courseId)
 				this.courseId = options.courseId;
+				if(options.type==1){
+					this.getCourseList()
+				}else{
+					this.getCourseListb()
+				}
 			}
+			
 		},
 		mounted() {
-			this.getCourseList()
 		},
 		methods: {
 			goLive(item) {
 				console.log("id",item)
 				const id=item.videoId
+				const videoitem = {
+					videoId:item.videoId,
+					courseId:this.courseId
+				}
 				uni.navigateTo({
-					url: '/pages_course/videovip?videoitem='+JSON.stringify(item)
+					url: '/pages_course/video?videoitem='+JSON.stringify(videoitem)
+					// url: '/pages_course/video'
+				})
+			},
+			getCourseListb() {
+				//私域看课
+				courseListB().then(res => {
+					console.log("课程列表", res)
+					if (res.code == 200) {
+						// 1. 根据 courseId 找到对应的课程
+						const course = res.data.find(item => item.courseId == this.courseId);
+						if (course && course.fsUserCourseVideoList) {
+							// 2. 映射数据到 learnList 格式
+							this.learncourse=course
+							this.learnList = course.fsUserCourseVideoList
+							console.log("learnList是多少》》", this.learnList)
+							console.log("learnList是多少", this.learncourse)
+							
+						} else {
+							console.warn("未找到课程或视频列表");
+							this.learnList = [];
+						}
+					} else {
+						uni.hideLoading();
+						uni.showToast({
+							title: res.msg,
+							icon: 'none'
+						});
+					}
 				})
 			},
 			getCourseList() {
@@ -112,8 +120,11 @@ import {
 						const course = res.data.find(item => item.courseId == this.courseId);
 						if (course && course.fsUserCourseVideoList) {
 							// 2. 映射数据到 learnList 格式
+							this.learncourse=course
 							this.learnList = course.fsUserCourseVideoList
 							console.log("learnList是多少》》", this.learnList)
+							console.log("learnList是多少", this.learncourse)
+							
 						} else {
 							console.warn("未找到课程或视频列表");
 							this.learnList = [];
@@ -127,23 +138,6 @@ import {
 					}
 				})
 			}
-			// getCourseDetails() {
-			// 	var data={
-			// 		courseId:courseId
-			// 	}
-			// 	courseDetails(data).then(res => {
-			// 		console.log("课程详情", res)
-			// 		if (res.code == 200) {
-			// 		} else {
-			// 			uni.hideLoading();
-			// 			uni.showToast({
-			// 				title: res.msg,
-			// 				icon: 'none'
-			// 			});
-			// 		}
-			// 	})
-
-			// }
 		}
 	}
 </script>
@@ -165,10 +159,11 @@ import {
 				bottom: -90rpx;
 				width: 100%;
 				padding: 30rpx;
-				background: linear-gradient(to bottom,
-						rgba(255, 255, 255, 0.5) 0%,
-						rgba(255, 255, 255, 0.9) 20%,
-						rgba(255, 255, 255, 1) 100%);
+				// background: linear-gradient(to bottom,
+				// 		rgba(255, 255, 255, 0.5) 0%,
+				// 		rgba(255, 255, 255, 0.9) 20%,
+				// 		rgba(255, 255, 255, 1) 100%);
+				background-color: #fff;
 				border-radius: 16rpx;
 
 				.title {
@@ -301,7 +296,7 @@ import {
 					.bottom {
 						display: flex;
 						// flex-direction: column;
-						justify-content: space-between;
+						justify-content: flex-end;
 						align-items: center;
 						font-size: 26rpx;
 

+ 2 - 2
pages_course/reward.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="answerPopup-box bg">
 		<!-- 正确 -->
-		<image class="tipimg" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/course_answer_img.png"
+		<image class="tipimg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/course_answer_img.png"
 			mode="aspectFill"></image>
 		<view class="answerPopup-title">恭喜你,回答正确</view>
 		<view class="answerPopup-desc">您有一份奖励待领取哦</view>
@@ -12,7 +12,7 @@
 
 <script>
 	// import wx from 'jweixin-module';
-	import { initJssdk } from "@/utils/common.js"
+	// import { initJssdk } from "@/utils/common.js"
 	export default {
 		data() {
 			return {

+ 34 - 23
pages_manage/teacherClassroom.vue → pages_course/teacherClassroom.vue

@@ -2,7 +2,7 @@
 	<view class="container">
 		<view class="top">
 			<text class="title"><text class="title-brown">健康生活方式</text>大讲堂</text>
-			<image class="top-bg" src="/static/assets/famous1.png"></image>
+			<image class="top-bg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/famous1.png"></image>
 			<view class="txt">
 				<view>让医学回归生活化,</view>
 				<view>以健康的生活方式,</view>
@@ -10,26 +10,16 @@
 			</view>
 		</view>
 		<view class="container-body">
-			<image class="bg" src="/static/assets/bg-class.png"></image>
-			<text class="title">上医有话说</text>
-			<!-- <view class="card-box">
-				<view class="bar">
-					<image class="" src="/static/assets/bar.png"></image>
-					<view class="tit">科学养生 | 名师首发</view>
-				</view>
-				<view class="img">
-					<image src="/static/assets/class.png"></image>
-				</view>
-			</view> -->
+			<image class="bg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/bg-class.png"></image>
+			<text class="title">{{type==1?'健康大讲堂':'生活大讲堂'}}</text>
 			<view class="card-box" v-for="(item,index) in cardList" :key="index" @click="goLearn(item.courseId)">
 				<view class="bar">
-					<image src="/static/assets/bar.png" mode="widthFix"></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/bar.png" mode="widthFix"></image>
 					<view class="tit">{{item.courseName}}</view>
 				</view>
 				<view class="img-box">
 					<view class="img">
-						
-						<image :src="item.imgUrl || '/static/assets/no-img.png'" mode="widthFix"></image>
+						<image :src="item.imgUrl || 'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no-img.png'" mode="widthFix"></image>
 					</view>
 				</view>
 			</view>
@@ -39,25 +29,46 @@
 
 <script>
 	import {
-		courseList
+		courseList,
+		courseListB
 	} from '@/api/class.js'
 	export default {
 		data() {
 			return {
-
-				cardList: []
-
+				type:null,
+				cardList: [],
+				classListb:[]
 			}
 		},
 		computed: {
 
 		},
 		mounted() {
-			this.getCourseList()
-			//this.getDepartmentList();
+			
+		},
+		onLoad(option) {
+			this.type=option.type
+			if(this.type==1){
+				this.getCourseList()
+			}else{
+				this.getCourseListb()
+			}
 		},
-
 		methods: {
+			getCourseListb() {
+				//私域看课
+				courseListB().then(res => {
+					if (res.code == 200) {
+						this.cardList = res.data
+					} else {
+						uni.hideLoading();
+						uni.showToast({
+							title: res.msg,
+							icon: 'none'
+						});
+					}
+				})
+			},
 			getCourseList() {
 				courseList().then(res => {
 					if (res.code == 200) {
@@ -74,7 +85,7 @@
 			},
 			goLearn(id) {
 				uni.navigateTo({
-					url: `/pages_manage/learn?courseId=${id}`
+					url: '/pages_course/learn?courseId='+id+'&type='+this.type
 				})
 			},
 		}

+ 2305 - 0
pages_course/video.vue

@@ -0,0 +1,2305 @@
+<!-- 自动发课看课页面 -->
+<template>
+	<view class="content">
+		<view class="header-nav" :style="{height: `calc(88rpx + ${statusBarHeight}px)`,paddingTop: statusBarHeight + 'px'}">
+			<view class="arrow-left-warning" @click="navback" v-if="isOpen==1">
+				<u-icon name="arrow-left" size='22' color="#222" bold></u-icon>
+			</view>
+			<view class="arrow-left-warning" v-else @click="feedback">
+				<image :src="imgPath+'/app/image/warning.png'"></image>
+				<text>投诉</text>
+			</view>
+			<view class="header-title" :style="{width:menuButtonLeft + 'px',height:menuButtonH+'px',lineHeight:menuButtonH+'px'}">{{courseInfo.title}}</view>
+		</view>
+		<view class="video-box">
+			<image v-if="!isLogin || isAddKf!=1" class="video-poster" :src="courseInfo.imgUrl" mode="aspectFill">
+			</image>
+			<video 
+			@timeupdate="onTimeUpdate" 
+			@progress="progressChange" 
+			@error="videoErrorCallback" 
+			@play="getPlay"
+			@pause="getPause" 
+			@ended="getEnded"
+			@controlstoggle="controlstoggle"
+			@fullscreenchange="fullscreenchange"
+			:title="courseInfo.title"
+			style="width: 100%;height: 420rpx;" 
+			:poster="poster"  
+			id="video-content-box"  
+			controls
+			:auto-pause-if-open-native="true"
+			:auto-pause-if-navigate="true"
+			:enable-progress-gesture="false" 
+			:show-progress="showProgress"
+			:picture-in-picture-mode="[]"
+			:show-background-playback-button="false"
+			:src="videoUrl">
+			<!-- logo -->
+				<!-- 弹幕展示 -->
+				<template v-if="showDanmu==1&&openCommentStatus==2">
+					<text v-for="(item, index) in activeDanmus" :key="item.commentId" class="danmu-item danmuMove"
+						:style="item.danmustyle" @animationend="animationend(item,index)">
+						{{ item.content }}
+					</text>
+				</template>
+				<cover-view class="video-danmu-btnbox" :style="{display: openCommentStatus==2&&isfull&&crtShow&&isLogin&&isAddKf==1 ? 'block':'none'}">
+					<cover-image class="video-danmu-image" :src="imgPath+'/app/image/danmu_set.png'" @click="openDanmu(1)"></cover-image>
+				</cover-view>
+				<cover-image v-if="courseLogo" :class="isfull?'logo-full':'logo'" :src="courseLogo" mode="widthFix"></cover-image>
+			</video>
+		</view>
+		<!-- 弹幕方法 -->
+		<commentBox
+			v-if="openCommentStatus==2"
+			ref="danmuBox" 
+			:height="height" 
+			:urlOption="urlOption" 
+			:time="playTime"
+			:showDanmu="showDanmu"
+			:viewCommentNum="viewCommentNum"
+			:openCommentStatus="openCommentStatus"
+			@setInputText="setInputText" 
+			@getScrollTop="getScrollTop"
+			@getMore="getMore"
+			@getActiveDanmus="getActiveDanmus"></commentBox>
+		<view id="title-contentnav">
+			<view class="title-content" v-show="openCommentStatus!=1">
+				<!-- 答题时展示小节课程名,其他展示课程名 -->
+				<!-- 小节课程名 -->
+				<view class="subtitlebox" v-if="isLogin&&isAddKf==1">
+					{{courseInfo.title}}
+				</view>
+				<!-- 课程名字 -->
+				<view class="miantitlebox" v-else>
+					{{courseInfo.courseName}}
+				</view>
+			</view>
+			<view class="tabbox" v-if="openCommentStatus==1">
+				<view :class="currentTab == nav.id ? 'tabbox-active':''" v-for="nav in navList" :key="nav.id" @click="handleTab(nav.id)">{{nav.name}}</view>
+			</view>
+		</view>
+		<scroll-view
+		class="scroll-view" 
+		:style="{height: height}" 
+		:scroll-top="scrollTop" 
+		:scroll-y="true" 
+		:refresher-enabled="currentTab == 2"
+		:refresher-triggered="triggered"
+		@refresherrefresh="handleRefresher">
+			<template v-if="openCommentStatus==1">
+				<view v-show="currentTab==0">
+					<descInfoNav ref="descInfoNav" :isLogin="isLogin" :isAddKf="isAddKf" :courseInfo="courseInfo"></descInfoNav>
+				</view>
+				<view v-show="currentTab==2">
+					<commentBox 
+					ref="commentBox" 
+					:height="height" 
+					:urlOption="urlOption" 
+					:time="playTime"
+					:flagTime="flagTime"
+					:showDanmu="showDanmu"
+					:viewCommentNum="viewCommentNum"
+					:openCommentStatus="openCommentStatus"
+					@setInputText="setInputText" 
+					@getScrollTop="getScrollTop"
+					@getMore="getMore"></commentBox>
+				</view>
+			</template>
+			<view v-show="currentTab==1">
+				<template v-if="openCommentStatus!=1&&(courseInfo.title || courseInfo.description)">
+					<!-- 介绍 -->
+					<descInfo ref="descInfo" :isLogin="isLogin" :isAddKf="isAddKf" :courseInfo="courseInfo"></descInfo>
+				</template>
+				<!-- 问题 -->
+				<template v-if="isLogin&&isAddKf==1">
+					<ques ref="ques" :quesList="quesList" :openCommentStatus="openCommentStatus" @handleAnswer="handleAnswer"></ques>
+				</template>
+			</view>
+		</scroll-view>
+		<!-- 线路 -->
+		<view class="video-line" @click="openPop" v-if="isLogin&&isAddKf==1">
+			<image :src="imgPath+'/app/image/changePlayer-icon.png'"></image>
+			<text>线路{{numberToChinese(lineIndex + 1)}}</text>
+		</view>
+		<!-- 线路弹窗 -->
+		<uni-popup ref="popup" type="bottom"  class="full-width-popup">
+			<view class="popupbox">
+				<view class="popupbox-head">
+					<text>线路选择</text>
+					<image class="close-icon" :src="imgPath+'/app/image/tc_close_icon.png'" mode="aspectFill" @click="close">
+					</image>
+				</view>
+				<view class="popupbox-content">
+					<view :class="lineIndex == index ? 'line-item line-active': 'line-item'"
+						v-for="(it,index) in lineList" :key="index" @click="handleLine(index)">
+						线路{{numberToChinese(index + 1)}}</view>
+				</view>
+			</view>
+		</uni-popup>
+		<!-- 温馨提示弹窗 -->
+		<uni-popup ref="tipsPopup" type="center" :is-mask-click="false">
+			<view class="tipsPopup-mask">
+				<image class="red_envelope_top" :src="imgPath+'/app/image/red_envelope_img.png'" mode="aspectFill"></image>
+				<view class="tipsPopup">
+					<image class="tipsPopup-close"  :src="imgPath+'/app/image/course_close_white_icon.png'" mode="aspectFill"
+						@click="closeTipsPop"></image>
+					<view class="tipsPopup-line">
+						<view class="tipsPopup-box">
+							<view class="tipsPopup-head">
+								<image class="tipsPopup-head-title" :src="imgPath+'/app/image/tips_title_img.png'"
+									mode="widthFix"></image>
+							</view>
+							<view class="tipsPopup-content">
+								<view class="tipsPopup-content-title">亲爱的用户,</view>
+								<view>您已经观看课程一半的时间了,请注意休息并保持专注。</view>
+							</view>
+							<view class="tipsPopup-btn-box">
+								<view class="tipsPopup-btn" @click="closeTipsPop">继续观看领奖励</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+		<!-- 发送弹幕 -->
+		<view class="video-line danmu-line" @click="openDanmu(0)" v-if="isLogin&&isAddKf==1&&openCommentStatus==2">
+			<image class="set_image"  :src="imgPath+'/app/image/danmu_set_black.png'" mode="aspectFill"></image>
+			<text>发弹幕</text>
+		</view>
+		<!-- 发送弹幕弹窗 -->
+		<uni-popup ref="danmuPopup" type="bottom" style="z-index: 999;" @change="changeShowPopup">
+			<view class="danmuPopup" :style="{marginLeft:isfull ? statusBarHeight+'px': 0,marginBottom: danmuboxHeight+'px'}">
+				<view class="danmuPopup-head border-line">
+					<image class="danmu-icon" :src="showDanmu==0? imgPath+'/app/image/danmu-off.png':imgPath+'/app/image/danmu-on.png'" mode="heightFix" @click="switchDanmu()"></image>
+					<view class="u-border">
+						<input 
+						class="danmuPopup-input" 
+						placeholder="发个弹幕吧~" 
+						border="border"
+						:focus="focus"
+						:adjustPosition="false" 
+						:autoBlur="false" 
+						maxlength="50"
+						v-model.trim="inputText" />
+						<text style="font-size: 24rpx;color: #bbb;margin-left: 10rpx;">{{inputText?inputText.trim().length:0}}/50</text>
+					</view>
+					<button class="danmuPopup-send" @click="handleChatInput">发送</button>
+				</view>
+			</view>
+		</uni-popup>
+		<!-- 答题弹窗 -->
+		<uni-popup ref="answerPopup" type="center" :show="answerPopup">
+			<view :class="errTitle == '恭喜你,回答正确' ? 'answerPopup-box bg':'answerPopup-box'">
+				<!-- 正确 -->
+				<image class="tipimg" v-if="errTitle == '恭喜你,回答正确'" :src="imgPath+'/app/image/course_answer_img.png'"
+					mode="aspectFill"></image>
+				<!-- 错误 -->
+				<image class="tipimg" v-else :src="imgPath+'/app/image/course_answer_incorrectly_img.png'" mode="aspectFill">
+				</image>
+				<view class="answerPopup-title">{{errTitle}}</view>
+				<view class="answerPopup-desc" v-if="isOpen!=1" v-html="errDesc"></view>
+				<!-- 选择奖励 -->
+				<view class="reward-list" v-if="errTitle == '恭喜你,回答正确'&&isOpen!=1">
+					<radio-group class="reward-list-group" @change="rewardChange">
+						<label class="reward-list-option" v-for="(item, index) in rewardType" :key="item.value">
+							<radio :value="item.value+ ''" :checked="item.value == currentReward"
+								activeBorderColor="#FF5C03" activeBackgroundColor="#FF5C03"
+								style="transform:scale(0.7)" />
+							<view :style="{color: item.value == currentReward ? '#FF5C03':''}">{{item.name}}</view>
+						</label>
+					</radio-group>
+				</view>
+				<!-- 错误题目 -->
+				<view class="errQuesbox" v-if="errQues&&errQues.length>0">
+					<view class="errQuesbox-item textOne" v-for="(it,index) in errQues" :key="index">{{it.title}}</view>
+				</view>
+				<view class="answerPopup-btn" v-if="errTitle == '恭喜你,回答正确'" @click="closeAnswerPopup">确认</view>
+				<view class="tipsPopup-btn-box" v-else
+					:style="{marginTop: errQues&&errQues.length>0 ? '40rpx':'54rpx'}">
+					<view class="tipsPopup-btn" @click="closeAnswerPopup">{{remain > 0 ? '重新答题': '确认'}}</view>
+				</view>
+			</view>
+		</uni-popup>
+		<!-- 可以答题提示 -->
+		<view class="answerTip" v-if="isLogin&&currentTab!=1&&openCommentStatus==1&&showAnswerTip" @click="handleTab(1)">
+			<text>开始</text>
+			<text>答题</text>
+		</view>
+		<!-- 客服二维码弹窗 -->
+		<uni-popup ref="kfPopup" type="center" :mask-click="false">
+			<view class="kfqrcode-box">
+				<image class="kfqrcode" :src="qrcode" show-menu-by-longpress="true"></image>
+				<view v-show="qrcodeMsg" style="margin-top: 30rpx;" v-html="qrcodeMsg"></view>
+				<image class="kfqrcode-close" :src="imgPath+'/app/image/course_close_white_icon.png'" mode="aspectFill"
+					@click="closeKFPop"></image>
+			</view>
+		</uni-popup>
+		<!-- footer -->
+		<view class="footer" v-show="currentTab!=2&&videoId">
+			<view class="footer-btn" v-if="!isLogin || isAddKf !=1" @click="submit">
+				<text>立即学习</text>
+			</view>
+			<view v-if="currentTab==1&&isLogin&&isAddKf==1&&quesList&&quesList.length>0" class="footer-btn footer-btn-border" @click="submit">
+				<text>{{isOpen==1 ? '提交答案':'提交答案领取奖励'}}</text>
+			</view>
+			<!-- <view @click="checked=!checked" class="agreement" v-if="!isLogin">
+				<radio value="r1" :checked="checked" color="#ff5c03" activeBorderColor="#ff5c03"
+					style="transform:scale(0.6);" />
+				<view>阅读并同意<text style="color: #ff5c03;" @click.stop="goWeb(0)">《用户协议》</text>和<text
+						style="color: #ff5c03;" @click.stop="goWeb(1)">《隐私协议》</text></view>
+			</view> -->
+			<!-- <view class="footer-tips">重庆云联融智提供技术支持</view> -->
+		</view>
+		<view v-show="currentTab==2">
+			<view class="chatinput" :style="{bottom:danmuboxHeight>0?danmuboxHeight+'px':'calc(var(--window-bottom) + 24rpx)'}">
+				<input class="uni-input" v-model.trim="inputText" :adjustPosition="false" :autoBlur="false"  maxlength="140" placeholder="发消息···" confirm-type="send" @confirm="handleChatInput" />
+				<button class="send" @click="handleChatInput">发送</button>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { mapGetters } from 'vuex';
+	import ques from "./components/ques.vue"
+	import descInfo from "./components/descInfo.vue"
+	import descInfoNav from "./components/descInfoNav.vue"
+	import commentBox from "./components/commentBox.vue"
+	import {TOKEN_KEYAuto,generateRandomString} from '@/utils/courseTool.js'
+	import dayjs from 'dayjs';
+	import {
+		getErrMsg,
+		getH5CourseByVideoId,
+		getH5CourseVideoDetails,
+		courseAnswer,
+		getFinishCourseVideo,
+		getIsAddKf,
+		getInternetTraffic,
+		getIntegralByH5Video,
+		sendReward,
+		loginByMp,
+		getRealLink
+	} from "@/api/courseAuto.js"
+	import {
+		getConfigByKey
+	} from "@/api/user.js"
+	import {handleFsUserWx} from '@/api/courseLook.js'
+	export default {
+		components: {
+			descInfoNav,
+			descInfo,
+			commentBox,
+			ques,
+		},
+		data() {
+			return {
+				code: '',
+				baseUrl:uni.getStorageSync('requestPath'),
+				// 1 红包 2 积分
+				rewardType: [{
+					name: '红包奖励',
+					value: 1
+				}, {
+					name: '积分奖励',
+					value: 2
+				}],
+				currentReward: 1,
+				player: null,
+				loading: true,
+				progress: 0,
+				statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
+				scrollTop: 0,
+				height: '0px',
+				isLogin: false,
+				videoUrl: "",
+				videoId: "",
+				//现在的时长
+				playTime: 0,
+				//总时长
+				duration: 0,
+				playDuration: 0,
+				// 用于续播
+				playDurationSeek: 0,
+				// 温馨提醒时间节点,
+				tipsTime: 0,
+				tipsOpen: false,
+				config: {},
+				courseInfo: {},
+				quesList: [],
+				lineList: [],
+				// 错题
+				errQues: [],
+				// 答题机会
+				remain: 0,
+				errTitle: "",
+				errDesc: "",
+				showPlay: true,
+				showControls: false,
+				playStatus: "",
+				isAddKf: 0,
+				lineIndex: 0,
+				// 是否展开
+				isExpand: true,
+				textHeight: 0, //文本高度
+				qwUserId: "",
+				qrcode: "",
+				corpId: "",
+				qrcodeMsg: "",
+				urlOption: {},
+				bufferRate: 0, // 缓冲时间
+				uuId: "",
+				isEnded: false,
+				// 是否允许拖动进度条
+				videolinkType: 0,
+				ip: null,
+				checked: true,
+				isFinish: 0, // 是否完课
+				interval: null,
+				intervalIntegral: null, // 积分定时
+				options: {
+					sources: [{
+						src: ""
+					}],
+					poster: "",
+					live: false /* 是否直播 */ ,
+					controls: true,
+					autoplay: false,
+					licenseUrl: 'https://license.vod2.myqcloud.com/license/v2/1323137866_1/v_cube.license', // license 地址,参考准备工作部分,在视立方控制台申请 license 后可获得 licenseUrl,
+					LicenseKey: 'bcc5bd9a14b798b48c52ff005a21d926',
+					controlBar: {
+						volumePanel: false,
+						playbackRateMenuButton: false,
+						QualitySwitcherMenuButton: false,
+						// progressControl: false
+					},
+					plugins: {
+						// ProgressMarker: false,
+						ContextMenu: {
+							statistic: false
+						}
+					},
+				},
+				// 错误请求次数
+				errorCount: 0,
+				answerPopup: false,
+				sortLink:"",
+				// 课程是否过期
+				isExpire: false,
+				menuButtonLeft: 281,
+				menuButtonH: 45,
+				timer: null,
+				flag: false,
+				msg:'',
+				poster:'',
+				focus: false,
+				openDanmuType: 0,
+				danmuboxHeight: 0,
+				user: {},
+				crtShow: true,
+				courseLogo: '',
+				isfull: false,
+				navList:[{
+					id: 0,
+					name: '介绍'
+				},{
+					id: 1,
+					name: '答题'
+				},{
+					id: 2,
+					name: '评论'
+				}],
+				currentTab: 1,
+				triggered: false,
+				// 没有更多
+				isMore: false,
+				inputText:"",
+				// 获取最多历史评论条数
+				viewCommentNum: 200,
+				// 1-开启评论;2-开启弹幕;3-关闭
+				openCommentStatus: 3,
+				showAnswerTip: false,
+				showDanmu: 1,
+				activeDanmus:[],
+				flagTime:0,
+				showProgress: true,
+				imgPath:this.$store.state.imgpath,
+				videoitem:null,
+				// 是否公开课
+				isOpen: 0,
+			}
+		},
+		//发送给朋友
+		onShareAppMessage(res) {
+			return {
+				title: this.$store.state.logoname,
+				// path: '/pages/about/index',
+				path: '/pages_course/video?videoitem='+JSON.stringify(this.urlOption),
+				imageUrl: this.$store.state.imgpath+'/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+			}
+			
+		},
+		//分享到朋友圈
+		onShareTimeline(res) {
+			return {
+				title: this.$store.state.logoname,
+				// path: '/pages/about/index',
+				path: '/pages_course/video?videoitem='+JSON.stringify(this.urlOption),
+				imageUrl: this.$store.state.imgpath+'/app/image/logoshare.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
+			}
+			
+		},
+		computed:{
+			appid() {
+				return this.$store.state.appid
+			},
+			isSpare() {
+				return this.$store.state.isSpare
+			},
+			...mapGetters(['coureLogin']),
+		},
+		watch: {
+		    coureLogin: {
+		      immediate: true,          // 页面一进入就检查一次
+		      handler(val) {
+		        if (val == 2&&this.isLogin) {
+					console.log("看课AppToken失效,请重新登录")
+					this.isLogin = false
+					this.isAddKf = 0
+					this.goLogin()
+		        }
+		      }
+		    }
+		},
+		onLoad(option) {
+			this.getWebviewUrl()
+			if(option.videoitem){
+				this.isOpen = 1
+				this.urlOption=JSON.parse(option.videoitem)
+				this.urlOption = {
+					...this.urlOption,
+					isOpen: 1
+				}
+			}else {
+				this.isOpen = 0
+				console.log(option)
+				this.urlOption = option.course ? JSON.parse(option.course) : {}
+				console.log(this.urlOption)
+			}
+			uni.$on('usercode',(data)=>{
+				if(this.isSpare == 1&&data) {
+					this.code=data.code
+					this.goLogin(data)
+				}
+			})
+			this.videoId = this.urlOption.videoId
+			this.qwUserId = this.urlOption.qwUserId || ''
+			this.corpId = this.urlOption.corpId || ''
+			this.videolinkType = this.urlOption.linkType || 0
+
+			var that=this;
+			if (this.videoId) {
+				this.getH5CourseByVideo()
+			}
+			this.sortLink = this.urlOption.link || ''
+			this.getMenuButton()
+			// #ifndef H5
+			uni.onKeyboardHeightChange(this.keyboardHeightChange);
+			// #endif
+		},
+		onShow() {
+			this.tipsOpen = false
+			this.isExpand = true
+			// this.isLogin = this.$isLoginCourseAuto()
+			this.uuId = generateRandomString(16)
+			if(uni.getStorageSync('auto_userInfo') && JSON.stringify(uni.getStorageSync('auto_userInfo'))!='{}') {
+				this.user = JSON.parse(uni.getStorageSync('auto_userInfo'))
+			} else {
+				this.user = {}
+			}
+
+			if((this.sortLink||this.isOpen==1)&&!this.code){
+				this.getLink()
+			} else {
+				if(this.code) return;
+				uni.showToast({
+					title: '链接地址有误',
+					icon: 'none'
+				});
+			}
+		},
+		mounted() {
+			this.getIP()
+			this.getHeight()
+		},
+		onHide() {
+			// this.player = uni.createVideoContext('video-content-box');
+			if (this.player) {
+				this.player.pause()
+			}
+			// if (this.interval != null) {
+			// 	clearInterval(this.interval)
+			// 	this.interval = null
+			// }
+		},
+		onUnload() {
+			uni.$off('usercode')
+			if (this.interval != null) {
+				clearInterval(this.interval)
+				this.interval = null
+			}
+			this.clearIntegral()
+			// #ifndef H5
+			uni.offKeyboardHeightChange(this.keyboardHeightChange);
+			// #endif
+		},
+		beforeDestroy() {
+			uni.$off('usercode')
+			this.player = uni.createVideoContext('video-content-box');
+			if (this.player) {
+				this.player.stop()
+				this.player = null
+			}
+			if (this.interval != null) {
+				clearInterval(this.interval)
+				this.interval = null
+			}
+			this.clearIntegral()
+			// #ifndef H5
+			uni.offKeyboardHeightChange(this.keyboardHeightChange);
+			// #endif
+		},
+		methods: {
+			getWebviewUrl() {
+				var data = {
+					key: 'course.config'
+				}
+				getConfigByKey(data).then(res => {
+					if (res.code == 200) {
+						console.log("getConfigByKey====", JSON.parse(res.data))
+						let data = JSON.parse(res.data,)
+						uni.setStorageSync('setWebviewUrl',data.userCourseAuthDomain)
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg,
+						});
+					}
+				})
+			},
+			numberToChinese(number) {
+				if (number) {
+					const chineseNumber = ['一', '二', '三', '四', '五', '六', '七', '八', '九'];
+					return chineseNumber[number - 1];
+				} else {
+					return ''
+				}
+			},
+			keyboardHeightChange(res) {
+				// #ifndef H5
+				console.log("this.danmuboxHeight",this.danmuboxHeight)
+				 this.danmuboxHeight = res.height
+				// #endif
+			},
+			getMenuButton(){
+				const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
+				this.menuButtonLeft = menuButtonInfo.left
+				this.menuButtonH = menuButtonInfo.height
+			},
+			//播放时间更新事件方法
+			onTimeUpdate(e){
+				let currentTime = Math.round(e.detail.currentTime)
+				if (this.playDurationSeek > 0) {
+					this.playTime = this.playDurationSeek
+					this.throttle(() => this.changeTime(this), 1000, false)
+				} else {
+					if (this.videolinkType != 1 && (currentTime - this.playTime > 3 || currentTime - this.playTime < -3)&&this.isFinish!=1) {
+						uni.showToast({
+							title: '不能快进哦',
+							icon: 'none',
+						});
+						currentTime = this.playTime
+						this.player.seek(this.playTime);
+					}
+					this.playTime = currentTime
+				}
+				if (Math.floor(e.detail.currentTime) != this.flagTime) {
+					this.flagTime = Math.floor(e.detail.currentTime)
+					let answerType = this.$store.state.answerType;
+					
+					this.showAnswerTip = answerType == 1 ? this.shouldShowByRate(this): this.shouldShowByLastMinute(this);
+					if(this.openCommentStatus == 2) {
+						this.$refs.danmuBox&&this.$refs.danmuBox.checkDanmu(this.flagTime)
+					}
+				}
+			},
+			// 工具函数:保留两位小数的百分比(0~100)
+			calcPercent(play, total) {
+			  return Number(((play || 0) / (total || 1) * 100).toFixed(2));
+			},
+			
+			// 策略1:按完课领红包
+			shouldShowByRate({ playTime, duration, config }) {
+			  const finished = this.calcPercent(playTime, duration) >= Number(config?.answerRate || 100);
+			  return finished;
+			},
+			
+			// 策略2:完课且最后一分钟可领(第二次进来只看是否已完课)
+			shouldShowByLastMinute({ isEnded, isFinish, playTime, duration }) {
+			  const alreadyDone = isEnded || isFinish == 1;          // 已完课
+			  const inLastMinute = playTime >= (duration || 0) - 60;  // 最后一分钟
+			  return alreadyDone || inLastMinute;
+			},
+			changeTime(that,e) {
+				that.playDurationSeek = 0
+			},
+			videoErrorCallback(e) {
+				this.clearIntegral()
+				this.errorCount++
+				if (this.errorCount > 3) return
+				if (this.interval != null) {
+					clearInterval(this.interval)
+				}
+				this.getErrMsg(e.target.errMsg)
+				this.getH5CourseVideoDetails('error')
+			},
+			// 当开始/继续播放时触发play事件
+			getPlay() {
+				this.errorCount = 0
+				// this.judgeDuration()
+			},
+			getPause() {
+				this.clearIntegral()
+			},
+			getEnded() {
+				this.clearIntegral()
+				this.isEnded = true
+				this.showAnswerTip = true
+				// this.playDurationSeek = 0
+				this.isFinish = 1
+				this.showProgress = true
+				this.getFinishCourseVideo()
+			},
+			fullscreenchange(event) {
+				this.isfull = event.detail.fullScreen
+				if(this.isfull) {
+					this.$refs.danmuBox&&this.$refs.danmuBox.initTracks()
+				}
+			},
+			controlstoggle(event) {
+				this.crtShow =  event.detail.show
+			},
+			getIP() {
+				uni.request({
+					url: 'https://ipinfo.io/json', //仅为示例,并非真实接口地址。
+					method: 'GET',
+					success: (res) => {
+						this.ip = res.data.ip
+					}
+				});
+			},
+			getHeight() {
+				setTimeout(()=>{
+					const query = uni.createSelectorQuery().in(this);
+					query
+						.select("#title-contentnav")
+						.boundingClientRect((data) => {
+							if(data) {
+								this.height =
+									`calc(100vh - ${data.height}px - 420rpx - ${this.statusBarHeight}px - 75px - 88rpx)`
+							}
+						})
+						.exec();
+				},200)
+			},
+			updateTime() {
+				var that = this;
+				if (this.interval != null) {
+					clearInterval(this.interval)
+				}
+				this.interval = setInterval(function() {
+					that.getFinishCourseVideo()
+					that.getInternetTraffic()
+				}, 60000);
+			},
+			judgeDuration() {
+				var that = this;
+				if (this.intervalIntegral != null) {
+					clearInterval(this.intervalIntegral)
+					this.intervalIntegral = null
+				}
+				// 观看10分钟获得积分
+				this.intervalIntegral = setInterval(function() {
+					that.getIntegralByH5Video()
+				}, 600000);
+			},
+			clearIntegral() {
+				if (this.intervalIntegral != null) {
+					clearInterval(this.intervalIntegral)
+					this.intervalIntegral = null
+				}
+			},
+			getH5CourseByVideo() {
+				this.loading = true
+				getH5CourseByVideoId({
+					videoId: this.videoId
+				}).then(res => {
+						this.loading = false
+						if (res.code == 200) {
+							this.courseInfo = res.data
+							uni.setNavigationBarTitle({
+								title: this.courseInfo && this.courseInfo.title ? this.courseInfo.title : ''
+							});
+						}
+						this.getHeight()
+						this.$nextTick(()=>{
+							this.$refs.descInfo&&this.$refs.descInfo.getDescHeight()
+							this.$refs.descInfoNav&&this.$refs.descInfoNav.getDescHeight()
+						})
+					},
+					rej => {
+						this.loading = false
+					}
+				).catch(() => {
+					this.loading = false
+				})
+			},
+			getH5CourseVideoDetails(type) {
+				getH5CourseVideoDetails(this.urlOption).then(res => {
+						if (res.code == 200) {
+							this.config = res.config || {}
+							this.courseLogo = res.config&&res.config.courseLogo
+							this.isFinish = res.isFinish || 0
+							this.duration = res.course && res.course.duration ? res.course.duration : 0
+							this.playDuration = res.playDuration || 0
+							this.tipsTime = res.tipsTime || 0
+							let lineList = []
+							if (res.course && res.course.lineOne) {
+								lineList.push(res.course.lineOne)
+							}
+							if (res.course && res.course.lineTwo) {
+								lineList.push(res.course.lineTwo)
+							}
+							if (res.course && res.course.lineThree) {
+								lineList.push(res.course.lineThree)
+							}
+							this.lineList = lineList
+							this.viewCommentNum = res.config&&res.config.viewCommentNum || 200
+		
+							const status = res.config&&res.config.openCommentStatus || 3
+							if(status != this.openCommentStatus) {
+								if(this.openCommentStatus != 3 && status==3) {
+									this.$refs.commentBox&&this.$refs.commentBox.closeWSocket()
+									this.$refs.danmuBox&&this.$refs.danmuBox.closeWSocket()
+								}
+								this.openCommentStatus = this.isOpen == 1 ? 3: status
+							}
+							this.currentTab = 1
+							if(this.openCommentStatus!=2 || this.showDanmu!=1) {
+								this.activeDanmus = []
+							}
+							if (!this.player || type == 'error') {
+								this.lineIndex = this.config.defaultLine
+								this.videoUrl = lineList[this.lineIndex]
+								this.poster= res.course && res.course.imgUrl ? res.course.imgUrl : ''
+								// this.options.sources = [{
+								// 	src: this.videoUrl
+								// }]
+								// this.options.poster = res.course && res.course.imgUrl ? res.course.imgUrl : ''
+								// this.initVideo()
+								this.playTime = this.playDuration >= this.duration ? 0 : this.playDuration
+								this.playDurationSeek = this.playTime
+								setTimeout(()=>{
+									this.player = uni.createVideoContext('video-content-box');
+									this.player.seek(this.playTime)
+									this.player.play();
+								},500);
+							} else {
+								// let div = document.querySelector(".vjs-progress-control");
+								// if(div) {
+								// 	if (this.isFinish == 1 || this.isEnded || this.videolinkType == 1) {
+								// 		div.style.pointerEvents = "auto";
+								// 	} else {
+								// 		div.style.pointerEvents = "none"; //禁止所有事件
+								// 	}
+								// }
+								this.playTime = this.playTime > this.playDuration ? this.playTime : this.playDuration >= this.duration ? 0 : this.playDuration
+								this.playDurationSeek = this.playTime
+								this.player.seek(this.playTime)
+								this.player.play();
+							}
+							this.updateTime();
+							this.quesList = res.questions && res.questions.length > 0 ? res.questions : [],
+								this.quesList = this.quesList.map(item => ({
+									...item,
+									questionOption: JSON.parse(item.question),
+									answer: ''
+								}))
+						}
+						this.getHeight()
+						this.$nextTick(()=>{
+							this.$refs.descInfo&&this.$refs.descInfo.getDescHeight()
+							this.$refs.descInfoNav&&this.$refs.descInfoNav.getDescHeight()
+						})
+					},
+					rej => {}
+				)
+			},
+			handleAnswer(val) {
+				let {item, option,index} = val
+				if(this.$store.state.answerType == 1) {
+					// 按照完课领红包
+					let rate = 0
+					if(this.isEnded || this.isFinish==1) {
+						rate = 1
+					} else {
+						rate = (Number(this.playTime || 0) / Number(this.duration || 0)).toFixed(2)
+					}
+					if(Number(this.duration || 0) == 0 || rate*100 < Number(this.config.answerRate || 100)) {
+						uni.showToast({
+							title: "请先观看完整课程再答题哦~",
+							icon: "none"
+						})
+						return
+					}
+				} else {
+					// 按照完课且最后一分钟领红包(完课第二次进来就不需要最后一分钟)
+					let time = this.playTime
+					if(this.isEnded||this.isFinish==1) {
+						time = this.duration
+					} else {
+						if(time < this.playDuration&&this.isFinish!=1) {
+							// 没完课且小于续播的时间
+							time = this.playDuration
+						}
+					}
+					if(Number(this.duration || 0) == 0 || time < this.duration - 60) {
+						uni.showToast({
+							title: "请先观看完整课程再答题哦~",
+							icon: "none"
+						})
+						return
+					}
+				}
+				 
+				if (this.quesList[index].type == 1) {
+					// 单选option
+					this.quesList[index].answer = option.name
+				} else if (this.quesList[index].type == 2) {
+					// 多选
+					let answer = this.quesList[index].answer ? this.quesList[index].answer.split(',') : []
+					if (answer.indexOf(option.name) === -1) {
+						answer.push(option.name)
+						this.quesList[index].answer = answer.join(',')
+					} else {
+						answer.splice(answer.indexOf(option.name), 1)
+						this.quesList[index].answer = answer.join(',')
+					}
+				}
+			},
+			submit() {
+				if(this.isExpire){
+					uni.showToast({
+						title: '课程已过期或链接无效',
+						icon: 'none'
+					});
+					return
+				}
+				// 登录
+				this.$isLoginCourseAuto().then(
+					res => {
+						if(res){
+							if (this.isAddKf == 1) {
+								// 答题
+								// 您已提交过答案,请领取红包
+								this.courseAnswer()
+							} else {
+								// 添加客服
+								if (this.videoId && this.qwUserId) {
+									this.getIsAddKf()
+								} else {
+									uni.showToast({
+										title: '请添加客服',
+										icon: 'none'
+									})
+								}
+							} 
+						} else{
+							this.goLogin()
+						}
+					},
+					rej => {}
+				);
+			},
+			// 答题
+			courseAnswer() {
+				if(this.$store.state.answerType == 1) {
+					// 按照完课领红包
+					let rate = 0
+					if(this.isEnded || this.isFinish==1) {
+						rate = 1
+					} else {
+						rate = (Number(this.playTime || 0) / Number(this.duration || 0)).toFixed(2)
+					}
+					if(Number(this.duration || 0) == 0 || rate*100 < Number(this.config.answerRate || 100)) {
+						uni.showToast({
+							title: "请先观看完整课程再答题哦~",
+							icon: "none"
+						})
+						return
+					}
+				} else {
+					// 按照完课且最后一分钟领红包(完课第二次进来就不需要最后一分钟)
+					let time = this.playTime
+					if(this.isEnded||this.isFinish==1) {
+						time = this.duration
+					} else {
+						if(time < this.playDuration&&this.isFinish!=1) {
+							// 没完课且小于续播的时间
+							time = this.playDuration
+						}
+					}
+					if(Number(this.duration || 0) == 0 || time < this.duration - 60) {
+						uni.showToast({
+							title: "请先观看完整课程再答题哦~",
+							icon: "none"
+						})
+						return
+					}
+				}
+				if (this.quesList.some(item => !item.answer)) {
+					uni.showToast({
+						title: "请确认是否答完所有题目",
+						icon: "none"
+					})
+					return
+				}
+				const questions = this.quesList.map(obj => {
+					const {
+						questionOption,
+						...rest
+					} = obj;
+					return rest;
+				});
+				const param = {
+					...this.urlOption,
+					questions: questions,
+					videoId: this.videoId,
+					duration: this.playTime,
+				}
+				this.errTitle = ""
+				this.errDesc = ""
+				this.errQues = []
+				courseAnswer(param).then(res => {
+						if (res.code == 200) {
+							if (res.incorrectQuestions) {
+								// 答题失败
+								if (res.incorrectQuestions.length > 0) {
+									this.errQues = res.incorrectQuestions
+								}
+								this.remain = res.remain || 0
+								if (res.remain > 0) {
+									this.errTitle = "很遗憾答错了"
+									this.errDesc = `<span style="color:#FF5C03">还有${res.remain}次机会,继续加油</span>`
+									this.$refs.answerPopup.open("center")
+								}
+							} else {
+								// 答题成功
+								this.errTitle = "恭喜你,回答正确"
+								this.errDesc = `请选择奖励`
+								// this.$refs.answerPopup.open("center")
+								if(this.isOpen==1) {
+									this.$refs.answerPopup.open("center")
+									return
+								}
+								this.closeAnswerPopup(1)
+							}
+						} else {
+							if (res.msg == "该课题到达答错次数限制") {
+								this.errTitle = "答题次数超过限制"
+								this.errDesc = "以后的课程要认真学习哦"
+								this.$refs.answerPopup.open("center")
+							} else {
+								uni.showToast({
+									title: res.msg,
+									icon: "none"
+								})
+							}
+						}
+					},
+					rej => {}
+				)
+			},
+			// 选择
+			rewardChange(e) {
+				this.currentReward = e.detail.value
+			},
+			closeAnswerPopup(type) {
+				this.$refs.answerPopup.close()
+				if(this.isOpen==1) {
+					return
+				}
+				if (this.errTitle == '恭喜你,回答正确') {
+					let param = {
+						...this.urlOption,
+						rewardType: Number(this.currentReward),
+						source: 2,
+						appId: this.appid
+					}
+					if(type==1) {
+						param = {
+							...this.urlOption,
+							source: 2,
+							appId: this.appid
+						}
+					}
+					sendReward(param).then(res => {
+						if(res.isNew&&res.isNew==1) {
+							const packageInfo = res.data.packageInfo || ''
+							if(packageInfo) {
+								uni.setStorageSync('receive_package',packageInfo);
+								if(res.mchId) uni.setStorageSync('mchId',res.mchId);
+								uni.navigateTo({
+									url: '/pages_course/reward'
+								})
+							}
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: 'none'
+							})
+						}
+					})
+				}
+			},
+			// 线路
+			openPop() {
+				this.$refs.popup.open('bottom')
+			},
+			close() {
+				this.$refs.popup.close()
+			},
+			handleLine(index) {
+				var that=this;
+				if (this.lineIndex == index && this.videoUrl == this.lineList[index]) {
+					this.close()
+					return
+				} else {
+					// let div = document.querySelector(".vjs-progress-control");
+					// if(div) {
+					// 	if (this.isFinish == 1 || this.isEnded || this.videolinkType == 1) {
+					// 		div.style.pointerEvents = "auto";
+					// 	} else {
+					// 		div.style.pointerEvents = "none"; //禁止所有事件
+					// 	}
+					// }
+					this.lineIndex = index
+					this.videoUrl = this.lineList[index]
+					this.tipsOpen = false
+					this.playDurationSeek = this.playTime || 0
+					this.player = uni.createVideoContext('video-content-box');
+					setTimeout(function(){
+						that.player.seek(that.playDurationSeek)
+						that.player.play();
+					},500);
+					// this.player.src(this.lineList[index])
+					// this.player.one('loadedmetadata', () => {
+					// 	this.player.currentTime(this.playDurationSeek);
+					// 	this.player.play();
+					// });
+					this.close()
+				}
+
+			},
+			// 温馨提示
+			openTipsPop() {
+				this.$refs.tipsPopup.open()
+				this.tipsOpen = true
+				this.pause()
+			},
+			closeTipsPop() {
+				this.$refs.tipsPopup.close()
+			},
+			// 客服
+			getIsAddKf() {
+				this.qrcode = ''
+				this.qrcodeMsg = ''
+				this.isAddKf = 0
+				// {videoId: this.videoId,qwUserId: this.qwUserId,corpId: this.corpId}
+				getIsAddKf(this.urlOption).then(res => {
+						if (res.code == 200) {
+							this.isAddKf = 1
+							this.getH5CourseVideoDetails()
+						} else if (res.code == 400) {
+							this.isAddKf = 0
+							this.qrcode = res.qrcode
+							this.qrcodeMsg = res.msg
+							this.$refs.kfPopup.open()
+						} else if (res.code == 504) {
+							// 登录
+							// this.goLogin()
+						} else if (res.code == 566) {
+							// 官方群发通用链接
+							const url = res.courseLink.realLink.split('?course=')[1]
+							this.urlOption = JSON.parse(url)
+							this.isAddKf = 1
+							this.getH5CourseVideoDetails()
+						} else if (res.code == 567) {
+							// 群聊通用链接
+							this.urlOption = {
+								...this.urlOption,
+								qwExternalId: res.qwExternalId
+							}
+							this.isAddKf = 1
+							this.getH5CourseVideoDetails()
+						} else {
+							this.isAddKf = 0
+							uni.showToast({
+								title: res.msg,
+								icon: 'none'
+							});
+						}
+					},
+					err => {}
+				);
+			},
+			closeKFPop() {
+				this.$refs.kfPopup.close()
+			},
+			getFinishCourseVideo() {
+				if (!this.playTime || this.isAddKf!=1 ||!this.isLogin) return
+				// {videoId: this.videoId,duration:this.playTime}
+				const param = {
+					duration: this.playTime,
+					...this.urlOption
+				}
+				getFinishCourseVideo(param)
+			},
+			// 每十分钟获得积分
+			getIntegralByH5Video() {
+				if(this.isAddKf!=1||!this.isLogin) return
+				const param = {
+					duration: this.playTime,
+					...this.urlOption
+				}
+				getIntegralByH5Video(param).then(res => {
+					if (res.code == 200) {
+						uni.showToast({
+							title: "积分+10",
+							icon: "none"
+						})
+					}
+				})
+			},
+			progressChange(e) {
+				this.bufferRate = Math.ceil(e.detail.buffered)
+			},
+			// 缓冲
+			getInternetTraffic() {
+				if(!this.isLogin||this.isAddKf!=1) return
+				const playVideoTime = Math.ceil(this.playTime / this.duration * 100) // 播放百分比
+				if(this.bufferRate == 0 || this.bufferRate < playVideoTime) {
+					this.bufferRate = playVideoTime
+				}
+				if(this.bufferRate == 0 || Number(this.bufferRate.toFixed(2)) == 0) return
+				const param = {
+					...this.urlOption,
+					uuId: dayjs().format('YYYYMMDD') + this.uuId,
+					duration: this.playTime,
+					bufferRate: Number(this.bufferRate.toFixed(2)),
+				}
+				if(!param.bufferRate) return
+				getInternetTraffic(param)
+			},
+			getErrMsg(err) {
+				let msgerr = {
+					videoUrl: this.videoUrl,
+					lineIndex: this.lineIndex,
+					errTime: new Date(),
+					ip: this.ip,
+					errMsg: err
+				}
+				getErrMsg({
+					msg: JSON.stringify(msgerr)
+				})
+			},
+			goLogin(data) {
+				if((data || this.isSpare==1)&&this.isOpen==0) {
+					this.loginFsUserWx(data)
+					return
+				}
+				let provider = 'weixin'
+				uni.login({
+					provider: provider,
+					success: async loginRes => {
+						console.log(loginRes)
+						uni.getUserInfo({
+						   provider: provider,
+						   success: (infoRes)=> {
+							    uni.showToast({
+									title: '处理中...',
+									icon: 'loading'
+							    });
+								loginByMp({
+									code: loginRes.code,
+									encryptedData:infoRes.encryptedData,
+									iv:infoRes.iv,
+									appId: this.appid
+								}).then(res=>{
+									 uni.hideLoading();
+									 if (res.code == 200) {
+										 this.$store.commit('setCoureLogin', 1);
+										uni.setStorageSync(TOKEN_KEYAuto, res.token);
+										uni.setStorageSync('auto_userInfo', JSON.stringify(res.user));
+										this.user = res.user
+										this.isLogin = true
+										console.log("TOKEN_KEYAuto",TOKEN_KEYAuto)
+										this.getIsAddKf() 
+									 } else {
+										uni.showToast({
+											title: res.msg,
+											icon: 'none'
+										});
+									 }
+								 }).catch(err=>{
+									uni.hideLoading();
+									uni.showToast({
+										icon:'none',
+										title: "登录失败,请重新登录",
+									});
+								});
+						   }
+						});
+					}
+				})
+			},
+			getLink() {
+				let that = this;
+				this.msg = ''
+				if(this.isOpen==1) {
+					if (this.isLogin && this.isAddKf == 1) {
+						this.getH5CourseVideoDetails()
+					}
+					if (this.videoId &&this.isAddKf != 1) {
+						this.$isLoginCourseAuto().then(
+							isLogin => {
+								this.isLogin = isLogin
+								if(isLogin){
+									this.getIsAddKf() 
+								} else {
+									this.goLogin()
+								}
+							},
+							rej => {}
+						);
+					}
+					return
+				}
+				getRealLink({sortLink:this.sortLink}).then(res=>{
+					if(res.code == 200) {
+						this.isExpire = false
+						// 如果响应中包含真实链接,则跳转到真实链接
+						// window.location.href = res.realLink +"&sortLink="+this.sortLink+"&code="+this.code+"&time="+new Date().getTime()
+						if (this.isLogin && this.isAddKf == 1) {
+							this.getH5CourseVideoDetails()
+						}
+						if (this.videoId &&this.isAddKf != 1) {
+							this.$isLoginCourseAuto().then(
+								isLogin => {
+									this.isLogin = isLogin
+									if(isLogin){
+										this.getIsAddKf() 
+									} else {
+										this.goLogin()
+									}
+								},
+								rej => {}
+							);
+						}
+					} else {
+						this.isExpire = true
+						this.msg = '课程已过期或链接无效'
+						uni.showToast({
+							title: '课程已过期或链接无效',
+							icon: 'none'
+						});
+					}
+				}).catch(err=>{
+					this.isExpire = true
+					this.msg = '发生错误,请稍后再试'
+					uni.showToast({
+						title: '发生错误,请稍后再试',
+						icon: 'none'
+					});
+				})
+			},
+			/**
+			 * 节流原理:在一定时间内,只能触发一次
+			 *
+			 * @param {Function} func 要执行的回调函数
+			 * @param {Number} wait 延时的时间
+			 * @param {Boolean} immediate 是否立即执行
+			 * @return null
+			 */
+			throttle(func, wait = 1000, immediate = true) {
+			    if (immediate) {
+			        if (!this.flag) {
+			            this.flag = true
+			            // 如果是立即执行,则在wait毫秒内开始时执行
+			            typeof func === 'function' && func()
+			            this.timer = setTimeout(() => {
+			                this.flag = false
+			            }, wait)
+			        }
+			    } else if (!this.flag) {
+			        this.flag = true
+			        // 如果是非立即执行,则在wait毫秒内的结束处执行
+			        this.timer = setTimeout(() => {
+			            this.flag = false
+			            typeof func === 'function' && func()
+			        }, wait)
+			    }
+			},
+			// 弹幕
+			openDanmu(type) {
+				this.openDanmuType = type
+				this.inputText = ''
+				if(type == 1) {
+					this.player.exitFullScreen()
+				}
+				this.$refs.danmuPopup.open()
+			},
+			changeShowPopup(val) {
+				this.focus = val.show
+			},
+			switchDanmu() {
+				this.showDanmu = this.showDanmu == 1 ? 0:1
+				if(this.showDanmu == 0&&this.$refs.danmuBox) {
+					this.$refs.danmuPopup.close()
+					this.activeDanmus = []
+					this.$refs.danmuBox.activeDanmus = []
+					this.$refs.danmuBox.initTracks()
+				}
+			},
+			getScrollTop(res) {
+				if(this.currentTab == 2) {
+					this.scrollTop = res
+				} else {
+					this.scrollTop = 0
+				}
+			},
+			handleTab(index) {
+				this.currentTab = index
+				if(this.currentTab==2) {
+					if(this.$refs.commentBox) {
+						this.$refs.commentBox.msgs = []
+						this.$refs.commentBox.pageNum = 1
+						this.$refs.commentBox.getCommentsFun()
+					}
+				} else {
+					setTimeout(()=>{
+						this.scrollTop = 0
+					},100)
+				}
+			},
+			handleRefresher() {
+				this.triggered = true;
+				if (!this.isMore&&this.currentTab==2&&this.openCommentStatus==1) {
+					this.$nextTick(()=>{
+						this.$refs.commentBox&&this.$refs.commentBox.getCommentsFun()
+					})
+				}
+				setTimeout(() => {
+					this.triggered = false;
+				}, 500);
+			},
+			getMore(val) {
+				this.triggered = false;
+				this.isMore = val == 1
+			},
+			handleChatInput() {
+				this.inputText = this.inputText.trim()
+				if (this.inputText == "" || this.inputText.trim() == "") {
+					uni.showToast({
+						title: '请输入评论',
+						icon: "none"
+					})
+					return;
+				}
+				if(this.openCommentStatus==1) {
+					this.$refs.commentBox&&this.$refs.commentBox.handleInput(this.inputText)
+				} else if(this.openCommentStatus==2) {
+					this.$refs.danmuBox&&this.$refs.danmuBox.handleInput(this.inputText)
+				}
+			},
+			setInputText() {
+				this.inputText = ""
+				if(this.openCommentStatus==2) {
+					this.$refs.danmuPopup.close()
+				}
+			},
+			getActiveDanmus(val) {
+				this.activeDanmus = val.map(item=>({
+					...item,
+					danmustyle: {
+						top: item.top + 'px',
+						...item.style, 
+						'animation-duration': '8s'
+					}
+				}))
+			},
+			animationend(moveItem, i) {
+				// 移除动画结束的弹幕(性能优化)
+				if(this.openCommentStatus==2) {
+					this.$refs.danmuBox&&this.$refs.danmuBox.animationend(moveItem, i)
+				}
+			},
+			navback() {
+				const pages = getCurrentPages(); // 获取当前页面栈
+				if (pages.length > 1) {
+				   uni.navigateBack(); // 有上一页才返回
+				} else { 
+				  // 如果是首页,跳转到某个默认页面(如首页)
+				  uni.reLaunch({ url: '/pages/index/index' }); // 或者用 switchTab 如果是 tabBar 页面
+				}
+			},
+			feedback() {
+				const userId = this.user.userId || ''
+				const courseId = this.urlOption.courseId || ''
+				const videoId = this.urlOption.videoId || ''
+				const companyId = this.urlOption.companyId || ''
+				const companyUserId = this.urlOption.companyUserId || ''
+				uni.navigateTo({
+					url: './feedback?userId='+userId+'&courseId='+courseId+'&videoId='+videoId+'&companyId='+companyId+'&companyUserId='+companyUserId
+				})
+			},
+			// 公开课登录\备用登录
+			async loginFsUserWx(data){
+				if(data){
+					console.log('huoqu1222',data)
+					uni.showLoading({
+						title: '登录中'
+					})
+					uni.login({
+						provider: "weixin",
+						success: async loginRes => {
+							console.log(loginRes)
+							let code = loginRes.code // 获取开发code
+							handleFsUserWx({
+							   code: code,
+							   appId:this.appid,
+							   userId:data.userId
+							})
+							.then( res => {
+								uni.hideLoading();
+								if(res.code==200){
+									console.log("loginFsUserWx:",res)
+									// this.userinfos=uni.getStorageSync('userinfos')
+									let token = uni.getStorageSync('TOKEN_WEXIN');
+									let user = uni.getStorageSync('userInfo')
+									// this.userInfo=uni.getStorageSync('userInfo');
+									// this.isLogin = true
+									uni.setStorageSync(TOKEN_KEYAuto, token);
+									uni.setStorageSync('auto_userInfo', JSON.stringify(user));
+									this.user = user
+									this.isLogin = true
+									this.getIsAddKf() 
+								}else if(res.code==406){
+									uni.showToast({
+										icon:'none',
+										title: '该用户已成为其他销售会员',
+									});
+								}else{
+									uni.showToast({
+										icon:'none',
+										title: res.msg,
+									});
+								}
+							   
+							 })
+						},
+					})
+				}else{
+					uni.setStorageSync('H5course',{
+						companyId: this.urlOption.companyId,
+						companyUserId:this.urlOption.companyUserId,
+						type: 1, //1自动,其他手动
+					})
+					// await this.$store.dispatch('getWebviewUrl');
+					uni.navigateTo({
+						url:'/pages_course/webview?H5course='+uni.getStorageSync('H5course')
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style scoped>
+.full-width-popup {
+  width: 100%;
+}
+</style>
+<style lang="scss" scoped>
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.footer-tips {
+		margin-top: 14rpx;
+		text-align: center;
+		font-family: PingFang SC,PingFang SC;
+		font-weight: 500;
+		font-size: 12px;
+		color: #bbb;
+	}
+	.textOne {
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
+
+	.textTwo {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+	.header-nav {
+		height: 88rpx;
+		@include u-flex(row, center, flex-start);
+		overflow: hidden;
+		background-color: #fff;
+		box-sizing: border-box;
+		.header-title {
+			text-align: center;
+			overflow: hidden;
+			white-space: nowrap;
+			text-overflow: ellipsis;
+			padding: 0 10rpx 0 100rpx;
+			font-family: PingFang SC,PingFang SC;
+			font-weight: 500;
+			font-size: 15px;
+			color: #000;
+			box-sizing: border-box;
+		}
+	}
+	.reward-list {
+		width: 100%;
+		margin-top: 20rpx;
+		margin-bottom: -40rpx;
+
+		&-group {
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 400;
+			font-size: 14px;
+			color: #222222;
+			@include u-flex(row, center, center);
+		}
+
+		&-option {
+			@include u-flex(row, center, flex-start);
+
+			&:first-child {
+				margin-right: 40rpx;
+			}
+		}
+	}
+
+	.err {
+		color: #f56c6c !important;
+	}
+
+	.kfqrcode-box {
+		background-color: #fff;
+		border-radius: 16rpx;
+		max-width: 560rpx;
+		padding: 60rpx 40rpx;
+		margin-top: -100rpx;
+		box-sizing: border-box;
+		@include u-flex(column, center, flex-start);
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 400;
+		font-size: 34rpx;
+		color: #222;
+		position: relative;
+		text-align: center;
+
+		.kfqrcode {
+			height: 460rpx;
+			width: 460rpx;
+		}
+	}
+
+	.kfqrcode-close {
+		width: 64rpx;
+		height: 64rpx;
+		position: absolute;
+		bottom: -100rpx;
+		left: 50%;
+		transform: translateX(-50%);
+	}
+
+	.tipsPopup-mask {
+		position: relative;
+		width: 560rpx;
+		background-color: transparent;
+
+		.red_envelope_top {
+			width: 480rpx;
+			height: 360rpx;
+			margin: 0 auto;
+			display: inherit;
+		}
+	}
+
+	.tipsPopup-btn-box {
+		width: 456rpx;
+		height: 104rpx;
+		padding: 4rpx;
+		box-sizing: border-box;
+		background: linear-gradient(180deg, rgba(252, 209, 94, 1), rgba(254, 253, 251, 1));
+		border-radius: 52rpx;
+	}
+
+	.tipsPopup-btn {
+		width: 100%;
+		height: 100%;
+		background: linear-gradient(180deg, #FF9F22 0%, #FA1E05 100%);
+		border-radius: 52rpx 52rpx 52rpx 52rpx;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 500;
+		font-size: 36rpx;
+		color: #FFFFFF;
+		line-height: 96rpx;
+		text-align: center;
+	}
+
+	.tipsPopup {
+		width: 560rpx;
+		padding: 12rpx;
+		margin-top: -72rpx;
+		box-sizing: border-box;
+		background: linear-gradient(180deg, #FFFBEF 0%, #FFFFF5 43%, #F5EAC2 100%);
+		border-radius: 32rpx 32rpx 32rpx 32rpx;
+		position: relative;
+
+		&-close {
+			width: 64rpx;
+			height: 64rpx;
+			position: absolute;
+			right: 0;
+			top: -188rpx;
+		}
+
+		&-line {
+			padding: 3rpx;
+			box-sizing: border-box;
+			background: linear-gradient(180deg, rgba(247, 245, 220, 1), rgba(250, 220, 157, 1));
+			border-radius: 24rpx;
+		}
+
+		&-box {
+			padding: 0 40rpx 40rpx 40rpx;
+			box-sizing: border-box;
+			background: linear-gradient(180deg, #FFFBEF 0%, #FFFFF5 43%, #F5EAC2 100%);
+			border-radius: 24rpx;
+			@include u-flex(column, center, flex-start);
+		}
+
+		&-head {
+			@include u-flex(row, center, center);
+
+			&-title {
+				width: 364rpx;
+				height: auto;
+				margin-top: -22rpx;
+			}
+		}
+
+		&-content {
+			margin: 48rpx 0;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 500;
+			font-size: 32rpx;
+			color: #222222;
+			text-align: center;
+
+			&-title {
+				margin-bottom: 26rpx;
+				font-weight: 600;
+				font-size: 40rpx;
+				color: #FF5C03;
+			}
+		}
+	}
+
+	.video-controls-box {
+		width: 100%;
+		height: 420rpx;
+		overflow: hidden;
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		z-index: 2;
+		background: rgba(0, 0, 0, 0.2);
+
+		.video-play {
+			height: 72rpx;
+			width: 72rpx;
+			position: absolute;
+			top: 50%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+		}
+	}
+
+	.video-controls {
+		width: 100%;
+		height: 80rpx;
+		padding: 0 28rpx;
+		box-sizing: border-box;
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		background: linear-gradient(to top, #222 0%, transparent 80%);
+
+		.video-icon {
+			height: 44rpx;
+			width: 44rpx;
+		}
+	}
+
+	.errQuesbox {
+		width: 100%;
+		max-height: 260rpx;
+		overflow-y: auto;
+		margin-top: 24rpx;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 500;
+		font-size: 30rpx;
+		color: #222222;
+
+		&-item {
+			width: 100%;
+			height: 128rpx;
+			line-height: 128rpx;
+			margin-bottom: 24rpx;
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			overflow: hidden;
+			background: #fff;
+			border-radius: 16rpx 16rpx 16rpx 16rpx;
+			position: relative;
+
+			&::after {
+				content: "题目";
+				min-width: 64rpx;
+				height: 36rpx;
+				padding: 0 12rpx;
+				line-height: 36rpx;
+				background: #FF5C03;
+				box-sizing: border-box;
+				border-radius: 0rpx 0rpx 16rpx 0rpx;
+				text-align: center;
+				font-family: PingFang SC, PingFang SC;
+				font-weight: 500;
+				font-size: 20rpx;
+				color: #fff;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+		}
+	}
+
+	.bg {
+		background: #fff !important;
+	}
+
+	.answerPopup {
+		&-box {
+			width: 560rpx;
+			background: linear-gradient(180deg, #FFFAF6 0%, #FEECD8 100%);
+			border-radius: 32rpx 32rpx 32rpx 32rpx;
+			background-color: #fff;
+			font-weight: 400;
+			padding: 32rpx;
+			box-sizing: border-box;
+			position: relative;
+			@include u-flex(column, center, flex-start);
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 400;
+
+			.tipimg {
+				width: 206rpx;
+				height: 206rpx;
+				margin-bottom: 16rpx;
+			}
+		}
+
+		&-title {
+			font-weight: 600;
+			font-size: 36rpx;
+			color: #222222;
+		}
+
+		&-desc {
+			margin-top: 10rpx;
+			font-size: 28rpx;
+			color: #757575;
+		}
+
+		&-btn {
+			width: 464rpx;
+			height: 84rpx;
+			margin-top: 54rpx;
+			margin-bottom: 16rpx;
+			background: #FF5C03;
+			border-radius: 42rpx;
+			font-weight: 500;
+			font-size: 32rpx;
+			color: #FFFFFF;
+			text-align: center;
+			line-height: 84rpx;
+		}
+	}
+
+	.popupbox {
+		width: 100%;
+		background-color: #fff;
+		border-radius: 16rpx 16rpx 0 0;
+		padding: 24rpx 32rpx;
+		position: relative;
+
+		&-head {
+			height: 60rpx;
+			margin-bottom: 30rpx;
+			text-align: center;
+			overflow-y: auto;
+			color: #414858;
+			font-size: 32rpx;
+			font-weight: bold;
+			position: relative;
+
+			.close-icon {
+				position: absolute;
+				right: 0;
+				top: 0;
+				height: 40rpx;
+				width: 40rpx;
+			}
+		}
+
+		&-content {
+			height: 20vh;
+			overflow-y: auto;
+			display: flex;
+			align-items: flex-start;
+			flex-wrap: wrap;
+			gap: 32rpx;
+
+			.line-item {
+				display: inline-block;
+				min-width: 200rpx;
+				min-height: 60rpx;
+				padding: 0 20rpx;
+				box-sizing: border-box;
+				border-radius: 50rpx;
+				overflow: hidden;
+				background-color: #f7f7f7;
+				text-align: center;
+				color: #414858;
+				font-size: 28rpx;
+				line-height: 60rpx;
+			}
+
+			.line-active {
+				color: #f56c6c !important;
+				background-color: #fef0f0 !important;
+			}
+		}
+	}
+
+	.content {
+		padding-bottom: calc(var(--window-bottom));
+		.video-box {
+			width: 100%;
+			height: 420rpx;
+			overflow: hidden;
+			position: relative;
+
+			#myVideo {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.video-poster {
+			width: 100%;
+			height: 420rpx;
+		}
+
+		.miantitlebox {
+			padding: 30rpx 0;
+			border-bottom: 2rpx solid #F5F7FA;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 500;
+			font-size: 36rpx;
+			color: #222222;
+		}
+
+		.subtitlebox {
+			padding: 30rpx 0;
+			border-bottom: 2rpx solid #F5F7FA;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 500;
+			font-size: 36rpx;
+			color: #222222;
+		}
+
+		.title-content {
+			padding: 0 32rpx;
+			background-color: #fff;
+			font-size: 28rpx;
+			line-height: 1.6;
+
+			.title {
+				font-size: 36rpx;
+				font-weight: 500;
+				color: #414858;
+			}
+
+			.time-or-subtitle {
+				margin-top: 12rpx;
+				color: #666666;
+			}
+		}
+
+		.video-line {
+			min-width: 140rpx;
+			max-width: 200rpx;
+			height: 60rpx;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			border-radius: 50rpx 0 0 50rpx;
+			overflow: hidden;
+			background-color: #fff;
+			text-align: center;
+			color: #888;
+			font-size: 28rpx;
+			line-height: 60rpx;
+			display: inline-flex;
+			align-items: center;
+			justify-content: center;
+			position: fixed;
+			right: 0;
+			z-index: 9;
+			bottom: calc(var(--window-bottom) + 280rpx);
+			box-shadow: 0 4rpx 10rpx rgba(0, 0, 0, .12);
+		
+			image {
+				flex-shrink: 0;
+				height: 34rpx;
+				width: 34rpx;
+				margin-right: 6rpx;
+			}
+		}
+		.danmu-line {
+			bottom: calc(var(--window-bottom) + 370rpx);
+			word-break: keep-all;
+			.set_image {
+				height: 40rpx;
+				width: 40rpx;
+			}
+		}
+
+		.footer {
+			border-top: 1rpx solid #ededef;
+			background: #fff;
+			width: 100%;
+			position: fixed;
+			bottom: 0;
+			padding: 32rpx;
+			padding-bottom: calc(var(--window-bottom) + 12rpx);
+			box-sizing: border-box;
+			z-index: 9;
+
+			&-btn {
+				width: 100%;
+				height: 98rpx;
+				background: #FF5C03;
+				border-radius: 49rpx 49rpx 49rpx 49rpx;
+				line-height: 98rpx;
+				text-align: center;
+				font-family: PingFang SC, PingFang SC;
+				font-weight: 600;
+				font-size: 32rpx;
+				color: #FFFFFF;
+				@include u-flex(row, center, center);
+
+				&-img {
+					flex-shrink: 0;
+					width: 144rpx;
+					height: 144rpx;
+					margin-right: 8rpx;
+					margin-top: -24rpx;
+				}
+			}
+
+			&-btn-border {
+				position: relative;
+
+				&::after {
+					content: "";
+					background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
+					position: absolute;
+					top: -2rpx;
+					left: 0;
+					height: 103rpx;
+					width: 100%;
+					z-index: -1;
+					border-radius: 49rpx 49rpx 49rpx 49rpx;
+					box-shadow: 0rpx 8rpx 11rpx 0rpx rgba(255, 92, 3, 0.3);
+					overflow: hidden;
+				}
+			}
+		}
+	}
+
+	.agreement {
+		display: inline-flex;
+		margin-top: 16rpx;
+		font-size: 24rpx;
+		color: #525252;
+		align-items: center;
+		justify-content: center;
+	}
+	 
+	.agreement {
+		display: inline-flex;
+		margin-top: 16rpx;
+		font-size: 24rpx;
+		color: #525252;
+		align-items: center;
+		justify-content: center;
+	}
+	.video-danmu-btnbox {
+		width: 50px;
+		height: 50px;
+		border-radius: 50%;
+		overflow: hidden;
+		position: absolute;
+		right: 10px;
+		bottom: calc(50% - 50px);
+		transform: translateY(-50%);
+		padding: 8px;
+		box-sizing: border-box;
+	}
+	.video-danmu-image {
+		width: 100%;
+		height: 100%;
+	}
+	.danmuPopup {
+		background-color: #fff;
+		padding-bottom: calc(var(--window-bottom) + 10px);
+		.u-border {
+			flex: 1;
+			@include u-flex(row,center,flex-start);
+			padding: 0 10rpx;
+			border-radius: 6px;
+			border: 1rpx solid #eee;
+		}
+		&-head {
+			width: 100%;
+			padding: 10px;
+			box-sizing: border-box;
+			overflow: hidden;
+			@include u-flex(row,center,flex-start);
+			.danmu-icon {
+				height: 24px;
+				width: 24px;
+				margin-right: 12px;
+			}
+		}
+		&-input {
+			flex: 1;
+			height: 35px;
+		}
+		&-send {
+			flex-shrink: 0;
+			height: 35px;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			padding: 5px 15px;
+			box-sizing: border-box;
+			background: #FF5C03 !important;
+			border-radius: 22px;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 500;
+			font-size: 15px;
+			color: #fff !important;
+			margin-left: 12px;
+			&::after {
+				border: none;
+			}
+		}
+		&-con {
+			background-color: #F5F7FA;
+			padding: 24px 12px 48px 12px;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 400;
+			font-size: 14px;
+			color: #757575;
+		}
+	}
+	.danmu-icon{
+		height: 24px;
+		width: 24px;
+		margin-right: 12px;
+	}
+	.logo {
+		display: inline-block;
+		width: 30px;
+		height: auto;
+		margin: 20px 0 0 10px;
+		pointer-events: none;
+		object-fit: cover;
+	}
+	.logo-full {
+		display: inline-block;
+		width: 40px;
+		height: auto;
+		margin: 50px 0 0 30px;
+		pointer-events: none;
+		object-fit: cover;
+	}
+	.tabbox {
+		@include u-flex(row, center, center);
+		border-bottom: 2rpx solid #F5F7FA;
+		height: 44px;
+		background-color: #fff;
+		view {
+			flex: 1;
+			padding: 20rpx 0;
+			margin-right: 40rpx;
+			text-align: center;
+		}
+		&-active {
+			position: relative;
+			&::after {
+				position: absolute;
+				bottom: 0;
+				left: 50%;
+				transform: translateX(-50%);
+				content: "";
+				width: 3rem;
+				border-bottom: 4px solid #FF5C03;
+			}
+		}
+	}
+	.chatinput {
+		position: fixed;
+		left: 32rpx;
+		right: 32rpx;
+		z-index: 999;
+		height: 96rpx;
+		background-color: green;
+		background: #FFFFFF;
+		box-shadow: 0rpx 8rpx 21rpx 0rpx rgba(0, 0, 0, 0.1);
+		border-radius: 24rpx 24rpx 24rpx 24rpx;
+		@include u-flex(row, center, center);
+		padding: 0 24rpx;
+		box-sizing: border-box;
+		.uni-input {
+			flex: 1;
+			margin-right: 32rpx;
+			font-size: 30rpx;
+		}
+	
+		.send {
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 400;
+			font-size: 28rpx;
+			color: #FFFFFF !important;
+			flex-shrink: 0;
+			padding: 0 20rpx;
+			height: 72rpx;
+			background: #FF5C03 !important;
+			border-radius: 8rpx 8rpx 8rpx 8rpx;
+			&::after {
+				border: none;
+			}
+		}
+	}
+	.answerTip {
+		position: fixed;
+		right: 0;
+		z-index: 9;
+		bottom: calc(var(--window-bottom) + 380rpx);
+		box-shadow: 0rpx 8rpx 21rpx 0rpx rgba(0, 0, 0, 0.1);
+		border-radius: 24rpx 24rpx 24rpx 24rpx;
+		background-color: #ff5c03;
+		color: #fff;
+		border-radius: 50%;
+		height: 90rpx;
+		width: 90rpx;
+		font-size: 25rpx;
+		text-align: center;
+		padding: 10rpx;
+		@include u-flex(column, center, center);
+	}
+	.danmu-item {
+		position: absolute;
+		top: 0;
+		white-space: nowrap;
+		font-size: 16px;
+		height: 20px;
+		display: inline-flex;
+		box-sizing: border-box;
+		align-items: center;
+	}
+	.danmuMove {
+		// animation: mymove 8s linear forwards;
+		// animation-duration: 8s;
+		animation-timing-function: linear;
+		animation-delay: 0s;
+		animation-iteration-count: 1;
+		animation-direction: normal;
+		animation-fill-mode: forwards;
+		animation-play-state: running;
+		animation-name: mymove;
+		will-change: transform;
+	}
+	
+	@keyframes mymove {
+		from {
+			transform: translateX(100vw);
+		}
+	
+		to {
+			transform: translateX(-100%);
+		}
+	}
+	.arrow-left-warning {
+		position: absolute;
+		left: 24rpx;
+		height: 88rpx;
+		overflow: hidden;
+		color: #888;
+		font-size: 24rpx;
+		@include u-flex(column, center, center);
+		image {
+			flex-shrink: 0;
+			height: 36rpx;
+			width: 36rpx;
+		}
+	}
+</style>

+ 129 - 128
pages_course/videovip.vue

@@ -4,7 +4,7 @@
 			<u-icon name="arrow-left" size="28" @click="tosales" v-if="appToken"></u-icon>
 			<view class="header-title" :style="{width:menuButtonLeft + 'px',height:menuButtonH+'px',lineHeight:menuButtonH+'px'}">{{courseInfo.title}}</view>
 		</view> -->
-		<view class="video-box" v-if="!videoItem">
+		<view class="video-box" >
 			<image v-if="!isLogin || isAddKf!=1" class="video-poster" :src="courseInfo.imgUrl" mode="aspectFill">
 			</image>
 			<video 
@@ -30,14 +30,6 @@
 				<!-- <cover-image v-if="courseLogo" :class="isFull?'logo-full':'logo'" :src="courseLogo" mode="widthFix"></cover-image> -->
 			</video>
 		</view>
-		<view class="video-box" v-else>
-			<video
-			id="video-content-box"
-			style="width: 100%;height: 420rpx;"
-			:src="videoItem.videoUrl"
-			>
-			</video>
-		</view>
 		
 		<view class="justify-start align-center fs24 base-color-9" v-if="userInfo.userId">
 			<view>{{nameuser?nameuser:'暂未授权昵称'}}#</view>
@@ -259,24 +251,21 @@
 		<!-- footer -->
 		<view class="footer" v-if="videoId">
 			<view class="btns"  >
-				<!-- <button
+<!-- 				<button
 					class="author-btn"
-					open-type="getphonenumber" 
-					@getphonenumber="phoneLogin"  
-					>{{isLogin&&isAddKf==1 ? '提交答案领取奖励' : '立即学习'}}</button> -->
-					<button
-						class="author-btn"
-						open-type="getPhoneNumber"
-						@getphonenumber="phoneLogin"  v-if="!isquestion&&authType==1">{{isLogin&&isAddKf==1 ? '提交答案领取奖励' : '立即学习'}}</button>
-						<button
-							class="author-btn"
-							open-type="getUserInfo" :disabled="userdisabled"
-							@getuserinfo="userInfologin"  v-if="authType==0&&!isquestion">{{isLogin&&isAddKf==1 ? '提交答案领取奖励' : '立即学习'}}</button>
-					<!-- <view class="author-btn" @click="phoneLogin"> {{isLogin&&isAddKf==1 ? '提交答案领取奖励' : '立即学习'}}</view> -->
-				<button class="author-btn" v-if="isLogin &&!isquestion" 
+					open-type="getPhoneNumber"
+					@getphonenumber="phoneLogin"  v-if="!isquestion&&authType==1">{{isLogin&&isAddKf==1 ? '提交答案领取奖励' : '立即学习'}}</button>
+				<button
+					class="author-btn"
+					open-type="getUserInfo" :disabled="userdisabled"
+					@getuserinfo="userInfologin"  v-if="authType==0&&!isquestion">{{isLogin&&isAddKf==1 ? '提交答案领取奖励' : '立即学习'}}</button> -->
+				<button class="author-btn"  
 				@click="submit">{{isLogin&&isAddKf==1 ?'提交答案领取奖励' : '立即学习'}}</button>
 			</view>
 		</view>
+		<view>
+			<u-modal :show="showfalse" title="提示" :content='contentmsg' @confirm='showfalse=false'></u-modal>
+		</view>
 		<u-loading-page :loading="viewload" iconSize="32" loadingColor="#3c9cff" fontSize="24"
 		:loading-text="loadingtext"></u-loading-page>
 	</view>
@@ -296,10 +285,12 @@
 		getIntegralByH5Video,
 		sendReward,
 		getRealLink,
-		checkUserInfo,
-		editUser,
-		loginByMiniApp
+		loginByMiniApp,
+		handleFsUserWx
 	} from "@/api/courseLook.js"
+	import {
+		getConfigByKey
+	} from "@/api/user.js"
 	export default {
 		data() {
 			return {
@@ -368,6 +359,7 @@
 				uuId: "",
 				isEnded: false,
 				// 是否允许拖动进度条
+				linkType: 0,
 				ip: null,
 				checked: true,
 				isFinish: 0, // 是否完课
@@ -415,6 +407,7 @@
 				appToken:'',
 				kfPopup:false,
 				iskftype:0,
+				iskftypemsg:null,
 				courseLogo: '',
 				isquestion:false,
 				tipsPopup:false,
@@ -428,7 +421,9 @@
 				headImg:'',
 				authType:0,//0微信登录 1手机号登录
 				userdisabled:false,
-				projectId:''
+				projectId:'',
+				showfalse:false,
+				contentmsg:null,
 			}
 		},
 		filters: {
@@ -470,53 +465,43 @@
 				return this.userinfos.avatar
 			},
 		},
-		//发送给朋友
-		// onShareAppMessage(res) {
-		// 	return {
-		// 		title: this.$store.state.logoname,
-		// 		// path: '/pages/index/index',
-		// 		imageUrl: this.$store.state.imgpath+'/app/image/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
-		// 	}
-			
-		// },
-		// //分享到朋友圈
-		// onShareTimeline(res) {
-		// 	return {
-		// 		title: this.$store.state.logoname,
-		// 		imageUrl: this.$store.state.imgpath+'/app/image/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
-		// 	}
-			
-		// },
 		onLoad(option) {
-			console.log("option",option)
+			this.getWebviewUrl()
+			uni.$on('usercode',(data)=>{
+				console.log('huoqu ',data)
+				this.goLogin(data)
+			})
+			uni.$on('vipMsg',(data)=>{
+				console.log(4444,data)
+				this.contentmsg=data
+				this.showfalse=true
+				uni.showToast({
+					icon:'none',
+					title: data,
+					duration:5000
+				});
+			})
 			this.videoContext = uni.createVideoContext('video-content-box', this)
 			this.code = option.code
 			if(uni.getStorageSync('userInfo')&&JSON.stringify(uni.getStorageSync('userInfo'))!='{}') {
-				this.userInfo = JSON.parse(uni.getStorageSync('userInfo'))
+				this.userInfo = uni.getStorageSync('userInfo')
 			} else {
 				this.userInfo = {}
 			}
 			this.appToken=uni.getStorageSync('companyUserInfo')
-			// decodeURIComponent()
-			
-			if(!option.course&&!option.videoitem){
+			if(!option.course){
 				const keys = decodeURIComponent(Object.keys(option)[0]);
 				this.urlOption=JSON.parse(keys.split('course=')[1])
-			}else if(option.videoitem){
-				this.videoItem=option.videoitem ? JSON.parse(option.videoitem) : {}
-				this.videoId=this.videoItem.videoId
-				console.log("optionqqq",this.videoItem)
-				console.log("option111",this.videoItem.videoId)
-				return
-			}else if(option.course){
+			}else{
 				this.urlOption = option.course ? JSON.parse(option.course) : {}
 			}
-			this.projectId=this.urlOption.projectId
+			uni.setStorageSync('H5course',this.urlOption)
 			this.videoId = this.urlOption.videoId
 			this.courseId = this.urlOption.courseId
 			this.periodId = this.urlOption.periodId
 			this.companyId = this.urlOption.companyId
 			this.companyUserId = this.urlOption.companyUserId
+			this.projectId= this.urlOption.projectId
 			this.timeid=this.urlOption.id
 			console.log(this.urlOption)
 			console.log(decodeURIComponent(option.course))
@@ -536,21 +521,24 @@
 			// #endif
 		},
 		onShow() {
+			this.userinfos=uni.getStorageSync('userinfos')
+			this.userinfo=uni.getStorageSync('userinfo')
 			this.tipsOpen = false
 			this.isExpand = true
 			this.uuId = generateRandomString(16)
-			if (this.videoId) {
+			if(this.videoId) {
 				this.getH5CourseByVideo()
 			}
 			const AppToken=uni.getStorageSync('TOKEN_WEXIN')
 			console.log(AppToken)
 			if(AppToken){
 				// this.isLogin=true
-				if(this.isAddKf == 1){
+				if(this.isAddKf == 1&&this.userinfo.userId){
+					console.log(1233)
 					this.getH5CourseVideoDetails()
 				} else{
-					this.checkUserInfoA()
-					// this.getIsAddKf()
+					// this.checkUserInfoA()
+					this.getIsAddKf()
 				}
 			}
 			// if(this.sortLink){
@@ -565,6 +553,7 @@
 		mounted() {
 			// this.getIP()
 			this.getHeight()
+			
 		},
 		onHide() {
 			// this.player = uni.createVideoContext('video-content-box');
@@ -582,6 +571,7 @@
 				this.interval = null
 			}
 			this.clearIntegral()
+			uni.$off('usercode')
 		},
 		beforeDestroy() {
 			this.player = uni.createVideoContext('video-content-box');
@@ -596,67 +586,77 @@
 			this.clearIntegral()
 		},
 		methods: {
-			//检查用户昵称以及头像
-			checkUserInfoA(){
-				checkUserInfo().then(res=>{
-					if(res.code==200){
-						this.isLogin = true
-						this.userInfo= res.user
-						uni.setStorageSync('userInfo', JSON.stringify(res.user));
-						console.log(uni.getStorageSync('userInfos'))
-						if(this.nameuser==''){
-							this.userinfos.nickname=this.userInfo.nickname
-						}
-						let that=this
-						setTimeout(()=>{
-							that.getIsAddKf()
-						},100)
-					}else if(res.code==500){
-						if(res.authType==2){
-							uni.setStorageSync('authUrl',res.domain)
-							if(!uni.getStorageSync('userInfos')){
-								uni.navigateTo({
-									url:'/pages_course/webview'
-								})
-								return
-							}
-							this.editUserA()
+			getWebviewUrl() {
+				var data = {
+					key: 'course.config'
+				}
+					getConfigByKey(data).then(res => {
+						if (res.code == 200) {
+							console.log("getConfigByKey====", JSON.parse(res.data))
+							let data = JSON.parse(res.data,)
+							uni.setStorageSync('setWebviewUrl',data.userCourseAuthDomain)
 						}else{
-							this.userlogo=true
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
 						}
-					}else{
-						uni.showToast({
-							icon:'none',
-							title:res.msg,
-						});
-					}
-				})
+					})
 			},
-			//修改用户昵称以及头像
-			editUserA(){
-				this.userinfos=uni.getStorageSync('userInfos')?uni.getStorageSync('userInfos'):this.userinfos
-				const data={
-					nickname:this.userinfos.nickname,
-					avatar:this.userinfos.avatar,
+			goLogin(data) {
+				if(data){
+					console.log('huoqu1222',data)
+					uni.showLoading({
+						title: '加载中'
+					})
+					uni.login({
+						provider: "weixin",
+						success: async loginRes => {
+							let code = loginRes.code // 获取开发code
+							handleFsUserWx({
+							   code: code,
+							   appId:this.appid,
+							   userId:data.userId
+							})
+							.then( res => {
+								if(res.code==200){
+									console.log(res)
+									uni.hideLoading();
+									uni.showToast({
+										icon:'none',
+										title: "登录成功",
+									});
+									this.userinfos=uni.getStorageSync('userinfos')
+									uni.getStorageSync('TOKEN_WEXIN');
+									this.userInfo=uni.getStorageSync('userInfo');
+									this.isLogin = true
+									this.getH5CourseVideoDetails()
+									// setTimeout(()=>{
+									// 	this.getIsAddKf()
+									// },200)
+								}else if(res.code==406){
+									uni.hideLoading();
+									uni.showToast({
+										icon:'none',
+										title: '该用户已成为其他销售会员',
+									});
+								}else{
+									uni.hideLoading();
+									uni.showToast({
+										icon:'none',
+										title: res.msg,
+									});
+								}
+							   
+							 })
+						},
+					})
+				}else{
+					uni.navigateTo({
+						url:'/pages_course/webview?H5course='+uni.getStorageSync('H5course')
+					})
 				}
-				editUser(data).then(res=>{
-					if(res.code==200){
-						this.isLogin = true
-						uni.showToast({
-							icon:'none',
-							title:'修改成功!',
-						});
-						setTimeout(()=>{
-							this.getIsAddKf()
-						},100)
-					}else{
-						uni.removeStorageSync('userInfos')
-						uni.showToast({
-							icon:'none',
-							title:res.msg+'请重新点击立即学习',
-						});
-					}
-				})
+				
 			},
 			shouquan(){
 				if(this.userinfos.nickname==''){
@@ -769,11 +769,9 @@
 										uni.setStorageSync('userInfo', JSON.stringify(res.user));
 										this.userInfo=res.user;
 										uni.hideLoading()
-										this.checkUserInfoA()
+										// this.checkUserInfoA()
 										// this.isLogin = true
-										// setTimeout(()=>{
-										// 	this.getIsAddKf()
-										// },200)
+										
 									}else if(res.code==406){
 										uni.hideLoading();
 										uni.showToast({
@@ -1070,6 +1068,7 @@
 				uni.showLoading({
 					title: '加载中'
 				})
+				console.log(this.userInfo)
 				const data={
 					videoId:this.videoId,
 					fsUserId:this.userInfo.userId,
@@ -1218,7 +1217,7 @@
 									this.getIsAddKf()
 								} else if(this.iskftype==1){
 									uni.showToast({
-										title: '已看过其他销售分享的此课程,不能重复观看',
+										title: this.iskftypemsg,
 										icon: 'none'
 									})
 								}
@@ -1232,7 +1231,7 @@
 								}
 							} 
 						} else{
-							// this.goLogin()
+							this.goLogin()
 						}
 					},
 					rej => {}
@@ -1463,7 +1462,11 @@
 							this.isLogin = true
 							if(res.data){
 								this.isAddKf = 1
-								this.getH5CourseVideoDetails()
+								if(this.userInfo.userId){
+									this.getH5CourseVideoDetails()
+									console.log(123223)
+								}
+								
 							}
 							// else{
 							// 	uni.showToast({
@@ -1496,6 +1499,7 @@
 						}else if(res.code==504){
 							this.isAddKf = 0
 							this.iskftype=1
+							this.iskftypemsg=res.msg
 							uni.showToast({
 								title: res.msg,
 								icon: 'none'
@@ -1576,9 +1580,6 @@
 				getErrMsg({
 					msg: JSON.stringify(msgerr)
 				})
-			},
-			goLogin() {
-				
 			},
 			getLink() {
 				this.goLogin()

+ 42 - 28
pages_course/webview.vue

@@ -4,7 +4,6 @@
     <view class="loading" v-if="loading">
       <text>加载中...</text>
     </view>
-    
     <!-- web-view组件 -->
     <web-view 
       :src="webviewUrl" 
@@ -16,46 +15,47 @@
 </template>
 
 <script>
-	import { getusername} from '@/api/courseLook'
+import { H5logoinApp} from '@/api/courseLook.js'
 export default {
   data() {
     return {
       loading: true,
-      // webviewUrl: '',//福本源
-	  // webviewUrl: 'https://vip.aishanghys.com/weixinOauth',//蜂巢快药
-	  webviewUrl: uni.getStorageSync('authUrl'),//中康
-	  // webviewUrl: 'https://vip.liangmiaoedu.com/weixinOauth',//良苗
-	  // webviewUrl: 'https://vips.beliyostore.com/weixinOauth',//倍力优
-	  // webviewUrl: 'https://userapp.drkzyy.cn/weixinOauth',//德瑞康
-	  // webviewUrl: 'https://companyapp.gjh2024.com/weixinOauth.html',//金慷建
-	 
-      userInfo: {},
-	  userinfos:{
-	  	nickname:"",
-	  	avatar:""
-	  },
+	  webviewUrl: uni.getStorageSync('setWebviewUrl'),//动态
+      userinfos:{
+      	nickname:"",
+      	avatar:""
+      },
+	  usercode:{},
+	  
     }
   },
   onLoad(options) {
-	  console.log(options)
-	  // if(options.url&&!options.code){
-	  // 		this.webviewUrl=options.url
-	  // }
+	  console.log(this.webviewUrl)
 	  if(options.code){
 		  // uni.$emit('us ercode', {  code: options.code });
 		  this.loginweixin(options.code)
 	  }
-	 
     // 生成带参的H5授权页面URL
     // this.webviewUrl = this.generateAuthUrl()
   },
+  computed:{
+	  appid() {
+	  	return this.$store.state.appid
+	  },
+  },
   methods: {
 	  loginweixin(datas){
+		 console.log(uni.getStorageSync('H5course'))
+		 const h5course=uni.getStorageSync('H5course')
 		  var data = {
 		  	code: datas,
+			appId:this.appId,
+			companyId:h5course.companyId,
+			companyUserId:h5course.companyUserId,
+			projectId:h5course.projectId
 		  }
-		  getusername(data).then(res => {
-		  		  this.res=res
+		  H5logoinApp(data).then(res => {
+		  		this.res=res
 		  		uni.hideLoading();
 		  		if (res.code == 200) {
 		  			console.log(res)
@@ -64,18 +64,32 @@ export default {
 		  				icon:'none',
 		  				title: "成功获取用户信息",
 		  			});
-					this.userinfos.nickname=res.nickname;
-					this.userinfos.avatar=res.headImgUrl;
-		  			uni.setStorageSync('userInfos', this.userinfos);
-					uni.navigateBack({
-						delta: 1
-					});
+					this.userinfos.nickname=res.user.nickname
+					this.userinfos.avatar=res.user.avatar
+					uni.setStorageSync("userinfos",this.userinfos)
+					uni.setStorageSync('userInfo', res.user);
+					uni.setStorageSync('TOKEN_WEXIN', res.token);
+					this.usercode.code=datas
+					this.usercode.userId=res.user.userId
+		  			setTimeout(()=>{
+						uni.$emit('usercode',this.usercode)
+		  				uni.navigateBack({
+		  					delta: 1
+		  				});
+		  			},200)
 		  		} else {
 					uni.hideLoading();
 		  			uni.showToast({
 		  			  title: res.msg || '获取用户信息失败',
 		  			  icon: 'none'
 		  			})
+					uni.setStorageSync('vipMsg',res.msg)
+					setTimeout(()=>{
+						uni.$emit('vipMsg',res.msg)
+						uni.navigateBack({
+							delta: 1
+						});
+					},200)
 		  		}
 		  	},
 		  	err => {}

+ 11 - 11
pages_doctor/doctorDetail.vue

@@ -2,12 +2,12 @@
 	<view>
 		<view class="top-cont">
 			<!-- 背景图片 -->
-			<image class="bg" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/doctordetail_top_bg.png" mode=""></image>
+			<image class="bg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/doctordetail_top_bg.png" mode=""></image>
 			<view class="top-inner">			
 				<!-- 这里是状态栏 -->
 				<view class="status_bar" :style="{height: statusBarHeight}"></view>
 				<view class="back-box" @click="back">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/back.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/back.png" mode=""></image>
 				</view>
 				<!-- 医生信息 -->
 				<view class="doctor-info">
@@ -62,22 +62,22 @@
 				<view class="content">
 					<!-- 擅长 -->
 					<view class="expertise">
-						<image class="label-img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/sc_word.png" mode=""></image>
+						<image class="label-img" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/sc_word.png" mode=""></image>
 						<text :class="showExpert?'text':'text ellipsis3'" id="expert">{{doctor.doctorDesc}}</text>
 						<!-- 查看更多按钮 -->
 						<view v-if="!showExpert" class="show-more" @click="showMoreExpert">
-							<image class="mask" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/mask.png" mode=""></image>
+							<image class="mask" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/mask.png" mode=""></image>
 							<view class="inner">
 								<text class="btn">查看全部</text>
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/arrow3.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/arrow3.png" mode=""></image>
 							</view>
 						</view>
 					</view>
 					<!-- 问诊方式 -->
 					<view class="mode-box">
 						<view v-for="(price,index) in prices" :class="price.priceId == priceId?'item active':'item'" @click="choseMode(price)">
-							<image v-if="price.priceType==1" class="img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/picture_ask.png" mode=""></image>
-							<image v-if="price.priceType==2" class="img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/phone_ask.png" mode=""></image>
+							<image v-if="price.priceType==1" class="img" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/picture_ask.png" mode=""></image>
+							<image v-if="price.priceType==2" class="img" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/phone_ask.png" mode=""></image>
 							<view class="info">
 								<text v-if="price.priceType==1" class="label">图文问诊</text>
 								<text v-if="price.priceType==2" class="label">电话问诊</text>
@@ -93,7 +93,7 @@
 								</view>
 							</view>
 							<!-- 选中的角标 -->
-							<image v-if="price.priceId == priceId" class="active-img" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/sel_right50.png" mode=""></image>
+							<image v-if="price.priceId == priceId" class="active-img" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/sel_right50.png" mode=""></image>
 						</view>
 						 
 					</view>
@@ -107,12 +107,12 @@
 		<view class="btn-foot">
 			<view class="menu-box">
 				<view class="item" @click="goHome">
-					<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/back_home.png" mode=""></image>
+					<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/back_home.png" mode=""></image>
 					<text>首页</text>
 				</view>
 				<view class="item" @click="changeFollow">
-					<image v-if="!isFollow" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/focus.png" mode=""></image>
-					<image v-show="isFollow" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/focus_sel.png" mode=""></image>
+					<image v-if="!isFollow" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/focus.png" mode=""></image>
+					<image v-show="isFollow" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/focus_sel.png" mode=""></image>
 					<text>关注</text>
 				</view>
 			</view>

+ 4 - 4
pages_doctor/doctorIm.vue

@@ -55,7 +55,7 @@
 						</view>
 					</view>
 					<view class="img-box">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/head.jpg" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/head.jpg" mode=""></image>
 					</view>
 				</view>
 			</view> -->
@@ -77,20 +77,20 @@
 					 v-model="sendText"
 					@input="textInput" 
 				/>
-				<image v-if="!hasSendValue" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/add26.png" mode="" @click="showMoreMenu"></image>
+				<image v-if="!hasSendValue" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/add26.png" mode="" @click="showMoreMenu"></image>
 				<view v-if="hasSendValue" class="send-btn" @click="sendMsg">发送</view>
 			</view>
 			<!-- 功能按钮 -->
 			<view :class="showBottomMenu?'bottom-menu show':'bottom-menu'">
 				<view class="item">
 					<view class="img-box">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/health.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/health.png" mode=""></image>
 					</view>
 					<text class="text">投诉反馈</text>
 				</view>
 				<view class="item">
 					<view class="img-box">
-						<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/health.png" mode=""></image>
+						<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/health.png" mode=""></image>
 					</view>
 					<text class="text">常见问题</text>
 				</view>

+ 4 - 4
pages_doctor/doctorList.vue

@@ -4,7 +4,7 @@
 			<!-- 搜索框 -->
 			<view class="search-cont">
 				<view class="inner">
-					<image class="icon-search" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/search.png" mode=""></image>
+					<image class="icon-search" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/search.png" mode=""></image>
 					<input type="text" v-model="searchVal" placeholder="输入医生姓名搜索" confirm-type="搜索" @confirm="goSearch" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
 				</view>
 			</view>
@@ -19,7 +19,7 @@
 					>
 						<view class="text">
 							{{ item.departmentName }}
-							<image v-show="deptId == item.departmentId" class="tab-bg" src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/tab_bg.png" mode=""></image>
+							<image v-show="deptId == item.departmentId" class="tab-bg" src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/tab_bg.png" mode=""></image>
 						</view>
 					</view>
 				</view>
@@ -56,7 +56,7 @@
 						<!-- 评分 -->
 						<!-- <view class="rate-box">
 							<view class="star">
-								<image src="https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/star.png" mode=""></image>
+								<image src="https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/star.png" mode=""></image>
 								<text>{{ item.pings }}</text>
 							</view>
 							<view class="line"></view>
@@ -107,7 +107,7 @@
 					},
 					noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
 					empty: {
-						icon:'https://zkzh-2025.oss-cn-beijing.aliyuncs.com/shop/images/no_data.png',
+						icon:'https://bjczwh.oss-cn-beijing.aliyuncs.com/app/shop/images/no_data.png',
 						tip: '暂无数据'
 					}
 				},

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff