Przeglądaj źródła

第一次提交

puyao 2 dni temu
commit
ebbb4e262c
100 zmienionych plików z 14736 dodań i 0 usunięć
  1. 4 0
      .gitignore
  2. 37 0
      .hbuilderx/launch.json
  3. 970 0
      App.vue
  4. 38 0
      androidPrivacy.json
  5. 13 0
      api/adv.js
  6. 17 0
      api/ai.js
  7. 15 0
      api/article.js
  8. 58 0
      api/common.js
  9. 50 0
      api/companyUser.js
  10. 17 0
      api/coupon.js
  11. 265 0
      api/course.js
  12. 17 0
      api/courseAnswer.js
  13. 9 0
      api/department.js
  14. 16 0
      api/disease.js
  15. 24 0
      api/doctor.js
  16. 13 0
      api/doctorArticle.js
  17. 22 0
      api/drugReport.js
  18. 38 0
      api/expert.js
  19. 14 0
      api/follow.js
  20. 52 0
      api/healthRecords.js
  21. 21 0
      api/healthTongue.js
  22. 14 0
      api/hospital.js
  23. 150 0
      api/index.js
  24. 71 0
      api/inquiryOrder.js
  25. 68 0
      api/integral.js
  26. 38 0
      api/message.js
  27. 62 0
      api/order.js
  28. 26 0
      api/package.js
  29. 67 0
      api/packageOrder.js
  30. 23 0
      api/pages_watch/common.js
  31. 40 0
      api/pages_watch/health.js
  32. 102 0
      api/pages_watch/healthMonitoring.js
  33. 149 0
      api/pages_watch/index.js
  34. 23 0
      api/pages_watch/message.js
  35. 47 0
      api/pages_watch/user.js
  36. 39 0
      api/patient.js
  37. 38 0
      api/prescribe.js
  38. 71 0
      api/shortvideo.js
  39. 25 0
      api/store.js
  40. 29 0
      api/storeAfterSales.js
  41. 51 0
      api/storeOrder.js
  42. 8 0
      api/storeProduct.js
  43. 24 0
      api/test.js
  44. 164 0
      api/user.js
  45. 49 0
      api/userAddress.js
  46. BIN
      assets/css/bushu_icon.png
  47. 201 0
      assets/css/common.less
  48. 64 0
      assets/css/czy/emoji/biaoqin.js
  49. 3139 0
      assets/css/czy/emoji/sina.js
  50. 1595 0
      assets/css/czy/es.1.base.css
  51. 94 0
      assets/css/czy/es.2.color.css
  52. 28 0
      assets/css/czy/es.3.icon.css
  53. 101 0
      assets/css/czy/es.4.view.css
  54. BIN
      assets/css/kaluli_icon.png
  55. BIN
      assets/css/min_icon.png
  56. BIN
      assets/css/sports_record_icon.png
  57. BIN
      assets/css/time_icon.png
  58. 1 0
      assets/iconfont/iconfont.css
  59. 32 0
      common/ChainItem.js
  60. 11 0
      common/config.js
  61. 26 0
      common/css/flexCommon.css
  62. 352 0
      common/html-parser.js
  63. 89 0
      common/request.js
  64. 54 0
      common/util.js
  65. 106 0
      components/CustomCamera/WeChat/Layout.vue
  66. 194 0
      components/CustomCamera/WeChat/index.vue
  67. 50 0
      components/Loading.vue
  68. 162 0
      components/Menu.vue
  69. 95 0
      components/adMask/adMask.vue
  70. 178 0
      components/choosePatient/choosePatient.vue
  71. 158 0
      components/elise-audio/elise-audio.vue
  72. 40 0
      components/elise-audio/redme.md
  73. 66 0
      components/es-course-item/es-course-item.vue
  74. 125 0
      components/es-integral-sign/es-integral-sign.vue
  75. 20 0
      components/es-integral/es-integral.vue
  76. 194 0
      components/es-living-pop/es-living-pop.vue
  77. 106 0
      components/es-nav-bg-black/es-nav-bg-black.vue
  78. 70 0
      components/es-nav-bg/es-nav-bg.vue
  79. 61 0
      components/es-nav-title-base/es-nav-title-base.vue
  80. 143 0
      components/es-nav-title/es-nav-title.vue
  81. 20 0
      components/es-nav/es-nav.vue
  82. 43 0
      components/es-swiper-item/es-swiper-item.vue
  83. 34 0
      components/es-top/es-top.vue
  84. 302 0
      components/es-video-pop/es-video-pop.vue
  85. 81 0
      components/float-btn/float-btn.vue
  86. 315 0
      components/good-list/good-list.vue
  87. 367 0
      components/graceUI/gracePage.vue
  88. 232 0
      components/h5-down-app-tip/h5-down-app-popup.vue
  89. 235 0
      components/h5-down-app-tip/h5-down-app-tip.vue
  90. 127 0
      components/healthButlerPop/healthButlerPop.vue
  91. 88 0
      components/indexSubsection/indexSubsection.vue
  92. 0 0
      components/lx-calendar/lx-calendar.md
  93. 632 0
      components/lx-calendar/lx-calendar.vue
  94. 244 0
      components/me-tabs/me-tabs.vue
  95. 115 0
      components/menu-pop/menu-pop.vue
  96. 75 0
      components/message/msg-list.vue
  97. 100 0
      components/message/msg-pop.vue
  98. 11 0
      components/mp-html/editable/config.js
  99. 532 0
      components/mp-html/editable/index.js
  100. 540 0
      components/mp-html/mp-html.vue

+ 4 - 0
.gitignore

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

+ 37 - 0
.hbuilderx/launch.json

@@ -0,0 +1,37 @@
+{
+    // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+    // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version" : "0.0",
+    "configurations" : [
+        {
+            "app" : {
+                "launchtype" : "local"
+            },
+            "app-plus" : {
+                "launchtype" : "remote"
+            },
+            "default" : {
+                "launchtype" : "local"
+            },
+            "h5" : {
+                "launchtype" : "local"
+            },
+            "mp-weixin" : {
+                "launchtype" : "local"
+            },
+            "provider" : "aliyun",
+            "type" : "uniCloud",
+            "uniapp" : {
+                "launchtype" : "local"
+            }
+        },
+        {
+            "playground" : "standard",
+            "type" : "uni-app:app-android"
+        },
+        {
+            "playground" : "custom",
+            "type" : "uni-app:app-ios"
+        }
+    ]
+}

+ 970 - 0
App.vue

