commit 247eef3bcac7f7ba1f42d921eba7fd017eb2018b Author: 榆钱落尽槿花稀 <2675540038@qq.com> Date: Thu Jul 10 16:27:08 2025 +0800 创建仓库 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..772af73 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +project.config.json +.idea diff --git a/app.js b/app.js new file mode 100644 index 0000000..7e7ed81 --- /dev/null +++ b/app.js @@ -0,0 +1,370 @@ +/** + * tabBar页面路径列表 (用于链接跳转时判断) + * tabBarLinks为常量, 无需修改 + */ +const tabBarLinks = [ + 'pages/index/index', + 'pages/category/index', + 'pages/flow/index', + 'pages/user/index' +]; + +// 站点信息 +import siteInfo from 'siteinfo.js'; + +App({ + + /** + * 全局变量 + */ + globalData: { + user_id: null, + }, + + api_root: '', // api地址 + + /** + * 生命周期函数--监听小程序初始化 + */ + onLaunch() { + let App = this; + // 设置api地址 + App.setApiRoot(); + wx.getSystemInfo({ + success: e => { + // 设计稿一般是 750 rpx, 但是 canvas 是 px; + // 1rpx 转换成 px 的时候 + this.globalData.rpx2px = 1 / 750 * e.windowWidth; + } + }); + }, + + + + + /** + * 当小程序启动,或从后台进入前台显示,会触发 onShow + */ + onShow(options) { + + }, + + /** + * 设置api地址 + */ + setApiRoot() { + let App = this; + App.api_root = `${siteInfo.siteroot}index.php?s=/api/`; + }, + + /** + * 获取小程序基础信息 + */ + getWxappBase(callback) { + let App = this; + App._get('wxapp/base', {}, result => { + // 记录小程序基础信息 + wx.setStorageSync('wxapp', result.data.wxapp); + callback && callback(result.data.wxapp); + }, false, false); + }, + + /** + * 执行用户登录 + */ + doLogin() { + // 保存当前页面 + let pages = getCurrentPages(); + if (pages.length) { + let currentPage = pages[pages.length - 1]; + "pages/login/login" != currentPage.route && + wx.setStorageSync("currentPage", currentPage); + } + // 跳转授权页面 + wx.navigateTo({ + url: "/pages/login/login" + }); + }, + + /** + * 当前用户id + */ + getUserId() { + return wx.getStorageSync('user_id') || 0; + }, + + /** + * 显示成功提示框 + */ + showSuccess(msg, callback) { + wx.showToast({ + title: msg, + icon: 'success', + success() { + callback && (setTimeout(() => { + callback(); + }, 1500)); + } + }); + }, + + /** + * 显示失败提示框 + */ + showError(msg, callback) { + wx.showModal({ + title: '友情提示', + content: msg, + showCancel: false, + success(res) { + // callback && (setTimeout(() => { + // callback(); + // }, 1500)); + callback && callback(); + } + }); + }, + + /** + * get请求 + */ + _get(url, data, success, fail, complete, check_login) { + let App = this; + wx.showNavigationBarLoading(); + + // 构造请求参数 + data = Object.assign({ + wxapp_id: 10001, + token: wx.getStorageSync('token') + }, data); + + // if (typeof check_login === 'undefined') + // check_login = true; + + // 构造get请求 + let request = () => { + data.token = wx.getStorageSync('token'); + wx.request({ + url: App.api_root + url, + header: { + 'content-type': 'application/json' + }, + data, + success(res) { + if (res.statusCode !== 200 || typeof res.data !== 'object') { + console.log(res); + App.showError('网络请求出错'); + return false; + } + if (res.data.code === -1) { + // 登录态失效, 重新登录 + wx.hideNavigationBarLoading(); + App.doLogin(); + } else if (res.data.code === 0) { + App.showError(res.data.msg); + return false; + } else { + success && success(res.data); + } + }, + fail(res) { + // console.log(res); + App.showError(res.errMsg, () => { + fail && fail(res); + }); + }, + complete(res) { + wx.hideNavigationBarLoading(); + complete && complete(res); + }, + }); + }; + // 判断是否需要验证登录 + check_login ? App.doLogin(request) : request(); + }, + + /** + * post提交 + */ + _post_form(url, data, success, fail, complete) { + wx.showNavigationBarLoading(); + let App = this; + // 构造请求参数 + data = Object.assign({ + wxapp_id: 10001, + token: wx.getStorageSync('token') + }, data); + wx.request({ + url: App.api_root + url, + header: { + 'content-type': 'application/x-www-form-urlencoded', + }, + method: 'POST', + data, + success(res) { + if (res.statusCode !== 200 || typeof res.data !== 'object') { + App.showError('网络请求出错'); + return false; + } + if (res.data.code === -1) { + // 登录态失效, 重新登录 + App.doLogin(() => { + App._post_form(url, data, success, fail); + }); + return false; + } else if (res.data.code === 0) { + App.showError(res.data.msg, () => { + fail && fail(res); + }); + return false; + } + success && success(res.data); + }, + fail(res) { + // console.log(res); + App.showError(res.errMsg, () => { + fail && fail(res); + }); + }, + complete(res) { + wx.hideLoading(); + wx.hideNavigationBarLoading(); + complete && complete(res); + } + }); + }, + + /** + * 验证是否存在user_info + */ + validateUserInfo() { + let user_info = wx.getStorageSync('user_info'); + return !!wx.getStorageSync('user_info'); + }, + + /** + * 对象转URL + */ + urlEncode(data) { + var _result = []; + for (var key in data) { + var value = data[key]; + if (value.constructor == Array) { + value.forEach(_value => { + _result.push(key + "=" + _value); + }); + } else { + _result.push(key + '=' + value); + } + } + return _result.join('&'); + }, + + /** + * 设置当前页面标题 + */ + setTitle() { + let App = this, + wxapp; + if (wxapp = wx.getStorageSync('wxapp')) { + wx.setNavigationBarTitle({ + title: wxapp.navbar.wxapp_title + }); + } else { + App.getWxappBase(() => { + App.setTitle(); + }); + } + }, + + /** + * 设置navbar标题、颜色 + */ + setNavigationBar() { + let App = this; + // 获取小程序基础信息 + App.getWxappBase(wxapp => { + // 设置navbar标题、颜色 + wx.setNavigationBarColor({ + frontColor: wxapp.navbar.top_text_color.text, + backgroundColor: wxapp.navbar.top_background_color + }) + }); + }, + + /** + * 获取tabBar页面路径列表 + */ + getTabBarLinks() { + return tabBarLinks; + }, + + /** + * 验证登录 + */ + checkIsLogin() { + return wx.getStorageSync('user_id') != ''; + }, + + /** + * 授权登录 + */ + getUserInfo(userInfo,user_id, callback) { + let App = this; + wx.showLoading({ + title: "正在授权", + mask: true + }); + // 执行微信登录 + wx.login({ + success(res) { + // 发送用户信息 + App._post_form('user/login', { + code: res.code, + user_id: user_id, + user_info: JSON.stringify(userInfo) + }, result => { + // 记录token user_id + wx.setStorageSync('token', result.data.token); + // 执行回调函数 + callback && callback(); + }, false, () => { + wx.hideLoading(); + }); + } + }); + }, + + + /** + * 绑定用户身份证号 + */ + getUserInfoByIdCard(idCard, callback) { + let App = this; + wx.showLoading({ + title: "正在验证身份证号", + mask: true + }); + App._post_form('user/checkIdCard',{ + idCard:idCard + }, result => { + //记录user_id + if(!result.data.user_id){ + wx.showToast({ + title: '身份证号不存在', + icon: 'error', + duration: 2000 + }) + }else{ + wx.setStorageSync('user_id', result.data.user_id); + // 执行回调函数 + callback(result.data.user_id); + } + + }, false, () => { + wx.hideLoading(); + }); + }, + + +}); \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..79552d7 --- /dev/null +++ b/app.json @@ -0,0 +1,75 @@ +{ + "pages": [ + "pages/index/index", + "pages/rank/index", + "pages/rank/address", + "pages/rank/addInfo", + "pages/category/index", + "pages/category/challenge", + "pages/user/index", + "pages/user/sign", + "pages/login/login", + "pages/topic/index", + "pages/topic/addList", + "pages/topic/addInfo", + "pages/topic/xunzhang", + "pages/topic/address", + "pages/topic/detail", + "pages/category/team" + ], + "subpackages": [ + { + "root": "packageA", + "pages": [ + "user/help", + "user/myChallenge", + "user/myMedal", + "user/profile", + "user/editProfile" + ] + }, + { + "root": "packageB", + "pages": [ + "index/index", + "rule/index", + "user/sign" + ] + } + ], + "window": { + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTitleText": "", + "navigationBarTextStyle": "black", + "backgroundTextStyle": "dark" + }, + "tabBar": { + "color": "#6e6d6b", + "selectedColor": "#890001", + "borderStyle": "black", + "backgroundColor": "#ffffff", + "list": [ + { + "pagePath": "pages/index/index", + "text": "首页", + "iconPath": "images/tabBar/home.png", + "selectedIconPath": "images/tabBar/home_on.png" + }, + { + "pagePath": "pages/rank/index", + "text": "排行榜", + "iconPath": "images/tabBar/cate.png", + "selectedIconPath": "images/tabBar/cate_on.png" + }, + { + "pagePath": "pages/user/index", + "text": "我的", + "iconPath": "images/tabBar/user.png", + "selectedIconPath": "images/tabBar/user_on.png" + } + ], + "position": "bottom" + }, + "debug": false, + "sitemapLocation": "sitemap.json" +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..3fa7413 --- /dev/null +++ b/app.wxss @@ -0,0 +1,927 @@ +/* common.wxss */ +@import "/utils/common.wxss"; +@import "/common.wxss"; +@import 'weui.wxss'; +page { + background: #f7f7f7; +} + +.common-header-xian { + border-top: 1rpx solid #eee; + position: fixed; + top: 0; + width: 100%; + z-index: 100; +} + +.del { + text-decoration: line-through; + padding-left: 10rpx; + color: #999; +} + +/* 没有更多 */ + +.no-more { + text-align: center; + color: #737373; + padding: 20rpx 0; +} + +.yoshop-notcont { + margin: 130rpx 100rpx; +} + +.yoshop-notcont .cont { + display: block; + text-align: center; + font-size: 30rpx; + color: #999; + margin-top: 20rpx; +} + +.yoshop-notcont .iconfont { + font-size: 150rpx; + color: #ccc; + text-align: center; + display: block; + margin-bottom: 24rpx; +} + +.yoshop-notcont .img { + width: 200px; + height: 120px; + margin: 0 auto; +} + +.yoshop-notcont .img image { + width: 100%; + height: 100%; +} + +.category-list { + overflow: hidden; +} + +.category-list .list { + box-sizing: border-box; + width: 50%; + float: left; +} + +.category-list .list:nth-child(2n) { + border-left: 2px solid #f7f7f7; + border-bottom: 4px solid #f7f7f7; +} + +.category-list .list:nth-child(2n-1) { + border-right: 2px solid #f7f7f7; + border-bottom: 4px solid #f7f7f7; +} + +.category-list .list .left, .category-list .right { + width: 100%; +} + +.category-list .list .left .img image { + width: 100%; + height: 375rpx; + display: block; +} + +.category-list .right .cont { + padding: 0 12rpx; +} + +.category-list .right .cont .title { + height: 76rpx; + line-height: 1.3; +} + +.category-list.arrange .list { + overflow: hidden; + padding: 15rpx; + border-bottom: 1rpx solid #f7f7f7; + width: 100%; +} + +.category-list.arrange .list .left { + width: 35%; + float: left; +} + +.category-list.arrange .list .right { + width: 65%; + float: left; +} + +.category-list.arrange .list .left .img image { + width: 220rpx; + height: 220rpx; +} + +.button-common button { + background: none; + line-height: inherit; + border-radius: 0; + border: 0; + font-size: 30rpx; +} + +.button-common button[disabled]:not([type]) { + color: #fff; + background-color: #ff495e; +} + +.button-common button::after { + content: " "; + width: 0; + height: 0; + border: none; + transform: scale(0); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: 0; +} + +.commont-fixed-footer { + position: fixed; + bottom: 0; + left: 0; + right: 0; + background: #fff; + border-top: 1rpx solid #ddd; + padding: 3px 0; + z-index: 1000; +} + +.commont-fixed-footer .li { + color: #666; +} + +.commont-fixed-footer .li.active { + color: #ff495e; +} + +.commont-fixed-footer .li image { + width: 50rpx; + height: 50rpx; +} + +.bargain-mol { + background: #fff; + position: fixed; + left: 0; + right: 0; + bottom: -100%; + z-index: 120; + visibility: hidden; +} + +.bargain-mol.active { + bottom: 0; + visibility: visible; +} + +.bargain-mol .header { + background: #f1f1f5; +} + +.bargain-mol .footer { + background: #ff495e; + padding: 26rpx 0; + color: #fff; +} + +.bargain-mol .max-cont { + height: 600rpx; +} + +.bargain-mol .icon-guanbi { + font-size: 34rpx; + float: right; + color: #999; +} + +.bargain-commont-bg { + background: rgba(0, 0, 0, 0.6); + position: fixed; + right: 0; + left: 0; + top: 0; + bottom: 0; + z-index: 20; +} + +.selectNumber { + height: 34px; + flex-direction: row; + border: 1rpx solid #eee; + border-radius: 10rpx; + display: inline-block; +} + +.selectNumber .default { + width: 34px; + height: 34px; + float: left; + line-height: 32px; + padding: 0; + background: #fff; + color: #444; + font-size: 48rpx; +} + +.selectNumber .default-active { + background: #f7f7f7; + color: #ddd; +} + +.selectNumber button:after { + content: none; + border: none; +} + +.selectNumber input { + float: left; + width: 50px; + height: 34px; + line-height: 34px; + border-right: 1rpx solid #eee; + border-left: 1rpx solid #eee; + text-align: center; + font-size: 28rpx; + color: #444; +} + +/* 返回顶部 */ + +.widget-goTop { + position: fixed; + bottom: 150rpx; + z-index: 20; + right: 12px; + background: rgba(255, 255, 255, 0.9); + width: 76rpx; + height: 76rpx; + border-radius: 76rpx; + border: 1rpx solid #eee; +} + +.widget-goTop .icon-fanhuidingbu { + color: #666; + display: block; + text-align: center; + line-height: 76rpx; + font-size: 32rpx; +} + +.index-loading .loading { + border-radius: 100%; + margin: 150rpx auto 0; + animation-fill-mode: both; + border: 2px solid #ff495e; + border-bottom-color: transparent; + height: 25px; + width: 25px; + background: transparent !important; + animation: rotate 0.75s 0s linear infinite; +} + +@-webkit-keyframes rotate { + 0% { + transform: rotate(0deg) scale(1); + } + + 100% { + transform: rotate(360deg) scale(1); + } +} + +@keyframes rotate { + 0% { + transform: rotate(0deg) scale(1); + } + + 100% { + transform: rotate(360deg) scale(1); + } +} + +.title-header { + height: 100rpx; + line-height: 100rpx; + font-weight: 700; + margin-left: -10rpx; +} + +.title-footer { + position: relative; + z-index: 1; + height: 80rpx; + line-height: 80rpx; + overflow: hidden; + color: #888; + text-align: center; + margin: 0 18rpx 0; +} + +.title-footer .cont { + padding: 0 12rpx; + font-size: 28rpx; + z-index: 10; + background-color: #FFF; +} + +.title-footer .hr { + background: #eee; + height: 1rpx; + border: 0; + position: absolute; + left: 10%; + right: 10%; + top: 50%; + margin-top: 1px; + z-index: -1; +} + +.slide-image { + width: 100%; + height: 100%; + margin: 0 auto; + display: block; +} + +.index_sale { + background: #fff; + padding: 0 12px 12px 12px; +} + +.index_sale .nav_img, .index-list .nav_img { + padding: 30rpx 0 0 0; + width: 100%; + height: 30rpx; +} + +.index_sale scroll-view { + width: 100%; + white-space: nowrap; +} + +.index_sale .sale_img { + border: 1rpx solid #f2f2f2; + border-radius: 4px; + overflow: hidden; + width: 100%; + height: 300rpx; +} + +.index_sale .sale_img image { + width: 100%; + height: 100%; +} + +.index_sale .price { + margin-top: 10rpx; + display: block; +} + +.index_sale .page-column { + padding: 0 11rpx 11rpx 0; +} + +.index_sale .content { + width: 170rpx; +} + +.index_sale .content text { + font-size: 26rpx; + margin: 5rpx 10rpx; + width: 100%; +} + +/* +.flex { + display: flex; +} */ + +.goods-comment-box .admin { + font-size: 26rpx; + color: #999; + padding-right: 10rpx; +} + +.goods-comment-cont { + font-size: 30rpx; + color: #333; + margin: 10rpx 0; +} + +.footer-fixed { + position: fixed; + display: flex; + bottom: 0px; + left: 0px; + right: 0px; + height: 46px; + z-index: 18; + box-shadow: 1px 5px 15px rgba(50, 50, 50, 0.3); + background: #fff; +} + +.order-bt { + width: 50%; + background-color: #ff495e; + color: #fff; + text-align: center; + line-height: 46px; +} + +.swiper-box .wx-swiper-dot { + /* width: 0rpx; + height: 0rpx; */ +} + +.goods_comment_box .comment_btn { + width: 220rpx; + margin: 0 auto; + padding: 20rpx 0; +} + +.goods_comment_box .comment_btn text { + display: block; + padding: 5rpx 0; + color: #ff495e; + font-size: 26rpx; + text-align: center; + border: 1px solid #ff495e; + border-radius: 30rpx; +} + +.goods-detail-box { + padding: 0; + min-height: 150px; +} + +.com_xing .icon-shoucang1 { + padding-right: 6rpx; + color: #ccc; + font-size: 26rpx; +} + +.com_xing .icon-shoucang1.active { + color: #f4a213; +} + +.goods-comment-box .left { + flex: 3; + position: relative; +} + +.goods-comment-box .right { + flex: 3; +} + +.bright789-text { + font-size: 40rpx; + line-height: 40px; + color: #f00; +} + +.bright789_view_hide { + display: none; +} + +.bright789_view_show { + display: block; +} + +.show { + display: block; +} + +.hide { + display: none; +} + +.com_xing { + display: inline-block; +} + +.flow-checkout-header { + padding: 28rpx 0; + background: #fff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANYAAAANCAYAAADVGpDCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3Yjk4M2ExYy1jMDhkLTQ1OTktYTI0Ny1kZjNjYzdiYTQ5ZTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDQwNkY3RkU5N0NGMTFFNUI3N0M4NTU4MzM2RjlFODIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDQwNkY3RkQ5N0NGMTFFNUI3N0M4NTU4MzM2RjlFODIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowNzgwZWI1NS03OGFhLTQzOTUtODQ4OC1lOWI5YmVlYTY1ZDciIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1OTRiYzUyMy1jMzc3LTExNzgtYTdkZS04NGY3YmM1ZGIxMDMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz556PLxAAACBElEQVR42tyaSyhEYRTHP48imlKibDQeSSlkSlEWLCRFsZNH5FE2FqQ8ErIRC9lIkTwXSpMkWWChhEJCSnlkoUZGSsr78f98n43CMFPu/Z/6NZuZ2zn33/+cb869XkmLx8IDEQaGQJbgiytQDSY3MyL+LYnL/HxPXSoHDIJQQq2WQQk4Dbbb/yUB29LJ+6e3B66VB3ZITbUIEqSpCGoJBP1ghtBUD6ARpEtTGSEhXzd+awE9oJzQUPegWdf3QlBPMhgDMYRa7YNisGWkpP5qrBQtVBShUHugUE9hs4fUtwG0utlEjRivoA/Ug1sj3vjffr8FNJEK1auPFHcE9UTq5pdK2PwcoAzMG7mjuRrRYEIfK9jiDJSCBZJ6ynSTsBBqNQ0qgdPISbq6vJCFbJOaagrEk5gqWNczRGiqG1Ah1LLMafRkf5pYIUKtZnMJDXUNasAIST2ZYFioRx9ssQaKwJFZEv5uYmWDXVJTrYBEElP562PfPKGpnkAbSDOTqb6aWAGgW6iHol5kQj2CdtAJngnqkc1hHMQRNr9DPaXWzZj8Z2PZtFCxhEIdaKE2CGqRJ4060AH8CLUaALX6f5VpBZLhI9SaeZXQVHKNLt84SCIxVbhQi5YuQlNd6OVElZlN9TGxrGBUn2PZ4lyoTdIsST0FQj0UDSLUak6ot3gcBLVY3wQYAJoVXxmNERajAAAAAElFTkSuQmCC') bottom left repeat-x; + background-size: 120rpx auto; + position: relative; +} + +.flow-header-left { + flex: 14; +} + +.flow-header-right { + flex: 1; +} + +.flow-header-right image { + width: 34rpx; + height: 34rpx; + margin-top: 20rpx; + float: right; +} + +.flow-checkout-header .flow-checkout-address { + font-size: 26rpx; + color: #777; + margin-top: 6rpx; +} + +.flow-shopList { + padding: 20rpx 0; +} + +.flow-shopList .flow-list-left { + flex: 2; +} + +.flow-shopList .flow-list-left image { + width: 200rpx; + height: 200rpx; + border: 1rpx solid #eee; + background: #fff; +} + +.flow-shopList .flow-list-right { + flex: 4; +} + +.flow-shopList .flow-list-right .h4 { + font-size: 30rpx; + color: #333; +} + +.flow-shopList .flow-list-right .flow-cont { + font-size: 30rpx; + color: #ff495e; +} + +.flow-shopList .flow-list-right .small { + float: right; + font-size: 26rpx; + color: #777; +} + +.flow-shopList .flow-list-right .flow-list-cont { + padding-top: 10rpx; +} + +.flow-fixed-footer { + position: fixed; + bottom: 0; + width: 100%; + background: #fff; + border-top: 1px solid #eee; + z-index: 11; +} + +.flow-num-box { + font-size: 30rpx; + color: #777; + padding: 15rpx 12px; + text-align: right; + /* border-top: 1rpx solid #f1f1f1; */ +} + +.flow-all-money { + padding: 8px 12px; + color: #444; +} + +.flow-all-money .flow-all-list { + font-size: 30rpx; + padding: 20rpx 0; + border-bottom: 1rpx solid #f1f1f1; +} + +.flow-all-money .flow-all-list:last-child { + border-bottom: none; +} + +.flow-all-money .flow-all-list-cont { + font-size: 28rpx; + padding: 6rpx 0; +} + +.flow-all-money .flow-arrow { + justify-content: flex-end; + align-items: center; +} + +.flow-fixed-footer .chackout-left { + font-size: 32rpx; + line-height: 46px; + color: #777; + flex: 4; + padding-left: 12px; +} + +.flow-fixed-footer .chackout-right { + font-size: 34rpx; + flex: 2; +} + +.flow-btn { + background-color: #ff495e; + color: #fff; + text-align: center; + line-height: 46px; + display: block; +} + +.flow-list .header .shop_name { + padding-left: 10rpx; + font-size: 30rpx; + color: #333; +} + +.flow-list .header .icon-dianpu2 { + color: #ff495e; + padding-left: 20rpx; + font-size: 32rpx; +} + +.flow-list .header image { + width: 34rpx; + height: 37rpx; + position: absolute; + top: 50%; + margin-top: -18rpx; + left: 15px; +} + +.flow-list .header { + background: #fdf9f9; + padding: 24rpx 0; + border-top: 1rpx solid #eee; + border-bottom: 1rpx solid #eee; + font-size: 30rpx; + position: relative; +} + +.flow-list custom-li, .addres-list custom-li { + margin-top: 25rpx; + display: block; +} + +.flow-list custom-li:first-child, .addres-list custom-li:first-child { + margin-top: 0; +} + +.flow-distribution-right .icon-xiangyoujiantou { + font-size: 26rpx; + position: absolute; + right: 15px; + top: 50%; + margin-top: -16rpx; + color: #999; +} + +.flow-checkout-address text { + padding-right: 5rpx; +} + +.flow-header-right .icon-xiangyoujiantou { + position: absolute; + right: 15px; + top: 50%; + margin-top: -13rpx; + font-size: 32rpx; + color: #999; +} + +.wxParse-em, .WxEmojiView { + display: inline-block; + color: #333; +} + +.flow-shopList .flow-list-left image { + width: 180rpx; + height: 180rpx; +} + +.profile-btn button { + background: #ff495e; + color: white; + margin-bottom: 20rpx; +} + +.flow-checkout-header .icon-dingwei1 { + position: absolute; + top: 50%; + left: 15px; + font-size: 40rpx; + color: #777; + margin-top: -20rpx; +} + +/* +.index-cont-search { + width: 85%; + font-size: 32rpx; +} */ + +.index-cont-search { + width: 100%; + font-size: 28rpx; + position: relative; + background: #f1f1f1; +} + +.index-cont-search icon { + position: absolute; + left: 50%; + margin-left: -70rpx; + top: 50%; + margin-top: -15rpx; +} + +.index-cont-search text { + margin-left: 72rpx; +} + +@-webkit-keyframes shop { + 0% { + transform: translateY(-80px); + } + + 50% { + transform: translateY(0px); + } + + 100% { + transform: translateY(-80px); + } +} + +@keyframes shop { + 0% { + transform: translateY(-80px); + } + + 50% { + transform: translateY(0px); + } + + 100% { + transform: translateY(-80px); + } +} + +.user-order { + background: #fff; +} + +.user-orderIcon { + width: 46rpx; + height: 46rpx; + padding-left: 15rpx; + margin-top: 15rpx; +} + +.user-orderName { + font-size: 30rpx; + color: #444; + position: absolute; + left: 90rpx; + top: 50%; + margin-top: -21rpx; +} + +.user-orderJtou { + color: #777; + font-size: 26rpx; +} + +.user-orderCont { + font-size: 28rpx; + color: #999; +} + +.user-orderContBox { + float: right; + padding: 15rpx; +} + +.userinfo { + display: flex; + flex-direction: column; + align-items: center; +} + +.address-box .left-name { + width: 95px; +} + +.address-box .right-cont { + padding-right: 15px; + font-size: 30rpx; + color: #444; +} + +.address-box .right-cont input { + width: 100%; + font-size: 30rpx; + color: #444; +} + +.address-cont-box picker { + display: inline-block; + margin-right: 15px; + width: 100%; +} + +.button { + border: 1px solid #1aad19; + border-radius: 2px; +} + +.picker { + padding: 13px; + background-color: #fff; +} + +.profile-list { + padding: 24rpx 0; + border-bottom: 1px solid #f6f6f9; +} + +.profile-list .admin { + font-size: 30rpx; + color: #333; +} + +.profile-btn button { + background: #ff495e; + color: white; +} + +.profile-btn button[disabled] { + background: #f16474; + color: white; +} + +.search-box .left { + width: 28px; +} + +.search-box .left icon { + padding: 18rpx; +} + +.search-box .right { + flex: 1; +} + +.wxParse-img { + display: block; + width: 100%; + margin: 0 auto; +} + +.wxParse-inline { + font-size: 28rpx; + text-align: center; +} + +.wxParse-div { + overflow: hidden; +} + +.wxParse-div .kd_pic { + float: left; + width: 50%; + margin: 0 auto; +} + +.xEmojiView { + margin: 15rpx 0; +} +.relative { + position: relative; +} + +.absolute { + position: absolute; +} + +.fixed { + position: fixed; +} + +.item-box{ + width:100%; + height:380rpx; + border-radius: 12rpx; + overflow: hidden; + margin-bottom:20rpx; +} diff --git a/common.wxss b/common.wxss new file mode 100644 index 0000000..f09076b --- /dev/null +++ b/common.wxss @@ -0,0 +1,410 @@ +/* flex */ +.i-flex { + display: flex; +} + +.i-flex-wrap { + flex-wrap: wrap; +} + +.i-flex-nowrap { + flex-wrap: nowrap; +} + +.i-flex-col { + display: flex; + flex-direction: column; +} + +.i-flex-item { + flex: 1; +} + +.i-flex-alc { + justify-content: center; + align-items: center; +} + +.i-flex-spb { + justify-content: space-between; + align-items: center; +} + +.i-aic { + align-items: center; +} + +.jcontent-c { + justify-content: center; +} + +.jcontent-sb { + justify-content: space-between; +} + +.jcontent-sa { + justify-content: space-around; +} + +.weight { + font-weight: bold; +} + +.text-overflow1 { + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; +} + +.text-overflow2 { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} +.text-left { + text-align: left; +} +/* 字体大小 */ +.fsz-16 { + font-size: 16rpx!important; +} + +.fsz-22 { + font-size: 22rpx; +} + +.fsz-24 { + font-size: 24rpx; +} + +.fsz-26 { + font-size: 26rpx; +} + +.fsz-28 { + font-size: 28rpx; +} + +.fsz-30 { + font-size: 30rpx; +} + +.fsz-32 { + font-size: 32rpx; +} + +.fsz-34 { + font-size: 34rpx; +} + +.fsz-36 { + font-size: 36rpx; +} + +.fsz-38 { + font-size: 38rpx; +} + +.fsz-60 { + font-size: 60rpx; +} + +/* 字体颜色 */ +.text-3 { + color: #333!important; +} + +.text-6 { + color: #666; +} + +.text-gray { + color: #999; +} + +.text-white { + color: #fff!important; +} + +.text-dark { + color: #000!important; +} + +.text-sucess { + color: #5cb85c!important; +} + +.text-warning { + color: #f0ad4e!important; +} + +.red { + color: #ff5344; +} + +.bule { + color: rgb(59,140,232); +} + +/* 背景 */ +.bg-f { + background-color: #fff; +} + +.bg-blue { + background-color: rgb(59,140,232); +} + +.bg-primary { + background-color: #ff5344; +} + +.bg-lighter { + background-color: #f8f8f8; +} + +.bg-ccc { + background: #ccc!important; +} + +.bg-sucess { + background: #5cb85c!important; +} + +.bg-warning { + background: #f0ad4e!important; +} + +/* 边距 */ +.ml5 { + margin-left: 10rpx; +} + +.ml10 { + margin-left: 20rpx; +} + +.mb5 { + margin-bottom: 10rpx; +} + +.mt-auto { + margin-top: auto; +} + +.mt5 { + margin-top: 10rpx; +} + +.mx5 { + margin-left: 10rpx; + margin-right: 10rpx; +} + +.m10 { + margin: 20rpx; +} + +.mt10 { + margin-top: 20rpx; +} + +.my10 { + margin-top: 10rpx; + margin-bottom: 10rpx; +} + +.mx10 { + margin-left: 20rpx; + margin-right: 20rpx; +} + +.mx15 { + margin-left: 30rpx; + margin-right: 30rpx; +} + +.mb10 { + margin-bottom: 20rpx; +} + +.mb20 { + margin-bottom: 40rpx; +} + +.m15 { + margin: 30rpx; +} + +.p5 { + padding: 10rpx; +} + +.p10 { + padding: 20rpx; +} + +.p15 { + padding: 30rpx; +} + +.pt10 { + padding-top: 20rpx; +} + +.pb10 { + padding-bottom: 20rpx!important; +} + +.py10 { + padding-top: 20rpx!important; + padding-bottom: 20rpx!important; +} + +.pb15 { + padding-bottom: 30rpx; +} + +.px15 { + padding-left: 30rpx; + padding-right: 30rpx; +} + +.py15 { + padding-top: 30rpx!important; + padding-bottom: 30rpx!important; +} + +.pb20 { + padding-bottom: 40rpx; +} + +.p30 { + padding: 30rpx; +} + +.ml30 { + margin-left: 30rpx; +} + +.pb100 { + padding-bottom: 100rpx; +} + +.w0 { + width: 0; +} + +.w90p { + width: 90%; +} + +.maxH { + max-height: 75vh; +} + +.rounded-mini { + border-radius: 5rpx; +} + +.rounded { + border-radius: 10rpx; +} + +.border-bottom, +.border-top { + position: relative; +} + +.border-bottom::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + right: 0; + border-bottom: 1px solid #e5e5e5; + transform-origin: 0 0; + transform: scaleY(0.5); +} + +.border-top::before { + content: ""; + position: absolute; + left: 0; + top: 0; + right: 0; + border-bottom: 1px solid #e5e5e5; + transform-origin: 0 0; + transform: scaleY(0.5); +} + +.btn-hollow { + border: 1rpx solid #e5e5e5; + padding: 12rpx 20rpx; + border-radius: 30rpx; + font-size: 22rpx; + color: #666; + line-height: 1; +} + +.line-through { + text-decoration: line-through; +} + +.line-height { + line-height: 1.5; +} + +/* 定位 */ +.pos-r { + position: relative; +} + +.pos-a { + position: absolute; +} + +.pos-f { + position: fixed; +} + +.avatar { + width: 80rpx; + height: 80rpx; + border-radius: 50%; +} + +.shadow { + box-shadow: 1px 2px 5px #ccc; +} + +.shadow-top { + box-shadow: 0px -3px 5px -2px #ccc; +} + +.avatar-md { + width: 100rpx; + height: 100rpx; + border-radius: 50%; + overflow: hidden; +} +.pm_index_line{border-bottom: 1px solid #DEDEDE;} +.pm_index{width:40rpx;height:40rpx;border-radius:15rpx;color:#333;text-align:center;line-height:40rpx;} +.pm_index1{ + background-color:#FFDC7A; +} +.pm_index2{ + background-color:#CBCBF6; +} +.pm_index3{ + background-color:#F9A470; +} \ No newline at end of file diff --git a/components/calendar/calendar.js b/components/calendar/calendar.js new file mode 100644 index 0000000..6a126b7 --- /dev/null +++ b/components/calendar/calendar.js @@ -0,0 +1,472 @@ +// components/calendar/calendar.js +Component({ + options: { + styleIsolation: 'apply-shared' + }, + properties: { + date: { + type: null, + value: new Date() + }, + /** + * 选中的日期 + */ + selected: { + type: Array, + value: [], + observer(newVal, oldVal) { + this.getWeek(new Date()) + } + }, + /** + * 锁定日期 + */ + lockDay: { + type: String, + }, + /** + * 是否默认展开, 可以调用open事件展开组件 + */ + isOpen: { + type: Boolean, + value: false + }, + /** + * 是否多选日期 + */ + multiple:{ + type: Boolean, + value: true + }, + /** + * 是否展示头部 + */ + showHeader: { + type: Boolean, + value: false + }, + /** + * 是否不能修改 + */ + readonly: { + type: Boolean, + value: true + }, + /** + * 使用mini样式 + */ + mini:{ + type: Boolean, + value: true + } + }, + + /** + * 组件的初始数据 + */ + data: { + calShow: true, // 日历组件是否打开 + dateShow: false, // 日期是否选择 + selectDay: '', // 当前选择日期 + selectDays: [], //多选日期 + canlender: { + "weeks": [] + }, + currentMonth: null, + nowMonth: new Date().getMonth()+1, + nowDate: new Date().getDate() + }, + ready() { + let sdays = this.data.selected; + sdays.forEach(v=>{ + this.data.selectDays.push(v); + }) + this.getWeek(new Date()); + if (this.data.isOpen) { + this.setData({ + calShow: false, + dateShow: true + }) + } + }, + /** + * 组件的方法列表 + */ + methods: { + open: function(date) { + if(date && date!=''){ + this.data.selectDays = []; //打开时候显示一个 + this.data.selectDays.push(date); + this.setData({ + selectDays: this.data.selectDays + }) + this.getWeek(date); + } + this.dateSelection(); + }, + close: function() { + this.packup(); + }, + clear: function(){ + this.setData({ + selectDays: [] + }) + let m; + if(this.data.currentMonth == null){ + m = this.data.canlender.month + }else{ + m = this.data.currentMonth + } + let year = this.data.canlender.year + "-" + m + "-" + this.data.canlender.date + let _date = this.getDate(year, 0); + this.getWeek(_date); + this.triggerEvent("clear",{}) + }, + dateSelection() { + if (this.data.isOpen) { + return + } + let self = this; + if (self.data.calShow) { + self.setData({ + calShow: false + }, () => { + setTimeout(() => { + self.setData({ + dateShow: true + }, () => { + self.triggerEvent('show', { + ischeck: !self.data.calShow + }) + }) + }, 100) + }) + } else { + self.setData({ + dateShow: false + }, () => { + setTimeout(() => { + self.setData({ + calShow: true + }, () => { + self.triggerEvent('show', { + ischeck: !self.data.calShow + }) + }) + }, 300) + }) + } + }, + //选择日期 + selectDay(e) { + if(this.data.readonly){ + return + } + let index = e.currentTarget.dataset.index; + let week = e.currentTarget.dataset.week; + let ischeck = e.currentTarget.dataset.ischeck; + let canlender = this.data.canlender; + if (!ischeck) return false; + let month = canlender.weeks[week][index].month < 10 ? "0" + canlender.weeks[week][index].month : canlender.weeks[week][index].month + let date = canlender.weeks[week][index].date < 10 ? "0" + canlender.weeks[week][index].date : canlender.weeks[week][index].date + let datestr = canlender.year + "-" + month + "-" + date; + let selectDays = this.data.selectDays; + if (selectDays.indexOf(datestr)==-1) { + if(this.data.multiple){ + //多选 + selectDays.push(datestr); + }else{ + selectDays = []; //只保留最后选的 + selectDays.push(datestr); + } + }else{ + let index = selectDays.indexOf(datestr); + selectDays.splice(index, 1); + } + selectDays.sort(function(a, b){ + let ds1 = a.split("-"); + let ds2 = b.split("-"); + let d1 = new Date(ds1[0], ds1[1], ds1[2]); + let d2 = new Date(ds2[0], ds2[1], ds2[2]); + return d1-d2; + }); + this.data.selectDays = selectDays; + this.getWeek(datestr); + this.triggerEvent('getdate', { + datestr + }) + }, + //点击确定 + packup() { + let self = this; + self.triggerEvent('select', { + selectDays: self.data.selectDays + }) + if (this.data.isOpen) { + let year = self.data.canlender.year + "-" + self.data.canlender.month + "-" + self.data.canlender.date + let _date = self.getDate(year, 0); + self.getWeek(_date); + return + } + self.setData({ + dateShow: false + }, () => { + setTimeout(() => { + self.setData({ + calShow: true + }, () => { + let year = self.data.canlender.year + "-" + self.data.canlender.month + "-" + self.data.canlender.date + let _date = self.getDate(year, 0); + self.getWeek(_date); + }) + }, 300) + }) + }, + /** + * 页面通过事件选中日期后调用refresh方法刷新日历组件 + */ + refresh: function (num){ + this.setData({ + selectDays: num + }) + let m; + if(this.data.currentMonth == null){ + m = this.data.canlender.month + }else{ + m = this.data.currentMonth + } + + let year = this.data.canlender.year + "-" + m + "-" + this.data.canlender.date + let _date = this.getDate(year, 0); + this.getWeek(_date); + }, + // 返回今天 + backtoday() { + if(!this.data.readonly){ + let datestr = this.dateStr(new Date()); + this.data.selectDays.push(datestr); + this.setData({ + selectDays: this.data.selectDays + }); + this.triggerEvent('getdate', { + datestr + }) + } + this.getWeek(new Date()); + }, + // 前一天|| 后一天 + dataBefor(e) { + let num = 0; + let types = e.currentTarget.dataset.type; + + if (e.currentTarget.dataset.id === "0") { + num = -1; + } else { + num = 1 + } + let year = this.data.canlender.year + "-" + this.data.canlender.month + "-" + this.data.canlender.date + let _date = this.getDate(year, num, types === 'month' ? "month" : "day"); + this.getWeek(_date); + }, + + // 获取日历内容 + getWeek(dateData) { + + let selected = this.data.selected + let selectDays = this.data.selectDays + // 判断当前是 安卓还是ios ,传入不容的日期格式 + if (typeof dateData !== 'object') { + dateData = dateData.replace(/-/g, "/") + } + let _date = new Date(dateData); + let year = _date.getFullYear(); //年 + let month = _date.getMonth() + 1; //月 + let date = _date.getDate(); //日 + let day = _date.getDay(); // 天 + let canlender = []; + + let dates = { + firstDay: new Date(year, month - 1, 1).getDay(), + lastMonthDays: [], // 上个月末尾几天 + currentMonthDys: [], // 本月天数 + nextMonthDays: [], // 下个月开始几天 + endDay: new Date(year, month, 0).getDay(), + weeks: [] + } + // 循环上个月末尾几天添加到数组 + for (let i = dates.firstDay; i > 0; i--) { + let dd = new Date(year, month-1, -(i-1)); + let checked = false; + selectDays.forEach(v => { + let selDate = v.date.split('-'); + let ddstr = this.dateStr(dd); + if (ddstr == v) { + checked = true; + } + }) + dates.lastMonthDays.push({ + 'date': '', + 'month': '', + checked + }) + } + // 循环本月天数添加到数组 + for (let i = 1; i <= new Date(year, month, 0).getDate(); i++) { + let have = false; + let checked = false; + let step = ''; + // for (let j = 0; j < selected.length; j++) { + // let selDate = selected[j].split('-'); + // if (Number(year) === Number(selDate[0]) && Number(month) === Number(selDate[1]) && Number(i) === Number(selDate[2])) { + // have = true; + // } + // } + selectDays.forEach(v => { + let selDate = v.date.split('-'); + if (Number(year) === Number(selDate[0]) && Number(month) === Number(selDate[1]) && Number(i) === Number(selDate[2])) { + checked = true; + step = v.step; + } + }) + dates.currentMonthDys.push({ + 'date': i + "", + 'month': month, + // have, + checked, + step + }) + } + // 循环下个月开始几天 添加到数组 + for (let i = 1; i < 7 - dates.endDay; i++) { + dates.nextMonthDays.push({ + 'date': '', + 'month': '' + }) + } + + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 == 0) { + dates.weeks[parseInt(i / 7)] = new Array(7); + } + dates.weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + // 渲染数据 + this.setData({ + selectDay: month + "月" + date + "日", + "canlender.weeks": dates.weeks, + 'canlender.month': month, + 'canlender.date': date, + "canlender.day": day, + 'canlender.year': year, + }) + month = month < 10 ? "0" + month : month + date = date < 10 ? "0" + date : date + // let localstr = year+"-"+month+"-"+date; + // this.triggerEvent('getdate', { + // year, + // month, + // date, + // localstr + // }) + + // console.log(dates.weeks); + + }, + checkall(){ + let date = new Date(); + let m, d, day, dayNum; + let days = []; + if(this.data.currentMonth == null){ + m = parseInt(this.data.nowMonth) + }else{ + m = parseInt(this.data.currentMonth) + } + + switch (m) { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + dayNum = 31; + break; + case 4: + case 6: + case 9: + case 11: + dayNum = 30; + break; + case 2: + if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { + dayNum = 29; + } else { + dayNum = 28; + } + break; + } + for (d = 1; d <= dayNum; d++) { + date.setMonth(m - 1, d); + day = date.getDay(); + let str = this.format(date); + if(date.getMonth() == new Date().getMonth()){ + if(date.getDate() - new Date().getDate() >= 0){ + days.push(str); + } + }else if(date.getMonth() > new Date().getMonth()){ + days.push(str); + } + } + this.refresh(days); + this.triggerEvent('checkall', { + days + }) + }, + /** + * 时间计算 + */ + getDate(date, AddDayCount, str = 'day') { + if (typeof date !== 'object') { + date = date.replace(/-/g, "/") + } + let dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break; + case 'month': + dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 + break; + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break; + } + let y = dd.getFullYear() + let m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1) // 获取当前月份的日期,不足10补0 + let d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + this.setData({ + currentMonth: m + }) + return y + '-' + m + '-' + d + }, + //日期转字符串 + dateStr(calendar){ + let year = calendar.getFullYear(); + let month = calendar.getMonth()+1; + let date = calendar.getDate(); + month = month < 10 ? "0" + month : month; + date = date < 10 ? "0" + date : date; + let datestr = year + "-" + month + "-" + date; + return datestr; + }, + format(dd){ + let y = dd.getFullYear() + let m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1) + let d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() + return y + '-' + m + '-' + d + } + } +}) \ No newline at end of file diff --git a/components/calendar/calendar.json b/components/calendar/calendar.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/calendar/calendar.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/calendar/calendar.wxml b/components/calendar/calendar.wxml new file mode 100644 index 0000000..a3d338a --- /dev/null +++ b/components/calendar/calendar.wxml @@ -0,0 +1,73 @@ + +var strcontains = function (str,c) { + if (str.indexOf(c) >= 0) { + return true + }else{ + return false + } +} + +var formatNumber = function(n) { + n = n.toString() + return n[1] ? n : '0' + n +} + +module.exports = { + formatNumber: formatNumber, + strcontains: strcontains +} + + + + + + + + + {{canlender.year}}年{{canlender.month}}月 + + + + + + + + + + + {{canlender.year}}年 + {{canlender.month}}月 + + + + + + + + + + + + + + + + + + {{day.date}} + + + + + {{day.date}} + {{day.step}} + + + + + + + + + \ No newline at end of file diff --git a/components/calendar/calendar.wxss b/components/calendar/calendar.wxss new file mode 100644 index 0000000..2dfee45 --- /dev/null +++ b/components/calendar/calendar.wxss @@ -0,0 +1,260 @@ +/* pages/calendar/calendar.wxss */ +cover-view{ + line-height: initial; +} +.calendar-box { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100vh; + background: rgba(0, 0, 0, 0.5); + z-index: 999999; + padding-top: 100rpx; + box-sizing: border-box; + transition: all 0.3s; + opacity: 0; +} + +.calendar-box.active { + opacity: 1; +} + +.calendar-wrapper { + width: 100%; + border-top: 1px #f5f5f5 solid; + border-bottom: 1px #f5f5f5 solid; + box-sizing: border-box; + font-size: 26rpx; + background: #fff; + transition: all 0.3s; + transform: translateY(-100%); +} + +.calendar-wrapper.active { + transform: translateY(0%); +} + +.header { + display: flex; + justify-content: center; + align-items: center; + position: relative; + height: 100rpx; + background: #fff; + z-index: 10000; +} + +.top-jiantou { + width: 100rpx; + height: 100rpx; + text-align: center; + box-sizing: border-box; + line-height: 100rpx; +} + +.iconfont{ + display: flex; + justify-content: center; + align-items: center; + position: relative; + color: #1AB16C; + width: 53rpx; + height: 53rpx; +} + +.left-color, +.right-color + { + display: block; + width: 0; + height: 0; + border-top: 20rpx solid transparent; + border-bottom: 20rpx solid transparent; +} + +.left-color{ + border-right: 40rpx solid transparent; + border-right-color: #1AB16C; +} + +.right-color{ + border-left: 40rpx solid transparent; + border-left-color: #1AB16C; +} + +.btn { + margin: 0 30rpx; + width: 240rpx; + height: 53rpx; + border: 1rpx solid #1AB16C; + border-radius: 26rpx; + color: #1AB16C; + font-size: 26rpx; + box-sizing: border-box; +} + +.calendar-panel { + position: relative; + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + height: 80rpx; +} + +.backtoday { + position: absolute; + right: 0; + top: 15rpx; + padding: 0 10rpx; + padding-left: 20rpx; + height: 50rpx; + line-height: 50rpx; + border: 1px #1AB16C solid; + border-right: none; + font-size: 28rpx; + border-top-left-radius: 50rpx; + border-bottom-left-radius: 50rpx; + color: #1AB16C; + background: rgba(82, 184, 245, 0.1); +} +.checkalllbtn { + position: absolute; + left: 0; + top: 15rpx; + padding: 0 10rpx; + padding-right: 20rpx; + height: 50rpx; + line-height: 50rpx; + border: 1px #1AB16C solid; + border-left: none; + font-size: 28rpx; + border-top-right-radius: 50rpx; + border-bottom-right-radius: 50rpx; + color: #1AB16C; + background: rgba(82, 184, 245, 0.1); +} + +.date-befor, .date-after { + /* border: 1px red solid; */ + display: flex; + justify-content: center; + align-items: center; + height: 80rpx; + width: 80rpx; + text-align: center; + line-height: 80rpx; + /* margin-right: 20rpx; */ +} + +/* .date-after { + margin-left: 20rpx; +} */ + +.calendar-panel-box { + display: flex; +} + +.calendar-header { + display: flex; +} + +.calendar-header view, +.calendar-header cover-view { + width: 100%; + text-align: center; + line-height: 80rpx; + color: #1AB16C; +} +.calendar-header.mini view, +.calendar-header.mini cover-view + { + line-height: 50rpx; +} +.calendar-body { + display: flex; + flex-wrap: wrap; +} + +.calender-body-date-week { + display: flex; + width: 100%; + border-bottom: 1px #f5f5f5 solid; + height:100rpx; + padding:10rpx 0; +} + +.date { + + width: 100%; + display: flex; + color: #1c1c1c; + background: #fff; + align-items: center; + flex-direction: column; + +} +.date.mini{ + line-height: 50rpx; + +} +.date.active { + background: red; +} + +.placeholder { + color: #1c1c1c; +} + +.date-current { + background: #1AB16C; + color: #fff; +} + +.date-lock { + color: #ff5a5f; +} +.data-circle { + color: #1AB16C; + font-weight: bold; +} +.data-circle.mini{ + bottom: 2rpx; +} + +.packup { + width: 100%; + height: 100rpx; + line-height: 100rpx; + text-align: center; + color: #1AB16C; + align-items: center; +} +.packup-button{ + display: flex; + align-items: center; + justify-content: center; + width: 50%; + height: 55px; + line-height:55px!important; +} +.flex{ + display: flex; +} +.flex-between{ + justify-content: space-between; +} +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} +.border-left{ + border-left:1px solid #eee; +} +.cmf-btn{ + background-color: #39b54a; + color: #fff; + border: 1rpx solid #39b54a; +} diff --git a/components/calendarn/calendar.js b/components/calendarn/calendar.js new file mode 100644 index 0000000..8d43665 --- /dev/null +++ b/components/calendarn/calendar.js @@ -0,0 +1,475 @@ +// components/calendar/calendar.js +Component({ + options: { + styleIsolation: 'apply-shared' + }, + properties: { + date: { + type: null, + value: new Date() + }, + /** + * 选中的日期 + */ + selected: { + type: Array, + value: [], + observer(newVal, oldVal) { + this.getWeek(new Date()) + } + }, + /** + * 锁定日期 + */ + lockDay: { + type: String, + }, + /** + * 是否默认展开, 可以调用open事件展开组件 + */ + isOpen: { + type: Boolean, + value: false + }, + /** + * 是否多选日期 + */ + multiple:{ + type: Boolean, + value: true + }, + /** + * 是否展示头部 + */ + showHeader: { + type: Boolean, + value: false + }, + /** + * 是否不能修改 + */ + readonly: { + type: Boolean, + value: true + }, + /** + * 使用mini样式 + */ + mini:{ + type: Boolean, + value: true + } + }, + + /** + * 组件的初始数据 + */ + data: { + calShow: true, // 日历组件是否打开 + dateShow: false, // 日期是否选择 + selectDay: '', // 当前选择日期 + selectDays: [], //多选日期 + canlender: { + "weeks": [] + }, + currentMonth: null, + nowMonth: new Date().getMonth()+1, + nowDate: new Date().getDate() + }, + ready() { + let sdays = this.data.selected; + sdays.forEach(v=>{ + this.data.selectDays.push(v); + }) + this.getWeek(new Date()); + if (this.data.isOpen) { + this.setData({ + calShow: false, + dateShow: true + }) + } + }, + /** + * 组件的方法列表 + */ + methods: { + open: function(date) { + if(date && date!=''){ + this.data.selectDays = []; //打开时候显示一个 + this.data.selectDays.push(date); + this.setData({ + selectDays: this.data.selectDays + }) + this.getWeek(date); + } + this.dateSelection(); + }, + close: function() { + this.packup(); + }, + clear: function(){ + this.setData({ + selectDays: [] + }) + let m; + if(this.data.currentMonth == null){ + m = this.data.canlender.month + }else{ + m = this.data.currentMonth + } + let year = this.data.canlender.year + "-" + m + "-" + this.data.canlender.date + let _date = this.getDate(year, 0); + this.getWeek(_date); + this.triggerEvent("clear",{}) + }, + dateSelection() { + if (this.data.isOpen) { + return + } + let self = this; + if (self.data.calShow) { + self.setData({ + calShow: false + }, () => { + setTimeout(() => { + self.setData({ + dateShow: true + }, () => { + self.triggerEvent('show', { + ischeck: !self.data.calShow + }) + }) + }, 100) + }) + } else { + self.setData({ + dateShow: false + }, () => { + setTimeout(() => { + self.setData({ + calShow: true + }, () => { + self.triggerEvent('show', { + ischeck: !self.data.calShow + }) + }) + }, 300) + }) + } + }, + //选择日期 + selectDay(e) { + if(this.data.readonly){ + return + } + let index = e.currentTarget.dataset.index; + let week = e.currentTarget.dataset.week; + let ischeck = e.currentTarget.dataset.ischeck; + let canlender = this.data.canlender; + if (!ischeck) return false; + let month = canlender.weeks[week][index].month < 10 ? "0" + canlender.weeks[week][index].month : canlender.weeks[week][index].month + let date = canlender.weeks[week][index].date < 10 ? "0" + canlender.weeks[week][index].date : canlender.weeks[week][index].date + let datestr = canlender.year + "-" + month + "-" + date; + let selectDays = this.data.selectDays; + if (selectDays.indexOf(datestr)==-1) { + if(this.data.multiple){ + //多选 + selectDays.push(datestr); + }else{ + selectDays = []; //只保留最后选的 + selectDays.push(datestr); + } + }else{ + let index = selectDays.indexOf(datestr); + selectDays.splice(index, 1); + } + selectDays.sort(function(a, b){ + let ds1 = a.split("-"); + let ds2 = b.split("-"); + let d1 = new Date(ds1[0], ds1[1], ds1[2]); + let d2 = new Date(ds2[0], ds2[1], ds2[2]); + return d1-d2; + }); + this.data.selectDays = selectDays; + this.getWeek(datestr); + this.triggerEvent('getdate', { + datestr + }) + }, + //点击确定 + packup() { + let self = this; + self.triggerEvent('select', { + selectDays: self.data.selectDays + }) + if (this.data.isOpen) { + let year = self.data.canlender.year + "-" + self.data.canlender.month + "-" + self.data.canlender.date + let _date = self.getDate(year, 0); + self.getWeek(_date); + return + } + self.setData({ + dateShow: false + }, () => { + setTimeout(() => { + self.setData({ + calShow: true + }, () => { + let year = self.data.canlender.year + "-" + self.data.canlender.month + "-" + self.data.canlender.date + let _date = self.getDate(year, 0); + self.getWeek(_date); + }) + }, 300) + }) + }, + /** + * 页面通过事件选中日期后调用refresh方法刷新日历组件 + */ + refresh: function (num){ + this.setData({ + selectDays: num + }) + let m; + if(this.data.currentMonth == null){ + m = this.data.canlender.month + }else{ + m = this.data.currentMonth + } + + let year = this.data.canlender.year + "-" + m + "-" + this.data.canlender.date + let _date = this.getDate(year, 0); + this.getWeek(_date); + }, + // 返回今天 + backtoday() { + if(!this.data.readonly){ + let datestr = this.dateStr(new Date()); + this.data.selectDays.push(datestr); + this.setData({ + selectDays: this.data.selectDays + }); + this.triggerEvent('getdate', { + datestr + }) + } + this.getWeek(new Date()); + }, + // 前一天|| 后一天 + dataBefor(e) { + let num = 0; + let types = e.currentTarget.dataset.type; + + if (e.currentTarget.dataset.id === "0") { + num = -1; + } else { + num = 1 + } + let year = this.data.canlender.year + "-" + this.data.canlender.month + "-" + this.data.canlender.date + let _date = this.getDate(year, num, types === 'month' ? "month" : "day"); + this.getWeek(_date); + }, + + // 获取日历内容 + getWeek(dateData) { + + let selected = this.data.selected + let selectDays = this.data.selectDays + // 判断当前是 安卓还是ios ,传入不容的日期格式 + if (typeof dateData !== 'object') { + dateData = dateData.replace(/-/g, "/") + } + let _date = new Date(dateData); + let year = _date.getFullYear(); //年 + let month = _date.getMonth() + 1; //月 + let date = _date.getDate(); //日 + let day = _date.getDay(); // 天 + let canlender = []; + + let dates = { + firstDay: new Date(year, month - 1, 1).getDay(), + lastMonthDays: [], // 上个月末尾几天 + currentMonthDys: [], // 本月天数 + nextMonthDays: [], // 下个月开始几天 + endDay: new Date(year, month, 0).getDay(), + weeks: [] + } + // 循环上个月末尾几天添加到数组 + for (let i = dates.firstDay; i > 0; i--) { + let dd = new Date(year, month-1, -(i-1)); + let checked = false; + selectDays.forEach(v => { + let selDate = v.date.split('-'); + let ddstr = this.dateStr(dd); + if (ddstr == v) { + checked = true; + } + }) + dates.lastMonthDays.push({ + 'date': '', + 'month': '', + checked + }) + } + // 循环本月天数添加到数组 + for (let i = 1; i <= new Date(year, month, 0).getDate(); i++) { + let have = false; + let checked = false; + let step = ''; + let city = ''; + // for (let j = 0; j < selected.length; j++) { + // let selDate = selected[j].split('-'); + // if (Number(year) === Number(selDate[0]) && Number(month) === Number(selDate[1]) && Number(i) === Number(selDate[2])) { + // have = true; + // } + // } + selectDays.forEach(v => { + let selDate = v.date.split('-'); + if (Number(year) === Number(selDate[0]) && Number(month) === Number(selDate[1]) && Number(i) === Number(selDate[2])) { + checked = true; + step = v.step; + city = v.city_id; + } + }) + dates.currentMonthDys.push({ + 'date': i + "", + 'month': month, + // have, + checked, + step, + city + }) + } + // 循环下个月开始几天 添加到数组 + for (let i = 1; i < 7 - dates.endDay; i++) { + dates.nextMonthDays.push({ + 'date': '', + 'month': '' + }) + } + + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 == 0) { + dates.weeks[parseInt(i / 7)] = new Array(7); + } + dates.weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + // 渲染数据 + this.setData({ + selectDay: month + "月" + date + "日", + "canlender.weeks": dates.weeks, + 'canlender.month': month, + 'canlender.date': date, + "canlender.day": day, + 'canlender.year': year, + }) + month = month < 10 ? "0" + month : month + date = date < 10 ? "0" + date : date + // let localstr = year+"-"+month+"-"+date; + // this.triggerEvent('getdate', { + // year, + // month, + // date, + // localstr + // }) + + // console.log(dates.weeks); + + }, + checkall(){ + let date = new Date(); + let m, d, day, dayNum; + let days = []; + if(this.data.currentMonth == null){ + m = parseInt(this.data.nowMonth) + }else{ + m = parseInt(this.data.currentMonth) + } + + switch (m) { + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + case 12: + dayNum = 31; + break; + case 4: + case 6: + case 9: + case 11: + dayNum = 30; + break; + case 2: + if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { + dayNum = 29; + } else { + dayNum = 28; + } + break; + } + for (d = 1; d <= dayNum; d++) { + date.setMonth(m - 1, d); + day = date.getDay(); + let str = this.format(date); + if(date.getMonth() == new Date().getMonth()){ + if(date.getDate() - new Date().getDate() >= 0){ + days.push(str); + } + }else if(date.getMonth() > new Date().getMonth()){ + days.push(str); + } + } + this.refresh(days); + this.triggerEvent('checkall', { + days + }) + }, + /** + * 时间计算 + */ + getDate(date, AddDayCount, str = 'day') { + if (typeof date !== 'object') { + date = date.replace(/-/g, "/") + } + let dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break; + case 'month': + dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 + break; + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break; + } + let y = dd.getFullYear() + let m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1) // 获取当前月份的日期,不足10补0 + let d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + this.setData({ + currentMonth: m + }) + return y + '-' + m + '-' + d + }, + //日期转字符串 + dateStr(calendar){ + let year = calendar.getFullYear(); + let month = calendar.getMonth()+1; + let date = calendar.getDate(); + month = month < 10 ? "0" + month : month; + date = date < 10 ? "0" + date : date; + let datestr = year + "-" + month + "-" + date; + return datestr; + }, + format(dd){ + let y = dd.getFullYear() + let m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1) + let d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() + return y + '-' + m + '-' + d + } + } +}) \ No newline at end of file diff --git a/components/calendarn/calendar.json b/components/calendarn/calendar.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/calendarn/calendar.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/calendarn/calendar.wxml b/components/calendarn/calendar.wxml new file mode 100644 index 0000000..dc8dc55 --- /dev/null +++ b/components/calendarn/calendar.wxml @@ -0,0 +1,73 @@ + +var strcontains = function (str,c) { + if (str.indexOf(c) >= 0) { + return true + }else{ + return false + } +} + +var formatNumber = function(n) { + n = n.toString() + return n[1] ? n : '0' + n +} + +module.exports = { + formatNumber: formatNumber, + strcontains: strcontains +} + + + + + + + + + {{canlender.year}}年{{canlender.month}}月 + + + + + + + + + + + {{canlender.year}}年 + {{canlender.month}}月 + + + + + + + + + + + + + + + + + + {{day.date}} + + + + + {{day.date}} + {{day.step}} {{day.city}} + + + + + + + + + \ No newline at end of file diff --git a/components/calendarn/calendar.wxss b/components/calendarn/calendar.wxss new file mode 100644 index 0000000..9b7435a --- /dev/null +++ b/components/calendarn/calendar.wxss @@ -0,0 +1,258 @@ +/* pages/calendar/calendar.wxss */ +cover-view{ + line-height: initial; +} +.calendar-box { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100vh; + background: rgba(0, 0, 0, 0.5); + z-index: 999999; + padding-top: 100rpx; + box-sizing: border-box; + transition: all 0.3s; + opacity: 0; +} + +.calendar-box.active { + opacity: 1; +} + +.calendar-wrapper { + width: 100%; + border-top: 1px #f5f5f5 solid; + border-bottom: 1px #f5f5f5 solid; + box-sizing: border-box; + font-size: 26rpx; + background: #fff; + transition: all 0.3s; + transform: translateY(-100%); +} + +.calendar-wrapper.active { + transform: translateY(0%); +} + +.header { + display: flex; + justify-content: center; + align-items: center; + position: relative; + height: 100rpx; + background: #fff; + z-index: 10000; + padding: 20rpx; +} + +.top-jiantou { + width: 100rpx; + height: 100rpx; + text-align: center; + box-sizing: border-box; + line-height: 100rpx; +} + +.iconfont{ + display: flex; + justify-content: center; + align-items: center; + position: relative; + color: #890001; + width: 53rpx; + height: 53rpx; +} + +.left-color, +.right-color + { + display: block; + width: 0; + height: 0; + border-top: 20rpx solid transparent; + border-bottom: 20rpx solid transparent; +} + +.left-color{ + border-right: 40rpx solid transparent; + border-right-color: #890001; +} + +.right-color{ + border-left: 40rpx solid transparent; + border-left-color: #890001; +} + +.btn { + margin: 0 30rpx; + width: 240rpx; + height: 53rpx; + border: 2rpx solid #890001; + border-radius: 26rpx; + color: #890001; + font-size: 26rpx; + box-sizing: border-box; +} + +.calendar-panel { + position: relative; + display: flex; + align-items: center; + justify-content: center; + font-size: 32rpx; + height: 80rpx; +} + +.backtoday { + position: absolute; + right: 0; + top: 15rpx; + padding: 0 10rpx; + padding-left: 20rpx; + height: 50rpx; + line-height: 50rpx; + border: 1px #890001 solid; + border-right: none; + font-size: 28rpx; + border-top-left-radius: 50rpx; + border-bottom-left-radius: 50rpx; + color: #890001; + background: rgba(82, 184, 245, 0.1); +} +.checkalllbtn { + position: absolute; + left: 0; + top: 15rpx; + padding: 0 10rpx; + padding-right: 20rpx; + height: 50rpx; + line-height: 50rpx; + border: 1px #890001 solid; + border-left: none; + font-size: 28rpx; + border-top-right-radius: 50rpx; + border-bottom-right-radius: 50rpx; + color: #890001; + background: rgba(82, 184, 245, 0.1); +} + +.date-befor, .date-after { + /* border: 1px red solid; */ + display: flex; + justify-content: center; + align-items: center; + height: 80rpx; + width: 80rpx; + text-align: center; + line-height: 80rpx; + /* margin-right: 20rpx; */ +} + +/* .date-after { + margin-left: 20rpx; +} */ + +.calendar-panel-box { + display: flex; +} + +.calendar-header { + display: flex; +} + +.calendar-header view, +.calendar-header cover-view { + width: 100%; + text-align: center; + line-height: 80rpx; + color: #890001; +} +.calendar-header.mini view, +.calendar-header.mini cover-view + { + line-height: 50rpx; +} +.calendar-body { + display: flex; + flex-wrap: wrap; +} +.calender-body-date-week { + display: flex; + width: 100%; + border-bottom: 1px #f5f5f5 solid; + height:100rpx; + padding:10rpx 0; +} +.date { + width: 100%; + display: flex; + color: #1c1c1c; + background: #fff; + align-items: center; + flex-direction: column; + +} +.date.mini{ + height:120rpx; +} +.date.active { + background: red; +} + +.placeholder { + color: #1c1c1c; +} + +.date-current { + background: #890001; + color: #fff; +} + +.date-lock { + color: #ff5a5f; +} +.data-circle { + color: #890001; + font-weight: bold; +} +.data-circle.mini{ + bottom: 2rpx; + text-align: center; +} + +.packup { + width: 100%; + height: 100rpx; + line-height: 100rpx; + text-align: center; + color: #890001; + align-items: center; +} +.packup-button{ + display: flex; + align-items: center; + justify-content: center; + width: 50%; + height: 55px; + line-height:55px!important; +} +.flex{ + display: flex; +} +.flex-between{ + justify-content: space-between; +} +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} +.border-left{ + border-left:1px solid #eee; +} +.cmf-btn{ + background-color: #39b54a; + color: #fff; + border: 1rpx solid #39b54a; +} diff --git a/components/empty/index.js b/components/empty/index.js new file mode 100644 index 0000000..37b13f6 --- /dev/null +++ b/components/empty/index.js @@ -0,0 +1,23 @@ +// lionfish_comshop/components/empty/index.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) diff --git a/components/empty/index.json b/components/empty/index.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/empty/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/empty/index.wxml b/components/empty/index.wxml new file mode 100644 index 0000000..fba2acf --- /dev/null +++ b/components/empty/index.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/components/empty/index.wxss b/components/empty/index.wxss new file mode 100644 index 0000000..523e5f5 --- /dev/null +++ b/components/empty/index.wxss @@ -0,0 +1,21 @@ +.none-rush-list { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding-bottom: 140rpx; + padding-top: 140rpx; +} + +.none-rush-list .img-block { + width: 240rpx; + height: 240rpx; + margin-bottom: 30rpx; +} + +.none-rush-list .h1 { + font-size: 32rpx; + line-height: 32rpx; + color: #444; + margin-bottom: 20rpx; +} \ No newline at end of file diff --git a/components/parser/libs/CssHandler.js b/components/parser/libs/CssHandler.js new file mode 100644 index 0000000..a238794 --- /dev/null +++ b/components/parser/libs/CssHandler.js @@ -0,0 +1,97 @@ +const cfg = require('./config.js'), + isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + +function CssHandler(tagStyle) { + var styles = Object.assign(Object.create(null), cfg.userAgentStyles); + for (var item in tagStyle) + styles[item] = (styles[item] ? styles[item] + ';' : '') + tagStyle[item]; + this.styles = styles; +} +CssHandler.prototype.getStyle = function (data) { + this.styles = new parser(data, this.styles).parse(); +} +CssHandler.prototype.match = function (name, attrs) { + var tmp, matched = (tmp = this.styles[name]) ? tmp + ';' : ''; + if (attrs.class) { + var items = attrs.class.split(' '); + for (var i = 0, item; item = items[i]; i++) + if (tmp = this.styles['.' + item]) + matched += tmp + ';'; + } + if (tmp = this.styles['#' + attrs.id]) + matched += tmp + ';'; + return matched; +} +module.exports = CssHandler; + +function parser(data, init) { + this.data = data; + this.floor = 0; + this.i = 0; + this.list = []; + this.res = init; + this.state = this.Space; +} +parser.prototype.parse = function () { + for (var c; c = this.data[this.i]; this.i++) + this.state(c); + return this.res; +} +parser.prototype.section = function () { + return this.data.substring(this.start, this.i); +} +// 状态机 +parser.prototype.Space = function (c) { + if (c == '.' || c == '#' || isLetter(c)) { + this.start = this.i; + this.state = this.Name; + } else if (c == '/' && this.data[this.i + 1] == '*') + this.Comment(); + else if (!cfg.blankChar[c] && c != ';') + this.state = this.Ignore; +} +parser.prototype.Comment = function () { + this.i = this.data.indexOf('*/', this.i) + 1; + if (!this.i) this.i = this.data.length; + this.state = this.Space; +} +parser.prototype.Ignore = function (c) { + if (c == '{') this.floor++; + else if (c == '}' && !--this.floor) this.state = this.Space; +} +parser.prototype.Name = function (c) { + if (cfg.blankChar[c]) { + this.list.push(this.section()); + this.state = this.NameSpace; + } else if (c == '{') { + this.list.push(this.section()); + this.Content(); + } else if (c == ',') { + this.list.push(this.section()); + this.Comma(); + } else if (!isLetter(c) && (c < '0' || c > '9') && c != '-' && c != '_') + this.state = this.Ignore; +} +parser.prototype.NameSpace = function (c) { + if (c == '{') this.Content(); + else if (c == ',') this.Comma(); + else if (!cfg.blankChar[c]) this.state = this.Ignore; +} +parser.prototype.Comma = function () { + while (cfg.blankChar[this.data[++this.i]]); + if (this.data[this.i] == '{') this.Content(); + else { + this.start = this.i--; + this.state = this.Name; + } +} +parser.prototype.Content = function () { + this.start = ++this.i; + if ((this.i = this.data.indexOf('}', this.i)) == -1) this.i = this.data.length; + var content = this.section(); + for (var i = 0, item; item = this.list[i++];) + if (this.res[item]) this.res[item] += ';' + content; + else this.res[item] = content; + this.list = []; + this.state = this.Space; +} \ No newline at end of file diff --git a/components/parser/libs/MpHtmlParser.js b/components/parser/libs/MpHtmlParser.js new file mode 100644 index 0000000..0b83cf8 --- /dev/null +++ b/components/parser/libs/MpHtmlParser.js @@ -0,0 +1,526 @@ +/** + * html 解析器 + * @tutorial https://github.com/jin-yufeng/Parser + * @version 20200630 + * @author JinYufeng + * @listens MIT + */ +const cfg = require('./config.js'), + blankChar = cfg.blankChar, + CssHandler = require('./CssHandler.js'), + windowWidth = wx.getSystemInfoSync().windowWidth; +var emoji; + +function MpHtmlParser(data, options = {}) { + this.attrs = {}; + this.CssHandler = new CssHandler(options.tagStyle, windowWidth); + this.data = data; + this.domain = options.domain; + this.DOM = []; + this.i = this.start = this.audioNum = this.imgNum = this.videoNum = 0; + options.prot = (this.domain || '').includes('://') ? this.domain.split('://')[0] : 'http'; + this.options = options; + this.state = this.Text; + this.STACK = []; + // 工具函数 + this.bubble = () => { + for (var i = this.STACK.length, item; item = this.STACK[--i];) { + if (cfg.richOnlyTags[item.name]) { + if (item.name == 'table' && !Object.hasOwnProperty.call(item, 'c')) item.c = 1; + return false; + } + item.c = 1; + } + return true; + } + this.decode = (val, amp) => { + var i = -1, + j, en; + while (1) { + if ((i = val.indexOf('&', i + 1)) == -1) break; + if ((j = val.indexOf(';', i + 2)) == -1) break; + if (val[i + 1] == '#') { + en = parseInt((val[i + 2] == 'x' ? '0' : '') + val.substring(i + 2, j)); + if (!isNaN(en)) val = val.substr(0, i) + String.fromCharCode(en) + val.substr(j + 1); + } else { + en = val.substring(i + 1, j); + if (cfg.entities[en] || en == amp) + val = val.substr(0, i) + (cfg.entities[en] || '&') + val.substr(j + 1); + } + } + return val; + } + this.getUrl = url => { + if (url[0] == '/') { + if (url[1] == '/') url = this.options.prot + ':' + url; + else if (this.domain) url = this.domain + url; + } else if (this.domain && url.indexOf('data:') != 0 && !url.includes('://')) + url = this.domain + '/' + url; + return url; + } + this.isClose = () => this.data[this.i] == '>' || (this.data[this.i] == '/' && this.data[this.i + 1] == '>'); + this.section = () => this.data.substring(this.start, this.i); + this.parent = () => this.STACK[this.STACK.length - 1]; + this.siblings = () => this.STACK.length ? this.parent().children : this.DOM; +} +MpHtmlParser.prototype.parse = function () { + if (emoji) this.data = emoji.parseEmoji(this.data); + for (var c; c = this.data[this.i]; this.i++) + this.state(c); + if (this.state == this.Text) this.setText(); + while (this.STACK.length) this.popNode(this.STACK.pop()); + return this.DOM; +} +// 设置属性 +MpHtmlParser.prototype.setAttr = function () { + var name = this.attrName.toLowerCase(), + val = this.attrVal; + if (cfg.boolAttrs[name]) this.attrs[name] = 'T'; + else if (val) { + if (name == 'src' || (name == 'data-src' && !this.attrs.src)) this.attrs.src = this.getUrl(this.decode(val, 'amp')); + else if (name == 'href' || name == 'style') this.attrs[name] = this.decode(val, 'amp'); + else if (name.substr(0, 5) != 'data-') this.attrs[name] = val; + } + this.attrVal = ''; + while (blankChar[this.data[this.i]]) this.i++; + if (this.isClose()) this.setNode(); + else { + this.start = this.i; + this.state = this.AttrName; + } +} +// 设置文本节点 +MpHtmlParser.prototype.setText = function () { + var back, text = this.section(); + if (!text) return; + text = (cfg.onText && cfg.onText(text, () => back = true)) || text; + if (back) { + this.data = this.data.substr(0, this.start) + text + this.data.substr(this.i); + let j = this.start + text.length; + for (this.i = this.start; this.i < j; this.i++) this.state(this.data[this.i]); + return; + } + if (!this.pre) { + // 合并空白符 + var tmp = []; + for (let i = text.length, c; c = text[--i];) + if (!blankChar[c] || (!blankChar[tmp[0]] && (c = ' '))) tmp.unshift(c); + text = tmp.join(''); + } + this.siblings().push({ + type: 'text', + text: this.decode(text) + }); +} +// 设置元素节点 +MpHtmlParser.prototype.setNode = function () { + var node = { + name: this.tagName.toLowerCase(), + attrs: this.attrs + }, + close = cfg.selfClosingTags[node.name]; + this.attrs = {}; + if (!cfg.ignoreTags[node.name]) { + // 处理属性 + var attrs = node.attrs, + style = this.CssHandler.match(node.name, attrs, node) + (attrs.style || ''), + styleObj = {}; + if (attrs.id) { + if (this.options.compress & 1) attrs.id = void 0; + else if (this.options.useAnchor) this.bubble(); + } + if ((this.options.compress & 2) && attrs.class) attrs.class = void 0; + switch (node.name) { + case 'a': + case 'ad': + this.bubble(); + break; + case 'font': + if (attrs.color) { + styleObj['color'] = attrs.color; + attrs.color = void 0; + } + if (attrs.face) { + styleObj['font-family'] = attrs.face; + attrs.face = void 0; + } + if (attrs.size) { + var size = parseInt(attrs.size); + if (size < 1) size = 1; + else if (size > 7) size = 7; + var map = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large']; + styleObj['font-size'] = map[size - 1]; + attrs.size = void 0; + } + break; + case 'embed': + var src = node.attrs.src || '', + type = node.attrs.type || ''; + if (type.includes('video') || src.includes('.mp4') || src.includes('.3gp') || src.includes('.m3u8')) + node.name = 'video'; + else if (type.includes('audio') || src.includes('.m4a') || src.includes('.wav') || src.includes('.mp3') || src.includes('.aac')) + node.name = 'audio'; + else break; + if (node.attrs.autostart) + node.attrs.autoplay = 'T'; + node.attrs.controls = 'T'; + // falls through + case 'video': + case 'audio': + if (!attrs.id) attrs.id = node.name + (++this[`${node.name}Num`]); + else this[`${node.name}Num`]++; + if (node.name == 'video') { + if (this.videoNum > 3) + node.lazyLoad = 1; + if (attrs.width) { + styleObj.width = parseFloat(attrs.width) + (attrs.width.includes('%') ? '%' : 'px'); + attrs.width = void 0; + } + if (attrs.height) { + styleObj.height = parseFloat(attrs.height) + (attrs.height.includes('%') ? '%' : 'px'); + attrs.height = void 0; + } + } + attrs.source = []; + if (attrs.src) { + attrs.source.push(attrs.src); + attrs.src = void 0; + } + this.bubble(); + break; + case 'td': + case 'th': + if (attrs.colspan || attrs.rowspan) + for (var k = this.STACK.length, item; item = this.STACK[--k];) + if (item.name == 'table') { + item.c = void 0; + break; + } + } + if (attrs.align) { + styleObj['text-align'] = attrs.align; + attrs.align = void 0; + } + // 压缩 style + var styles = style.split(';'); + style = ''; + for (var i = 0, len = styles.length; i < len; i++) { + var info = styles[i].split(':'); + if (info.length < 2) continue; + let key = info[0].trim().toLowerCase(), + value = info.slice(1).join(':').trim(); + if (value.includes('-webkit') || value.includes('-moz') || value.includes('-ms') || value.includes('-o') || value.includes('safe')) + style += `;${key}:${value}`; + else if (!styleObj[key] || value.includes('import') || !styleObj[key].includes('import')) + styleObj[key] = value; + } + if (node.name == 'img') { + if (attrs.src && !attrs.ignore) { + if (this.bubble()) + attrs.i = (this.imgNum++).toString(); + else attrs.ignore = 'T'; + } + if (attrs.ignore) { + style += ';-webkit-touch-callout:none'; + styleObj['max-width'] = '100%'; + } + if (!styleObj.position) + styleObj.top = styleObj.bottom = styleObj.left = styleObj.right = styleObj['z-index'] = void 0; + var width; + if (styleObj.width) width = styleObj.width; + else if (attrs.width) width = attrs.width.includes('%') ? attrs.width : attrs.width + 'px'; + if (width) { + styleObj.width = width; + attrs.width = '100%'; + if (parseInt(width) > windowWidth) { + styleObj.height = ''; + if (attrs.height) attrs.height = void 0; + } + } + if (styleObj.height) { + attrs.height = styleObj.height; + styleObj.height = ''; + } else if (attrs.height && !attrs.height.includes('%')) + attrs.height += 'px'; + } + for (var key in styleObj) { + var value = styleObj[key]; + if (!value) continue; + if (key.includes('flex') || key == 'order' || key == 'self-align') node.c = 1; + // 填充链接 + if (value.includes('url')) { + var j = value.indexOf('('); + if (j++ != -1) { + while (value[j] == '"' || value[j] == "'" || blankChar[value[j]]) j++; + value = value.substr(0, j) + this.getUrl(value.substr(j)); + } + } + // 转换 rpx + else if (value.includes('rpx')) + value = value.replace(/[0-9.]+\s*rpx/g, $ => parseFloat($) * windowWidth / 750 + 'px'); + else if (key == 'white-space' && value.includes('pre') && !close) + this.pre = node.pre = true; + style += `;${key}:${value}`; + } + style = style.substr(1); + if (style) attrs.style = style; + if (!close) { + node.children = []; + if (node.name == 'pre' && cfg.highlight) { + this.remove(node); + this.pre = node.pre = true; + } + this.siblings().push(node); + this.STACK.push(node); + } else if (!cfg.filter || cfg.filter(node, this) != false) + this.siblings().push(node); + } else { + if (!close) this.remove(node); + else if (node.name == 'source') { + var parent = this.parent(); + if (parent && (parent.name == 'video' || parent.name == 'audio') && node.attrs.src) + parent.attrs.source.push(node.attrs.src); + } else if (node.name == 'base' && !this.domain) this.domain = node.attrs.href; + } + if (this.data[this.i] == '/') this.i++; + this.start = this.i + 1; + this.state = this.Text; +} +// 移除标签 +MpHtmlParser.prototype.remove = function (node) { + var name = node.name, + j = this.i; + // 处理 svg + var handleSvg = () => { + var src = this.data.substring(j, this.i + 1); + if (!node.attrs.xmlns) src = ' xmlns="http://www.w3.org/2000/svg"' + src; + var i = j; + while (this.data[j] != '<') j--; + src = this.data.substring(j, i) + src; + var parent = this.parent(); + if (node.attrs.width == '100%' && parent && (parent.attrs.style || '').includes('inline')) + parent.attrs.style = 'width:300px;max-width:100%;' + parent.attrs.style; + this.siblings().push({ + name: 'img', + attrs: { + src: 'data:image/svg+xml;utf8,' + src.replace(/#/g, '%23'), + style: (/vertical[^;]+/.exec(node.attrs.style) || []).shift(), + ignore: 'T' + } + }) + } + if (node.name == 'svg' && this.data[j] == '/') return handleSvg(this.i++); + while (1) { + if ((this.i = this.data.indexOf('', this.i)) == -1) this.i = this.data.length; + if (name == 'svg') handleSvg(); + return; + } + } +} +// 节点出栈处理 +MpHtmlParser.prototype.popNode = function (node) { + // 空白符处理 + if (node.pre) { + node.pre = this.pre = void 0; + for (let i = this.STACK.length; i--;) + if (this.STACK[i].pre) + this.pre = true; + } + var siblings = this.siblings(), + len = siblings.length, + childs = node.children; + if (node.name == 'head' || (cfg.filter && cfg.filter(node, this) == false)) + return siblings.pop(); + var attrs = node.attrs; + // 替换一些标签名 + if (cfg.blockTags[node.name]) node.name = 'div'; + else if (!cfg.trustTags[node.name]) node.name = 'span'; + // 去除块标签前后空串 + if (node.name == 'div' || node.name == 'p' || node.name[0] == 't') { + if (len > 1 && siblings[len - 2].text == ' ') + siblings.splice(--len - 1, 1); + if (childs.length && childs[childs.length - 1].text == ' ') + childs.pop(); + } + // 处理列表 + if (node.c && (node.name == 'ul' || node.name == 'ol')) { + if ((node.attrs.style || '').includes('list-style:none')) { + for (let i = 0, child; child = childs[i++];) + if (child.name == 'li') + child.name = 'div'; + } else if (node.name == 'ul') { + var floor = 1; + for (let i = this.STACK.length; i--;) + if (this.STACK[i].name == 'ul') floor++; + if (floor != 1) + for (let i = childs.length; i--;) + childs[i].floor = floor; + } else { + for (let i = 0, num = 1, child; child = childs[i++];) + if (child.name == 'li') { + child.type = 'ol'; + child.num = ((num, type) => { + if (type == 'a') return String.fromCharCode(97 + (num - 1) % 26); + if (type == 'A') return String.fromCharCode(65 + (num - 1) % 26); + if (type == 'i' || type == 'I') { + num = (num - 1) % 99 + 1; + var one = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'], + ten = ['X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'], + res = (ten[Math.floor(num / 10) - 1] || '') + (one[num % 10 - 1] || ''); + if (type == 'i') return res.toLowerCase(); + return res; + } + return num; + })(num++, attrs.type) + '.'; + } + } + } + // 处理表格的边框 + if (node.name == 'table') { + var padding = attrs.cellpadding, + spacing = attrs.cellspacing, + border = attrs.border; + if (node.c) { + this.bubble(); + attrs.style = (attrs.style || '') + ';display:table'; + if (!padding) padding = 2; + if (!spacing) spacing = 2; + } + if (border) attrs.style = `border:${border}px solid gray;${attrs.style || ''}`; + if (spacing) attrs.style = `border-spacing:${spacing}px;${attrs.style || ''}`; + if (border || padding || node.c) + (function f(ns) { + for (var i = 0, n; n = ns[i]; i++) { + if (n.type == 'text') continue; + var style = n.attrs.style || ''; + if (node.c && n.name[0] == 't') { + n.c = 1; + style += ';display:table-' + (n.name == 'th' || n.name == 'td' ? 'cell' : (n.name == 'tr' ? 'row' : 'row-group')); + } + if (n.name == 'th' || n.name == 'td') { + if (border) style = `border:${border}px solid gray;${style}`; + if (padding) style = `padding:${padding}px;${style}`; + } else f(n.children || []); + if (style) n.attrs.style = style; + } + })(childs) + if (this.options.autoscroll) { + var table = Object.assign({}, node); + node.name = 'div'; + node.attrs = { + style: 'overflow:scroll' + } + node.children = [table]; + } + } + this.CssHandler.pop && this.CssHandler.pop(node); + // 自动压缩 + if (node.name == 'div' && !Object.keys(attrs).length && childs.length == 1 && childs[0].name == 'div') + siblings[len - 1] = childs[0]; +} +// 状态机 +MpHtmlParser.prototype.Text = function (c) { + if (c == '<') { + var next = this.data[this.i + 1], + isLetter = c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); + if (isLetter(next)) { + this.setText(); + this.start = this.i + 1; + this.state = this.TagName; + } else if (next == '/') { + this.setText(); + if (isLetter(this.data[++this.i + 1])) { + this.start = this.i + 1; + this.state = this.EndTag; + } else this.Comment(); + } else if (next == '!') { + this.setText(); + this.Comment(); + } + } +} +MpHtmlParser.prototype.Comment = function () { + var key; + if (this.data.substring(this.i + 2, this.i + 4) == '--') key = '-->'; + else if (this.data.substring(this.i + 2, this.i + 9) == '[CDATA[') key = ']]>'; + else key = '>'; + if ((this.i = this.data.indexOf(key, this.i + 2)) == -1) this.i = this.data.length; + else this.i += key.length - 1; + this.start = this.i + 1; + this.state = this.Text; +} +MpHtmlParser.prototype.TagName = function (c) { + if (blankChar[c]) { + this.tagName = this.section(); + while (blankChar[this.data[this.i]]) this.i++; + if (this.isClose()) this.setNode(); + else { + this.start = this.i; + this.state = this.AttrName; + } + } else if (this.isClose()) { + this.tagName = this.section(); + this.setNode(); + } +} +MpHtmlParser.prototype.AttrName = function (c) { + if (c == '=' || blankChar[c] || this.isClose()) { + this.attrName = this.section(); + if (blankChar[c]) + while (blankChar[this.data[++this.i]]); + if (this.data[this.i] == '=') { + while (blankChar[this.data[++this.i]]); + this.start = this.i--; + this.state = this.AttrValue; + } else this.setAttr(); + } +} +MpHtmlParser.prototype.AttrValue = function (c) { + if (c == '"' || c == "'") { + this.start++; + if ((this.i = this.data.indexOf(c, this.i + 1)) == -1) return this.i = this.data.length; + this.attrVal = this.section(); + this.i++; + } else { + for (; !blankChar[this.data[this.i]] && !this.isClose(); this.i++); + this.attrVal = this.section(); + } + this.setAttr(); +} +MpHtmlParser.prototype.EndTag = function (c) { + if (blankChar[c] || c == '>' || c == '/') { + var name = this.section().toLowerCase(); + for (var i = this.STACK.length; i--;) + if (this.STACK[i].name == name) break; + if (i != -1) { + var node; + while ((node = this.STACK.pop()).name != name) this.popNode(node); + this.popNode(node); + } else if (name == 'p' || name == 'br') + this.siblings().push({ + name, + attrs: {} + }); + this.i = this.data.indexOf('>', this.i); + this.start = this.i + 1; + if (this.i == -1) this.i = this.data.length; + else this.state = this.Text; + } +} +module.exports = MpHtmlParser; \ No newline at end of file diff --git a/components/parser/libs/config.js b/components/parser/libs/config.js new file mode 100644 index 0000000..fbb0666 --- /dev/null +++ b/components/parser/libs/config.js @@ -0,0 +1,63 @@ +/* 配置文件 */ +const canIUse = wx.canIUse('editor'); // 高基础库标识,用于兼容 +module.exports = { + // 出错占位图 + errorImg: null, + // 过滤器函数 + filter: null, + // 代码高亮函数 + highlight: null, + // 文本处理函数 + onText: null, + // 实体编码列表 + entities: { + quot: '"', + apos: "'", + semi: ';', + nbsp: '\xA0', + ndash: '–', + mdash: '—', + middot: '·', + lsquo: '‘', + rsquo: '’', + ldquo: '“', + rdquo: '”', + bull: '•', + hellip: '…' + }, + blankChar: makeMap(' ,\xA0,\t,\r,\n,\f'), + boolAttrs: makeMap('autoplay,autostart,controls,ignore,loop,muted'), + // 块级标签,将被转为 div + blockTags: makeMap('address,article,aside,body,caption,center,cite,footer,header,html,nav,section' + (canIUse ? '' : ',pre')), + // 将被移除的标签 + ignoreTags: makeMap('area,base,canvas,frame,iframe,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr' + (canIUse ? ',rp' : '')), + // 只能被 rich-text 显示的标签 + richOnlyTags: makeMap('a,colgroup,fieldset,legend,table' + (canIUse ? ',bdi,bdo,rt,ruby' : '')), + // 自闭合的标签 + selfClosingTags: makeMap('area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr'), + // 信任的标签 + trustTags: makeMap('a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video' + (canIUse ? ',bdi,bdo,caption,pre,rt,ruby' : '')), + // 默认的标签样式 + userAgentStyles: { + address: 'font-style:italic', + big: 'display:inline;font-size:1.2em', + blockquote: 'background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px', + caption: 'display:table-caption;text-align:center', + center: 'text-align:center', + cite: 'font-style:italic', + dd: 'margin-left:40px', + mark: 'background-color:yellow', + pre: 'font-family:monospace;white-space:pre;overflow:scroll', + s: 'text-decoration:line-through', + small: 'display:inline;font-size:0.8em', + u: 'text-decoration:underline' + } +} + +function makeMap(str) { + var map = Object.create(null), + list = str.split(','); + for (var i = list.length; i--;) + map[list[i]] = true; + return map; +} \ No newline at end of file diff --git a/components/parser/parser.js b/components/parser/parser.js new file mode 100644 index 0000000..d4e6e87 --- /dev/null +++ b/components/parser/parser.js @@ -0,0 +1,204 @@ +/** + * Parser 富文本组件 + * @tutorial https://github.com/jin-yufeng/Parser + * @version 20200630 + * @author JinYufeng + * @listens MIT + */ +var cache = {}, + Parser = require('./libs/MpHtmlParser.js'), + fs = wx.getFileSystemManager && wx.getFileSystemManager(); +var dom; +// 计算 cache 的 key +function hash(str) { + for (var i = str.length, val = 5381; i--;) + val += (val << 5) + str.charCodeAt(i); + return val; +} +Component({ + options: { + pureDataPattern: /^[acdgtu]|W/ + }, + data: { + nodes: [] + }, + properties: { + html: { + type: String, + observer(html) { + this.setContent(html); + } + }, + autopause: { + type: Boolean, + value: true + }, + autoscroll: Boolean, + autosetTitle: { + type: Boolean, + value: true + }, + compress: Number, + domain: String, + lazyLoad: Boolean, + loadingImg: String, + selectable: Boolean, + tagStyle: Object, + showWithAnimation: Boolean, + useAnchor: Boolean, + useCache: Boolean + }, + relations: { + '../parser-group/parser-group': { + type: 'ancestor' + } + }, + created() { + // 图片数组 + this.imgList = []; + this.imgList.setItem = function(i, src) { + if (!i || !src) return; + // 去重 + if (src.indexOf('http') == 0 && this.includes(src)) { + var newSrc = ''; + for (var j = 0, c; c = src[j]; j++) { + if (c == '/' && src[j - 1] != '/' && src[j + 1] != '/') break; + newSrc += Math.random() > 0.5 ? c.toUpperCase() : c; + } + newSrc += src.substr(j); + return this[i] = newSrc; + } + this[i] = src; + // 暂存 data src + if (src.includes('data:image')) { + var info = src.match(/data:image\/(\S+?);(\S+?),(.+)/); + if (!info) return; + var filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.${info[1]}`; + fs && fs.writeFile({ + filePath, + data: info[3], + encoding: info[2], + success: () => this[i] = filePath + }) + } + } + this.imgList.each = function(f) { + for (var i = 0, len = this.length; i < len; i++) + this.setItem(i, f(this[i], i, this)); + } + if (dom) this.document = new dom(this); + }, + detached() { + // 删除暂存 + this.imgList.each(src => { + if (src && src.includes(wx.env.USER_DATA_PATH) && fs) + fs.unlink({ + filePath: src + }) + }) + clearInterval(this._timer); + }, + methods: { + // 锚点跳转 + navigateTo(obj) { + if (!this.data.useAnchor) + return obj.fail && obj.fail({ + errMsg: 'Anchor is disabled' + }) + this.createSelectorQuery() + .select('.top' + (obj.id ? '>>>#' + obj.id : '')).boundingClientRect() + .selectViewport().scrollOffset().exec(res => { + if (!res[0]) + return this.group ? this.group.navigateTo(this.i, obj) : + obj.fail && obj.fail({ + errMsg: 'Label not found' + }); + obj.scrollTop = res[1].scrollTop + res[0].top + (obj.offset || 0); + wx.pageScrollTo(obj); + }) + }, + // 获取文本 + getText(ns = this.data.html) { + var txt = ''; + for (var i = 0, n; n = ns[i++];) { + if (n.type == 'text') txt += n.text.replace(/ /g, '\u00A0').replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&'); + else if (n.type == 'br') txt += '\n'; + else { + // 块级标签前后加换行 + var br = n.name == 'p' || n.name == 'div' || n.name == 'tr' || n.name == 'li' || (n.name[0] == 'h' && n.name[1] > '0' && n.name[1] < '7'); + if (br && txt && txt[txt.length - 1] != '\n') txt += '\n'; + if (n.children) txt += this.getText(n.children); + if (br && txt[txt.length - 1] != '\n') txt += '\n'; + else if (n.name == 'td' || n.name == 'th') txt += '\t'; + } + } + return txt; + }, + // 获取视频 context + getVideoContext(id) { + if (!id) return this.videoContexts; + for (var i = this.videoContexts.length; i--;) + if (this.videoContexts[i].id == id) return this.videoContexts[i]; + }, + // 渲染富文本 + setContent(html, append) { + var nodes, parser = new Parser(html, this.data); + // 缓存读取 + if (this.data.useCache) { + var hashVal = hash(html); + if (cache[hashVal]) nodes = cache[hashVal]; + else cache[hashVal] = nodes = parser.parse(); + } else nodes = parser.parse(); + this.triggerEvent('parse', nodes); + var data = {}; + if (append) + for (let i = this.data.nodes.length, j = nodes.length; j--;) + data[`nodes[${i + j}]`] = nodes[j]; + else data.nodes = nodes; + if (this.showWithAnimation) data.showAm = 'animation: show .5s'; + this.setData(data, () => { + this.triggerEvent('load') + }); + // 设置标题 + if (nodes.title && this.data.autosetTitle) + wx.setNavigationBarTitle({ + title: nodes.title + }) + this.imgList.length = 0; + this.videoContexts = []; + var ns = this.selectAllComponents('.top,.top>>>._node'); + for (let i = 0, n; n = ns[i++];) { + n.top = this; + for (let j = 0, item; item = n.data.nodes[j++];) { + if (item.c) continue; + // 获取图片列表 + if (item.name == 'img') + this.imgList.setItem(item.attrs.i, item.attrs.src); + // 音视频控制 + else if (item.name == 'video' || item.name == 'audio') { + var ctx; + if (item.name == 'video') ctx = wx.createVideoContext(item.attrs.id, n); + else ctx = n.selectComponent('#' + item.attrs.id); + if (ctx) { + ctx.id = item.attrs.id; + this.videoContexts.push(ctx); + } + } + } + } + var height; + clearInterval(this._timer); + this._timer = setInterval(() => { + this.createSelectorQuery().select('.top').boundingClientRect(res => { + if (!res) return; + this.rect = res; + if (res.height == height) { + this.triggerEvent('ready', res) + clearInterval(this._timer); + } + height = res.height; + }).exec(); + }, 350) + } + } +}) \ No newline at end of file diff --git a/components/parser/parser.json b/components/parser/parser.json new file mode 100644 index 0000000..85e49c9 --- /dev/null +++ b/components/parser/parser.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "trees": "./trees/trees" + } +} \ No newline at end of file diff --git a/components/parser/parser.wxml b/components/parser/parser.wxml new file mode 100644 index 0000000..aeeca92 --- /dev/null +++ b/components/parser/parser.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/components/parser/parser.wxss b/components/parser/parser.wxss new file mode 100644 index 0000000..b24180f --- /dev/null +++ b/components/parser/parser.wxss @@ -0,0 +1,19 @@ +:host { + display: block; + overflow: scroll; + -webkit-overflow-scrolling: touch; +} + +.top { + display: inherit; +} + +@keyframes show { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} diff --git a/components/parser/trees/handler.wxs b/components/parser/trees/handler.wxs new file mode 100644 index 0000000..be51e18 --- /dev/null +++ b/components/parser/trees/handler.wxs @@ -0,0 +1,42 @@ +var inlineTags = { + abbr: 1, + b: 1, + big: 1, + code: 1, + del: 1, + em: 1, + i: 1, + ins: 1, + label: 1, + q: 1, + small: 1, + span: 1, + strong: 1 +} +module.exports = { + // 从 rich-text 顶层标签的样式中取出一些给 rich-text + getStyle: function(style, display) { + if (style) { + var i, j, res = ""; + if ((i = style.indexOf("display")) != -1) + res = style.substring(i, (j = style.indexOf(';', i)) == -1 ? style.length : j); + else res = "display:" + display; + if (style.indexOf("flex") != -1) res += ';' + style.match(getRegExp("flex[:-][^;]+/g")).join(';'); + return res; + } else return "display:" + display; + }, + // 处理懒加载 + getNode: function(item, imgLoad) { + if (!imgLoad) { + delete item.attrs.src; + item.attrs.style += ";width:20px !important;height:20px !important"; + } + return [item]; + }, + // 是否通过 rich-text 显示 + useRichText: function(item) { + // rich-text 不支持 inline + if (item.c || inlineTags[item.name] || (item.attrs.style && item.attrs.style.indexOf("display:inline") != -1)) return false; + return true; + } +} \ No newline at end of file diff --git a/components/parser/trees/trees.js b/components/parser/trees/trees.js new file mode 100644 index 0000000..1758b5b --- /dev/null +++ b/components/parser/trees/trees.js @@ -0,0 +1,122 @@ +const errorImg = require('../libs/config.js').errorImg; +Component({ + data: { + canIUse: !!wx.chooseMessageFile, + placeholder: "data:image/svg+xml;utf8," + }, + properties: { + nodes: Array, + lazyLoad: Boolean, + loading: String + }, + methods: { + // 视频播放事件 + play(e) { + this.top.group && this.top.group.pause(this.top.i); + if (this.top.videoContexts.length > 1 && this.top.data.autopause) + for (var i = this.top.videoContexts.length; i--;) + if (this.top.videoContexts[i].id != e.currentTarget.id) + this.top.videoContexts[i].pause(); + }, + // 图片事件 + imgtap(e) { + var attrs = e.currentTarget.dataset.attrs; + if (!attrs.ignore) { + var preview = true; + this.top.triggerEvent('imgtap', { + id: e.currentTarget.id, + src: attrs.src, + ignore: () => preview = false + }) + if (preview) { + if (this.top.group) return this.top.group.preview(this.top.i, attrs.i); + var urls = this.top.imgList, + current = urls[attrs.i] ? urls[attrs.i] : (urls = [attrs.src], attrs.src); + wx.previewImage({ + current, + urls + }) + } + } + }, + loadImg(e) { + var i = e.target.dataset.i; + if (this.data.lazyLoad && !this.data.nodes[i].load) + this.setData({ + [`nodes[${i}].load`]: 1 + }) + else if (this.data.loading && this.data.nodes[i].load != 2) + this.setData({ + [`nodes[${i}].load`]: 2 + }) + }, + // 链接点击事件 + linkpress(e) { + var jump = true, + attrs = e.currentTarget.dataset.attrs; + attrs.ignore = () => jump = false; + this.top.triggerEvent('linkpress', attrs); + if (jump) { + if (attrs['app-id']) + wx.navigateToMiniProgram({ + appId: attrs['app-id'], + path: attrs.path + }) + else if (attrs.href) { + if (attrs.href[0] == '#') + this.top.navigateTo({ + id: attrs.href.substring(1) + }) + else if (attrs.href.indexOf('http') == 0 || attrs.href.indexOf('//') == 0) + wx.setClipboardData({ + data: attrs.href, + success: () => + wx.showToast({ + title: '链接已复制' + }) + }) + else + wx.navigateTo({ + url: attrs.href, + fail() { + wx.switchTab({ + url: attrs.href, + }) + } + }) + } + } + }, + // 错误事件 + error(e) { + var source = e.target.dataset.source, + i = e.target.dataset.i, + node = this.data.nodes[i]; + if (source == 'video' || source == 'audio') { + // 加载其他 source + var index = (node.i || 0) + 1; + if (index < node.attrs.source.length) + return this.setData({ + [`nodes[${i}].i`]: index + }) + } else if (source == 'img' && errorImg) { + this.top.imgList.setItem(e.target.dataset.index, errorImg); + this.setData({ + [`nodes[${i}].attrs.src`]: errorImg + }) + } + this.top && this.top.triggerEvent('error', { + source, + target: e.target, + errMsg: e.detail.errMsg + }) + }, + // 加载视频 + loadVideo(e) { + var i = e.target.dataset.i; + this.setData({ + [`nodes[${i}].attrs.autoplay`]: true + }) + } + } +}) \ No newline at end of file diff --git a/components/parser/trees/trees.json b/components/parser/trees/trees.json new file mode 100644 index 0000000..07cb773 --- /dev/null +++ b/components/parser/trees/trees.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "trees": "./trees" + } +} \ No newline at end of file diff --git a/components/parser/trees/trees.wxml b/components/parser/trees/trees.wxml new file mode 100644 index 0000000..d534f7b --- /dev/null +++ b/components/parser/trees/trees.wxml @@ -0,0 +1,65 @@ + + +var inline = { + abbr: 1, + b: 1, + big: 1, + code: 1, + del: 1, + em: 1, + i: 1, + ins: 1, + label: 1, + q: 1, + small: 1, + span: 1, + strong: 1 +} +module.exports = { + visited: function (e, owner) { + if (!e.instance.hasClass('_visited')) + e.instance.addClass('_visited') + owner.callMethod('linkpress', e) + }, + use: function (item) { + return !item.c && !inline[item.name] && (item.attrs.style || '').indexOf('display:inline') == -1 + } +} + + + + + + + + + {{n.text}} + \n + + + + + + + + + + \ No newline at end of file diff --git a/components/parser/trees/trees.wxss b/components/parser/trees/trees.wxss new file mode 100644 index 0000000..043dd46 --- /dev/null +++ b/components/parser/trees/trees.wxss @@ -0,0 +1,184 @@ +/* 在这里引入自定义样式 */ + +/* 链接和图片效果 */ +._a { + display: inline; + padding: 1.5px 0 1.5px 0; + color: #366092; + word-break: break-all; +} + +._hover { + text-decoration: underline; + opacity: 0.7; +} + +._visited { + color: #551a8b; +} + +._img { + position: relative; + display: inline-block; + max-width: 100%; +} + +/* 内部样式 */ +:host { + display: inline; +} + +._blockquote, +._div, +._p, +._ul, +._ol, +._li { + display: block; +} + +._b, +._strong { + font-weight: bold; +} + +._code { + font-family: monospace; +} + +._del { + text-decoration: line-through; +} + +._em, +._i { + font-style: italic; +} + +._h1 { + font-size: 2em; +} + +._h2 { + font-size: 1.5em; +} + +._h3 { + font-size: 1.17em; +} + +._h5 { + font-size: 0.83em; +} + +._h6 { + font-size: 0.67em; +} + +._h1, +._h2, +._h3, +._h4, +._h5, +._h6 { + display: block; + font-weight: bold; +} + +._image { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; +} + +._ins { + text-decoration: underline; +} + +._li { + flex: 1; + width: 0; +} + +._ol-bef { + width: 36px; + margin-right: 5px; + text-align: right; +} + +._ul-bef { + margin: 0 12px 0 23px; + line-height: normal; +} + +._ol-bef, +._ul_bef { + flex: none; + user-select: none; +} + +._ul-p1 { + display: inline-block; + width: 0.3em; + height: 0.3em; + overflow: hidden; + line-height: 0.3em; +} + +._ul-p2 { + display: inline-block; + width: 0.23em; + height: 0.23em; + border: 0.05em solid black; + border-radius: 50%; +} + +._q::before { + content: '"'; +} + +._q::after { + content: '"'; +} + +._sub { + font-size: smaller; + vertical-align: sub; +} + +._sup { + font-size: smaller; + vertical-align: super; +} + +.__bdi, +.__bdo, +.__ruby, +.__rt { + display: inline-block; +} + +._video { + position: relative; + display: inline-block; + width: 300px; + height: 225px; + background-color: black; +} + +._video::after { + position: absolute; + top: 50%; + left: 50%; + margin: -15px 0 0 -15px; + content: ''; + border-color: transparent transparent transparent white; + border-style: solid; + border-width: 15px 0 15px 30px; +} +._img { + vertical-align: top; +} \ No newline at end of file diff --git a/components/shortcut/shortcut.js b/components/shortcut/shortcut.js new file mode 100644 index 0000000..769d3e8 --- /dev/null +++ b/components/shortcut/shortcut.js @@ -0,0 +1,57 @@ +const App = getApp(); + +Component({ + options: { + multipleSlots: true // 在组件定义时的选项中启用多slot支持 + }, + + /** + * 组件的属性列表 + * 用于组件自定义设置 + */ + properties: { + // 弹窗标题 + title: { + type: String, + value: '弹窗标题' + } + }, + + /** + * 私有数据, 组件的初始数据 + * 可用于模版渲染 + */ + data: { + // 弹窗显示控制 + isShow: false, + transparent: true + }, + + /** + * 组件的方法列表 + * 更新属性和数据的方法与更新页面数据的方法类似 + */ + methods: { + + /** + * 导航菜单切换事件 + */ + _onToggleShow(e) { + this.setData({ + isShow: !this.data.isShow, + transparent: false + }) + }, + + /** + * 导航页面跳转 + */ + _onTargetPage(e) { + let urls = App.getTabBarLinks(); + wx.switchTab({ + url: '/' + urls[e.detail.target.dataset.index] + }); + } + + } +}) \ No newline at end of file diff --git a/components/shortcut/shortcut.json b/components/shortcut/shortcut.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/shortcut/shortcut.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/shortcut/shortcut.wxml b/components/shortcut/shortcut.wxml new file mode 100644 index 0000000..775be03 --- /dev/null +++ b/components/shortcut/shortcut.wxml @@ -0,0 +1,32 @@ + + + +
+ +
+ + +
+ +
+ + + +
+ +
+ + +
+ +
+ +
\ No newline at end of file diff --git a/components/shortcut/shortcut.wxss b/components/shortcut/shortcut.wxss new file mode 100644 index 0000000..725d573 --- /dev/null +++ b/components/shortcut/shortcut.wxss @@ -0,0 +1,205 @@ +@import "/utils/common.wxss"; + +/* 快捷导航 */ + +.shortcut { + position: fixed; + right: 12px; + bottom: 250rpx; + width: 76rpx; + line-height: 1; + z-index: 5; + border-radius: 50%; +} + +/* 导航菜单元素 */ + +.nav-item { + position: absolute; + bottom: 0; + padding: 0; + width: 76rpx; + height: 76rpx; + line-height: 76rpx; + color: #fff; + background: rgba(0, 0, 0, 0.4); + border-radius: 50%; + text-align: center; + transform: rotate(0deg); + opacity: 0; +} + +.nav-item text { + font-size: 40rpx; +} + +/* 导航开关 */ + +.nav-item__switch { + opacity: 1; +} + +.shortcut_click_show { + margin-bottom: 0; + background: #ff5454; +} + +/* 显示动画 */ + +.show_80 { + bottom: 384rpx; + animation: show_80 0.3s forwards; +} + +.show_60 { + bottom: 288rpx; + animation: show_60 0.3s forwards; +} + +.show_40 { + bottom: 192rpx; + animation: show_40 0.3s forwards; +} + +.show_20 { + bottom: 96rpx; + animation: show_20 0.3s forwards; +} + +@keyframes show_20 { + from { + bottom: 0; + transform: rotate(0deg); + opacity: 0; + } + + to { + bottom: 96rpx; + transform: rotate(360deg); + opacity: 1; + } +} + +@keyframes show_40 { + from { + bottom: 0; + transform: rotate(0deg); + opacity: 0; + } + + to { + bottom: 192rpx; + transform: rotate(360deg); + opacity: 1; + } +} + +@keyframes show_60 { + from { + bottom: 0; + transform: rotate(0deg); + opacity: 0; + } + + to { + bottom: 288rpx; + transform: rotate(360deg); + opacity: 1; + } +} + +@keyframes show_80 { + from { + bottom: 0; + transform: rotate(0deg); + opacity: 0; + } + + to { + bottom: 384rpx; + transform: rotate(360deg); + opacity: 1; + } +} + +/* 隐藏动画 */ + +.hide_80 { + bottom: 0; + animation: hide_80 0.3s; + opacity: 0; +} + +.hide_60 { + bottom: 0; + animation: hide_60 0.3s; + opacity: 0; +} + +.hide_40 { + bottom: 0; + animation: hide_40 0.3s; + opacity: 0; +} + +.hide_20 { + bottom: 0; + animation: hide_20 0.3s; + opacity: 0; +} + +@keyframes hide_20 { + from { + bottom: 96rpx; + transform: rotate(360deg); + opacity: 1; + } + + to { + bottom: 0; + transform: rotate(0deg); + opacity: 0; + } +} + +@keyframes hide_40 { + from { + bottom: 192rpx; + transform: rotate(360deg); + opacity: 1; + } + + to { + bottom: 0; + transform: rotate(0deg); + opacity: 0; + } +} + +@keyframes hide_60 { + from { + bottom: 288rpx; + transform: rotate(360deg); + opacity: 1; + } + + to { + bottom: 0; + transform: rotate(0deg); + opacity: 0; + } +} + +@keyframes hide_80 { + from { + bottom: 384rpx; + transform: rotate(360deg); + opacity: 1; + } + + to { + bottom: 0; + transform: rotate(0deg); + opacity: 0; + } +} diff --git a/ec-canvas/ec-canvas.js b/ec-canvas/ec-canvas.js new file mode 100644 index 0000000..c3c41c8 --- /dev/null +++ b/ec-canvas/ec-canvas.js @@ -0,0 +1,235 @@ +import WxCanvas from './wx-canvas'; +import * as echarts from './echarts'; + +let ctx; + +function compareVersion(v1, v2) { + v1 = v1.split('.') + v2 = v2.split('.') + const len = Math.max(v1.length, v2.length) + + while (v1.length < len) { + v1.push('0') + } + while (v2.length < len) { + v2.push('0') + } + + for (let i = 0; i < len; i++) { + const num1 = parseInt(v1[i]) + const num2 = parseInt(v2[i]) + + if (num1 > num2) { + return 1 + } else if (num1 < num2) { + return -1 + } + } + return 0 +} + +Component({ + properties: { + canvasId: { + type: String, + value: 'ec-canvas' + }, + + ec: { + type: Object + }, + + forceUseOldCanvas: { + type: Boolean, + value: false + } + }, + + data: { + isUseNewCanvas: false + }, + + ready: function () { + if (!this.data.ec) { + console.warn('组件需绑定 ec 变量,例:'); + return; + } + + if (!this.data.ec.lazyLoad) { + this.init(); + } + }, + + methods: { + init: function (callback) { + const version = wx.getSystemInfoSync().SDKVersion + + const canUseNewCanvas = compareVersion(version, '2.9.0') >= 0; + const forceUseOldCanvas = this.data.forceUseOldCanvas; + const isUseNewCanvas = canUseNewCanvas && !forceUseOldCanvas; + this.setData({ isUseNewCanvas }); + + if (forceUseOldCanvas && canUseNewCanvas) { + console.warn('开发者强制使用旧canvas,建议关闭'); + } + + if (isUseNewCanvas) { + // console.log('微信基础库版本大于2.9.0,开始使用'); + // 2.9.0 可以使用 + this.initByNewWay(callback); + } else { + const isValid = compareVersion(version, '1.9.91') >= 0 + if (!isValid) { + console.error('微信基础库版本过低,需大于等于 1.9.91。' + + '参见:https://github.com/ecomfe/echarts-for-weixin' + + '#%E5%BE%AE%E4%BF%A1%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82'); + return; + } else { + console.warn('建议将微信基础库调整大于等于2.9.0版本。升级后绘图将有更好性能'); + this.initByOldWay(callback); + } + } + }, + + initByOldWay(callback) { + // 1.9.91 <= version < 2.9.0:原来的方式初始化 + ctx = wx.createCanvasContext(this.data.canvasId, this); + const canvas = new WxCanvas(ctx, this.data.canvasId, false); + + echarts.setCanvasCreator(() => { + return canvas; + }); + // const canvasDpr = wx.getSystemInfoSync().pixelRatio // 微信旧的canvas不能传入dpr + const canvasDpr = 1 + var query = wx.createSelectorQuery().in(this); + query.select('.ec-canvas').boundingClientRect(res => { + if (typeof callback === 'function') { + this.chart = callback(canvas, res.width, res.height, canvasDpr); + } + else if (this.data.ec && typeof this.data.ec.onInit === 'function') { + this.chart = this.data.ec.onInit(canvas, res.width, res.height, canvasDpr); + } + else { + this.triggerEvent('init', { + canvas: canvas, + width: res.width, + height: res.height, + canvasDpr: canvasDpr // 增加了dpr,可方便外面echarts.init + }); + } + }).exec(); + }, + + initByNewWay(callback) { + // version >= 2.9.0:使用新的方式初始化 + const query = wx.createSelectorQuery().in(this) + query + .select('.ec-canvas') + .fields({ node: true, size: true }) + .exec(res => { + const canvasNode = res[0].node + this.canvasNode = canvasNode + + const canvasDpr = wx.getSystemInfoSync().pixelRatio + const canvasWidth = res[0].width + const canvasHeight = res[0].height + + const ctx = canvasNode.getContext('2d') + + const canvas = new WxCanvas(ctx, this.data.canvasId, true, canvasNode) + echarts.setCanvasCreator(() => { + return canvas + }) + + if (typeof callback === 'function') { + this.chart = callback(canvas, canvasWidth, canvasHeight, canvasDpr) + } else if (this.data.ec && typeof this.data.ec.onInit === 'function') { + this.chart = this.data.ec.onInit(canvas, canvasWidth, canvasHeight, canvasDpr) + } else { + this.triggerEvent('init', { + canvas: canvas, + width: canvasWidth, + height: canvasHeight, + dpr: canvasDpr + }) + } + }) + }, + canvasToTempFilePath(opt) { + if (this.data.isUseNewCanvas) { + // 新版 + const query = wx.createSelectorQuery().in(this) + query + .select('.ec-canvas') + .fields({ node: true, size: true }) + .exec(res => { + const canvasNode = res[0].node + opt.canvas = canvasNode + wx.canvasToTempFilePath(opt) + }) + } else { + // 旧的 + if (!opt.canvasId) { + opt.canvasId = this.data.canvasId; + } + ctx.draw(true, () => { + wx.canvasToTempFilePath(opt, this); + }); + } + }, + + touchStart(e) { + if (this.chart && e.touches.length > 0) { + var touch = e.touches[0]; + var handler = this.chart.getZr().handler; + handler.dispatch('mousedown', { + zrX: touch.x, + zrY: touch.y + }); + handler.dispatch('mousemove', { + zrX: touch.x, + zrY: touch.y + }); + handler.processGesture(wrapTouch(e), 'start'); + } + }, + + touchMove(e) { + if (this.chart && e.touches.length > 0) { + var touch = e.touches[0]; + var handler = this.chart.getZr().handler; + handler.dispatch('mousemove', { + zrX: touch.x, + zrY: touch.y + }); + handler.processGesture(wrapTouch(e), 'change'); + } + }, + + touchEnd(e) { + if (this.chart) { + const touch = e.changedTouches ? e.changedTouches[0] : {}; + var handler = this.chart.getZr().handler; + handler.dispatch('mouseup', { + zrX: touch.x, + zrY: touch.y + }); + handler.dispatch('click', { + zrX: touch.x, + zrY: touch.y + }); + handler.processGesture(wrapTouch(e), 'end'); + } + } + } +}); + +function wrapTouch(event) { + for (let i = 0; i < event.touches.length; ++i) { + const touch = event.touches[i]; + touch.offsetX = touch.x; + touch.offsetY = touch.y; + } + return event; +} diff --git a/ec-canvas/ec-canvas.json b/ec-canvas/ec-canvas.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/ec-canvas/ec-canvas.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/ec-canvas/ec-canvas.wxml b/ec-canvas/ec-canvas.wxml new file mode 100644 index 0000000..84583a9 --- /dev/null +++ b/ec-canvas/ec-canvas.wxml @@ -0,0 +1,4 @@ + + + + diff --git a/ec-canvas/ec-canvas.wxss b/ec-canvas/ec-canvas.wxss new file mode 100644 index 0000000..70c900b --- /dev/null +++ b/ec-canvas/ec-canvas.wxss @@ -0,0 +1,5 @@ +.ec-canvas { + width: 100%; + height: 100vh; + z-index:1; +} \ No newline at end of file diff --git a/ec-canvas/echarts.js b/ec-canvas/echarts.js new file mode 100644 index 0000000..68264a5 --- /dev/null +++ b/ec-canvas/echarts.js @@ -0,0 +1,22 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you 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 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.echarts={})}(this,function(t){"use strict";var e=2311,n=function(){return e++},v="object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?{browser:{},os:{},node:!1,wxa:!0,canvasSupported:!0,svgSupported:!1,touchEventsSupported:!0,domSupported:!1}:"undefined"==typeof document&&"undefined"!=typeof self?{browser:{},os:{},node:!1,worker:!0,canvasSupported:!0,domSupported:!1}:"undefined"==typeof navigator?{browser:{},os:{},node:!0,worker:!1,canvasSupported:!0,svgSupported:!0,domSupported:!1}:function(t){var e={},i=t.match(/Firefox\/([\d.]+)/),n=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),o=t.match(/Edge\/([\d.]+)/),a=/micromessenger/i.test(t);i&&(e.firefox=!0,e.version=i[1]);n&&(e.ie=!0,e.version=n[1]);o&&(e.edge=!0,e.version=o[1]);a&&(e.weChat=!0);return{browser:e,os:{},node:!1,canvasSupported:!!document.createElement("canvas").getContext,svgSupported:"undefined"!=typeof SVGRect,touchEventsSupported:"ontouchstart"in window&&!e.ie&&!e.edge,pointerEventsSupported:"onpointerdown"in window&&(e.edge||e.ie&&11<=e.version),domSupported:"undefined"!=typeof document}}(navigator.userAgent);var s={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},l={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},u=Object.prototype.toString,i=Array.prototype,r=i.forEach,h=i.filter,o=i.slice,c=i.map,d=i.reduce,a={};function f(t,e){"createCanvas"===t&&(y=null),a[t]=e}function D(t){if(null==t||"object"!=typeof t)return t;var e=t,i=u.call(t);if("[object Array]"===i){if(!$(t)){e=[];for(var n=0,o=t.length;n>1)%2;s.cssText=["position:absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","width:0","height:0",n[l]+":0",o[u]+":0",n[1-l]+":auto",o[1-u]+":auto",""].join("!important;"),t.appendChild(r),i.push(r)}return i}(t,r),r);if(s)return s(zt,n,o),i.zrX=zt[0],void(i.zrY=zt[1])}i.zrX=i.zrY=0}function Vt(t){return t||window.event}function Gt(t,e,i){if(null!=(e=Vt(e)).zrX)return e;var n=e.type;if(n&&0<=n.indexOf("touch")){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&Rt(t,o,e,i)}else Rt(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&Ot.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function Ft(t,e,i,n){Nt?t.addEventListener(e,i,n):t.attachEvent("on"+e,i)}var Wt=Nt?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};function Ht(t){return 2===t.which||3===t.which}function Zt(){this._track=[]}function Ut(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}Zt.prototype={constructor:Zt,recognize:function(t,e,i){return this._doTrack(t,e,i),this._recognize(t)},clear:function(){return this._track.length=0,this},_doTrack:function(t,e,i){var n=t.touches;if(n){for(var o={points:[],touches:[],target:e,event:t},a=0,r=n.length;an.getWidth()||i<0||i>n.getHeight()}Kt.prototype={constructor:Kt,setHandlerProxy:function(e){this.proxy&&this.proxy.dispose(),e&&(E($t,function(t){e.on&&e.on(t,this[t],this)},this),e.handler=this),this.proxy=e},mousemove:function(t){var e=t.zrX,i=t.zrY,n=Qt(this,e,i),o=this._hovered,a=o.target;a&&!a.__zr&&(a=(o=this.findHover(o.x,o.y)).target);var r=this._hovered=n?{x:e,y:i}:this.findHover(e,i),s=r.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),a&&s!==a&&this.dispatchToElement(o,"mouseout",t),this.dispatchToElement(r,"mousemove",t),s&&s!==a&&this.dispatchToElement(r,"mouseover",t)},mouseout:function(t){var e=t.zrEventControl,i=t.zrIsToLocalDOM;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&(i||this.trigger("globalout",{type:"globalout",event:t}))},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var o="on"+e,a=function(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:jt}}(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;0<=a;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=Jt(n[a],t,e))&&(o.topTarget||(o.topTarget=n[a]),r!==Yt)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new Zt);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},E(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(r){Kt.prototype[r]=function(t){var e,i,n=t.zrX,o=t.zrY,a=Qt(this,n,o);if("mouseup"===r&&a||(i=(e=this.findHover(n,o)).target),"mousedown"===r)this._downEl=i,this._downPoint=[t.zrX,t.zrY],this._upEl=i;else if("mouseup"===r)this._upEl=i;else if("click"===r){if(this._downEl!==this._upEl||!this._downPoint||4=this._maxSize&&0>4|(3840&n)>>8,240&n|(240&n)>>4,15&n|(15&n)<<4,1),ze(t,e),e):void Pe(e,0,0,0,1):7===o.length?0<=(n=parseInt(o.substr(1),16))&&n<=16777215?(Pe(e,(16711680&n)>>16,(65280&n)>>8,255&n,1),ze(t,e),e):void Pe(e,0,0,0,1):void 0;var a=o.indexOf("("),r=o.indexOf(")");if(-1!==a&&r+1===o.length){var s=o.substr(0,a),l=o.substr(a+1,r-(a+1)).split(","),u=1;switch(s){case"rgba":if(4!==l.length)return void Pe(e,0,0,0,1);u=Ce(l.pop());case"rgb":return 3!==l.length?void Pe(e,0,0,0,1):(Pe(e,De(l[0]),De(l[1]),De(l[2]),u),ze(t,e),e);case"hsla":return 4!==l.length?void Pe(e,0,0,0,1):(l[3]=Ce(l[3]),Be(l,e),ze(t,e),e);case"hsl":return 3!==l.length?void Pe(e,0,0,0,1):(Be(l,e),ze(t,e),e);default:return}}Pe(e,0,0,0,1)}}function Be(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ce(t[1]),o=Ce(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return Pe(e=e||[],Te(255*Le(r,a,i+1/3)),Te(255*Le(r,a,i)),Te(255*Le(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Ve(t,e){var i=Re(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,255e);i++);i=Math.min(i-1,u-2)}C=e;var n=g[(D=i)+1]-g[i];if(0!=n)if(S=(e-g[i])/n,l)if(I=m[i],M=m[0===i?i:i-1],T=m[u-2=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new Mi(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},Mi.create=function(t){return new Mi(t.x,t.y,t.width,t.height)};var Ii=function(t){for(var e in t=t||{},mi.call(this,t),t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};Ii.prototype={constructor:Ii,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i>>1])<0?l=a:s=1+a;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;0>>1);0>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function Pi(p,g){var r,s,m=Ai,l=0,v=[];function e(t){var e=r[t],i=s[t],n=r[t+1],o=s[t+1];s[t]=i+o,t===l-3&&(r[t+1]=r[t+2],s[t+1]=s[t+2]),l--;var a=ki(p[n],p,e,i,0,g);e+=a,0!==(i-=a)&&0!==(o=Li(p[e+i-1],p,n,o,o-1,g))&&(i<=o?function(t,e,i,n){var o=0;for(o=0;os[t+1])break;e(t)}},this.forceMergeRuns=function(){for(;1>=1;return t+e}(o);do{if((a=Di(t,i,n,e))=e.maxIterations){t+=e.ellipsis;break}var s=0===r?yn(t,o,e.ascCharWidth,e.cnCharWidth):0f)return{lines:[],width:0,height:0};C.textWidth=hn(C.text,w);var S=x.textWidth,M=null==S||"auto"===S;if("string"==typeof S&&"%"===S.charAt(S.length-1))C.percentWidth=S,u.push(C),S=0;else{if(M){S=C.textWidth;var I=x.textBackgroundColor,T=I&&I.image;T&&nn(T=Qi(T))&&(S=Math.max(S,T.width*b/T.height))}var A=_?_[1]+_[3]:0;S+=A;var D=null!=d?d-v:null;null!=D&&Dn[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),!(i[t]=e).virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else fi("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n=a.length&&a.push({option:t})}}),a}function Go(t){var r=Q();ko(t,function(t,e){var i=t.exist;i&&r.set(i.id,t)}),ko(t,function(t,e){var i=t.option;Y(!i||null==i.id||!r.get(i.id)||r.get(i.id)===t,"id duplicates: "+(i&&i.id)),i&&null!=i.id&&r.set(i.id,t),t.keyInfo||(t.keyInfo={})}),ko(t,function(t,e){var i=t.exist,n=t.option,o=t.keyInfo;if(Po(n)){if(o.name=null!=n.name?n.name+"":i?i.name:Oo+e,i)o.id=i.id;else if(null!=n.id)o.id=n.id+"";else for(var a=0;o.id="\0"+o.name+"\0"+a++,r.get(o.id););r.set(o.id,t)}})}function Fo(t){var e=t.name;return!(!e||!e.indexOf(Oo))}function Wo(t){return Po(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ho(e,t){return null!=t.dataIndexInside?t.dataIndexInside:null!=t.dataIndex?k(t.dataIndex)?N(t.dataIndex,function(t){return e.indexOfRawIndex(t)}):e.indexOfRawIndex(t.dataIndex):null!=t.name?k(t.name)?N(t.name,function(t){return e.indexOfName(t)}):e.indexOfName(t.name):void 0}function Zo(){var e="__\0ec_inner_"+Uo+++"_"+Math.random().toFixed(5);return function(t){return t[e]||(t[e]={})}}var Uo=0;function Xo(s,l,u){if(z(l)){var t={};t[l+"Index"]=0,l=t}var e=u&&u.defaultMainType;!e||Yo(l,e+"Index")||Yo(l,e+"Id")||Yo(l,e+"Name")||(l[e+"Index"]=0);var h={};return ko(l,function(t,e){t=l[e];if("dataIndex"!==e&&"dataIndexInside"!==e){var i=e.match(/^(\w+)(Index|Id|Name)$/)||[],n=i[1],o=(i[2]||"").toLowerCase();if(!(!n||!o||null==t||"index"===o&&"none"===t||u&&u.includeMainTypes&&_(u.includeMainTypes,n)<0)){var a={mainType:n};"index"===o&&"all"===t||(a[o]=t);var r=s.queryComponents(a);h[n+"Models"]=r,h[n+"Model"]=r[0]}}else h[e]=t}),h}function Yo(t,e){return t&&t.hasOwnProperty(e)}function jo(t,e,i){t.setAttribute?t.setAttribute(e,i):t[e]=i}function qo(t){return"auto"===t?v.domSupported?"html":"richText":t||"html"}function Ko(t,i){var n=Q(),o=[];return E(t,function(t){var e=i(t);(n.get(e)||(o.push(e),n.set(e,[]))).push(t)}),{keys:o,buckets:n}}var $o=".",Jo="___EC__COMPONENT__CONTAINER___";function Qo(t){var e={main:"",sub:""};return t&&(t=t.split($o),e.main=t[0]||"",e.sub=t[1]||""),e}function ta(t){(t.$constructor=t).extend=function(t){function e(){t.$constructor?t.$constructor.apply(this,arguments):i.apply(this,arguments)}var i=this;return L(e.prototype,t),e.extend=this.extend,e.superCall=na,e.superApply=oa,w(e,this),e.superClass=i,e}}var ea=0;function ia(t){var e=["__\0is_clz",ea++,Math.random().toFixed(3)].join("_");t.prototype[e]=!0,t.isInstance=function(t){return!(!t||!t[e])}}function na(t,e){var i=U(arguments,2);return this.superClass.prototype[e].apply(t,i)}function oa(t,e,i){return this.superClass.prototype[e].apply(t,i)}function aa(i,t){t=t||{};var o={};if(i.registerClass=function(t,e){if(e)if(function(t){Y(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}(e),(e=Qo(e)).sub){if(e.sub!==Jo){(function(t){var e=o[t.main];e&&e[Jo]||((e=o[t.main]={})[Jo]=!0);return e})(e)[e.sub]=t}}else o[e.main]=t;return t},i.getClass=function(t,e,i){var n=o[t];if(n&&n[Jo]&&(n=e?n[e]:null),i&&!n)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return n},i.getClassesByMainType=function(t){t=Qo(t);var i=[],e=o[t.main];return e&&e[Jo]?E(e,function(t,e){e!==Jo&&i.push(t)}):i.push(e),i},i.hasClass=function(t){return t=Qo(t),!!o[t.main]},i.getAllClassMainTypes=function(){var i=[];return E(o,function(t,e){i.push(e)}),i},i.hasSubTypes=function(t){t=Qo(t);var e=o[t.main];return e&&e[Jo]},i.parseClassType=Qo,t.registerWhenExtend){var n=i.extend;n&&(i.extend=function(t){var e=n.call(this,t);return i.registerClass(e,t.type)})}return i}function ra(s){for(var t=0;tthis._ux||tr(e-this._yi)>this._uy||this._len<5;return this.addData(Za.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(Za.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(Za.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(Za.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=$a(o)*i+t,this._yi=Ja(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(Za.R,t,e,i,n),this},closePath:function(){this.addData(Za.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t;for(var e=this._dashIdx=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;il||tr(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case Za.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case Za.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case Za.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=m=pr[n=0]+t&&r<=pr[1]+t?h:0}if(a){l=n;n=sr(o),o=sr(l)}else n=sr(n),o=sr(o);oMath.PI/2&&p<1.5*Math.PI&&(h=-h),c+=h)}}return c}function xr(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;hMath.abs(a[1])?0=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Pl(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?function(t){return t.replace(/^\s+|\s+$/g,"")}(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Nl(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Ol(t){return t.sort(function(t,e){return t-e}),t}function El(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function zl(t){var e=t.toString(),i=e.indexOf("e");if(0h&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}var Vl=9007199254740991;function Gl(t){var e=2*Math.PI;return(t%e+e)%e}function Fl(t){return-Ll"'])/g,tu={"&":"&","<":"<",">":">",'"':""","'":"'"};function eu(t){return null==t?"":(t+"").replace(Ql,function(t,e){return tu[e]})}function iu(t,e){return"{"+t+(null==e?"":e)+"}"}var nu=["a","b","c","d","e","f","g"];function ou(t,e,i){k(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function su(t,e){return"0000".substr(0,e-(t+="").length)+t}function lu(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Hl(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",su(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",su(s,2)).replace("d",s).replace("hh",su(l,2)).replace("h",l).replace("mm",su(u,2)).replace("m",u).replace("ss",su(h,2)).replace("s",h).replace("SSS",su(c,3))}function uu(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}var hu=gn;var cu=(Object.freeze||Object)({addCommas:Kl,toCamelCase:$l,normalizeCssArray:Jl,encodeHTML:eu,formatTpl:ou,formatTplSimple:au,getTooltipMarker:ru,formatTime:lu,capitalFirst:uu,truncateText:hu,getTextBoundingRect:function(t){return cn(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return cn(t,e,i,n,o,s,a,r)}}),du=E,fu=["left","right","top","bottom","width","height"],pu=[["width","left","right"],["height","top","bottom"]];function gu(h,c,d,f,p){var g=0,m=0;null==f&&(f=1/0),null==p&&(p=1/0);var v=0;c.eachChild(function(t,e){var i,n,o=t.position,a=t.getBoundingRect(),r=c.childAt(e+1),s=r&&r.getBoundingRect();if("horizontal"===h){var l=a.width+(s?-s.x+a.x:0);v=f<(i=g+l)||t.newline?(g=0,i=l,m+=v+d,a.height):Math.max(v,a.height)}else{var u=a.height+(s?-s.y+a.y:0);v=p<(n=m+u)||t.newline?(g+=v+d,m=0,n=u,a.width):Math.max(v,a.width)}t.newline||(o[0]=g,o[1]=m,"horizontal"===h?g=i+d:m=n+d)})}var mu=gu;T(gu,"vertical"),T(gu,"horizontal");function vu(t,e,i){i=Jl(i||0);var n=e.width,o=e.height,a=Pl(t.left,n),r=Pl(t.top,o),s=Pl(t.right,n),l=Pl(t.bottom,o),u=Pl(t.width,n),h=Pl(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(n/oe)return t[n];return t[i-1]}(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},Pu="original",Nu="arrayRows",Ou="objectRows",Eu="keyedColumns",zu="unknown",Ru="typedArray",Bu="column",Vu="row";function Gu(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===Eu?{}:[]),this.sourceFormat=t.sourceFormat||zu,this.seriesLayoutBy=t.seriesLayoutBy||Bu,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&Q(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}Gu.seriesDataToSource=function(t){return new Gu({data:t,sourceFormat:V(t)?Ru:Pu,fromDataset:!1})},ia(Gu);var Fu={Must:1,Might:2,Not:3},Wu=Zo();function Hu(t){var e=t.option,i=e.data,n=V(i)?Ru:Pu,o=!1,a=e.seriesLayoutBy,r=e.sourceHeader,s=e.dimensions,l=ju(t);if(l){var u=l.option;i=u.source,n=Wu(l).sourceFormat,o=!0,a=a||u.seriesLayoutBy,null==r&&(r=u.sourceHeader),s=s||u.dimensions}var h=function(t,e,i,n,o){if(!t)return{dimensionsDefine:Zu(o)};var a,r;if(e===Nu)"auto"===n||null==n?Uu(function(t){null!=t&&"-"!==t&&(z(t)?null==r&&(r=1):r=0)},i,t,10):r=n?1:0,o||1!==r||(o=[],Uu(function(t,e){o[e]=null!=t?t:""},i,t)),a=o?o.length:i===Vu?t.length:t[0]?t[0].length:null;else if(e===Ou)o=o||function(t){var e,i=0;for(;i":"\n",f="richText"===c,p={},g=0;function i(t){return{renderMode:c,content:eu(Kl(t)),style:p}}var m=this.getData(),a=m.mapDimension("defaultedTooltip",!0),n=a.length,r=this.getRawValue(o),s=k(r),v=m.getItemVisual(o,"color");R(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var l=(1":"",n=i+u.join(i||", ");return{renderMode:c,content:n,style:p}}(r):i(n?Bh(m,o,a[0]):s?r[0]:r)).content,u=d.seriesIndex+"at"+g,y=ru({color:v,type:"item",renderMode:c,markerId:u});p[u]=v,++g;var x=m.getName(o),_=this.name;Fo(this)||(_=""),_=_?eu(_)+(h?": ":e):"";var w="string"==typeof y?y:y.content;return{html:h?w+_+l:_+w+(x?eu(x)+": "+l:l),markers:p}},isAnimationEnabled:function(){if(v.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=ku.getColorFromPalette.call(this,t,e,i);return o=o||n.getColorFromPalette(t,e,i)},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});function nc(t){var e=t.name;Fo(t)||(t.name=function(t){var i=t.getRawData(),e=i.mapDimension("seriesName",!0),n=[];return E(e,function(t){var e=i.getDimensionInfo(t);e.displayName&&n.push(e.displayName)}),n.join(" ")}(t)||e)}function oc(t){return t.model.getRawData().count()}function ac(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),rc}function rc(t,e){t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function sc(e,i){E(e.CHANGABLE_METHODS,function(t){e.wrapMethod(t,T(lc,i))})}function lc(t){var e=uc(t);e&&e.setOutputEnd(this.count())}function uc(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}b(ic,Fh),b(ic,ku);var hc=function(){this.group=new Ii,this.uid=Cl("viewComponent")};hc.prototype={constructor:hc,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var cc=hc.prototype;cc.updateView=cc.updateLayout=cc.updateVisual=function(t,e,i,n){},ta(hc),aa(hc,{registerWhenExtend:!0});function dc(){var s=Zo();return function(t){var e=s(t),i=t.pipelineContext,n=e.large,o=e.progressiveRender,a=e.large=i.large,r=e.progressiveRender=i.progressiveRender;return!!(n^a||o^r)&&"reset"}}var fc=Zo(),pc=dc();function gc(){this.group=new Ii,this.uid=Cl("viewChart"),this.renderTask=Wh({plan:xc,reset:_c}),this.renderTask.context={view:this}}var mc=gc.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){yc(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){yc(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};function vc(t,e,i){if(t&&(t.trigger(e,i),t.isGroup&&!qs(t)))for(var n=0,o=t.childCount();nc?i+=p(g("data.partialData"),{displayCnt:c}):i+=g("data.allData");for(var r=[],s=0;si.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},Nc.getPipeline=function(t){return this._pipelineMap.get(t)},Nc.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},Nc.restorePipelines=function(t){var n=this,o=n._pipelineMap=Q();t.eachSeries(function(t){var e=t.getProgressive(),i=t.uid;o.set(i,{id:i,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:e&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(e||700),count:0}),Uc(n,t,t.dataTask)})},Nc.prepareStageTasks=function(){var i=this._stageTaskMap,n=this.ecInstance.getModel(),o=this.api;E(this._allHandlers,function(t){var e=i.get(t.uid)||i.set(t.uid,[]);t.reset&&function(n,o,t,a,r){var s=t.seriesTaskMap||(t.seriesTaskMap=Q()),e=o.seriesType,i=o.getTargetSeries;o.createOnAllSeries?a.eachRawSeries(l):e?a.eachRawSeriesByType(e,l):i&&i(a,r).each(l);function l(t){var e=t.uid,i=s.get(e)||s.set(e,Wh({plan:Gc,reset:Fc,count:Zc}));i.context={model:t,ecModel:a,api:r,useClearVisual:o.isVisual&&!o.isLayout,plan:o.plan,reset:o.reset,scheduler:n},Uc(n,t,i)}var u=n._pipelineMap;s.each(function(t,e){u.get(e)||(t.dispose(),s.removeKey(e))})}(this,t,e,n,o),t.overallReset&&function(n,t,e,i,o){var a=e.overallTask=e.overallTask||Wh({reset:zc});a.context={ecModel:i,api:o,overallReset:t.overallReset,scheduler:n};var r=a.agentStubMap=a.agentStubMap||Q(),s=t.seriesType,l=t.getTargetSeries,u=!0,h=t.modifyOutputEnd;s?i.eachRawSeriesByType(s,c):l?l(i,o).each(c):(u=!1,E(i.getSeries(),c));function c(t){var e=t.uid,i=r.get(e);i||(i=r.set(e,Wh({reset:Rc,onDirty:Vc})),a.dirty()),i.context={model:t,overallProgress:u,modifyOutputEnd:h},i.agent=a,i.__block=u,Uc(n,t,i)}var d=n._pipelineMap;r.each(function(t,e){d.get(e)||(t.dispose(),a.dirty(),r.removeKey(e))})}(this,t,e,n,o)},this)},Nc.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,Uc(this,e,o)},Nc.performDataProcessorTasks=function(t,e){Oc(this,this._dataProcessorHandlers,t,e,{block:!0})},Nc.performVisualTasks=function(t,e,i){Oc(this,this._visualHandlers,t,e,i)},Nc.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},Nc.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var Ec=Nc.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)};function zc(t){t.overallReset(t.ecModel,t.api,t.payload)}function Rc(t,e){return t.overallProgress&&Bc}function Bc(){this.agent.dirty(),this.getDownstream().dirty()}function Vc(){this.agent&&this.agent.dirty()}function Gc(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Fc(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Eo(t.reset(t.model,t.ecModel,t.api,t.payload));return 1t.get("hoverLayerThreshold")&&!v.node&&t.eachSeries(function(t){if(!t.preventUsingHoverLayer){var e=i._chartsMap[t.__viewId];e.__alive&&e.group.traverse(function(t){t.useHoverLayer=!0})}})}(n,t),Lc(n._zr.dom,t)}function Ud(e,i){wd(Qd,function(t){t(e,i)})}Pd.resize=function(t){if(!this._disposed){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[Td]=!0,i&&Ed(this),Od.update.call(this),this[Td]=!1,Vd.call(this,n),Gd.call(this,n)}}},Pd.showLoading=function(t,e){if(!this._disposed&&(Sd(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),nf[t])){var i=nf[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},Pd.hideLoading=function(){this._disposed||(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},Pd.makeActionFromEvent=function(t){var e=L({},t);return e.type=Kd[t.type],e},Pd.dispatchAction=function(t,e){this._disposed||(Sd(e)||(e={silent:!!e}),qd[t.type]&&this._model&&(this[Td]?this._pendingActions.push(t):(Bd.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&v.browser.weChat&&this._throttledZrFlush(),Vd.call(this,e.silent),Gd.call(this,e.silent))))},Pd.appendData=function(t){if(!this._disposed){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0}},Pd.on=Cd("on",!1),Pd.off=Cd("off",!1),Pd.one=Cd("one",!1);var Xd=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];function Yd(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function jd(){this.eventInfo}Pd._initEvents=function(){wd(Xd,function(u){function t(t){var e,i=this.getModel(),n=t.target;if("globalout"===u)e={};else if(n&&null!=n.dataIndex){var o=n.dataModel||i.getSeriesByIndex(n.seriesIndex);e=o&&o.getDataParams(n.dataIndex,n.dataType,n)||{}}else n&&n.eventData&&(e=L({},n.eventData));if(e){var a=e.componentType,r=e.componentIndex;"markLine"!==a&&"markPoint"!==a&&"markArea"!==a||(a="series",r=e.seriesIndex);var s=a&&null!=r&&i.getComponent(a,r),l=s&&this["series"===s.mainType?"_chartsMap":"_componentsMap"][s.__viewId];e.event=t,e.type=u,this._ecEventProcessor.eventInfo={targetEl:n,packedEvent:e,model:s,view:l},this.trigger(u,e)}}t.zrEventfulCallAtLast=!0,this._zr.on(u,t,this)},this),wd(Kd,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},Pd.isDisposed=function(){return this._disposed},Pd.clear=function(){this._disposed||this.setOption({series:[]},!0)},Pd.dispose=function(){if(!this._disposed){this._disposed=!0,jo(this.getDom(),lf,"");var e=this._api,i=this._model;wd(this._componentsViews,function(t){t.dispose(i,e)}),wd(this._chartsViews,function(t){t.dispose(i,e)}),this._zr.dispose(),delete of[this.id]}},b(kd,Ct),jd.prototype={constructor:jd,normalizeQuery:function(t){var s={},l={},u={};if(z(t)){var e=Md(t);s.mainType=e.main||null,s.subType=e.sub||null}else{var h=["Index","Name","Id"],c={name:1,dataIndex:1,dataType:1};E(t,function(t,e){for(var i=!1,n=0;nx[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},Uf(this)},Hf._initDataFromProvider=function(t,e){if(!(e<=t)){for(var i,n=this._chunkSize,o=this._rawData,a=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,0=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},Hf.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=1/0,a=-1,r=0,s=0,l=this.count();st[I][1])&&(M=!1)}M&&(a[r++]=this.getRawIndex(m))}return rw[1]&&(w[1]=_)}}}return o},Hf.downSample=function(t,e,i,n){for(var o=$f(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new(Bf(this))(u),f=0,p=0;pc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=jf,o},Hf.getItemModel=function(t){var e=this.hostModel;return new Il(this.getRawDataItem(t),e,e&&e.ecModel)},Hf.diff=function(e){var i=this;return new Tf(e?e.getIndices():[],this.getIndices(),function(t){return qf(e,t)},function(t){return qf(i,t)})},Hf.getVisual=function(t){var e=this._visual;return e&&e[t]},Hf.setVisual=function(t,e){if(Pf(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},Hf.setLayout=function(t,e){if(Pf(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},Hf.getLayout=function(t){return this._layout[t]},Hf.getItemLayout=function(t){return this._itemLayouts[t]},Hf.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?L(this._itemLayouts[t]||{},e):e},Hf.clearItemLayouts=function(){this._itemLayouts.length=0},Hf.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},Hf.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,Pf(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},Hf.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};function tp(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType}function ep(t,e,i){Gu.isInstance(e)||(e=Gu.seriesDataToSource(e)),i=i||{},t=(t||[]).slice();for(var n=(i.dimsDef||[]).slice(),o=Q(),a=Q(),l=[],r=function(t,e,i,n){var o=Math.max(t.dimensionsDetectCount||1,e.length,i.length,n||0);return E(e,function(t){var e=t.dimsDef;e&&(o=Math.max(o,e.length))}),o}(e,t,n,i.dimCount),s=0;s=e[0]&&t<=e[1]},cp.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},cp.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},cp.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},cp.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},cp.prototype.getExtent=function(){return this._extent.slice()},cp.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},cp.prototype.isBlank=function(){return this._isBlank},cp.prototype.setBlank=function(t){this._isBlank=t},cp.prototype.getLabel=null,ta(cp),aa(cp,{registerWhenExtend:!0}),dp.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&N(i,gp);return new dp({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var fp=dp.prototype;function pp(t){return t._map||(t._map=Q(t.categories))}function gp(t){return R(t)&&null!=t.value?t.value:t+""}fp.getOrdinal=function(t){return pp(this).get(t)},fp.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=pp(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var mp=cp.prototype,vp=cp.extend({type:"ordinal",init:function(t,e){t&&!k(t)||(t=new dp({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),mp.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return mp.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(mp.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:et,niceExtent:et});vp.create=function(){return new vp};var yp=Nl;function xp(t){return zl(t)+2}function _p(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function wp(t,e){isFinite(t[0])||(t[0]=e[0]),isFinite(t[1])||(t[1]=e[1]),_p(t,0,e),_p(t,1,e),t[0]>t[1]&&(t[0]=t[1])}var bp=Nl,Sp=cp.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),Sp.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=xp(t)},getTicks:function(t){var e=this._interval,i=this._extent,n=this._niceExtent,o=this._intervalPrecision,a=[];if(!e)return a;i[0]s&&(t?a.push(s+e):a.push(i[1])),a},getMinorTicks:function(t){for(var e=this.getTicks(!0),i=[],n=this.getExtent(),o=1;on[0]&&h>>1;t[o][1]>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}bg.prototype={constructor:bg,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;ss[1];d(e[0].coord,s[0])&&(n?e[0].coord=s[0]:e.shift());n&&d(s[0],e[0].coord)&&e.unshift({coord:s[0]});d(s[1],a.coord)&&(n?a.coord=s[1]:e.pop());n&&d(a.coord,s[1])&&e.push({coord:s[1]});function d(t,e){return t=Nl(t),e=Nl(e),c?en[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}var pm=Sr.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},brush:Wr(Sr.prototype.brush),buildPath:function(t,e){var i=e.points,n=0,o=i.length,a=fm(i,e.smoothConstraint);if(e.connectNulls){for(;0n)return!1;return!0}(a,e))){var r=e.mapDimension(a.dim),s={};return E(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function Sm(t,e,i){if("cartesian2d"!==t.type)return vm(t,e,i);var n=t.getBaseAxis().isHorizontal(),o=mm(t,e,i);if(!i.get("clip",!0)){var a=o.shape,r=Math.max(a.width,a.height);n?(a.y-=r,a.height+=2*r):(a.x-=r,a.width+=2*r)}return o}gc.extend({type:"line",init:function(){var t=new Ii,e=new $g;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var n=t.coordinateSystem,o=this.group,a=t.getData(),r=t.getModel("lineStyle"),s=t.getModel("areaStyle"),l=a.mapArray(a.getItemLayout),u="polar"===n.type,h=this._coordSys,c=this._symbolDraw,d=this._polyline,f=this._polygon,p=this._lineGroup,g=t.get("animation"),m=!s.isEmpty(),v=s.get("origin"),y=function(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oh[c-1].coord&&(h.reverse(),d.reverse());var f=h[0].coord-10,p=h[c-1].coord+10,g=p-f;if(g<.001)return"transparent";E(h,function(t){t.offset=(t.coord-f)/g}),h.push({offset:c?h[c-1].offset:.5,color:d[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:d[0]||"transparent"});var m=new cs(0,0,0,0,h,!0);return m[n]=f,m[n+"2"]=p,m}}}(a,n)||a.getVisual("color");d.useStyle(C(r.getLineStyle(),{fill:"none",stroke:M,lineJoin:"bevel"}));var I=t.get("smooth");if(I=_m(t.get("smooth")),d.setShape({smooth:I,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),f){var T=a.getCalculationInfo("stackedOnSeries"),A=0;f.useStyle(C(s.getAreaStyle(),{fill:M,opacity:.7,lineJoin:"bevel"})),T&&(A=_m(T.get("smooth"))),f.setShape({smooth:I,stackedOnSmooth:A,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=a,this._coordSys=n,this._stackedOnPoints=y,this._points=l,this._step=S,this._valueOrigin=v},dispose:function(){},highlight:function(t,e,i,n){var o=t.getData(),a=Ho(o,n);if(!(a instanceof Array)&&null!=a&&0<=a){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(s[0],s[1]))return;(r=new Fg(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else gc.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=Ho(o,n);if(null!=a&&0<=a){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else gc.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new pm({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new gm({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=function(t,e,i,n,o,a,r,s){for(var l=function(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}(t,e),u=[],h=[],c=[],d=[],f=[],p=[],g=[],m=im(o,e,r),v=im(a,t,s),y=0;ye&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},w(km,Eg);var Pm={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},Nm={};Nm.categoryAxis=m({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},Pm),Nm.valueAxis=m({boundaryGap:[0,0],splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#eee",width:1}}},Pm),Nm.timeAxis=C({scale:!0,min:"dataMin",max:"dataMax"},Nm.valueAxis),Nm.logAxis=C({scale:!0,logBase:10},Nm.valueAxis);function Om(a,t,r,e){E(Em,function(o){t.extend({type:a+"Axis."+o,mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,n=i?_u(t):{};m(t,e.getTheme().get(o+"Axis")),m(t,this.getDefaultOption()),t.type=r(a,t),i&&xu(t,n,i)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=dp.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:p([{},Nm[o+"Axis"],e],!0)})}),Tu.registerSubTypeDefaulter(a+"Axis",T(r,a))}var Em=["value","category","time","log"],zm=Tu.extend({type:"cartesian2dAxis",axis:null,init:function(){zm.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){zm.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){zm.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});function Rm(t,e){return e.type||(e.data?"category":"value")}m(zm.prototype,sg);var Bm={offset:0};function Vm(t,e){return t.getCoordSysModel()===e}function Gm(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}Om("x",zm,Rm,Bm),Om("y",zm,Rm,Bm),Tu.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var Fm=Gm.prototype;function Wm(t,e,i,n){i.getAxesOnZeroOf=function(){return o?[o]:[]};var o,a=t[e],r=i.model,s=r.get("axisLine.onZero"),l=r.get("axisLine.onZeroAxisIndex");if(s){if(null!=l)Hm(a[l])&&(o=a[l]);else for(var u in a)if(a.hasOwnProperty(u)&&Hm(a[u])&&!n[h(a[u])]){o=a[u];break}o&&(n[h(o)]=!0)}function h(t){return t.dim+"_"+t.index}}function Hm(t){return t&&"category"!==t.type&&"time"!==t.type&&function(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(0u[1]?-1:1,c=["start"===a?u[0]-h*l:"end"===a?u[1]+h*l:(u[0]+u[1])/2,ev(a)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*jm/180),ev(a)?n=$m(t.rotation,null!=d?d:t.rotation,r):(n=function(t,e,i,n){var o,a,r=Gl(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;o=Fl(r-jm/2)?(a=l?"bottom":"top","center"):Fl(r-1.5*jm)?(a=l?"top":"bottom","center"):(a="middle",r<1.5*jm&&jm/2l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r=i.r0}}});var jv=Math.PI/180;function qv(o,t,e,i,n,a,r,s,l,u){function h(t,e,i){for(var n=t;nl+r);n++)if(o[n].y+=i,to[n].y+o[n].height)return void c(n,i/2);c(e-1,i/2)}function c(t,e){for(var i=t;0<=i&&!(o[i].y-eo[i-1].y+o[i-1].height));i--);}function d(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=e?v.push(o[y]):m.push(o[y]);d(m,!1,t,e,i,n),d(v,!0,t,e,i,n)}function Kv(t){return"center"===t.position}function $v(L,k,P,t,N,e){var O,E,z=L.getData(),R=[],B=!1,V=(L.get("minShowLabelAngle")||0)*jv;z.each(function(t){var e=z.getItemLayout(t),i=z.getItemModel(t),n=i.getModel("label"),o=n.get("position")||i.get("emphasis.label.position"),a=n.get("distanceToLabelLine"),r=n.get("alignTo"),s=Pl(n.get("margin"),P),l=n.get("bleedMargin"),u=n.getFont(),h=i.getModel("labelLine"),c=h.get("length");c=Pl(c,P);var d=h.get("length2");if(d=Pl(d,P),!(e.anglei[0]&&isFinite(u)&&isFinite(i[0]););else{var h=o.getTicks().length-1;f"+N(t,function(t,e){var i=o.get(o.mapDimension(t.dim),n);return eu(t.name+" : "+i)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Mf({type:"radar",render:function(l,t,e){var i=l.coordinateSystem,g=this.group,m=l.getData(),s=this._data;function u(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=function(t){return k(t)||(t=[+t,+t]),t}(t.getItemVisual(e,"symbolSize")),a=mg(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function h(t,e,i,n,o,a){i.removeAll();for(var r=0;r"+eu(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}}}}),Vv);var Ay="\0_ec_interaction_mutex";function Dy(t,e){return!!Cy(t)[e]}function Cy(t){return t[Ay]||(t[Ay]={})}function Ly(i){this.pointerChecker,this._zr=i,this._opt={};var t=A,n=t(ky,this),o=t(Py,this),a=t(Ny,this),r=t(Oy,this),s=t(Ey,this);Ct.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(t,e){this.disable(),this._opt=C(D(e)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==t&&(t=!0),!0!==t&&"move"!==t&&"pan"!==t||(i.on("mousedown",n),i.on("mousemove",o),i.on("mouseup",a)),!0!==t&&"scale"!==t&&"zoom"!==t||(i.on("mousewheel",r),i.on("pinch",s))},this.disable=function(){i.off("mousedown",n),i.off("mousemove",o),i.off("mouseup",a),i.off("mousewheel",r),i.off("pinch",s)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function ky(t){if(!(Ht(t)||t.target&&t.target.draggable)){var e=t.offsetX,i=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function Py(t){if(this._dragging&&By("moveOnMouseMove",t,this._opt)&&"pinch"!==t.gestureEvent&&!Dy(this._zr,"globalPan")){var e=t.offsetX,i=t.offsetY,n=this._x,o=this._y,a=e-n,r=i-o;this._x=e,this._y=i,this._opt.preventDefaultMouseMove&&Wt(t.event),Ry(this,"pan","moveOnMouseMove",t,{dx:a,dy:r,oldX:n,oldY:o,newX:e,newY:i})}}function Ny(t){Ht(t)||(this._dragging=!1)}function Oy(t){var e=By("zoomOnMouseWheel",t,this._opt),i=By("moveOnMouseWheel",t,this._opt),n=t.wheelDelta,o=Math.abs(n),a=t.offsetX,r=t.offsetY;if(0!==n&&(e||i)){if(e){var s=3x.x)||(m-=Math.PI);var b=v?"left":"right",S=a.labelModel.get("rotate"),M=S*(Math.PI/180);g.setStyle({textPosition:a.labelModel.get("position")||b,textRotation:null==S?-m:M,textOrigin:"center",verticalAlign:"middle"})}if(s.parentNode&&s.parentNode!==u){var I=i.__edge;sl(I=I||(i.__edge=new ls({shape:Px(a,f,f),style:C({opacity:0,strokeNoScale:!0},a.lineStyle)})),{shape:Px(a,d,p),style:{opacity:1}},o),n.add(I)}}function kx(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,u=s.getModel(),h=(a=Cx(s,u,a),s.parentNode===l?s:s.parentNode||s);null==(r=h.getLayout());)h=h.parentNode===l?h:h.parentNode||h;sl(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var c=i.__edge;c&&sl(c,{shape:Px(a,r,r),style:{opacity:0}},o,function(){n.remove(c)})}function Px(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"!==t.layout)return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r};s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Sx(s,u),f=Sx(s,u+(h-u)*t.curvature),p=Sx(l,h+(u-h)*t.curvature),g=Sx(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}function Nx(t,e){for(var i,n=[t];i=n.pop();)if(e(i),i.isExpand){var o=i.children;if(o.length)for(var a=o.length-1;0<=a;a--)n.push(o[a])}}mx.prototype={constructor:mx,isRemoved:function(){return this.dataIndex<0},eachNode:function(t,e,i){"function"==typeof t&&(i=e,e=t,t=null),z(t=t||{})&&(t={order:t});var n,o=t.order||"preorder",a=this[t.attr||"children"];"preorder"===o&&(n=e.call(i,this));for(var r=0;!n&&re&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;ea&&(a=t.depth)});var r=t.expandAndCollapse&&0<=t.initialTreeDepth?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return eu(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}}),Mf({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new Ii,this._controller=new Ly(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(n,t,i,e){var o=n.getData(),a=n.layoutInfo,r=this._mainGroup,s=n.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(n,a,s),this._updateController(n,t,i);var l=this._data,u={expandAndCollapse:n.get("expandAndCollapse"),layout:s,orient:n.getOrient(),curvature:n.get("lineStyle.curveness"),symbolRotate:n.get("symbolRotate"),symbolOffset:n.get("symbolOffset"),hoverAnimation:n.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(t){Dx(o,t)&&Lx(o,t,null,r,n,u)}).update(function(t,e){var i=l.getItemGraphicEl(e);Dx(o,t)?Lx(o,t,i,r,n,u):i&&kx(l,e,i,r,n,u)}).remove(function(t){var e=l.getItemGraphicEl(t);e&&kx(l,t,e,r,n,u)}).execute(),this._nodeScaleRatio=n.get("nodeScaleRatio"),this._updateNodeAndLinkScale(n),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(t,e){t.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:n.id,dataIndex:e})})}),this._data=o},_updateViewCoordSys:function(t){var i=t.getData(),n=[];i.each(function(t){var e=i.getItemLayout(t);!e||isNaN(e.x)||isNaN(e.y)||n.push([+e.x,+e.y])});var e=[],o=[];Ba(n,e,o);var a=this._min,r=this._max;o[0]-e[0]==0&&(e[0]=a?a[0]:e[0]-1,o[0]=r?r[0]:o[0]+1),o[1]-e[1]==0&&(e[1]=a?a[1]:e[1]-1,o[1]=r?r[1]:o[1]+1);var s=t.coordinateSystem=new Qy;s.zoomLimit=t.get("scaleLimit"),s.setBoundingRect(e[0],e[1],o[0]-e[0],o[1]-e[1]),s.setCenter(t.get("center")),s.setZoom(t.get("zoom")),this.group.attr({position:s.position,scale:s.scale}),this._viewCoordSys=s,this._min=e,this._max=o},_updateController:function(o,t,a){var e=this._controller,i=this._controllerHost,r=this.group;e.setPointerChecker(function(t,e,i){var n=r.getBoundingRect();return n.applyTransform(r.transform),n.contain(e,i)&&!Wy(t,a,o)}),e.enable(o.get("roam")),i.zoomLimit=o.get("scaleLimit"),i.zoom=o.coordinateSystem.getZoom(),e.off("pan").off("zoom").on("pan",function(t){Vy(i,t.dx,t.dy),a.dispatchAction({seriesId:o.id,type:"treeRoam",dx:t.dx,dy:t.dy})},this).on("zoom",function(t){Gy(i,t.scale,t.originX,t.originY),a.dispatchAction({seriesId:o.id,type:"treeRoam",zoom:t.scale,originX:t.originX,originY:t.originY}),this._updateNodeAndLinkScale(o)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),gf({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(n,t){t.eachComponent({mainType:"series",subType:"tree",query:n},function(t){var e=n.dataIndex,i=t.getData().tree.getNodeByDataIndex(e);i.isExpand=!i.isExpand})}),gf({type:"treeRoam",event:"treeRoam",update:"none"},function(i,t){t.eachComponent({mainType:"series",subType:"tree",query:i},function(t){var e=Ky(t.coordinateSystem,i);t.setCenter&&t.setCenter(e.center),t.setZoom&&t.setZoom(e.zoom)})});function Ox(t,e,i){if(t&&0<=_(e,t.type)){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function Ex(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function zx(t,e){return 0<=_(Ex(t),e)}function Rx(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}yf(Mm("tree","circle")),vf(function(t,e){t.eachSeriesByType("tree",function(t){!function(t,e){var i=function(t,e){return vu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;r="radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,bx(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,bx());var s=t.getData().tree.root,l=s.children[0];if(l){!function(t){t.hierNode={defaultAncestor:null,ancestor:t,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var e,i,n=[t];e=n.pop();)if(i=e.children,e.isExpand&&i.length)for(var o=i.length-1;0<=o;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}(s),function(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;sh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),Nx(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Sx(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),Nx(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),Nx(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}(t,e)})}),ic.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],preventUsingHoverLayer:!0,_viewRoot:null,defaultOption:{progressive:0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};!function i(t){var n=0;E(t.children,function(t){i(t);var e=t.value;k(e)&&(e=e[0]),n+=e});var e=t.value;k(e)&&(e=e[0]);null!=e&&!isNaN(e)||(e=n);e<0&&(e=0);k(t.value)?t.value[0]=e:t.value=e}(i);var n=t.levels||[];n=t.levels=function(t,e){var n,i=e.get("color");if(!i)return;if(E(t=t||[],function(t){var e=new Il(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),!n){(t[0]||(t[0]={})).color=i.slice()}return t}(n,e);var o={};return o.levels=n,vx.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=k(i)?Kl(i[0]):Kl(i);return eu(e.getName(t)+": "+n)},getDataParams:function(t){var e=ic.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=Rx(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},L(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=Q(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var Bx=5;function Vx(t){this.group=new Ii,t.add(this.group)}function Gx(t,e,i,n,o,a){var r=[[o?t:t-Bx,e],[t+i,e],[t+i,e+n],[o?t:t-Bx,e+n]];return a||r.splice(2,0,[t+i+Bx,e+n/2]),o||r.push([t,e+n/2]),r}Vx.prototype={constructor:Vx,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),yu(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a,r,s=0,l=e.emptyItemWidth,u=t.get("breadcrumb.height"),h=function(t,e,i){var n=e.width,o=e.height,a=Pl(t.x,n),r=Pl(t.y,o),s=Pl(t.x2,n),l=Pl(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=Jl(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}(e.pos,e.box),c=e.totalWidth,d=e.renderList,f=d.length-1;0<=f;f--){var p=d[f],g=p.node,m=p.width,v=p.text;c>h.width&&(c-=m-l,m=l,v=null);var y=new qr({shape:{points:Gx(s,0,m,u,f===d.length-1,0===f)},style:C(i.getItemStyle(),{lineJoin:"bevel",text:v,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:T(o,g)});this.group.add(y),a=t,r=g,y.eventData={componentType:"series",componentSubType:"treemap",componentIndex:a.componentIndex,seriesIndex:a.componentIndex,seriesName:a.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:r&&r.dataIndex,name:r&&r.name},treePathInfo:r&&Rx(r,a)},s+=m+8}},remove:function(){this.group.removeAll()}};function Fx(t){var e=$x(t);return e.stroke=e.fill=e.lineWidth=null,e}var Wx=A,Hx=Ii,Zx=is,Ux=E,Xx=["label"],Yx=["emphasis","label"],jx=["upperLabel"],qx=["emphasis","upperLabel"],Kx=10,$x=ra([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);function Jx(d,r,s,l,u,i,f,t,e,n){if(f){var p=f.getLayout();if(p&&p.isInView){var h=p.width,c=p.height,g=p.borderWidth,m=p.invisible,v=f.getRawIndex(),y=t&&t.getRawIndex(),o=f.viewChildren,x=p.upperHeight,a=o&&o.length,_=f.getModel("itemStyle"),w=f.getModel("emphasis.itemStyle"),b=A("nodeGroup",Hx);if(b){if(e.add(b),b.attr("position",[p.x||0,p.y||0]),b.__tmNodeWidth=h,b.__tmNodeHeight=c,p.isAboveViewRoot)return b;var S=A("background",Zx,n,1);if(S&&function(t,n,o){n.dataIndex=f.dataIndex,n.seriesIndex=d.seriesIndex,n.setShape({x:0,y:0,width:h,height:c});var a=f.getVisual("borderColor",!0),r=w.get("borderColor");I(n,function(){var t=Fx(_);t.fill=a;var e=$x(w);if(e.fill=r,o){var i=h-2*g;T(t,e,a,i,x,{x:g,y:0,width:i,height:x})}else t.text=e.text=null;n.setStyle(t),Ys(n,e)}),t.add(n)}(b,S,a&&p.upperHeight),!a){var M=A("content",Zx,n,2);M&&function(t,i){i.dataIndex=f.dataIndex,i.seriesIndex=d.seriesIndex;var n=Math.max(h-2*g,0),o=Math.max(c-2*g,0);i.culling=!0,i.setShape({x:g,y:g,width:n,height:o});var a=f.getVisual("color",!0);I(i,function(){var t=Fx(_);t.fill=a;var e=$x(w);T(t,e,a,n,o),i.setStyle(t),Ys(i,e)}),t.add(i)}(b,M)}return b}}}function I(t,e){m?t.invisible||i.push(t):(e(),t.__tmWillVisible||(t.invisible=!1))}function T(t,e,i,n,o,a){var r=f.getModel(),s=W(d.getFormattedLabel(f.dataIndex,"normal",null,null,a?"upperLabel":"label"),r.get("name"));if(!a&&p.isLeafRoot){var l=d.get("drillDownIcon",!0);s=l?l+" "+s:s}var u=r.getModel(a?jx:Xx),h=r.getModel(a?qx:Yx),c=u.getShallow("show");$s(t,e,u,h,{defaultText:c?s:null,autoColor:i,isRectText:!0}),a&&(t.textRect=D(a)),t.truncate=c&&u.get("ellipsis")?{outerWidth:n,outerHeight:o,minChar:2}:null}function A(t,e,i,n){var o=null!=y&&s[t][y],a=u[t];return o?(s[t][y]=null,function(t,e,i){(t[v]={}).old="nodeGroup"===i?e.position.slice():L({},e.shape)}(a,o,t)):m||((o=new e({z:function(t,e){var i=t*Kx+e;return(i-1)/i}(i,n)})).__tmDepth=i,function(t,e,i){var n=t[v]={},o=f.parentNode;if(o&&(!l||"drillDown"===l.direction)){var a=0,r=0,s=u.background[o.getRawIndex()];!l&&s&&s.old&&(a=s.old.width,r=s.old.height),n.old="nodeGroup"===i?[0,r]:{x:a,y:r,width:0,height:0}}n.fadein="nodeGroup"!==i}(a,0,o.__tmStorageName=t)),r[t][v]=o}}Mf({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(_(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=Ox(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,l=this._storage,u="treemapRootToNode"===a&&o&&l?{rootNodeGroup:l.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,h=this._giveContainerGroup(r),c=this._doRender(h,t,u);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?c.renderFinally():this._doAnimation(h,c,t,u),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new Hx,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){var n=e.getData().tree,o=this._oldTree,a={nodeGroup:[],background:[],content:[]},r={nodeGroup:[],background:[],content:[]},s=this._storage,l=[],c=T(Jx,e,r,s,i,a,l);!function a(r,s,l,u,h){u?Ux(s=r,function(t,e){t.isRemoved()||i(e,e)}):new Tf(s,r,t,t).add(i).update(i).remove(T(i,null)).execute();function t(t){return t.getId()}function i(t,e){var i=null!=t?r[t]:null,n=null!=e?s[e]:null,o=c(i,n,l,h);o&&a(i&&i.viewChildren||[],n&&n.viewChildren||[],o,u,h+1)}}(n.root?[n.root]:[],o&&o.root?[o.root]:[],t,n===o||!o,0);var u,h,d=(h={nodeGroup:[],background:[],content:[]},(u=s)&&Ux(u,function(t,e){var i=h[e];Ux(t,function(t){t&&(i.push(t),t.__tmWillDelete=1)})}),h);return this._oldTree=n,this._storage=r,{lastsForAnimation:a,willDeleteEls:d,renderFinally:function(){Ux(d,function(t){Ux(t,function(t){t.parent&&t.parent.remove(t)})}),Ux(l,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,a,e,s){if(e.get("animation")){var l=e.get("animationDurationUpdate"),u=e.get("animationEasing"),h=function(){var a,r=[],s={};return{add:function(t,e,i,n,o){return z(n)&&(o=n,n=0),!s[t.id]&&(s[t.id]=1,r.push({el:t,target:e,time:i,delay:n,easing:o}),!0)},done:function(t){return a=t,this},start:function(){for(var t=r.length,e=0,i=r.length;e=r.length||t===r[t.depth]){var i=T_(l,c,t,e,y,s);n(t,i,o,a,r,s)}})}else p=b_(c),t.setVisual("color",p)}(a,{},N(o.levelModels,function(t){return t?t.get(x_):null}),r,t.getViewRoot().getAncestors(),t)}};function w_(i,n,o,a){var r=L({},n);return E(["color","colorAlpha","colorSaturation"],function(t){var e=i.get(t,!0);null==e&&o&&(e=o[t]),null==e&&(e=n[t]),null==e&&(e=a.get(t)),null!=e&&(r[t]=e)}),r}function b_(t){var e=S_(t,"color");if(e){var i=S_(t,"colorAlpha"),n=S_(t,"colorSaturation");return n&&(e=Ue(e,null,null,n)),i&&(e=Xe(e,i)),e}}function S_(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function M_(t,e,i,n,o,a){if(a&&a.length){var r=I_(e,"color")||null!=o.color&&"none"!==o.color&&(I_(e,"colorAlpha")||I_(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new a_(c);return d.__drColorMappingBy=h,d}}}function I_(t,e){var i=t.get(e);return y_(i)&&i.length?{name:e,range:i}:null}function T_(t,e,i,n,o,a){var r=L({},e);if(o){var s=o.type,l="color"===s&&o.__drColorMappingBy,u="index"===l?n:"id"===l?a.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));r[s]=o.mapValueToVisual(u)}return r}var A_=Math.max,D_=Math.min,C_=W,L_=E,k_=["itemStyle","borderWidth"],P_=["itemStyle","gapWidth"],N_=["upperLabel","show"],O_=["upperLabel","height"],E_={seriesType:"treemap",reset:function(t,e,i,n){var o=i.getWidth(),a=i.getHeight(),r=t.option,s=vu(t.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()}),l=r.size||[],u=Pl(C_(s.width,l[0]),o),h=Pl(C_(s.height,l[1]),a),c=n&&n.type,d=Ox(n,["treemapZoomToNode","treemapRootToNode"],t),f="treemapRender"===c||"treemapMove"===c?n.rootRect:null,p=t.getViewRoot(),g=Ex(p);if("treemapMove"!==c){var m="treemapZoomToNode"===c?function(t,e,i,n,o){var a,r=(e||{}).node,s=[n,o];if(!r||r===i)return s;var l=n*o,u=l*t.option.zoomToNodeRatio;for(;a=r.parentNode;){for(var h=0,c=a.children,d=0,f=c.length;ds[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}(e,r,s);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,i,n,o){if(!n)return i;for(var a=t.get("visibleMin"),r=o.length,s=r,l=r-1;0<=l;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*ei[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;c "+d)),u++)}var f,p=i.get("coordinateSystem");if("cartesian2d"===p||"polar"===p)f=hp(t,i);else{var g=nh.get(p),m=g&&"view"!==g.type&&g.dimensions||[];_(m,"value")<0&&m.concat(["value"]);var v=np(t,{coordDimensions:m});(f=new Wf(v,i)).initData(t)}var y=new Wf(["value"],i);return y.initData(l,s),o&&o(f,y),ux({mainData:f,struct:a,structAttr:"graph",datas:{node:f,edge:y},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a}var Y_=Sf({type:"series.graph",init:function(t){Y_.superApply(this,"init",arguments);var e=this;function i(){return e._categoriesData}this.legendVisualProvider=new Gv(i,i),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){Y_.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){Y_.superApply(this,"mergeDefaultAndTheme",arguments),zo(t,["edgeLabel"],["show"])},getInitialData:function(t,s){var e=t.edges||t.links||[],i=t.data||t.nodes||[],l=this;if(i&&e)return X_(i,e,this,!0,function(t,e){t.wrapMethod("getItemModel",function(t){var e=l._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var i=l.getModel("edgeLabel"),n=new Il({label:i.option},i.parentModel,s),o=l.getModel("emphasis.edgeLabel"),a=new Il({emphasis:{label:o.option}},o.parentModel,s);function r(t){return(t=this.parsePath(t))&&"label"===t[0]?n:t&&"emphasis"===t[0]&&"label"===t[1]?a:this.parentModel}e.wrapMethod("getItemModel",function(t){return t.customizeGetParent(r),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"!==i)return Y_.superApply(this,"formatTooltip",arguments);var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=eu(l.join(" > ")),o.value&&(l+=" : "+eu(o.value)),l},_updateCategoriesData:function(){var t=N(this.option.categories||[],function(t){return null!=t.value?t:L({value:0},t)}),e=new Wf(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return Y_.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle"},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),j_=os.prototype,q_=ls.prototype;function K_(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var $_=Is({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){this[K_(e)?"_buildPathLine":"_buildPathCurve"](t,e)},_buildPathLine:j_.buildPath,_buildPathCurve:q_.buildPath,pointAt:function(t){return this[K_(this.shape)?"_pointAtLine":"_pointAtCurve"](t)},_pointAtLine:j_.pointAt,_pointAtCurve:q_.pointAt,tangentAt:function(t){var e=this.shape,i=K_(e)?[e.x2-e.x1,e.y2-e.y1]:this._tangentAtCurve(t);return mt(i,i)},_tangentAtCurve:q_.tangentAt}),J_=["fromSymbol","toSymbol"];function Q_(t){return"_"+t+"Type"}function tw(t,e,i){var n=e.getItemVisual(i,"color"),o=e.getItemVisual(i,t),a=e.getItemVisual(i,t+"Size");if(o&&"none"!==o){k(a)||(a=[a,a]);var r=mg(o,-a[0]/2,-a[1]/2,a[0],a[1],n);return r.name=t,r}}function ew(t,e){t.x1=e[0][0],t.y1=e[0][1],t.x2=e[1][0],t.y2=e[1][1],t.percent=1;var i=e[2];i?(t.cpx1=i[0],t.cpy1=i[1]):(t.cpx1=NaN,t.cpy1=NaN)}function iw(t,e,i){Ii.call(this),this._createLine(t,e,i)}var nw=iw.prototype;function ow(t){this._ctor=t||iw,this.group=new Ii}nw.beforeUpdate=function(){var t=this.childOfName("fromSymbol"),e=this.childOfName("toSymbol"),i=this.childOfName("label");if(t||e||!i.ignore){for(var n=1,o=this.parent;o;)o.scale&&(n/=o.scale[0]),o=o.parent;var a=this.childOfName("line");if(this.__dirty||a.__dirty){var r=a.shape.percent,s=a.pointAt(0),l=a.pointAt(r),u=ht([],l,s);if(mt(u,u),t){t.attr("position",s);var h=a.tangentAt(0);t.attr("rotation",Math.PI/2-Math.atan2(h[1],h[0])),t.attr("scale",[n*r,n*r])}if(e){e.attr("position",l);h=a.tangentAt(1);e.attr("rotation",-Math.PI/2-Math.atan2(h[1],h[0])),e.attr("scale",[n*r,n*r])}if(!i.ignore){var c,d,f;i.attr("position",l);var p=5*n;if("end"===i.__position)c=[u[0]*p+l[0],u[1]*p+l[1]],d=.8=t&&(0===e?0:n[e-1][0])a&&(e[1-n]=e[n]+c.sign*a),e}function Hw(t,e){var i=t[e]-t[1-e];return{span:Math.abs(i),sign:0o*(1-h[0])?(l="jump",r=s-o*(1-h[2])):0<=(r=s-o*h[1])&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?Ww(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[Yw(0,a[1]*s/o-o/2)])[1]=Xw(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},nh.register("parallel",{create:function(n,o){var a=[];return n.eachComponent("parallel",function(t,e){var i=new Jw(t,n,o);i.name="parallel_"+e,i.resize(t,o),(t.coordinateSystem=i).model=t,a.push(i)}),n.eachSeries(function(t){if("parallel"===t.get("coordinateSystem")){var e=n.queryComponents({mainType:"parallel",index:t.get("parallelIndex"),id:t.get("parallelId")})[0];t.coordinateSystem=e.coordinateSystem}}),a}});var tb=Tu.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return ra([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=D(t);if(e)for(var i=e.length-1;0<=i;i--)Ol(e[i])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;nn.getWidth()||i<0||i>n.getHeight()}(t,e)){var n=t._zr,o=t._covers,a=bb(t,e,i);if(!t._dragging)for(var r=0;rf&&(f=m.depth),g.setLayout({depth:v?m.depth:c},!0),"vertical"===a?g.setLayout({dy:i},!0):g.setLayout({dx:i},!0);for(var y=0;y "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}});function QS(t,e,i){Ii.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}var tM=QS.prototype;function eM(t,e,i){Ii.call(this),this._createPolyline(t,e,i)}tM.createLine=function(t,e,i){return new iw(t,e,i)},tM._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");k(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=mg(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},tM._updateEffectAnimation=function(e,t,i){var n=this.childAt(1);if(n){var o=this,a=e.getItemLayout(i),r=1e3*t.get("period"),s=t.get("loop"),l=t.get("constantSpeed"),u=W(t.get("delay"),function(t){return t/e.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),0e);r++);r=Math.min(r-1,o-2)}wt(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},w(nM,QS);var aM=Is({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(var o=0;o=e[0]&&t<=e[1]}}(y,e.option.range):function(e,n,o){var i=e[1]-e[0],a=(n=N(n,function(t){return{interval:[(t.interval[0]-e[0])/i,(t.interval[1]-e[0])/i]}})).length,r=0;return function(t){for(var e=r;e=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0==o?i.y+i.height/2:i.x+i.width/2,n}}).dimensions});var BM=["axisLine","axisTickLabel","axisName"],VM="splitLine",GM=hv.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=RM(t),r=new Ym(t,a);E(BM,r.add,r),o.add(r.getGroup()),t.get(VM+".show")&&this["_"+VM](t),GM.superCall(this,"render",t,e,i,n)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;fr)return!0;if(a){var s=sv(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=oI(t).pointerEl=new yl[o.type](aI(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=oI(t).labelEl=new is(aI(e.label));t.add(o),uI(o,n)}},updatePointerEl:function(t,e,i){var n=oI(t).pointerEl;n&&e.pointer&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=oI(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),uI(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e,i=this._axisPointerModel,n=this._api.getZr(),o=this._handle,a=i.getModel("handle"),r=i.get("status");if(!a.get("show")||!r||"hide"===r)return o&&n.remove(o),void(this._handle=null);this._handle||(e=!0,o=this._handle=pl(a.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){Wt(t.event)},onmousedown:rI(this._onHandleDragMove,this,0,0),drift:rI(this._onHandleDragMove,this),ondragend:rI(this._onHandleDragEnd,this)}),n.add(o)),cI(o,i,!1);o.setStyle(a.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=a.get("size");k(s)||(s=[s,s]),o.attr("scale",[s[0]/2,s[1]/2]),Tc(this,"_doDispatchAxisPointer",a.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},_moveHandleToValue:function(t,e){lI(this._axisPointerModel,!e&&this._moveAnimation,this._handle,hI(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(hI(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(hI(n)),oI(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return{x:t[i=i||0],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=sI);var _I=sI.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=wI(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=dI(n),c=bI[s](a,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}mI(e,t,pv(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=pv(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:gI(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=wI(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}}});function wI(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}var bI={line:function(t,e,i){return{type:"Line",subPixelOptimize:!0,shape:vI([e,i[0]],[e,i[1]],SI(t))}},shadow:function(t,e,i){var n=Math.max(1,t.getBandWidth()),o=i[1]-i[0];return{type:"Rect",shape:yI([e-n/2,i[0]],[n,o],SI(t))}}};function SI(t){return"x"===t.dim?0:1}hv.registerAxisPointerClass("CartesianAxisPointer",_I),ff(function(t){if(t){t.axisPointer&&0!==t.axisPointer.length||(t.axisPointer={});var e=t.axisPointer.link;e&&!k(e)&&(t.axisPointer.link=[e])}}),pf(Id.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=av(t,e)}),gf({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,r=[t.x,t.y],o=t,a=t.dispatchAction||A(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){KM(r)&&(r=WM({seriesIndex:o.seriesIndex,dataIndex:o.dataIndex},e).point);var l=KM(r),u=o.axesInfo,h=s.axesInfo,c="leave"===n||KM(r),d={},f={},p={list:[],map:{}},g={showPointer:ZM(YM,f),showTooltip:ZM(jM,p)};HM(s.coordSysMap,function(t,e){var a=l||t.containPoint(r);HM(s.coordSysAxesInfo[e],function(t,e){var i=t.axis,n=function(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}(u,t);if(!c&&a&&(!u||n)){var o=n&&n.value;null!=o||l||(o=i.pointToData(r)),null!=o&&XM(t,o,g,!1,d)}})});var m={};return HM(h,function(o,t){var a=o.linkGroup;a&&!f[t]&&HM(a.axesInfo,function(t,e){var i=f[e];if(t!==o&&i){var n=i.value;a.mapper&&(n=o.axis.scale.parse(a.mapper(n,qM(t),qM(o)))),m[o.key]=n}})}),HM(m,function(t,e){XM(h[e],t,g,!0,d)}),function(o,t,e){var a=e.axesInfo=[];HM(t,function(t,e){var i=t.axisPointerModel.option,n=o[e];n?(t.useHandle||(i.status="show"),i.value=n.value,i.seriesDataIndices=(n.payloadBatch||[]).slice()):t.useHandle||(i.status="hide"),"show"===i.status&&a.push({axisDim:t.axis.dim,axisIndex:t.axis.model.componentIndex,value:i.value})})}(f,h,d),function(t,e,i,n){if(KM(e)||!t.list.length)return n({type:"hideTip"});var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}(p,r,t,a),function(t,e,i){var n=i.getZr(),o="axisPointerLastHighlights",a=UM(n)[o]||{},r=UM(n)[o]={};HM(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&HM(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;r[e]=t})});var s=[],l=[];E(a,function(t,e){r[e]||l.push(t)}),E(r,function(t,e){a[e]||s.push(t)}),l.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:l}),s.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:s})}(h,0,i),d}});var MI=["x","y"],II=["width","height"],TI=sI.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=CI(r,1-DI(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=dI(n),c=AI[u](a,l,s);c.style=h,t.graphicKey=c.type,t.pointer=c}mI(e,t,RM(i),i,n,o)},getHandleTransform:function(t,e,i){var n=RM(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:gI(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=DI(o),s=CI(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=CI(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),AI={line:function(t,e,i){return{type:"Line",subPixelOptimize:!0,shape:vI([e,i[0]],[e,i[1]],DI(t))}},shadow:function(t,e,i){var n=t.getBandWidth(),o=i[1]-i[0];return{type:"Rect",shape:yI([e-n/2,i[0]],[n,o],DI(t))}}};function DI(t){return t.isHorizontal()?0:1}function CI(t,e){var i=t.getRect();return[i[MI[e]],i[MI[e]]+i[II[e]]]}hv.registerAxisPointerClass("SingleAxisPointer",TI),bf({type:"single"});var LI=ic.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){LI.superApply(this,"init",arguments),this.legendVisualProvider=new Gv(A(this.getData,this),A(this.getRawData,this))},fixData:function(t){var e=t.length,i=Ko(t,function(t){return t[2]}),n=[];i.buckets.each(function(t,e){n.push({name:e,dataList:t})});for(var o=n.length,a=-1,r=-1,s=0;sMath.PI/2?"right":"left"):y&&"center"!==y?"left"===y?(d=l.r0+v,f>Math.PI/2&&(y="right")):"right"===y&&(d=l.r-v,f>Math.PI/2&&(y="left")):(d=(l.r+l.r0)/2,y="center"),c.attr("style",{text:s,textAlign:y,textVerticalAlign:S("verticalAlign")||"middle",opacity:S("opacity")});var x=d*p+l.cx,_=d*g+l.cy;c.attr("position",[x,_]);var w=S("rotate"),b=0;function S(t){var e=a.get(t);return null==e?o.get(t):e}"radial"===w?(b=-f)<-Math.PI/2&&(b+=Math.PI):"tangential"===w?(b=Math.PI/2-f)>Math.PI/2?b-=Math.PI:b<-Math.PI/2&&(b+=Math.PI):"number"==typeof w&&(b=w*Math.PI/180),c.attr("rotation",b)},BI._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");function o(){r.onEmphasis(n)}function a(){r.onNormal()}var r=this;i.isAnimationEnabled()&&t.on("mouseover",o).on("mouseout",a).on("emphasis",o).on("normal",a).on("downplay",function(){r.onDownplay()}).on("highlight",function(){r.onHighlight()})},w(RI,Ii);gc.extend({type:"sunburst",init:function(){},render:function(o,a,t,e){var n=this;this.seriesModel=o,this.api=t,this.ecModel=a;var r=o.getData(),s=r.tree.root,i=o.getViewRoot(),l=this.group,u=o.get("renderLabelForZeroData"),h=[];i.eachNode(function(t){h.push(t)});var c=this._oldChildren||[];if(function(i,n){if(0===i.length&&0===n.length)return;function t(t){return t.getId()}function e(t,e){!function(t,e){u||!t||t.getValue()||(t=null);if(t!==s&&e!==s)if(e&&e.piece)t?(e.piece.updateData(!1,t,"normal",o,a),r.setItemGraphicEl(t.dataIndex,e.piece)):function(t){if(!t)return;t.piece&&(l.remove(t.piece),t.piece=null)}(e);else if(t){var i=new RI(t,o,a);l.add(i),r.setItemGraphicEl(t.dataIndex,i)}}(null==t?null:i[t],null==e?null:n[e])}new Tf(n,i,t,t).add(e).update(e).remove(T(e,null)).execute()}(h,c),function(t,e){if(0=i.r0}}});var VI="sunburstRootToNode";gf({type:VI,update:"updateView"},function(o,t){t.eachComponent({mainType:"series",subType:"sunburst",query:o},function(t,e){var i=Ox(o,[VI],t);if(i){var n=t.getViewRoot();n&&(o.direction=zx(n,i.node)?"rollUp":"drillDown"),t.resetViewRoot(i.node)}})});var GI="sunburstHighlight";gf({type:GI,update:"updateView"},function(n,t){t.eachComponent({mainType:"series",subType:"sunburst",query:n},function(t,e){var i=Ox(n,[GI],t);i&&(n.highlight=i.node)})});gf({type:"sunburstUnhighlight",update:"updateView"},function(i,t){t.eachComponent({mainType:"series",subType:"sunburst",query:i},function(t,e){i.unhighlight=!0})});var FI=Math.PI/180;function WI(t,e){if("function"==typeof e)return t.sort(e);var n="asc"===e;return t.sort(function(t,e){var i=(t.getValue()-e.getValue())*(n?1:-1);return 0==i?(t.dataIndex-e.dataIndex)*(n?-1:1):i})}function HI(a,r){return r=r||[0,0],N(["x","y"],function(t,e){var i=this.getAxis(t),n=r[e],o=a[e]/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))},this)}yf(T(Yv,"sunburst")),vf(T(function(t,e,C,i){e.eachSeriesByType(t,function(t){var e=t.get("center"),i=t.get("radius");k(i)||(i=[0,i]),k(e)||(e=[e,e]);var n=C.getWidth(),o=C.getHeight(),h=Math.min(n,o),c=Pl(e[0],n),d=Pl(e[1],o),f=Pl(i[0],h/2),a=Pl(i[1],h/2),r=-t.get("startAngle")*FI,p=t.get("minAngle")*FI,g=t.getData().tree.root,s=t.getViewRoot(),m=s.depth,l=t.get("sort");null!=l&&!function e(t,i){var n=t.children||[];t.children=WI(n,i);n.length&&E(t.children,function(t){e(t,i)})}(s,l);var u=0;E(s.children,function(t){isNaN(t.getValue())||u++});var v=s.getValue(),y=Math.PI/(v||u)*2,x=0t[1]&&t.reverse(),{coordSys:{type:"polar",cx:o.cx,cy:o.cy,r:t[1],r0:t[0]},api:{coord:A(function(t){var e=a.dataToRadius(t[0]),i=r.dataToAngle(t[1]),n=o.coordToPoint([e,i]);return n.push(e,i*Math.PI/180),n}),size:A(XI,o)}}},calendar:function(i){var t=i.getRect(),e=i.getRangeInfo();return{coordSys:{type:"calendar",x:t.x,y:t.y,width:t.width,height:t.height,cellWidth:i.getCellWidth(),cellHeight:i.getCellHeight(),rangeInfo:{start:e.start,end:e.end,weeks:e.weeks,dayCount:e.allDay}},api:{coord:function(t,e){return i.dataToPoint(t,e)}}}}};function tT(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function eT(a,r,e,t){var i=a.get("renderItem"),n=a.coordinateSystem,o={};n&&(o=n.prepareCustoms?n.prepareCustoms():QI[n.type](n));var s,l,u,h,c,d=C({getWidth:t.getWidth,getHeight:t.getHeight,getZr:t.getZr,getDevicePixelRatio:t.getDevicePixelRatio,value:function(t,e){return null==e&&(e=s),r.get(r.getDimension(t||0),e)},style:function(t,e){null==e&&(e=s),g(e);var i=l.getModel(jI).getItemStyle();null!=c&&(i.fill=c);var n=r.getItemVisual(e,"opacity");null!=n&&(i.opacity=n);var o=t?rT(t,u):u;return Qs(i,o,null,{autoColor:c,isRectText:!0}),i.text=o.getShallow("show")?H(a.getFormattedLabel(e,"normal"),Gg(r,e)):null,t&&sT(i,t),i},styleEmphasis:function(t,e){null==e&&(e=s),g(e);var i=l.getModel(qI).getItemStyle(),n=t?rT(t,h):h;return Qs(i,n,null,{isRectText:!0},!0),i.text=n.getShallow("show")?Z(a.getFormattedLabel(e,"emphasis"),a.getFormattedLabel(e,"normal"),Gg(r,e)):null,t&&sT(i,t),i},visual:function(t,e){return null==e&&(e=s),r.getItemVisual(e,t)},barLayout:function(t){if(n.getBaseAxis){return function(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;oe[1]&&e.reverse();var i=t.getExtent(),n=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-i[0]*n,endAngle:-i[1]*n,clockwise:t.inverse,contain:function(t,e){var i=t-this.cx,n=e-this.cy,o=i*i+n*n,a=this.r,r=this.r0;return o<=a*a&&r*r<=o}}}};var vT=Tu.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});m(vT.prototype,sg);var yT={splitNumber:5};function xT(t,e){return e.type||(e.data?"category":"value")}function _T(t,e){var i=this,n=i.getAngleAxis(),o=i.getRadiusAxis();if(n.scale.setExtent(1/0,-1/0),o.scale.setExtent(1/0,-1/0),t.eachSeries(function(t){if(t.coordinateSystem===i){var e=t.getData();E(e.mapDimension("radius",!0),function(t){o.scale.unionExtentFromData(e,up(e,t))}),E(e.mapDimension("angle",!0),function(t){n.scale.unionExtentFromData(e,up(e,t))})}}),eg(n.scale,n.model),eg(o.scale,o.model),"category"===n.type&&!n.onBand){var a=n.getExtent(),r=360/n.scale.count();n.inverse?a[1]+=r:a[1]-=r,n.setExtent(a[0],a[1])}}function wT(t,e){if(t.type=e.get("type"),t.scale=ig(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),"angleAxis"===e.mainType){t.inverse^=e.get("clockwise");var i=e.get("startAngle");t.setExtent(i,i+(t.inverse?-360:360))}(e.axis=t).model=e}Om("angle",vT,xT,{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}}),Om("radius",vT,xT,yT),wf({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}}),nh.register("polar",{dimensions:mT.prototype.dimensions,create:function(i,s){var l=[];return i.eachComponent("polar",function(t,e){var i=new mT(e);i.update=_T;var n=i.getRadiusAxis(),o=i.getAngleAxis(),a=t.findAxisModel("radiusAxis"),r=t.findAxisModel("angleAxis");wT(n,a),wT(o,r),function(t,e,i){var n=e.get("center"),o=i.getWidth(),a=i.getHeight();t.cx=Pl(n[0],o),t.cy=Pl(n[1],a);var r=t.getRadiusAxis(),s=Math.min(o,a)/2,l=e.get("radius");null==l?l=[0,"100%"]:k(l)||(l=[0,l]),l=[Pl(l[0],s),Pl(l[1],s)],r.inverse?r.setExtent(l[1],l[0]):r.setExtent(l[0],l[1])}(i,t,s),l.push(i),(t.coordinateSystem=i).model=t}),i.eachSeries(function(t){if("polar"===t.get("coordinateSystem")){var e=i.queryComponents({mainType:"polar",index:t.get("polarIndex"),id:t.get("polarId")})[0];t.coordinateSystem=e.coordinateSystem}}),l}});var bT=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function ST(t,e,i){e[1]>e[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function MT(t){return t.getRadiusAxis().inverse?0:1}function IT(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}hv.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(e,t){if(this.group.removeAll(),e.get("show")){var i=e.axis,n=i.polar,o=n.getRadiusAxis().getExtent(),a=i.getTicksCoords(),r=i.getMinorTicksCoords(),s=N(i.getViewLabels(),function(t){return(t=D(t)).coord=i.dataToCoord(t.tickValue),t});IT(s),IT(a),E(bT,function(t){!e.get(t+".show")||i.scale.isBlank()&&"axisLine"!==t||this["_"+t](e,n,a,r,o,s)},this)}},_axisLine:function(t,e,i,n,o){var a,r=t.getModel("axisLine.lineStyle"),s=MT(e),l=s?0:1;(a=0===o[l]?new Hr({shape:{cx:e.cx,cy:e.cy,r:o[s]},style:r.getLineStyle(),z2:1,silent:!0}):new Xr({shape:{cx:e.cx,cy:e.cy,r:o[s],r0:o[l]},style:r.getLineStyle(),z2:1,silent:!0})).style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n,o){var a=t.getModel("axisTick"),r=(a.get("inside")?-1:1)*a.get("length"),s=o[MT(e)],l=N(i,function(t){return new os({shape:ST(e,[s,s+r],t.coord)})});this.group.add(ks(l,{style:C(a.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_minorTick:function(t,e,i,n,o){if(n.length){for(var a=t.getModel("axisTick"),r=t.getModel("minorTick"),s=(a.get("inside")?-1:1)*r.get("length"),l=o[MT(e)],u=[],h=0;hr?"left":"right",u=Math.abs(a[1]-s)/o<.3?"middle":a[1]>s?"top":"bottom";p&&p[n]&&p[n].textStyle&&(i=new Il(p[n].textStyle,g,g.ecModel));var h=new Fr({silent:Ym.isLabelSilent(c)});this.group.add(h),Qs(h.style,i,{x:a[0],y:a[1],textFill:i.getTextColor()||c.get("axisLine.lineStyle.color"),text:t.formattedLabel,textAlign:l,textVerticalAlign:u}),v&&(h.eventData=Ym.makeAxisEventDataBase(c),h.eventData.targetType="axisLabel",h.eventData.value=t.rawLabel)},this)},_splitLine:function(t,e,i,n,o){var a=t.getModel("splitLine").getModel("lineStyle"),r=a.get("color"),s=0;r=r instanceof Array?r:[r];for(var l=[],u=0;um?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}(e,i,0,s,d))}});var CT={line:function(t,e,i,n,o){return"angle"===t.dim?{type:"Line",shape:vI(e.coordToPoint([n[0],i]),e.coordToPoint([n[1],i]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:i}}},shadow:function(t,e,i,n,o){var a=Math.max(1,t.getBandWidth()),r=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:xI(e.cx,e.cy,n[0],n[1],(-i-a/2)*r,(a/2-i)*r)}:{type:"Sector",shape:xI(e.cx,e.cy,i-a/2,i+a/2,0,2*Math.PI)}}};function LT(n,t){t.update="updateView",gf(t,function(t,e){var i={};return e.eachComponent({mainType:"geo",query:t},function(e){e[n](t.name),E(e.coordinateSystem.regions,function(t){i[t.name]=e.isSelected(t.name)||!1})}),{selected:i,name:t.name}})}hv.registerAxisPointerClass("PolarAxisPointer",DT),vf(T(function(t,e,i){var N={},O=function(t){var g={};E(t,function(t,e){var i=t.getData(),n=t.coordinateSystem,o=n.getBaseAxis(),a=dT(n,o),r=o.getExtent(),s="category"===o.type?o.getBandWidth():Math.abs(r[1]-r[0])/i.count(),l=g[a]||{bandWidth:s,remainedWidth:s,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},u=l.stacks;g[a]=l;var h=cT(t);u[h]||l.autoWidthCount++,u[h]=u[h]||{width:0,maxWidth:0};var c=Pl(t.get("barWidth"),s),d=Pl(t.get("barMaxWidth"),s),f=t.get("barGap"),p=t.get("barCategoryGap");c&&!u[h].width&&(c=Math.min(l.remainedWidth,c),u[h].width=c,l.remainedWidth-=c),d&&(u[h].maxWidth=d),null!=f&&(l.gap=f),null!=p&&(l.categoryGap=p)});var d={};return E(g,function(t,i){d[i]={};var e=t.stacks,n=t.bandWidth,o=Pl(t.categoryGap,n),a=Pl(t.gap,1),r=t.remainedWidth,s=t.autoWidthCount,l=(r-o)/(s+(s-1)*a);l=Math.max(l,0),E(e,function(t,e){var i=t.maxWidth;i&&i=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=0n.weeks||0===t&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},kT.dimensions=kT.prototype.dimensions,kT.getDimensionsInfo=kT.prototype.getDimensionsInfo,kT.create=function(i,n){var o=[];return i.eachComponent("calendar",function(t){var e=new kT(t,i,n);o.push(e),t.coordinateSystem=e}),i.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=o[t.get("calendarIndex")||0])}),o},nh.register("calendar",kT);var NT=Tu.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=_u(t);NT.superApply(this,"init",arguments),OT(t,o)},mergeOption:function(t,e){NT.superApply(this,"mergeOption",arguments),OT(this.option,t)}});function OT(t,e){var i=t.cellSize;k(i)?1===i.length&&(i[1]=i[0]):i=t.cellSize=[i,i];var n=N([0,1],function(t){return function(t,e){return null!=t[pu[e][0]]||null!=t[pu[e][1]]&&null!=t[pu[e][2]]}(e,t)&&(i[t]="auto"),null!=i[t]&&"auto"!==i[t]});xu(t,e,{type:"box",ignoreSize:n})}var ET={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},zT={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};bf({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new is({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(i,t,n,o){var a=this,r=i.coordinateSystem,s=i.getModel("splitLine.lineStyle").getLineStyle(),l=i.get("splitLine.show"),e=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var u=t.start,h=0;u.time<=t.end.time;h++){d(u.formatedDate),0===h&&(u=r.getDateInfo(t.start.y+"-"+t.start.m));var c=u.date;c.setMonth(c.getMonth()+1),u=r.getDateInfo(c)}function d(t){a._firstDayOfMonth.push(r.getDateInfo(t)),a._firstDayPoints.push(r.dataToRect([t],!1).tl);var e=a._getLinePointsOfOneWeek(i,t,n);a._tlpoints.push(e[0]),a._blpoints.push(e[e.length-1]),l&&a._drawSplitline(e,s,o)}d(r.getNextNDay(t.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,e,n),s,o),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,e,n),s,o)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new Kr({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?au(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r=r||("horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new Fr({z2:30});Qs(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),a=n.get("margin"),r=n.get("position"),s=n.get("align"),l=[this._tlpoints,this._blpoints];z(o)&&(o=ET[o.toUpperCase()]||[]);var u="start"===r?0:1,h="horizontal"===e?0:1;a="start"===r?-a:a;for(var c="center"===s,d=0;dd.getHeight()&&(i.textPosition="top",a=!0);var r=a?-5-n.height:p+8;o+n.width/2>d.getWidth()?(i.textPosition=["100%",r],i.textAlign="right"):o-n.width/2<0&&(i.textPosition=[0,r],i.textAlign="left")}})}function t(t,e){var i,n=m[t],o=m[e],a=u[n],r=new Il(a,h,h.ecModel);if(l&&null!=l.newTitle&&(a.title=l.newTitle),n&&!o){if(function(t){return 0===t.indexOf("my")}(n))i={model:r,onclick:r.option.onclick,featureName:n};else{var s=ZT(n);if(!s)return;i=new s(r,c,d)}g[n]=i}else{if(!(i=g[o]))return;i.model=r,i.ecModel=c,i.api=d}n||!o?r.get("show")&&!i.unusable?(function(o,a,t){var r=o.getModel("iconStyle"),s=o.getModel("emphasis.iconStyle"),e=a.getIcons?a.getIcons():o.get("icon"),l=o.get("title")||{};if("string"==typeof e){var i=e,n=l;l={},(e={})[t]=i,l[t]=n}var u=o.iconPaths={};E(e,function(t,e){var i=pl(t,{},{x:-p/2,y:-p/2,width:p,height:p});i.setStyle(r.getItemStyle()),i.hoverStyle=s.getItemStyle(),i.setStyle({text:l[e],textAlign:s.get("textAlign"),textBorderRadius:s.get("textBorderRadius"),textPadding:s.get("textPadding"),textFill:null});var n=h.getModel("tooltip");n&&n.get("show")&&i.attr("tooltip",L({content:l[e],formatter:n.get("formatter",!0)||function(){return l[e]},formatterParams:{componentType:"toolbox",name:e,title:l[e],$vars:["name","title"]},position:n.get("position",!0)||"bottom"},n.option)),Ys(i),h.get("showTitle")&&(i.__title=l[e],i.on("mouseover",function(){var t=s.getItemStyle(),e="vertical"===h.get("orient")?null==h.get("right")?"right":"left":null==h.get("bottom")?"bottom":"top";i.setStyle({textFill:s.get("textFill")||t.fill||t.stroke||"#000",textBackgroundColor:s.get("textBackgroundColor"),textPosition:s.get("textPosition")||e})}).on("mouseout",function(){i.setStyle({textFill:null,textBackgroundColor:null})})),i.trigger(o.get("iconStatus."+e)||"normal"),f.add(i),i.on("click",A(a.onclick,a,c,d,e)),u[e]=i})}(r,i,n),r.setIconStatus=function(t,e){var i=this.option,n=this.iconPaths;i.iconStatus=i.iconStatus||{},i.iconStatus[t]=e,n[t]&&n[t].trigger(e)},i.render&&i.render(r,c,d,l)):i.remove&&i.remove(c,d):i.dispose&&i.dispose(c,d)}},updateView:function(t,e,i,n){E(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(e,i){E(this._features,function(t){t.remove&&t.remove(e,i)}),this.group.removeAll()},dispose:function(e,i){E(this._features,function(t){t.dispose&&t.dispose(e,i)})}});var YT=Cc.toolbox.saveAsImage;function jT(t){this.model=t}jT.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:YT.title,type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:YT.lang.slice()},jT.prototype.unusable=!v.canvasSupported,jT.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=i.get("type",!0)||"png",a=e.getConnectedDataURL({type:o,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:i.get("connectedBackgroundColor"),excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if("function"!=typeof MouseEvent||v.browser.ie||v.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var r=atob(a.split(",")[1]),s=r.length,l=new Uint8Array(s);s--;)l[s]=r.charCodeAt(s);var u=new Blob([l]);window.navigator.msSaveOrOpenBlob(u,n+"."+o)}else{var h=i.get("lang"),c='';window.open().document.write(c)}else{var d=document.createElement("a");d.download=n+"."+o,d.target="_blank",d.href=a;var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});d.dispatchEvent(f)}},HT("saveAsImage",jT);var qT=Cc.toolbox.magicType,KT="__ec_magicType_stack__";function $T(t){this.model=t}$T.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:D(qT.title),option:{},seriesIndex:{}};var JT=$T.prototype;JT.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return E(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var QT={line:function(t,e,i,n){if("bar"===t)return m({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},n.get("option.line")||{},!0)},bar:function(t,e,i,n){if("line"===t)return m({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},n.get("option.bar")||{},!0)},stack:function(t,e,i,n){var o=i.get("stack")===KT;if("line"===t||"bar"===t)return n.setIconStatus("stack",o?"normal":"emphasis"),m({id:e,stack:o?"":KT},n.get("option.stack")||{},!0)}},tA=[["line","bar"],["stack"]];JT.onclick=function(u,t,h){var c=this.model,e=c.get("seriesIndex."+h);if(QT[h]){var i,d={series:[]};if(E(tA,function(t){0<=_(t,h)&&E(t,function(t){c.setIconStatus(t,"normal")})}),c.setIconStatus(h,"emphasis"),u.eachComponent({mainType:"series",query:null==e?null:{seriesIndex:e}},function(t){var e=t.subType,i=t.id,n=QT[h](e,i,t,c);n&&(C(n,t.option),d.series.push(n));var o=t.coordinateSystem;if(o&&"cartesian2d"===o.type&&("line"===h||"bar"===h)){var a=o.getAxesByScale("ordinal")[0];if(a){var r=a.dim+"Axis",s=u.queryComponents({mainType:r,index:t.get(name+"Index"),id:t.get(name+"Id")})[0].componentIndex;d[r]=d[r]||[];for(var l=0;l<=s;l++)d[r][s]=d[r][s]||{};d[r][s].boundaryGap="bar"===h}}}),"stack"===h)i=d.series&&d.series[0]&&d.series[0].stack===KT?m({stack:qT.title.tiled},qT.title):D(qT.title);t.dispatchAction({type:"changeMagicType",currentType:h,newOption:d,newTitle:i})}},gf({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),HT("magicType",$T);var eA=Cc.toolbox.dataView,iA=new Array(60).join("-"),nA="\t";function oA(t){var e=function(t){var o={},a=[],r=[];return t.eachRawSeries(function(t){var e=t.coordinateSystem;if(!e||"cartesian2d"!==e.type&&"polar"!==e.type)a.push(t);else{var i=e.getBaseAxis();if("category"===i.type){var n=i.dim+"_"+i.index;o[n]||(o[n]={categoryAxis:i,valueAxis:e.getOtherAxis(i),series:[]},r.push({axisDim:i.dim,axisIndex:i.index})),o[n].series.push(t)}else a.push(t)}}),{seriesGroupByCategoryAxis:o,other:a,meta:r}}(t);return{value:M([function(t){var h=[];return E(t,function(t,e){var i=t.categoryAxis,n=t.valueAxis.dim,o=[" "].concat(N(t.series,function(t){return t.name})),a=[i.model.getCategories()];E(t.series,function(t){a.push(t.getRawData().mapArray(n,function(t){return t}))});for(var r=[o.join(nA)],s=0;st[1]&&t.reverse(),t}function vA(t,e){return Xo(t,e,{includeMainTypes:fA})}gA.setOutputRanges=function(t,e){this.matchOutputRanges(t,e,function(t,e,i){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var n=wA[t.brushType](0,i,e);t.__rangeOffset={offset:SA[t.brushType](n.values,t.range,[1,1]),xyMinMax:n.xyMinMax}}})},gA.matchOutputRanges=function(t,n,o){uA(t,function(i){var t=this.findTargetInfo(i,n);t&&!0!==t&&E(t.coordSyses,function(t){var e=wA[i.brushType](1,t,i.range);o(i,e.values,t,n)})},this)},gA.setInputRanges=function(t,o){uA(t,function(t){var e=this.findTargetInfo(t,o);if(t.range=t.range||[],e&&!0!==e){t.panelId=e.panelId;var i=wA[t.brushType](0,e.coordSys,t.coordRange),n=t.__rangeOffset;t.range=n?SA[t.brushType](i.values,n.offset,function(t,e){var i=IA(t),n=IA(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}(i.xyMinMax,n.xyMinMax)):i.values}},this)},gA.makePanelOpts=function(i,n){return N(this._targetInfoList,function(t){var e=t.getPanelRect();return{panelId:t.panelId,defaultBrushType:n&&n(t),clipPath:Ub(e),isTargetByCursor:Yb(e,i,t.coordSysModel),getLinearBrushOtherExtent:Xb(e)}})},gA.controlSeries=function(t,e,i){var n=this.findTargetInfo(t,i);return!0===n||n&&0<=hA(n.coordSyses,e.coordinateSystem)},gA.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=vA(e,t),o=0;on[1]&&(n[1]=e[1])})}),n[1]c[1];if(r&&!s&&!l)return!0;r&&(n=!0),s&&(e=!0),l&&(i=!0)}return n&&e&&i}):RA(h,function(t){if("empty"===o)i.setData(u=u.map(t,function(t){return function(t){return t>=c[0]&&t<=c[1]}(t)?t:NaN}));else{var e={};e[t]=c,u.selectRange(e)}}),RA(h,function(t){u.setApproximateExtent(c,t)}))})}}};var GA=E,FA=OA,WA=wf({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=HA(t);this.settledOption=n,this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=HA(t);m(this.option,t,!0),m(this.settledOption,e,!0),this.doInit(e)},doInit:function(t){var i=this.option;v.canvasSupported||(i.realtime=!1),this._setDefaultThrottle(t),ZA(this,t);var n=this.settledOption;GA([["start","startValue"],["end","endValue"]],function(t,e){"value"===this._rangePropMode[e]&&(i[t[0]]=n[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var r=this._axisProxies;this.eachTargetAxis(function(t,e,i,n){var o=this.dependentModels[t.axis][e],a=o.__dzAxisProxy||(o.__dzAxisProxy=new zA(t.name,e,this,n));r[t.name+"_"+e]=a},this)},_resetTarget:function(){var i=this.option,t=this._judgeAutoMode();FA(function(t){var e=t.axisIndex;i[e]=Eo(i[e])},this),"axisIndex"===t?this._autoSetAxisIndex():"orient"===t&&this._autoSetOrient()},_judgeAutoMode:function(){var e=this.option,i=!1;FA(function(t){null!=e[t.axisIndex]&&(i=!0)},this);var t=e.orient;return null==t&&i?"orient":i?void 0:(null==t&&(e.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var a=!0,e=this.get("orient",!0),r=this.option,t=this.dependentModels;if(a){var i="vertical"===e?"y":"x";t[i+"Axis"].length?(r[i+"AxisIndex"]=[0],a=!1):GA(t.singleAxis,function(t){a&&t.get("orient",!0)===e&&(r.singleAxisIndex=[t.componentIndex],a=!1)})}a&&FA(function(t){if(a){var e=[],i=this.dependentModels[t.axis];if(i.length&&!e.length)for(var n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&CD(e)}};function CD(t){return new Mi(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}var LD=["#ddd"];wf({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;e||vD(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:LD},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=N(t,function(t){return kD(this.option,t)},this))},setBrushOption:function(t){this.brushOption=kD(this.option,t),this.brushType=this.brushOption.brushType}});function kD(t,e){return m({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new Il(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}function PD(t,e,i,n){n&&n.$from===t.id||this._brushController.setPanels(t.brushTargetManager.makePanelOpts(i)).enableBrush(t.brushOption).updateCovers(t.areas.slice())}bf({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new gb(e.getZr())).on("brush",A(this._onBrush,this)).mount()},render:function(t){return this.model=t,PD.apply(this,arguments)},updateTransform:PD,updateView:PD,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var i=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),e.isEnd&&!e.removeOnClick||this.api.dispatchAction({type:"brush",brushId:i,areas:D(t),$from:i}),e.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:i,areas:D(t),$from:i})}}),gf({type:"brush",event:"brush"},function(e,t){t.eachComponent({mainType:"brush",query:e},function(t){t.setAreas(e.areas)})}),gf({type:"brushSelect",event:"brushSelected",update:"none"},function(){}),gf({type:"brushEnd",event:"brushEnd",update:"none"},function(){});var ND=Cc.toolbox.brush;function OD(t,e,i){this.model=t,this.ecModel=e,this.api=i,this._brushType,this._brushMode}OD.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:D(ND.title)};var ED=OD.prototype;ED.render=ED.updateView=function(e,t,i){var n,o,a;t.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,E(e.get("type",!0),function(t){e.setIconStatus(t,("keep"===t?"multiple"===o:"clear"===t?a:t===n)?"emphasis":"normal")})},ED.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return E(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},ED.onclick=function(t,e,i){var n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},HT("brush",OD),ff(function(t,e){var i=t&&t.brush;if(k(i)||(i=i?[i]:[]),i.length){var n=[];E(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;k(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),function(i){var e={};E(i,function(t){e[t]=1}),i.length=0,E(e,function(t,e){i.push(e)})}(s),e&&!s.length&&s.push.apply(s,fD)}}),wf({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),bf({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,o=t.getModel("textStyle"),a=t.getModel("subtextStyle"),r=t.get("textAlign"),s=H(t.get("textBaseline"),t.get("textVerticalAlign")),l=new Fr({style:Qs({},o,{text:t.get("text"),textFill:o.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new Fr({style:Qs({},a,{text:h,textFill:a.getTextColor(),y:u.height+t.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),d=t.get("link"),f=t.get("sublink"),p=t.get("triggerEvent",!0);l.silent=!d&&!p,c.silent=!f&&!p,d&&l.on("click",function(){window.open(d,"_"+t.get("target"))}),f&&c.on("click",function(){window.open(f,"_"+t.get("subtarget"))}),l.eventData=c.eventData=p?{componentType:"title",componentIndex:t.componentIndex}:null,n.add(l),h&&n.add(c);var g=n.getBoundingRect(),m=t.getBoxLayoutParams();m.width=g.width,m.height=g.height;var v=vu(m,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));r||("middle"===(r=t.get("left")||t.get("right"))&&(r="center"),"right"===r?v.x+=v.width:"center"===r&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),n.attr("position",[v.x,v.y]);var y={textAlign:r,textVerticalAlign:s};l.setStyle(y),c.setStyle(y),g=n.getBoundingRect();var x=v.margin,_=t.getItemStyle(["color","opacity"]);_.fill=t.get("backgroundColor");var w=new is({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:t.get("borderRadius")},style:_,subPixelOptimize:!0,silent:!0});n.add(w)}}});function zD(t){var e=t.itemStyle||(t.itemStyle={}),i=e.emphasis||(e.emphasis={}),n=t.label||t.label||{},o=n.normal||(n.normal={}),a={normal:1,emphasis:1};E(n,function(t,e){a[e]||RD(o,e)||(o[e]=t)}),i.label&&!RD(n,"emphasis")&&(n.emphasis=i.label,delete i.label)}function RD(t,e){return t.hasOwnProperty(e)}Tu.registerSubTypeDefaulter("timeline",function(){return"slider"}),gf({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),C({currentIndex:i.option.currentIndex},t)}),gf({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var BD=Tu.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){BD.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(e<=t&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],i=t.axisType,o=this._names=[];if("category"===i){var a=[];E(e,function(t,e){var i,n=Bo(t);R(t)?(i=D(t)).value=e:i=e,a.push(i),z(n)||null!=n&&!isNaN(n)||(n=""),o.push(n+"")}),e=a}var n={category:"ordinal",time:"time"}[i]||"number";(this._data=new Wf([{name:"value",type:n}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});b(BD.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),Fh);function VD(t,e,i,n){Eg.call(this,t,e,i),this.type=n||"value",this.model=null}var GD=hc.extend({type:"timeline"});VD.prototype={constructor:VD,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},w(VD,Eg);var FD=A,WD=E,HD=Math.PI;function ZD(t,e,i,n,o,a){var r=e.get("color");o?(o.setColor(r),i.add(o),a&&a.onUpdate(o)):((o=mg(t.get("symbol"),-1,-1,2,2,r)).setStyle("strokeNoScale",!0),i.add(o),a&&a.onCreate(o));var s=e.getItemStyle(["color","symbol","symbolSize"]);o.setStyle(s),n=m({rectHover:!0,z2:100},n,!0);var l=t.get("symbolSize");(l=l instanceof Array?l.slice():[+l,+l])[0]/=2,l[1]/=2,n.scale=l;var u=t.get("symbolOffset");if(u){var h=n.position=n.position||[0,0];h[0]+=Pl(u[0],l[0]),h[1]+=Pl(u[1],l[1])}var c=t.get("symbolRotate");return n.rotation=(c||0)*Math.PI/180||0,o.attr(n),o.updateTransform(),o}function UD(t,e,i,n,o){if(!t.dragging){var a=n.getModel("checkpointStyle"),r=i.dataToCoord(n.getData().get(["value"],e));o||!a.get("animation",!0)?t.attr({position:[r,0]}):(t.stopAnimation(!0),t.animateTo({position:[r,0]},a.get("animationDuration",!0),a.get("animationEasing",!0)))}}GD.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(e,t,i,n){if(this.model=e,this.api=i,this.ecModel=t,this.group.removeAll(),e.get("show",!0)){var o=this._layout(e,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,e);e.formatTooltip=function(t){return eu(s.scale.getLabel(t))},WD(["AxisLine","AxisTick","Control","CurrentPointer"],function(t){this["_render"+t](o,a,s,e)},this),this._renderAxisLabel(o,r,s,e),this._position(o,e)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=function(t,e){return vu(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()},t.get("padding"))}(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2n[1]&&(i=n[1]),i"),o&&(a+=YD(o),null!=i&&(a+=" : ")),null!=i&&(a+=YD(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});b(qD,Fh),qD.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var KD=_;function $D(t,e,i,n,o,a){var r=[],s=lp(e,n)?e.getCalculationInfo("stackResultDimension"):n,l=oC(e,s,t),u=e.indicesOfNearest(s,l)[0];r[o]=e.get(i,u),r[a]=e.get(n,u);var h=El(e.get(n,u));return 0<=(h=Math.min(h,20))&&(r[a]=+r[a].toFixed(h)),r}var JD=T,QD={min:JD($D,"min"),max:JD($D,"max"),average:JD($D,"average")};function tC(t,e){var i=t.getData(),n=t.coordinateSystem;if(e&&!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!k(e.coord)&&n){var o=n.dimensions,a=eC(e,i,n,t);if((e=D(e)).type&&QD[e.type]&&a.baseAxis&&a.valueAxis){var r=KD(o,a.baseAxis.dim),s=KD(o,a.valueAxis.dim);e.coord=QD[e.type](i,a.baseDataDim,a.valueDataDim,r,s),e.value=e.coord[s]}else{for(var l=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],u=0;u<2;u++)QD[l[u]]&&(l[u]=oC(i,i.mapDimension(o[u]),l[u]));e.coord=l}}return e}function eC(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(function(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;oi[o],f=[-h.x,-h.y];e||(f[n]=s.position[n]);var p=[0,0],g=[-c.x,-c.y],m=H(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?g[n]+=i[o]-c[o]:p[n]+=c[o]+m);g[1-n]+=h[a]/2-c[a]/2,s.attr("position",f),l.attr("position",p),u.attr("position",g);var v={x:0,y:0};if(v[o]=d?i[o]:h[o],v[a]=Math.max(h[a],c[a]),v[r]=Math.min(0,c[r]+g[1-n]),l.__rectSize=i[o],d){var y={x:0,y:0};y[o]=Math.max(i[o]-c[o]-m,0),y[a]=v[a],l.setClipPath(new is({shape:y})),l.__rectSize=y[o]}else u.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var x=this._getPageInfo(t);return null!=x.pageIndex&&sl(s,{position:x.contentPosition},d&&t),this._updatePageInfoView(t,x),v},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(n,o){var a=this._controllerGroup;E(["pagePrev","pageNext"],function(t){var e=null!=o[t+"DataIndex"],i=a.childOfName(t);i&&(i.setStyle("fill",e?n.get("pageIconColor",!0):n.get("pageIconInactiveColor",!0)),i.cursor=e?"pointer":"default")});var t=a.childOfName("pageText"),e=n.get("pageFormatter"),i=o.pageIndex,r=null!=i?i+1:0,s=o.pageCount;t&&e&&t.setStyle("text",z(e)?e.replace("{current}",r).replace("{total}",s):e({current:r,total:s}))},_getPageInfo:function(t){var e=t.get("scrollDataIndex",!0),i=this.getContentGroup(),n=this._containerGroup.__rectSize,o=t.getOrient().index,a=NC[o],r=OC[o],s=this._findTargetItemIndex(e),l=i.children(),u=l[s],h=l.length,c=h?1:0,d={contentPosition:i.position.slice(),pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return d;var f=y(u);d.contentPosition[o]=-f.s;for(var p=s+1,g=f,m=f,v=null;p<=h;++p)(!(v=y(l[p]))&&m.e>g.s+n||v&&!x(v,g.s))&&(g=m.i>g.i?m:v)&&(null==d.pageNextDataIndex&&(d.pageNextDataIndex=g.i),++d.pageCount),m=v;for(p=s-1,g=f,m=f,v=null;-1<=p;--p)(v=y(l[p]))&&x(m,v.s)||!(g.i=e&&t.s<=e+n}},_findTargetItemIndex:function(n){var o,a,t=this.getContentGroup();return this._showController&&t.eachChild(function(t,e){var i=t.__legendDataIndex;null==a&&null!=i&&(a=e),i===n&&(o=e)}),null!=o?o:a}});gf("legendScroll","legendscroll",function(t,e){var i=t.scrollDataIndex;null!=i&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(i)})});WA.extend({type:"dataZoom.slider",layoutMode:"box",defaultOption:{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#2f4554",width:.5,opacity:.3},areaStyle:{color:"rgba(47,69,84,0.3)",opacity:.3}},borderColor:"#ddd",fillerColor:"rgba(167,183,204,0.4)",handleIcon:"M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z",handleSize:"100%",handleStyle:{color:"#a7b7cc"},labelPrecision:null,labelFormatter:null,showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#333"}}});var zC=is,RC=kl,BC=Ol,VC=A,GC=E,FC="horizontal",WC="vertical",HC=["line","bar","candlestick","scatter"],ZC=UA.extend({type:"dataZoom.slider",init:function(t,e){this._displayables={},this._orient,this._range,this._handleEnds,this._size,this._handleWidth,this._handleHeight,this._location,this._dragging,this._dataShadowInfo,this.api=e},render:function(t,e,i,n){ZC.superApply(this,"render",arguments),Tc(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),!1!==this.dataZoomModel.get("show")?(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),this._updateView()):this.group.removeAll()},remove:function(){ZC.superApply(this,"remove",arguments),Ac(this,"_dispatchZoomAction")},dispose:function(){ZC.superApply(this,"dispose",arguments),Ac(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new Ii;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},_resetLocation:function(){var t=this.dataZoomModel,e=this.api,i=this._findCoordRect(),n={width:e.getWidth(),height:e.getHeight()},o=this._orient===FC?{right:n.width-i.x-i.width,top:n.height-30-7,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},a=_u(t.option);E(["right","top","width","height"],function(t){"ph"===a[t]&&(a[t]=o[t])});var r=vu(a,n,t.padding);this._location={x:r.x,y:r.y},this._size=[r.width,r.height],this._orient===WC&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),o=n&&n.get("inverse"),a=this._displayables.barGroup,r=(this._dataShadowInfo||{}).otherAxisInverse;a.attr(i!==FC||o?i===FC&&o?{scale:r?[-1,1]:[-1,-1]}:i!==WC||o?{scale:r?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:r?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:r?[1,1]:[1,-1]});var s=t.getBoundingRect([a]);t.attr("position",[e.x-s.x,e.y-s.y])},_getViewExtent:function(){return[0,this._size[0]]},_renderBackground:function(){var t=this.dataZoomModel,e=this._size,i=this._displayables.barGroup;i.add(new zC({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40})),i.add(new zC({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:A(this._onClickPanelClick,this)}))},_renderDataShadow:function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(t){var e=this._size,i=t.series,n=i.getRawData(),o=i.getShadowDim?i.getShadowDim():t.otherDim;if(null!=o){var a=n.getDataExtent(o),r=.3*(a[1]-a[0]);a=[a[0]-r,a[1]+r];var s,l=[0,e[1]],u=[0,e[0]],h=[[e[0],0],[0,0]],c=[],d=u[1]/(n.count()-1),f=0,p=Math.round(n.count()/e[0]);n.each([o],function(t,e){if(0e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var i;if(GC(this.getTargetCoordInfo(),function(t){if(!i&&t.length){var e=t[0].model.coordinateSystem;i=e.getRect&&e.getRect()}}),!i){var t=this.api.getWidth(),e=this.api.getHeight();i={x:.2*t,y:.2*e,width:.6*t,height:.6*e}}return i}});function UC(t){return"vertical"===t?"ns-resize":"ew-resize"}WA.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var XC="\0_ec_dataZoom_roams";function YC(t,n){var e=qC(t),o=n.dataZoomId,a=n.coordId;E(e,function(t,e){var i=t.dataZoomInfos;i[o]&&_(n.allCoordIds,a)<0&&(delete i[o],t.count--)}),KC(e);var i=e[a];i||((i=e[a]={coordId:a,dataZoomInfos:{},count:0}).controller=function(t,r){var e=new Ly(t.getZr());return E(["pan","zoom","scrollMove"],function(a){e.on(a,function(n){var o=[];E(r.dataZoomInfos,function(t){if(n.isAvailableBehavior(t.dataZoomModel.option)){var e=(t.getRange||{})[a],i=e&&e(r.controller,n);!t.dataZoomModel.get("disabled",!0)&&i&&o.push({dataZoomId:t.dataZoomId,start:i[0],end:i[1]})}}),o.length&&r.dispatchAction(o)})}),e}(t,i),i.dispatchAction=T($C,t)),i.dataZoomInfos[o]||i.count++,i.dataZoomInfos[o]=n;var r=function(t){var n,o={type_true:2,type_move:1,type_false:0,type_undefined:-1},a=!0;return E(t,function(t){var e=t.dataZoomModel,i=!e.get("disabled",!0)&&(!e.get("zoomLock",!0)||"move");o["type_"+n]"],k(t)&&(t=t.slice(),n=!0),o=e?t:n?[u(t[0]),u(t[1])]:u(t),z(l)?l.replace("{value}",n?o[0]:o).replace("{value2}",n?o[1]:o):O(l)?n?l(t[0],t[1]):l(t):n?t[0]===s[0]?i[0]+" "+o[1]:t[1]===s[1]?i[1]+" "+o[0]:o[0]+" - "+o[1]:o;function u(t){return t===s[0]?"min":t===s[1]?"max":(+t).toFixed(Math.min(r,20))}},resetExtent:function(){var t=this.option,e=pL([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,o=n.length-1;0<=o;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){var t=this.ecModel,e=this.option,i={inRange:e.inRange,outOfRange:e.outOfRange},n=e.target||(e.target={}),o=e.controller||(e.controller={});m(n,i),m(o,i);var u=this.isCategory();function a(n){dL(e.color)&&!n.inRange&&(n.inRange={color:e.color.slice().reverse()}),n.inRange=n.inRange||{color:t.get("gradientColor")},fL(this.stateList,function(t){var e=n[t];if(z(e)){var i=lL(e,"active",u);i?(n[t]={},n[t][e]=i):delete n[t]}},this)}a.call(this,n),a.call(this,o),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},fL(n,function(t,e){if(a_.isValidType(e)){var i=lL(e,"inactive",u);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,n,"inRange","outOfRange"),function(a){var r=(a.inRange||{}).symbol||(a.outOfRange||{}).symbol,s=(a.inRange||{}).symbolSize||(a.outOfRange||{}).symbolSize,l=this.get("inactiveColor");fL(this.stateList,function(t){var e=this.itemSize,i=a[t];null==(i=i||(a[t]={color:u?l:[l]})).symbol&&(i.symbol=r&&D(r)||(u?"roundRect":["roundRect"])),null==i.symbolSize&&(i.symbolSize=s&&D(s)||(u?e[0]:[e[0],e[0]])),i.symbol=hL(i.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var n=i.symbolSize;if(null!=n){var o=-1/0;cL(n,function(t){oe[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){mL.prototype.completeVisualOption.apply(this,arguments),E(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=Ol((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(n){var o=[];return this.eachTargetSeries(function(t){var i=[],e=t.getData();e.each(this.getDataDimension(e),function(t,e){n[0]<=t&&t<=n[1]&&i.push(e)},this),o.push({seriesId:t.id,dataIndex:i})},this),o},getVisualMeta:function(i){var t=xL(this,"outOfRange",this.getExtent()),e=xL(this,"inRange",this.option.range.slice()),n=[];function o(t,e){n.push({value:t,color:i(t,e)})}for(var a=0,r=0,s=e.length,l=t.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new Ii("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(n,o){if(this._useHandle){var a=this._shapes,r=this.visualMapModel,s=a.handleThumbs,l=a.handleLabels;ML([0,1],function(t){var e=s[t];e.setStyle("fill",o.handlesColor[t]),e.position[1]=n[t];var i=hl(a.handleLabelPoints[t],ul(e,this.group));l[t].setStyle({x:i[0],y:i[1],text:r.formatValueText(this._dataInterval[t]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===t?"bottom":"top":"left",a.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=SL(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",function(t,e,i,n){return t?[[0,-IL(e,TL(i,0))],[6,0],[0,IL(e,TL(n-i,0))]]:[[0,0],[5,-5],[5,5]]}(!!i,n,l,r[1]));var c=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0});h.setStyle("fill",c);var d=hl(u.indicatorLabelPoint,ul(h,this.group)),f=u.indicatorLabel;f.attr("invisible",!1);var p=this._applyTransform("left",u.barGroup),g=this._orient;f.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===g?p:"middle",textAlign:"horizontal"===g?"center":p,x:d[0],y:d[1]})}},_enableHoverLinkToSeries:function(){var n=this;this._shapes.barGroup.on("mousemove",function(t){if(n._hovering=!0,!n._dragging){var e=n.visualMapModel.itemSize,i=n._applyTransform([t.offsetX,t.offsetY],n._shapes.barGroup,!0,!0);i[1]=IL(TL(0,i[1]),e[1]),n._doHoverLinkToSeries(i[1],0<=i[0]&&i[0]<=e[0])}}).on("mouseout",function(){n._hovering=!1,n._dragging||n._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=IL(TL(o[0],t),o[1]);var r=function(t,e,i){var n=6,o=t.get("hoverLinkDataSize");o&&(n=SL(o,e,i,!0)/2);return n}(i,a,o),s=[t-r,t+r],l=SL(t,o,a,!0),u=[SL(s[0],o,a,!0),SL(s[1],o,a,!0)];s[0] ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||CL(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=function(t,e){var i={},n={};return o(t||[],i),o(e||[],n,i),[a(i),a(n)];function o(t,e,i){for(var n=0,o=t.length;ni&&n([i,e[0]],"outOfRange"),n(e.slice()),i=e[1])},this),{stops:a,outerColors:r}}function n(t,e){var i=s.getRepresentValue({interval:t});e=e||s.getValueState(i);var n=o(i,e);t[0]===-1/0?r[0]=n:t[1]===1/0?r[1]=n:a.push({value:t[0],color:n},{value:t[1],color:n})}}}),PL={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i);var r=0;t.minOpen&&e.push({index:r++,interval:[-1/0,n[0]],close:[0,0]});for(var s=n[0],l=r+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};function NL(t,e){var i=t.inverse;("vertical"===t.orient?!i:i)&&e.reverse()}_L.extend({type:"visualMap.piecewise",doRender:function(){var a=this.group;a.removeAll();var r=this.visualMapModel,s=r.get("textGap"),t=r.textStyleModel,l=t.getFont(),u=t.getTextColor(),h=this._getItemAlign(),c=r.itemSize,e=this._getViewData(),i=e.endsText,d=W(r.get("showLabel",!0),!i);i&&this._renderEndsText(a,i[0],c,d,h),E(e.viewPieceList,function(t){var e=t.piece,i=new Ii;i.onclick=A(this._onItemClick,this,e),this._enableHoverLink(i,t.indexInModelPieceList);var n=r.getRepresentValue(e);if(this._createItemSymbol(i,n,[0,0,c[0],c[1]]),d){var o=this.visualMapModel.getValueState(n);i.add(new Fr({style:{x:"right"===h?-s:c[0]+s,y:c[1]/2,text:e.text,textVerticalAlign:"middle",textAlign:h,textFont:l,textFill:u,opacity:"outOfRange"===o?.5:1}}))}a.add(i)},this),i&&this._renderEndsText(a,i[1],c,d,h),mu(r.get("orient"),a,r.get("itemGap")),this.renderBackground(a),this.positionGroup(a)},_enableHoverLink:function(t,i){function e(t){var e=this.visualMapModel;e.option.hoverLink&&this.api.dispatchAction({type:t,batch:bL(e.findTargetDataIndices(i),e)})}t.on("mouseover",A(e,this,"highlight")).on("mouseout",A(e,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return wL(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new Ii,r=this.visualMapModel.textStyleModel;a.add(new Fr({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=N(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i=i&&i.slice().reverse(),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(mg(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,i=e.option,n=D(i.selected),o=e.getSelectedMapKey(t);"single"===i.selectedMode?(n[o]=!0,E(n,function(t,e){n[e]=e===o})):n[o]=!n[o],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:n})}});ff(iL);var OL,EL="urn:schemas-microsoft-com:vml",zL="undefined"==typeof window?null:window,RL=!1,BL=zL&&zL.document;function VL(t){return OL(t)}if(BL&&!v.canvasSupported)try{BL.namespaces.zrvml||BL.namespaces.add("zrvml",EL),OL=function(t){return BL.createElement("')}}catch(t){OL=function(t){return BL.createElement("<"+t+' xmlns="'+EL+'" class="zrvml">')}}var GL,FL=ir.CMD,WL=Math.round,HL=Math.sqrt,ZL=Math.abs,UL=Math.cos,XL=Math.sin,YL=Math.max;if(!v.canvasSupported){var jL=",",qL="progid:DXImageTransform.Microsoft",KL=21600,$L=KL/2,JL=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=KL+","+KL,t.coordorigin="0,0"},QL=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},tk=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},ek=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},ik=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},nk=Hn,ok=function(t,e,i){var n=Re(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=QL(n[0],n[1],n[2]),t.opacity=i*n[3])},ak=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof ss&&ek(t,a),a=a||VL(e),o?function(t,e,i){var n,o,a=e.fill;if(null!=a)if(a instanceof ss){var r,s=0,l=[0,0],u=0,h=1,c=i.getBoundingRect(),d=c.width,f=c.height;if("linear"===a.type){r="gradient";var p=i.transform,g=[a.x*d,a.y*f],m=[a.x2*d,a.y2*f];p&&(bt(g,g,p),bt(m,m,p));var v=m[0]-g[0],y=m[1]-g[1];(s=180*Math.atan2(v,y)/Math.PI)<0&&(s+=360),s<1e-6&&(s=0)}else{r="gradientradial";g=[a.x*d,a.y*f],p=i.transform;var x=i.scale,_=d,w=f;l=[(g[0]-c.x)/_,(g[1]-c.y)/w],p&&bt(g,g,p),_/=x[0]*KL,w/=x[1]*KL;var b=YL(_,w);u=0/b,h=2*a.r/b-u}var S=a.colorStops.slice();S.sort(function(t,e){return t.offset-e.offset});for(var M=S.length,I=[],T=[],A=0;A=c&&d<=i+1){for(var n=[],o=0;o=c&&d<=o+1)return jk(h,e.components,u,l);p[t]=e}else p[t]=void 0}var s;f++}for(;f<=e;){var r=a();if(r)return r}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1 { + Object.defineProperty(ctx, style, { + set: value => { + if (style !== 'fillStyle' && style !== 'strokeStyle' + || value !== 'none' && value !== null + ) { + ctx['set' + style.charAt(0).toUpperCase() + style.slice(1)](value); + } + } + }); + }); + + ctx.createRadialGradient = () => { + return ctx.createCircularGradient(arguments); + }; + } + + _initEvent() { + this.event = {}; + const eventNames = [{ + wxName: 'touchStart', + ecName: 'mousedown' + }, { + wxName: 'touchMove', + ecName: 'mousemove' + }, { + wxName: 'touchEnd', + ecName: 'mouseup' + }, { + wxName: 'touchEnd', + ecName: 'click' + }]; + + eventNames.forEach(name => { + this.event[name.wxName] = e => { + const touch = e.touches[0]; + this.chart.getZr().handler.dispatch(name.ecName, { + zrX: name.wxName === 'tap' ? touch.clientX : touch.x, + zrY: name.wxName === 'tap' ? touch.clientY : touch.y + }); + }; + }); + } + + set width(w) { + if (this.canvasNode) this.canvasNode.width = w + } + set height(h) { + if (this.canvasNode) this.canvasNode.height = h + } + + get width() { + if (this.canvasNode) + return this.canvasNode.width + return 0 + } + get height() { + if (this.canvasNode) + return this.canvasNode.height + return 0 + } +} diff --git a/images/0181008111258.png b/images/0181008111258.png new file mode 100644 index 0000000..bfc8f30 Binary files /dev/null and b/images/0181008111258.png differ diff --git a/images/1.png b/images/1.png new file mode 100644 index 0000000..6076e49 Binary files /dev/null and b/images/1.png differ diff --git a/images/17169030f9c6767c9d17a78db1332f1.png b/images/17169030f9c6767c9d17a78db1332f1.png new file mode 100644 index 0000000..6b14af1 Binary files /dev/null and b/images/17169030f9c6767c9d17a78db1332f1.png differ diff --git a/images/2.png b/images/2.png new file mode 100644 index 0000000..bc29bbc Binary files /dev/null and b/images/2.png differ diff --git a/images/3.png b/images/3.png new file mode 100644 index 0000000..b01891f Binary files /dev/null and b/images/3.png differ diff --git a/images/5-121204193R0-50.gif b/images/5-121204193R0-50.gif new file mode 100644 index 0000000..915c198 Binary files /dev/null and b/images/5-121204193R0-50.gif differ diff --git a/images/add_to_min_program_arrow.png b/images/add_to_min_program_arrow.png new file mode 100644 index 0000000..978ee42 Binary files /dev/null and b/images/add_to_min_program_arrow.png differ diff --git a/images/add_to_min_program_close.png b/images/add_to_min_program_close.png new file mode 100644 index 0000000..fc1de9f Binary files /dev/null and b/images/add_to_min_program_close.png differ diff --git a/images/add_to_min_program_more.png b/images/add_to_min_program_more.png new file mode 100644 index 0000000..3dafcb4 Binary files /dev/null and b/images/add_to_min_program_more.png differ diff --git a/images/avds.png b/images/avds.png new file mode 100644 index 0000000..ac6287c Binary files /dev/null and b/images/avds.png differ diff --git a/images/back.png b/images/back.png new file mode 100644 index 0000000..e41b74e Binary files /dev/null and b/images/back.png differ diff --git a/images/bk.png b/images/bk.png new file mode 100644 index 0000000..d65325b Binary files /dev/null and b/images/bk.png differ diff --git a/images/closeLogin.png b/images/closeLogin.png new file mode 100644 index 0000000..b8a2679 Binary files /dev/null and b/images/closeLogin.png differ diff --git a/images/default-avatar.jpg b/images/default-avatar.jpg new file mode 100644 index 0000000..599aa5d Binary files /dev/null and b/images/default-avatar.jpg differ diff --git a/images/deng.png b/images/deng.png new file mode 100644 index 0000000..4c939d8 Binary files /dev/null and b/images/deng.png differ diff --git a/images/dianzan.png b/images/dianzan.png new file mode 100644 index 0000000..b5748de Binary files /dev/null and b/images/dianzan.png differ diff --git a/images/ditu.png b/images/ditu.png new file mode 100644 index 0000000..10033e3 Binary files /dev/null and b/images/ditu.png differ diff --git a/images/fabulous.png b/images/fabulous.png new file mode 100644 index 0000000..564bde1 Binary files /dev/null and b/images/fabulous.png differ diff --git a/images/fan.png b/images/fan.png new file mode 100644 index 0000000..c254fa2 Binary files /dev/null and b/images/fan.png differ diff --git a/images/guan.png b/images/guan.png new file mode 100644 index 0000000..e2584b6 Binary files /dev/null and b/images/guan.png differ diff --git a/images/guane.png b/images/guane.png new file mode 100644 index 0000000..2b33ad3 Binary files /dev/null and b/images/guane.png differ diff --git a/images/guasn.png b/images/guasn.png new file mode 100644 index 0000000..b614349 Binary files /dev/null and b/images/guasn.png differ diff --git a/images/guji.png b/images/guji.png new file mode 100644 index 0000000..e7b3e55 Binary files /dev/null and b/images/guji.png differ diff --git a/images/gzh_btn.png b/images/gzh_btn.png new file mode 100644 index 0000000..970792d Binary files /dev/null and b/images/gzh_btn.png differ diff --git a/images/handle_calendar.png b/images/handle_calendar.png new file mode 100644 index 0000000..e56bb3d Binary files /dev/null and b/images/handle_calendar.png differ diff --git a/images/icon-index-empty.png b/images/icon-index-empty.png new file mode 100644 index 0000000..63782b8 Binary files /dev/null and b/images/icon-index-empty.png differ diff --git a/images/link_more.png b/images/link_more.png new file mode 100644 index 0000000..5910c81 Binary files /dev/null and b/images/link_more.png differ diff --git a/images/moah.png b/images/moah.png new file mode 100644 index 0000000..71f69e3 Binary files /dev/null and b/images/moah.png differ diff --git a/images/my_icon.png b/images/my_icon.png new file mode 100644 index 0000000..ab0a9bf Binary files /dev/null and b/images/my_icon.png differ diff --git a/images/no_content.png b/images/no_content.png new file mode 100644 index 0000000..3520e86 Binary files /dev/null and b/images/no_content.png differ diff --git a/images/nofabulous.png b/images/nofabulous.png new file mode 100644 index 0000000..87b7bb2 Binary files /dev/null and b/images/nofabulous.png differ diff --git a/images/qi_on.png b/images/qi_on.png new file mode 100644 index 0000000..9fe31a2 Binary files /dev/null and b/images/qi_on.png differ diff --git a/images/ren.png b/images/ren.png new file mode 100644 index 0000000..7bd0ab7 Binary files /dev/null and b/images/ren.png differ diff --git a/images/sacsa.png b/images/sacsa.png new file mode 100644 index 0000000..9358557 Binary files /dev/null and b/images/sacsa.png differ diff --git a/images/saoua.png b/images/saoua.png new file mode 100644 index 0000000..4631d95 Binary files /dev/null and b/images/saoua.png differ diff --git a/images/sign_bg.png b/images/sign_bg.png new file mode 100644 index 0000000..6e0e6f9 Binary files /dev/null and b/images/sign_bg.png differ diff --git a/images/snji.png b/images/snji.png new file mode 100644 index 0000000..a6e5793 Binary files /dev/null and b/images/snji.png differ diff --git a/images/suo.png b/images/suo.png new file mode 100644 index 0000000..908fc2b Binary files /dev/null and b/images/suo.png differ diff --git a/images/t1.png b/images/t1.png new file mode 100644 index 0000000..1a22d7b Binary files /dev/null and b/images/t1.png differ diff --git a/images/t2.png b/images/t2.png new file mode 100644 index 0000000..992c7c5 Binary files /dev/null and b/images/t2.png differ diff --git a/images/t3.png b/images/t3.png new file mode 100644 index 0000000..aa4e6fc Binary files /dev/null and b/images/t3.png differ diff --git a/images/tabBar/cate.png b/images/tabBar/cate.png new file mode 100644 index 0000000..8769edb Binary files /dev/null and b/images/tabBar/cate.png differ diff --git a/images/tabBar/cate_on.png b/images/tabBar/cate_on.png new file mode 100644 index 0000000..6ab8e91 Binary files /dev/null and b/images/tabBar/cate_on.png differ diff --git a/images/tabBar/home.png b/images/tabBar/home.png new file mode 100644 index 0000000..4c0ce5a Binary files /dev/null and b/images/tabBar/home.png differ diff --git a/images/tabBar/home_on.png b/images/tabBar/home_on.png new file mode 100644 index 0000000..79841af Binary files /dev/null and b/images/tabBar/home_on.png differ diff --git a/images/tabBar/user.png b/images/tabBar/user.png new file mode 100644 index 0000000..dcb17a7 Binary files /dev/null and b/images/tabBar/user.png differ diff --git a/images/tabBar/user_on.png b/images/tabBar/user_on.png new file mode 100644 index 0000000..eb81f44 Binary files /dev/null and b/images/tabBar/user_on.png differ diff --git a/images/tc_bg.jpg b/images/tc_bg.jpg new file mode 100644 index 0000000..b40280b Binary files /dev/null and b/images/tc_bg.jpg differ diff --git a/images/tian.png b/images/tian.png new file mode 100644 index 0000000..9e8b8b4 Binary files /dev/null and b/images/tian.png differ diff --git a/images/ty.png b/images/ty.png new file mode 100644 index 0000000..0a8289c Binary files /dev/null and b/images/ty.png differ diff --git a/images/user-bg.png b/images/user-bg.png new file mode 100644 index 0000000..f4a71d4 Binary files /dev/null and b/images/user-bg.png differ diff --git a/images/userHelp1.png b/images/userHelp1.png new file mode 100644 index 0000000..2244248 Binary files /dev/null and b/images/userHelp1.png differ diff --git a/images/userPer.png b/images/userPer.png new file mode 100644 index 0000000..bc7fecf Binary files /dev/null and b/images/userPer.png differ diff --git a/images/userServer.png b/images/userServer.png new file mode 100644 index 0000000..292909c Binary files /dev/null and b/images/userServer.png differ diff --git a/images/userXun.png b/images/userXun.png new file mode 100644 index 0000000..a59d252 Binary files /dev/null and b/images/userXun.png differ diff --git a/images/userhelp.png b/images/userhelp.png new file mode 100644 index 0000000..edd42e2 Binary files /dev/null and b/images/userhelp.png differ diff --git a/images/we.png b/images/we.png new file mode 100644 index 0000000..5862193 Binary files /dev/null and b/images/we.png differ diff --git a/images/wei.png b/images/wei.png new file mode 100644 index 0000000..7acb715 Binary files /dev/null and b/images/wei.png differ diff --git a/images/wen.png b/images/wen.png new file mode 100644 index 0000000..46544ed Binary files /dev/null and b/images/wen.png differ diff --git a/images/white.png b/images/white.png new file mode 100644 index 0000000..9d08d05 Binary files /dev/null and b/images/white.png differ diff --git a/images/xai.png b/images/xai.png new file mode 100644 index 0000000..1f80a80 Binary files /dev/null and b/images/xai.png differ diff --git a/images/xasa.png b/images/xasa.png new file mode 100644 index 0000000..b0b4b0f Binary files /dev/null and b/images/xasa.png differ diff --git a/images/xia.png b/images/xia.png new file mode 100644 index 0000000..0f5c619 Binary files /dev/null and b/images/xia.png differ diff --git a/images/xiang.png b/images/xiang.png new file mode 100644 index 0000000..811c2bc Binary files /dev/null and b/images/xiang.png differ diff --git a/images/xiea.png b/images/xiea.png new file mode 100644 index 0000000..3a20eca Binary files /dev/null and b/images/xiea.png differ diff --git a/images/xinxin.png b/images/xinxin.png new file mode 100644 index 0000000..e0ca812 Binary files /dev/null and b/images/xinxin.png differ diff --git a/images/xunzhang.png b/images/xunzhang.png new file mode 100644 index 0000000..562f89e Binary files /dev/null and b/images/xunzhang.png differ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c0f8ab2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "科大工会健步走小程序", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/packageA/user/editProfile.js b/packageA/user/editProfile.js new file mode 100644 index 0000000..7c836db --- /dev/null +++ b/packageA/user/editProfile.js @@ -0,0 +1,147 @@ +const App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + userInfo: {}, + UserCategory:[], + category_id:0, + category_name:'未选择队伍', + isLogin: false, + show:0 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.getUserDetail(); + this.getUserCategory(); + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + let _this = this; + _this.setData({ + isLogin: App.checkIsLogin() + }); + }, + + /** + * 获取当前用户信息 + */ + getUserDetail() { + let _this = this; + App._post_form('user.index/detail', { + user_id: wx.getStorageSync('user_id') + }, result => { + _this.setData(result.data); + _this.setData({ + category_id:result.data.userInfo.category_id + }); + }); + }, + getUserCategory(){ + let _this = this; + App._post_form('user.index/getUserCategory', {}, result => { + _this.setData(result.data); + let UserCategoryArr = result.data.UserCategory; + for(let i=0; i { + _this.setData({ + show:!_this.data.show + }); + let status = result.data.status, msg; + + switch(status) { + case 0: + msg = '修改失败'; + break; + case 1: + msg = '修改成功'; + break; + default: + msg = '修改失败'; + } + + wx.showToast({ + title: msg, + icon: 'none', + duration: 2000 + }) + + _this.setData({ + category_name:result.data.category_name + }); + }); + + }, + + /** 标记保存 */ + saveBio(){ + + }, + + /** + * 菜单列表导航跳转 + */ + onTargetMenus(e) { + let _this = this; + if (!_this.onCheckLogin()) { + return false; + } + wx.navigateTo({ + url: '/' + e.currentTarget.dataset.url + }) + }, + /** + * 验证是否已登录 + */ + onCheckLogin() { + let _this = this; + if (!_this.data.isLogin) { + App.showError('很抱歉,您还没有登录'); + return false; + } + return true; + }, + + +}) \ No newline at end of file diff --git a/packageA/user/editProfile.json b/packageA/user/editProfile.json new file mode 100644 index 0000000..c9cf41c --- /dev/null +++ b/packageA/user/editProfile.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "编辑个人资料", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle":"black" +} \ No newline at end of file diff --git a/packageA/user/editProfile.wxml b/packageA/user/editProfile.wxml new file mode 100644 index 0000000..687a23a --- /dev/null +++ b/packageA/user/editProfile.wxml @@ -0,0 +1,87 @@ + + + + + 姓名 + + + + + + + 手机号 + + + + + + + + + 身份证号 + + + + + + + + + 队伍 + + + {{category_name}} + + + 请选择 + + + + + + + + + + + + + + + + 确定 + + + + + + + diff --git a/packageA/user/editProfile.wxss b/packageA/user/editProfile.wxss new file mode 100644 index 0000000..a05097a --- /dev/null +++ b/packageA/user/editProfile.wxss @@ -0,0 +1,113 @@ +.page-body{padding:0 20rpx;} +.page-section{ + display: inline; + justify-content: center; +} +.page-section .nameBox{ + display: block; + /* justify-content: center; 水平居中 */ +} +.page-section .nameBox .textarea { + width: 100%; /* 设置宽度,避免占满整行 */ + height: 60rpx; + display: flex; +} +.saveEdit{ + + width: 90%; + height: 100rpx; + position: fixed; + bottom: 20rpx; + left: 38rpx; +} + + + +.bao { + width: 100%; + height: 100rpx; + display: flex; + align-items: center; + justify-content: center; + position: fixed; + bottom: 0; + background: linear-gradient(to right,#25ca9f,#2ebcc0); + left: 0; + color: #ffffff; + font-size: 33rpx; +} + + +.isRuleShow{ + display: block; +} +.isRuleHide{ + display: none; +} +.ruleZhezhao{ + height: 100%; + width: 100%; + position: fixed; + background-color:rgba(0, 0, 0, .5); + z-index: 2; + top: 0; + left: 0; +} +.ruleZhezhaoContent{ + padding: 20rpx 0; + width: 80%; + background: #ffffff; + margin: 20% auto; + border-radius: 20rpx; + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; + position: relative; +} +.ruleZhezhaoText{ + width: 80%; + font-size: 30rpx; + color: #856d5f; + display: flex; + flex-direction: row; + align-items: center; + margin: 25rpx 0 25rpx 0; +} +.ruleZhezhaoText text:nth-child(1){ + color: #fff; + font-size: 40rpx; + height: 60rpx; + width: 60rpx; + background: #664a2c; + display: block; + text-align: center; + line-height: 60rpx; + border-radius: 30rpx; + margin-right: 10rpx; +} +.ruleZhezhaoText text:nth-child(2){ + flex-wrap:wrap; + width: 80%; +} +.ruleHide{ + height: 60rpx!important; + width: 60rpx!important; + position: absolute; + top: -20rpx; + right: -20rpx; +} +.rule{ + display: block; + border: 1px solid #fff; + width: 100rpx; + text-align: center; + line-height: 60rpx; + color: #fff; + height: 60rpx; + font-size: 30rpx; + border-radius: 30rpx; + position: absolute; + top: 10%; + right: 5%; +} diff --git a/packageA/user/help.js b/packageA/user/help.js new file mode 100644 index 0000000..e0dab21 --- /dev/null +++ b/packageA/user/help.js @@ -0,0 +1,37 @@ +let App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + list: [], + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + // 获取帮助列表 + this.getHelpList(); + }, + + /** + * 获取帮助列表 + */ + getHelpList: function () { + let _this = this; + App._get('wxapp/help', {}, function (result) { + _this.setData(result.data); + }); + }, + +}) \ No newline at end of file diff --git a/packageA/user/help.json b/packageA/user/help.json new file mode 100644 index 0000000..446d133 --- /dev/null +++ b/packageA/user/help.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "帮助" +} \ No newline at end of file diff --git a/packageA/user/help.wxml b/packageA/user/help.wxml new file mode 100644 index 0000000..ad69b61 --- /dev/null +++ b/packageA/user/help.wxml @@ -0,0 +1,10 @@ + + + + {{item.title}} + + + {{item.content}} + + + \ No newline at end of file diff --git a/packageA/user/help.wxss b/packageA/user/help.wxss new file mode 100644 index 0000000..f733e63 --- /dev/null +++ b/packageA/user/help.wxss @@ -0,0 +1,14 @@ +.help { + border-bottom: 1px solid #f6f6f9; +} + +.help .h4 { + font-size: 32rpx; + color: #333; + margin-bottom: 5px; +} + +.help .p { + font-size: 26rpx; + color: #666; +} \ No newline at end of file diff --git a/packageA/user/myChallenge.js b/packageA/user/myChallenge.js new file mode 100644 index 0000000..e9e2e17 --- /dev/null +++ b/packageA/user/myChallenge.js @@ -0,0 +1,166 @@ +const app = getApp(); + +Page({ + data: { + moretab: 0, + countDownHour: 0, + countDownMinute: 0, + countDownSecond: 0, + // 活动列表 + goodsList: [], + noMore: false, // 没有更多数据 + isLoading: true, // 是否正在加载中 + page: 1, // 当前页码 + step:0, + sign: !0, + activityUserCount:0 + }, + + onLoad: function() { + let _this = this; + // 获取活动列表 + _this.getGoodsList(); + _this.setData({ + step: wx.getStorageSync('step') + }); + }, + + /** + * Api:获取活动列表 + */ + getGoodsList(isPage, pageNum) { + let _this = this; + app._get('goods/listsMy', { + page: pageNum || 1, + user_id: wx.getStorageSync('user_id') + }, result => { + let resList = result.data.list, + dataList = _this.data.goodsList; + console.log('活动列表',resList); + if (isPage == true) { + _this.setData({ + goodsList: dataList.data.concat(resList.data), + isLoading: false, + }); + } else { + _this.setData({ + goodsList: resList.data, + isLoading: false, + }); + } + }); + }, + submitInfotwo: function(t) { + console.log("获取id"); + var a = t.detail.formId; + var user_id = wx.getStorageSync('user_id'); + console.log(a), console.log("获取formid结束"), this.setData({ + formid: a + }), app._get('index/formid', { + user_id: user_id, + formid: this.data.formid + }, function(result) {}); + }, + submitInming: function(t) { + var id = t.currentTarget.dataset.id; + this.submitInfotwo(t), this.challenge(id); + }, + challenge: function(id) { + wx.navigateTo({ + url: "/pages/category/challenge?id=" + id + }); + }, + //签到弹窗显示 + sing: function(e) { + var a = this.data.sign; + var aid = e.target.dataset.aid; + var activityStep = e.target.dataset.step; + this.setData({ + sign: !a, + aid: aid, + activityStep + }); + let _this = this; + app._post_form('goods/getSignCountByUser', { + user_id: wx.getStorageSync('user_id'), + aid: aid + }, result => { + console.log(result.data.data); + this.setData({ + signCount: result.data.data + }); + }); + + }, + //关闭签到弹窗 + guanbilsig: function() { + var a = this.data.sign; + this.setData({ + sign: !a + }); + }, + + submitTeam: function(t) { + var id = t.currentTarget.dataset.id; + this.team(id); + }, + team: function(id) { + wx.navigateTo({ + url: "/pages/category/team?id=" + id + }); + }, + + mySignRecord: function(e){ + var aid = e.target.dataset.aid; + wx.navigateTo({ + url: '/pages/user/sign?aid=' + aid + }) + }, + + //签到保存 + goSign: function() { + let _this = this; + let activityStep = _this.data.activityStep; + let step = wx.getStorageSync('step') + if( step < activityStep ){ + wx.showToast({ + title: '您的步数不达标', + icon: 'none', + duration: 2000 + }) + }else{ + App._post_form('goods/goSign', { + user_id: wx.getStorageSync('user_id'), + step: wx.getStorageSync('step'), + aid: _this.data.aid + }, result => { + console.log(result.data.data); + let mstatus = result.data.result, msg; + switch(mstatus) { + case 0: + msg = '签到失败'; + break; + case 1: + msg = '同步成功'; + break; + case 2: + msg = '同步成功'; + break; + default: + msg = '签到失败'; + } + wx.showToast({ + title: msg, + icon: 'none', + duration: 2000 + }) + }); + } + }, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} + +}); \ No newline at end of file diff --git a/packageA/user/myChallenge.json b/packageA/user/myChallenge.json new file mode 100644 index 0000000..d08864d --- /dev/null +++ b/packageA/user/myChallenge.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "我参加的活动", + "usingComponents": {} +} \ No newline at end of file diff --git a/packageA/user/myChallenge.wxml b/packageA/user/myChallenge.wxml new file mode 100644 index 0000000..4cafd88 --- /dev/null +++ b/packageA/user/myChallenge.wxml @@ -0,0 +1,146 @@ + + + {{setaa.updatetip}} + + + 我的步数 + {{step}} 步 + + + + + + + 报名准备中 + 【{{item.goods_name}}】挑战活动 + + + + {{item.step}} + 步/天 + + + 达标步数 + {{item.goods_sales}}天 + 达标天数 + + + 报名开始时间 : {{item.bmtime}} + + + + + + + + 报名中 + 【{{item.goods_name}}】挑战活动 + + + + {{item.step}} + 步/天 + + + 达标步数 + {{item.goods_sales}}天 + 达标天数 + + 已有{{item.count}}人参加 + 活动开始时间 : {{item.starttime}} + + + +
+ +
+
+
+ + 活动开始时间 : {{item.starttime}} + 参与情况 + +
+ + 进行中 + 【{{item.goods_name}}】挑战活动 + + {{item.count}} 人 + 参加活动 +
+ +
+
+ +
+ + {{item.step}}步/天 + 达标步数 + {{item.goods_sales}}天 + 达标天数 + +
+ + {{item.userInActivity==1?'您已参加该活动':'您未参加该活动'}} + 活动详情 + + + 我的签到记录 + 参与情况 + +
+ + 已结束 + 【{{item.goods_name}}】挑战活动 + + {{item.count}} 位 + 健康步数达人 + + {{item.step}}步/天 + 达标步数 + {{item.goods_sales}}天 + 达标天数 + + + + {{item.userInActivity==1?'您已参加该活动':'您未参加该活动'}} + 活动详情 + + + 我的签到记录 + 参与情况 + + +
+
+ 我也是有底线的~~ + + + + + 暂时没有数据! + + +
+ \ No newline at end of file diff --git a/packageA/user/myChallenge.wxss b/packageA/user/myChallenge.wxss new file mode 100644 index 0000000..d402947 --- /dev/null +++ b/packageA/user/myChallenge.wxss @@ -0,0 +1,559 @@ +page { + width: 100%; + height: 100%; +} + +.main { + width: 100%; + height: 100%; +} + +.head { + width: 100%; + height: 276rpx; + position: relative; +} + +.head_img { + width: 100%; + height: 100%; +} + +.mystep { + width: 100%; + padding: 0 30rpx; + box-sizing: border-box; + position: absolute; + top: 20rpx; + left: 0; + display: flex; + align-items: center; + justify-content: space-between; +} + +.button-hover { + background-color: none; +} + +button { + padding: 0; + margin: 0; + border-radius: 0; + background: none; + line-height: normal; +} + +button::after { + content: none; +} + +.mystep_two { + display: flex; + align-items: center; +} + +.mystep_one { + display: inline-block; +} + +.mystep_one text { + color: #ffffff; + font-size: 30rpx; + line-height: 25rpx; +} + +.mystep_one text:first-child { + margin-right: 16rpx; +} + +.mystep_two image { + width: 40rpx; + height: 40rpx; +} + +.qiyua { +} + +.xaiore { + color: #25ca9f; + font-size: 25rpx; +} + +.mystep_two text { + color: #25ca9f; + font-size: 30rpx; + margin-left: 16rpx; +} + +.lower { + width: 100%; + padding: 25rpx; + box-sizing: border-box; +} + +.more_battle { + width: 100%; + height: 60rpx; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + border-right: 0; +} + +.more_battle text { + width: 33%; + font-size: 30rpx; + color: #25ca9f; + display: flex; + height: 100%; + justify-content: center; + align-items: center; + background: #ffffff; + border: 2rpx solid #25ca9f; +} + +.more_battle .moret { + background: #25ca9f; + color: #fff; + position: relative; +} + +.moret::before { + content: "\200b"; + width: 0; + height: 0; + position: absolute; + bottom: -20rpx; + left: 40%; + border-left: 15rpx solid transparent; + border-right: 15rpx solid transparent; + border-top: 20rpx solid #25ca9f; +} + +.active { + width: 100%; + border-radius: 15rpx; + padding: 20rpx; + box-sizing: border-box; + position: relative; + box-shadow: #999 0px 0px 5px; + overflow: hidden; + margin-top: 35rpx; +} + +.textqiyu { + color: #121212; + font-size: 25rpx; +} + +.active_one { + width: 100%; + display: flex; + justify-content: space-between; +} + +.active_one_left { + display: flex; + justify-content: space-between; + flex-direction: column; + margin-top: 40rpx; +} + +.active_one_tio_text { +} + +.paihang { + width: 100%; + padding: 25rpx; + box-sizing: border-box; +} + +.paihang_one { + width: 100%; + height: 100rpx; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 15rpx; + box-shadow: #e2d9d9 0px 0px 5px; + border-radius: 15rpx; + padding: 0 20rpx; + box-sizing: border-box; +} + +.kuai { + width: 45rpx; + height: 45rpx; + border-radius: 10rpx; + background: #ef4e4e; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-size: 25rpx; +} + +.paihang_two { + display: flex; + width: 40%; + background: #fff; + align-items: center; + margin-right: auto; + margin-left: 40rpx; +} + +.paihang_two image { + width: 70rpx; + border-radius: 10rpx; + height: 70rpx; + margin-right: 20rpx; +} + +.paihang_two text { + font-size: 28rpx; + color: #999; +} + +.paihang_tre { + display: inline-block; +} + +.paihang_tre text { + font-size: 22rpx; + color: #25ca9f; +} + +.paihang_tre text:first-child { + font-size: 35rpx; + color: #121212; +} + +.active_one_tio_text text { + color: #666666; + font-size: 23rpx; + line-height: 20rpx; +} + +.active_one_tio_text .textnum { + color: #25ca9f; +} + +.attend { + color: #999999; + font-size: 22rpx; +} + +.numbhf { + color: #25ca9f; + font-size: 65rpx; +} + +.active_one_right { + display: flex; + flex-direction: column; + align-items: center; + height: 322rpx; + justify-content: space-between; +} + +.dong { + width: 330rpx; + height: 220rpx; +} + +.daoji { + color: #666666; + font-size: 23rpx; +} + +.baomica { + background: linear-gradient(#25ca9f,#2ebcc0); + width: 257rpx; + height: 73rpx; + border-radius: 50rpx; + display: flex; + justify-content: center; + align-items: center; + color: #ffffff; + font-size: 34rpx; +} + +.enlist,.enlist_two,.enlist_tr { + width: 160rpx; + display: flex; + align-items: center; + height: 60rpx; + justify-content: center; + background: #48c301; + color: #fff; + font-size: 25rpx; + position: absolute; + top: 0; + right: 0; +} + +.enlist_tr { + background: #ff6767; +} + +.enlist_two { + background: #ffb20f; +} + +.jinxifn { + width: 100%; + display: flex; + align-items: center; + justify-content:center; + flex-direction: column; + padding-bottom: 20rpx; +} + +.dahcneg { + color: #666666; +} + +.zongsan { + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; +} + +.zon_one { + display: flex; + width: 33%; + flex-direction: column; + justify-content: space-between; + height: 58rpx; + align-items: center; +} + +.zon_one text { + color: #666666; + font-size: 23rpx; +} + +.weichang { + width: 94%; + height: 64rpx; + display: flex; + align-items: center; + justify-content: space-between; + color: #888888; + font-size: 25rpx; + border-top: 2rpx solid #e2e2e2; +} + +.mukla { + width: 100%; + height: 83rpx; + display: flex; + align-items: center; + justify-content: space-between; + flex-direction: column; +} + +.numbhsaf { + color: #25ca9f; + font-size: 50rpx; +} + +.dahcnegca { + color: #666666; + font-size: 25rpx; +} + +.quybn { + display: flex; + height: 214rpx; + flex-direction: column; + justify-content: space-between; + align-items: center; + margin-top: 23rpx; +} + +.injmk { + width: 100rpx; + height: 100rpx; + border-radius: 100%; + position: fixed; + bottom: 40rpx; + display: block; + right: 25rpx; +} + +.jiazua { + width: 100%; + padding: 0 30rpx; + box-sizing: border-box; + color: #fff; + font-size: 28rpx; + display: flex; + flex-wrap: wrap; + position: absolute; + bottom: 15rpx; + left: 0; + z-index: 2; +} + +.quan { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: rgba(0,0,0,0.5); + display: block; + z-index: 10; +} +.denglu { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: rgba(0,0,0,0.5); + z-index: 10; +} + +.none { + display: none; +} + +.sdavdsa { + width: 100%; + height: 100%; + display: block; +} + + +.huiceng,.huicengt { + width: 100%; + height: 100%; + background: rgba(0,0,0,0.5); + display: flex; + position: fixed; + top: 0; + left: 0; + z-index: 10; +} + +.huicengt { + display: flex; + align-items: center; + justify-content: center; +} + +.qtav { + width: 70%; + position: relative; + top: 20%; + left: 15%; + display: flex; + flex-direction: column; + align-items: center; + height: 666rpx; +} + +.xuanzekuang { + width: 200rpx; + height: 70rpx; + border-radius: 10rpx; + border: 2rpx solid #999; + display: flex; + align-items: center; + position: relative; + padding: 0 30rpx; + box-sizing: border-box; + justify-content: flex-end; + margin-top: 32rpx; +} + +.qitac { + width: 100%; + height: 100%; + display: flex; + align-items: center; + position: absolute; + left: 0; + top: 0; + padding-left: 30rpx; + box-sizing: border-box; +} + +.heyua { + width: 53rpx; + height: 59rpx; +} + +.picker { + font-size: 28rpx; + width: 200rpx; + height: 70rpx; + display: flex; + align-items: center; +} +.guanf { + width: 70rpx; + height: 70rpx; + position: absolute; + bottom: -89rpx; +} +.heyuacda { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + border-radius: 20rpx; +} + +.tilist { + position: absolute; + top: 20rpx; + right: 25rpx; + display: flex; + box-sizing: border-box; + align-items: center; + flex-direction: column; +} + + +.liaux { + width: 100%; + height: 100%; + padding: 70rpx 0; + box-sizing: border-box; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + z-index: 2; +} +.yshuda { + width: 454rpx; + height: 72rpx; + display: flex; + align-items: center; + justify-content: center; + font-size: 28rpx; + color: #25ca9f; + border-radius: 50rpx; + background: linear-gradient(#ffa500,#fdd22b); +} +.liahf { + color: #ffffff; + font-size: 41rpx; +} + +.cavdsa text { + color: #ffffff; + font-size: 50rpx; +} + +.cavdsa text:first-child { + color: #ffffff; + font-size: 138rpx; +} \ No newline at end of file diff --git a/packageA/user/myMedal.js b/packageA/user/myMedal.js new file mode 100644 index 0000000..e7ef7e8 --- /dev/null +++ b/packageA/user/myMedal.js @@ -0,0 +1,66 @@ +let App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + list: [], + signCount:0 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + // 获取帮助列表 + this.getImageData(); + this.getMedal(); + this.getSingCount(); + }, + /** + * 获取图片设置数据 + */ + getImageData: function() { + let _this = this; + App._get('wxapp/imageSet', {}, function(result) { + console.log(result.data); + _this.setData({imageSet:result.data.new_values}); + }); + }, + //打卡次数统计 + getSingCount: function() { + let _this = this; + App._post_form('footchina/getSignCount', { + topic_id:10003, + user_id: wx.getStorageSync('user_id') + }, result => { + console.log(result.data.data); + _this.setData({ + signCount: result.data.data + }); + console.log('signCount',_this.data.signCount); + + }); + + }, + //获取勋章等级 + getMedal: function() { + let _this = this; + App._post_form('footchina/getMedal', {}, result => { + this.setData({ + list: result.data.data + }); + }); + + }, + +}) \ No newline at end of file diff --git a/packageA/user/myMedal.json b/packageA/user/myMedal.json new file mode 100644 index 0000000..f8722ff --- /dev/null +++ b/packageA/user/myMedal.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "我的勋章" +} \ No newline at end of file diff --git a/packageA/user/myMedal.wxml b/packageA/user/myMedal.wxml new file mode 100644 index 0000000..ed31c8a --- /dev/null +++ b/packageA/user/myMedal.wxml @@ -0,0 +1,13 @@ + + 累计运动打卡 + + + + {{item}} + + 累计打卡{{item}}天 + + + + + diff --git a/packageA/user/myMedal.wxss b/packageA/user/myMedal.wxss new file mode 100644 index 0000000..38a1f53 --- /dev/null +++ b/packageA/user/myMedal.wxss @@ -0,0 +1,8 @@ +.title{width:100%;text-align:center;line-height:80rpx;margin-bottom:50rpx;} +.item{width:33.3%;padding-bottom:50rpx;} +.item-image-number{font-weight:blod;font-size:28rpx;text-align:center;padding-top:45rpx;} +.item-image{width:102rpx;height:120rpx;} +.light{color:#2ebcc0;} +.black{color:#999999;} +.black2{color:#a09b9b;} +.item-text{font-size:24rpx;} \ No newline at end of file diff --git a/packageA/user/profile.js b/packageA/user/profile.js new file mode 100644 index 0000000..6fc0701 --- /dev/null +++ b/packageA/user/profile.js @@ -0,0 +1,143 @@ +const App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + userInfo: {}, + UserCategory:[], + category_id:0, + category_name:'未选择队伍', + isLogin: false, + show:0 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.getUserDetail(); + this.getUserCategory(); + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + let _this = this; + _this.setData({ + isLogin: App.checkIsLogin() + }); + }, + + /** + * 获取当前用户信息 + */ + getUserDetail() { + let _this = this; + App._post_form('user.index/detail', { + user_id: wx.getStorageSync('user_id') + }, result => { + _this.setData(result.data); + _this.setData({ + category_id:result.data.userInfo.category_id + }); + }); + }, + getUserCategory(){ + let _this = this; + App._post_form('user.index/getUserCategory', {}, result => { + _this.setData(result.data); + let UserCategoryArr = result.data.UserCategory; + for(let i=0; i { + _this.setData({ + show:!_this.data.show + }); + let status = result.data.status, msg; + + switch(status) { + case 0: + msg = '修改失败'; + break; + case 1: + msg = '修改成功'; + break; + default: + msg = '修改失败'; + } + + wx.showToast({ + title: msg, + icon: 'none', + duration: 2000 + }) + + _this.setData({ + category_name:result.data.category_name + }); + }); + + }, + + + /** + * 菜单列表导航跳转 + */ + onTargetMenus(e) { + let _this = this; + if (!_this.onCheckLogin()) { + return false; + } + wx.navigateTo({ + url: '/' + e.currentTarget.dataset.url + }) + }, + /** + * 验证是否已登录 + */ + onCheckLogin() { + let _this = this; + if (!_this.data.isLogin) { + App.showError('很抱歉,您还没有登录'); + return false; + } + return true; + }, + + +}) \ No newline at end of file diff --git a/packageA/user/profile.json b/packageA/user/profile.json new file mode 100644 index 0000000..c932ce3 --- /dev/null +++ b/packageA/user/profile.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "个人资料" +} \ No newline at end of file diff --git a/packageA/user/profile.wxml b/packageA/user/profile.wxml new file mode 100644 index 0000000..86b2545 --- /dev/null +++ b/packageA/user/profile.wxml @@ -0,0 +1,60 @@ + + + + 姓名 + + + {{userInfo.realname}} + + + + + 手机号 + + + {{userInfo.phone}} + + + + + 身份证号 + + + {{userInfo.idcard}} + + + + + 队伍 + + + {{category_name}} + + + 修改 + + + + + + + + + + + + + + 保存 + + + + + + + diff --git a/packageA/user/profile.wxss b/packageA/user/profile.wxss new file mode 100644 index 0000000..abce466 --- /dev/null +++ b/packageA/user/profile.wxss @@ -0,0 +1,89 @@ +.page-body{padding:0 20rpx;} +.bao { + width: 100%; + height: 100rpx; + display: flex; + align-items: center; + justify-content: center; + position: fixed; + bottom: 0; + background: linear-gradient(to right,#25ca9f,#2ebcc0); + left: 0; + color: #ffffff; + font-size: 33rpx; +} + + +.isRuleShow{ + display: block; +} +.isRuleHide{ + display: none; +} +.ruleZhezhao{ + height: 100%; + width: 100%; + position: fixed; + background-color:rgba(0, 0, 0, .5); + z-index: 2; + top: 0; + left: 0; +} +.ruleZhezhaoContent{ + padding: 20rpx 0; + width: 80%; + background: #ffffff; + margin: 20% auto; + border-radius: 20rpx; + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; + position: relative; +} +.ruleZhezhaoText{ + width: 80%; + font-size: 30rpx; + color: #856d5f; + display: flex; + flex-direction: row; + align-items: center; + margin: 25rpx 0 25rpx 0; +} +.ruleZhezhaoText text:nth-child(1){ + color: #fff; + font-size: 40rpx; + height: 60rpx; + width: 60rpx; + background: #664a2c; + display: block; + text-align: center; + line-height: 60rpx; + border-radius: 30rpx; + margin-right: 10rpx; +} +.ruleZhezhaoText text:nth-child(2){ + flex-wrap:wrap; + width: 80%; +} +.ruleHide{ + height: 60rpx!important; + width: 60rpx!important; + position: absolute; + top: -20rpx; + right: -20rpx; +} +.rule{ + display: block; + border: 1px solid #fff; + width: 100rpx; + text-align: center; + line-height: 60rpx; + color: #fff; + height: 60rpx; + font-size: 30rpx; + border-radius: 30rpx; + position: absolute; + top: 10%; + right: 5%; +} diff --git a/packageB/index/index.js b/packageB/index/index.js new file mode 100644 index 0000000..a081b13 --- /dev/null +++ b/packageB/index/index.js @@ -0,0 +1,594 @@ +import * as echarts from '../../ec-canvas/echarts'; + +let symbolImg = '../../images/circle.png'; +let App = getApp(); +// 设置数据,可以增加更多的数据参数 +function setOption(chart, scatterData, mapData, type) { + const option = { + layoutCenter: ['50%', '30%'], + layoutSize: '100%', + series: [{ + type: 'map', + map: type, + aspectScale: 0.75, + roam: 'scale', + zoom: 0.4, + scaleLimit: { + min: 1, + max: 2.5 + }, + itemStyle: { + normal: { + areaColor: 'rgba(216,216,215,0.5)', + borderColor: '#fff', + borderWidth: 1, + }, + emphasis: { + areaColor: null, + }, + }, + label: { + show: true, + fontSize: 8, + color: '#333' + }, + emphasis: { + label: { + show: true, + color: '#333' + }, + }, + data: mapData, + markPoint: { + symbol: 'circle', + symbolSize: 5, + label: { + show: true, + fontSize: 6, + color: '#333', + position: 'right' + }, + data: scatterData + } + } + + ], + }; + chart.setOption(option); +} + +Page({ + data: { + ec: { + lazyLoad: true, + }, + showAddMeBtn: !0, + scrollTop: 0, + showModal: false, + step: 0, + shouquan: 0, + follow: 0, + yunti: !0, + sign: !0, + indexData: { + 'dhnum': 0 + }, + scatterData: [], + mapData: [], + activity: [], + show: 0, + today: "", + canvasShow: 0, + map:{} + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + // 获取组件 + this.ecComponent = this.selectComponent('#mychart-dom-area'); + }, + getMap(){ + var that=this; + wx.request({ + url: `https://minipro.luochunlvshi.com/map/${this.data.type}.js`, + success: function (res) { + console.log(res); + that.initChart(res.data); + } + }); + }, + // 初始化图表 + initChart(mapItem) { + this.ecComponent.init((canvas, width, height, dpr) => { + // 获取组件的 canvas、width、height 后的回调函数 + // 在这里初始化图表 + const chart = echarts.init(canvas, null, { + width: width, + height: height, + devicePixelRatio: dpr, // new + }); + console.log(this.data.mapData); + console.log(this.data.type); + // 注册中国地图数据包 + echarts.registerMap(this.data.type, mapItem); + // 设置数据 + setOption(chart, this.data.scatterData, this.data.mapData, this.data.type); + + // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 + this.chart = chart; + + // 绑定点击事件 + let that = this; + chart.on('click', function (params) { + that.handleChartClick(params); + }); + + // 注意这里一定要返回 chart 实例,否则会影响事件处理等 + return chart; + }); + }, + + + handleChartClick(params) { + // 可以通过参数去数据列表中获取完整数据 params.dataIndex + console.log('chart click params:', { + name: params.name, + data: params.data, + dataIndex: params.dataIndex, + seriesIndex: params.seriesIndex, + value: params.value + }); + }, + + onLoad: function () { + // 设置页面标题 + App.setTitle(); + // 设置navbar标题、颜色 + App.setNavigationBar(); + let user_id = wx.getStorageSync('user_id'); + + if (user_id) { + this.Updatestep(); + this.getData(); + } + }, + onShow: function () { + + this.setData({ + showAddMeBtn: !0 + }) + let user_id = wx.getStorageSync('user_id'); + if (!user_id) { + this.setData({ + showModal: true + }) + } + }, + goTop: function (t) { + this.setData({ + scrollTop: 0 + }); + }, + /** + * 获取首页数据 + */ + getIndexData: function () { + let _this = this; + App._get('index/page', { + user_id: wx.getStorageSync('user_id') + }, function (result) { + _this.setData(result.data); + }); + }, + onClickAddToMinProgramCloseBtn: function () { + wx.setStorageSync("showAddMeFlag" + this.data.time, !0), this.setData({ + showAddMeBtn: !1 + }); + }, + onShareAppMessage: function () { + return { + title: "科大工会健步走小程序", + desc: "", + path: "/pages/index/index" + }; + }, + goDuiHuan: async function (e) { + let _this = this; + let step = this.data.step; + let time = parseInt(new Date().getTime() / 1000); + console.log('step', this.data.step); + if (this.data.step == 0) { + var a = await this.getyundong(); + console.log('运动授权结果:', a); + if (a === 1) { + // 授权成功后,立即更新步数 + this.Updatestep(); + } + return; + } + if (time < _this.data.activity.starttime) { + wx.showToast({ + title: '活动未开始', + icon: 'none', + duration: 2000 + }) + return false; + } + if (time > _this.data.activity.endtime) { + wx.showToast({ + title: '活动已结束', + icon: 'none', + duration: 2000 + }) + return false; + } + var user_id = wx.getStorageSync('user_id'); + App._post_form('footchina/goDuiHuan', { + user_id: user_id, + step: step + }, function (result) { + var rdata = result.data.data; + console.log('goDuiHuan', rdata); + if (result.data.code == -1) { + wx.showToast({ + title: '用户信息失效...', + icon: 'none', + duration: 2000 + }) + _this.setData({ + showModal: true + }) + return; + } + if (rdata.status) { + // let _this = this; + _this.setData({ + show: 1, + today: new Date().toISOString().slice(0, 10) + }) + console.log('today', _this.data.today); + // wx.showToast({ + // title: '点亮成功', + // icon: 'none', + // duration: 2000 + // }) + _this.getData(); + } + }); + }, + getData: function (e) { + let _this = this; + App._post_form('footchina/getData', { + user_id: wx.getStorageSync('user_id'), + }, (result) => { + var rdata = result.data.data; + console.log(rdata); + _this.setData({ + indexData: rdata, + scatterData: rdata.citySub, + mapData: rdata.provinceAreaColor, + type: rdata.type, + activity: rdata.activity, + }); + console.log(rdata.provinceAreaColor); + console.log(_this.data.mapData); + _this.getMap(); + }); + }, + goDuiHuanDis: function () { + let time = parseInt(new Date().getTime() / 1000); + if (time < this.data.activity.starttime) { + wx.showToast({ + title: '活动未开始', + icon: 'none', + duration: 2000 + }) + return false; + } + if (this.data.step < this.data.indexData.step) { + wx.showToast({ + title: '步数未达标,暂不能点亮城市', + icon: 'none', + duration: 2000 + }) + return false; + } + if (time > this.data.activity.endtime) { + wx.showToast({ + title: '活动已结束', + icon: 'none', + duration: 2000 + }) + return false; + } + if (this.data.indexData.dhnum == 1) { + // let _this = this; + // _this.setData({ + // show:1 + // }) + wx.showToast({ + title: '今日已点亮', + icon: 'none', + duration: 2000 + }) + return false; + } + }, + guanzhu: function () { + this.data.follow; + this.setData({ + follow: 1 + }); + }, + xiao: function () { + let _this = this; + wx.showModal({ + title: '提示', + content: '确定要保存这张图片吗?', + success: function (res) { + if (res.confirm) { + console.log('用户点击确定') + wx.getImageInfo({ + src: _this.data.imageSet.index_gz_gzh, + success: function (res) { + console.log(res); + var path = res.path; + wx.saveImageToPhotosAlbum({ + filePath: path, + success: function (res) { + console.log('图片已保存'); + _this.data.follow; + _this.setData({ + follow: 0 + }); + }, + fail: function (res) { + console.log('保存失败'); + _this.data.follow; + _this.setData({ + follow: 0 + }); + } + }) + } + }); + } else if (res.cancel) { + console.log('用户点击取消'); + _this.data.follow; + _this.setData({ + follow: 0 + }); + } + } + }) + }, + bindIdCard: function (e) { + this.setData({ + idcard: e.detail.value + }) + }, + + checkIdCard: function () { + let _this = this; + let idCard = _this.data.idcard; + if (idCard == undefined) { + wx.showModal({ + title: "提示", + content: "身份证号不能为空", + success: function (a) { + + } + }); + return false; + } + + App.getUserInfoByIdCard(idCard, (user_id) => { + _this.getUserProfile(user_id); + _this.setData({ + showModal: false + }) + }); + }, + //取消登录 + loginClose: function () { + let _this = this; + _this.setData({ + showModal: false + }); + }, + + + /** + * 获取用户微信信息 + */ + getUserProfile(user_id) { + if (!user_id) { + let user_id = wx.getStorageSync('user_id'); + } + + console.log('user_id', user_id); + + const app = this + try { + wx.getUserProfile({ + lang: 'zh_CN', + desc: '获取用户相关信息', + success({ + userInfo + }) { + console.log('用户同意了授权') + console.log('userInfo:', userInfo) + App.getUserInfo(userInfo, user_id, () => { + app.Updatestep(); + }); + }, + fail() { + console.log('用户拒绝了授权--微信授权') + } + }) + } catch (e) { + console.log('error:', e.message) + if (e.message === 'wx.getUserProfile is not a function') { + App.showError('wx.getUserProfile 接口无法使用,请升级到最新版微信') + } else { + App.showError(error.message) + } + } + + }, + getyundong() { + return new Promise((resolve, reject) => { + // 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.werun" 这个 scope + wx.getSetting({ + success(res) { + if (!res.authSetting['scope.werun']) { + wx.openSetting({ + success: (authResult) => { + if (authResult.authSetting['scope.werun']) { + resolve(1); + } else { + resolve(0); + } + }, + fail: (err) => { + console.error('打开设置页失败', err); + reject(err); + } + }); + } else { + resolve(1); + } + }, + fail: (err) => { + console.error('wx.getSetting失败', err); + reject(err); + } + }) + }); + }, + // 读取用户的微信运动数据 + Updatestep: function (t) { + var e = this; + wx.login({ + success: function (t) { + var a = t.code; + e.setData({ + code: a + }), wx.getWeRunData({ + success: function (t) { + var a = t.encryptedData, + o = t.iv; + App._post_form('user/getStep', { + wRunEncryptedData: a, + iv: o, + code: e.data.code, + user_id: wx.getStorageSync('user_id') + }, result => { + e.getIndexData(); + //wx.setStorageSync('step', result.data.data); + e.setData({ + step: result.data.data + }) + e.getData(); + }); + }, + fail() { + console.log('用户拒绝了授权--微信运动') + } + }); + } + }); + }, + + guanbil: function () { + var a = this.data.yunti; + this.setData({ + yunti: !a + }); + }, + goInfo: function () { + wx.navigateTo({ + url: "/pages/rank/address" + }); + }, + goRili: function () {}, + goRili: function () { + wx.navigateTo({ + url: '/packageB/user/sign' + }) + }, + /** + * 拒绝授权 + */ + onNotLogin() { + let _this = this; + // 跳转回原页面 + _this.onNavigateBack(); + }, + + /** + * 授权成功 跳转回原页面 + */ + onNavigateBack() { + wx.navigateBack(); + }, + overdue: function () { + var t = this; + wx.getSetting({ + success: function (a) { + if (a.authSetting["scope.userInfo"]) wx.checkSession({ + success: function (a) { + + }, + fail: function (a) { + t.data.shouquan; + t.setData({ + shouquan: 1 + }); + } + }); + else { + t.data.shouquan; + t.setData({ + shouquan: 1 + }); + } + } + }); + }, + onPullDownRefresh: function () { + let user_id = wx.getStorageSync('user_id'); + + if (user_id) { + this.Updatestep(); + } + wx.stopPullDownRefresh() + }, + + /** 点亮成功 */ + goSuccess() { + console.log('进来了', 111); + let _this = this; + _this.setData({ + show: 1, + today: new Date().toISOString().slice(0, 10) + }) + }, + //关闭签到弹窗 + guanbilsig: function () { + let _this = this; + _this.setData({ + show: 0 + }) + // wx.navigateTo({ + // url: "/pages/rank/address" + // }); + // var a = this.data.sign; + // this.setData({ + // sign: !a + // }); + }, + + +}); \ No newline at end of file diff --git a/packageB/index/index.json b/packageB/index/index.json new file mode 100644 index 0000000..f722c34 --- /dev/null +++ b/packageB/index/index.json @@ -0,0 +1,6 @@ +{ + "enablePullDownRefresh": true, + "usingComponents": { + "ec-canvas": "../../ec-canvas/ec-canvas" + } +} \ No newline at end of file diff --git a/packageB/index/index.wxml b/packageB/index/index.wxml new file mode 100644 index 0000000..0faf202 --- /dev/null +++ b/packageB/index/index.wxml @@ -0,0 +1,167 @@ + + + + + + + 一附院职工账号绑定 + + 确定 + + + + + + + + 点击 + + {{guide_add_applet}} + + + + + + + + + + + + + + + + + 点亮城市 + + {{step}} + + + + + 点亮城市 + + {{step}} + + + + + + + + + + + + + + + + + + + + + 点亮城市 + 点击查看 + + + + + + + + 点亮日历 + 点击查看 + + + + + + + + + + {{indexData.citydays}} + 累计点亮 + + + + {{indexData.signdays}} + 累计天数 + + + {{indexData.rank}} + 我的排名 + + + + + + {{indexData.now}} + 当前城市 + + + {{indexData.next}} + 下个城市 + + + {{indexData.step}}:1 + 兑换比例 + + + + + + + + + + + 使用微信授权后才能更好的为您服务哦 + + + + + + + + + + + + + {{today}}点亮这座城市 + + + + + + \ No newline at end of file diff --git a/packageB/index/index.wxss b/packageB/index/index.wxss new file mode 100644 index 0000000..4714aed --- /dev/null +++ b/packageB/index/index.wxss @@ -0,0 +1,463 @@ +/**index.wxss**/ +.container{ + /* background-image: url('http://minipro1.luochunlvshi.com/uploads/index11.jpg'); */ + background-image: url('https://minipro.luochunlvshi.com/uploads/image/innerBack.png'); + background-size: 100% auto; + position: relative; + height:100vh; + width:100%; +} + +/* .top_2{ + height: 95rpx; + height:60vh; + margin-top: 4rpx; + width: 750rpx; +} */ +.topBackImage{ + height: 64rpx; + background-size: 100% 100%; +} +.lightUp{ + background-image: linear-gradient( + 180deg, + rgba(228, 1, 6, 1) 0, + rgba(253, 86, 92, 1) 100% + ); + border-radius: 20rpx; + width: 280rpx; + height: 140rpx; + border: 4rpx solid rgba(255, 255, 255, 1); + margin: 6rpx 0 0 235rpx; + z-index: 999999999; +} +.lightUp_no{ + background-color: #DCD9D4; background-image: linear-gradient(to bottom, rgba(255,255,255,0.50) 0%, rgba(0,0,0,0.50) 100%), radial-gradient(at 50% 0%, rgba(255,255,255,0.10) 0%, rgba(0,0,0,0.50) 50%); background-blend-mode: soft-light,screen; + border-radius: 20rpx; + width: 280rpx; + height: 140rpx; + border: 4rpx solid rgba(255, 255, 255, 1); + margin: 6rpx 0 0 235rpx; + z-index: 999999999; +} + +.lightUp_no .lightImage_1{ + width: 202rpx; + height: 40rpx; + margin: 33rpx 0 0 39rpx; + display: flex; + align-items: center; + justify-content: center; +} + +.lightUp .lightImage_1{ + width: 202rpx; + height: 40rpx; + margin: 33rpx 0 0 39rpx; + display: flex; + align-items: center; + justify-content: center; +} +.lightImage_1 .innerDian{ + width: 40rpx; + height: 40rpx; +} +.lightImage_1 .lightUpText{ + width: 152rpx; + height: 36rpx; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 38rpx; + font-family: PingFang SC-Bold; + font-weight: 700; + text-align: center; + white-space: nowrap; + line-height: 36rpx; + margin-left: 4rpx; +} + +.item-container{ + width:100%; + padding: 4rpx 20rpx 30rpx 20rpx; +} +.item-container .item-city{ + width: 44%; + height: 130rpx; + display: flex; + align-items: center; + justify-content: center; + background-color: #FFF; + border-radius: 20rpx; + padding-bottom: 16rpx; +} +.item-container .item-city .locationImage{ + width: 70rpx; + height: 70rpx; + margin-top: 12rpx; +} +.item-container .item-city .item-locationText{ + width:40%; + padding-top:20rpx; + margin-left: 20rpx; + +} +.item-container .item-canlendar{ + width: 44%; + height: 130rpx; + display: flex; + align-items: center; + justify-content: center; + background-color: #FFF; + border-radius: 20rpx; + padding-bottom: 16rpx; + margin-left: 50rpx; + /* justify-content: space-between; */ +} +.item-container .item-canlendar .canlendarImage{ + width: 70rpx; + height: 70rpx; + margin-top: 10rpx; +} +.item-container .item-canlendar .item-canlendarText{ + margin-left: 20rpx; + width:40%; + padding-top:21rpx; +} +.item-containerFir{ + width: 95%; + height: 120rpx; + margin-top: 10rpx; + border-radius: 20rpx; + background-color: #fff; + padding-bottom: 10rpx; +} +.item{ + width:33.3%; + padding-top:16rpx; + /* background-color: #FFF; */ +} +.item .top{ + color:rgba(61, 61, 61, 1); + font-size:28rpx; + font-family: PingFang SC-Bold; + font-weight: 700; + padding-top:10rpx; +} +.item .bottomRed{ + color: rgba(234, 23, 29, 1); + font-size:30rpx; + font-family: PingFang SC-Bold; + font-weight: 700;} +.item .bottom{ + color:#333; + font-size:30rpx; + /* padding-top:10rpx; */ + font-family: PingFang SC-Bold; + font-weight: 700; +} + + +ec-canvas { + width: 100%; + height: 50vh; +} +cover-view{overflow:visible;} +.mask{ + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: #000; + z-index: 9000; + opacity: 0.7; +} +.modalDlg{ + width: 580rpx; + height: 620rpx; + position: absolute; + top: 50%; + left: 0; + z-index: 9999; +margin-top:290rpx; +margin-left:90rpx; + background-color: #fff; + border-radius: 36rpx; + display: flex; + flex-direction: column; + align-items: center; + overflow:hidden; +} + +.modalDlg .closeBox { + /* width: 100%; + height: 56rpx; */ + /* margin-top: 20rpx; */ +} +.modalDlg .closeBox image { + width: 40rpx; + height: 40rpx; + position: absolute; + right: 4%; + top: 20rpx; +} +.modalDlg text{margin-top:40rpx;} +.modalDlg image{width:100%;height:280rpx;} +.modalInput{width:90%;height:60rpx;line-height:60rpx;border:1px solid #999;border-radius:10rpx;margin-top:40rpx;padding-left:10rpx;font-size:24rpx;} +.bao { + width: 300rpx; + height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + bottom: 50rpx; + background: linear-gradient(to right,#25ca9f,#2ebcc0); + left: 140rpx; + color: #ffffff; + font-size: 33rpx; + border-radius: 36rpx; +} +.addToSmallProgramClass { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 80rpx; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + background: rgba(0,0,0,0.6); + color: white; + z-index: 9999; +} + +.addToSmallProgramClass .center_text_div_class { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + font-size: 28rpx; + transform: translateX(-70rpx); +} + +.addToSmallProgramClass .arrow { + width: 100%; + height: 100%; + animation-name: addToSmallProgramClass_arrow_swing; + animation-duration: 0.8s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +@-webkit-keyframes addToSmallProgramClass_arrow_swing { + from { + transform: translateY(20%); + } + + to { + transform: translateY(-20%); + } +} + +@keyframes addToSmallProgramClass_arrow_swing { + from { + transform: translateY(20%); + } + + to { + transform: translateY(-20%); + } +} + +.addToSmallProgramClass .more { + width: 46rpx; + height: 17rpx; + margin-left: 15rpx; + margin-right: 15rpx; +} + +.addToSmallProgramClass .as-close { + width: 24rpx; + height: 24rpx; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 30rpx; + padding: 20rpx; +} + +.denglu { + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: rgba(0,0,0,0.5); + z-index: 10; +} + +.denglu_ong { + width: 622rpx; + margin: 0 auto; + margin-top: 55%; + height: 439rpx; + border-radius: 15rpx; + position: relative; + padding: 59rpx 0; + padding-top: 41rpx; + box-sizing: border-box; + overflow: hidden; + background: #fff; + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; +} + +.denglu_ong text { + font-size: 31rpx; + color: #131313; +} + +.denglu_img { + width: 100%; + display: block; + position: absolute; + top: 0; + left: 0; + height: 100%; +} +.imhyua { + width: 119rpx; + height: 119rpx; +} + +.register { + color: #fe4045; + font-size: 25rpx; + display: flex; + width: 466rpx; + height: 83rpx; + border-radius: 50rpx; + align-items: center; + background: none; + justify-content: center; +} +.button-hover { + background-color: none; +} +.dianji { + position: fixed; + top: 93%; + width: 195rpx; + height: 83rpx; + display: flex; + right: 0; + z-index: 5; +} +.quan { + width: 90%; + height: 90%; + position: fixed; + top: 0; + left: 0; + background: rgba(0,0,0,0.5); + display: block; + z-index: 10; +} + +.none { + display: none; +} + +button { + padding: 0; + margin: 0; + border-radius: 0; + background: none; + line-height: normal; +} + +button::after { + content: none; +} + +.dhlc{width:120rpx;height:120rpx; + border-radius:50%; + background-color:#E1270E; + position:absolute; + top:-60rpx; +} + +.dhlc text{color:#FFF;} +.dhlc .text{font-size:22rpx;} +.dhlc .num1{font-size:30rpx;font-weight:bold;} +.dhlc .num{font-size:34rpx;} +.step{ + padding:5rpx 10rpx; + background-color:#474747; + border-radius:25rpx; + color:#FFF;font-size:22rpx; + margin-bottom:10rpx; + position:absolute; + top:-110rpx; +} +.isRuleShow{ + display: block; + } + .isRuleHide{ + display: none; + } + .ruleZhezhao{ + height: 100%; + width: 100%; + position: fixed; + background-color:rgba(0, 0, 0, .5); + z-index: 100000000000; + top: 0; + bottom: 30%; + left: 0; + } + .ruleZhezhaoContent{ + /* padding: 20rpx 0; */ + width: 100%; + /* background: #ffffff; */ + margin: 20% auto; + border-radius: 20rpx; + display: flex; + flex-direction: column; + justify-content: space-around; + align-items: center; + position: relative; + } + .backSuccess{ + width: 750rpx; + height: 880rpx; + position: relative; + left: 16rpx; + top: 0rpx; + } + .guanf{ + position: relative; + bottom: 510rpx; + left: 220rpx; + width: 70rpx; + height: 70rpx; + } + .successCity{ + width: 400rpx; + height: 340rpx; + position: relative; + bottom: 500rpx; + border-radius: 20rpx; + } + .successTime{ + position: relative; + bottom: 480rpx; + } + + + diff --git a/packageB/rule/index.js b/packageB/rule/index.js new file mode 100644 index 0000000..d8afe7c --- /dev/null +++ b/packageB/rule/index.js @@ -0,0 +1,35 @@ +var App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + articleData:{} + }, + + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function () { + wx.showLoading({ title: '加载中' }); + this.get_rule(); + }, + + /** + * 获取列表 + */ + get_rule: function () { + let _this = this; + App._post_form('footchina/index', { + }, function(result) { + wx.hideLoading(); + var rdata = result.data.activity; + _this.setData({ + articleData: rdata + }) + }); + } +}) \ No newline at end of file diff --git a/packageB/rule/index.json b/packageB/rule/index.json new file mode 100644 index 0000000..e5843ac --- /dev/null +++ b/packageB/rule/index.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "活动规则", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white", + "usingComponents": { + "parser":"../../components/parser/parser" + } +} \ No newline at end of file diff --git a/packageB/rule/index.wxml b/packageB/rule/index.wxml new file mode 100644 index 0000000..0164fca --- /dev/null +++ b/packageB/rule/index.wxml @@ -0,0 +1,6 @@ + + + + + + diff --git a/packageB/rule/index.wxss b/packageB/rule/index.wxss new file mode 100644 index 0000000..2d09bac --- /dev/null +++ b/packageB/rule/index.wxss @@ -0,0 +1,12 @@ +.article { + background: #fff; + padding: 20rpx 30rpx; + font-size: 28rpx; +} +.title{padding-bottom:50rpx;font-size:40rpx;text-align: center;} + + + +/* banner组件按钮 */ +.swiper , swiper,swiper-item ,swiper-item image{width:100%;height:450rpx;} +.swiper{margin-bottom:20rpx;} \ No newline at end of file diff --git a/packageB/user/sign.js b/packageB/user/sign.js new file mode 100644 index 0000000..f0f4f66 --- /dev/null +++ b/packageB/user/sign.js @@ -0,0 +1,107 @@ +const App = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + count:1, + goodsInfo:[] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.getSignRecord(); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + /** + * 获取签到记录 + */ + getSignRecord: function (aid) { + let _this = this; + App._post_form('footchina/getSignRecord', { + user_id:wx.getStorageSync('user_id') + }, function(result) { + _this.setData({ + selectedDays: result.data.data + }) + }); + }, + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + }, + /** + * 点击日期时候触发的事件 + * bind:getdate + */ + getdate(e) { + console.log(e.detail); + }, + /** + * 点击全选触发的事件 + * bind:checkall + */ + checkall(e) { + console.log(e.detail.days); + }, + /** + * 点击确定按钮触发的事件 + * bind:select + */ + cmfclick(e){ + console.log(e.detail.selectDays); + }, + /** + * 点击清空事件 + * bind:clear + */ + clear(e) { + console.log("要清空选中日期") + } +}) \ No newline at end of file diff --git a/packageB/user/sign.json b/packageB/user/sign.json new file mode 100644 index 0000000..47bd999 --- /dev/null +++ b/packageB/user/sign.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "我的统计", + "usingComponents": { + "calendar": "/components/calendarn/calendar" + } +} \ No newline at end of file diff --git a/packageB/user/sign.wxml b/packageB/user/sign.wxml new file mode 100644 index 0000000..1906aa7 --- /dev/null +++ b/packageB/user/sign.wxml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/packageB/user/sign.wxss b/packageB/user/sign.wxss new file mode 100644 index 0000000..597be47 --- /dev/null +++ b/packageB/user/sign.wxss @@ -0,0 +1,26 @@ +/* pages/user/sign.wxss */ +.button-hover { + background-color: none; +} +button { + padding: 0; + margin: 0; + border-radius: 0; + background: none; + line-height: normal; +} + +button::after { + content: none; +} +.baomica { + background: linear-gradient(#25ca9f,#2ebcc0); + width: 257rpx; + height: 73rpx; + border-radius: 50rpx; + display: flex; + justify-content: center; + align-items: center; + color: #ffffff; + font-size: 34rpx; +} \ No newline at end of file diff --git a/pages/category/challenge.js b/pages/category/challenge.js new file mode 100644 index 0000000..2e6297c --- /dev/null +++ b/pages/category/challenge.js @@ -0,0 +1,66 @@ +// pages/category/challenge.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/category/challenge.wxml b/pages/category/challenge.wxml new file mode 100644 index 0000000..e8169c7 --- /dev/null +++ b/pages/category/challenge.wxml @@ -0,0 +1,2 @@ + +pages/category/challenge.wxml \ No newline at end of file diff --git a/pages/category/index.js b/pages/category/index.js new file mode 100644 index 0000000..2f9d078 --- /dev/null +++ b/pages/category/index.js @@ -0,0 +1,66 @@ +// pages/category/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/category/index.wxml b/pages/category/index.wxml new file mode 100644 index 0000000..c84b73f --- /dev/null +++ b/pages/category/index.wxml @@ -0,0 +1,2 @@ + +pages/category/index.wxml \ No newline at end of file diff --git a/pages/category/team.js b/pages/category/team.js new file mode 100644 index 0000000..6a229d9 --- /dev/null +++ b/pages/category/team.js @@ -0,0 +1,66 @@ +// pages/category/team.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/category/team.wxml b/pages/category/team.wxml new file mode 100644 index 0000000..99ea614 --- /dev/null +++ b/pages/category/team.wxml @@ -0,0 +1,2 @@ + +pages/category/team.wxml \ No newline at end of file diff --git a/pages/index/china.js b/pages/index/china.js new file mode 100644 index 0000000..ec9cbfe --- /dev/null +++ b/pages/index/china.js @@ -0,0 +1 @@ +module.exports ={"type":"FeatureCollection","features":[{"id":"710000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@°Ü¯Û"],["@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ"],["@@\\p|WoYG¿¥I†j@¢"],["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"],["@@ÆEE—„kWqë @œ"],["@@fced"]],"encodeOffsets":[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]]]},"properties":{"cp":[120.8254, 23.5986],"name":"台湾","childNum":6}},{"id":"130000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"],["@@U`Ts¿m‚"],["@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧˏfŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgƊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|ǰ…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃ͚¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@c̬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®Vйd^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qáµ§š™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚"]],"encodeOffsets":[[[119712,40641]],[[121616,39981]],[[116462,37237]]]},"properties":{"cp":[115.4004, 38.1688],"name":"河北","childNum":3}},{"id":"140000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz"],"encodeOffsets":[[116874,41716]]},"properties":{"cp":[112.4121, 36.6611],"name":"山西","childNum":1}},{"id":"150000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@Č^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ–›¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–R붛ijʕ…Œů`çõh]y»ǃŸǛҤxÒm~zf}pf|ÜroÈzrKÈĵSƧ„ż؜Ġu¦ö"],["@@sKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚǏĞGȖƴƀj`ĢçĶāàŃºē̃ĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTĞªŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFǜƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ż؛Ç@Vu»A—ylßí¹ĵê…ÝlISò³C¹Ìâ„²i¶’Ìoú^H“²CǜңDŽ z¼g^èöŰ_‹‚–†IJĕꄜ}gÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉ™Š³MEˆĸÅĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot×¶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ÈˆÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µ"]],"encodeOffsets":[[[127444,52594]],[[113793,40312]]]},"properties":{"cp":[110.5977, 41.3408],"name":"内蒙古","childNum":2}},{"id":"210000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@L–Ž@@s™a"],["@@MnNm"],["@@d‚c"],["@@eÀ‚C@b‚“‰"],["@@f‡…Xwkbr–Ä`qg"],["@@^jtW‘Q"],["@@~ Y]c"],["@@G`ĔN^_¿Z‚ÃM"],["@@iX¶B‹Y"],["@@„YƒZ"],["@@L_{Epf"],["@@^WqCT\\"],["@@\\[“‹§t|”¤_"],["@@m`n_"],["@@Ïxnj{q_×^Giip"],["@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA"]],"encodeOffsets":[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]},"properties":{"cp":[123.0438, 41.0889],"name":"辽宁","childNum":16}},{"id":"220000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG"],"encodeOffsets":[[130196,42528]]},"properties":{"cp":[126.1746, 43.5938],"name":"吉林","childNum":1}},{"id":"230000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ƨƒĶTLÇyqpÇÛqe{~oyen}s‰`q‡iXG”ù]Ëp½“©lɇÁp]Þñ´FÔ^f‘äîºkà˜z¼BUvÈ@"],["@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tޏĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîά|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]"]],"encodeOffsets":[[[127123,51780]],[[134456,44547]]]},"properties":{"cp":[128.1445, 46.7156],"name":"黑龙江","childNum":2}},{"id":"320000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@ƹhågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ"],"encodeOffsets":[[121740,32276]]},"properties":{"cp":[119.8586, 32.915],"name":"江苏","childNum":1}},{"id":"330000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@E^dQ]K"],["@@jX^j‡"],["@@sfŠbU‡"],["@@qP\\xz[ck"],["@@‘Rƒ¢‚FX}°[s_"],["@@Cbœ\\—}"],["@@e|v\\la{u"],["@@v~u}"],["@@QxÂF¯}"],["@@¹nŒvÞs¯o"],["@@rSkUEj"],["@@bi­ZŒP"],["@@p[}INf"],["@@À¿€"],["@@¹dnbŒ…"],["@@rSŸBnR"],["@@g~h}"],["@@FlEk"],["@@OdPc"],["@@v[u\\"],["@@FjâL~wyoo~›sµL–\\"],["@@¬e¹aNˆ"],["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"],["@@ÊA­©[¬"],["@@KxŒv­"],["@@@hlIk]"],["@@pW{o||j"],["@@Md|_mC"],["@@¢…X£ÏylD¼XˆtH"],["@@hlÜ[LykAvyfw^Ež›¤"],["@@fp¤Mus“R"],["@@®_ma~•LÁ¬šZ"],["@@iM„xZ"],["@@ZcYd"],["@@Z~dOSo|A¿qZv"],["@@@`”EN¡v"],["@@|–TY{"],["@@@n@m"],["@@XWkCT\\"],["@@ºwšZRkĕWO¢"],["@@™X®±Grƪ\\ÔáXq{‹"],["@@ůTG°ĄLHm°UC‹"],["@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВj碷ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈÚœĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst"],["@@o\\V’zRZ}y"],["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"]],"encodeOffsets":[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125000,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]},"properties":{"cp":[120.498, 29.0918],"name":"浙江","childNum":45}},{"id":"340000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@^iuLX^"],["@@‚e©Ehl"],["@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜÆ¶ĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆßŽF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴ˶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´"]],"encodeOffsets":[[[121722,32278]],[[119475,30423]],[[119168,35472]]]},"properties":{"cp":[117.2461, 31.0361],"name":"安徽","childNum":3}},{"id":"350000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@“zht´‡]"],["@@aj^~ĆG—©O"],["@@ed¨„C}}i"],["@@@vˆPGsQ"],["@@‰sBz‚ddW]Q"],["@@SލQ“{"],["@@NŽVucW"],["@@qptBAq"],["@@‰’¸[mu"],["@@Q\\pD]_"],["@@jSwUadpF"],["@@eXª~ƒ•"],["@@AjvFso"],["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"],["@@IjJi"],["@@wJI€ˆxš«¼AoNe{M­"],["@@K‰±¡Óˆ”ČäeZ"],["@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_"]],"encodeOffsets":[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]},"properties":{"cp":[118.3008, 25.9277],"name":"福建","childNum":18}},{"id":"360000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ĢĨƐgÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗ⼋mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²"],"encodeOffsets":[[116689,26234]]},"properties":{"cp":[115.7156, 27.99],"name":"江西","childNum":1}},{"id":"370000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@Xjd]{K"],["@@itbFHy"],["@@HlGk"],["@@T‚ŒGŸy"],["@@K¬˜•‹U"],["@@WdXc"],["@@PtOs"],["@@•LnXhc"],["@@ppVƒu]Or"],["@@cdzAUa"],["@@udRhnCI‡"],["@@ˆoIƒpR„"],["@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞÆ„LĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌǜbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐ˹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~ݏY’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuٌg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ"]],"encodeOffsets":[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]},"properties":{"cp":[118.2402, 36.2307],"name":"山东","childNum":13}},{"id":"410000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m"],"encodeOffsets":[[118256,37017]]},"properties":{"cp":[113.0668, 33.8818],"name":"河南","childNum":1}},{"id":"420000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AB‚"],["@@lskt"],["@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙæŠšŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYЧHK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆ̶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤"]],"encodeOffsets":[[[113712,34000]],[[115612,30507]],[[113649,34054]]]},"properties":{"cp":[112.2363, 30.8572],"name":"湖北","childNum":3}},{"id":"430000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@—n„FTs"],["@@ßÅÆá‰½ÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–̾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"],["@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJβSÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUоÅ‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPᜣEXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎۃƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ"]],"encodeOffsets":[[[115640,30489]],[[112543,27312]],[[116690,26230]]]},"properties":{"cp":[111.5332, 27.3779],"name":"湖南","childNum":3}},{"id":"440000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@QdˆAua"],["@@ƒlxDLo"],["@@sbhNLo"],["@@Ă āŸ"],["@@WltO[["],["@@Krœ]S"],["@@e„„I]y"],["@@I|„Mym"],["@@ƒÛ³LSŒž¼Y"],["@@nvºB–ëui©`¾"],["@@zdšÛ›Jw®"],["@@†°…¯"],["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"],["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"],["@@‹¶Ý’Ì‚vmĞh­ı‡Q"],["@@HœŠdSjĒ¢D}war…“u«ZqadYM"],["@@elŒ\\LqqU"],["@@~rMo\\"],["@@f„^ƒC"],["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"],["@@gÇƳˆŽˆ”oˆŠˆ[~tly"],["@@E–ÆC¿‘"],["@@OŽP"],["@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéƌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i"]],"encodeOffsets":[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]},"properties":{"cp":[113.8668, 22.8076],"name":"广东","childNum":24}},{"id":"450000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@H– TQ§•A"],["@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloޤ™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆÌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FϼĹ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•E쉕E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢Jî¶²"]],"encodeOffsets":[[[111707,21520]],[[107619,25527]]]},"properties":{"cp":[108.7813, 23.6426],"name":"广西","childNum":2}},{"id":"460000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ "],"encodeOffsets":[[112750,20508]]},"properties":{"cp":[109.9512, 19.2041],"name":"海南","childNum":1}},{"id":"510000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@LqKr"],["@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iǰÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZްIä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºT£ڿœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`Šz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›"]],"encodeOffsets":[[[108815,30935]],[[110617,31811]]]},"properties":{"cp":[102.9199, 30.1904],"name":"四川","childNum":2}},{"id":"520000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@†G\\†lY£‘in"],["@@q‚|ˆ‚mc¯tχVSÎ"],["@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒh޶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KгŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}ޱžGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝÆ€‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½"]],"encodeOffsets":[[[112158,27383]],[[112105,27474]],[[112095,27476]]]},"properties":{"cp":[106.6113, 26.6385],"name":"贵州","childNum":3}},{"id":"530000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèÆ¶StǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyސ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSᝑ³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\μģUsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`"],"encodeOffsets":[[104636,22969]]},"properties":{"cp":[101.0652, 24.6807],"name":"云南","childNum":1}},{"id":"540000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@hžľxŽŖ‰xƒÒVކºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|٘¦Avަw`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdЉªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀݦ¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVе‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£à貋ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæÅ„hnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„ǰ¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûŠìÖT¬¸^}Ìsòd´_އKgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxжF”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©"],"encodeOffsets":[[90849,37210]]},"properties":{"cp":[87.8695, 31.6846],"name":"西藏","childNum":1}},{"id":"610000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OϹS|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cϰÂ[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~ЦUbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj"],"encodeOffsets":[[110234,38774]]},"properties":{"cp":[108.5996, 33.7396],"name":"陕西","childNum":1}},{"id":"620000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@VuUv"],["@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBаaZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aйcčecÇN•ĊãÁ\\蝗dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]A챝‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮްƝ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK"]],"encodeOffsets":[[[108619,36299]],[[108589,36341]]]},"properties":{"cp":[102.7129, 38.166],"name":"甘肃","childNum":2}},{"id":"630000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@InJm"],["@@CƒÆ½OŃĦsΰ~dz¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNΌĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoᣟÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Ó祖•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSò뚣˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbЏ•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňb̰ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌζƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg"]],"encodeOffsets":[[[105308,37219]],[[95370,40081]]]},"properties":{"cp":[95.2402, 35.4199],"name":"青海","childNum":2}},{"id":"640000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßR͌X¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀ˾iİbjÕ"],["@@mfwěwMrŢªv@G‰"]],"encodeOffsets":[[[109366,40242]],[[108600,36303]]]},"properties":{"cp":[105.9961, 37.1096],"name":"宁夏","childNum":2}},{"id":"650000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@QØĔ²X¨”~ǘBºjʐߨvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZ̓èH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYw獃{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~Ꝛf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆÂšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’ہƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FއRěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ"],"encodeOffsets":[[88824,50096]]},"properties":{"cp":[86.9023, 41.148],"name":"新疆","childNum":1}},{"id":"110000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`й­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwڍUd®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}"],"encodeOffsets":[[120023,41045]]},"properties":{"cp":[116.4551, 40.2539],"name":"北京","childNum":1}},{"id":"120000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~"],"encodeOffsets":[[120237,41215]]},"properties":{"cp":[117.4219, 39.4189],"name":"天津","childNum":1}},{"id":"310000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ɧư¬EpƸÁxc‡"],["@@©„ªƒ"],["@@”MA‹‘š"],["@@Qp݁E§ÉC¾"],["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"],["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"]],"encodeOffsets":[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]},"properties":{"cp":[121.4648, 31.2891],"name":"上海","childNum":6}},{"id":"500000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØÍ™²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBЦzG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN"],["@@ifjN@s"]],"encodeOffsets":[[[109628,30765]],[[111725,31320]]]},"properties":{"cp":[107.7539, 29.8904],"name":"重庆","childNum":2}},{"id":"810000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AlBk"],["@@mŽn"],["@@EpFo"],["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKްä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"],["@@rMUw‡AS®€e"]],"encodeOffsets":[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]},"properties":{"cp":[114.6178, 22.3242],"name":"香港","childNum":5}},{"id":"820000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@kÊd°å§s"],"encodeOffsets":[[116279,22639]]},"properties":{"cp":[113.5547, 21.6484],"name":"澳门","childNum":1}}],"UTF8Encoding":true}; \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..d0a0de8 --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,205 @@ +import * as echarts from '../../ec-canvas/echarts'; +import geoJson from './china.js'; +let App = getApp(); +// 设置数据,可以增加更多的数据参数 +function setOption(chart,scatterData,mapData) { + const option = { + layoutCenter: ['50%', '52%'], + layoutSize: '100%', + series: [ + { + type: 'map', + map: 'china', + aspectScale: 0.75, + roam:'scale', + scaleLimit:{ + min:1, + max:1.5 + }, + itemStyle: { + normal: { + areaColor: 'rgba(216,216,215,0.5)', + borderColor: '#fff', + borderWidth: 1, + }, + emphasis: { + areaColor: null , + }, + }, + label:{ + show:true, + fontSize:8, + color:'#333' + }, + emphasis: { + label: { + show: false, + color: '#333', + }, + }, + data: mapData, + }, + ], + }; + chart.setOption(option); +} +Page({ + data: { + ec: { + lazyLoad: true, + }, + scatterData:[], + mapData:[] + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + // 获取组件 + this.ecComponent = this.selectComponent('#mychart-dom-area'); + this.initChart(); + }, + // 初始化图表 + initChart() { + + this.ecComponent.init((canvas, width, height, dpr) => { + // 获取组件的 canvas、width、height 后的回调函数 + // 在这里初始化图表 + const chart = echarts.init(canvas, null, { + width: width, + height: height, + devicePixelRatio: dpr, // new + }); + // 注册中国地图数据包 + echarts.registerMap('china', geoJson); + + // 设置数据 + setOption(chart,this.data.scatterData,this.data.mapData); + + // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 + this.chart = chart; + + // 绑定点击事件 + let that = this; + chart.on('click', function (params) { + that.handleChartClick(params); + }); + + // 注意这里一定要返回 chart 实例,否则会影响事件处理等 + return chart; + }); + }, + + + handleChartClick(params) { + // 可以通过参数去数据列表中获取完整数据 params.dataIndex + console.log(params); + }, + + onLoad: function() { + // 设置页面标题 + App.setTitle(); + // 设置navbar标题、颜色 + App.setNavigationBar(); + this.getData(); + }, + onShow: function(){ + + }, + getData:function(e){ + let _this = this; + App._post_form('footchina/getIndexData', { + user_id: wx.getStorageSync('user_id'), + }, function(result) { + var rdata = result.data.data; + // var province=rdata.province; + // var provinceAreaColor=rdata.provinceAreaColor; + var province=[]; + var provinceAreaColor=[]; + province.push({name:'安徽',value:[114.54,29.41]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'安徽',value:[114.54,29.41]}); + province.push({name:'福建',value:[115.50,23.30]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'福建',value:[115.50,23.30]}); + province.push({name:'江苏',value:[116.18,30.45]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'江苏',value:[116.18,30.45]}); + province.push({name:'江西',value:[113.34,24.29]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'江西',value:[113.34,24.29]}); + province.push({name:'山东',value:[114.19,34.22]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'山东',value:[113.34,24.29]}); + province.push({name:'上海',value:[121.472644,31.231706]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'上海',value:[121.472644,31.231706]}); + province.push({name:'台湾',value:[121.520076,25.030724]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'台湾',value:[121.520076,25.030724]}); + province.push({name:'浙江',value:[120.153576,30.287459]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'浙江',value:[120.153576,30.287459]}); + province.push({name:'湖北',value:[112.2363,30.8572]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'湖北',value:[112.2363,30.8572]}); + province.push({name:'湖南',value:[111.5332,27.3779]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'湖南',value:[111.5332,27.3779]}); + province.push({name:'河南',value:[113.0668,33.8818]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'河南',value:[113.0668,33.8818]}); + province.push({name:'辽宁',value:[123.429096,41.796767]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'辽宁',value:[123.429096,41.796767]}); + province.push({name:'黑龙江',value:[126.642464,45.756967]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'黑龙江',value:[126.642464,45.756967]}); + province.push({name:'吉林',value:[125.3245,43.886841]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'吉林',value:[125.3245,43.886841]}); + province.push({name:'北京',value:[116.405285,39.904989]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'北京',value:[116.405285,39.904989]}); + province.push({name:'天津',value:[117.190182,39.125596]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'天津',value:[117.190182,39.125596]}); + province.push({name:'河北',value:[114.502461,38.045474]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'河北',value:[114.502461,38.045474]}); + province.push({name:'山西',value:[112.549248,37.857014]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'山西',value:[112.549248,37.857014]}); + province.push({name:'陕西',value:[108.948024,34.263161]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'陕西',value:[108.948024,34.263161]}); + province.push({name:'内蒙古',value:[111.670801,40.818311]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'内蒙古',value:[111.670801,40.818311]}); + + province.push({name:'宁夏',value:[106.278179,38.46637]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'宁夏',value:[106.278179,38.46637]}); + province.push({name:'广东',value:[113.280637,23.125178]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'广东',value:[113.280637,23.125178]}); + province.push({name:'广西',value:[108.320004,22.82402]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'广西',value:[108.320004,22.82402]}); + province.push({name:'香港',value:[114.173355,22.320048]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'香港',value:[114.173355,22.320048]}); + province.push({name:'澳门',value:[113.54909,22.198951]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'澳门',value:[113.54909,22.198951]}); + province.push({name:'海南',value:[110.33119,20.031971]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'海南',value:[110.33119,20.031971]}); + province.push({name:'甘肃',value:[103.823557,36.058039]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'甘肃',value:[103.823557,36.058039]}); + province.push({name:'青海',value:[101.778916,36.623178]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'青海',value:[101.778916,36.623178]}); + province.push({name:'新疆',value:[87.617733,43.792818]}); + provinceAreaColor.push({itemStyle:{areaColor: "#FAD5A2",opacity: 1},name:'新疆',value:[87.617733,43.792818]}); + _this.setData({ + // scatterData:rdata.province, + scatterData:province, + mapData:provinceAreaColor, + }); + _this.initChart(); + }); + }, + onShareAppMessage: function() { + return { + title: "科大工会健步走小程序", + desc: "", + path: "/pages/index/index" + }; + }, + goActivity:function(){ + wx.navigateTo({ + url: "/packageB/index/index" + }); + }, + goActivityRule:function(){ + wx.navigateTo({ + url: "/packageB/rule/index" + }); + } + +}); diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..a244df0 --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1,7 @@ +{ + "enablePullDownRefresh": false, + "navigationStyle": "custom", + "usingComponents": { + "ec-canvas": "../../ec-canvas/ec-canvas" + } +} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..baa7908 --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,15 @@ + + + + + + + + + 进入活动 + + + 活动规则 + + + \ No newline at end of file diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..4852ffd --- /dev/null +++ b/pages/index/index.wxss @@ -0,0 +1,40 @@ +/**index.wxss**/ +.container{ + background: url('https://minipro.luochunlvshi.com/uploads/image/shouyebeijing.png') no-repeat; + background-size: 100% auto; + position: relative; + height:100vh; + width:100%; +} +.backImage { + width: 100%; /* 根据需要设置宽度 */ + height: 100%; /* 高度自动 */ + position: absolute; /* 绝对定位 */ + top: 0; + left: 0; + z-index: -1; /* 确保图片在其他内容下方 */ +} +.joinActivity{ + width: 657rpx; + height: 159rpx; +} +.btn{ + /* background: url('https://minipro.luochunlvshi.com/uploads/images/btn.png') no-repeat; */ + background-color: #FF3838; + border-radius: 60rpx; + background-size: 100% 100%; + height:70rpx; + line-height:70rpx; + text-align:center; + width:280rpx; + color:#FFE5C0; + font-size:32rpx; + letter-spacing:10px; + margin-top:50rpx; + text-indent: 10px; + border: 2px solid #FDC87A; + margin-right: 30rpx; +} +.btn:nth-child(2){ + margin-right: 0; +} \ No newline at end of file diff --git a/pages/login/login.js b/pages/login/login.js new file mode 100644 index 0000000..e4abfb0 --- /dev/null +++ b/pages/login/login.js @@ -0,0 +1,80 @@ +const App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 授权登录(旧版弃用) + */ + getUserInfo(e) { + let _this = this; + App.getUserInfo(e, () => { + // 跳转回原页面 + _this.onNavigateBack(); + }); + }, + + /** + * 授权登录(新版) + */ + getUserProfile() { + console.log('getUserProfile') + const app = this + try { + wx.getUserProfile({ + lang: 'zh_CN', + desc: '获取用户相关信息', + success({ + userInfo + }) { + console.log('用户同意了授权') + console.log('userInfo:', userInfo) + App.getUserInfo(userInfo, () => { + // 跳转回原页面 + app.onNavigateBack(1) + }); + }, + fail() { + console.log('用户拒绝了授权') + } + }) + } catch (e) { + console.log('error:', e.message) + if (e.message === 'wx.getUserProfile is not a function') { + App.showError('wx.getUserProfile 接口无法使用,请升级到最新版微信') + } else { + App.showError(error.message) + } + } + }, + + /** + * 暂不登录 + */ + onNotLogin() { + let _this = this; + // 跳转回原页面 + _this.onNavigateBack(); + }, + + /** + * 授权成功 跳转回原页面 + */ + onNavigateBack() { + wx.navigateBack(); + }, + +}) \ No newline at end of file diff --git a/pages/login/login.json b/pages/login/login.json new file mode 100644 index 0000000..a3c4767 --- /dev/null +++ b/pages/login/login.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "授权登录" +} \ No newline at end of file diff --git a/pages/login/login.wxml b/pages/login/login.wxml new file mode 100644 index 0000000..72a7c2f --- /dev/null +++ b/pages/login/login.wxml @@ -0,0 +1,21 @@ + + + + + + + + + 申请获取以下权限 + 获得你的公开信息(昵称、头像等) + + + + \ No newline at end of file diff --git a/pages/login/login.wxss b/pages/login/login.wxss new file mode 100644 index 0000000..fb9e09f --- /dev/null +++ b/pages/login/login.wxss @@ -0,0 +1,66 @@ +page { + background: #fff; + font-size: 32rpx; +} + +.container { + padding: 0 60rpx; +} + +.wechatapp { + padding: 80rpx 0 48rpx; + border-bottom: 1rpx solid #e3e3e3; + margin-bottom: 72rpx; + text-align: center; +} + +.wechatapp .header { + width: 190rpx; + height: 190rpx; + border: 2px solid #fff; + margin: 0rpx auto 0; + border-radius: 50%; + overflow: hidden; + box-shadow: 1px 0px 5px rgba(50, 50, 50, 0.3); +} + +.auth-title { + color: #585858; + font-size: 34rpx; + margin-bottom: 40rpx; +} + +.auth-subtitle { + color: #888; + margin-bottom: 88rpx; + font-size: 28rpx; +} + +.login-btn { + padding: 0 20rpx; +} + +.login-btn button { + height: 88rpx; + line-height: 88rpx; + background: #04be01; + color: #fff; + font-size: 30rpx; + border-radius: 999rpx; + text-align: center; +} + +.no-login-btn { + margin-top: 20rpx; + padding: 0 20rpx; +} + +.no-login-btn button { + height: 88rpx; + line-height: 88rpx; + background: #dfdfdf; + color: #fff; + font-size: 30rpx; + border-radius: 999rpx; + text-align: center; +} diff --git a/pages/rank/addInfo.js b/pages/rank/addInfo.js new file mode 100644 index 0000000..5b3edf4 --- /dev/null +++ b/pages/rank/addInfo.js @@ -0,0 +1,44 @@ +var App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + // banner轮播组件属性 + indicatorDots: true, // 是否显示面板指示点 + autoplay: true, // 是否自动切换 + interval: 3000, // 自动切换时间间隔 + duration: 800, // 滑动动画时长 + imgHeights: {}, // 图片的高度 + imgCurrent: {}, // 当前banne所在滑块指针 + articleData:{} + }, + + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + let id = options.id || 0; + wx.showLoading({ title: '加载中' }); + this.get_article(id); + }, + + /** + * 获取列表 + */ + get_article: function (id) { + let _this = this; + App._post_form('footchina/getCityInfo', { + id: id + }, function(result) { + wx.hideLoading(); + var rdata = result.data.data; + _this.setData({ + articleData: rdata + }) + }); + } +}) \ No newline at end of file diff --git a/pages/rank/addInfo.json b/pages/rank/addInfo.json new file mode 100644 index 0000000..b31e600 --- /dev/null +++ b/pages/rank/addInfo.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "城市人文", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white", + "usingComponents": { + "parser":"../../components/parser/parser" + } +} \ No newline at end of file diff --git a/pages/rank/addInfo.wxml b/pages/rank/addInfo.wxml new file mode 100644 index 0000000..33c626a --- /dev/null +++ b/pages/rank/addInfo.wxml @@ -0,0 +1,19 @@ + + {{articleData.title}} + + + + + + + + + + + + + + + + diff --git a/pages/rank/addInfo.wxss b/pages/rank/addInfo.wxss new file mode 100644 index 0000000..2d09bac --- /dev/null +++ b/pages/rank/addInfo.wxss @@ -0,0 +1,12 @@ +.article { + background: #fff; + padding: 20rpx 30rpx; + font-size: 28rpx; +} +.title{padding-bottom:50rpx;font-size:40rpx;text-align: center;} + + + +/* banner组件按钮 */ +.swiper , swiper,swiper-item ,swiper-item image{width:100%;height:450rpx;} +.swiper{margin-bottom:20rpx;} \ No newline at end of file diff --git a/pages/rank/address.js b/pages/rank/address.js new file mode 100644 index 0000000..0e03661 --- /dev/null +++ b/pages/rank/address.js @@ -0,0 +1,97 @@ +// pages/topic/addList.js + +let App = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + list: [ + // { + // id:1, + // name:'洛阳', + // date:'2024.04.07' + // }, + // { + // id:2, + // name:'郑州', + // date:'2024.05.07' + // }, + // { + // id:3, + // name:'武汉', + // date:'2024.08.07' + // }, + ], + lightedList:[], + noMore: false, // 没有更多数据 + isLoading: true, // 是否正在加载中 + page: 1, // 当前页码 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.get_address_list(); + }, + + /** + * 获取地点列表 + */ + get_address_list(isPage, pageNum){ + let that = this; + wx.showLoading(); + App._post_form('footchina/getCitysNew', { + page: pageNum || 1, + user_id: wx.getStorageSync('user_id'), + }, result => { + wx.hideLoading(); + let resList = result.data.data,dataList = that.data.list; + if (isPage == true) { + that.setData({ + last_page:resList.list.last_page, + list: dataList.concat(resList.list.data), + isLoading: false, + }); + } else { + that.setData({ + list: resList.list.data, + isLoading: false, + }); + } + // let list2 = list.find(obj => condition(obj.already == 1)); + console.log('list2',this.data.list); + // that.setData({ + // lightedList:list2 + // }) + + + + }); + }, + goInfo: function (e) { + var id = e.target.dataset.id; + wx.navigateTo({ + url: "/pages/rank/addInfo?id=" + id + }); + }, + /** + * 下拉到底加载数据 + */ + onReachBottom() { + let _this = this; + // 已经是最后一页 + if (_this.data.page >= _this.data.last_page) { + _this.setData({ + noMore: true + }); + return false; + } + // 加载下一页列表 + _this.get_address_list(true, ++_this.data.page); + } + + +}) \ No newline at end of file diff --git a/pages/rank/address.json b/pages/rank/address.json new file mode 100644 index 0000000..36e932b --- /dev/null +++ b/pages/rank/address.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "点亮城市", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle":"black", + "usingComponents": {} +} diff --git a/pages/rank/address.wxml b/pages/rank/address.wxml new file mode 100644 index 0000000..0006844 --- /dev/null +++ b/pages/rank/address.wxml @@ -0,0 +1,42 @@ + + function formatDate(dateStr) { + return dateStr.substring(0, 10); + } + module.exports = { + formatDate: formatDate + }; + + + + + + {{item.name}} + + {{dateUtils.formatDate(item.create_time)}} + + + + + + + + + + 我也是有底线的~~ + + + + + 暂时没有数据! + + + + + diff --git a/pages/rank/address.wxss b/pages/rank/address.wxss new file mode 100644 index 0000000..f88070b --- /dev/null +++ b/pages/rank/address.wxss @@ -0,0 +1,40 @@ +.container{ + width:94%; + height: 100%; + margin:0 auto; + padding: 20rpx; + background-color: rgb(233, 227, 227); +} +.mapIcon{width:40rpx;height:33rpx;margin-right:20rpx;} +.suoIcon{width:40rpx;height:46rpx;} +.title{padding:20rpx 0;font-size:26rpx;} +.item{ + width:48%; + position:relative; + background-color: #ffffff; + border-radius: 20rpx; + overflow: hidden; + margin-bottom: 20rpx; +} +.item .list-itemText{ + padding: 20rpx; + display: flex; + align-items: center; + font-size: 26rpx; + font-weight: 400; + justify-content: space-between; +} +.item .thumb{ + width:94%; + height:220rpx; + margin-left: 12rpx; + /* z-index:1; */ +} +.zhezhao{ + position: absolute; + top: 81rpx; + z-index: 2; + width:100%;height:220rpx; + background:rgba(255,255,255,.4); +} +.item text{height:60rpx;line-height:60rpx;} diff --git a/pages/rank/components/banner/banner.wxml b/pages/rank/components/banner/banner.wxml new file mode 100644 index 0000000..a66b5ba --- /dev/null +++ b/pages/rank/components/banner/banner.wxml @@ -0,0 +1,12 @@ + + + + + + diff --git a/pages/rank/components/banner/banner.wxss b/pages/rank/components/banner/banner.wxss new file mode 100644 index 0000000..b3d9776 --- /dev/null +++ b/pages/rank/components/banner/banner.wxss @@ -0,0 +1,38 @@ +/* banner轮播 */ + +.diy-banner { + position: relative; +} + +/* 顶部置灰 */ + +.diy-banner .linear { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 3.4rem; + background: linear-gradient(#111, transparent); + opacity: 0.6; + z-index: 9; +} + +.swiper-box .wx-swiper-dots.wx-swiper-dots-horizontal { + margin-bottom: 2rpx; +} + +/* banner组件按钮 */ + +.swiper-box .wx-swiper-dot { + height: 20rpx; + width: 20rpx; +} + +.swiper-box.dot-rectangle .wx-swiper-dot { + width: 30rpx; + border-radius: unset; +} + +.swiper-box.dot-square .wx-swiper-dot { + border-radius: unset; +} diff --git a/pages/rank/index.js b/pages/rank/index.js new file mode 100644 index 0000000..af9de29 --- /dev/null +++ b/pages/rank/index.js @@ -0,0 +1,97 @@ +const App = getApp(); + +Page({ + data: { + currentData : 0, + page: 1, + dataList: [], + datalist:[], + datalistTwo:[], + rank:[], + noMore: false, // 没有更多数据 + isLoading: true, // 是否正在加载中 + }, + + onLoad: function() { + let _this = this; + // 获取活动列表 + _this.getRankList(false, 1); + }, + //点击切换,滑块index赋值 + checkCurrent:function(e){ + const that = this; + if (that.data.currentData === e.target.dataset.current){ + return false; + }else{ + that.setData({ + currentData: e.target.dataset.current, + dataList :[], + datalist :[], + datalistTwo :[], + page:1, + last_page:2 + }) + that.getRankList(false, 1); + } + }, + /** + * Api:获取活动列表 + */ + getRankList(isPage, pageNum) { + let _this = this; + wx.showLoading(); + App._post_form('footchina/getRankUser', { + page: pageNum || 1, + user_id: wx.getStorageSync('user_id'), + type:_this.data.currentData + }, result => { + console.log(result); + wx.hideLoading(); + let resList = result.data.data,list = _this.data.dataList; + var rank = result.data.data.rank; + if (isPage == true) { + _this.setData({ + last_page:resList.list.last_page, + dataList: list.concat(resList.list.data), + isLoading: false, + rank:rank, + // datalistTwo:this.data.datalist.slice(3), + datalistTwo:(list.concat(resList.list.data)).slice(3), + }); + + } else { + _this.setData({ + dataList: resList.list.data, + datalistTwo:resList.list.data.slice(3), + isLoading: false, + rank:rank + }); + } + + + + + }); + + }, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onShareAppMessage: function() {}, + /** + * 下拉到底加载数据 + */ + onReachBottom() { + let _this = this; + // 已经是最后一页 + if (_this.data.page >= _this.data.last_page) { + _this.setData({ + noMore: true + }); + return false; + } + // 加载下一页列表 + _this.getRankList(true, ++_this.data.page); + } + +}); \ No newline at end of file diff --git a/pages/rank/index.json b/pages/rank/index.json new file mode 100644 index 0000000..a89e635 --- /dev/null +++ b/pages/rank/index.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "排行榜", + "navigationBarBackgroundColor": "#fff", + "navigationBarTextStyle":"black", + "enablePullDownRefresh": true, + "usingComponents": { + } +} \ No newline at end of file diff --git a/pages/rank/index.wxml b/pages/rank/index.wxml new file mode 100644 index 0000000..63835e2 --- /dev/null +++ b/pages/rank/index.wxml @@ -0,0 +1,85 @@ + + + + + 总排行 + 今日排行 + + + + + + + + + + + + {{dataList[1].realname ? dataList[1].realname : ''}} + {{dataList[1].step_total ? dataList[1].step_total : 0}} + + + + + + + + + {{dataList[0].realname ? dataList[0].realname : ''}} + {{dataList[0].step_total ? dataList[0].step_total : 0}} + + + + + + + + + {{dataList[2].realname ? dataList[2].realname : ''}} + {{dataList[2].step_total ? dataList[2].step_total : 0}} + + + + + + + + + + + + + + + + + + + + + {{index + 4}} + + + {{item.realname}} + 累计{{item.singDays}}天 + + + {{item.step_total}}步 + + 我也是有底线的~~ + + + + + 暂时没有数据! + + + + + + + + \ No newline at end of file diff --git a/pages/rank/index.wxss b/pages/rank/index.wxss new file mode 100644 index 0000000..0c8fa5a --- /dev/null +++ b/pages/rank/index.wxss @@ -0,0 +1,186 @@ +page { + width: 100%; + height: 100%; + background-color:#f2f2f2; +} +.main { + width: 100%; + height: 100%; + background-image: url('https://minipro.luochunlvshi.com/uploads/image/jiankangzoupaihang.png'); + background-size: contain; + /* position: relative; */ + /* background-size: cover;*/ + background-repeat: no-repeat; + /* background-position: center; 确保图片居中显示 */ +} +.backImage { + width: 100%; /* 根据需要设置宽度 */ + height: 100%; /* 高度自动 */ + position: absolute; /* 绝对定位 */ + top: 0; + left: 0; + z-index: -1; /* 确保图片在其他内容下方 */ +} +.tab { + float: left; + width: 50%; + text-align: center; + padding: 20rpx 0; + font-weight:bold; + font-size:34rpx; +} + +.topTabSwiper { + position: relative; + top: 18%; + left: 3%; + width: 45%; + /* height: 96rpx; */ + background-color:rgba(255, 255, 255, 0.4); + /* opacity: 0.5; */ + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + zoom: 1; + border-radius: 40rpx; + color: #FFF; +} + +.topTabSwiper:after { + content: ""; + clear: both; + display: block; +} + +.tabBorer { + /* border-bottom: 1px solid #ffffff; */ + background-color: #FFF; + border-radius: 40rpx; + color: #D03020; + +} + +.threetop{ + position: relative; + top: 22%; +} + +.topThreeInfo { + position: relative; + top: 0; + display: flex; + align-items: center; + justify-content: center; +} +.topThreeInfo .second{ + margin-right: 20rpx; + display: inline; + position: relative; + top: 50rpx; + /* align-items: center; */ + justify-content: center; +} +.topImages_f{ + width: 220rpx; + height: 220rpx; + border-radius: 50%; +} +.topBase_f{ + width: 220rpx; + height: 220rpx; +} +.topImg_f{ + width: 140rpx; + height: 130rpx; + position: relative; + bottom: 86%; + left: 43rpx; + border-radius: 50%; +} +.topInfo{ + max-width: auto; + position: relative; + /* left: 48rpx; */ + align-items: center; + justify-content: center; + text-align: center; +} + +.topImages{ + width: 200rpx; + height: 200rpx; + border-radius: 50%; +} +.topBase{ + width: 200rpx; + height: 200rpx; +} +.topImg{ + width: 145rpx; + height: 144rpx; + position: relative; + bottom: 94%; + left: 27rpx; + border-radius: 50%; +} +.topInfo_f{ + max-width: auto; + position: relative; + /* left: 48rpx; */ + align-items: center; + justify-content: center; + text-align: center; +} + +.topThreeInfo .first{ + display: inline; + /* align-items: center; */ + justify-content: center; +} + + +.topThreeInfo .third{ + margin-left: 20rpx; + position: relative; + top: 50rpx; + display: inline; + align-items: center; + justify-content: center; +} + + +.topThree{ + position: relative; + top: 35%; + left: 2%; + width: 95%; + height: 171rpx; +} +.topThree .topThreeBase{ + width: 100%; + height: 171rpx; +} + +.rankList{ + position: relative; + top: 21%; +} +.swiper { + width: 100%; +} + +.swiper_con { + + text-align: center; + width: 100%; + height: 500rpx auto; + padding: 20rpx 0; +} +.top{padding-bottom:20rpx;color:#999;font-size:26rpx;} +.rank_list{padding:0 20rpx;} +.item{padding:20rpx;background-color:#FFF;margin-bottom:20rpx;} +.avatar{width:120rpx;height:120rpx;border-radius:50%;margin:0 20rpx;} +.left .username{font-size:30rpx;color:#000;padding-bottom:10rpx;} +.left .singDays{font-size:26rpx;color:#999;} +.mingci{width:60rpx;} +.mingci image{width:60rpx;height:60rpx;} +.step{color: #D03020;font-size:26rpx;font-weight:bold;} \ No newline at end of file diff --git a/pages/topic/addInfo.js b/pages/topic/addInfo.js new file mode 100644 index 0000000..65c8890 --- /dev/null +++ b/pages/topic/addInfo.js @@ -0,0 +1,38 @@ +var App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + let id = options.id || 0; + wx.showLoading({ title: '加载中' }); + this.get_article(id); + }, + + /** + * 获取列表 + */ + get_article: function (id) { + let _this = this; + App._post_form('topic/getTopicInfo', { + id: id + }, function(result) { + wx.hideLoading(); + var rdata = result.data.data; + console.log('rdatardata',rdata) + _this.setData({ + articleData: rdata + }) + }); + } +}) \ No newline at end of file diff --git a/pages/topic/addInfo.json b/pages/topic/addInfo.json new file mode 100644 index 0000000..3641019 --- /dev/null +++ b/pages/topic/addInfo.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "重走长征路", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white", + "usingComponents": { + "parser":"../../components/parser/parser" + } +} \ No newline at end of file diff --git a/pages/topic/addInfo.wxml b/pages/topic/addInfo.wxml new file mode 100644 index 0000000..03d0319 --- /dev/null +++ b/pages/topic/addInfo.wxml @@ -0,0 +1,7 @@ + + {{articleData.title}} + + + + + diff --git a/pages/topic/addInfo.wxss b/pages/topic/addInfo.wxss new file mode 100644 index 0000000..39863d6 --- /dev/null +++ b/pages/topic/addInfo.wxss @@ -0,0 +1,6 @@ +.article { + background: #fff; + padding: 20rpx 30rpx; + font-size: 28rpx; +} +.title{padding-bottom:50rpx;font-size:40rpx;} \ No newline at end of file diff --git a/pages/topic/addList.js b/pages/topic/addList.js new file mode 100644 index 0000000..7e0acc8 --- /dev/null +++ b/pages/topic/addList.js @@ -0,0 +1,55 @@ +// pages/topic/addList.js + +let App = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + list: [], + noMore: false + }, + token: '', + pageNum: 1, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.get_list(); + }, + + /** + * 获取列表 + */ + get_list: function(){ + let that = this; + wx.showLoading(); + App._post_form('topic/getDuiHuanJl', { + user_id: wx.getStorageSync('user_id'), + page: this.pageNum + }, result => { + wx.hideLoading(); + if (result.data.code == 0) { + let oldList = that.data.list; + let list = result.data.data; + let h = {}; + if(list.length < 30) h.noMore = false; + list = list.concat(oldList); + h.list = list; + that.pageNum++; + that.setData(h) + } else { + let h = {}; + h.noMore = true; + if(that.pageNum == 1) h.noMore = true; + that.setData(h) + } + }); + }, + + onReachBottom: function() { + this.data.noMore || this.get_list(); + } +}) \ No newline at end of file diff --git a/pages/topic/addList.json b/pages/topic/addList.json new file mode 100644 index 0000000..a8c8ec7 --- /dev/null +++ b/pages/topic/addList.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "步数兑换记录", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white", + "usingComponents": { + "i-empty": "../../components/empty/index" + } +} \ No newline at end of file diff --git a/pages/topic/addList.wxml b/pages/topic/addList.wxml new file mode 100644 index 0000000..6fd666e --- /dev/null +++ b/pages/topic/addList.wxml @@ -0,0 +1,8 @@ +你最近兑换的历史步数如下: + + + {{item.date}} + 已兑换步数 {{item.step}} + + +暂无内容~ \ No newline at end of file diff --git a/pages/topic/addList.wxss b/pages/topic/addList.wxss new file mode 100644 index 0000000..1664445 --- /dev/null +++ b/pages/topic/addList.wxss @@ -0,0 +1,20 @@ +.list-item { + height: 100rpx; + background: #fff; + border-bottom: 0.1rpx solid #e4e4e4; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 20rpx; +} + +.list-item span { + font-size: 28rpx; +} + +.list-item .icon-right { + width: 12rpx; + height: 22rpx; +} +.green{color:#D03020;font-size:32rpx;font-weight:bold;} +.title{height:100rpx;} \ No newline at end of file diff --git a/pages/topic/address.js b/pages/topic/address.js new file mode 100644 index 0000000..ce0653d --- /dev/null +++ b/pages/topic/address.js @@ -0,0 +1,48 @@ +// pages/topic/addList.js + +let App = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + list: [], + dangqianData: [], + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + this.get_address_list(); + }, + + /** + * 获取地点列表 + */ + get_address_list: function(){ + let that = this; + wx.showLoading(); + App._post_form('topic/getAddress', { + user_id: wx.getStorageSync('user_id'), + }, result => { + wx.hideLoading(); + var list = result.data.data.address; + var dangqianData = result.data.data.dangqianData; + that.setData({ + list, + dangqianData + }); + + + }); + }, + goInfo: function (e) { + var id = e.target.dataset.id; + wx.navigateTo({ + url: "/pages/topic/addInfo?id=" + id + }); + }, + +}) \ No newline at end of file diff --git a/pages/topic/address.json b/pages/topic/address.json new file mode 100644 index 0000000..cedbdcf --- /dev/null +++ b/pages/topic/address.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "解锁地图", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white", + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/topic/address.wxml b/pages/topic/address.wxml new file mode 100644 index 0000000..54f6af5 --- /dev/null +++ b/pages/topic/address.wxml @@ -0,0 +1,11 @@ + + 解锁地图 + + + + + {{item.name}} + + + + diff --git a/pages/topic/address.wxss b/pages/topic/address.wxss new file mode 100644 index 0000000..a15b602 --- /dev/null +++ b/pages/topic/address.wxss @@ -0,0 +1,14 @@ +.container{width:94%;margin:0 auto;} +.mapIcon{width:40rpx;height:33rpx;margin-right:20rpx;} +.suoIcon{width:40rpx;height:46rpx;} +.title{padding:20rpx 0;font-size:26rpx;} +.item{width:48%;position:relative;} +.item .thumb{width:100%;height:220rpx;z-index:1;} +.zhezhao{ + position: absolute; + top: 0; + z-index: 2; + width:100%;height:220rpx; + background:rgba(255,255,255,.4); +} +.item text{height:60rpx;line-height:60rpx;} \ No newline at end of file diff --git a/pages/topic/detail.js b/pages/topic/detail.js new file mode 100644 index 0000000..2969c32 --- /dev/null +++ b/pages/topic/detail.js @@ -0,0 +1,38 @@ +var App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + let id = options.id || 0; + wx.showLoading({ title: '加载中' }); + this.get_article(id); + }, + + /** + * 获取列表 + */ + get_article: function (id) { + let _this = this; + App._post_form('topic/getTopicDetail', { + id: id + }, function(result) { + wx.hideLoading(); + var rdata = result.data.data; + console.log('rdatardata',rdata) + _this.setData({ + articleData: rdata + }) + }); + } +}) \ No newline at end of file diff --git a/pages/topic/detail.json b/pages/topic/detail.json new file mode 100644 index 0000000..f59319e --- /dev/null +++ b/pages/topic/detail.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "活动介绍", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white", + "usingComponents": { + "parser":"../../components/parser/parser" + } +} \ No newline at end of file diff --git a/pages/topic/detail.wxml b/pages/topic/detail.wxml new file mode 100644 index 0000000..0164fca --- /dev/null +++ b/pages/topic/detail.wxml @@ -0,0 +1,6 @@ + + + + + + diff --git a/pages/topic/detail.wxss b/pages/topic/detail.wxss new file mode 100644 index 0000000..39863d6 --- /dev/null +++ b/pages/topic/detail.wxss @@ -0,0 +1,6 @@ +.article { + background: #fff; + padding: 20rpx 30rpx; + font-size: 28rpx; +} +.title{padding-bottom:50rpx;font-size:40rpx;} \ No newline at end of file diff --git a/pages/topic/index.js b/pages/topic/index.js new file mode 100644 index 0000000..266158f --- /dev/null +++ b/pages/topic/index.js @@ -0,0 +1,473 @@ + +let App = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + step:0, + userStep:0, + licheng:0, + day:0, + paiming:12143, + position:'江西瑞金', + nextPosition:'宜章', + mubiao:50, + showModel:0, + showStep:0, + polyline:[], + markers:[], + canyuNum:0, + topicInfo:[], + stepToday:0, + zdStep:0, + zgStep:0, + time:0 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + console.log('onLoad'); + this.getStepNew(); + this.setData({ + // 仅设置的属性会生效,其它的不受影响 + setting: { + enableZoom: false, + enableScroll: false, + }, + }) + this.getImageData(); + this.getAddress(); + this.getStepCountToday(); + this.getTopicInfo(); + this.getStepConfig(); + this.getStepJl(); + this.mapContext = wx.createMapContext('map'); + let _this = this; + App._post_form('topic/getLicheng', { + user_id: wx.getStorageSync('user_id') + }, function(result) { + var rdata = result.data.data; + if( rdata ){ + var a = _this.data.showModel; + _this.setData({ + showModel: !a + }) + _this.getData(); + + + } + }); + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + console.log('onShow'); + this.getStepNew(); + this.getStepJl(); + + }, + //获取用户微信运动步数 + getUserStep:function(){ + let _this = this; + App._post_form('topic/getUserStep', { + user_id: wx.getStorageSync('user_id') + }, function(result) { + var userStep = result.data.data; + console.log('userStep',userStep); + _this.setData({ + userStep: userStep + }) + }); + }, + + getStepCountToday:function(){ + let _this = this; + App._post_form('topic/getStepCountToday', { + user_id: wx.getStorageSync('user_id'), + }, function(result) { + var stepToday = result.data.data; + _this.setData({stepToday:stepToday}); + }); + + }, + + getStepJl:function(){ + let _this = this; + App._post_form('topic/getStepJl', { + user_id: wx.getStorageSync('user_id'), + }, function(result) { + var time = result.data.data; + console.log('time',time); + _this.setData({time:time}); + }); + + }, + + getStepNew:function(){ + let _this = this; + App._post_form('topic/getStep', { + user_id: wx.getStorageSync('user_id'), + }, function(result) { + var stepNew = result.data.data; + _this.setData({step:stepNew}); + }); + }, + + /** + * 获取长征路路线 + */ + getAddress: function() { + let _this = this; + App._post_form('topic/getAddress', { + user_id: wx.getStorageSync('user_id') + }, function(result) { + var rdata = result.data.data.address; + var dangqianInfo = result.data.data.dangqianData; + var rdata2 = result.data.data.result3; + let markers = [] ,polyline = [] ,points = [], points2 = [],dataPoint = []; + + + for (var i=0;i 1){ + polyline.push({ + points:points2, + color:"#D03020",//线条的颜色 + width: 5,//宽度 + }) + } + + _this.setData({ + markers: markers, + polyline:polyline + }) + }); + }, + + goLicheng:function(){ + let _this = this; + App._post_form('topic/goLicheng', { + user_id: wx.getStorageSync('user_id') + }, function(result) { + var rdata = result.data.data; + + if( rdata ){ + var a = _this.data.showModel; + wx.showToast({ + title: '加入成功', + icon: 'none', + duration: 2000 + }) + _this.setData({ + showModel: !a + }) + _this.getData(); + } + + }); + }, + goDuiHuanW:function(e){ + console.log('goDuiHuanW'); + let _this = this; + _this.getStepJl(); + let zdStep = _this.data.zdStep; + let zgStep = _this.data.zgStep; + let stepToday = _this.data.stepToday; + let time = _this.data.time; + let step = e.target.dataset.step; + let dhnum = e.target.dataset.dhnum; + let dhnumc = e.target.dataset.dhnumc; + + console.log('_this.data.time',time); + if(stepToday >= zgStep ){ + wx.showToast({ + title: '今日兑换步数已达上限'+zgStep+'步', + icon: 'none', + duration: 4000 + }) + return false; + } + if(dhnum == dhnumc ){ + wx.showToast({ + title: '今日兑换次数已用完', + icon: 'none', + duration: 4000 + }) + return false; + } + + if(0 < time && time <= 3600 ){ + wx.showToast({ + title: '再走走看吧', + icon: 'none', + duration: 4000 + }) + return false; + } + + if(step <= zdStep ){ + wx.showToast({ + title: '步数不能低于'+zdStep+'步', + icon: 'none', + duration: 4000 + }) + return false; + } + + }, + + + goDuiHuan:function(e){ + let _this = this; + _this.getStepJl(); + let zdStep = _this.data.zdStep; + let zgStep = _this.data.zgStep; + let stepToday = _this.data.stepToday; + let step = e.target.dataset.step; + let time = _this.data.time; + let dhnum = e.target.dataset.dhnum; + let dhnumc = e.target.dataset.dhnumc; + if(stepToday >= zgStep ){ + wx.showToast({ + title: '今日兑换步数已达上限'+zgStep+'步', + icon: 'none', + duration: 4000 + }) + return false; + } + if(dhnum == dhnumc ){ + wx.showToast({ + title: '今日兑换次数已用完', + icon: 'none', + duration: 4000 + }) + return false; + } + if(0 < time && time <= 3600 ){ + wx.showToast({ + title: '再走走看吧', + icon: 'none', + duration: 4000 + }) + return false; + } + if(step < zdStep ){ + wx.showToast({ + title: '步数不能低于'+zdStep+'步', + icon: 'none', + duration: 4000 + }) + return false; + } + + if(dhnum == 0 && step > zgStep){ + step = zgStep; //首次兑换 兑换步数 > 每日最高兑换步数 兑换步数 = 每日最高兑换步数 + } + + if( ( dhnum > 0 && dhnum < dhnumc ) && (step + stepToday) > zgStep){ + step = zgStep - stepToday; //第二次 或者 第三次兑换 可兑换步数 = 最高兑换步数 - 已兑换步数 + } + + App._post_form('topic/goDuiHuan', { + user_id: wx.getStorageSync('user_id'), + step:step + }, function(result) { + var rdata = result.data.data; + if( rdata.status ){ + _this.getData(); + _this.getStepCountToday(); + _this.setData({step:rdata.step}); + wx.showToast({ + title: '兑换成功', + icon: 'none', + duration: 2000 + }) + + } + + }); + + + }, + + getTopicInfo:function(){ + let _this = this; + App._get('topic/getTopicDetail', {}, function(result) { + var rdata = result.data.data; + _this.setData({topicInfo:rdata}); + }); + }, + + + /** + * 获取图片设置数据 + */ + getImageData: function() { + let _this = this; + App._get('wxapp/imageSet', {}, function(result) { + _this.setData({imageSet:result.data.new_values}); + }); + }, + + + /** + * 获取基础设置 + */ + getStepConfig: function() { + let _this = this; + App._get('wxapp/store', {}, function(result) { + console.log('result.data.values',result.data.values); + _this.setData({ + zdStep:result.data.values.zdstep, + zgStep:result.data.values.zgstep, + }); + }); + }, + + + getData:function(){ + let _this = this; + App._post_form('topic/getTopicData', { + user_id: wx.getStorageSync('user_id'), + }, function(result) { + var rdata = result.data.data; + _this.setData({ + licheng:rdata.mileage, + day:rdata.days, + paiming:rdata.sort, + position:rdata.next.dangqianAddress, + nextPosition:rdata.next.nextMubiao, + mubiao:rdata.next.mubiaoJuLi, + info:rdata.next.dangqianData, + canyuNum:rdata.canyuNum, + dhnum:rdata.dhnum, + dhnumC:rdata.config.dhnum, + }); + }); + }, + + + goInfo: function () { + wx.navigateTo({ + url: "/pages/topic/address" + }); + }, + + goXunzhang: function () { + wx.navigateTo({ + url: "/pages/topic/xunzhang" + }); + }, + goDetail: function () { + wx.navigateTo({ + url: "/pages/topic/detail" + }); + }, + goJiLu :function () { + wx.navigateTo({ + url: "/pages/topic/addList" + }); + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + console.log('onHide'); + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { +console.log('onUnload'); + }, + onPullDownRefresh: function () { + + wx.stopPullDownRefresh() + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/topic/index.json b/pages/topic/index.json new file mode 100644 index 0000000..fa4476b --- /dev/null +++ b/pages/topic/index.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "重走长征路", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white", + "enablePullDownRefresh": true, + "usingComponents": { + } +} \ No newline at end of file diff --git a/pages/topic/index.wxml b/pages/topic/index.wxml new file mode 100644 index 0000000..8bdcfc5 --- /dev/null +++ b/pages/topic/index.wxml @@ -0,0 +1,96 @@ + + + + + + 今日步数 + {{step}} + + + + + 红色经典 参与重走长征路 + 立即参与 查看路线 + + + + + + + 参与{{canyuNum}} + 活动介绍 + + + + {{info.name}} + + + + + + + + + + + {{topicInfo.licheng}}里 + + {{topicInfo.bili}} + + + + + + + 兑换里程 + {{step}} + + + + + 兑换里程 + 再走走 + + + + + 今日已兑换 + {{stepToday}} 步 + + + + + 累计行走 + {{licheng}}里 + + + 累计天数 + {{day}}天 + + + 长征排名 + {{paiming}}名 + + + 当前走到 + {{position}} + + + 下个目标 + {{nextPosition}} + + + 目标距离 + {{mubiao}}里 + + + + + diff --git a/pages/topic/index.wxss b/pages/topic/index.wxss new file mode 100644 index 0000000..f5268b2 --- /dev/null +++ b/pages/topic/index.wxss @@ -0,0 +1,94 @@ +page{background-color:#FFF;font-size: 24rpx;} +.canvas-box{width:100%;height:600rpx;} +.last-report{width:100%;height:600rpx;} +.container-box{position:relative;height:100%;} +.container{ +background-color:#FFF; +border-radius:36rpx 36rpx 0 0; + +} +.dhlc{width:160rpx;height:160rpx; + border-radius:50%; + background-color:#D03020; + border:3px solid #FFF; + margin-top:-100rpx; + z-index: 999; +} + .dhlc view{color:#FFF;} + .dhlc .text{font-size:24rpx;} + .dhlc .num1{font-size:28rpx;} + .dhlc .num{font-size:34rpx;} + .item-container{width:100%;} +.item{ + width:33.3%; + padding-bottom:20rpx; +} +.item .top{color:#999;font-size:24rpx;} +.item .bottom{color:#333;font-size:30rpx;padding-top:10rpx;} +.index-heard { + width: 750rpx; + position: relative; + overflow: hidden; +} +.center { + display: table; + margin: 0rpx auto 20rpx; + width: 309rpx; + height: 309rpx; + border-radius: 50%; + background: green; + color: #fff; + text-align: center; +} + +.mycoin { + font-size: 28rpx; + color:#333; + font-weight:bold; +} +.head-bottom{width:70%;margin:0 auto;padding:40rpx;} +.head-image{width:100%;height:400rpx;margin-bottom:50rpx;} +.ren-image{width:75rpx;height:75rpx;} +.btn{ + width:100%; + height:80rpx;line-height:80rpx; + background-color:#CB3326;border-radius:50rpx; + text-align:center;color:#FFF; + margin-top:20rpx; +} +.coin-count { + font-size: 68rpx; + color:#CB3326; + font-weight:bold; + font-family: 'DIN Alternate'; +} +.table-cell { + display: table-cell; + vertical-align: middle; +} +.canyuNum{width:200rpx;height:60rpx;background-color:#D03020;color:#FFFFFF; +font-size:24rpx;position:absolute;right:0;top:100rpx; +z-index:999;border-radius:40rpx 0 0 40rpx; +} +.canyuNum text{font-size:30rpx;padding:0 10rpx;} +.xunzhang{width:80rpx;height:60rpx;position:absolute;right:20rpx;top:200rpx;z-index:999;} +.xunzhang image{width:80rpx;height:80rpx;} +.addressInfo{width:150rpx;position:absolute;right:200rpx;top:40%;z-index:999;} +.addressInfo image{width:120rpx;height:120rpx;border-radius:10rpx;border:2px solid #FFF;} +.pt50{padding-top:50rpx;} +.pt20{padding-top:20rpx;} +.line{width:100%;height:2px;background-color:#909090;margin:5rpx 0;} +.headBg{width:100%;height:130rpx;} + +.container-map { + height: 700rpx; + width: 100%; + background-color:#f5f5f5; +} +#ec-canvas { + width: 100%; + height: 100%; +} + + + diff --git a/pages/topic/xunzhang.js b/pages/topic/xunzhang.js new file mode 100644 index 0000000..6bcc873 --- /dev/null +++ b/pages/topic/xunzhang.js @@ -0,0 +1,222 @@ +let App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + maskHidden:false, + user_info:[], + show:true + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + this.getUserInfo(); + this.formSubmit(); + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + getUserInfo: function () { + let _this = this; + App._post_form('topic/getUserInfo', { + user_id: wx.getStorageSync('user_id') + }, function(result) { + var user_info = result.data.data; + if(user_info.wancheng == 1){ + _this.setData({ + show:false + }); + } + _this.setData({ + user_info:user_info + }); + }); + }, + + /** + * 获取图片设置数据 + */ + getImageData: function() { + console.log('getImageData'); + let _this = this; + var evalatImage,avatarUrl; + App._get('wxapp/imageSet', {}, function(result) { + var imageSet = result.data.new_values; + wx.getImageInfo({ + src: imageSet.haibaibg, + success(res) { + evalatImage = res.path + wx.getImageInfo({ + src: _this.data.user_info.avatarUrl, + success(res) { + avatarUrl = res.path; + _this.createNewImg(evalatImage,avatarUrl); + } + }) + } + }) + }); + }, + //点击生成海报 + formSubmit: function (e) { + var that = this; + wx.showToast({ + title: '海报生成中...', + icon: 'loading', + duration: 1000 + }); + that.getImageData(); + setTimeout(function () { + wx.hideToast() + that.setData({ + maskHidden: true + }); + }, 1000); + }, + //将canvas转换为图片保存到本地,然后将图片路径传给image图片的src + createNewImg: function (evalatImage,avatarUrl) { + var that = this; + var user_info = that.data.user_info; + var context = wx.createCanvasContext('mycanvas'); + context.drawImage(evalatImage, 0, 0, 375, 660); + context.save();//绘制背景 + + //绘制头像 + context.beginPath(); //开始绘制 + //先画个圆,前两个参数确定了圆心 (x,y) 坐标 第三个参数是圆的半径 四参数是绘图方向 默认是false,即顺时针 + context.arc(80 / 2 + 145, 80 / 2 + 180, 80 / 2, 0, Math.PI * 2, false); + context.clip(); //画好了圆 剪切 原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内 这也是我们要save上下文的原因 + context.drawImage(avatarUrl, 145, 180, 80, 80); + context.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图问下文即状态 还可以继续绘制 + + // 昵称 + context.setFontSize(18); + context.setTextAlign('center'); + context.setFillStyle('#333'); + context.fillText(user_info.nickName,187, 300); + + //历时 + context.setFontSize(14); + context.setTextAlign('center'); + context.setFillStyle('#333'); + context.fillText('历时:'+user_info.days+'天',187, 330); + + //排名 + context.setFontSize(14); + context.setTextAlign('center'); + context.setFillStyle('#333'); + context.fillText('排名:'+user_info.sort+'名',187, 360); + + //历时日期 + context.setFontSize(14); + context.setTextAlign('center'); + context.setFillStyle('#333'); + context.fillText(user_info.date,187, 390); + + context.draw(true);//true表示保留之前绘制内容 + //将生成好的图片保存到本地,需要延迟一会,绘制期间耗时 + setTimeout(function () { + wx.canvasToTempFilePath({ + canvasId: 'mycanvas', + success: function (res) { + var tempFilePath = res.tempFilePath; + that.setData({ + imagePath: tempFilePath + }); + }, + fail: function (res) { + console.log(res); + } + }); + }, 1000); + }, + //文本换行 + dealWords(options) { + options.ctx.setFontSize(options.fontSize);//设置字体大小 + var allRow = Math.ceil(options.ctx.measureText(options.word).width / options.maxWidth);//实际总共能分多少行 + var count = allRow >= options.maxLine ? options.maxLine : allRow;//实际能分多少行与设置的最大显示行数比,谁小就用谁做循环次数 + var endPos = 0;//当前字符串的截断点 + for (var j = 0; j < count; j++) { + var nowStr = options.word.slice(endPos);//当前剩余的字符串 + var rowWid = 0;//每一行当前宽度 + if (options.ctx.measureText(nowStr).width > options.maxWidth) {//如果当前的字符串宽度大于最大宽度,然后开始截取 + for (var m = 0; m < nowStr.length; m++) { + rowWid += options.ctx.measureText(nowStr[m]).width;//当前字符串总宽度 + if (rowWid > options.maxWidth) { + if (j === options.maxLine - 1) { //如果是最后一行 + options.ctx.fillText(nowStr.slice(0, m - 1) + '...', options.x, options.y + (j + 1) * 25); //(j+1)*20这是每一行的高度 + } else { + options.ctx.fillText(nowStr.slice(0, m), options.x, options.y + (j + 1) * 25); + } + endPos += m;//下次截断点 + break; + } + } + } else {//如果当前的字符串宽度小于最大宽度就直接输出 + options.ctx.fillText(nowStr.slice(0), options.x, options.y + (j + 1) * 25); + } + } + }, + //点击保存到相册 + baocun: function () { + var that = this + wx.saveImageToPhotosAlbum({ + filePath: that.data.imagePath, + success(res) { + wx.showModal({ + content: '图片已保存到相册,赶紧晒一下吧~', + showCancel: false, + confirmText: '好的', + confirmColor: '#333', + success: function (res) { + if (res.confirm) { + console.log('用户点击确定'); + /* 该隐藏的隐藏 */ + that.setData({ + maskHidden: false + }) + } + }, fail: function (res) { + console.log(11111) + } + }) + } + }) + } +}) + + + + + diff --git a/pages/topic/xunzhang.json b/pages/topic/xunzhang.json new file mode 100644 index 0000000..5477947 --- /dev/null +++ b/pages/topic/xunzhang.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "运动步数榜", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white", + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/topic/xunzhang.wxml b/pages/topic/xunzhang.wxml new file mode 100644 index 0000000..df4e347 --- /dev/null +++ b/pages/topic/xunzhang.wxml @@ -0,0 +1,10 @@ + + + 未完成,继续努力 + + + + + + + \ No newline at end of file diff --git a/pages/topic/xunzhang.wxss b/pages/topic/xunzhang.wxss new file mode 100644 index 0000000..a1cffcc --- /dev/null +++ b/pages/topic/xunzhang.wxss @@ -0,0 +1,89 @@ + +page{ background:#fff;} + .zhezhao{ + position: absolute; + top: 0; + z-index: 999; + width:100%;height:100%; + background:rgba(255,255,255,.4); +} +.suoIcon{width:80rpx;height:92rpx;padding-bottom:10rpx;} +.imagePathBox{ + width: 100%; + height: 100%; + background:#fff; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 99; +} +.mask{ + width: 100%; + height: 100%; + /* background: rgba(255,255,266,0.5); */ + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 90; +} +.shengcheng{ + width: 80%; + height: 80%; + position: fixed; + top: 50rpx; + left: 50%; + margin-left: -40%; + z-index: 10; +} +.baocun{ + display: block; + width: 80%; + height: 80rpx; + padding: 0; + line-height: 80rpx; + text-align: center; + position: fixed; + bottom: 50rpx; + left: 10%; + background: #D03020; + color: #fff; + font-size: 32rpx; + border-radius: 44rpx; +} + +.shareFriends{ + display: block; + width: 80%; + height: 104rpx; + padding: 0; + line-height: 80rpx; + text-align: center; + position: fixed; + bottom: 50rpx; + left: 10%; + background: #D03020; + color: rgb(211, 208, 208); + font-size: 32rpx; + border-radius: 44rpx; +} + + +button[class="baocun"]::after{ + border: 0; +} + +/* canvas绘图 */ +/* .canvas-box{ + width:0rpx; + height:0rpx; + overflow: hidden; + position: fixed; + left:0rpx; + bottom:30rpx; + z-index: 99; +} */ + \ No newline at end of file diff --git a/pages/user/index.js b/pages/user/index.js new file mode 100644 index 0000000..b797971 --- /dev/null +++ b/pages/user/index.js @@ -0,0 +1,187 @@ +const App = getApp(); + +Page({ + + /** + * 页面的初始数据 + */ + data: { + userInfo: {}, + isLogin: false, + showModal: false, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + this.getUserDetail(); + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + let _this = this; + _this.setData({ + isLogin: App.checkIsLogin() + }); + this.getUserDetail(); + }, + + /** + * 获取当前用户信息 + */ + getUserDetail() { + let _this = this; + App._post_form('user.index/detail', { + user_id: wx.getStorageSync('user_id') + }, result => { + _this.setData(result.data); + }); + }, + /** + * 菜单列表导航跳转 + */ + onTargetMenus(e) { + let _this = this; + if (!_this.onCheckLogin()) { + return false; + } + wx.navigateTo({ + url: '/' + e.currentTarget.dataset.url + }) + }, + /** + * 验证是否已登录 + */ + onCheckLogin() { + let _this = this; + if (!_this.data.isLogin) { + App.showError('很抱歉,您还没有登录'); + return false; + } + return true; + }, + + /** + * 退出登录 + */ + toClear() { + console.log('退出登录'); + // wx.clearStorageSync() + wx.clearStorageSync('openId'); + wx.clearStorageSync('token'); + wx.clearStorageSync('userInfo'); + // getApp().globalData.userInfo = null; + console.log('退出登录22') + + wx.switchTab({ + url: '/pages/index/index' + }); + + wx.showToast({ + title: '已退出', + icon: 'none' + }); + + }, + + //登陆按钮 + loginUser: function () { + let _this = this; + _this.setData({ + showModal: true + }); + }, + //取消登录 + loginClose: function () { + let _this = this; + _this.setData({ + showModal: false, + modalInput:"" + }); + }, + bindIdCard: function (e) { + this.setData({ + idcard: e.detail.value + }) +}, + //登录接口 + checkIdCard: function () { + let _this = this; + let idCard = _this.data.idcard; + if (idCard == undefined) { + wx.showModal({ + title: "提示", + content: "身份证号不能为空", + success: function (a) { + + } + }); + return false; + } + let user_id = wx.getStorageSync('user_id'); + + App.getUserInfoByIdCard(idCard, (user_id) => { + _this.getUserProfile(user_id); + this.getUserDetail(); + this.getUserProfile(); + _this.setData({ + showModal: false, + isLogin: App.checkIsLogin() + }) + }); +}, + + /** + * 获取用户微信信息 + */ + getUserProfile(user_id) { + if (!user_id) { + let user_id = wx.getStorageSync('user_id'); + } + + const app = this + try { + wx.getUserProfile({ + lang: 'zh_CN', + desc: '获取用户相关信息', + success({ + userInfo + }) { + console.log('用户同意了授权') + console.log('userInfo:', userInfo) + App.getUserInfo(userInfo, user_id, () => { + app.Updatestep(); + }); + }, + fail() { + console.log('用户拒绝了授权--微信授权') + } + }) + } catch (e) { + console.log('error:', e.message) + if (e.message === 'wx.getUserProfile is not a function') { + App.showError('wx.getUserProfile 接口无法使用,请升级到最新版微信') + } else { + App.showError(error.message) + } + } + + }, + + /** + * 编辑 + */ + jumpEdit: function () { + let _this = this; + if (!_this.onCheckLogin()) { + return false; + } + wx.navigateTo({ + url: "/packageA/user/editProfile" + }) + } +}) \ No newline at end of file diff --git a/pages/user/index.json b/pages/user/index.json new file mode 100644 index 0000000..74c8285 --- /dev/null +++ b/pages/user/index.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "个人中心", + "navigationBarBackgroundColor": "#D03020", + "navigationBarTextStyle":"white" +} \ No newline at end of file diff --git a/pages/user/index.wxml b/pages/user/index.wxml new file mode 100644 index 0000000..ea07582 --- /dev/null +++ b/pages/user/index.wxml @@ -0,0 +1,148 @@ + + + + + + + + + + + + 一附院职工账号绑定 + + 确定 + + + + + + + + + + + + + + + + + + + + + + + 没有名字哦~ + 登录 + + + + + + + + + 真实姓名:{{userInfo.realname}} + + + 电话:{{userInfo.phone}} + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+
+ +
+
+ +
+
+ + + + 退出登录 + + + +
\ No newline at end of file diff --git a/pages/user/index.wxss b/pages/user/index.wxss new file mode 100644 index 0000000..d182821 --- /dev/null +++ b/pages/user/index.wxss @@ -0,0 +1,353 @@ +/* 用户信息 */ +.user { + width: 100%; + position: absolute; + /* background: #fff; */ + /* top: 100rpx; */ +} + +.user .user-head{ + position: relative; + width: 100%; + height: 449px; + /* background: url(https://lanhu-oss-2537-2.lanhuapp.com/MasterDDSSlicePNGedbd6501d371eab1e7fb79a6ed560a77.png) + 100% no-repeat; */ + background-size: 100% 100%; +} +.user .headBackImage{ + width: 100%; + height: 400rpx; + z-index: -1; +} +.user-header { + /* width: 400rpx; */ + width: 85%; + height: 150rpx; + margin: 52rpx 0 20rpx 30rpx; + align-content: center; + position: absolute; + top: 50rpx; + /* padding-top: 1px; + background-color: #29C3AF; + background-repeat: no-repeat; + background-position: center right; + background-size: auto 100%;*/ +} + +.user-header .user-header-cont { + display: flex; + margin: auto; + margin-bottom: 40rpx; + width: 100%; + align-items: center; + border-radius: 50%; +} +.user-header .user-header-cont .user-header-avatar { + /* display: block; */ + margin-right: 30rpx; + width: 140rpx; + height: 140rpx; + border-radius: 50%; + overflow: hidden; + /* overflow: hidden; */ +} + +.user-header .user-header-cont .user-header-avatar image { + width: 140rpx; + height: 140rpx; + border-radius: 50%; +} + +.user-header .user-header-cont .user-header-cont-name { + /* font-size: 32rpx; + width: 200rpx auto; + padding: 20rpx 0; + color:#FFF; */ + width: 144rpx; + height: 28rpx; + overflow-wrap: break-word; + color: rgba(255, 255, 255, 1); + font-size: 36rpx; + font-family: PingFang SC-Heavy; + font-weight: 900; + text-align: center; + white-space: nowrap; + line-height: 28rpx; + margin-top: 6rpx; +} + +.user-header .user-header-cont .loginUser { + width: 160rpx; + height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + /* bottom: 50rpx; */ + background: linear-gradient(to right,#25ca9f,#2ebcc0); + right: 2%; + color: #ffffff; + font-size: 33rpx; + border-radius: 36rpx; +} + +.user-header .user-header-avatar-info{ + width: 620rpx; + height: 144rpx; + background-color: #383c57; + border-radius: 24rpx; + position: absolute; + left: 0rpx; + top: 160rpx; + padding: 30rpx 40rpx; + align-items: center; + display: flex; + align-items: center; + justify-content: space-between; +} + +.user-real{ + margin: auto; + margin-bottom: 20rpx; + margin-top: 40rpx; + width: 79%;color:#FAD9AF; + font-size: 36rpx; + /* margin: auto; + margin-bottom: 20rpx; + margin-top: 40rpx; + background-image: linear-gradient( + 180deg, + rgba(255, 244, 221, 1) 0, + rgba(248, 205, 155, 1) 100% + ); + overflow-wrap: break-word; + width: 100%; + font-size: 36rpx; + font-weight: 900; + text-align: left; + white-space: nowrap; + line-height: 38px; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; */ +} +.user-real2{ + margin: auto; + margin-bottom: 20rpx; + width: 79%;color:#FAD9AF; + font-size: 28rpx; + /* margin: auto; + margin-bottom: 20rpx; + background-image: linear-gradient( + 180deg, + rgba(255, 244, 221, 1) 0, + rgba(248, 205, 155, 1) 100% + ); + overflow-wrap: break-word; + width: 100%; + font-size: 24rpx; + font-weight: normal; + text-align: left; + white-space: nowrap; + line-height: 38rpx; + margin-top: 14rpx; + + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; */ +} + +.user-real3{ + background-image: linear-gradient( + 270deg, + rgba(247, 239, 209, 1) 0, + rgba(239, 223, 187, 1) 100% + ); + border-radius: 112px; + height: 60rpx; + width: 144rpx; + margin: 10rpx 30rpx 0 0; +} + +.editbtn { + width: 56rpx; + height: 38rpx; + overflow-wrap: break-word; + color: rgba(61, 61, 61, 1); + font-size: 28rpx; + font-family: PingFang SC-Regular; + font-weight: normal; + text-align: left; + white-space: nowrap; + line-height: 38rpx; + margin: 13rpx 0 0 45rpx; +} +/* 订单导航栏 */ +.order-navbar { + position: absolute; + left: 19rpx; + bottom: -125rpx; + margin: auto; + padding: 15rpx 0; + width: 95%; + box-shadow: 0 1rpx 5rpx 0px rgba(0, 0, 0, 0.05); + font-size: 30rpx; + border-top: 1rpx solid #eee; + border-radius: 5rpx; + background: #fff; +} + +.order-navbar-header { + margin: auto; + padding-bottom: 10rpx; + width: 91%; + height: 70rpx; + border-bottom: 1px solid #eee; + justify-content: space-between; + align-items: center; +} + +.order-navbar-footer { + width: 100%; + padding: 10rpx 0px; +} + +.order-navbar-footer .order-navbar-item .order-navbar__icon { + text-align: center; + margin: 0 auto; + display: block; + padding: 10rpx 0; + color: #000; + font-size: 36rpx; +} + +.order-navbar-footer .order-navbar-item .order-navbar__name { + display: block; + font-size: 24rpx; + color: #666; + text-align: center; + margin-right: 10rpx; +} + +.order-navbar-footer .order-navbar-item .order-badge { + position: absolute; + top: 0; + right: 55rpx; + font-size: 22rpx; + background: #ff495e; + text-align: center; + line-height: 28rpx; + color: #fff; + border-radius: 100%; + min-height: 30rpx; + min-width: 30rpx; + padding: 1rpx; +} + +/* 菜单列表 */ +.menus-list{ + position: absolute; + top: 540rpx; + left: 38rpx; +border-radius: 20rpx; + width: 92%; + margin-top: 100px; + margin:0 auto; + z-index:99; + margin-top: -25rpx; + overflow: hidden; +} +.menus-list .menus-item { + position: relative; + padding: 28rpx 28rpx; + border-bottom: 1rpx solid #eee; +} + +.menus-list .menus-item .imageUser{ + width: 39rpx; + height: 39rpx; + +} + +.menus-list .menus-item .menus-item__name { + color: #444; + margin-left: 20rpx; +} + +.exit{ + background-color: rgba(255, 255, 255, 1); + border-radius: 20rpx; + height: 105rpx; + width: 93%; + margin: 21rpx 0 0 30rpx; + position: absolute; + top: 900rpx; +} + +.exit .exitBtn{ + width: 128rpx; + height: 28rpx; + overflow-wrap: break-word; + color: rgba(61, 61, 61, 1); + font-size: 32rpx; + font-family: PingFang SC-Regular; + font-weight: normal; + text-align: left; + white-space: nowrap; + line-height: 28rpx; + margin: 39rpx 0 0 281rpx; +} + +.mask{ + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + background: #000; + z-index: 9000; + opacity: 0.7; + } + .modalDlg{ + width: 580rpx; + height: 680rpx; + position: absolute; + top: 50%; + left: 0; + z-index: 9999; + margin-top:290rpx; + margin-left:90rpx; + background-color: #fff; + border-radius: 36rpx; + display: flex; + flex-direction: column; + align-items: center; + overflow:hidden; + } + .modalDlg .closeBox { + /* width: 100%; + height: 56rpx; */ + /* margin-top: 20rpx; */ + } + .modalDlg .closeBox image { + width: 40rpx; + height: 40rpx; + position: absolute; + right: 4%; + top: 20rpx; + } + .modalDlg text{margin-top:40rpx;} + .modalDlg image{width:100%;height:280rpx;} + .modalInput{width:90%;height:60rpx;line-height:60rpx;border:1px solid #999;border-radius:10rpx;margin-top:40rpx;padding-left:10rpx;font-size:24rpx;} + .bao { + width: 300rpx; + height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + bottom: 50rpx; + background: linear-gradient(to right,#25ca9f,#2ebcc0); + left: 140rpx; + color: #ffffff; + font-size: 33rpx; + border-radius: 36rpx; + } diff --git a/pages/user/sign.js b/pages/user/sign.js new file mode 100644 index 0000000..389ec22 --- /dev/null +++ b/pages/user/sign.js @@ -0,0 +1,133 @@ +const App = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + count:1, + goodsInfo:[] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + var aid = options.aid; + this.getSignRecord(aid); + this.getBuSignAuth(aid); + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + /** + * 获取签到记录 + */ + getSignRecord: function (aid) { + let _this = this; + App._post_form('goods/getSignRecord', { + user_id:wx.getStorageSync('user_id'), + aid: aid, + }, function(result) { + _this.setData({ + selectedDays: result.data.data + }) + }); + }, + + /** + * 获取是否有补签权限 + */ + getBuSignAuth: function (aid) { + let _this = this; + App._post_form('goods/getBuSignAuth', { + user_id:wx.getStorageSync('user_id'), + aid: aid, + }, function(result) { + + let goodsInfo = result.data.goodsInfo; + let date = Date.parse( new Date() ).toString(); + date = date.substr(0,10);//精确到秒 + if( date > goodsInfo.starttime && date < goodsInfo.endtime ){ + _this.setData({ + count: result.data.count, + }) + } + + + }); + }, + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + }, + /** + * 点击日期时候触发的事件 + * bind:getdate + */ + getdate(e) { + console.log(e.detail); + }, + /** + * 点击全选触发的事件 + * bind:checkall + */ + checkall(e) { + console.log(e.detail.days); + }, + /** + * 点击确定按钮触发的事件 + * bind:select + */ + cmfclick(e){ + console.log(e.detail.selectDays); + }, + /** + * 点击清空事件 + * bind:clear + */ + clear(e) { + console.log("要清空选中日期") + } +}) \ No newline at end of file diff --git a/pages/user/sign.json b/pages/user/sign.json new file mode 100644 index 0000000..d74894f --- /dev/null +++ b/pages/user/sign.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "我的统计", + "usingComponents": { + "calendar": "/components/calendar/calendar" + } +} \ No newline at end of file diff --git a/pages/user/sign.wxml b/pages/user/sign.wxml new file mode 100644 index 0000000..731e93e --- /dev/null +++ b/pages/user/sign.wxml @@ -0,0 +1,18 @@ + + + + + + + + + + +
+ +
+
+ +
\ No newline at end of file diff --git a/pages/user/sign.wxss b/pages/user/sign.wxss new file mode 100644 index 0000000..597be47 --- /dev/null +++ b/pages/user/sign.wxss @@ -0,0 +1,26 @@ +/* pages/user/sign.wxss */ +.button-hover { + background-color: none; +} +button { + padding: 0; + margin: 0; + border-radius: 0; + background: none; + line-height: normal; +} + +button::after { + content: none; +} +.baomica { + background: linear-gradient(#25ca9f,#2ebcc0); + width: 257rpx; + height: 73rpx; + border-radius: 50rpx; + display: flex; + justify-content: center; + align-items: center; + color: #ffffff; + font-size: 34rpx; +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json new file mode 100644 index 0000000..8c5ee6c --- /dev/null +++ b/project.private.config.json @@ -0,0 +1,25 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "%E7%A7%91%E5%A4%A7%E5%B7%A5%E4%BC%9A%E5%81%A5%E6%AD%A5%E8%B5%B0", + "setting": { + "compileHotReLoad": false, + "urlCheck": false, + "coverView": true, + "lazyloadPlaceholderEnable": false, + "skylineRenderEnable": false, + "preloadBackgroundData": false, + "autoAudits": false, + "useApiHook": true, + "useApiHostProcess": true, + "showShadowRootInWxmlPanel": true, + "useStaticServer": true, + "useLanDebug": false, + "showES6CompileOption": false, + "checkInvalidKey": true, + "ignoreDevUnusedFiles": true, + "bigPackageSizeSupport": true, + "useIsolateContext": true + }, + "libVersion": "3.8.9", + "condition": {} +} \ No newline at end of file diff --git a/siteinfo.js b/siteinfo.js new file mode 100644 index 0000000..c224e0c --- /dev/null +++ b/siteinfo.js @@ -0,0 +1,7 @@ +/** + * 配置文件 + */ +module.exports = { + name: "科大工会健步走", + siteroot: "https://minipro.luochunlvshi.com/", // 必填: api地址,结尾要带/ +}; \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..ca02add --- /dev/null +++ b/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/utils/common.wxss b/utils/common.wxss new file mode 100644 index 0000000..6dd55c4 --- /dev/null +++ b/utils/common.wxss @@ -0,0 +1,343 @@ +/* iconfont */ +@import "/utils/iconfont.wxss"; + +.container, input { + font-family: PingFang-Medium, + PingFangSC-Regular, + Heiti, + Heiti SC, + DroidSans, + DroidSansFallback, + "Microsoft YaHei", + sans-serif; + -webkit-font-smoothing: antialiased; +} + +.b-f { + background: #fff; +} + +.tf-180 { + -moz-transform: rotate(-180deg); + -ms-transform: rotate(-180deg); + -o-transform: rotate(-180deg); + transform: rotate(-180deg); +} + +.tf-90 { + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} + +.dis-block { + display: block; +} + +.dis-flex { + display: flex !important; + /* flex-wrap: wrap; */ +} + +.flex-box { + flex: 1; +} + +.flex-dir-row { + flex-direction: row; +} + +.flex-dir-column { + flex-direction: column; +} + +.flex-x-center { + /* display: flex; */ + justify-content: center; +} + +.flex-x-between { + justify-content: space-between; +} + +.flex-x-around { + justify-content: space-around; +} + +.flex-x-end { + justify-content: flex-end; +} + +.flex-y-center { + align-items: center; +} + +.flex-y-end { + align-items: flex-end; +} + +.flex-five { + box-sizing: border-box; + flex: 0 0 50%; +} + +.flex-three { + float: left; + width: 33.3%; +} + +.flex-four { + box-sizing: border-box; + flex: 0 0 25%; +} + +.t-l { + text-align: left; +} + +.t-c { + text-align: center; +} + +.t-r { + text-align: right; +} + +.p-a { + position: absolute; +} + +.p-r { + position: relative; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +.clear::after { + clear: both; + content: " "; + display: table; +} + +.oh { + overflow: hidden; +} + +.tb-lr-center { + display: -webkit-box; + display: -ms-flexbox; + display: flex !important; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.f-34 { + font-size: 34rpx; +} + +.f-32 { + font-size: 32rpx; +} + +.f-31 { + font-size: 31rpx; +} + +.f-30 { + font-size: 30rpx; +} + +.f-29 { + font-size: 29rpx; +} + +.f-28 { + font-size: 28rpx; +} + +.f-26 { + font-size: 26rpx; +} + +.f-25 { + font-size: 25rpx; +} + +.f-24 { + font-size: 24rpx; +} + +.f-22 { + font-size: 22rpx; +} + +.f-w { + font-weight: 700; +} + +.f-n { + font-weight: 400; +} + +.col-f { + color: #fff; +} + +.col-3 { + color: #333; +} + +.col-6 { + color: #666; +} + +.col-7 { + color: #777; +} + +.col-8 { + color: #888; +} + +.col-9 { + color: #999; +} + +.col-m { + color: #ff495e !important; +} + +.col-s { + color: #be0117 !important; +} + +.col-green { + color: #0ed339 !important; +} + +.cont-box { + padding: 20rpx; +} + +.cont-bot { + margin-bottom: 120rpx; +} + +.padding-box { + padding: 0 24rpx; + box-sizing: border-box; +} + +.pl-12 { + padding-left: 12px; +} + +.pr-12 { + padding-right: 12px; +} + +.pr-6 { + padding-right: 6px; +} + +.m-top4 { + margin-top: 4rpx; +} + +.m-top10 { + margin-top: 10rpx; +} + +.m-top20 { + margin-top: 20rpx; +} + +.p-bottom { + padding-bottom: 112rpx; +} + +.onelist-hidden { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.twolist-hidden { + display: -webkit-box; + word-break: break-all; + text-overflow: ellipsis; + overflow: hidden; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.b-r { + border-right: 1rpx solid #eee; +} + +.b-b { + border-bottom: 1rpx solid #eee; +} + +.b-t { + border-top: 1rpx solid #eee; +} + +.ts-1 { + -moz-transition: all 0.1s; + -o-transition: all 0.1s; + transition: all 0.1s; +} + +.ts-2 { + -moz-transition: all 0.2s; + -o-transition: all 0.2s; + transition: all 0.2s; +} + +.ts-3 { + -moz-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; +} + +.ts-5 { + -moz-transition: all 0.5s; + -o-transition: all 0.5s; + transition: all 0.5s; +} + +/* 无样式button (用于伪submit) */ + +.btn-normal { + display: block; + margin: 0; + padding: 0; + line-height: normal; + background: none; + border-radius: 0; + box-shadow: none; + border: none; + font-size: unset; + text-align: unset; + overflow: visible; +} + +.btn-normal:after { + border: none; +} + +.btn-normal.button-hover { + color: inherit; +} diff --git a/utils/iconfont.wxss b/utils/iconfont.wxss new file mode 100644 index 0000000..e07179b --- /dev/null +++ b/utils/iconfont.wxss @@ -0,0 +1,160 @@ +@font-face {font-family: "iconfont"; + src: url('//at.alicdn.com/t/font_948567_7qt13mxhklx.eot?t=1547714036925'); /* IE9 */ + src: url('//at.alicdn.com/t/font_948567_7qt13mxhklx.eot?t=1547714036925#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAABtgAAsAAAAAMUAAABsSAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCIAgrMZLwqATYCJAOBFAtMAAQgBYRtB4MxG+8nRaTZrJYfZP8fEugYg2sbWgVIFM0wzTZl024pbDll3TeeYYVgcj8dm+uyRv8abuExh3iJEIa69SdKg/9MkMcMpeShWOP39u6+qiKJRCTikeniCVolQQvMYsPzc/s/594Lu/cu73bHRq6IEkeU9bfBqBE1sHiO2h7oiNSeDRhviAUWRsQT9CHm/4AS+gWjvt9IrKQAAsK8B/4JAOZAgfv/1jT1A9tWMiTvjaRAy04B+HCFgQVywCm5RL5orpqrwLDLNi9CqMgDPVbVLbdIg0ERf8P2O3HDncXptiXBApvTHHMZkJ/waRefNOfYsq04iXxDv3gZLkIFsAWsf69TVytE5Z3olYcFV9w2fUmBr6+AIfANQVbZToF5QxqlsOL0KpWdkp0yzu0ydtiWjh22vVDTRh3QP7BgtPHh5Q7ZNC5FNod1LIhdBCkNpi96awKNRi2L69v4dFCvYjcXiJfPTNmgPmZVcbqF+pRapN2qMb4BG/XFF6QTX+nvj/8211OoKdm39eCxNg+cJ5q/0NdDFhPL+cBSHYXZHiWWUVFcogVxrPTxMiWNmHoV7Vg1rtJaVWDrsyX7kjPLl+3ad+TYqdaLTy4/6XzS+2Tgye0nD548HgpZpja0N3xpnxMtbdN1POlZWTYNqw6zGbodvtvn0LHbXnfd/894TKg3acq0UKgzrlSjVoNGTZq1aNWmXYdOXbr16NWn34BBQ4ZVRowZJWrB7M0QPy+V0yR6BSZIW6CeZACTJA5MkWy+mGQHQJAioCCTRcWlTADGyXKgJJcCNeQyoJbcBTSQ+4BG8gjQRB4DmskTQAt5EmglTwFtZAvQTrYCHWQb0EmeA7rIdqCbPA/0kBeAXvIi0EdeBvrJDmCA7AQGyR5giOwFhskBoCJvAyPkA2CMfFzHKJhxvdzHd6D5AwBtj9i2GKd11Gk0rGFXwg0xUuxeLKS4kto9ylGqVhGJFC5dzuFQoUBlPaYSz06inLBAWYh1clt5jDomk8SJhUnAhDcjSQpFIlaA3ImCgyIeu1Ay8SjjwRa2I2GXslgCrHl8IyhxcJhMIZewmvmsYdtGjCWmaSHN7lEXmHT1xjyGw24q2NOPPSpkdeBtqKeXjGzE6nFw8nCRu8E+VkdJpd6iMTxWOps5nBsgZhqTsBcq5AtoB1o0Ax/rdnKwJzjwSGRDg3F3AyDcvId01hHQOrIAh/4peqeX/5XEjxgn1kpCGzKZt0JFJ8HUYw5aBzSLvnr2KLOkEprk1V/dDWklb12CU6u/hREfCOWsvpNoLokBz2tteWAtjJthodH7zlsvAvnMWnWNECwVAjlp2C5hG0DJBQiIIGozTO/Ajva9Sms+unyf5jZkw8C0xWAU+qb/RT80uIxZNCGR/cqrtsyacnow42MpKA2npyiefuvqFpRK0VrzVTQ6NLxUQgf3RaNWs9uuNzrv21FzKPv1wR7dY6brKGT5rBlcg6QlT6muP7Ut00YWvbNoZJtJlUrUajKplP6kbK49bqvoLqmopoaH2UWQiADu4/oMQygRwEpUCdLaMsRqlFHygdBWLMjwLSjYJU3YW8cIhXPjkeCJ4GkfpmqS+c5vi0y905k5ypbc8BokN+J7sXe5+Yr8yfOvM2Xw85IOn39n6vAXslaQG7fuxblN5G1QL8nGgBSjRt1/99b3L7fmIBzigmm2SPHi387o4FaJ7DbDVo9A1GmIehsX44KpVqv3cUEOYTIcFc8bzCIyq8whhVnGTAQVbwHvyrXXEBDrC/ne5jw0N/a3wYKAJZcGluwo7Ph6xWAVX/rHBQ7/G0pqrV/8ZWz3Z5A4uEB6hxXa8u4veKYDjIxsDPCoyr0O8RKM3e4jIAaERMssykEi8P2iPjde7ZycRWLtozGt28PPTcp2FFaJxqRhvjEtS73OSYQZbRW1Fmr/pY1wM1oXa776OGrH2supzWpTg+Wlsk0oadgN1kZ6FS+ZAhJxqOPPlAqNCySP7f9Bdx7Por/nHUfijAtrYj3aDDfKGTf4rhzCeJiNDF5zVew0Ru54/wkyGa42txnvdTiUheabqTUhFH6fZA5ax+cg62+dcCEOc9ixl8nwD3fprt3usGtpiFIOiJtjPpbQo2h+Bwb8VH7z2Pw80M7PbguaRJYfz3SWQGedrt+BFAWqkY7we+4p9X714Ei4bgxXYfcbPd+VsZOiHF2cMm55j8Dll35PTSwHu4SnZYfSOtef8OBiCQBEPDv45lOWdhY05ZQ6utodMn2//48enmNpAcWRSjcmXAdmTsTJbp+rfmX2ZJLiDdjuqsbVA8G/fmSenw/URXdAhVf2hALeY+z8DrcfTbQ/+q5j6bSpG8bMOC5sm54MbaRRyeom/9x2Gs4nCu/DE0L26XEzDnnIA1NyyK33Frf02yysOG7wjn+7d+syd+8LnFXvEf/BGs6NYcMfVox0lpXWEV+d6Dzz5IqrI6y1ollPd3ot5p+TD7qqsbV5taNLrqrrDg8206hFo8npnoa62zd7UW3qXf1TvtNgRNEd77bN/C5rusrZfuR3XWB3K7NTkWBUwHXPNpn/4xo8ya1tGqekSk+6SjU0r8l4lEKWDoeMXkIXliunUmij3sBkd2gNPB3ZFgOfbKQkjm205DVYWd3MYESYmnHtNMif4O49q6H9G+59eNvBRFsMJg+lUbvl2szMEGH34I+FzJ3R4bA9pBzWrYFqI6S+VlpF3HnDMzAeFa63cfG1zfGwy95VAwKR5cRkmc68rjq4ABEPeHRjwOI7JysOXuUxaKBK9gCb6LXm0JyZUlVNnD4CBZkpnFKy09nN9FaDG47mNw7fXLS58mp9S5yGcuBAfCN5KMlL6VNofHwCiO5xLMeZ3d/CgVLp7rtZWukfLVUg4Gk5nM58BsmwmmjWk/rveqS/H79u8nlRlmZbpuvAb8AYpp5DxMrh9hm+NcD+aICA6MshQDjyRWOh14I0k6y/+BdmaVDlOzt849+StnSkchKw9Lnn/3s2Ff/vW8r8LgaMMBBEgJTrP5HylyPDNWPGjH4+bAmykeWxv4sxyDW0P/gG4al908u1SvOavDKz3D9A9WCBjIlES8bDw4d+/sGZMdLvaAPsZG4PvYrH6n+54vHj34TgC1uyMdz9x2EcS4Nti6/a61xfpSuaUlWv4U2eyRG0f2VQstmrTxJrwZj3WqN78p3TwFvuLXGiVJDDuX3F/XJmbKXOPG4MkQiZQny4GFZPeRA9MHqA/9v50AsL2ZKk08Qjw/vZP42le7oToI5HZAHuKMl2HQaxmehB9IKzRNa4MgBzzijdsR9n5eXF9OjXDAgJTaYnMsqS7SiAyTLvwWkMy8UtHBlcRyk01uU20X+8WirGKxwtc9V+ncLKsqo3NIHVzoK+cO+7AUvl/UFeTJWrkyhLAu8Vf/9mhD8uSpWgulnoh5ZtWL70z9y+JT2W7gx1giw1FZBAspx8+dTj59KMO9PaveSobrPFbfTc71ntXKSDg44jWlV7U+2PGrNJZK175Gmc29O3ZeahYQbX1Nm9vSX+HlAKAW4U0dyrFUfzGsYvycKruJ4N10QoK/xmCs4+xrO2jJBosBIK/l5Efyl7u1D5xivlXkjekCqdI+VHxLyKTzcMBibGUZCIx3+vumXICm/C8YZ8UdRazakalM9xsVF7DbcN6LsDpIsXu3w1OQhLT5s/Mu10HUujykANKEeqX83d3Gt4+vrlhfLFv4EDcZl02t9emPIifPuSv2g+LFgWO9oDyvSAFHWNYrXXKg5tyLWbtwUbgzMelSd6fWUeP364G9nMwr2rCShEPF1ecNz+ATzkhHQoYW+Zz/eId8bqHSHQ0P/gHrufc+/BfrKL7iL3WwMc+x3kzf1Wf8eDxF3BXfIg+54dEEA0i9PPFo10ULAXE9uh3fqnyXIzy8DSSTe735CIN92mN9HOb4a+aZWT/QT/1Mh+DPUzFB5zzORd+i5pJiani2iPjCrsrDputtwVdCWR7H63agC1EtY0tvIOpzuJJ7l1glJ3TmB3PvSX8jY2UhjyjSVnD3Jk7EzW7oV1XIi34IP4aeJzExKI1OfFDCxaGoZGYBgaiYZhQSjGYCy0clHM1nBEBGL3tGXiuQh/calcZVCnRVK2sgi1+elQ6cEDxQH8SyPa5l9z+dh2NDgY3Y656dpsxzwqjjFgSIA8JBVzc8NMOzjEGjzThqmaqWKmj7JlJo/KernRIZNVpGqy1NUtWLWLtwjm86rl+aSeI/foyyw4GuOydf+DAJbMWcYKWPtzK3dkqKsxEmftlBEtVCu/JQ1i7/BOXifVAjvWfbEmdzII28XzKojXNLBX97RFQ27ebMWbOHtS/2RMnsywqbQhD/ml2VRhZHNr2zj85FICDMcEFEJhUoofvC4+JWXs2ySgEZUcCoRQhkmFfCQgAOELpIx361CVDBEIEBmmFPBRBsanEYUCoUFo4s1shNQlQYbkBKQZJCu0Hk6F4fmz54CD8T7xktej1Xsr6fWtnJEgudsqiUYTRXGz4R9NPb/F5YZ8YDFdSy8e0A5U00+oekABRktnhwY/W7gtIo/sFHaSlfgVkebVqP96WcfmKkLZly4l/Dsx/Y/ENPSjy3J6Dx3UfekSJ6gkkrHcSTZuGTv+ov1FHRuwdZpaPNuWPfG4/fEJ9hNirU8EQYNFaKNgN91I7xc00bvVJHIs9BhZ07y7uYbcT1SPhCb77W+OdqlxiW7WfGLXsKOva/E6bL/NdLwGn26zH6vDy2QPAp0DXSDwoGzLjXMdrOvsjrYb3a9ZvcOWiiuAETzif537uf4rfERVAagw3WjrYF9ndZy70dMiJm+xm0YZ4WcRnlRBI/WwAk3ulnITTANV1GeqmhCThAx8mHKjuyU7vaWnLqtgGiu4ilWEiXolwdIXSkcFYaiMLnvEuGUfmWVWMvbgSvw0fovRVBJypLBZQbhz+nLEpcv9n83NFuutdu4v5gLraFXcnyd9E+3IFbP4Ne41bheX12xlupd8lqABEO7f4k7eFd4lXcuCPUZaF4FfOoV3QPypTOKA6AAxldCCdHwa8UL0gkh6um3RSlVwqS4Ox2UrnUtLw/p4nZFpunOh267PjYsTi7P/bc9uFPXbBQQF6S/tLgjflJTzR3qCR8j1+6DB8VRI8D3HWyRomWxxihjVfa+tlXWTaMEB8xhris2umYq8pUlcEcwAY/EWxuEE8bwbw074wClvD3mrY8Y/H3MpTSu0lOxhAE8HRIXO9XLJ3FBRyGq+zPyb+zeT+8oMt8+2z4/mMdh1vR9N/+BqG2IPETFyHLMcB3N//cMcj2IohN6PUVtNU4zozKr/93AioRpE2s4+tNxsayVSLyYlJVsbI6Oc3ocGZbJ4E+kctOLU0Sgh6N4a7hUbS7YVgpgHGazMoND3UU6RjVFJE5eNjSlsA+Q4V1U2yBnsfr+NJZdLaY10LMBd1Y/41Nqc3NqkyuABTBaXCtAtN/u3oKT197cfUmU6ARgITqyszc2toeS9EQ3bFLqSqJzstTz5ceYJOVWzW8mIK1FsQ96AeHRZa+syktBTEVkW66Lxc9fBvDxIkg4Ei4X6AgwxsXZ2MTHZ2bExtraxsWBkM1YR+q2tglYySiyOIjvpTjIh78GedcHBjdvHN/r9GEmguC3OxSK1SsUHskt4l3lrKimp5cbVeM+TJ+ldl6PFzh5TLedsm7lq1iTN9I+7lgR8QesTFnzg/XPZnHQZsI9q4hi7ebsZULvYEBISyYtsdS27iZMuEi3BG3mN+M+afozk7uYBx4bRCzgLCz6HCe0MnoWfs6PnFH/wTPawifEaUTbK+erBfOQqr/LyfzmtMbEdrbcUZ+pnOGtPjnxWu0DQrK54XvdtzcJQTPwtcKN9CGbL1e3MGI2JNwV+tV83uK2WeDm/Qm2l58d5p8bkS7sQ45Ujldorie5Pj9AwAkvqzyheWHuB/+M0hqVLcNsKlB8soTkeFdUk7/TfIFp1EtFqNFHICVUM2Gq/mkFpqh8AEOYsWJAD4fAU2WuwdEk+vwsaQV0drMz1DIV6UDtBs8F5ywFw4cLFixkeuaHCTzjMKz8pyegdBgIi0tryWQ3Fq9bYOjsbmT75UzRc1RjgvmXbeq7qX2DCMud81uLBYMdrB/mnpYPuICLayU5BJzmgbdG/KDLuhnsHYT3d4BCXxSMVzTnNgeRIMrD5MmvIfoh1WRkRIRgpaKrMkfp/Yx6LeyhrlxPGBsxXDhD1/Ss8S1uQPXJCWBk7y3CmRwpYNQ1r3OxsMYC46QMGoo+GV608mu6YJUgJ4E3WxJePyVM2McDKYsseag8BctZJYmP0g3qQDrQgLXWv/N/Ilt1yfaqe+x+uXhezVjIPEHuovcEXmlyySSMz6/P4Q6AQZnr/N/Djjq+pGsaOjwGXMjxN8NB48JmZRRpdspt8dfPHpRA8KThI+oxkHqShNLJgCvHxEaTht+MYKqA8ZJVK4xmvQLW7yjdBeFgcYwAJ3mUfQ0BIglGvTzSFhnwqB0m+OUAcIzzsm+CuAiNlO7ErJHnFKzGSxK6EulNXBT3Mp87yK8GyRX6xEBxDBwex49ixwccMFr3osdHS0kfR/oQgGtCus7XwwnY2xSZEHOFlLPgB51FUGUQK8jA1A4lIuNailEHL4KAViDwXnxiGzZqF1SMgXL1Wvf3QMouoMj5x/wTJOhFHkYckyVNt3OeG92tKkiQOz2Tbv67MkxRNLXJ56pI1NUvCOXx7pIvMb4cLACNGq/ylftuj/jcjvkvSpXM44Sl1tINA+irI+1rktWFO3oA49f/370B49susknebh9e/uz6S9fFxnrt7gpwCRsWCVb4OAyUzDM8J35m8kbHQKfDhbvH4+MLCMQ7sLROYcNxg1mABZFasYDuMMUMUYpOCs0obNx5qW954fmKBbqEwDIzgfzrhg+stThY97rOfeU9w9dCIPJG+lJ6rZ+T5W1+y7A8UeCN7pE7SPYjP9O9L7FRSWvAFQYzmKwvEDB3zDn2HqfM88NeBIGe9Erxi6cRhAnZv4rPgsl1QsOv0Qvkk/4iQoGhXjXYGyEQ3dPU0ocmOH9ANMDNyhpsmMDrOlJ71YOp4eaJSExwQ9S9VeRxSd+zkYhQW/6B1IFZVplAFRGkm6vRUVwZX33vliCvMKC5Nh2mwpBRmQP3SlQZB4ElQobJg5ZQHUIOMsVADS5oawoX+dmryLLb7DKZOi5QnW0ASUtHYWI4YoLVUlEVnxe/U+4JC6do1MhNabGOy8bLVR1IsK1iztkAyNP3bWEfr9X3D4BOCUSNLEBqmg1SYVTUvi5xos6yAP4EzceLqcQ5K6RqceROsGsgZexgMmyekqyLKmCS36VYQ0LscFEQtENDmF2Ng2XcmYDfaCYR2jRxAkuUBRjsRuPjqc+CiWAjQnffu7exS9O49bGfiu0QP1M0PGA3evuW/feOWsgJtb0dXwA76LEXPtyMrjDUl8OPc0RNV9Bu6ekuY91V7vlUdbTXRoH6SITAhMFGRoHCf1sZzpBwoR17mNEN8KemP2LcY4a0MnzY4SUzX4fEZbKPrJitoH5V54Yh/1GmjXfoCYOVOcy3AoI39evsSUd7Fn2v8+0d4MWLphVLT/QdrkQXGmuJ1IqP9KmdsdFA1D4Q+bGFtv35rHZrssE/egJRrmF6MVMHA0Jayag8dmYM466xrlmhxA//a3sCIGHlbrqjEsqskWaxOpOhxiuZlKS7tLlW2JBs4FEd6jadZSeaSdjhRHGMr6iGGNgfAq4mw4E8kGSYWFCTBpBBdFBILCxODlFqtgFaEUhWBofMytpr+MCMrViDUMq9oMEND0YYGGFFYuaKjPQUWm2FaVheZU6EB0szmfmgQs6HqnT6dO5Wr1w9WDabrJVVqfcaJPBVEqzCesoo28zC/6l16umSqJF3iuFCVnnHcaNhFEVM1qNdzq7j69HfSR69S6fUVGVArh7PlDnK2P5vvEKBa/qNNFon4wSmg6upno8xsQ3zQCK0msdhktVSnmrzmceXOCsddXjffUo3j1RYkOtObcWlILOmm2CHiOJ01rayXkJYGi4uRtBAWJV7TB1QqcMo+ofhXQ2/MiUm+ZolajU4UvOLanRJ2Jvep7gjN9Az5d15KQK9uhMQNWybmuB8NW9cmc4RghpYt4/SBPZo9oI8jc6DYfQ4JSefOJSQ69rGpfEF7PGIsgxn1qOdYXfemtgL03uDWGX4TQ5ZlmsoE/1vEs7/1o0MNV7F6B3US1Q41SeQyj6HD77jcD+YM/err7JmG9rqGxlDTf5KGULcE0bkADD1yH3WChtq9RtUAAIA+xPoc1YUm9LuvGZV024fO6fNeN2px3LIDetxW2+eHs2iF/ZfnRWUAoHGoqY6uJ12aaehT9+4lY++yliDSbS86395qbp0ICz3a7S1y2nHTCdJjCG1x9MlVyXXLZhlHCtIXF6DHALRPs3toaNk/2lAV9NngFBpd0eI8qi3SrRc5X7XDdrTs/1IaA9cmOJZP4o76hDP/faW43/jHR2odOthPHvMBADhAgO2EAPzPiRkb4ph+J74mXGxu2LNwRV2wZHzFCZLf15yhT9hGPliNALyC/dxgrDkLN2UFGp3N+L+UnE5/7UjukeZcXB8TzAGFOiOOUv1/m3DAVKHLuOY1eRsG1Kp3NqDRkpdrN+kSLYuqAYu+tAGh3feAQqsfA0rtfpgq9HdAjV7/A2q1Bzqg0cPHOpvMRsHWQwSZQYtyJlBRayojb3lzvoLlWsZoAu39CTFhsRj4KZPVL9BCrEIjje0wZyNMpEY8a7cHdU0iRKpA5a7LOYx6w42YZldRs7DlSgSk7A6pCaXZ2EghLbP3bCv1618Bi9WkyFnqy9ifQJTg+QsDXX0J5oW0UktVxT0Zs4YyoYa4LhiRhvBMKKidCiIEvKEKULIuV6AsGOmRtRlZ0q0/uVlGxORbpt32TCBRRhU1URt1UR8Nfx/45qI5WqI12qI9lV+QLmxXVNy+Q8dOnbuUlJaVV3Tt1t35Ky5RUuFZ4tyxbG2QWCOcYCjgqJCRtzbHGdu8okYYfbrFvKklGi4ma9e1JGdpbVriCSsHg+Vsrbd4MyZH7JgC94CtrVBuaFrfBHCwmq8xD1bcGXeMbB0j2mzJG0aOKWKGTU81rRiKzYaBdoo1mDfc/SAx+XDlT6jDctl4p8qbaTNxR1GYrThqYLOWFUqWLTcyrE87mcEa1pOCDSnHa4k4Me0zXTPivOJai+xFuTOfNYsEcYwK1mbUWsfrN66uAYuN1olrrcqfwcIC') format('woff2'), + url('//at.alicdn.com/t/font_948567_7qt13mxhklx.woff?t=1547714036925') format('woff'), + url('//at.alicdn.com/t/font_948567_7qt13mxhklx.ttf?t=1547714036925') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('//at.alicdn.com/t/font_948567_7qt13mxhklx.svg?t=1547714036925#iconfont') format('svg'); /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + /* font-size: 16px; */ + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-tubiao_kuaizhuangpailie:before { + content: "\e616"; +} + +.icon-tubiao_liebiaopailie:before { + content: "\e617"; +} + +.icon-ziyuan:before { + content: "\e673"; +} + +.icon-cate:before { + content: "\e6d9"; +} + +.icon-cart:before { + content: "\e68c"; +} + +.icon-daifukuan:before { + content: "\e68d"; +} + +.icon-daohang:before { + content: "\e650"; +} + +.icon-gouwuche1:before { + content: "\e606"; +} + +.icon-add:before { + content: "\e6a8"; +} + +.icon-daishouhuo:before { + content: "\e6ac"; +} + +.icon-daipingjia:before { + content: "\e6b2"; +} + +.icon-dingwei1:before { + content: "\e6b4"; +} + +.icon-edit1:before { + content: "\e6b6"; +} + +.icon-edit:before { + content: "\e6b7"; +} + +.icon-fanhuidingbu:before { + content: "\e6b8"; +} + +.icon-favorite:before { + content: "\e6bb"; +} + +.icon-favorites:before { + content: "\e6bc"; +} + +.icon-form:before { + content: "\e6c0"; +} + +.icon-fenxiang:before { + content: "\e6c1"; +} + +.icon-haoping2:before { + content: "\e6c2"; +} + +.icon-help:before { + content: "\e6c3"; +} + +.icon-huo:before { + content: "\e6c4"; +} + +.icon-jiantou-copy:before { + content: "\e6c5"; +} + +.icon-home:before { + content: "\e6c7"; +} + +.icon-lajixiang:before { + content: "\e6cb"; +} + +.icon-map:before { + content: "\e6cc"; +} + +.icon-profile:before { + content: "\e6d1"; +} + +.icon-shanchu:before { + content: "\e6d2"; +} + +.icon-sousuo:before { + content: "\e6db"; +} + +.icon-xiangyoujiantou:before { + content: "\e6e4"; +} + +.icon-cart_b:before { + content: "\e6e0"; +} + +.icon-icon_service:before { + content: "\e657"; +} + +.icon-yonghu:before { + content: "\e603"; +} + +.icon-fenlei_:before { + content: "\e607"; +} + +.icon-gouwuche:before { + content: "\e608"; +} + +.icon-shouye:before { + content: "\e60d"; +} diff --git a/utils/login.js b/utils/login.js new file mode 100644 index 0000000..0adb184 --- /dev/null +++ b/utils/login.js @@ -0,0 +1,10 @@ +module.exports = function(e) { + var g; + if ((g = getCurrentPages()).length) { + var r = g[g.length - 1]; + r && "pages/login/login" != r.route && wx.setStorageSync("login_pre_page", r); + } + wx.redirectTo({ + url: "/pages/login/login" + }); +}; \ No newline at end of file diff --git a/utils/md5.js b/utils/md5.js new file mode 100644 index 0000000..209bff5 --- /dev/null +++ b/utils/md5.js @@ -0,0 +1,58 @@ +function r(r) { + return h(n(i(r), r.length * A)); +} + +function n(r, n) { + r[n >> 5] |= 128 << n % 32, r[14 + (n + 64 >>> 9 << 4)] = n; + for (var t = 1732584193, a = -271733879, i = -1732584194, h = 271733878, v = 0; v < r.length; v += 16) { + var A = t, l = a, d = i, g = h; + a = c(a = c(a = c(a = c(a = o(a = o(a = o(a = o(a = e(a = e(a = e(a = e(a = u(a = u(a = u(a = u(a, i = u(i, h = u(h, t = u(t, a, i, h, r[v + 0], 7, -680876936), a, i, r[v + 1], 12, -389564586), t, a, r[v + 2], 17, 606105819), h, t, r[v + 3], 22, -1044525330), i = u(i, h = u(h, t = u(t, a, i, h, r[v + 4], 7, -176418897), a, i, r[v + 5], 12, 1200080426), t, a, r[v + 6], 17, -1473231341), h, t, r[v + 7], 22, -45705983), i = u(i, h = u(h, t = u(t, a, i, h, r[v + 8], 7, 1770035416), a, i, r[v + 9], 12, -1958414417), t, a, r[v + 10], 17, -42063), h, t, r[v + 11], 22, -1990404162), i = u(i, h = u(h, t = u(t, a, i, h, r[v + 12], 7, 1804603682), a, i, r[v + 13], 12, -40341101), t, a, r[v + 14], 17, -1502002290), h, t, r[v + 15], 22, 1236535329), i = e(i, h = e(h, t = e(t, a, i, h, r[v + 1], 5, -165796510), a, i, r[v + 6], 9, -1069501632), t, a, r[v + 11], 14, 643717713), h, t, r[v + 0], 20, -373897302), i = e(i, h = e(h, t = e(t, a, i, h, r[v + 5], 5, -701558691), a, i, r[v + 10], 9, 38016083), t, a, r[v + 15], 14, -660478335), h, t, r[v + 4], 20, -405537848), i = e(i, h = e(h, t = e(t, a, i, h, r[v + 9], 5, 568446438), a, i, r[v + 14], 9, -1019803690), t, a, r[v + 3], 14, -187363961), h, t, r[v + 8], 20, 1163531501), i = e(i, h = e(h, t = e(t, a, i, h, r[v + 13], 5, -1444681467), a, i, r[v + 2], 9, -51403784), t, a, r[v + 7], 14, 1735328473), h, t, r[v + 12], 20, -1926607734), i = o(i, h = o(h, t = o(t, a, i, h, r[v + 5], 4, -378558), a, i, r[v + 8], 11, -2022574463), t, a, r[v + 11], 16, 1839030562), h, t, r[v + 14], 23, -35309556), i = o(i, h = o(h, t = o(t, a, i, h, r[v + 1], 4, -1530992060), a, i, r[v + 4], 11, 1272893353), t, a, r[v + 7], 16, -155497632), h, t, r[v + 10], 23, -1094730640), i = o(i, h = o(h, t = o(t, a, i, h, r[v + 13], 4, 681279174), a, i, r[v + 0], 11, -358537222), t, a, r[v + 3], 16, -722521979), h, t, r[v + 6], 23, 76029189), i = o(i, h = o(h, t = o(t, a, i, h, r[v + 9], 4, -640364487), a, i, r[v + 12], 11, -421815835), t, a, r[v + 15], 16, 530742520), h, t, r[v + 2], 23, -995338651), i = c(i, h = c(h, t = c(t, a, i, h, r[v + 0], 6, -198630844), a, i, r[v + 7], 10, 1126891415), t, a, r[v + 14], 15, -1416354905), h, t, r[v + 5], 21, -57434055), i = c(i, h = c(h, t = c(t, a, i, h, r[v + 12], 6, 1700485571), a, i, r[v + 3], 10, -1894986606), t, a, r[v + 10], 15, -1051523), h, t, r[v + 1], 21, -2054922799), i = c(i, h = c(h, t = c(t, a, i, h, r[v + 8], 6, 1873313359), a, i, r[v + 15], 10, -30611744), t, a, r[v + 6], 15, -1560198380), h, t, r[v + 13], 21, 1309151649), i = c(i, h = c(h, t = c(t, a, i, h, r[v + 4], 6, -145523070), a, i, r[v + 11], 10, -1120210379), t, a, r[v + 2], 15, 718787259), h, t, r[v + 9], 21, -343485551), + t = f(t, A), a = f(a, l), i = f(i, d), h = f(h, g); + } + return Array(t, a, i, h); +} + +function t(r, n, t, u, e, o) { + return f(a(f(f(n, r), f(u, o)), e), t); +} + +function u(r, n, u, e, o, c, f) { + return t(n & u | ~n & e, r, n, o, c, f); +} + +function e(r, n, u, e, o, c, f) { + return t(n & e | u & ~e, r, n, o, c, f); +} + +function o(r, n, u, e, o, c, f) { + return t(n ^ u ^ e, r, n, o, c, f); +} + +function c(r, n, u, e, o, c, f) { + return t(u ^ (n | ~e), r, n, o, c, f); +} + +function f(r, n) { + var t = (65535 & r) + (65535 & n); + return (r >> 16) + (n >> 16) + (t >> 16) << 16 | 65535 & t; +} + +function a(r, n) { + return r << n | r >>> 32 - n; +} + +function i(r) { + for (var n = Array(), t = (1 << A) - 1, u = 0; u < r.length * A; u += A) n[u >> 5] |= (r.charCodeAt(u / A) & t) << u % 32; + return n; +} + +function h(r) { + for (var n = v ? "0123456789ABCDEF" : "0123456789abcdef", t = "", u = 0; u < 4 * r.length; u++) t += n.charAt(r[u >> 2] >> u % 4 * 8 + 4 & 15) + n.charAt(r[u >> 2] >> u % 4 * 8 & 15); + return t; +} + +var v = 0, A = 8; + +module.exports = { + hex_md5: r +}; \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..6f80fa4 --- /dev/null +++ b/utils/util.js @@ -0,0 +1,21 @@ +// tool.js +// some tool function +let app = getApp() +function rpx2px(rpxNum) { + return rpxNum * app.globalData.rpx2px; +} + +function t(t) { + return (t = t.toString())[1] ? t : "0" + t; +} + + + + +module.exports = { + rpx2px: rpx2px, + formatTime: function(e) { + var n = e.getFullYear(), o = e.getMonth() + 1, r = e.getDate(), u = e.getHours(), i = e.getMinutes(), g = e.getSeconds(); + return [ n, o, r ].map(t).join("/") + " " + [ u, i, g ].map(t).join(":"); + } +}; \ No newline at end of file diff --git a/version.json b/version.json new file mode 100644 index 0000000..731efdc --- /dev/null +++ b/version.json @@ -0,0 +1,3 @@ +{ + "version": "1.0.15" +} diff --git a/weui.wxss b/weui.wxss new file mode 100644 index 0000000..8b3b0eb --- /dev/null +++ b/weui.wxss @@ -0,0 +1,6 @@ +/*! + * WeUI v2.5.0 (https://github.com/weui/weui-wxss) + * Copyright 2021 Tencent, Inc. + * Licensed under the MIT license + */ +[data-weui-theme=light],page{--weui-BTN-DISABLED-FONT-COLOR:rgba(0,0,0,.2)}[data-weui-theme=dark]{--weui-BTN-DISABLED-FONT-COLOR:hsla(0,0%,100%,.2)}[data-weui-theme=light],page{--weui-BTN-DEFAULT-BG:#f2f2f2}[data-weui-theme=dark]{--weui-BTN-DEFAULT-BG:hsla(0,0%,100%,.08)}[data-weui-theme=light],page{--weui-BTN-DEFAULT-COLOR:#06ae56}[data-weui-theme=dark]{--weui-BTN-DEFAULT-COLOR:hsla(0,0%,100%,.8)}[data-weui-theme=light],page{--weui-BTN-DEFAULT-ACTIVE-BG:#e6e6e6}[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG:hsla(0,0%,100%,.126)}[data-weui-theme=light],page{--weui-DIALOG-LINE-COLOR:rgba(0,0,0,.1)}[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR:hsla(0,0%,100%,.1)}page{line-height:1.6;font-family:-apple-system-font,Helvetica Neue,sans-serif}icon{vertical-align:middle}.weui-input__placeholder{color:var(--weui-FG-2)}[data-weui-theme=light],page{--weui-BG-0:#ededed;--weui-BG-1:#f7f7f7;--weui-BG-2:#fff;--weui-BG-3:#f7f7f7;--weui-BG-4:#4c4c4c;--weui-BG-5:#fff;--weui-FG-0:rgba(0,0,0,.9);--weui-FG-HALF:rgba(0,0,0,.9);--weui-FG-1:rgba(0,0,0,.5);--weui-FG-2:rgba(0,0,0,.3);--weui-FG-3:rgba(0,0,0,.1);--weui-RED:#fa5151;--weui-ORANGE:#fa9d3b;--weui-YELLOW:#ffc300;--weui-GREEN:#91d300;--weui-LIGHTGREEN:#95ec69;--weui-BRAND:#07c160;--weui-BLUE:#10aeff;--weui-INDIGO:#1485ee;--weui-PURPLE:#6467f0;--weui-WHITE:#fff;--weui-LINK:#576b95;--weui-LINK-ACTIVE:rgba(87,107,149,.5);--weui-TEXTGREEN:#06ae56;--weui-FG:#000;--weui-BG:#fff;--weui-TAG-TEXT-ORANGE:#fa9d3b;--weui-TAG-BACKGROUND-ORANGE:rgba(250,157,59,.1);--weui-TAG-TEXT-GREEN:#06ae56;--weui-TAG-BACKGROUND-GREEN:rgba(6,174,86,.1);--weui-TAG-TEXT-BLUE:#10aeff;--weui-TAG-BACKGROUND-BLUE:rgba(16,174,255,.1);--weui-TAG-TEXT-BLACK:rgba(0,0,0,.5);--weui-TAG-BACKGROUND-BLACK:rgba(0,0,0,.05)}[data-weui-theme=dark]{--weui-BG-0:#111;--weui-BG-1:#1e1e1e;--weui-BG-2:#191919;--weui-BG-3:#202020;--weui-BG-4:#404040;--weui-BG-5:#2c2c2c;--weui-FG-0:hsla(0,0%,100%,.8);--weui-FG-HALF:hsla(0,0%,100%,.6);--weui-FG-1:hsla(0,0%,100%,.5);--weui-FG-2:hsla(0,0%,100%,.3);--weui-FG-3:hsla(0,0%,100%,.05);--weui-RED:#fa5151;--weui-ORANGE:#c87d2f;--weui-YELLOW:#cc9c00;--weui-GREEN:#74a800;--weui-LIGHTGREEN:#3eb575;--weui-BRAND:#07c160;--weui-BLUE:#10aeff;--weui-INDIGO:#1196ff;--weui-PURPLE:#8183ff;--weui-WHITE:hsla(0,0%,100%,.8);--weui-LINK:#7d90a9;--weui-LINK-ACTIVE:rgba(125,144,169,.5);--weui-TEXTGREEN:#259c5c;--weui-FG:#fff;--weui-BG:#000;--weui-TAG-TEXT-ORANGE:rgba(250,157,59,.6);--weui-TAG-BACKGROUND-ORANGE:rgba(250,157,59,.1);--weui-TAG-TEXT-GREEN:rgba(6,174,86,.6);--weui-TAG-BACKGROUND-GREEN:rgba(6,174,86,.1);--weui-TAG-TEXT-BLUE:rgba(16,174,255,.6);--weui-TAG-BACKGROUND-BLUE:rgba(16,174,255,.1);--weui-TAG-TEXT-BLACK:hsla(0,0%,100%,.5);--weui-TAG-BACKGROUND-BLACK:hsla(0,0%,100%,.05)}[data-weui-theme=light],page{--weui-BG-COLOR-ACTIVE:#ececec}[data-weui-theme=dark]{--weui-BG-COLOR-ACTIVE:#373737}[class*=" weui-icon-"],[class^=weui-icon-]{display:inline-block;vertical-align:middle;font-size:10px;width:2.4em;height:2.4em;-webkit-mask-position:50% 50%;mask-position:50% 50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor}.weui-icon-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-download{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.25%2012.04l-1.72-1.72-1.06%201.06%202.828%202.83a1%201%200%20001.414-.001l2.828-2.828-1.06-1.061-1.73%201.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55%200%20.999.446.999.996v13.008a.998.998%200%2001-.996.996H4.996A.998.998%200%20014%2021.004V7.996A1%201%200%20014.999%207h6.251z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M11.25%2012.04l-1.72-1.72-1.06%201.06%202.828%202.83a1%201%200%20001.414-.001l2.828-2.828-1.06-1.061-1.73%201.73V7h-1.5v5.04zm0-5.04V2h1.5v5h6.251c.55%200%20.999.446.999.996v13.008a.998.998%200%2001-.996.996H4.996A.998.998%200%20014%2021.004V7.996A1%201%200%20014.999%207h6.251z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-info{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.75-12v7h1.5v-7h-1.5zM12%209a1%201%200%20100-2%201%201%200%20000%202z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.75-12v7h1.5v-7h-1.5zM12%209a1%201%200%20100-2%201%201%200%20000%202z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-safe-success{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.6C315.5%2046.7%20180.4%2093.1%2057.6%20132c0%20129.3.2%20231.7.2%20339.7%200%20304.2%20248.3%20471.6%20443.1%20523.7C695.7%20943.3%20944%20775.9%20944%20471.7c0-108%20.2-210.4.2-339.7C821.4%2093.1%20686.3%2046.7%20500.9%204.6zm248.3%20349.1l-299.7%20295c-2.1%202-5.3%202-7.4-.1L304.4%20506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3%205-2.8%207.2-1l112.2%2086c2.3%201.8%206%201.7%208.1-.1l274.7-228.9c2.2-1.8%205.7-1.7%207.7.3l17%2016.8c2.2%202.1%202.2%205.3.2%207.4z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23070202%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.6C315.5%2046.7%20180.4%2093.1%2057.6%20132c0%20129.3.2%20231.7.2%20339.7%200%20304.2%20248.3%20471.6%20443.1%20523.7C695.7%20943.3%20944%20775.9%20944%20471.7c0-108%20.2-210.4.2-339.7C821.4%2093.1%20686.3%2046.7%20500.9%204.6zm248.3%20349.1l-299.7%20295c-2.1%202-5.3%202-7.4-.1L304.4%20506.1c-2-2.1-2.3-5.7-.6-8l18.3-24.9c1.7-2.3%205-2.8%207.2-1l112.2%2086c2.3%201.8%206%201.7%208.1-.1l274.7-228.9c2.2-1.8%205.7-1.7%207.7.3l17%2016.8c2.2%202.1%202.2%205.3.2%207.4z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23070202%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-safe-warn{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.5c-185.4%2042-320.4%2088.4-443.2%20127.3%200%20129.3.2%20231.7.2%20339.6%200%20304.1%20248.2%20471.4%20443%20523.6%20194.7-52.2%20443-219.5%20443-523.6%200-107.9.2-210.3.2-339.6C821.3%2092.9%20686.2%2046.5%20500.9%204.5zm-26.1%20271.1h52.1c5.8%200%2010.3%204.7%2010.1%2010.4l-11.6%20313.8c-.1%202.8-2.5%205.2-5.4%205.2h-38.2c-2.9%200-5.3-2.3-5.4-5.2L464.8%20286c-.2-5.8%204.3-10.4%2010-10.4zm26.1%20448.3c-20.2%200-36.5-16.3-36.5-36.5s16.3-36.5%2036.5-36.5%2036.5%2016.3%2036.5%2036.5-16.4%2036.5-36.5%2036.5z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23020202%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%201000%22%3E%3Cpath%20d%3D%22M500.9%204.5c-185.4%2042-320.4%2088.4-443.2%20127.3%200%20129.3.2%20231.7.2%20339.6%200%20304.1%20248.2%20471.4%20443%20523.6%20194.7-52.2%20443-219.5%20443-523.6%200-107.9.2-210.3.2-339.6C821.3%2092.9%20686.2%2046.5%20500.9%204.5zm-26.1%20271.1h52.1c5.8%200%2010.3%204.7%2010.1%2010.4l-11.6%20313.8c-.1%202.8-2.5%205.2-5.4%205.2h-38.2c-2.9%200-5.3-2.3-5.4-5.2L464.8%20286c-.2-5.8%204.3-10.4%2010-10.4zm26.1%20448.3c-20.2%200-36.5-16.3-36.5-36.5s16.3-36.5%2036.5-36.5%2036.5%2016.3%2036.5%2036.5-16.4%2036.5-36.5%2036.5z%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20fill%3D%22%23020202%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm-1.172-6.242l5.809-5.808.848.849-5.95%205.95a1%201%200%2001-1.414%200L7%2012.426l.849-.849%202.98%202.98z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm-1.172-6.242l5.809-5.808.848.849-5.95%205.95a1%201%200%2001-1.414%200L7%2012.426l.849-.849%202.98%202.98z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-no-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-waiting{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.75%2011.38V6h-1.5v6l4.243%204.243%201.06-1.06-3.803-3.804zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.75%2011.38V6h-1.5v6l4.243%204.243%201.06-1.06-3.803-3.804zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-waiting-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.6%2011.503l3.891%203.891-.848.849L11.4%2012V6h1.2v5.503zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.6%2011.503l3.891%203.891-.848.849L11.4%2012V6h1.2v5.503zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-warn{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.763-15.864l.11%207.596h1.305l.11-7.596h-1.525zm.759%2010.967c.512%200%20.902-.383.902-.882%200-.5-.39-.882-.902-.882a.878.878%200%2000-.896.882c0%20.499.396.882.896.882z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-.763-15.864l.11%207.596h1.305l.11-7.596h-1.525zm.759%2010.967c.512%200%20.902-.383.902-.882%200-.5-.39-.882-.902-.882a.878.878%200%2000-.896.882c0%20.499.396.882.896.882z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-info-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zM11.4%2010h1.2v7h-1.2v-7zm.6-1a1%201%200%20110-2%201%201%200%20010%202z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zM11.4%2010h1.2v7h-1.2v-7zm.6-1a1%201%200%20110-2%201%201%200%20010%202z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-cancel{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M12.849%2012l3.11%203.111-.848.849L12%2012.849l-3.111%203.11-.849-.848L11.151%2012l-3.11-3.111.848-.849L12%2011.151l3.111-3.11.849.848L12.849%2012z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cg%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6z%22%20fill-rule%3D%22nonzero%22%2F%3E%3Cpath%20d%3D%22M12.849%2012l3.11%203.111-.848.849L12%2012.849l-3.111%203.11-.849-.848L11.151%2012l-3.11-3.111.848-.849L12%2011.151l3.111-3.11.849.848L12.849%2012z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E)}.weui-icon-search{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M16.31%2015.561l4.114%204.115-.848.848-4.123-4.123a7%207%200%2011.857-.84zM16.8%2011a5.8%205.8%200%2010-11.6%200%205.8%205.8%200%200011.6%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M16.31%2015.561l4.114%204.115-.848.848-4.123-4.123a7%207%200%2011.857-.84zM16.8%2011a5.8%205.8%200%2010-11.6%200%205.8%205.8%200%200011.6%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-clear{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M13.06%2012l3.006-3.005-1.06-1.06L12%2010.938%208.995%207.934l-1.06%201.06L10.938%2012l-3.005%203.005%201.06%201.06L12%2013.062l3.005%203.005%201.06-1.06L13.062%2012zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M13.06%2012l3.006-3.005-1.06-1.06L12%2010.938%208.995%207.934l-1.06%201.06L10.938%2012l-3.005%203.005%201.06%201.06L12%2013.062l3.005%203.005%201.06-1.06L13.062%2012zM12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm1.999-6.563L10.68%2012%2014%208.562%2012.953%207.5%209.29%2011.277a1.045%201.045%200%20000%201.446l3.663%203.777L14%2015.437z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm1.999-6.563L10.68%2012%2014%208.562%2012.953%207.5%209.29%2011.277a1.045%201.045%200%20000%201.446l3.663%203.777L14%2015.437z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-delete{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.774%206.4l.812%2013.648a.8.8%200%2000.798.752h7.232a.8.8%200%2000.798-.752L17.226%206.4H6.774zm11.655%200l-.817%2013.719A2%202%200%200115.616%2022H8.384a2%202%200%2001-1.996-1.881L5.571%206.4H3.5v-.7a.5.5%200%2001.5-.5h16a.5.5%200%2001.5.5v.7h-2.071zM14%203a.5.5%200%2001.5.5v.7h-5v-.7A.5.5%200%200110%203h4zM9.5%209h1.2l.5%209H10l-.5-9zm3.8%200h1.2l-.5%209h-1.2l.5-9z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M6.774%206.4l.812%2013.648a.8.8%200%2000.798.752h7.232a.8.8%200%2000.798-.752L17.226%206.4H6.774zm11.655%200l-.817%2013.719A2%202%200%200115.616%2022H8.384a2%202%200%2001-1.996-1.881L5.571%206.4H3.5v-.7a.5.5%200%2001.5-.5h16a.5.5%200%2001.5.5v.7h-2.071zM14%203a.5.5%200%2001.5.5v.7h-5v-.7A.5.5%200%200110%203h4zM9.5%209h1.2l.5%209H10l-.5-9zm3.8%200h1.2l-.5%209h-1.2l.5-9z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success-no-circle-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.864%2016.617l-5.303-5.303-1.061%201.06%205.657%205.657a1%201%200%20001.414%200L21.238%206.364l-1.06-1.06L8.864%2016.616z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.864%2016.617l-5.303-5.303-1.061%201.06%205.657%205.657a1%201%200%20001.414%200L21.238%206.364l-1.06-1.06L8.864%2016.616z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-arrow{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-arrow-bold{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2212%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.157%2012.711L4.5%2018.368l-1.414-1.414%204.95-4.95-4.95-4.95L4.5%205.64l5.657%205.657a1%201%200%20010%201.414z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2212%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.157%2012.711L4.5%2018.368l-1.414-1.414%204.95-4.95-4.95-4.95L4.5%205.64l5.657%205.657a1%201%200%20010%201.414z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-arrow{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M3.343%2012l7.071%207.071L9%2020.485l-7.778-7.778a1%201%200%20010-1.414L9%203.515l1.414%201.414L3.344%2012z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M3.343%2012l7.071%207.071L9%2020.485l-7.778-7.778a1%201%200%20010-1.414L9%203.515l1.414%201.414L3.344%2012z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-arrow-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-close{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2010.586l5.657-5.657%201.414%201.414L13.414%2012l5.657%205.657-1.414%201.414L12%2013.414l-5.657%205.657-1.414-1.414L10.586%2012%204.929%206.343%206.343%204.93%2012%2010.586z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2010.586l5.657-5.657%201.414%201.414L13.414%2012l5.657%205.657-1.414%201.414L12%2013.414l-5.657%205.657-1.414-1.414L10.586%2012%204.929%206.343%206.343%204.93%2012%2010.586z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-close-thin{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-back-circle{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm1.999-5.363L12.953%2016.5%209.29%2012.723a1.045%201.045%200%20010-1.446L12.953%207.5%2014%208.563%2010.68%2012%2014%2015.438z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm0-1.2a8.8%208.8%200%20100-17.6%208.8%208.8%200%20000%2017.6zm1.999-5.363L12.953%2016.5%209.29%2012.723a1.045%201.045%200%20010-1.446L12.953%207.5%2014%208.563%2010.68%2012%2014%2015.438z%22%2F%3E%3C%2Fsvg%3E)}.weui-icon-success{color:var(--weui-BRAND)}.weui-icon-waiting{color:var(--weui-BLUE)}.weui-icon-warn{color:var(--weui-RED)}.weui-icon-info{color:var(--weui-BLUE)}.weui-icon-success-circle,.weui-icon-success-no-circle,.weui-icon-success-no-circle-thin{color:var(--weui-BRAND)}.weui-icon-waiting-circle{color:var(--weui-BLUE)}.weui-icon-circle{color:var(--weui-FG-2)}.weui-icon-download{color:var(--weui-BRAND)}.weui-icon-info-circle{color:var(--weui-FG-2)}.weui-icon-safe-success{color:var(--weui-BRAND)}.weui-icon-safe-warn{color:var(--weui-YELLOW)}.weui-icon-cancel{color:var(--weui-RED)}.weui-icon-search{color:var(--weui-FG-1)}.weui-icon-clear{color:var(--weui-FG-2)}.weui-icon-clear:active{color:var(--weui-FG-1)}.weui-icon-delete.weui-icon_gallery-delete{color:var(--weui-WHITE)}.weui-icon-arrow,.weui-icon-arrow-bold,.weui-icon-back-arrow,.weui-icon-back-arrow-thin{width:1.2em}.weui-icon-arrow,.weui-icon-arrow-bold{color:var(--weui-FG-2)}.weui-icon-back,.weui-icon-back-arrow,.weui-icon-back-arrow-thin,.weui-icon-back-circle{color:var(--weui-FG-0)}.weui-icon_msg{width:6.4em;height:6.4em}.weui-icon_msg.weui-icon-warn{color:var(--weui-RED)}.weui-icon_msg.weui-icon-info-circle{color:var(--weui-BLUE)}.weui-icon_msg-primary{width:6.4em;height:6.4em}.weui-icon_msg-primary.weui-icon-warn{color:var(--weui-YELLOW)}.weui-hidden_abs{opacity:0}.weui-hidden-space:empty:before,.weui-hidden_abs{position:absolute;width:1px;height:1px;overflow:hidden}.weui-hidden-space:empty:before{content:"\00A0"}.weui-wa-hotarea-el{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%;background:hsla(0,0%,100%,0)}.weui-wa-hotarea,.weui-wa-hotarea-el__wrp,.weui-wa-hotarea_before{position:relative}.weui-wa-hotarea-el__wrp a,.weui-wa-hotarea_before a,.weui-wa-hotarea a{position:relative;z-index:1}.weui-wa-hotarea:after,.weui-wa-hotarea_before:before{content:"";position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%;background:hsla(0,0%,100%,0)}.weui-link{-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-link,.weui-link:visited{color:var(--weui-LINK)}.weui-btn{position:relative;display:block;width:184px;margin-left:auto;margin-right:auto;padding:8px 24px;box-sizing:border-box;font-weight:700;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.88235294;border-radius:8px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-btn_block{width:auto}.weui-btn_inline{display:inline-block}.weui-btn_default{background-color:var(--weui-BTN-DEFAULT-BG)}.weui-btn_default,.weui-btn_default:not(.weui-btn_disabled):visited{color:var(--weui-BTN-DEFAULT-COLOR)}.weui-btn_default:not(.weui-btn_disabled):active{background-color:var(--weui-BTN-DEFAULT-ACTIVE-BG)}.weui-btn_primary{background-color:var(--weui-BRAND)}.weui-btn_primary:not(.weui-btn_disabled):visited{color:#fff}.weui-btn_primary:not(.weui-btn_disabled):active{background-color:var(--weui-TAG-TEXT-GREEN)}.weui-btn_warn{background-color:var(--weui-BTN-DEFAULT-BG)}.weui-btn_warn,.weui-btn_warn:not(.weui-btn_disabled):visited{color:var(--weui-RED)}.weui-btn_warn:not(.weui-btn_disabled):active{background-color:var(--weui-BTN-DEFAULT-ACTIVE-BG)}.weui-btn[disabled],.weui-btn_disabled{color:var(--weui-BTN-DISABLED-FONT-COLOR);background-color:var(--weui-BTN-DEFAULT-BG)}.weui-btn_loading .weui-loading{margin:-.2em .34em 0 0}.weui-btn_loading .weui-primary-loading{margin:-.2em 8px 0 0;vertical-align:middle}.weui-btn_loading.weui-btn_primary{background-color:var(--weui-TAG-TEXT-GREEN);color:var(--weui-WHITE)}.weui-btn_loading.weui-btn_default,.weui-btn_loading.weui-btn_warn{background-color:var(--weui-BTN-DEFAULT-ACTIVE-BG)}.weui-btn_cell{position:relative;display:block;margin-left:auto;margin-right:auto;box-sizing:border-box;font-size:17px;text-align:center;text-decoration:none;color:#fff;line-height:1.41176471;padding:16px;-webkit-tap-highlight-color:rgba(0,0,0,0);overflow:hidden;background-color:var(--weui-BG-5)}.weui-btn_cell+.weui-btn_cell{margin-top:16px}.weui-btn_cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-btn_cell__icon{display:inline-block;vertical-align:middle;width:24px;height:24px;margin:-.2em .34em 0 0}.weui-btn_cell-default{color:var(--weui-FG-0)}.weui-btn_cell-primary{color:var(--weui-LINK)}.weui-btn_cell-warn{color:var(--weui-RED)}.weui-bottom-fixed-opr-page{height:100%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.weui-bottom-fixed-opr-page__content{min-height:0;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding-bottom:80px;box-sizing:border-box;overflow-y:auto;-webkit-overflow-scrolling:touch}.weui-bottom-fixed-opr{padding:16px 32px 24px;padding:16px calc(32px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(32px + constant(safe-area-inset-left));padding:16px calc(32px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(32px + env(safe-area-inset-left));background:#fff;position:relative}.weui-bottom-fixed-opr:before{content:"";height:80px;background:-webkit-linear-gradient(bottom,#fff,hsla(0,0%,100%,0));background:linear-gradient(0deg,#fff,hsla(0,0%,100%,0));position:absolute;bottom:calc(100% - 1px);left:0;right:0;-webkit-transform:translateZ(0);transform:translateZ(0)}[data-weui-theme=dark] .weui-bottom-fixed-opr{background:#191919}[data-weui-theme=dark] .weui-bottom-fixed-opr:before{background:-webkit-linear-gradient(bottom,#191919,rgba(25,25,25,0));background:linear-gradient(0deg,#191919,rgba(25,25,25,0))}.weui-half-screen-dialog.weui-half-screen-dialog_bottom-fixed{padding:0}.weui-half-screen-dialog.weui-half-screen-dialog_bottom-fixed .weui-half-screen-dialog__hd{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog.weui-half-screen-dialog_bottom-fixed .weui-half-screen-dialog__bd{padding-bottom:64px}.weui-half-screen-dialog.weui-half-screen-dialog_bottom-fixed .weui-half-screen-dialog__ft{padding:0 24px 64px;padding:0 calc(24px + constant(safe-area-inset-right)) 64px calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 64px calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog.weui-half-screen-dialog_bottom-fixed .weui-bottom-fixed-opr-page__content{padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) 0 calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) 0 calc(24px + env(safe-area-inset-left))}.weui-half-screen-dialog.weui-half-screen-dialog_bottom-fixed .weui-bottom-fixed-opr-page{-webkit-box-flex:1;-webkit-flex:1;flex:1;min-height:0}.weui-half-screen-dialog.weui-half-screen-dialog_bottom-fixed .weui-bottom-fixed-opr-page .weui-bottom-fixed-opr{padding:16px 0 0}button.weui-btn,input.weui-btn{border-width:0;outline:0;-webkit-appearance:none}button.weui-btn:focus,input.weui-btn:focus{outline:0}button.weui-btn_inline,button.weui-btn_mini,input.weui-btn_inline,input.weui-btn_mini{width:auto}.weui-btn_mini{font-size:16px;border-radius:6px}.weui-btn_mini,.weui-btn_xmini{display:inline-block;width:auto;padding:0 12px;line-height:2}.weui-btn_xmini{font-size:14px;border-radius:2.8px}.weui-btn:not(.weui-btn_mini)+.weui-btn:not(.weui-btn_mini){margin-top:16px}.weui-btn.weui-btn_inline+.weui-btn.weui-btn_inline{margin-top:auto;margin-left:16px}.weui-btn-area{margin:48px 16px 8px}.weui-btn-area_inline{display:-webkit-box;display:-webkit-flex;display:flex}.weui-btn-area_inline .weui-btn{margin-top:auto;margin-right:16px;width:100%;-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-btn-area_inline .weui-btn:last-child{margin-right:0}.weui-btn_reset{background:transparent;border:0;padding:0;outline:0}.weui-btn_icon{font-size:0}.weui-btn_icon:active [class*=weui-icon-]{color:var(--weui-FG-1)}.weui-cells{margin-top:8px;background-color:var(--weui-BG-2);line-height:1.41176471;font-size:17px;overflow:hidden;position:relative}.weui-cells:before{top:0;border-top:1px solid var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-cells:after,.weui-cells:before{content:" ";position:absolute;left:0;right:0;height:1px;color:var(--weui-FG-3);z-index:2}.weui-cells:after{bottom:0;border-bottom:1px solid var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-cells__title{margin-top:16px;margin-bottom:3px;padding-left:16px;padding-right:16px;color:var(--weui-FG-1);font-size:14px;line-height:1.4}.weui-cells__title+.weui-cells{margin-top:0}.weui-cells__tips{margin-top:8px;color:var(--weui-FG-1);padding-left:16px;padding-right:16px;font-size:14px;line-height:1.4}.weui-cells__tips a,.weui-cells__tips navigator{color:var(--weui-LINK)}.weui-cells__tips navigator{display:inline}.weui-cell{padding:16px;position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-cell:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:16px;z-index:2}.weui-cell:first-child:before{display:none}.weui-cell_active:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-cell_primary{-webkit-box-align:start;-webkit-align-items:flex-start;align-items:flex-start}.weui-cell__bd{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-cell__ft{text-align:right;color:var(--weui-FG-1)}.weui-cell_swiped{display:block;padding:0}.weui-cell_swiped>.weui-cell__bd{position:relative;z-index:1;background-color:var(--weui-BG-2)}.weui-cell_swiped>.weui-cell__ft{position:absolute;right:0;top:0;bottom:0;display:-webkit-box;display:-webkit-flex;display:flex;color:#fff}.weui-swiped-btn{display:block;padding:16px 1em;line-height:1.41176471;color:inherit}.weui-swiped-btn_default{background-color:var(--weui-BG-0)}.weui-swiped-btn_warn{background-color:var(--weui-RED)}.weui-cell_access{-webkit-tap-highlight-color:rgba(0,0,0,0);color:inherit}.weui-cell_access:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-cell_access .weui-cell__ft{padding-right:22px;position:relative}.weui-cell_access .weui-cell__ft:after{content:" ";width:12px;height:24px;-webkit-mask-position:0 0;mask-position:0 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor;color:var(--weui-FG-2);-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);position:absolute;top:50%;right:0;margin-top:-12px}.weui-cell_link{color:var(--weui-LINK);font-size:17px}.weui-cell_link:first-child:before{display:block}.weui-check__label{-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-check__label:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-check{opacity:0;position:absolute;width:0;height:0;overflow:hidden}.weui-cells_radio .weui-cell__ft{padding-left:16px;font-size:0}.weui-cells_radio .weui-check+.weui-icon-checked{min-width:16px;color:transparent}.weui-cells_radio .weui-check:checked+.weui-icon-checked,.weui-cells_radio .weui-check[aria-checked=true]+.weui-icon-checked{color:var(--weui-BRAND);-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M8.657%2018.435L3%2012.778l1.414-1.414%204.95%204.95L20.678%205l1.414%201.414-12.02%2012.021a1%201%200%2001-1.415%200z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E)}.weui-cells_checkbox .weui-check__label:before{left:55px}.weui-cells_checkbox .weui-cell__hd{padding-right:16px;font-size:0}.weui-cells_checkbox .weui-icon-checked{color:var(--weui-FG-2);-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E)}.weui-cells_checkbox .weui-check:checked+.weui-icon-checked,.weui-cells_checkbox .weui-check[aria-checked=true]+.weui-icon-checked{color:var(--weui-BRAND);-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E)}.weui-label{display:block;width:105px;word-wrap:break-word;word-break:break-all}.weui-input{width:100%;border:0;outline:0;-webkit-appearance:none;background-color:transparent;font-size:inherit;color:inherit;height:1.41176471em;line-height:1.41176471}.weui-input::-webkit-inner-spin-button,.weui-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.weui-input:focus:not(:placeholder-shown)+.weui-btn_input-clear{display:inline}.weui-textarea{display:block;border:0;resize:none;background:transparent;width:100%;color:inherit;font-size:1em;line-height:inherit;outline:0}.weui-textarea-counter{color:var(--weui-FG-2);text-align:right;font-size:14px}.weui-cell_warn .weui-textarea-counter{color:var(--weui-RED)}.weui-cells_form .weui-cell_disabled:active,.weui-cells_form .weui-cell_readonly:active,.weui-cells_form .weui-cell_switch:active,.weui-cells_form .weui-cell_vcode:active{background-color:transparent}.weui-cells_form .weui-cell__ft{font-size:0}.weui-cells_form .weui-icon-warn{display:none}.weui-cells_form input,.weui-cells_form label[for],.weui-cells_form textarea{-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-cell_warn{color:var(--weui-RED)}.weui-cell_warn .weui-icon-warn{display:inline-block}.weui-cell_disabled .weui-input:disabled,.weui-cell_disabled .weui-textarea:disabled,.weui-cell_readonly .weui-input:disabled,.weui-cell_readonly .weui-textarea:disabled{opacity:1;-webkit-text-fill-color:var(--weui-FG-1)}.weui-cell_disabled .weui-input[disabled],.weui-cell_disabled .weui-input[readonly],.weui-cell_disabled .weui-textarea[disabled],.weui-cell_disabled .weui-textarea[readonly],.weui-cell_readonly .weui-input[disabled],.weui-cell_readonly .weui-input[readonly],.weui-cell_readonly .weui-textarea[disabled],.weui-cell_readonly .weui-textarea[readonly]{color:var(--weui-FG-1)}.weui-btn_input-clear{display:none;padding-left:8px}.weui-btn_input-clear [class*=weui-icon-]{width:18px}.weui-form-preview{position:relative;background-color:var(--weui-BG-2)}.weui-form-preview:before{top:0;border-top:1px solid var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview:after,.weui-form-preview:before{content:" ";position:absolute;left:0;right:0;height:1px;color:var(--weui-FG-3)}.weui-form-preview:after{bottom:0;border-bottom:1px solid var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview__hd{position:relative;padding:16px;text-align:right;line-height:2.5em}.weui-form-preview__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:16px}.weui-form-preview__hd .weui-form-preview__value{font-style:normal;font-size:1.6em}.weui-form-preview__bd{padding:16px;font-size:.9em;text-align:right;color:var(--weui-FG-1);line-height:2}.weui-form-preview__ft{position:relative;line-height:50px;display:-webkit-box;display:-webkit-flex;display:flex}.weui-form-preview__ft:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--weui-DIALOG-LINE-COLOR);color:var(--weui-DIALOG-LINE-COLOR);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview__item{overflow:hidden}.weui-form-preview__label{float:left;margin-right:1em;min-width:4em;color:var(--weui-FG-1);text-align:justify;text-align-last:justify}.weui-form-preview__value{display:block;overflow:hidden;word-break:normal;word-wrap:break-word;color:var(--weui-FG-0)}.weui-form-preview__btn{position:relative;display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;color:var(--weui-LINK);text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}button.weui-form-preview__btn{background-color:transparent;border:0;outline:0;line-height:inherit;font-size:inherit}.weui-form-preview__btn:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-form-preview__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid var(--weui-DIALOG-LINE-COLOR);color:var(--weui-DIALOG-LINE-COLOR);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-form-preview__btn:first-child:after{display:none}.weui-form-preview__btn_default{color:var(--weui-FG-HALF)}.weui-form-preview__btn_primary{color:var(--weui-LINK)}.weui-form-preview__list{padding-top:24px;padding-bottom:24px;line-height:1.4;font-size:14px;position:relative}.weui-form-preview__list:before{content:"";content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-form-preview__list:last-child{padding-bottom:0}.weui-form-preview__list .weui-form-preview__label{text-align:left;text-align-last:unset;width:6em}.weui-form-preview__list .weui-form-preview__value{-webkit-hyphens:auto;hyphens:auto}.weui-form-preview__list .weui-form-preview__item{margin-top:12px}.weui-form-preview__list .weui-form-preview__item:first-child,.weui-form-preview__list>.weui-cells__title:first-child{margin-top:0}.weui-cell_select{padding:0}.weui-cell_select .weui-select{padding-right:30px}.weui-cell_select .weui-cell__bd:after{content:" ";width:12px;height:24px;-webkit-mask-position:0 0;mask-position:0 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor;color:var(--weui-FG-2);-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);position:absolute;top:50%;right:16px;margin-top:-12px}.weui-select{-webkit-appearance:none;border:0;outline:0;background-color:transparent;width:100%;font-size:inherit;min-height:56px;line-height:56px;position:relative;z-index:1;padding-left:16px;color:var(--weui-FG-0)}.weui-cell_select-before{-webkit-box-align:initial;-webkit-align-items:initial;align-items:initial;padding-right:16px}.weui-cell_select-before .weui-select{width:105px;box-sizing:border-box}.weui-cell_select-before .weui-cell__hd{position:relative}.weui-cell_select-before .weui-cell__hd:after{content:" ";position:absolute;right:0;top:0;width:1px;bottom:0;border-right:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-cell_select-before .weui-cell__hd:before{content:" ";width:12px;height:24px;-webkit-mask-position:0 0;mask-position:0 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:currentColor;color:var(--weui-FG-2);-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M2.454%206.58l1.06-1.06%205.78%205.779a.996.996%200%20010%201.413l-5.78%205.779-1.06-1.061%205.425-5.425-5.425-5.424z%22%20fill%3D%22%23B2B2B2%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E);position:absolute;top:50%;right:16px;margin-top:-12px}.weui-cell_select-before .weui-cell__bd{padding-left:16px;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-cell_select-before .weui-cell__bd:after{display:none}.weui-cell_select-before.weui-cell_access .weui-cell__hd{line-height:56px;padding-left:32px}.weui-cell_select-after{padding-left:16px}.weui-cell_select-after .weui-select{padding-left:0}.weui-cell_select-after.weui-cell_access .weui-cell__bd{line-height:56px}.weui-cell_vcode{padding-top:0;padding-right:0;padding-bottom:0}.weui-vcode-btn,.weui-vcode-img{margin-left:5px;height:56px;vertical-align:middle}.weui-vcode-btn{display:inline-block;padding:0 .6em 0 .7em;line-height:56px;font-size:17px;color:var(--weui-LINK);position:relative}.weui-vcode-btn:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}button.weui-vcode-btn{background-color:transparent;border:0;outline:0}.weui-vcode-btn:active{color:var(--weui-LINK-ACTIVE)}.weui-gallery{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000;z-index:1000}.weui-gallery__img,.weui-gallery__opr{position:absolute;left:0;left:constant(safe-area-inset-left);left:env(safe-area-inset-left);right:0;right:constant(safe-area-inset-right);right:env(safe-area-inset-right)}.weui-gallery__img{top:0;top:constant(safe-area-inset-top);top:env(safe-area-inset-top);bottom:60px;bottom:calc(60px + constant(safe-area-inset-bottom));bottom:calc(60px + env(safe-area-inset-bottom));background:50% no-repeat;background-size:contain}.weui-gallery__opr{position:absolute;bottom:0;padding-bottom:0;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom);background-color:#0d0d0d;color:var(--weui-WHITE);line-height:60px;text-align:center}.weui-gallery__del{display:block}.weui-cell_switch{padding-top:12px;padding-bottom:12px}.weui-switch{-webkit-appearance:none;appearance:none}.weui-switch,.weui-switch-cp__box{position:relative;width:52px;height:32px;border:2px solid var(--weui-FG-3);outline:0;border-radius:16px;box-sizing:border-box;-webkit-transition:background-color .1s,border .1s;transition:background-color .1s,border .1s}.weui-switch-cp__box:before,.weui-switch:before{content:" ";position:absolute;top:0;left:0;bottom:0;right:0;border-radius:15px;background-color:var(--weui-BG-3);-webkit-transition:-webkit-transform .35s cubic-bezier(.45,1,.4,1);transition:-webkit-transform .35s cubic-bezier(.45,1,.4,1);transition:transform .35s cubic-bezier(.45,1,.4,1);transition:transform .35s cubic-bezier(.45,1,.4,1),-webkit-transform .35s cubic-bezier(.45,1,.4,1)}.weui-switch-cp__box:after,.weui-switch:after{content:" ";position:absolute;top:0;left:0;width:28px;height:28px;border-radius:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-transition:-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35);transition:-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35);transition:transform .35s cubic-bezier(.4,.4,.25,1.35);transition:transform .35s cubic-bezier(.4,.4,.25,1.35),-webkit-transform .35s cubic-bezier(.4,.4,.25,1.35)}.weui-switch-cp__input:checked+.weui-switch-cp__box,.weui-switch-cp__input[aria-checked=true]+.weui-switch-cp__box,.weui-switch:checked{border-color:var(--weui-BRAND);background-color:var(--weui-BRAND)}.weui-switch-cp__input:checked+.weui-switch-cp__box:before,.weui-switch-cp__input[aria-checked=true]+.weui-switch-cp__box:before,.weui-switch:checked:before{-webkit-transform:scale(0);transform:scale(0)}.weui-switch-cp__input:checked+.weui-switch-cp__box:after,.weui-switch-cp__input[aria-checked=true]+.weui-switch-cp__box:after,.weui-switch:checked:after{-webkit-transform:translateX(20px);transform:translateX(20px)}.weui-switch-cp__input{position:absolute;width:0;height:0;opacity:0;overflow:hidden}.weui-switch-cp__box{display:block}.weui-cell_uploader{padding-bottom:24px}.weui-uploader{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-uploader__hd{display:-webkit-box;display:-webkit-flex;display:flex;padding-bottom:16px;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-uploader__title{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-uploader__info{color:var(--weui-FG-2)}.weui-uploader__bd{margin-bottom:-8px;margin-right:-8px;overflow:hidden}.weui-uploader__files{list-style:none}.weui-uploader__file{float:left;margin-right:8px;margin-bottom:8px;width:96px;height:96px;background:no-repeat 50%;background-size:cover}.weui-uploader__file_status{position:relative}.weui-uploader__file_status:before{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,.5)}.weui-uploader__file_status .weui-uploader__file-content{display:block}.weui-uploader__file-content{display:none;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:var(--weui-WHITE)}.weui-uploader__file-content .weui-icon-warn{display:inline-block}.weui-uploader__input-box{float:left;position:relative;margin-right:8px;margin-bottom:8px;width:96px;height:96px;box-sizing:border-box;background-color:#ededed}[data-weui-theme=dark] .weui-uploader__input-box{background-color:#2e2e2e}.weui-uploader__input-box:after,.weui-uploader__input-box:before{content:" ";position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:#a3a3a3}[data-weui-theme=dark] .weui-uploader__input-box:after,[data-weui-theme=dark] .weui-uploader__input-box:before{background-color:#6d6d6d}.weui-uploader__input-box:before{width:2px;height:32px}.weui-uploader__input-box:after{width:32px;height:2px}.weui-uploader__input-box:active:after,.weui-uploader__input-box:active:before{opacity:.7}.weui-uploader__input{position:absolute;z-index:1;top:0;left:0;width:100%;height:100%;opacity:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-msg__desc-primary a,.weui-msg__desc a,.weui-msg__tips a{color:var(--weui-LINK);display:inline-block;vertical-align:baseline}.weui-msg{padding-top:48px;padding:calc(48px + constant(safe-area-inset-top)) constant(safe-area-inset-right) constant(safe-area-inset-bottom) constant(safe-area-inset-left);padding:calc(48px + env(safe-area-inset-top)) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);text-align:center;line-height:1.4;min-height:100%;box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;background-color:var(--weui-BG-2)}.weui-msg__icon-area{margin-bottom:32px}.weui-msg__text-area{margin-bottom:32px;padding:0 32px;-webkit-box-flex:1;-webkit-flex:1;flex:1;line-height:1.6;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.weui-msg__text-area:first-child{padding-top:96px}.weui-msg__title{margin-bottom:16px;font-weight:400;font-size:22px;color:#191919;-webkit-text-stroke:.02em}[data-weui-theme=dark] .weui-msg__title{color:#d1d1d1}@supports (-webkit-overflow-scrolling:touch){.weui-msg__title{font-weight:500;-webkit-text-stroke:initial}}.weui-msg__desc{font-size:17px;font-weight:400;color:var(--weui-FG-0);margin-bottom:16px}.weui-msg__desc-primary{font-size:14px;color:var(--weui-FG-1);margin-bottom:16px}.weui-msg__custom-area{text-align:left;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;margin-bottom:16px}.weui-msg__title+.weui-msg__custom-area{margin-top:48px}.weui-msg__desc+.weui-msg__custom-area,.weui-msg__desc-primary+.weui-msg__custom-area{margin-top:40px}.weui-msg__custom-area .weui-cells__group_form .weui-cells:after,.weui-msg__custom-area .weui-cells__group_form .weui-cells:before{left:0;right:0}.weui-msg__custom-area .weui-cells__group_form .weui-cell{padding-left:0;padding-right:0}.weui-msg__custom-area .weui-cells__group_form .weui-cell:before{left:0;right:0}.weui-msg__opr-area{margin-bottom:16px}.weui-msg__opr-area .weui-btn-area{margin:0}.weui-msg__opr-area .weui-btn+.weui-btn{margin-bottom:16px}.weui-msg__opr-area:last-child{margin-bottom:96px}.weui-msg__opr-area+.weui-msg__extra-area{margin-top:48px}.weui-msg__tips-area{margin-bottom:16px;padding:0 40px;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.weui-msg__opr-area+.weui-msg__tips-area{margin-bottom:48px}.weui-msg__tips-area:last-child{margin-bottom:64px}.weui-msg__extra-area,.weui-msg__tips{font-size:12px;color:var(--weui-FG-1)}.weui-msg__extra-area{margin-bottom:24px;padding:0 32px;box-sizing:border-box}.weui-msg__extra-area a,.weui-msg__extra-area navigator{color:var(--weui-LINK)}.weui-msg__extra-area navigator{display:inline}.weui-msg_align-top .weui-msg__text-area:first-child{padding-top:0}.weui-cells__group{border:0}.weui-cells__group_form:first-child .weui-cells__title{margin-top:0}.weui-cells__group_form .weui-cells__title{margin-top:24px;margin-bottom:8px;padding:0 32px}.weui-cells__group_form .weui-cell:before,.weui-cells__group_form .weui-cells:before{left:32px;right:32px}.weui-cells__group_form .weui-cells_checkbox .weui-check__label:before{left:72px}.weui-cells__group_form .weui-cells:after{left:32px;right:32px}.weui-cells__group_form .weui-cell{padding:16px 32px}.weui-cells__group_form .weui-cell:not(.weui-cell_link){color:var(--weui-FG-0)}.weui-cells__group_form .weui-cell__hd{padding-right:16px}.weui-cells__group_form .weui-cell__ft{padding-left:16px}.weui-cells__group_form .weui-cell_warn input{color:var(--weui-RED)}.weui-cells__group_form .weui-label{max-width:5em;margin-right:8px}.weui-cells__group_form .weui-cells__tips{margin-top:8px;padding:0 32px;color:var(--weui-FG-2)}.weui-cells__group_form .weui-cells__tips a{font-weight:700}.weui-cells__group_form .weui-cells__tips_warn{color:var(--weui-RED)}.weui-cells__group_form .weui-cell_select{padding:0}.weui-cells__group_form .weui-cell_select .weui-select{padding:0 32px}.weui-cells__group_form .weui-cell_select .weui-cell__bd:after{right:32px}.weui-cells__group_form .weui-cell_select-before .weui-label{margin-right:24px}.weui-cells__group_form .weui-cell_select-before .weui-select{padding-right:24px;box-sizing:initial}.weui-cells__group_form .weui-cell_select-after{padding-left:32px}.weui-cells__group_form .weui-cell_select-after .weui-select{padding-left:0}.weui-cells__group_form .weui-cell_switch{padding:12px 32px}.weui-cells__group_form .weui-cell_wrap{-webkit-box-align:initial;-webkit-align-items:initial;align-items:initial;padding-top:8px;padding-bottom:8px}.weui-cells__group_form .weui-cell_wrap .weui-cell__hd{padding-right:0}.weui-cells__group_form .weui-cell_wrap .weui-label{margin-top:8px}.weui-cells__group_form .weui-cell_wrap .weui-cell__bd{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-cells__group_form .weui-cell__control{margin:8px 0 8px 16px}.weui-cells__group_form .weui-cell__control_flex{-webkit-box-flex:1;-webkit-flex:1;flex:1;min-width:30vw}.weui-cells__group_form .weui-vcode-btn{font-size:16px;padding:0 12px;height:auto;width:auto;line-height:2em;color:var(--weui-BTN-DEFAULT-COLOR);background-color:var(--weui-BTN-DEFAULT-BG)}.weui-cells__group_form .weui-vcode-btn:before{display:none}.weui-cells__group_form .weui-cell_vcode.weui-cell_wrap{padding-top:4px;padding-bottom:4px}.weui-cells__group_form .weui-cell_vcode.weui-cell_wrap .weui-label{margin-top:12px}.weui-cells__group_form .weui-cell_vcode.weui-cell_wrap .weui-input{font-size:17px;min-height:1.88235294em}.weui-cells__group_form .weui-cell_vcode.weui-cell_wrap .weui-btn_reset{margin-right:12px}.weui-form{padding:56px 0 0;padding:calc(56px + constant(safe-area-inset-top)) constant(safe-area-inset-right) constant(safe-area-inset-bottom) constant(safe-area-inset-left);padding:calc(56px + env(safe-area-inset-top)) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;line-height:1.4;min-height:100%;box-sizing:border-box;background-color:var(--weui-BG-2)}.weui-form .weui-footer,.weui-form .weui-footer__link{font-size:14px}.weui-form .weui-agree{padding:0}.weui-form__text-area{padding:0 32px;color:var(--weui-FG-0);text-align:center}.weui-form__control-area{-webkit-box-flex:1;-webkit-flex:1;flex:1;margin:48px 0 40px}.weui-form__extra-area,.weui-form__tips-area{margin-bottom:24px;padding:0 32px;text-align:center}.weui-form__extra-area{margin-top:52px}.weui-form__opr-area{padding:0 32px}.weui-form__opr-area:last-child{margin-bottom:96px}.weui-form__opr-area+.weui-form__tips-area{margin-top:16px;margin-bottom:0}.weui-form__tips-area+.weui-form__extra-area{margin-top:32px}.weui-form__tips-area:last-child{margin-bottom:60px}.weui-form__title{font-size:22px;font-weight:700;line-height:1.36}.weui-form__desc{font-size:17px;margin-top:16px}.weui-form__tips{color:var(--weui-FG-1);font-size:14px}.weui-form__tips a,.weui-form__tips navigator{color:var(--weui-LINK)}.weui-form__tips navigator{display:inline}.weui-article{padding:24px 16px;padding:24px calc(16px + constant(safe-area-inset-right)) calc(24px + constant(safe-area-inset-bottom)) calc(16px + constant(safe-area-inset-left));padding:24px calc(16px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));font-size:17px;color:var(--weui-FG-0)}.weui-article__section{margin-bottom:1.5em}.weui-article__h1{font-size:22px;font-weight:700;margin-bottom:.9em;line-height:1.4}.weui-article__h2{font-size:17px}.weui-article__h2,.weui-article__h3{font-weight:700;margin-bottom:.34em;line-height:1.4}.weui-article__h3{font-size:15px}.weui-article__p{margin:0 0 .8em}.weui-tabbar{display:-webkit-box;display:-webkit-flex;display:flex;position:relative;z-index:500;background-color:var(--weui-BG-1)}.weui-tabbar:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-tabbar__item{display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding:8px 0;padding-bottom:calc(8px + constant(safe-area-inset-bottom));padding-bottom:calc(8px + env(safe-area-inset-bottom));font-size:0;color:var(--weui-FG-1);text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-tabbar__item:first-child{padding-left:constant(safe-area-inset-left);padding-left:env(safe-area-inset-left)}.weui-tabbar__item:last-child{padding-right:constant(safe-area-inset-right);padding-right:env(safe-area-inset-right)}.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon,.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon>i,.weui-tabbar__item.weui-bar__item_on .weui-tabbar__label{color:var(--weui-BRAND)}.weui-tabbar__icon{display:inline-block;font-size:10px;width:2.8em;height:2.8em;margin-bottom:2px}.weui-tabbar__icon>i,i.weui-tabbar__icon{font-size:24px;color:var(--weui-FG-1)}.weui-tabbar__icon img{width:100%;height:100%}.weui-tabbar__label{color:var(--weui-FG-0);font-size:10px;line-height:1.4}.weui-navbar{display:-webkit-box;display:-webkit-flex;display:flex;position:relative;z-index:500;background-color:var(--weui-BG-2);padding-top:constant(safe-area-inset-top);padding-top:env(safe-area-inset-top)}.weui-navbar:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-navbar+.weui-tab__panel{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.weui-navbar__item{position:relative;display:block;-webkit-box-flex:1;-webkit-flex:1;flex:1;padding:16px 0;padding-top:calc(16px + constant(safe-area-inset-top));padding-top:calc(16px + env(safe-area-inset-top));text-align:center;font-size:17px;line-height:1.41176471;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-navbar__item.weui-bar__item_on,.weui-navbar__item:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-navbar__item:after{content:" ";position:absolute;right:0;top:0;width:1px;bottom:0;border-right:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-navbar__item:first-child{padding-left:constant(safe-area-inset-left);padding-left:env(safe-area-inset-left)}.weui-navbar__item:last-child{padding-right:constant(safe-area-inset-right);padding-right:env(safe-area-inset-right)}.weui-navbar__item:last-child:after{display:none}.weui-tab{display:-webkit-box;display:-webkit-flex;display:flex;height:100%;box-sizing:border-box;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.weui-tab__panel{box-sizing:border-box;-webkit-box-flex:1;-webkit-flex:1;flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.weui-tab__content{display:none}.weui-progress{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-progress__bar{background-color:var(--weui-BG-0);height:3px;-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-progress__inner-bar{width:0;height:100%;background-color:var(--weui-BRAND)}.weui-progress__opr{display:block;margin-left:15px;font-size:0}.weui-panel{background-color:var(--weui-BG-2);margin-top:10px;position:relative;overflow:hidden}.weui-panel:first-child{margin-top:0}.weui-panel:before{top:0;border-top:1px solid var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-panel:after,.weui-panel:before{content:" ";position:absolute;left:0;right:0;height:1px;color:var(--weui-FG-3)}.weui-panel:after{bottom:0;border-bottom:1px solid var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-panel__hd{padding:16px 16px 13px;color:var(--weui-FG-0);font-size:15px;font-weight:700;position:relative}.weui-panel__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:15px}.weui-media-box{padding:16px;position:relative}.weui-media-box:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5);left:16px}.weui-media-box:first-child:before{display:none}a.weui-media-box{color:#000;-webkit-tap-highlight-color:rgba(0,0,0,0)}a.weui-media-box:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-media-box__title{display:block;font-weight:400;font-size:17px;color:var(--weui-FG-0);width:auto;white-space:nowrap;word-wrap:normal}.weui-media-box__desc,.weui-media-box__title{line-height:1.4;overflow:hidden;text-overflow:ellipsis;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.weui-media-box__desc{color:var(--weui-FG-2);font-size:14px;padding-top:4px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.weui-media-box__info{display:block;margin-top:16px;padding-bottom:4px;font-size:13px;color:var(--weui-FG-2);line-height:1em;list-style:none;overflow:hidden}.weui-media-box__info__meta{float:left;padding-right:1em}.weui-media-box__info__meta_extra{padding-left:1em;border-left:1px solid var(--weui-FG-2)}.weui-media-box_appmsg{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-media-box_appmsg .weui-media-box__hd{margin-right:16px;width:60px;height:60px;line-height:60px;text-align:center}.weui-media-box_appmsg .weui-media-box__thumb{width:100%;max-height:100%;vertical-align:top}.weui-media-box_appmsg .weui-media-box__bd{-webkit-box-flex:1;-webkit-flex:1;flex:1;min-width:0}.weui-media-box_small-appmsg{padding:0}.weui-media-box_small-appmsg .weui-cells{margin-top:0}.weui-media-box_small-appmsg .weui-cells:before{display:none}.weui-grids{position:relative;overflow:hidden}.weui-grids:before{right:0;height:1px;border-top:1px solid var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-grids:after,.weui-grids:before{content:" ";position:absolute;left:0;top:0;color:var(--weui-FG-3)}.weui-grids:after{width:1px;bottom:0;border-left:1px solid var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-grid{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box}.weui-grid:before{top:0;width:1px;border-right:1px solid var(--weui-FG-3);-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-grid:after,.weui-grid:before{content:" ";position:absolute;right:0;bottom:0;color:var(--weui-FG-3)}.weui-grid:after{left:0;height:1px;border-bottom:1px solid var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-grid:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-grid__icon{width:28px;height:28px;margin:0 auto}.weui-grid__icon img{display:block;width:100%;height:100%}.weui-grid__icon+.weui-grid__label{margin-top:4px}.weui-grid__label{display:block;color:var(--weui-FG-0);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.weui-footer,.weui-grid__label{text-align:center;font-size:14px}.weui-footer{color:var(--weui-FG-2);line-height:1.4}.weui-footer a,.weui-footer navigator{color:var(--weui-LINK)}.weui-footer navigator{display:inline}.weui-footer_fixed-bottom{position:fixed;bottom:0;left:0;right:0;padding-top:16px;padding-bottom:16px;padding-bottom:calc(16px + constant(safe-area-inset-bottom));padding-bottom:calc(16px + env(safe-area-inset-bottom));left:constant(safe-area-inset-left);left:env(safe-area-inset-left);right:constant(safe-area-inset-right);right:env(safe-area-inset-right)}.weui-footer__links{font-size:0}.weui-footer__link{display:inline-block;vertical-align:top;margin:0 8px;position:relative;font-size:14px}.weui-footer__link:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5);left:-8px;top:.36em;bottom:.36em}.weui-footer__link:first-child:before{display:none}.weui-footer__text{padding:0 16px;font-size:12px}.weui-flex{display:-webkit-box;display:-webkit-flex;display:flex}.weui-flex__item{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-dialog{position:fixed;z-index:5000;top:50%;left:16px;right:16px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:var(--weui-BG-2);text-align:center;border-radius:12px;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;max-height:90%}.weui-dialog__hd{padding:32px 24px 16px}.weui-dialog__title{font-weight:700;font-size:17px;line-height:1.4}.weui-dialog__bd{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 24px;margin-bottom:32px;font-size:17px;line-height:1.4;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;color:var(--weui-FG-1)}.weui-dialog__bd:first-child{min-height:40px;padding:32px 24px 0;font-weight:700;color:var(--weui-FG-0);-webkit-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.weui-dialog__bd:first-child,.weui-dialog__ft{display:-webkit-box;display:-webkit-flex;display:flex}.weui-dialog__ft{position:relative}.weui-dialog__ft:after{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--weui-DIALOG-LINE-COLOR);color:var(--weui-DIALOG-LINE-COLOR);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-dialog__btn{-webkit-box-flex:1;-webkit-flex:1;flex:1;display:block;line-height:1.41176471;padding:16px 0;font-size:17px;color:var(--weui-LINK);font-weight:700;text-decoration:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:relative;overflow:hidden}.weui-dialog__btn:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-dialog__btn:after{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid var(--weui-DIALOG-LINE-COLOR);color:var(--weui-DIALOG-LINE-COLOR);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-dialog__btn:first-child:after{display:none}.weui-dialog__btn_default{color:var(--weui-FG-HALF)}.weui-skin_android .weui-dialog{text-align:left;box-shadow:0 6px 30px 0 rgba(0,0,0,.1)}.weui-skin_android .weui-dialog__title{font-size:22px;line-height:1.4}.weui-skin_android .weui-dialog__hd{text-align:left}.weui-skin_android .weui-dialog__bd{color:var(--weui-FG-1);text-align:left}.weui-skin_android .weui-dialog__bd:first-child{color:var(--weui-FG-0)}.weui-skin_android .weui-dialog__ft{display:block;text-align:right;line-height:40px;min-height:40px;padding:0 24px 16px}.weui-skin_android .weui-dialog__ft:after{display:none}.weui-skin_android .weui-dialog__btn{display:inline-block;vertical-align:top;padding:0 .8em}.weui-skin_android .weui-dialog__btn:after{display:none}.weui-skin_android .weui-dialog__btn:last-child{margin-right:-.8em}.weui-skin_android .weui-dialog__btn_default{color:var(--weui-FG-HALF)}@media screen and (min-width:352px){.weui-dialog{width:320px;margin:0 auto}}.weui-half-screen-dialog{position:fixed;left:0;right:0;bottom:0;max-height:75%;z-index:5000;line-height:1.4;background-color:var(--weui-BG-2);border-top-left-radius:12px;border-top-right-radius:12px;overflow:hidden;padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) constant(safe-area-inset-bottom) calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) env(safe-area-inset-bottom) calc(24px + env(safe-area-inset-left));display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}@media only screen and (max-height:558px){.weui-half-screen-dialog{max-height:none}}.weui-half-screen-dialog__hd{font-size:8px;height:8em;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-flex-shrink:0;flex-shrink:0}.weui-half-screen-dialog__hd .weui-icon-btn{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.weui-half-screen-dialog__hd .weui-icon-btn:active{opacity:.5}.weui-half-screen-dialog__hd__side{position:relative;left:-8px}.weui-half-screen-dialog__hd__main{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-half-screen-dialog__hd__side+.weui-half-screen-dialog__hd__main{text-align:center;padding:0 40px}.weui-half-screen-dialog__hd__main+.weui-half-screen-dialog__hd__side{right:-8px;left:auto}.weui-half-screen-dialog__hd__main+.weui-half-screen-dialog__hd__side .weui-icon-btn{right:0}.weui-half-screen-dialog__title{display:block;color:var(--weui-FG-0);font-weight:700;font-size:15px}.weui-half-screen-dialog__subtitle{display:block;color:var(--weui-FG-1);font-size:10px}.weui-half-screen-dialog__bd{-webkit-box-flex:1;-webkit-flex:1;flex:1;min-height:0;overflow-y:auto;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;padding-top:4px;padding-bottom:56px;font-size:14px;color:var(--weui-FG-0)}.weui-half-screen-dialog__desc{font-size:17px;font-weight:700;color:var(--weui-FG-0);line-height:1.4}.weui-half-screen-dialog__tips{padding-top:16px;font-size:14px;color:var(--weui-FG-2);line-height:1.4}.weui-half-screen-dialog__ft{padding:0 0 64px;text-align:center}.weui-half-screen-dialog__ft .weui-btn{width:184px;padding-left:16px;padding-right:16px}.weui-half-screen-dialog__ft .weui-btn:nth-last-child(n+2),.weui-half-screen-dialog__ft .weui-btn:nth-last-child(n+2)+.weui-btn{margin:0 8px;width:136px}.weui-half-screen-dialog__ft .weui-btn:nth-last-child(n+2)+.weui-btn:first-child,.weui-half-screen-dialog__ft .weui-btn:nth-last-child(n+2):first-child{margin-left:0}.weui-half-screen-dialog__ft .weui-btn:nth-last-child(n+2)+.weui-btn:last-child,.weui-half-screen-dialog__ft .weui-btn:nth-last-child(n+2):last-child{margin-right:0}.weui-half-screen-dialog__btn-area{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.weui-half-screen-dialog__btn-area+.weui-half-screen-dialog__attachment-area{margin-top:24px;margin-bottom:-34px}.weui-icon-btn{outline:0;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);border-width:0;background-color:transparent;color:var(--weui-FG-0);font-size:0;width:auto;height:auto}.weui-icon-more{width:24px;-webkit-mask:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M5 10.25a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5z'/%3E%3C/svg%3E") no-repeat 50% 50%;mask:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M5 10.25a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5z'/%3E%3C/svg%3E") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover}.weui-icon-btn_goback,.weui-icon-more{display:inline-block;vertical-align:middle;height:24px;background-color:currentColor;color:var(--weui-FG-0)}.weui-icon-btn_goback{width:12px;-webkit-mask:url("data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E") no-repeat 50% 50%;mask:url("data:image/svg+xml,%3Csvg%20width%3D%2212%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10%2019.438L8.955%2020.5l-7.666-7.79a1.02%201.02%200%20010-1.42L8.955%203.5%2010%204.563%202.682%2012%2010%2019.438z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover}.weui-icon-btn_close{color:var(--weui-FG-0);display:inline-block;vertical-align:middle;width:14px;height:24px;-webkit-mask:url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E") no-repeat 50% 50%;mask:url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12.25%2010.693L6.057%204.5%205%205.557l6.193%206.193L5%2017.943%206.057%2019l6.193-6.193L18.443%2019l1.057-1.057-6.193-6.193L19.5%205.557%2018.443%204.5z%22%20fill-rule%3D%22evenodd%22%2F%3E%3C%2Fsvg%3E") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor}.weui-toast{position:fixed;z-index:5000;font-size:10px;width:13.6em;height:13.6em;top:40%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;border-radius:12px;color:hsla(0,0%,100%,.9);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;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;background-color:var(--weui-BG-4);box-sizing:border-box;line-height:1.4}.weui-toast_text{width:auto;height:auto;min-width:152px;max-width:216px;padding:12px 0}.weui-toast_text .weui-toast__content{font-size:14px}.weui-icon_toast{display:block;width:40px;height:40px;margin-bottom:16px}.weui-icon_toast.weui-icon-success-no-circle,.weui-icon_toast.weui-icon-warn{color:hsla(0,0%,100%,.9)}.weui-icon_toast.weui-loading{width:36px;height:36px}.weui-icon_toast.weui-primary-loading{font-size:40px;color:#ededed}.weui-icon_toast.weui-primary-loading:before{border-width:4px 0 4px 4px}.weui-icon_toast.weui-primary-loading:after{border-width:4px 4px 4px 0}.weui-icon_toast.weui-primary-loading .weui-primary-loading__dot{width:4px;height:4px;border-top-right-radius:4px;border-bottom-right-radius:4px}.weui-toast__content{font-size:17px;padding:0 12px;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.weui-toast_text-more .weui-icon_toast{margin-bottom:12px}.weui-toast_text-more .weui-toast__content{font-size:14px;line-height:1.6}.weui-mask{background:rgba(0,0,0,.6)}.weui-mask,.weui-mask_transparent{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0}.weui-actionsheet{position:fixed;left:0;bottom:0;-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:5000;width:100%;background-color:var(--weui-BG-1);-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;border-top-left-radius:12px;border-top-right-radius:12px;overflow:hidden}.weui-actionsheet__title{position:relative;height:56px;padding:0 24px;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;text-align:center;font-size:12px;color:var(--weui-FG-1);line-height:1.4;background:var(--weui-BG-2)}.weui-actionsheet__title:before{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-actionsheet__title .weui-actionsheet__title-text{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.weui-actionsheet__action,.weui-actionsheet__menu{color:var(--weui-FG-0);background-color:var(--weui-BG-2)}.weui-actionsheet__action{margin-top:8px;padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.weui-actionsheet__cell{position:relative;padding:16px;text-align:center;font-size:17px;line-height:1.41176471;overflow:hidden}.weui-actionsheet__cell:before{content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-actionsheet__cell:active{background-color:var(--weui-BG-COLOR-ACTIVE)}.weui-actionsheet__cell:first-child:before{display:none}.weui-actionsheet__cell_warn{color:var(--weui-RED)}.weui-skin_android .weui-actionsheet{position:fixed;left:50%;top:50%;bottom:auto;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:274px;box-sizing:border-box;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:transparent;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;border-top-left-radius:0;border-top-right-radius:0}.weui-skin_android .weui-actionsheet__action{display:none}.weui-skin_android .weui-actionsheet__menu{border-radius:2px;box-shadow:0 6px 30px 0 rgba(0,0,0,.1)}.weui-skin_android .weui-actionsheet__cell{padding:16px;font-size:17px;line-height:1.41176471;color:var(--weui-FG-0);text-align:left}.weui-skin_android .weui-actionsheet__cell:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.weui-skin_android .weui-actionsheet__cell:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.weui-actionsheet_toggle{-webkit-transform:translate(0);transform:translate(0)}.weui-loadmore{width:65%;margin:20px auto;text-align:center;font-size:0}.weui-loadmore .weui-loading,.weui-loadmore .weui-primary-loading{margin-right:8px}.weui-loadmore__tips{display:inline-block;vertical-align:middle;font-size:14px;line-height:1.6;color:var(--weui-FG-0)}.weui-loadmore_line{border-top:1px solid var(--weui-FG-3);margin-top:32px}.weui-loadmore_line .weui-loadmore__tips{position:relative;top:-.9em;padding:0 .55em;background-color:var(--weui-BG-2);color:var(--weui-FG-1)}.weui-loadmore_dot .weui-loadmore__tips{padding:0 .16em}.weui-loadmore_dot .weui-loadmore__tips:before{content:" ";width:4px;height:4px;border-radius:50%;background-color:var(--weui-FG-3);display:inline-block;position:relative;vertical-align:0;top:-.16em}.weui-badge{display:inline-block;padding:.15em .4em;min-width:.66666667em;border-radius:18px;background-color:var(--weui-RED);color:#fff;line-height:1.2;text-align:center;font-size:12px;vertical-align:middle}.weui-badge_dot{padding:.4em;min-width:0}.weui-toptips{display:none;position:fixed;-webkit-transform:translateZ(0);transform:translateZ(0);top:8px;left:8px;right:8px;padding:10px;border-radius:8px;font-size:14px;text-align:center;color:#fff;z-index:5000;word-wrap:break-word;word-break:break-all}.weui-toptips_warn{background-color:var(--weui-RED)}.weui-list-tips{list-style:none;padding-top:24px;padding-bottom:24px;line-height:1.4;font-size:14px;color:var(--weui-FG-1);position:relative}.weui-list-tips:before{content:"";content:" ";position:absolute;left:0;top:0;right:0;height:1px;border-top:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-list-tips:last-child{padding-bottom:0}.weui-list-tips__item{position:relative;padding-left:15px;margin:16px 0}.weui-list-tips__item:before{content:"\2022";position:absolute;left:0;top:-.1em}.weui-list-tips__item:first-child{margin-top:0}.weui-form-preview__list+.weui-list-tips>.weui-list-tips__item:first-child{margin-top:6px}.weui-search-bar{position:relative;padding:8px;display:-webkit-box;display:-webkit-flex;display:flex;box-sizing:border-box;background-color:var(--weui-BG-0);-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-search-bar.weui-search-bar_focusing .weui-search-bar__cancel-btn{display:block}.weui-search-bar.weui-search-bar_focusing .weui-search-bar__label{display:none}.weui-search-bar .weui-icon-search{font-size:10px;width:1.6em;height:1.6em;margin-left:8px;margin-right:4px;-webkit-flex-shrink:0;flex-shrink:0}.weui-search-bar__form{position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;min-width:0;background-color:var(--weui-BG-2);border-radius:4px}.weui-search-bar__box{position:relative;z-index:1;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-search-bar__box .weui-search-bar__input{padding:8px 0;width:100%;height:1.14285714em;border:0;font-size:14px;line-height:1.14285714em;box-sizing:content-box;background:transparent;caret-color:var(--weui-BRAND);color:var(--weui-FG-0)}.weui-search-bar__box .weui-search-bar__input:focus{outline:none}.weui-search-bar__box .weui-icon-clear{-webkit-flex-shrink:0;flex-shrink:0;font-size:10px;width:2em;height:2em;margin-left:8px;-webkit-mask-size:2em;mask-size:2em;-webkit-mask-position:calc(100% - 8px) 0;mask-position:calc(100% - 8px) 0;min-width:44px}.weui-search-bar__box .weui-icon-clear:after{content:"";position:absolute;top:0;bottom:0;width:44px}.weui-search-bar__label{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;font-size:0;border-radius:4px;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;color:var(--weui-FG-1);background:var(--weui-BG-2)}.weui-search-bar__label span{display:inline-block;font-size:14px;vertical-align:middle}.weui-search-bar__cancel-btn{-webkit-flex-shrink:0;flex-shrink:0;display:none;margin-left:8px;line-height:28px;color:var(--weui-LINK)}.weui-search-bar__input:not(:valid)+.weui-icon-clear{display:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}.weui-picker{position:fixed;width:100%;box-sizing:border-box;left:0;bottom:0;z-index:5000;background-color:var(--weui-BG-2);padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.weui-picker__hd{display:-webkit-box;display:-webkit-flex;display:flex;padding:16px;padding:16px calc(16px + constant(safe-area-inset-right)) 16px calc(16px + constant(safe-area-inset-left));padding:16px calc(16px + env(safe-area-inset-right)) 16px calc(16px + env(safe-area-inset-left));position:relative;text-align:center;font-size:17px;line-height:1.4}.weui-picker__hd:after{content:" ";position:absolute;left:0;bottom:0;right:0;height:1px;border-bottom:1px solid var(--weui-FG-3);color:var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__bd{display:-webkit-box;display:-webkit-flex;display:flex;position:relative;background-color:var(--weui-BG-2);height:240px;overflow:hidden}.weui-picker__group{-webkit-box-flex:1;-webkit-flex:1;flex:1;position:relative;height:100%}.weui-picker__group:first-child .weui-picker__item{padding-left:constant(safe-area-inset-left);padding-left:env(safe-area-inset-left)}.weui-picker__group:last-child .weui-picker__item{padding-right:constant(safe-area-inset-right);padding-right:env(safe-area-inset-right)}.weui-picker__mask{position:absolute;top:0;left:0;width:100%;height:100%;margin:0 auto;z-index:3;background-image:-webkit-linear-gradient(top,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),-webkit-linear-gradient(bottom,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background-image:linear-gradient(180deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),linear-gradient(0deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background-position:top,bottom;background-size:100% 92px;background-repeat:no-repeat;-webkit-transform:translateZ(0);transform:translateZ(0)}[data-weui-theme=dark] .weui-picker__mask{background-image:-webkit-linear-gradient(top,rgba(25,25,25,.95),rgba(25,25,25,.6)),-webkit-linear-gradient(bottom,rgba(25,25,25,.95),rgba(25,25,25,.6));background-image:linear-gradient(180deg,rgba(25,25,25,.95),rgba(25,25,25,.6)),linear-gradient(0deg,rgba(25,25,25,.95),rgba(25,25,25,.6))}.weui-picker__indicator{width:100%;height:56px;position:absolute;left:0;top:92px;z-index:3}.weui-picker__indicator:before{top:0;border-top:1px solid var(--weui-FG-3);-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__indicator:after,.weui-picker__indicator:before{content:" ";position:absolute;left:0;right:0;height:1px;color:var(--weui-FG-3)}.weui-picker__indicator:after{bottom:0;border-bottom:1px solid var(--weui-FG-3);-webkit-transform-origin:0 100%;transform-origin:0 100%;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.weui-picker__content{position:absolute;top:0;left:0;width:100%}.weui-picker__item{height:48px;line-height:48px;text-align:center;color:var(--weui-FG-0);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.weui-picker__item_disabled{color:var(--weui-FG-1)}@-webkit-keyframes a{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes a{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.weui-animate-slide-up{-webkit-animation:a ease .3s forwards;animation:a ease .3s forwards}@-webkit-keyframes b{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes b{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.weui-animate-slide-down{-webkit-animation:b ease .3s forwards;animation:b ease .3s forwards}@-webkit-keyframes c{0%{opacity:0}to{opacity:1}}@keyframes c{0%{opacity:0}to{opacity:1}}.weui-animate-fade-in{-webkit-animation:c ease .3s forwards;animation:c ease .3s forwards}@-webkit-keyframes d{0%{opacity:1}to{opacity:0}}@keyframes d{0%{opacity:1}to{opacity:0}}.weui-animate-fade-out{-webkit-animation:d ease .3s forwards;animation:d ease .3s forwards}.weui-agree{display:block;padding:8px 15px 0;font-size:14px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.weui-agree a,.weui-agree navigator{color:var(--weui-LINK)}.weui-agree navigator{display:inline}.weui-agree__text{color:var(--weui-FG-1);margin-left:2px}.weui-agree__checkbox{-webkit-appearance:none;appearance:none;display:inline-block;border:0;outline:0;vertical-align:middle;background-color:currentColor;-webkit-mask-position:0 0;mask-position:0 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%221000%22%20height%3D%221000%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M500%20916.667C269.881%20916.667%2083.333%20730.119%2083.333%20500%2083.333%20269.881%20269.881%2083.333%20500%2083.333c230.119%200%20416.667%20186.548%20416.667%20416.667%200%20230.119-186.548%20416.667-416.667%20416.667zm0-50c202.504%200%20366.667-164.163%20366.667-366.667%200-202.504-164.163-366.667-366.667-366.667-202.504%200-366.667%20164.163-366.667%20366.667%200%20202.504%20164.163%20366.667%20366.667%20366.667z%22%20fill-rule%3D%22evenodd%22%20fill-opacity%3D%22.9%22%2F%3E%3C%2Fsvg%3E);color:var(--weui-FG-2);width:1em;height:1em;font-size:17px;margin-top:-.2em}.weui-agree__checkbox-check{opacity:0;position:absolute;width:1px;height:1px;overflow:hidden}.weui-agree__checkbox-check[aria-checked=true]+.weui-agree__checkbox,.weui-agree__checkbox:checked{-webkit-mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E);mask-image:url(data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M12%2022C6.477%2022%202%2017.523%202%2012S6.477%202%2012%202s10%204.477%2010%2010-4.477%2010-10%2010zm-1.177-7.86l-2.765-2.767L7%2012.431l3.119%203.121a1%201%200%20001.414%200l5.952-5.95-1.062-1.062-5.6%205.6z%22%2F%3E%3C%2Fsvg%3E);color:var(--weui-BRAND)}.weui-agree_animate{-webkit-animation:e .3s 1;animation:e .3s 1}@-webkit-keyframes e{0%{-webkit-transform:translateX(0);transform:translateX(0)}16%{-webkit-transform:translateX(-8px);transform:translateX(-8px)}28%{-webkit-transform:translateX(-16px);transform:translateX(-16px)}44%{-webkit-transform:translateX(0);transform:translateX(0)}59%{-webkit-transform:translateX(-16px);transform:translateX(-16px)}73%{-webkit-transform:translateX(0);transform:translateX(0)}82%{-webkit-transform:translateX(16px);transform:translateX(16px)}94%{-webkit-transform:translateX(8px);transform:translateX(8px)}to{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes e{0%{-webkit-transform:translateX(0);transform:translateX(0)}16%{-webkit-transform:translateX(-8px);transform:translateX(-8px)}28%{-webkit-transform:translateX(-16px);transform:translateX(-16px)}44%{-webkit-transform:translateX(0);transform:translateX(0)}59%{-webkit-transform:translateX(-16px);transform:translateX(-16px)}73%{-webkit-transform:translateX(0);transform:translateX(0)}82%{-webkit-transform:translateX(16px);transform:translateX(16px)}94%{-webkit-transform:translateX(8px);transform:translateX(8px)}to{-webkit-transform:translateX(0);transform:translateX(0)}}.weui-primary-loading{font-size:16px;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;position:relative;width:1em;height:1em;vertical-align:middle;color:#606060;-webkit-animation:f 1s steps(60) infinite;animation:f 1s steps(60) infinite}.weui-primary-loading:after,.weui-primary-loading:before{content:"";display:block;width:.5em;height:1em;box-sizing:border-box;border:.125em solid;border-color:currentColor}.weui-primary-loading:before{border-right-width:0;border-top-left-radius:1em;border-bottom-left-radius:1em;-webkit-mask-image:-webkit-linear-gradient(top,#000 8%,rgba(0,0,0,.3) 95%)}.weui-primary-loading:after{border-left-width:0;border-top-right-radius:1em;border-bottom-right-radius:1em;-webkit-mask-image:-webkit-linear-gradient(top,transparent 8%,rgba(0,0,0,.3) 95%)}.weui-primary-loading__dot{position:absolute;top:0;left:50%;margin-left:-.0625em;width:.125em;height:.125em;border-top-right-radius:.125em;border-bottom-right-radius:.125em;background:currentColor}.weui-primary-loading_brand{color:var(--weui-BRAND)}.weui-primary-loading_transparent{color:#ededed}.weui-loading{font-size:10px;width:2em;height:2em;display:inline-block;vertical-align:middle;-webkit-animation:f 1s steps(12) infinite;animation:f 1s steps(12) infinite;background:transparent url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E9E9E9' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23989697' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%239B999A' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23A3A1A2' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23ABA9AA' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23B2B2B2' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23BAB8B9' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23C2C0C1' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23CBCBCB' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23D2D2D2' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23DADADA' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='%23E2E2E2' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E") no-repeat;background-size:100%}.weui-btn_loading.weui-btn_primary .weui-loading,.weui-loading.weui-loading_transparent{background-image:url("data:image/svg+xml;charset=utf8, %3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 100 100'%3E%3Cpath fill='none' d='M0 0h100v100H0z'/%3E%3Crect xmlns='http://www.w3.org/2000/svg' width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.56)' rx='5' ry='5' transform='translate(0 -30)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.5)' rx='5' ry='5' transform='rotate(30 105.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.43)' rx='5' ry='5' transform='rotate(60 75.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.38)' rx='5' ry='5' transform='rotate(90 65 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.32)' rx='5' ry='5' transform='rotate(120 58.66 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.28)' rx='5' ry='5' transform='rotate(150 54.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.25)' rx='5' ry='5' transform='rotate(180 50 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.2)' rx='5' ry='5' transform='rotate(-150 45.98 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.17)' rx='5' ry='5' transform='rotate(-120 41.34 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.14)' rx='5' ry='5' transform='rotate(-90 35 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.1)' rx='5' ry='5' transform='rotate(-60 24.02 65)'/%3E%3Crect width='7' height='20' x='46.5' y='40' fill='rgba(255,255,255,.03)' rx='5' ry='5' transform='rotate(-30 -5.98 65)'/%3E%3C/svg%3E")}@-webkit-keyframes f{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes f{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.weui-slider{padding:15px 18px;-webkit-user-select:none;user-select:none}.weui-slider__inner{position:relative;height:2px;background-color:var(--weui-FG-3)}.weui-slider__track{height:100%;background-color:var(--weui-BRAND);width:0}.weui-slider__handler{position:absolute;left:0;top:50%;width:28px;height:28px;margin-left:-14px;margin-top:-14px;border-radius:50%;background-color:#fff;box-shadow:0 0 4px var(--weui-FG-3)}.weui-slider-box{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-slider-box .weui-slider{-webkit-box-flex:1;-webkit-flex:1;flex:1}.weui-slider-box__value{margin-left:.5em;min-width:24px;color:var(--weui-FG-1);text-align:center;font-size:14px}.wx_dot_loading,.wx_dot_loading:after,.wx_dot_loading:before{display:inline-block;vertical-align:middle;width:6px;height:6px;border-radius:50%;background-color:rgba(0,0,0,.3);font-size:0;-webkit-animation:h 1.6s step-start infinite;animation:h 1.6s step-start infinite}.wx_dot_loading{position:relative}.wx_dot_loading:before{content:"";position:absolute;left:-12px;background-color:rgba(0,0,0,.1);-webkit-animation:g 1.6s step-start infinite;animation:g 1.6s step-start infinite}.wx_dot_loading:after{content:"";position:absolute;right:-12px;background-color:rgba(0,0,0,.5);-webkit-animation:i 1.6s step-start infinite;animation:i 1.6s step-start infinite}@-webkit-keyframes g{0%,to{background-color:rgba(0,0,0,.1)}30%{background-color:rgba(0,0,0,.5)}60%{background-color:rgba(0,0,0,.3)}}@keyframes g{0%,to{background-color:rgba(0,0,0,.1)}30%{background-color:rgba(0,0,0,.5)}60%{background-color:rgba(0,0,0,.3)}}@-webkit-keyframes h{0%,to{background-color:rgba(0,0,0,.3)}30%{background-color:rgba(0,0,0,.1)}60%{background-color:rgba(0,0,0,.5)}}@keyframes h{0%,to{background-color:rgba(0,0,0,.3)}30%{background-color:rgba(0,0,0,.1)}60%{background-color:rgba(0,0,0,.5)}}@-webkit-keyframes i{0%,to{background-color:rgba(0,0,0,.5)}30%{background-color:rgba(0,0,0,.3)}60%{background-color:rgba(0,0,0,.1)}}@keyframes i{0%,to{background-color:rgba(0,0,0,.5)}30%{background-color:rgba(0,0,0,.3)}60%{background-color:rgba(0,0,0,.1)}}.wx_dot_loading_white{background-color:hsla(0,0%,100%,.3);-webkit-animation:k 1.6s step-start infinite;animation:k 1.6s step-start infinite}.wx_dot_loading_white:before{background-color:hsla(0,0%,100%,.5);-webkit-animation:j 1.6s step-start infinite;animation:j 1.6s step-start infinite}.wx_dot_loading_white:after{background-color:hsla(0,0%,100%,.1);-webkit-animation:l 1.6s step-start infinite;animation:l 1.6s step-start infinite}@-webkit-keyframes j{0%,to{background-color:hsla(0,0%,100%,.5)}30%{background-color:hsla(0,0%,100%,.1)}60%{background-color:hsla(0,0%,100%,.3)}}@keyframes j{0%,to{background-color:hsla(0,0%,100%,.5)}30%{background-color:hsla(0,0%,100%,.1)}60%{background-color:hsla(0,0%,100%,.3)}}@-webkit-keyframes k{0%,to{background-color:hsla(0,0%,100%,.3)}30%{background-color:hsla(0,0%,100%,.5)}60%{background-color:hsla(0,0%,100%,.1)}}@keyframes k{0%,to{background-color:hsla(0,0%,100%,.3)}30%{background-color:hsla(0,0%,100%,.5)}60%{background-color:hsla(0,0%,100%,.1)}}@-webkit-keyframes l{0%,to{background-color:hsla(0,0%,100%,.1)}30%{background-color:hsla(0,0%,100%,.3)}60%{background-color:hsla(0,0%,100%,.5)}}@keyframes l{0%,to{background-color:hsla(0,0%,100%,.1)}30%{background-color:hsla(0,0%,100%,.3)}60%{background-color:hsla(0,0%,100%,.5)}}:host{width:100%}.weui-slideview{position:relative;overflow:hidden}.weui-slideview__left{position:relative;z-index:10}.weui-slideview__right{position:absolute;z-index:1;left:100%;top:0;height:100%}.weui-slideview__buttons{height:100%}.weui-slideview__btn__wrp{position:absolute;left:0;bottom:0;min-width:69px;white-space:nowrap;text-align:center}.weui-slideview__btn,.weui-slideview__btn__wrp{height:100%;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-slideview__btn{color:#fff;padding:0 17px}.weui-slideview__btn-group_default .weui-slideview__btn{background:#c7c7cc}[data-weui-theme=dark] .weui-slideview__btn-group_default .weui-slideview__btn{background:var(--weui-BG-4)}.weui-slideview__btn-group_default~.weui-slideview__btn-group_default:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #fff;color:#fff;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}[data-weui-theme=dark] .weui-slideview__btn-group_default~.weui-slideview__btn-group_default:before{border-left-color:var(--weui-FG-3)}.weui-slideview__btn-group_default:first-child:before{display:none}.weui-slideview__btn-group_warn .weui-slideview__btn{background:#fe3b30}.weui-slideview__btn-group_warn~.weui-slideview__btn-group_warn:before{content:" ";position:absolute;left:0;top:0;width:1px;bottom:0;border-left:1px solid #fff;color:#fff;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.5);transform:scaleX(.5)}.weui-slideview__btn-group_warn:first-child:before{display:none}.weui-slideview_icon .weui-slideview__btn__wrp{background:transparent;font-size:0}.weui-slideview_icon .weui-slideview__btn__wrp:first-child{padding-left:16px}.weui-slideview_icon .weui-slideview__btn__wrp:last-child{padding-right:8px}.weui-slideview_icon .weui-slideview__btn{width:48px;height:48px;line-height:48px;padding:0;display:inline-block;vertical-align:middle;border-radius:50%;background-color:#fff}[data-weui-theme=dark] .weui-slideview_icon .weui-slideview__btn{background-color:var(--weui-BG-4)}.weui-slideview_icon .weui-slideview__btn__icon{display:inline-block;vertical-align:middle;width:22px;height:22px}page{--height:44px;--right:190rpx}.weui-navigation-bar{overflow:hidden;color:var(--weui-FG-0)}.weui-navigation-bar .android{--height:48px;--right:222rpx}.weui-navigation-bar__inner{position:fixed;top:0;left:0;z-index:5001;height:var(--height);padding-right:var(--right);width:calc(100% - var(--right))}.weui-navigation-bar__inner,.weui-navigation-bar__inner .weui-navigation-bar__left{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-navigation-bar__inner .weui-navigation-bar__left{position:relative;width:var(--right);padding-left:16px}.weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn{display:inline-block;vertical-align:middle;background-repeat:no-repeat}.weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback{font-size:12px;width:1em;height:2em;-webkit-mask:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%;mask:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='24' viewBox='0 0 12 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M10 19.438L8.955 20.5l-7.666-7.79a1.02 1.02 0 0 1 0-1.42L8.955 3.5 10 4.563 2.682 12 10 19.438z'/%3E%3C/svg%3E") no-repeat 50% 50%;-webkit-mask-size:cover;mask-size:cover;background-color:currentColor}.weui-navigation-bar__inner .weui-navigation-bar__left .weui-navigation-bar__btn_goback:active{opacity:.5}.weui-navigation-bar__inner .weui-navigation-bar__center{font-size:17px;text-align:center;position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.weui-navigation-bar__inner .weui-navigation-bar__loading{margin-right:4px;display:-webkit-inline-box;display:-webkit-inline-flex;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-navigation-bar__inner .weui-navigation-bar__loading .weui-loading{margin-left:0}.weui-navigation-bar__inner .weui-navigation-bar__right{margin-right:16px}.weui-navigation-bar__placeholder{height:var(--height);background:var(--weui-BG-1);position:relative;z-index:50}.weui-uploader__hd{display:block}.weui-uploader__overview{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center}.weui-uploader__tips{color:var(--weui-FG-2);font-size:14px;line-height:1.4;padding-top:4px}.weui-uploader__img{display:block;width:100%;height:100%}.weui-gallery{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.weui-gallery__info{color:#fff;font-size:17px;line-height:60px;min-height:60px;text-align:center}.weui-gallery__img__wrp{-webkit-box-flex:1;-webkit-flex:1;flex:1;position:relative;font-size:0}.weui-gallery__img{position:absolute;width:100%;height:100%}.weui-gallery__opr{position:static}.weui-search-bar .weui-search-bar__box .weui-search-bar__input{height:inherit;line-height:inherit}.weui-search-bar .weui-search-bar__box .weui-icon-clear{display:block}.weui-loadmore .weui-loading{margin-right:.3em}.weui-btn_input-clear{display:block}.weui-msg__title{font-weight:700;-webkit-text-stroke:initial} \ No newline at end of file diff --git a/wxParse/html2json.js b/wxParse/html2json.js new file mode 100644 index 0000000..87c618e --- /dev/null +++ b/wxParse/html2json.js @@ -0,0 +1,97 @@ +function e(e) { + for (var t = {}, r = e.split(","), s = 0; s < r.length; s++) t[r[s]] = !0; + return t; +} + +function t(e) { + return e.replace(/<\?xml.*\?>\n/, "").replace(/<.*!doctype.*\>\n/, "").replace(/<.*!DOCTYPE.*\>\n/, ""); +} + +function r(e) { + var t = []; + if (0 == a.length || !n) return (d = {}).node = "text", d.text = e, s = [ d ]; + e = e.replace(/\[([^\[\]]+)\]/g, ":$1:"); + for (var r = new RegExp("[:]"), s = e.split(r), i = 0; i < s.length; i++) { + var l = s[i], d = {}; + n[l] ? (d.node = "element", d.tag = "emoji", d.text = n[l], d.baseSrc = o) : (d.node = "text", + d.text = l), t.push(d); + } + return t; +} + +var s = "https", a = "", o = "", n = {}, i = require("./wxDiscode.js"), l = require("./htmlparser.js"), d = (e("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"), +e("br,a,code,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,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video")), c = e("abbr,acronym,applet,b,basefont,bdo,big,button,cite,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"), u = e("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"); + +e("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"), +e("wxxxcode-style,script,style,view,scroll-view,block"); + +module.exports = { + html2json: function(e, a) { + e = t(e), e = i.strDiscode(e); + var o = [], n = { + node: a, + nodes: [], + images: [], + imageUrls: [] + }; + return l(e, { + start: function(e, t, r) { + var l = { + node: "element", + tag: e + }; + if (d[e] ? l.tagType = "block" : c[e] ? l.tagType = "inline" : u[e] && (l.tagType = "closeSelf"), + 0 !== t.length && (l.attr = t.reduce(function(e, t) { + var r = t.name, s = t.value; + return "class" == r && (console.log(s), l.classStr = s), "style" == r && (console.log(s), + l.styleStr = s), s.match(/ /) && (s = s.split(" ")), e[r] ? Array.isArray(e[r]) ? e[r].push(s) : e[r] = [ e[r], s ] : e[r] = s, + e; + }, {})), "img" === l.tag) { + l.imgIndex = n.images.length; + var p = l.attr.src; + p = i.urlToHttpUrl(p, s), l.attr.src = p, l.from = a, n.images.push(l), n.imageUrls.push(p); + } + if ("font" === l.tag) { + var m = [ "x-small", "small", "medium", "large", "x-large", "xx-large", "-webkit-xxx-large" ], f = { + color: "color", + face: "font-family", + size: "font-size" + }; + l.attr.style || (l.attr.style = []), l.styleStr || (l.styleStr = ""); + for (var h in f) if (l.attr[h]) { + var g = "size" === h ? m[l.attr[h] - 1] : l.attr[h]; + l.attr.style.push(f[h]), l.attr.style.push(g), l.styleStr += f[h] + ": " + g + ";"; + } + } + if ("source" === l.tag && (n.source = l.attr.src), r) { + var v = o[0] || n; + void 0 === v.nodes && (v.nodes = []), v.nodes.push(l); + } else o.unshift(l); + }, + end: function(e) { + var t = o.shift(); + if (t.tag !== e && console.error("invalid state: mismatch end tag"), "video" === t.tag && n.source && (t.attr.src = n.source, + delete result.source), 0 === o.length) n.nodes.push(t); else { + var r = o[0]; + void 0 === r.nodes && (r.nodes = []), r.nodes.push(t); + } + }, + chars: function(e) { + var t = { + node: "text", + text: e, + textArray: r(e) + }; + if (0 === o.length) n.nodes.push(t); else { + var s = o[0]; + void 0 === s.nodes && (s.nodes = []), s.nodes.push(t); + } + }, + comment: function(e) {} + }), n; + }, + emojisInit: function() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "/wxParse/emojis/", r = arguments[2]; + a = e, o = t, n = r; + } +}; diff --git a/wxParse/htmlparser.js b/wxParse/htmlparser.js new file mode 100644 index 0000000..de7b6e9 --- /dev/null +++ b/wxParse/htmlparser.js @@ -0,0 +1,48 @@ +function e(e) { + for (var t = {}, r = e.split(","), s = 0; s < r.length; s++) t[r[s]] = !0; + return t; +} + +var t = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/, r = /^<\/([-A-Za-z0-9_]+)[^>]*>/, s = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g, a = e("area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr"), n = e("a,address,code,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,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video"), i = e("abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,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"), o = e("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"), l = e("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"), c = e("wxxxcode-style,script,style,view,scroll-view,block"); + +module.exports = function(e, d) { + function f(e, t) { + if (t) for (t = t.toLowerCase(), r = b.length - 1; r >= 0 && b[r] != t; r--) ; else var r = 0; + if (r >= 0) { + for (var s = b.length - 1; s >= r; s--) d.end && d.end(b[s]); + b.length = r; + } + } + var p, u, h, b = [], m = e; + for (b.last = function() { + return this[this.length - 1]; + }; e; ) { + if (u = !0, b.last() && c[b.last()]) e = e.replace(new RegExp("([\\s\\S]*?)]*>"), function(e, t) { + return t = t.replace(/|/g, "$1$2"), d.chars && d.chars(t), + ""; + }), f(0, b.last()); else if (0 == e.indexOf("\x3c!--") ? (p = e.indexOf("--\x3e")) >= 0 && (d.comment && d.comment(e.substring(4, p)), + e = e.substring(p + 3), u = !1) : 0 == e.indexOf("" : "Error in unnamed extension", a = { + valid: !0, + error: "" + }; + s.helper.isArray(e) || (e = [ e ]); + for (var o = 0; o < e.length; ++o) { + var i = t + " sub-extension " + o + ": ", l = e[o]; + if ("object" !== (void 0 === l ? "undefined" : n(l))) return a.valid = !1, a.error = i + "must be an object, but " + (void 0 === l ? "undefined" : n(l)) + " given", + a; + if (!s.helper.isString(l.type)) return a.valid = !1, a.error = i + 'property "type" must be a string, but ' + n(l.type) + " given", + a; + var c = l.type = l.type.toLowerCase(); + if ("language" === c && (c = l.type = "lang"), "html" === c && (c = l.type = "output"), + "lang" !== c && "output" !== c && "listener" !== c) return a.valid = !1, a.error = i + "type " + c + ' is not recognized. Valid values: "lang/language", "output/html" or "listener"', + a; + if ("listener" === c) { + if (s.helper.isUndefined(l.listeners)) return a.valid = !1, a.error = i + '. Extensions of type "listener" must have a property called "listeners"', + a; + } else if (s.helper.isUndefined(l.filter) && s.helper.isUndefined(l.regex)) return a.valid = !1, + a.error = i + c + ' extensions must define either a "regex" property or a "filter" method', + a; + if (l.listeners) { + if ("object" !== n(l.listeners)) return a.valid = !1, a.error = i + '"listeners" property must be an object but ' + n(l.listeners) + " given", + a; + for (var u in l.listeners) if (l.listeners.hasOwnProperty(u) && "function" != typeof l.listeners[u]) return a.valid = !1, + a.error = i + '"listeners" property must be an hash of [event name]: [callback]. listeners.' + u + " must be a function but " + n(l.listeners[u]) + " given", + a; + } + if (l.filter) { + if ("function" != typeof l.filter) return a.valid = !1, a.error = i + '"filter" must be a function, but ' + n(l.filter) + " given", + a; + } else if (l.regex) { + if (s.helper.isString(l.regex) && (l.regex = new RegExp(l.regex, "g")), !l.regex instanceof RegExp) return a.valid = !1, + a.error = i + '"regex" property must either be a string or a RegExp object, but ' + n(l.regex) + " given", + a; + if (s.helper.isUndefined(l.replace)) return a.valid = !1, a.error = i + '"regex" extensions must implement a replace string or function', + a; + } + } + return a; +} + +function t(e, r) { + return "~E" + r.charCodeAt(0) + "E"; +} + +var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e; +} : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e; +}, s = {}, a = {}, o = {}, i = e(!0), l = { + github: { + omitExtraWLInCodeBlocks: !0, + prefixHeaderId: "user-content-", + simplifiedAutoLink: !0, + literalMidWordUnderscores: !0, + strikethrough: !0, + tables: !0, + tablesHeaderId: !0, + ghCodeBlocks: !0, + tasklists: !0 + }, + vanilla: e(!0) +}; + +s.helper = {}, s.extensions = {}, s.setOption = function(e, r) { + return i[e] = r, this; +}, s.getOption = function(e) { + return i[e]; +}, s.getOptions = function() { + return i; +}, s.resetOptions = function() { + i = e(!0); +}, s.setFlavor = function(e) { + if (l.hasOwnProperty(e)) { + var r = l[e]; + for (var t in r) r.hasOwnProperty(t) && (i[t] = r[t]); + } +}, s.getDefaultOptions = function(r) { + return e(r); +}, s.subParser = function(e, r) { + if (s.helper.isString(e)) { + if (void 0 === r) { + if (a.hasOwnProperty(e)) return a[e]; + throw Error("SubParser named " + e + " not registered!"); + } + a[e] = r; + } +}, s.extension = function(e, t) { + if (!s.helper.isString(e)) throw Error("Extension 'name' must be a string"); + if (e = s.helper.stdExtName(e), s.helper.isUndefined(t)) { + if (!o.hasOwnProperty(e)) throw Error("Extension named " + e + " is not registered!"); + return o[e]; + } + "function" == typeof t && (t = t()), s.helper.isArray(t) || (t = [ t ]); + var n = r(t, e); + if (!n.valid) throw Error(n.error); + o[e] = t; +}, s.getAllExtensions = function() { + return o; +}, s.removeExtension = function(e) { + delete o[e]; +}, s.resetExtensions = function() { + o = {}; +}, s.validateExtension = function(e) { + var t = r(e, null); + return !!t.valid || (console.warn(t.error), !1); +}, s.hasOwnProperty("helper") || (s.helper = {}), s.helper.isString = function(e) { + return "string" == typeof e || e instanceof String; +}, s.helper.isFunction = function(e) { + var r = {}; + return e && "[object Function]" === r.toString.call(e); +}, s.helper.forEach = function(e, r) { + if ("function" == typeof e.forEach) e.forEach(r); else for (var t = 0; t < e.length; t++) r(e[t], t, e); +}, s.helper.isArray = function(e) { + return e.constructor === Array; +}, s.helper.isUndefined = function(e) { + return void 0 === e; +}, s.helper.stdExtName = function(e) { + return e.replace(/[_-]||\s/g, "").toLowerCase(); +}, s.helper.escapeCharactersCallback = t, s.helper.escapeCharacters = function(e, r, n) { + var s = "([" + r.replace(/([\[\]\\])/g, "\\$1") + "])"; + n && (s = "\\\\" + s); + var a = new RegExp(s, "g"); + return e = e.replace(a, t); +}; + +var c = function(e, r, t, n) { + var s, a, o, i, l, c = n || "", u = c.indexOf("g") > -1, p = new RegExp(r + "|" + t, "g" + c.replace(/g/g, "")), h = new RegExp(r, c.replace(/g/g, "")), d = []; + do { + for (s = 0; o = p.exec(e); ) if (h.test(o[0])) s++ || (i = (a = p.lastIndex) - o[0].length); else if (s && !--s) { + l = o.index + o[0].length; + var f = { + left: { + start: i, + end: a + }, + match: { + start: a, + end: o.index + }, + right: { + start: o.index, + end: l + }, + wholeMatch: { + start: i, + end: l + } + }; + if (d.push(f), !u) return d; + } + } while (s && (p.lastIndex = a)); + return d; +}; + +s.helper.matchRecursiveRegExp = function(e, r, t, n) { + for (var s = c(e, r, t, n), a = [], o = 0; o < s.length; ++o) a.push([ e.slice(s[o].wholeMatch.start, s[o].wholeMatch.end), e.slice(s[o].match.start, s[o].match.end), e.slice(s[o].left.start, s[o].left.end), e.slice(s[o].right.start, s[o].right.end) ]); + return a; +}, s.helper.replaceRecursiveRegExp = function(e, r, t, n, a) { + if (!s.helper.isFunction(r)) { + var o = r; + r = function() { + return o; + }; + } + var i = c(e, t, n, a), l = e, u = i.length; + if (u > 0) { + var p = []; + 0 !== i[0].wholeMatch.start && p.push(e.slice(0, i[0].wholeMatch.start)); + for (var h = 0; h < u; ++h) p.push(r(e.slice(i[h].wholeMatch.start, i[h].wholeMatch.end), e.slice(i[h].match.start, i[h].match.end), e.slice(i[h].left.start, i[h].left.end), e.slice(i[h].right.start, i[h].right.end))), + h < u - 1 && p.push(e.slice(i[h].wholeMatch.end, i[h + 1].wholeMatch.start)); + i[u - 1].wholeMatch.end < e.length && p.push(e.slice(i[u - 1].wholeMatch.end)), + l = p.join(""); + } + return l; +}, s.helper.isUndefined(console) && (console = { + warn: function(e) { + alert(e); + }, + log: function(e) { + alert(e); + }, + error: function(e) { + throw e; + } +}), s.Converter = function(e) { + function t(e, t) { + if (t = t || null, s.helper.isString(e)) { + if (e = s.helper.stdExtName(e), t = e, s.extensions[e]) return console.warn("DEPRECATION WARNING: " + e + " is an old extension that uses a deprecated loading method.Please inform the developer that the extension should be updated!"), + void a(s.extensions[e], e); + if (s.helper.isUndefined(o[e])) throw Error('Extension "' + e + '" could not be loaded. It was either not found or is not a valid extension.'); + e = o[e]; + } + "function" == typeof e && (e = e()), s.helper.isArray(e) || (e = [ e ]); + var n = r(e, t); + if (!n.valid) throw Error(n.error); + for (var i = 0; i < e.length; ++i) { + switch (e[i].type) { + case "lang": + h.push(e[i]); + break; + + case "output": + d.push(e[i]); + } + if (e[i].hasOwnProperty(f)) for (var l in e[i].listeners) e[i].listeners.hasOwnProperty(l) && c(l, e[i].listeners[l]); + } + } + function a(e, t) { + "function" == typeof e && (e = e(new s.Converter())), s.helper.isArray(e) || (e = [ e ]); + var n = r(e, t); + if (!n.valid) throw Error(n.error); + for (var a = 0; a < e.length; ++a) switch (e[a].type) { + case "lang": + h.push(e[a]); + break; + + case "output": + d.push(e[a]); + break; + + default: + throw Error("Extension loader error: Type unrecognized!!!"); + } + } + function c(e, r) { + if (!s.helper.isString(e)) throw Error("Invalid argument in converter.listen() method: name must be a string, but " + (void 0 === e ? "undefined" : n(e)) + " given"); + if ("function" != typeof r) throw Error("Invalid argument in converter.listen() method: callback must be a function, but " + (void 0 === r ? "undefined" : n(r)) + " given"); + f.hasOwnProperty(e) || (f[e] = []), f[e].push(r); + } + function u(e) { + var r = e.match(/^\s*/)[0].length, t = new RegExp("^\\s{0," + r + "}", "gm"); + return e.replace(t, ""); + } + var p = {}, h = [], d = [], f = {}; + !function() { + e = e || {}; + for (var r in i) i.hasOwnProperty(r) && (p[r] = i[r]); + if ("object" !== (void 0 === e ? "undefined" : n(e))) throw Error("Converter expects the passed parameter to be an object, but " + (void 0 === e ? "undefined" : n(e)) + " was passed instead."); + for (var a in e) e.hasOwnProperty(a) && (p[a] = e[a]); + p.extensions && s.helper.forEach(p.extensions, t); + }(), this._dispatch = function(e, r, t, n) { + if (f.hasOwnProperty(e)) for (var s = 0; s < f[e].length; ++s) { + var a = f[e][s](e, r, this, t, n); + a && void 0 !== a && (r = a); + } + return r; + }, this.listen = function(e, r) { + return c(e, r), this; + }, this.makeHtml = function(e) { + if (!e) return e; + var r = { + gHtmlBlocks: [], + gHtmlMdBlocks: [], + gHtmlSpans: [], + gUrls: {}, + gTitles: {}, + gDimensions: {}, + gListLevel: 0, + hashLinkCounts: {}, + langExtensions: h, + outputModifiers: d, + converter: this, + ghCodeBlocks: [] + }; + return e = e.replace(/~/g, "~T"), e = e.replace(/\$/g, "~D"), e = e.replace(/\r\n/g, "\n"), + e = e.replace(/\r/g, "\n"), p.smartIndentationFix && (e = u(e)), e = e, e = s.subParser("detab")(e, p, r), + e = s.subParser("stripBlankLines")(e, p, r), s.helper.forEach(h, function(t) { + e = s.subParser("runExtension")(t, e, p, r); + }), e = s.subParser("hashPreCodeTags")(e, p, r), e = s.subParser("githubCodeBlocks")(e, p, r), + e = s.subParser("hashHTMLBlocks")(e, p, r), e = s.subParser("hashHTMLSpans")(e, p, r), + e = s.subParser("stripLinkDefinitions")(e, p, r), e = s.subParser("blockGamut")(e, p, r), + e = s.subParser("unhashHTMLSpans")(e, p, r), e = s.subParser("unescapeSpecialChars")(e, p, r), + e = e.replace(/~D/g, "$$"), e = e.replace(/~T/g, "~"), s.helper.forEach(d, function(t) { + e = s.subParser("runExtension")(t, e, p, r); + }), e; + }, this.setOption = function(e, r) { + p[e] = r; + }, this.getOption = function(e) { + return p[e]; + }, this.getOptions = function() { + return p; + }, this.addExtension = function(e, r) { + t(e, r = r || null); + }, this.useExtension = function(e) { + t(e); + }, this.setFlavor = function(e) { + if (l.hasOwnProperty(e)) { + var r = l[e]; + for (var t in r) r.hasOwnProperty(t) && (p[t] = r[t]); + } + }, this.removeExtension = function(e) { + s.helper.isArray(e) || (e = [ e ]); + for (var r = 0; r < e.length; ++r) { + for (var t = e[r], n = 0; n < h.length; ++n) h[n] === t && h[n].splice(n, 1); + for (;0 < d.length; ++n) d[0] === t && d[0].splice(n, 1); + } + }, this.getAllExtensions = function() { + return { + language: h, + output: d + }; + }; +}, s.subParser("anchors", function(e, r, t) { + var n = function(e, r, n, a, o, i, l, c) { + s.helper.isUndefined(c) && (c = ""), e = r; + var u = n, p = a.toLowerCase(), h = o, d = c; + if (!h) if (p || (p = u.toLowerCase().replace(/ ?\n/g, " ")), h = "#" + p, s.helper.isUndefined(t.gUrls[p])) { + if (!(e.search(/\(\s*\)$/m) > -1)) return e; + h = ""; + } else h = t.gUrls[p], s.helper.isUndefined(t.gTitles[p]) || (d = t.gTitles[p]); + var f = '"; + }; + return e = (e = t.converter._dispatch("anchors.before", e, r, t)).replace(/(\[((?:\[[^\]]*]|[^\[\]])*)][ ]?(?:\n[ ]*)?\[(.*?)])()()()()/g, n), + e = e.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g, n), + e = e.replace(/(\[([^\[\]]+)])()()()()()/g, n), e = t.converter._dispatch("anchors.after", e, r, t); +}), s.subParser("autoLinks", function(e, r, t) { + function n(e, r) { + var t = r; + return /^www\./i.test(r) && (r = r.replace(/^www\./i, "http://www.")), '' + t + ""; + } + function a(e, r) { + var t = s.subParser("unescapeSpecialChars")(r); + return s.subParser("encodeEmailAddress")(t); + } + var o = /\b(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+)(?=\s|$)(?!["<>])/gi, i = /<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)>/gi, l = /(?:^|[ \n\t])([A-Za-z0-9!#$%&'*+-/=?^_`\{|}~\.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?:$|[ \n\t])/gi, c = /<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi; + return e = (e = t.converter._dispatch("autoLinks.before", e, r, t)).replace(i, n), + e = e.replace(c, a), r.simplifiedAutoLink && (e = (e = e.replace(o, n)).replace(l, a)), + e = t.converter._dispatch("autoLinks.after", e, r, t); +}), s.subParser("blockGamut", function(e, r, t) { + e = t.converter._dispatch("blockGamut.before", e, r, t), e = s.subParser("blockQuotes")(e, r, t), + e = s.subParser("headers")(e, r, t); + var n = s.subParser("hashBlock")("
", r, t); + return e = e.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm, n), e = e.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm, n), + e = e.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm, n), e = s.subParser("lists")(e, r, t), + e = s.subParser("codeBlocks")(e, r, t), e = s.subParser("tables")(e, r, t), e = s.subParser("hashHTMLBlocks")(e, r, t), + e = s.subParser("paragraphs")(e, r, t), e = t.converter._dispatch("blockGamut.after", e, r, t); +}), s.subParser("blockQuotes", function(e, r, t) { + return e = t.converter._dispatch("blockQuotes.before", e, r, t), e = e.replace(/((^[ \t]{0,3}>[ \t]?.+\n(.+\n)*\n*)+)/gm, function(e, n) { + var a = n; + return a = a.replace(/^[ \t]*>[ \t]?/gm, "~0"), a = a.replace(/~0/g, ""), a = a.replace(/^[ \t]+$/gm, ""), + a = s.subParser("githubCodeBlocks")(a, r, t), a = s.subParser("blockGamut")(a, r, t), + a = a.replace(/(^|\n)/g, "$1 "), a = a.replace(/(\s*
[^\r]+?<\/pre>)/gm, function(e, r) {
+            var t = r;
+            return t = t.replace(/^  /gm, "~0"), t = t.replace(/~0/g, "");
+        }), s.subParser("hashBlock")("
\n" + a + "\n
", r, t); + }), e = t.converter._dispatch("blockQuotes.after", e, r, t); +}), s.subParser("codeBlocks", function(e, r, t) { + e = t.converter._dispatch("codeBlocks.before", e, r, t); + var n = /(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g; + return e = (e += "~0").replace(n, function(e, n, a) { + var o = n, i = a, l = "\n"; + return o = s.subParser("outdent")(o), o = s.subParser("encodeCode")(o), o = s.subParser("detab")(o), + o = o.replace(/^\n+/g, ""), o = o.replace(/\n+$/g, ""), r.omitExtraWLInCodeBlocks && (l = ""), + o = "
" + o + l + "
", s.subParser("hashBlock")(o, r, t) + i; + }), e = e.replace(/~0/, ""), e = t.converter._dispatch("codeBlocks.after", e, r, t); +}), s.subParser("codeSpans", function(e, r, t) { + return void 0 === (e = t.converter._dispatch("codeSpans.before", e, r, t)) && (e = ""), + e = e.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm, function(e, r, t, n) { + var a = n; + return a = a.replace(/^([ \t]*)/g, ""), a = a.replace(/[ \t]*$/g, ""), a = s.subParser("encodeCode")(a), + r + "" + a + ""; + }), e = t.converter._dispatch("codeSpans.after", e, r, t); +}), s.subParser("detab", function(e) { + return e = e.replace(/\t(?=\t)/g, " "), e = e.replace(/\t/g, "~A~B"), e = e.replace(/~B(.+?)~A/g, function(e, r) { + for (var t = r, n = 4 - t.length % 4, s = 0; s < n; s++) t += " "; + return t; + }), e = e.replace(/~A/g, " "), e = e.replace(/~B/g, ""); +}), s.subParser("encodeAmpsAndAngles", function(e) { + return e = e.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g, "&"), e = e.replace(/<(?![a-z\/?\$!])/gi, "<"); +}), s.subParser("encodeBackslashEscapes", function(e) { + return e = e.replace(/\\(\\)/g, s.helper.escapeCharactersCallback), e = e.replace(/\\([`*_{}\[\]()>#+-.!])/g, s.helper.escapeCharactersCallback); +}), s.subParser("encodeCode", function(e) { + return e = e.replace(/&/g, "&"), e = e.replace(//g, ">"), + e = s.helper.escapeCharacters(e, "*_{}[]\\", !1); +}), s.subParser("encodeEmailAddress", function(e) { + var r = [ function(e) { + return "&#" + e.charCodeAt(0) + ";"; + }, function(e) { + return "&#x" + e.charCodeAt(0).toString(16) + ";"; + }, function(e) { + return e; + } ]; + return e = "mailto:" + e, e = e.replace(/./g, function(e) { + if ("@" === e) e = r[Math.floor(2 * Math.random())](e); else if (":" !== e) { + var t = Math.random(); + e = t > .9 ? r[2](e) : t > .45 ? r[1](e) : r[0](e); + } + return e; + }), e = '' + e + "", e = e.replace(/">.+:/g, '">'); +}), s.subParser("escapeSpecialCharsWithinTagAttributes", function(e) { + var r = /(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi; + return e = e.replace(r, function(e) { + var r = e.replace(/(.)<\/?code>(?=.)/g, "$1`"); + return r = s.helper.escapeCharacters(r, "\\`*_", !1); + }); +}), s.subParser("githubCodeBlocks", function(e, r, t) { + return r.ghCodeBlocks ? (e = t.converter._dispatch("githubCodeBlocks.before", e, r, t), + e += "~0", e = e.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g, function(e, n, a) { + var o = r.omitExtraWLInCodeBlocks ? "" : "\n"; + return a = s.subParser("encodeCode")(a), a = s.subParser("detab")(a), a = a.replace(/^\n+/g, ""), + a = a.replace(/\n+$/g, ""), a = "
" + a + o + "
", + a = s.subParser("hashBlock")(a, r, t), "\n\n~G" + (t.ghCodeBlocks.push({ + text: e, + codeblock: a + }) - 1) + "G\n\n"; + }), e = e.replace(/~0/, ""), t.converter._dispatch("githubCodeBlocks.after", e, r, t)) : e; +}), s.subParser("hashBlock", function(e, r, t) { + return e = e.replace(/(^\n+|\n+$)/g, ""), "\n\n~K" + (t.gHtmlBlocks.push(e) - 1) + "K\n\n"; +}), s.subParser("hashElement", function(e, r, t) { + return function(e, r) { + var n = r; + return n = n.replace(/\n\n/g, "\n"), n = n.replace(/^\n/, ""), n = n.replace(/\n+$/g, ""), + n = "\n\n~K" + (t.gHtmlBlocks.push(n) - 1) + "K\n\n"; + }; +}), s.subParser("hashHTMLBlocks", function(e, r, t) { + for (var n = [ "pre", "div", "h1", "h2", "h3", "h4", "h5", "h6", "blockquote", "table", "dl", "ol", "ul", "script", "noscript", "form", "fieldset", "iframe", "math", "style", "section", "header", "footer", "nav", "article", "aside", "address", "audio", "canvas", "figure", "hgroup", "output", "video", "p" ], a = 0; a < n.length; ++a) e = s.helper.replaceRecursiveRegExp(e, function(e, r, n, s) { + var a = e; + return -1 !== n.search(/\bmarkdown\b/) && (a = n + t.converter.makeHtml(r) + s), + "\n\n~K" + (t.gHtmlBlocks.push(a) - 1) + "K\n\n"; + }, "^(?: |\\t){0,3}<" + n[a] + "\\b[^>]*>", "", "gim"); + return e = e.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g, s.subParser("hashElement")(e, r, t)), + e = e.replace(/()/g, s.subParser("hashElement")(e, r, t)), e = e.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g, s.subParser("hashElement")(e, r, t)); +}), s.subParser("hashHTMLSpans", function(e, r, t) { + for (var n = s.helper.matchRecursiveRegExp(e, "]*>", "", "gi"), a = 0; a < n.length; ++a) e = e.replace(n[a][0], "~L" + (t.gHtmlSpans.push(n[a][0]) - 1) + "L"); + return e; +}), s.subParser("unhashHTMLSpans", function(e, r, t) { + for (var n = 0; n < t.gHtmlSpans.length; ++n) e = e.replace("~L" + n + "L", t.gHtmlSpans[n]); + return e; +}), s.subParser("hashPreCodeTags", function(e, r, t) { + return e = s.helper.replaceRecursiveRegExp(e, function(e, r, n, a) { + var o = n + s.subParser("encodeCode")(r) + a; + return "\n\n~G" + (t.ghCodeBlocks.push({ + text: e, + codeblock: o + }) - 1) + "G\n\n"; + }, "^(?: |\\t){0,3}]*>\\s*]*>", "^(?: |\\t){0,3}\\s*
", "gim"); +}), s.subParser("headers", function(e, r, t) { + function n(e) { + var r, n = e.replace(/[^\w]/g, "").toLowerCase(); + return t.hashLinkCounts[n] ? r = n + "-" + t.hashLinkCounts[n]++ : (r = n, t.hashLinkCounts[n] = 1), + !0 === a && (a = "section"), s.helper.isString(a) ? a + r : r; + } + e = t.converter._dispatch("headers.before", e, r, t); + var a = r.prefixHeaderId, o = isNaN(parseInt(r.headerLevelStart)) ? 1 : parseInt(r.headerLevelStart), i = r.smoothLivePreview ? /^(.+)[ \t]*\n={2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n=+[ \t]*\n+/gm, l = r.smoothLivePreview ? /^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm : /^(.+)[ \t]*\n-+[ \t]*\n+/gm; + return e = e.replace(i, function(e, a) { + var i = s.subParser("spanGamut")(a, r, t), l = r.noHeaderId ? "" : ' id="' + n(a) + '"', c = o, u = "" + i + ""; + return s.subParser("hashBlock")(u, r, t); + }), e = e.replace(l, function(e, a) { + var i = s.subParser("spanGamut")(a, r, t), l = r.noHeaderId ? "" : ' id="' + n(a) + '"', c = o + 1, u = "" + i + ""; + return s.subParser("hashBlock")(u, r, t); + }), e = e.replace(/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm, function(e, a, i) { + var l = s.subParser("spanGamut")(i, r, t), c = r.noHeaderId ? "" : ' id="' + n(i) + '"', u = o - 1 + a.length, p = "" + l + ""; + return s.subParser("hashBlock")(p, r, t); + }), e = t.converter._dispatch("headers.after", e, r, t); +}), s.subParser("images", function(e, r, t) { + function n(e, r, n, a, o, i, l, c) { + var u = t.gUrls, p = t.gTitles, h = t.gDimensions; + if (n = n.toLowerCase(), c || (c = ""), "" === a || null === a) { + if ("" !== n && null !== n || (n = r.toLowerCase().replace(/ ?\n/g, " ")), a = "#" + n, + s.helper.isUndefined(u[n])) return e; + a = u[n], s.helper.isUndefined(p[n]) || (c = p[n]), s.helper.isUndefined(h[n]) || (o = h[n].width, + i = h[n].height); + } + r = r.replace(/"/g, """), r = s.helper.escapeCharacters(r, "*_", !1); + var d = '' + r + '?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(['"])(.*?)\6[ \t]*)?\)/g, o = /!\[([^\]]*?)] ?(?:\n *)?\[(.*?)]()()()()()/g; + return e = (e = t.converter._dispatch("images.before", e, r, t)).replace(o, n), + e = e.replace(a, n), e = t.converter._dispatch("images.after", e, r, t); +}), s.subParser("italicsAndBold", function(e, r, t) { + return e = t.converter._dispatch("italicsAndBold.before", e, r, t), e = r.literalMidWordUnderscores ? (e = (e = (e = e.replace(/(^|\s|>|\b)__(?=\S)([\s\S]+?)__(?=\b|<|\s|$)/gm, "$1$2")).replace(/(^|\s|>|\b)_(?=\S)([\s\S]+?)_(?=\b|<|\s|$)/gm, "$1$2")).replace(/(\*\*)(?=\S)([^\r]*?\S[*]*)\1/g, "$2")).replace(/(\*)(?=\S)([^\r]*?\S)\1/g, "$2") : (e = e.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g, "$2")).replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g, "$2"), + e = t.converter._dispatch("italicsAndBold.after", e, r, t); +}), s.subParser("lists", function(e, r, t) { + function n(e, n) { + t.gListLevel++, e = e.replace(/\n{2,}$/, "\n"), e += "~0"; + var a = /(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm, o = /\n[ \t]*\n(?!~0)/.test(e); + return e = e.replace(a, function(e, n, a, i, l, c, u) { + u = u && "" !== u.trim(); + var p = s.subParser("outdent")(l, r, t), h = ""; + return c && r.tasklists && (h = ' class="task-list-item" style="list-style-type: none;"', + p = p.replace(/^[ \t]*\[(x|X| )?]/m, function() { + var e = ' -1 ? (p = s.subParser("githubCodeBlocks")(p, r, t), + p = s.subParser("blockGamut")(p, r, t)) : (p = (p = s.subParser("lists")(p, r, t)).replace(/\n$/, ""), + p = o ? s.subParser("paragraphs")(p, r, t) : s.subParser("spanGamut")(p, r, t)), + p = "\n" + p + "\n"; + }), e = e.replace(/~0/g, ""), t.gListLevel--, n && (e = e.replace(/\s+$/, "")), + e; + } + function a(e, r, t) { + var s = "ul" === r ? /^ {0,2}\d+\.[ \t]/gm : /^ {0,2}[*+-][ \t]/gm, a = [], o = ""; + if (-1 !== e.search(s)) { + !function e(a) { + var i = a.search(s); + -1 !== i ? (o += "\n\n<" + r + ">" + n(a.slice(0, i), !!t) + "\n\n", + s = "ul" === (r = "ul" === r ? "ol" : "ul") ? /^ {0,2}\d+\.[ \t]/gm : /^ {0,2}[*+-][ \t]/gm, + e(a.slice(i))) : o += "\n\n<" + r + ">" + n(a, !!t) + "\n\n"; + }(e); + for (var i = 0; i < a.length; ++i) ; + } else o = "\n\n<" + r + ">" + n(e, !!t) + "\n\n"; + return o; + } + e = t.converter._dispatch("lists.before", e, r, t), e += "~0"; + var o = /^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm; + return t.gListLevel ? e = e.replace(o, function(e, r, t) { + return a(r, t.search(/[*+-]/g) > -1 ? "ul" : "ol", !0); + }) : (o = /(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm, + e = e.replace(o, function(e, r, t, n) { + return a(t, n.search(/[*+-]/g) > -1 ? "ul" : "ol"); + })), e = e.replace(/~0/, ""), e = t.converter._dispatch("lists.after", e, r, t); +}), s.subParser("outdent", function(e) { + return e = e.replace(/^(\t|[ ]{1,4})/gm, "~0"), e = e.replace(/~0/g, ""); +}), s.subParser("paragraphs", function(e, r, t) { + for (var n = (e = (e = (e = t.converter._dispatch("paragraphs.before", e, r, t)).replace(/^\n+/g, "")).replace(/\n+$/g, "")).split(/\n{2,}/g), a = [], o = n.length, i = 0; i < o; i++) { + var l = n[i]; + l.search(/~(K|G)(\d+)\1/g) >= 0 ? a.push(l) : (l = (l = s.subParser("spanGamut")(l, r, t)).replace(/^([ \t]*)/g, "

"), + l += "

", a.push(l)); + } + for (o = a.length, i = 0; i < o; i++) { + for (var c = "", u = a[i], p = !1; u.search(/~(K|G)(\d+)\1/) >= 0; ) { + var h = RegExp.$1, d = RegExp.$2; + c = (c = "K" === h ? t.gHtmlBlocks[d] : p ? s.subParser("encodeCode")(t.ghCodeBlocks[d].text) : t.ghCodeBlocks[d].codeblock).replace(/\$/g, "$$$$"), + u = u.replace(/(\n\n)?~(K|G)\d+\2(\n\n)?/, c), /^]*>\s*]*>/.test(u) && (p = !0); + } + a[i] = u; + } + return e = a.join("\n\n"), e = e.replace(/^\n+/g, ""), e = e.replace(/\n+$/g, ""), + t.converter._dispatch("paragraphs.after", e, r, t); +}), s.subParser("runExtension", function(e, r, t, n) { + if (e.filter) r = e.filter(r, n.converter, t); else if (e.regex) { + var s = e.regex; + !s instanceof RegExp && (s = new RegExp(s, "g")), r = r.replace(s, e.replace); + } + return r; +}), s.subParser("spanGamut", function(e, r, t) { + return e = t.converter._dispatch("spanGamut.before", e, r, t), e = s.subParser("codeSpans")(e, r, t), + e = s.subParser("escapeSpecialCharsWithinTagAttributes")(e, r, t), e = s.subParser("encodeBackslashEscapes")(e, r, t), + e = s.subParser("images")(e, r, t), e = s.subParser("anchors")(e, r, t), e = s.subParser("autoLinks")(e, r, t), + e = s.subParser("encodeAmpsAndAngles")(e, r, t), e = s.subParser("italicsAndBold")(e, r, t), + e = s.subParser("strikethrough")(e, r, t), e = e.replace(/ +\n/g, "
\n"), + e = t.converter._dispatch("spanGamut.after", e, r, t); +}), s.subParser("strikethrough", function(e, r, t) { + return r.strikethrough && (e = (e = t.converter._dispatch("strikethrough.before", e, r, t)).replace(/(?:~T){2}([\s\S]+?)(?:~T){2}/g, "$1"), + e = t.converter._dispatch("strikethrough.after", e, r, t)), e; +}), s.subParser("stripBlankLines", function(e) { + return e.replace(/^[ \t]+$/gm, ""); +}), s.subParser("stripLinkDefinitions", function(e, r, t) { + var n = /^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm; + return e += "~0", e = e.replace(n, function(e, n, a, o, i, l, c) { + return n = n.toLowerCase(), t.gUrls[n] = s.subParser("encodeAmpsAndAngles")(a), + l ? l + c : (c && (t.gTitles[n] = c.replace(/"|'/g, """)), r.parseImgDimensions && o && i && (t.gDimensions[n] = { + width: o, + height: i + }), ""); + }), e = e.replace(/~0/, ""); +}), s.subParser("tables", function(e, r, t) { + function n(e) { + return /^:[ \t]*--*$/.test(e) ? ' style="text-align:left;"' : /^--*[ \t]*:[ \t]*$/.test(e) ? ' style="text-align:right;"' : /^:[ \t]*--*[ \t]*:$/.test(e) ? ' style="text-align:center;"' : ""; + } + function a(e, n) { + var a = ""; + return e = e.trim(), r.tableHeaderId && (a = ' id="' + e.replace(/ /g, "_").toLowerCase() + '"'), + e = s.subParser("spanGamut")(e, r, t), "" + e + "\n"; + } + function o(e, n) { + return "" + s.subParser("spanGamut")(e, r, t) + "\n"; + } + function i(e, r) { + for (var t = "\n\n\n", n = e.length, s = 0; s < n; ++s) t += e[s]; + for (t += "\n\n\n", s = 0; s < r.length; ++s) { + t += "\n"; + for (var a = 0; a < n; ++a) t += r[s][a]; + t += "\n"; + } + return t += "\n
\n"; + } + if (!r.tables) return e; + var l = /^[ \t]{0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|~0)/gm; + return e = t.converter._dispatch("tables.before", e, r, t), e = e.replace(l, function(e) { + var r, t = e.split("\n"); + for (r = 0; r < t.length; ++r) /^[ \t]{0,3}\|/.test(t[r]) && (t[r] = t[r].replace(/^[ \t]{0,3}\|/, "")), + /\|[ \t]*$/.test(t[r]) && (t[r] = t[r].replace(/\|[ \t]*$/, "")); + var l = t[0].split("|").map(function(e) { + return e.trim(); + }), c = t[1].split("|").map(function(e) { + return e.trim(); + }), u = [], p = [], h = [], d = []; + for (t.shift(), t.shift(), r = 0; r < t.length; ++r) "" !== t[r].trim() && u.push(t[r].split("|").map(function(e) { + return e.trim(); + })); + if (l.length < c.length) return e; + for (r = 0; r < c.length; ++r) h.push(n(c[r])); + for (r = 0; r < l.length; ++r) s.helper.isUndefined(h[r]) && (h[r] = ""), p.push(a(l[r], h[r])); + for (r = 0; r < u.length; ++r) { + for (var f = [], g = 0; g < p.length; ++g) s.helper.isUndefined(u[r][g]), f.push(o(u[r][g], h[g])); + d.push(f); + } + return i(p, d); + }), e = t.converter._dispatch("tables.after", e, r, t); +}), s.subParser("unescapeSpecialChars", function(e) { + return e = e.replace(/~E(\d+)E/g, function(e, r) { + var t = parseInt(r); + return String.fromCharCode(t); + }); +}), module.exports = s; \ No newline at end of file diff --git a/wxParse/wxDiscode.js b/wxParse/wxDiscode.js new file mode 100644 index 0000000..9edebe5 --- /dev/null +++ b/wxParse/wxDiscode.js @@ -0,0 +1,74 @@ +function e(e) { + return e = e.replace(/∀/g, "∀"), e = e.replace(/∂/g, "∂"), e = e.replace(/&exists;/g, "∃"), + e = e.replace(/∅/g, "∅"), e = e.replace(/∇/g, "∇"), e = e.replace(/∈/g, "∈"), + e = e.replace(/∉/g, "∉"), e = e.replace(/∋/g, "∋"), e = e.replace(/∏/g, "∏"), + e = e.replace(/∑/g, "∑"), e = e.replace(/−/g, "−"), e = e.replace(/∗/g, "∗"), + e = e.replace(/√/g, "√"), e = e.replace(/∝/g, "∝"), e = e.replace(/∞/g, "∞"), + e = e.replace(/∠/g, "∠"), e = e.replace(/∧/g, "∧"), e = e.replace(/∨/g, "∨"), + e = e.replace(/∩/g, "∩"), e = e.replace(/∩/g, "∪"), e = e.replace(/∫/g, "∫"), + e = e.replace(/∴/g, "∴"), e = e.replace(/∼/g, "∼"), e = e.replace(/≅/g, "≅"), + e = e.replace(/≈/g, "≈"), e = e.replace(/≠/g, "≠"), e = e.replace(/≤/g, "≤"), + e = e.replace(/≥/g, "≥"), e = e.replace(/⊂/g, "⊂"), e = e.replace(/⊃/g, "⊃"), + e = e.replace(/⊄/g, "⊄"), e = e.replace(/⊆/g, "⊆"), e = e.replace(/⊇/g, "⊇"), + e = e.replace(/⊕/g, "⊕"), e = e.replace(/⊗/g, "⊗"), e = e.replace(/⊥/g, "⊥"), + e = e.replace(/⋅/g, "⋅"); +} + +function a(e) { + return e = e.replace(/Α/g, "Α"), e = e.replace(/Β/g, "Β"), e = e.replace(/Γ/g, "Γ"), + e = e.replace(/Δ/g, "Δ"), e = e.replace(/Ε/g, "Ε"), e = e.replace(/Ζ/g, "Ζ"), + e = e.replace(/Η/g, "Η"), e = e.replace(/Θ/g, "Θ"), e = e.replace(/Ι/g, "Ι"), + e = e.replace(/Κ/g, "Κ"), e = e.replace(/Λ/g, "Λ"), e = e.replace(/Μ/g, "Μ"), + e = e.replace(/Ν/g, "Ν"), e = e.replace(/Ξ/g, "Ν"), e = e.replace(/Ο/g, "Ο"), + e = e.replace(/Π/g, "Π"), e = e.replace(/Ρ/g, "Ρ"), e = e.replace(/Σ/g, "Σ"), + e = e.replace(/Τ/g, "Τ"), e = e.replace(/Υ/g, "Υ"), e = e.replace(/Φ/g, "Φ"), + e = e.replace(/Χ/g, "Χ"), e = e.replace(/Ψ/g, "Ψ"), e = e.replace(/Ω/g, "Ω"), + e = e.replace(/α/g, "α"), e = e.replace(/β/g, "β"), e = e.replace(/γ/g, "γ"), + e = e.replace(/δ/g, "δ"), e = e.replace(/ε/g, "ε"), e = e.replace(/ζ/g, "ζ"), + e = e.replace(/η/g, "η"), e = e.replace(/θ/g, "θ"), e = e.replace(/ι/g, "ι"), + e = e.replace(/κ/g, "κ"), e = e.replace(/λ/g, "λ"), e = e.replace(/μ/g, "μ"), + e = e.replace(/ν/g, "ν"), e = e.replace(/ξ/g, "ξ"), e = e.replace(/ο/g, "ο"), + e = e.replace(/π/g, "π"), e = e.replace(/ρ/g, "ρ"), e = e.replace(/ς/g, "ς"), + e = e.replace(/σ/g, "σ"), e = e.replace(/τ/g, "τ"), e = e.replace(/υ/g, "υ"), + e = e.replace(/φ/g, "φ"), e = e.replace(/χ/g, "χ"), e = e.replace(/ψ/g, "ψ"), + e = e.replace(/ω/g, "ω"), e = e.replace(/ϑ/g, "ϑ"), e = e.replace(/ϒ/g, "ϒ"), + e = e.replace(/ϖ/g, "ϖ"), e = e.replace(/·/g, "·"); +} + +function r(e) { + return e = e.replace(/ /g, " "), e = e.replace(/"/g, "'"), e = e.replace(/&/g, "&"), + e = e.replace(/</g, "<"), e = e.replace(/>/g, ">"); +} + +function l(e) { + return e = e.replace(/Œ/g, "Œ"), e = e.replace(/œ/g, "œ"), e = e.replace(/Š/g, "Š"), + e = e.replace(/š/g, "š"), e = e.replace(/Ÿ/g, "Ÿ"), e = e.replace(/ƒ/g, "ƒ"), + e = e.replace(/ˆ/g, "ˆ"), e = e.replace(/˜/g, "˜"), e = e.replace(/ /g, ""), + e = e.replace(/ /g, ""), e = e.replace(/ /g, ""), e = e.replace(/‌/g, ""), + e = e.replace(/‍/g, ""), e = e.replace(/‎/g, ""), e = e.replace(/‏/g, ""), + e = e.replace(/–/g, "–"), e = e.replace(/—/g, "—"), e = e.replace(/‘/g, "‘"), + e = e.replace(/’/g, "’"), e = e.replace(/‚/g, "‚"), e = e.replace(/“/g, "“"), + e = e.replace(/”/g, "”"), e = e.replace(/„/g, "„"), e = e.replace(/†/g, "†"), + e = e.replace(/‡/g, "‡"), e = e.replace(/•/g, "•"), e = e.replace(/…/g, "…"), + e = e.replace(/‰/g, "‰"), e = e.replace(/′/g, "′"), e = e.replace(/″/g, "″"), + e = e.replace(/‹/g, "‹"), e = e.replace(/›/g, "›"), e = e.replace(/‾/g, "‾"), + e = e.replace(/€/g, "€"), e = e.replace(/™/g, "™"), e = e.replace(/←/g, "←"), + e = e.replace(/↑/g, "↑"), e = e.replace(/→/g, "→"), e = e.replace(/↓/g, "↓"), + e = e.replace(/↔/g, "↔"), e = e.replace(/↵/g, "↵"), e = e.replace(/⌈/g, "⌈"), + e = e.replace(/⌉/g, "⌉"), e = e.replace(/⌊/g, "⌊"), e = e.replace(/⌋/g, "⌋"), + e = e.replace(/◊/g, "◊"), e = e.replace(/♠/g, "♠"), e = e.replace(/♣/g, "♣"), + e = e.replace(/♥/g, "♥"), e = e.replace(/♦/g, "♦"); +} + +function p(e) { + return e = e.replace(/\r\n/g, ""), e = e.replace(/\n/g, ""), e = e.replace(/code/g, "wxxxcode-style"); +} + +module.exports = { + strDiscode: function(c) { + return c = e(c), c = a(c), c = r(c), c = l(c), c = p(c); + }, + urlToHttpUrl: function(e, a) { + return new RegExp("^//").test(e) && (e = a + ":" + e), e; + } +}; \ No newline at end of file diff --git a/wxParse/wxParse.js b/wxParse/wxParse.js new file mode 100644 index 0000000..225b169 --- /dev/null +++ b/wxParse/wxParse.js @@ -0,0 +1,66 @@ +function e(e) { + return e && e.__esModule ? e : { + default: e + }; +} + +function t(e) { + var t = this, a = e.target.dataset.src, i = e.target.dataset.from; + void 0 !== i && i.length > 0 && wx.previewImage({ + current: a, + urls: t.data[i].imageUrls + }); +} + +function a(e) { + return false; + var t = this, a = e.target.dataset.from, r = e.target.dataset.idx; + void 0 !== a && a.length > 0 && i(e, r, t, a); +} + +function i(e, t, a, i) { + var d = a.data[i]; + if (0 != d.images.length) { + var n = d.images, s = r(e.detail.width, e.detail.height, a, i); + n[t].width = s.imageWidth, n[t].height = s.imageheight, d.images = n; + var o = {}; + o[i] = d, a.setData(o); + } +} + +function r(e, t, a, i) { + var r = 0, d = 0, n = 0, s = 0, o = {}; + return wx.getSystemInfo({ + success: function(g) { + var h = a.data[i].view.imagePadding; + r = g.windowWidth - 2 * h, d = g.windowHeight, e > r ? (s = (n = r) * t / e, o.imageWidth = n, + o.imageheight = s) : (o.imageWidth = e, o.imageheight = t); + } + }), o; +} + +var d = e(require("./showdown.js")), n = e(require("./html2json.js")); + +module.exports = { + wxParse: function() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "wxParseData", i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "html", r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : '
数据不能为空
', s = arguments[3], o = arguments[4], g = s, h = {}; + if ("html" == i) h = n.default.html2json(r, e); else if ("md" == i || "markdown" == i) { + var m = new d.default.Converter().makeHtml(r); + h = n.default.html2json(m, e); + } + h.view = {}, h.view.imagePadding = 0, void 0 !== o && (h.view.imagePadding = o); + var l = {}; + l[e] = h, g.setData(l), g.wxParseImgLoad = a, g.wxParseImgTap = t; + }, + wxParseTemArray: function(e, t, a, i) { + for (var r = [], d = i.data, n = null, s = 0; s < a; s++) { + var o = d[t + s].nodes; + r.push(o); + } + e = e || "wxParseTemArray", (n = JSON.parse('{"' + e + '":""}'))[e] = r, i.setData(n); + }, + emojisInit: function() { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "", t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "/wxParse/emojis/", a = arguments[2]; + n.default.emojisInit(e, t, a); + } +}; \ No newline at end of file diff --git a/wxParse/wxParse.wxml b/wxParse/wxParse.wxml new file mode 100644 index 0000000..b3d8293 --- /dev/null +++ b/wxParse/wxParse.wxml @@ -0,0 +1,370 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wxParse/wxParse.wxss b/wxParse/wxParse.wxss new file mode 100644 index 0000000..2713ec8 --- /dev/null +++ b/wxParse/wxParse.wxss @@ -0,0 +1,243 @@ +.wxParse { + margin: 0 5px; + font-family: Helvetica,sans-serif; + font-size: 28rpx; + color: #666; + line-height: 1.8; +} + +view { + word-break: break-all; + overflow: auto; +} + +.wxParse-inline { + display: inline; + margin: 0; + padding: 0; +} + +.wxParse-div { + margin: 0; + padding: 0; +} + +.wxParse-h1 { + font-size: 2em; + margin: .67em 0; +} + +.wxParse-h2 { + font-size: 1.5em; + margin: .75em 0; +} + +.wxParse-h3 { + font-size: 1.17em; + margin: .83em 0; +} + +.wxParse-h4 { + margin: 1.12em 0; +} + +.wxParse-h5 { + font-size: .83em; + margin: 1.5em 0; +} + +.wxParse-h6 { + font-size: .75em; + margin: 1.67em 0; +} + +.wxParse-h1 { + font-size: 18px; + font-weight: 400; + margin-bottom: .9em; +} + +.wxParse-h2 { + font-size: 16px; + font-weight: 400; + margin-bottom: .34em; +} + +.wxParse-h3 { + font-weight: 400; + font-size: 15px; + margin-bottom: .34em; +} + +.wxParse-h4 { + font-weight: 400; + font-size: 14px; + margin-bottom: .24em; +} + +.wxParse-h5 { + font-weight: 400; + font-size: 13px; + margin-bottom: .14em; +} + +.wxParse-h6 { + font-weight: 400; + font-size: 12px; + margin-bottom: .04em; +} + +.wxParse-h1,.wxParse-h2,.wxParse-h3,.wxParse-h4,.wxParse-h5,.wxParse-h6,.wxParse-b,.wxParse-strong { + font-weight: bolder; +} + +.wxParse-i,.wxParse-cite,.wxParse-em,.wxParse-var,.wxParse-address { + font-style: italic; +} + +.wxParse-pre,.wxParse-tt,.wxParse-code,.wxParse-kbd,.wxParse-samp { + font-family: monospace; +} + +.wxParse-pre { + white-space: pre; +} + +.wxParse-big { + font-size: 1.17em; +} + +.wxParse-small,.wxParse-sub,.wxParse-sup { + font-size: .83em; +} + +.wxParse-sub { + vertical-align: sub; +} + +.wxParse-sup { + vertical-align: super; +} + +.wxParse-s,.wxParse-strike,.wxParse-del { + text-decoration: line-through; +} + +.wxParse-strong,.wxParse-s { + display: inline; +} + +.wxParse-a { + color: deepskyblue; + word-break: break-all; + overflow: auto; +} + +.wxParse-video { + text-align: center; + margin: 10px 0; +} + +.wxParse-video-video { + width: 100%; +} + +.wxParse-img { + background-color: #efefef; + overflow: hidden; +} + +.wxParse-blockquote { + margin: 0; + padding: 10px 0 10px 5px; + font-family: Courier,Calibri,"宋体"; + background: #f5f5f5; + border-left: 3px solid #dbdbdb; +} + +.wxParse-code,.wxParse-wxxxcode-style { + display: inline; + background: #f5f5f5; +} + +.wxParse-ul { + margin: 20rpx 10rpx; +} + +.wxParse-li,.wxParse-li-inner { + display: flex; + align-items: baseline; + margin: 10rpx 0; +} + +.wxParse-li-text { + align-items: center; + line-height: 20px; +} + +.wxParse-li-circle { + display: inline-flex; + width: 5px; + height: 5px; + background-color: #333; + margin-right: 5px; +} + +.wxParse-li-square { + display: inline-flex; + width: 10rpx; + height: 10rpx; + background-color: #333; + margin-right: 5px; +} + +.wxParse-li-ring { + display: inline-flex; + width: 10rpx; + height: 10rpx; + border: 2rpx solid #333; + border-radius: 50%; + background-color: #fff; + margin-right: 5px; +} + +.wxParse-u { + text-decoration: underline; +} + +.wxParse-hide { + display: none; +} + +.WxEmojiView { + align-items: center; +} + +.wxEmoji { + width: 16px; + height: 16px; +} + +.wxParse-tr { + display: flex; + border-right: 1px solid #e0e0e0; + border-bottom: 1px solid #e0e0e0; + border-top: 1px solid #e0e0e0; +} + +.wxParse-th,.wxParse-td { + flex: 1; + padding: 5px; + font-size: 28rpx; + border-left: 1px solid #e0e0e0; + word-break: break-all; +} + +.wxParse-td:last { + border-top: 1px solid #e0e0e0; +} + +.wxParse-th { + background: #f0f0f0; + border-top: 1px solid #e0e0e0; +} \ No newline at end of file