李妹妹 4 дней назад
Сommit
5d999aa8fb
100 измененных файлов с 15178 добавлено и 0 удалено
  1. 4 0
      .gitignore
  2. 2279 0
      App.vue
  3. 38 0
      androidPrivacy.json
  4. 18 0
      api/activity.js
  5. 13 0
      api/adv.js
  6. 42 0
      api/agent.js
  7. 29 0
      api/ai.js
  8. 15 0
      api/article.js
  9. 72 0
      api/common.js
  10. 64 0
      api/companyUser.js
  11. 17 0
      api/coupon.js
  12. 313 0
      api/course.js
  13. 67 0
      api/courseAnswer.js
  14. 9 0
      api/department.js
  15. 16 0
      api/disease.js
  16. 25 0
      api/doctor.js
  17. 13 0
      api/doctorArticle.js
  18. 22 0
      api/drugReport.js
  19. 145 0
      api/expert.js
  20. 14 0
      api/follow.js
  21. 52 0
      api/healthRecords.js
  22. 21 0
      api/healthTongue.js
  23. 14 0
      api/hospital.js
  24. 150 0
      api/index.js
  25. 91 0
      api/inquiryOrder.js
  26. 115 0
      api/integral.js
  27. 264 0
      api/liveOrder.js
  28. 234 0
      api/living.js
  29. 36 0
      api/makeMoney.js
  30. 38 0
      api/message.js
  31. 62 0
      api/order.js
  32. 26 0
      api/package.js
  33. 68 0
      api/packageOrder.js
  34. 23 0
      api/pages_watch/common.js
  35. 29 0
      api/pages_watch/device.js
  36. 47 0
      api/pages_watch/health.js
  37. 117 0
      api/pages_watch/healthMonitoring.js
  38. 150 0
      api/pages_watch/index.js
  39. 23 0
      api/pages_watch/message.js
  40. 47 0
      api/pages_watch/user.js
  41. 39 0
      api/patient.js
  42. 41 0
      api/pay_new.js
  43. 38 0
      api/prescribe.js
  44. 27 0
      api/qw.js
  45. 75 0
      api/shortvideo.js
  46. 25 0
      api/store.js
  47. 29 0
      api/storeAfterSales.js
  48. 55 0
      api/storeOrder.js
  49. 8 0
      api/storeProduct.js
  50. 24 0
      api/test.js
  51. 235 0
      api/user.js
  52. 49 0
      api/userAddress.js
  53. BIN
      assets/css/bushu_icon.png
  54. 220 0
      assets/css/common.less
  55. 231 0
      assets/css/common.scss
  56. 64 0
      assets/css/czy/emoji/biaoqin.js
  57. 3139 0
      assets/css/czy/emoji/sina.js
  58. 1595 0
      assets/css/czy/es.1.base.css
  59. 94 0
      assets/css/czy/es.2.color.css
  60. 28 0
      assets/css/czy/es.3.icon.css
  61. 101 0
      assets/css/czy/es.4.view.css
  62. BIN
      assets/css/kaluli_icon.png
  63. BIN
      assets/css/min_icon.png
  64. BIN
      assets/css/sports_record_icon.png
  65. BIN
      assets/css/time_icon.png
  66. 1 0
      assets/iconfont/iconfont.css
  67. 32 0
      common/ChainItem.js
  68. 11 0
      common/config.js
  69. 26 0
      common/css/flexCommon.css
  70. 352 0
      common/html-parser.js
  71. 138 0
      common/request.js
  72. 54 0
      common/util.js
  73. 106 0
      components/CustomCamera/WeChat/Layout.vue
  74. 194 0
      components/CustomCamera/WeChat/index.vue
  75. 50 0
      components/Loading.vue
  76. 162 0
      components/Menu.vue
  77. 95 0
      components/adMask/adMask.vue
  78. 177 0
      components/choosePatient/choosePatient.vue
  79. 158 0
      components/elise-audio/elise-audio.vue
  80. 40 0
      components/elise-audio/redme.md
  81. 66 0
      components/es-course-item/es-course-item.vue
  82. 125 0
      components/es-integral-sign/es-integral-sign.vue
  83. 20 0
      components/es-integral/es-integral.vue
  84. 194 0
      components/es-living-pop/es-living-pop.vue
  85. 106 0
      components/es-nav-bg-black/es-nav-bg-black.vue
  86. 70 0
      components/es-nav-bg/es-nav-bg.vue
  87. 61 0
      components/es-nav-title-base/es-nav-title-base.vue
  88. 143 0
      components/es-nav-title/es-nav-title.vue
  89. 20 0
      components/es-nav/es-nav.vue
  90. 43 0
      components/es-swiper-item/es-swiper-item.vue
  91. 34 0
      components/es-top/es-top.vue
  92. 302 0
      components/es-video-pop/es-video-pop.vue
  93. 81 0
      components/float-btn/float-btn.vue
  94. 315 0
      components/good-list/good-list.vue
  95. 367 0
      components/graceUI/gracePage.vue
  96. 232 0
      components/h5-down-app-tip/h5-down-app-popup.vue
  97. 236 0
      components/h5-down-app-tip/h5-down-app-tip.vue
  98. 127 0
      components/healthButlerPop/healthButlerPop.vue
  99. 101 0
      components/indexSubsection/indexSubsection.vue
  100. 0 0
      components/lx-calendar/lx-calendar.md

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+node_modules/
+.project
+unpackage/
+.DS_Store

+ 2279 - 0
App.vue

@@ -0,0 +1,2279 @@
+<script>
+import { getDictByKey, getAppVersion, getRealLinkDomainName,getAppPageConfig } from '@/api/common.js';
+//参考文档 插件市场 https://ext.dcloud.net.cn/plugin?id=741
+import { appCheckUdate, openDownload } from '@/utils/APPUpdate.js';
+import { getUserInfo, getPushLogRead } from '@/api/user';
+import { getUserLiveInfo } from '@/api/living.js'
+import { healthButlerPop } from '@/utils/healthButlerPop.js';
+import { mapGetters, mapActions } from 'vuex';
+import IMSDK, { IMMethods, MessageReceiveOptType, MessageType, SessionType } from 'openim-uniapp-polyfill';
+import { config } from '@/pages_im/common/config';
+import { getDbDir, Igexin, toastWithCallback } from '@/pages_im/util/common.js';
+import { conversationSort, secFormat, callingModule, meetingModule, parseMessageByType, prepareConversationState } from '@/pages_im/util/imCommon';
+import { PageEvents, UpdateMessageTypes, CustomType, ContactChooseTypes } from '@/pages_im/constant';
+import { openImLoginApi,testImLoginApi } from '@/pages_im/api/imBll';
+import NotificationUtil from '@/pages_im/util/notification';
+import newMessage from '@/pages_im/static/audio/newMessage.wav';
+import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update'
+
+let cacheConversationList = [];
+let updateDownloadTask = null;
+let notificationIntance = null;
+let pausing = false;
+let innerAudioContext;
+let notification;
+let uPushPlugin;
+let connectStart=0;
+// #ifdef APP-PLUS
+import permision1 from '@/utils/permission.js';
+// notification = uni.requireNativePlugin('Tuoyun-OpenIMSDK-Notification');
+// #endif
+
+import { getTlsSig } from '@/api/common.js';
+import { qconfig } from './utils/config';
+import { premissionCheck } from '@/js_sdk/wa-permission/permission.js';
+import { updateMsgDot } from '@/utils/common.js';
+import { getImAdminToken } from '@/pages_im/api/imApi';
+import { ar } from 'date-fns/locale';
+
+let healthTimer = null;
+let tSeconds = 0;
+const healthSeconds = 180;
+let offlineMsg=null;
+let offlineHandleNewMsg=null;
+let failImConnTime=0;
+// #ifdef APP-PLUS
+let complaintView = null;      // 悬浮窗视图(主图标)
+let complaintCloseView = null; // 关闭按钮视图
+let viewLeft = 0;
+let viewTop = 0;
+let complaintPositionTimer = null; // 位置检查定时器
+let lastRoute = ''; // 上次的路由
+// #endif
+export default {
+	globalData: {
+		wsUrl: 'ws://doctor.ai.cdwjyyh.com',
+		danmuWSUrl:'wss://websocket.cdwjyyh.com',
+		aiWSUrl:'ws://doctor.ai.cdwjyyh.com',
+		kfurl: 'https://work.weixin.qq.com/kfid/kfc3731c5008ebd8906', //企业微信客服链接
+		corpId: 'ww70ac72e824957fc9', //客服企业id
+		miniprogamId:"gh_feb7753a310b", //gh_7a6a32e5ef61 御君方互医
+		shareCorpId: '', // 分享企业id
+		shareSchema:"", // 应用跳转标识,显示在具体应用下的 Schema字段
+		shareAgentid:"", // 企业微信管理后台 应用唯一标识。显示在具体应用下的 AgentId字段
+		shareAppid_gh:"", // 必须是应用关联的小程序,注意要有@app后缀
+	},
+	onLaunch: function (options) {
+		let fontsize = uni.getStorageSync('fontSize');
+		if (fontsize) {
+			uni.setStorageSync('fontSize', fontsize);
+		} 
+		else {
+			let scale = this.getSystemFontScale();
+			let oriFontSize = 18;
+			fontsize = oriFontSize * scale;
+			if (fontsize < oriFontSize) {
+				fontsize = oriFontSize;
+			}
+			if (fontsize < 16) {
+				fontsize = 16;
+			}
+			if (fontsize >= 21) {
+				fontsize = 21;
+			}
+			uni.setStorageSync('fontSize', fontsize);
+		}
+		// //设置im字体
+		let RootFontSize= uni.getStorageSync('RootFontSize');
+		if(!RootFontSize){
+			uni.setStorageSync('RootFontSize', "24px");
+			this.$store.commit('user/SET_ROOT_FONT_SIZE', "24px");
+		}
+		uni.removeStorageSync('openUrl');
+	    this.initOpenIm();
+		if (this.$isLogin()) {
+			 uni.setStorageSync("onLaunch",1);
+		}
+		let that = this;
+		uni.$on('refreshIM', () => {
+			if (that.$isLogin()) {
+				that.openImLogin();
+			}
+		});
+
+		// 监听隐藏/显示投诉悬浮按钮事件
+		uni.$on('hideComplaintButton', () => {
+			// #ifdef APP-PLUS
+			if (complaintView) complaintView.hide();
+			if (complaintCloseView) complaintCloseView.hide();
+			// #endif
+		});
+
+		uni.$on('showComplaintButton', () => {
+			// #ifdef APP-PLUS
+			if (complaintView) complaintView.show();
+			if (complaintCloseView) complaintCloseView.show();
+			// #endif
+		});
+		
+		 // #ifdef APP-PLUS
+		    
+			uni.$on('showHealthButler', () => {
+				if (plus.runtime.channel == 'baidu' || plus.runtime.channel == 'yybadv' || plus.runtime.channel == 'yybadv1') {
+				    that.runTimer();
+				}
+			});
+			
+			//离线推送
+			this.handlerLaunchMsg();
+			uni.onPushMessage((res) => {  //unipush2.0 应用处于激活 监听消息推送
+				//console.log("qxj onPushMessage",res);
+				this.handlePushMessage(res);
+				this.$updateMsgDot();
+			});
+		//#endif
+		
+		  //this.getAppPageConfig();
+	},
+	onLoad() {
+		
+	},
+	onShow() {
+		// #ifdef APP-PLUS
+		this.getDictByKeyFun()
+		// 如果浮标未创建,尝试创建(可能启动页在其他地方关闭)
+		 setTimeout(()=>{
+			 if (!complaintView) {
+			 	this.createComplaintFloatAfterSplash();
+			 } else {
+			 	// 启动位置检查定时器
+			 	this.startComplaintPositionCheck();
+			 }
+		 },3000);
+		// #endif
+		this.geth5Path();
+		var that = this;
+		// #ifdef APP-PLUS
+		 plus.navigator.closeSplashscreen();
+		if (this.$isAgreePrivacy()) {
+			if (this.$isLogin()) {
+				 this.getUserInfo(); //检测jpushId是否被清空,若为空就重新绑定
+			}
+			this.$getRegistrationID('update');
+			if (plus.runtime.channel == 'baidu' || plus.runtime.channel == 'yybadv' || plus.runtime.channel == 'yybadv1') {
+				this.runTimer();
+			}
+		}
+		if(uni.$u.os() === 'android'){
+			this.checkUpdateApp();
+			IMSDK.asyncApi(IMSDK.IMMethods.SetAppBackgroundStatus, IMSDK.uuid(), false);
+			meetingModule?.onListenerAppBackground(false);
+		}
+		var args= plus.runtime.arguments;
+		uni.setStorageSync("appIsOnShow",1);
+		if(args){
+			// 处理args参数,如直达到某新页面等
+			if(args=="rtlive://course"){
+				uni.switchTab({url: '/pages/course/index'});
+			} 
+			else if(args=="rtlive://livingApp"){
+				uni.switchTab({url: '/pages/course/video/living-app'});
+			} 
+			else {
+				let url = ''
+				if(args.indexOf("rtlive://pagesApp") != -1) {  // 打开对应pages
+					console.log("11111");
+					url=args.replace("rtlive://pagesApp?pagesUrl=","");
+					url=decodeURIComponent(url);
+				} 
+				else if (args.indexOf("rtlive://courseAnswer") != -1) {  // 看课
+					console.log("22222");
+					url=args.replace("rtlive://courseAnswer","");
+					url="/pages/courseAnswer/index"+url;
+				}
+				else if(args.indexOf("rtlive://") != -1&&url) {
+					uni.setStorageSync("openUrl",url)
+					if(this.$isLogin()){
+						uni.navigateTo({
+							url: url,
+					 		success: function(res) {
+							    uni.removeStorageSync("openUrl")
+								plus.runtime.arguments = ''
+							}
+						 })
+					}
+				}
+			    else if(args.indexOf("contentType")!=-1){  //unipush2.0 App打开状态点击通知
+					let newServerMsg=JSON.parse(args);
+					let serverMsgID=uni.getStorageSync('serverMsgID');
+					// console.log("44444 newServerMsg",newServerMsg);
+					let newServerMsgData=JSON.parse(newServerMsg.data);
+					if(serverMsgID!=newServerMsgData.serverMsgID){ 
+						uni.$u.throttle(() => that.notifyGoToChat(newServerMsgData), 2000);
+						uni.setStorageSync('serverMsgID', newServerMsgData.serverMsgID);
+					}
+				}
+				else if(args.indexOf("messageId")!=-1){  //oppo离线推送
+				     console.log("55555");
+					 offlineMsg=args;
+				}
+				else if(args.indexOf("rtlive://course")!=-1){ 
+				    console.log("66666");
+					url=args.replace("rtlive://course","");
+					url="/pages/course/info"+url;
+				}
+			}
+		}
+		// #endif
+	},
+	onHide() {
+		// #ifdef APP-PLUS
+		// 应用进入后台时停止位置检查
+		this.stopComplaintPositionCheck();
+		// #endif
+		uni.removeStorageSync('onLaunch');
+		uni.setStorageSync("appIsOnShow",0);
+		if(uni.$u.os() === 'android'){
+			IMSDK.asyncApi(IMSDK.IMMethods.SetAppBackgroundStatus, IMSDK.uuid(), true);
+			meetingModule?.onListenerAppBackground(true);
+		}
+		
+	},
+	computed: {
+		...mapGetters([
+			'storeConversationList',
+			'storeCurrentConversation',
+			'storeCurrentUserID',
+			'storeSelfInfo',
+			'storeRecvFriendApplications',
+			'storeRecvGroupApplications',
+			'storeHistoryMessageList',
+			'storeIsSyncing',
+			'storeGroupList'
+		]),
+		contactBadgeRely() {
+			return {
+				recvFriendApplications: this.storeRecvFriendApplications,
+				recvGroupApplications: this.storeRecvGroupApplications,
+				userKey: this.storeCurrentUserID
+			};
+		}
+	
+	},
+	methods: {
+		...mapActions('message', ['pushNewMessage', 'updateOneMessage', 'updateQuoteMessageRevoke', 'updateMessageNicknameAndFaceUrl']),
+		...mapActions('conversation', ['updateCurrentMemberInGroup']),
+		...mapActions('contact', [
+			'updateFriendInfo',
+			'pushNewFriend',
+			'updateBlackInfo',
+			'pushNewBlack',
+			'pushNewGroup',
+			'updateGroupInfo',
+			'pushNewRecvFriendApplition',
+			'updateRecvFriendApplition',
+			'pushNewSentFriendApplition',
+			'updateSentFriendApplition',
+			'pushNewRecvGroupApplition',
+			'updateRecvGroupApplition',
+			'pushNewSentGroupApplition',
+			'updateSentGroupApplition'
+		]),
+		async getDictByKeyFun() {
+			let data = {
+				key: 'app_pay_config'
+			}
+			const res = await getDictByKey(data)
+			if (res.code == 200 && res.data && res.data.length > 0 && res.data[0].dictValue) {
+				getApp().globalData.miniprogamId = res.data[0].dictValue
+			}
+		},
+		getAppPageConfig() {
+		    getAppPageConfig().then(res=>{
+				if(res.code == 200) {
+					uni.setStorageSync('appPageConfig',JSON.stringify(res.appPageConfig))
+				}
+			})
+		},
+	     //投诉建议
+	    // 根据当前页面路径获取 marginBottom 值
+	    getComplaintMarginBottom() {
+	          let marginBottom = 100; // 默认距底部
+	          try {
+	            const pages = getCurrentPages();
+	            if (pages && pages.length > 0) {
+	              const curPage = pages[pages.length - 1];
+	              const route = curPage.route || '';
+	              //console.log('当前路由:', route, 'marginBottom:', marginBottom);
+	              if (route === 'pages/course/video/living-app') {
+	                marginBottom = 40;
+	              } else if (route === 'pages/user/integral/integralGoodsDetails') {
+	                marginBottom = 150;
+	              } else {
+	                // 其他页面使用默认值 100
+	                marginBottom = 100;
+	              }
+	              //console.log('最终 marginBottom:', marginBottom);
+	            }
+	          } catch (err) {
+	            //console.error('获取路由失败:', err);
+	          }
+	          return marginBottom;
+	        },
+	        
+	        // 计算浮标位置
+	        getComplaintPosition() {
+	          const ww = plus.screen.resolutionWidth;
+	          const wh = plus.screen.resolutionHeight;
+	          const width = 48;
+	          const height = 70;
+	          const marginRight = 10;
+	          let marginBottom = this.getComplaintMarginBottom();
+	          const closeSize = 16;
+	          let left = ww - width - marginRight;
+	          let top = wh - height - marginBottom;
+			  if(this.$isIos()){
+				  top-=20;
+			  }
+			  let hidden = false;
+			  try {
+			    const pages = getCurrentPages();
+			    if (pages && pages.length > 0) {
+			      const curPage = pages[pages.length - 1];
+			      const route = curPage.route || '';
+			      if (route === 'pages/auth/login' || route === 'pages/auth/loginIndex' || route === 'pages/user/feedback'||route === 'pages_live/index'
+				  //|| route === 'pages_im/pages/conversation/conversationList/index'  || route === 'pages_im/pages/conversation/chating/index'  
+				   || ((route === 'pages_im/pages/conversation/chating/index' || route ==='pages_im1/pages/conversation/chating1/index') && this.$companyUserIsLogin())) {
+			           hidden = true;
+			      }
+				  // if (route === 'pages_im/pages/conversation/chating/index' || route === 'pages_im/pages/conversation/chating1/index') {
+				  // 	   top = top-uni.upx2px(300);
+				  // }
+				  if (route === 'pages/pointsMall/points') {
+				  	   top=top-uni.upx2px(90);
+					   if(this.$isIos()){
+						   top-=30;
+					   }
+				  }
+				  if (route === 'pages/pointsMall/points') {
+				  	   top=top-uni.upx2px(90);
+				  					   if(this.$isIos()){
+				  						   top-=30;
+				  					   }
+				  }
+				  if (route === 'pages/course/video/living-app') {
+				  	   top = uni.upx2px(300);
+					   hidden = false;
+				  }
+				  if (route === 'pages/courseAnswer/index') {
+				  	   top=top-uni.upx2px(200);
+				  	   hidden = false;
+				  }
+				
+			    }
+			  } catch (err) {
+			       console.error('getComplaintPosition error:', err);
+			  }
+	          const closeLeft = left + (width - closeSize) / 2;
+	          const closeTop = top + height - closeSize;
+	          return { left, top, closeLeft, closeTop, width, height, closeSize, marginBottom, hidden };
+	        },
+	        
+	        // 绑定主图标点击事件
+	        bindComplaintViewClick() {
+	          complaintView.addEventListener('click', (e) => {
+	            let target = '/pages/user/feedback';
+	            try {
+	              const pages = getCurrentPages();
+	              if (pages && pages.length > 0) {
+	                const curPage = pages[pages.length - 1];
+	                const pageParams = curPage.options;
+	                const route = curPage.route || '';
+	                if (route === 'pages/course/info') {
+	                    target = '/pages/user/courseFeedback?courseId='+pageParams.courseId;
+	                }
+	              }
+	            } catch (err) {
+	              console.error('获取路由失败:', err);
+	            }
+	            uni.navigateTo({
+	              url: target,
+	              fail: (err) => {
+	                console.error('跳转失败:', err);
+	              }
+	            });
+	          });
+	        },
+	        
+	        // 绑定关闭按钮点击事件
+	        bindComplaintCloseViewClick() {
+	          complaintCloseView.addEventListener('click', (e) => {
+	              complaintView.hide();
+	              complaintCloseView.hide();
+	          });
+	        },
+	        
+	        // 创建主图标视图
+	        createComplaintMainView(pos) {
+	          complaintView = new plus.nativeObj.View('complaint-float', {
+					left: pos.left + 'px',
+					top: pos.top + 'px',
+					width: pos.width + 'px',
+					height: pos.height + 'px',
+					zIndex: 9999
+	          }, [
+	            {
+	              tag: 'img',
+	              id: 'icon',
+	              src: '/static/images/ad/complaints_suggestions.png',
+	              position: {
+	                left: '0px',
+	                top: '0px',
+	                width: '48px',
+	                height: '48px'
+	              }
+	            }
+	          ]);
+	          this.bindComplaintViewClick();
+			  if (!pos.hidden) {
+				complaintView.show();
+			  }
+	        },
+	        
+	        // 创建关闭按钮视图
+	        createComplaintCloseView(pos) {
+	          complaintCloseView = new plus.nativeObj.View('complaint-close', {
+	            left: pos.closeLeft + 'px',
+	            top: pos.closeTop + 'px',
+	            width: pos.closeSize + 'px',
+	            height: pos.closeSize + 'px',
+	            zIndex: 10000
+	          }, [
+	            {
+	              tag: 'img',
+	              id: 'close',
+	              src: '/static/images/ad/complaints_suggestions_close.png',
+	              position: {
+	                left: '0px',
+	                top: '0px',
+	                width: pos.closeSize + 'px',
+	                height: pos.closeSize + 'px'
+	              }
+	            }
+	          ]);
+	          this.bindComplaintCloseViewClick();
+			  if (!pos.hidden) {
+				 complaintCloseView.show();
+			  }
+	        },
+	        
+	        // 检查并更新浮标位置
+	        checkAndUpdateComplaintPosition() {
+	          // #ifdef APP-PLUS
+	          if (!complaintView || !complaintCloseView) return;
+	          
+	          try {
+	            const pages = getCurrentPages();
+	            if (pages && pages.length > 0) {
+	              const curPage = pages[pages.length - 1];
+	              const currentRoute = curPage.route || '';
+	              // 如果路由发生变化,更新位置
+	              if (currentRoute !== lastRoute) {
+	                //console.log('路由变化:', lastRoute, '->', currentRoute);
+	                lastRoute = currentRoute;
+	                this.updateComplaintFloatPosition();
+	              }
+	            }
+	          } catch (err) {
+	            console.error('检查路由失败:', err);
+	          }
+	          // #endif
+	        },
+	        
+	        // 启动位置检查定时器
+	        startComplaintPositionCheck() {
+	          // #ifdef APP-PLUS
+				  // 清除旧定时器
+				  if (complaintPositionTimer) {
+					clearInterval(complaintPositionTimer);
+				  }
+				  // 立即检查一次
+				  this.checkAndUpdateComplaintPosition();
+				  
+				  // 每500ms检查一次路由变化
+				  complaintPositionTimer = setInterval(() => {
+					this.checkAndUpdateComplaintPosition();
+				  }, 500);
+	          // #endif
+	        },
+	        
+	        // 停止位置检查定时器
+	        stopComplaintPositionCheck() {
+	          // #ifdef APP-PLUS
+				  if (complaintPositionTimer) {
+					clearInterval(complaintPositionTimer);
+					complaintPositionTimer = null;
+				  }
+	          // #endif
+	        },
+	        
+	        // 更新浮标位置
+	        updateComplaintFloatPosition() {
+	          // #ifdef APP-PLUS
+				  if (!complaintView || !complaintCloseView) return;
+				  const pos = this.getComplaintPosition();
+				  // 隐藏旧视图
+				  complaintView.hide();
+				  complaintCloseView.hide();
+				  //console.log('更新浮标位置 - marginBottom:', pos.marginBottom, 'top:', pos.top, 'route:', lastRoute);
+				  // 重新创建视图(使用新位置)
+				  this.createComplaintMainView(pos);
+				  this.createComplaintCloseView(pos);
+	          // #endif
+	        },
+	        
+	        // 启动页关闭后创建浮标
+	        createComplaintFloatAfterSplash() {
+	          // #ifdef APP-PLUS
+	          // 避免重复创建
+	          if (complaintView) return;
+	          
+	          // 延迟创建,确保启动页完全关闭
+	          setTimeout(() => {
+	            this.createComplaintFloat();
+	          }, 300);
+	          // #endif
+	        },
+	        
+	    // 创建投诉建议浮标
+	    createComplaintFloat() {
+	          // #ifdef APP-PLUS
+				  // 避免重复创建
+				  if (complaintView) return;
+			
+				  plus.navigator.getStatusbarHeight(); // 确保 plus 已初始化
+			
+				  // 初始化路由记录
+				  try {
+					const pages = getCurrentPages();
+					if (pages && pages.length > 0) {
+					  const curPage = pages[pages.length - 1];
+					  lastRoute = curPage.route || '';
+					}
+				  } catch (err) {
+					console.error('初始化路由失败:', err);
+				  }
+			
+				  const pos = this.getComplaintPosition();
+				  viewLeft = pos.left;
+				  viewTop = pos.top;
+			
+				  // 创建主图标和关闭按钮
+				  this.createComplaintMainView(pos);
+				  this.createComplaintCloseView(pos);
+				  
+				  // 启动位置检查
+				  this.startComplaintPositionCheck();
+	          // #endif
+	        },
+		handlePushMessage(res) {  //unipush2.0
+			const that = this;
+			console.log("qxj handlePushMessage",res);
+			if (res.type == 'click') {  //unipush2.0在线推送 如果需要跳转app内指定页面,则自己实现下方的跳转代码。
+				if (this.$isLogin()) {
+					const url=this.$getCurrentPage();
+					console.log("qxj handlePushMessage click url",url);
+					const isOnLaunch = uni.getStorageSync('onLaunch');
+					// 判断前一个页面路径是一样
+					const payloadData=JSON.parse(res.data.payload.data);
+					const flag = url.route && res.data.payload.url.indexOf(url.route);
+					const isIM=payloadData.type!=undefined && payloadData.type=='im';
+					
+					if(isIM){
+						if (isOnLaunch && isOnLaunch == 1) {
+							//offlineMsg=res.data.payload;
+							uni.removeStorageSync('onLaunch');
+						}else{
+							//console.log("qxj handlePushMessage payloadData",payloadData);
+							uni.$u.throttle(() => that.notifyGoToChat(payloadData), 2000);
+						}
+					}
+					else{
+						if (isOnLaunch && isOnLaunch == 1) {
+							uni.showLoading({ title: '处理中..' });
+							setTimeout(() => {
+								uni.hideLoading();
+								if (flag == -1) {
+									uni.navigateTo({
+										url: res.data.payload.url,
+										success: function () {
+											uni.removeStorageSync('openUrl');
+											that.setReadAll(res.data.payload.url);
+										}
+									});
+								} 
+								else {
+									uni.redirectTo({
+										url: res.data.payload.url,
+										success: function () {
+											uni.removeStorageSync('openUrl');
+											that.setReadAll(res.data.payload.url);
+										}
+									});
+								}
+							}, 1000);
+						} 
+						else {
+							uni.hideLoading();
+							if (flag == -1) {
+								uni.navigateTo({
+									url: res.data.payload.url,
+									success: function () {
+										uni.removeStorageSync('openUrl');
+										that.setReadAll(res.data.payload.url);
+									}
+								});
+							} else {
+								uni.redirectTo({
+									url: res.data.payload.url,
+									success: function () {
+										uni.removeStorageSync('openUrl');
+										that.setReadAll(res.data.payload.url);
+									}
+								});
+							}
+						}			
+					}
+				}
+			} 
+			if (res.type == 'receive') { //监听在线推送消息,若云函数设置了 "force_notification":true,则不会触发此 receive。
+				// const pages = getCurrentPages();
+				// const url = pages[ pages.length - 1];
+				const url=this.$getCurrentPage();
+				console.log("qxj receive url",url);
+				if(url && (url.route!="pages_im/pages/conversation/chating/index" || url.route!="pages_im/pages/conversation/chating1/index") ){
+					// 检查应用是否在前台
+					const appIsOnShow = uni.getStorageSync('appIsOnShow');
+					
+					//if(!!appIsOnShow){  // 应用在前台,处理消息但不显示通知
+					    let payload=res.data.payload;
+						if(!!payload && !!payload.data){
+							 let payloadData=JSON.parse(payload.data);
+							 if(payloadData.contentType && payloadData.contentType==1601 && appIsOnShow){
+							 	return;
+							 }
+						}
+						console.log("qxj payload",payload);
+						uni.createPushMessage({
+							title: res.data.title,
+							content: res.data.content,
+							payload: res.data.payload,
+							when: new Date(),
+							icon:"",
+							sound: 'system', // 默认值为system
+							category: res.data.category,
+							success: () => {
+								console.log('创建在线推送消息成功: ');
+								this.$store.commit('newMsg/SET_UPDATATIME', new Date().getTime());
+							},
+							fail: (err) => {
+								console.log('创建在线推送消息失败: ', err);
+							}
+						});
+					//}
+					
+					plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
+						  if (widgetInfo.visible) {
+							// 应用在前台,处理消息但不显示通知
+							uni.createPushMessage({
+								title: res.data.title,
+								content: res.data.content,
+								payload: res.data.payload,
+								sound: 'system', // 默认值为system
+								category: res.data.category,
+								success: () => {
+									console.log('创建在线推送消息成功: ');
+									this.$store.commit('newMsg/SET_UPDATATIME', new Date().getTime());
+								},
+								fail: (err) => {
+									console.log('创建在线推送消息失败: ', err);
+								}
+							});
+						  } else {
+							// 应用在后台,可以显示通知(如果需要)
+							
+						  }
+					 });
+				}
+			}
+		},
+	
+		handlerLaunchMsg() {   // 处理Launch信息
+			   let that=this;
+			   // 监听通知点击事件
+		       plus.push.addEventListener('click', function (msg) { //unipush2.0 离线推送 (小米)
+		            console.log('应用通过点击通知启动:', msg);
+		            let newServerMsg=msg.payload;
+					offlineMsg=msg;
+		       });
+		        // 获取启动时的通知
+				plus.push.getClientInfoAsync(function(info) {  //unipush2.0连离线推送/点击桌面启动 (小米)
+					//console.log("qxj getClientInfoAsync",info);
+					if(info.id && info.id=="unipush"){  //unipush1.0 荣耀离线推送
+						offlineMsg=info;
+					}
+					if (info.title && info.content && info.payload) {
+						uni.switchTab({url: 'pages_im/pages/conversation/conversationList/index'});
+					}
+				    if (info.launch && info.launch.payload) {
+				        let newServerMsg = info.launch.payload;
+				        console.log('应用通过通知启动:', info);
+						uni.switchTab({url: 'pages_im/pages/conversation/conversationList/index'});
+						//uni.$u.throttle(() => that.notifyGoToChat(newServerMsg), 1000);
+				    }
+				}, function(err) {
+				       console.error("Error getting client info:", err);
+				});
+		 },
+		
+		getSystemFontScale: function () {
+				let scale = 1;
+				if (uni.getSystemInfoSync) {
+					let systemInfo = uni.getSystemInfoSync();
+					if (systemInfo.fontSizeSetting) {
+						scale = systemInfo.fontSizeSetting / 16; // 16 是默认字体大小
+					}
+				}
+				return scale;
+		},
+		adjustFontSize: function () {
+			let scale = this.getSystemFontScale();
+			let rootElement = document.documentElement;
+			rootElement.style.fontSize = 16 * scale + 'px';
+		},
+	    setGlobalIMlistener() {
+	    	const kickHander = (message) => {
+	    		toastWithCallback(message, () => {
+	    			uni.removeStorage({ key: 'IMToken' });
+	    			uni.removeStorage({ key: 'BusinessToken' });
+	    			callingModule?.endCall();
+	    			meetingModule?.endCall();
+	    			Igexin.unbindAlias(this.storeCurrentUserID);
+	    			uni.$emit('loginOut');
+	    		});
+	    	};
+			
+	        let that=this;
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnKickedOffline, (data) => {
+	    		kickHander('您的账号在其他设备登录,请重新登录!');
+	    		//that.removeImData();
+	    		//that.openImLogin();
+	    	});
+	    	
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnUserTokenExpired, (data) => {
+	    		kickHander('您的登录已过期,请重新登录!');
+	    		//that.removeImData();
+	    		//that.openImLogin();
+	    	});
+	    	
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnUserTokenInvalid, (data) => {
+	    		kickHander('您的登录已无效,请重新登录!');
+	    		//that.removeImData();
+	    		//that.openImLogin();
+	    	});
+	    
+	    	// sync
+			let lastSyncTime = 0;
+	    	const syncStartHandler = ({ data }) => {
+	    		this.$store.commit('user/SET_IS_SYNCING', true);
+	    		this.$store.commit('user/SET_REINSTALL', data);
+				this.$store.commit('user/SET_PROGRESS', 0);
+				uni.setStorageSync("imSyncFinish",0);
+	    	};
+			
+	    	const syncProgressHandler = ({ data }) => {
+				const now = Date.now();
+				if (now - lastSyncTime > 200 || data >= 100) {
+					lastSyncTime = now;
+					console.log("qxj syncProgressHandler",data);
+					this.$store.commit('user/SET_PROGRESS', data);
+				}
+	    	};
+			
+	    	const syncFinishHandler = () => {
+	    		this.$store.dispatch('conversation/getConversationList');
+	    		this.$store.dispatch('contact/getFriendList');
+	    		this.$store.dispatch('contact/getGrouplist');
+	    		this.$store.dispatch('conversation/getUnReadCount');
+	    		this.$store.commit('user/SET_IS_SYNCING', false);
+				this.$store.commit('user/SET_PROGRESS', 100);
+				//console.log("qxj syncFinishHandler offlineHandleNewMsg",offlineHandleNewMsg);
+				//console.log("qxj syncFinishHandler offlineMsg",offlineMsg);
+				uni.setStorageSync("imSyncFinish",1);
+	    		if(offlineMsg!=null){
+	    		    uni.$u.throttle(() => this.notifyGoToChat(offlineHandleNewMsg), 1000);
+	    		}
+	    		uni.hideLoading();
+	    	};
+			
+	    	const syncFailedHandler = () => {
+	    		uni.hideLoading();
+	    		//uni.$u.toast('同步消息失败');
+	    		this.$store.dispatch('conversation/getConversationList');
+	    		this.$store.dispatch('conversation/getUnReadCount');
+	    		this.$store.commit('user/SET_IS_SYNCING', false);
+				this.$store.commit('user/SET_PROGRESS', 0);
+				uni.setStorageSync("imSyncFinish",0);
+	    	};
+			
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnSyncServerStart, syncStartHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnSyncServerFinish, syncFinishHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnSyncServerFailed, syncFailedHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnSyncServerProgress, syncProgressHandler);
+			
+			const setStateStart = () =>  {
+			    connectStart = 0;
+			};
+			const setStateSuccess= () => {
+				IMSDK.asyncApi('getSignalingInvitationInfoStartApp', IMSDK.uuid()).then(({ data }) => {
+					callingModule.launchLiveChat(data);
+				});
+				connectStart = 1;
+			};
+			const  setStateError= () => {
+				connectStart = -1;
+			};
+			
+			IMSDK.subscribe(IMSDK.IMEvents.OnConnecting, setStateStart);
+			//IMSDK.subscribe(IMSDK.IMEvents.OnConnectSuccess, setStateSuccess);
+			IMSDK.subscribe(IMSDK.IMEvents.OnConnectFailed, setStateError);
+			
+	    	// self
+	    	const selfInfoUpdateHandler = ({ data }) => {
+				this.$store.commit('user/SET_SELF_INFO', {
+	    			...this.storeSelfInfo,
+	    			...data
+	    		});
+	    		this.updateMessageNicknameAndFaceUrl({
+	    			sendID: data.userID,
+	    			senderNickname: data.nickname,
+	    			senderFaceUrl: data.faceURL
+	    		});
+	    	};
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnSelfInfoUpdated, selfInfoUpdateHandler);
+	    	
+	    	// message
+	    	const newMessagesHandler = ({ data }) => {
+				//console.log("-----qxj newMessagesHandler:",data);
+	    		if(offlineMsg!=null){
+	    			offlineHandleNewMsg=data[0];
+	    		}
+	    		if (this.storeIsSyncing) {
+	    			return;
+	    		}	
+				if(Array.isArray(data)){
+					data.forEach(this.handleNewMessage);
+				}else{
+					this.handleNewMessage(data);
+				}
+	    	};
+	    	const offlineMessageHandler = ({ data }) => {
+				console.log("-----qxj offlineMessageHandler:"+JSON.stringify(data));
+	    	};
+	    	const offlineMessagesHandler = ({ data }) => {
+	    		//console.log("------qxj offlineMessagesHandler:"+JSON.stringify(data));
+	    		if (this.storeIsSyncing) {
+	    			return;
+	    		}
+	    		data.forEach(this.handleOfflineMessages);
+	    	};
+	    	const c2cReadReceiptHandler = ({ data: receiptList }) => {
+	    		if (receiptList[0].userID !== this.storeCurrentConversation.userID) {
+	    			return;
+	    		}
+	    		receiptList.forEach((item) => {
+	    			item.msgIDList.forEach((msgID) => {
+	    				this.updateOneMessage({
+	    					message: {
+	    						clientMsgID: msgID
+	    					},
+	    					type: UpdateMessageTypes.KeyWords,
+	    					keyWords: {
+	    						key: 'isRead',
+	    						value: true
+	    					}
+	    				});
+	    			});
+	    		});
+	    	};
+	    	const groupReadReceiptHandler = ({ data }) => {
+	    		if (data.conversationID !== this.storeCurrentConversation.conversationID) {
+	    			return;
+	    		}
+	    		data.groupMessageReadInfo.map((receipt) => {
+	    			const oldMessage = this.storeHistoryMessageList.find((msg) => msg.clientMsgID === receipt.clientMsgID);
+	    			if (oldMessage) {
+	    				uni.$emit(PageEvents.GroupMessageReceipt, receipt);
+	    				const newMessage = {
+	    					...oldMessage,
+	    					isRead: true,
+	    					attachedInfoElem: {
+	    						...oldMessage.attachedInfoElem,
+	    						groupHasReadInfo: {
+	    							hasReadCount: receipt.hasReadCount,
+	    							unreadCount: receipt.unreadCount
+	    						}
+	    					}
+	    				};
+	    				console.log(newMessage);
+	    				this.updateOneMessage({ message: newMessage });
+	    			}
+	    		});
+	    		console.log(data);
+	    	};
+	    	const newRecvMessageRevokedHandler = ({ data: revokedMessage }) => {
+	    		if (!this.storeCurrentConversation.conversationID) {
+	    			return;
+	    		}
+	    		this.updateOneMessage({
+	    			message: { clientMsgID: revokedMessage.clientMsgID },
+	    			type: UpdateMessageTypes.KeyWords,
+	    			keyWords: [
+	    				{
+	    					key: 'contentType',
+	    					value: MessageType.RevokeMessage
+	    				},
+	    				{
+	    					key: 'notificationElem',
+	    					value: {
+	    						detail: JSON.stringify(revokedMessage)
+	    					}
+	    				}
+	    			]
+	    		});
+	    		this.updateQuoteMessageRevoke({
+	    			clientMsgID: revokedMessage.clientMsgID
+	    		});
+	    	};
+	    	const inputStatusChanged = ({ data }) => {
+	    		if (data.userID === this.storeCurrentConversation.userID && data.conversationID === this.storeCurrentConversation.conversationID) {
+	    			if (data.platformIDs.length > 0) {
+	    				uni.$emit(PageEvents.TypingUpdate);
+	    			}
+	    		}
+	    	};
+	    
+	        IMSDK.subscribe(IMSDK.IMEvents.OnRecvOfflineNewMessage, offlineMessageHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnRecvOfflineNewMessages, offlineMessagesHandler);
+	    	
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnRecvNewMessages, newMessagesHandler);
+	    	IMSDK.subscribe("OnInputStatusChanged", inputStatusChanged);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnRecvC2CReadReceipt, c2cReadReceiptHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnRecvGroupReadReceipt, groupReadReceiptHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnNewRecvMessageRevoked, newRecvMessageRevokedHandler);
+	    
+	    	// friend
+	    	const friendInfoChangeHandler = ({ data }) => {
+	    		uni.$emit(IMSDK.IMEvents.OnFriendInfoChanged, { data });
+	    		if (data.userID === this.storeCurrentConversation?.userID) {
+	    			this.updateMessageNicknameAndFaceUrl({
+	    				sendID: data.userID,
+	    				senderNickname: data.remark || data.nickname,
+	    				senderFaceUrl: data.faceURL
+	    			});
+	    			this.$store.commit('conversation/SET_CURRENT_CONVERSATION', { ...this.storeCurrentConversation, showName: data.remark || data.nickname });
+	    		}
+	    		//console.log(this.storeConversationList);
+	    		this.updateFriendInfo({
+	    			friendInfo: data
+	    		});
+	    	};
+	    	const friendAddedHandler = ({ data }) => {
+	    		this.pushNewFriend(data);
+	    	};
+	    	const friendDeletedHander = ({ data }) => {
+	    		this.updateFriendInfo({
+	    			friendInfo: data,
+	    			isRemove: true
+	    		});
+	    	};
+	    
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnFriendInfoChanged, friendInfoChangeHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnFriendAdded, friendAddedHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnFriendDeleted, friendDeletedHander);
+	    
+	    	// blacklist
+	    	const blackAddedHandler = ({ data }) => {
+	    		this.pushNewBlack(data);
+	    	};
+	    	
+	    	const blackDeletedHandler = ({ data }) => {
+	    		this.updateBlackInfo({
+	    			blackInfo: data,
+	    			isRemove: true
+	    		});
+	    	};
+	    
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnBlackAdded, blackAddedHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnBlackDeleted, blackDeletedHandler);
+	    
+	    	// group
+	    	const joinedGroupAddedHandler = ({ data }) => {
+	    		uni.$emit(IMSDK.IMEvents.OnJoinedGroupAdded, { data });
+	    		this.pushNewGroup(data);
+	    	};
+			
+	    	const joinedGroupDeletedHandler = ({ data }) => {
+	    		uni.$emit(IMSDK.IMEvents.OnJoinedGroupDeleted, { data });
+	    		this.updateGroupInfo({
+	    			groupInfo: data,
+	    			isRemove: true
+	    		});
+	    	};
+	    	const groupInfoChangedHandler = ({ data }) => {
+	    		this.updateGroupInfo({
+	    			groupInfo: data
+	    		});
+	    	};
+	    	const groupMemberInfoChangedHandler = ({ data }) => {
+	    		uni.$emit(IMSDK.IMEvents.OnGroupMemberInfoChanged, { data });
+	    		if (data.groupID === this.storeCurrentConversation?.groupID) {
+	    			this.updateMessageNicknameAndFaceUrl({
+	    				sendID: data.userID,
+	    				senderNickname: data.nickname,
+	    				senderFaceUrl: data.faceURL
+	    			});
+	    			this.updateCurrentMemberInGroup(data);
+	    		}
+	    	};
+	    
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnJoinedGroupAdded, joinedGroupAddedHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnJoinedGroupDeleted, joinedGroupDeletedHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnGroupInfoChanged, groupInfoChangedHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnGroupMemberInfoChanged, groupMemberInfoChangedHandler);
+			
+			// application
+	    	const friendApplicationNumHandler = ({ data }) => {
+				console.log("qxj friendApplicationNumHandler");
+	    		const isRecv = data.toUserID === this.storeCurrentUserID;
+	    		if (isRecv) {
+	    			this.pushNewRecvFriendApplition(data);
+	    		} else {
+	    			this.pushNewSentFriendApplition(data);
+	    		}
+	    	};
+	    	const friendApplicationAccessHandler = ({ data }) => {
+				console.log("qxj friendApplicationAccessHandler");
+	    		const isRecv = data.toUserID === this.storeCurrentUserID;
+	    		if (isRecv) {
+	    			this.updateRecvFriendApplition({
+	    				application: data
+	    			});
+	    		} else {
+	    			this.updateSentFriendApplition({
+	    				application: data
+	    			});
+	    		}
+	    	};
+	    	const groupApplicationNumHandler = ({ data }) => {
+				console.log("qxj groupApplicationNumHandler");
+	    		const isRecv = data.userID !== this.storeCurrentUserID;
+	    		if (isRecv) {
+	    			this.pushNewRecvGroupApplition(data);
+	    		} else {
+	    			this.pushNewSentGroupApplition(data);
+	    		}
+	    	};
+	    	const groupApplicationAccessHandler = ({ data }) => {
+				console.log("qxj groupApplicationAccessHandler");
+	    		const isRecv = data.userID !== this.storeCurrentUserID;
+	    		if (isRecv) {
+	    			this.updateRecvGroupApplition({application: data});
+	    		} else {
+	    			this.updateSentGroupApplition({application: data});
+	    		}
+	    	};
+	    
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnFriendApplicationAdded, friendApplicationNumHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnFriendApplicationAccepted, friendApplicationAccessHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnFriendApplicationRejected, friendApplicationAccessHandler);
+			
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnGroupApplicationAdded, groupApplicationNumHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnGroupApplicationAccepted, groupApplicationAccessHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnGroupApplicationRejected, groupApplicationAccessHandler);
+	    
+	    	// conversation
+	    	const totalUnreadCountChangedHandler = ({ data }) => {
+	    		if (this.storeIsSyncing) {
+	    			return;
+	    		}
+	    		this.$store.commit('conversation/SET_UNREAD_COUNT', data);
+	    	};
+	    	const newConversationHandler = ({ data }) => {
+	    		console.log("qxj newConversationHandler");
+	    		if (this.storeIsSyncing) {
+	    			return;
+	    		}
+	    		const result = [...data, ...this.storeConversationList];
+	    		this.$store.commit('conversation/SET_CONVERSATION_LIST', conversationSort(result));
+	    	};
+	    	const conversationChangedHandler = ({ data }) => {
+	    		if (this.storeIsSyncing) {
+	    			return;
+	    		}
+	    		let filterArr = [];
+	    		//console.log("qxj conversationChangedHandler:::",data);
+	    		const chids = data.map((ch) => ch.conversationID);
+	    		filterArr = this.storeConversationList.filter((tc) => !chids.includes(tc.conversationID));
+	    		const idx = data.findIndex((c) => c.conversationID === this.storeCurrentConversation.conversationID);
+	    		if (idx !== -1) this.$store.commit('conversation/SET_CURRENT_CONVERSATION', data[idx]);
+	    		const result = [...data, ...filterArr];
+	    		this.$store.commit('conversation/SET_CONVERSATION_LIST', conversationSort(result));
+	    	};
+	    
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnTotalUnreadMessageCountChanged, totalUnreadCountChangedHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnNewConversation, newConversationHandler);
+	    	IMSDK.subscribe(IMSDK.IMEvents.OnConversationChanged, conversationChangedHandler);
+	    	
+	    	const insertInCurrentConversation = (newServerMsg) => {
+	    		return newServerMsg.sendID === this.$store.getters.storeCurrentConversation.userID || newServerMsg.recvID === this.$store.getters.storeCurrentConversation.userID;
+	    	};
+	    
+	    	const onNativeCallEndHandler = async ({ invitation, duration, status }) => {
+	    		uni.$emit(PageEvents.NativeCallEnd);
+	    		if (!status || invitation.groupID) {
+	    			return;
+	    		}
+	    		const type = invitation.mediaType === 'video' ? CustomType.VideoCall : CustomType.VoiceCall;
+	    		const customData = {
+	    			customType: CustomType.Call,
+	    			data: { type, duration: secFormat(duration), status }
+	    		};
+	    		
+	    		const nativeCallList = uni.getStorageSync(`${this.$store.getters.storeCurrentUserID}_nativecall`) || [];
+	    		const isSelf = invitation.inviterUserID === this.$store.getters.storeCurrentUserID;
+	    		const data = { ...invitation, duration, isSelf, type, time: new Date().getTime() };
+	    		uni.setStorage({
+	    			key: `${this.$store.getters.storeCurrentUserID}_nativecall`,
+	    			data: [...nativeCallList, data]
+	    		});
+	    		const message = await IMSDK.asyncApi(IMMethods.CreateCustomMessage, IMSDK.uuid(), {
+	    			data: JSON.stringify(customData),
+	    			extension: '',
+	    			description: 'RTC'
+	    		});
+	    		const recvID = invitation.inviteeUserIDList[0];
+	    		IMSDK.asyncApi(IMSDK.IMMethods.InsertSingleMessageToLocalStorage, IMSDK.uuid(), {
+	    			message,
+	    			recvID,
+	    			sendID: invitation.inviterUserID
+	    		}).then(({ data }) => {
+	    				if (insertInCurrentConversation(data)) {
+	    					this.$store.dispatch('message/pushNewMessage', data);
+	    					setTimeout(() => uni.$emit(PageEvents.ScrollToBottom, true));
+	    				}
+	    			}).catch((err) => {
+	    				console.log(err);
+	    			});
+	    	};
+	    	const onNativeInviteHandler = async (data) => {
+	    		// uni.$u.toast("onNativeInviteHandler")
+	    		uni.$u.route('/pages_im/pages/common/contactChoose/index', {
+	    			type: ContactChooseTypes.InviteMeeting,
+	    			forwardMessage: encodeURIComponent(JSON.stringify(data.data))
+	    		});
+	    	};
+	    	IMSDK.subscribe('onNativeCallEnd', onNativeCallEndHandler);
+	    	IMSDK.subscribe('Native_InviteUser', onNativeInviteHandler);
+			
+	    },
+		initOpenIm() {
+			innerAudioContext = uni.createInnerAudioContext();
+			innerAudioContext.autoplay = false;
+			innerAudioContext.src = newMessage;
+			// #ifdef APP-PLUS
+			  Igexin.turnOnPush();
+			// #endif
+			this.setGlobalIMlistener();
+			this.tryLogin();
+			//this.testTryLogin("C63");
+		},
+		openImLogin() {
+			let that = this;
+			var uid="";
+			var nickName="";
+			var avatar="";
+			if(this.$companyUserIsLogin()){
+				var user = JSON.parse(uni.getStorageSync('companyUser'));
+				uid = 'C' + user.userId;
+				nickName=user.imNickName || user.nickName;
+				avatar=user.avatar;
+			}
+			else{
+				var user = JSON.parse(uni.getStorageSync('userInfo'));
+				uid = 'U' + user.userId;
+				nickName=user.nickName;
+				avatar=user.avatar;
+			}
+			if(this.$isEmpty(avatar)){
+				avatar="https://cos.his.cdwjyyh.com/fs/20250519/4e7c1c2de4b54ec4aaf1047394592a42.png";
+			}
+			let IMToken = uni.getStorageSync('IMToken');
+			let IMUserID = uid;
+			let reqData = { userID:uid, nickName:nickName, avatar:avatar };
+			openImLoginApi(reqData,IMToken,IMUserID,function (token) {
+				    setTimeout(()=>{
+						that.tryLogin();
+					},100);
+				},
+				function () {
+					uni.$u.toast('IM登录失败!');
+				}
+			);
+		},
+		
+		tryLogin() {
+				  const initStore = () => {
+						this.$store.dispatch('user/initCache');
+						this.$store.dispatch('user/getSelfInfo');
+						this.$store.dispatch('conversation/getConversationList');
+						this.$store.dispatch('conversation/getUnReadCount');
+						this.$store.dispatch("contact/getFriendList");
+						this.$store.dispatch("contact/getGrouplist");
+						
+						//this.$store.dispatch('contact/getBlacklist');
+						if(!this.$isIos()){
+							this.$store.dispatch('contact/getRecvFriendApplications');
+							this.$store.dispatch('contact/getSentFriendApplications');
+							this.$store.dispatch('contact/getRecvGroupApplications');
+							this.$store.dispatch('contact/getSentGroupApplications');
+						}
+						// #ifdef APP-PLUS
+							 plus.navigator.closeSplashscreen();
+							 // 启动页关闭后创建浮标
+							 this.createComplaintFloatAfterSplash();
+						// #endif
+				  };
+			     let IMToken = uni.getStorageSync('IMToken');
+			     let IMUserID = uni.getStorageSync('IMUserID');
+				 //console.log("qxj IMToken:"+IMToken+" IMUserID:"+IMUserID);
+			   // #ifdef APP-PLUS
+				  getDbDir().then(async (path) => {
+							let platformID=uni.$u.os() === 'ios' ? 1 : 2;
+							const flag = await IMSDK.asyncApi(IMMethods.InitSDK, IMSDK.uuid(), {
+									systemType: 'uni-app',
+									platformID:platformID,
+									apiAddr: config.getApiUrl(), 
+									wsAddr: config.getWsUrl(), 
+									dataDir: path, // 数据存储路径
+									logLevel: 5,//正式环境2或者3 测试:5
+									logFilePath: path,
+									isLogStandardOutput: true  // 是否输出到控制台
+							 });
+							if (!flag) {
+								// #ifdef APP-PLUS
+									 plus.navigator.closeSplashscreen();
+									 // 启动页关闭后创建浮标
+									 this.createComplaintFloatAfterSplash();
+								// #endif
+								uni.$u.toast('初始化IMSDK失败!');
+								return;
+							}	
+							//1	未登录  2 登录中  3  已登录
+							const loginStatus = await IMSDK.asyncApi(IMSDK.IMMethods.GetLoginStatus, IMSDK.uuid());
+							if (loginStatus === 3) {
+								initStore();
+								return;
+							}
+							callingModule?.initModule();
+							if (IMToken && IMUserID) {
+							   await IMSDK.asyncApi(IMSDK.IMMethods.Login, IMSDK.uuid(), { 
+								   userID: IMUserID, 
+								   token: IMToken,
+							   }).then(initStore).catch((err) => {
+									console.log('qxj initStore err:' + JSON.stringify(err));
+									uni.$u.toast('初始化IMSDK异常:'+JSON.stringify(err));
+									uni.removeStorage({ key: 'IMToken' });
+									// #ifdef APP-PLUS
+										 plus.navigator.closeSplashscreen();
+										 // 启动页关闭后创建浮标
+										 this.createComplaintFloatAfterSplash();
+									// #endif
+								});
+							} else { 
+								  if(this.$isLogin()){
+									 this.openImLogin();
+								  }
+								// #ifdef APP-PLUS
+									 plus.navigator.closeSplashscreen();
+									 // 启动页关闭后创建浮标
+									 this.createComplaintFloatAfterSplash();
+								// #endif
+							}
+						}).catch((err) => {
+							console.log('get dir failed');
+							console.log(err);
+							// #ifdef APP-PLUS
+								 plus.navigator.closeSplashscreen();
+								 // 启动页关闭后创建浮标
+								 this.createComplaintFloatAfterSplash();
+							// #endif
+						});
+			   
+			   // #endif
+			   // #ifdef H5
+					 console.log("qxj IMTokenUserId",IMToken,IMUserID);
+					 if (IMToken && IMUserID) {
+						 IMSDK.asyncApi(IMSDK.IMMethods.Login, IMSDK.uuid(), {
+							userID: IMUserID, 
+							token: IMToken,
+							platformID:5,
+							logLevel: 2, 
+							apiAddr: config.getApiUrl(),
+							wsAddr: config.getWsUrl(), 
+						 }).then(initStore).catch((err) => {
+							  console.log('qxj initStore:',err);
+							  uni.removeStorage({ key: 'IMToken' });
+						 });
+						 return;
+					 }
+					 else{
+						 if(this.$isLogin()){
+							 this.openImLogin();
+						 }
+					 }
+				// #endif
+		},
+		
+		testTryLogin(uid){
+			uni.setStorageSync('IMToken',null);
+			let IMToken = uni.getStorageSync('IMToken');
+			let IMUserID = uid;
+			let reqData = { userID:uid, nickName:"" };
+			let that=this;
+			testImLoginApi(reqData,IMToken,IMUserID,function (token) {
+				    setTimeout(()=>{
+						that.tryLogin();
+					},100);
+				},
+				function () {
+					uni.$u.toast('IM登录失败!');
+				}
+			);
+		},
+		
+		async newMessageNotify(newServerMsg) {
+			if (this.storeIsSyncing) {
+				return;
+			}
+			//console.log("qxj newMessageNotify1");
+			const disableNotify = uni.getStorageSync(`${this.storeCurrentUserID}_DisableNotify`);
+			if (disableNotify || this.storeSelfInfo.globalRecvMsgOpt !== MessageReceiveOptType.Nomal) {
+				return;
+			}
+			//console.log("qxj newMessageNotify2");
+			let cveItem = [...this.storeConversationList, ...cacheConversationList].find((conversation) => {
+				if (newServerMsg.sessionType === SessionType.WorkingGroup) {
+					return newServerMsg.groupID === conversation.groupID;
+				}
+				return newServerMsg.sendID === conversation.userID;
+			});
+			//console.log("qxj newMessageNotify3");
+			if (!cveItem) {
+				try {
+					const { data } = await IMSDK.asyncApi(IMSDK.IMMethods.GetOneConversation, IMSDK.uuid(), {
+						sourceID: newServerMsg.groupID || newServerMsg.sendID,
+						sessionType: newServerMsg.sessionType
+					});
+					cveItem = data;
+					cacheConversationList = [...cacheConversationList, data];
+				} catch (e) {
+					return;
+				}
+			}
+			//console.log("qxj newMessageNotify4");
+			if (cveItem.recvMsgOpt !== MessageReceiveOptType.Normal) {
+				return;
+			}
+            //console.log("qxj newMessageNotify5");
+			const notificationFun = () => {
+				const isSelf = newServerMsg.sendID === this.$store.getters.storeCurrentUserID;
+				if (isSelf) return;
+				// const pages = getCurrentPages();
+				// const url = pages[ pages.length - 1];
+				const url=this.$getCurrentPage();
+				if(url&& (url.route=="pages_im/pages/conversation/conversationList/index" 
+				  || url.route=="pages_im/pages/conversation/chating/index") ){
+					return;
+				}
+				
+				// uni.createPushMessage({
+				// 	content: `${newServerMsg.senderNickname}: ${parseMessageByType(newServerMsg)}`,
+				// 	payload: {
+				// 		sessionType: newServerMsg.sessionType,
+				// 		sourceID: newServerMsg.groupID || newServerMsg.sendID,
+				// 	}
+				// });
+				
+				const isSingle = newServerMsg.groupID ? false : true;
+				console.log(this.storeGroupList, newServerMsg);
+				const group = this.storeGroupList.filter((group) => group.groupID === newServerMsg.groupID);
+				const title = isSingle ? newServerMsg.senderNickname : group[0].groupName;
+				const desc = parseMessageByType(newServerMsg);
+				console.log('notification', title, desc);
+				
+				// notificationIntance = new NotificationUtil();
+				// let tickerTips="通知提示";
+				// let notifyId=10001;
+				// let config={ title, desc,tickerTips,notifyId };
+				// notificationIntance.createNotification(config);
+				
+				// setTimeout(()=>{
+				// 	notificationIntance.clearNotification(10001);
+				// },10000);
+				
+				// notification.showNotice(0, title, desc, () => {
+				// 	prepareConversationState(cveItem);
+				// });
+			};
+			//notificationFun();
+			const platform = uni.getSystemInfoSync().platform;
+			if (platform == 'ios') {
+				if (this.storeSelfInfo.allowVibration === 1) {
+					plus.device.vibrate();
+				}
+				if (this.storeSelfInfo.allowBeep === 1) {
+					innerAudioContext.play();
+					// plus.device.beep();
+				}
+			} 
+			else if (platform == 'android') {
+				if (this.storeSelfInfo.allowVibration === 1) {
+					plus.device.vibrate(500);
+				}
+				if (this.storeSelfInfo.allowBeep === 1) {
+					let main = plus.android.runtimeMainActivity();
+					let RingtoneManager = plus.android.importClass('android.media.RingtoneManager');
+					let uri = RingtoneManager.getActualDefaultRingtoneUri(main, RingtoneManager.TYPE_NOTIFICATION);
+					let MediaPlayer = plus.android.importClass('android.media.MediaPlayer');
+					let player = MediaPlayer.create(main, uri);
+					player.setLooping(false);
+					player.prepare();
+					player.start();
+				}
+			}
+		},
+		
+		async notifyGoToChat(newServerMsg){
+			console.log("qxj notifyGoToChat",newServerMsg);
+			if (this.storeIsSyncing) {
+				return;
+			}
+			offlineHandleNewMsg=null;
+			offlineMsg=null;
+			// const disableNotify = uni.getStorageSync(`${this.storeCurrentUserID}_DisableNotify`);
+			// if (disableNotify || this.storeSelfInfo.globalRecvMsgOpt !== MessageReceiveOptType.Nomal) {
+			//   return;
+			// }
+			let cveItem = [...this.storeConversationList, ...cacheConversationList].find((conversation) => {
+				if (newServerMsg.sessionType === SessionType.WorkingGroup) {
+					return newServerMsg.groupID === conversation.groupID;
+				}
+				return newServerMsg.sendID === conversation.userID;
+			});
+			console.log("qxj notifyGoToChat cveItem",cveItem);
+			if (!cveItem) {
+				try {
+					const { data } = await IMSDK.asyncApi(IMSDK.IMMethods.GetOneConversation, IMSDK.uuid(), {
+						sourceID: newServerMsg.groupID || newServerMsg.sendID,
+						sessionType: newServerMsg.sessionType
+					});
+					cveItem = data;
+					cacheConversationList = [...cacheConversationList, data];
+				} catch (e) {
+					return;
+				}
+			}
+			if (cveItem.recvMsgOpt !== MessageReceiveOptType.Normal) {
+				return;
+			}
+			const isSelf = newServerMsg.sendID === this.$store.getters.storeCurrentUserID;
+			if (isSelf) return;
+			// const pages = getCurrentPages();
+			// const url = pages[ pages.length - 1];
+			const url=this.$getCurrentPage();
+			if(url && (url.route=="pages_im/pages/conversation/chating/index" || url.route=="pages_im/pages/conversation/chating1/index") ){
+				return;
+			}
+		    this.handlerConversation(cveItem);
+			setTimeout(()=>{
+				prepareConversationState(cveItem);
+				//uni.removeStorageSync("serverMsgID");
+			},200);
+		},
+		
+	    handlerConversation(source){
+			let userId=source.userID;
+			let isDoctor=false;
+			if(userId!=undefined  && (userId!="" || userId.length>0)){
+				if(userId.indexOf('D')!==-1){
+					isDoctor=true;
+				}
+			}
+			if(this.$companyUserIsLogin() || !isDoctor){
+				this.$store.commit("timStore/setImType",1);
+			}
+			else{
+				let ex=source.ex;
+				if(source.latestMsg!=null && source.latestMsg!=''){
+					let latestMsg=JSON.parse(source.latestMsg);
+					if(!!latestMsg.ex && latestMsg.ex!=''){
+						ex=latestMsg.ex;
+					}
+				}
+				if(ex!=null || ex!=''){
+					try{
+						var json=JSON.parse(ex);
+						this.$store.commit("timStore/setImType", json.imType);
+						this.$store.commit("timStore/setOrderType", json.orderType);
+						this.$store.commit("timStore/setOrderId", json.orderId);
+						this.$store.commit("timStore/setFollowId", json.followId);
+						this.$store.commit("timStore/setType", json.type);
+					}
+					catch(e){
+						
+					}
+				}
+			}
+			this.$store.commit("timStore/setConversationID", source.conversationID);
+		},
+		
+		handleNewMessage(newServerMsg) {
+			if (this.inCurrentConversation(newServerMsg)) {
+				const isSingleMessage = newServerMsg.sessionType === SessionType.Single;
+				if (isSingleMessage) {
+					 uni.$u.throttle(() => uni.$emit(PageEvents.OnlineStateCheck), 2000);
+					 if(newServerMsg.ex!=null&&newServerMsg.ex!=''){
+						 var json=JSON.parse(newServerMsg.ex);
+						 this.$store.commit("timStore/setType",json.type);
+						 this.$store.commit("timStore/setImType", json.imType);
+						 this.$store.commit("timStore/setOrderId",json.orderId);
+						 this.$store.commit("timStore/setOrderType",json.orderType);
+						 this.$store.commit("timStore/setFollowId",json.followId);
+						 if(json.type==="finishInquiry"){
+						 	 this.$store.commit("timStore/setImType", 0);
+						 	 uni.navigateTo({ url: "/pages_order/pingOrder?orderId="+json.orderId })
+						 }
+						 else if(json.type==="startInquiry"){
+						 	
+						 }
+						 else if(json.type==="inquiry"){
+						 	
+						 }
+						 else if(json.type==="startFollow"){
+						 	
+						 }
+						 else if(json.type==="follow"){
+						 	
+						 }
+						 else if(json.type==="finishFollow"){
+						 	
+						 }
+						 else if(json.type==="startDrugReport"){
+						 	
+						 }
+						 else if(json.type==="finishDrugReport"){
+						 	
+						 }
+						 else if(json.type==="drugReport"){
+						 	
+						 }
+					 }
+				}
+				if (newServerMsg.contentType === MessageType.TypingMessage) {
+					if (isSingleMessage) {
+						uni.$emit(PageEvents.TypingUpdate);
+					}
+				} 
+				else {
+					if (newServerMsg.contentType != MessageType.RevokeMessage) {
+						newServerMsg.isAppend = true;
+						this.pushNewMessage(newServerMsg);
+						setTimeout(() => uni.$emit(PageEvents.ScrollToBottom, true));
+					} 
+					uni.$u.debounce(this.markConversationAsRead, 2000);
+				}
+			} 
+			else {
+				if (newServerMsg.contentType !== MessageType.TypingMessage) {
+					uni.$u.throttle(() => this.newMessageNotify(newServerMsg), 1000);
+					setTimeout(() => {
+						this.$store.dispatch('conversation/getUnReadCount');
+					},500);
+				}
+			}
+		},
+		
+		handleOfflineMessages(newServerMsg){  //后台运行
+			const isSingle = newServerMsg.groupID ? false : true;
+			const group = this.storeGroupList.filter((group) => group.groupID === newServerMsg.groupID);
+			const title = isSingle ? newServerMsg.senderNickname : group[0].groupName;
+			const desc = parseMessageByType(newServerMsg);
+			
+			// if(notification){
+			// 	notification.showNotice(0, title, desc, () => {
+			// 		  console.log('qxj showNotice:', title);
+			// 		  setTimeout(() => {
+			// 		  	uni.switchTab({url: 'pages_im/pages/conversation/conversationList/index'});
+			// 		  },2000);
+			// 	});
+			// }
+			
+			// const options = {
+			//      title: title,
+			//      content: desc,
+			//      payload: newServerMsg,  // 自定义参数,点击通知时传递给应用
+			//      sound: 'default', // 通知声音
+			//      cover: false, // 是否覆盖之前的通知
+			// 	 //when: new Date(),
+			// 	 icon:"",
+			// 	 extras: {
+			// 	   android: {
+			// 		 importance: "high", // 高优先级
+			// 		 channelId: "IM通知", // 必须配置通知渠道
+			// 		 smallIcon: "transparent",
+			// 		 showWhen: false, 
+			// 	   }
+			// 	}
+			//   };
+			//   plus.push.createMessage(options.content, options.payload, options);
+			
+			// let when=new Date();
+			// uni.createPushMessage({
+			// 	title:title,
+			// 	content:desc,
+			// 	payload: newServerMsg,
+			// 	cover: false, // 是否覆盖之前的通知
+			// 	when: new Date()
+			// });
+		
+		},
+		
+		inCurrentConversation(newServerMsg) {
+			switch (newServerMsg.sessionType) {
+				case SessionType.Single:
+					return (
+						newServerMsg.sendID === this.storeCurrentConversation.userID ||
+						(newServerMsg.sendID === this.storeCurrentUserID && newServerMsg.recvID === this.storeCurrentConversation.userID)
+					);
+				case SessionType.WorkingGroup:
+					return newServerMsg.groupID === this.storeCurrentConversation.groupID;
+				case SessionType.Notification:
+					return newServerMsg.sendID === this.storeCurrentConversation.userID;
+				default:
+					return false;
+			}
+		},
+		
+		markConversationAsRead() {
+			IMSDK.asyncApi(IMSDK.IMMethods.MarkConversationMessageAsRead, IMSDK.uuid(), this.storeCurrentConversation.conversationID);
+		},
+	
+		removeImData(){
+			uni.removeStorage({ key: 'IMToken' });
+			uni.removeStorage({ key: 'IMUserID' });
+		},
+		
+		async cidBindAlias(alias){
+			let registrationID=uni.getStorageSync("registrationID");
+			let params=[{
+				"cid":registrationID,
+				"alias":alias
+			}];
+			await uniPush.cidBindAlias(params);
+		},
+		runTimer() {
+			let that = this;
+			let dateNowDay = this.$dateFormatStr('YYYY-mm-dd', new Date());
+			let healthButler = uni.getStorageSync('healthButler');
+			let userInfo = uni.getStorageSync('userInfo');
+			console.log('------qxj dateStr:' + dateNowDay + ' healthButler:' + healthButler);
+			let dayNum = 0;
+			if (userInfo != null && userInfo.isAddQw) {
+				//已加过企微不在弹窗
+				return;
+			}
+			if (!!healthButler) {
+				healthButler = JSON.parse(healthButler);
+				dayNum = healthButler.dayNum;
+				if (healthButler.day == dateNowDay) {
+					//今天已经弹窗过 防止再弹窗
+					return;
+				}
+			}
+			if (dayNum == 0) {
+				//第一天下载App
+				if (this.$qconfig.healthTimer == null) {
+					this.$qconfig.healthTimer = setInterval(() => {
+						if (this.$qconfig.healthSeconds == healthSeconds) {
+							this.$qconfig.healthSeconds = 0;
+							healthButlerPop(function (data) {
+								if (data == 1) {
+									that.bdAdvFeedback();
+									clearInterval(that.$qconfig.healthTimer);
+								} else {
+									that.resetTimer();
+									that.$showLoginPage();
+								}
+							});
+						}
+						this.$qconfig.healthSeconds++;
+						//console.log("healthTimer tSeconds:"+this.$qconfig.healthSeconds);
+					}, 1000);
+				}
+			} 
+			else {
+				//第二天,第三天,,
+				healthButlerPop(function (data) {
+					if (data == 1) {
+						clearInterval(that.$qconfig.healthTimer);
+					} else {
+						that.$showLoginPage();
+					}
+				});
+			}
+		},
+		resetTimer() {
+			clearInterval(this.$qconfig.healthTimer);
+			this.$qconfig.healthTimer = null; //重置定时器
+			this.$qconfig.healthSeconds = healthSeconds;
+		},
+		getUserInfo(healthButler) {
+			getUserInfo().then((res) => {
+					if (res.code == 200) {
+						if (res.user != null) {
+							let registrationID=uni.getStorageSync("registrationID");
+							let userInfo = res.user;
+							uni.setStorageSync('userInfo', JSON.stringify(res.user));
+							if(!userInfo.jpushId || registrationID!=userInfo.jpushId){
+								uni.setStorageSync("registrationID","");
+							}
+							if(!!healthButler){
+								healthButler.isAddQw = userInfo.isAddQw;
+								uni.setStorageSync('healthButler', JSON.stringify(healthButler));
+							}
+						}
+					}else if(res.code == 500){
+						uni.showToast({
+							title:"当前用户被禁用",
+							icon:"none",
+							duration:5000
+						});
+						setTimeout(()=>{
+							uni.$emit('loginOut');
+						},5500);
+					}
+				},
+				(rej) => {}
+			);
+		},
+		
+		jumpToNotificationSettings() {
+			uni.request({
+				url: 'content://settings/action/notification_settings',
+				success: function (res) {
+					console.log('跳转成功:', res);
+				},
+				fail: function (err) {
+					console.log('跳转失败:', err);
+				}
+			});
+		},
+
+		bdAdvFeedback() {
+			// #ifdef APP-PLUS
+			if (this.$isAgreePrivacy()) {
+				if (plus.runtime.channel == 'baidu') {
+					let bdCmdType = uni.getStorageSync('bdCmdType');
+					if (this.$isEmpty(bdCmdType)) {
+						this.$registerIdCode('goToQw', 4, 0);
+					}
+				}
+			}
+			// #endif
+		},
+    
+		async checkPush() {
+			//检测是否开启推送通知
+			const notificationAuthorized = uni.getAppAuthorizeSetting().notificationAuthorized;
+			if (notificationAuthorized == 'denied') {
+				uni.showModal({
+					title: '提示',
+					content: '是否前往打开通知权限',
+					success: (res) => {
+						if (res.confirm) {
+							let status = this.checkPermission();
+							if (status !== 1) {
+								console.log('未开启权限');
+							}
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+			}
+		},
+		async checkPermission() {
+			let status = permision1.isIOS ? await permision1.requestIOS('push') : 
+			    await permision1.requestAndroid('android.permission.REQUEST_NOTIFICATION_POLICY');
+			if (status === null || status === 1) {
+				status = 1;
+			} else if (status === 2) {
+				uni.showModal({
+					content: '系统通知已关闭',
+					confirmText: '确定',
+					showCancel: false,
+					success: function (res) {}
+				});
+			} else if (status.code) {
+				uni.showModal({
+					content: status.message
+				});
+			} else {
+				uni.showModal({
+					content: '需要通知权限',
+					confirmText: '设置',
+					success: function (res) {
+						if (res.confirm) {
+							permision1.gotoAppSetting();
+						}
+					}
+				});
+			}
+			return status;
+		},
+		geth5Path() {
+			getRealLinkDomainName().then((res) => {
+				if (res.code == 200) {
+					uni.setStorageSync('h5Path', res.data);
+				}
+			});
+		},
+		// 系统通知全部已读
+		setReadAll(url) {
+			if (url && url.indexOf('/pages/courseAnswer/index') == -1) {
+				getPushLogRead([]).then((res) => {
+					if (res.code == 200) {
+						this.$updateMsgDot();
+					}
+				});
+			}
+		},
+		// 获取剪贴板内容跳转到看课
+		getClipboardData() {
+			// #ifdef APP-PLUS
+			console.log('获取剪贴板内容跳转到看课==========');
+			const course = {};
+			coursePopup(course, () => {
+				// uni.getClipboardData({
+				// 	success: function (res) {
+				// 		console.log("res.data===",res);
+				// 		let Context = plus.android.importClass("android.content.Context");
+				// 		let main = plus.android.runtimeMainActivity();
+				// 		let clip = main.getSystemService(Context.CLIPBOARD_SERVICE);
+				// 		plus.android.invoke(clip,"setText","");
+				// 	}
+				// });
+			});
+			// #endif
+		},
+	    getRuntimePlatform() {
+			  const systemInfo = uni.getSystemInfoSync();
+			  const compilePlatform = process.env.UNI_PLATFORM;
+			  //1:iOS,2:Android,3:Windows,4:OSX,5:WEB,6:小程序,7:linux,8:AndroidPad,9:IPad,10:Admin
+			  let platformType=5;
+			  // H5 环境
+			  if (compilePlatform === 'h5') platformType= 5;  
+			
+			  // 小程序环境
+			  if (compilePlatform.startsWith('mp-')) {
+				 const mpType = compilePlatform.split('-')[1]; // 如 weixin/alipay
+				 platformType=6;
+				 // return `小程序(${mpType})- ${systemInfo.platform}`;
+			  }
+			  // App 环境
+			  if (compilePlatform === 'app-plus') {
+				 if(systemInfo.platform.toLowerCase() === 'android'){
+					 platformType=2;
+				 }
+				 if(systemInfo.platform.toLowerCase() === 'ios'){
+					 platformType=1;
+				 }
+			  }
+			  //uni.showToast({ title:" platformType:"+platformType,icon:'none', duration: 2000 });
+			  return platformType;
+		},
+		/* 检查更新 在线更新 */
+		checkUpdateApp() {
+			//uni wgt包版本检测更新
+			//checkUpdate();
+			let that = this;
+			plus.runtime.getProperty(plus.runtime.appid, function (widgetinfo) {
+				if (widgetinfo.name == qconfig.appName) {  //APP名称
+					let platform = uni.getSystemInfoSync().platform;
+					let isAndroid = platform == 'android';
+					let type = isAndroid ? 1 : 2;
+					getAppVersion(type).then((srcData) => {
+						        //console.log("qxj getAppVersion srcData",srcData);
+								if (srcData.code == 200) {
+									if(isAndroid){
+										uni.setStorageSync('aVersion', JSON.stringify(srcData));
+									}
+								   let data = srcData.data;
+								   let version = widgetinfo.versionCode, //用户当前app版本
+									appVersion = data.versionCode, //升级包版本
+									appName = widgetinfo.name, //app名称
+									isForce = data.isForce, //是否强制热更新
+									updateConfig = JSON.parse(data.updateConfig),
+									appurl = data.url, //升级包地址
+									intro = data.note; //升级包提示
+									//如果用户版本号小于升级包版本号,先升级
+									let afterVer = false;
+									if (plus.runtime.channel == 'baidu') {
+										afterVer = that.$qconfig.isAppStore ? updateConfig.baidu : false;
+									} else if (plus.runtime.channel == 'huawei') {
+										afterVer = that.$qconfig.isAppStore ? updateConfig.huawei : false;
+									} else if (plus.runtime.channel == 'xiaomi') {
+										afterVer = that.$qconfig.isAppStore ? updateConfig.xiaomi : false;
+									} else if (plus.runtime.channel == 'yyb') {
+										afterVer = that.$qconfig.isAppStore ? updateConfig.yyb : false;
+									} else {
+										afterVer = that.$qconfig.isAppStore ? isForce : true;
+									}
+									if (data && version < appVersion && afterVer) {
+										uni.showModal({
+											title: '更新提示',
+											confirmText: '立即升级',
+											content: intro,
+											cancelText: '确定',
+											confirmText: '取消',
+											success: (res) => {
+												if (res.cancel) {
+													openDownload(srcData.data);
+												} else if (res.confirm) {
+													if (isForce == 1) {
+														uni.showToast({ title: '请先升级APP版本', icon: 'none', duration: 2000 });
+														//退出app
+														setTimeout(function () {
+															plus.runtime.quit();
+														}, 2000);
+													}
+												}
+											},
+											fail: () => {
+												uni.hideLoading();
+											}
+										});
+									}
+								}
+							},
+							(rej) => {}
+						).catch(() => {
+							//联网失败, 结束加载
+							this.mescroll.endErr();
+						});
+				}
+			});
+		}
+			
+	},
+	watch: {
+		storeCurrentUserID(newVal) {
+			if (newVal) {
+				cacheConversationList = [];
+			}
+		},
+		contactBadgeRely: {
+			handler(newValue) {
+				//console.log("qxj contactBadgeRely newValue",newValue);
+				const { recvFriendApplications, recvGroupApplications, userKey } = newValue;
+				if (!userKey) return;
+				const accessedFriendApplications = uni.getStorageSync(`${userKey}_accessedFriendApplications`) || [];
+				//console.log("qxj accessedFriendApplications",accessedFriendApplications);
+				let unHandleFriendApplicationNum = recvFriendApplications.filter(
+                  (application) => application.handleResult === 0 && !accessedFriendApplications.includes(`${application.fromUserID}_${application.createTime}`)
+				).length;
+				const accessedGroupApplications = uni.getStorageSync(`${userKey}_accessedGroupApplications`) || [];
+				let unHandleGroupApplicationNum = recvGroupApplications.filter(
+					(application) => application.handleResult === 0 && !accessedGroupApplications.includes(`${application.userID}_${application.createTime}`)
+				).length;
+				//console.log("qxj unHandleFriendApplicationNum",unHandleFriendApplicationNum);
+				const total = unHandleFriendApplicationNum + unHandleGroupApplicationNum;
+				// if (total) {
+				// 	uni.setTabBarBadge({ index: 0, text: total < 99 ? total + '' : '99+' });
+				// } else {
+				// 	uni.removeTabBarBadge({ index: 0 });
+				// }
+				this.$store.commit('contact/SET_UNHANDLE_FRIEND_APPLICATION_NUM', unHandleFriendApplicationNum);
+				this.$store.commit('contact/SET_UNHANDLE_GROUP_APPLICATION_NUM', unHandleGroupApplicationNum);
+			},
+			deep: true
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+/*每个页面公共css */
+@import '@/assets/css/common.scss';
+@import '@/uni_modules/uview-plus/index.scss';
+
+/*#ifndef APP-NVUE*/
+
+view {
+	box-sizing: border-box;
+}
+
+.ellipsis {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+}
+.ellipsis2 {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: -webkit-box;
+	-webkit-box-orient: vertical;
+	-webkit-line-clamp: 2;
+}
+
+uni-modal {
+	z-index: 1100;
+}
+
+.no-data-box {
+	height: 100%;
+	width: 100%;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	flex-direction: column;
+	image {
+		width: 264upx;
+		height: 212upx;
+	}
+	.empty-title {
+		margin-top: 20rpx;
+		font-size: 28rpx;
+		color: gray;
+	}
+}
+
+.doctor-box {
+	margin-top: 15rpx;
+	padding: 20rpx 0rpx 0rpx;
+	display: flex;
+	flex-direction: column;
+	align-items: flex-start;
+	justify-content: flex-start;
+	.doctor {
+		width: 100%;
+		margin-bottom: 15rpx;
+		background: #f9f8fe;
+		padding: 15rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: flex-start;
+		justify-content: flex-start;
+		&:last-child {
+			margin-bottom: 0rpx;
+		}
+		.item {
+			width: 100%;
+			display: flex;
+			align-items: flex-start;
+			justify-content: flex-start;
+			.left {
+				.head-box {
+					width: 92rpx;
+					height: 92rpx;
+					position: relative;
+					.isline {
+						width: 92rpx;
+						height: 92rpx;
+						border-radius: 50%;
+						border: 2rpx solid #e69a22;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						position: absolute;
+						bottom: 0rpx;
+						.img {
+							position: absolute;
+							bottom: 1rpx;
+							width: 75rpx;
+							height: 35rpx;
+							image {
+								width: 75rpx;
+								height: 35rpx;
+							}
+							.name {
+								width: 75rpx;
+								height: 35rpx;
+								bottom: -3rpx;
+								text-align: center;
+								position: absolute;
+								font-size: 16upx;
+								font-family: PingFang SC;
+								font-weight: bold;
+								color: #ffffff;
+							}
+						}
+					}
+					.doc-img {
+						border-radius: 50%;
+						width: 100%;
+						height: 100%;
+					}
+				}
+			}
+
+			.right {
+				width: calc(100% - 100rpx);
+				margin-left: 20rpx;
+				display: flex;
+				flex-direction: column;
+				align-items: flex-start;
+				justify-content: flex-start;
+				.doc-box {
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					.doc-name {
+						font-size: 32upx;
+						font-family: PingFang SC;
+						font-weight: bold;
+						color: #111111;
+					}
+					.doc-position {
+						margin-left: 16rpx;
+						font-size: 26upx;
+						font-weight: bold;
+						font-family: PingFang SC;
+						color: #2a2b2e;
+					}
+					.doc-dept {
+						margin-left: 16rpx;
+						font-size: 26upx;
+						font-weight: bold;
+						font-family: PingFang SC;
+						color: #2a2b2e;
+					}
+				}
+				.hospital-box {
+					display: flex;
+					align-items: center;
+					justify-content: flex-start;
+					margin-top: 10rpx;
+					.tag {
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						background-color: #4fc06b;
+						border-radius: 10rpx;
+						padding: 5rpx 10rpx;
+						font-size: 20upx;
+						font-weight: bold;
+						font-family: PingFang SC;
+						color: #ffffff;
+					}
+					.name {
+						margin-left: 6rpx;
+						font-size: 26upx;
+						font-weight: bold;
+						font-family: PingFang SC;
+						color: #2a2b2e;
+					}
+				}
+				.doc-spec {
+					width: 100%;
+					display: flex;
+					align-items: center;
+					justify-content: flex-start;
+					margin-top: 15rpx;
+					.spec {
+						font-size: 26upx;
+						font-family: PingFang SC;
+						color: #626468;
+					}
+				}
+				.doc-count {
+					margin-top: 15rpx;
+					display: flex;
+					align-items: center;
+					justify-content: flex-start;
+					.name {
+						font-size: 24upx;
+						font-family: PingFang SC;
+						color: #9b9b9b;
+					}
+					.count {
+						margin: 0rpx 5rpx;
+						font-size: 24upx;
+						font-family: PingFang SC;
+						color: #2a2b2e;
+					}
+				}
+				.doc-price {
+					width: 100%;
+					margin-top: 15rpx;
+					display: flex;
+					align-items: center;
+					justify-content: flex-start;
+					.btn {
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						background-color: #feefd7;
+						padding: 15rpx 30rpx;
+						border-radius: 30rpx;
+						font-size: 26upx;
+						font-family: PingFang SC;
+						color: #e69a22;
+					}
+				}
+			}
+		}
+	}
+}
+
+/*#endif*/
+
+</style>
+
+<style lang="less">
+/*每个页面公共css */
+// @import './assets/iconfont/iconfont.css';
+@import './assets/css/common.less';
+/* 全局flex样式 */
+@import './common/css/flexCommon.css';
+
+/*引入全局补充样式*/
+@import './assets/css/czy/es.1.base.css';
+@import './assets/css/czy/es.2.color.css';
+@import './assets/css/czy/es.3.icon.css';
+@import './assets/css/czy/es.4.view.css';
+
+.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;
+}
+</style>

+ 38 - 0
androidPrivacy.json

@@ -0,0 +1,38 @@
+{
+    "version" : "1",
+    "prompt" : "template",
+    "title" : "服务协议和隐私政策",
+    "message" : "非常感谢您使用芳华未来,我们深知保护个人隐私的重要性,所以请您在使用前,仔细阅读并充分理解<a href=\"https://userapp.his.cdwjyyh.com/web/userAgreement\">《用户协议》</a>和<a href=\"https://userapp.his.cdwjyyh.com/web/privacyPolicy\">《隐私政策》</a>的内容。<br/>如您同意,请点击\"同意并使用开始\"开始使用我们的产品和服务。",
+    "buttonAccept" : "同意并接受",
+    "buttonRefuse" : "暂不同意",
+    "hrefLoader" : "system",
+    "backToExit" : "false",
+    "second" : {
+        "title" : "确认提示",
+        "message" : "  进入应用前,你需先同意<a href=\"https://userapp.his.cdwjyyh.com/web/userAgreement\">《服务协议》</a>和<a href=\"https://userapp.his.cdwjyyh.com/web/privacyPolicy\">《隐私政策》</a>,否则将退出应用。 ",
+        "buttonAccept" : "同意并继续",
+        "buttonRefuse" : "退出应用"
+    },
+    "disagreeMode" : {
+        "support" : false,
+        "loadNativePlugins" : false,
+        "visitorEntry" : false,
+        "showAlways" : true
+    },
+    "styles" : {
+        "backgroundColor" : "#ffffff",
+        "borderRadius" : "5px",
+        "title" : {
+            "color" : "#333"
+        },
+        "buttonAccept" : {
+            "color" : "#333"
+        },
+        "buttonRefuse" : {
+            "color" : "#FF5C03"
+        },
+        "buttonVisitor" : {
+            "color" : "#FF5C03"
+        }
+    }
+}

+ 18 - 0
api/activity.js

@@ -0,0 +1,18 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ // 获取用户国庆活动签到记录
+ export function getUserActiveLog(data) {
+ 	 return request('/app/integral/getUserActiveLog',data,'GET');
+ }
+ // 活动签到窗口是否弹出
+ export function getUserActiveWindow(data) {
+ 	 return request('/app/integral/getUserActiveWindow',data,'GET');
+ }
+ // 国庆活动签到
+ export function userActiveLogSign(data) {
+ 	 return request('/app/integral/userActiveLogSign',data,'POST');
+ }
+  
+  
+  

+ 13 - 0
api/adv.js

@@ -0,0 +1,13 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+ export function getAdvList(data) {
+	 return request('/app/adv/getAdvList',data,'GET');
+ }
+  
+ export function getAppAdvList() {
+ 	 return request('/app/adv/getAppAdvList',null,'GET');
+ }
+
+ 
+ 

+ 42 - 0
api/agent.js

@@ -0,0 +1,42 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+ export function getAiDoctorList(data) {
+	 return request('/app/aidoctor/getAiDoctorList',data,'POST','application/json;charset=UTF-8');
+ }
+
+ export function getAiDoctorForDetails(data) {
+	 return request('/app/aidoctor/getAiDoctorForDetails',data,'GET','application/json;charset=UTF-8');
+ }
+
+ export function getDictByKey(data) {
+	 return request('/app/common/getDictByKey',data,'GET','application/json;charset=UTF-8');
+ }
+
+//打赏
+ export function rewardAiDoctor(data) {
+	 return request('/app/aidoctor/rewardAiDoctor',data,'POST','application/json;charset=UTF-8');
+ }
+
+//用户端-医生排班信息列表查询
+ export function queryDoctorScheduleInfoByUser(data) {
+	 return request('/app/doctor/queryDoctorScheduleInfoByUser',data,'POST','application/json;charset=UTF-8');
+ }
+
+//用户预约挂号-校验
+ export function userSchedule(data) {
+	 return request('/app/doctor/userSchedule',data,'POST','application/json;charset=UTF-8');
+ }
+
+//用户端-预约挂号按钮是否置灰
+ export function isSetButtonGray(data) {
+	 return request('/app/doctor/isSetButtonGray',data,'GET','application/json;charset=UTF-8');
+ }
+
+//用户端-预约挂号列表
+ export function queryDoctorScheduleInfoByDate(data) {
+	 return request('/app/doctor/queryDoctorScheduleInfoByDate',data,'POST','application/json;charset=UTF-8');
+ }
+
+ 
+ 

+ 29 - 0
api/ai.js

@@ -0,0 +1,29 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+// 根据当前用户获取用户的会话列表
+export function getAllRolesListByUserId() {
+	return request('/doctorAi/app/fsInterestAi/getAllRolesListByUserId', null, 'GET');
+}
+
+// 根据会话id获取会话的详细信息
+export function getSessionDetailInfo(sessionId,roleId) {
+	return request('/doctorAi/app/fsInterestAi/getSessionDetailInfoBySessionIdAndRoleId/'+sessionId+'/'+roleId,null,'GET');
+}
+
+// 推荐AI
+export function getRecommendRoleList() {
+	return request('/doctorAi/app/fsInterestAi/getRecommendRoleList',null,'GET');
+}
+
+// export function replyAppUserContent(data) {
+// 	return request('/doctorAi/app/fsInterestAi/replyAppUserContent',data,'POST','application/json;charset=UTF-8');
+// }
+export function replyAppUserContent(userId,data) {
+	return request('/doctorAi/app/replyAppUserWebSocket/'+ userId,data,'POST','application/json;charset=UTF-8');
+}
+
+
+export function getAiJsonMsgCount(data) {
+	return request('/doctorAi/app/fsInterestAi/getAiJsonMsgCount',data,'POST','application/json;charset=UTF-8');
+}

+ 15 - 0
api/article.js

@@ -0,0 +1,15 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getArticleList(data) {
+ 	 return request('/app/article/getArticleList',data,'GET');
+ }
+ export function getArticleById(data) {
+ 	 return request('/app/article/getArticleById',data,'GET');
+ }
+ export function getArticleCateList(data) {
+ 	 return request('/app/article/getArticleCateList',data,'GET');
+ }
+  
+  
+  

+ 72 - 0
api/common.js

@@ -0,0 +1,72 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+ export function getDicts(data) {
+	 return request('/app/common/getDicts',data,'GET');
+ }
+ export function sendSmsCode(data) {
+ 	return request('/app/common/sendSmsCode',data,'POST','application/json;charset=UTF-8');
+ }
+ export function uploadOSS(data) {
+ 	 return request('/app/common/uploadOSS',data,'POST','application/json;charset=UTF-8');
+ }
+ export function getDictByKey(data) {
+ 	 return request('/app/common/getDictByKey',data,'GET');
+ }
+
+
+ export function getSelectUserList(nickName) {
+	 console.log("--------qxj getSelectUserList nickName:",nickName);
+	 let data = {"nickName":nickName};
+ 	 return request('/app/common/getSelectUserList',data,'GET');
+ }
+
+
+ export function getAppVersion(type) {
+	 let data = {"type":type+""};
+ 	 return request('/app/common/getAppVersion',data,'GET');
+ }
+
+
+ export function getCitys() {
+ 	 return request('/app/common/getCitys',{},'GET');
+ }
+
+
+ export function getHospitalList(data) {
+ 	 return request('/app/common/getHospitalList',data,'GET');
+ }
+ export function getDepartmentList(data) {
+ 	 return request('/app/common/getDepartmentList',data,'GET');
+ }
+ export function getConfigByKey(data) {
+ 	 return request('/app/common/getConfigByKey',data,'GET');
+ }
+ export function getTlsSig(data) {
+ 	 return request('/app/common/getTlsSig',data,'GET');
+ }
+ 
+ export function getRealLinkDomainName() {
+ 	 return request('/app/common/getRealLinkDomainName',null,'GET');
+ }
+ 
+  // 获取getWxConfig
+  export function getWxConfig(data,type) {
+  	return request('/app/wx/mp/getWxConfig', data, 'GET',undefined, 3);
+  }
+  
+ export function getIOSPayStatus(data) {
+ 	 return request('/app/common/getIOSPayStatus',data,'GET');
+ }
+ 
+ export function getQwCompanyList(data) {
+ 	 return request('/app/qwCompany/getQwCompanyList',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function getAppPageConfig(data) {
+ 	 return request('/app/common/getAppPageConfig',data,'GET');
+ }
+ 
+ export function getInquiryConfig(data) {
+ 	 return request('/app/common/getInquiryConfig',data,'GET');
+ }

+ 64 - 0
api/companyUser.js

@@ -0,0 +1,64 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function login(data) {
+ 	 return request('/app/companyUser/login',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function getUserInfo(data) {
+ 	 return request('/app/companyUser/getUserInfo',data,'GET','application/json;charset=UTF-8');
+ }
+ export function getQrImg(data) {
+ 	 return request('/app/companyUser/getQrImg',data,'GET','application/json;charset=UTF-8');
+ }
+ 
+ export function getCompanyUserCard(data) {
+ 	 return request('/app/companyUser/getCompanyUserCard',data,'GET','application/json;charset=UTF-8');
+ }
+ export function bindCompanyUser(data) {
+ 	 return request('/app/companyUser/bindCompanyUser',data,'POST','application/json;charset=UTF-8');
+ }
+ export function addVoicePrintUrl(data) {
+ 	 return request('/app/companyUser/addVoicePrintUrl',data,'POST','application/json;charset=UTF-8');
+ }
+ // 获取绑定
+ export function getBindInfo(data) {
+ 	 return request('/app/companyUser/getBindInfo',data,'GET','application/json;charset=UTF-8');
+ }
+ // 绑定销售
+ export function bindCompanyFsUser(id) {
+ 	 return request('/app/companyCompanyFsUser/bind/'+id,null,'GET','application/json;charset=UTF-8');
+ }
+  //  模板语音上传接口
+ export function companyUserVoiceNew(data) {
+ 	 return request('/app/companyUser/companyUserVoiceNew',data,'GET','application/json;charset=UTF-8');
+ }
+ // 模板语音上传接口
+ export function companyUserVoice(data) {
+ 	 return request('/app/companyUser/companyUserVoice',data,'GET','application/json;charset=UTF-8');
+ }
+ // 获取语音列表
+ export function querySopVoiceList(data) {
+ 	 return request('/app/companyUser/querySopVoiceList',data,'GET','application/json;charset=UTF-8');
+ }
+ // 获取语音详情
+ export function queryDetail(id) {
+ 	 return request('/app/companyUser/query/'+id,null,'GET','application/json;charset=UTF-8');
+ }
+  
+ export function createUserAllVoice(id) {
+ 	 return request('/app/companyUser/createUserAllVoice',null,'GET','application/json;charset=UTF-8');
+ }
+ 
+ export function companyJpushLoginout(id) {
+ 	 return request('/app/companyUser/logout',null,'GET','application/json;charset=UTF-8',60000,false);
+ }
+ 
+ // 删除声音录制
+ export function deleteVoice(data) {
+ 	 return request('/app/companyUser/deleteVoice',data,'POST','application/x-www-form-urlencoded;charset=UTF-8');
+ }
+ 
+ 
+ 
+ 

+ 17 - 0
api/coupon.js

@@ -0,0 +1,17 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ export function getCouponList(data) {
+	 return request('/app/coupon/getCouponList',data,'GET');
+ }
+ export function getCouponById(data) {
+	 return request('/app/coupon/getCouponById',data,'GET');
+ }
+ export function genCode(data) {
+ 	 return request('/app/coupon/genCode',data,'GET');
+ }
+ 
+ 
+ export function receive(data) {
+ 	 return request('/app/coupon/receive',data,'POST','application/json;charset=UTF-8');
+ }
+  

+ 313 - 0
api/course.js

@@ -0,0 +1,313 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ //获取是否收藏
+ export function checkFavorite(courseId) {
+ 	 return request('/app/course/checkFavorite?courseId='+courseId,null,'GET');
+ }
+ 
+ //获取是否关注
+ export function checkFollow(talentId) { 
+ 	 return request('/app/talent/checkFollow?talentId='+talentId,null,'GET');
+ }
+ 
+ //获取是否点赞
+ export function checkLike(courseId) {
+ 	 return request('/app/course/checkLike?courseId='+courseId,null,'GET');
+ }
+ 
+ //收藏
+ export function doFavorite(courseId) {
+	 const data={"courseId":courseId};
+ 	 return request('/app/course/doFavorite',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //关注
+ export function doFollow(talentId) {
+	 const data={"talentId":talentId};
+ 	 return request('/app/talent/doFollow',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //点赞
+ export function doLike(courseId) {
+	  const data={"courseId":courseId};
+ 	 return request('/app/course/doLike',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //获取课程详情
+ export function getCourseById(courseId) {
+ 	 return request('/app/course/getCourseById?courseId='+courseId,null,'GET');
+ }
+ 
+ //获取课程分类
+ export function getCourseCate() {
+ 	 return request('/app/course/getCourseCate',null,'GET');
+ }
+ 
+ 
+ //获取课程简介
+ export function getCourseDescription(courseId) {
+ 	 return request('/app/course/getCourseDescription?courseId='+courseId,null,'GET');
+ }
+ 
+ 
+
+ 
+ //课程列表
+ export function getCourseList(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/course/getCourseList',data,'GET');
+ }
+ 
+ //获取在学课程
+ export function getCourseStudyList(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/course/getCourseStudyList',data,'GET');
+ }
+ 
+ //获取课程目录
+ export function getCourseVideoList(parmars,page = 1, size = 20) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/course/getCourseVideoList',data,'GET');
+ }
+ 
+ //获取收藏课程
+ export function getMyFavoriteCourseList(parmars,page = 1, size = 100) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/course/getMyFavoriteCourseList',data,'GET');
+ }
+ 
+ //获取子分类
+ export function getProductCateByPid(pid) {
+ 	 return request('/app/course/getProductCateByPid?pid='+pid,null,'GET');
+ }
+ 
+ //分享课程
+ export function shareCourse(courseId) {
+ 	 return request('/app/course/shareCourse?courseId='+courseId,null,'GET');
+ }
+ 
+ 
+ //添加笔记
+ export function addCourseNote(data) {
+ 	 return request('/app/course/note/addCourseNote',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ 
+ //点赞
+ export function noteDoLike(data) {
+ 	 return request('/app/course/note/doLike',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //编辑笔记
+ export function editCourseNote(data) {
+ 	 return request('/app/course/note/editCourseNote',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //删除笔记
+ export function delCourseNote(data) {
+ 	 return request('/app/course/note/delCourseNote',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //课堂笔记列表
+ export function getCourseNoteList(parmars,page = 1, size = 10) {
+    let data = {"pageNum":page,"pageSize":size};
+    data=Object.assign(parmars, data);
+    return request('/app/course/note/getCourseNoteList',data,'GET');
+ }
+ 
+ 
+ //课堂笔记详情
+ export function getMyCourseNoteByNoteId(noteId) {
+ 	 return request('/app/course/note/getMyCourseNoteByNoteId?noteId='+noteId,null,'GET');
+ }
+ 
+ //我的笔记列表
+ export function getMyCourseNoteList(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/course/note/getMyCourseNoteList',data,'GET');
+ }
+ 
+
+ //新增课堂评论
+ export function addComment(data) {
+ 	 return request('/app/course/comment/addComment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //修改课堂评论
+ export function updateComment(data) {
+ 	 return request('/app/course/comment',data,'PUT','application/json;charset=UTF-8');
+ }
+ 
+ //删除课堂评论
+ export function deleteComment(commentId) {
+ 	 return request('/app/course/comment/'+commentId,null,'DELETE','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //点赞
+ export function commentDoLike(data) {
+ 	 return request('/app/course/comment/doLike',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //课堂课堂评论
+ export function getCommentList(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/course/comment/list',data,'GET');
+ }
+ 
+ 
+ //我的评论
+ export function getMyCommentList(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/course/comment/myList',data,'GET');
+ }
+
+
+ //创建在学课程
+ export function addDuration(data) {
+ 	 return request('/app/course/addStudyCourse',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //笔记转存
+ export function saveNote(data) {
+ 	 return request('/app/course/note/save',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+
+ 
+ //创建课程订单
+ export function createCourseOrder(data) {
+ 	 return request('/app/courseOrder/createOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //创建课程订单
+ export function createIntegralOrder(data) {
+ 	 return request('/app/courseOrder/createIntegralOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ 
+ //课程微信支付
+ export function wxPayment(data) {
+ 	 return request('/app/courseOrder/appPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //课程支付宝支付
+ export function aliPayment(data) {
+  	return request('/app/courseOrder/aliPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //vip套餐列表
+ export function getPackageList(data) {
+ 	 return request('/app/userVip/getPackageList',null,'GET');
+ }
+ 
+ 
+ //创建Vip订单
+ export function createVipOrder(data) {
+ 	 return request('/app/userVip/createOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //会员支付宝支付
+ export function vipZfbPayment(data) {
+  	return request('/app/userVip/aliPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //会员微信支付
+ export function vipWxPayment(data) {
+  	return request('/app/userVip/appPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //会员支付宝支付
+ export function getIntegral(data) {
+  	return request('/app/course/getIntegral',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+
+ //获取订单列表
+ export function getCourseOrderList(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/courseOrder/getCourseOrderList',data,'GET');
+ }
+ 
+ //获取Vip订单详情
+ export function getVipOrderById(orderId) {
+ 	 return request('/app/userVip/getVipOrderById?orderId='+orderId,null,'GET');
+ }
+ 
+ //获取订单详情
+ export function getCourseOrderById(orderId) {
+ 	 return request('/app/courseOrder/getCourseOrderById?orderId='+orderId,null,'GET');
+ }
+ 
+ //获取弹幕列表
+ export function getDanmuList(videoId) {
+ 	 return request('/barrage/barrage/list/'+videoId,null,'GET');
+ }
+ 
+ //批量取消收藏
+  export function cancelFavorite(data) {
+  	 return request('/app/course/cancelFavorite',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //userVip苹果支付
+ export function applePayment(data) {
+  	return request('/app/userVip/applePayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //courseOrder苹果支付
+ export function appleCoursePayment(data) {
+  	return request('/app/courseOrder/applePayment',data,'POST','application/json;charset=UTF-8');
+ }
+ //苹果订单进行后台验证
+ export function setIapCertificate(data) {
+  	return request('/app/applepay/setIapCertificate',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ // 保存评论数据(新弹幕)
+ export function saveMsg(data, type) {
+ 	return request('/app/course/saveMsg', data, 'POST', 'application/json;charset=UTF-8');
+ }
+ 
+ // 获取历史评论数据(新弹幕)
+ export function getComments(data, type) {
+ 	return request('/app/course/getComments', data, 'GET');
+ }
+ 
+ // app根据销售获取企微列表
+ export function getQwUserListByCompanyUserId(data, type) {
+ 	return request('/app/course/getQwUserListByCompanyUserId', data, 'GET');
+ }
+ 
+ // 获取课程列表
+ export function getCourseListByCompany(data, type) {
+ 	return request('/app/course/getCourseListByCompany', data, 'GET');
+ }
+ 
+ // 获取课程小节列表
+ export function getVideoListByCourse( id) {
+ 	return request(`/app/course/getVideoListByCourse/${id}`, null, 'GET');
+ }
+ 
+ // app手动发课
+ export function sendCourseApp(data, type) {
+ 	return request('/app/course/sendCourse', data, 'POST','application/json;charset=UTF-8');
+ }

+ 67 - 0
api/courseAnswer.js

@@ -0,0 +1,67 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+// 
+export function getSopCourseStudyList(data) {
+	return request('/app/course/getSopCourseStudyList', data, 'GET');
+}
+
+//看课消息已读
+export function updateSopAppLink(id) {
+	return request('/app/course/updateSopAppLink/' + id, null, 'GET');
+}
+
+// 商品详情
+export function goodsDetail(data,type) {
+	if(type==1) {
+		return request('/app/reward/goodsDetailApp', data, 'GET');
+	}else {
+		return request('/app/reward/goodsDetail', data, 'GET');
+	}
+}
+
+// 下单
+export function createOrder(data,type) {
+	if(type==1) {
+		return request('/app/reward/createOrderApp', data, 'POST', 'application/json;charset=UTF-8');
+	}else {
+		return request('/app/reward/createOrder', data, 'POST', 'application/json;charset=UTF-8');
+	}
+}
+// 支付
+export function payment(data) {
+	return request('/app/reward/payment', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 订单详情接口
+export function orderDetail(data) {
+	return request('/app/reward/orderDetail', data, 'GET');
+}
+
+// 中奖列表接口
+export function rewardList(data) {
+	return request('/app/reward/rewardList', data, 'GET');
+}
+ export function getExpress(orderId) {
+ 	 return request('/app/reward/getExpress/'+orderId,null,'GET');
+ }
+// =================看课相关接口=============
+// 获取真实链接
+export function getRealLink(data) {
+	return request('/course_auto/app/course/getRealLink', data, 'GET');
+}
+
+ export function getLuckyBagInfo(data) {
+ 	 return request('/course_auto/app/luckyBag/getLuckyBagInfo',data,'GET');
+ }
+ export function receiveLuckyBag(data) {
+  	return request('/course_auto/app/luckyBag/receiveLuckyBag', data, 'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function registerQwFsUserFinish(data) {
+ 	return request('/course_auto/app/course/registerQwFsUserFinish', data, 'POST', 'application/json;charset=UTF-8');
+ }
+ 
+ export function isAddCompanyUser(data) {
+ 	return request('/course_auto/app/course/registerQwFsUser', data, 'POST', 'application/json;charset=UTF-8');
+ }

+ 9 - 0
api/department.js

@@ -0,0 +1,9 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getDepartmentList(data) {
+ 	 return request('/app/department/getDepartmentList',data,'GET');
+ }
+ 
+  
+  

+ 16 - 0
api/disease.js

@@ -0,0 +1,16 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getDiseaseList(data) {
+ 	 return request('/app/disease/getDiseaseList',data,'GET');
+ }
+ export function getDiseaseById(data) {
+ 	 return request('/app/disease/getDiseaseById',data,'GET');
+ }
+ 
+ 
+ 
+ 
+  
+  
+  

+ 25 - 0
api/doctor.js

@@ -0,0 +1,25 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getMyDoctorList(data) {
+ 	 return request('/app/doctor/getMyDoctorList',data,'GET');
+ }
+ export function getDoctorDetails(data) {
+ 	 return request('/app/doctor/getDoctorDetails',data,'GET');
+ }
+ export function getDoctorPingList(data) {
+ 	 return request('/app/doctor/getDoctorPingList',data,'GET');
+ }
+ export function getDoctorList(data) {
+ 	 return request('/app/doctor/getDoctorList',data,'GET');
+ }
+ export function checkFollow(data) {
+	return request('/app/doctor/checkFollow',data,'GET');
+ }
+  
+ export function doFollow(data) {
+  	return request('/app/doctor/doFollow',data,'POST','application/json;charset=UTF-8');
+ }
+export function getDoctorByHasBeenScheduledList(data) {
+ return request('/app/doctor/getDoctorByHasBeenScheduledList',data,'GET');
+}

+ 13 - 0
api/doctorArticle.js

@@ -0,0 +1,13 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ export function getDoctorArticleCateList(data) {
+ 	 return request('/app/doctorArticle/getDoctorArticleCateList',data,'GET');
+ }
+ export function getDoctorArticleList(data) {
+ 	 return request('/app/doctorArticle/getDoctorArticleList',data,'GET');
+ }
+ export function getDoctorArticleById(data) {
+ 	 return request('/app/doctorArticle/getDoctorArticleById',data,'GET');
+ }
+  
+   

+ 22 - 0
api/drugReport.js

@@ -0,0 +1,22 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getUserFollowDoctor() {
+ 	 return request('/app/drugReport/getUserFollowDoctor',null,'GET');
+ }
+ export function getDrugReportList(data) {
+ 	 return request('/app/drugReport/getDrugReportList',data,'GET');
+ }
+ export function getDrugReportById(data) {
+ 	 return request('/app/drugReport/getDrugReportById',data,'GET');
+ }
+ export function pingReport(data) {
+ 	 return request('/app/drugReport/pingReport',data,'POST','application/json;charset=UTF-8');
+ }
+ export function startDrugReport(data) {
+ 	 return request('/app/drugReport/startDrugReport',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+  
+  
+  

+ 145 - 0
api/expert.js

@@ -0,0 +1,145 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+export function getTalentByToken(data) {
+	return request('/app/talent/getTalentByToken', data, 'GET');
+}
+//获取指定达人详情
+export function getTalentByUserId(data) {
+	return request('/app/talent/getTalentByUserId', data, 'GET');
+}
+// 分页获取达人视频列表
+export function getVideoList(data) {
+	return request('/app/talent/getVideoList', data, 'GET');
+}
+// 达人上传视频
+export function uploadOSSTalent(data) {
+	return request('/app/talent/uploadOSSTalent', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//达人提交视频信息
+export function talentVideo(data) {
+	return request('/app/talent/talentVideo', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//修改达人信息
+export function updateTalent(data) {
+	return request('/app/talent/updateTalent', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 关注/取消关注达人
+export function doFollow(data) {
+	return request('/app/talent/doFollow', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 获取是否关注
+export function checkFollow(data) {
+	return request('/app/talent/checkFollow', data, 'GET');
+}
+
+export function getTag() {
+	return request('/app/video/getTag', null, 'GET');
+}
+
+export function getTalentFollowByUserId(data) {
+	return request('/app/talent/getTalentFollowByUserId', data, 'GET');
+}
+
+export function getTalentFansByUserId(data) {
+	return request('/app/talent/getTalentFansByUserId', data, 'GET');
+}
+
+export function deleteVideo(data) {
+	return request('/app/talent/deleteVideo', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+export function updateVideoStatus(data) {
+	return request('/app/talent/updateVideoStatus', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+
+//拉黑短视频
+export function addBlackVideo(data) { 
+	return request('/app/blackTalent/addBlackVideo', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//拉黑达人
+export function addBlackTalent(data) {
+	return request('/app/blackTalent/addBlackTalent', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//举报达人
+export function addReportTalent(data) {
+	return request('/app/blackTalent/addReportTalent', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//举报短视频
+export function addReportVideo(data) {
+	return request('/app/blackTalent/addReportVideo', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//取消拉黑
+export function cancelBlack(data) {
+	return request('/app/blackTalent/cancelBlack', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//新增短视频合集
+export function videoCollectionAdd(data) {
+	return request('/app/course/collection', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//修改短视频合集
+export function videoCollectionUpd(data) {
+	return request('/app/course/collection', data, 'PUT', 'application/json;charset=UTF-8');
+}
+
+//删除视频合集
+export function videoCollectionDel(data) {
+	return request('/app/course/collection/'+data, '', 'POST', 'application/json;charset=UTF-8');
+}
+
+//查询指定达人短视频合集列表
+export function videoCollectionList(data) {
+	return request('/app/course/collection/list', data, 'GET', 'application/json;charset=UTF-8');
+}
+
+//查询自己的短视频合集列表
+export function videoCollectionMyList(data) {
+	return request('/app/course/collection/myList', data, 'GET', 'application/json;charset=UTF-8');
+}
+
+//查询合集中短视频列表
+export function collectionList(data) {
+	return request('/app/video/collection/list', data, 'GET', 'application/json;charset=UTF-8');
+}
+
+//短视频合集中新增短视频-批量
+export function videoAdd(data) {
+	return request('/app/video/collection/batchAdd', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//删除合集中的短视频-批量
+export function removeVideo(data) {
+	return request('/app/video/collection/removeVideos', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//修改合集中的短视频
+export function updateVideo(data) {
+	return request('/video/collection/updateVideo', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//合集短视频拖动排序
+export function updateSort(data) {
+	return request('/app/video/collection/updateSort', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//合集短视频拖动排序
+export function deleteCollection(data) {
+	return request('/app/course/collection/deleteCollection?collectionId='+data, {collectionId:data}, 'POST', 'application/json;charset=UTF-8');
+}
+
+//选择合集视频
+export function getMyVideoList(data) {
+	return request('/app/video/collection/getMyVideoList', data, 'GET', 'application/json;charset=UTF-8');
+}
+

+ 14 - 0
api/follow.js

@@ -0,0 +1,14 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getFollowList(data) {
+ 	 return request('/app/follow/getFollowList',data,'GET');
+ }
+ export function getFollowById(data) {
+ 	 return request('/app/follow/getFollowById',data,'GET');
+ }
+ export function doFollow(data) {
+ 	 return request('/app/follow/doFollow',data,'POST','application/json;charset=UTF-8');
+ }
+  
+  

+ 52 - 0
api/healthRecords.js

@@ -0,0 +1,52 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+// 获取我的健康档案
+export function myRecord() {
+	return request('/app/healthRecord/myRecord', null, 'GET');
+}
+
+// 查询今日健康生活
+export function HealthLife(data) {
+	return request('/app/healthRecord/HealthLife', data, 'GET');
+}
+
+// 查询健康史模板列表
+export function healthHistoryTempList() {
+	return request('/app/healthRecord/healthHistoryTempList', null, 'GET');
+}
+
+// 健康数据列表
+export function HealthDataList(data) {
+	return request('/app/healthRecord/HealthDataList', data, 'GET');
+}
+
+// 健康数据详细
+export function HealthData(id) {
+	return request('/app/healthRecord/HealthData/' + id, null, 'GET');
+}
+
+// 获取健康生活详细信息
+export function getHealthLife(id) {
+	return request('/app/healthRecord/getHealthLife/' + id, null, 'GET');
+}
+
+// 获取健康生活详细信息
+export function editRecord(data) {
+	return request('/app/healthRecord/editRecord', data, 'PUT','application/json;charset=UTF-8');
+}
+
+// 新增健康档案
+export function addRecord(data) {
+	return request('/app/healthRecord/addRecord', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 新增健康生活
+export function addFsHealthLife(data) {
+	return request('/app/healthRecord/addFsHealthLife', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 新增健康数据
+export function addFsHealthData(data) {
+	return request('/app/healthRecord/addFsHealthData', data, 'POST', 'application/json;charset=UTF-8');
+}

+ 21 - 0
api/healthTongue.js

@@ -0,0 +1,21 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+export function getHealthTongueList(data) {
+	return request('/app/healthTongue/getHealthTongueList', data, 'GET');
+}
+
+export function getCount(data) {
+	return request('/app/healthTongue/getCount', data, 'GET');
+}
+
+ 
+ export function getHealthTongueById(id) {
+ 	return request('/app/healthTongue/getHealthTongueById/'+id, null, 'GET');
+ }
+ 
+ 
+
+export function add(data) {
+	return request('/app/healthTongue/add', data, 'POST', 'application/json;charset=UTF-8');
+}

+ 14 - 0
api/hospital.js

@@ -0,0 +1,14 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getHospitalList(data) {
+ 	 return request('/app/hospital/getHospitalList',data,'GET');
+ }
+ export function getHospitalById(data) {
+ 	 return request('/app/hospital/getHospitalById',data,'GET');
+ }
+ 
+ 
+  
+  
+  

+ 150 - 0
api/index.js

@@ -0,0 +1,150 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+ 
+ export function getIndexData() {
+ 	 return request('/app/index/getIndexData',null,'GET');
+ }
+ 
+ export function getFamousPrescribeList(data) {
+ 	 return request('/app/index/getFamousPrescribeList',data,'GET');
+ }
+ export function getFamousPrescribeById(data) {
+ 	 return request('/app/index/getFamousPrescribeById',data,'GET');
+ }
+ export function getQuestionsList(data) {
+ 	 return request('/app/index/getQuestionsList',data,'GET');
+ }
+ export function getQuestionsById(data) {
+ 	 return request('/app/index/getQuestionsById',data,'GET');
+ }
+ export function getMedicatedFoodList(data) {
+ 	 return request('/app/index/getMedicatedFoodList',data,'GET');
+ }
+ export function getMedicatedFoodById(data) {
+ 	 return request('/app/index/getMedicatedFoodById',data,'GET');
+ }
+ export function getVesselList(data) {
+ 	 return request('/app/index/getVesselList',data,'GET');
+ }
+ export function getVesselById(data) {
+ 	 return request('/app/index/getVesselById',data,'GET');
+ }
+ export function getChineseMedicineList(data) {
+ 	 return request('/app/index/getChineseMedicineList',data,'GET');
+ }
+ export function getChineseMedicineById(data) {
+ 	 return request('/app/index/getChineseMedicineById',data,'GET');
+ }
+ 
+ 
+ export function bdCallBackReq(data) {
+ 	 return request('/app/common/bdCallBack',data,'GET');
+ }
+ 
+export function aiChatListByUser(data) {
+	 const url = '/doctorAi/app/aiDoctor/chatListByUser?doctorId='+data.doctorId+'&userId='+data.userId+'&patientId='+data.patientId
+ 	 return request(url,null,'POST','application/json;charset=UTF-8');
+ }
+ 
+export function getLocation() {
+  return new Promise((resolve, reject) => {
+    // #ifdef APP
+    uni.getLocation({
+      type: 'gcj02', // 必须设置为gcj02
+      geocode: true, // 是否解析地址信息,仅App支持
+      isHighAccuracy: true, // 开启高精度
+      success: (res) => {
+			resolve({
+			   ...res.address,
+			   longitude: res.longitude,
+			   latitude: res.latitude
+			})
+       },
+       fail: (err) => {
+		   console.log(err)
+		   reject(new Error('获取地理位置信息失败'))
+       }
+    })
+    // #endif
+    
+    // #ifdef H5
+
+	 uni.getLocation({
+	    type: 'gcj02', //wgs84
+	   isHighAccuracy: true, // 开启高精度定位
+	   success: function (res) {
+	 		console.log("qxj longitude:"+res.longitude);
+			uni.showToast({icon:'none',title: "qxj res:"+JSON.stringify(res)});
+	 		uni.request({
+	 		  method: "post",
+	 		  url: "https://restapi.amap.com/v3/geocode/regeo?key=ae15f2eb04bbc8e9f2963430f0943a42&location="+res.longitude+","+res.latitude+"&output=JSON",
+	 		  data: null,
+	 		  success: ({ data }) => {
+	 				console.log("qxj location:"+JSON.stringify(data));
+	 				const { addressComponent, formatted_address } = data.regeocode
+	 				//const [longitude, latitude] = addressComponent.streetNumber.location.split(',')
+					let addrCity=addressComponent.city;
+					if(Array.isArray(addressComponent.city)){
+						addrCity=addressComponent.province;
+					}
+	 				resolve({
+	 					  province: addressComponent.province,
+	 					  city: addrCity,
+	 					  district: addressComponent.district,
+	 					  street: addressComponent.township,
+	 					  address: formatted_address
+	 				})
+	 		  },
+	 		  fail: (error) => {
+	 			console.log(error)
+	 			reject(new Error('获取地理位置信息失败'))
+	 		  }
+	 		});
+	   },
+	   fail:function(res){
+	   	   //console.log(res);
+		   //uni.showToast({icon:'none',title: "qxj longitude error:"+JSON.stringify(res),duration:10000});
+	   	}
+	 });
+    // #endif
+  })
+}
+
+
+function getH5Location(){
+	uni.getLocation({
+	   type: 'gcj02',
+	  //isHighAccuracy: true, // 开启高精度定位
+	  success: ({ longitude, latitude }) => {
+			console.log("qxj longitude:"+longitude);
+			uni.request({
+			  method: 'GET',
+			  url: 'https://restapi.amap.com/v3/geocode/regeo?parameters',
+			  data: {
+				key: 'ae15f2eb04bbc8e9f2963430f0943a42',
+				location: `${longitude},${latitude}`,
+				output: 'JSON'
+			  },
+			  success: ({ data }) => {
+					console.log("qxj location:"+JSON.stringify(data));
+					const { addressComponent, formatted_address } = data.regeocode
+					const [longitude, latitude] = addressComponent.streetNumber.location.split(',')
+					resolve({
+						  longitude,
+						  latitude,
+						  province: addressComponent.province,
+						  city: addressComponent.city,
+						  district: addressComponent.district,
+						  street: addressComponent.township,
+						  address: formatted_address
+					})
+			  },
+			  fail: (error) => {
+				console.log(error)
+				reject(new Error('获取地理位置信息失败'))
+			  }
+			});
+	  }
+	});
+}

+ 91 - 0
api/inquiryOrder.js

@@ -0,0 +1,91 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function confirm(data) {
+  	return request('/app/inquiryOrder/confirm',data,'POST','application/json;charset=UTF-8');
+ }
+ export function create(data) {
+  	return request('/app/inquiryOrder/create',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function pay(data) {
+  	return request('/app/inquiryOrder/pay',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function zfbPayment(data) {
+  	return request('/app/inquiryOrder/zfbPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function wxPayment(data) {
+  	return request('/app/inquiryOrder/appPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ export function compute(parmars) {
+	let data = {"type":2};
+	data=Object.assign(parmars, data); 
+  	return request('/app/inquiryOrder/compute',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ 
+ export function cancel(data) {
+  	return request('/app/inquiryOrder/cancel',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function getMyInquiryOrderList(data) {
+ 	 return request('/app/inquiryOrder/getMyInquiryOrderList',data,'GET');
+ 
+ }
+ export function getMyInquiryOrderById(data) {
+ 	 return request('/app/inquiryOrder/getMyInquiryOrderById',data,'GET');
+ }
+ export function getMyInquiryOrderPingList(data) {
+ 	 return request('/app/inquiryOrder/getMyInquiryOrderPingList',data,'GET');
+ }
+ export function getInquiryOrderById(data) {
+ 	 return request('/app/inquiryOrder/getInquiryOrderById',data,'GET');
+ }
+ export function getCompanyUserInquiryOrderById(data) {
+ 	 return request('/app/inquiryOrder/getCompanyUserInquiryOrderById',data,'GET');
+ }
+ 
+ 
+ export function pingOrder(data) {
+  	return request('/app/inquiryOrder/pingOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function getInquiryTemp(data) {
+ 	 return request('/app/inquiryOrder/getInquiryTemp',data,'GET');
+ }
+ export function getInquiryOrderReport(data) {
+ 	 return request('/app/inquiryOrder/getInquiryOrderReport',data,'GET');
+ }
+ export function getCurrentImInquiryOrderId(data) {
+ 	 return request('/app/inquiryOrder/getCurrentImInquiryOrderId',data,'GET');
+ }
+ 
+ export function getCompanyUserInquiryOrderList(data) {
+ 	 return request('/app/inquiryOrder/getCompanyUserInquiryOrderList',data,'GET');
+ }
+ 
+ 
+ export function getAllInquiryOrderListByUser(data) {
+ 	 return request('/app/inquiryOrder/getAllInquiryOrderListByUser',data,'GET');
+ 
+ }
+ 
+ 
+ //获取院内会诊申请单详细信息
+  export function getApplyInfo(id) {
+  	return request('/cons/application/'+id,null,'GET');
+  }
+ 
+ //用户确认
+  export function userConfirm(data) {
+   	return request('/cons/application/userConfirm',data,'POST','application/json;charset=UTF-8');
+  }
+  
+ 
+ 
+  

+ 115 - 0
api/integral.js

@@ -0,0 +1,115 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+export function getIntegralGoodsList(data) {
+	return request('/app/integral/getIntegralGoodsList', data, 'GET');
+}
+export function getIntegralGoodsById(data) {
+	return request('/app/integral/getIntegralGoodsById', data, 'GET');
+}
+export function getUserIntegralLogsList(data) {
+	return request('/app/integral/getUserIntegralLogsList', data, 'GET');
+}
+export function getIntegralOrderList(data) {
+	return request('/app/integral/getIntegralOrderList', data, 'GET');
+}
+export function getIntegralOrderById(data) {
+	return request('/app/integral/getIntegralOrderById', data, 'GET');
+}
+
+export function createOrder(data) {
+	return request('/app/integral/createOrder', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+export function getUserSign() {
+	return request('/app/integral/getUserSign', null, 'GET');
+}
+
+export function doSign(data) {
+	return request('/app/integral/sign', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+
+//添加芳华币 
+export function addIntegral(type, extra, userId) { //类型 1浏览商品 2刷视频  
+
+	// 类型说明:1-浏览商品 2-刷视频 5-广告奖励
+	let data = {
+		type: type
+	};
+	if (type === 5) {
+		if (extra) data.extra = extra;
+		if (userId) data.userId = userId;
+	}
+	return request('/app/integral/addIntegral', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+
+//获取新人福利完成情况
+export function getNewcomerBenefits(type) {
+	return request('/app/integral/getNewcomerBenefits', null, 'GET', 'application/json;charset=UTF-8');
+}
+
+//获取邀请下载海报
+export function getDownloadPoster(type) {
+	return request('/app/invited/getDownloadPoster', null, 'GET');
+}
+
+//填写邀请码
+export function invited(data) {
+	return request('/app/invited', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 分享健康知识获取积分
+export function shareHealth(data) {
+	return request('/app/integral/shareHealth', data, 'POST', 'application/json;charset=UTF-8');
+}
+//添加购物车
+export function addGoodsIntoCart(data) {
+	return request('/app/integralCart/addGoodsIntoCart', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//购物车列表
+export function getFsIntegralCartList(data) {
+	return request('/app/integralCart/getFsIntegralCartList', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//购物车订单
+export function createOrderFromCart(data) {
+	return request('/app/integralCart/createOrderFromCart', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//删除购物车
+export function deleteCart(cartIds) {
+	return request('/app/integralCart/deleteGoodsFromCart/' + cartIds, null, 'DELETE',
+	'application/json;charset=UTF-8');
+}
+
+//修改购物车数量
+export function putGoodsQuantityFromCart(data) {
+	return request('/app/integralCart/putGoodsQuantityFromCart', data, 'PUT');
+}
+//购物车详情
+export function getFsIntegralCartDetails(data) {
+	return request('/app/integralCart/getFsIntegralCartDetails', data, 'POST', 'application/json;charset=UTF-8');
+}
+//提现记录
+export function getRedPacketLogList(data) {
+	return request('/app/integral/getRedPacketLogList', data, 'GET');
+}
+//提现状态
+export function getRedPacketLogByCode(data) {
+	return request('/app/integral/getRedPacketLogByCode', data, 'GET');
+}
+
+export function claimSignReward(data) {
+	return request('/app/integral/claimSignReward', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+export function bindInvForUser(data) {
+	return request('/app/userInvited/bindInvForUser', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+ export function getExpress(orderId) {
+ 	 return request('/app/integral/getExpress/'+orderId,null,'GET');
+ }

+ 264 - 0
api/liveOrder.js

@@ -0,0 +1,264 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+const api = {
+	// 直播订单
+	liveOrderList: '/appLive/app/live/liveOrder/list', // 订单列表
+	createliveOrder: '/appLive/app/live/liveOrder/create', // 创建订单
+	createReward: '/appLive/app/live/liveOrder/createReward', // 创建中奖订单
+	
+	updateConfirm: (orderId, type) => `/appLive/app/live/liveOrder/updateConfirm/${orderId}/${type} `, // 取消/支付订单确认
+	updateLiveOrder: '/appLive/app/live/liveOrder/update', // 取消/支付订单
+	liveOrderKey: '/appLive/app/live/liveOrder/confirm', // 生成订单key
+	userAddr: '/app/userAddress/getAddressByDefault', // 获取用户收货地址
+	addAddress: '/appLive/app/address/addAddress', // 添加地址
+	editAddress: '/appLive/app/address/editAddress', // 编辑地址
+	delAddress: '/appLive/app/address/delAddress', // 删除地址
+	getCitys: '/appLive/app/common/getCitys', // 获取省市区
+	parseAddress: '/appLive/app/address/parseAddress', //地址解析 
+	getAddressById: '/appLive/app/address/getAddressById', //
+
+	// 支付相关(直播)
+	aliPayment: '/appLive/app/live/liveOrder/aliPayment', // APP 支付宝支付
+	weChatPayment: '/appLive/app/live/liveOrder/weChatPayment', // APP 微信支付
+	H5WxPayment: '/appLive/app/live/liveOrder/H5WxPayment', // H5 微信支付
+	H5AliPayment: '/appLive/app/live/liveOrder/H5AliPayment', // H5 支付宝支付
+
+	queryLiveCartList: '/live/liveCart/list', //查询购物车列表
+	queryLiveCartList: '/live/liveCart/list', //查询购物车列表
+	exportLiveCartList: '(/live/liveCart/export ', //导出购物车列表
+	liveCartDetails: (cardIds) => `/live/liveCart/${cardId} `, //获取购物车详情
+	addLiveCart: '/live/liveCart ', //新增购物车
+	modifyLiveCart: '/live/liveCart/update', //修改购物车
+	delLiveCart: '/live/liveCart/delete', //删除购物车
+	cartOrder: '/appLive/app/live/liveOrder/buy', //购物车订单
+	checked: '/live/liveCart/checked', //获取购物车选中商品
+	cancelOrder: '/appLive/app/live/liveOrder/cancelOrder', // 取消订单
+	finishOrder: '/appLive/app/live/liveOrder/finishOrder', // 确认收货
+
+	getStoreOrderItems: '/appLive/app/live/storeAfterSales/getStoreOrderItems', // 获取订单项列表
+	applyAfterSales: '/appLive/app/live/storeAfterSales/applyAfterSales', // 申请售后
+	revoke: '/appLive/app/live/storeAfterSales/revoke', // 撤销售后
+	getStoreAfterSalesList: (liveId, pageSize, pageNum, status) =>
+		`/appLive/app/live/storeAfterSales/getStoreAfterSalesList?liveId=${liveId}&pageSize=${pageSize}&pageNum=${pageNum}&status=${status}`, // 获取售后列表
+	getStoreAfterSalesById: (id) => `/appLive/app/live/storeAfterSales/getStoreAfterSalesById?id=${id}`, // 获取售后详情
+
+	liveOrder: (orderId) => `/appLive/app/live/liveOrder/info/${orderId}`, // 订单详情
+	getMyStoreOrderById: (orderId) => `/appLive/app/live/liveOrder/info/${orderId}`,
+	computed: '/appLive/app/live/liveOrder/computed', // 查询创建订单信息
+	computedReward: '/appLive/app/live/liveOrder/computedReward', // 中奖填地址=>查询创建中奖订单信息
+	
+	// finishOrder: '/appLive/app/live/liveOrder/finishOrder', 
+	// cancelOrder: '/appLive/app/live/liveOrder/cancelOrder',
+	
+
+}
+
+
+// 直播订单
+export function getDicts(data) {
+ 	 return request('/appLive/app/common/getDicts',data,'GET');
+}
+
+// 创建订单
+export function createliveOrder(data) {
+	return request(api.createliveOrder, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 创建中奖订单
+export function createReward(data) {
+	return request(api.createReward, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 生成订单key
+export function liveOrderKey(data = {}) {
+	return request(api.liveOrderKey, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 点击取消/支付订单
+export function updateConfirm(data) {
+	return request(api.updateConfirm(orderId, type), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 取消/支付订单
+export function updateLiveOrder(data) {
+	return request(api.updateLiveOrder, data, 'POST', 'application/json;charset=UTF-8')
+}
+// 订单列表
+export function liveOrderList(data) {
+	return request(api.liveOrderList, data, 'GET', 'application/json;charset=UTF-8')
+}
+// 订单详情
+export function liveOrder(orderId, data = {}) {
+	return request(api.liveOrder(orderId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 获取用户收货地址
+export function userAddr(data = {}) {
+	return request(api.userAddr, data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 添加地址
+export function addAddress(data) {
+	return request(api.addAddress, data, 'POST', 'application/json;charset=UTF-8')
+}
+// 编辑地址
+export function editAddress(data) {
+	return request(api.editAddress, data, 'POST', 'application/json;charset=UTF-8')
+}
+// 删除地址
+export function delAddress(data) {
+	return request(api.delAddress, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+//获取省市区 
+export function getCitys(data) {
+	return request(api.getCitys, data, 'GET', 'application/json;charset=UTF-8')
+}
+
+
+//地址解析 
+export function parseAddress(data) {
+	return request(api.parseAddress, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 
+export function getAddressById(data) {
+	return request(api.getAddressById, data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 支付 - APP 微信支付
+export function weChatPayment(data) {
+	return request(api.weChatPayment, data, 'POST', 'application/json;charset=UTF-8');
+}
+// 支付 - APP 支付宝支付
+export function aliPayment(data) {
+	return request(api.aliPayment, data, 'POST', 'application/json;charset=UTF-8');
+}
+// 支付 - H5 微信支付
+export function H5WxPayment(data) {
+	return request(api.H5WxPayment, data, 'POST', 'application/json;charset=UTF-8');
+}
+// 支付 - H5 支付宝支付
+export function H5AliPayment(data) {
+	return request(api.H5AliPayment, data, 'POST', 'application/json;charset=UTF-8');
+}
+
+
+// 查询购物车列表
+export function queryLiveCartList(data) {
+	return request(api.queryLiveCartList, data, 'GET', 'application/json;charset=UTF-8')
+}
+// 导出购物车列表
+export function exportLiveCartList(data) {
+	return request(api.exportLiveCartList, data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 获取购物车详情
+export function liveCartDetails(cardIds, data = {}) {
+	return request(api.liveCartDetails(cardIds), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 新增购物车
+export function addLiveCart(data) {
+	return request(api.addLiveCart, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 修改购物车
+export function modifyLiveCart(data) {
+	return request(api.modifyLiveCart, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 删除购物车
+export function delLiveCart(data) {
+	return request(api.delLiveCart, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+//购物车订单
+export function cartOrder(data) {
+	return request(api.cartOrder, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+//获取购物车选中商品
+export function checked(data) {
+	return request(api.checked, data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 取消订单
+export function cancelOrder(data) {
+	return request(api.cancelOrder, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 确认收货
+export function finishOrder(data) {
+	return request(api.finishOrder, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+
+// 售后
+// 获取订单项列表
+export function getStoreOrderItems(data) {
+	return request(api.getStoreOrderItems, data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 申请售后
+export function applyAfterSales(data) {
+	return request(api.applyAfterSales, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 撤销售后
+export function revoke(data) {
+	return request(api.revoke, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+//获取售后列表
+export function getStoreAfterSalesList(liveId, pageSize, pageNum, status, data = {}) {
+	return request(api.getStoreAfterSalesList(liveId, pageSize, pageNum, status), data, 'GET',
+		'application/json;charset=UTF-8')
+}
+
+// 获取售后详情
+export function getStoreAfterSalesById(id, data = {}) {
+	return request(api.getStoreAfterSalesById(id), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 申请原因
+export function Dicts(data) {
+	return request('/appLive/app/common/getDictByKey', data, 'GET', 'application/json;charset=UTF-8');
+}
+
+
+
+export function getMyStoreOrderById(orderId, data = {}) {
+	return request(api.getMyStoreOrderById(orderId), data, 'GET', 'application/json;charset=UTF-8');
+}
+
+// 查询创建订单信息
+export function computed(data ) {
+	return request(api.computed, data, 'POST', 'application/json;charset=UTF-8');
+}
+// 中奖填地址=>查询中奖创建订单信息
+export function computedReward(data ) {
+	return request(api.computedReward, data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//填写物流
+ export function addDelivery(data) {
+ 	 return request('/appLive/app/live/storeAfterSales/addDelivery',data,'POST','application/json;charset=UTF-8');
+ }
+
+ export function getExpressMulti(data) {
+ 	 return request('/appLive/app/live/liveOrder/getExpressMulti',data,'POST','application/json;charset=UTF-8');
+ }
+ export function getExpress(data) {
+ 	 return request('/appLive/app/live/liveOrder/getExpress',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ // 抽奖中奖接口
+ export function payConfirmReward(data) {
+ 	 return request('/appLive/app/live/liveOrder/payConfirmReward',data,'POST','application/json;charset=UTF-8');
+ }
+ //查询地址
+ export function getCityId(data) {
+ 	 return request('/app/city/process',data,'GET');
+ }
+

+ 234 - 0
api/living.js

@@ -0,0 +1,234 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+const api = {
+	liveDataLike: (liveId) => `/appLive/app/live/liveData/like/${liveId}`, // 点赞
+	collectStore: (sotreId) => `/appLive/app/live/liveData/collectStore?storeId=${sotreId}`, // 店铺收藏/取消收藏
+	collectGoods: (goodId) => `/appLive/app/live/liveData/collectGoods?goodId=${goodId}`, // 商品收藏/取消收藏
+	store: (storeld, key, liveId) => `/appLive/app/live/store/${storeld}?key=${key}&liveId=${liveId}`, // 小黄车查询店铺
+
+	queryStore: (storeld, pageSize, pageNum, keywords) =>
+		`/appLive/app/live/store?storeId=${storeld}&pageSize=${pageSize}&pageNum=${pageNum}&keywords=${keywords}`, // 查询店铺
+	follow: (liveId) => `/appLive/app/live/liveData/follow/${liveId}`, // 关注/取消关注
+	// getRecentLiveViewers: (liveId) => `/appLive/app/live/liveData/getRecentLiveViewers/${liveId}`, // 获取直播间用户(展示在线用户)
+	watchUserList: (liveId, pageSize, pageNum, reasonable) =>
+		`/appLive/app/live/liveWatchUser/watchUserList/?liveId=${liveId}&pageSize=${pageSize}&pageNum=${pageNum}&reasonable=${reasonable}`, // 获取直播间用户(展示在线用户)
+	liveMsg: (liveId, pageSize, pageNum) =>
+		`/appLive/app/live/liveMsg/list/?liveId=${liveId}&pageSize=${pageSize}&pageNum=${pageNum}`, //获取最近聊天记录
+
+	// checkSms: 'api/sms/checkSms',
+	getLiveInfo: (liveId) => `/appLive/app/live/${liveId}`, // 获取直播间信息接口
+	getLiveViewData: (liveId) => `/appLive/app/live/liveData/getLiveViewData/${liveId}`, // 直播间点赞、关注、在线人数数据
+	liveRed: '/appLive/app/live/liveRed/claim', // 点击领红包
+	// 直播订单
+	liveStore: (liveId, key) => `/appLive/app/live/liveGoods/liveStore/${liveId}?key=${key}`, // 店铺展示
+	
+	
+	liveGoodsDetail: (productId) => `/appLive/app/live/liveGoods/liveGoodsDetail/${productId}`, // 商品详情
+	liveOrderUser: (liveId) => `/appLive/app/live/liveOrder/liveOrderUser/${liveId}`, // 正在购买
+	showGoods: (liveId) => `/appLive/app/live/liveGoods/showGoods/${liveId}`, // 弹出商品卡片
+	currentActivities: (liveId) => `/liveAPP/appLive/app/live/currentActivities?liveId=${liveId}`, // 弹出商品卡片
+	claim: '/appLive/app/live/liveLottery/claim', // 抽奖
+	liveLottery: '/appLive/app/live/liveLottery/detail', // 抽奖查询
+	getlive: '/appLive/app/live/live',
+	liveList: '/appLive/app/live/liveList', //直播列表
+	liveShareList: (companyId, pageSize, pageNum) =>
+		`/appLive/app/live/liveList/${companyId}?pageSize=${pageSize}&pageNum=${pageNum}`, //销售端分享直播列表
+	subNotifyLive: '/appLive/app/live/subNotifyLive' ,//订阅消息
+	coupon: '/appLive/app/live/coupon/claim' ,//领取优惠券
+	curCoupon: '/appLive/app/live/coupon/curCoupon' ,//优惠券列表
+}
+// 点赞
+export function liveDataLike(liveId, data = {}) {
+	return request(api.liveDataLike(liveId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 店铺收藏/取消收藏
+export function collectStore(sotreId, data = {}) {
+	return request(api.collectStore(sotreId), data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 商品收藏/取消收藏
+export function collectGoods(goodId, data = {}) {
+	return request(api.collectGoods(goodId), data, 'POST', 'application/json;charset=UTF-8')
+}
+// 小黄车查询店铺
+export function store(storeld, key, liveId, data = {}) {
+	return request(api.store(storeld, key, liveId), data, 'GET', 'application/json;charset=UTF-8')
+}
+// 查询店铺
+export function queryStore(storeld, pageSize, pageNum, keywords, data = {}) {
+	return request(api.queryStore(storeld, pageSize, pageNum, keywords), data, 'GET', 'application/json;charset=UTF-8',
+		false)
+}
+
+//弹出商品卡片
+export function showGoods(liveId, data = {}) {
+	return request(api.showGoods(liveId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 点击领红包
+export function liveRed(data) {
+	return request(api.liveRed, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// 关注/取消关注
+export function follow(liveId, data = {}) {
+	return request(api.follow(liveId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+
+// 观众
+// 获取直播间用户(展示在线用户)
+// export function getRecentLiveViewers(liveId, data = {}) {
+// 	return request(api.getRecentLiveViewers(liveId), data, 'GET', 'application/json;charset=UTF-8')
+// }
+// 获取直播间用户(展示在线用户)
+export function watchUserList(liveId, pageSize, pageNum, reasonable, data = {}) {
+	return request(api.watchUserList(liveId, pageSize, pageNum, reasonable), data, 'GET',
+		'application/json;charset=UTF-8')
+}
+// 获取最近聊天记录
+export function liveMsg(liveId, pageSize, pageNum, data = {}) {
+	return request(api.liveMsg(liveId, pageSize, pageNum), data, 'GET', 'application/json;charset=UTF-8')
+}
+// 加载直播间消息接口
+// export function liveMsg(liveId, pageSize, pageNum, data = {}) {
+// 	return request('/appLive/app/live/liveMsg/myList', data, 'GET', 'application/json;charset=UTF-8');
+// }
+
+
+// 小黄车
+// 店铺展示
+export function liveStore(liveId, key, data) {
+	return request(api.liveStore(liveId, key), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 商品详情
+export function liveGoodsDetail(productId, data) {
+	return request(api.liveGoodsDetail(productId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+//正在购买
+export function liveOrderUser(liveId, data = {}) {
+	return request(api.liveOrderUser(liveId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+
+
+
+
+
+// 直播间
+export function getLiveInfo(liveId, data = {}) {
+	return request(api.getLiveInfo(liveId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+// 直播间点赞、关注、在线人数数据
+export function getLiveViewData(liveId, data = {}) {
+	return request(api.getLiveViewData(liveId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+
+// 红包 卡片 抽奖
+export function currentActivities(liveId, data = {}) {
+	return request(api.currentActivities(liveId), data, 'GET', 'application/json;charset=UTF-8')
+}
+
+//抽奖
+export function claim(data) {
+	return request(api.claim, data, 'POST', 'application/json;charset=UTF-8')
+}
+// 抽奖查询
+export function liveLottery(data) {
+	return request(api.liveLottery, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+//直播间信息
+export function getlive(data) {
+	return request(api.getlive, data, 'GET', 'application/json;charset=UTF-8');
+}
+//直播列表
+export function liveList(data) {
+	return request(api.liveList, data, 'GET', 'application/json;charset=UTF-8');
+}
+
+//销售端分享直播列表
+export function liveShareList(companyId, pageSize, pageNum, data = {}) {
+	return request(api.liveShareList(companyId, pageSize, pageNum), data, 'GET', 'application/json;charset=UTF-8');
+}
+
+//订阅消息
+export function subNotifyLive(data) {
+	return request(api.subNotifyLive, data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//领取优惠券
+export function coupon(data) {
+	return request(api.coupon, data, 'POST', 'application/json;charset=UTF-8');
+}
+
+//优惠券列表
+export function curCoupon(data) {
+	return request(api.curCoupon, data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 流量(缓冲百分比)
+export function internetTraffic(data) {
+	return request('/appLive/app/live/liveTrafficLog/getInternetTraffic', data, 'POST', 'application/json;charset=UTF-8');
+}
+// 直播流量(缓冲百分比)
+export function liveInternetTraffic(data) {
+	return request('/appLive/app/live/liveTrafficLog/getLiveInternetTraffic', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 芳华币
+export function getUserIntegralInfo(data) {
+	return request('/liveAPP/appLive/app/live/liveData/getUserIntegralInfo', data, 'GET', 'application/json;charset=UTF-8');
+}
+
+// 我的中奖明细
+export function myLottery(data) {
+	return request('/appLive/app/live/liveLottery/myLottery', data, 'GET', 'application/json;charset=UTF-8');
+}
+// // 消息弹窗
+// export function sendPopMsg(liveId, pageSize, pageNum, data = {}) {
+// 	return request('/appLive/app/live/liveMsg/myList', data, 'GET', 'application/json;charset=UTF-8');
+// }
+
+
+// 查询正常状态的礼物列表,按价格升序排列
+export function activeList(data) {
+	return request('/appLive/app/live/liveGift/activeList', data, 'GET', 'application/json;charset=UTF-8');
+}
+// 用户送礼物
+export function sendliveGift(data) {
+	return request('/appLive/app/live/liveGift/send', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+
+ // 查询当前用户当前直播间领取积分的剩余时长 (传入直播间id)
+ export function remainingTime(data) {
+  	return request('/appLive/app/live/completion/remaining-time',data,'GET','application/json;charset=UTF-8');
+ }
+ // 更新用户的看课时长 (传入直播间id和看课时长)
+ export function updateWatchDuration(liveId,watchDuration) {
+  	return request(`/appLive/app/live/completion/update-watch-duration?liveId=${liveId}&watchDuration=${watchDuration}`,null,'POST','application/json;charset=UTF-8');
+ }
+ // 用户领取看课积分(传入直播间id)
+ export function receivePoints(data) {
+  	return request(`/appLive/app/live/completion/receive-points?liveId=${data}`,data,'POST','application/json;charset=UTF-8');
+ }
+ // 查询用户自己的积分记录
+ export function integrallogs(data) {
+  	return request('/appLive/app/live/completion/integral-logs',data,'GET','application/json;charset=UTF-8');
+ }
+// 静默登录
+// export function loginByMp(data) {
+// 	return request('/liveAPP/appLive/app/wx/login', data, 'POST', 'application/json;charset=UTF-8');
+// }
+export function loginByMp(data) {
+	return request('/liveAPP/appLive/app/wx/loginByMiniApp', data, 'POST', 'application/json;charset=UTF-8');
+}
+export function getUserLiveInfo() {
+	return request('/liveUser/app/user/getUserInfo', null, 'GET');
+}

+ 36 - 0
api/makeMoney.js

@@ -0,0 +1,36 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+
+//获取省钱分类列表
+export function getSaveCategory(data) {
+  return request('/app/cps/category/list', data, 'POST', 'application/json;charset=UTF-8');
+}
+//获取省钱商品列表
+export function getProductList(data) {
+  return request('/app/cps/product/list', data, 'POST', 'application/json;charset=UTF-8');
+}
+//获取商品详情
+export function getProductDetail(id) {
+  return request('/app/cps/product/detail/' + id, null, 'POST', 'application/json;charset=UTF-8');
+}
+//收藏or取消收藏商品
+export function getIsCollection(id) {
+  return request('/app/cps/product/isCollection/' + id, null, 'POST', 'application/json;charset=UTF-8');
+}
+//获取分享链接/口令
+export function getShareLink(id) {
+  return request(`/app/cps/product/generatePromotionLink/${id}`, null, 'POST', 'application/json;charset=UTF-8');
+}
+// 校验授权状态-淘宝
+export function checkAuthStatus(platform) {
+  return request(`/app/cps/auth/check/${platform}`, null, 'POST', 'application/json;charset=UTF-8');
+}
+// 获取授权链接-淘宝
+export function getAuthLink(platform) {
+  return request(`/app/cps/auth/apply/${platform}`, null, 'POST', 'application/json;charset=UTF-8');
+}
+// 获取订单列表
+export function getOrderList(data) {
+  return request('/app/cps/order/list', data, 'POST', 'application/json;charset=UTF-8');
+}

+ 38 - 0
api/message.js

@@ -0,0 +1,38 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+
+//获取我的消息列表
+ export function getMsg(){
+	 let data = {};
+ 	 return request('/app/crmMsg/getMsg',data,'GET');
+ }
+ 
+ 
+
+//获取我的消息列表
+ export function getMyCrmMsgList(msgType,page = 1, size = 10){
+	 let data = {"page":page,"pageSize":size,"msgType":msgType};
+	 //data=Object.assign(parmars, data);
+ 	 return request('/app/crmMsg/getMsgList',data,'GET');
+ }
+ 
+ 
+ //已读
+ export function doRead(msgType) {
+	 let params = {"msgType":msgType};
+ 	 return request('/app/crmMsg/doRead',params,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //已读
+ export function doReadByMsgId(msgId) {
+ 	 let params = {"msgId":msgId};
+ 	 return request('/app/crmMsg/doRead',params,'POST','application/json;charset=UTF-8');
+ }
+ 
+
+ //全部已读
+ export function setAllRead() {
+ 	 let params = {};
+ 	 return request('/app/crmMsg/setAllRead',params,'POST','application/json;charset=UTF-8');
+ }

+ 62 - 0
api/order.js

@@ -0,0 +1,62 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getInquiryOrderList(data) {
+ 	 return request('/app/inquiryOrder/getInquiryOrderList',data,'GET');
+ }
+ export function getInquiryOrderById(data) {
+ 	 return request('/app/inquiryOrder/getInquiryOrderById',data,'GET');
+ }
+ export function getInquiryOrderDetailsByOrderId(data) {
+ 	 return request('/app/inquiryOrder/getInquiryOrderDetailsByOrderId',data,'GET');
+ }
+ 
+ 
+ export function getInquiryOrderPingList(data) {
+ 	 return request('/app/inquiryOrder/getInquiryOrderPingList',data,'GET');
+ }
+ 
+ export function receiveOrder(data) {
+ 	return request('/app/inquiryOrder/receiveOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ export function refuseOrder(data) {
+ 	return request('/app/inquiryOrder/refuseOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ export function acceptOrder(data) {
+ 	return request('/app/inquiryOrder/acceptOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ export function finishOrder(data) {
+ 	return request('/app/inquiryOrder/finishOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ export function getIllnessLibraryList(data) {
+ 	 return request('/app/inquiryOrder/getIllnessLibraryList',data,'GET');
+ }
+ export function getInquiryOrderReport(data) {
+ 	 return request('/app/inquiryOrder/getInquiryOrderReport',data,'GET');
+ }
+ export function submitInquiryOrderReport(data) {
+ 	return request('/app/inquiryOrder/submitInquiryOrderReport',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+  
+  
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+ 

+ 26 - 0
api/package.js

@@ -0,0 +1,26 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ 
+ 
+ export function getPackagCateList(data) {
+ 	 return request('/app/package/getPackagCateList',data,'GET');
+ }
+ export function getPackageList(data) {
+ 	 return request('/app/package/getPackageList',data,'GET');
+ }
+ export function getPackageById(data) {
+ 	 return request('/app/package/getPackageById',data,'GET');
+ }
+ export function getPackageDoctorList(data) {
+ 	 return request('/app/package/getPackageDoctorList',data,'GET');
+ }
+ export function getNewOrderByPackageId(data) {
+ 	 return request('/app/packageOrder/getNewOrderByPackageId',data,'GET');
+ }
+ export function getIcdNameByPackageId(data) {
+ 	 return request('/app/package/getIcdNameByPackageId',data,'GET');
+ }
+ export function checkContinue(packageId) {
+ 	 return request('/app/package/checkContinue/'+packageId,null,'GET');
+ }

+ 68 - 0
api/packageOrder.js

@@ -0,0 +1,68 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ 
+ export function create(data) {  //订单来源 1:小程序 2:app 3:H5
+  	return request('/app/packageOrder/create',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function compute(parmars) {
+	let data = {"type":2};
+	data=Object.assign(parmars, data);
+  	return request('/app/packageOrder/compute',data,'POST','application/json;charset=UTF-8');
+ }
+ export function pay(data) {
+  	return request('/app/packageOrder/pay',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function payment(data) {
+  	return request('/app/packageOrder/payment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function aliPayment(data) {
+  	return request('/app/packageOrder/aliPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function wxPayment(data) {
+  	return request('/app/packageOrder/appWxPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function H5WxPayment(data) {
+  	return request('/app/packageOrder/H5WxPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function H5AliPayment(data) {
+  	return request('/app/packageOrder/H5AliPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+
+
+ 
+ 
+ export function getPackageOrderById(data) {
+ 	 return request('/app/packageOrder/getPackageOrderById',data,'GET');
+ }
+ export function getMyPackageOrderList(data) {
+ 	 return request('/app/packageOrder/getMyPackageOrderList',data,'GET');
+ }
+ export function getCompanyUserPackageOrderList(data) {
+ 	 return request('/app/packageOrder/getCompanyUserPackageOrderList',data,'GET');
+ }
+ export function getSharePackageOrderById(data) {
+ 	 return request('/app/packageOrder/getSharePackageOrderById',data,'GET');
+ }
+ export function getCompanyUserPackageOrderById(data) {
+ 	 return request('/app/packageOrder/getCompanyUserPackageOrderById',data,'GET');
+ }
+ 
+ export function cancelOrder(data) {
+  	return request('/app/packageOrder/cancel',data,'POST','application/json;charset=UTF-8');
+ }
+ // 领取礼品(创建订单)
+ export function giftCreate(data) {
+  	return request('/app/pop',data,'POST','application/json;charset=UTF-8');
+ }
+  
+ export function getAgreement() {
+  	return request('/app/doctor/getAgreement',null,'GET');
+ } 

+ 23 - 0
api/pages_watch/common.js

@@ -0,0 +1,23 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+// 上传图片
+export function uploadOSS(data){
+	return request('/watch-api/app/common/uploadOSS',data,'POST','application/json;charset=UTF-8')
+}
+
+// 城市
+export function getCitys(){
+	return request('/watch-api/app/address/getCitys',null,'GET')
+}
+
+// 经纬度换成地址(逆编码)
+export function getAddressByLocation(data){
+	return request('/watch-api/app/watch/getAddressByLocation',data,'GET')
+}
+
+// getAppVersion
+export function getAppVersion(type) {
+	 let data = {"type":type+""};
+	 return request('/watch-api/app/common/getAppVersion',data,'GET')
+ }

+ 29 - 0
api/pages_watch/device.js

@@ -0,0 +1,29 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+// 绑定小护士设备(自己) 
+export function editXHSDevice(data){
+	return request('/watch-api/app/watchUser/editXHSDevice',data,'POST','application/json;charset=UTF-8')
+}
+
+// 小护士解除绑定设备(自己) 
+export function removeXHSDevice(data){
+	return request('/watch-api/app/watchUser/removeXHSDevice',data,'GET')
+}
+
+
+export function xhsDataAdd(data){
+	return request('/watch-api/app/watch/xhsDataAdd',data,'POST','application/json;charset=UTF-8')
+}
+
+export function xhsDataAddList(data){
+	return request('/watch-api/app/watch/xhsDataAddList',data,'POST','application/json;charset=UTF-8')
+}
+
+export function xhsDataList(data){
+	return request('/watch-api/app/watch/xhsDataList',data,'GET')
+}
+// 查询最新数据
+export function getLastData(data){
+	return request('/watch-api/app/watch/getLastData',data,'GET')
+}

+ 47 - 0
api/pages_watch/health.js

@@ -0,0 +1,47 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+//健康报告-个人信息
+export function getUserByDeviceId(data){
+	return request('/watch-api/app/watchUser/getUserByDeviceId',data,'GET')
+}
+
+// 健康报告-查询数据月份
+export function queryMonthByDeviceId(data){
+	return request('/watch-api/app/watch/queryMonthByDeviceId',data,'GET')
+}
+
+// 获取文章分类列表
+export function getArticleCateList(){
+	return request('/watch-api/app/article/getArticleCateList',data,'GET')
+}
+
+// 获取文章列表
+export function getArticleList(data){
+	return request('/watch-api/app/article/getArticleList',data,'GET')
+}
+
+// 获取文章详情
+export function getArticleById(data){
+	return request('/watch-api/app/article/getArticleById',data,'GET')
+}
+
+//健康周报-步数,卡路里,睡眠等信息
+// export function getUserHealthInfoByDeviceId(data){
+// 	return request('/watch-api/watch/sport/data/getUserHealthInfoByDeviceId',data,'GET')
+// }
+export function getUserHealthInfoByDeviceId(data){
+	return request('/watch-api/app/watch/getUserHealthInfoByDeviceId',data,'GET','',180000)
+}
+
+//健康周报-文字解析
+export function queryHealthReport(data){
+	return request('/watch-api/app/watch/queryHealthReport',data,'GET','application/x-www-form-urlencoded',180000)
+}
+
+export function getHealthSurfaceList(data) {
+	return request('/app/healthSurface/getHealthSurfaceList', data, 'GET');
+}
+export function getHealthPulseList(data) {
+	return request('/app/healthPulse/getHealthPulseList', data, 'GET');
+}

+ 117 - 0
api/pages_watch/healthMonitoring.js

@@ -0,0 +1,117 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+// 工具函数:仅当 data 是对象时,才添加 deviceType(不存在才加)
+const addDeviceType = (data) => {
+  // 严格判断:只有是对象 且 不是null 时,才处理
+  if (typeof data === 'object' && data !== null) {
+    const params = { ...data };
+    // 不存在才添加,不覆盖原有值
+    if (params.deviceType === undefined) {
+      params.deviceType = uni.getStorageSync('currentDeviceType') || 0; // 可自行修改默认值,如 'watch'
+    }
+    return params;
+  }
+  // 不是对象,直接返回原值
+  return data;
+};
+
+// 查询健康监测数据类型列表
+export function monitorDataType(data){
+	return request('/watch-api/app/watch/monitorDataType',addDeviceType(data),'GET')
+}
+
+// 获取血糖数据
+export function bgInfo(data){
+	return request('/watch-api/app/watch/bg/list',addDeviceType(data),'GET')
+}
+
+// 获取血糖数据(分页)
+export function bgInfoPage(data){
+	return request('/watch-api/app/watch/bg/page',addDeviceType(data),'GET')
+}
+
+// 获取血糖异常数据
+export function bgAbnormaInfo(data){
+	return request('/watch-api/app/watch/bg/count',addDeviceType(data),'GET')
+}
+
+// 获取血压数据
+export function bpInfo(data){
+	return request('/watch-api/app/watch/bp/list',addDeviceType(data),'GET')
+}
+
+// 获取血压数据(分页)
+export function bpInfoPage(data){
+	return request('/watch-api/app/watch/bp/page',addDeviceType(data),'GET')
+}
+
+// 获取血压异常数据
+export function bpAbnormaInfo(data){
+	return request('/watch-api/app/watch/bp/count',addDeviceType(data),'GET')
+}
+
+// 获取心率数据
+export function heartRateInfo(data){
+	return request('/watch-api/app/watch/heart/rate/list',addDeviceType(data),'GET')
+}
+
+// 获取心率数据提醒统计
+export function heartRateCount(data){
+	return request('/watch-api/app/watch/heart/rate/count',addDeviceType(data),'GET')
+}
+
+// 获取血氧数据
+export function spInfo(data){
+	return request('/watch-api/app/watch/sp/list',addDeviceType(data),'GET')
+}
+
+// 获取血氧分时间段常数据统计
+export function spCount(data){
+	return request('/watch-api/app/watch/sp/count',addDeviceType(data),'GET')
+}
+
+// 获取睡眠分时间段查询
+export function sleepInfo(data){
+	return request('/watch-api/app/watch/sleep/list',addDeviceType(data),'GET')
+}
+
+// 查询某个时间段温度数据
+export function temperature(data){
+	return request('/watch-api/app/watch/temperature/list',addDeviceType(data),'GET')
+}
+
+// 查询某个时间段尿酸数据
+export function ualist(data){
+	return request('/watch-api/app/watch/ua/list',addDeviceType(data),'GET')
+}
+
+// 尿酸分时间段数据统计
+export function uaCount(data){
+	return request('/watch-api/app/watch/ua/count',addDeviceType(data),'GET')
+}
+
+// 尿酸分时间段查询 分页
+export function uaPageList(data){
+	return request('/watch-api/app/watch/ua/page',addDeviceType(data),'GET')
+}
+
+// 活动详情统计
+export function sportDataByDate(data){
+	return request('/watch-api/app/watch/sport/dataByDate',addDeviceType(data),'GET')
+}
+
+// 根据运动类型查详情
+export function sportDataByType(data){
+	return request('/watch-api/app/watch/sport/dataByType',addDeviceType(data),'GET')
+}
+
+// 查询某个时间段压力数据
+export function fatigueInfo(data){
+	return request('/watch-api/app/watch/fatigue/list',addDeviceType(data),'GET')
+}
+
+// 查询某个时间段压力异常数据统计
+export function fatigueCount(data){
+	return request('/watch-api/app/watch/fatigue/count',addDeviceType(data),'GET')
+}

+ 150 - 0
api/pages_watch/index.js

@@ -0,0 +1,150 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+// 首页轮播绑定信息
+export function getInfoByDeviceIds(data) {
+	// return request('/watch-api/app/watch/getInfoByDeviceIds',data,'GET')
+	 return request('/watch-api/app/watch/getInfoByDeviceIds',data,'POST','application/json;charset=UTF-8')
+}
+
+// 健康风险预警信息(分页)
+export function alarmInfo(data) {
+	return request('/watch-api/app/watch/queryAlarmPageByStatus',data,'GET')
+}
+
+// 首页健康监测数据
+export function queryIndexWatchData(data) {
+	return request('/watch-api/app/watch/queryIndexWatchData',data,'GET')
+}
+
+// 根据健康监测数据类型id批量查询详情
+export function getBatchData(data) {
+	return request('/watch-api/app/watch/getBatchData',data,'GET')
+}
+
+
+// 设备管理首页查询
+export function getSetUpInfoByDeviceId(data) {
+	return request('/watch-api/app/watch/getSetUpInfoByDeviceId',data,'GET')
+}
+
+// 设备管理刷新
+export function refresh(data){
+	return request('/watch-api/app/watch/refresh',data,'GET')
+}
+
+// 设置久坐
+export function setSedentary(data){
+	return request('/watch-api/app/watch/sedentary/set',data,'POST','application/json;charset=UTF-8')
+}
+
+// 跌倒检测
+export function fallcheck(data){
+	return request('/watch-api/app/watch/fallcheck',data,'GET')
+}
+
+// 心脏健康
+export function autoaf(data){
+	return request('/watch-api/app/watch/autoaf',data,'GET')
+}
+
+// 心率指导
+export function hralarm(data){
+	return request('/watch-api/app/watch/hralarm',data,'POST','application/json;charset=UTF-8')
+}
+
+// 血氧预警
+export function spo2alarm(data){
+	return request('/watch-api/app/watch/spo2alarm',data,'POST','application/json;charset=UTF-8')
+}
+
+// 一键省电
+export function power(data){
+	return request('/watch-api/app/watch/power',data,'POST','application/json;charset=UTF-8')
+}
+
+// 日期与时间
+export function setDeviceTime(data){
+	return request('/watch-api/app/watch/setDeviceTime',data,'GET')
+}
+
+// 翻腕亮屏
+export function lcdgesture(data){
+	return request('/watch-api/app/watch/lcdgesture',data,'GET')
+}
+
+// 单位设置
+export function setDeviceUnit(data){
+	return request('/watch-api/app/watch/setDeviceUnit',data,'GET')
+}
+
+// 新手指导
+export function guidList(){
+	return request('/watch-api/app/watch/guidList',null,'GET')
+}
+
+// 手表模式
+export function setDeviceMode(data){
+	return request('/watch-api/app/watch/setDeviceMode',data,'POST','application/json;charset=UTF-8')
+}
+
+// 设备信息 - 手表版本
+export function getDeviceData(data){
+	return request('/watch-api/app/watch/getDeviceData',data,'GET')
+}
+
+// 设备信息二维码json
+export function getDeviceDataJson(data){
+	return request('/watch-api/app/watch/getDeviceDataJson',data,'GET')
+}
+
+// 修改SIM
+export function updateSim(data){
+	return request('/watch-api/app/watch/updateSim',data,'GET')
+}
+
+// 出厂设置
+export function resetFactory(data){
+	return request('/watch-api/app/watch/factory/reset',data,'GET')
+}
+
+
+// 下发通讯录
+export function syncPhonebook(data){
+	return request('/watch-api/app/watch/phonebook/sync',data,'POST','application/json;charset=UTF-8')
+}
+
+// 情况通讯录
+export function clearPhonebook(data){
+	return request('/watch-api/app/watch/phonebook/clear',data,'GET')
+}
+
+// 添加闹钟
+export function setClockalarm(data){
+	return request('/watch-api/app/watch/clockalarm/set',data,'POST','application/json;charset=UTF-8')
+}
+
+// 解绑
+export function removeDevice(data){
+	return request('/watch-api/app/watchUser/removeDevice',data,'GET')
+}
+
+// 获取sim手机号
+export function getSim(data){
+	return request('/watch-api/app/watch/getSim',data,'GET')
+}
+
+// 运动轨迹
+export function queryGnssByDateAndDeviceId(data){
+	return request('/watch-api/app/watch/queryGnssByDateAndDeviceId',data,'GET')
+}
+
+// 首页运动记录(当天)
+export function querySportRecord(data){
+	return request('/watch-api/app/watch/sport/queryRecord',data,'GET')
+}
+
+// 首页运动/目标 (当天)
+export function querySportData(data){
+	return request('/watch-api/app/watch/sport/data',data,'GET')
+}

+ 23 - 0
api/pages_watch/message.js

@@ -0,0 +1,23 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+// 查询预警 分页
+export function queryAlarmPageByStatus(data){
+	return request('/watch-api/app/watch/queryAlarmPageByStatus',data,'GET')
+}
+
+// 解除预警(设置已读)
+export function setAlarmStatusById(data){
+	return request('/watch-api/app/watch/setAlarmStatusById',data,'POST','application/json;charset=UTF-8')
+}
+
+// 删除预警
+export function deleteByIds(data){
+	return request('/watch-api/app/watch/deleteByIds',data,'POST','application/json;charset=UTF-8')
+}
+
+
+// 一键设置已读
+export function setAlarmStatusByDeviceId(data){
+	return request('/watch-api/app/watch/setAlarmStatusByDeviceId',data,'GET')
+}

+ 47 - 0
api/pages_watch/user.js

@@ -0,0 +1,47 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+// 登录
+export function login(data){
+	return request('/watch-api/app/user/login',data,'POST','application/json;charset=UTF-8')
+}
+
+// 微信
+export function loginByWeChat(data){
+	return request('/watch-api/app/user/loginByWeChat',data,'POST','application/json;charset=UTF-8')
+}
+
+// 用户信息
+export function getWatchUserInfo(data){
+	return request('/watch-api/app/watchUser/getUserInfo',data,'GET')
+}
+
+// 自己绑定手表
+export function editDevice(data){
+	return request('/watch-api/app/watchUser/editDevice',data,'POST','application/json;charset=UTF-8')
+}
+
+// 修改用户信息
+export function editUser(data){
+	return request('/watch-api/app/watchUser/editUser',data,'POST','application/json;charset=UTF-8')
+}
+
+// 修改用户信息(绑定家人)
+export function editMyfamily(data){
+	return request('/watch-api/app/watchUser/editUser',data,'POST','application/json;charset=UTF-8')
+}
+ 
+// 验证预警手表(绑定需要成功后调用修改用户信息接口,自己绑定不用调用修改用户信息接口)
+export function getStatus(data){
+	return request('/watch-api/app/watch/getStatus',data,'GET')
+}
+
+// 我的家人
+export function getFamWatchInfo(data){
+	return request('/watch-api/app/watchUser/getWatchInfo',data,'GET')
+}
+
+// 修改我的家人信息
+export function editFamilyUser(data){
+	return request('/watch-api/app/watchUser/editFamilyUser',data,'POST','application/json;charset=UTF-8')
+}

+ 39 - 0
api/patient.js

@@ -0,0 +1,39 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ export function getPatientList() {
+ 	 return request('/app/patient/getPatientList',null,'GET');
+ }
+ export function getPatientById(data) {
+ 	 return request('/app/patient/getPatientById',data,'GET');
+ }
+ export function delPatient(data) {
+ 	return request('/app/patient/delPatient',data,'POST','application/json;charset=UTF-8');
+ }
+ export function addPatient(data) {
+ 	return request('/app/patient/addPatient',data,'POST','application/json;charset=UTF-8');
+ }
+ export function editPatient(data) {
+ 	return request('/app/patient/editPatient',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+  
+  
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+ 

+ 41 - 0
api/pay_new.js

@@ -0,0 +1,41 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+const api = {
+	// 支付
+	zfbPayment: '/appLive/app/live/liveOrder/aliPayment', // 支付宝付款
+	weChatPayment: '/appLive/app/live/liveOrder/weChatPayment', // 微信付款
+
+
+	// updateConfirm: (orderId, type) => `/appLive/app/live/liveOrder/updateConfirm/${orderId}/${type} `, // 取消/支付订单确认
+
+
+
+}
+
+
+//微信支付
+ export function weChatPayment(data) {
+ 	 return request(api.weChatPayment,data,'POST','application/json;charset=UTF-8');
+ }
+// 支付宝付款
+export function zfbPayment(data) {
+	return request(api.zfbPayment, data, 'POST', 'application/json;charset=UTF-8')
+}
+
+// // H5环境下的支付宝支付
+// export function H5AliPayment(data) {
+// 	return request('/appLive/app/live/liveOrder/H5AliPayment', data, 'POST', 'application/json;charset=UTF-8')
+// }
+// // APP环境下的支付宝支付
+// export function aliPayment(data) {
+// 	return request('/appLive/app/live/liveOrder/aliPayment', data, 'POST', 'application/json;charset=UTF-8')
+// }
+
+// APP环境下的微信支付
+export function appWxPayment(data) {
+	return request('/appLive/app/live/liveOrder/appWxPayment', data, 'POST', 'application/json;charset=UTF-8')
+}
+// H5环境下的微信支付
+export function H5WxPayment(data) {
+	return request('/appLive/app/live/liveOrder/H5WxPayment', data, 'POST', 'application/json;charset=UTF-8')
+}

+ 38 - 0
api/prescribe.js

@@ -0,0 +1,38 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+
+export function getPrescribeList(data) {
+ 	return request('/app/prescribe/getPrescribeList',data,'GET');
+}
+export function getPrescribeById(data) {
+ 	return request('/app/prescribe/getPrescribeById',data,'GET');
+}
+ 
+
+
+
+
+
+ 
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+  
+  
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+ 

+ 27 - 0
api/qw.js

@@ -0,0 +1,27 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+//在线状态,AI或者人工
+ export function getStats(data) {
+ 	 return request('/apis/app/qw/user/getStats',data,'GET');
+ }
+
+ //获取企微用户信息
+ export function getQwUserInfo(data) {
+ 	 return request('/apis/app/qw/user/getQwUserInfo',data,'GET');
+ }
+ 
+ //获取企微用户对应的主体
+ export function getQwUserList(companyUserId) {
+ 	 return request('/apis/app/qw/user/list?companyUserId='+companyUserId,null,'POST','application/json;charset=UTF-8');
+ }
+
+ //会员看课详情
+  export function getCourseWatch(data) {
+  	 return request(`/apis/app/qw/statistics/course/watch?userId=${data.userId}&type=${data.type}&fsUserId=${data.fsUserId}&corpId=${data.corpId}`,data,'POST','application/json;charset=UTF-8');
+  }
+
+  //更新企微用户信息
+  export function updateQwUserInfo(data) {
+  	 return request('/apis/app/qw/user/UpdateQwUserInfo',data,'POST','application/json;charset=UTF-8');
+  }

+ 75 - 0
api/shortvideo.js

@@ -0,0 +1,75 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+ //获取视频列表
+ export function getVideoList(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/video/getVideoList',data,'GET');
+ }
+ 
+ 
+ //我的收藏视频列表
+ export function getFavoriteVideoList(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/video/getFavoriteVideoList',data,'GET');
+ }
+ 
+ 
+ //收藏
+ export function doFavorite(videoId) {
+ 	 let data={"videoId":videoId};
+ 	 return request('/app/video/doFavorite',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+
+ //点赞
+ export function doLike(videoId) {
+ 	 let data={"videoId":videoId};
+	 console.log("qxj doLike videoId:"+videoId);
+ 	 return request('/app/video/doLike',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //获取视频评论
+ export function getComments(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/video/getComments',data,'GET');
+ }
+ 
+  //评论回复列表
+ export function getReplies(parmars,page = 1, size = 10) {
+   let data = {"pageNum":page,"pageSize":size};
+   data=Object.assign(parmars, data);
+   return request('/app/video/getReplies',data,'GET');
+ }
+ 
+ 
+ //视频评论
+ export function addComment(data) {
+ 	 return request('/app/video/addComment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //评论点赞
+ export function doLikeComment(data) {
+ 	 return request('/app/video/doLikeComment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ //删除评论
+ export function deleteComment(data) {
+ 	 return request('/app/video/delComment',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+
+ // 增加分享
+ export function shareVideo(data) {
+ 	 return request('/app/video/shareVideo',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ // 广告传参
+ export function createLogs(data) {
+ 	 return request('/app/common/createLogs',data,'POST','application/json;charset=UTF-8');
+ }

+ 25 - 0
api/store.js

@@ -0,0 +1,25 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+export function getStoreList(data) {
+	return request('/app/store/getStoreList', data, 'GET');
+}
+// 开票
+export function bill(data) {
+	return request('/app/storeOrder/bill', data, 'POST', 'application/json;charset=UTF-8');
+}
+
+// 开票详情
+export function billInfo(data) {
+	return request('/app/storeOrder/billInfo', data, 'GET');
+}
+
+// 开票历史
+export function billList(data) {
+	return request('/app/storeOrder/billList', data, 'GET');
+}
+
+// 开票冲红
+export function billBack(data) {
+	return request('/app/storeOrder/billBack', data, 'GET');
+}

+ 29 - 0
api/storeAfterSales.js

@@ -0,0 +1,29 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getStoreOrderItems(data) {
+ 	 return request('/app/storeAfterSales/getStoreOrderItems',data,'GET');
+ } 
+ export function applyAfterSales(data) {
+ 	 return request('/app/storeAfterSales/applyAfterSales',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function getStoreAfterSalesList(data) {
+ 	 return request('/app/storeAfterSales/getStoreAfterSalesList',data,'GET');
+ } 
+ 
+ export function getStoreAfterSalesById(data) {
+ 	 return request('/app/storeAfterSales/getStoreAfterSalesById',data,'GET');
+ } 
+ export function revoke(data) {
+ 	 return request('/app/storeAfterSales/revoke',data,'POST','application/json;charset=UTF-8');
+ }
+ export function addDelivery(data) {
+ 	 return request('/app/storeAfterSales/addDelivery',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ 
+ 
+ 
+ 

+ 55 - 0
api/storeOrder.js

@@ -0,0 +1,55 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+ 
+ export function getMyStoreOrderList(data) {
+ 	 return request('/app/storeOrder/getMyStoreOrderList',data,'GET');
+ } 
+ 
+ export function getCompanyUserStoreOrderList(data) {
+ 	 return request('/app/storeOrder/getCompanyUserStoreOrderList',data,'GET');
+ }
+ 
+ 
+ export function getMyStoreOrderById(data) {
+ 	 return request('/app/storeOrder/getMyStoreOrderById',data,'GET');
+ } 
+ 
+ export function getStoreOrderById(data) {
+ 	 return request('/app/storeOrder/getStoreOrderById',data,'GET');
+ } 
+ 
+ export function getCompanyUserStoreOrderById(data) {
+ 	 return request('/app/storeOrder/getCompanyUserStoreOrderById',data,'GET');
+ } 
+ 
+ 
+  
+ export function pay(data) {
+ 	 return request('/app/storeOrder/pay',data,'POST','application/json;charset=UTF-8');
+ }
+ export function compute(data) {
+ 	 return request('/app/storeOrder/compute',data,'POST','application/json;charset=UTF-8');
+ }
+ export function cancelOrder(data) {
+ 	 return request('/app/storeOrder/cancelOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ export function finishOrder(data) {
+ 	 return request('/app/storeOrder/finishOrder',data,'POST','application/json;charset=UTF-8');
+ }
+ export function getExpress(data) {
+ 	 return request('/app/storeOrder/getExpress',data,'POST','application/json;charset=UTF-8');
+ }
+ export function getOrderCount() {
+ 	 return request('/app/storeOrder/getOrderCount',null,'GET');
+ } 
+ 
+ export function zfbPayment(data) {
+  	return request('/app/storeOrder/zfbPayment',data,'POST','application/json;charset=UTF-8');
+ }
+ export function getChildrenExpress(data) {
+ 	 return request('/app/storeOrder/getChildrenExpress',data,'POST','application/json;charset=UTF-8');
+ }
+ export function splitOrder2ERP(data) {
+ 	 return request('/app/storeOrder/splitOrder2ERP',data,'POST','application/json;charset=UTF-8');
+ }

+ 8 - 0
api/storeProduct.js

@@ -0,0 +1,8 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function getStoreProductList(data) {
+ 	 return request('/app/storeProduct/getStoreProductList',data,'GET');
+ }
+ 
+ 

+ 24 - 0
api/test.js

@@ -0,0 +1,24 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+ export function getTestList(data) {
+ 	 return request('/app/test/getTestList',data,'GET');
+ }
+ export function getTestDetails(data) {
+ 	 return request('/app/test/getTestDetails',data,'GET');
+ }
+ 
+ export function getTestTempDetails(data) {
+ 	 return request('/app/test/getTestTempDetails',data,'GET');
+ }
+ export function getTestReport(data) {
+ 	 return request('/app/test/getTestReport',data,'GET');
+ }
+ export function getTestReportImg(data) {
+ 	 return request('/app/test/getTestReportImg',data,'GET');
+ }
+ export function doReport(data) {
+  	return request('/app/test/doReport',data,'POST','application/json;charset=UTF-8');
+ }
+  
+  

+ 235 - 0
api/user.js

@@ -0,0 +1,235 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+ export function login(data) {
+ 	 return request('/app/app/login',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function loginByWeChat(data) {
+ 	 return request('/app/app/loginByWeChat',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function loginByApple(data) {
+ 	 return request('/app/app/loginByApple',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function loginByMp(data) {
+ 	 return request('/app/wx/loginByMp?appId=wx7a3715e6f0d22c56',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function setPhone(data) {
+ 	 return request('/app/app/setPhone',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ export function setIPhoneNumber(data) { 
+ 	 return request('/app/app/setIPhoneNumber',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function bindWechat(data) {
+ 	 return request('/app/app/bindWeChat',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ export function register(data) {
+ 	 return request('/app/app/register',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function getUserInfo() {
+ 	 return request('/app/user/getUserInfo',null,'GET');
+ }
+ 
+ export function checkLogin() {
+ 	 return request('/app/app/checkLogin',null,'GET');
+ }
+ export function getAllUsers(data) {
+ 	 return request('/app/app/getAllUsers',data,'GET');
+ }
+ export function getUserInfoByUserId(data) {
+ 	 return request('/app/app/getUserInfoByUserId',data,'GET');
+ }
+ 
+ export function setPwd(data) {
+ 	 return request('/app/app/setPwd',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function setHeadImg(data) {
+ 	 return request('/app/app/setHeadImg',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function setUserInfo(data) {
+ 	 return request('/app/user/editUser',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ export function editQrCode(data) {
+ 	 return request('/app/app/editQrCode',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ export function getAlipayQrImg() {
+ 	 return request('/app/storePayment/getAlipayQrImg',null,'GET');
+ }
+ 
+ 
+ export function getMyCardList(data) {
+ 	 return request('/app/app/getMyCardList',data,'GET');
+ }
+ 
+ export function delMyCard(cId) {
+ 	 return request('/app/app/delMyCard?cardId='+cId,null,'POST');
+ }
+ 
+ export function getAppletScheme(cId) {
+ 	 return request('/app/app/getAppletScheme?cardId='+cId,null,'GET');
+ }
+ 
+ export function getShortUrl(url,title) {
+ 	 return request('/app/app/getShortUrl?url='+url+'&title='+title,null,'GET');
+ }
+ 
+ 
+ export function getMyCouponList(data) {
+ 	 return request('/app/user/getMyCouponList',data,'GET');
+ }
+ 
+ export function getMyEnableCouponList(data) {
+ 	 return request('/app/user/getMyEnableCouponList',data,'GET');
+ }
+ 
+ export function registerDoctor(data) {
+ 	return request('/app/user/registerDoctor',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ export function getMyCouponCount() {
+ 	 return request('/app/user/getMyCouponCount',null,'GET');
+ }
+ 
+ //查看推送设置
+ export function getUserPushSetting() {
+ 	 return request('/app/user/getUserPushSetting',null,'GET');
+ }
+ 
+ 
+ export function editUserPushSetting(data) {
+ 	 return request('/app/user/editUserPushSetting',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ // 健康管家二维码
+ export function getAppContactWay(userId) {
+ 	 return request('/app/user/getAppContactWay/'+userId,null,'GET');
+ }
+ 
+ // 退出登录 清除jpushId
+ export function logoutjpushId() {
+ 	 return request('/app/app/logout',null,'GET');
+ }
+ 
+ // 最新通知及未读条数
+ export function getLastAndReadStatus() {
+ 	 return request('/app/uniPushLog/getLastAndReadStatus',null,'GET');
+ }
+ 
+ // 查询所有通知
+ export function getPushLog(data) {
+ 	 return request('/app/uniPushLog/list',data,'GET');
+ }
+ 
+ // 通知 一键已读
+ export function getPushLogRead(data) {
+ 	 return request('/app/uniPushLog/setIsRead',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+// 更新jpushId
+ export function updatePushId(data) {
+ 	 return request('/app/app/updatePushId',data,'GET');
+ }
+ 
+ // 更新用户是否绑定app
+  export function updateHistoryApp(data) {
+  	 return request('/app/user/updateHistoryApp',data,'GET');
+  }
+  
+  
+  // 账号注销
+ export function deleteUser(userId) {
+   return request('/app/user/deleteUser/'+userId,null,'POST');
+}
+   
+   
+  
+  
+ //新增弹窗记录
+ export function popAd(data) {
+ 	 return request('/app/pop/add',data,'GET');
+ }
+ 
+ // 判断是否需要弹窗
+ export function isCreateAd(data) {
+ 	 return request('/app/pop/isCreate',data,'GET');
+ }
+ 
+ // 投诉模板
+ export function templateList() {
+ 	 return request('/app/complaint/treeList',null,'GET');
+ } 
+ // 投诉
+ export function complaint(data) {
+ 	return request('/app/complaint',data,'POST','application/json;charset=UTF-8');
+ }
+ // 课程投诉模板
+ export function getTypeTree() {
+ 	 return request('/app/user/complaint/getTypeTree',null,'GET');
+ } 
+ // 课程投诉
+ export function complaintRecord(data) {
+ 	return request('/app/user/complaint/record',data,'POST','application/json;charset=UTF-8');
+ }
+ export function resetPassword(data) {
+ 	return request('/app/app/resetPassword',data,'POST','application/json;charset=UTF-8');
+ }
+ export function sendCode(data) {
+ 	return request('/app/app/sendCode',data,'POST','application/json;charset=UTF-8');
+ }
+ export function loginByPhone(data) {
+ 	return request('/app/app/loginByPhone',data,'POST','application/json;charset=UTF-8');
+ }
+ export function registerSendCode(data) {
+ 	return request('/app/app/registerSendCode',data,'POST','application/json;charset=UTF-8');
+ }
+ export function registerByPhone(data) {
+ 	return request('/app/app/registerByPhone',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ // 用户注销
+ export function removeUser(data) {
+ 	return request('/app/user/removeUser',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+
+ export function loginByUserId(data) {
+ 	return request('/app/app/loginByUserId',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //用户钱包明细
+ export function getWallet(data) {   
+  	return request('/app/common/getWallet/'+data.userId,data,'GET');
+ }
+ //兑换明细
+ export function exchangDetail(data) {
+  	return request('/app/common/exchangDetail',data,'POST','application/json;charset=UTF-8');
+ }
+ //用户兑换提现
+ export function integralExchange(data) {
+  	return request('/app/common/integralExchange/'+data.userId,data,'GET','application/json;charset=UTF-8');
+ }
+ //用户提现到微信
+ export function withDrawal(data) {
+  	return request('/app/integral/withdrawal',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ //购买会员优惠券
+ export function getCouponsUnderVipPackage(data) {
+  	return request('/app/userVip/getCouponsUnderVipPackage',data,'GET');
+ }
+ 

+ 49 - 0
api/userAddress.js

@@ -0,0 +1,49 @@
+import Request from '../common/request.js';
+let request = new Request().http
+ 
+
+ export function getAddressByDefault() {
+ 	 return request('/app/userAddress/getAddressByDefault',null,'GET');
+ }
+ export function getAddressList() {
+ 	 return request('/app/userAddress/getAddressList',null,'GET');
+ }
+ export function getAddressById(data) {
+ 	 return request('/app/userAddress/getAddressById',data,'GET');
+ }
+ export function delAddress(data) {
+ 	return request('/app/userAddress/delAddress',data,'POST','application/json;charset=UTF-8');
+ }
+ export function addAddress(data) {
+ 	return request('/app/userAddress/addAddress',data,'POST','application/json;charset=UTF-8');
+ }
+ export function editAddress(data) {
+ 	return request('/app/userAddress/editAddress',data,'POST','application/json;charset=UTF-8');
+ }
+ export function parseAddress(data) {
+ 	return request('/app/userAddress/parseAddress',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ 
+ 
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+  
+  
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+ 

BIN
assets/css/bushu_icon.png


+ 220 - 0
assets/css/common.less

@@ -0,0 +1,220 @@
+  
+ page {
+   background: #f7f7f7;
+   height: 100%;
+ }
+ 
+ .container{
+   height: 100%;
+ } 
+  .border-line {
+  	position: relative;
+  	&::after {
+  		content: "";
+  		position: absolute;
+  		bottom: 0;
+  		left: 0;
+  		border-bottom: 1px solid #F5F7FA;
+  		width: 100%;
+  		transform: scaleY(0.5);
+  		border-top-color: #F5F7FA;
+  		border-right-color: #F5F7FA;
+  		border-left-color: #F5F7FA;
+  	}
+  }
+  /*单行文本溢出省略号*/
+  .one-t {
+    overflow: hidden;
+	/*#ifndef APP-NVUE*/  
+    white-space: nowrap;
+	/*#endif*/
+    text-overflow: ellipsis;
+    transition: all linear 0.2s;
+  }
+  
+  /*多行文本溢出省略号*/
+  .more-t {
+    overflow: hidden;
+    text-overflow: ellipsis;
+	/*#ifndef APP-NVUE*/  
+    display: -webkit-box;
+    -webkit-line-clamp: 2;
+    -webkit-box-orient: vertical;
+	/*#endif*/
+    transition: all linear 0.2s;
+  }
+  
+  /* ==================
+            flex布局(colorui里面也有相关基础样式)
+   ==================== */
+  /* x水平排列*/
+  .x-f {
+    display: flex;
+    align-items: center;
+  }
+  
+  /*x两端且水平居中*/
+  .x-bc {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+	flex-direction: row;
+  }
+  
+  /*x平分且水平居中*/
+  .x-ac {
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+  }
+  
+  /*x水平靠上对齐*/
+  .x-start {
+    display: flex;
+    align-items: flex-start;
+  }
+  
+  /*x水平靠下对齐*/
+  .x-end {
+    display: flex;
+    align-items: flex-end;
+  }
+  
+  /*上下左右居中*/
+  .x-c {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+  
+  .x-jc{
+	  justify-content: flex-start;
+  }
+  
+  
+  /*y竖直靠左*/
+  .y-start {
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
+  }
+  
+  /*y竖直靠右*/
+  .y-end {
+    display: flex;
+    flex-direction: column;
+    align-items: flex-end;
+  }
+  
+  /*y竖直居中*/
+  .y-f {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+  }
+  
+  // y竖直两端
+  .y-b {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+  }
+  
+  /*y竖直两端居中*/
+  .y-bc {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: space-between;
+  }
+ /* layout */
+ .acea-row {
+   display: flex;
+   flex-wrap: wrap;
+   /* 辅助类 */
+ }
+ 
+
+ 
+ .acea-row.row-middle {
+   align-items: center;
+ }
+ .acea-row.row-top {
+   align-items: flex-start;
+ }
+ .acea-row.row-bottom {
+   align-items: flex-end;
+ }
+ .acea-row.row-center {
+   justify-content: center;
+ }
+ .acea-row.row-right {
+   justify-content: flex-end;
+ }
+ .acea-row.row-left {
+   justify-content: flex-start;
+ }
+ .acea-row.row-between {
+   justify-content: space-between;
+ }
+ .acea-row.row-around {
+   justify-content: space-around;
+ }
+ .acea-row.row-column-around {
+   flex-direction: column;
+   justify-content: space-around;
+ }
+ .acea-row.row-column {
+   flex-direction: column;
+ }
+ .acea-row.row-column-between {
+   flex-direction: column;
+   justify-content: space-between;
+ }
+ /* 上下左右垂直居中 */
+ .acea-row.row-center-wrapper {
+   align-items: center;
+   justify-content: center;
+ }
+ /* 上下两边居中对齐 */
+ .acea-row.row-between-wrapper {
+   align-items: center;
+   justify-content: space-between;
+ }
+ 
+ .cts-btn {
+ 	display: flex;
+ 	align-items: center;
+ 	justify-content: center;
+ 	width: 100%;
+ 	height: 80rpx;
+ 	// background: linear-gradient(to right, #35d861 0%, #35d861 100%);
+ 	// background: -moz-linear-gradient(to right, #35d861 0%, #35d861 100%);
+ 	background: #FF5C03;
+ 	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);
+ 	margin-left: 30rpx;
+ 	margin-right: 30rpx;
+ 	width: calc(100% - 30px);
+ }
+
+
+.flex{
+	flex: 1;
+}
+
+.page_container {
+	display: flex;
+	flex-direction: column;
+	height: 100vh;
+}
+
+.text_message_container {
+	word-break: break-all;
+}
+
+

+ 231 - 0
assets/css/common.scss

@@ -0,0 +1,231 @@
+// 字体
+@for $i from 20 through 100{
+    .fs#{$i} {
+		font-size: #{$i}rpx;
+    }
+}
+// 颜色
+@for $i from 0 through 9{
+    .color#{$i} {
+		color: #{$i}#{$i}#{$i};
+    }
+}
+// padding
+@for $i from 1 through 100{
+    .p#{$i} {
+			padding: #{$i}rpx;
+    }
+}
+@for $i from 1 through 100{
+    .ptb#{$i} {
+			padding-top: #{$i}rpx ;
+			padding-bottom: #{$i}rpx ;
+    }
+}
+@for $i from 1 through 100{
+    .plr#{$i} {
+			padding-left: #{$i}rpx;
+			padding-right: #{$i}rpx;
+    }
+}
+@for $i from 1 through 200{
+    .pt#{$i} {
+			padding-top: #{$i}rpx;
+    }
+}
+@for $i from 1 through 100{
+    .pl#{$i} {
+			padding-left: #{$i}rpx;
+    }
+}
+@for $i from 1 through 100{
+    .pr#{$i} {
+			padding-right: #{$i}rpx;
+    }
+}
+@for $i from 1 through 200{
+    .pb#{$i} {
+			padding-bottom: #{$i}rpx;
+    }
+}
+// margin
+@for $i from 1 through 100{
+    .m#{$i} {
+			margin: #{$i}rpx;
+    }
+}
+@for $i from 1 through 100{
+    .mtb#{$i} {
+			margin-top: #{$i}rpx ;
+			margin-bottom: #{$i}rpx ;
+    }
+}
+@for $i from 1 through 100{
+    .mlr#{$i} {
+			margin-left: #{$i}rpx;
+			margin-right: #{$i}rpx;
+    }
+}
+@for $i from 1 through 100{
+    .mt#{$i} {
+			margin-top: #{$i}rpx;
+    }
+}
+@for $i from 1 through 100{
+    .ml#{$i} {
+			margin-left: #{$i}rpx;
+    }
+}
+@for $i from 1 through 100{
+    .mr#{$i} {
+			margin-right: #{$i}rpx;
+    }
+}
+@for $i from 1 through 100{
+    .mb#{$i} {
+			margin-bottom: #{$i}rpx;
+    }
+}
+// 圆角
+@for $i from 0 through 100{
+    .radius#{$i} {
+			border-radius: #{$i}rpx;
+    }
+}
+// padding 左右+width自动计算
+@for $i from 10 through 60{
+    .w-calc-#{$i} {
+			width: calc(100% - #{$i*2}rpx);
+			padding-left:  #{$i}rpx;
+			padding-right:  #{$i}rpx;
+    }
+}
+
+// gap
+@for $i from 1 through 100{
+	.gap#{$i} {
+		gap: #{$i}rpx;
+	}
+}
+
+// 高
+@for $i from 1 through 900{
+	.h#{$i} {
+		height: #{$i}rpx;
+	}
+}
+// 宽
+@for $i from 1 through 900{
+	.w#{$i} {
+		width: #{$i}rpx;
+	}
+}
+// 宽
+@for $i from 1 through 900{
+	.lh#{$i} {
+		line-height: #{$i}rpx;
+	}
+}
+
+
+// font-weight
+$steps: 100 200 300 400 500 600 700 800 bold;
+@each $i in $steps {
+	.weight-#{$i} {
+		font-weight: $i;
+	}
+}
+
+.bold {
+	font-weight: bold;
+}
+.scrollx {
+	overflow-x: scroll;
+}
+
+.scrolly {
+	overflow-y: scroll;
+}
+
+.row {
+	display: flex;
+	flex-direction: row;
+}
+
+.column {
+	display: flex;
+	flex-direction: column;
+}
+
+.justify-start {
+	display: flex;
+	justify-content: flex-start;
+}
+
+.justify-center {
+	display: flex;
+	justify-content: center;
+}
+
+.justify-end {
+	display: flex;
+	justify-content: flex-end;
+}
+
+.justify-around {
+	display: flex;
+	justify-content: space-around;
+}
+.justify-evenly {
+	display: flex;
+	justify-content: space-evenly;
+}
+
+.justify-between {
+	display: flex;
+	justify-content: space-between;
+}
+
+.align-start {
+	display: flex;
+	align-items: flex-start;
+}
+
+.align-center {
+	display: flex;
+	align-items: center;
+}
+
+.align-end {
+	display: flex;
+	align-items: flex-end;
+}
+
+.center {
+	display: flex;
+	justify-content: center;
+	align-items: center;
+}
+
+.centerV {
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	flex-direction: column;
+}
+
+.wrap {
+	flex-wrap: wrap;
+}
+
+.flex-1 {
+	flex: 1;
+}
+		
+.align-center{
+	display: flex;
+	align-items: center;
+}
+.justify-between{
+	display: flex;
+}

+ 64 - 0
assets/css/czy/emoji/biaoqin.js

@@ -0,0 +1,64 @@
+const emojiList = [
+	{"url":"0@2x.gif","alt":"[惊讶]"},{"url":"1@2x.gif","alt":"[撇嘴]"},{"url":"2@2x.gif","alt":"[色]"},{"url":"3@2x.gif","alt":"[啊这]"},{"url":"4@2x.gif","alt":"[得意]"},{"url":"5@2x.gif","alt":"[流泪]"},{"url":"6@2x.gif","alt":"[害羞]"},
+	{"url":"7@2x.gif","alt":"[闭嘴]"},{"url":"8@2x.gif","alt":"[睡]"},{"url":"9@2x.gif","alt":"[大哭]"},{"url":"10@2x.gif","alt":"[尴尬]"},{"url":"11@2x.gif","alt":"[发怒]"},{"url":"12@2x.gif","alt":"[调皮]"},{"url":"13@2x.gif","alt":"[呲牙]"},
+	{"url":"14@2x.gif","alt":"[微笑]"},{"url":"15@2x.gif","alt":"[难过]"},{"url":"16@2x.gif","alt":"[酷]"},{"url":"18@2x.gif","alt":"[抓狂]"},{"url":"19@2x.gif","alt":"[吐]"},{"url":"20@2x.gif","alt":"[偷笑]"},{"url":"21@2x.gif","alt":"[可爱]"},
+	{"url":"22@2x.gif","alt":"[白眼]"},{"url":"23@2x.gif","alt":"[傲慢]"},{"url":"24@2x.gif","alt":"[饥饿]"},{"url":"25@2x.gif","alt":"[困]"},{"url":"26@2x.gif","alt":"[惊恐]"},{"url":"27@2x.gif","alt":"[流汗]"},{"url":"28@2x.gif","alt":"[憨笑]"},
+	{"url":"29@2x.gif","alt":"[悠闲]"},{"url":"30@2x.gif","alt":"[奋斗]"},{"url":"31@2x.gif","alt":"[咒骂]"},{"url":"32@2x.gif","alt":"[疑问]"},{"url":"33@2x.gif","alt":"[嘘]"},{"url":"34@2x.gif","alt":"[晕]"},{"url":"35@2x.gif","alt":"[折磨]"},
+	{"url":"36@2x.gif","alt":"[衰]"},{"url":"37@2x.gif","alt":"[骷髅]"},{"url":"38@2x.gif","alt":"[敲打]"},{"url":"39@2x.gif","alt":"[再见]"},{"url":"46@2x.gif","alt":"[猪头]"},{"url":"49@2x.gif","alt":"[抱抱]"},{"url":"53@2x.gif","alt":"[生日]"},
+	{"url":"54@2x.gif","alt":"[闪电]"},{"url":"55@2x.gif","alt":"[炸弹]"},{"url":"56@2x.gif","alt":"[刀]"},{"url":"57@2x.gif","alt":"[足球]"},{"url":"59@2x.gif","alt":"[便便]"},{"url":"60@2x.gif","alt":"[咖啡]"},{"url":"61@2x.gif","alt":"[饭]"},
+	{"url":"62@2x.gif","alt":"[药]"},{"url":"63@2x.gif","alt":"[玫瑰]"},{"url":"64@2x.gif","alt":"[凋谢]"},{"url":"66@2x.gif","alt":"[爱心]"},{"url":"67@2x.gif","alt":"[心碎]"},{"url":"69@2x.gif","alt":"[礼物]"},{"url":"72@2x.gif","alt":"[信封]"},
+	{"url":"74@2x.gif","alt":"[太阳]"},{"url":"75@2x.gif","alt":"[月亮]"},{"url":"76@2x.gif","alt":"[赞]"},{"url":"77@2x.gif","alt":"[踩]"},{"url":"78@2x.gif","alt":"[握手]"},{"url":"79@2x.gif","alt":"[胜利]"},{"url":"89@2x.gif","alt":"[西瓜]"},
+	{"url":"90@2x.gif","alt":"[下雨]"},{"url":"91@2x.gif","alt":"[多云]"},{"url":"96@2x.gif","alt":"[冷汗]"},{"url":"97@2x.gif","alt":"[擦汗]"},{"url":"98@2x.gif","alt":"[抠鼻]"},{"url":"99@2x.gif","alt":"[鼓掌]"},{"url":"100@2x.gif","alt":"[嗅大了]"},
+	{"url":"101@2x.gif","alt":"[坏笑]"},{"url":"102@2x.gif","alt":"[右哼哼]"},{"url":"103@2x.gif","alt":"[左哼哼]"},{"url":"104@2x.gif","alt":"[哈欠]"},{"url":"105@2x.gif","alt":"[鄙视]"},{"url":"106@2x.gif","alt":"[委屈]"},{"url":"107@2x.gif","alt":"[快哭了]"},
+	{"url":"108@2x.gif","alt":"[阴险]"},{"url":"109@2x.gif","alt":"[亲亲]"},{"url":"110@2x.gif","alt":"[吓]"},{"url":"111@2x.gif","alt":"[可怜]"},{"url":"112@2x.gif","alt":"[菜刀]"},{"url":"113@2x.gif","alt":"[啤酒]"},{"url":"114@2x.gif","alt":"[篮球]"},
+	{"url":"115@2x.gif","alt":"[乒乓]"},{"url":"116@2x.gif","alt":"[示爱]"},{"url":"117@2x.gif","alt":"[瓢虫]"},{"url":"118@2x.gif","alt":"[抱拳]"},{"url":"119@2x.gif","alt":"[勾引]"},{"url":"120@2x.gif","alt":"[拳头]"},{"url":"121@2x.gif","alt":"[差劲]"},
+	{"url":"122@2x.gif","alt":"[爱你]"},{"url":"123@2x.gif","alt":"[NO]"},{"url":"124@2x.gif","alt":"[OK]"},{"url":"136@2x.gif","alt":"[双喜]"},{"url":"137@2x.gif","alt":"[鞭炮]"},{"url":"138@2x.gif","alt":"[灯笼]"},{"url":"139@2x.gif","alt":"[麻将]"},
+	{"url":"140@2x.gif","alt":"[唱歌]"},{"url":"141@2x.gif","alt":"[包包]"},{"url":"142@2x.gif","alt":"[信]"},{"url":"143@2x.gif","alt":"[象棋]"},{"url":"144@2x.gif","alt":"[礼物]"},{"url":"145@2x.gif","alt":"[祈祷]"},{"url":"146@2x.gif","alt":"[爆筋]"},
+	{"url":"147@2x.gif","alt":"[棒棒糖]"},{"url":"148@2x.gif","alt":"[喝奶]"},{"url":"149@2x.gif","alt":"[吃面]"},{"url":"150@2x.gif","alt":"[香蕉]"},{"url":"151@2x.gif","alt":"[飞机]"},{"url":"152@2x.gif","alt":"[汽车]"},{"url":"153@2x.gif","alt":"[高铁]"},
+	{"url":"154@2x.gif","alt":"[动车]"},{"url":"155@2x.gif","alt":"[动车头]"},{"url":"156@2x.gif","alt":"[多云]"},{"url":"157@2x.gif","alt":"[下雨]"},{"url":"158@2x.gif","alt":"[钞票]"},{"url":"159@2x.gif","alt":"[熊猫]"},{"url":"160@2x.gif","alt":"[电灯泡]"},
+	{"url":"161@2x.gif","alt":"[七彩]"},{"url":"162@2x.gif","alt":"[闹钟]"},{"url":"163@2x.gif","alt":"[雨伞]"},{"url":"164@2x.gif","alt":"[气球]"},{"url":"165@2x.gif","alt":"[钻戒]"},{"url":"166@2x.gif","alt":"[座椅]"},{"url":"167@2x.gif","alt":"[纸巾]"},
+	{"url":"168@2x.gif","alt":"[药丸]"},{"url":"169@2x.gif","alt":"[手枪]"},{"url":"170@2x.gif","alt":"[青蛙]"},{"url":"171@2x.gif","alt":"[热汤]"},{"url":"172@2x.gif","alt":"[眨眼睛]"},{"url":"173@2x.gif","alt":"[泪奔]"},{"url":"174@2x.gif","alt":"[无奈]"},
+	{"url":"175@2x.gif","alt":"[卖萌]"},{"url":"176@2x.gif","alt":"[小纠结]"},{"url":"177@2x.gif","alt":"[喷血]"},{"url":"178@2x.gif","alt":"[斜眼笑]"},{"url":"179@2x.gif","alt":"[高傲]"},{"url":"180@2x.gif","alt":"[惊喜]"},{"url":"181@2x.gif","alt":"[骚扰]"},
+	{"url":"182@2x.gif","alt":"[笑哭]"},{"url":"183@2x.gif","alt":"[我最美]"},{"url":"184@2x.gif","alt":"[河蟹]"},{"url":"185@2x.gif","alt":"[羊驼]"},{"url":"186@2x.gif","alt":"[板栗]"},{"url":"187@2x.gif","alt":"[幽灵]"},{"url":"188@2x.gif","alt":"[鸡蛋]"},
+	{"url":"189@2x.gif","alt":"[魔方]"},{"url":"190@2x.gif","alt":"[转花圈]"},{"url":"191@2x.gif","alt":"[搓澡]"},{"url":"192@2x.gif","alt":"[红包]"},{"url":"200@2x.gif","alt":"[拜托]"},{"url":"201@2x.gif","alt":"[点赞]"},{"url":"202@2x.gif","alt":"[无聊]"},
+	{"url":"203@2x.gif","alt":"[托脸]"},{"url":"204@2x.gif","alt":"[吃]"},{"url":"205@2x.gif","alt":"[送花]"},{"url":"206@2x.gif","alt":"[害怕]"},{"url":"207@2x.gif","alt":"[花痴]"},{"url":"208@2x.gif","alt":"[小样儿]"},{"url":"210@2x.gif","alt":"[飙泪]"},
+	{"url":"211@2x.gif","alt":"[我不看]"},{"url":"212@2x.gif","alt":"[托腮]"},{"url":"245@2x.gif","alt":"[加油必胜]"},{"url":"246@2x.gif","alt":"[抱抱]"},{"url":"247@2x.gif","alt":"[白条]"},{"url":"260@2x.gif","alt":"[白条]"},{"url":"261@2x.gif","alt":"[搬砖中]"},
+	{"url":"262@2x.gif","alt":"[脑壳疼]"},{"url":"263@2x.gif","alt":"[沧桑]"},{"url":"264@2x.gif","alt":"[捂脸]"},{"url":"265@2x.gif","alt":"[辣眼睛]"},{"url":"266@2x.gif","alt":"[哦呦]"},{"url":"267@2x.gif","alt":"[头秃]"},{"url":"268@2x.gif","alt":"[问号脸]"},
+	{"url":"269@2x.gif","alt":"[暗中观察]"},{"url":"270@2x.gif","alt":"[emm]"},{"url":"271@2x.gif","alt":"[吃瓜]"},{"url":"272@2x.gif","alt":"[呵呵哒]"},{"url":"273@2x.gif","alt":"[白条]"},{"url":"274@2x.gif","alt":"[白条]"},{"url":"newemoji_002.gif","alt":"[好的]"},
+	{"url":"newemoji_003.gif","alt":"[白眼]"},{"url":"newemoji_004.gif","alt":"[鬼脸]"},{"url":"newemoji_005.gif","alt":"[马赛克]"},{"url":"newemoji_006.gif","alt":"[喝茶]"},{"url":"newemoji_007.gif","alt":"[摸鱼]"},{"url":"newemoji_008.gif","alt":"[大笑]"},{"url":"newemoji_009.gif","alt":"[请滚]"},
+	{"url":"newemoji_010.gif","alt":"[睁眼]"},{"url":"newemoji_011.gif","alt":"[儿子乖]"},{"url":"newemoji_012.gif","alt":"[脸疼]"},{"url":"newemoji_013.gif","alt":"[考虑]"},{"url":"newemoji_014.gif","alt":"[惊掉下巴]"},{"url":"newemoji_015.gif","alt":"[遮眼]"},{"url":"newemoji_016.gif","alt":"[比爱心]"},
+	{"url":"newemoji_017.gif","alt":"[喝彩]"}
+]
+export default emojiList;
+// const emojiList = [
+// 	{"url":"0@2x.png","alt":"[惊讶]"},{"url":"1@2x.png","alt":"[撇嘴]"},{"url":"2@2x.png","alt":"[色]"},{"url":"3@2x.png","alt":"[啊这]"},{"url":"4@2x.png","alt":"[得意]"},{"url":"5@2x.png","alt":"[流泪]"},{"url":"6@2x.png","alt":"[害羞]"},
+// 	{"url":"7@2x.png","alt":"[闭嘴]"},{"url":"8@2x.png","alt":"[睡]"},{"url":"9@2x.png","alt":"[大哭]"},{"url":"10@2x.png","alt":"[尴尬]"},{"url":"11@2x.png","alt":"[发怒]"},{"url":"12@2x.png","alt":"[调皮]"},{"url":"13@2x.png","alt":"[呲牙]"},
+// 	{"url":"14@2x.png","alt":"[微笑]"},{"url":"15@2x.png","alt":"[难过]"},{"url":"16@2x.png","alt":"[酷]"},{"url":"18@2x.png","alt":"[抓狂]"},{"url":"19@2x.png","alt":"[吐]"},{"url":"20@2x.png","alt":"[偷笑]"},{"url":"21@2x.png","alt":"[可爱]"},
+// 	{"url":"22@2x.png","alt":"[白眼]"},{"url":"23@2x.png","alt":"[傲慢]"},{"url":"24@2x.png","alt":"[饥饿]"},{"url":"25@2x.png","alt":"[困]"},{"url":"26@2x.png","alt":"[惊恐]"},{"url":"27@2x.png","alt":"[流汗]"},{"url":"28@2x.png","alt":"[憨笑]"},
+// 	{"url":"29@2x.png","alt":"[悠闲]"},{"url":"30@2x.png","alt":"[奋斗]"},{"url":"31@2x.png","alt":"[咒骂]"},{"url":"32@2x.png","alt":"[疑问]"},{"url":"33@2x.png","alt":"[嘘]"},{"url":"34@2x.png","alt":"[晕]"},{"url":"35@2x.png","alt":"[折磨]"},
+// 	{"url":"36@2x.png","alt":"[衰]"},{"url":"37@2x.png","alt":"[骷髅]"},{"url":"38@2x.png","alt":"[敲打]"},{"url":"39@2x.png","alt":"[再见]"},{"url":"46@2x.png","alt":"[猪头]"},{"url":"49@2x.png","alt":"[抱抱]"},{"url":"53@2x.png","alt":"[生日]"},
+// 	{"url":"54@2x.png","alt":"[闪电]"},{"url":"55@2x.png","alt":"[炸弹]"},{"url":"56@2x.png","alt":"[刀]"},{"url":"57@2x.png","alt":"[足球]"},{"url":"59@2x.png","alt":"[便便]"},{"url":"60@2x.png","alt":"[咖啡]"},{"url":"61@2x.png","alt":"[饭]"},
+// 	{"url":"62@2x.png","alt":"[药]"},{"url":"63@2x.png","alt":"[玫瑰]"},{"url":"64@2x.png","alt":"[凋谢]"},{"url":"66@2x.png","alt":"[爱心]"},{"url":"67@2x.png","alt":"[心碎]"},{"url":"69@2x.png","alt":"[礼物]"},{"url":"72@2x.png","alt":"[信封]"},
+// 	{"url":"74@2x.png","alt":"[太阳]"},{"url":"75@2x.png","alt":"[月亮]"},{"url":"76@2x.png","alt":"[赞]"},{"url":"77@2x.png","alt":"[踩]"},{"url":"78@2x.png","alt":"[握手]"},{"url":"79@2x.png","alt":"[胜利]"},{"url":"89@2x.png","alt":"[西瓜]"},
+// 	{"url":"90@2x.png","alt":"[下雨]"},{"url":"91@2x.png","alt":"[多云]"},{"url":"96@2x.png","alt":"[冷汗]"},{"url":"97@2x.png","alt":"[擦汗]"},{"url":"98@2x.png","alt":"[抠鼻]"},{"url":"99@2x.png","alt":"[鼓掌]"},{"url":"100@2x.png","alt":"[嗅大了]"},
+// 	{"url":"101@2x.png","alt":"[坏笑]"},{"url":"102@2x.png","alt":"[右哼哼]"},{"url":"103@2x.png","alt":"[左哼哼]"},{"url":"104@2x.png","alt":"[哈欠]"},{"url":"105@2x.png","alt":"[鄙视]"},{"url":"106@2x.png","alt":"[委屈]"},{"url":"107@2x.png","alt":"[快哭了]"},
+// 	{"url":"108@2x.png","alt":"[阴险]"},{"url":"109@2x.png","alt":"[亲亲]"},{"url":"110@2x.png","alt":"[吓]"},{"url":"111@2x.png","alt":"[可怜]"},{"url":"112@2x.png","alt":"[菜刀]"},{"url":"113@2x.png","alt":"[啤酒]"},{"url":"114@2x.png","alt":"[篮球]"},
+// 	{"url":"115@2x.png","alt":"[乒乓]"},{"url":"116@2x.png","alt":"[示爱]"},{"url":"117@2x.png","alt":"[瓢虫]"},{"url":"118@2x.png","alt":"[抱拳]"},{"url":"119@2x.png","alt":"[勾引]"},{"url":"120@2x.png","alt":"[拳头]"},{"url":"121@2x.png","alt":"[差劲]"},
+// 	{"url":"122@2x.png","alt":"[爱你]"},{"url":"123@2x.png","alt":"[NO]"},{"url":"124@2x.png","alt":"[OK]"},{"url":"136@2x.png","alt":"[双喜]"},{"url":"137@2x.png","alt":"[鞭炮]"},{"url":"138@2x.png","alt":"[灯笼]"},{"url":"139@2x.png","alt":"[麻将]"},
+// 	{"url":"140@2x.png","alt":"[唱歌]"},{"url":"141@2x.png","alt":"[包包]"},{"url":"142@2x.png","alt":"[信]"},{"url":"143@2x.png","alt":"[象棋]"},{"url":"144@2x.png","alt":"[礼物]"},{"url":"145@2x.png","alt":"[祈祷]"},{"url":"146@2x.png","alt":"[爆筋]"},
+// 	{"url":"147@2x.png","alt":"[棒棒糖]"},{"url":"148@2x.png","alt":"[喝奶]"},{"url":"149@2x.png","alt":"[吃面]"},{"url":"150@2x.png","alt":"[香蕉]"},{"url":"151@2x.png","alt":"[飞机]"},{"url":"152@2x.png","alt":"[汽车]"},{"url":"153@2x.png","alt":"[高铁]"},
+// 	{"url":"154@2x.png","alt":"[动车]"},{"url":"155@2x.png","alt":"[动车头]"},{"url":"156@2x.png","alt":"[多云]"},{"url":"157@2x.png","alt":"[下雨]"},{"url":"158@2x.png","alt":"[钞票]"},{"url":"159@2x.png","alt":"[熊猫]"},{"url":"160@2x.png","alt":"[电灯泡]"},
+// 	{"url":"161@2x.png","alt":"[七彩]"},{"url":"162@2x.png","alt":"[闹钟]"},{"url":"163@2x.png","alt":"[雨伞]"},{"url":"164@2x.png","alt":"[气球]"},{"url":"165@2x.png","alt":"[钻戒]"},{"url":"166@2x.png","alt":"[座椅]"},{"url":"167@2x.png","alt":"[纸巾]"},
+// 	{"url":"168@2x.png","alt":"[药丸]"},{"url":"169@2x.png","alt":"[手枪]"},{"url":"170@2x.png","alt":"[青蛙]"},{"url":"171@2x.png","alt":"[热汤]"},{"url":"172@2x.png","alt":"[眨眼睛]"},{"url":"173@2x.png","alt":"[泪奔]"},{"url":"174@2x.png","alt":"[无奈]"},
+// 	{"url":"175@2x.png","alt":"[卖萌]"},{"url":"176@2x.png","alt":"[小纠结]"},{"url":"177@2x.png","alt":"[喷血]"},{"url":"178@2x.png","alt":"[斜眼笑]"},{"url":"179@2x.png","alt":"[高傲]"},{"url":"180@2x.png","alt":"[惊喜]"},{"url":"181@2x.png","alt":"[骚扰]"},
+// 	{"url":"182@2x.png","alt":"[笑哭]"},{"url":"183@2x.png","alt":"[我最美]"},{"url":"184@2x.png","alt":"[河蟹]"},{"url":"185@2x.png","alt":"[羊驼]"},{"url":"186@2x.png","alt":"[板栗]"},{"url":"187@2x.png","alt":"[幽灵]"},{"url":"188@2x.png","alt":"[鸡蛋]"},
+// 	{"url":"189@2x.png","alt":"[魔方]"},{"url":"190@2x.png","alt":"[转花圈]"},{"url":"191@2x.png","alt":"[搓澡]"},{"url":"192@2x.png","alt":"[红包]"},{"url":"200@2x.png","alt":"[拜托]"},{"url":"201@2x.png","alt":"[点赞]"},{"url":"202@2x.png","alt":"[无聊]"},
+// 	{"url":"203@2x.png","alt":"[托脸]"},{"url":"204@2x.png","alt":"[吃]"},{"url":"205@2x.png","alt":"[送花]"},{"url":"206@2x.png","alt":"[害怕]"},{"url":"207@2x.png","alt":"[花痴]"},{"url":"208@2x.png","alt":"[小样儿]"},{"url":"210@2x.png","alt":"[飙泪]"},
+// 	{"url":"211@2x.png","alt":"[我不看]"},{"url":"212@2x.png","alt":"[托腮]"},{"url":"245@2x.png","alt":"[加油必胜]"},{"url":"246@2x.png","alt":"[抱抱]"},{"url":"247@2x.png","alt":"[白条]"},{"url":"260@2x.png","alt":"[白条]"},{"url":"261@2x.png","alt":"[搬砖中]"},
+// 	{"url":"262@2x.png","alt":"[脑壳疼]"},{"url":"263@2x.png","alt":"[沧桑]"},{"url":"264@2x.png","alt":"[捂脸]"},{"url":"265@2x.png","alt":"[辣眼睛]"},{"url":"266@2x.png","alt":"[哦呦]"},{"url":"267@2x.png","alt":"[头秃]"},{"url":"268@2x.png","alt":"[问号脸]"},
+// 	{"url":"269@2x.png","alt":"[暗中观察]"},{"url":"270@2x.png","alt":"[emm]"},{"url":"271@2x.png","alt":"[吃瓜]"},{"url":"272@2x.png","alt":"[呵呵哒]"},{"url":"273@2x.png","alt":"[白条]"},{"url":"274@2x.png","alt":"[白条]"},{"url":"newemoji_002.png","alt":"[好的]"},
+// 	{"url":"newemoji_003.png","alt":"[白眼]"},{"url":"newemoji_004.png","alt":"[鬼脸]"},{"url":"newemoji_005.png","alt":"[马赛克]"},{"url":"newemoji_006.png","alt":"[喝茶]"},{"url":"newemoji_007.png","alt":"[摸鱼]"},{"url":"newemoji_008.png","alt":"[大笑]"},{"url":"newemoji_009.png","alt":"[请滚]"},
+// 	{"url":"newemoji_010.png","alt":"[睁眼]"},{"url":"newemoji_011.png","alt":"[儿子乖]"},{"url":"newemoji_012.png","alt":"[脸疼]"},{"url":"newemoji_013.png","alt":"[考虑]"},{"url":"newemoji_014.png","alt":"[惊掉下巴]"},{"url":"newemoji_015.png","alt":"[遮眼]"},{"url":"newemoji_016.png","alt":"[比爱心]"},
+// 	{"url":"newemoji_017.png","alt":"[喝彩]"}
+// ]
+// export default emojiList;

+ 3139 - 0
assets/css/czy/emoji/sina.js

@@ -0,0 +1,3139 @@
+// 新浪表情包api https://api.weibo.com/2/emotions.json?source=1362404091
+const sinaEmoji = [
+    {
+        "phrase": "[微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e3/2018new_weixioa02_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e3/2018new_weixioa02_org.png",
+        "value": "[微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[可爱]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/09/2018new_keai_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/09/2018new_keai_org.png",
+        "value": "[可爱]",
+        "picid": ""
+    },
+    {
+        "phrase": "[太开心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2018new_taikaixin_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2018new_taikaixin_org.png",
+        "value": "[太开心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[鼓掌]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6e/2018new_guzhang_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6e/2018new_guzhang_thumb.png",
+        "value": "[鼓掌]",
+        "picid": ""
+    },
+    {
+        "phrase": "[嘻嘻]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/33/2018new_xixi_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/33/2018new_xixi_thumb.png",
+        "value": "[嘻嘻]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哈哈]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8f/2018new_haha_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8f/2018new_haha_thumb.png",
+        "value": "[哈哈]",
+        "picid": ""
+    },
+    {
+        "phrase": "[笑cry]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/4a/2018new_xiaoku_thumb.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/4a/2018new_xiaoku_thumb.png",
+        "value": "[笑cry]",
+        "picid": ""
+    },
+    {
+        "phrase": "[挤眼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/43/2018new_jiyan_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/43/2018new_jiyan_org.png",
+        "value": "[挤眼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[馋嘴]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fa/2018new_chanzui_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fa/2018new_chanzui_org.png",
+        "value": "[馋嘴]",
+        "picid": ""
+    },
+    {
+        "phrase": "[黑线]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a3/2018new_heixian_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a3/2018new_heixian_thumb.png",
+        "value": "[黑线]",
+        "picid": ""
+    },
+    {
+        "phrase": "[汗]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/28/2018new_han_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/28/2018new_han_org.png",
+        "value": "[汗]",
+        "picid": ""
+    },
+    {
+        "phrase": "[挖鼻]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9a/2018new_wabi_thumb.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9a/2018new_wabi_thumb.png",
+        "value": "[挖鼻]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7c/2018new_heng_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7c/2018new_heng_thumb.png",
+        "value": "[哼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[怒]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f6/2018new_nu_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f6/2018new_nu_thumb.png",
+        "value": "[怒]",
+        "picid": ""
+    },
+    {
+        "phrase": "[委屈]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a5/2018new_weiqu_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a5/2018new_weiqu_thumb.png",
+        "value": "[委屈]",
+        "picid": ""
+    },
+    {
+        "phrase": "[可怜]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/96/2018new_kelian_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/96/2018new_kelian_org.png",
+        "value": "[可怜]",
+        "picid": ""
+    },
+    {
+        "phrase": "[失望]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/2018new_shiwang_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/2018new_shiwang_thumb.png",
+        "value": "[失望]",
+        "picid": ""
+    },
+    {
+        "phrase": "[悲伤]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ee/2018new_beishang_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ee/2018new_beishang_org.png",
+        "value": "[悲伤]",
+        "picid": ""
+    },
+    {
+        "phrase": "[泪]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6e/2018new_leimu_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6e/2018new_leimu_org.png",
+        "value": "[泪]",
+        "picid": ""
+    },
+    {
+        "phrase": "[允悲]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/83/2018new_kuxiao_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/83/2018new_kuxiao_org.png",
+        "value": "[允悲]",
+        "picid": ""
+    },
+    {
+        "phrase": "[苦涩]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7e/2021_bitter_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7e/2021_bitter_thumb.png",
+        "value": "[苦涩]",
+        "picid": ""
+    },
+    {
+        "phrase": "[害羞]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c1/2018new_haixiu_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c1/2018new_haixiu_org.png",
+        "value": "[害羞]",
+        "picid": ""
+    },
+    {
+        "phrase": "[污]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/10/2018new_wu_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/10/2018new_wu_thumb.png",
+        "value": "[污]",
+        "picid": ""
+    },
+    {
+        "phrase": "[爱你]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f6/2018new_aini_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f6/2018new_aini_org.png",
+        "value": "[爱你]",
+        "picid": ""
+    },
+    {
+        "phrase": "[亲亲]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2c/2018new_qinqin_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2c/2018new_qinqin_thumb.png",
+        "value": "[亲亲]",
+        "picid": ""
+    },
+    {
+        "phrase": "[抱一抱]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/af/2020_hug_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/af/2020_hug_thumb.png",
+        "value": "[抱一抱]",
+        "picid": ""
+    },
+    {
+        "phrase": "[色]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9d/2018new_huaxin_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9d/2018new_huaxin_org.png",
+        "value": "[色]",
+        "picid": ""
+    },
+    {
+        "phrase": "[憧憬]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c9/2018new_chongjing_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c9/2018new_chongjing_org.png",
+        "value": "[憧憬]",
+        "picid": ""
+    },
+    {
+        "phrase": "[舔屏]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3e/2018new_tianping_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3e/2018new_tianping_thumb.png",
+        "value": "[舔屏]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哇]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3d/2022_wow_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3d/2022_wow_thumb.png",
+        "value": "[哇]",
+        "picid": ""
+    },
+    {
+        "phrase": "[坏笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/4d/2018new_huaixiao_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/4d/2018new_huaixiao_org.png",
+        "value": "[坏笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[阴险]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9e/2018new_yinxian_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9e/2018new_yinxian_org.png",
+        "value": "[阴险]",
+        "picid": ""
+    },
+    {
+        "phrase": "[笑而不语]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2d/2018new_xiaoerbuyu_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2d/2018new_xiaoerbuyu_org.png",
+        "value": "[笑而不语]",
+        "picid": ""
+    },
+    {
+        "phrase": "[偷笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/71/2018new_touxiao_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/71/2018new_touxiao_org.png",
+        "value": "[偷笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[666]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6c/2022_666_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6c/2022_666_thumb.png",
+        "value": "[666]",
+        "picid": ""
+    },
+    {
+        "phrase": "[酷]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c4/2018new_ku_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c4/2018new_ku_org.png",
+        "value": "[酷]",
+        "picid": ""
+    },
+    {
+        "phrase": "[并不简单]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/2018new_bingbujiandan_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/2018new_bingbujiandan_thumb.png",
+        "value": "[并不简单]",
+        "picid": ""
+    },
+    {
+        "phrase": "[思考]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/30/2018new_sikao_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/30/2018new_sikao_org.png",
+        "value": "[思考]",
+        "picid": ""
+    },
+    {
+        "phrase": "[疑问]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b8/2018new_ningwen_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b8/2018new_ningwen_org.png",
+        "value": "[疑问]",
+        "picid": ""
+    },
+    {
+        "phrase": "[费解]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2a/2018new_wenhao_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2a/2018new_wenhao_thumb.png",
+        "value": "[费解]",
+        "picid": ""
+    },
+    {
+        "phrase": "[晕]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/07/2018new_yun_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/07/2018new_yun_thumb.png",
+        "value": "[晕]",
+        "picid": ""
+    },
+    {
+        "phrase": "[衰]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a2/2018new_shuai_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a2/2018new_shuai_thumb.png",
+        "value": "[衰]",
+        "picid": ""
+    },
+    {
+        "phrase": "[骷髅]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a1/2018new_kulou_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a1/2018new_kulou_thumb.png",
+        "value": "[骷髅]",
+        "picid": ""
+    },
+    {
+        "phrase": "[嘘]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b0/2018new_xu_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b0/2018new_xu_org.png",
+        "value": "[嘘]",
+        "picid": ""
+    },
+    {
+        "phrase": "[闭嘴]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/62/2018new_bizui_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/62/2018new_bizui_org.png",
+        "value": "[闭嘴]",
+        "picid": ""
+    },
+    {
+        "phrase": "[傻眼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/dd/2018new_shayan_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/dd/2018new_shayan_org.png",
+        "value": "[傻眼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[裂开]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1b/202011_liekai_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1b/202011_liekai_thumb.png",
+        "value": "[裂开]",
+        "picid": ""
+    },
+    {
+        "phrase": "[感冒]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8c/2022_cold_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8c/2022_cold_thumb.png",
+        "value": "[感冒]",
+        "picid": ""
+    },
+    {
+        "phrase": "[吃惊]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/49/2018new_chijing_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/49/2018new_chijing_org.png",
+        "value": "[吃惊]",
+        "picid": ""
+    },
+    {
+        "phrase": "[吐]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/08/2018new_tu_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/08/2018new_tu_org.png",
+        "value": "[吐]",
+        "picid": ""
+    },
+    {
+        "phrase": "[生病]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3b/2018new_shengbing_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3b/2018new_shengbing_thumb.png",
+        "value": "[生病]",
+        "picid": ""
+    },
+    {
+        "phrase": "[拜拜]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fd/2018new_baibai_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fd/2018new_baibai_thumb.png",
+        "value": "[拜拜]",
+        "picid": ""
+    },
+    {
+        "phrase": "[鄙视]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/da/2018new_bishi_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/da/2018new_bishi_org.png",
+        "value": "[鄙视]",
+        "picid": ""
+    },
+    {
+        "phrase": "[白眼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ef/2018new_landelini_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ef/2018new_landelini_org.png",
+        "value": "[白眼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[左哼哼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/43/2018new_zuohengheng_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/43/2018new_zuohengheng_thumb.png",
+        "value": "[左哼哼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[右哼哼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c1/2018new_youhengheng_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c1/2018new_youhengheng_thumb.png",
+        "value": "[右哼哼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[抓狂]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/17/2018new_zhuakuang_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/17/2018new_zhuakuang_org.png",
+        "value": "[抓狂]",
+        "picid": ""
+    },
+    {
+        "phrase": "[怒骂]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/87/2018new_zhouma_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/87/2018new_zhouma_thumb.png",
+        "value": "[怒骂]",
+        "picid": ""
+    },
+    {
+        "phrase": "[打脸]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cb/2018new_dalian_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cb/2018new_dalian_org.png",
+        "value": "[打脸]",
+        "picid": ""
+    },
+    {
+        "phrase": "[顶]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ae/2018new_ding_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ae/2018new_ding_org.png",
+        "value": "[顶]",
+        "picid": ""
+    },
+    {
+        "phrase": "[互粉]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/2018new_hufen02_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/2018new_hufen02_org.png",
+        "value": "[互粉]",
+        "picid": ""
+    },
+    {
+        "phrase": "[钱]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a2/2018new_qian_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a2/2018new_qian_thumb.png",
+        "value": "[钱]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哈欠]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/55/2018new_dahaqian_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/55/2018new_dahaqian_org.png",
+        "value": "[哈欠]",
+        "picid": ""
+    },
+    {
+        "phrase": "[困]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/2018new_kun_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/2018new_kun_thumb.png",
+        "value": "[困]",
+        "picid": ""
+    },
+    {
+        "phrase": "[睡]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e2/2018new_shuijiao_thumb.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e2/2018new_shuijiao_thumb.png",
+        "value": "[睡]",
+        "picid": ""
+    },
+    {
+        "phrase": "[赢牛奶]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9c/2021_yingniunai_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9c/2021_yingniunai_thumb.png",
+        "value": "[赢牛奶]",
+        "picid": ""
+    },
+    {
+        "phrase": "[开学季]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/72/2021_kaixueji_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/72/2021_kaixueji_thumb.png",
+        "value": "[开学季]",
+        "picid": ""
+    },
+    {
+        "phrase": "[求饶]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/moren_qiurao02_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/moren_qiurao02_thumb.png",
+        "value": "[求饶]",
+        "picid": ""
+    },
+    {
+        "phrase": "[吃瓜]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/01/2018new_chigua_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/01/2018new_chigua_thumb.png",
+        "value": "[吃瓜]",
+        "picid": ""
+    },
+    {
+        "phrase": "[打call]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/39/moren_dacall02_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/39/moren_dacall02_thumb.png",
+        "value": "[打call]",
+        "picid": ""
+    },
+    {
+        "phrase": "[awsl]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/14/moren_awsl02_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/14/moren_awsl02_thumb.png",
+        "value": "[awsl]",
+        "picid": ""
+    },
+    {
+        "phrase": "[彩虹屁]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/4b/2022_praise_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/4b/2022_praise_thumb.png",
+        "value": "[彩虹屁]",
+        "picid": ""
+    },
+    {
+        "phrase": "[酸]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b3/hot_wosuanle_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b3/hot_wosuanle_thumb.png",
+        "value": "[酸]",
+        "picid": ""
+    },
+    {
+        "phrase": "[doge]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a1/2018new_doge02_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a1/2018new_doge02_org.png",
+        "value": "[doge]",
+        "picid": ""
+    },
+    {
+        "phrase": "[二哈]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/22/2018new_erha_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/22/2018new_erha_org.png",
+        "value": "[二哈]",
+        "picid": ""
+    },
+    {
+        "phrase": "[喵喵]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7b/2018new_miaomiao_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7b/2018new_miaomiao_thumb.png",
+        "value": "[喵喵]",
+        "picid": ""
+    },
+    {
+        "phrase": "[单身狗]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/20/2021_alongdog_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/20/2021_alongdog_thumb.png",
+        "value": "[单身狗]",
+        "picid": ""
+    },
+    {
+        "phrase": "[揣手]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/af/2022_chuaishou_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/af/2022_chuaishou_thumb.png",
+        "value": "[揣手]",
+        "picid": ""
+    },
+    {
+        "phrase": "[举手]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fd/2022_raisehand_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fd/2022_raisehand_thumb.png",
+        "value": "[举手]",
+        "picid": ""
+    },
+    {
+        "phrase": "[抱抱]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/42/2018new_baobao_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/42/2018new_baobao_thumb.png",
+        "value": "[抱抱]",
+        "picid": ""
+    },
+    {
+        "phrase": "[摊手]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/62/2018new_tanshou_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/62/2018new_tanshou_org.png",
+        "value": "[摊手]",
+        "picid": ""
+    },
+    {
+        "phrase": "[跪了]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/75/2018new_gui_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/75/2018new_gui_org.png",
+        "value": "[跪了]",
+        "picid": ""
+    },
+    {
+        "phrase": "[中国赞]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6d/2018new_zhongguozan_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6d/2018new_zhongguozan_org.png",
+        "value": "[中国赞]",
+        "picid": ""
+    },
+    {
+        "phrase": "[鲜花]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d4/2018new_xianhua_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d4/2018new_xianhua_org.png",
+        "value": "[鲜花]",
+        "picid": ""
+    },
+    {
+        "phrase": "[航天员]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/53/2021_yuhangyuan_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/53/2021_yuhangyuan_thumb.png",
+        "value": "[航天员]",
+        "picid": ""
+    },
+    {
+        "phrase": "[红灯笼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e8/2021_lantern_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e8/2021_lantern_thumb.png",
+        "value": "[红灯笼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[烟花]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/96/2021_fireworks_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/96/2021_fireworks_thumb.png",
+        "value": "[烟花]",
+        "picid": ""
+    },
+    {
+        "phrase": "[雪花]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/13/yunying2020_snowflakes_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/13/yunying2020_snowflakes_thumb.png",
+        "value": "[雪花]",
+        "picid": ""
+    },
+    {
+        "phrase": "[丘比特]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/45/2021_qiubite_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/45/2021_qiubite_thumb.png",
+        "value": "[丘比特]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小丑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6f/2021_xiaochou_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6f/2021_xiaochou_thumb.png",
+        "value": "[小丑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[杰瑞]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/da/2021_jerry_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/da/2021_jerry_thumb.png",
+        "value": "[杰瑞]",
+        "picid": ""
+    },
+    {
+        "phrase": "[汤姆]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/31/2021_tom_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/31/2021_tom_thumb.png",
+        "value": "[汤姆]",
+        "picid": ""
+    },
+    {
+        "phrase": "[奶瓶]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8c/2021_naiping_org.png",
+        "hot": false,
+        "common": true,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8c/2021_naiping_thumb.png",
+        "value": "[奶瓶]",
+        "picid": ""
+    },
+    {
+        "phrase": "[报税]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0f/2022_baoshui_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0f/2022_baoshui_thumb.png",
+        "value": "[报税]",
+        "picid": ""
+    },
+    {
+        "phrase": "[交税]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8e/2022_jiaoshui_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8e/2022_jiaoshui_thumb.png",
+        "value": "[交税]",
+        "picid": ""
+    },
+    {
+        "phrase": "[嗅嗅]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e8/2022_Niffler_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e8/2022_Niffler_thumb.png",
+        "value": "[嗅嗅]",
+        "picid": ""
+    },
+    {
+        "phrase": "[格林德沃]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/56/2022_Grindelwald_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/56/2022_Grindelwald_thumb.png",
+        "value": "[格林德沃]",
+        "picid": ""
+    },
+    {
+        "phrase": "[邓布利多]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/92/2022_Dumbledore_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/92/2022_Dumbledore_thumb.png",
+        "value": "[邓布利多]",
+        "picid": ""
+    },
+    {
+        "phrase": "[新蝙蝠侠]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a4/2022_theBatman_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a4/2022_theBatman_thumb.png",
+        "value": "[新蝙蝠侠]",
+        "picid": ""
+    },
+    {
+        "phrase": "[谜语人]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0b/2022_theRiddler_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0b/2022_theRiddler_thumb.png",
+        "value": "[谜语人]",
+        "picid": ""
+    },
+    {
+        "phrase": "[送花花]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cb/2022_Flowers_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cb/2022_Flowers_thumb.png",
+        "value": "[送花花]",
+        "picid": ""
+    },
+    {
+        "phrase": "[福气虎]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/08/2022_AuspiciousTiger_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/08/2022_AuspiciousTiger_thumb.png",
+        "value": "[福气虎]",
+        "picid": ""
+    },
+    {
+        "phrase": "[暴发虎]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b8/2022_richtiger_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b8/2022_richtiger_thumb.png",
+        "value": "[暴发虎]",
+        "picid": ""
+    },
+    {
+        "phrase": "[虎爪比心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2b/2022_handheart_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2b/2022_handheart_thumb.png",
+        "value": "[虎爪比心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[许愿虎]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/2022_Wishingtiger_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/2022_Wishingtiger_thumb.png",
+        "value": "[许愿虎]",
+        "picid": ""
+    },
+    {
+        "phrase": "[萌虎贴贴]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/81/2022_Cutetigerkiss_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/81/2022_Cutetigerkiss_thumb.png",
+        "value": "[萌虎贴贴]",
+        "picid": ""
+    },
+    {
+        "phrase": "[单身奖杯]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/27/2022_Asingletrophy_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/27/2022_Asingletrophy_thumb.png",
+        "value": "[单身奖杯]",
+        "picid": ""
+    },
+    {
+        "phrase": "[绿马]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/df/2022_Greenhorse_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/df/2022_Greenhorse_thumb.png",
+        "value": "[绿马]",
+        "picid": ""
+    },
+    {
+        "phrase": "[2022]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/bc/2021_2022_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/bc/2021_2022_thumb.png",
+        "value": "[2022]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小雪人]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f4/2021_snowman_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f4/2021_snowman_thumb.png",
+        "value": "[小雪人]",
+        "picid": ""
+    },
+    {
+        "phrase": "[春游家族]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b6/2021_YoungFamily_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b6/2021_YoungFamily_thumb.png",
+        "value": "[春游家族]",
+        "picid": ""
+    },
+    {
+        "phrase": "[放假]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6b/2021_fangjia_org.png",
+        "hot": true,
+        "common": false,
+        "category": "",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6b/2021_fangjia_thumb.png",
+        "value": "[放假]",
+        "picid": ""
+    },
+    {
+        "phrase": "[心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8a/2018new_xin_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8a/2018new_xin_thumb.png",
+        "value": "[心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[伤心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6c/2018new_xinsui_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6c/2018new_xinsui_thumb.png",
+        "value": "[伤心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[男孩儿]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0a/2018new_nanhai_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0a/2018new_nanhai_thumb.png",
+        "value": "[男孩儿]",
+        "picid": ""
+    },
+    {
+        "phrase": "[女孩儿]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/39/2018new_nvhai_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/39/2018new_nvhai_thumb.png",
+        "value": "[女孩儿]",
+        "picid": ""
+    },
+    {
+        "phrase": "[握手]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e9/2018new_woshou_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e9/2018new_woshou_thumb.png",
+        "value": "[握手]",
+        "picid": ""
+    },
+    {
+        "phrase": "[赞]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e6/2018new_zan_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e6/2018new_zan_org.png",
+        "value": "[赞]",
+        "picid": ""
+    },
+    {
+        "phrase": "[good]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8a/2018new_good_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8a/2018new_good_org.png",
+        "value": "[good]",
+        "picid": ""
+    },
+    {
+        "phrase": "[弱]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3d/2018new_ruo_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3d/2018new_ruo_org.png",
+        "value": "[弱]",
+        "picid": ""
+    },
+    {
+        "phrase": "[NO]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2018new_no_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2018new_no_org.png",
+        "value": "[NO]",
+        "picid": ""
+    },
+    {
+        "phrase": "[耶]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/29/2018new_ye_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/29/2018new_ye_thumb.png",
+        "value": "[耶]",
+        "picid": ""
+    },
+    {
+        "phrase": "[拳头]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/2018new_quantou_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/2018new_quantou_thumb.png",
+        "value": "[拳头]",
+        "picid": ""
+    },
+    {
+        "phrase": "[ok]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/45/2018new_ok_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/45/2018new_ok_org.png",
+        "value": "[ok]",
+        "picid": ""
+    },
+    {
+        "phrase": "[加油]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9f/2018new_jiayou_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9f/2018new_jiayou_org.png",
+        "value": "[加油]",
+        "picid": ""
+    },
+    {
+        "phrase": "[来]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/42/2018new_guolai_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/42/2018new_guolai_thumb.png",
+        "value": "[来]",
+        "picid": ""
+    },
+    {
+        "phrase": "[作揖]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e7/2018new_zuoyi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e7/2018new_zuoyi_org.png",
+        "value": "[作揖]",
+        "picid": ""
+    },
+    {
+        "phrase": "[haha]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1d/2018new_hahashoushi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1d/2018new_hahashoushi_org.png",
+        "value": "[haha]",
+        "picid": ""
+    },
+    {
+        "phrase": "[熊猫]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/2018new_xiongmao_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/aa/2018new_xiongmao_thumb.png",
+        "value": "[熊猫]",
+        "picid": ""
+    },
+    {
+        "phrase": "[兔子]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c6/2018new_tuzi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c6/2018new_tuzi_thumb.png",
+        "value": "[兔子]",
+        "picid": ""
+    },
+    {
+        "phrase": "[猪头]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1c/2018new_zhutou_thumb.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1c/2018new_zhutou_thumb.png",
+        "value": "[猪头]",
+        "picid": ""
+    },
+    {
+        "phrase": "[草泥马]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3b/2018new_caonima_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3b/2018new_caonima_thumb.png",
+        "value": "[草泥马]",
+        "picid": ""
+    },
+    {
+        "phrase": "[奥特曼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c6/2018new_aoteman_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c6/2018new_aoteman_org.png",
+        "value": "[奥特曼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[太阳]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cd/2018new_taiyang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cd/2018new_taiyang_org.png",
+        "value": "[太阳]",
+        "picid": ""
+    },
+    {
+        "phrase": "[月亮]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d5/2018new_yueliang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d5/2018new_yueliang_org.png",
+        "value": "[月亮]",
+        "picid": ""
+    },
+    {
+        "phrase": "[浮云]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/61/2018new_yunduo_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/61/2018new_yunduo_thumb.png",
+        "value": "[浮云]",
+        "picid": ""
+    },
+    {
+        "phrase": "[下雨]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7e/2018new_yu_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7e/2018new_yu_thumb.png",
+        "value": "[下雨]",
+        "picid": ""
+    },
+    {
+        "phrase": "[沙尘暴]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b7/2018new_shachenbao_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b7/2018new_shachenbao_org.png",
+        "value": "[沙尘暴]",
+        "picid": ""
+    },
+    {
+        "phrase": "[围观]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6c/2018new_weiguan_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6c/2018new_weiguan_org.png",
+        "value": "[围观]",
+        "picid": ""
+    },
+    {
+        "phrase": "[飞机]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/4a/2018new_feiji_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/4a/2018new_feiji_thumb.png",
+        "value": "[飞机]",
+        "picid": ""
+    },
+    {
+        "phrase": "[照相机]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/78/2018new_xiangji_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/78/2018new_xiangji_thumb.png",
+        "value": "[照相机]",
+        "picid": ""
+    },
+    {
+        "phrase": "[话筒]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/48/2018new_huatong_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/48/2018new_huatong_org.png",
+        "value": "[话筒]",
+        "picid": ""
+    },
+    {
+        "phrase": "[音乐]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1f/2018new_yinyue_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1f/2018new_yinyue_org.png",
+        "value": "[音乐]",
+        "picid": ""
+    },
+    {
+        "phrase": "[喜]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e0/2018new_xizi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e0/2018new_xizi_thumb.png",
+        "value": "[喜]",
+        "picid": ""
+    },
+    {
+        "phrase": "[给力]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/36/2018new_geili_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/36/2018new_geili_thumb.png",
+        "value": "[给力]",
+        "picid": ""
+    },
+    {
+        "phrase": "[威武]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/14/2018new_weiwu_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/14/2018new_weiwu_thumb.png",
+        "value": "[威武]",
+        "picid": ""
+    },
+    {
+        "phrase": "[可乐]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/5f/moren_kele_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/5f/moren_kele_thumb.png",
+        "value": "[可乐]",
+        "picid": ""
+    },
+    {
+        "phrase": "[干杯]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/2018new_ganbei_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/2018new_ganbei_org.png",
+        "value": "[干杯]",
+        "picid": ""
+    },
+    {
+        "phrase": "[礼物]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0e/2018new_liwu_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0e/2018new_liwu_org.png",
+        "value": "[礼物]",
+        "picid": ""
+    },
+    {
+        "phrase": "[钟]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8e/2018new_zhong_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8e/2018new_zhong_org.png",
+        "value": "[钟]",
+        "picid": ""
+    },
+    {
+        "phrase": "[肥皂]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d6/2018new_feizao_thumb.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d6/2018new_feizao_thumb.png",
+        "value": "[肥皂]",
+        "picid": ""
+    },
+    {
+        "phrase": "[绿丝带]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cb/2018new_lvsidai_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cb/2018new_lvsidai_thumb.png",
+        "value": "[绿丝带]",
+        "picid": ""
+    },
+    {
+        "phrase": "[围脖]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/64/2018new_weibo_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/64/2018new_weibo_org.png",
+        "value": "[围脖]",
+        "picid": ""
+    },
+    {
+        "phrase": "[浪]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/46/2018new_xinlang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/46/2018new_xinlang_thumb.png",
+        "value": "[浪]",
+        "picid": ""
+    },
+    {
+        "phrase": "[羞嗒嗒]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/df/lxhxiudada_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/df/lxhxiudada_thumb.gif",
+        "value": "[羞嗒嗒]",
+        "picid": ""
+    },
+    {
+        "phrase": "[好爱哦]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/74/lxhainio_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/74/lxhainio_thumb.gif",
+        "value": "[好爱哦]",
+        "picid": ""
+    },
+    {
+        "phrase": "[偷乐]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fa/lxhtouxiao_thumb.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fa/lxhtouxiao_thumb.gif",
+        "value": "[偷乐]",
+        "picid": ""
+    },
+    {
+        "phrase": "[赞啊]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/00/lxhzan_thumb.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/00/lxhzan_thumb.gif",
+        "value": "[赞啊]",
+        "picid": ""
+    },
+    {
+        "phrase": "[笑哈哈]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/32/lxhwahaha_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/32/lxhwahaha_thumb.gif",
+        "value": "[笑哈哈]",
+        "picid": ""
+    },
+    {
+        "phrase": "[好喜欢]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d6/lxhlike_thumb.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d6/lxhlike_thumb.gif",
+        "value": "[好喜欢]",
+        "picid": ""
+    },
+    {
+        "phrase": "[求关注]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ac/lxhqiuguanzhu_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ac/lxhqiuguanzhu_thumb.gif",
+        "value": "[求关注]",
+        "picid": ""
+    },
+    {
+        "phrase": "[胖丁微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/68/film_pangdingsmile_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/68/film_pangdingsmile_thumb.png",
+        "value": "[胖丁微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[佩奇]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c6/hot_pigpeiqi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c6/hot_pigpeiqi_thumb.png",
+        "value": "[佩奇]",
+        "picid": ""
+    },
+    {
+        "phrase": "[大侦探皮卡丘微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b3/pikaqiu_weixiao_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b3/pikaqiu_weixiao_thumb.png",
+        "value": "[大侦探皮卡丘微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[圣诞老人111]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/93/xmax_oldman01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/93/xmax_oldman01_thumb.png",
+        "value": "[圣诞老人111]",
+        "picid": ""
+    },
+    {
+        "phrase": "[紫金草]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e5/gongjiri_zijinhua_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e5/gongjiri_zijinhua_thumb.png",
+        "value": "[紫金草]",
+        "picid": ""
+    },
+    {
+        "phrase": "[文明遛狗]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/93/gongyi_wenminglgnew_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/93/gongyi_wenminglgnew_thumb.png",
+        "value": "[文明遛狗]",
+        "picid": ""
+    },
+    {
+        "phrase": "[神马]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/60/horse2_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/60/horse2_thumb.gif",
+        "value": "[神马]",
+        "picid": ""
+    },
+    {
+        "phrase": "[马到成功]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b0/mdcg_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b0/mdcg_thumb.gif",
+        "value": "[马到成功]",
+        "picid": ""
+    },
+    {
+        "phrase": "[炸鸡啤酒]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e2/zhajibeer_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e2/zhajibeer_thumb.gif",
+        "value": "[炸鸡啤酒]",
+        "picid": ""
+    },
+    {
+        "phrase": "[最右]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/be/remen_zuiyou180605_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/be/remen_zuiyou180605_thumb.png",
+        "value": "[最右]",
+        "picid": ""
+    },
+    {
+        "phrase": "[织]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/41/zz2_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/41/zz2_thumb.gif",
+        "value": "[织]",
+        "picid": ""
+    },
+    {
+        "phrase": "[五仁月饼_旧]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/10/2018zhongqiu_yuebing_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/10/2018zhongqiu_yuebing_thumb.png",
+        "value": "[五仁月饼_旧]",
+        "picid": ""
+    },
+    {
+        "phrase": "[给你小心心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ca/qixi2018_xiaoxinxin_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ca/qixi2018_xiaoxinxin_thumb.png",
+        "value": "[给你小心心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[吃狗粮]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0b/qixi2018_chigouliang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0b/qixi2018_chigouliang_thumb.png",
+        "value": "[吃狗粮]",
+        "picid": ""
+    },
+    {
+        "phrase": "[弗莱见钱眼开]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/83/2018newyear_richdog_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/83/2018newyear_richdog_thumb.gif",
+        "value": "[弗莱见钱眼开]",
+        "picid": ""
+    },
+    {
+        "phrase": "[星星]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/76/hot_star171109_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/76/hot_star171109_thumb.png",
+        "value": "[星星]",
+        "picid": ""
+    },
+    {
+        "phrase": "[半星]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f9/hot_halfstar_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f9/hot_halfstar_thumb.png",
+        "value": "[半星]",
+        "picid": ""
+    },
+    {
+        "phrase": "[空星]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ff/hot_blankstar_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ff/hot_blankstar_thumb.png",
+        "value": "[空星]",
+        "picid": ""
+    },
+    {
+        "phrase": "[圣诞袜]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a6/2020_santastockings_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a6/2020_santastockings_thumb.png",
+        "value": "[圣诞袜]",
+        "picid": ""
+    },
+    {
+        "phrase": "[圣诞帽]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/74/2020_santahat_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/74/2020_santahat_thumb.png",
+        "value": "[圣诞帽]",
+        "picid": ""
+    },
+    {
+        "phrase": "[圣诞老人]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2020_santaclaus_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2020_santaclaus_thumb.png",
+        "value": "[圣诞老人]",
+        "picid": ""
+    },
+    {
+        "phrase": "[平安果]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ea/2020_apple_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ea/2020_apple_thumb.png",
+        "value": "[平安果]",
+        "picid": ""
+    },
+    {
+        "phrase": "[姜饼人]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/23/2020_gingerbread_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/23/2020_gingerbread_thumb.png",
+        "value": "[姜饼人]",
+        "picid": ""
+    },
+    {
+        "phrase": "[欢度国庆]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3b/guoqing20_huandugq_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3b/guoqing20_huandugq_thumb.png",
+        "value": "[欢度国庆]",
+        "picid": ""
+    },
+    {
+        "phrase": "[七夕布谷鸟]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/43/2020qixi_bugubird_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/43/2020qixi_bugubird_thumb.png",
+        "value": "[七夕布谷鸟]",
+        "picid": ""
+    },
+    {
+        "phrase": "[撒狗粮]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ec/qixi2020_sagouliang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ec/qixi2020_sagouliang_thumb.png",
+        "value": "[撒狗粮]",
+        "picid": ""
+    },
+    {
+        "phrase": "[求脱单]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/84/qixi2020_qiutuodan_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/84/qixi2020_qiutuodan_thumb.png",
+        "value": "[求脱单]",
+        "picid": ""
+    },
+    {
+        "phrase": "[酷炫街舞给手]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9a/yunying_jiewu03_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9a/yunying_jiewu03_thumb.png",
+        "value": "[酷炫街舞给手]",
+        "picid": ""
+    },
+    {
+        "phrase": "[这就是街舞3]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3d/yunying_jiewu02_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3d/yunying_jiewu02_thumb.png",
+        "value": "[这就是街舞3]",
+        "picid": ""
+    },
+    {
+        "phrase": "[毛巾助力]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c0/yunying_jiewu01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c0/yunying_jiewu01_thumb.png",
+        "value": "[毛巾助力]",
+        "picid": ""
+    },
+    {
+        "phrase": "[超新星运动会]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d0/yunying_starquanyunhui_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d0/yunying_starquanyunhui_thumb.png",
+        "value": "[超新星运动会]",
+        "picid": ""
+    },
+    {
+        "phrase": "[超人爸爸]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6c/2020fuqinjie_chaorenbaba_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/6c/2020fuqinjie_chaorenbaba_thumb.png",
+        "value": "[超人爸爸]",
+        "picid": ""
+    },
+    {
+        "phrase": "[我爱爸爸]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a0/2020fuqinjie_woaibaba_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a0/2020fuqinjie_woaibaba_thumb.png",
+        "value": "[我爱爸爸]",
+        "picid": ""
+    },
+    {
+        "phrase": "[父与子]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2020fuqinjie_fuyuzi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2020fuqinjie_fuyuzi_thumb.png",
+        "value": "[父与子]",
+        "picid": ""
+    },
+    {
+        "phrase": "[棒棒糖]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f4/2020liuyi_bangbangtang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f4/2020liuyi_bangbangtang_thumb.png",
+        "value": "[棒棒糖]",
+        "picid": ""
+    },
+    {
+        "phrase": "[纸飞机]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9d/2020liuyi_zhifeiji_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9d/2020liuyi_zhifeiji_thumb.png",
+        "value": "[纸飞机]",
+        "picid": ""
+    },
+    {
+        "phrase": "[炸鸡腿]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8c/yunying_zhaji_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8c/yunying_zhaji_thumb.png",
+        "value": "[炸鸡腿]",
+        "picid": ""
+    },
+    {
+        "phrase": "[武汉加油]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/02/hot_wuhanjiayou_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/02/hot_wuhanjiayou_thumb.png",
+        "value": "[武汉加油]",
+        "picid": ""
+    },
+    {
+        "phrase": "[点亮橙色]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/87/gongyi_dlchengse03_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/87/gongyi_dlchengse03_thumb.png",
+        "value": "[点亮橙色]",
+        "picid": ""
+    },
+    {
+        "phrase": "[锦鲤]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/94/hbf2019_jinli_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/94/hbf2019_jinli_thumb.png",
+        "value": "[锦鲤]",
+        "picid": ""
+    },
+    {
+        "phrase": "[微风]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c7/2018new_weifeng_thumb.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c7/2018new_weifeng_thumb.png",
+        "value": "[微风]",
+        "picid": ""
+    },
+    {
+        "phrase": "[蜡烛]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/16/2018new_lazhu_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/16/2018new_lazhu_org.png",
+        "value": "[蜡烛]",
+        "picid": ""
+    },
+    {
+        "phrase": "[蛋糕]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f9/2018new_dangao_org.png",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f9/2018new_dangao_org.png",
+        "value": "[蛋糕]",
+        "picid": ""
+    },
+    {
+        "phrase": "[看涨]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fe/kanzhangv2_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fe/kanzhangv2_thumb.gif",
+        "value": "[看涨]",
+        "picid": ""
+    },
+    {
+        "phrase": "[看跌]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c5/kandiev2_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c5/kandiev2_thumb.gif",
+        "value": "[看跌]",
+        "picid": ""
+    },
+    {
+        "phrase": "[带着微博去旅行]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ec/eventtravel_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "其他",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ec/eventtravel_thumb.gif",
+        "value": "[带着微博去旅行]",
+        "picid": ""
+    },
+    {
+        "phrase": "[绿植领养]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/06/2021_lvzhilingyang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "绿植",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/06/2021_lvzhilingyang_thumb.png",
+        "value": "[绿植领养]",
+        "picid": ""
+    },
+    {
+        "phrase": "[绿植挖土]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ef/2021_lvzhiwatu_org.png",
+        "hot": false,
+        "common": false,
+        "category": "绿植",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ef/2021_lvzhiwatu_thumb.png",
+        "value": "[绿植挖土]",
+        "picid": ""
+    },
+    {
+        "phrase": "[绿植托脸]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/33/2021_lvzhituolian_org.png",
+        "hot": false,
+        "common": false,
+        "category": "绿植",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/33/2021_lvzhituolian_thumb.png",
+        "value": "[绿植托脸]",
+        "picid": ""
+    },
+    {
+        "phrase": "[绿植乖巧]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/39/2021_lvzhiguaiqiao_org.png",
+        "hot": false,
+        "common": false,
+        "category": "绿植",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/39/2021_lvzhiguaiqiao_thumb.png",
+        "value": "[绿植乖巧]",
+        "picid": ""
+    },
+    {
+        "phrase": "[掌宝爱心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/89/2021_LZheart_org.png",
+        "hot": false,
+        "common": false,
+        "category": "掌宝",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/89/2021_LZheart_thumb.png",
+        "value": "[掌宝爱心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[掌宝加油]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/09/2021_LZfighting_org.png",
+        "hot": false,
+        "common": false,
+        "category": "掌宝",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/09/2021_LZfighting_thumb.png",
+        "value": "[掌宝加油]",
+        "picid": ""
+    },
+    {
+        "phrase": "[掌宝可怜]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2021_LZpoor_org.png",
+        "hot": false,
+        "common": false,
+        "category": "掌宝",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1e/2021_LZpoor_thumb.png",
+        "value": "[掌宝可怜]",
+        "picid": ""
+    },
+    {
+        "phrase": "[掌宝卖萌]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/53/2021_LZkawaii_org.png",
+        "hot": false,
+        "common": false,
+        "category": "掌宝",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/53/2021_LZkawaii_thumb.png",
+        "value": "[掌宝卖萌]",
+        "picid": ""
+    },
+    {
+        "phrase": "[掌宝哭泣]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/27/2021_LZcry_org.png",
+        "hot": false,
+        "common": false,
+        "category": "掌宝",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/27/2021_LZcry_thumb.png",
+        "value": "[掌宝哭泣]",
+        "picid": ""
+    },
+    {
+        "phrase": "[掌宝星星眼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/70/2021_LZstareyes_org.png",
+        "hot": false,
+        "common": false,
+        "category": "掌宝",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/70/2021_LZstareyes_thumb.png",
+        "value": "[掌宝星星眼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[掌宝荧光棒]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/98/2021_LZyingguangbang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "掌宝",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/98/2021_LZyingguangbang_thumb.png",
+        "value": "[掌宝荧光棒]",
+        "picid": ""
+    },
+    {
+        "phrase": "[蕾伊]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/66/starwar_leiyi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "星球大战",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/66/starwar_leiyi_thumb.png",
+        "value": "[蕾伊]",
+        "picid": ""
+    },
+    {
+        "phrase": "[凯洛伦]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cd/starwar_kailuolun_org.png",
+        "hot": false,
+        "common": false,
+        "category": "星球大战",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cd/starwar_kailuolun_thumb.png",
+        "value": "[凯洛伦]",
+        "picid": ""
+    },
+    {
+        "phrase": "[BB8]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e9/starwar_bb8_org.png",
+        "hot": false,
+        "common": false,
+        "category": "星球大战",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e9/starwar_bb8_thumb.png",
+        "value": "[BB8]",
+        "picid": ""
+    },
+    {
+        "phrase": "[冲锋队员]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/39/starwar_chongfengduiyuan_org.png",
+        "hot": false,
+        "common": false,
+        "category": "星球大战",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/39/starwar_chongfengduiyuan_thumb.png",
+        "value": "[冲锋队员]",
+        "picid": ""
+    },
+    {
+        "phrase": "[达斯维达]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/starwar_dasiweida_org.png",
+        "hot": false,
+        "common": false,
+        "category": "星球大战",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/starwar_dasiweida_thumb.png",
+        "value": "[达斯维达]",
+        "picid": ""
+    },
+    {
+        "phrase": "[C3PO]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c1/starwar_c3po_org.png",
+        "hot": false,
+        "common": false,
+        "category": "星球大战",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c1/starwar_c3po_thumb.png",
+        "value": "[C3PO]",
+        "picid": ""
+    },
+    {
+        "phrase": "[丘巴卡]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/5d/starwar_qiubaka_org.png",
+        "hot": false,
+        "common": false,
+        "category": "星球大战",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/5d/starwar_qiubaka_thumb.png",
+        "value": "[丘巴卡]",
+        "picid": ""
+    },
+    {
+        "phrase": "[R2D2]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/04/starwar_r2d2_org.png",
+        "hot": false,
+        "common": false,
+        "category": "星球大战",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/04/starwar_r2d2_thumb.png",
+        "value": "[R2D2]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦花心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/08/dorahaose_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/08/dorahaose_thumb.gif",
+        "value": "[哆啦A梦花心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦害怕]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c7/dorahaipa_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c7/dorahaipa_thumb.gif",
+        "value": "[哆啦A梦害怕]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦吃惊]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f0/dorachijing_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f0/dorachijing_thumb.gif",
+        "value": "[哆啦A梦吃惊]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦汗]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/61/dorahan_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/61/dorahan_thumb.gif",
+        "value": "[哆啦A梦汗]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9e/jqmweixiao_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9e/jqmweixiao_thumb.gif",
+        "value": "[哆啦A梦微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[伴我同行]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ef/jqmbwtxing_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ef/jqmbwtxing_thumb.gif",
+        "value": "[伴我同行]",
+        "picid": ""
+    },
+    {
+        "phrase": "[静香微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/29/jiqimaojingxiang_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/29/jiqimaojingxiang_thumb.gif",
+        "value": "[静香微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[大雄微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8e/jiqimaodaxiong_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/8e/jiqimaodaxiong_thumb.gif",
+        "value": "[大雄微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[胖虎微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2f/jiqimaopanghu_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/2f/jiqimaopanghu_thumb.gif",
+        "value": "[胖虎微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小夫微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/21/jiqimaoxiaofu_org.gif",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/21/jiqimaoxiaofu_thumb.gif",
+        "value": "[小夫微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/54/dora_xiao_org.png",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/54/dora_xiao_thumb.png",
+        "value": "[哆啦A梦笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦无奈]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/96/dora_wunai_org.png",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/96/dora_wunai_thumb.png",
+        "value": "[哆啦A梦无奈]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦美味]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/21/dora_meiwei_org.png",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/21/dora_meiwei_thumb.png",
+        "value": "[哆啦A梦美味]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦开心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/df/dora_kaixin_org.png",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/df/dora_kaixin_thumb.png",
+        "value": "[哆啦A梦开心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哆啦A梦亲亲]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e0/dora_qinqin_org.png",
+        "hot": false,
+        "common": false,
+        "category": "哆啦A梦",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e0/dora_qinqin_thumb.png",
+        "value": "[哆啦A梦亲亲]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f0/xhrnew_weixiao_org.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f0/xhrnew_weixiao_org.png",
+        "value": "[小黄人微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人剪刀手]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/63/xhrnew_jiandaoshou_org.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/63/xhrnew_jiandaoshou_org.png",
+        "value": "[小黄人剪刀手]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人不屑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b2/xhrnew_buxie_org.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/b2/xhrnew_buxie_org.png",
+        "value": "[小黄人不屑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人高兴]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/41/xhrnew_gaoxing_org.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/41/xhrnew_gaoxing_org.png",
+        "value": "[小黄人高兴]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人惊讶]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fd/xhrnew_jingya_thumb.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/fd/xhrnew_jingya_thumb.png",
+        "value": "[小黄人惊讶]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人委屈]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/79/xhrnew_weiqu_org.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/79/xhrnew_weiqu_org.png",
+        "value": "[小黄人委屈]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人坏笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/be/xhrnew_huaixiao_thumb.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/be/xhrnew_huaixiao_thumb.png",
+        "value": "[小黄人坏笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人白眼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e2/xhrnew_baiyan_org.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e2/xhrnew_baiyan_org.png",
+        "value": "[小黄人白眼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人无奈]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/15/xhrnew_wunai_org.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/15/xhrnew_wunai_thumb.png",
+        "value": "[小黄人无奈]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小黄人得意]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c8/xhrnew_deyi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "小黄人",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/c8/xhrnew_deyi_thumb.png",
+        "value": "[小黄人得意]",
+        "picid": ""
+    },
+    {
+        "phrase": "[钢铁侠]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/27/avengers_ironman01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/27/avengers_ironman01_thumb.png",
+        "value": "[钢铁侠]",
+        "picid": ""
+    },
+    {
+        "phrase": "[美国队长]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d8/avengers_captain01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d8/avengers_captain01_thumb.png",
+        "value": "[美国队长]",
+        "picid": ""
+    },
+    {
+        "phrase": "[雷神]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/avengers_thor01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/3c/avengers_thor01_thumb.png",
+        "value": "[雷神]",
+        "picid": ""
+    },
+    {
+        "phrase": "[浩克]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/44/avengers_hulk01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/44/avengers_hulk01_thumb.png",
+        "value": "[浩克]",
+        "picid": ""
+    },
+    {
+        "phrase": "[黑寡妇]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0e/avengers_blackwidow01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/0e/avengers_blackwidow01_thumb.png",
+        "value": "[黑寡妇]",
+        "picid": ""
+    },
+    {
+        "phrase": "[鹰眼]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/93/avengers_clint01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/93/avengers_clint01_thumb.png",
+        "value": "[鹰眼]",
+        "picid": ""
+    },
+    {
+        "phrase": "[惊奇队长]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/44/avengers_captainmarvel01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/44/avengers_captainmarvel01_thumb.png",
+        "value": "[惊奇队长]",
+        "picid": ""
+    },
+    {
+        "phrase": "[奥克耶]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/62/avengers_aokeye01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/62/avengers_aokeye01_thumb.png",
+        "value": "[奥克耶]",
+        "picid": ""
+    },
+    {
+        "phrase": "[蚁人]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cc/avengers_antman01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/cc/avengers_antman01_thumb.png",
+        "value": "[蚁人]",
+        "picid": ""
+    },
+    {
+        "phrase": "[灭霸]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ce/avengers_thanos01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/ce/avengers_thanos01_thumb.png",
+        "value": "[灭霸]",
+        "picid": ""
+    },
+    {
+        "phrase": "[蜘蛛侠]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e2/avengers_spiderman01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/e2/avengers_spiderman01_thumb.png",
+        "value": "[蜘蛛侠]",
+        "picid": ""
+    },
+    {
+        "phrase": "[洛基]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1f/avengers_locki01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1f/avengers_locki01_thumb.png",
+        "value": "[洛基]",
+        "picid": ""
+    },
+    {
+        "phrase": "[奇异博士]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9c/avengers_drstranger01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/9c/avengers_drstranger01_thumb.png",
+        "value": "[奇异博士]",
+        "picid": ""
+    },
+    {
+        "phrase": "[冬兵]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/91/avengers_wintersolider01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/91/avengers_wintersolider01_thumb.png",
+        "value": "[冬兵]",
+        "picid": ""
+    },
+    {
+        "phrase": "[黑豹]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/avengers_panther01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/avengers_panther01_thumb.png",
+        "value": "[黑豹]",
+        "picid": ""
+    },
+    {
+        "phrase": "[猩红女巫]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a9/avengers_witch01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/a9/avengers_witch01_thumb.png",
+        "value": "[猩红女巫]",
+        "picid": ""
+    },
+    {
+        "phrase": "[幻视]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/07/avengers_vision01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/07/avengers_vision01_thumb.png",
+        "value": "[幻视]",
+        "picid": ""
+    },
+    {
+        "phrase": "[星爵]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/35/avengers_starlord01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/35/avengers_starlord01_thumb.png",
+        "value": "[星爵]",
+        "picid": ""
+    },
+    {
+        "phrase": "[格鲁特]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7a/avengers_gelute01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7a/avengers_gelute01_thumb.png",
+        "value": "[格鲁特]",
+        "picid": ""
+    },
+    {
+        "phrase": "[螳螂妹]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7c/avengers_mantis01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/7c/avengers_mantis01_thumb.png",
+        "value": "[螳螂妹]",
+        "picid": ""
+    },
+    {
+        "phrase": "[无限手套]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/38/avengers_gauntlet01_org.png",
+        "hot": false,
+        "common": false,
+        "category": "复仇者联盟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/38/avengers_gauntlet01_thumb.png",
+        "value": "[无限手套]",
+        "picid": ""
+    },
+    {
+        "phrase": "[胖红拽]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/de/angerbird_panghongzhuai_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/de/angerbird_panghongzhuai_thumb.png",
+        "value": "[胖红拽]",
+        "picid": ""
+    },
+    {
+        "phrase": "[胖红生气]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/angerbird_shengqi_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/40/angerbird_shengqi_thumb.png",
+        "value": "[胖红生气]",
+        "picid": ""
+    },
+    {
+        "phrase": "[胖红微笑]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f9/angerbird_panghongweixiao_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/f9/angerbird_panghongweixiao_thumb.png",
+        "value": "[胖红微笑]",
+        "picid": ""
+    },
+    {
+        "phrase": "[飞镖黄跳舞]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d2/angerbird_feibiaohuang_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d2/angerbird_feibiaohuang_thumb.png",
+        "value": "[飞镖黄跳舞]",
+        "picid": ""
+    },
+    {
+        "phrase": "[炸弹黑hi]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/angerbird_zhadanhei_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/86/angerbird_zhadanhei_thumb.png",
+        "value": "[炸弹黑hi]",
+        "picid": ""
+    },
+    {
+        "phrase": "[三三蹦跳]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/33/angerbird_sansna_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/33/angerbird_sansna_thumb.png",
+        "value": "[三三蹦跳]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小V开心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/80/angerbird_xiaovkaixin_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/80/angerbird_xiaovkaixin_thumb.png",
+        "value": "[小V开心]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小V生气]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/01/angerbird_xiaov_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/01/angerbird_xiaov_thumb.png",
+        "value": "[小V生气]",
+        "picid": ""
+    },
+    {
+        "phrase": "[佐伊卖萌]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/angerbird_zuoyimaimeng_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/50/angerbird_zuoyimaimeng_thumb.png",
+        "value": "[佐伊卖萌]",
+        "picid": ""
+    },
+    {
+        "phrase": "[小猪惊讶]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/56/angerbird_xiaozhujingya_org.png",
+        "hot": false,
+        "common": false,
+        "category": "愤怒的小鸟",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/56/angerbird_xiaozhujingya_thumb.png",
+        "value": "[小猪惊讶]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哪吒委屈]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d4/nezha_weiqu02_org.png",
+        "hot": false,
+        "common": false,
+        "category": "哪吒",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/d4/nezha_weiqu02_thumb.png",
+        "value": "[哪吒委屈]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哪吒得意]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1d/nezha_deyi02_org.png",
+        "hot": false,
+        "common": false,
+        "category": "哪吒",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/1d/nezha_deyi02_thumb.png",
+        "value": "[哪吒得意]",
+        "picid": ""
+    },
+    {
+        "phrase": "[哪吒开心]",
+        "type": "face",
+        "url": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/35/nezha_kaixin02_org.png",
+        "hot": false,
+        "common": false,
+        "category": "哪吒",
+        "icon": "https://face.t.sinajs.cn/t4/appstyle/expression/ext/normal/35/nezha_kaixin02_thumb.png",
+        "value": "[哪吒开心]",
+        "picid": ""
+    }
+]
+export default sinaEmoji;

+ 1595 - 0
assets/css/czy/es.1.base.css

@@ -0,0 +1,1595 @@
+.es{
+	display: flex;
+	flex-direction: row;
+	justify-content: flex-start;
+	position: relative;
+}
+
+.es-fx{
+	flex: 1;
+}
+
+.es-ver{
+	flex-direction: column;
+}
+
+.es-ac{
+	align-items: center;
+}
+.es-ae{
+	align-items: flex-end;
+}
+
+.es-pc{
+	justify-content: center;
+}
+
+.es-pe{
+	justify-content: flex-end;
+}
+
+.es-f1{
+	/*#ifndef APP-NVUE*/   
+	flex-grow: 1;
+	 /*#endif*/ 
+}
+.es-f2{
+	/*#ifndef APP-NVUE*/   
+	flex-grow: 2;
+	 /*#endif*/ 
+}
+.es-f3{
+	/*#ifndef APP-NVUE*/   
+	flex-grow: 3;
+	 /*#endif*/ 
+}
+.es-f4{
+	/*#ifndef APP-NVUE*/   
+	flex-grow: 4;
+	/*#endif*/ 
+}
+
+/*#ifndef APP-NVUE*/   
+.es > div,.es > view{
+	flex-shrink: 0;
+}
+/*#endif*/ 
+
+.es-f1,.es-f2,.es-f3,.es-f4{
+	/*#ifndef APP-NVUE*/ 
+	flex-shrink: 1 !important;
+	/*#endif*/ 
+	overflow: hidden;
+}
+
+/*es+es-pc+es-ac*/
+.es-center{
+	justify-content: space-between;
+}
+.es-max-btn{
+	display: flex;
+	flex-direction: row;
+	position: relative;
+	align-items: center;
+	justify-content: center;
+}
+
+/*margin*/
+.es-ml-1{ margin-left:1rpx; }
+.es-ml-2{ margin-left:2rpx; }
+.es-ml-3{ margin-left:3rpx; }
+.es-ml-4{ margin-left:4rpx; }
+.es-ml-5{ margin-left:5rpx; }
+.es-ml-6{ margin-left:6rpx; }
+.es-ml-7{ margin-left:7rpx; }
+.es-ml-8{ margin-left:8rpx; }
+.es-ml-9{ margin-left:9rpx; }
+.es-ml-10{ margin-left:10rpx; }
+.es-ml-11{ margin-left:11rpx; }
+.es-ml-12{ margin-left:12rpx; }
+.es-ml-13{ margin-left:13rpx; }
+.es-ml-14{ margin-left:14rpx; }
+.es-ml-15{ margin-left:15rpx; }
+.es-ml-16{ margin-left:16rpx; }
+.es-ml-17{ margin-left:17rpx; }
+.es-ml-18{ margin-left:18rpx; }
+.es-ml-19{ margin-left:19rpx; }
+.es-ml-20{ margin-left:20rpx; }
+.es-ml-21{ margin-left:21rpx; }
+.es-ml-22{ margin-left:22rpx; }
+.es-ml-23{ margin-left:23rpx; }
+.es-ml-24{ margin-left:24rpx; }
+.es-ml-25{ margin-left:25rpx; }
+.es-ml-26{ margin-left:26rpx; }
+.es-ml-27{ margin-left:27rpx; }
+.es-ml-28{ margin-left:28rpx; }
+.es-ml-29{ margin-left:29rpx; }
+.es-ml-30{ margin-left:30rpx; }
+.es-ml-31{ margin-left:31rpx; }
+.es-ml-32{ margin-left:32rpx; }
+.es-ml-33{ margin-left:33rpx; }
+.es-ml-34{ margin-left:34rpx; }
+.es-ml-35{ margin-left:35rpx; }
+.es-ml-36{ margin-left:36rpx; }
+.es-ml-37{ margin-left:37rpx; }
+.es-ml-38{ margin-left:38rpx; }
+.es-ml-39{ margin-left:39rpx; }
+.es-ml-40{ margin-left:40rpx; }
+.es-ml-41{ margin-left:41rpx; }
+.es-ml-42{ margin-left:42rpx; }
+.es-ml-43{ margin-left:43rpx; }
+.es-ml-44{ margin-left:44rpx; }
+.es-ml-45{ margin-left:45rpx; }
+.es-ml-46{ margin-left:46rpx; }
+.es-ml-47{ margin-left:47rpx; }
+.es-ml-48{ margin-left:48rpx; }
+.es-ml-49{ margin-left:49rpx; }
+.es-ml-50{ margin-left:50rpx; }
+
+.es-mr-1{ margin-right:1rpx; }
+.es-mr-2{ margin-right:2rpx; }
+.es-mr-3{ margin-right:3rpx; }
+.es-mr-4{ margin-right:4rpx; }
+.es-mr-5{ margin-right:5rpx; }
+.es-mr-6{ margin-right:6rpx; }
+.es-mr-7{ margin-right:7rpx; }
+.es-mr-8{ margin-right:8rpx; }
+.es-mr-9{ margin-right:9rpx; }
+.es-mr-10{ margin-right:10rpx; }
+.es-mr-11{ margin-right:11rpx; }
+.es-mr-12{ margin-right:12rpx; }
+.es-mr-13{ margin-right:13rpx; }
+.es-mr-14{ margin-right:14rpx; }
+.es-mr-15{ margin-right:15rpx; }
+.es-mr-16{ margin-right:16rpx; }
+.es-mr-17{ margin-right:17rpx; }
+.es-mr-18{ margin-right:18rpx; }
+.es-mr-19{ margin-right:19rpx; }
+.es-mr-20{ margin-right:20rpx; }
+.es-mr-21{ margin-right:21rpx; }
+.es-mr-22{ margin-right:22rpx; }
+.es-mr-23{ margin-right:23rpx; }
+.es-mr-24{ margin-right:24rpx; }
+.es-mr-25{ margin-right:25rpx; }
+.es-mr-26{ margin-right:26rpx; }
+.es-mr-27{ margin-right:27rpx; }
+.es-mr-28{ margin-right:28rpx; }
+.es-mr-29{ margin-right:29rpx; }
+.es-mr-30{ margin-right:30rpx; }
+.es-mr-31{ margin-right:31rpx; }
+.es-mr-32{ margin-right:32rpx; }
+.es-mr-33{ margin-right:33rpx; }
+.es-mr-34{ margin-right:34rpx; }
+.es-mr-35{ margin-right:35rpx; }
+.es-mr-36{ margin-right:36rpx; }
+.es-mr-37{ margin-right:37rpx; }
+.es-mr-38{ margin-right:38rpx; }
+.es-mr-39{ margin-right:39rpx; }
+.es-mr-40{ margin-right:40rpx; }
+.es-mr-41{ margin-right:41rpx; }
+.es-mr-42{ margin-right:42rpx; }
+.es-mr-43{ margin-right:43rpx; }
+.es-mr-44{ margin-right:44rpx; }
+.es-mr-45{ margin-right:45rpx; }
+.es-mr-46{ margin-right:46rpx; }
+.es-mr-47{ margin-right:47rpx; }
+.es-mr-48{ margin-right:48rpx; }
+.es-mr-49{ margin-right:49rpx; }
+.es-mr-50{ margin-right:50rpx; }
+
+.es-mt-1{ margin-top:1rpx; }
+.es-mt-2{ margin-top:2rpx; }
+.es-mt-3{ margin-top:3rpx; }
+.es-mt-4{ margin-top:4rpx; }
+.es-mt-5{ margin-top:5rpx; }
+.es-mt-6{ margin-top:6rpx; }
+.es-mt-7{ margin-top:7rpx; }
+.es-mt-8{ margin-top:8rpx; }
+.es-mt-9{ margin-top:9rpx; }
+.es-mt-10{ margin-top:10rpx; }
+.es-mt-11{ margin-top:11rpx; }
+.es-mt-12{ margin-top:12rpx; }
+.es-mt-13{ margin-top:13rpx; }
+.es-mt-14{ margin-top:14rpx; }
+.es-mt-15{ margin-top:15rpx; }
+.es-mt-16{ margin-top:16rpx; }
+.es-mt-17{ margin-top:17rpx; }
+.es-mt-18{ margin-top:18rpx; }
+.es-mt-19{ margin-top:19rpx; }
+.es-mt-20{ margin-top:20rpx; }
+.es-mt-21{ margin-top:21rpx; }
+.es-mt-22{ margin-top:22rpx; }
+.es-mt-23{ margin-top:23rpx; }
+.es-mt-24{ margin-top:24rpx; }
+.es-mt-25{ margin-top:25rpx; }
+.es-mt-26{ margin-top:26rpx; }
+.es-mt-27{ margin-top:27rpx; }
+.es-mt-28{ margin-top:28rpx; }
+.es-mt-29{ margin-top:29rpx; }
+.es-mt-30{ margin-top:30rpx; }
+.es-mt-31{ margin-top:31rpx; }
+.es-mt-32{ margin-top:32rpx; }
+.es-mt-33{ margin-top:33rpx; }
+.es-mt-34{ margin-top:34rpx; }
+.es-mt-35{ margin-top:35rpx; }
+.es-mt-36{ margin-top:36rpx; }
+.es-mt-37{ margin-top:37rpx; }
+.es-mt-38{ margin-top:38rpx; }
+.es-mt-39{ margin-top:39rpx; }
+.es-mt-40{ margin-top:40rpx; }
+.es-mt-41{ margin-top:41rpx; }
+.es-mt-42{ margin-top:42rpx; }
+.es-mt-43{ margin-top:43rpx; }
+.es-mt-44{ margin-top:44rpx; }
+.es-mt-45{ margin-top:45rpx; }
+.es-mt-46{ margin-top:46rpx; }
+.es-mt-47{ margin-top:47rpx; }
+.es-mt-48{ margin-top:48rpx; }
+.es-mt-49{ margin-top:49rpx; }
+.es-mt-50{ margin-top:50rpx; }
+
+.es-mb-1{ margin-bottom:1rpx; }
+.es-mb-2{ margin-bottom:2rpx; }
+.es-mb-3{ margin-bottom:3rpx; }
+.es-mb-4{ margin-bottom:4rpx; }
+.es-mb-5{ margin-bottom:5rpx; }
+.es-mb-6{ margin-bottom:6rpx; }
+.es-mb-7{ margin-bottom:7rpx; }
+.es-mb-8{ margin-bottom:8rpx; }
+.es-mb-9{ margin-bottom:9rpx; }
+.es-mb-10{ margin-bottom:10rpx; }
+.es-mb-11{ margin-bottom:11rpx; }
+.es-mb-12{ margin-bottom:12rpx; }
+.es-mb-13{ margin-bottom:13rpx; }
+.es-mb-14{ margin-bottom:14rpx; }
+.es-mb-15{ margin-bottom:15rpx; }
+.es-mb-16{ margin-bottom:16rpx; }
+.es-mb-17{ margin-bottom:17rpx; }
+.es-mb-18{ margin-bottom:18rpx; }
+.es-mb-19{ margin-bottom:19rpx; }
+.es-mb-20{ margin-bottom:20rpx; }
+.es-mb-21{ margin-bottom:21rpx; }
+.es-mb-22{ margin-bottom:22rpx; }
+.es-mb-23{ margin-bottom:23rpx; }
+.es-mb-24{ margin-bottom:24rpx; }
+.es-mb-25{ margin-bottom:25rpx; }
+.es-mb-26{ margin-bottom:26rpx; }
+.es-mb-27{ margin-bottom:27rpx; }
+.es-mb-28{ margin-bottom:28rpx; }
+.es-mb-29{ margin-bottom:29rpx; }
+.es-mb-30{ margin-bottom:30rpx; }
+.es-mb-31{ margin-bottom:31rpx; }
+.es-mb-32{ margin-bottom:32rpx; }
+.es-mb-33{ margin-bottom:33rpx; }
+.es-mb-34{ margin-bottom:34rpx; }
+.es-mb-35{ margin-bottom:35rpx; }
+.es-mb-36{ margin-bottom:36rpx; }
+.es-mb-37{ margin-bottom:37rpx; }
+.es-mb-38{ margin-bottom:38rpx; }
+.es-mb-39{ margin-bottom:39rpx; }
+.es-mb-40{ margin-bottom:40rpx; }
+.es-mb-41{ margin-bottom:41rpx; }
+.es-mb-42{ margin-bottom:42rpx; }
+.es-mb-43{ margin-bottom:43rpx; }
+.es-mb-44{ margin-bottom:44rpx; }
+.es-mb-45{ margin-bottom:45rpx; }
+.es-mb-46{ margin-bottom:46rpx; }
+.es-mb-47{ margin-bottom:47rpx; }
+.es-mb-48{ margin-bottom:48rpx; }
+.es-mb-49{ margin-bottom:49rpx; }
+.es-mb-50{ margin-bottom:50rpx; }
+
+/*padding*/
+.es-pl-1{ padding-left:1rpx; }
+.es-pl-2{ padding-left:2rpx; }
+.es-pl-3{ padding-left:3rpx; }
+.es-pl-4{ padding-left:4rpx; }
+.es-pl-5{ padding-left:5rpx; }
+.es-pl-6{ padding-left:6rpx; }
+.es-pl-7{ padding-left:7rpx; }
+.es-pl-8{ padding-left:8rpx; }
+.es-pl-9{ padding-left:9rpx; }
+.es-pl-10{ padding-left:10rpx; }
+.es-pl-11{ padding-left:11rpx; }
+.es-pl-12{ padding-left:12rpx; }
+.es-pl-13{ padding-left:13rpx; }
+.es-pl-14{ padding-left:14rpx; }
+.es-pl-15{ padding-left:15rpx; }
+.es-pl-16{ padding-left:16rpx; }
+.es-pl-17{ padding-left:17rpx; }
+.es-pl-18{ padding-left:18rpx; }
+.es-pl-19{ padding-left:19rpx; }
+.es-pl-20{ padding-left:20rpx; }
+.es-pl-21{ padding-left:21rpx; }
+.es-pl-22{ padding-left:22rpx; }
+.es-pl-23{ padding-left:23rpx; }
+.es-pl-24{ padding-left:24rpx; }
+.es-pl-25{ padding-left:25rpx; }
+.es-pl-26{ padding-left:26rpx; }
+.es-pl-27{ padding-left:27rpx; }
+.es-pl-28{ padding-left:28rpx; }
+.es-pl-29{ padding-left:29rpx; }
+.es-pl-30{ padding-left:30rpx; }
+.es-pl-31{ padding-left:31rpx; }
+.es-pl-32{ padding-left:32rpx; }
+.es-pl-33{ padding-left:33rpx; }
+.es-pl-34{ padding-left:34rpx; }
+.es-pl-35{ padding-left:35rpx; }
+.es-pl-36{ padding-left:36rpx; }
+.es-pl-37{ padding-left:37rpx; }
+.es-pl-38{ padding-left:38rpx; }
+.es-pl-39{ padding-left:39rpx; }
+.es-pl-40{ padding-left:40rpx; }
+.es-pl-41{ padding-left:41rpx; }
+.es-pl-42{ padding-left:42rpx; }
+.es-pl-43{ padding-left:43rpx; }
+.es-pl-44{ padding-left:44rpx; }
+.es-pl-45{ padding-left:45rpx; }
+.es-pl-46{ padding-left:46rpx; }
+.es-pl-47{ padding-left:47rpx; }
+.es-pl-48{ padding-left:48rpx; }
+.es-pl-49{ padding-left:49rpx; }
+.es-pl-50{ padding-left:50rpx; }
+
+.es-pr-1{ padding-right:1rpx; }
+.es-pr-2{ padding-right:2rpx; }
+.es-pr-3{ padding-right:3rpx; }
+.es-pr-4{ padding-right:4rpx; }
+.es-pr-5{ padding-right:5rpx; }
+.es-pr-6{ padding-right:6rpx; }
+.es-pr-7{ padding-right:7rpx; }
+.es-pr-8{ padding-right:8rpx; }
+.es-pr-9{ padding-right:9rpx; }
+.es-pr-10{ padding-right:10rpx; }
+.es-pr-11{ padding-right:11rpx; }
+.es-pr-12{ padding-right:12rpx; }
+.es-pr-13{ padding-right:13rpx; }
+.es-pr-14{ padding-right:14rpx; }
+.es-pr-15{ padding-right:15rpx; }
+.es-pr-16{ padding-right:16rpx; }
+.es-pr-17{ padding-right:17rpx; }
+.es-pr-18{ padding-right:18rpx; }
+.es-pr-19{ padding-right:19rpx; }
+.es-pr-20{ padding-right:20rpx; }
+.es-pr-21{ padding-right:21rpx; }
+.es-pr-22{ padding-right:22rpx; }
+.es-pr-23{ padding-right:23rpx; }
+.es-pr-24{ padding-right:24rpx; }
+.es-pr-25{ padding-right:25rpx; }
+.es-pr-26{ padding-right:26rpx; }
+.es-pr-27{ padding-right:27rpx; }
+.es-pr-28{ padding-right:28rpx; }
+.es-pr-29{ padding-right:29rpx; }
+.es-pr-30{ padding-right:30rpx; }
+.es-pr-31{ padding-right:31rpx; }
+.es-pr-32{ padding-right:32rpx; }
+.es-pr-33{ padding-right:33rpx; }
+.es-pr-34{ padding-right:34rpx; }
+.es-pr-35{ padding-right:35rpx; }
+.es-pr-36{ padding-right:36rpx; }
+.es-pr-37{ padding-right:37rpx; }
+.es-pr-38{ padding-right:38rpx; }
+.es-pr-39{ padding-right:39rpx; }
+.es-pr-40{ padding-right:40rpx; }
+.es-pr-41{ padding-right:41rpx; }
+.es-pr-42{ padding-right:42rpx; }
+.es-pr-43{ padding-right:43rpx; }
+.es-pr-44{ padding-right:44rpx; }
+.es-pr-45{ padding-right:45rpx; }
+.es-pr-46{ padding-right:46rpx; }
+.es-pr-47{ padding-right:47rpx; }
+.es-pr-48{ padding-right:48rpx; }
+.es-pr-49{ padding-right:49rpx; }
+.es-pr-50{ padding-right:50rpx; }
+.es-pl-51{ padding-left:51rpx; }
+.es-pl-52{ padding-left:52rpx; }
+.es-pl-53{ padding-left:53rpx; }
+.es-pl-54{ padding-left:54rpx; }
+.es-pl-55{ padding-left:55rpx; }
+.es-pl-56{ padding-left:56rpx; }
+.es-pl-57{ padding-left:57rpx; }
+.es-pl-58{ padding-left:58rpx; }
+.es-pl-59{ padding-left:59rpx; }
+
+.es-pt-1{ padding-top:1rpx; }
+.es-pt-2{ padding-top:2rpx; }
+.es-pt-3{ padding-top:3rpx; }
+.es-pt-4{ padding-top:4rpx; }
+.es-pt-5{ padding-top:5rpx; }
+.es-pt-6{ padding-top:6rpx; }
+.es-pt-7{ padding-top:7rpx; }
+.es-pt-8{ padding-top:8rpx; }
+.es-pt-9{ padding-top:9rpx; }
+.es-pt-10{ padding-top:10rpx; }
+.es-pt-11{ padding-top:11rpx; }
+.es-pt-12{ padding-top:12rpx; }
+.es-pt-13{ padding-top:13rpx; }
+.es-pt-14{ padding-top:14rpx; }
+.es-pt-15{ padding-top:15rpx; }
+.es-pt-16{ padding-top:16rpx; }
+.es-pt-17{ padding-top:17rpx; }
+.es-pt-18{ padding-top:18rpx; }
+.es-pt-19{ padding-top:19rpx; }
+.es-pt-20{ padding-top:20rpx; }
+.es-pt-21{ padding-top:21rpx; }
+.es-pt-22{ padding-top:22rpx; }
+.es-pt-23{ padding-top:23rpx; }
+.es-pt-24{ padding-top:24rpx; }
+.es-pt-25{ padding-top:25rpx; }
+.es-pt-26{ padding-top:26rpx; }
+.es-pt-27{ padding-top:27rpx; }
+.es-pt-28{ padding-top:28rpx; }
+.es-pt-29{ padding-top:29rpx; }
+.es-pt-30{ padding-top:30rpx; }
+.es-pt-31{ padding-top:31rpx; }
+.es-pt-32{ padding-top:32rpx; }
+.es-pt-33{ padding-top:33rpx; }
+.es-pt-34{ padding-top:34rpx; }
+.es-pt-35{ padding-top:35rpx; }
+.es-pt-36{ padding-top:36rpx; }
+.es-pt-37{ padding-top:37rpx; }
+.es-pt-38{ padding-top:38rpx; }
+.es-pt-39{ padding-top:39rpx; }
+.es-pt-40{ padding-top:40rpx; }
+.es-pt-41{ padding-top:41rpx; }
+.es-pt-42{ padding-top:42rpx; }
+.es-pt-43{ padding-top:43rpx; }
+.es-pt-44{ padding-top:44rpx; }
+.es-pt-45{ padding-top:45rpx; }
+.es-pt-46{ padding-top:46rpx; }
+.es-pt-47{ padding-top:47rpx; }
+.es-pt-48{ padding-top:48rpx; }
+.es-pt-49{ padding-top:49rpx; }
+.es-pt-50{ padding-top:50rpx; }
+
+.es-pb-1{ padding-bottom:1rpx; }
+.es-pb-2{ padding-bottom:2rpx; }
+.es-pb-3{ padding-bottom:3rpx; }
+.es-pb-4{ padding-bottom:4rpx; }
+.es-pb-5{ padding-bottom:5rpx; }
+.es-pb-6{ padding-bottom:6rpx; }
+.es-pb-7{ padding-bottom:7rpx; }
+.es-pb-8{ padding-bottom:8rpx; }
+.es-pb-9{ padding-bottom:9rpx; }
+.es-pb-10{ padding-bottom:10rpx; }
+.es-pb-11{ padding-bottom:11rpx; }
+.es-pb-12{ padding-bottom:12rpx; }
+.es-pb-13{ padding-bottom:13rpx; }
+.es-pb-14{ padding-bottom:14rpx; }
+.es-pb-15{ padding-bottom:15rpx; }
+.es-pb-16{ padding-bottom:16rpx; }
+.es-pb-17{ padding-bottom:17rpx; }
+.es-pb-18{ padding-bottom:18rpx; }
+.es-pb-19{ padding-bottom:19rpx; }
+.es-pb-20{ padding-bottom:20rpx; }
+.es-pb-21{ padding-bottom:21rpx; }
+.es-pb-22{ padding-bottom:22rpx; }
+.es-pb-23{ padding-bottom:23rpx; }
+.es-pb-24{ padding-bottom:24rpx; }
+.es-pb-25{ padding-bottom:25rpx; }
+.es-pb-26{ padding-bottom:26rpx; }
+.es-pb-27{ padding-bottom:27rpx; }
+.es-pb-28{ padding-bottom:28rpx; }
+.es-pb-29{ padding-bottom:29rpx; }
+.es-pb-30{ padding-bottom:30rpx; }
+.es-pb-31{ padding-bottom:31rpx; }
+.es-pb-32{ padding-bottom:32rpx; }
+.es-pb-33{ padding-bottom:33rpx; }
+.es-pb-34{ padding-bottom:34rpx; }
+.es-pb-35{ padding-bottom:35rpx; }
+.es-pb-36{ padding-bottom:36rpx; }
+.es-pb-37{ padding-bottom:37rpx; }
+.es-pb-38{ padding-bottom:38rpx; }
+.es-pb-39{ padding-bottom:39rpx; }
+.es-pb-40{ padding-bottom:40rpx; }
+.es-pb-41{ padding-bottom:41rpx; }
+.es-pb-42{ padding-bottom:42rpx; }
+.es-pb-43{ padding-bottom:43rpx; }
+.es-pb-44{ padding-bottom:44rpx; }
+.es-pb-45{ padding-bottom:45rpx; }
+.es-pb-46{ padding-bottom:46rpx; }
+.es-pb-47{ padding-bottom:47rpx; }
+.es-pb-48{ padding-bottom:48rpx; }
+.es-pb-49{ padding-bottom:49rpx; }
+.es-pb-50{ padding-bottom:50rpx; }
+
+
+
+
+/* widthPercent */
+.es-wp-1{ width:1%; }
+.es-wp-2{ width:2%; }
+.es-wp-3{ width:3%; }
+.es-wp-4{ width:4%; }
+.es-wp-5{ width:5%; }
+.es-wp-6{ width:6%; }
+.es-wp-7{ width:7%; }
+.es-wp-8{ width:8%; }
+.es-wp-9{ width:9%; }
+.es-wp-10{ width:10%; }
+.es-wp-11{ width:11%; }
+.es-wp-12{ width:12%; }
+.es-wp-13{ width:13%; }
+.es-wp-14{ width:14%; }
+.es-wp-15{ width:15%; }
+.es-wp-16{ width:16%; }
+.es-wp-17{ width:17%; }
+.es-wp-18{ width:18%; }
+.es-wp-19{ width:19%; }
+.es-wp-20{ width:20%; }
+.es-wp-21{ width:21%; }
+.es-wp-22{ width:22%; }
+.es-wp-23{ width:23%; }
+.es-wp-24{ width:24%; }
+.es-wp-25{ width:25%; }
+.es-wp-26{ width:26%; }
+.es-wp-27{ width:27%; }
+.es-wp-28{ width:28%; }
+.es-wp-29{ width:29%; }
+.es-wp-30{ width:30%; }
+.es-wp-31{ width:31%; }
+.es-wp-32{ width:32%; }
+.es-wp-33{ width:33%; }
+.es-wp-333{ width:33.33%; }
+.es-wp-34{ width:34%; }
+.es-wp-35{ width:35%; }
+.es-wp-36{ width:36%; }
+.es-wp-37{ width:37%; }
+.es-wp-38{ width:38%; }
+.es-wp-39{ width:39%; }
+.es-wp-40{ width:40%; }
+.es-wp-41{ width:41%; }
+.es-wp-42{ width:42%; }
+.es-wp-43{ width:43%; }
+.es-wp-44{ width:44%; }
+.es-wp-45{ width:45%; }
+.es-wp-46{ width:46%; }
+.es-wp-47{ width:47%; }
+.es-wp-48{ width:48%; }
+.es-wp-49{ width:49%; }
+.es-wp-50{ width:50%; }
+.es-wp-51{ width:51%; }
+.es-wp-52{ width:52%; }
+.es-wp-53{ width:53%; }
+.es-wp-54{ width:54%; }
+.es-wp-55{ width:55%; }
+.es-wp-56{ width:56%; }
+.es-wp-57{ width:57%; }
+.es-wp-58{ width:58%; }
+.es-wp-59{ width:59%; }
+.es-wp-60{ width:60%; }
+.es-wp-61{ width:61%; }
+.es-wp-62{ width:62%; }
+.es-wp-63{ width:63%; }
+.es-wp-64{ width:64%; }
+.es-wp-65{ width:65%; }
+.es-wp-66{ width:66%; }
+.es-wp-67{ width:67%; }
+.es-wp-68{ width:68%; }
+.es-wp-69{ width:69%; }
+.es-wp-70{ width:70%; }
+.es-wp-71{ width:71%; }
+.es-wp-72{ width:72%; }
+.es-wp-73{ width:73%; }
+.es-wp-74{ width:74%; }
+.es-wp-75{ width:75%; }
+.es-wp-76{ width:76%; }
+.es-wp-77{ width:77%; }
+.es-wp-78{ width:78%; }
+.es-wp-79{ width:79%; }
+.es-wp-80{ width:80%; }
+.es-wp-81{ width:81%; }
+.es-wp-82{ width:82%; }
+.es-wp-83{ width:83%; }
+.es-wp-84{ width:84%; }
+.es-wp-85{ width:85%; }
+.es-wp-86{ width:86%; }
+.es-wp-87{ width:87%; }
+.es-wp-88{ width:88%; }
+.es-wp-89{ width:89%; }
+.es-wp-90{ width:90%; }
+.es-wp-91{ width:91%; }
+.es-wp-92{ width:92%; }
+.es-wp-93{ width:93%; }
+.es-wp-94{ width:94%; }
+.es-wp-95{ width:95%; }
+.es-wp-96{ width:96%; }
+.es-wp-97{ width:97%; }
+.es-wp-98{ width:98%; }
+.es-wp-99{ width:99%; }
+.es-wp-100{ width:100%; }
+
+/* border */
+.es-b-b{ border-bottom: 1px #F7F8FA solid; }
+.es-b-t{ border-top: 1px #F7F8FA solid; }
+.es-b-l{ border-left: 1px #F7F8FA solid; }
+.es-b-r{ border-right: 1px #F7F8FA solid; }
+.es-br{ border-radius: 1000rpx;}
+.es-br-1{ border-radius: 1rpx; }
+.es-br-2{ border-radius: 2rpx; }
+.es-br-3{ border-radius: 3rpx; }
+.es-br-4{ border-radius: 4rpx; }
+.es-br-5{ border-radius: 5rpx; }
+.es-br-6{ border-radius: 6rpx; }
+.es-br-7{ border-radius: 7rpx; }
+.es-br-8{ border-radius: 8rpx; }
+.es-br-9{ border-radius: 9rpx; }
+.es-br-10{ border-radius: 10rpx; }
+.es-br-11{ border-radius: 11rpx; }
+.es-br-12{ border-radius: 12rpx; }
+.es-br-13{ border-radius: 13rpx; }
+.es-br-14{ border-radius: 14rpx; }
+.es-br-15{ border-radius: 15rpx; }
+.es-br-16{ border-radius: 16rpx; }
+.es-br-17{ border-radius: 17rpx; }
+.es-br-18{ border-radius: 18rpx; }
+.es-br-19{ border-radius: 19rpx; }
+.es-br-20{ border-radius: 20rpx; }
+.es-br-21{ border-radius: 21rpx; }
+.es-br-22{ border-radius: 22rpx; }
+.es-br-23{ border-radius: 23rpx; }
+.es-br-24{ border-radius: 24rpx; }
+.es-br-25{ border-radius: 25rpx; }
+.es-br-26{ border-radius: 26rpx; }
+.es-br-27{ border-radius: 27rpx; }
+.es-br-28{ border-radius: 28rpx; }
+.es-br-29{ border-radius: 29rpx; }
+.es-br-30{ border-radius: 30rpx; }
+.es-br-31{ border-radius: 31rpx; }
+.es-br-32{ border-radius: 32rpx; }
+.es-br-33{ border-radius: 33rpx; }
+.es-br-34{ border-radius: 34rpx; }
+.es-br-35{ border-radius: 35rpx; }
+.es-br-36{ border-radius: 36rpx; }
+.es-br-37{ border-radius: 37rpx; }
+.es-br-38{ border-radius: 38rpx; }
+.es-br-39{ border-radius: 39rpx; }
+.es-br-40{ border-radius: 40rpx; }
+.es-br-41{ border-radius: 41rpx; }
+.es-br-42{ border-radius: 42rpx; }
+.es-br-43{ border-radius: 43rpx; }
+.es-br-44{ border-radius: 44rpx; }
+.es-br-45{ border-radius: 45rpx; }
+.es-br-46{ border-radius: 46rpx; }
+.es-br-47{ border-radius: 47rpx; }
+.es-br-48{ border-radius: 48rpx; }
+.es-br-49{ border-radius: 49rpx; }
+.es-br-50{ border-radius: 50rpx; }
+.es-br-51{ border-radius: 51rpx; }
+.es-br-52{ border-radius: 52rpx; }
+.es-br-53{ border-radius: 53rpx; }
+.es-br-54{ border-radius: 54rpx; }
+.es-br-55{ border-radius: 55rpx; }
+.es-br-56{ border-radius: 56rpx; }
+.es-br-57{ border-radius: 57rpx; }
+.es-br-58{ border-radius: 58rpx; }
+.es-br-59{ border-radius: 59rpx; }
+.es-br-60{ border-radius: 60rpx; }
+.es-br-61{ border-radius: 61rpx; }
+.es-br-62{ border-radius: 62rpx; }
+.es-br-63{ border-radius: 63rpx; }
+.es-br-64{ border-radius: 64rpx; }
+.es-br-65{ border-radius: 65rpx; }
+.es-br-66{ border-radius: 66rpx; }
+.es-br-67{ border-radius: 67rpx; }
+.es-br-68{ border-radius: 68rpx; }
+.es-br-69{ border-radius: 69rpx; }
+.es-br-70{ border-radius: 70rpx; }
+.es-br-71{ border-radius: 71rpx; }
+.es-br-72{ border-radius: 72rpx; }
+.es-br-73{ border-radius: 73rpx; }
+.es-br-74{ border-radius: 74rpx; }
+.es-br-75{ border-radius: 75rpx; }
+.es-br-76{ border-radius: 76rpx; }
+.es-br-77{ border-radius: 77rpx; }
+.es-br-78{ border-radius: 78rpx; }
+.es-br-79{ border-radius: 79rpx; }
+.es-br-80{ border-radius: 80rpx; }
+.es-br-ban{ border-radius: 50%; }
+
+
+ /*#ifndef APP-NVUE*/  
+/* float */
+.es-fl{ float:left; }
+.es-fr{ float:right; }
+ /*#endif*/ 
+ 
+ 
+/* other common style */
+.es-view-w-x{ padding-left:30rpx; padding-right:30rpx;position: relative;
+    /*#ifndef APP-NVUE*/   
+    overflow: auto;
+	 /*#endif*/ 
+}
+.es-view-w-y{ margin-left:30rpx;margin-right:30rpx;
+/*#ifndef APP-NVUE*/   
+overflow: auto;
+/*#endif*/ 
+position: relative;}
+
+.es-omit,.es-omit-1{overflow: hidden;text-overflow: ellipsis;
+   /*#ifndef APP-NVUE*/   
+   white-space: nowrap;
+   /*#endif*/ 
+}
+
+.es-omit-2{overflow: hidden;text-overflow: ellipsis; 
+  /*#ifndef APP-NVUE*/   
+   display:-webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;
+   /*#endif*/ 
+}
+.es-omit-3{overflow: hidden;text-overflow: ellipsis;
+ /*#ifndef APP-NVUE*/   
+   display: -webkit-box;-webkit-line-clamp: 3;-webkit-box-orient: vertical;
+  /*#endif*/ 
+}
+.es-omit-4{overflow: hidden;text-overflow: ellipsis;
+ /*#ifndef APP-NVUE*/   
+   display: -webkit-box;-webkit-line-clamp: 4;-webkit-box-orient: vertical;
+  /*#endif*/ 
+}
+.es-omit-5{overflow: hidden;text-overflow: ellipsis;
+ /*#ifndef APP-NVUE*/   
+   display: -webkit-box;-webkit-line-clamp: 5;-webkit-box-orient: vertical;
+ /*#endif*/ 
+}
+
+.es-on-act:active,.es-max-btn:active{opacity: 0.7;}
+.es-on-bc:active{background: #cfcfcf !important;}
+
+.es-hide,.es-hidden{  
+	/*#ifndef APP-NVUE*/   
+	display: none; 
+	/*#endif*/
+}
+
+.es-oa{ 
+	/*#ifndef APP-NVUE*/   
+	overflow: auto;
+	/*#endif*/
+}
+
+.es-oh{ overflow: hidden;}
+
+.es-fix-top{ position: fixed;left:0;top:0;width:100%; z-index:10;}
+
+.es-fix-bottom{ position: fixed;left:0; bottom:0;width:100%; z-index:10;}
+.es-auto-bottom{ 
+	/*#ifndef APP-NVUE*/  
+	padding-bottom: env(safe-area-inset-bottom);
+	/*#endif*/
+}
+.es-auto-top{ /* padding-top: var(--status-bar-height); */ /* padding-top: env(safe-area-inset-top); */}
+.es-shadow-top,.es-fix-top.es-bc-white{ box-shadow: 0px -3px 8px rgba(0, 0, 0, 0.03);}
+
+.es-fix-top.es-bc-white{
+	box-shadow: 0 0 8rpx rgba(0,0,0,0.05);
+}
+
+.es-deleteline{ text-decoration:line-through;}
+.es-underline{ text-decoration:underline;}
+
+.es-block{ position: relative;overflow: hidden;}
+/*#ifndef APP-NVUE*/   
+.es-block > view:nth-child(1){ padding-top:100%;width:100%;}
+.es-block > view:nth-child(2){ width:100%;height:100%;position: absolute;left:0;top:0;overflow: hidden;z-index:1;}
+.es-block > view:nth-child(3){position: absolute;overflow: hidden;z-index:2;}
+/*#endif*/
+
+/* icon */
+.es-icon-default{background-image: url(/static/logo.png);}
+.es-icon,.es-icon-auto,.es-icon-default,
+.es-icon-10,.es-icon-11,.es-icon-12,.es-icon-13,.es-icon-14,.es-icon-15,.es-icon-16,.es-icon-17,.es-icon-18,.es-icon-19,
+.es-icon-20,.es-icon-21,.es-icon-22,.es-icon-23,.es-icon-24,.es-icon-25,.es-icon-26,.es-icon-27,.es-icon-28,.es-icon-29,
+.es-icon-30,.es-icon-31,.es-icon-32,.es-icon-33,.es-icon-34,.es-icon-35,.es-icon-36,.es-icon-37,.es-icon-38,.es-icon-39,
+.es-icon-40,.es-icon-41,.es-icon-42,.es-icon-43,.es-icon-44,.es-icon-45,.es-icon-46,.es-icon-47,.es-icon-48,.es-icon-49,
+.es-icon-50,.es-icon-51,.es-icon-52,.es-icon-53,.es-icon-54,.es-icon-55,.es-icon-56,.es-icon-57,.es-icon-58,.es-icon-59,
+.es-icon-60,.es-icon-61,.es-icon-62,.es-icon-63,.es-icon-64,.es-icon-65,.es-icon-66,.es-icon-67,.es-icon-68,.es-icon-69,
+.es-icon-70,.es-icon-71,.es-icon-72,.es-icon-73,.es-icon-74,.es-icon-75,.es-icon-76,.es-icon-77,.es-icon-78,.es-icon-79,
+.es-icon-80,.es-icon-81,.es-icon-82,.es-icon-83,.es-icon-84,.es-icon-85,.es-icon-86,.es-icon-87,.es-icon-88,.es-icon-89,
+.es-icon-90,.es-icon-91,.es-icon-92,.es-icon-93,.es-icon-94,.es-icon-95,.es-icon-96,.es-icon-97,.es-icon-98,.es-icon-99,
+.es-icon-100,.es-icon-101,.es-icon-102,.es-icon-103,.es-icon-104,.es-icon-105,.es-icon-106,.es-icon-107,.es-icon-108,.es-icon-109,
+.es-icon-110,.es-icon-111,.es-icon-112,.es-icon-113,.es-icon-114,.es-icon-115,.es-icon-116,.es-icon-117,.es-icon-118,.es-icon-119,
+.es-icon-120,.es-icon-121,.es-icon-122,.es-icon-123,.es-icon-124,.es-icon-125,.es-icon-126,.es-icon-127,.es-icon-128,.es-icon-129,
+.es-icon-130,.es-icon-131,.es-icon-132,.es-icon-133,.es-icon-134,.es-icon-135,.es-icon-136,.es-icon-137,.es-icon-138,.es-icon-139,
+.es-icon-140,.es-icon-141,.es-icon-142,.es-icon-143,.es-icon-144,.es-icon-145,.es-icon-146,.es-icon-147,.es-icon-148,.es-icon-149,
+.es-icon-150,.es-icon-151,.es-icon-152,.es-icon-153,.es-icon-154,.es-icon-155,.es-icon-156,.es-icon-157,.es-icon-158,.es-icon-159,
+.es-icon-160,.es-icon-161,.es-icon-162,.es-icon-163,.es-icon-164,.es-icon-165,.es-icon-166,.es-icon-167,.es-icon-168,.es-icon-169,
+.es-icon-170,.es-icon-171,.es-icon-172,.es-icon-173,.es-icon-174,.es-icon-175,.es-icon-176,.es-icon-177,.es-icon-178,.es-icon-179,
+.es-icon-180,.es-icon-181,.es-icon-182,.es-icon-183,.es-icon-184,.es-icon-185,.es-icon-186,.es-icon-187,.es-icon-188,.es-icon-189,
+.es-icon-190,.es-icon-191,.es-icon-192,.es-icon-193,.es-icon-194,.es-icon-195,.es-icon-196,.es-icon-197,.es-icon-198,.es-icon-199,
+.es-icon-200{
+	/*#ifndef APP-NVUE*/   
+	background-size:  100% 100%;
+    /*#endif*/ 
+	overflow: hidden;
+}
+
+
+/*#ifndef APP-NVUE*/
+.es-icon image,.es-icon-auto image,
+.es-icon-10 image,.es-icon-11 image,.es-icon-12 image,.es-icon-13 image,.es-icon-14 image,.es-icon-15 image,.es-icon-16 image,.es-icon-17 image,.es-icon-18 image,.es-icon-19 image,
+.es-icon-20 image,.es-icon-21 image,.es-icon-22 image,.es-icon-23 image,.es-icon-24 image,.es-icon-25 image,.es-icon-26 image,.es-icon-27 image,.es-icon-28 image,.es-icon-29 image,
+.es-icon-30 image,.es-icon-31 image,.es-icon-32 image,.es-icon-33 image,.es-icon-34 image,.es-icon-35 image,.es-icon-36 image,.es-icon-37 image,.es-icon-38 image,.es-icon-39 image,
+.es-icon-40 image,.es-icon-41 image,.es-icon-42 image,.es-icon-43 image,.es-icon-44 image,.es-icon-45 image,.es-icon-46 image,.es-icon-47 image,.es-icon-48 image,.es-icon-49 image,
+.es-icon-50 image,.es-icon-51 image,.es-icon-52 image,.es-icon-53 image,.es-icon-54 image,.es-icon-55 image,.es-icon-56 image,.es-icon-57 image,.es-icon-58 image,.es-icon-59 image,
+.es-icon-60 image,.es-icon-61 image,.es-icon-62 image,.es-icon-63 image,.es-icon-64 image,.es-icon-65 image,.es-icon-66 image,.es-icon-67 image,.es-icon-68 image,.es-icon-69 image,
+.es-icon-70 image,.es-icon-71 image,.es-icon-72 image,.es-icon-73 image,.es-icon-74 image,.es-icon-75 image,.es-icon-76 image,.es-icon-77 image,.es-icon-78 image,.es-icon-79 image,
+.es-icon-80 image,.es-icon-81 image,.es-icon-82 image,.es-icon-83 image,.es-icon-84 image,.es-icon-85 image,.es-icon-86 image,.es-icon-87 image,.es-icon-88 image,.es-icon-89 image,
+.es-icon-90 image,.es-icon-91 image,.es-icon-92 image,.es-icon-93 image,.es-icon-94 image,.es-icon-95 image,.es-icon-96 image,.es-icon-97 image,.es-icon-98 image,.es-icon-99 image,
+.es-icon-100 image,.es-icon-101 image,.es-icon-102 image,.es-icon-103 image,.es-icon-104 image,.es-icon-105 image,.es-icon-106 image,.es-icon-107 image,.es-icon-108 image,.es-icon-109 image,
+.es-icon-110 image,.es-icon-111 image,.es-icon-112 image,.es-icon-113 image,.es-icon-114 image,.es-icon-115 image,.es-icon-116 image,.es-icon-117 image,.es-icon-118 image,.es-icon-119 image,
+.es-icon-120 image,.es-icon-121 image,.es-icon-122 image,.es-icon-123 image,.es-icon-124 image,.es-icon-125 image,.es-icon-126 image,.es-icon-127 image,.es-icon-128 image,.es-icon-129 image,
+.es-icon-130 image,.es-icon-131 image,.es-icon-132 image,.es-icon-133 image,.es-icon-134 image,.es-icon-135 image,.es-icon-136 image,.es-icon-137 image,.es-icon-138 image,.es-icon-139 image,
+.es-icon-140 image,.es-icon-141 image,.es-icon-142 image,.es-icon-143 image,.es-icon-144 image,.es-icon-145 image,.es-icon-146 image,.es-icon-147 image,.es-icon-148 image,.es-icon-149 image,
+.es-icon-150 image,.es-icon-151 image,.es-icon-152 image,.es-icon-153 image,.es-icon-154 image,.es-icon-155 image,.es-icon-156 image,.es-icon-157 image,.es-icon-158 image,.es-icon-159 image,
+.es-icon-160 image,.es-icon-161 image,.es-icon-162 image,.es-icon-163 image,.es-icon-164 image,.es-icon-165 image,.es-icon-166 image,.es-icon-167 image,.es-icon-168 image,.es-icon-169 image,
+.es-icon-170 image,.es-icon-171 image,.es-icon-172 image,.es-icon-173 image,.es-icon-174 image,.es-icon-175 image,.es-icon-176 image,.es-icon-177 image,.es-icon-178 image,.es-icon-179 image,
+.es-icon-180 image,.es-icon-181 image,.es-icon-182 image,.es-icon-183 image,.es-icon-184 image,.es-icon-185 image,.es-icon-186 image,.es-icon-187 image,.es-icon-188 image,.es-icon-189 image,
+.es-icon-190 image,.es-icon-191 image,.es-icon-192 image,.es-icon-193 image,.es-icon-194 image,.es-icon-195 image,.es-icon-196 image,.es-icon-197 image,.es-icon-198 image,.es-icon-199 image,
+.es-icon-200 image{
+	width:100%;
+	height:100%;
+}
+ /*#endif*/ 
+
+
+.es-bg-auto{
+	/*#ifndef APP-NVUE*/   
+	background-size: 100% auto;
+	background-repeat: no-repeat;
+	 /*#endif*/ 
+}
+
+
+/* common */
+
+
+.es-icon,.es-icon-default{ width:48rpx;height:48rpx; overflow: hidden;
+  /*#ifndef APP-NVUE*/   
+   background-size: 100% 100% !important;
+   /*#endif*/ 
+}
+.es-icon-10{ width:10rpx;height:10rpx;
+   /*#ifndef APP-NVUE*/   
+   background-size: 100% 100% !important;
+  /*#endif*/ 
+}
+.es-icon-11{ width:11rpx;height:11rpx;
+    /*#ifndef APP-NVUE*/   
+	 background-size: 100% 100% !important; 
+	/*#endif*/ 
+}
+.es-icon-12{ width:12rpx;height:12rpx;
+    background-size: 100% 100% !important;
+ }
+ 
+.es-icon-13{  width:13rpx;height:13rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-14{  width:14rpx;height:14rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-15{  width:15rpx;height:15rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-16{  width:16rpx;height:16rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-17{  width:17rpx;height:17rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-18{  width:18rpx;height:18rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-19{  width:19rpx;height:19rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-20{  width:20rpx;height:20rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-21{  width:21rpx;height:21rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-22{  width:22rpx;height:22rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-23{  width:23rpx;height:23rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-24{  width:24rpx;height:24rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-25{  width:25rpx;height:25rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-26{  width:26rpx;height:26rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-27{  width:27rpx;height:27rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-28{  width:28rpx;height:28rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-29{  width:29rpx;height:29rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-30{  width:30rpx;height:30rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+
+
+.es-icon-31{ width:31rpx;height:31rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-32{ width:32rpx;height:32rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-33{ width:33rpx;height:33rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-34{ width:34rpx;height:34rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-35{ width:35rpx;height:35rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+
+.es-icon-37{  width:37rpx;height:37rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-38{  width:38rpx;height:38rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-39{  width:39rpx;height:39rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-40{  width:40rpx;height:40rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-41{  width:41rpx;height:41rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-42{  width:42rpx;height:42rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-43{  width:43rpx;height:43rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-44{  width:44rpx;height:44rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-45{  width:45rpx;height:45rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-46{  width:46rpx;height:46rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-47{  width:47rpx;height:47rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-48{  width:48rpx;height:48rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-49{  width:49rpx;height:49rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-50{  width:50rpx;height:50rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-51{  width:51rpx;height:51rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-52{  width:52rpx;height:52rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-53{  width:53rpx;height:53rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-54{  width:54rpx;height:54rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-55{  width:55rpx;height:55rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+
+.es-icon-56{  width:56rpx;height:56rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-57{  width:57rpx;height:57rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-58{  width:58rpx;height:58rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-59{  width:59rpx;height:59rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-60{  width:60rpx;height:60rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-61{  width:61rpx;height:61rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-62{  width:62rpx;height:62rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-63{  width:63rpx;height:63rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-64{  width:64rpx;height:64rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-65{  width:65rpx;height:65rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-66{  width:66rpx;height:66rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-67{  width:67rpx;height:67rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-68{  width:68rpx;height:68rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-69{  width:69rpx;height:69rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-70{  width:70rpx;height:70rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+
+.es-icon-71{  width:71rpx;height:71rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-72{  width:72rpx;height:72rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-73{  width:73rpx;height:73rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-74{  width:74rpx;height:74rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-75{  width:75rpx;height:75rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-76{  width:76rpx;height:76rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-77{  width:77rpx;height:77rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-78{  width:78rpx;height:78rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+.es-icon-79{  width:79rpx;height:79rpx;  /*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/  }
+
+
+.es-icon-80{ width:80rpx;height:80rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-81{ width:81rpx;height:81rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-82{ width:82rpx;height:82rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-83{ width:83rpx;height:83rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-84{ width:84rpx;height:84rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-85{ width:85rpx;height:85rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-86{ width:86rpx;height:86rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-87{ width:87rpx;height:87rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-88{ width:88rpx;height:88rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-89{ width:89rpx;height:89rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-90{ width:90rpx;height:90rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+
+
+
+
+.es-icon-91{ width:91rpx;height:91rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-92{ width:92rpx;height:92rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-93{ width:93rpx;height:93rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-94{ width:94rpx;height:94rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-95{ width:95rpx;height:95rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-96{ width:96rpx;height:96rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-97{ width:97rpx;height:97rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-98{ width:98rpx;height:98rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-99{ width:99rpx;height:99rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-100{ width:100rpx;height:100rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-101{ width:101rpx;height:101rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-102{ width:102rpx;height:102rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-103{ width:103rpx;height:103rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-104{ width:104rpx;height:104rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-105{ width:105rpx;height:105rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-106{ width:106rpx;height:106rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-107{ width:107rpx;height:107rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-108{ width:108rpx;height:108rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-109{ width:109rpx;height:109rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-110{ width:110rpx;height:110rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-111{ width:111rpx;height:111rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-112{ width:112rpx;height:112rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-113{ width:113rpx;height:113rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-114{ width:114rpx;height:114rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-115{ width:115rpx;height:115rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-116{ width:116rpx;height:116rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-117{ width:117rpx;height:117rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-118{ width:118rpx;height:118rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-119{ width:119rpx;height:119rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-120{ width:120rpx;height:120rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-121{ width:121rpx;height:121rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-122{ width:122rpx;height:122rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-123{ width:123rpx;height:123rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-124{ width:124rpx;height:124rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-125{ width:125rpx;height:125rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-126{ width:126rpx;height:126rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-127{ width:127rpx;height:127rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-128{ width:128rpx;height:128rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-129{ width:129rpx;height:129rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-130{ width:120rpx;height:120rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-131{ width:131rpx;height:131rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-132{ width:132rpx;height:132rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-133{ width:133rpx;height:133rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-134{ width:134rpx;height:134rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-135{ width:135rpx;height:135rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-136{ width:136rpx;height:136rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-137{ width:137rpx;height:137rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-138{ width:138rpx;height:138rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-139{ width:139rpx;height:139rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-140{ width:140rpx;height:140rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+
+
+
+.es-icon-141{ width:141rpx;height:141rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-142{ width:142rpx;height:142rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-143{ width:143rpx;height:143rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-144{ width:144rpx;height:144rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-145{ width:145rpx;height:145rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-146{ width:146rpx;height:146rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-147{ width:147rpx;height:147rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-148{ width:148rpx;height:148rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-149{ width:149rpx;height:149rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-150{ width:150rpx;height:150rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-151{ width:151rpx;height:151rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-152{ width:152rpx;height:152rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-153{ width:153rpx;height:153rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-154{ width:154rpx;height:154rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-155{ width:155rpx;height:155rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-156{ width:156rpx;height:156rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-157{ width:157rpx;height:157rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-158{ width:158rpx;height:158rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-159{ width:159rpx;height:159rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-160{ width:160rpx;height:160rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-161{ width:161rpx;height:161rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-162{ width:162rpx;height:162rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-163{ width:163rpx;height:163rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-164{ width:164rpx;height:164rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-165{ width:165rpx;height:165rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-166{ width:166rpx;height:166rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-167{ width:167rpx;height:167rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-168{ width:168rpx;height:168rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-169{ width:169rpx;height:169rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-170{ width:170rpx;height:170rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-171{ width:171rpx;height:171rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-172{ width:172rpx;height:172rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-173{ width:173rpx;height:173rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-174{ width:174rpx;height:174rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-175{ width:175rpx;height:175rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-176{ width:176rpx;height:176rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-177{ width:177rpx;height:177rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-178{ width:178rpx;height:178rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-179{ width:179rpx;height:179rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-180{ width:180rpx;height:180rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-181{ width:181rpx;height:181rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-182{ width:182rpx;height:182rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-183{ width:183rpx;height:183rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-184{ width:184rpx;height:184rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-185{ width:185rpx;height:185rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-186{ width:186rpx;height:186rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-187{ width:187rpx;height:187rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-188{ width:188rpx;height:188rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-189{ width:189rpx;height:189rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-190{ width:190rpx;height:190rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-191{ width:191rpx;height:191rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-192{ width:192rpx;height:192rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-193{ width:193rpx;height:193rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-194{ width:194rpx;height:194rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-195{ width:195rpx;height:195rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-196{ width:196rpx;height:196rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-197{ width:197rpx;height:197rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-198{ width:198rpx;height:198rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-199{ width:199rpx;height:199rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+.es-icon-200{ width:190rpx;height:190rpx;/*#ifndef  APP-NVUE*/  background-size:  100%  100%  !important;  /*#endif*/ }
+
+
+
+
+/* font.css */
+/* fontWeight */
+.es-fw{font-weight: bold;}
+.es-fw1,.es-fw-600{ font-weight: 600; }
+.es-fw2,.es-fw-bold,.es-fw-700{ font-weight: 700; }
+.es-fw-500{ font-weight: 500; }
+.es-fw-400{ font-weight: 400; }
+.es-fw-n{font-weight: normal;}
+
+
+/* font orientation */
+.es-tc{ text-align: center; }
+.es-tl{ text-align: left; }
+.es-tr{ text-align: right; }
+
+/* fontSize */
+.es-fs-10{ font-size:10rpx; }
+.es-fs-11{ font-size:11rpx; }
+.es-fs-12{ font-size:12rpx; }
+.es-fs-13{ font-size:13rpx; }
+.es-fs-14{ font-size:14rpx; }
+.es-fs-15{ font-size:15rpx; }
+.es-fs-16{ font-size:16rpx; }
+.es-fs-17{ font-size:17rpx; }
+.es-fs-18{ font-size:18rpx; }
+.es-fs-19{ font-size:19rpx; }
+.es-fs-20{ font-size:20rpx; }
+.es-fs-21{ font-size:21rpx; }
+.es-fs-22{ font-size:22rpx; }
+.es-fs-23{ font-size:23rpx; }
+.es-fs-24{ font-size:24rpx; }
+.es-fs-25{ font-size:25rpx; }
+.es-fs-26{ font-size:26rpx; }
+.es-fs-27{ font-size:27rpx; }
+.es-fs-28{ font-size:28rpx; }
+.es-fs-29{ font-size:29rpx; }
+.es-fs-30{ font-size:30rpx; }
+.es-fs-31{ font-size:31rpx; }
+.es-fs-32{ font-size:32rpx; }
+.es-fs-33{ font-size:33rpx; }
+.es-fs-34{ font-size:34rpx; }
+.es-fs-35{ font-size:35rpx; }
+.es-fs-36{ font-size:36rpx; }
+.es-fs-37{ font-size:37rpx; }
+.es-fs-38{ font-size:38rpx; }
+.es-fs-39{ font-size:39rpx; }
+.es-fs-40{ font-size:40rpx; }
+.es-fs-41{ font-size:41rpx; }
+.es-fs-42{ font-size:42rpx; }
+.es-fs-43{ font-size:43rpx; }
+.es-fs-44{ font-size:44rpx; }
+.es-fs-45{ font-size:45rpx; }
+.es-fs-46{ font-size:46rpx; }
+.es-fs-47{ font-size:47rpx; }
+.es-fs-48{ font-size:48rpx; }
+.es-fs-49{ font-size:49rpx; }
+.es-fs-50{ font-size:50rpx; }
+.es-fs-51{ font-size:51rpx; }
+.es-fs-52{ font-size:52rpx; }
+.es-fs-53{ font-size:53rpx; }
+.es-fs-54{ font-size:54rpx; }
+.es-fs-55{ font-size:55rpx; }
+.es-fs-56{ font-size:56rpx; }
+.es-fs-57{ font-size:57rpx; }
+.es-fs-58{ font-size:58rpx; }
+.es-fs-59{ font-size:59rpx; }
+.es-fs-60{ font-size:60rpx; }
+.es-fs-61{ font-size:61rpx; }
+.es-fs-62{ font-size:62rpx; }
+.es-fs-63{ font-size:63rpx; }
+.es-fs-64{ font-size:64rpx; }
+.es-fs-65{ font-size:65rpx; }
+.es-fs-66{ font-size:66rpx; }
+.es-fs-67{ font-size:67rpx; }
+.es-fs-68{ font-size:68rpx; }
+.es-fs-69{ font-size:69rpx; }
+.es-fs-70{ font-size:70rpx; }
+.es-fs-71{ font-size:71rpx; }
+.es-fs-72{ font-size:72rpx; }
+.es-fs-73{ font-size:73rpx; }
+.es-fs-74{ font-size:74rpx; }
+.es-fs-75{ font-size:75rpx; }
+.es-fs-76{ font-size:76rpx; }
+.es-fs-77{ font-size:77rpx; }
+.es-fs-78{ font-size:78rpx; }
+.es-fs-79{ font-size:79rpx; }
+.es-fs-80{ font-size:80rpx; }
+.es-fs-81{ font-size:81rpx; }
+.es-fs-82{ font-size:82rpx; }
+.es-fs-83{ font-size:83rpx; }
+.es-fs-84{ font-size:84rpx; }
+.es-fs-85{ font-size:85rpx; }
+.es-fs-86{ font-size:86rpx; }
+.es-fs-87{ font-size:87rpx; }
+.es-fs-88{ font-size:88rpx; }
+.es-fs-89{ font-size:89rpx; }
+.es-fs-90{ font-size:90rpx; }
+.es-fs-91{ font-size:91rpx; }
+.es-fs-92{ font-size:92rpx; }
+.es-fs-93{ font-size:93rpx; }
+.es-fs-94{ font-size:94rpx; }
+.es-fs-95{ font-size:95rpx; }
+.es-fs-96{ font-size:96rpx; }
+.es-fs-97{ font-size:97rpx; }
+.es-fs-98{ font-size:98rpx; }
+.es-fs-99{ font-size:99rpx; }
+.es-fs-100{ font-size:100rpx; }
+
+
+
+/* height */
+.es-h-1{ height:1rpx; }
+.es-h-2{ height:2rpx; }
+.es-h-3{ height:3rpx; }
+.es-h-4{ height:4rpx; }
+.es-h-5{ height:5rpx; }
+.es-h-6{ height:6rpx; }
+.es-h-7{ height:7rpx; }
+.es-h-8{ height:8rpx; }
+.es-h-9{ height:9rpx; }
+.es-h-10{ height:10rpx; }
+.es-h-11{ height:11rpx; }
+.es-h-12{ height:12rpx; }
+.es-h-13{ height:13rpx; }
+.es-h-14{ height:14rpx; }
+.es-h-15{ height:15rpx; }
+.es-h-16{ height:16rpx; }
+.es-h-17{ height:17rpx; }
+.es-h-18{ height:18rpx; }
+.es-h-19{ height:19rpx; }
+.es-h-20{ height:20rpx; }
+.es-h-21{ height:21rpx; }
+.es-h-22{ height:22rpx; }
+.es-h-23{ height:23rpx; }
+.es-h-24{ height:24rpx; }
+.es-h-25{ height:25rpx; }
+.es-h-26{ height:26rpx; }
+.es-h-27{ height:27rpx; }
+.es-h-28{ height:28rpx; }
+.es-h-29{ height:29rpx; }
+.es-h-30{ height:30rpx; }
+.es-h-31{ height:31rpx; }
+.es-h-32{ height:32rpx; }
+.es-h-33{ height:33rpx; }
+.es-h-34{ height:34rpx; }
+.es-h-35{ height:35rpx; }
+.es-h-36{ height:36rpx; }
+.es-h-37{ height:37rpx; }
+.es-h-38{ height:38rpx; }
+.es-h-39{ height:39rpx; }
+.es-h-40{ height:40rpx; }
+.es-h-41{ height:41rpx; }
+.es-h-42{ height:42rpx; }
+.es-h-43{ height:43rpx; }
+.es-h-44{ height:44rpx; }
+.es-h-45{ height:45rpx; }
+.es-h-46{ height:46rpx; }
+.es-h-47{ height:47rpx; }
+.es-h-48{ height:48rpx; }
+.es-h-49{ height:49rpx; }
+.es-h-50{ height:50rpx; }
+.es-h-51{ height:51rpx; }
+.es-h-52{ height:52rpx; }
+.es-h-53{ height:53rpx; }
+.es-h-54{ height:54rpx; }
+.es-h-55{ height:55rpx; }
+.es-h-56{ height:56rpx; }
+.es-h-57{ height:57rpx; }
+.es-h-58{ height:58rpx; }
+.es-h-59{ height:59rpx; }
+.es-h-60{ height:60rpx; }
+.es-h-61{ height:61rpx; }
+.es-h-62{ height:62rpx; }
+.es-h-63{ height:63rpx; }
+.es-h-64{ height:64rpx; }
+.es-h-65{ height:65rpx; }
+.es-h-66{ height:66rpx; }
+.es-h-67{ height:67rpx; }
+.es-h-68{ height:68rpx; }
+.es-h-69{ height:69rpx; }
+.es-h-70{ height:70rpx; }
+.es-h-71{ height:71rpx; }
+.es-h-72{ height:72rpx; }
+.es-h-73{ height:73rpx; }
+.es-h-74{ height:74rpx; }
+.es-h-75{ height:75rpx; }
+.es-h-76{ height:76rpx; }
+.es-h-77{ height:77rpx; }
+.es-h-78{ height:78rpx; }
+.es-h-79{ height:79rpx; }
+.es-h-80{ height:80rpx; }
+.es-h-81{ height:81rpx; }
+.es-h-82{ height:82rpx; }
+.es-h-83{ height:83rpx; }
+.es-h-84{ height:84rpx; }
+.es-h-85{ height:85rpx; }
+.es-h-86{ height:86rpx; }
+.es-h-87{ height:87rpx; }
+.es-h-88{ height:88rpx; }
+/* #ifdef MP-WEIXIN */
+/* .es-h-88{ height:41px; } */
+/* #endif */
+.es-h-89{ height:89rpx; }
+.es-h-90{ height:90rpx; }
+.es-h-91{ height:91rpx; }
+.es-h-92{ height:92rpx; }
+.es-h-93{ height:93rpx; }
+.es-h-94{ height:94rpx; }
+.es-h-95{ height:95rpx; }
+.es-h-96{ height:96rpx; }
+.es-h-97{ height:97rpx; }
+.es-h-98{ height:98rpx; }
+.es-h-99{ height:99rpx; }
+
+.es-h-100{ height:100rpx; }
+.es-h-101{ height:101rpx; }
+.es-h-102{ height:102rpx; }
+.es-h-103{ height:103rpx; }
+.es-h-104{ height:104rpx; }
+.es-h-105{ height:105rpx; }
+.es-h-106{ height:106rpx; }
+.es-h-107{ height:107rpx; }
+.es-h-108{ height:108rpx; }
+.es-h-109{ height:109rpx; }
+.es-h-110{ height:110rpx; }
+.es-h-111{ height:111rpx; }
+.es-h-112{ height:112rpx; }
+.es-h-113{ height:113rpx; }
+.es-h-114{ height:114rpx; }
+.es-h-115{ height:115rpx; }
+.es-h-116{ height:116rpx; }
+.es-h-117{ height:117rpx; }
+.es-h-118{ height:118rpx; }
+.es-h-119{ height:119rpx; }
+.es-h-120{ height:120rpx; }
+.es-h-121{ height:121rpx; }
+.es-h-122{ height:122rpx; }
+.es-h-123{ height:123rpx; }
+.es-h-124{ height:124rpx; }
+.es-h-125{ height:125rpx; }
+.es-h-126{ height:126rpx; }
+.es-h-127{ height:127rpx; }
+.es-h-128{ height:128rpx; }
+.es-h-129{ height:129rpx; }
+.es-h-130{ height:140rpx; }
+.es-h-131{ height:141rpx; }
+.es-h-132{ height:142rpx; }
+.es-h-133{ height:143rpx; }
+.es-h-134{ height:144rpx; }
+.es-h-135{ height:145rpx; }
+.es-h-136{ height:146rpx; }
+.es-h-137{ height:147rpx; }
+.es-h-138{ height:148rpx; }
+.es-h-139{ height:149rpx; }
+.es-h-140{ height:140rpx; }
+.es-h-141{ height:141rpx; }
+.es-h-142{ height:142rpx; }
+.es-h-143{ height:143rpx; }
+.es-h-144{ height:144rpx; }
+.es-h-145{ height:145rpx; }
+.es-h-146{ height:146rpx; }
+.es-h-147{ height:147rpx; }
+.es-h-148{ height:148rpx; }
+.es-h-149{ height:149rpx; }
+.es-h-150{ height:150rpx; }
+.es-h-151{ height:151rpx; }
+.es-h-152{ height:152rpx; }
+.es-h-153{ height:153rpx; }
+.es-h-154{ height:154rpx; }
+.es-h-155{ height:155rpx; }
+.es-h-156{ height:156rpx; }
+.es-h-157{ height:157rpx; }
+.es-h-158{ height:158rpx; }
+.es-h-159{ height:159rpx; }
+.es-h-160{ height:160rpx; }
+.es-h-161{ height:161rpx; }
+.es-h-162{ height:162rpx; }
+.es-h-163{ height:163rpx; }
+.es-h-164{ height:164rpx; }
+.es-h-165{ height:165rpx; }
+.es-h-166{ height:166rpx; }
+.es-h-167{ height:167rpx; }
+.es-h-168{ height:168rpx; }
+.es-h-169{ height:169rpx; }
+.es-h-170{ height:170rpx; }
+.es-h-171{ height:171rpx; }
+.es-h-172{ height:172rpx; }
+.es-h-173{ height:173rpx; }
+.es-h-174{ height:174rpx; }
+.es-h-175{ height:175rpx; }
+.es-h-176{ height:176rpx; }
+.es-h-177{ height:177rpx; }
+.es-h-178{ height:178rpx; }
+.es-h-179{ height:179rpx; }
+.es-h-180{ height:180rpx; }
+.es-h-181{ height:181rpx; }
+.es-h-182{ height:182rpx; }
+.es-h-183{ height:183rpx; }
+.es-h-184{ height:184rpx; }
+.es-h-185{ height:185rpx; }
+.es-h-186{ height:186rpx; }
+.es-h-187{ height:187rpx; }
+.es-h-188{ height:188rpx; }
+.es-h-189{ height:189rpx; }
+.es-h-190{ height:190rpx; }
+.es-h-191{ height:191rpx; }
+.es-h-192{ height:192rpx; }
+.es-h-193{ height:193rpx; }
+.es-h-194{ height:194rpx; }
+.es-h-195{ height:195rpx; }
+.es-h-196{ height:196rpx; }
+.es-h-197{ height:197rpx; }
+.es-h-198{ height:198rpx; }
+.es-h-199{ height:199rpx; }
+.es-h-200{ height:200rpx; }
+
+/* width */
+.es-w-1{ width:1rpx; }
+.es-w-2{ width:2rpx; }
+.es-w-3{ width:3rpx; }
+.es-w-4{ width:4rpx; }
+.es-w-5{ width:5rpx; }
+.es-w-6{ width:6rpx; }
+.es-w-7{ width:7rpx; }
+.es-w-8{ width:8rpx; }
+.es-w-9{ width:9rpx; }
+.es-w-10{ width:10rpx; }
+.es-w-11{ width:11rpx; }
+.es-w-12{ width:12rpx; }
+.es-w-13{ width:13rpx; }
+.es-w-14{ width:14rpx; }
+.es-w-15{ width:15rpx; }
+.es-w-16{ width:16rpx; }
+.es-w-17{ width:17rpx; }
+.es-w-18{ width:18rpx; }
+.es-w-19{ width:19rpx; }
+.es-w-20{ width:20rpx; }
+.es-w-21{ width:21rpx; }
+.es-w-22{ width:22rpx; }
+.es-w-23{ width:23rpx; }
+.es-w-24{ width:24rpx; }
+.es-w-25{ width:25rpx; }
+.es-w-26{ width:26rpx; }
+.es-w-27{ width:27rpx; }
+.es-w-28{ width:28rpx; }
+.es-w-29{ width:29rpx; }
+.es-w-30{ width:30rpx; }
+.es-w-31{ width:31rpx; }
+.es-w-32{ width:32rpx; }
+.es-w-33{ width:33rpx; }
+.es-w-34{ width:34rpx; }
+.es-w-35{ width:35rpx; }
+.es-w-36{ width:36rpx; }
+.es-w-37{ width:37rpx; }
+.es-w-38{ width:38rpx; }
+.es-w-39{ width:39rpx; }
+.es-w-40{ width:40rpx; }
+.es-w-41{ width:41rpx; }
+.es-w-42{ width:42rpx; }
+.es-w-43{ width:43rpx; }
+.es-w-44{ width:44rpx; }
+.es-w-45{ width:45rpx; }
+.es-w-46{ width:46rpx; }
+.es-w-47{ width:47rpx; }
+.es-w-48{ width:48rpx; }
+.es-w-49{ width:49rpx; }
+.es-w-50{ width:50rpx; }
+.es-w-51{ width:51rpx; }
+.es-w-52{ width:52rpx; }
+.es-w-53{ width:53rpx; }
+.es-w-54{ width:54rpx; }
+.es-w-55{ width:55rpx; }
+.es-w-56{ width:56rpx; }
+.es-w-57{ width:57rpx; }
+.es-w-58{ width:58rpx; }
+.es-w-59{ width:59rpx; }
+.es-w-60{ width:60rpx; }
+.es-w-61{ width:61rpx; }
+.es-w-62{ width:62rpx; }
+.es-w-63{ width:63rpx; }
+.es-w-64{ width:64rpx; }
+.es-w-65{ width:65rpx; }
+.es-w-66{ width:66rpx; }
+.es-w-67{ width:67rpx; }
+.es-w-68{ width:68rpx; }
+.es-w-69{ width:69rpx; }
+.es-w-70{ width:70rpx; }
+.es-w-71{ width:71rpx; }
+.es-w-72{ width:72rpx; }
+.es-w-73{ width:73rpx; }
+.es-w-74{ width:74rpx; }
+.es-w-75{ width:75rpx; }
+.es-w-76{ width:76rpx; }
+.es-w-77{ width:77rpx; }
+.es-w-78{ width:78rpx; }
+.es-w-79{ width:79rpx; }
+.es-w-80{ width:80rpx; }
+.es-w-81{ width:81rpx; }
+.es-w-82{ width:82rpx; }
+.es-w-83{ width:83rpx; }
+.es-w-84{ width:84rpx; }
+.es-w-85{ width:85rpx; }
+.es-w-86{ width:86rpx; }
+.es-w-87{ width:87rpx; }
+.es-w-88{ width:88rpx; }
+.es-w-89{ width:89rpx; }
+.es-w-90{ width:90rpx; }
+.es-w-91{ width:91rpx; }
+.es-w-92{ width:92rpx; }
+.es-w-93{ width:93rpx; }
+.es-w-94{ width:94rpx; }
+.es-w-95{ width:95rpx; }
+.es-w-96{ width:96rpx; }
+.es-w-97{ width:97rpx; }
+.es-w-98{ width:98rpx; }
+.es-w-99{ width:99rpx; }
+
+.es-w-100{ width:100rpx; }
+.es-w-101{ width:101rpx; }
+.es-w-102{ width:102rpx; }
+.es-w-103{ width:103rpx; }
+.es-w-104{ width:104rpx; }
+.es-w-105{ width:105rpx; }
+.es-w-106{ width:106rpx; }
+.es-w-107{ width:107rpx; }
+.es-w-108{ width:108rpx; }
+.es-w-109{ width:109rpx; }
+.es-w-110{ width:110rpx; }
+.es-w-111{ width:111rpx; }
+.es-w-112{ width:112rpx; }
+.es-w-113{ width:113rpx; }
+.es-w-114{ width:114rpx; }
+.es-w-115{ width:115rpx; }
+.es-w-116{ width:116rpx; }
+.es-w-117{ width:117rpx; }
+.es-w-118{ width:118rpx; }
+.es-w-119{ width:119rpx; }
+.es-w-120{ width:120rpx; }
+.es-w-121{ width:121rpx; }
+.es-w-122{ width:122rpx; }
+.es-w-123{ width:123rpx; }
+.es-w-124{ width:124rpx; }
+.es-w-125{ width:125rpx; }
+.es-w-126{ width:126rpx; }
+.es-w-127{ width:127rpx; }
+.es-w-128{ width:128rpx; }
+.es-w-129{ width:129rpx; }
+.es-w-130{ width:140rpx; }
+.es-w-131{ width:141rpx; }
+.es-w-132{ width:142rpx; }
+.es-w-133{ width:143rpx; }
+.es-w-134{ width:144rpx; }
+.es-w-135{ width:145rpx; }
+.es-w-136{ width:146rpx; }
+.es-w-137{ width:147rpx; }
+.es-w-138{ width:148rpx; }
+.es-w-139{ width:149rpx; }
+.es-w-140{ width:140rpx; }
+.es-w-141{ width:141rpx; }
+.es-w-142{ width:142rpx; }
+.es-w-143{ width:143rpx; }
+.es-w-144{ width:144rpx; }
+.es-w-145{ width:145rpx; }
+.es-w-146{ width:146rpx; }
+.es-w-147{ width:147rpx; }
+.es-w-148{ width:148rpx; }
+.es-w-149{ width:149rpx; }
+.es-w-150{ width:150rpx; }
+.es-w-151{ width:151rpx; }
+.es-w-152{ width:152rpx; }
+.es-w-153{ width:153rpx; }
+.es-w-154{ width:154rpx; }
+.es-w-155{ width:155rpx; }
+.es-w-156{ width:156rpx; }
+.es-w-157{ width:157rpx; }
+.es-w-158{ width:158rpx; }
+.es-w-159{ width:159rpx; }
+.es-w-160{ width:160rpx; }
+.es-w-161{ width:161rpx; }
+.es-w-162{ width:162rpx; }
+.es-w-163{ width:163rpx; }
+.es-w-164{ width:164rpx; }
+.es-w-165{ width:165rpx; }
+.es-w-166{ width:166rpx; }
+.es-w-167{ width:167rpx; }
+.es-w-168{ width:168rpx; }
+.es-w-169{ width:169rpx; }
+.es-w-170{ width:170rpx; }
+.es-w-171{ width:171rpx; }
+.es-w-172{ width:172rpx; }
+.es-w-173{ width:173rpx; }
+.es-w-174{ width:174rpx; }
+.es-w-175{ width:175rpx; }
+.es-w-176{ width:176rpx; }
+.es-w-177{ width:177rpx; }
+.es-w-178{ width:178rpx; }
+.es-w-179{ width:179rpx; }
+.es-w-180{ width:180rpx; }
+.es-w-181{ width:181rpx; }
+.es-w-182{ width:182rpx; }
+.es-w-183{ width:183rpx; }
+.es-w-184{ width:184rpx; }
+.es-w-185{ width:185rpx; }
+.es-w-186{ width:186rpx; }
+.es-w-187{ width:187rpx; }
+.es-w-188{ width:188rpx; }
+.es-w-189{ width:189rpx; }
+.es-w-190{ width:190rpx; }
+.es-w-191{ width:191rpx; }
+.es-w-192{ width:192rpx; }
+.es-w-193{ width:193rpx; }
+.es-w-194{ width:194rpx; }
+.es-w-195{ width:195rpx; }
+.es-w-196{ width:196rpx; }
+.es-w-197{ width:197rpx; }
+.es-w-198{ width:198rpx; }
+.es-w-199{ width:199rpx; }
+.es-w-200{ width:200rpx; }
+
+
+.es-p-a{position: absolute;}
+.es-p-f{position: fixed;}
+.es-p-r{position: relative;}
+

+ 94 - 0
assets/css/czy/es.2.color.css

@@ -0,0 +1,94 @@
+/* backgroundColor color borderColor */
+.es-bc,.es-max-btn{ background: #FF5C03;color:white; }
+.es-c{ color: #FF5C03 !important; }
+.es-brc{ border:1px #FF5C03 solid !important; }
+.es-bc-tint{
+	background-color: rgba(255, 92, 3, 0.1);
+}
+
+.es-bc-tint2{
+	background-color: rgba(255, 92, 3, 0.2);
+}
+
+.es-bc-tint05{
+	background-color: rgba(255, 92, 3, 0.05);
+}
+
+.es-bc-theme{ background-color:#FF5C03; color:white; }
+
+.es-bc-yellow{ background:#F57221; color:white; }
+.es-c-yellow{ color:#F57221; }
+.es-btc-yellow{ border:1px #F57221 solid !important;}
+
+
+.es-bc-yellow-tint{ background:#FCB75B; color:white; }
+.es-c-yellow-tint{ color:#FCB75B; }
+.es-brc-yellow{ border:1px #FCB75B solid !important;}
+
+
+.es-bc-blue{ background:#00a1ea;color:white; }
+.es-c-blue{ color:#00a1ea; }
+.es-brc-gray{ border:1px #00a1ea solid !important;}
+
+.es-bc-gray{  background: #C4C4C4; color:white; }
+.es-c-gray{ color: #C4C4C4; }
+.es-brc-gray{ border:1px #C4C4C4 solid !important;}
+
+.es-bc-gray-tint{ background:#F7F8FA; }
+
+.es-bc-f1{ background:#f1f1f1; color:#666666; }
+.es-bc-f3{ background:#f3f3f3; color:#666666; }
+.es-bc-d7{ background:#d7d7d7; color:#666666; }
+
+.es-brc-f1{ border:#f1f1f1 1px solid; }
+.es-brc-f3{ border:#f3f3f3 1px solid; }
+.es-brc-d7{ border:#d7d7d7 1px solid; }
+
+
+.es-bc-white{ background:#FFFFFF; }
+.es-brc-white{ border:#FFFFFF 1px solid; }
+.es-c-white{ color:#ffffff; }
+
+.es-c-red{ color:#EE5845; }
+.es-bc-red{ background:#EE5845;color:white; }
+.es-brc-red{ border:#EE5845 1px solid; }
+
+.es-c-purple{ color:#5473E8; }
+.es-bc-purple{ background:#5473E8;color:white; }
+.es-brc-purple{ border:#5473E8 1px solid; }
+
+.es-bc-black{background: #1F2129;}
+
+.es-bc-c4{ background:#c4c4c4;color:white; }
+.es-bc-f7{background:#F7F8FA;}
+.es-bc-f8{background:#F8F8F8;}
+.es-bc-db{background:#DBDBDB;}
+.es-bc-f9{background:#f9f9f9;}
+.es-bc-90{background: #9096AB !important;color:white;}
+.es-bc-e6{background-color: #e6e5e4;}
+.es-bc-fa{background-color: #fafafa;}
+
+
+/* fontColor */
+/* page{ color:#454545; } */
+.es-c-99{ color:#999999; }
+.es-t-y,.es-c-66{ color:#666666; }
+.es-t-z,.es-c-c4{ color:#C4C4C4; }
+.es-c-45{ color:#454545; }
+.es-c-cc{ color:#cccccc; }
+.es-c-7b{color:#7b7b7b;}
+.es-c-6c{color: #6c6c6c;}
+.es-t-x{color:#9096AB;}
+
+.es-c-b4{color: #b4b4b4;}
+.es-c-6a{color: #6a6a6a;}
+
+.es-c-00{color: #000000;}
+.es-c-33{color: #333333;}
+.es-c-66{color: #666666;}
+.es-c-99{color: #999999;}
+.es-c-ec{color: #ececec;}
+.es-c-e1{color: #e1e1e1;}
+.es-c-e5{color: #e5e5e5;}
+
+/*input*/

+ 28 - 0
assets/css/czy/es.3.icon.css

@@ -0,0 +1,28 @@
+
+.es-icon-default{
+	background-image: url("@/static/logo.png");
+}
+
+.es-icon-play{
+	background-image: url("@/static/image/course/play.png");
+}
+
+.es-icon-ret-white{
+	background-image: url("@/static/images/other/ret-white.png");
+	width: 18rpx;
+	height: 31rpx;
+	background-size: 100% 100%;
+}
+
+/* .es-top-bg{
+	background-image: url(/static/image/home/home_top_bg.png);
+} */
+
+.es-icon-ret-right{
+	background-image: url("@/static/images/other/ret-right2.png");
+	width: 19rpx;
+	height: 19rpx;
+	background-size: 100% 100%;
+	margin-top: 3rpx;
+	margin-left: 6rpx;
+}

+ 101 - 0
assets/css/czy/es.4.view.css

@@ -0,0 +1,101 @@
+/*
+	存放本项目使用的一些扩展类
+*/
+/* page {
+	font-family: ".PingFang SC";
+	font-size: 28rpx;
+	font-weight: 400;
+
+	background: #F7F8FA;
+} */
+
+button::after {
+	border: none;
+}
+
+button {
+	border-radius: 0;
+	font-size: 30rpx;
+	line-height: 1em;
+	padding-left: 0;
+	padding-right: 0;
+}
+
+.es-min-btn {
+	padding: 8rpx 31rpx;
+	border-radius: 200rpx;
+	font-size: 26rpx;
+}
+
+.es-min-btn2 {
+	padding: 14rpx 36rpx;
+	border-radius: 200rpx;
+	font-size: 28rpx;
+	font-weight: 600;
+}
+
+.es-min-btn-n {
+	padding: 8rpx 31rpx;
+	border-radius: 200rpx;
+	font-size: 26rpx;
+	color: #9096AB;
+	border: 1px #9096AB solid;
+}
+
+.es-min-btn-n.ac {
+	color: #12C194;
+	border: 1px #12C194 solid;
+}
+
+.es-ipt,
+.es-text {
+	overflow: hidden;
+}
+
+.es-ipt,
+.es-ipt input {
+	height: 76rpx;
+}
+
+.es-text,
+.es-text textarea {
+	height: 158rpx;
+}
+
+.es-text textarea,
+.es-ipt input {
+	padding: 0 24rpx;
+	background: #F7F8FA;
+	font-size: 28rpx;
+	width: calc(100% - 50rpx);
+}
+
+.es-text textarea {
+	padding-top: 15rpx !important;
+	padding-bottom: 15rpx !important;
+}
+
+.es-ipt.es-bc-white,
+.es-ipt.es-bc-white input,
+.es-text.es-bc-white textarea {
+	background: white;
+}
+
+
+
+.es-max-btn {
+	height: 80rpx;
+	border-radius: 15rpx;
+	background-color: #12C194;
+	color: white;
+	font-size: 28rpx;
+}
+
+
+/* .label {
+	color: #12C194;
+	background: rgba(18, 193, 148, 0.1);
+	padding: 10rpx 25rpx;
+	border-radius: 100rpx;
+	font-size: 24rpx;
+ }*/

BIN
assets/css/kaluli_icon.png


BIN
assets/css/min_icon.png


BIN
assets/css/sports_record_icon.png


BIN
assets/css/time_icon.png


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
assets/iconfont/iconfont.css


+ 32 - 0
common/ChainItem.js

@@ -0,0 +1,32 @@
+// 定义链的某一项
+function ChainItem(fn) {
+    this.fn = fn;
+    this.next = null;
+}
+
+ChainItem.prototype = {
+    constructor: ChainItem,
+    
+    // 设置下一项
+    setNext: function(next) {
+        this.next = next;
+        return next;
+    },
+    
+    // 开始执行
+    start: function() {
+        return this.fn.apply(this, arguments);
+    },
+    
+    // 转到链的下一项执行
+    toNext: function() {
+        if (this.next) {
+           return this.start.apply(this.next, arguments);
+        } else {
+			return Promise.reject("无匹配的执行项目");
+            // console.log('无匹配的执行项目');
+        }
+    }
+};
+
+export default ChainItem;

+ 11 - 0
common/config.js

@@ -0,0 +1,11 @@
+/**
+ * 本项目只有这里修改相应配置信息
+ */
+
+const config1={
+	"navTitleStyle":"font-weight:620;font-family: PingFang SC;"
+	
+};
+export default{
+	config1:config1
+}

+ 26 - 0
common/css/flexCommon.css

@@ -0,0 +1,26 @@
+/* flex布局 */
+.u-f,
+.u-f-ac,
+.u-f-ajc {
+	display: flex;
+}
+
+.u-f-ac,
+.u-f-ajc {
+	align-items: center;
+}
+
+.u-f-ajc {
+	justify-content: center;
+}
+
+.u-f-jsb {
+	justify-content: space-between;
+}
+
+.u-f-fc {
+	flex-direction: column;
+}
+.u-f-ww{
+	flex-wrap: wrap;
+}

+ 352 - 0
common/html-parser.js

@@ -0,0 +1,352 @@
+/*
+ * HTML5 Parser By Sam Blowes
+ *
+ * Designed for HTML5 documents
+ *
+ * Original code by John Resig (ejohn.org)
+ * http://ejohn.org/blog/pure-javascript-html-parser/
+ * Original code by Erik Arvidsson, Mozilla Public License
+ * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
+ *
+ * ----------------------------------------------------------------------------
+ * License
+ * ----------------------------------------------------------------------------
+ *
+ * This code is triple licensed using Apache Software License 2.0,
+ * Mozilla Public License or GNU Public License
+ *
+ * ////////////////////////////////////////////////////////////////////////////
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.  You may obtain a copy
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * ////////////////////////////////////////////////////////////////////////////
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * The Original Code is Simple HTML Parser.
+ *
+ * The Initial Developer of the Original Code is Erik Arvidsson.
+ * Portions created by Erik Arvidssson are Copyright (C) 2004. All Rights
+ * Reserved.
+ *
+ * ////////////////////////////////////////////////////////////////////////////
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * ----------------------------------------------------------------------------
+ * Usage
+ * ----------------------------------------------------------------------------
+ *
+ * // Use like so:
+ * HTMLParser(htmlString, {
+ *     start: function(tag, attrs, unary) {},
+ *     end: function(tag) {},
+ *     chars: function(text) {},
+ *     comment: function(text) {}
+ * });
+ *
+ * // or to get an XML string:
+ * HTMLtoXML(htmlString);
+ *
+ * // or to get an XML DOM Document
+ * HTMLtoDOM(htmlString);
+ *
+ * // or to inject into an existing document/DOM node
+ * HTMLtoDOM(htmlString, document);
+ * HTMLtoDOM(htmlString, document.body);
+ *
+ */
+// Regular Expressions for parsing tags and attributes
+var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/;
+var endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/;
+var attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; // Empty Elements - HTML 5
+
+var empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr'); // Block Elements - HTML 5
+// fixed by xxx 将 ins 标签从块级名单中移除
+
+var block = makeMap('a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); // Inline Elements - HTML 5
+
+var inline = makeMap('abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); // Elements that you can, intentionally, leave open
+// (and which close themselves)
+
+var closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); // Attributes that have their values filled in disabled="disabled"
+
+var fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'); // Special Elements (can contain anything)
+
+var special = makeMap('script,style');
+function HTMLParser(html, handler) {
+  var index;
+  var chars;
+  var match;
+  var stack = [];
+  var last = html;
+
+  stack.last = function () {
+    return this[this.length - 1];
+  };
+
+  while (html) {
+    chars = true; // Make sure we're not in a script or style element
+
+    if (!stack.last() || !special[stack.last()]) {
+      // Comment
+      if (html.indexOf('<!--') == 0) {
+        index = html.indexOf('-->');
+
+        if (index >= 0) {
+          if (handler.comment) {
+            handler.comment(html.substring(4, index));
+          }
+
+          html = html.substring(index + 3);
+          chars = false;
+        } // end tag
+
+      } else if (html.indexOf('</') == 0) {
+        match = html.match(endTag);
+
+        if (match) {
+          html = html.substring(match[0].length);
+          match[0].replace(endTag, parseEndTag);
+          chars = false;
+        } // start tag
+
+      } else if (html.indexOf('<') == 0) {
+        match = html.match(startTag);
+
+        if (match) {
+          html = html.substring(match[0].length);
+          match[0].replace(startTag, parseStartTag);
+          chars = false;
+        }
+      }
+
+      if (chars) {
+        index = html.indexOf('<');
+        var text = index < 0 ? html : html.substring(0, index);
+        html = index < 0 ? '' : html.substring(index);
+
+        if (handler.chars) {
+          handler.chars(text);
+        }
+      }
+    } else {
+      html = html.replace(new RegExp('([\\s\\S]*?)<\/' + stack.last() + '[^>]*>'), function (all, text) {
+        text = text.replace(/<!--([\s\S]*?)-->|<!\[CDATA\[([\s\S]*?)]]>/g, '$1$2');
+
+        if (handler.chars) {
+          handler.chars(text);
+        }
+
+        return '';
+      });
+      parseEndTag('', stack.last());
+    }
+
+    if (html == last) {
+      throw 'Parse Error: ' + html;
+    }
+
+    last = html;
+  } // Clean up any remaining tags
+
+
+  parseEndTag();
+
+  function parseStartTag(tag, tagName, rest, unary) {
+    tagName = tagName.toLowerCase();
+
+    if (block[tagName]) {
+      while (stack.last() && inline[stack.last()]) {
+        parseEndTag('', stack.last());
+      }
+    }
+
+    if (closeSelf[tagName] && stack.last() == tagName) {
+      parseEndTag('', tagName);
+    }
+
+    unary = empty[tagName] || !!unary;
+
+    if (!unary) {
+      stack.push(tagName);
+    }
+
+    if (handler.start) {
+      var attrs = [];
+      rest.replace(attr, function (match, name) {
+        var value = arguments[2] ? arguments[2] : arguments[3] ? arguments[3] : arguments[4] ? arguments[4] : fillAttrs[name] ? name : '';
+        attrs.push({
+          name: name,
+          value: value,
+          escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') // "
+
+        });
+      });
+
+      if (handler.start) {
+        handler.start(tagName, attrs, unary);
+      }
+    }
+  }
+
+  function parseEndTag(tag, tagName) {
+    // If no tag name is provided, clean shop
+    if (!tagName) {
+      var pos = 0;
+    } // Find the closest opened tag of the same type
+    else {
+        for (var pos = stack.length - 1; pos >= 0; pos--) {
+          if (stack[pos] == tagName) {
+            break;
+          }
+        }
+      }
+
+    if (pos >= 0) {
+      // Close all the open elements, up the stack
+      for (var i = stack.length - 1; i >= pos; i--) {
+        if (handler.end) {
+          handler.end(stack[i]);
+        }
+      } // Remove the open elements from the stack
+
+
+      stack.length = pos;
+    }
+  }
+}
+
+function makeMap(str) {
+  var obj = {};
+  var items = str.split(',');
+
+  for (var i = 0; i < items.length; i++) {
+    obj[items[i]] = true;
+  }
+
+  return obj;
+}
+
+function removeDOCTYPE(html) {
+  return html.replace(/<\?xml.*\?>\n/, '').replace(/<!doctype.*>\n/, '').replace(/<!DOCTYPE.*>\n/, '');
+}
+
+function parseAttrs(attrs) {
+  return attrs.reduce(function (pre, attr) {
+    var value = attr.value;
+    var name = attr.name;
+
+    if (pre[name]) {
+			pre[name] = pre[name] + " " + value;
+    } else {
+			pre[name] = value;
+    }
+
+    return pre;
+  }, {});
+}
+
+function parseHtml(html) {
+  html = removeDOCTYPE(html);
+  var stacks = [];
+  var results = {
+    node: 'root',
+    children: []
+  };
+  HTMLParser(html, {
+    start: function start(tag, attrs, unary) {
+      var node = {
+        name: tag
+      };
+
+      if (attrs.length !== 0) {
+        node.attrs = parseAttrs(attrs);
+      }
+
+      if (unary) {
+        var parent = stacks[0] || results;
+
+        if (!parent.children) {
+          parent.children = [];
+        }
+
+        parent.children.push(node);
+      } else {
+        stacks.unshift(node);
+      }
+    },
+    end: function end(tag) {
+      var node = stacks.shift();
+      if (node.name !== tag) console.error('invalid state: mismatch end tag');
+
+      if (stacks.length === 0) {
+        results.children.push(node);
+      } else {
+        var parent = stacks[0];
+
+        if (!parent.children) {
+          parent.children = [];
+        }
+
+        parent.children.push(node);
+      }
+    },
+    chars: function chars(text) {
+      var node = {
+        type: 'text',
+        text: text
+      };
+
+      if (stacks.length === 0) {
+        results.children.push(node);
+      } else {
+        var parent = stacks[0];
+
+        if (!parent.children) {
+          parent.children = [];
+        }
+
+        parent.children.push(node);
+      }
+    },
+    comment: function comment(text) {
+      var node = {
+        node: 'comment',
+        text: text
+      };
+      var parent = stacks[0];
+
+      if (!parent.children) {
+        parent.children = [];
+      }
+
+      parent.children.push(node);
+    }
+  });
+  return results.children;
+}
+
+export default parseHtml;

+ 138 - 0
common/request.js

@@ -0,0 +1,138 @@
+// uni-app请求封装
+export default class Request {
+	http(router, data = {}, method,contentType,timeout=60000) {
+		let that = this;
+		let path ='https://api.cdwjyyh.com';//app正式环境
+
+		//let path = 'http://192.168.110.247:8113'
+		// #ifdef H5
+		//path = 'http://192.168.110.245:8113'
+		 path ='https://h5api.his.cdwjyyh.com';//h5接口
+		// path ='http://a7ad6869.natappfree.cc';//h5接口
+
+		    //path = 'http://192.168.110.247:8113'
+		//path ='https://h5api.his.cdwjyyh.com';//h5接口
+		// path ='http://z2fae9e9.natappfree.cc';//直播余红奇本地
+		// path ='https://api.fhhx.runtzh.com';//直播余红奇线上
+
+
+		// #endif
+		// 看课模块
+		if(router.indexOf("/app/course/getRealLink") != -1 ) {
+			path ='https://h5api.his.cdwjyyh.com';
+		}
+		// 直播模块
+		if(router.indexOf("/appLive") !== -1) {
+			// router = router.replace('/appLive','')
+			path ='https://api.fhhx.runtzh.com';
+			// router = router.replace('/appLive','')
+			
+			// path ='http://z2fae9e9.natappfree.cc'
+		}
+		//直播静默登录配置
+		// if (router.indexOf("/live") !== -1 || router.indexOf("/liveAPP") !== -1) {
+		// 	if(router.indexOf("/liveAPP") !== -1){
+		// 		router = router.replace('/liveAPP', '')
+		// 	}
+		// 	token = uni.getStorageSync('LiveToken');
+		// }
+		// 腕表模块
+		if(router.indexOf("/watch-api") != -1 ) {
+			router = router.replace('/watch-api','')
+			// path = 'http://192.168.10.155:8114'
+			// path = 'http://192.168.10.135:8114'
+			//path = 'http://192.168.110.61:8114'
+			path = 'http://42.194.245.189:8114'
+		}
+		// doctorAi模块
+		if(router.indexOf("/doctorAi") != -1 ) {
+			router = router.replace('/doctorAi','')
+			path = 'http://doctor.ai.cdwjyyh.com'
+		}
+		uni.setStorageSync('requestPath',path);
+		// uni.showLoading({
+		// 	  title: '加载中'
+		// });
+		return new Promise((resolve, reject) => {
+				let token = uni.getStorageSync('AppToken');
+				let liveToken = uni.getStorageSync('liveToken');
+				let CompanyUserToken = uni.getStorageSync('CompanyUserToken');
+				var httpContentType='application/x-www-form-urlencoded';
+				if(contentType!=undefined){
+					httpContentType=contentType;
+				}
+				var routers=router;
+				//console.log("---qxj request url:"+`${path}${router}`+" params:"+JSON.stringify(data));
+				// 直播模块使用liveToken
+				let useToken = token;
+				// 检查是否为直播模块路径
+				const isLiveApi = router.indexOf("/appLive") !== -1 || router.indexOf("/liveAPP") !== -1;
+				if(isLiveApi) {
+					// 检查liveToken是否存在
+					if (!liveToken || liveToken === '') {
+						// 跳转到手机号码一键登录页面
+						uni.navigateTo({
+							url: '/pages/auth/login?quickLogin=true'
+						});
+						// 拒绝请求
+						reject({errMsg: 'No liveToken, redirect to login'});
+						return;
+					}
+					useToken = liveToken;
+					if(router.indexOf("/appLive") !== -1){
+						router = router.replace('/appLive', '')
+					}
+					if(router.indexOf("/liveAPP") !== -1){
+						router = router.replace('/liveAPP', '')
+					}
+				}
+				
+				// 请求
+				uni.request({
+					header: {
+						// 'Content-Type': 'application/x-www-form-urlencoded',
+						'Content-Type': httpContentType,
+						'AppToken': useToken,
+						'CompanyUserToken':CompanyUserToken //业务员token
+					},
+				url: `${path}${router}`,
+				data: data,
+				method: method,
+				timeout: timeout,
+				success: (res) => {
+					//收到开发者服务器成功返回的回调函数
+					if(res.data.code==401){ //没有权限直接退出到登录界面
+						let pages = getCurrentPages();
+						let url = pages[ pages.length - 1]; //当前页页面实例
+						//如果登录界面已打开,自动关闭
+						if(url!=undefined&&url.route=="pages/auth/login"){
+							resolve(res.data)
+							return;
+						}
+					}
+					if(res.token) {
+						uni.setStorageSync('AppToken',res.token)
+					}
+					resolve(res.data)
+				},
+				fail:(res) =>{
+					//接口调用失败的回调函数
+					reject(res);
+				},
+				complete:(res) =>{
+					// console.log("complete==",`${path}${router}`,res)
+					if (res.data&&res.data.code == 401) {
+						uni.$emit('loginOut');
+						return false
+					}
+					uni.hideLoading();
+				}
+				
+			});
+	
+	
+		})
+		 
+	}
+	
+}

+ 54 - 0
common/util.js

@@ -0,0 +1,54 @@
+function friendlyDate(timestamp) {
+	var formats = {
+		'year': '%n% 年前',
+		'month': '%n% 月前',
+		'day': '%n% 天前',
+		'hour': '%n% 小时前',
+		'minute': '%n% 分钟前',
+		'second': '%n% 秒前',
+	};
+
+	var now = Date.now();
+	var seconds = Math.floor((now - timestamp) / 1000);
+	var minutes = Math.floor(seconds / 60);
+	var hours = Math.floor(minutes / 60);
+	var days = Math.floor(hours / 24);
+	var months = Math.floor(days / 30);
+	var years = Math.floor(months / 12);
+
+	var diffType = '';
+	var diffValue = 0;
+	if (years > 0) {
+		diffType = 'year';
+		diffValue = years;
+	} else {
+		if (months > 0) {
+			diffType = 'month';
+			diffValue = months;
+		} else {
+			if (days > 0) {
+				diffType = 'day';
+				diffValue = days;
+			} else {
+				if (hours > 0) {
+					diffType = 'hour';
+					diffValue = hours;
+				} else {
+					if (minutes > 0) {
+						diffType = 'minute';
+						diffValue = minutes;
+					} else {
+						diffType = 'second';
+						diffValue = seconds === 0 ? (seconds = 1) : seconds;
+					}
+				}
+			}
+		}
+	}
+	return formats[diffType].replace('%n%', diffValue);
+}
+
+
+export {
+	friendlyDate
+}

+ 106 - 0
components/CustomCamera/WeChat/Layout.vue

@@ -0,0 +1,106 @@
+
+<!-- 公共布局组件 -->
+<template>
+	<view class="custom-camera">
+		<view class="camera-wrap" :style="{height:cameraHeight+'px'}">
+			<slot></slot>
+		</view>
+		<view class="camera-footer" id="camera-footer">
+			<view class="usenum">当前可免费试用<text style="color: #F54D04;margin: 0 6rpx;">{{usenum || 0}}</text>次</view>
+			<view class="camera-options">
+				<view class="camera-options-left camera-item">
+					<image src="@/static/images/album_icon.png" mode="scaleToFill" style="width: 65rpx;height:60rpx;" @click="handleClikFn('album')"></image>
+					<text>相册上传</text>
+				</view>
+				<view class="camera-options-center camera-item" @click="handleClikFn('shutter')">
+					<view class="photograph-btn"></view>
+				</view>
+				<view class="camera-options-ritht camera-item">
+					<image src="/static/images/tongue_diagnosis_record_icon.png" mode="scaleToFill" style="width: 67rpx;height:60rpx;" @click="handleClikFn('reportlist')"></image>
+					<text>舌诊记录</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	// 提供一个相机的插槽位置
+	// 底部可以自定义最右侧按钮(相册/反转)
+	export default {
+		data() {
+			return {
+				cameraHeight: '', //相机画面宽度
+				optionsHeight: '', //操作区域
+				usenum: 2
+			}
+		},
+		methods: {
+			handleClikFn(instruct) {
+				this.$emit('instruct', instruct)
+			}
+		},
+		mounted() {
+			const query = uni.createSelectorQuery().in(this);
+			query
+			  .select("#camera-footer")
+			  .boundingClientRect((data) => {
+				this.cameraHeight = uni.getSystemInfoSync().screenHeight - data.height
+			  })
+			  .exec();
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.custom-camera {
+		height: 100vh;
+		background-color: #000;
+		
+		.usenum {
+			font-family: SourceHanSansCN;
+			font-weight: 400;
+			font-size: 19rpx;
+			color: #FFFFFF;
+			padding: 14rpx;
+			text-align: center;
+		}
+		.camera-options {
+			width: 100%;
+			padding-top: 13rpx;
+			padding-bottom: 60rpx;
+			box-sizing: border-box;
+			font-family: SourceHanSansCN;
+			font-weight: 400;
+			font-size: 27rpx;
+			color: #FFFFFF;
+			display: flex;
+			align-items: center;
+			justify-content: space-evenly;
+			.camera-item {
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				image {
+					margin-bottom: 21rpx;
+				}
+			}
+			.camera-options-center {
+				width: 131rpx;
+				height: 131rpx;
+				border-radius: 50%;
+				border: 3px solid #FFFFFF;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+			.photograph-btn {
+				width: 109rpx;
+				height: 109rpx;
+				background: #F54D04;
+				border-radius: 50%;
+			}
+		}
+	}
+</style>
+

+ 194 - 0
components/CustomCamera/WeChat/index.vue

@@ -0,0 +1,194 @@
+<template>
+	<Layout @instruct="handleInstruct">
+		<camera class="camera" mode="normal" :device-position="device" @error="error"
+			style="width: 100%; height: 100%;">
+			<cover-view class="cover-view">
+				<cover-view class="uni-nav-bar">
+					<cover-view :style="{height: statusBarHeight,width: '100%'}"></cover-view>
+					<cover-view class="uni-nav-barbox" :style="{width: menuLeft}">
+						<cover-view class="uni-nav-back">
+							<cover-image src="@/static/images/ai_right_icon.png" mode="aspectFill"></cover-image>
+						</cover-view>
+						<cover-view class="uni-nav-title">
+							<cover-view>使用教程</cover-view>
+							<cover-image class="ques" src="@/static/images/ques.png" mode="aspectFill"></cover-image>
+						</cover-view>
+					</cover-view>
+				</cover-view>
+				<cover-view class="title">请拍摄舌面</cover-view>
+				<cover-view class="tips">舌尖放松,舌面平展,舌尖略向下,口张大不要太用力</cover-view>
+				<cover-view class="imagebox">
+					<cover-image class="tongue" src="@/static/images/tongue.png"  mode="aspectFill"></cover-image>
+				</cover-view>
+			</cover-view>
+			<!-- <cover-image v-if="coverImage" :src="coverImage" style="width: 100%;height: 100%;"></cover-image> -->
+		</camera>
+	</Layout>
+</template>
+<script>
+	import Layout from './Layout.vue'
+
+	export default {
+		components: {
+			Layout
+		},
+		data() {
+			return {
+				statusBarHeight: uni.getSystemInfoSync().statusBarHeight + 'px',
+				// 前置或后置摄像头,值为front, back
+				device: 'back',
+				cameraContext: null,
+				shutterShow: false,
+				coverImage: null,
+				menuLeft: '100%'
+			}
+		},
+		mounted() {
+			uni.getSystemInfo({
+				success: (result) => {
+					// 获取右侧胶囊的信息 单位px
+					//#ifndef H5 || APP-PLUS
+					const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
+					//left:   胶囊左侧距离屏幕左侧的距离
+					this.menuLeft = menuButtonInfo.left + 'px'
+					//#endif
+				},
+				fail: (error) => {
+					console.log(error)
+				}
+			})
+			this.cameraContext = uni.createCameraContext();
+			// this.coverImage = '/static/images/portrait.jpg'
+		},
+		methods: {
+			error(err) {
+				console.log(err)
+			},
+			handleInstruct(instruct) {
+				switch (instruct) {
+					// 返回
+					case 'back':
+						this.$emit('back')
+						break;
+						// 快门
+					case 'shutter':
+						this.cameraContext.takePhoto({
+							quality: 'high',
+							success: (res) => {
+								// console.log(res)
+								this.$emit('getImage', res.tempImagePath)
+							}
+						})
+						break;
+						// 反转
+					case 'reversal':
+						this.device = this.device === 'back' ? 'front' : 'back'
+						break;
+						// 相册
+					case 'album':
+						uni.chooseImage({
+							count: 1, //默认9
+							sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+							sourceType: ['album'], //从相册选择
+							success: (res) => {
+								this.$emit('getImage', res.tempFilePaths[0])
+							}
+						})
+						break;
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.imagebox {
+		width: 100%;
+		margin-top: 30rpx;
+		@include u-flex(column, center, center);
+	}
+	.tongue {
+		width: 531rpx;
+		height: 592rpx;
+		margin: 0 auto;
+		margin-top: 30rpx;
+	}
+	.cover-view {
+		width: 100%;
+		position: absolute;
+		z-index: 99;
+		top: 0;
+		left: 0;
+	}
+	.title {
+		margin-top: calc(var(--status-bar-height) + 130rpx);;
+		font-family: SourceHanSansCN-Medium;
+		font-weight: 500;
+		font-size: 43rpx;
+		color: #FFFFFF;
+		text-align: center;
+	}
+	.tips {
+		margin-top: 38rpx;
+		font-family: SourceHanSansSC-Regular;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #FFFFFF;
+		text-align: center;
+	}
+	.uni-nav-bar {
+		position: fixed;
+		top: 0;
+		left: 0;
+		width: 100%;
+		z-index: 999;
+		overflow: hidden;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 500;
+		color: #FFFFFF;
+		.uni-nav-barbox {
+			width: 100%;
+			height: 88rpx;
+			padding: 0 24rpx;
+			box-sizing: border-box;
+			@include u-flex(row, center, space-between);
+			position: relative;
+			font-size: 24rpx;
+		}
+		.uni-nav-title {
+			flex-shrink: 0;
+			font-family: SourceHanSansSC;
+			font-weight: 400;
+			// font-size: 32rpx;
+			color: #FFFFFF;
+			/* #ifdef APP-PLUS */
+			font-size: 32rpx;
+			/* #endif */
+			/* #ifndef APP-PLUS */
+			font-size: 14px;
+			/* #endif */
+			@include u-flex(row, center, flex-start);
+			.ques {
+				flex-shrink: 0;
+				width: 33rpx;
+				height: 33rpx;
+				margin-left: 9rpx;
+			}
+		}
+		.uni-nav-back {
+			height: 32rpx;
+			width: 32rpx;
+		}
+	}
+
+	.camera {
+		position: relative;
+	}
+</style>
+

+ 50 - 0
components/Loading.vue

@@ -0,0 +1,50 @@
+<template>
+  <view class="Loads acea-row row-center-wrapper" v-if="loading || !loaded" style="margin-top: 20rpx;">
+    <template v-if="loading">
+      <view class="iconfont icon-jiazai loading acea-row row-center-wrapper"></view>
+      正在加载中
+    </template>
+    <template v-if="!loading">
+      上拉加载更多
+    </template>
+  </view>
+</template>
+
+<script>
+  export default {
+    name: "Loading",
+    props: {
+      loaded: Boolean,
+      loading: Boolean
+    }
+  };
+</script>
+<style lang="less">
+	.Loads {
+	  height: 0.8*100rpx;
+	  font-size: 0.25*100rpx;
+	  color: #000;
+	}
+	.Loads .iconfont {
+	  font-size: 0.3*100rpx;
+	  margin-right: 0.1*100rpx;
+	  height: 0.32*100rpx;
+	  line-height: 0.32*100rpx;
+	}
+	/*加载动画*/
+	@keyframes load {
+	  from {
+	    transform: rotate(0deg);
+	  }
+	  to {
+	    transform: rotate(360deg);
+	  }
+	}
+	.loadingpic {
+	  animation: load 3s linear 1s infinite;
+	}
+	.loading {
+	  animation: load linear 1s infinite;
+	}
+	
+</style>

+ 162 - 0
components/Menu.vue

@@ -0,0 +1,162 @@
+<template>
+	<view class="menu-list-box" v-if="carousel" :style="list.length <= menu ? `height:160rpx` : `height:320rpx`">
+		<swiper
+			class="menu-swiper-box"
+			:style="list.length <= menu ? `height:160rpx` : `height:320rpx`"
+			@change="onSwiper"
+			circular
+			:autoplay="false"
+			:interval="3000"
+			:duration="1000"
+		>
+			<swiper-item class="menu-swiper-item" v-for="(itemList, index) in carousel" :key="index" :style="list.length <= menu ? `height:200rpx` : `height:340rpx`">
+				<view class="menu-tab-box">
+					<view class="tab-list"  v-for="item in itemList" :key="item.cateId" @tap="routerTo(item)">
+						<image class="tab-img" :style="{ width: imgW + 'rpx', height: imgW + 'rpx' }" :src="item.imgUrl"></image>
+						<text :class="cateId == item.cateId?'tab-title active':'tab-title'"  >{{ item.cateName }}</text>
+						
+					</view>
+				</view>
+			</swiper-item>
+		</swiper>
+		<view class="menu-dots" v-if="carousel.length > 1">
+			<text :class="menuCurrent === index ? 'dot-active' : 'dot'" v-for="(dot, index) in carousel.length" :key="index"></text>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	components: {},
+	data() {
+		return {
+			cateId:0,
+			menuCurrent: 0 //轮播下标
+		};
+	},
+	props: {
+		list: {
+			type: Array,
+			default: []
+		},
+		menu: {
+			default: 4
+		},
+		imgW: {
+			type: Number,
+			default: 88
+		}
+	},
+	computed: {
+		carousel() {
+			if (this.list) {
+				let data = this.sortData(this.list, this.menu * 2);
+				return data;
+			}
+		}
+	},
+	created() {},
+	methods: {
+		// 数据分层
+		sortData(oArr, length) {
+			let arr = [];
+			let minArr = [];
+			oArr.forEach(c => {
+				if (minArr.length === length) {
+					minArr = [];
+				}
+				if (minArr.length === 0) {
+					arr.push(minArr);
+				}
+				minArr.push(c);
+			});
+		 
+			return arr;
+		},
+		// 轮播
+		onSwiper(e) {
+			this.menuCurrent = e.detail.current;
+		},
+		routerTo(item) {
+			this.cateId=item.cateCode || item.cateId;
+			this.$emit('menuClick',item);
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.menu-list-box {
+	padding: 0rpx;
+	background: #fff;
+	box-sizing: border-box;
+	
+}
+.menu-list-box,
+.menu-swiper-box {
+	position: relative;
+	background: #fff;
+	.menu-swiper-item {
+		background: #fff;
+		height: 100%;
+		width: 100%;
+	}
+	.menu-tab-box {
+		display: flex;
+		flex-wrap: wrap;
+		.tab-list {
+			width: 25%;
+			display: -webkit-box;
+			display: -webkit-flex;
+			display: flex;
+			-webkit-box-orient: vertical;
+			-webkit-box-direction: normal;
+			-webkit-flex-direction: column;
+			flex-direction: column;
+			-webkit-box-align: center;
+			-webkit-align-items: center;
+			align-items: center;
+			font-size: 22rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: rgba(51, 51, 51, 1);
+			padding-bottom: 30rpx;
+			.tab-img {
+				border-radius: 25rpx;
+				margin-bottom: 10rpx;
+			}
+			.tab-title{
+				font-size: 24upx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #111;
+				margin-top: 10rpx;
+				 
+			}
+			.active{
+				color: #FF5C03;
+				
+			}
+		}
+	}
+	.menu-dots {
+		display: flex;
+		position: absolute;
+		left: 50%;
+		transform: translateX(-50%);
+		.dot {
+			width: 40rpx;
+			height: 3rpx;
+			background: #eeeeee;
+			margin-right: 10rpx;
+		}
+
+		.dot-active {
+			width: 40rpx;
+			height: 3rpx;
+			background: #2BC7B9;
+			margin-right: 10rpx;
+		}
+	}
+}
+</style>

+ 95 - 0
components/adMask/adMask.vue

@@ -0,0 +1,95 @@
+<template>
+	<view v-show="show">
+		<view class="ad-mask">
+			<slot>
+				<view class="adbox">
+					<view class="adbox-close">
+						<image src="@/static/images/ad/close_icon.png" @click="close"></image>
+					</view>
+					<image class="adbox-bg" v-show="imgType==0" src="@/static/images/ad/tc_kcc_bg.png" mode="aspectFill"></image>
+					<image class="adbox-bg" v-show="imgType==1" src="@/static/images/ad/tc_kzb_bg.png" mode="aspectFill"></image>
+					<image class="adbtn" src="@/static/images/ad/adbtn.gif"></image>
+					<image class="pointer" src="@/static/images/ad/pointer.gif"></image>
+				</view>
+			</slot>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			show: {
+				type: Boolean,
+				default: false
+			},
+			imgType: {
+				type: [String,Number],
+				default: 0
+			},
+		},
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			close() {
+				this.$emit("close");
+				this.show=false;
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.ad-mask {
+		width: 100vw;
+		height: 100vh;
+		background-color: rgba(0,0,0,0.6);
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+		@include u-flex(column, center, center);
+		.adbox {
+			width: 620rpx;
+			position: relative;
+			@include u-flex(column, center, center);
+			&-close{
+				width: 100%;
+				margin-bottom: 74rpx;
+				@include u-flex(row, center, flex-end);
+				image {
+					width: 64rpx;
+					height: 64rpx;
+				}
+			}
+			&-bg {
+				width: 580rpx;
+				height: 620rpx;
+			}
+		}
+		.adbtn{
+			width: 412rpx;
+			height: 104rpx;
+			position: absolute;
+			bottom: 80rpx;
+			left: 50%;
+			transform: translate(-50%,0);
+		}
+		.pointer {
+			width: 180rpx;
+			height: 194rpx;
+			position: absolute;
+			bottom: -52rpx;
+			right: -42rpx;
+		}
+	}
+</style>

+ 177 - 0
components/choosePatient/choosePatient.vue

@@ -0,0 +1,177 @@
+<template>
+	<view class="patient-container">
+		<view class="patient-box">
+			<view class="patient-head">
+				<view class="patient-title">选择就诊人</view>
+				<view class="patient-title x-f addbtn" style="color: #fff;" @click="addPatient()"><uni-icons type="plusempty" size="36rpx" color="#fff"></uni-icons>添加</view>
+			</view>
+			<scroll-view scroll-x :scroll-into-view="scrollIntoView" :scroll-with-animation="true" class="patient-list" v-if="patientList&&patientList.length>0">
+				<view :id="'patient_'+i" :class="current == i ? 'patient-item patient-active':'patient-item'" v-for="(item,i) in patientList" :key="item.patientId" @click="handlePatient(item,i)">
+					<view style="display: flex;flex-direction: column;align-items: flex-start;justify-content: center;flex:1;overflow: hidden;">
+						<view class="patient-name textOne">{{item.patientName}}</view>
+						<view class="patient-info">
+							<text class="text" v-if="item.sex==1">男</text>
+							<text class="text" v-if="item.sex==2">女</text>
+							<text class="text">{{$getAge(item.birthday)}}岁</text>
+						</view>
+						<uni-icons v-show="current == i" class="checkmarkempty" type="checkmarkempty" size="28rpx" color="#fff"></uni-icons>
+					</view>
+				</view>
+				<view :id="'patient_'+patientList.length" class="patient-item"  @click="addPatient()">
+					<view class="additem">
+						<uni-icons type="plusempty" size="36rpx" color="#FF5C03" style="font-weight: bold;"></uni-icons>
+						<view class="patient-name" style="color: #ff5c03;margin-bottom: 0;margin-top: 8rpx;">添加</view>
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getPatientList} from '@/api/patient'
+	export default {
+		props: ['patient'],
+		data() {
+			return {
+				current: 0,
+				scrollIntoView: 'patient_0',
+				patientList: [],
+			}
+		},
+		methods: {
+			getPatientList(){
+				uni.showLoading({
+					title:"正在加载中"
+				})
+				getPatientList().then(res => {
+						uni.hideLoading()
+						if(res.code==200){
+							this.patientList=res.data;
+							if(this.patient&&this.patient.patientId) {
+								const index = this.patientList.findIndex(item=>item.patientId == this.patient.patientId)
+								this.current = index > -1 ? index : 0
+							} else {
+								this.current = 0
+							}
+							const patient = this.patientList&&this.patientList.length> 0 ? this.patientList[this.current] : null
+							this.scrollIntoView = 'patient_'+ this.current
+							uni.$emit('refreshOrderPatient',patient)
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: "请求失败",
+							});
+						}
+					},
+					rej => {}
+				);
+			},
+			addPatient() {
+				this.$emit('addPatient')
+			},
+			handlePatient(item,i) {
+				const patient = this.patientList&&this.patientList.length> 0 ? this.patientList[i] : null
+				this.current = i
+				this.scrollIntoView = 'patient_'+ i
+				uni.$emit('refreshOrderPatient',patient)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.additem {
+		text-align: center;
+		color: #ff5c03 !important;
+		@include u-flex(column, center, center);
+		height: 100%;
+	}
+	.addbtn {
+		background-color: #FF5C03;
+		padding: 5rpx 10rpx;
+		box-sizing: border-box;
+		border-radius: 10rpx;
+	}
+	.patient{
+		&-container {
+			padding: 15rpx;
+		}
+		&-box {
+			padding: 30rpx 24rpx;
+			box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
+			background-color: #fff;
+			border-radius: 15rpx;
+		}
+		&-head {
+			@include u-flex(row, center, space-between);
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			color: #222;
+		}
+		&-title {
+			font-size: 32rpx;
+			font-weight: bold;
+		}
+		&-list {
+			margin-top: 20rpx;
+			white-space: nowrap;
+			width: 100%;
+		}
+		&-item {
+			width: 200rpx;
+			margin-right: 16rpx;
+			display: inline-block;
+			box-sizing: border-box;
+			padding: 10rpx 16rpx;
+			border-radius: 12rpx;
+			border: 1px solid #eee;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			color: #999;
+			position: relative;
+		}
+		&-active{
+			border: 1px solid #FF5C03;
+			&::after {
+				position: absolute;
+				bottom: 0;
+				right: 0;
+				content: "";
+				height: 0;
+				width: 0;
+				border-top: 24rpx solid transparent;
+				border-right: 24rpx solid #FF5C03;
+				border-bottom: 24rpx solid #FF5C03;
+				border-left: 24rpx solid transparent;
+				border-radius: 0 0 12rpx 0;
+			}
+		}
+		&-name {
+			width: 100%;
+			overflow: hidden;
+			margin-bottom: 10rpx;
+			font-size: 30rpx;
+			font-weight: bold;
+			color: #222;
+		}
+		&-info {
+			@include u-flex(row, center, flex-start);
+			.text{
+				margin-right: 19upx;
+			}
+		}
+	}
+	.checkmarkempty {
+		position: absolute;
+		bottom: 0;
+		right: 0;
+		z-index: 2;
+	}
+</style>

+ 158 - 0
components/elise-audio/elise-audio.vue

@@ -0,0 +1,158 @@
+<template>
+	<view v-if='url' class='flex audio' :class="{active:status}" :style="{width:getWith(durationS),  background:audioColor}"  @click='play(audioId)' >
+		<view class='mr-3' >
+			<view class="wifi-symbol " :class="status?'active':''">
+            <view class="wifi-circle first"></view>
+            <view class="wifi-circle second"></view>
+            <view class="wifi-circle third"></view>
+        </view>
+		</view>
+		<view class='ml-3'>{{durationS ? durationS + 's' : ''}}</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				context: null,
+				duration: 100,
+				status: false,
+			}
+		},
+		props: {
+			url: {
+        type:String,
+        default:''
+      },
+			audioColor: {
+				type: String,
+				default: '#5ba5ef'
+			},
+      durationS:[String,Number],
+			audioId: [String,Number]
+		},
+		created() {
+			this.context = uni.createInnerAudioContext();
+			this.context.src = this.url;
+			this.onEnded();
+			uni.$on('stop',(id)=> {
+				if(id && id != this.audioId) {
+					this.context.stop();
+					this.status = false;
+				} else if(!id){
+					this.context.stop();
+					this.status = false;
+				}
+			})
+		},
+		methods: {
+			play(id) { //点击播放
+				if(this.status) {
+					this.context.pause();
+					this.status = !this.status;
+				}else {
+					uni.$emit('stop',id)
+					this.context.play()
+					this.status = !this.status;
+				}
+			},
+			onEnded() { //播放结束
+				this.context.onEnded(()=> {
+					this.status = false;
+				})
+			},
+      getWith(s){
+        if(s){
+          const w = s *10 + 150
+           return  w > 520?'520rpx' :(s *10 + 150)+'rpx'
+        }
+      },
+		}
+	}
+</script>
+
+<style  lang="scss">
+	.audio {
+		background: #68d7bb;
+    height: 58rpx;
+    border-radius: 50rpx;
+    width: 200rpx;
+    align-items: center;
+		// padding: 20rpx;
+    &.active {
+		  opacity: 0.8;
+    }
+    
+	}
+	.flex {
+		display: flex;
+		flex-direction: row;
+    justify-content: space-between;
+	}
+	.flex-1 {
+		flex: 1;
+	}
+	.ml-3 {
+		margin-right: 30rpx;
+    color: #fff;
+	}
+	.mr-3 {
+		margin-left: 30rpx;
+	}
+  .wifi-symbol {
+      width: 50rpx;
+      height: 50rpx;
+      box-sizing: border-box;
+      overflow: hidden;
+      transform: rotate(135deg) translate3d(0, 0, 0);
+      -webkit-transform: rotate(135deg) translate3d(0, 0, 0);
+      backface-visibility: hidden;
+      -webkit-backface-visibility: hidden;
+  }
+  .wifi-circle {
+      border: 5rpx solid #fff;
+      border-radius: 50%;
+      position: absolute;
+  }
+  .first {
+      width: 5rpx;
+      height: 5rpx;
+      background: #fff;
+      top: 45rpx;
+      left: 45rpx;
+  }
+  .second {
+      width: 25rpx;
+      height: 25rpx;
+      top: 35rpx;
+      left: 35rpx;
+  }
+  .third {
+      width: 40rpx;
+      height: 40rpx;
+      top: 25rpx;
+      left: 25rpx;
+  }
+  .active {
+     .second {
+        animation: fadeInOut 1s infinite 0.2s;
+       -webkit-animation: fadeInOut 1s infinite 0.2s;
+    }
+
+    .third {
+        animation: fadeInOut 1s infinite 0.4s;
+        -webkit-animation: fadeInOut 1s infinite 0.4s;
+    }
+  }
+
+  @keyframes fadeInOut {
+      0% {
+          opacity: 0; /*初始状态 透明度为0*/
+      }
+      100% {
+          opacity: 1; /*结尾状态 透明度为1*/
+      }
+  }
+
+</style>

+ 40 - 0
components/elise-audio/redme.md

@@ -0,0 +1,40 @@
+## 参数
+
+| url      | audioColor | durationS       | audioId         |                                               |
+| -------- | ----------- | -------------- | -------------- | ----------------------------------------------------- |
+| 音频链接 | 背景颜色  | 音频长度 | 组件id | 
+
+## 使用方法
+
+```javascript
+//html
+<template>
+  <elise-audio
+    audioId="audio1"
+    :url="url"
+    audioColor="#68d7bb"
+    :durationS="5"
+  ></elise-audio>
+</template>
+
+//js
+<script>
+import eliseAudio from '@/components/elise-audio/elise-audio.vue'
+export default {
+    components: {eliseAudio},
+    data() {
+        return{
+            url: ''
+        }
+    },
+    methods: {
+      //暂停播放-
+      onPauseAudio(){
+        uni.$emit('stop')
+      }
+    },
+} 
+</script>
+
+```
+

+ 66 - 0
components/es-course-item/es-course-item.vue

@@ -0,0 +1,66 @@
+<template>
+	<view class="video-item es-mt-20  es-pb-10" @tap="goToInfo(data)">
+		<view class="es-block es-br-10 es-oh">
+			<view class="" style="padding-top: 55.87%;"></view>
+			<view class="es-icon-auto">
+				<image :src="data.imgUrl"  mode="aspectFill"></image>
+				<view class="play es es-ac es-pc">
+					<view class="es-icon-58 es-icon-play"></view>
+				</view>
+				<view class="vip es-w-44 es-h-20 es es-ac es-pc es-fw es-fs-16">VIP</view>
+			</view>
+		</view>
+		<view class="es-omit es-fs-26 es-mt-10 title ellipsis2">{{data.courseName}}</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"es-course-item",
+		props: {
+			
+			data: {
+				type: Object,
+				default() {
+					return { };
+				}
+			},
+			
+		},
+		data() {
+			return {
+				
+			};
+		},
+		methods:{
+			goToInfo(item){
+			    this.$navTo('./info?courseId='+item.courseId);	
+			},
+		}
+	}
+</script>
+
+<style>
+	.video-item{
+		width:330rpx;
+	}
+	.video-item .play{
+		width: 100%;
+		height: 100%;
+		position: absolute;
+		left:0;top:0;
+		z-index: 2;
+	}
+	.vip{
+		background: linear-gradient(90deg, #EBC19A 0%, #FFEEDD 100%);
+		border-radius: 5rpx;
+		position: absolute;
+		right:14rpx;
+		top:8rpx;
+	}
+	
+	.title{
+		/* min-height: 44px; */
+	}
+	
+</style>

+ 125 - 0
components/es-integral-sign/es-integral-sign.vue

@@ -0,0 +1,125 @@
+<template>
+	<view class="es-fw-500">
+
+		<!-- 第一行图标 -->
+		<view class="es es-oh es-pt-15 es-pb-10">
+			<block v-for="v,i in integralData.list">
+				<view class="es es-ac es-pc" :style="'width:'+(100/integralData.list.length)+'%'">
+					<view class="es-icon-60" :class="'es-icon-integral-node-'+v.icon"></view>
+				</view>
+			</block>
+		</view>
+
+		<!-- 第二行进度 -->
+		<view class="es es-oh es-pt-15 es-pb-10">
+			<block v-for="v,i in integralData.list">
+				<view class="es es-ac es-pc" :style="'width:'+(100/integralData.list.length)+'%'">
+					
+					<view class="es-icon-13 es-bc es-br point"></view>
+					
+					<view class="line1 es">
+						<view class="es-h-8 es-wp-50" :class="i<integralData.index?'es-bc':'es-bc-tint05'" v-if="i!=0"></view>
+						<view class="es-f1"></view>
+						<view class="es-h-8 es-wp-50" :class="i+1<integralData.index?'es-bc':'es-bc-tint05'" v-if="i!=integralData.list.length-1"></view>
+					</view>
+					
+					<view class="point2 es es-ac es-pc">
+						<view class="es-icon-20 es-br es-bc" v-if="integralData.index>i"></view>
+					</view>					
+				</view>
+			</block>
+		</view>
+		
+		<view class="es es-oh es-pt-15 es-pb-10">
+			<block v-for="v,i in integralData.list">
+				<view class="es es-ac es-pc es es-ver" :style="'width:'+(100/integralData.list.length)+'%'">
+					<view class="es-fs-20 es-omit" :class="integralData.index>=i?'es-c':'es-c-99'">{{v.title}}</view>
+					<view class="es-fs-22 es-omit" :class="integralData.index>=i?'es-c':''">{{v.remark}}</view>
+				</view>
+			</block>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "es-integral-sign",
+		data() {
+			return {
+				integralData: {
+					index: 2, //当前选中第几个,从1开始
+					list: [{
+							icon: 2, //1-显示芳华币  2-显示勾  3-显示红包
+							title: '+10芳华币',
+							remark: '第一天',
+						},
+						{
+							icon: 2, //1-显示芳华币  2-显示勾  3-显示红包
+							title: '+10芳华币',
+							remark: '第二天',
+						},
+						{
+							icon: 1, //1-显示芳华币  2-显示勾  3-显示红包
+							title: '+30芳华币',
+							remark: '第三天',
+						},
+						{
+							icon: 1, //1-显示芳华币  2-显示勾  3-显示红包
+							title: '+50芳华币',
+							remark: '第四天',
+						},
+						{
+							icon: 1, //1-显示芳华币  2-显示勾  3-显示红包
+							title: '+50芳华币',
+							remark: '第五天',
+						},
+						{
+							icon: 1, //1-显示芳华币  2-显示勾  3-显示红包
+							title: '+60芳华币',
+							remark: '第六天',
+						},
+						{
+							icon: 3, //1-显示芳华币  2-显示勾  3-显示红包
+							title: '芳华币礼包',
+							remark: '签到完成',
+						},
+
+					]
+				},
+			};
+		}
+	}
+</script>
+
+<style>
+	.es-icon-integral-node-1 {
+		background-image: url(/static/images/other/integral/node-1.png);
+	}
+
+	.es-icon-integral-node-2 {
+		background-image: url(/static/images/other/integral/node-2.png);
+	}
+
+	.es-icon-integral-node-3 {
+		background-image: url(/static/images/other/integral/node-3.png);
+	}
+	.line1{
+		position: absolute;
+		width: 100%;
+		height: 8rpx;
+		z-index: 1;
+	}
+	
+	.point{
+		z-index: 2;
+	}
+	
+	.point2{
+		position: absolute;
+		width: 100%;
+		height: 100%;
+		z-index: 3;
+	}
+	
+</style>

+ 20 - 0
components/es-integral/es-integral.vue

@@ -0,0 +1,20 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"es-integral",
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 194 - 0
components/es-living-pop/es-living-pop.vue

@@ -0,0 +1,194 @@
+<template>
+	<view style="width: 100%;">
+
+		<!-- #ifndef APP-PLUS -->
+		<view class="top es es-ac es-h-88" :style="'top:'+top+'px'">
+			<image class="es-w-18 es-h-31 es-mr-20 es-ml-30" src="/static/images/other/ret-white.png"></image>
+			<view class="name-bg es-brc es-h-60 es es-ac es-br">
+				<view class="es-icon-57 es-br es-oh es-bc-red es es-ac es-pc">
+					<image class="es-icon-57" src="/static/logo.png"></image>
+				</view>
+				<view class="es-c-white es-fw-500 es-fs-28 es-ml-11 es-mr-30" style="max-width: 6em;"><text
+						class="es-c-white">名字</text></view>
+				<image class="es-icon-27 es-mr-21" src="/static/images/other/video/add.png"></image>
+			</view>
+		</view>
+
+		<view class="top es es-ac es-h-88" :style="'top:'+top+'px'" style="margin-top: 88rpx;">
+			<view class="es-f1"></view>
+			<view class="es">
+				<image class="es-br es-icon-57 es-ml-10" src="/static/logo.png"></image>
+				<image class="es-br es-icon-57 es-ml-10" src="/static/logo.png"></image>
+				<image class="es-br es-icon-57 es-ml-10" src="/static/logo.png"></image>
+			</view>
+			<view class="es-w-80"></view>
+			<view class="person es es-ac">
+				<view class="num es-fs-28 es-fw-500 es es-ac es-pc es-c-white">188人</view>
+			</view>
+		</view>
+		<!-- #endif -->
+
+		<view class="right" :style="'padding-bottom: '+bottom+'px;'">
+			<view class="es-w-95 es es-ver es-ac es-pc es-mt-25">
+				<view class="es-icon-95 es es-ac es-pc">
+					<image class="es-icon-95 icon-bg" src="/static/images/other/video/like.png"></image>
+					<image class="es-icon-42" src="/static/images/other/video/like2.png"></image>
+				</view>
+				<view class="es-mt-10">
+					<text class="es-c-white es-fw-500 es-fs-24">1.8万</text>
+				</view>
+			</view>
+			<view class="es-w-95 es es-ver es-ac es-pc es-mt-25">
+				<view class="es-icon-95 es es-ac es-pc">
+					<image class="es-icon-95 icon-bg" src="/static/images/other/video/collect.png"></image>
+					<image class="es-icon-42" src="/static/images/other/video/collect2.png"></image>
+				</view>
+				<view class="es-mt-10">
+					<text class="es-c-white es-fw-500 es-fs-24">1.8万</text>
+				</view>
+			</view>
+			<view class="es-w-95 es es-ver es-ac es-pc es-mt-25">
+				<view class="es-icon-95 es es-ac es-pc">
+					<image class="es-icon-95 icon-bg" src="/static/images/other/video/star.png"></image>
+					<image class="es-icon-42" src="/static/images/other/video/star2.png"></image>
+				</view>
+				<view class="es-mt-10">
+					<text class="es-c-white es-fw-500 es-fs-24">1.8万</text>
+				</view>
+			</view>
+			<view class="es-w-95 es es-ver es-ac es-pc es-mt-25">
+				<view class="es-icon-95 es es-ac es-pc">
+					<image class="es-icon-95 icon-bg" src="/static/images/other/video/point.png"></image>
+					<image class="es-w-52 es-h-14" src="/static/images/other/video/point2.png"></image>
+				</view>
+				<view class="es-mt-10">
+					<text class="es-c-white es-fw-500 es-fs-24">{{w}}</text>
+				</view>
+			</view>
+			<view class="es-h-100"></view>
+			<view class="es-h-100"></view>
+		</view>
+
+		<view class="bottom">
+			<view class="es es-ac">
+				<view class="es-br ipt es es-ac" :style="'width:'+w+'px'">
+					<text class="es-fs-24 es-fw-500 es-ml-31" style="color: rgba(255,255,255,0.15);">说点什么...</text>
+					<view class="es-h-74 es es-ac es-pc" style="position: absolute;right: 31rpx;top:0;">
+						<image src="/static/images/other/video/emotion.png" class="es-icon-42"></image>
+					</view>
+				</view>
+				<view class="es-w-95 es-h-95 es es-ver es-ac es-pc es-ml-37">
+					<view class="es-icon-74 es es-ac es-pc">
+						<image class="es-icon-74 icon-bg" src="/static/images/other/video/car.png"></image>
+						<image class="es-icon-38" src="/static/images/other/video/car2.png"></image>
+					</view>
+				</view>
+			</view>
+			<view class="" :style="'height:'+bottom+'px'"></view>
+		</view>
+		<view class="es-w-100" id="block"></view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "es-living-pop",
+		data() {
+			return {
+				top: 0,
+				bottom: 40,
+				w: 0,
+			};
+		},
+		created: function() {
+			
+			uni.getSystemInfo({
+				success: (res) => {
+					this.top = res.safeArea.top;
+				}
+			});
+
+			setTimeout(e => {
+				
+				// let px = r1.width / 100; //1r像素占用宽度
+				let px = uni.getSystemInfoSync().screenWidth/750;
+				this.w = parseInt(uni.getSystemInfoSync().screenWidth - px * (30 + 30 + 95 + 37));
+				
+			}, 50)
+
+
+		}
+	}
+</script>
+
+<style>
+	.top{
+		position: absolute;
+		left:0;
+		top:0;
+		width:100%;
+	}
+	
+	.right,.bottom {
+		position: absolute;
+		bottom: 80rpx;
+		/* padding-bottom: env(safe-area-inset-bottom); */
+	}
+
+	.right {
+		right: 30rpx;
+	}
+
+	.icon-bg {
+		position: absolute;
+		left: 0;
+		top: 0;
+	}
+
+	.bottom {
+		width: 100%;
+		left: 30rpx;
+	}
+
+	.bottom .ipt {
+		height: 74rpx;
+		border-radius: 100rpx;
+		background-color: rgba(0,0,0,0.5);
+	}
+
+
+	.person {
+		position: absolute;
+		right: 0;
+		height: 88rpx;
+	}
+	
+	.person .num {
+		background-color: rgba(255, 100, 3, 1);
+		height: 58rpx;
+		border-radius: 100rpx 0 0 100rpx;
+		padding: 0 20rpx;
+	} 
+	
+	.es-icon-42{
+		width: 42rpx !important;
+		height: 42rpx !important;
+	}
+	.es-icon-38{
+		width: 38rpx !important;
+		height: 38rpx !important;
+	}
+	
+	.es-w-52{
+		width: 52rpx !important;
+	}
+	.es-h-14{
+		height: 14rpx !important;
+	}
+	
+	image:nth-child(2){
+		z-index: 1;
+	}
+	
+</style>

+ 106 - 0
components/es-nav-bg-black/es-nav-bg-black.vue

@@ -0,0 +1,106 @@
+<template>
+	<view class="flex-container"   :style="'height:'+h+'px'"  >
+		<view class="es-fix-top" :style="(bg?'background: inherit;':'')+'background:'+top_color" >
+			<es-top></es-top>
+			<es-nav-title-base :title="title" :left="left" :right="right"></es-nav-title-base>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"es-nav-bg-black",
+		data() {
+			return {
+				top_color: '#FFFFFF',
+				h:44,
+			};
+		},
+		props: [
+			'title', 'bg', 'left', 'mode','right','rightCon'
+		],
+		created: function() {
+		     let data = getApp().globalData;
+		     if(data.__czy_h)
+		     {
+		     	this.h = data.__czy_h;
+		     }else{
+		     	uni.getSystemInfo({
+		     		success: (res) => {
+		     			let top = res.safeArea.top;
+		     			data.__czy_h = this.h = top+44;
+		     		}
+		     	});
+		     }
+		},
+		methods: {
+			close: function() {
+				const pages = getCurrentPages();
+				const currentPageIndex = pages.length - 1; // 当前页面的索引
+				const targetPageIndex = 1; // 假设要返回到首页(页面 A)
+				// 计算需要返回的层数
+				const delta = currentPageIndex - targetPageIndex;
+				uni.navigateBack({
+					delta: delta,
+					animationType: 'pop-out',
+					animationDuration: 200
+				});
+			},
+			// scrollBody:function(e){
+			// 	let top = e.scrollTop / this.h;
+			// 	this.top_color = 'rgba(255,92,3, ' + top + ')';
+			// }
+		}
+			
+	}
+</script>
+
+
+
+<style>
+	.flex-container {
+	   display: flex;
+	   flex-direction: column;
+	   min-height: 88rpx;
+	}
+	.es-fix-top {
+		background-size: 100% auto;
+		background-repeat: no-repeat;
+	}
+
+	.es-h-88 {
+		height: 44px;
+	}
+
+	.es-fix-top {
+		font-weight: 620;
+		font-family: PingFang SC;
+		color: white;
+	}
+
+	.top-img {
+		width: 100%;
+		height: 500rpx;
+		position: absolute;
+	}
+
+	.top-close {
+		left: 30rpx;
+		position: absolute;
+		bottom: 0rpx;
+		width: 100rpx;
+		height: 80rpx;
+	}
+	
+	.navTitle{
+		left: calc(50% - 80rpx);
+		top:10rpx;
+		position: absolute;
+		width: 80rpx;
+		height: 70rpx;
+		line-height: 70rpx;
+		color: #fff;
+		font-size: 30rpx;
+		font-weight: 500;
+	}
+</style>

+ 70 - 0
components/es-nav-bg/es-nav-bg.vue

@@ -0,0 +1,70 @@
+<template>
+	<view>
+		<!-- <view class="bg-img" style="position: absolute;top:0;width: 100%;height: 600rpx;background-image: url(/static/image/home/home_top_bg.png)"></view> -->
+		<image src="/static/image/home/home_top_bg.png" style="width: 100%;position: absolute;top:0;left:0;z-index: 0;" mode="widthFix"></image>
+		<block v-if="title">
+			<view class="es-fix-top" :class="css">
+				<view class="" :style="top_color?('background:'+top_color):''" id="div-top">
+					<es-top></es-top>
+					<es-nav-title-base :title="title"></es-nav-title-base>
+				</view>
+			</view>
+			<es-top></es-top>
+			<view class="es-h-88"></view>
+		</block>
+		<block v-else>
+			<view class="es-fix-top" :class="css">
+				<view class="" :style="top_color?('background:'+top_color):''" id="div-top">
+					<es-top></es-top>
+					<slot></slot>
+				</view>
+			</view>
+		</block>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "es-nav-bg",
+		data() {
+			return {
+				top_color: 'rgba(0,0,0,0)',
+				h: 64,
+			};
+		},
+		props: [
+			'title', 'css'
+		],
+		created: function() {
+			if (!this.title) {
+				setTimeout(e => {
+					try {
+						uni.createSelectorQuery().select('#div-top').boundingClientRect(r2 => {
+							if (r2) {
+								this.h = r2.height;
+							}
+						}).exec();
+					} catch (e) {
+						//TODO handle the exception
+					}
+				}, 50)
+			} else {
+
+			}
+		},
+		methods: {
+			scrollBody: function(e) {
+				let top = e.scrollTop / this.h;
+				this.top_color = 'rgba(255,92,3, ' + top + ')';
+			}
+		}
+	}
+</script>
+
+<style>
+	.bg-img {
+		/* background-image: url(@/static/image/home/home_top_bg.png); */
+		background-size: 100% auto;
+		background-repeat: no-repeat;
+	}
+</style>

+ 61 - 0
components/es-nav-title-base/es-nav-title-base.vue

@@ -0,0 +1,61 @@
+<template>
+	<view>
+		<view class="es-h-88 es-pl-10 es es-ac es-bc-white">
+			<view class="es-w-100 es-h-88 es es-ac">
+				<view v-if="left!='none'" class="es-icon-ret-black" @tap="close"></view>
+			</view>
+			<view class="es-f1 es es-ac es-pc  view-title es-c-00 es-omit">{{title}}</view>
+			<view class="es-w-100 es-h-88 es x-c es-ae">
+				<view class="es-c-white es-fs-28 es-fw-500 " v-if="right!='none'" @tap="rightClick">{{right}}</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"es-nav-title-base",
+		data() {
+			return {
+				
+			};
+		},
+		props:[
+			'title','left','right'
+		],
+		methods:{
+			close:function(){
+				uni.navigateBack({
+					animationType: 'pop-out',
+					animationDuration: 200
+				});
+			},
+			rightClick(){
+				
+			},
+		}
+	}
+</script>
+
+<style>
+.view-title{
+	font-weight:500;
+	font-family: PingFang SC;
+	color:#333;
+	font-weight: 500;
+	font-size: 34rpx;
+}
+.es-icon-ret-white1{
+	background-image: url("../../static/images/other/ret-white.png");
+	width: 18rpx;
+	height: 31rpx;
+	background-size: 100% 100%;
+}
+
+.es-icon-ret-black{
+	background-image: url("../../static/image/black_back.png");
+	width: 54rpx;
+	height: 54rpx;
+	background-size: 100% 100%;
+}
+</style>

+ 143 - 0
components/es-nav-title/es-nav-title.vue

@@ -0,0 +1,143 @@
+<template>
+	<view>
+		<block v-if="mode=='cover'">
+			<cover-view class="es-fix-top">
+				<cover-view class="top-img"></cover-view>
+			    <cover-view class="top-close flex x-ac" >
+					<cover-image @tap="close" class="es-w-18 es-h-31"  src="/static/images/other/ret-white.png" ></cover-image>
+					<cover-view @tap="close"  class="es-fw-500 es-c-white es-fs-30 ">返回</cover-view>
+				</cover-view>
+				<cover-view  class="es-h-88"></cover-view>
+				<es-top></es-top>
+			</cover-view>
+		</block>
+		<block v-else-if="mode=='fav'">
+			<cover-view class="es-fix-top" style="position: absolute;">
+				<!-- <cover-image class="top-img" src="/static/image/home/home_top_bg.png"></cover-image> -->
+				<cover-view class="top-img"></cover-view>
+				<cover-view class="top-close flex x-ac" >
+					<cover-image @tap="close" class="es-w-18 es-h-31"  src="/static/images/other/ret-white.png" ></cover-image>
+					<cover-view @tap="close"  class="es-fw-500 es-c-white es-fs-30 ">返回</cover-view>
+				</cover-view>
+				<cover-view  class="es-h-88" ></cover-view>
+				<es-top></es-top>
+			</cover-view>
+		</block>
+		
+		<block v-else>
+			<view class="es-fix-top">
+				<cover-view class="top-img1" ></cover-view>
+				<es-top></es-top>
+				<es-nav-title-base :title="title" :left="left"></es-nav-title-base>
+			</view>
+		</block>
+		
+		<block v-if="bg!='none'">
+			<es-top></es-top>
+			<view class="es-h-88"></view>
+		</block>
+		
+
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "es-nav-title",
+		data() {
+			return {
+				top_color: 'rgba(0,0,0,0)',
+				h:44,
+			};
+		},
+		props: [
+			'title', 'bg', 'left', 'mode'
+		],
+		created: function() {
+
+		},
+		methods: {
+			close: function() {
+				const pages = getCurrentPages();
+				const currentPageIndex = pages.length - 1; // 当前页面的索引
+				const targetPageIndex = 1; // 假设要返回到首页(页面 A)
+				// 计算需要返回的层数
+				const delta = currentPageIndex - targetPageIndex;
+				console.log("qxj dalta:"+delta);
+				uni.navigateBack({
+					delta: delta,
+					animationType: 'pop-out',
+					animationDuration: 200
+				});
+			},
+			scrollBody:function(e){
+				let top = e.scrollTop / this.h;
+				this.top_color = 'rgba(255,92,3, ' + top + ')';
+			}
+		}
+	
+	
+	}
+</script>
+
+
+<style>
+	.es-fix-top {
+		font-weight: 620;
+		font-family: PingFang SC;
+		color: white;
+		
+		z-index: 1000;
+		position: fixed;
+		
+		/* background-size: 100% auto;
+		background-repeat: no-repeat; */
+	}
+	.es-h-88 {
+		height: 44px;
+	}
+
+	.top-img {
+		width: 100%;
+		height: 500rpx;
+		position: absolute;
+		background: #FF5C03;
+	}
+	
+	.top-img1 {
+	    width:100%;
+		height: var(--status-bar-height); 
+		position: absolute;
+		overflow: hidden;
+		background: #fff;
+	}
+
+	.top-close {
+		left: 30rpx;
+		position: absolute;
+		bottom: 0rpx;
+		width: 100rpx;
+		height: 80rpx;
+	}
+	
+	.title-box{
+		left: 0rpx;
+		position: absolute;
+		top: 0rpx;
+		right: 130rpx;
+		height: 80rpx;
+	}
+	
+	
+	.navTitle{
+		left: calc(50% - 80rpx);
+		top:10rpx;
+		position: absolute;
+		width: 80rpx;
+		height: 70rpx;
+		line-height: 70rpx;
+		color: #fff;
+		font-size: 30rpx;
+		font-weight: 500;
+	}
+</style>

+ 20 - 0
components/es-nav/es-nav.vue

@@ -0,0 +1,20 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"es-nav",
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 43 - 0
components/es-swiper-item/es-swiper-item.vue

@@ -0,0 +1,43 @@
+<template>
+	<view class="swiper-item-video">
+		
+<!-- 		<video src="https://es.admin.506720281.com/mp4/1.mp4"
+			:controls="false"
+			:show-center-play-btn="false"
+		></video>
+		
+		<block v-if="show">
+		<block v-if="type == 1">
+			<es-video-pop></es-video-pop>
+		</block>
+		<block v-else>
+			<es-living-pop></es-living-pop>
+		</block>
+		</block>
+		 -->
+		
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"es-swiper-item",
+		data() {
+			return {
+				
+			};
+		},
+		props:[
+			'type','show'
+		]
+	}
+</script>
+
+<style>
+	.swiper-item-video,.swiper-item-video video{
+		width: 100%;
+		height: 100%;
+	}
+
+</style>

+ 34 - 0
components/es-top/es-top.vue

@@ -0,0 +1,34 @@
+<template>
+	<view :style="'height:'+top+'px'" >
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"es-top",
+		data() {
+			return {
+				top:0,
+			};
+		},
+		created:function(){
+			let data = getApp().globalData;
+			if(data.__czy_top)
+			{
+				this.top = data.__czy_top;
+			}else{
+				uni.getSystemInfo({
+					success: (res) => {
+						let top = res.safeArea.top;
+						data.__czy_top = this.top = top;
+					}
+				});
+			}
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 302 - 0
components/es-video-pop/es-video-pop.vue

@@ -0,0 +1,302 @@
+<template>
+	<view>
+			<view class="right es-c-white">
+				<view class="item es es-ac es-pc es-mt-33">
+					<view class="es-icon-90 es-br">
+						<image class="es-icon-90" :src="item.headImg"></image>
+					</view>
+				</view>
+				<view class="item es es-ver es-ac es-pc es-mt-33" @tap="doLike(item,index)">
+					<view class="es-icon-76">
+						<image class="es-icon-76" :src="item.like==1?'/static/images/other/video/zan1_on.png':'/static/images/other/video/zan1.png'"></image>
+					</view>
+					<view><text class="es-c-white es-fs-22 es-fw-500">{{item.likeNum}}</text></view>
+				</view>
+				<view class="item es es-ver es-ac es-pc es-mt-33"  @tap="openComment(item)">
+					<view class="es-icon-76">
+						<image class="es-icon-76" src="@/static/images/other/video/comment1.png"></image>
+					</view>
+					<view><text class="es-c-white es-fs-22 es-fw-500">{{item.smsNum}}</text></view>
+				</view>
+				
+				<view class="item es es-ver es-ac es-pc es-mt-33" @tap="doFavorite(item,index)">
+					<view class="es-icon-76">
+						<image class="es-icon-76" :src="item.favorite==1?'/static/images/other/video/fav1_on.png':'/static/images/other/video/fav1.png'" ></image>
+					</view>
+					<view><text class="es-c-white es-fs-22 es-fw-500">{{item.favoriteNum}}</text></view>
+				</view>
+				
+				<view class="item es es-ver es-ac es-pc es-mt-33" @tap="doShare(item)">
+					<view class="es-icon-72">
+						<image class="es-icon-72" src="@/static/images/other/video/share1.png"></image>
+					</view>
+					<view><text class="es-c-white es-fs-22 es-fw-500">{{item.shares}}</text></view>
+				</view>
+				
+				<view class="item es-ver es es-ac es-pc es-mt-33">
+					<view class="es-br">
+						<text class="es-c-white es-fs-34">{{item.uploadType}}</text>
+					</view>
+				</view>
+			
+			</view>
+
+			<view class="left"  v-if="item.isShowGoods && item.productId!=null" >
+				<view class="es-h-74 es es-ac">
+					<view class="es-f1 es es-ac" id="w">					
+						<view class="bg">
+							<image src="/static/images/other/video/bg.png" :style="{width:w+'px'}" style="height: 74rpx;" ></image>
+						</view>
+						
+						<!-- <view class="es-icon-77" style="z-index: 1;">
+							<image class="es-icon-77" src="/static/images/other/video/rank.png"></image>
+						</view>
+						<view class="rank-text es-fs-26 es-fw-500 es-c-white" style="z-index: 1;"><text
+								class="es-c-white es-fw-500 es-fs-26">精选热销榜·第二名</text></view>
+						<view class="es-w-30"></view> -->
+						
+					</view>
+				</view>
+				<view class="goods">
+					<view class="icon" style="width: 290rpx;height: 290rpx;">
+						<image :src="item.imgUrl" style="width: 290rpx;height: 290rpx;" class="es-br-10"></image>
+					</view>
+					<view class="es-omit es-mt-19" style="width: 290rpx;"><text class="es-fw es-fs-30">{{item.packageName}}</text></view>
+				</view>
+			</view>
+			
+			<view  class="bottom">
+				<text  class="txtTitle" :class="showExpand?'text-clamp':''" :style="defTitStyle" :id="'txtTitle'+index" :ref="'txtTitle'+index">{{index==0?'酢浆草,这种长出水晶小萝卜的植物,你有没有把它当城市绿化带的四叶草?酢浆草,这种长出水晶小萝卜的植物,你有没有把它当城市绿化带的四叶草?':item.title}}</text>
+				<text  v-if="showExpand"  class="expandBtn"  @tap="clickExpand">{{ titIsExpand?'收起':'展开' }}</text>
+			</view>
+	
+   </view>
+   
+</template>
+
+<script>
+	import { doFavorite,doLike } from '@/api/shortvideo'
+	export default {
+		name: "es-video-pop",
+		props: {
+			item: {
+				type: Object,
+				default() {
+					return { };
+				}
+			},
+			index: {
+				type: Number,
+				default: 0
+			},
+			videoId: {
+				type: Number,
+				default: 0
+			},
+		},
+		data() {
+			return {
+				w:0,
+				showExpand:false,
+				titIsExpand:false,
+				lines:2,
+				lineCount:0,
+				titOpacity:0,
+				defTitStyle:{'opacity':0}
+			};
+		},
+		created: function() {
+			// setTimeout(e => {
+			// 	uni.createSelectorQuery().select('#w').boundingClientRect(r2 => {
+			// 		this.w = r2.width;
+			// 	}).exec();
+			// }, 50)
+		},
+		mounted() {
+			let that=this;
+			uni.$on('checkTextLines', (index) => {
+				that.checkTextLines(index);
+			}); 
+		},
+		methods:{
+			doLike(item,index){
+				if(!this.$isLogin()){
+					this.$showLoginPage();
+					return;
+				}
+				doLike(item.videoId).then(res => {
+						if(res.code==200){
+							if(item.like==0){
+								item.like=1;
+								item.likeNum+=1;
+							}else{
+								item.like=0;
+								item.likeNum-=1;
+							}
+							//this.dataList[index]=item;
+							this.$forceUpdate(); // 如果你需要强制刷新,可以调用 $forceUpdate()
+						}
+					},
+					rej => {}
+				);
+			},
+			doFavorite(item,index){
+				if(!this.$isLogin()){  
+					this.$showLoginPage();
+					return;
+				}
+				doFavorite(item.videoId).then(res => {
+						if(res.code==200){
+							if(item.favorite==0){
+								item.favorite=1;
+								item.favoriteNum+=1;
+							}else{
+								item.favorite=0;
+								item.favoriteNum-=1;
+							}
+							this.dataList[index]=item;
+							this.$forceUpdate(); // 如果你需要强制刷新,可以调用 $forceUpdate()
+							
+						}
+					},
+					rej => {}
+				);
+			},
+			checkTextLines()  {
+				var system = uni.getSystemInfoSync();
+				let textWidth=system.screenWidth-uni.upx2px(150+20);
+				let fontSize=uni.upx2px(30);
+				let screenWidth=system.screenWidth;
+				let that=this;
+				let txtTitle=this.$refs["txtTitle"+this.index];
+				this.defTitStyle={'opacity':0}
+				this.showExpand=false;
+				uni.createSelectorQuery().select("#txtTitle"+this.index).boundingClientRect(rect => {
+					 console.log("qxj checkTextLines height:"+rect.height);
+					 setTimeout(e=>{
+						this.defTitStyle={'opacity':1};
+						this.showExpand=rect.height>40;
+					 },50);
+				}).exec();
+				
+			},
+			clickExpand(){
+				this.titIsExpand=!this.titIsExpand;
+				this.defTitStyle={'opacity':1,'-webkit-line-clamp':this.titIsExpand?1000:2};
+			},
+			openComment(item){
+				this.$emit("openComment",item);
+			},
+		},
+		onUnload: function() {
+			uni.$off("checkTextLines");
+		},
+		destroyed() {
+			// 注销全局配置监听
+			console.log("qxj checkTextLines  destroyed");
+			uni.$off("checkTextLines");
+		},
+		beforeDestroy() {
+		    console.log("qxj checkTextLines beforeDestroy");
+		    uni.$off('checkTextLines');
+		}
+	}
+</script>
+
+<style>
+	.right,
+	.left {
+		position: absolute;
+		bottom: 150rpx;
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+
+	.right {
+		right: 20rpx;
+	}
+
+	.right .item {
+		width: 100rpx;
+	}
+
+	.right image {
+		width: 100%;
+		height: 100%;
+		border-radius:50% ;
+	}
+
+
+	.left {
+		left: 30rpx;
+	}
+
+	.goods .icon,
+	.goods .icon image {
+		width: 290rpx;
+		height: 290rpx;
+	}
+
+	.bg {
+		/* background-image: url(/static/images/other/video/bg.png); */
+		position: absolute;
+		left: 0;
+		top: 0;
+		width: 100%;
+		height: 74rpx;
+	}
+
+	.goods {
+		width: 330rpx;
+		background-color: rgba(255, 255, 255, 0.4);
+		padding: 20rpx;
+		border-radius: 20rpx;
+		margin-top: 20rpx;
+	}
+	
+	
+	.bottom {
+		position: absolute;
+		left: 0;
+		bottom: 120rpx;
+		right: 150rpx;
+		padding-bottom: env(safe-area-inset-bottom);
+		
+	}
+	
+	.txtTitle{  
+		line-height: 20px;
+		/*  超出两行显示省略号,如果是text标签需要设置为1  */ 
+		color: #fff;
+		font-weight: 500;
+		font-size: 30rpx;
+		margin-left:20rpx;
+		background: rgba(0, 0, 0, 0.2);
+		padding:2rpx;
+		border-radius: 10rpx;
+		
+	}
+	
+	
+	.text-clamp{
+	   display: -webkit-box;
+	    -webkit-line-clamp: 2; /* 显示的行数 */
+	    -webkit-box-orient: vertical; /* 内容会垂直堆叠 */
+	    overflow: hidden; /* 隐藏溢出的内容 */
+	    text-overflow: ellipsis; /* 当内容被裁剪时显示省略号 */
+	}
+	
+	.expandBtn{
+		position: absolute;
+		right: 0rpx;
+		bottom: 0rpx;
+		font-weight: 600;
+		color: #fff;
+		font-size: 30rpx;
+		width: 100rpx;
+		text-align: right;
+	    background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 50%);
+	
+	}
+	
+	
+</style>

+ 81 - 0
components/float-btn/float-btn.vue

@@ -0,0 +1,81 @@
+<template>
+	<view class="botView" >
+	     <view class="floatBox" @tap="clickAddCustomer">
+			 <image src="@/static/images/customer/add_customer.png"  class="bicon"></image>
+			  <view class="text" >添加用户</view>
+		 </view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			isShowMsgPop:{
+				type:Boolean,
+				default:false
+			}
+		},
+		data(){
+			return{
+				
+			}
+		},
+		methods:{
+			clickAddCustomer(){
+				console.log("clickAddCustomer");
+				return this.$emit('clickAddCustomer');
+			}
+		}
+	}
+</script>
+
+
+<style lang="scss" scoped>
+	
+	.botView{
+		position: fixed;
+		right: 31rpx;
+		z-index: 999;
+		display: flex;
+		width:204rpx;
+		height:98rpx ;
+		
+		align-items: center;
+		// top:var(--window-top);
+		bottom:calc(var(--window-bottom) + 32rpx);
+	}
+
+	
+	.floatBox{
+		display: flex;
+		flex-direction: row;
+		flex-wrap: wrap;
+		flex: 1;
+		justify-content: center;
+		
+		height: 80rpx;
+		align-items: center;
+		margin:0 0;
+		.bicon{
+			width: 100%;
+			height: 100%;
+			position: absolute;
+			left: 0;
+			top: 0;
+			right: 0;
+			bottom: 0;
+			z-index: 10;
+		}
+		.text{
+			color: #fff;
+			font-size: 28rpx;
+			text-align: center;
+			margin-left: 34rpx;
+			z-index: 11;
+			margin-bottom: 8rpx;
+			
+		}
+	}
+	
+	
+</style>

+ 315 - 0
components/good-list/good-list.vue

@@ -0,0 +1,315 @@
+<template>
+	<view class="order-list">
+		<view v-for="(item,index) in dataList" :key="index" class="item" >
+			
+			<!-- 订单号,状态 -->
+			<view class="ordersn-box">
+				<view class="num">订单号:{{item.orderCode}}</view>
+				<view class="status-box">
+					<!-- <view   class="recom-box">推荐订单</view> -->
+					<text   class="text success">  
+						{{parseDictName(item.status)}} 
+					</text>
+				</view>
+			</view>
+			<!-- 药品列表 -->
+			<view class="drug-list"  >
+				<view v-for="(subItem,index) in item.items" :key="index" class="drug-item">
+					<view class="img-box">
+						<image :src="JSON.parse(subItem.jsonInfo).image" mode="aspectFill"></image>
+					</view>
+					<view class="drug-info"  >
+						<view>
+							<view class="name-box ellipsis2">
+								<view v-if="subItem.isPrescribe==1" class="tag">处方药</view>{{JSON.parse(subItem.jsonInfo).productName}}
+							</view>
+							<view class="spec ellipsis">{{JSON.parse(subItem.jsonInfo).sku}}</view>
+						</view>
+						<view class="num-box">
+							<view class="price">
+								<text class="unit">¥</text>
+								<text class="num" v-if="JSON.parse(subItem.jsonInfo).price!=null">{{JSON.parse(subItem.jsonInfo).price.toFixed(2)}}</text>
+							</view>
+							<view class="amount">x{{JSON.parse(subItem.jsonInfo).num}}</view>
+						</view>
+					</view>
+				</view>
+				<!-- 实付金额、按钮 -->
+				<view class="bottom-box">
+					<view class="amount-paid">
+						<text class="label">实付金额:</text>
+						<view class="price-box">
+							<view class="unit">¥</view>
+							<view class="num" >{{item.payPrice.toFixed(2)}}</view>
+						</view>
+					</view>
+					<view class="btn-box">
+						<view  class="btn pay" @click.stop="showDetail(item)">
+							查看详情
+						</view>
+					</view>
+				</view>
+			</view>
+		
+		
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props:{
+			dataList: {
+				type: Array,
+				default(){
+					return []
+				}
+			}
+		},
+		methods: {
+		   parseDictName(val){
+				var name=""
+				name=this.getStoreDictByName('store_order_status',val);
+				return name;
+		   },
+		   showDetail(item) {
+				uni.navigateTo({
+					url: '/pages/user/order/storeOrderDetail?id=' + item.id
+				})
+		   },
+		   getStoreDictByName(key,dictValue) {
+		   	if(dictValue==null || dictValue==-1){
+		   		return "请选择";
+		   	}
+		   	var dicts = uni.getStorageSync(key);
+		   	var dict=JSON.parse(dicts);
+		   	var name="";
+		   	dict.forEach(function(item, index, array) {
+		   		 if(dictValue.toString()==item.dictValue.toString()){
+		   			 name=item.dictLabel
+		   		 }
+		   	});
+		   	return name;
+		   }
+		   
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+
+	.order-list{
+		padding: 20upx;
+		.item{
+			background: #FFFFFF;
+			border-radius: 16upx;
+			padding: 0 30upx;
+			margin-bottom: 20upx;
+			.ordersn-box{
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				padding: 34upx 0 20upx;
+				.num{
+					font-size: 26upx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 1;
+				}
+				.status-box{
+					display: flex;
+					align-items: center;
+					.recom-box{
+						width: 108upx;
+						height: 30upx;
+						line-height: 30upx;
+						text-align: left;
+						padding-left: 8upx;
+						font-size: 22upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #FFFFFF;
+						//background-image: url(../static/images/recom.png);
+						background-repeat: no-repeat;
+						background-size: 100% 100%;
+						margin-right: 8upx;
+					}
+					.text{
+						font-size: 28upx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						line-height: 1;
+						&.success{
+							color: #2BC7B9;
+						}
+						&.black{
+							color: #111111;
+						}
+						&.info{
+							color: #999999;
+						}
+					}
+				}
+			}
+			.drug-list{
+				.drug-item{
+					padding: 30upx 0;
+					border-bottom: 1px soli #F0F0F0;
+					display: flex;
+					align-items: center;
+					.img-box{
+						width: 160upx;
+						height: 160upx;
+						margin-right: 30upx;
+						flex-shrink: 0;
+						image{
+							width: 100%;
+							height: 100%;
+						}
+					}
+					.drug-info{
+						width: calc(100% - 190upx);
+						display: flex;
+						flex-direction: column;
+						justify-content: space-between;
+						.name-box{
+							font-size: 28upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #111111;
+							line-height: 40upx;
+							.tag{
+								display: inline-block;
+								padding: 0 6upx;
+								height: 30upx;
+								background: linear-gradient(90deg, #2BC7B9 0%, #2BC7A4 100%);
+								border-radius: 4upx;
+								margin-right: 10upx;
+								font-size: 22upx;
+								font-family: PingFang SC;
+								font-weight: bold;
+								color: #FFFFFF;
+								line-height: 30upx;
+								float: left;
+								margin-top: 7upx;
+							}
+						}
+						.spec{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #999999;
+							line-height: 1;
+							margin-top: 10upx;
+						}
+						.num-box{
+							display: flex;
+							align-items: center;
+							justify-content: space-between;
+							.price{
+								display: flex;
+								align-items: flex-end;
+								.unit{
+									font-size: 24upx;
+									font-family: PingFang SC;
+									font-weight: 500;
+									color: #111111;
+									line-height: 1.2;
+									margin-right: 4upx;
+								}
+								.num{
+									font-size: 32upx;
+									font-family: PingFang SC;
+									font-weight: 500;
+									color: #111111;
+									line-height: 1;
+								}
+							}
+							.amount{
+								font-size: 24upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #999999;
+								line-height: 1;
+							}
+						}
+					}
+				}
+				.bottom-box{
+					height: 110upx;
+					display: flex;
+					align-items: center;
+					justify-content: space-between;
+					.amount-paid{
+						display: flex;
+						align-items: center;
+						.label{
+							font-size: 24upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #999999;
+							line-height: 1;
+						}
+						.price-box{
+							display: flex;
+							align-items: flex-end;
+							.unit{
+								font-size: 24upx;
+								font-family: PingFang SC;
+								font-weight: 500;
+								color: #FF6633;
+								line-height: 1.2;
+								margin-right: 4upx;
+							}
+							.num{
+								font-size: 32upx;
+								font-family: PingFang SC;
+								font-weight: bold;
+								color: #FF6633;
+								line-height: 1;
+							}
+						}
+					}
+					.btn-box{
+						box-sizing: border-box;
+						display: flex;
+						align-items: center;
+						.btn{
+							width: 155upx;
+							height: 64upx;
+							line-height: 64upx;
+							font-size: 26upx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							text-align: center;
+							border-radius: 32upx;
+							margin-left: 15upx;
+							&:first-child{
+								margin-left: 0;
+							}
+							&.cancel{
+								border: 1px solid #DDDDDD;
+								color: #666666;
+							}
+							&.pay{
+								background: #2BC7B9;
+								color: #FFFFFF;
+								position: relative;
+								.share{
+									display: inline-block;
+									position: absolute;
+									top: 0;
+									left: 0;
+									width: 100%;
+									height: 100%rpx;
+									opacity: 0;
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 367 - 0
components/graceUI/gracePage.vue

@@ -0,0 +1,367 @@
+<template>
+	<view class="grace-sbody">
+		<!-- 头部导航 -->
+		<view v-if="customHeader">
+			<view class="grace-page-header" :style="{
+				'z-index':headerIndex, background:headerBG, 
+				borderBottomWidth:borderWidth, borderBottomColor:borderColor}">
+				<!-- 沉浸式状态栏 -->
+				<view class="grace-page-status-bar" :style="{height:statusBarHeight+'px', background:statusBarBG}"></view>
+				<!-- 头部核心 -->
+				<view class="grace-page-header-nav" id="gracePageHeader" :style="{minHeight:headerHeight+'px', height:headerHeight+'px', overflow:'hidden'}">
+					<view class="grace-header-main">
+						<slot name="gHeader"></slot>
+					</view>
+					<view :style="{width:BoundingWidth, flexShrink:'0'}" v-if="bounding"></view>
+				</view>
+			</view>
+			<!-- 占位 view -->
+			<view :style="{width:'100%', height:(headerHeight+statusBarHeight) + 'px'}"></view>
+		</view>
+		<!-- 页面主体 -->
+		<view class="grace-page-body">
+			<slot name="gBody"></slot>
+		</view>
+		<!-- #ifndef APP-PLUS -->
+		<view v-if="!isSwitchPage" :style="{width:'100%', height:iphoneXButtomHeight+'px'}"></view>
+		<!-- #endif -->
+		<!-- 页面底部 -->
+		<view class="grace-page-footer" :style="{'z-index':footerIndex, background:footerBg}">
+			<slot name="gFooter"></slot>
+			<!-- iphoneX 占位 view -->
+			<!-- #ifndef APP-PLUS -->
+			<view v-if="!isSwitchPage" :style="{width:'100%', height:iphoneXButtomHeight+'px'}"></view>
+			<!-- #endif -->
+		</view>
+		<!-- 右下角悬浮按钮 -->
+		<view class="gui-page-rb-area" :style="{right:rbRight+'rpx', bottom:rbBottom+'rpx', width:rbWidth+'rpx', zIndex:rbIndex}">
+			<slot name="gRTArea"></slot>
+		</view>
+
+		<!-- 吸顶元素 -->
+		<view class="grace-page-fixed-top" :style="{top:fixedTop+'px'}">
+			<slot name="gFixedTop"></slot>
+		</view>
+
+		<!-- 全屏 loading -->
+		<view class="grace-page-loading" @tap.stop="stopfun" @touchmove.stop.prevent="stopfun" :style="{background:loadingBG}"
+		 v-if="isLoading">
+			<view class="grace-page-loading-point">
+				<view class="grace-page-loading-points animate1" :style="{background:loadingPointBg}"></view>
+				<view class="grace-page-loading-points animate2" :style="{background:loadingPointBg}"></view>
+				<view class="grace-page-loading-points animate3" :style="{background:loadingPointBg}"></view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	export default {
+		props: {
+			customHeader: {
+				type: Boolean,
+				default: true
+			},
+			headerHeight: {
+				type: Number,
+				default: 44
+			},
+			headerIndex: {
+				type: Number,
+				default: 98
+			},
+			headerBG: {
+				type: String,
+				default: 'none'
+			},
+			statusBarBG: {
+				type: String,
+				default: 'none'
+			},
+			footerIndex: {
+				type: Number,
+				default: 98
+			},
+			footerBg: {
+				type: String,
+				default: ''
+			},
+			isSwitchPage: {
+				type: Boolean,
+				default: false
+			},
+			rbWidth: {
+				type: Number,
+				default: 100
+			},
+			rbBottom: {
+				type: Number,
+				default: 100
+			},
+			rbRight: {
+				type: Number,
+				default: 20
+			},
+			rbIndex: {
+				type: Number,
+				default: 1
+			},
+			borderWidth: {
+				type: String,
+				default: '0px'
+			},
+			borderColor: {
+				type: String,
+				default: '#D1D1D1'
+			},
+			loadingBG: {
+				type: String,
+				default: 'rgba(255,255,255, 0.1)'
+			},
+			isLoading: {
+				type: Boolean,
+				default: false
+			},
+			loadingPointBg: {
+				type: String,
+				default: '#3688FF'
+			},
+			bounding: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				statusBarHeight: 44,
+				iphoneXButtomHeight: 0,
+				BoundingWidth: '0px',
+				fixedTop: 0
+			}
+		},
+		created: function() {
+			// #ifdef H5
+			if (this.customHeader) {
+				this.fixedTop = this.headerHeight;
+			} else {
+				this.fixedTop = 44;
+			}
+			// #endif
+			try {
+				var system = uni.getSystemInfoSync();
+				system.model = system.model.replace(' ', '');
+				system.model = system.model.toLowerCase();
+				if (system.model.indexOf('iphonex') != -1 || system.model.indexOf('iphone1') != -1) {
+					this.iphoneXButtomHeight = uni.upx2px(50);
+				}
+				// #ifndef H5
+				if (this.customHeader) {
+					this.fixedTop = this.headerHeight + system.statusBarHeight;
+				} else {
+					this.fixedTop = 0;
+				}
+				// #endif
+				if (!this.customHeader) {
+					return;
+				}
+				this.statusBarHeight = system.statusBarHeight;
+				// #ifdef MP-ALIPAY
+				this.statusBarHeight = 0;
+				// #endif
+				// #ifndef MP-ALIPAY
+				// #ifdef MP-WEIXIN
+				// 小程序胶囊按钮
+				var bounding = uni.getMenuButtonBoundingClientRect();
+				this.BoundingWidth = (bounding.width + system.windowWidth - bounding.right + 10) + 'px';
+				// #endif
+				// #endif
+			} catch (e) {
+				return null;
+			}
+		},
+		methods: {
+			getHeaderHeight: function() {
+				return this.headerHeight + this.statusBarHeight;
+			},
+			stopfun: function() {}
+		}
+	}
+</script>
+<style>
+	/* #ifndef MP */
+	page {
+		width: 100%;
+		min-height: 100%;
+		display: flex;
+		flex-direction: column;
+		flex: 1;
+	}
+
+	/* #endif */
+	.grace-sbody {
+		display: flex;
+		flex-direction: column;
+		width: 100%;
+		min-height: 100%;
+		flex: 1;
+	}
+
+	/* #ifdef MP */
+	.grace-sbody {
+		min-height: 100vh;
+	}
+
+	/* #endif */
+	.grace-page-header {
+		width: 100%;
+		position: fixed;
+		left: 0;
+		top: 0;
+		z-index: 99;
+		border-bottom: 0px solid #FFFFFF;
+	}
+
+	.grace-page-status-bar {
+		width: 100%;
+		height: 0;
+	}
+
+	.grace-page-header-nav {
+		width: 100%;
+		display: flex;
+		flex-direction: row;
+		flex-wrap: nowrap;
+		align-items: center;
+	}
+
+	.grace-header-main {
+		width: 300rpx;
+		flex: auto;
+		overflow: hidden;
+		min-height: 44px;
+	}
+
+	.grace-page-body {
+		width: 100%;
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+	}
+
+	.grace-page-footer {
+		width: 100%;
+		position: fixed;
+		left: 0;
+		bottom: var(--window-bottom);
+		z-index: 99;
+	}
+
+	.gui-page-rb-area {
+		width: 100rpx;
+		position: fixed;
+		right: 20rpx;
+		bottom: 100rpx;
+		z-index: 1;
+	}
+
+	.grace-page-loading {
+		width: 100%;
+		height: 100%;
+		background: rgba(255, 255, 255, 0.1);
+		position: fixed;
+		z-index: 9999;
+		left: 0;
+		top: 0;
+		bottom: 0;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.grace-page-loading-point {
+		display: flex;
+		flex-direction: row;
+		flex-wrap: nowrap;
+		justify-content: center;
+	}
+
+	.grace-page-loading-points {
+		width: 20rpx;
+		height: 20rpx;
+		background-color: #3688FF;
+		border-radius: 50rpx;
+		margin: 10rpx;
+		opacity: 0.5;
+	}
+
+	@keyframes pageLoading1 {
+		0% {
+			opacity: 0.5;
+			transform: scale(1);
+		}
+
+		40% {
+			opacity: 1;
+			transform: scale(1.5);
+		}
+
+		60% {
+			opacity: 0.5;
+			transform: scale(1);
+		}
+	}
+
+	@keyframes pageLoading2 {
+		20% {
+			opacity: 0.5;
+			transform: scale(1);
+		}
+
+		60% {
+			opacity: 1;
+			transform: scale(1.5);
+		}
+
+		80% {
+			opacity: 0.5;
+			transform: scale(1);
+		}
+	}
+
+	@keyframes pageLoading3 {
+		40% {
+			opacity: 0.5;
+			transform: scale(1);
+		}
+
+		80% {
+			opacity: 1;
+			transform: scale(1.5);
+		}
+
+		100% {
+			opacity: 0.5;
+			transform: scale(1);
+		}
+	}
+
+	.animate1 {
+		animation: pageLoading1 1.2s infinite linear;
+	}
+
+	.animate2 {
+		animation: pageLoading2 1.2s infinite linear;
+	}
+
+	.animate3 {
+		animation: pageLoading3 1.2s infinite linear;
+	}
+
+	.grace-page-fixed-top {
+		position: fixed;
+		top: 44px;
+		left: 0px;
+		width: 750rpx;
+		z-index: 99998;
+	}
+</style>

+ 232 - 0
components/h5-down-app-tip/h5-down-app-popup.vue

@@ -0,0 +1,232 @@
+<template>
+	<uni-popup ref="downappPop" type="center" is-mask-click="false">
+		  <view class="downappPop">
+				<uni-icons class="closebtn" type="closeempty" size="27" color="#bbb" @click="$refs.downappPop.close()"></uni-icons>
+				<image src="/static/logo.png" class="es-w-100 es-h-100"></image>
+				<view>请下载App观看</view>
+				<view class="es-br-20 es-w-250 es-bc es es-pc es-ac es-fw-bold es-fs-30" style="min-height: 80rpx;border-radius: 10rpx;" @tap="openApp('btn')">
+					<view class="es-ml-30 es-mr-30">App内打开</view>
+				</view>
+			<!-- 	<template v-if="isWechat">
+					<wx-open-launch-app appid="wx703c4bd07bbd1695" :extinfo="extinfo" @launch="AppLaunch" @error="AppError">
+						<component :is="'script'" type="text/wxtag-template">
+							<button id="footer-btn" class="es-br-20 es-w-250 es-bc es es-pc es-ac es-fw-bold es-fs-30 es-ml-30 es-mr-30" style="min-height: 80rpx;border-radius: 10rpx;">
+								App内打开
+							</button>
+					  	</component>
+					</wx-open-launch-app>
+				</template> -->
+		  </view>
+	</uni-popup>
+</template>
+
+<script>
+	import * as wx from 'weixin-js-sdk'
+	import {getWxConfig} from "@/api/common.js";
+	export default {
+		props: ['pageUrl','type','courseId'],
+		data() {
+			return {
+				timer: null,
+				isWechat: false,
+				// 跳转所需额外信息
+				extinfo: "rtlive://livingApp",
+			}
+		},
+		created() {
+			this.isWechat = String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === "micromessenger"
+			// this.initWXConfig()
+		},
+		methods: {
+			openPop() {
+				this.$refs.downappPop.open()
+			},
+			initWXConfig(packageVal) {
+				if(this.isWechat) {
+					let url = window.location.href.split('#')[0]
+					let param ={
+						url: encodeURIComponent(url)
+					}
+					uni.showLoading({
+						  title: '加载中'
+					});
+					getWxConfig(param).then(res => {
+						uni.hideLoading();
+						if (res.code == 200) {
+							wx.config({
+								debug: false,
+								appId: res.data.appId,
+								timestamp: res.data.timestamp,
+								nonceStr: res.data.nonceStr,
+								signature: res.data.signature,
+								jsApiList: ['requestMerchantTransfer','updateAppMessageShareData'],
+								openTagList: ['wx-open-launch-app']
+							});
+							wx.error(function(error){
+							  // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
+							});
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: 'none'
+							})
+						}
+					}).catch(err=>{
+						uni.hideLoading();
+					})
+				} else {
+					// 非微信浏览器
+					this.openApp()
+				}
+			},
+			AppLaunch(e){
+				console.log("success",e)
+			},
+			AppError(e){
+				if(e.detail.errMsg == "launch:fail"){
+					window.location.href = uni.getStorageSync('h5Path') + "/pages/index/appDownload";
+				} else {
+					uni.showToast({
+						title: e.detail.errMsg,
+						icon: 'error'
+					})
+				}
+			},
+			// 判断浏览器是否为头部APP(判断是否为微信或则其它APP浏览器,如果是则引导外置浏览器打开)
+			isBlackApp() {
+			  var u = navigator.userAgent.toLowerCase();
+			  return /micromessenger/i.test(u) || u.indexOf("weibo") > -1 || u.indexOf("qq") > -1 || u.indexOf('mqqbrowser') > -1;
+			},
+			openApp(type){
+				if(type == 'btn') {
+					// 打开app,打不开跳转下载页
+					const isOpenMode = this.isOpenMode()
+					if(isOpenMode == 1 ||isOpenMode == 4) {
+						if (this.isBlackApp() ) {
+						   // 头部APP让网页显示提示在浏览器中打开
+							// uni.showToast({
+							// 	title: '复制页面链接在浏览器中打开',
+							// 	icon: 'none'
+							// })
+							window.location.href = "https://m.malink.cn/s/yaIBJz"
+						 } else {
+						   // 不是头部APP就直接打开
+							const pagesUrl = encodeURIComponent(this.pageUrl)
+							let schemeUrl = ''
+							schemeUrl = "rtlive://livingApp";
+							// if(this.type == 'course') {
+							// 	schemeUrl = "rtlive://course?courseId="+this.courseId;
+							// }else {
+							// 	// window.location.href="rtlive://pagesApp?pagesUrl="+pagesUrl;
+							// 	schemeUrl = "rtlive://pagesApp?pagesUrl="+pagesUrl;
+							// }
+							this.jumpApp(schemeUrl);
+							this.noApp();
+						 }
+					}
+				} else {
+					// 直接打开,打不开不跳转
+					const isOpenMode = this.isOpenMode()
+					if(isOpenMode == 4) {
+						const pagesUrl = encodeURIComponent(this.pageUrl)
+						let schemeUrl = ''
+						if(this.type == 'course') {
+							schemeUrl = "rtlive://course?courseId="+this.courseId;
+						}else {
+							// window.location.href="rtlive://pagesApp?pagesUrl="+pagesUrl;
+							schemeUrl = "rtlive://pagesApp?pagesUrl="+pagesUrl;
+						}
+						this.jumpApp(schemeUrl);
+					}
+				}
+			},
+			// 跳转打开app
+			jumpApp(t) {
+				console.log(t, "===========》jumpApp");
+				try {
+					var e = navigator.userAgent.toLowerCase(),
+						n = e.match(/cpu iphone os (.*?) like mac os/);
+					if (((n = null !== n ? n[1].replace(/_/g, ".") : 0), parseInt(n) >= 9)) {         		
+					    //ios8之后的版本
+						window.location.href = t;
+					} else { //注意iOS8之前是可以使用iframe来实现的
+						var r = document.createElement("iframe");
+						(r.src = t), (r.style.display = "none"), document.body.appendChild(r);
+					}
+				} catch (e) {
+					window.location.href = t;
+				}
+			},
+			// 无响应或者没安装跳转下载
+			noApp() {
+				console.log("===========》noApp");
+				var t = Date.now(),
+					r = uni.getStorageSync('h5Path') + "/pages/index/appDownload";
+				this.timer = setTimeout(()=> {
+					return Date.now() - t > 3200 ?
+						(clearTimeout(this.timer), !1) :
+						!document.webkitHidden &&
+						!document.hidden &&
+						void(location.href = r);
+				}, 3000);
+			},
+			isOpenMode() {
+				//平台、设备和操作系统
+				var system = {
+					win: false,
+					mac: false,
+					xll: false,
+					ipad: false
+				};
+				//检测平台
+				var p = navigator.platform;
+				system.win = p.indexOf("Win") == 0;
+				system.mac = p.indexOf("Mac") == 0;
+				system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
+				system.ipad = (navigator.userAgent.match(/iPad/i) != null) ? true : false;
+				//跳转语句,如果是手机访问就自动跳转到wap.baidu.com页面
+				if (system.win || system.mac || system.xll || system.ipad) {
+					var ua = navigator.userAgent.toLowerCase();
+					if (ua.match(/MicroMessenger/i) == "micromessenger") {
+						// alert("在PC端微信上打开的");
+						return 2;
+					} else {
+						// alert("在PC端非微信上打开的");
+						return 3;
+					}
+				} else {
+					var ua = navigator.userAgent.toLowerCase();
+					if (ua.match(/MicroMessenger/i) == "micromessenger") {
+						// alert("在手机端微信上打开的");
+						return 1;
+					} else {
+						// alert("在手机上非微信上打开的");
+						return 4;
+					}
+				}
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.downappPop {
+		border-radius: 20rpx;
+		background-color: #fff;
+		padding: 30rpx;
+		width: 80vw;
+		height: 400rpx;
+		box-sizing: border-box;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: space-evenly;
+		text-align: center;
+		position: relative;
+	}
+	.closebtn {
+		position: absolute;
+		top: 14rpx;
+		right: 14rpx;
+	}
+</style>

+ 236 - 0
components/h5-down-app-tip/h5-down-app-tip.vue

@@ -0,0 +1,236 @@
+<template>
+	<view class="count" style="position: relative;z-index: 9999;">
+		<!-- #ifdef H5 -->
+		<view class="es-c es-share-bg-box">
+			<image class="image x-c" src="/static/images/other/bg_bar.png"></image>
+			<view class="es-bc-white x-c es-pt-10" style="width: 100%;">下载芳华未来App,查看更多内容↓</view> 
+			<view class="line flex es-h-1 es-bc-fa"></view>
+			<view class="es-bc-white x-bc es-pl-20 es-pr-20 es-pb-20 es-pt-10">
+				<view class="left x-f">
+					<image class="es-w-100 es-h-100 es-mr-20" style="flex-shrink: 0;" src="@/static/logo.png"></image>
+					<view class="y-b">
+						<view class="es-fs-30 es-fw-bold es-c-33 es-mb-10 x-f">芳华未来</view>
+						<view class="es-fs-26 es-fw-n es-c-33" style="text-align: left;">古籍·中药·方剂大全</view>
+					</view>
+				</view>
+				<view class="es-br-20 es-w-250 es-bc es es-pc es-ac es-fw-bold es-fs-30" style="min-height: 80rpx;" @tap="openApp('btn')">
+					<view class="es-ml-30 es-mr-30">App内打开</view>
+				</view>
+				<!-- <template v-if="isWechat">
+					<wx-open-launch-app appid="wx703c4bd07bbd1695" :extinfo="extinfo" @launch="AppLaunch" @error="AppError">
+						<component :is="'script'" type="text/wxtag-template">
+							<button id="footer-btn" 
+							style="min-height: 40px;border-radius: 10px;display: flex;align-items: center;justify-content: center;font-weight: 700;font-size: 15px;background: #ff5c03;color: #fff">
+								App内打开
+							</button>
+					  	</component>
+					</wx-open-launch-app>
+				</template> -->
+			</view>
+		</view>
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+	import * as wx from 'weixin-js-sdk'
+	import {getWxConfig} from "@/api/common.js";
+	export default {
+		props: ['pageUrl','type','courseId'],
+		data() {
+			return {
+				timer: null,
+				isWechat: false,
+				// 跳转所需额外信息
+				extinfo: "rtlive://pagesApp",
+			}
+		},
+		created() {
+			this.isWechat = String(navigator?.userAgent.toLowerCase().match(/MicroMessenger/i)) === "micromessenger"
+			// this.initWXConfig()
+		},
+		methods: {
+			initWXConfig(packageVal) {
+				if(this.isWechat) {
+					const pagesUrl = encodeURIComponent(this.pageUrl)
+					this.extinfo = "rtlive://pagesApp?pagesUrl="+pagesUrl;
+					
+					let url = window.location.href.split('#')[0]
+					let param ={
+						url: encodeURIComponent(url)
+					}
+					uni.showLoading({
+						  title: '加载中'
+					});
+					getWxConfig(param).then(res => {
+						uni.hideLoading();
+						if (res.code == 200) {
+							wx.config({
+								debug: false,
+								appId: res.data.appId,
+								timestamp: res.data.timestamp,
+								nonceStr: res.data.nonceStr,
+								signature: res.data.signature,
+								jsApiList: ['requestMerchantTransfer','updateAppMessageShareData'],
+								openTagList: ['wx-open-launch-app']
+							});
+							wx.error(function(error){
+							  // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
+							});
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: 'none'
+							})
+						}
+					}).catch(err=>{
+						uni.hideLoading();
+					})
+				} else {
+					// 非微信浏览器
+					this.openApp()
+				}
+			},
+			AppLaunch(e){
+				console.log("success",e)
+			},
+			AppError(e){
+				if(e.detail.errMsg == "launch:fail"){
+					window.location.href = uni.getStorageSync('h5Path') + "/pages/index/appDownload";
+				} else {
+					uni.showToast({
+						title: e.detail.errMsg,
+						icon: 'error'
+					})
+				}
+			},
+			// 判断浏览器是否为头部APP(判断是否为微信或则其它APP浏览器,如果是则引导外置浏览器打开)
+			isBlackApp() {
+			  var u = navigator.userAgent.toLowerCase();
+			  return /micromessenger/i.test(u) || u.indexOf("weibo") > -1 || u.indexOf("qq") > -1 || u.indexOf('mqqbrowser') > -1;
+			},
+			openApp(type){
+				if(type == 'btn') {
+					// 打开app,打不开跳转下载页
+					const isOpenMode = this.isOpenMode()
+					if(isOpenMode == 1 ||isOpenMode == 4) {
+						if (this.isBlackApp() ) {
+						   // 头部APP让网页显示提示在浏览器中打开
+						   window.location.href = "https://m.malink.cn/s/yaIBJz"
+							// uni.showToast({
+							// 	title: '复制页面链接在浏览器中打开',
+							// 	icon: 'none'
+							// })
+						 } else {
+						   // 不是头部APP就直接打开
+							const pagesUrl = encodeURIComponent(this.pageUrl)
+							let schemeUrl = ''
+							if(this.type == 'course') {
+								schemeUrl = "rtlive://course?courseId="+this.courseId;
+							}else {
+								// window.location.href="rtlive://pagesApp?pagesUrl="+pagesUrl;
+								schemeUrl = "rtlive://pagesApp?pagesUrl="+pagesUrl;
+							}
+							this.jumpApp(schemeUrl);
+							this.noApp();
+						 }
+					}
+				} else {
+					// 直接打开,打不开不跳转
+					const isOpenMode = this.isOpenMode()
+					if(isOpenMode == 4) {
+						const pagesUrl = encodeURIComponent(this.pageUrl)
+						let schemeUrl = ''
+						if(this.type == 'course') {
+							schemeUrl = "rtlive://course?courseId="+this.courseId;
+						}else {
+							// window.location.href="rtlive://pagesApp?pagesUrl="+pagesUrl;
+							schemeUrl = "rtlive://pagesApp?pagesUrl="+pagesUrl;
+						}
+						this.jumpApp(schemeUrl);
+					}
+				}
+			},
+			// 跳转打开app
+			jumpApp(t) {
+				console.log(t, "===========》jumpApp");
+				try {
+					var e = navigator.userAgent.toLowerCase(),
+						n = e.match(/cpu iphone os (.*?) like mac os/);
+					if (((n = null !== n ? n[1].replace(/_/g, ".") : 0), parseInt(n) >= 9)) {         		
+					    //ios8之后的版本
+						window.location.href = t;
+					} else { //注意iOS8之前是可以使用iframe来实现的
+						var r = document.createElement("iframe");
+						(r.src = t), (r.style.display = "none"), document.body.appendChild(r);
+					}
+				} catch (e) {
+					window.location.href = t;
+				}
+			},
+			// 无响应或者没安装跳转下载
+			noApp() {
+				console.log("===========》noApp");
+				var t = Date.now(),
+					r = uni.getStorageSync('h5Path') + "/pages/index/appDownload";
+				this.timer = setTimeout(()=> {
+					return Date.now() - t > 3200 ?
+						(clearTimeout(this.timer), !1) :
+						!document.webkitHidden &&
+						!document.hidden &&
+						void(location.href = r);
+				}, 3000);
+			},
+			isOpenMode() {
+				//平台、设备和操作系统
+				var system = {
+					win: false,
+					mac: false,
+					xll: false,
+					ipad: false
+				};
+				//检测平台
+				var p = navigator.platform;
+				system.win = p.indexOf("Win") == 0;
+				system.mac = p.indexOf("Mac") == 0;
+				system.x11 = (p == "X11") || (p.indexOf("Linux") == 0);
+				system.ipad = (navigator.userAgent.match(/iPad/i) != null) ? true : false;
+				//跳转语句,如果是手机访问就自动跳转到wap.baidu.com页面
+				if (system.win || system.mac || system.xll || system.ipad) {
+					var ua = navigator.userAgent.toLowerCase();
+					if (ua.match(/MicroMessenger/i) == "micromessenger") {
+						// alert("在PC端微信上打开的");
+						return 2;
+					} else {
+						// alert("在PC端非微信上打开的");
+						return 3;
+					}
+				} else {
+					var ua = navigator.userAgent.toLowerCase();
+					if (ua.match(/MicroMessenger/i) == "micromessenger") {
+						// alert("在手机端微信上打开的");
+						return 1;
+					} else {
+						// alert("在手机上非微信上打开的");
+						return 4;
+					}
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.es-share-bg-box {
+		position: fixed;
+		z-index: 999;
+		bottom: 0;
+		left:0;
+		width: 100%;
+		text-align: center;
+		.image{
+			width: 100%;
+			height:100rpx ;
+		}
+	}
+</style>

+ 127 - 0
components/healthButlerPop/healthButlerPop.vue

@@ -0,0 +1,127 @@
+<template>
+	<view v-show="show">
+		<view class="ad-mask">
+			<slot>
+				<view class="adbox">
+					<image class="adbox-bg"  src="@/static/images/ad/service.png" mode="aspectFill"></image>
+					<view class="es es-fs-40 es-fw-400 es-c-00 es-mt-38">添加健康管家</view>
+					<view class="es es-c-99 es-fs-28 es-mt-12">-解锁更多权益-</view>
+					
+					<view class="box-footer es-mt-48">
+						<button class="box-footer-btn" @click="addAction()" :loading="signLoading" :disabled="signLoading">立即添加</button>
+					</view>
+				</view>
+				
+				<view class="adbox-close">
+					<image src="@/static/images/ad/close_icon.png" @click="close"></image>
+				</view>
+				
+				
+			</slot>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			show: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				signLoading: false,
+			}
+		},
+		methods: {
+			close() {
+			    this.$emit("close");
+			},
+			addAction(){
+				
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.ad-mask {
+		width: 100vw;
+		height: 100vh;
+		background-color: rgba(0,0,0,0.6);
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+		@include u-flex(column, center, center);
+		.adbox {
+			width: 620rpx;
+			position: relative;
+			background: linear-gradient( 180deg, #FFD0B5 0%, #FFFFFF 20%, #FFFFFF 100%);
+			border-radius: 16px 16px 16px 16px;
+			@include u-flex(column, center, center);
+			
+			&-bg {
+				width: 312rpx;
+				height: 312rpx;
+		        margin-top: -150rpx;
+			}
+		}
+		.adbtn{
+			width: 412rpx;
+			height: 104rpx;
+			position: absolute;
+			bottom: 80rpx;
+			left: 50%;
+			transform: translate(-50%,0);
+		}
+		.pointer {
+			width: 180rpx;
+			height: 194rpx;
+			position: absolute;
+			bottom: -52rpx;
+			right: -42rpx;
+		}
+		
+		.adbox-close{
+			margin-top: 64rpx;
+			width: 100%;
+			@include u-flex(row, center, center);
+			image {
+				width: 64rpx;
+				height: 64rpx;
+			}
+			
+		}
+	}
+
+    .box-footer { 
+     	&-btn {
+     		width: 520rpx;
+     		min-height: 88rpx;
+     		line-height: 88rpx;
+     		background: linear-gradient( 180deg, #FF9F22 0%, #FA1E05 100%);
+     		border-radius: 26px 26px 26px 26px;
+     	
+     		border-image: linear-gradient(180deg, rgba(252, 209, 94, 1), rgba(254, 253, 251, 1)) 2 2;
+     		font-family: PingFang SC, PingFang SC;
+     		font-weight: 600;
+     		font-size: 32rpx;
+     		color: #FFFFFF;
+			margin-bottom: 64rpx;
+     		&::after {
+     			border: none;
+     		}
+     	}
+     }
+
+
+</style>

+ 101 - 0
components/indexSubsection/indexSubsection.vue

@@ -0,0 +1,101 @@
+<template>
+	<view class="nav-subsection " :style="{backgroundColor:!$isIos()?'rgba(0, 0, 0, 0.1)':''}"> 
+		<view class="nav-subsection-active1"  v-if="$isIos()" :style="{left: subsectionLeft + 'px', width: subsectionWidth + 'px'}"></view>
+		<view class="nav-subsection-active" v-else :style="{left: subsectionLeft + 'px', width: subsectionWidth + 'px'}"></view>
+		<view class="nav-subsection-item x-c" v-if="$isIos()" :style="{color: topNavId != 0 ? '#fff':'#fff',fontSize:'18px'}" @click="handleTopNav(0)">首页</view>
+		<view class="nav-subsection-item x-c" v-else :style="{color: topNavId != 0 ? '#fff':''}" @click="handleTopNav(0)">首页</view>
+		<view v-if="!$isIos()" class="nav-subsection-item x-c" :style="{color: topNavId != 1 ? '#fff':''}" @click="handleTopNav(1)">健康</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				topNavId: 0,
+				subsectionLeft: 0,
+				subsectionWidth: 0,
+				navSubSize: {},
+			}
+		},
+		methods: {
+			handleTopNav(id) {
+				this.topNavId = id
+				uni.setStorageSync("indexTemplate",this.topNavId)
+				this.updateIndicator(this.navSubSize[this.topNavId].width, this.navSubSize[this.topNavId].width);
+			},
+			selectorQuery() {
+				this.topNavId = uni.getStorageSync("indexTemplate") || 0
+				uni.createSelectorQuery().in(this).selectAll('.nav-subsection-item').boundingClientRect((rects) => {
+				  rects.forEach((rect,index) => {
+					this.navSubSize[index] = rect;
+				  })
+				  this.updateIndicator(this.navSubSize[this.topNavId].width, this.navSubSize[this.topNavId].width);
+				}).exec();
+			},
+			updateIndicator(left, width) {
+			  this.$emit('onChange',this.topNavId)
+			  this.subsectionLeft = this.topNavId * left + uni.upx2px(6);
+			  this.subsectionWidth = width;
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@mixin u-flex($flexD, $alignI, $justifyC) {
+		display: flex;
+		flex-direction: $flexD;
+		align-items: $alignI;
+		justify-content: $justifyC;
+	}
+	.nav-subsection {
+		@include u-flex(row, center, center)
+		
+		padding: 6rpx;
+		box-sizing: border-box;
+		border-radius: 50rpx;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #FFFFFF;
+		position: relative;
+		z-index: 2;
+		&-item {
+			min-width: 96rpx;
+			min-height: 50rpx;
+			padding: 0 16rpx;
+			box-sizing: border-box;
+			// line-height: 50rpx;
+			text-align: center;
+			border-radius: 26rpx 26rpx 26rpx 26rpx;
+			color: #FF7700;
+		}
+		
+		&-active {
+			background: #fff;
+			position: absolute;
+			top: 6rpx;
+			left: 6rpx;
+			z-index: -1;
+			// min-width: 96rpx;
+			min-height: 50rpx;
+			border-radius: 26rpx 26rpx 26rpx 26rpx;
+			transition-duration: 0.2s;
+			transition-property: left;
+		}
+		
+		&-active1 {
+			
+			position: absolute;
+			top: 6rpx;
+			left: 6rpx;
+			z-index: -1;
+			// min-width: 96rpx;
+			min-height: 50rpx;
+			border-radius: 26rpx 26rpx 26rpx 26rpx;
+			transition-duration: 0.2s;
+			transition-property: left;
+		}
+	}
+</style>

+ 0 - 0
components/lx-calendar/lx-calendar.md


Некоторые файлы не были показаны из-за большого количества измененных файлов