@@ -0,0 +1,970 @@
+
+<script>
+
+  import { getDictByKey,getAppVersion,getRealLinkDomainName } from '@/api/common'
+  //参考文档 插件市场 https://ext.dcloud.net.cn/plugin?id=741
+  import {appCheckUdate,openDownload } from '@/utils/APPUpdate.js'
+  import {getUserInfo,getPushLogRead} from '@/api/user'
+  import { healthButlerPop } from '@/utils/healthButlerPop.js'
+	
+// #ifdef APP-PLUS
+	import TIM from "tim-wx-sdk";
+	import TIMUploadPlugin from "tim-upload-plugin";
+	import Aegis from "aegis-weex-sdk";
+	export { TIM, TIMUploadPlugin, Aegis };
+// import {coursePopup} from '@/utils/coursePopup.js'
+// var jpushModule = uni.requireNativePlugin("JG-JPush");
+// #endif
+
+// #ifdef H5
+	import TIM from "tim-js-sdk";
+	import TIMUploadPlugin from "tim-upload-plugin";
+	import Aegis from "aegis-web-sdk";
+	export { TIM, TIMUploadPlugin, Aegis };
+// #endif
+
+// #ifdef MP-WEIXIN
+	import TIM from "tim-js-sdk";
+	import TIMUploadPlugin from "tim-upload-plugin";
+	import Aegis from "aegis-mp-sdk";
+	export { TIM, TIMUploadPlugin, Aegis };
+// #endif
+import { TUIConversationServer, TUIProfileServer } from "@/pages/TUIKit/TUICore/server";
+import store from "@/store"; 
+
+// 创建 sdk 实例
+var appId=1400825410;
+uni.$TUIKit = TIM.create({
+  SDKAppID: appId,
+});
+
+uni.$TIM = TIM;
+// 注册文件上传插件
+uni.$TUIKit.registerPlugin({
+  "tim-upload-plugin": TIMUploadPlugin,
+});
+uni.$TUIKit.TUIConversationServer = new TUIConversationServer();
+uni.$TUIKit.TUIProfileServer = new TUIProfileServer();
+
+var isIos=false;  
+
+// #ifdef APP-PLUS
+const uPushPlugin = uni.requireNativePlugin("DCloud-PushSound");
+const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');
+uni.$TUICallKit = TUICallKit; //全局引入
+uni.$TUICallKit2 = TUICallKit; //全局引入
+isIos = (plus.os.name == "iOS")  
+import permision1 from "@/utils/permission.js"
+// #endif
+import { getTlsSig } from '@/api/common.js'
+import { qconfig } from './utils/config';
+import { premissionCheck } from "@/js_sdk/wa-permission/permission.js"
+// import { utils } from 'xlsx';
+import { updateMsgDot } from "@/utils/common.js"
+
+let healthTimer=null;
+let tSeconds=0;
+const healthSeconds=180;
+
+export default {
+	globalData: {  
+		wsUrl: 'ws://doctor.ai.cdwjyyh.com',
+		danmuWSUrl:'ws://api.cdwjyyh.com',
+		aiWSUrl:'ws://doctor.ai.cdwjyyh.com',
+		kfurl: 'https://work.weixin.qq.com/kfid/kfc3731c5008ebd8906', //企业微信客服链接
+		corpId: 'ww70ac72e824957fc9', //企业id
+	},
+    onLaunch: function () {
+		  uni.removeStorageSync("openUrl")
+		  if(this.$isLogin()) {
+			  uni.setStorageSync("onLaunch",1)
+			  this.$setSource()
+		  }
+		  //设置字体大小
+		  let fontsize = uni.getStorageSync("fontSize")
+		  if (fontsize) {
+			 store.commit("timStore/setScaleFontSize", 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);
+			  store.commit("timStore/setScaleFontSize", fontsize);
+	     }
+		 this.bindTIMEvent();
+		 var that=this;
+		 uni.$on('refreshIM', () => {
+			that.imLogin()
+		 });
+		 uni.$on('refreshMsgCount', () => {
+		 	that.$updateMsgDot();
+		 });
+	    
+	  // #ifdef APP-PLUS
+
+		uni.$on('showHealthButler', () => { 
+			 if(plus.runtime.channel=="baidu" || plus.runtime.channel=="yybadv" || plus.runtime.channel=="yybadv1"){
+				 that.runTimer();
+			 }	
+		 });
+		 
+		 // const baiduAdv = uni.requireNativePlugin('baidu-adv-plugin');
+		 // //console.log("-----qxj baiduAdv:"+baiduAdv);
+		 // baiduAdv.initSDK(21427,"e8b431ba309234a9c842fddf967b7d0e", (msg) => {
+		 //     console.log('------qxj SDK1初始化:', msg);
+		 // });
+		 
+		 this.checkPush1();
+		 uni.onPushMessage((res) => {
+			 console.log("监听推送消息 ")
+			 if(res.type=="receive") {
+				 uni.createPushMessage({
+					 title: res.data.title,
+					 content: res.data.content,
+					 payload: res.data.payload,
+					 // sound: 'system', // 默认值为system
+					 category: res.data.category,
+					 success: ()=>{
+						console.log("创建在线推送消息成功: ")
+						store.commit("newMsg/SET_UPDATATIME",new Date().getTime());
+					 },
+					 fail: (err) =>{
+						console.log("创建在线推送消息失败: ",err) 
+					 },
+				 }) 
+			 }
+			 this.$updateMsgDot()
+			 this.handlePushMessage(res)
+		 }) 
+	  //#endif  
+
+  },
+    onLoad() {
+  	   // #ifdef APP-PLUS
+	       if(plus.runtime.isAgreePrivacy()) { 
+				uni.getSystemInfo({success: function (res) {
+						 if (res.platform === 'android') {
+							
+						 }
+					}
+	       	    });		
+	       }
+	    //#endif 
+     },
+    onShow() {
+		
+		   this.geth5Path()
+		   var that=this;
+		   if(that.$isLogin()){
+				that.imLogin();
+				that.$getRegistrationID('update');
+				// this.getClipboardData()
+		   }
+		// #ifdef APP-PLUS
+		    
+			if(plus.runtime.isAgreePrivacy()) {
+				 this.$getRegistrationID();
+				 if(plus.runtime.channel=="baidu" || plus.runtime.channel=="yybadv" || plus.runtime.channel=="yybadv1"){  
+				     this.runTimer();
+				 }
+			}
+			//that.bdAdvFeedback();
+			
+			that.checkUpdateApp();
+			var args= plus.runtime.arguments;
+			if(args){
+				console.log('args=====',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
+						url=args.replace("rtlive://pagesApp?pagesUrl=","");
+						url=decodeURIComponent(url);
+					} else if (args.indexOf("rtlive://courseAnswer") != -1) {
+						// 看课
+						url=args.replace("rtlive://courseAnswer","");
+						url="/pages/courseAnswer/index"+url;
+					} else {
+						url=args.replace("rtlive://course","");
+						url="/pages/course/info"+url;
+					}
+					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 = ''
+								}
+							 })
+						}
+					}
+				}
+			}
+
+		//#endif  
+		
+  },
+	onHide() {
+		uni.removeStorageSync("onLaunch")
+	},
+    methods: {
+		 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 = getSystemFontScale();
+				let rootElement = document.documentElement;
+				rootElement.style.fontSize = 16 * scale + 'px';
+		 },
+		/* 检查更新 在线更新 */
+		checkUpdateApp:function(){
+			if(isIos){
+				return;
+			}
+			let that=this;
+			plus.runtime.getProperty(plus.runtime.appid, function(widgetinfo) {
+					// 可以根据manifest.json里的应用名称来进行针对性的APP升级
+					if (widgetinfo.name == qconfig.appName) { //APP名称
+						// 获取manifest.json里的版本号  
+						let platform = uni.getSystemInfoSync().platform;
+						let isAndroid=platform=="android";
+						let type=isAndroid?1:2;
+						getAppVersion(type).then(srcData => {
+								//console.log("qxj getAppVersion srcData:"+JSON.stringify(srcData)+" isAppStore:"+that.$qconfig.isAppStore);
+								if(srcData.code==200){
+									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();
+						});
+					} 
+			});
+		},
+		
+		imLogin(){
+			var user=JSON.parse(uni.getStorageSync('userInfo'));
+		  	var uid="U-"+user.userId;
+		  	var data={userId:uid};
+		  	getTlsSig(data).then(res => {
+		  			console.log(data)
+		  			if(res.code==200){
+		  				var sign=res.data;
+						//console.log("-----qxj sign:"+sign);
+		  				uni.setStorageSync('sign',sign);
+						uni.setStorageSync('userID',uid);
+		  				uni.$TUIKit.login({ userID: uid,userSig:sign }).then((res) => {
+		  					// sdk 初始化,当 sdk 处于ready 状态,才可以使用API,文档
+		  					console.log("im登录成功");
+							var avatar=user.avatar; 
+							var nickName=user.nickName;
+							if(avatar==null){
+								avatar=""
+							}
+							uni.$TUIKit.updateMyProfile({
+								nick: nickName,
+								avatar:avatar,
+								gender: TIM.TYPES.GENDER_MALE,
+								selfSignature: '我的个性签名',
+								allowType: TIM.TYPES.ALLOW_TYPE_ALLOW_ANY
+							}).then((res) => {
+								// sdk 初始化,当 sdk 处于ready 状态,才可以使用API,文档
+								console.log("个人信息修改成功")
+							});
+							var sign=uni.getStorageSync('sign');
+							uni.$emit('refreshMsgCount');
+							// #ifdef APP-PLUS
+							uni.$TUICallKit.login({
+								SDKAppID: appId, // 开通实时音视频服务创建应用后分配的 SDKAppID
+								userID: uid,     // 用户 ID,可以由您的帐号系统指定
+								userSig: sign,   // 身份签名,相当于登录密码的作用
+							 }, (res) => {
+								if (res.code === 0) {
+									uni.$TUICallKit.enableFloatWindow(true); // 开启小浮窗
+								  } else {
+									console.error(`login failed, error message = ${res.msg}`);
+								  }
+							 });
+							 // #endif
+		  				});
+		  			}
+					else{
+		  				uni.showToast({
+		  					icon:'none',
+		  					title: "请求失败",
+		  				});
+		  			}
+		  		},
+		  		rej => {}
+		  	);
+		},
+		bindTIMEvent() {
+			uni.$TUIKit.on(uni.$TIM.EVENT.SDK_READY, this.handleSDKReady);
+			uni.$TUIKit.on(uni.$TIM.EVENT.SDK_NOT_READY, this.handleSDKNotReady);
+			uni.$TUIKit.on(uni.$TIM.EVENT.KICKED_OUT, this.handleKickedOut);
+		},
+		// sdk ready 以后可调用 API
+		handleSDKReady(event) {
+			uni.$chat_isSDKReady = true;
+			uni.hideLoading();
+		},
+		handleSDKNotReady(event) {
+		    
+		},
+		handleKickedOut(event) {
+		      //uni.clearStorageSync();
+		      uni.showToast({
+		        title: `${this.kickedOutReason(event.data.type)}被踢出。`,
+		        icon: "none",
+		      });
+		},
+	    kickedOutReason(type) {
+		      switch (type) {
+		        case uni.$TIM.TYPES.KICKED_OUT_MULT_ACCOUNT:
+		          return "多实例登录";
+		        case uni.$TIM.TYPES.KICKED_OUT_MULT_DEVICE:
+		          return "多设备登录";
+		        case uni.$TIM.TYPES.KICKED_OUT_USERSIG_EXPIRED:
+		          return "userSig 过期";
+		        case uni.$TIM.TIM.TYPES.KICKED_OUT_REST_API:
+		          return "REST API kick 接口踢出";
+		        default:
+		          return "";
+		      }
+		},
+		runTimer(){  
+			let that=this;
+			// healthButlerPop(function(data){
+			// 	if(data==1){
+					
+			// 	}else{
+			// 		that.$showLoginPage();
+			// 	}
+			// });
+			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){
+							uni.setStorageSync('userInfo',JSON.stringify(res.user));
+							let userInfo=res.user;
+							healthButler.isAddQw=userInfo.isAddQw;
+							uni.setStorageSync("healthButler",JSON.stringify(healthButler));
+						}
+					}
+				},
+				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(plus.runtime.isAgreePrivacy()) {
+						if(plus.runtime.channel=="baidu"){ 
+							let bdCmdType=uni.getStorageSync("bdCmdType");
+							if(this.$isEmpty(bdCmdType)){
+								this.$registerIdCode("goToQw",4,0);
+							}
+						}
+				   }
+			// #endif
+		},
+		async checkPush1(){
+			let result = await premissionCheck("PUSH");
+			if(result == 1) {
+				
+			}
+			
+			// uPushPlugin.setCustomPushChannel({
+   //                  soundName: "",
+   //                  channelId: "133898",
+   //                  channelDesc:"看课提醒",
+   //                  enableLights:true,
+   //                  enableVibration:true,
+   //                  importance:4,
+   //                  lockscreenVisibility:1
+   //          });
+			
+			// uPushPlugin.getAllChannels((p) => {
+			//      console.log("qxj push channels :" + JSON.stringify(p));//返回数组
+			// });
+			
+			// const manager = uni.getChannelManager()
+			// manager.setPushChannel({
+			// 	"channelId":"Push",
+			// 	"channelDesc":"消息推送",
+			// 	"enableLights":true,
+			// 	"importance":4,
+			// 	"lockscreenVisibility":1
+			// 	//soundName: "pushsound" // 已经把声音文件存储到/res/raw/pushsound.mp3
+			// });
+
+		},
+	    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);
+				}
+			})
+		},
+		handlePushMessage(res) {
+			const that = this
+			if(res.type == 'click') {
+				// 如果需要跳转app内指定页面,则自己实现下方的跳转代码。
+				if(this.$isLogin()){
+					const pages = getCurrentPages();
+					const url = pages[ pages.length - 1];
+					const isOnLaunch = uni.getStorageSync("onLaunch")
+					// 判断前一个页面路径是一样
+					const flag = pages&&url.route&&res.data.payload.url.indexOf(url.route)
+					// console.log("点击===========",url.route,flag)
+					if(isOnLaunch&&isOnLaunch==1) {
+						uni.hideLoading({
+							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)
+								}
+							 })
+						}
+					}
+				}
+			} else if(res.type == 'receive') {
+				// 监听在线推送消息,若云函数设置了 "force_notification":true,则不会触发此 receive。 
+			}
+		},
+		// 系统通知全部已读
+		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
+		}
+     }
+};
+
+</script>
+
+<style lang="scss">
+	/*每个页面公共css */
+	@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;
+	}
+	
+	
+	
+	// 猜你喜欢样式
+	.like-box{
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		image{
+			height: 40upx;
+			width: 40upx;
+		}
+		.text{
+			font-size: 28upx;
+			color: #000;
+			font-weight: bold;
+			margin: 0 10upx;
+		}
+	}
+
+	.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"
+        }
+    }
+}

+ 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');
+ }
+
+ 
+ 

+ 17 - 0
api/ai.js

@@ -0,0 +1,17 @@
+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');
+}

+ 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');
+ }
+  
+  
+  

+ 58 - 0
api/common.js

@@ -0,0 +1,58 @@
+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);
+ }
+ 
+ 

+ 50 - 0
api/companyUser.js

@@ -0,0 +1,50 @@
+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');
+ }
+  
+ 
+ 

+ 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');
+ }
+  

+ 265 - 0
api/course.js

@@ -0,0 +1,265 @@
+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/wxpayment',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 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');
+}

+ 17 - 0
api/courseAnswer.js

@@ -0,0 +1,17 @@
+import Request from '../common/request.js';
+let request = new Request().http
+
+// 获取真实链接
+export function getRealLink(data) {
+	return request('/app/course/getRealLink', data, 'GET');
+}
+
+// 
+export function getSopCourseStudyList(data) {
+	return request('/app/course/getSopCourseStudyList', data, 'GET');
+}
+
+//看课消息已读
+ export function updateSopAppLink(id) {
+ 	 return request('/app/course/updateSopAppLink/'+id,null,'GET');
+ }

+ 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');
+ }
+ 
+ 
+ 
+ 
+  
+  
+  

+ 24 - 0
api/doctor.js

@@ -0,0 +1,24 @@
+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');
+ }
+  
+  

+ 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');
+ }
+ 
+  
+  
+  

+ 38 - 0
api/expert.js

@@ -0,0 +1,38 @@
+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');
+}

+ 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('获取地理位置信息失败'))
+			  }
+			});
+	  }
+	});
+}

+ 71 - 0
api/inquiryOrder.js

@@ -0,0 +1,71 @@
+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 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');
+ 
+ }
+ 
+ 
+ 
+ 
+  

+ 68 - 0
api/integral.js

@@ -0,0 +1,68 @@
+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) {   //类型 1浏览商品 2刷视频  
+    let data={"type":type};
+  	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');
+ }
+  
+  
+ 
+ 
+ 
+ 
+ 
+  
+  
+  

+ 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');
+ }
+ 
+ 
+ 
+  
+  
+  

+ 67 - 0
api/packageOrder.js

@@ -0,0 +1,67 @@
+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 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')
+ }

+ 40 - 0
api/pages_watch/health.js

@@ -0,0 +1,40 @@
+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')
+}
+
+//健康周报-文字解析
+export function queryHealthReport(data){
+	return request('/watch-api/app/watch/queryHealthReport',data,'GET')
+}

+ 102 - 0
api/pages_watch/healthMonitoring.js

@@ -0,0 +1,102 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+// 查询健康监测数据类型列表
+export function monitorDataType(data){
+	return request('/watch-api/app/watch/monitorDataType',data,'GET')
+}
+
+// 获取血糖数据
+export function bgInfo(data){
+	return request('/watch-api/app/watch/bg/list',data,'GET')
+}
+
+// 获取血糖数据(分页)
+export function bgInfoPage(data){
+	return request('/watch-api/app/watch/bg/page',data,'GET')
+}
+
+// 获取血糖异常数据
+export function bgAbnormaInfo(data){
+	return request('/watch-api/app/watch/bg/count',data,'GET')
+}
+
+// 获取血压数据
+export function bpInfo(data){
+	return request('/watch-api/app/watch/bp/list',data,'GET')
+}
+
+// 获取血压数据(分页)
+export function bpInfoPage(data){
+	return request('/watch-api/app/watch/bp/page',data,'GET')
+}
+
+// 获取血压异常数据
+export function bpAbnormaInfo(data){
+	return request('/watch-api/app/watch/bp/count',data,'GET')
+}
+
+// 获取心率数据
+export function heartRateInfo(data){
+	return request('/watch-api/app/watch/heart/rate/list',data,'GET')
+}
+
+// 获取心率数据提醒统计
+export function heartRateCount(data){
+	return request('/watch-api/app/watch/heart/rate/count',data,'GET')
+}
+
+// 获取血氧数据
+export function spInfo(data){
+	return request('/watch-api/app/watch/sp/list',data,'GET')
+}
+
+// 获取血氧分时间段常数据统计
+export function spCount(data){
+	return request('/watch-api/app/watch/sp/count',data,'GET')
+}
+
+// 获取睡眠分时间段查询
+export function sleepInfo(data){
+	return request('/watch-api/app/watch/sleep/list',data,'GET')
+}
+
+// 查询某个时间段温度数据
+export function temperature(data){
+	return request('/watch-api/app/watch/temperature/list',data,'GET')
+}
+
+// 查询某个时间段尿酸数据
+export function ualist(data){
+	return request('/watch-api/app/watch/ua/list',data,'GET')
+}
+
+// 尿酸分时间段数据统计
+export function uaCount(data){
+	return request('/watch-api/app/watch/ua/count',data,'GET')
+}
+
+// 尿酸分时间段查询 分页
+export function uaPageList(data){
+	return request('/watch-api/app/watch/ua/page',data,'GET')
+}
+
+// 活动详情统计
+export function sportDataByDate(data){
+	return request('/watch-api/app/watch/sport/dataByDate',data,'GET')
+}
+
+// 根据运动类型查详情
+export function sportDataByType(data){
+	return request('/watch-api/app/watch/sport/dataByType',data,'GET')
+}
+
+// 查询某个时间段压力数据
+export function fatigueInfo(data){
+	return request('/watch-api/app/watch/fatigue/list',data,'GET')
+}
+
+// 查询某个时间段压力异常数据统计
+export function fatigueCount(data){
+	return request('/watch-api/app/watch/fatigue/count',data,'GET')
+}

+ 149 - 0
api/pages_watch/index.js

@@ -0,0 +1,149 @@
+import Request from '@/common/request.js';
+let request = new Request().http
+
+// 首页轮播绑定信息
+export function getInfoByDeviceIds(data) {
+	return request('/watch-api/app/watch/getInfoByDeviceIds',data,'GET')
+}
+
+// 健康风险预警信息(分页)
+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');
+ }
+ 
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+  
+  
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+ 

+ 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');
+}
+ 
+
+
+
+
+
+ 
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+  
+  
+ 
+ 
+ 
+ 
+
+ 
+ 
+ 
+ 
+ 

+ 71 - 0
api/shortvideo.js

@@ -0,0 +1,71 @@
+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');
+ }
+ 

+ 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');
+ }
+ 
+ 
+ 
+ 
+ 
+ 

+ 51 - 0
api/storeOrder.js

@@ -0,0 +1,51 @@
+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');
+ }
+ 
+ 

+ 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');
+ }
+  
+  

+ 164 - 0
api/user.js

@@ -0,0 +1,164 @@
+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 loginByMp(data) {
+ 	 return request('/app/wx/loginByMp',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 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/updatePushId',data,'GET');
+ }
+ 
+ // 更新用户是否绑定app
+  export function updateHistoryApp(data) {
+  	 return request('/app/user/updateHistoryApp',data,'GET');
+  }
+  
+ //新增弹窗记录
+ export function popAd(data) {
+ 	 return request('/app/pop/add',data,'GET');
+ }
+ 
+ // 判断是否需要弹窗
+ export function isCreateAd(data) {
+ 	 return request('/app/pop/isCreate',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


+ 201 - 0
assets/css/common.less

@@ -0,0 +1,201 @@
+  
+ 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;
+  }
+  
+  /*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;
+}

+ 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


Plik diff jest za duży
+ 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 config={
+	"navTitleStyle":"font-weight:620;font-family: PingFang SC;"
+	
+};
+export default{
+	config:config
+}

+ 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;

+ 89 - 0
common/request.js

@@ -0,0 +1,89 @@
+// uni-app请求封装
+export default class Request {
+	http(router, data = {}, method,contentType) {
+		let that = this;
+		let path ='https://api.cdwjyyh.com';//app
+		// let path = 'http://p466c346.natappfree.cc'
+		// #ifdef H5
+			path ='https://h5api.his.cdwjyyh.com';//h5接口
+			// path ='https://api.cdwjyyh.com';//app
+		// #endif
+		
+		// 看课模块
+		if(router.indexOf("/app/course/getRealLink") != -1 ) {
+			path ='https://h5api.his.cdwjyyh.com';
+		}
+		// 腕表模块
+		if(router.indexOf("/watch-api") != -1 ) {
+			router = router.replace('/watch-api','')
+			// path = ' http://etnd9w.natappfree.cc'
+			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 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));
+			// console.log(" token:"+token);
+			// 请求
+			uni.request({
+				header: {
+					// 'Content-Type': 'application/x-www-form-urlencoded',
+					'Content-Type': httpContentType,
+					'AppToken': token,
+					'CompanyUserToken':CompanyUserToken //业务员token
+				},
+				url: `${path}${router}`,
+				data: data,
+				method: method,
+				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) =>{
+					//接口调用失败的回调函数
+				},
+				complete:(res) =>{
+					//接口调用结束的回调函数(调用成功、失败都会执行)
+					if (res.data&&res.data.code == 401) {
+						//console.log("qxj 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.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>

+ 178 - 0
components/choosePatient/choosePatient.vue

@@ -0,0 +1,178 @@
+<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">
+				<!-- <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 v-if="!isWechat" 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">
+					<!-- 此处的APPID为移动应用APPID -->
+					<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'
+							})
+						 } 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>

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

@@ -0,0 +1,235 @@
+<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 v-if="!isWechat" 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">
+					<!-- 此处的APPID为移动应用APPID -->
+					<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;">
+								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让网页显示提示在浏览器中打开
+							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>

+ 88 - 0
components/indexSubsection/indexSubsection.vue

@@ -0,0 +1,88 @@
+<template>
+	<view class="nav-subsection ">
+		<view class="nav-subsection-active" :style="{left: subsectionLeft + 'px', width: subsectionWidth + 'px'}"></view>
+		<view class="nav-subsection-item x-c" :style="{color: topNavId != 0 ? '#626469':''}" @click="handleTopNav(0)">首页</view>
+		<view class="nav-subsection-item x-c" :style="{color: topNavId != 1 ? '#626469':''}" @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);
+		// background-color: rgba(255, 255, 255, 0.3);
+		background-color: rgba(0, 0, 0, 0.06);
+		padding: 6rpx;
+		box-sizing: border-box;
+		border-radius: 50rpx;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #626469;
+		position: relative;
+		z-index: 2;
+		&-item {
+			min-width: 120rpx;
+			min-height: 50rpx;
+			padding: 0 16rpx;
+			box-sizing: border-box;
+			// line-height: 50rpx;
+			text-align: center;
+			border-radius: 26rpx 26rpx 26rpx 26rpx;
+			color: #fff;
+			// color: #FF7700;
+		}
+		&-active {
+			// background: #fff;
+			background: linear-gradient( 136deg, #EE7D4E 0%, #E86235 100%);
+			position: absolute;
+			top: 6rpx;
+			left: 6rpx;
+			z-index: -1;
+			min-width: 120rpx;
+			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


+ 632 - 0
components/lx-calendar/lx-calendar.vue

@@ -0,0 +1,632 @@
+
+<template>
+	<view class="date">
+		<view class="head">
+			<!-- <view class="icon" @click="switch_month_week('prev',true)"><text class="iconfont icon-fanhui" /></view> -->
+			<view class="title">{{nowYear+'年'+nowMonth+'月'}}</view>
+			<!-- <view class="icon" @click="switch_month_week('next',true)"><text class="iconfont next icon-fanhui" /></view> -->
+		</view>
+		<view class="date_dl" >
+			<view class="dd" v-for="(item,index) in week" :key="index">{{item}}</view>
+		</view>
+		<!-- <swiper :style="{height:(retract ? 2 * 80 : (week_list.length + 1) * 80 ) + 'rpx'}" :current="current" circular @change="change_date"> -->
+		<swiper :style="{height:'480rpx'}" :current="current" circular @change="change_date">
+			<swiper-item>
+				<view class="date_dl" v-show="!retract || index == to_prev_week_index" v-for="(item,index) in   week_list_prev_co" :key="index">
+					<view class="dd" @click="item_click(vo,index,key)" v-for="(vo,key) in item" :key="key">
+						<view class="num" :class="[vo.today ? 'today' : '',vo.type == 'month' ? 'month' : (retract ? '' : 'disabled')]">{{vo.day}}</view>
+						<view v-show="vo.dot && (vo.type == 'month' || retract)" class="dot"></view>
+					</view>
+				</view>
+				<!-- <view @click="open" class="retract icon"><text class="iconfont next icon-fanhui" :class="[retract ? '' : 'retract_icon']" /></view> -->
+			</swiper-item>
+			<swiper-item>
+				
+				<view class="date_dl" v-show="!retract || index == to_week_index" v-for="(item,index) in week_list" :key="index">
+					<view class="dd" @click="item_click(vo,index,key)" v-for="(vo,key) in item" :key="key">
+						<view class="num" :class="[vo.today ? 'today' : '',vo.type == 'month' ? 'month' : (retract ? '' : 'disabled')]">{{vo.day}}</view>
+						<view v-show="vo.dot && (vo.type == 'month' || retract)" class="dot"></view>
+					</view>
+				</view>
+				<!-- <view @click="open" class="retract icon"><text class="iconfont next icon-fanhui" :class="[retract ? '' : 'retract_icon']" /></view> -->
+			</swiper-item>
+			<swiper-item>
+				
+				<view class="date_dl" v-show="!retract || index == to_next_week_index" v-for="(item,index) in  week_list_next_co" :key="index">
+					<view class="dd" @click="item_click(vo,index,key)" v-for="(vo,key) in item" :key="key">
+						<view class="num" :class="[vo.today ? 'today' : '',vo.type == 'month' ? 'month' : (retract ? '' : 'disabled')]">{{vo.day}}</view>
+						<view v-show="vo.dot && (vo.type == 'month' || retract)" class="dot"></view>
+					</view>
+				</view>
+				<!-- <view @click="open" class="retract icon"><text class="iconfont next icon-fanhui" :class="[retract ? '' : 'retract_icon']" /></view> -->
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+export default {
+	props:{
+		value:{
+			type:[String,Number],
+			default:''
+		},
+		dot_lists:{
+			type:Array,
+			default:()=>{
+				return [];
+			}
+		}
+	},
+	data(){
+		return {
+			debug:false,
+			week:['日','一','二','三','四','五','六'],
+			week_list:[],
+			week_list_prev:[],
+			week_list_prev_week:[],
+			week_list_next:[],
+			week_list_next_week:[],
+			now_date:'',
+			start_date:'',
+			end_date:'',
+			prev_date:'',
+			next_date:'',
+			nowYear:'',
+			nowMonth:'',
+			nowDay:'',
+			retract: true,
+			to_week_index:0,
+			to_prev_week_index:0,
+			to_next_week_index:0,
+			nowTime:0,
+			dot_list:[],
+			current: 1,
+			date:'',
+		}
+	},
+	watch:{
+		value(value){
+			this.get_date(this.date_parse(value));
+		},
+		
+		dot_lists:{
+			immediate:true,
+			handler(value){
+				this.dot_list = value;
+				this.set_doc_lists_update()
+			}
+		}
+	},
+	computed:{
+		week_list_prev_co(){
+			return this.retract ?  this.week_list_prev_week : this.week_list_prev
+		},
+		week_list_next_co(){
+			return this.retract ?  this.week_list_next_week : this.week_list_next
+		}
+	},
+	created(){
+		this.init();
+	},
+	methods:{
+		change(){
+			let value = {
+				fulldate:this.date.replace(/-(\d)(?!\d)/g, '-0$1')
+			};
+			this.$emit('change',value)
+		},
+		init(){
+			if(this.value){
+				this.get_date(this.date_parse(this.value));
+			}else{
+				this.get_date();
+			}
+			
+			this.doc_list_update();
+			this.update_month();
+			
+		},
+		open(){
+			this.retract = !this.retract;
+			this.get_date(this.nowTime);
+			this.set_to_day('week_list_prev')
+			this.set_to_day('week_list_next')
+			
+			this.change_week();
+			
+			if(this.retract){
+				this.update_swiper_item('week')
+			}else{
+				this.update_swiper_item('month')
+			}
+			this.set_doc_lists_update();
+		},
+		change_week(){
+			
+			if(this.to_week_index < this.week_list.length - 1){
+				this.to_next_week_index = this.to_week_index + 1;
+				this.week_list_next_week = this.week_list;
+			}else{
+				this.to_next_week_index = 0;
+				this.week_list_next_week = this.week_list_next;
+			}
+			
+			if(this.to_week_index == 0 ){
+				
+				this.update_month();
+				
+				// if(){
+				let next_day = this.week_list_prev[this.week_list_prev.length - 1][6].day;
+				
+				// }
+				this.to_prev_week_index = this.week_list_prev.length - 1 - Math.ceil(next_day / 7);
+				
+				this.week_list_prev_week = JSON.parse(JSON.stringify(this.week_list_prev));
+				
+				
+				
+				
+				
+			}else{
+				this.to_prev_week_index = this.to_week_index - 1;
+				this.week_list_prev_week = this.week_list;
+			}
+			
+			// if(this.current == 1){
+
+			// }
+			// let to_week_index = this.to_week_index;
+			// if(this.current == 2){
+			// 	this.to_next_week_index = this.to_week_index;
+			// 	this.to_week_index = this.to_week_index - 1;
+			// 	this.to_prev_week_index =  this.to_next_week_index + 1;
+			// }else if(this.current == 0){
+			// 	this.to_next_week_index = this.to_week_index;
+			// 	this.to_week_index = this.to_week_index - 1;
+			// 	this.to_prev_week_index =  this.to_next_week_index + 1;
+			// }
+			
+			
+			
+			
+			
+			
+		},
+		change_date_week(type){
+			let week_list = this.week_list;
+			let to_week_index = this.to_week_index;
+			if(type == 'prev'){
+				this.to_week_index = this.to_prev_week_index;
+				this.to_prev_week_index = this.to_next_week_index
+				this.to_next_week_index = to_week_index;
+				
+				this.week_list = this.week_list_prev_week
+				this.week_list_prev_week = this.week_list_next_week;
+				this.week_list_next_week = week_list;
+				
+				
+
+			}else if(type == 'next'){
+				this.to_week_index = this.to_next_week_index;
+				this.to_next_week_index = this.to_prev_week_index
+				this.to_prev_week_index = to_week_index;
+				
+				this.week_list = this.week_list_next_week
+				this.week_list_next_week = this.week_list_prev_week;
+				this.week_list_prev_week = week_list;
+				
+				
+			}
+			
+			this.set_to_day_all();
+		},
+		change_date_month(type){
+			let week_list = this.week_list;
+			if(type == 'prev'){
+				this.week_list = this.week_list_prev
+				this.week_list_prev = this.week_list_next;
+				this.week_list_next = week_list;
+			}else if(type == 'next'){
+				this.week_list = this.week_list_next
+				this.week_list_next = this.week_list_prev;
+				this.week_list_prev = week_list;
+			}
+		},
+		change_date(e){
+			
+			let primary_current = this.current
+			let current = e.detail.current;
+			
+			this.current = current;
+
+			if(primary_current - current == -1 || primary_current - current == 2){
+				
+				if(this.retract){
+					this.switch_month_week('next')
+					this.change_week()
+					if(primary_current - current == -1 && current != 1){
+						this.change_date_week('prev')
+					}else if(primary_current - current == 2){
+						this.change_date_week('next')
+					}
+				}else{
+					this.get_date(this.get_month('next'));
+					this.update_month();
+					if(primary_current - current == -1 && current != 1){
+						this.change_date_month('prev')
+					}else if(primary_current - current == 2){
+						this.change_date_month('next')
+					}
+				}
+			}else{
+				if(this.retract){
+					this.switch_month_week('prev')
+					this.change_week()
+					if(primary_current - current == 1 && current != 1){
+						this.change_date_week('next')
+					}else if(primary_current - current == -2){
+						this.change_date_week('prev')
+					}
+					
+					
+				}else{
+					this.get_date(this.get_month('prev'));
+					this.update_month();
+					if(primary_current - current == 1 && current != 1){
+						this.change_date_month('next')
+					}else if(primary_current - current == -2){
+						this.change_date_month('prev')
+					}
+				}
+			}
+
+			this.set_to_day_all();
+			this.set_doc_lists_update();
+			this.change()
+		},
+		update_month(){
+			this.get_date(this.get_month('prev'),'prev');
+			this.get_date(this.get_month('next'),'next');
+		},
+		set_doc_lists_update(){
+			this.doc_list_update('week_list');
+			this.doc_list_update('week_list_prev');
+			this.doc_list_update('week_list_next');
+			this.doc_list_update('week_list_prev_week')
+			this.doc_list_update('week_list_next_week')
+		},
+		doc_list_update(week_list = 'week_list'){
+			let list = [];
+			
+			this[week_list].map((item,index)=>{
+				list.push(item.map((vo,key)=>{
+					if(this.dot_list.indexOf(vo.date) > -1 || this.dot_list.indexOf(vo.date.replace(/-(\d)(?!\d)/g, '-0$1')) > -1 ){
+						vo.dot = true;
+						
+					}else{
+						vo.dot = false;
+					}
+					return {...vo}
+				}))
+			})
+			this[week_list] = list;
+		},
+		set_to_day(type){
+			let list = [];
+			
+			this[type].map((item,index)=>{
+				list.push(item.map((vo,key)=>{
+					if(vo.date == `${this.date}`){
+						vo.today = true;
+					}else{
+						vo.today = false;
+					}
+					return {...vo};
+				}))
+			})
+			this[type] = list;
+		},
+		item_click(item,item_index = -1){
+			if(!this.retract && item.type !== 'month'){
+				return false;
+			}
+			this.date = item.date;;
+			if(item.type == 'month'){
+				this.nowDay = item.day;
+				if(item_index >= 0) this.to_week_index = item_index;
+				
+			}else if(this.retract){
+				this.nowDay = item.day;
+			}
+			
+			let now_arr = item.date.split('-')
+			this.nowYear = now_arr[0];
+			this.nowMonth = now_arr[1];
+			this.nowDay = now_arr[2];
+			
+			
+			this.set_to_day_all(item_index);
+			
+			this.nowTime = this.date_parse(`${item.date}`);
+			
+			this.change()
+			this.set_doc_lists_update();
+			
+		},
+		set_to_day_all(item_index){
+			this.set_to_day('week_list')
+			this.set_to_day('week_list_prev')
+			this.set_to_day('week_list_next')
+			this.set_to_day('week_list_prev_week')
+			this.set_to_day('week_list_next_week')
+			
+		},
+		get_month(type){
+			let nowMonth = this.nowMonth;
+			let nowYear = Number(this.nowYear);
+			let nowDay = this.nowDay;
+			
+			if(type == 'prev'){
+				if(nowMonth == 1){
+					nowMonth = 12;
+					nowYear = nowYear - 1;
+				}else{
+					nowMonth--;
+				}
+			}else if(type == 'next'){
+				if(nowMonth == 12){
+					nowMonth = 1;
+					nowYear = nowYear + 1;
+				}else{
+					nowMonth++;
+				}
+			}
+			
+			let days = this.get_month_days(nowMonth,nowYear);
+			if(nowDay > days){
+				nowDay = days;
+			}
+
+			return this.date_parse(`${nowYear}-${nowMonth}-${nowDay}`);
+		},
+		
+		date_parse(str){
+			return Date.parse(str.replace(/-(\d)(?!\d)/g, '-0$1'));
+		},
+		switch_month_week(type = 'next',update_week = false){
+			if(this.retract){
+				if(type == 'prev'){
+					this.get_date(this.nowTime - 86400 * 7 * 1000);
+				}else if(type == 'next'){
+					this.get_date(this.nowTime + 86401 * 7 * 1000);
+				}
+				if(update_week){
+					this.update_swiper_item('week');
+					this.set_doc_lists_update();
+				}
+			}else{
+				this.get_date(this.get_month(type))
+				this.update_swiper_item('month');
+			}
+			this.set_doc_lists_update();
+			
+			this.set_to_day_all();
+			
+			if(update_week){
+				this.change()
+			}
+			
+		},
+		update_swiper_item(type = 'month'){
+			if(type == 'month'){
+				if(this.current == 0){
+					this.change_date_month('next')
+				}else if(this.current == 2){
+					this.change_date_month('prev')
+				}
+			}else if(type == 'week'){
+
+				if(this.current == 0){
+					this.change_date_week('next')
+				}else if(this.current == 2){
+					this.change_date_week('prev')
+				}
+			}
+		},
+		next(){
+			this.get_date(this.next_date)
+		},
+		get_date(value = '',type = 'same'){
+			let date = new Date();
+			if(value){
+				date = new Date(value);
+			}
+			let nowMonth = date.getMonth() + 1,
+				nowYear = date.getFullYear(),
+				nowDay = date.getDate(),
+				nowTime = date.getTime(),
+				nowWeek = date.getDay();
+
+			
+			let days = this.get_month_days(nowMonth,nowYear);
+			let start_date = new Date(nowYear,nowMonth - 1, 1);
+			let end_date = new Date(nowYear,nowMonth - 1, days);
+			let prev_date = new Date(start_date.getTime() - 1);
+			let prev_date_days = prev_date.getDate();
+			let next_date = new Date(end_date.getTime() + 86401 * 1000);
+			let next_date_days = next_date.getDate();
+			let start_week = start_date.getDay();
+			let date_arrs = [];
+			
+			let week_list = [];
+			let count_days = 35;
+			
+			for(let i = prev_date_days - start_week + 1; i <= prev_date_days; i++){
+				date_arrs.push({
+					day:i,
+					type:'prev',
+					date:`${prev_date.getFullYear()}-${prev_date.getMonth()+1}-${i}`
+				})
+			}
+			
+			for(let i = 1; i <= days; i++){
+				date_arrs.push({
+					day:i,
+					type:'month',
+					today:i == nowDay ? true : false,
+					date:`${nowYear}-${nowMonth}-${i}`
+				})
+				
+				if(i == nowDay && type == 'same'){
+					this.date = `${nowYear}-${nowMonth}-${i}`;
+				}
+				
+			}
+			if(this.debug) console.log(value,date,this.date,`${next_date.getFullYear()}-${next_date.getMonth()+1}-${next_date.getDate()}`)
+			let date_arrs_length = date_arrs.length;
+			
+			// if(date_arrs_length > 35){
+				count_days = 42;
+			// }
+			for(let i = 1; i <= count_days - date_arrs_length; i++){
+				date_arrs.push({
+					day:i,
+					type:'next',
+					date:`${next_date.getFullYear()}-${next_date.getMonth()+1}-${i}`
+				})
+			}
+			
+			for(let i = 0; i < date_arrs.length / 7; i++){
+				let arr = [];
+				for(let j = 0; j < 7; j++){
+					
+					if(date_arrs[i * 7 + j].today){
+						if(type == 'same'){
+							this.to_week_index = i
+						}
+					}
+					arr.push(date_arrs[i * 7 + j]);
+				}
+				week_list.push(arr);
+			}
+			
+			if(type == 'same'){
+				this.week_list = week_list;
+				this.nowYear = nowYear;
+				this.nowMonth = nowMonth;
+				this.nowDay = nowDay;
+				this.nowTime = nowTime;
+				this.start_date = start_date;
+				this.end_date = end_date;
+				this.prev_date = prev_date;
+				this.next_date = next_date;
+				
+				
+			}else if(type == 'prev'){
+				this.week_list_prev = week_list;
+			}else if(type == 'next'){
+				this.week_list_next = week_list;
+			}
+			
+		},
+		get_month_days(nowMonth,nowYear){
+			let month_arr = [1,3,5,7,8,10,12];
+			let days = 0;
+			if(nowMonth == 2){
+				if(nowYear % 4 == 0){
+					days = 29;
+				}else{
+					days = 28;
+				}
+			}else if(month_arr.indexOf(nowMonth) >= 0){
+				days = 31;
+			}else{
+				days = 30;
+			}
+			return days;
+		}
+	}
+}
+</script>
+
+<style lang="less">
+@import (less) '../../static/lx-calendar/fonts/iconfont.css';
+
+@color: #FFFFFF;
+@color_disabled: #C3F0E7;
+@color_standard: #fff;
+@color_border: #f5f5f5;
+.date{
+	width: 750rpx;
+}
+.head{
+	display: flex; 
+	align-items: center; 
+	height: 80rpx; 
+	// justify-content: center;
+	// border-bottom: 1rpx solid @color_border; 
+	color:@color_standard;
+	padding-left: 40upx;
+	.title{
+		width: 200rpx;
+		font-size: 30rpx; 
+		text-align: left;
+	}
+	.icon{
+		display: block;
+		.next{
+			transform: rotate(180deg); display: block;
+		}
+	}
+}
+.retract{
+	display: flex; justify-content: center; align-items: center; height: 80rpx;;
+	.iconfont{
+		transform: rotate(270deg);
+		&.retract_icon{
+			transform: rotate(90deg);
+		}
+	}
+}
+.date_dl{
+	display: flex; width: 100%;
+	.dd{
+		flex:1; text-align: center;
+		height: 80rpx;
+		font-size: 26rpx;
+		color: #CFF8F0;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		position: relative;
+		.num{
+			width: 60rpx;
+			height: 60rpx; 
+			border-radius: 12upx; 
+			line-height: 60rpx; 
+			&.disabled{
+				color: @color_disabled;
+			}
+			&.month{
+				color: @color_standard;
+			}
+			&.today{
+				background: @color; 
+				color: #FF5C03;
+			}
+		}
+		.dot{
+			width: 8rpx; 
+			height: 8rpx; 
+			border-radius: 50%; 
+			background: @color;
+			position: absolute; 
+			bottom: 0; 
+			left: 50%; 
+			transform: translateX(-50%);
+		}
+	}
+}
+</style>

+ 244 - 0
components/me-tabs/me-tabs.vue

@@ -0,0 +1,244 @@
+<!-- tab组件: <me-tabs v-model="tabIndex" :tabs="tabs" @change="tabChange"></me-tabs> -->
+<template>
+	<view class="me-tabs" :class="{'tabs-fixed': fixed}" :style="{height: tabHeightVal}">
+		<scroll-view v-if="tabs.length" :id="viewId" :scroll-left="scrollLeft" scroll-x scroll-with-animation :scroll-animation-duration="300">
+			<view class="tabs-item" :class="{'tabs-flex':!isScroll, 'tabs-scroll':isScroll}">
+				<!-- tab -->
+				<view class="tab-item"  v-for="(tab, i) in tabs"  :id="'tabitem'+i" :ref="'tabitem'+i" :class="{'active': value===i}" :style="{ height: tabHeightVal, 'line-height':tabHeightVal,'color':value===i?actColor:norColor }" :key="i" @click="tabClick(i)">
+					{{getTabName(tab)}}
+				</view>
+				
+				<!-- 下划线 -->
+				<view class="tabs-line" :style="{left:lineLeft}"></view>
+			</view>
+		</scroll-view>
+	</view>
+</template>
+
+
+<script>
+	export default {
+		props: {
+			tabs: {
+				type: Array,
+				default() {
+					return []
+				}
+			},
+			nameKey: {
+				type: String,
+				default: 'dictLabel'
+			},
+			value: {
+				type: [String, Number],
+				default: 0
+			},
+			fixed: Boolean,
+			tabWidth: Number,
+			height: {
+				type: Number,
+				default: 64
+			},
+			norColor: {
+				type: String,
+				default: '#333333'
+			},
+			actColor: {
+				type: String,
+				default: '#FF5C03'
+			},
+		},
+		data() {
+			return {
+				viewId: 'id_' + Math.random().toString(36).substr(2, 16),
+				scrollLeft: 0,
+				tabListSize: [],
+				lineLeft: '0px',
+				
+			}
+		},
+		computed: {
+			isScroll() {
+				return this.tabWidth && this.tabs.length;
+			},
+			tabHeightPx() {
+				return uni.upx2px(this.height);
+			},
+			tabHeightVal() {
+				return this.tabHeightPx + 'px';
+			},
+			tabWidthPx() {
+				return uni.upx2px(this.tabWidth);
+			},
+			tabWidthVal() {
+				return this.isScroll ? this.tabWidthPx + 'px' : '';
+			}
+		},
+		watch: {
+			tabs() {
+				this.warpWidth = null;
+				this.updateTabs();
+			},
+			value() {
+				console.log("qxj value changed");
+				this.updateTabs();
+			}
+		},
+		methods: {
+			getTabName(tab) {
+				return typeof tab === "object" ? tab[this.nameKey] : tab;
+			},
+			tabClick(i) {
+				if (this.value !== i) {
+					this.$emit("input", i);
+					this.$emit("change", i);
+				}
+			},
+			async updateTabs() {
+				await this.selectorQuery();
+				this.scrollCenter();
+				this.updateLineLeft();
+			},
+			async scrollCenter() {
+				if (!this.isScroll) return;
+				if (!this.warpWidth) {
+					let rect = await this.initWarpRect();
+					this.warpWidth = rect ? rect.width : uni.getSystemInfoSync().windowWidth;
+				}
+				let tabLeft = this.tabWidthPx * this.value + this.tabWidthPx / 2;
+				let diff = tabLeft - this.warpWidth / 2;
+				this.scrollLeft = diff;
+				// #ifdef MP-TOUTIAO
+				this.scrollTimer && clearTimeout(this.scrollTimer);
+				this.scrollTimer = setTimeout(() => {
+					this.scrollLeft = Math.ceil(diff);
+				}, 400);
+				// #endif
+			},
+			initWarpRect() {
+				return new Promise(resolve => {
+					setTimeout(() => {
+						let query = uni.createSelectorQuery();
+						// #ifndef MP-ALIPAY
+						query = query.in(this);
+						// #endif
+						query.select('#' + this.viewId).boundingClientRect(data => {
+							resolve(data);
+						}).exec();
+					}, 20);
+				});
+			},
+			selectorQuery() {
+				return new Promise(resolve => {
+					if (this.tabs.length === 0) {
+						resolve();
+						return;
+					}
+					uni.createSelectorQuery().in(this).select('.tabs-item').fields({
+						dataset: true,
+						size: true,
+					}, res => {
+						if (res) {
+							this.swiperWidth = res.width;
+						}
+					}).exec();
+					uni.createSelectorQuery().in(this).selectAll('.tab-item').boundingClientRect(rects => {
+						this.tabListSize = rects;
+						resolve();
+					}).exec();
+				});
+			},
+			updateLineLeft() {
+				
+				if (this.isScroll && this.tabListSize.length > 0) {
+					let currentSize = this.tabListSize[this.value];
+					let tabWid = currentSize.left + currentSize.width / 2.0;
+					this.lineLeft = tabWid + 'px';
+					console.log("qxj isScroll updateLineLeft value:"+this.lineLeft);
+				} else {
+					this.lineLeft = 100 / this.tabs.length * (this.value + 1) - 100 / (this.tabs.length * 2) + '%';
+					console.log("qxj  updateLineLeft value:"+this.lineLeft);
+				}
+			}
+		},
+		mounted() {
+			this.updateTabs();
+		}
+	}
+</script>
+
+
+
+
+<style lang="scss">
+	.me-tabs{
+		position: relative;
+		font-size: 28rpx;
+		background-color: #fff;
+		border-bottom: 0rpx solid #eee;
+		box-sizing: border-box;
+		overflow-y: hidden;
+		background-color: #fff;
+		&.tabs-fixed{
+			z-index: 990;
+			position: fixed;
+			top: var(--window-top);
+			left: 0;
+			width: 100%;
+		}
+		&.tabs-fixed1{
+			z-index: 990;
+			position: fixed;
+			top: 80;
+			left: 0;
+			width: 100%;
+		}
+	
+		.tabs-item{
+			position: relative;
+			white-space: nowrap;
+			padding-bottom: 30rpx; // 撑开高度,再配合me-tabs的overflow-y: hidden,以达到隐藏滚动条的目的
+			box-sizing: border-box;
+			.tab-item{
+				position: relative;
+				text-align: center;
+				box-sizing: border-box;
+				padding-left: 20rpx;
+				padding-right:20rpx;
+				color:#333;
+				font-size: 32rpx;
+				&.active{
+					font-weight: bold;
+					color: #FF5C03;
+				}
+			}
+		}
+		
+		// 平分的方式显示item
+		.tabs-flex{
+			display: flex;
+			.tab-item{
+				flex: 1;
+			}
+		}
+		// 居左显示item,支持水平滑动
+		.tabs-scroll{
+			.tab-item{
+				display: inline-block;
+			}
+		}
+		
+		// 选中tab的线
+		.tabs-line{
+			z-index: 1;
+			position: absolute;
+			bottom: 32rpx; // 至少与.tabs-item的padding-bottom一致,才能保证在底部边缘
+			width: 50rpx;
+			height: 6rpx;
+			transform: translateX(-50%);
+			border-radius: 4rpx;
+			transition: left .3s;
+			background: #FF5C03;
+		}
+	}
+</style>

+ 115 - 0
components/menu-pop/menu-pop.vue

@@ -0,0 +1,115 @@
+<template>
+	<view v-show="isShowMsgPop">
+		<view class="mask" @tap='clickMask' @touchmove.stop.prevent="moveHandle"></view>
+		<view class="pop-menu">
+			<view class="arrow">
+				<image src="/static/images/customer/pop_arrow.png" mode="widthFix"></image>
+			</view>
+			<view class="menu">
+				<view class="u-f-ac" @tap='clickOrder'>
+					<image src="/static/images/customer/sq_zb.png" mode="widthFix"></image>
+					<text>生成订单</text>
+				</view>
+				<view class="u-f-ac" @tap='clickTransfer'>
+					<image src="/static/images/customer/zhuangyi.png" mode="widthFix"></image>
+					<text>转移</text>
+				</view>
+				<view class="u-f-ac" @tap='clickRecovery'>
+					<image src="/static/images/customer/recyle.png" mode="widthFix"></image>
+					<text>回收</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			isShowMsgPop:{
+				type:Boolean,
+				default:false
+			}
+		},
+		data(){
+			return{
+				
+			}
+		},
+		methods:{
+			//蒙层点击
+			clickMask(){
+				return this.$emit('clickMask');
+			},
+			
+			clickOrder(){
+				return this.$emit('clickOrder');
+			},
+			
+			clickTransfer(){
+				return this.$emit('clickTransfer');
+			},
+			clickRecovery(){
+				return this.$emit('clickRecovery');
+			},
+			moveHandle(){
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	
+	.u-f-ac{
+		display: flex;
+		align-items: center;
+	}
+	
+	.pop-menu {
+		margin-top: -30rpx;
+		width: 350rpx;
+		height: 230rpx;
+		position: absolute;
+		z-index: 666;
+		right: 16rpx;
+	
+		.arrow {
+			text-align: right;
+			padding-right: 25rpx;
+			image {
+				width: 30rpx;
+				height: 15rpx;
+			}
+		}
+	
+		.menu {
+			margin-top: -13rpx;
+			background-color: #FFFFFF;
+			border-radius: 10rpx;
+			text-align: center;
+			padding: 0 30rpx;
+	
+			view {
+				width: 270rpx;
+				height: calc(200rpx/2);
+			}
+	
+			image {
+				width: 36rpx;
+				height: 36rpx;
+				margin-right: 20rpx;
+			}
+		}
+	}
+	
+	.mask {
+		position: fixed;
+		z-index: 600;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		background-color: rgba(0, 0, 0, 0.3);
+	}
+</style>

+ 75 - 0
components/message/msg-list.vue

@@ -0,0 +1,75 @@
+<template>
+	<view class="msg-item" @tap='clickMsgItem'>
+		<view class="msg-timer">{{$formatDate(item.createTime)}}</view>
+		<view class="msg-content u-f u-f-jsb">
+			
+			<image class="msg-img" v-if="item.msgType==1" src="@/static/images/message/regular_client_icon_80.png" mode="widthFix"></image>
+			<image class="msg-img" v-else-if="item.msgType==2" src="@/static/images/message/Timingvideo.png" mode="widthFix"></image>
+			<image class="msg-img" v-else-if="item.msgType==3" src="@/static/images/message/budget_icon_80.png" mode="widthFix"></image>
+			<image class="msg-img" v-else src="@/static/images/message/announcement_icon_100.png" mode="widthFix"></image>
+			
+			<view class="msg-txt">{{item.content}}</view>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			item:{
+				type:Object,
+				default:function(){
+					return {};
+				}
+			},
+			index:{
+				type:Number,
+				default:-1
+			}
+		},
+		data(){
+			return{
+				
+			}
+		},
+		methods:{
+			clickMsgItem(){
+				return this.$emit('clickMsgItem',this.index)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.msg-item{
+		width: 710rpx;
+		padding: 0 20rpx;
+		.msg-timer{
+			margin: 30rpx 0;
+			text-align: center;
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #999999;
+		}
+		.msg-content{
+			.msg-img{
+				width: 90rpx;
+				height: 90rpx;
+				margin-right: 20rpx;
+			}
+			.msg-txt{
+				background-color: #FFFFFF;
+				width: 600rpx;
+				padding: 30rpx 20rpx;
+				border-radius: 0px 30px 30px 30px;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 48rpx;
+			}
+		}
+	}
+</style>

+ 100 - 0
components/message/msg-pop.vue

@@ -0,0 +1,100 @@
+<template>
+	<view v-show="isShowMsgPop">
+		<view class="mask" @tap='clickMask' @touchmove.stop.prevent="moveHandle"></view>
+		<view class="pop-menu">
+			<view class="arrow">
+				<image src="/static/message/pop_arrow.png" mode="widthFix"></image>
+			</view>
+			<view class="menu">
+				<view class="u-f-ac" @tap='clickChat'>
+					<image src="/static/message/talk36_2.png" mode="widthFix"></image>
+					<text>发起聊天</text>
+				</view>
+				<view class="u-f-ac" @tap='clickScan'>
+					<image src="/static/message/scan36.png" mode="widthFix"></image>
+					<text>扫一扫</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			isShowMsgPop:{
+				type:Boolean,
+				default:false
+			}
+		},
+		data(){
+			return{
+				
+			}
+		},
+		methods:{
+			//蒙层点击
+			clickMask(){
+				return this.$emit('clickMask');
+			},
+			//聊天点击
+			clickChat(){
+				return this.$emit('clickChat');
+			},
+			//扫一扫点击
+			clickScan(){
+				return this.$emit('clickScan');
+			},
+			moveHandle(){}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.pop-menu {
+		margin-top: -40rpx;
+		width: 350rpx;
+		height: 230rpx;
+		position: absolute;
+		z-index: 666;
+		right: 20rpx;
+	
+		.arrow {
+			text-align: right;
+			padding-right: 25rpx;
+			image {
+				width: 30rpx;
+				height: 15rpx;
+			}
+		}
+	
+		.menu {
+			margin-top: -13rpx;
+			background-color: #FFFFFF;
+			border-radius: 10rpx;
+			text-align: center;
+			padding: 0 30rpx;
+	
+			view {
+				width: 270rpx;
+				height: calc(200rpx/2);
+			}
+	
+			image {
+				width: 36rpx;
+				height: 36rpx;
+				margin-right: 20rpx;
+			}
+		}
+	}
+	
+	.mask {
+		position: fixed;
+		z-index: 600;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		background-color: rgba(0, 0, 0, 0.3);
+	}
+</style>

+ 11 - 0
components/mp-html/editable/config.js

@@ -0,0 +1,11 @@
+// 以下项目可以删减或更换顺序,但不能添加或更改名字
+export default {
+  // 普通标签的菜单项
+  node: ['大小', '斜体', '粗体', '下划线', '居中', '缩进', '上移', '下移', '删除'],
+  // 图片的菜单项
+  img: ['换图', '宽度', '超链接', '预览图', '禁用预览', '上移', '下移', '删除'],
+  // 链接的菜单项
+  link: ['更换链接', '上移', '下移', '删除'],
+  // 音视频的菜单项
+  media: ['封面', '循环', '自动播放', '上移', '下移', '删除']
+}

+ 532 - 0
components/mp-html/editable/index.js

@@ -0,0 +1,532 @@
+/**
+ * @fileoverview editable 插件
+ */
+import config from './config'
+import Parser from '../parser'
+
+function Editable (vm) {
+  this.vm = vm
+  this.editHistory = [] // 历史记录
+  this.editI = -1 // 历史记录指针
+  vm._mask = [] // 蒙版被点击时进行的操作
+
+  vm._setData = function (path, val) {
+    const paths = path.split('.')
+    let target = vm
+    for (let i = 0; i < paths.length - 1; i++) {
+      target = target[paths[i]]
+    }
+    vm.$set(target, paths.pop(), val)
+  }
+
+  /**
+   * @description 移动历史记录指针
+   * @param {Number} num 移动距离
+   */
+  const move = num => {
+    setTimeout(() => {
+      const item = this.editHistory[this.editI + num]
+      if (item) {
+        this.editI += num
+        vm._setData(item.key, item.value)
+      }
+    }, 200)
+  }
+  vm.undo = () => move(-1) // 撤销
+  vm.redo = () => move(1) // 重做
+
+  /**
+   * @description 更新记录
+   * @param {String} path 更新内容路径
+   * @param {*} oldVal 旧值
+   * @param {*} newVal 新值
+   * @param {Boolean} set 是否更新到视图
+   * @private
+   */
+  vm._editVal = (path, oldVal, newVal, set) => {
+    // 当前指针后的内容去除
+    while (this.editI < this.editHistory.length - 1) {
+      this.editHistory.pop()
+    }
+
+    // 最多存储 30 条操作记录
+    while (this.editHistory.length > 30) {
+      this.editHistory.pop()
+      this.editI--
+    }
+
+    const last = this.editHistory[this.editHistory.length - 1]
+    if (!last || last.key !== path) {
+      if (last) {
+        // 去掉上一次的新值
+        this.editHistory.pop()
+        this.editI--
+      }
+      // 存入这一次的旧值
+      this.editHistory.push({
+        key: path,
+        value: oldVal
+      })
+      this.editI++
+    }
+
+    // 存入本次的新值
+    this.editHistory.push({
+      key: path,
+      value: newVal
+    })
+    this.editI++
+
+    // 更新到视图
+    if (set) {
+      vm._setData(path, newVal)
+    }
+  }
+
+  /**
+   * @description 获取菜单项
+   * @private
+   */
+  vm._getItem = function (node, up, down) {
+    let items
+    let i
+    if (node.name === 'img') {
+      items = config.img.slice(0)
+      if (!vm.getSrc) {
+        i = items.indexOf('换图')
+        if (i !== -1) {
+          items.splice(i, 1)
+        }
+        i = items.indexOf('超链接')
+        if (i !== -1) {
+          items.splice(i, 1)
+        }
+        i = items.indexOf('预览图')
+        if (i !== -1) {
+          items.splice(i, 1)
+        }
+      }
+      i = items.indexOf('禁用预览')
+      if (i !== -1 && node.attrs.ignore) {
+        items[i] = '启用预览'
+      }
+    } else if (node.name === 'a') {
+      items = config.link.slice(0)
+      if (!vm.getSrc) {
+        i = items.indexOf('更换链接')
+        if (i !== -1) {
+          items.splice(i, 1)
+        }
+      }
+    } else if (node.name === 'video' || node.name === 'audio') {
+      items = config.media.slice(0)
+      i = items.indexOf('封面')
+      if (!vm.getSrc && i !== -1) {
+        items.splice(i, 1)
+      }
+      i = items.indexOf('循环')
+      if (node.attrs.loop && i !== -1) {
+        items[i] = '不循环'
+      }
+      i = items.indexOf('自动播放')
+      if (node.attrs.autoplay && i !== -1) {
+        items[i] = '不自动播放'
+      }
+    } else {
+      items = config.node.slice(0)
+    }
+    if (!up) {
+      i = items.indexOf('上移')
+      if (i !== -1) {
+        items.splice(i, 1)
+      }
+    }
+    if (!down) {
+      i = items.indexOf('下移')
+      if (i !== -1) {
+        items.splice(i, 1)
+      }
+    }
+    return items
+  }
+
+  /**
+   * @description 显示 tooltip
+   * @param {object} obj
+   * @private
+   */
+  vm._tooltip = function (obj) {
+    vm.$set(vm, 'tooltip', {
+      top: obj.top,
+      items: obj.items
+    })
+    vm._tooltipcb = obj.success
+  }
+
+  /**
+   * @description 显示滚动条
+   * @param {object} obj
+   * @private
+   */
+  vm._slider = function (obj) {
+    vm.$set(vm, 'slider', {
+      min: obj.min,
+      max: obj.max,
+      value: obj.value,
+      top: obj.top
+    })
+    vm._slideringcb = obj.changing
+    vm._slidercb = obj.change
+  }
+
+  /**
+   * @description 点击蒙版
+   * @private
+   */
+  vm._maskTap = function () {
+    // 隐藏所有悬浮窗
+    while (vm._mask.length) {
+      (vm._mask.pop())()
+    }
+    if (vm.tooltip) {
+      vm.$set(vm, 'tooltip', null)
+    }
+    if (vm.slider) {
+      vm.$set(vm, 'slider', null)
+    }
+  }
+
+  /**
+   * @description 插入节点
+   * @param {Object} node
+   */
+  function insert (node) {
+    if (vm._edit) {
+      vm._edit.insert(node)
+    } else {
+      const nodes = vm.nodes.slice(0)
+      nodes.push(node)
+      vm._editVal('nodes', vm.nodes, nodes, true)
+    }
+  }
+
+  /**
+   * @description 在光标处插入指定 html 内容
+   * @param {String} html 内容
+   */
+  vm.insertHtml = html => {
+    this.inserting = true
+    const arr = new Parser(vm).parse(html)
+    this.inserting = undefined
+    for (let i = 0; i < arr.length; i++) {
+      insert(arr[i])
+    }
+  }
+
+  /**
+   * @description 在光标处插入图片
+   */
+  vm.insertImg = function () {
+    vm.getSrc && vm.getSrc('img').then(src => {
+      if (typeof src === 'string') {
+        src = [src]
+      }
+      const parser = new Parser(vm)
+      for (let i = 0; i < src.length; i++) {
+        insert({
+          name: 'img',
+          attrs: {
+            src: parser.getUrl(src[i])
+          }
+        })
+      }
+    }).catch(() => { })
+  }
+
+  /**
+   * @description 在光标处插入一个链接
+   */
+  vm.insertLink = function () {
+    vm.getSrc && vm.getSrc('link').then(url => {
+      insert({
+        name: 'a',
+        attrs: {
+          href: url
+        },
+        children: [{
+          type: 'text',
+          text: url
+        }]
+      })
+    }).catch(() => { })
+  }
+
+  /**
+   * @description 在光标处插入一个表格
+   * @param {Number} rows 行数
+   * @param {Number} cols 列数
+   */
+  vm.insertTable = function (rows, cols) {
+    const table = {
+      name: 'table',
+      attrs: {
+        style: 'display:table;width:100%;margin:10px 0;text-align:center;border-spacing:0;border-collapse:collapse;border:1px solid gray'
+      },
+      children: []
+    }
+    for (let i = 0; i < rows; i++) {
+      const tr = {
+        name: 'tr',
+        attrs: {},
+        children: []
+      }
+      for (let j = 0; j < cols; j++) {
+        tr.children.push({
+          name: 'td',
+          attrs: {
+            style: 'padding:2px;border:1px solid gray'
+          },
+          children: [{
+            type: 'text',
+            text: ''
+          }]
+        })
+      }
+      table.children.push(tr)
+    }
+    insert(table)
+  }
+
+  /**
+   * @description 插入视频/音频
+   * @param {Object} node
+   */
+  function insertMedia (node) {
+    if (typeof node.src === 'string') {
+      node.src = [node.src]
+    }
+    const parser = new Parser(vm)
+    // 拼接主域名
+    for (let i = 0; i < node.src.length; i++) {
+      node.src[i] = parser.getUrl(node.src[i])
+    }
+    insert({
+      name: 'div',
+      attrs: {
+        style: 'text-align:center'
+      },
+      children: [node]
+    })
+  }
+
+  /**
+   * @description 在光标处插入一个视频
+   */
+  vm.insertVideo = function () {
+    vm.getSrc && vm.getSrc('video').then(src => {
+      insertMedia({
+        name: 'video',
+        attrs: {
+          controls: 'T'
+        },
+        children: [],
+        src,
+        // #ifdef APP-PLUS
+        html: `<video src="${src}" style="width:100%;height:100%"></video>`
+        // #endif
+      })
+    }).catch(() => { })
+  }
+
+  /**
+   * @description 在光标处插入一个音频
+   */
+  vm.insertAudio = function () {
+    vm.getSrc && vm.getSrc('audio').then(attrs => {
+      let src
+      if (attrs.src) {
+        src = attrs.src
+        attrs.src = undefined
+      } else {
+        src = attrs
+        attrs = {}
+      }
+      attrs.controls = 'T'
+      insertMedia({
+        name: 'audio',
+        attrs,
+        children: [],
+        src
+      })
+    }).catch(() => { })
+  }
+
+  /**
+   * @description 在光标处插入一段文本
+   */
+  vm.insertText = function () {
+    insert({
+      name: 'p',
+      attrs: {},
+      children: [{
+        type: 'text',
+        text: ''
+      }]
+    })
+  }
+
+  /**
+   * @description 清空内容
+   */
+  vm.clear = function () {
+    vm._maskTap()
+    vm._edit = undefined
+    vm.$set(vm, 'nodes', [{
+      name: 'p',
+      attrs: {},
+      children: [{
+        type: 'text',
+        text: ''
+      }]
+    }])
+  }
+
+  /**
+   * @description 获取编辑后的 html
+   */
+  vm.getContent = function () {
+    let html = '';
+    // 递归遍历获取
+    (function traversal (nodes, table) {
+      for (let i = 0; i < nodes.length; i++) {
+        let item = nodes[i]
+        if (item.type === 'text') {
+          html += item.text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\n/g, '<br>').replace(/\xa0/g, '&nbsp;') // 编码实体
+        } else {
+          if (item.name === 'img') {
+            item.attrs.i = ''
+            // 还原被转换的 svg
+            if ((item.attrs.src || '').includes('data:image/svg+xml;utf8,')) {
+              html += item.attrs.src.substr(24).replace(/%23/g, '#').replace('<svg', '<svg style="' + (item.attrs.style || '') + '"')
+              continue
+            }
+          } else if (item.name === 'video' || item.name === 'audio') {
+            // 还原 video 和 audio 的 source
+            item = JSON.parse(JSON.stringify(item))
+            if (item.src.length > 1) {
+              item.children = []
+              for (let j = 0; j < item.src.length; j++) {
+                item.children.push({
+                  name: 'source',
+                  attrs: {
+                    src: item.src[j]
+                  }
+                })
+              }
+            } else {
+              item.attrs.src = item.src[0]
+            }
+          } else if (item.name === 'div' && (item.attrs.style || '').includes('overflow:auto') && (item.children[0] || {}).name === 'table') {
+            // 还原滚动层
+            item = item.children[0]
+          }
+          // 还原 table
+          if (item.name === 'table') {
+            item = JSON.parse(JSON.stringify(item))
+            table = item.attrs
+            if ((item.attrs.style || '').includes('display:grid')) {
+              item.attrs.style = item.attrs.style.split('display:grid')[0]
+              const children = [{
+                name: 'tr',
+                attrs: {},
+                children: []
+              }]
+              for (let j = 0; j < item.children.length; j++) {
+                item.children[j].attrs.style = item.children[j].attrs.style.replace(/grid-[^;]+;*/g, '')
+                if (item.children[j].r !== children.length) {
+                  children.push({
+                    name: 'tr',
+                    attrs: {},
+                    children: [item.children[j]]
+                  })
+                } else {
+                  children[children.length - 1].children.push(item.children[j])
+                }
+              }
+              item.children = children
+            }
+          }
+          html += '<' + item.name
+          for (const attr in item.attrs) {
+            let val = item.attrs[attr]
+            if (!val) continue
+            if (val === 'T' || val === true) {
+              // bool 型省略值
+              html += ' ' + attr
+              continue
+            } else if (item.name[0] === 't' && attr === 'style' && table) {
+              // 取消为了显示 table 添加的 style
+              val = val.replace(/;*display:table[^;]*/, '')
+              if (table.border) {
+                val = val.replace(/border[^;]+;*/g, $ => $.includes('collapse') ? $ : '')
+              }
+              if (table.cellpadding) {
+                val = val.replace(/padding[^;]+;*/g, '')
+              }
+              if (!val) continue
+            }
+            html += ' ' + attr + '="' + val.replace(/"/g, '&quot;') + '"'
+          }
+          html += '>'
+          if (item.children) {
+            traversal(item.children, table)
+            html += '</' + item.name + '>'
+          }
+        }
+      }
+    })(vm.nodes)
+
+    // 其他插件处理
+    for (let i = vm.plugins.length; i--;) {
+      if (vm.plugins[i].onGetContent) {
+        html = vm.plugins[i].onGetContent(html) || html
+      }
+    }
+
+    return html
+  }
+}
+
+Editable.prototype.onUpdate = function (content, config) {
+  if (this.vm.editable) {
+    this.vm._maskTap()
+    config.entities.amp = '&'
+    if (!this.inserting) {
+      this.vm._edit = undefined
+      if (!content) {
+        setTimeout(() => {
+          this.vm.$set(this.vm, 'nodes', [{
+            name: 'p',
+            attrs: {},
+            children: [{
+              type: 'text',
+              text: ''
+            }]
+          }])
+        }, 0)
+      }
+    }
+  }
+}
+
+Editable.prototype.onParse = function (node) {
+  // 空白单元格可编辑
+  if (this.vm.editable && (node.name === 'td' || node.name === 'th') && !this.vm.getText(node.children)) {
+    node.children.push({
+      type: 'text',
+      text: ''
+    })
+  }
+}
+
+export default Editable

+ 540 - 0
components/mp-html/mp-html.vue

@@ -0,0 +1,540 @@
+<template>
+  <view id="_root" :class="(selectable?'_select ':'')+'_root'" :style="(editable?'min-height:200px;':'')+containerStyle" @tap="_containTap">
+    <slot v-if="!nodes[0]" />
+    <!-- #ifndef APP-PLUS-NVUE -->
+    <node v-else :childs="nodes" :opts="[lazyLoad,loadingImg,errorImg,showImgMenu,selectable,editable,placeholder,'nodes']" name="span" />
+    <!-- #endif -->
+    <!-- #ifdef APP-PLUS-NVUE -->
+    <web-view ref="web" src="/static/app-plus/mp-html/local.html" :style="'margin-top:-2px;height:' + height + 'px'" @onPostMessage="_onMessage" />
+    <!-- #endif -->
+    <view v-if="tooltip" class="_tooltip_contain" :style="'top:'+tooltip.top+'px'">
+      <view class="_tooltip">
+        <view v-for="(item, index) in tooltip.items" v-bind:key="index" class="_tooltip_item" :data-i="index" @tap="_tooltipTap">{{item}}</view>
+      </view>
+    </view>
+    <view v-if="slider" class="_slider" :style="'top:'+slider.top+'px'">
+      <slider :value="slider.value" :min="slider.min" :max="slider.max" handle-size="14" block-size="14" show-value activeColor="white" style="padding:3px" @changing="_sliderChanging" @change="_sliderChange" />
+    </view>
+  </view>
+</template>
+
+<script>
+/**
+ * mp-html v2.3.2
+ * @description 富文本组件
+ * @tutorial https://github.com/jin-yufeng/mp-html
+ * @property {String} container-style 容器的样式
+ * @property {String} content 用于渲染的 html 字符串
+ * @property {Boolean} copy-link 是否允许外部链接被点击时自动复制
+ * @property {String} domain 主域名,用于拼接链接
+ * @property {String} error-img 图片出错时的占位图链接
+ * @property {Boolean} lazy-load 是否开启图片懒加载
+ * @property {string} loading-img 图片加载过程中的占位图链接
+ * @property {Boolean} pause-video 是否在播放一个视频时自动暂停其他视频
+ * @property {Boolean} preview-img 是否允许图片被点击时自动预览
+ * @property {Boolean} scroll-table 是否给每个表格添加一个滚动层使其能单独横向滚动
+ * @property {Boolean | String} selectable 是否开启长按复制
+ * @property {Boolean} set-title 是否将 title 标签的内容设置到页面标题
+ * @property {Boolean} show-img-menu 是否允许图片被长按时显示菜单
+ * @property {Object} tag-style 标签的默认样式
+ * @property {Boolean | Number} use-anchor 是否使用锚点链接
+ * @event {Function} load dom 结构加载完毕时触发
+ * @event {Function} ready 所有图片加载完毕时触发
+ * @event {Function} imgtap 图片被点击时触发
+ * @event {Function} linktap 链接被点击时触发
+ * @event {Function} play 音视频播放时触发
+ * @event {Function} error 媒体加载出错时触发
+ */
+// #ifndef APP-PLUS-NVUE
+import node from './node/node'
+// #endif
+import Parser from './parser'
+import editable from './editable/index.js'
+const plugins=[editable,]
+// #ifdef APP-PLUS-NVUE
+const dom = weex.requireModule('dom')
+// #endif
+export default {
+  name: 'mp-html',
+  data() {
+    return {
+      tooltip: null,
+      slider: null,
+      nodes: [],
+      // #ifdef APP-PLUS-NVUE
+      height: 3
+      // #endif
+    }
+  },
+  props: {
+    editable: Boolean,
+    placeholder: String,
+    containerStyle: {
+      type: String,
+      default: ''
+    },
+    content: {
+      type: String,
+      default: ''
+    },
+    copyLink: {
+      type: [Boolean, String],
+      default: true
+    },
+    domain: String,
+    errorImg: {
+      type: String,
+      default: ''
+    },
+    lazyLoad: {
+      type: [Boolean, String],
+      default: false
+    },
+    loadingImg: {
+      type: String,
+      default: ''
+    },
+    pauseVideo: {
+      type: [Boolean, String],
+      default: true
+    },
+    previewImg: {
+      type: [Boolean, String],
+      default: true
+    },
+    scrollTable: [Boolean, String],
+    selectable: [Boolean, String],
+    setTitle: {
+      type: [Boolean, String],
+      default: true
+    },
+    showImgMenu: {
+      type: [Boolean, String],
+      default: true
+    },
+    tagStyle: Object,
+    useAnchor: [Boolean, Number]
+  },
+  // #ifdef VUE3
+  emits: ['load', 'ready', 'imgtap', 'linktap', 'play', 'error'],
+  // #endif
+  // #ifndef APP-PLUS-NVUE
+  components: {
+    node
+  },
+  // #endif
+  watch: {
+    editable(val) {
+      this.setContent(val ? this.content : this.getContent())
+      if (!val)
+        this._maskTap()
+    },
+    content (content) {
+      this.setContent(content)
+    }
+  },
+  created () {
+    this.plugins = []
+    for (let i = plugins.length; i--;) {
+      this.plugins.push(new plugins[i](this))
+    }
+  },
+  mounted () {
+    if ((this.content || this.editable) && !this.nodes.length) {
+      this.setContent(this.content)
+    }
+  },
+  beforeDestroy () {
+    this._hook('onDetached')
+    clearInterval(this._timer)
+  },
+  methods: {
+    _containTap() {
+      if (!this._lock && !this.slider) {
+        this._edit = undefined
+        this._maskTap()
+      }
+    },
+    _tooltipTap(e) {
+      this._tooltipcb(e.currentTarget.dataset.i)
+      this.$set(this, 'tooltip', null)
+    },
+    _sliderChanging(e) {
+      this._slideringcb(e.detail.value)
+    },
+    _sliderChange(e) {
+      this._slidercb(e.detail.value)
+    },
+    /**
+     * @description 将锚点跳转的范围限定在一个 scroll-view 内
+     * @param {Object} page scroll-view 所在页面的示例
+     * @param {String} selector scroll-view 的选择器
+     * @param {String} scrollTop scroll-view scroll-top 属性绑定的变量名
+     */
+    in (page, selector, scrollTop) {
+      // #ifndef APP-PLUS-NVUE
+      if (page && selector && scrollTop) {
+        this._in = {
+          page,
+          selector,
+          scrollTop
+        }
+      }
+      // #endif
+    },
+
+    /**
+     * @description 锚点跳转
+     * @param {String} id 要跳转的锚点 id
+     * @param {Number} offset 跳转位置的偏移量
+     * @returns {Promise}
+     */
+    navigateTo (id, offset) {
+      return new Promise((resolve, reject) => {
+        if (!this.useAnchor) {
+          reject(Error('Anchor is disabled'))
+          return
+        }
+        offset = offset || parseInt(this.useAnchor) || 0
+        // #ifdef APP-PLUS-NVUE
+        if (!id) {
+          dom.scrollToElement(this.$refs.web, {
+            offset
+          })
+          resolve()
+        } else {
+          this._navigateTo = {
+            resolve,
+            reject,
+            offset
+          }
+          this.$refs.web.evalJs('uni.postMessage({data:{action:"getOffset",offset:(document.getElementById(' + id + ')||{}).offsetTop}})')
+        }
+        // #endif
+        // #ifndef APP-PLUS-NVUE
+        let deep = ' '
+        // #ifdef MP-WEIXIN || MP-QQ || MP-TOUTIAO
+        deep = '>>>'
+        // #endif
+        const selector = uni.createSelectorQuery()
+          // #ifndef MP-ALIPAY
+          .in(this._in ? this._in.page : this)
+          // #endif
+          .select((this._in ? this._in.selector : '._root') + (id ? `${deep}#${id}` : '')).boundingClientRect()
+        if (this._in) {
+          selector.select(this._in.selector).scrollOffset()
+            .select(this._in.selector).boundingClientRect()
+        } else {
+          // 获取 scroll-view 的位置和滚动距离
+          selector.selectViewport().scrollOffset() // 获取窗口的滚动距离
+        }
+        selector.exec(res => {
+          if (!res[0]) {
+            reject(Error('Label not found'))
+            return
+          }
+          const scrollTop = res[1].scrollTop + res[0].top - (res[2] ? res[2].top : 0) + offset
+          if (this._in) {
+            // scroll-view 跳转
+            this._in.page[this._in.scrollTop] = scrollTop
+          } else {
+            // 页面跳转
+            uni.pageScrollTo({
+              scrollTop,
+              duration: 300
+            })
+          }
+          resolve()
+        })
+        // #endif
+      })
+    },
+
+    /**
+     * @description 获取文本内容
+     * @return {String}
+     */
+    getText (nodes) {
+      let text = '';
+      (function traversal (nodes) {
+        for (let i = 0; i < nodes.length; i++) {
+          const node = nodes[i]
+          if (node.type === 'text') {
+            text += node.text.replace(/&amp;/g, '&')
+          } else if (node.name === 'br') {
+            text += '\n'
+          } else {
+            // 块级标签前后加换行
+            const isBlock = node.name === 'p' || node.name === 'div' || node.name === 'tr' || node.name === 'li' || (node.name[0] === 'h' && node.name[1] > '0' && node.name[1] < '7')
+            if (isBlock && text && text[text.length - 1] !== '\n') {
+              text += '\n'
+            }
+            // 递归获取子节点的文本
+            if (node.children) {
+              traversal(node.children)
+            }
+            if (isBlock && text[text.length - 1] !== '\n') {
+              text += '\n'
+            } else if (node.name === 'td' || node.name === 'th') {
+              text += '\t'
+            }
+          }
+        }
+      })(nodes || this.nodes)
+      return text
+    },
+
+    /**
+     * @description 获取内容大小和位置
+     * @return {Promise}
+     */
+    getRect () {
+      return new Promise((resolve, reject) => {
+        uni.createSelectorQuery()
+          // #ifndef MP-ALIPAY
+          .in(this)
+          // #endif
+          .select('#_root').boundingClientRect().exec(res => res[0] ? resolve(res[0]) : reject(Error('Root label not found')))
+      })
+    },
+
+    /**
+     * @description 暂停播放媒体
+     */
+    pauseMedia () {
+      for (let i = (this._videos || []).length; i--;) {
+        this._videos[i].pause()
+      }
+      // #ifdef APP-PLUS
+      const command = 'for(var e=document.getElementsByTagName("video"),i=e.length;i--;)e[i].pause()'
+      // #ifndef APP-PLUS-NVUE
+      let page = this.$parent
+      while (!page.$scope) page = page.$parent
+      page.$scope.$getAppWebview().evalJS(command)
+      // #endif
+      // #ifdef APP-PLUS-NVUE
+      this.$refs.web.evalJs(command)
+      // #endif
+      // #endif
+    },
+
+    /**
+     * @description 设置内容
+     * @param {String} content html 内容
+     * @param {Boolean} append 是否在尾部追加
+     */
+    setContent (content, append) {
+      if (!append || !this.imgList) {
+        this.imgList = []
+      }
+      const nodes = new Parser(this).parse(content)
+      // #ifdef APP-PLUS-NVUE
+      if (this._ready) {
+        this._set(nodes, append)
+      }
+      // #endif
+      this.$set(this, 'nodes', append ? (this.nodes || []).concat(nodes) : nodes)
+
+      // #ifndef APP-PLUS-NVUE
+      this._videos = []
+      this.$nextTick(() => {
+        this._hook('onLoad')
+        this.$emit('load')
+      })
+
+      // 等待图片加载完毕
+      let height
+      clearInterval(this._timer)
+      this._timer = setInterval(() => {
+        this.getRect().then(rect => {
+          // 350ms 总高度无变化就触发 ready 事件
+          if (rect.height === height) {
+            this.$emit('ready', rect)
+            clearInterval(this._timer)
+          }
+          height = rect.height
+        }).catch(() => { })
+      }, 350)
+      // #endif
+    },
+
+    /**
+     * @description 调用插件钩子函数
+     */
+    _hook (name) {
+      for (let i = plugins.length; i--;) {
+        if (this.plugins[i][name]) {
+          this.plugins[i][name]()
+        }
+      }
+    },
+
+    // #ifdef APP-PLUS-NVUE
+    /**
+     * @description 设置内容
+     */
+    _set (nodes, append) {
+      this.$refs.web.evalJs('setContent(' + JSON.stringify(nodes) + ',' + JSON.stringify([this.containerStyle.replace(/(?:margin|padding)[^;]+/g, ''), this.errorImg, this.loadingImg, this.pauseVideo, this.scrollTable, this.selectable]) + ',' + append + ')')
+    },
+
+    /**
+     * @description 接收到 web-view 消息
+     */
+    _onMessage (e) {
+      const message = e.detail.data[0]
+      switch (message.action) {
+        // web-view 初始化完毕
+        case 'onJSBridgeReady':
+          this._ready = true
+          if (this.nodes) {
+            this._set(this.nodes)
+          }
+          break
+        // 内容 dom 加载完毕
+        case 'onLoad':
+          this.height = message.height
+          this._hook('onLoad')
+          this.$emit('load')
+          break
+        // 所有图片加载完毕
+        case 'onReady':
+          this.getRect().then(res => {
+            this.$emit('ready', res)
+          }).catch(() => { })
+          break
+        // 总高度发生变化
+        case 'onHeightChange':
+          this.height = message.height
+          break
+        // 图片点击
+        case 'onImgTap':
+          this.$emit('imgtap', message.attrs)
+          if (this.previewImg) {
+            uni.previewImage({
+              current: parseInt(message.attrs.i),
+              urls: this.imgList
+            })
+          }
+          break
+        // 链接点击
+        case 'onLinkTap': {
+          const href = message.attrs.href
+          this.$emit('linktap', message.attrs)
+          if (href) {
+            // 锚点跳转
+            if (href[0] === '#') {
+              if (this.useAnchor) {
+                dom.scrollToElement(this.$refs.web, {
+                  offset: message.offset
+                })
+              }
+            } else if (href.includes('://')) {
+              // 打开外链
+              if (this.copyLink) {
+                plus.runtime.openWeb(href)
+              }
+            } else {
+              uni.navigateTo({
+                url: href,
+                fail () {
+                  uni.switchTab({
+                    url: href
+                  })
+                }
+              })
+            }
+          }
+          break
+        }
+        case 'onPlay':
+          this.$emit('play')
+          break
+        // 获取到锚点的偏移量
+        case 'getOffset':
+          if (typeof message.offset === 'number') {
+            dom.scrollToElement(this.$refs.web, {
+              offset: message.offset + this._navigateTo.offset
+            })
+            this._navigateTo.resolve()
+          } else {
+            this._navigateTo.reject(Error('Label not found'))
+          }
+          break
+        // 点击
+        case 'onClick':
+          this.$emit('tap')
+          this.$emit('click')
+          break
+        // 出错
+        case 'onError':
+          this.$emit('error', {
+            source: message.source,
+            attrs: message.attrs
+          })
+      }
+    }
+    // #endif
+  }
+}
+</script>
+
+<style>
+/* #ifndef APP-PLUS-NVUE */
+/* 根节点样式 */
+._root {
+  padding: 1px 0;
+  overflow-x: auto;
+  overflow-y: hidden;
+  -webkit-overflow-scrolling: touch;
+}
+
+/* 长按复制 */
+._select {
+  user-select: text;
+}
+/* #endif */
+
+/* 提示条 */
+._tooltip_contain {
+  position: absolute;
+  right: 20px;
+  left: 20px;
+  text-align: center;
+}
+
+._tooltip {
+  box-sizing: border-box;
+  display: inline-block;
+  width: auto;
+  max-width: 100%;
+  height: 30px;
+  padding: 0 3px;
+  overflow: scroll;
+  font-size: 14px;
+  line-height: 30px;
+  white-space: nowrap;
+}
+
+._tooltip_item {
+  display: inline-block;
+  width: auto;
+  padding: 0 2vw;
+  line-height: 30px;
+  background-color: black;
+  color: white;
+}
+
+/* 图片宽度滚动条 */
+._slider {
+  position: absolute;
+  left: 20px;
+  width: 220px;
+}
+
+._tooltip,
+._slider {
+  background-color: black;
+  border-radius: 3px;
+  opacity: 0.75;
+}
+</style>

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików