diff --git a/components/tabbar.vue b/components/tabbar.vue index 1eb67fd..feddafa 100644 --- a/components/tabbar.vue +++ b/components/tabbar.vue @@ -71,7 +71,7 @@ console.log("item", item) console.log("index", index) let url = item.pagePath; - uni.redirectTo({ + uni.switchTab({ url }) diff --git a/config.js b/config.js index 668a354..720c808 100644 --- a/config.js +++ b/config.js @@ -4,7 +4,7 @@ const domain = 'https://fx.anxincloud.cn'; const devApi = 'https://121.36.37.70:8204'; const devDomain = 'https://121.36.37.70:8204'; -const online = false; //是否线上模式 +const online = true; //是否线上模式 export default { domain: online ? domain : devDomain, diff --git a/libs/auth.js b/libs/auth.js index c7f5c23..a1faec4 100644 --- a/libs/auth.js +++ b/libs/auth.js @@ -19,9 +19,13 @@ const login = { getLocalUserInfo() { const user = uni.getStorageSync("token"); console.log('从本地存储中获取用户数据', user, 11111111); + if(user){ + request.getToken() + } if (!user) return false; if (!user.token) return false; store.commit('saveToken', user); + return true }, diff --git a/pages/rescue/taskapply.vue b/pages/rescue/taskapply.vue index 22ca480..adca856 100644 --- a/pages/rescue/taskapply.vue +++ b/pages/rescue/taskapply.vue @@ -478,7 +478,7 @@ this.nub += 1 } } - this.opts.subtitle.name = this.nub + this.opts.subtitle.name = JSON.stringify(this.nub) this.index3 = true }, dateYear(e) { diff --git a/pages/rescue/taskreceive.vue b/pages/rescue/taskreceive.vue index 8855989..100ee61 100644 --- a/pages/rescue/taskreceive.vue +++ b/pages/rescue/taskreceive.vue @@ -485,7 +485,7 @@ this.nub += 1 } } - this.opts.subtitle.name = this.nub + this.opts.subtitle.name = JSON.stringify(this.nub) }, dateYear(e) { diff --git a/pages/tabbar/index.vue b/pages/tabbar/index.vue index 99c7aa1..102f73c 100644 --- a/pages/tabbar/index.vue +++ b/pages/tabbar/index.vue @@ -1,7 +1,15 @@ diff --git a/pages/tabbar/tow.vue b/pages/tabbar/tow.vue index 3910e39..58de1fe 100644 --- a/pages/tabbar/tow.vue +++ b/pages/tabbar/tow.vue @@ -1,7 +1,15 @@ @@ -21,7 +29,7 @@ isSupervisor: false } }, - onLoad() { + onShow() { let roles = uni.getStorageSync("user").roles let isSupervisor = roles.find(item => { return item.name.indexOf('检查') != -1 diff --git a/pages/tabbar/user.vue b/pages/tabbar/user.vue index 16ccb8f..14c8b57 100644 --- a/pages/tabbar/user.vue +++ b/pages/tabbar/user.vue @@ -41,7 +41,7 @@ list: {} } }, - onLoad() { + onShow() { this.list = uni.getStorageSync("user") console.log(this.list); }, diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map index cff2e05..e890ff1 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map @@ -1 +1 @@ -{"version":3,"sources":["uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-mp-weixin/dist/index.js","webpack:///F:/项目2/Jinan_app/Jinan_app/static/zeren/4508.png?1030","webpack:///F:/项目2/Jinan_app/Jinan_app/static/zeren/4511.png?3d23","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js","uni-app:///libs/auth.js","uni-app:///store.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js","uni-app:///pages.json","uni-app:///uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js","uni-app:///uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js","uni-app:///libs/request.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@babel/runtime/regenerator/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/regenerator-runtime/runtime-module.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/regenerator-runtime/runtime.js","webpack:///F:/项目2/Jinan_app/Jinan_app/static/task/list.png?4755","uni-app:///config.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/webpack/buildin/global.js","uni-app:///libs/alert.js","uni-app:///uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/index.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/stringify.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/utils.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/formats.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/qs/lib/parse.js","uni-app:///uni_modules/uni-load-more/components/uni-load-more/i18n/index.js","uni-app:///node_modules/@escook/request-miniprogram/miniprogram_dist/index.js","uni-app:///uni_modules/uni-icons/components/uni-icons/icons.js","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js","webpack:///F:/项目2/Jinan_app/Jinan_app/static/login/banner.jpg?b0c7","webpack:///F:/项目2/Jinan_app/Jinan_app/static/login/title.png?927a","uni-app:///D:/HBuilderX.3.4.7.20220422/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js","webpack:///F:/项目2/Jinan_app/Jinan_app/static/091212.jpg?2964","webpack:///F:/项目2/Jinan_app/Jinan_app/static/arrow.png?80f1","webpack:///F:/项目2/Jinan_app/Jinan_app/static/down.png?7ce8","webpack:///F:/项目2/Jinan_app/Jinan_app/static/4412.png?72e2","webpack:///F:/项目2/Jinan_app/Jinan_app/static/dadui/10.png?fc6d","webpack:///F:/项目2/Jinan_app/Jinan_app/static/logo.png?ced9",null,"webpack:///F:/项目2/Jinan_app/Jinan_app/static/446.png?3c1a"],"names":["realAtob","b64","b64re","b64DecodeUnicode","str","decodeURIComponent","split","map","c","charCodeAt","toString","slice","join","getCurrentUserInfo","userInfo","token","wx","getStorageSync","tokenArr","length","uid","role","permission","tokenExpired","JSON","parse","error","Error","message","exp","iat","uniIdMixin","Vue","prototype","uniIDHasRole","roleId","indexOf","uniIDHasPermission","permissionId","this","uniIDTokenValid","Date","now","atob","String","replace","test","bitmap","r1","r2","result","i","charAt","fromCharCode","_toString","Object","hasOwnProperty","isFn","fn","isStr","isPlainObject","obj","call","hasOwn","key","noop","cached","cache","create","hit","camelizeRE","camelize","_","toUpperCase","sortObject","sortObj","keys","sort","forEach","HOOKS","globalInterceptors","scopedInterceptors","mergeHook","parentVal","childVal","res","concat","Array","isArray","dedupeHooks","hooks","push","removeHook","hook","index","splice","mergeInterceptorHook","interceptor","option","removeInterceptorHook","addInterceptor","method","removeInterceptor","wrapperHook","data","isPromise","then","queue","promise","Promise","resolve","callback","wrapperOptions","options","name","oldCallback","wrapperReturnValue","returnValue","returnValueHooks","getApiInterceptorHooks","scopedInterceptor","invokeApi","api","params","invoke","promiseInterceptor","reject","SYNC_API_RE","CONTEXT_API_RE","CONTEXT_API_RE_EXC","ASYNC_API","CALLBACK_API_RE","isContextApi","isSyncApi","isCallbackApi","handlePromise","catch","err","shouldPromise","promisify","success","fail","complete","assign","finally","constructor","value","reason","EPS","BASE_DEVICE_WIDTH","isIOS","deviceWidth","deviceDPR","checkDeviceWidth","getSystemInfoSync","platform","pixelRatio","windowWidth","upx2px","number","newDeviceWidth","Number","Math","floor","locale","LOCALE_ZH_HANS","LOCALE_ZH_HANT","LOCALE_EN","LOCALE_FR","LOCALE_ES","messages","initI18nMessages","isEnableLocale","localeKeys","__uniConfig","locales","curMessages","userMessages","normalizeLocale","language","i18n","initVueI18n","t","mixin","beforeCreate","unwatch","watchLocale","$forceUpdate","$once","methods","$$t","values","setLocale","getLocale","initAppLocale","appVm","state","observable","localeWatchers","$watchLocale","defineProperty","get","set","v","watch","include","parts","find","part","startsWith","trim","toLowerCase","lang","getLocale$1","app","getApp","allowDefault","$vm","$locale","setLocale$1","oldLocale","onLocaleChangeCallbacks","onLocaleChange","global","interceptors","baseApi","freeze","__proto__","findExistsPageIndex","url","pages","getCurrentPages","len","page","$page","fullPath","deviceId","redirectTo","fromArgs","exists","delta","args","existsPageIndex","previewImage","currentIndex","parseInt","current","isNaN","urls","filter","item","indicator","loop","UUID_KEY","useDeviceId","random","setStorage","addSafeAreaInsets","safeArea","safeAreaInsets","top","left","right","bottom","screenHeight","populateParameters","brand","model","system","theme","version","fontSizeSetting","SDKVersion","deviceOrientation","osName","osVersion","hostVersion","deviceType","getGetDeviceType","deviceBrand","getDeviceBrand","_hostName","getHostName","_deviceOrientation","_devicePixelRatio","_SDKVersion","hostLanguage","parameters","appId","process","appName","appVersion","appVersionCode","appLanguage","getAppLanguage","uniCompileVersion","uniRuntimeVersion","uniPlatform","deviceModel","devicePixelRatio","toLocaleLowerCase","hostTheme","hostName","hostSDKVersion","hostFontSizeSetting","windowTop","windowBottom","osLanguage","undefined","osTheme","ua","hostPackageName","browserName","browserVersion","deviceTypeMaps","ipad","windows","mac","deviceTypeMapsKeys","_model","_m","defaultLanguage","_platform","environment","host","env","getSystemInfo","showActionSheet","alertText","title","getAppBaseInfo","getDeviceInfo","getWindowInfo","getAppAuthorizeSetting","locationReducedAccuracy","locationAccuracy","protocols","todos","canIUses","CALLBACKS","processCallback","methodName","processReturnValue","processArgs","argsOption","keepFromArgs","toArgs","keyOption","console","warn","keepReturnValue","wrapper","protocol","arg1","arg2","apply","todoApis","TODOS","createTodoApi","errMsg","providers","oauth","share","payment","getProvider","service","provider","extraApi","getEmitter","Emitter","ctx","$on","arguments","$off","$emit","cid","cidErrMsg","enabled","eventApi","tryCatch","e","getApiCallbacks","apiCallbacks","param","normalizePushMessage","invokePushCallback","type","invokeGetPushCidCallbacks","onPushMessageCallbacks","stopped","getPushCidCallbacks","getPushClientId","hasSuccess","hasFail","hasComplete","onPushMessage","offPushMessage","MPPage","Page","MPComponent","Component","customizeRE","customize","initTriggerEvent","mpInstance","oldTriggerEvent","triggerEvent","newTriggerEvent","event","_triggerEvent","initHook","isComponent","oldHook","__$wrappered","after","PAGE_EVENT_HOOKS","initMocks","vm","mocks","$mp","mpType","mock","hasHook","vueOptions","default","extendOptions","super","mixins","initHooks","mpOptions","__call_hook","initVueComponent","VueComponent","extend","initSlots","vueSlots","$slots","slotName","$scopedSlots","initVueIds","vueIds","_$vueId","_$vuePid","initData","context","VUE_APP_DEBUG","stringify","__lifecycle_hooks__","PROP_TYPES","Boolean","createObserver","newVal","oldVal","initBehaviors","initBehavior","vueBehaviors","behaviors","vueExtends","extends","vueMixins","vueProps","props","behavior","properties","initProperties","vueMixin","parsePropType","defaultValue","file","isBehavior","vueId","virtualHost","virtualHostStyle","virtualHostClass","scopedSlotsCompiler","observer","setData","opts","wrapper$1","mp","stopPropagation","preventDefault","target","detail","markerId","getExtraValue","dataPathsArray","dataPathArray","dataPath","vFor","propPath","valuePath","isInteger","substr","__get_value","vForItem","vForKey","processEventExtra","extra","extraObj","__args__","getObjByArray","arr","element","processEventArgs","isCustom","isCustomMPEvent","currentTarget","dataset","comType","ret","arg","ONCE","CUSTOM","isMatchEventType","eventType","optType","getContextVm","$parent","$options","generic","$scope","handleEvent","eventOpts","eventOpt","eventsArray","isOnce","eventArray","handlerCtx","handler","path","route","is","once","eventChannels","eventChannelStack","getEventChannel","id","eventChannel","shift","initEventChannel","getOpenerEventChannel","callHook","__id__","__eventChannel__","initScopedSlotsParams","center","parents","$hasScopedSlotsParams","has","$getScopedSlotsParams","object","$setScopedSlotsParams","propsData","destroyed","parseBaseApp","initRefs","store","$store","mpHost","$i18n","_i18n","appOptions","onLaunch","canIUse","globalData","_isMounted","findVmByVueId","vuePid","parentVm","$children","childVm","Behavior","isPage","initRelation","selectAllComponents","selector","$refs","components","component","ref","vueGeneric","scopedComponent","forComponents","handleLink","parent","parseApp","createApp","App","encodeReserveRE","encodeReserveReplacer","commaRE","encode","encodeURIComponent","stringifyQuery","encodeStr","val","val2","x","parseBaseComponent","vueComponentOptions","multipleSlots","addGlobalClass","componentOptions","__file","lifetimes","attached","$mount","ready","detached","$destroy","pageLifetimes","show","hide","resize","size","__l","__e","externalClasses","wxsCallMethods","callMethod","parseComponent","hooks$1","parseBasePage","vuePageOptions","pageOptions","onLoad","query","copyQuery","parsePage","createPage","createComponent","createSubpackageApp","onShow","onAppShow","onHide","onAppHide","getLaunchOptionsSync","createPlugin","todoApi","canIUseApi","apiName","uni","Proxy","uni$1","module","exports","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","renderjs","unshift","__module","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","shadowRoot","_injectStyles","originalRender","h","existing","login","checkAuth","log","getLocalUserInfo","askLogin","user","commit","noCase","alert","showError","setTimeout","switchTab","showModal","content","confirm","navigateTo","getUserProfile","that","desc","showLoading","code","request","post","wechatJsCode","username","password","hideLoading","status","setStorageSync","reLaunch","logout","clearStorage","use","Vuex","Store","people","tag","taskType","mutations","savePath","saveToken","savePeople","saveTaskType","actions","n","__esModule","s","require","globalThis","window","self","o","lib","r","Base","mixIn","init","$super","clone","WordArray","words","sigBytes","clamp","ceil","a","enc","Hex","u","Latin1","l","Utf8","escape","unescape","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","blockSize","max","_minBufferSize","min","_doProcessBlock","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","d","HMAC","algo","abs","sin","MD5","_hash","f","g","p","m","y","w","k","T","S","A","P","I","b","O","C","E","HmacMD5","_hasher","_oKey","_iKey","appid","_globalUniCloudObj","reduce","R","U","L","D","includes","q","N","F","isReady","initUniCloud","j","M","errCode","requestId","$","scene","channel","K","LOCALE","PLATFORM","OS","APPID","DEVICEID","X","B","sign","wrappedRequest","header","statusCode","H","uploadFile","removeStorageSync","clearStorageSync","W","en","fr","es","ja","z","V","config","endpoint","requestUrl","envType","accessTokenKey","spaceId","adapter","_getAccessTokenPromise","_getAccessTokenPromiseStatus","accessToken","requestWrapped","hasAccessToken","getAccessToken","rebuildRequest","clientSecret","timestamp","dataType","requestAuth","setupRequest","setAccessToken","functionTarget","functionArgs","formData","filePath","fileType","onUploadProgress","onProgressUpdate","loaded","totalBytesSent","total","totalBytesExpectedToSend","cloudPath","getOSSUploadOptionsFromPath","filename","cdnDomain","ossPath","OSSAccessKeyId","accessKeyId","Signature","signature","policy","success_action_status","fileName","uploadFileToOSS","reportOSSUpload","fileID","fileList","tempFileURL","J","signInAnonymously","authorize","getLoginState","auth","customAuth","Y","location","local","none","session","te","G","Q","Z","ee","ne","isMatch","genAdapter","runtime","WEB","WX_MP","se","oe","re","root","tcbObject","ie","localStorage","sessionStorage","ae","_storage","_persistence","primaryStorage","persistence","accessTokenExpireKey","refreshTokenKey","anonymousUuidKey","loginTypeKey","userInfoKey","getItem","setItem","removeItem","ce","ue","le","he","de","fe","_listeners","_listens","ge","on","pe","fire","me","off","Se","ye","_e","we","ke","Te","ANONYMOUS","WECHAT","WECHAT_PUBLIC","WECHAT_OPEN","EMAIL","USERNAME","NULL","ve","Ae","Pe","headers","append","Ie","seqId","be","_reqClass","reqClass","timeout","timeoutMsg","restrictedMethods","_cache","_localCache","upload","download","_refreshAccessTokenPromise","_refreshAccessToken","_shouldRefreshAccessTokenHook","removeStore","getStore","refresh_token","send","anonymous_uuid","setRefreshToken","access_token","setStore","access_token_expire","accessTokenExpire","refreshAccessToken","action","dataVersion","FormData","inQuery","search","Oe","Ce","Ee","_request","setLocalUserInfo","Re","_envId","setUserInfo","ticket","signInWithRedirect","oldPassword","newPassword","newEmail","users","wxOpenId","wxPublicId","hasPrimaryUid","nickName","gender","avatarUrl","province","country","city","Ue","credential","refreshToken","loginType","xe","updatePersistence","uuid","_setAnonymousUUID","refresh","_clearAnonymousUUID","Le","refreshUserInfo","De","email","qe","Ne","_onAnonymousConverted","bind","_onLoginTypeChanged","signIn","_anonymousAuthProvider","linkAndRetrieveDataWithTicket","hasLoginState","isRegistered","Fe","authorization","fileId","cosFileId","Me","$e","fileid_list","delete_list","je","fileid","max_age","maxAge","file_list","download_list","Ke","download_url","encodeURI","Be","function_name","request_data","response_data","He","We","ze","authObj","requestClient","Ve","Je","Ye","Xe","clear","Ge","useAdapters","Qe","Ze","et","tt","nt","st","ot","fileUrl","rt","it","clientInfo","uniIdToken","at","localAddress","localPort","aliyun","tencent","_originCallFunction","ct","rule","mode","ut","lt","RegExp","source","ht","dt","functionName","logPvd","debugLog","ft","callFunction","tcb","extraInfo","formatter","match","debugInfo","forceRemote","gt","Symbol","pt","_internalType","__ob__","mt","yt","_t","wt","$regexp","flags","$date","toISOString","kt","$method","Tt","prevStage","udb","_database","$db","reverse","$param","toJSON","_send","from","getAction","getCommand","_callCloudFunction","command","isAggregate","St","isCommand","vt","$newDb","At","multiCommand","queryList","setResult","dataList","_callback","_uniClient","systemInfo","level","_callbackAuth","prop","tips","uniClient","_authCallBacks","_dbCallBacks","isDefault","$env","Geo","serverDate","Pt","database","It","bt","Ot","TOKEN_INVALID_TOKEN_EXPIRED","TOKEN_INVALID_INVALID_CLIENTID","TOKEN_INVALID","TOKEN_INVALID_WRONG_TOKEN","TOKEN_INVALID_ANONYMOUS_USER","Ct","Et","Rt","needLogin","needLoginPage","notNeedLoginPage","Ut","list","some","pagePath","zt","xt","uniIdRouter","subPackages","tabBar","loginPage","resToLogin","routerNeedLogin","loginPageInTabBar","Lt","Dt","qt","Nt","Ft","Mt","$t","pop","jt","Kt","uniIdRedirectUrl","Bt","onResponse","Ht","onNeedLogin","offNeedLogin","needLoginInit","Wt","offResponse","onRefreshToken","offRefreshToken","Vt","Jt","Yt","Xt","tempFiles","substring","lastIndexOf","tempFilePaths","onChooseFile","tempFile","tempFilePath","initChooseAndUploadFile","count","sizeType","sourceType","extension","chooseImage","camera","compressed","maxDuration","chooseVideo","duration","height","width","chooseFile","chooseMessageFile","Gt","Qt","Zt","localdata","spaceInfo","collection","field","orderby","where","pageData","pageCurrent","pageSize","getcount","gettree","gettreepath","startwith","limitlevel","groupby","groupField","distinct","foreignKey","loadtime","manual","mixinDatacomLoading","mixinDatacomHasMore","mixinDatacomResData","mixinDatacomErrorMessage","mixinDatacomPage","created","$watch","onMixinDatacomPropsChange","mixinDatacomEasyGet","getone","mixinDatacomGet","groupBy","orderBy","getCount","limitLevel","startWith","getTree","getTreePath","skip","limit","customUI","loadingOptions","errorOptions","mask","retry","newToken","showToast","icon","showCancel","cancelText","confirmText","cancel","tn","nn","initUniCloudStatus","address","servePort","port","initialLaunchType","sn","navigator","userAgent","reInit","chooseAndUploadFile","importObject","uniCloud","yAxisWidth","xAxisHeight","xAxisTextPadding","padding","rotate","fontSize","fontColor","dataPointShape","color","linearColor","pieChartLinePadding","pieChartTextPadding","titleFontSize","subtitleFontSize","toolTipPadding","toolTipBackground","toolTipOpacity","toolTipLineHeight","radarLabelTextMargin","varArgs","TypeError","deepAssign","obj1","obj2","util","toFixed","num","isFloat","approximatelyEqual","num1","num2","isSameSign","isSameXCoordinateArea","p1","p2","isCollision","end","start","flag","hexToRgb","hexValue","opc","rgx","hex","rgb","exec","findRange","multiple","calCandleMA","dayArr","nameArr","colorArr","kdata","seriesTemp","seriesItem","sum","calValidDistance","distance","chartData","dataChartAreaWidth","area","dataChartWidth","eachSpacing","xAxisData","xAxisPoints","mount","widthRatio","validDistance","uevent","trigger","scrollOption","position","xAxis","scrollPosition","isInAngleRange","angle","startAngle","endAngle","adjust","PI","createCurveControlPoints","points","isNotMiddlePoint","isNotMiddlePointX","pAx","pAy","pBx","pBy","last","ctrA","ctrB","convertCoordinateOrigin","avoidCollision","fixPieSeries","series","pieSeriesArr","_pieSeries_","oldseries","fillSeries","linearIndex","pointShape","legendShape","fillCustomColor","linearType","customColor","newcolor","chazhi","getDataRange","minData","maxData","range","minRange","maxRange","measureText","text","setFontSize","dataCombine","dataCombineStack","getTouches","touches","clientX","pix","pageY","offsetTop","getSeriesDataItem","group","newSeries","indexIsArr","tempSeries","filterSeries","tmpindex","style","disableLegend","getMaxTextListLength","lengthList","getRadarCoordinateSeries","eachAngle","CoordinateSeries","getToolTipData","seriesData","categories","calPoints","filterPoints","textList","titleText","offset","round","getMixToolTipData","getCandleToolTipData","upColor","upFill","downColor","downFill","text1","text2","text3","text4","validCalPoints","findCurrentIndex","currentPoints","spacing","boundaryGap","isInExactChartArea","timePoints","pointValue","pointIndex","minValue","findBarChartCurrentIndex","yAxisPoints","findLegendIndex","legendData","gap","isInExactLegendArea","findRadarChartCurrentIndex","radarData","eachAngleArea","isInExactPieChartArea","radius","fixAngle","atan2","angleList","rangeStart","rangeEnd","findFunnelChartCurrentIndex","funnelData","funnelArea","findWordChartCurrentIndex","wordData","findMapChartCurrentIndex","cData","mapData","tmp","pointToCoordinate","bounds","scale","xoffset","yoffset","poi","geometry","coordinates","isPoiWithinPoly","mercator","findRoseChartCurrentIndex","pieData","getRoseDataPoints","_series_","rose","offsetAngle","_start_","_rose_proportion_","findPieChartCurrentIndex","getPieDataPoints","pie","ring","_proportion_","pow","splitPoints","eachSeries","newPoints","items","connectNulls","calLegendData","wholeWidth","wholeHeight","widthArr","heightArr","legend","margin","shapeWidth","shapeRight","lineHeight","legendList","widthCount","widthCountArr","currentRow","legendText","itemWidth","itemGap","legendWidth","float","maxHeight","maxLength","lineNum","temp","maxWidth","calCategoriesData","categoriesTextLenth","xitem","maxTextLength","rotateLabel","rotateAngle","tempHeight","enableScroll","scrollShow","disabled","getXAxisTextList","stack","sorted","subitem","rangeSpan","eachRange","splitNumber","calXAxisData","columnstyle","bar","ranges","rangesFormat","xAxisScaleValues","getXAxisPoints","textLength","getRadarDataPoints","radarOption","radar","each","listItem","proportion","cos","_radius_","getFunnelDataPoints","minRadius","dataArr","radiusLength","getArcbarDataPoints","arcbarOption","totalAngle","getGaugeArcbarDataPoints","getGaugeAxisPoints","tempStartAngle","_startAngle_","_endAngle_","getGaugeDataPoints","gaugeOption","pointer","_oldAngle_","oldAngle","oldData","getPieTextMaxLength","textSize","fixColumeData","columnLen","seriesGap","categoryGap","mix","column","fixBarData","fixColumeMeterData","border","fixColumeStackData","indexn","fixBarStackData","spacingValid","dataCount","itemCount","startX","endX","getCandleDataPoints","validHeight","cPoints","indexs","point","getDataPoints","validWidth","xranges","xminRange","xmaxRange","getMountDataPoints","mountOption","mountWidth","getBarDataPoints","getStackDataPoints","seriesIndex","stackSeries","value0","height0","heightc","y0","getBarStackDataPoints","x0","getYAxisTextList","yData","dataRange","yAxis","calYAxisData","YLength","rangesArr","rangesFormatArr","yAxisWidthArr","unit","tofix","yAxisFontSizes","calibration","yAxisFontSize","calTooltipYAxisData","yAxisData","minAxis","maxVal","minVal","calMarkLineData","yAxisIndex","contextRotate","rotateLock","translate","_rotate_","drawPointShape","shape","beginPath","dataPointShapeType","setStrokeStyle","setFillStyle","background","setLineWidth","moveTo","lineTo","arc","rect","closePath","fill","stroke","drawRingTitle","titlefontSize","subtitlefontSize","subtitle","titleFontColor","subtitleFontColor","titleHeight","subtitleHeight","textWidth","offsetX","startY","offsetY","fillText","_textWidth","_startX","_startY","drawPointText","textOffset","textColor","formatVal","setTextAlign","drawMountPointText","drawBarPointText","drawGaugeLabel","centerPosition","labelOffset","splitAngle","splitLine","totalNumber","endNumber","startNumber","nowAngle","nowNumber","pos","labelText","labelColor","drawRadarLabel","labelPointShow","posPoint","posPointAxis","labelPointColor","labelPointRadius","posRelativeCanvas","drawPieText","lineRadius","textObjectCollection","lastTextObject","seriesConvert","labelShow","orginX1","orginY1","orginX2","orginY2","orginX3","orginY3","textObject","lineStart","lineEnd","lineStartPoistion","lineEndPoistion","textPosition","curveStartX","textStartX","quadraticCurveTo","drawToolTipSplitLine","toolTipOption","tooltip","gridType","dashLength","endY","setLineDash","gridColor","xAxisLabel","textX","textY","labelBgColor","labelBgOpacity","labelFontColor","drawMarkLine","markLineOption","markLine","lineColor","showLabel","labelAlign","labelOffsetX","labelOffsetY","bgWidth","bgStartX","bgStartY","drawToolTipHorizentalLine","yAxisLabel","tStartLeft","tStartRight","bgEndX","drawToolTipSplitArea","activeBgColor","activeBgOpacity","activeWidth","drawBarToolTipSplitArea","drawToolTip","showBox","showArrow","showCategory","bgColor","bgOpacity","borderColor","borderWidth","borderRadius","borderOpacity","legendMarginRight","arrowWidth","isOverRightBorder","toolTipWidth","toolTipHeight","_scrollDistance_","fillRect","drawColumnDataPoints","columnOption","meterBorder","meterFillColor","barBorderCircle","barBorderRadius","linearOpacity","colorStop","save","leftNum","rightNum","tooltipPoints","fillColor","strokeColor","grd","createLinearGradient","addColorStop","r0","r3","dataLabel","restore","drawMountDataPoints","bezierCurveTo","drawBarDataPoints","drawCandleDataPoints","seriesMA","candleOption","average","candle","upLine","downLine","day","leftSpace","rightSpace","splitPointList","startPoint","ctrlPoint","drawAreaDataPoints","areaOption","opacity","addLine","gradient","firstPoint","lastPoint","lineType","drawScatterDataPoints","scatter","drawBubbleDataPoints","bubbleOption","bubble","drawLineDataPoints","lineOption","line","drawMixDataPoints","columnIndex","columnLength","addPoint","drawToolTipBridge","horizentalLine","drawXAxis","scrollY","scrollScreenWidth","scrollTotalWidth","scrollWidth","scrollLeft","setLineCap","scrollBackgroundColor","scrollColor","disableGrid","gridEval","maxXAxisListLength","labelCount","ratio","newCategories","cgLength","xAxisFontSize","_xAxisTextAngle_","scrollHeight","axisLine","axisLineColor","drawYAxisGrid","xAxiseachSpacing","TotalWidth","drawYAxis","fillEndY","tStartCenter","textAlign","tmpstrat","gapwidth","showTitle","titleOffsetX","titleOffsetY","drawLegend","legendArea","backgroundColor","itemList","listIndex","hiddenColor","fontTrans","drawPieDataPoints","pieOption","activeOpacity","activeRadius","labelWidth","ringWidth","customRadius","centerColor","_pieTextMaxLength_","lineJoin","fillcolor","createCircularGradient","createRadialGradient","innerPieWidth","drawRoseDataPoints","roseOption","drawArcbarDataPoints","lineCap","arcbar","centerX","centerY","drawGaugeDataPoints","fixRadius","childNumber","childWidth","gauge","innerRadius","pieRadius","childAngle","proc","pointerRadius","gradient3","eachCategories","childendX","drawRadarDataPoints","axisLabel","axisLabelTofix","gridCount","coordinateAngle","xr","yr","_loop","startPos","radarDataPoints","stepLength","label","lonlat2mercator","longitude","latitude","tan","getBoundingBox","coords","xMin","xMax","yMin","yMax","coorda","coordinateToPoint","pointY","pointX","isRayIntersectsSegment","s_poi","e_poi","xseg","poly","sinsc","epoly","drawMapDataPoints","mapOption","fillOpacity","activeBorderColor","activeFillColor","activeFillOpacity","xScale","yScale","gaosi","centerPoint","centroid","draw","normalInt","iter","collisionNew","isIn","getWordCloudPoint","tHeight","tWidth","breaknum","Spin","isSpin","areav","drawWordCloudDataPoints","wordOption","autoColors","word","wordCloudData","strokeText","drawFunnelDataPoints","funnelOption","funnel","drawFunnelText","drawCanvas","Timing","easeIn","easeOut","easeInOut","linear","Animation","isStop","timing","delay","createAnimationFrame","step","timeStamp","requestAnimationFrame","animationFrame","startTimeStamp","_step","onProcess","onAnimationFinish","timingFunction","drawCharts","_this","animation","animationInstance","stop","_calLegendData","legendHeight","_calYAxisData","maxTitleHeight","rightIndex","leftIndex","_calCategoriesData","categoriesData","scrollAlign","offsetLeft","totalWidth","screenWidth","currentOffset","startTouchX","lastMoveTime","clearRect","_drawLineDataPoints","enableMarkLine","_drawScatterDataPoints","_drawBubbleDataPoints","_drawMixDataPoints","_drawColumnDataPoints","_drawMountDataPoints","_drawBarDataPoints","_drawAreaDataPoints","arcbarData","gaugeData","_drawCandleDataPoints","uChartsEvent","events","addEventListener","listener","delEventListener","_len","_key","uCharts","canvas2d","config$$1","tempWidth","strokeStyle","lineWidth","font","fillStyle","updateData","_getXAxisPoints0","zoom","centerLeft","MaxLeft","dobuleZoom","tcs","changedTouches","clientY","ntcs","xlength","moveCount","cts0","cts1","moveCurrent1","getCurrentDataIndex","moveCurrent2","currentEachSpacing","currentLeft","stopAnimation","_touches$","getLegendDataIndex","touchLegend","showToolTip","_getToolTipData","_getMixToolTipData","scrollStart","scroll","Limit","touchMoveLimit","currMoveTime","_distance","scrollEnd","_scrollOption","formatDateTime","returnType","date","setTime","getFullYear","getMonth","getDate","getHours","minute","getMinutes","second","getSeconds","cfu","category","applyMixin","vuexInit","_init","devtoolHook","__VUE_DEVTOOLS_GLOBAL_HOOK__","devtoolPlugin","_devtoolHook","emit","targetState","replaceState","subscribe","mutation","prepend","subscribeAction","deepCopy","original","copy","forEachValue","isObject","assert","condition","msg","partial","Module","rawModule","_children","_rawModule","rawState","prototypeAccessors","namespaced","configurable","addChild","removeChild","getChild","hasChild","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","defineProperties","ModuleCollection","rawRootModule","register","targetModule","newModule","assertRawModule","modules","getNamespace","namespace","this$1","rawChildModule","unregister","child","functionAssert","expected","objectAssert","assertTypes","assertOptions","makeAssertionMessage","buf","install","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","dispatch","payload","installModule","resetStoreVM","plugin","useDevtools","devtools","prototypeAccessors$1","genericSubscribe","subs","resetStore","hot","oldVm","_vm","wrappedGetters","computed","enumerable","silent","$$state","enableStrictMode","_withCommit","nextTick","rootState","isRoot","parentState","getNestedState","moduleName","makeLocalContext","namespacedType","registerMutation","registerAction","getter","registerGetter","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","entry","rootGetters","rawGetter","deep","sync","_Vue","sub","before","all","cb","registerModule","preserveState","unregisterModule","delete","hasModule","newOptions","committing","mapState","normalizeNamespace","states","isValidMap","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","helper","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","groupCollapsed","groupEnd","time","pad","getMilliseconds","repeat","times","index_cjs","getToken","domain","common","uploadFile2","formdata","lawyerInfo","login_type","who","patch","get2","post2","Function","hadRuntime","regeneratorRuntime","getOwnPropertyNames","oldRuntime","Op","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","awrap","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","next","done","Context","skipTempReset","prev","sent","_sent","delegate","tryEntries","resetTryEntry","rootEntry","rootRecord","completion","rval","dispatchException","exception","handle","loc","caught","record","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","afterLoc","finish","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","makeInvokeMethod","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","doneResult","delegateResult","maybeInvokeDelegate","return","info","pushTryEntry","locs","iteratorMethod","devApi","devDomain","online","hideToast","showSuccess","showWarning","modelValue","preload","stepSearh","selfField","parentField","loading","errorMessage","loadMore","contentdown","contentrefresh","contentnomore","selected","selectedIndex","isLocaldata","postField","fields","dataValue","isModelValue","hasValue","al","newValue","oldValue","onPropsChange","_treeData","db","getOptions","getNodeData","_pathWhere","treePath","_extractTreePath","loadData","_processLocalData","_loadNodeData","_updateBindData","_loadAllData","_extractTree","_updateSelected","onDataChange","pw","_postWhere","where_field","_getParentNameByField","_nodeWhere","_isTreeView","dl","sl","textField","valueField","dl2","item2","node","_filterData","hasNodes","isleaf","_stepSearh","paths","parent_value","nodes","children","_findNodePath","inputValue","formats","utils","arrayPrefixGenerators","brackets","prefix","indices","toISO","defaults","delimiter","encoder","encodeValuesOnly","serializeDate","skipNulls","strictNullHandling","generateArrayPrefix","allowDots","isBuffer","keyValue","objKeys","format","formatters","arrayFormat","joined","addQueryPrefix","hexTable","array","compactQueue","compacted","arrayToObject","plainObjects","merge","allowPrototypes","mergeTarget","acc","decode","string","out","compact","refs","isRegExp","percentTwenties","RFC1738","RFC3986","arrayLimit","decoder","depth","parameterLimit","parseValues","cleanStr","ignoreQueryPrefix","Infinity","bracketEqualsPos","parseObject","chain","leaf","cleanRoot","parseArrays","parseKeys","givenKey","segment","tempObj","newObj","zhHans","zhHant","Request","baseUrl","beforeRequest","afterRequest","weixin","$http","defaultDelimiters","BaseFormatter","_caches","delimiters","tokens","compile","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","startDelimiter","endDelimiter","char","isClosed","compiled","defaultFormatter","I18n","fallbackLocale","watcher","formater","watchers","override","interpolate","watchAppLocale","newLocale","getDefaultLocale","isWatchedAppLocale","isString","hasI18nJson","jsonObj","walkJsonObj","isI18nStr","parseI18nJson","compileStr","compileI18nJsonStr","jsonStr","localeValues","compileJsonObj","compileValue","valueLocales","localValue","walk","resolveLocale","resolveLocaleChain","emptyObject","isUndef","isDef","isTrue","isFalse","isPrimitive","toRawType","isValidArrayIndex","parseFloat","isFinite","toNumber","makeMap","expectsLowerCase","isBuiltInTag","isReservedAttribute","remove","capitalize","hyphenateRE","hyphenate","polyfillBind","boundFn","_length","nativeBind","toArray","to","_from","toObject","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","getTime","keysA","keysB","looseIndexOf","called","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","productionTip","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","def","writable","bailRE","parsePath","segments","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","weexPlatform","UA","isIE","isEdge","nativeWatch","isServerRendering","VUE_ENV","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","tip","generateComponentTrace","formatComponentName","hasConsole","classifyRE","classify","trace","includeFile","_isVue","_componentTag","tree","currentRecursiveSequence","Dep","pushTarget","SharedObject","targetStack","popTarget","addSub","removeSub","depend","addDep","notify","VNode","elm","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","inserted","ob","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","copyAugment","protoAugment","src","observe","asRootData","isExtensible","defineReactive$$1","customSetter","shallow","property","getOwnPropertyDescriptor","setter","childOb","dependArray","del","strats","mergeData","toVal","fromVal","mergeDataOrFn","instanceData","defaultData","mergeAssets","assertObjectType","el","defaultStrat","key$1","inject","provide","checkComponents","validateComponentName","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","def$$1","mergeOptions","_base","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","assertProp","_props","getType","required","valid","expectedTypes","assertedType","assertType","expectedType","validator","getInvalidTypeMessage","simpleCheckRE","isSameType","receivedType","expectedValue","styleValue","receivedValue","isExplicable","isBoolean","explicitTypes","elem","handleError","cur","errorCaptured","capture","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","initProxy","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","textNode","document","createTextNode","characterData","_resolve","allowedGlobals","warnNonPresent","warnReservedPrefix","hasProxy","isBuiltInModifier","hasHandler","isAllowed","$data","getHandler","handlers","_withStripped","_renderProxy","measure","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","perf","clearMarks","clearMeasures","startTag","endTag","normalizeEvent","passive","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","oldOn","remove$$1","createOnceHandler","old","extractPropertiesFromVNodeData","attrs","altKey","checkProp","extractPropsFromVNodeData","keyInLowerCase","hash","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","slots","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","renderSlot","fallback","bindObject","scopedSlotFn","_i","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_l","_q","_f","_k","_b","_v","_u","_g","_d","_p","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","listeners","injections","scopedSlots","_c","createElement","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","devtoolsMeta","componentVNodeHooks","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","activeInstance","oldVnode","updateChildComponent","insert","queueActivatedComponent","activateChildComponent","destroy","deactivateChildComponent","hooksToMerge","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","nativeOn","abstract","installComponentHooks","_isComponent","_parentVnode","inlineTemplate","toMerge","_merged","mergeHook$1","f1","f2","merged","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","pre","applyNS","registerDeepBindings","force","class","initRender","_vnode","parentVnode","_renderChildren","parentData","isUpdatingChildComponent","_parentListeners","currentRenderingInstance","renderMixin","$nextTick","_render","renderError","ensureCtor","comp","base","factory","errorComp","resolved","owner","owners","loadingComp","timerLoading","timerTimeout","forceRender","renderCompleted","clearTimeout","getFirstComponentChild","initEvents","_events","_hasHookEvent","updateComponentListeners","remove$1","_target","onceHandler","oldListeners","eventsMixin","hookRE","i$1","cbs","lowerCaseEvent","setActiveInstance","prevActiveInstance","initLifecycle","_watcher","_inactive","_directInactive","_isBeingDestroyed","lifecycleMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","teardown","_watchers","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","$attrs","$listeners","propKeys","_propKeys","_$updateProperties","isInInactiveTree","direct","MAX_UPDATE_COUNT","activatedChildren","circular","waiting","flushing","resetSchedulerState","getNow","createEvent","flushSchedulerQueue","run","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","Watcher","expOrFn","isRenderWatcher","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","cleanupDeps","evaluate","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initComputed","initWatch","propsOptions","_getFormData","__next_tick_pending","getData","computedWatcherOptions","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","stateMixin","dataDef","propsDef","$set","$delete","immediate","uid$3","initMixin","_uid","initInternalComponent","_self","_$fallback","_name","vnodeComponentOptions","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","modified","latest","sealed","sealedOptions","initUse","installedPlugins","_installedPlugins","initMixin$1","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","matches","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","cached$$1","patternTypes","KeepAlive","exclude","mounted","ref$1","builtInComponents","initGlobalAPI","configDef","defineReactive","ARRAYTYPE","OBJECTTYPE","diff","syncKeys","_diff","rootCurrentType","rootPreType","currentValue","preValue","currentType","preType","subKey","flushCallbacks$1","__next_tick_callbacks","hasRenderWatcher","nextTick$1","mpInstance$1","cloneWithData","dataKeys","compositionApiState","__composition_api_state__","__secret_vfa_state__","rawBindings","__webviewId__","mpData","diffData","$shouldDiffData","createEmptyRender","mountComponent$1","template","updateComponent","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleBinding","bindingStyle","MP_METHODS","getTarget","internalMixin","onError","oldEmit","my","createSelectorQuery","createIntersectionObserver","__init_provide","__init_injections","__set_model","modifiers","__set_sync","__get_orig","__get_class","__get_style","dynamicStyle","staticStyle","dynamicStyleObj","styleObj","__map","iteratee","LIFECYCLE_HOOKS$1","lifecycleMixin$1","oldExtend","strategies"],"mappings":"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","file":"common/vendor.js","sourcesContent":["import { initVueI18n } from '@dcloudio/uni-i18n';\r\nimport Vue from 'vue';\r\n\r\nlet realAtob;\r\n\r\nconst b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\nconst b64re = /^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;\r\n\r\nif (typeof atob !== 'function') {\r\n realAtob = function (str) {\r\n str = String(str).replace(/[\\t\\n\\f\\r ]+/g, '');\r\n if (!b64re.test(str)) { throw new Error(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\") }\r\n\r\n // Adding the padding if missing, for semplicity\r\n str += '=='.slice(2 - (str.length & 3));\r\n var bitmap; var result = ''; var r1; var r2; var i = 0;\r\n for (; i < str.length;) {\r\n bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 |\r\n (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));\r\n\r\n result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255)\r\n : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255)\r\n : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);\r\n }\r\n return result\r\n };\r\n} else {\r\n // 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法\r\n realAtob = atob;\r\n}\r\n\r\nfunction b64DecodeUnicode (str) {\r\n return decodeURIComponent(realAtob(str).split('').map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\r\n }).join(''))\r\n}\r\n\r\nfunction getCurrentUserInfo () {\r\n const token = ( wx).getStorageSync('uni_id_token') || '';\r\n const tokenArr = token.split('.');\r\n if (!token || tokenArr.length !== 3) {\r\n return {\r\n uid: null,\r\n role: [],\r\n permission: [],\r\n tokenExpired: 0\r\n }\r\n }\r\n let userInfo;\r\n try {\r\n userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));\r\n } catch (error) {\r\n throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message)\r\n }\r\n userInfo.tokenExpired = userInfo.exp * 1000;\r\n delete userInfo.exp;\r\n delete userInfo.iat;\r\n return userInfo\r\n}\r\n\r\nfunction uniIdMixin (Vue) {\r\n Vue.prototype.uniIDHasRole = function (roleId) {\r\n const {\r\n role\r\n } = getCurrentUserInfo();\r\n return role.indexOf(roleId) > -1\r\n };\r\n Vue.prototype.uniIDHasPermission = function (permissionId) {\r\n const {\r\n permission\r\n } = getCurrentUserInfo();\r\n return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1\r\n };\r\n Vue.prototype.uniIDTokenValid = function () {\r\n const {\r\n tokenExpired\r\n } = getCurrentUserInfo();\r\n return tokenExpired > Date.now()\r\n };\r\n}\r\n\r\nconst _toString = Object.prototype.toString;\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nfunction isFn (fn) {\r\n return typeof fn === 'function'\r\n}\r\n\r\nfunction isStr (str) {\r\n return typeof str === 'string'\r\n}\r\n\r\nfunction isPlainObject (obj) {\r\n return _toString.call(obj) === '[object Object]'\r\n}\r\n\r\nfunction hasOwn (obj, key) {\r\n return hasOwnProperty.call(obj, key)\r\n}\r\n\r\nfunction noop () { }\r\n\r\n/**\r\n * Create a cached version of a pure function.\r\n */\r\nfunction cached (fn) {\r\n const cache = Object.create(null);\r\n return function cachedFn (str) {\r\n const hit = cache[str];\r\n return hit || (cache[str] = fn(str))\r\n }\r\n}\r\n\r\n/**\r\n * Camelize a hyphen-delimited string.\r\n */\r\nconst camelizeRE = /-(\\w)/g;\r\nconst camelize = cached((str) => {\r\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\r\n});\r\n\r\nfunction sortObject (obj) {\r\n const sortObj = {};\r\n if (isPlainObject(obj)) {\r\n Object.keys(obj).sort().forEach(key => {\r\n sortObj[key] = obj[key];\r\n });\r\n }\r\n return !Object.keys(sortObj) ? obj : sortObj\r\n}\r\n\r\nconst HOOKS = [\r\n 'invoke',\r\n 'success',\r\n 'fail',\r\n 'complete',\r\n 'returnValue'\r\n];\r\n\r\nconst globalInterceptors = {};\r\nconst scopedInterceptors = {};\r\n\r\nfunction mergeHook (parentVal, childVal) {\r\n const res = childVal\r\n ? parentVal\r\n ? parentVal.concat(childVal)\r\n : Array.isArray(childVal)\r\n ? childVal : [childVal]\r\n : parentVal;\r\n return res\r\n ? dedupeHooks(res)\r\n : res\r\n}\r\n\r\nfunction dedupeHooks (hooks) {\r\n const res = [];\r\n for (let i = 0; i < hooks.length; i++) {\r\n if (res.indexOf(hooks[i]) === -1) {\r\n res.push(hooks[i]);\r\n }\r\n }\r\n return res\r\n}\r\n\r\nfunction removeHook (hooks, hook) {\r\n const index = hooks.indexOf(hook);\r\n if (index !== -1) {\r\n hooks.splice(index, 1);\r\n }\r\n}\r\n\r\nfunction mergeInterceptorHook (interceptor, option) {\r\n Object.keys(option).forEach(hook => {\r\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n interceptor[hook] = mergeHook(interceptor[hook], option[hook]);\r\n }\r\n });\r\n}\r\n\r\nfunction removeInterceptorHook (interceptor, option) {\r\n if (!interceptor || !option) {\r\n return\r\n }\r\n Object.keys(option).forEach(hook => {\r\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n removeHook(interceptor[hook], option[hook]);\r\n }\r\n });\r\n}\r\n\r\nfunction addInterceptor (method, option) {\r\n if (typeof method === 'string' && isPlainObject(option)) {\r\n mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);\r\n } else if (isPlainObject(method)) {\r\n mergeInterceptorHook(globalInterceptors, method);\r\n }\r\n}\r\n\r\nfunction removeInterceptor (method, option) {\r\n if (typeof method === 'string') {\r\n if (isPlainObject(option)) {\r\n removeInterceptorHook(scopedInterceptors[method], option);\r\n } else {\r\n delete scopedInterceptors[method];\r\n }\r\n } else if (isPlainObject(method)) {\r\n removeInterceptorHook(globalInterceptors, method);\r\n }\r\n}\r\n\r\nfunction wrapperHook (hook) {\r\n return function (data) {\r\n return hook(data) || data\r\n }\r\n}\r\n\r\nfunction isPromise (obj) {\r\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'\r\n}\r\n\r\nfunction queue (hooks, data) {\r\n let promise = false;\r\n for (let i = 0; i < hooks.length; i++) {\r\n const hook = hooks[i];\r\n if (promise) {\r\n promise = Promise.resolve(wrapperHook(hook));\r\n } else {\r\n const res = hook(data);\r\n if (isPromise(res)) {\r\n promise = Promise.resolve(res);\r\n }\r\n if (res === false) {\r\n return {\r\n then () { }\r\n }\r\n }\r\n }\r\n }\r\n return promise || {\r\n then (callback) {\r\n return callback(data)\r\n }\r\n }\r\n}\r\n\r\nfunction wrapperOptions (interceptor, options = {}) {\r\n ['success', 'fail', 'complete'].forEach(name => {\r\n if (Array.isArray(interceptor[name])) {\r\n const oldCallback = options[name];\r\n options[name] = function callbackInterceptor (res) {\r\n queue(interceptor[name], res).then((res) => {\r\n /* eslint-disable no-mixed-operators */\r\n return isFn(oldCallback) && oldCallback(res) || res\r\n });\r\n };\r\n }\r\n });\r\n return options\r\n}\r\n\r\nfunction wrapperReturnValue (method, returnValue) {\r\n const returnValueHooks = [];\r\n if (Array.isArray(globalInterceptors.returnValue)) {\r\n returnValueHooks.push(...globalInterceptors.returnValue);\r\n }\r\n const interceptor = scopedInterceptors[method];\r\n if (interceptor && Array.isArray(interceptor.returnValue)) {\r\n returnValueHooks.push(...interceptor.returnValue);\r\n }\r\n returnValueHooks.forEach(hook => {\r\n returnValue = hook(returnValue) || returnValue;\r\n });\r\n return returnValue\r\n}\r\n\r\nfunction getApiInterceptorHooks (method) {\r\n const interceptor = Object.create(null);\r\n Object.keys(globalInterceptors).forEach(hook => {\r\n if (hook !== 'returnValue') {\r\n interceptor[hook] = globalInterceptors[hook].slice();\r\n }\r\n });\r\n const scopedInterceptor = scopedInterceptors[method];\r\n if (scopedInterceptor) {\r\n Object.keys(scopedInterceptor).forEach(hook => {\r\n if (hook !== 'returnValue') {\r\n interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);\r\n }\r\n });\r\n }\r\n return interceptor\r\n}\r\n\r\nfunction invokeApi (method, api, options, ...params) {\r\n const interceptor = getApiInterceptorHooks(method);\r\n if (interceptor && Object.keys(interceptor).length) {\r\n if (Array.isArray(interceptor.invoke)) {\r\n const res = queue(interceptor.invoke, options);\r\n return res.then((options) => {\r\n return api(wrapperOptions(interceptor, options), ...params)\r\n })\r\n } else {\r\n return api(wrapperOptions(interceptor, options), ...params)\r\n }\r\n }\r\n return api(options, ...params)\r\n}\r\n\r\nconst promiseInterceptor = {\r\n returnValue (res) {\r\n if (!isPromise(res)) {\r\n return res\r\n }\r\n return new Promise((resolve, reject) => {\r\n res.then(res => {\r\n if (res[0]) {\r\n reject(res[0]);\r\n } else {\r\n resolve(res[1]);\r\n }\r\n });\r\n })\r\n }\r\n};\r\n\r\nconst SYNC_API_RE =\r\n /^\\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback|getWindowInfo|getDeviceInfo|getAppBaseInfo|getSystemSetting|getAppAuthorizeSetting/;\r\n\r\nconst CONTEXT_API_RE = /^create|Manager$/;\r\n\r\n// Context例外情况\r\nconst CONTEXT_API_RE_EXC = ['createBLEConnection'];\r\n\r\n// 同步例外情况\r\nconst ASYNC_API = ['createBLEConnection', 'createPushMessage'];\r\n\r\nconst CALLBACK_API_RE = /^on|^off/;\r\n\r\nfunction isContextApi (name) {\r\n return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1\r\n}\r\nfunction isSyncApi (name) {\r\n return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1\r\n}\r\n\r\nfunction isCallbackApi (name) {\r\n return CALLBACK_API_RE.test(name) && name !== 'onPush'\r\n}\r\n\r\nfunction handlePromise (promise) {\r\n return promise.then(data => {\r\n return [null, data]\r\n })\r\n .catch(err => [err])\r\n}\r\n\r\nfunction shouldPromise (name) {\r\n if (\r\n isContextApi(name) ||\r\n isSyncApi(name) ||\r\n isCallbackApi(name)\r\n ) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n/* eslint-disable no-extend-native */\r\nif (!Promise.prototype.finally) {\r\n Promise.prototype.finally = function (callback) {\r\n const promise = this.constructor;\r\n return this.then(\r\n value => promise.resolve(callback()).then(() => value),\r\n reason => promise.resolve(callback()).then(() => {\r\n throw reason\r\n })\r\n )\r\n };\r\n}\r\n\r\nfunction promisify (name, api) {\r\n if (!shouldPromise(name)) {\r\n return api\r\n }\r\n return function promiseApi (options = {}, ...params) {\r\n if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {\r\n return wrapperReturnValue(name, invokeApi(name, api, options, ...params))\r\n }\r\n return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => {\r\n invokeApi(name, api, Object.assign({}, options, {\r\n success: resolve,\r\n fail: reject\r\n }), ...params);\r\n })))\r\n }\r\n}\r\n\r\nconst EPS = 1e-4;\r\nconst BASE_DEVICE_WIDTH = 750;\r\nlet isIOS = false;\r\nlet deviceWidth = 0;\r\nlet deviceDPR = 0;\r\n\r\nfunction checkDeviceWidth () {\r\n const {\r\n platform,\r\n pixelRatio,\r\n windowWidth\r\n } = wx.getSystemInfoSync(); // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni\r\n\r\n deviceWidth = windowWidth;\r\n deviceDPR = pixelRatio;\r\n isIOS = platform === 'ios';\r\n}\r\n\r\nfunction upx2px (number, newDeviceWidth) {\r\n if (deviceWidth === 0) {\r\n checkDeviceWidth();\r\n }\r\n\r\n number = Number(number);\r\n if (number === 0) {\r\n return 0\r\n }\r\n let result = (number / BASE_DEVICE_WIDTH) * (newDeviceWidth || deviceWidth);\r\n if (result < 0) {\r\n result = -result;\r\n }\r\n result = Math.floor(result + EPS);\r\n if (result === 0) {\r\n if (deviceDPR === 1 || !isIOS) {\r\n result = 1;\r\n } else {\r\n result = 0.5;\r\n }\r\n }\r\n return number < 0 ? -result : result\r\n}\r\n\r\nconst LOCALE_ZH_HANS = 'zh-Hans';\r\nconst LOCALE_ZH_HANT = 'zh-Hant';\r\nconst LOCALE_EN = 'en';\r\nconst LOCALE_FR = 'fr';\r\nconst LOCALE_ES = 'es';\r\n\r\nconst messages = {};\r\n\r\nlet locale;\r\n\r\n{\r\n locale = normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;\r\n}\r\n\r\nfunction initI18nMessages () {\r\n if (!isEnableLocale()) {\r\n return\r\n }\r\n const localeKeys = Object.keys(__uniConfig.locales);\r\n if (localeKeys.length) {\r\n localeKeys.forEach((locale) => {\r\n const curMessages = messages[locale];\r\n const userMessages = __uniConfig.locales[locale];\r\n if (curMessages) {\r\n Object.assign(curMessages, userMessages);\r\n } else {\r\n messages[locale] = userMessages;\r\n }\r\n });\r\n }\r\n}\r\n\r\ninitI18nMessages();\r\n\r\nconst i18n = initVueI18n(\r\n locale,\r\n {}\r\n);\r\nconst t = i18n.t;\r\nconst i18nMixin = (i18n.mixin = {\r\n beforeCreate () {\r\n const unwatch = i18n.i18n.watchLocale(() => {\r\n this.$forceUpdate();\r\n });\r\n this.$once('hook:beforeDestroy', function () {\r\n unwatch();\r\n });\r\n },\r\n methods: {\r\n $$t (key, values) {\r\n return t(key, values)\r\n }\r\n }\r\n});\r\nconst setLocale = i18n.setLocale;\r\nconst getLocale = i18n.getLocale;\r\n\r\nfunction initAppLocale (Vue, appVm, locale) {\r\n const state = Vue.observable({\r\n locale: locale || i18n.getLocale()\r\n });\r\n const localeWatchers = [];\r\n appVm.$watchLocale = fn => {\r\n localeWatchers.push(fn);\r\n };\r\n Object.defineProperty(appVm, '$locale', {\r\n get () {\r\n return state.locale\r\n },\r\n set (v) {\r\n state.locale = v;\r\n localeWatchers.forEach(watch => watch(v));\r\n }\r\n });\r\n}\r\n\r\nfunction isEnableLocale () {\r\n return typeof __uniConfig !== 'undefined' && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length\r\n}\r\n\r\nfunction include (str, parts) {\r\n return !!parts.find((part) => str.indexOf(part) !== -1)\r\n}\r\n\r\nfunction startsWith (str, parts) {\r\n return parts.find((part) => str.indexOf(part) === 0)\r\n}\r\n\r\nfunction normalizeLocale (locale, messages) {\r\n if (!locale) {\r\n return\r\n }\r\n locale = locale.trim().replace(/_/g, '-');\r\n if (messages && messages[locale]) {\r\n return locale\r\n }\r\n locale = locale.toLowerCase();\r\n if (locale === 'chinese') {\r\n // 支付宝\r\n return LOCALE_ZH_HANS\r\n }\r\n if (locale.indexOf('zh') === 0) {\r\n if (locale.indexOf('-hans') > -1) {\r\n return LOCALE_ZH_HANS\r\n }\r\n if (locale.indexOf('-hant') > -1) {\r\n return LOCALE_ZH_HANT\r\n }\r\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\r\n return LOCALE_ZH_HANT\r\n }\r\n return LOCALE_ZH_HANS\r\n }\r\n const lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);\r\n if (lang) {\r\n return lang\r\n }\r\n}\r\n// export function initI18n() {\r\n// const localeKeys = Object.keys(__uniConfig.locales || {})\r\n// if (localeKeys.length) {\r\n// localeKeys.forEach((locale) =>\r\n// i18n.add(locale, __uniConfig.locales[locale])\r\n// )\r\n// }\r\n// }\r\n\r\nfunction getLocale$1 () {\r\n // 优先使用 $locale\r\n const app = getApp({\r\n allowDefault: true\r\n });\r\n if (app && app.$vm) {\r\n return app.$vm.$locale\r\n }\r\n return normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN\r\n}\r\n\r\nfunction setLocale$1 (locale) {\r\n const app = getApp();\r\n if (!app) {\r\n return false\r\n }\r\n const oldLocale = app.$vm.$locale;\r\n if (oldLocale !== locale) {\r\n app.$vm.$locale = locale;\r\n onLocaleChangeCallbacks.forEach((fn) => fn({\r\n locale\r\n }));\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nconst onLocaleChangeCallbacks = [];\r\nfunction onLocaleChange (fn) {\r\n if (onLocaleChangeCallbacks.indexOf(fn) === -1) {\r\n onLocaleChangeCallbacks.push(fn);\r\n }\r\n}\r\n\r\nif (typeof global !== 'undefined') {\r\n global.getLocale = getLocale$1;\r\n}\r\n\r\nconst interceptors = {\r\n promiseInterceptor\r\n};\r\n\r\nvar baseApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n upx2px: upx2px,\r\n getLocale: getLocale$1,\r\n setLocale: setLocale$1,\r\n onLocaleChange: onLocaleChange,\r\n addInterceptor: addInterceptor,\r\n removeInterceptor: removeInterceptor,\r\n interceptors: interceptors\r\n});\r\n\r\nfunction findExistsPageIndex (url) {\r\n const pages = getCurrentPages();\r\n let len = pages.length;\r\n while (len--) {\r\n const page = pages[len];\r\n if (page.$page && page.$page.fullPath === url) {\r\n return len\r\n }\r\n }\r\n return -1\r\n}\r\n\r\nvar redirectTo = {\r\n name (fromArgs) {\r\n if (fromArgs.exists === 'back' && fromArgs.delta) {\r\n return 'navigateBack'\r\n }\r\n return 'redirectTo'\r\n },\r\n args (fromArgs) {\r\n if (fromArgs.exists === 'back' && fromArgs.url) {\r\n const existsPageIndex = findExistsPageIndex(fromArgs.url);\r\n if (existsPageIndex !== -1) {\r\n const delta = getCurrentPages().length - 1 - existsPageIndex;\r\n if (delta > 0) {\r\n fromArgs.delta = delta;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nvar previewImage = {\r\n args (fromArgs) {\r\n let currentIndex = parseInt(fromArgs.current);\r\n if (isNaN(currentIndex)) {\r\n return\r\n }\r\n const urls = fromArgs.urls;\r\n if (!Array.isArray(urls)) {\r\n return\r\n }\r\n const len = urls.length;\r\n if (!len) {\r\n return\r\n }\r\n if (currentIndex < 0) {\r\n currentIndex = 0;\r\n } else if (currentIndex >= len) {\r\n currentIndex = len - 1;\r\n }\r\n if (currentIndex > 0) {\r\n fromArgs.current = urls[currentIndex];\r\n fromArgs.urls = urls.filter(\r\n (item, index) => index < currentIndex ? item !== urls[currentIndex] : true\r\n );\r\n } else {\r\n fromArgs.current = urls[0];\r\n }\r\n return {\r\n indicator: false,\r\n loop: false\r\n }\r\n }\r\n};\r\n\r\nconst UUID_KEY = '__DC_STAT_UUID';\r\nlet deviceId;\r\nfunction useDeviceId (result) {\r\n deviceId = deviceId || wx.getStorageSync(UUID_KEY);\r\n if (!deviceId) {\r\n deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);\r\n wx.setStorage({\r\n key: UUID_KEY,\r\n data: deviceId\r\n });\r\n }\r\n result.deviceId = deviceId;\r\n}\r\n\r\nfunction addSafeAreaInsets (result) {\r\n if (result.safeArea) {\r\n const safeArea = result.safeArea;\r\n result.safeAreaInsets = {\r\n top: safeArea.top,\r\n left: safeArea.left,\r\n right: result.windowWidth - safeArea.right,\r\n bottom: result.screenHeight - safeArea.bottom\r\n };\r\n }\r\n}\r\n\r\nfunction populateParameters (result) {\r\n const {\r\n brand = '', model = '', system = '',\r\n language = '', theme, version,\r\n platform, fontSizeSetting,\r\n SDKVersion, pixelRatio, deviceOrientation\r\n } = result;\r\n // const isQuickApp = \"mp-weixin\".indexOf('quickapp-webview') !== -1\r\n\r\n // osName osVersion\r\n let osName = '';\r\n let osVersion = '';\r\n {\r\n osName = system.split(' ')[0] || '';\r\n osVersion = system.split(' ')[1] || '';\r\n }\r\n let hostVersion = version;\r\n\r\n // deviceType\r\n const deviceType = getGetDeviceType(result, model);\r\n\r\n // deviceModel\r\n const deviceBrand = getDeviceBrand(brand);\r\n\r\n // hostName\r\n const _hostName = getHostName(result);\r\n\r\n // deviceOrientation\r\n let _deviceOrientation = deviceOrientation; // 仅 微信 百度 支持\r\n\r\n // devicePixelRatio\r\n let _devicePixelRatio = pixelRatio;\r\n\r\n // SDKVersion\r\n let _SDKVersion = SDKVersion;\r\n\r\n // hostLanguage\r\n const hostLanguage = language.replace(/_/g, '-');\r\n\r\n // wx.getAccountInfoSync\r\n\r\n const parameters = {\r\n appId: process.env.UNI_APP_ID,\r\n appName: process.env.UNI_APP_NAME,\r\n appVersion: process.env.UNI_APP_VERSION_NAME,\r\n appVersionCode: process.env.UNI_APP_VERSION_CODE,\r\n appLanguage: getAppLanguage(hostLanguage),\r\n uniCompileVersion: process.env.UNI_COMPILER_VERSION,\r\n uniRuntimeVersion: process.env.UNI_COMPILER_VERSION,\r\n uniPlatform: process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM,\r\n deviceBrand,\r\n deviceModel: model,\r\n deviceType,\r\n devicePixelRatio: _devicePixelRatio,\r\n deviceOrientation: _deviceOrientation,\r\n osName: osName.toLocaleLowerCase(),\r\n osVersion,\r\n hostTheme: theme,\r\n hostVersion,\r\n hostLanguage,\r\n hostName: _hostName,\r\n hostSDKVersion: _SDKVersion,\r\n hostFontSizeSetting: fontSizeSetting,\r\n windowTop: 0,\r\n windowBottom: 0,\r\n // TODO\r\n osLanguage: undefined,\r\n osTheme: undefined,\r\n ua: undefined,\r\n hostPackageName: undefined,\r\n browserName: undefined,\r\n browserVersion: undefined\r\n };\r\n\r\n Object.assign(result, parameters);\r\n}\r\n\r\nfunction getGetDeviceType (result, model) {\r\n let deviceType = result.deviceType || 'phone';\r\n {\r\n const deviceTypeMaps = {\r\n ipad: 'pad',\r\n windows: 'pc',\r\n mac: 'pc'\r\n };\r\n const deviceTypeMapsKeys = Object.keys(deviceTypeMaps);\r\n const _model = model.toLocaleLowerCase();\r\n for (let index = 0; index < deviceTypeMapsKeys.length; index++) {\r\n const _m = deviceTypeMapsKeys[index];\r\n if (_model.indexOf(_m) !== -1) {\r\n deviceType = deviceTypeMaps[_m];\r\n break\r\n }\r\n }\r\n }\r\n return deviceType\r\n}\r\n\r\nfunction getDeviceBrand (brand) {\r\n let deviceBrand = brand;\r\n if (deviceBrand) {\r\n deviceBrand = brand.toLocaleLowerCase();\r\n }\r\n return deviceBrand\r\n}\r\n\r\nfunction getAppLanguage (defaultLanguage) {\r\n return getLocale$1\r\n ? getLocale$1()\r\n : defaultLanguage\r\n}\r\n\r\nfunction getHostName (result) {\r\n const _platform = 'WeChat' ;\r\n let _hostName = result.hostName || _platform; // mp-jd\r\n {\r\n if (result.environment) {\r\n _hostName = result.environment;\r\n } else if (result.host && result.host.env) {\r\n _hostName = result.host.env;\r\n }\r\n }\r\n\r\n return _hostName\r\n}\r\n\r\nvar getSystemInfo = {\r\n returnValue: function (result) {\r\n useDeviceId(result);\r\n addSafeAreaInsets(result);\r\n populateParameters(result);\r\n }\r\n};\r\n\r\nvar showActionSheet = {\r\n args (fromArgs) {\r\n if (typeof fromArgs === 'object') {\r\n fromArgs.alertText = fromArgs.title;\r\n }\r\n }\r\n};\r\n\r\nvar getAppBaseInfo = {\r\n returnValue: function (result) {\r\n const { version, language, SDKVersion, theme } = result;\r\n\r\n const _hostName = getHostName(result);\r\n\r\n const hostLanguage = language.replace('_', '-');\r\n\r\n result = sortObject(Object.assign(result, {\r\n appId: process.env.UNI_APP_ID,\r\n appName: process.env.UNI_APP_NAME,\r\n appVersion: process.env.UNI_APP_VERSION_NAME,\r\n appVersionCode: process.env.UNI_APP_VERSION_CODE,\r\n appLanguage: getAppLanguage(hostLanguage),\r\n hostVersion: version,\r\n hostLanguage,\r\n hostName: _hostName,\r\n hostSDKVersion: SDKVersion,\r\n hostTheme: theme\r\n }));\r\n }\r\n};\r\n\r\nvar getDeviceInfo = {\r\n returnValue: function (result) {\r\n const { brand, model } = result;\r\n const deviceType = getGetDeviceType(result, model);\r\n const deviceBrand = getDeviceBrand(brand);\r\n useDeviceId(result);\r\n\r\n result = sortObject(Object.assign(result, {\r\n deviceType,\r\n deviceBrand,\r\n deviceModel: model\r\n }));\r\n }\r\n};\r\n\r\nvar getWindowInfo = {\r\n returnValue: function (result) {\r\n addSafeAreaInsets(result);\r\n\r\n result = sortObject(Object.assign(result, {\r\n windowTop: 0,\r\n windowBottom: 0\r\n }));\r\n }\r\n};\r\n\r\nvar getAppAuthorizeSetting = {\r\n returnValue: function (result) {\r\n const { locationReducedAccuracy } = result;\r\n\r\n result.locationAccuracy = 'unsupported';\r\n if (locationReducedAccuracy === true) {\r\n result.locationAccuracy = 'reduced';\r\n } else if (locationReducedAccuracy === false) {\r\n result.locationAccuracy = 'full';\r\n }\r\n }\r\n};\r\n\r\n// import navigateTo from 'uni-helpers/navigate-to'\r\n\r\nconst protocols = {\r\n redirectTo,\r\n // navigateTo, // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP\r\n previewImage,\r\n getSystemInfo,\r\n getSystemInfoSync: getSystemInfo,\r\n showActionSheet,\r\n getAppBaseInfo,\r\n getDeviceInfo,\r\n getWindowInfo,\r\n getAppAuthorizeSetting\r\n};\r\nconst todos = [\r\n 'vibrate',\r\n 'preloadPage',\r\n 'unPreloadPage',\r\n 'loadSubPackage'\r\n];\r\nconst canIUses = [];\r\n\r\nconst CALLBACKS = ['success', 'fail', 'cancel', 'complete'];\r\n\r\nfunction processCallback (methodName, method, returnValue) {\r\n return function (res) {\r\n return method(processReturnValue(methodName, res, returnValue))\r\n }\r\n}\r\n\r\nfunction processArgs (methodName, fromArgs, argsOption = {}, returnValue = {}, keepFromArgs = false) {\r\n if (isPlainObject(fromArgs)) { // 一般 api 的参数解析\r\n const toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值\r\n if (isFn(argsOption)) {\r\n argsOption = argsOption(fromArgs, toArgs) || {};\r\n }\r\n for (const key in fromArgs) {\r\n if (hasOwn(argsOption, key)) {\r\n let keyOption = argsOption[key];\r\n if (isFn(keyOption)) {\r\n keyOption = keyOption(fromArgs[key], fromArgs, toArgs);\r\n }\r\n if (!keyOption) { // 不支持的参数\r\n console.warn(`The '${methodName}' method of platform '微信小程序' does not support option '${key}'`);\r\n } else if (isStr(keyOption)) { // 重写参数 key\r\n toArgs[keyOption] = fromArgs[key];\r\n } else if (isPlainObject(keyOption)) { // {name:newName,value:value}可重新指定参数 key:value\r\n toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;\r\n }\r\n } else if (CALLBACKS.indexOf(key) !== -1) {\r\n if (isFn(fromArgs[key])) {\r\n toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);\r\n }\r\n } else {\r\n if (!keepFromArgs) {\r\n toArgs[key] = fromArgs[key];\r\n }\r\n }\r\n }\r\n return toArgs\r\n } else if (isFn(fromArgs)) {\r\n fromArgs = processCallback(methodName, fromArgs, returnValue);\r\n }\r\n return fromArgs\r\n}\r\n\r\nfunction processReturnValue (methodName, res, returnValue, keepReturnValue = false) {\r\n if (isFn(protocols.returnValue)) { // 处理通用 returnValue\r\n res = protocols.returnValue(methodName, res);\r\n }\r\n return processArgs(methodName, res, returnValue, {}, keepReturnValue)\r\n}\r\n\r\nfunction wrapper (methodName, method) {\r\n if (hasOwn(protocols, methodName)) {\r\n const protocol = protocols[methodName];\r\n if (!protocol) { // 暂不支持的 api\r\n return function () {\r\n console.error(`Platform '微信小程序' does not support '${methodName}'.`);\r\n }\r\n }\r\n return function (arg1, arg2) { // 目前 api 最多两个参数\r\n let options = protocol;\r\n if (isFn(protocol)) {\r\n options = protocol(arg1);\r\n }\r\n\r\n arg1 = processArgs(methodName, arg1, options.args, options.returnValue);\r\n\r\n const args = [arg1];\r\n if (typeof arg2 !== 'undefined') {\r\n args.push(arg2);\r\n }\r\n if (isFn(options.name)) {\r\n methodName = options.name(arg1);\r\n } else if (isStr(options.name)) {\r\n methodName = options.name;\r\n }\r\n const returnValue = wx[methodName].apply(wx, args);\r\n if (isSyncApi(methodName)) { // 同步 api\r\n return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName))\r\n }\r\n return returnValue\r\n }\r\n }\r\n return method\r\n}\r\n\r\nconst todoApis = Object.create(null);\r\n\r\nconst TODOS = [\r\n 'onTabBarMidButtonTap',\r\n 'subscribePush',\r\n 'unsubscribePush',\r\n 'onPush',\r\n 'offPush',\r\n 'share'\r\n];\r\n\r\nfunction createTodoApi (name) {\r\n return function todoApi ({\r\n fail,\r\n complete\r\n }) {\r\n const res = {\r\n errMsg: `${name}:fail method '${name}' not supported`\r\n };\r\n isFn(fail) && fail(res);\r\n isFn(complete) && complete(res);\r\n }\r\n}\r\n\r\nTODOS.forEach(function (name) {\r\n todoApis[name] = createTodoApi(name);\r\n});\r\n\r\nvar providers = {\r\n oauth: ['weixin'],\r\n share: ['weixin'],\r\n payment: ['wxpay'],\r\n push: ['weixin']\r\n};\r\n\r\nfunction getProvider ({\r\n service,\r\n success,\r\n fail,\r\n complete\r\n}) {\r\n let res = false;\r\n if (providers[service]) {\r\n res = {\r\n errMsg: 'getProvider:ok',\r\n service,\r\n provider: providers[service]\r\n };\r\n isFn(success) && success(res);\r\n } else {\r\n res = {\r\n errMsg: 'getProvider:fail service not found'\r\n };\r\n isFn(fail) && fail(res);\r\n }\r\n isFn(complete) && complete(res);\r\n}\r\n\r\nvar extraApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n getProvider: getProvider\r\n});\r\n\r\nconst getEmitter = (function () {\r\n let Emitter;\r\n return function getUniEmitter () {\r\n if (!Emitter) {\r\n Emitter = new Vue();\r\n }\r\n return Emitter\r\n }\r\n})();\r\n\r\nfunction apply (ctx, method, args) {\r\n return ctx[method].apply(ctx, args)\r\n}\r\n\r\nfunction $on () {\r\n return apply(getEmitter(), '$on', [...arguments])\r\n}\r\nfunction $off () {\r\n return apply(getEmitter(), '$off', [...arguments])\r\n}\r\nfunction $once () {\r\n return apply(getEmitter(), '$once', [...arguments])\r\n}\r\nfunction $emit () {\r\n return apply(getEmitter(), '$emit', [...arguments])\r\n}\r\n\r\nvar eventApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n $on: $on,\r\n $off: $off,\r\n $once: $once,\r\n $emit: $emit\r\n});\r\n\r\n/**\r\n * 框架内 try-catch\r\n */\r\n/**\r\n * 开发者 try-catch\r\n */\r\nfunction tryCatch (fn) {\r\n return function () {\r\n try {\r\n return fn.apply(fn, arguments)\r\n } catch (e) {\r\n // TODO\r\n console.error(e);\r\n }\r\n }\r\n}\r\n\r\nfunction getApiCallbacks (params) {\r\n const apiCallbacks = {};\r\n for (const name in params) {\r\n const param = params[name];\r\n if (isFn(param)) {\r\n apiCallbacks[name] = tryCatch(param);\r\n delete params[name];\r\n }\r\n }\r\n return apiCallbacks\r\n}\r\n\r\nlet cid;\r\nlet cidErrMsg;\r\nlet enabled;\r\n\r\nfunction normalizePushMessage (message) {\r\n try {\r\n return JSON.parse(message)\r\n } catch (e) {}\r\n return message\r\n}\r\n\r\nfunction invokePushCallback (\r\n args\r\n) {\r\n if (args.type === 'enabled') {\r\n enabled = true;\r\n } else if (args.type === 'clientId') {\r\n cid = args.cid;\r\n cidErrMsg = args.errMsg;\r\n invokeGetPushCidCallbacks(cid, args.errMsg);\r\n } else if (args.type === 'pushMsg') {\r\n const message = {\r\n type: 'receive',\r\n data: normalizePushMessage(args.message)\r\n };\r\n for (let i = 0; i < onPushMessageCallbacks.length; i++) {\r\n const callback = onPushMessageCallbacks[i];\r\n callback(message);\r\n // 该消息已被阻止\r\n if (message.stopped) {\r\n break\r\n }\r\n }\r\n } else if (args.type === 'click') {\r\n onPushMessageCallbacks.forEach((callback) => {\r\n callback({\r\n type: 'click',\r\n data: normalizePushMessage(args.message)\r\n });\r\n });\r\n }\r\n}\r\n\r\nconst getPushCidCallbacks = [];\r\n\r\nfunction invokeGetPushCidCallbacks (cid, errMsg) {\r\n getPushCidCallbacks.forEach((callback) => {\r\n callback(cid, errMsg);\r\n });\r\n getPushCidCallbacks.length = 0;\r\n}\r\n\r\nfunction getPushClientId (args) {\r\n if (!isPlainObject(args)) {\r\n args = {};\r\n }\r\n const {\r\n success,\r\n fail,\r\n complete\r\n } = getApiCallbacks(args);\r\n const hasSuccess = isFn(success);\r\n const hasFail = isFn(fail);\r\n const hasComplete = isFn(complete);\r\n Promise.resolve().then(() => {\r\n if (typeof enabled === 'undefined') {\r\n enabled = false;\r\n cid = '';\r\n cidErrMsg = 'unipush is not enabled';\r\n }\r\n getPushCidCallbacks.push((cid, errMsg) => {\r\n let res;\r\n if (cid) {\r\n res = {\r\n errMsg: 'getPushClientId:ok',\r\n cid\r\n };\r\n hasSuccess && success(res);\r\n } else {\r\n res = {\r\n errMsg: 'getPushClientId:fail' + (errMsg ? ' ' + errMsg : '')\r\n };\r\n hasFail && fail(res);\r\n }\r\n hasComplete && complete(res);\r\n });\r\n if (typeof cid !== 'undefined') {\r\n invokeGetPushCidCallbacks(cid, cidErrMsg);\r\n }\r\n });\r\n}\r\n\r\nconst onPushMessageCallbacks = [];\r\n// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现\r\nconst onPushMessage = (fn) => {\r\n if (onPushMessageCallbacks.indexOf(fn) === -1) {\r\n onPushMessageCallbacks.push(fn);\r\n }\r\n};\r\n\r\nconst offPushMessage = (fn) => {\r\n if (!fn) {\r\n onPushMessageCallbacks.length = 0;\r\n } else {\r\n const index = onPushMessageCallbacks.indexOf(fn);\r\n if (index > -1) {\r\n onPushMessageCallbacks.splice(index, 1);\r\n }\r\n }\r\n};\r\n\r\nvar api = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n getPushClientId: getPushClientId,\r\n onPushMessage: onPushMessage,\r\n offPushMessage: offPushMessage,\r\n invokePushCallback: invokePushCallback\r\n});\r\n\r\nconst MPPage = Page;\r\nconst MPComponent = Component;\r\n\r\nconst customizeRE = /:/g;\r\n\r\nconst customize = cached((str) => {\r\n return camelize(str.replace(customizeRE, '-'))\r\n});\r\n\r\nfunction initTriggerEvent (mpInstance) {\r\n const oldTriggerEvent = mpInstance.triggerEvent;\r\n const newTriggerEvent = function (event, ...args) {\r\n return oldTriggerEvent.apply(mpInstance, [customize(event), ...args])\r\n };\r\n try {\r\n // 京东小程序 triggerEvent 为只读\r\n mpInstance.triggerEvent = newTriggerEvent;\r\n } catch (error) {\r\n mpInstance._triggerEvent = newTriggerEvent;\r\n }\r\n}\r\n\r\nfunction initHook (name, options, isComponent) {\r\n const oldHook = options[name];\r\n if (!oldHook) {\r\n options[name] = function () {\r\n initTriggerEvent(this);\r\n };\r\n } else {\r\n options[name] = function (...args) {\r\n initTriggerEvent(this);\r\n return oldHook.apply(this, args)\r\n };\r\n }\r\n}\r\nif (!MPPage.__$wrappered) {\r\n MPPage.__$wrappered = true;\r\n Page = function (options = {}) {\r\n initHook('onLoad', options);\r\n return MPPage(options)\r\n };\r\n Page.after = MPPage.after;\r\n\r\n Component = function (options = {}) {\r\n initHook('created', options);\r\n return MPComponent(options)\r\n };\r\n}\r\n\r\nconst PAGE_EVENT_HOOKS = [\r\n 'onPullDownRefresh',\r\n 'onReachBottom',\r\n 'onAddToFavorites',\r\n 'onShareTimeline',\r\n 'onShareAppMessage',\r\n 'onPageScroll',\r\n 'onResize',\r\n 'onTabItemTap'\r\n];\r\n\r\nfunction initMocks (vm, mocks) {\r\n const mpInstance = vm.$mp[vm.mpType];\r\n mocks.forEach(mock => {\r\n if (hasOwn(mpInstance, mock)) {\r\n vm[mock] = mpInstance[mock];\r\n }\r\n });\r\n}\r\n\r\nfunction hasHook (hook, vueOptions) {\r\n if (!vueOptions) {\r\n return true\r\n }\r\n\r\n if (Vue.options && Array.isArray(Vue.options[hook])) {\r\n return true\r\n }\r\n\r\n vueOptions = vueOptions.default || vueOptions;\r\n\r\n if (isFn(vueOptions)) {\r\n if (isFn(vueOptions.extendOptions[hook])) {\r\n return true\r\n }\r\n if (vueOptions.super &&\r\n vueOptions.super.options &&\r\n Array.isArray(vueOptions.super.options[hook])) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n if (isFn(vueOptions[hook])) {\r\n return true\r\n }\r\n const mixins = vueOptions.mixins;\r\n if (Array.isArray(mixins)) {\r\n return !!mixins.find(mixin => hasHook(hook, mixin))\r\n }\r\n}\r\n\r\nfunction initHooks (mpOptions, hooks, vueOptions) {\r\n hooks.forEach(hook => {\r\n if (hasHook(hook, vueOptions)) {\r\n mpOptions[hook] = function (args) {\r\n return this.$vm && this.$vm.__call_hook(hook, args)\r\n };\r\n }\r\n });\r\n}\r\n\r\nfunction initVueComponent (Vue, vueOptions) {\r\n vueOptions = vueOptions.default || vueOptions;\r\n let VueComponent;\r\n if (isFn(vueOptions)) {\r\n VueComponent = vueOptions;\r\n } else {\r\n VueComponent = Vue.extend(vueOptions);\r\n }\r\n vueOptions = VueComponent.options;\r\n return [VueComponent, vueOptions]\r\n}\r\n\r\nfunction initSlots (vm, vueSlots) {\r\n if (Array.isArray(vueSlots) && vueSlots.length) {\r\n const $slots = Object.create(null);\r\n vueSlots.forEach(slotName => {\r\n $slots[slotName] = true;\r\n });\r\n vm.$scopedSlots = vm.$slots = $slots;\r\n }\r\n}\r\n\r\nfunction initVueIds (vueIds, mpInstance) {\r\n vueIds = (vueIds || '').split(',');\r\n const len = vueIds.length;\r\n\r\n if (len === 1) {\r\n mpInstance._$vueId = vueIds[0];\r\n } else if (len === 2) {\r\n mpInstance._$vueId = vueIds[0];\r\n mpInstance._$vuePid = vueIds[1];\r\n }\r\n}\r\n\r\nfunction initData (vueOptions, context) {\r\n let data = vueOptions.data || {};\r\n const methods = vueOptions.methods || {};\r\n\r\n if (typeof data === 'function') {\r\n try {\r\n data = data.call(context); // 支持 Vue.prototype 上挂的数据\r\n } catch (e) {\r\n if (process.env.VUE_APP_DEBUG) {\r\n console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);\r\n }\r\n }\r\n } else {\r\n try {\r\n // 对 data 格式化\r\n data = JSON.parse(JSON.stringify(data));\r\n } catch (e) {}\r\n }\r\n\r\n if (!isPlainObject(data)) {\r\n data = {};\r\n }\r\n\r\n Object.keys(methods).forEach(methodName => {\r\n if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {\r\n data[methodName] = methods[methodName];\r\n }\r\n });\r\n\r\n return data\r\n}\r\n\r\nconst PROP_TYPES = [String, Number, Boolean, Object, Array, null];\r\n\r\nfunction createObserver (name) {\r\n return function observer (newVal, oldVal) {\r\n if (this.$vm) {\r\n this.$vm[name] = newVal; // 为了触发其他非 render watcher\r\n }\r\n }\r\n}\r\n\r\nfunction initBehaviors (vueOptions, initBehavior) {\r\n const vueBehaviors = vueOptions.behaviors;\r\n const vueExtends = vueOptions.extends;\r\n const vueMixins = vueOptions.mixins;\r\n\r\n let vueProps = vueOptions.props;\r\n\r\n if (!vueProps) {\r\n vueOptions.props = vueProps = [];\r\n }\r\n\r\n const behaviors = [];\r\n if (Array.isArray(vueBehaviors)) {\r\n vueBehaviors.forEach(behavior => {\r\n behaviors.push(behavior.replace('uni://', `${\"wx\"}://`));\r\n if (behavior === 'uni://form-field') {\r\n if (Array.isArray(vueProps)) {\r\n vueProps.push('name');\r\n vueProps.push('value');\r\n } else {\r\n vueProps.name = {\r\n type: String,\r\n default: ''\r\n };\r\n vueProps.value = {\r\n type: [String, Number, Boolean, Array, Object, Date],\r\n default: ''\r\n };\r\n }\r\n }\r\n });\r\n }\r\n if (isPlainObject(vueExtends) && vueExtends.props) {\r\n behaviors.push(\r\n initBehavior({\r\n properties: initProperties(vueExtends.props, true)\r\n })\r\n );\r\n }\r\n if (Array.isArray(vueMixins)) {\r\n vueMixins.forEach(vueMixin => {\r\n if (isPlainObject(vueMixin) && vueMixin.props) {\r\n behaviors.push(\r\n initBehavior({\r\n properties: initProperties(vueMixin.props, true)\r\n })\r\n );\r\n }\r\n });\r\n }\r\n return behaviors\r\n}\r\n\r\nfunction parsePropType (key, type, defaultValue, file) {\r\n // [String]=>String\r\n if (Array.isArray(type) && type.length === 1) {\r\n return type[0]\r\n }\r\n return type\r\n}\r\n\r\nfunction initProperties (props, isBehavior = false, file = '', options) {\r\n const properties = {};\r\n if (!isBehavior) {\r\n properties.vueId = {\r\n type: String,\r\n value: ''\r\n };\r\n {\r\n if ( options.virtualHost) {\r\n properties.virtualHostStyle = {\r\n type: null,\r\n value: ''\r\n };\r\n properties.virtualHostClass = {\r\n type: null,\r\n value: ''\r\n };\r\n }\r\n }\r\n // scopedSlotsCompiler auto\r\n properties.scopedSlotsCompiler = {\r\n type: String,\r\n value: ''\r\n };\r\n properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots\r\n type: null,\r\n value: [],\r\n observer: function (newVal, oldVal) {\r\n const $slots = Object.create(null);\r\n newVal.forEach(slotName => {\r\n $slots[slotName] = true;\r\n });\r\n this.setData({\r\n $slots\r\n });\r\n }\r\n };\r\n }\r\n if (Array.isArray(props)) { // ['title']\r\n props.forEach(key => {\r\n properties[key] = {\r\n type: null,\r\n observer: createObserver(key)\r\n };\r\n });\r\n } else if (isPlainObject(props)) { // {title:{type:String,default:''},content:String}\r\n Object.keys(props).forEach(key => {\r\n const opts = props[key];\r\n if (isPlainObject(opts)) { // title:{type:String,default:''}\r\n let value = opts.default;\r\n if (isFn(value)) {\r\n value = value();\r\n }\r\n\r\n opts.type = parsePropType(key, opts.type);\r\n\r\n properties[key] = {\r\n type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,\r\n value,\r\n observer: createObserver(key)\r\n };\r\n } else { // content:String\r\n const type = parsePropType(key, opts);\r\n properties[key] = {\r\n type: PROP_TYPES.indexOf(type) !== -1 ? type : null,\r\n observer: createObserver(key)\r\n };\r\n }\r\n });\r\n }\r\n return properties\r\n}\r\n\r\nfunction wrapper$1 (event) {\r\n // TODO 又得兼容 mpvue 的 mp 对象\r\n try {\r\n event.mp = JSON.parse(JSON.stringify(event));\r\n } catch (e) {}\r\n\r\n event.stopPropagation = noop;\r\n event.preventDefault = noop;\r\n\r\n event.target = event.target || {};\r\n\r\n if (!hasOwn(event, 'detail')) {\r\n event.detail = {};\r\n }\r\n\r\n if (hasOwn(event, 'markerId')) {\r\n event.detail = typeof event.detail === 'object' ? event.detail : {};\r\n event.detail.markerId = event.markerId;\r\n }\r\n\r\n if (isPlainObject(event.detail)) {\r\n event.target = Object.assign({}, event.target, event.detail);\r\n }\r\n\r\n return event\r\n}\r\n\r\nfunction getExtraValue (vm, dataPathsArray) {\r\n let context = vm;\r\n dataPathsArray.forEach(dataPathArray => {\r\n const dataPath = dataPathArray[0];\r\n const value = dataPathArray[2];\r\n if (dataPath || typeof value !== 'undefined') { // ['','',index,'disable']\r\n const propPath = dataPathArray[1];\r\n const valuePath = dataPathArray[3];\r\n\r\n let vFor;\r\n if (Number.isInteger(dataPath)) {\r\n vFor = dataPath;\r\n } else if (!dataPath) {\r\n vFor = context;\r\n } else if (typeof dataPath === 'string' && dataPath) {\r\n if (dataPath.indexOf('#s#') === 0) {\r\n vFor = dataPath.substr(3);\r\n } else {\r\n vFor = vm.__get_value(dataPath, context);\r\n }\r\n }\r\n\r\n if (Number.isInteger(vFor)) {\r\n context = value;\r\n } else if (!propPath) {\r\n context = vFor[value];\r\n } else {\r\n if (Array.isArray(vFor)) {\r\n context = vFor.find(vForItem => {\r\n return vm.__get_value(propPath, vForItem) === value\r\n });\r\n } else if (isPlainObject(vFor)) {\r\n context = Object.keys(vFor).find(vForKey => {\r\n return vm.__get_value(propPath, vFor[vForKey]) === value\r\n });\r\n } else {\r\n console.error('v-for 暂不支持循环数据:', vFor);\r\n }\r\n }\r\n\r\n if (valuePath) {\r\n context = vm.__get_value(valuePath, context);\r\n }\r\n }\r\n });\r\n return context\r\n}\r\n\r\nfunction processEventExtra (vm, extra, event) {\r\n const extraObj = {};\r\n\r\n if (Array.isArray(extra) && extra.length) {\r\n /**\r\n *[\r\n * ['data.items', 'data.id', item.data.id],\r\n * ['metas', 'id', meta.id]\r\n *],\r\n *[\r\n * ['data.items', 'data.id', item.data.id],\r\n * ['metas', 'id', meta.id]\r\n *],\r\n *'test'\r\n */\r\n extra.forEach((dataPath, index) => {\r\n if (typeof dataPath === 'string') {\r\n if (!dataPath) { // model,prop.sync\r\n extraObj['$' + index] = vm;\r\n } else {\r\n if (dataPath === '$event') { // $event\r\n extraObj['$' + index] = event;\r\n } else if (dataPath === 'arguments') {\r\n if (event.detail && event.detail.__args__) {\r\n extraObj['$' + index] = event.detail.__args__;\r\n } else {\r\n extraObj['$' + index] = [event];\r\n }\r\n } else if (dataPath.indexOf('$event.') === 0) { // $event.target.value\r\n extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);\r\n } else {\r\n extraObj['$' + index] = vm.__get_value(dataPath);\r\n }\r\n }\r\n } else {\r\n extraObj['$' + index] = getExtraValue(vm, dataPath);\r\n }\r\n });\r\n }\r\n\r\n return extraObj\r\n}\r\n\r\nfunction getObjByArray (arr) {\r\n const obj = {};\r\n for (let i = 1; i < arr.length; i++) {\r\n const element = arr[i];\r\n obj[element[0]] = element[1];\r\n }\r\n return obj\r\n}\r\n\r\nfunction processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {\r\n let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象\r\n if (isCustom) { // 自定义事件\r\n isCustomMPEvent = event.currentTarget &&\r\n event.currentTarget.dataset &&\r\n event.currentTarget.dataset.comType === 'wx';\r\n if (!args.length) { // 无参数,直接传入 event 或 detail 数组\r\n if (isCustomMPEvent) {\r\n return [event]\r\n }\r\n return event.detail.__args__ || event.detail\r\n }\r\n }\r\n\r\n const extraObj = processEventExtra(vm, extra, event);\r\n\r\n const ret = [];\r\n args.forEach(arg => {\r\n if (arg === '$event') {\r\n if (methodName === '__set_model' && !isCustom) { // input v-model value\r\n ret.push(event.target.value);\r\n } else {\r\n if (isCustom && !isCustomMPEvent) {\r\n ret.push(event.detail.__args__[0]);\r\n } else { // wxcomponent 组件或内置组件\r\n ret.push(event);\r\n }\r\n }\r\n } else {\r\n if (Array.isArray(arg) && arg[0] === 'o') {\r\n ret.push(getObjByArray(arg));\r\n } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {\r\n ret.push(extraObj[arg]);\r\n } else {\r\n ret.push(arg);\r\n }\r\n }\r\n });\r\n\r\n return ret\r\n}\r\n\r\nconst ONCE = '~';\r\nconst CUSTOM = '^';\r\n\r\nfunction isMatchEventType (eventType, optType) {\r\n return (eventType === optType) ||\r\n (\r\n optType === 'regionchange' &&\r\n (\r\n eventType === 'begin' ||\r\n eventType === 'end'\r\n )\r\n )\r\n}\r\n\r\nfunction getContextVm (vm) {\r\n let $parent = vm.$parent;\r\n // 父组件是 scoped slots 或者其他自定义组件时继续查找\r\n while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {\r\n $parent = $parent.$parent;\r\n }\r\n return $parent && $parent.$parent\r\n}\r\n\r\nfunction handleEvent (event) {\r\n event = wrapper$1(event);\r\n\r\n // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]\r\n const dataset = (event.currentTarget || event.target).dataset;\r\n if (!dataset) {\r\n return console.warn('事件信息不存在')\r\n }\r\n const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰\r\n if (!eventOpts) {\r\n return console.warn('事件信息不存在')\r\n }\r\n\r\n // [['handle',[1,2,a]],['handle1',[1,2,a]]]\r\n const eventType = event.type;\r\n\r\n const ret = [];\r\n\r\n eventOpts.forEach(eventOpt => {\r\n let type = eventOpt[0];\r\n const eventsArray = eventOpt[1];\r\n\r\n const isCustom = type.charAt(0) === CUSTOM;\r\n type = isCustom ? type.slice(1) : type;\r\n const isOnce = type.charAt(0) === ONCE;\r\n type = isOnce ? type.slice(1) : type;\r\n\r\n if (eventsArray && isMatchEventType(eventType, type)) {\r\n eventsArray.forEach(eventArray => {\r\n const methodName = eventArray[0];\r\n if (methodName) {\r\n let handlerCtx = this.$vm;\r\n if (handlerCtx.$options.generic) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots\r\n handlerCtx = getContextVm(handlerCtx) || handlerCtx;\r\n }\r\n if (methodName === '$emit') {\r\n handlerCtx.$emit.apply(handlerCtx,\r\n processEventArgs(\r\n this.$vm,\r\n event,\r\n eventArray[1],\r\n eventArray[2],\r\n isCustom,\r\n methodName\r\n ));\r\n return\r\n }\r\n const handler = handlerCtx[methodName];\r\n if (!isFn(handler)) {\r\n const type = this.$vm.mpType === 'page' ? 'Page' : 'Component';\r\n const path = this.route || this.is;\r\n throw new Error(`${type} \"${path}\" does not have a method \"${methodName}\"`)\r\n }\r\n if (isOnce) {\r\n if (handler.once) {\r\n return\r\n }\r\n handler.once = true;\r\n }\r\n let params = processEventArgs(\r\n this.$vm,\r\n event,\r\n eventArray[1],\r\n eventArray[2],\r\n isCustom,\r\n methodName\r\n );\r\n params = Array.isArray(params) ? params : [];\r\n // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据\r\n if (/=\\s*\\S+\\.eventParams\\s*\\|\\|\\s*\\S+\\[['\"]event-params['\"]\\]/.test(handler.toString())) {\r\n // eslint-disable-next-line no-sparse-arrays\r\n params = params.concat([, , , , , , , , , , event]);\r\n }\r\n ret.push(handler.apply(handlerCtx, params));\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (\r\n eventType === 'input' &&\r\n ret.length === 1 &&\r\n typeof ret[0] !== 'undefined'\r\n ) {\r\n return ret[0]\r\n }\r\n}\r\n\r\nconst eventChannels = {};\r\n\r\nconst eventChannelStack = [];\r\n\r\nfunction getEventChannel (id) {\r\n if (id) {\r\n const eventChannel = eventChannels[id];\r\n delete eventChannels[id];\r\n return eventChannel\r\n }\r\n return eventChannelStack.shift()\r\n}\r\n\r\nconst hooks = [\r\n 'onShow',\r\n 'onHide',\r\n 'onError',\r\n 'onPageNotFound',\r\n 'onThemeChange',\r\n 'onUnhandledRejection'\r\n];\r\n\r\nfunction initEventChannel () {\r\n Vue.prototype.getOpenerEventChannel = function () {\r\n // 微信小程序使用自身getOpenerEventChannel\r\n {\r\n return this.$scope.getOpenerEventChannel()\r\n }\r\n };\r\n const callHook = Vue.prototype.__call_hook;\r\n Vue.prototype.__call_hook = function (hook, args) {\r\n if (hook === 'onLoad' && args && args.__id__) {\r\n this.__eventChannel__ = getEventChannel(args.__id__);\r\n delete args.__id__;\r\n }\r\n return callHook.call(this, hook, args)\r\n };\r\n}\r\n\r\nfunction initScopedSlotsParams () {\r\n const center = {};\r\n const parents = {};\r\n\r\n Vue.prototype.$hasScopedSlotsParams = function (vueId) {\r\n const has = center[vueId];\r\n if (!has) {\r\n parents[vueId] = this;\r\n this.$on('hook:destroyed', () => {\r\n delete parents[vueId];\r\n });\r\n }\r\n return has\r\n };\r\n\r\n Vue.prototype.$getScopedSlotsParams = function (vueId, name, key) {\r\n const data = center[vueId];\r\n if (data) {\r\n const object = data[name] || {};\r\n return key ? object[key] : object\r\n } else {\r\n parents[vueId] = this;\r\n this.$on('hook:destroyed', () => {\r\n delete parents[vueId];\r\n });\r\n }\r\n };\r\n\r\n Vue.prototype.$setScopedSlotsParams = function (name, value) {\r\n const vueIds = this.$options.propsData.vueId;\r\n if (vueIds) {\r\n const vueId = vueIds.split(',')[0];\r\n const object = center[vueId] = center[vueId] || {};\r\n object[name] = value;\r\n if (parents[vueId]) {\r\n parents[vueId].$forceUpdate();\r\n }\r\n }\r\n };\r\n\r\n Vue.mixin({\r\n destroyed () {\r\n const propsData = this.$options.propsData;\r\n const vueId = propsData && propsData.vueId;\r\n if (vueId) {\r\n delete center[vueId];\r\n delete parents[vueId];\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction parseBaseApp (vm, {\r\n mocks,\r\n initRefs\r\n}) {\r\n initEventChannel();\r\n {\r\n initScopedSlotsParams();\r\n }\r\n if (vm.$options.store) {\r\n Vue.prototype.$store = vm.$options.store;\r\n }\r\n uniIdMixin(Vue);\r\n\r\n Vue.prototype.mpHost = \"mp-weixin\";\r\n\r\n Vue.mixin({\r\n beforeCreate () {\r\n if (!this.$options.mpType) {\r\n return\r\n }\r\n\r\n this.mpType = this.$options.mpType;\r\n\r\n this.$mp = {\r\n data: {},\r\n [this.mpType]: this.$options.mpInstance\r\n };\r\n\r\n this.$scope = this.$options.mpInstance;\r\n\r\n delete this.$options.mpType;\r\n delete this.$options.mpInstance;\r\n if (this.mpType === 'page' && typeof getApp === 'function') { // hack vue-i18n\r\n const app = getApp();\r\n if (app.$vm && app.$vm.$i18n) {\r\n this._i18n = app.$vm.$i18n;\r\n }\r\n }\r\n if (this.mpType !== 'app') {\r\n initRefs(this);\r\n initMocks(this, mocks);\r\n }\r\n }\r\n });\r\n\r\n const appOptions = {\r\n onLaunch (args) {\r\n if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前\r\n return\r\n }\r\n {\r\n if (wx.canIUse && !wx.canIUse('nextTick')) { // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断\r\n console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');\r\n }\r\n }\r\n\r\n this.$vm = vm;\r\n\r\n this.$vm.$mp = {\r\n app: this\r\n };\r\n\r\n this.$vm.$scope = this;\r\n // vm 上也挂载 globalData\r\n this.$vm.globalData = this.globalData;\r\n\r\n this.$vm._isMounted = true;\r\n this.$vm.__call_hook('mounted', args);\r\n\r\n this.$vm.__call_hook('onLaunch', args);\r\n }\r\n };\r\n\r\n // 兼容旧版本 globalData\r\n appOptions.globalData = vm.$options.globalData || {};\r\n // 将 methods 中的方法挂在 getApp() 中\r\n const methods = vm.$options.methods;\r\n if (methods) {\r\n Object.keys(methods).forEach(name => {\r\n appOptions[name] = methods[name];\r\n });\r\n }\r\n\r\n initAppLocale(Vue, vm, normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN);\r\n\r\n initHooks(appOptions, hooks);\r\n\r\n return appOptions\r\n}\r\n\r\nconst mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];\r\n\r\nfunction findVmByVueId (vm, vuePid) {\r\n const $children = vm.$children;\r\n // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)\r\n for (let i = $children.length - 1; i >= 0; i--) {\r\n const childVm = $children[i];\r\n if (childVm.$scope._$vueId === vuePid) {\r\n return childVm\r\n }\r\n }\r\n // 反向递归查找\r\n let parentVm;\r\n for (let i = $children.length - 1; i >= 0; i--) {\r\n parentVm = findVmByVueId($children[i], vuePid);\r\n if (parentVm) {\r\n return parentVm\r\n }\r\n }\r\n}\r\n\r\nfunction initBehavior (options) {\r\n return Behavior(options)\r\n}\r\n\r\nfunction isPage () {\r\n return !!this.route\r\n}\r\n\r\nfunction initRelation (detail) {\r\n this.triggerEvent('__l', detail);\r\n}\r\n\r\nfunction selectAllComponents (mpInstance, selector, $refs) {\r\n const components = mpInstance.selectAllComponents(selector);\r\n components.forEach(component => {\r\n const ref = component.dataset.ref;\r\n $refs[ref] = component.$vm || component;\r\n {\r\n if (component.dataset.vueGeneric === 'scoped') {\r\n component.selectAllComponents('.scoped-ref').forEach(scopedComponent => {\r\n selectAllComponents(scopedComponent, selector, $refs);\r\n });\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction initRefs (vm) {\r\n const mpInstance = vm.$scope;\r\n Object.defineProperty(vm, '$refs', {\r\n get () {\r\n const $refs = {};\r\n selectAllComponents(mpInstance, '.vue-ref', $refs);\r\n // TODO 暂不考虑 for 中的 scoped\r\n const forComponents = mpInstance.selectAllComponents('.vue-ref-in-for');\r\n forComponents.forEach(component => {\r\n const ref = component.dataset.ref;\r\n if (!$refs[ref]) {\r\n $refs[ref] = [];\r\n }\r\n $refs[ref].push(component.$vm || component);\r\n });\r\n return $refs\r\n }\r\n });\r\n}\r\n\r\nfunction handleLink (event) {\r\n const {\r\n vuePid,\r\n vueOptions\r\n } = event.detail || event.value; // detail 是微信,value 是百度(dipatch)\r\n\r\n let parentVm;\r\n\r\n if (vuePid) {\r\n parentVm = findVmByVueId(this.$vm, vuePid);\r\n }\r\n\r\n if (!parentVm) {\r\n parentVm = this.$vm;\r\n }\r\n\r\n vueOptions.parent = parentVm;\r\n}\r\n\r\nfunction parseApp (vm) {\r\n return parseBaseApp(vm, {\r\n mocks,\r\n initRefs\r\n })\r\n}\r\n\r\nfunction createApp (vm) {\r\n App(parseApp(vm));\r\n return vm\r\n}\r\n\r\nconst encodeReserveRE = /[!'()*]/g;\r\nconst encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16);\r\nconst commaRE = /%2C/g;\r\n\r\n// fixed encodeURIComponent which is more conformant to RFC3986:\r\n// - escapes [!'()*]\r\n// - preserve commas\r\nconst encode = str => encodeURIComponent(str)\r\n .replace(encodeReserveRE, encodeReserveReplacer)\r\n .replace(commaRE, ',');\r\n\r\nfunction stringifyQuery (obj, encodeStr = encode) {\r\n const res = obj ? Object.keys(obj).map(key => {\r\n const val = obj[key];\r\n\r\n if (val === undefined) {\r\n return ''\r\n }\r\n\r\n if (val === null) {\r\n return encodeStr(key)\r\n }\r\n\r\n if (Array.isArray(val)) {\r\n const result = [];\r\n val.forEach(val2 => {\r\n if (val2 === undefined) {\r\n return\r\n }\r\n if (val2 === null) {\r\n result.push(encodeStr(key));\r\n } else {\r\n result.push(encodeStr(key) + '=' + encodeStr(val2));\r\n }\r\n });\r\n return result.join('&')\r\n }\r\n\r\n return encodeStr(key) + '=' + encodeStr(val)\r\n }).filter(x => x.length > 0).join('&') : null;\r\n return res ? `?${res}` : ''\r\n}\r\n\r\nfunction parseBaseComponent (vueComponentOptions, {\r\n isPage,\r\n initRelation\r\n} = {}) {\r\n const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);\r\n\r\n const options = {\r\n multipleSlots: true,\r\n addGlobalClass: true,\r\n ...(vueOptions.options || {})\r\n };\r\n\r\n {\r\n // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项\r\n if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {\r\n Object.assign(options, vueOptions['mp-weixin'].options);\r\n }\r\n }\r\n\r\n const componentOptions = {\r\n options,\r\n data: initData(vueOptions, Vue.prototype),\r\n behaviors: initBehaviors(vueOptions, initBehavior),\r\n properties: initProperties(vueOptions.props, false, vueOptions.__file, options),\r\n lifetimes: {\r\n attached () {\r\n const properties = this.properties;\r\n\r\n const options = {\r\n mpType: isPage.call(this) ? 'page' : 'component',\r\n mpInstance: this,\r\n propsData: properties\r\n };\r\n\r\n initVueIds(properties.vueId, this);\r\n\r\n // 处理父子关系\r\n initRelation.call(this, {\r\n vuePid: this._$vuePid,\r\n vueOptions: options\r\n });\r\n\r\n // 初始化 vue 实例\r\n this.$vm = new VueComponent(options);\r\n\r\n // 处理$slots,$scopedSlots(暂不支持动态变化$slots)\r\n initSlots(this.$vm, properties.vueSlots);\r\n\r\n // 触发首次 setData\r\n this.$vm.$mount();\r\n },\r\n ready () {\r\n // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发\r\n // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800\r\n if (this.$vm) {\r\n this.$vm._isMounted = true;\r\n this.$vm.__call_hook('mounted');\r\n this.$vm.__call_hook('onReady');\r\n }\r\n },\r\n detached () {\r\n this.$vm && this.$vm.$destroy();\r\n }\r\n },\r\n pageLifetimes: {\r\n show (args) {\r\n this.$vm && this.$vm.__call_hook('onPageShow', args);\r\n },\r\n hide () {\r\n this.$vm && this.$vm.__call_hook('onPageHide');\r\n },\r\n resize (size) {\r\n this.$vm && this.$vm.__call_hook('onPageResize', size);\r\n }\r\n },\r\n methods: {\r\n __l: handleLink,\r\n __e: handleEvent\r\n }\r\n };\r\n // externalClasses\r\n if (vueOptions.externalClasses) {\r\n componentOptions.externalClasses = vueOptions.externalClasses;\r\n }\r\n\r\n if (Array.isArray(vueOptions.wxsCallMethods)) {\r\n vueOptions.wxsCallMethods.forEach(callMethod => {\r\n componentOptions.methods[callMethod] = function (args) {\r\n return this.$vm[callMethod](args)\r\n };\r\n });\r\n }\r\n\r\n if (isPage) {\r\n return componentOptions\r\n }\r\n return [componentOptions, VueComponent]\r\n}\r\n\r\nfunction parseComponent (vueComponentOptions) {\r\n return parseBaseComponent(vueComponentOptions, {\r\n isPage,\r\n initRelation\r\n })\r\n}\r\n\r\nconst hooks$1 = [\r\n 'onShow',\r\n 'onHide',\r\n 'onUnload'\r\n];\r\n\r\nhooks$1.push(...PAGE_EVENT_HOOKS);\r\n\r\nfunction parseBasePage (vuePageOptions, {\r\n isPage,\r\n initRelation\r\n}) {\r\n const pageOptions = parseComponent(vuePageOptions);\r\n\r\n initHooks(pageOptions.methods, hooks$1, vuePageOptions);\r\n\r\n pageOptions.methods.onLoad = function (query) {\r\n this.options = query;\r\n const copyQuery = Object.assign({}, query);\r\n delete copyQuery.__id__;\r\n this.$page = {\r\n fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)\r\n };\r\n this.$vm.$mp.query = query; // 兼容 mpvue\r\n this.$vm.__call_hook('onLoad', query);\r\n };\r\n\r\n return pageOptions\r\n}\r\n\r\nfunction parsePage (vuePageOptions) {\r\n return parseBasePage(vuePageOptions, {\r\n isPage,\r\n initRelation\r\n })\r\n}\r\n\r\nfunction createPage (vuePageOptions) {\r\n {\r\n return Component(parsePage(vuePageOptions))\r\n }\r\n}\r\n\r\nfunction createComponent (vueOptions) {\r\n {\r\n return Component(parseComponent(vueOptions))\r\n }\r\n}\r\n\r\nfunction createSubpackageApp (vm) {\r\n const appOptions = parseApp(vm);\r\n const app = getApp({\r\n allowDefault: true\r\n });\r\n vm.$scope = app;\r\n const globalData = app.globalData;\r\n if (globalData) {\r\n Object.keys(appOptions.globalData).forEach(name => {\r\n if (!hasOwn(globalData, name)) {\r\n globalData[name] = appOptions.globalData[name];\r\n }\r\n });\r\n }\r\n Object.keys(appOptions).forEach(name => {\r\n if (!hasOwn(app, name)) {\r\n app[name] = appOptions[name];\r\n }\r\n });\r\n if (isFn(appOptions.onShow) && wx.onAppShow) {\r\n wx.onAppShow((...args) => {\r\n vm.__call_hook('onShow', args);\r\n });\r\n }\r\n if (isFn(appOptions.onHide) && wx.onAppHide) {\r\n wx.onAppHide((...args) => {\r\n vm.__call_hook('onHide', args);\r\n });\r\n }\r\n if (isFn(appOptions.onLaunch)) {\r\n const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\r\n vm.__call_hook('onLaunch', args);\r\n }\r\n return vm\r\n}\r\n\r\nfunction createPlugin (vm) {\r\n const appOptions = parseApp(vm);\r\n if (isFn(appOptions.onShow) && wx.onAppShow) {\r\n wx.onAppShow((...args) => {\r\n vm.__call_hook('onShow', args);\r\n });\r\n }\r\n if (isFn(appOptions.onHide) && wx.onAppHide) {\r\n wx.onAppHide((...args) => {\r\n vm.__call_hook('onHide', args);\r\n });\r\n }\r\n if (isFn(appOptions.onLaunch)) {\r\n const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\r\n vm.__call_hook('onLaunch', args);\r\n }\r\n return vm\r\n}\r\n\r\ntodos.forEach(todoApi => {\r\n protocols[todoApi] = false;\r\n});\r\n\r\ncanIUses.forEach(canIUseApi => {\r\n const apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name\r\n : canIUseApi;\r\n if (!wx.canIUse(apiName)) {\r\n protocols[canIUseApi] = false;\r\n }\r\n});\r\n\r\nlet uni = {};\r\n\r\nif (typeof Proxy !== 'undefined' && \"mp-weixin\" !== 'app-plus') {\r\n uni = new Proxy({}, {\r\n get (target, name) {\r\n if (hasOwn(target, name)) {\r\n return target[name]\r\n }\r\n if (baseApi[name]) {\r\n return baseApi[name]\r\n }\r\n if (api[name]) {\r\n return promisify(name, api[name])\r\n }\r\n {\r\n if (extraApi[name]) {\r\n return promisify(name, extraApi[name])\r\n }\r\n if (todoApis[name]) {\r\n return promisify(name, todoApis[name])\r\n }\r\n }\r\n if (eventApi[name]) {\r\n return eventApi[name]\r\n }\r\n if (!hasOwn(wx, name) && !hasOwn(protocols, name)) {\r\n return\r\n }\r\n return promisify(name, wrapper(name, wx[name]))\r\n },\r\n set (target, name, value) {\r\n target[name] = value;\r\n return true\r\n }\r\n });\r\n} else {\r\n Object.keys(baseApi).forEach(name => {\r\n uni[name] = baseApi[name];\r\n });\r\n\r\n {\r\n Object.keys(todoApis).forEach(name => {\r\n uni[name] = promisify(name, todoApis[name]);\r\n });\r\n Object.keys(extraApi).forEach(name => {\r\n uni[name] = promisify(name, todoApis[name]);\r\n });\r\n }\r\n\r\n Object.keys(eventApi).forEach(name => {\r\n uni[name] = eventApi[name];\r\n });\r\n\r\n Object.keys(api).forEach(name => {\r\n uni[name] = promisify(name, api[name]);\r\n });\r\n\r\n Object.keys(wx).forEach(name => {\r\n if (hasOwn(wx, name) || hasOwn(protocols, name)) {\r\n uni[name] = promisify(name, wrapper(name, wx[name]));\r\n }\r\n });\r\n}\r\n\r\nwx.createApp = createApp;\r\nwx.createPage = createPage;\r\nwx.createComponent = createComponent;\r\nwx.createSubpackageApp = createSubpackageApp;\r\nwx.createPlugin = createPlugin;\r\n\r\nvar uni$1 = uni;\r\n\r\nexport default uni$1;\r\nexport { createApp, createComponent, createPage, createPlugin, createSubpackageApp };\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAMAAAAKE/YAAAAAn1BMVEUAAABis0pYpzlis0piskpis0ljs0pYrkFis0tis0tisklis0lgskhgskhisklesERbsURis0pgskdis0pesEZis0lis0pgskhis0phsklis0pfsUdis0pis0piskpis0pis0pis0pis0pis0pis0phs0lhsklhskhjs0pis0pis0pis0pis0pis0pisklis0pis0pjs0phsklhs0ljs0skK+OrAAAANHRSTlMAgAb4piXICvPmZok0KkgTD7wgtxxxky/RU9YX4Zhr68xir6qyWT863J12e47AXsSh70ROX0/pQwAAIcpJREFUeNrMmAeT4jgQhWUJJxxwzgkb25jgAO///7az4fZuZmdhwoa7ryhDUSC9br1uWSa/FJHSdns8rcphUDtP6foy9bIwdmKDkv8hlDTbbpemZ26SpAQAw0KAGSFgibDiQt8g/x9E53AMXGlvsz5DnoBNACa8Qdql3EUk/z2idd2kSqIASEtMDEya5H0h7MqZnVDs5Vxi/8oGmO1a/6lwUT0WEuR6hLkoiuzMvbb8hr7yzYZXr65nFy9SH5ya/0q3xkVcgpk8kParrLFuljW0S5hlyt+4Wdjw4t1DbTZG+Bs2cj7544jqGUAKgMllZt2MorvpkGMhwivkVMkuzhKTs64ShnudCv2G/Em0k3mVMMMKpREJtXSuqxiQr+7OlbDAltc3WFIpR2OWSVtOkHAj+YPp9pWpkGQGREd/VnxRhBzIb3I7zAxJUJjZbleei0hmkCJpCYMlLNDX27qZdWuH4B7UVLbkD0D9HUsACfk4T2/oXY6/YdPZ9NyrH4vGJo5j3povG0N0nDDzSmFiiKphl+S2TsmM2skAsyWkFiW/Gb9imDlf3c2sOE3+doAUrNwLz7f1Ma12O9s8n+3Var6a9q6svEOoWpp+OF3k1DYTpuu1x1MSu4UUsD2TlN+c7fWEGWZqhDhcxHAj6GprdrUdmN2xbi1nI/6TOypuHL7tlZUZVIdLbF0zU4Ygy0IkcA4RLzZTZEgJx5PfhahZ6U2ySqg23jPMkpMqzqWVVJlGn9qqdcvEPKqidkoZZMbARp8S1bw3k+Pvadz0Ggy3Ha0htNnle4AhOjbadnUee+2D9bCuzLHmW4U77zFjhyJp7oZLf4ez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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAMAAAAKE/YAAAAAulBMVEUAAADnAADnFxLmHxfnHhflFBLmHhfmHhfmEwLmGhTlGA7mHhbmGxPmHhbmHRbmGhLlGRPmHhbmHhfmHhfmGxTnHhfmHhfmHRblHBXmHRbmHRbmHhfmHRbmHRbmHBbnHhfmHRXmHhfnHhbmHBTmHhfmHRXmHhfmHhfmHBXmGxbmHRfmHRbmHhfmHRbmHRbmHRbmHRbmHBXmHRfmHRbmHhfmHhfmHhfmHhbmHRbmHhfmHRXmHhfmHhfmHhdrZsU4AAAAPXRSTlMABBb6fwyw9ggxEZUpu2gbH5DO1iTy34MtbnO2pE5Y51O/qzTKPOvEQTici7JjXHegSodF48fumXzRYNuomxwsYQAAISNJREFUeNrMmOeW4kgMhVUuHMAZZwNOOIBJBoyJev/X2rZ3eneYHjpNz+x+h+MfHE5xJV1JUPClCIIwX20WY64o5qW4Ky/cUVciRmVYAf6HEJhdyuXxGDuNZdmIyGOL0T7SM7UP417UH8D/B0HdnM4eb4/o2sPcRtogYoMtFL/D4o69PQv/PYK2HYi7eoGIRw4biryVh3Z6WHIth9QOc4vHZ/in18jT/lOvsNNTymMdVFRuE2mMFH8yNxly55uBOZ94ujxs8Bl6XmT/VcJdx+jV+EQ+tK5jL9M6y7LSLPC83Td8JZpJnUBWy7zK+Ed35fThj8NOY0R6bEtec4oGQJ6M4h0PObZc8Y7wuPP2aqtdVZKa/2b2dP1nG9PV5YnVmTTdZSwQbetUCUXMx7RzLv/chd/Zub45J5YhIMydw7e3655L4A/R3zWpFVJE4+QKQGa7NEcMu/lQtqIL+5zKynLJFakR8mgZlkUtpDYdbpXLOiMguJtzFxS1uDn8AYi7pHWbwnCcERjsyxy/QZtYFv2Jy7AD5glTe3oMBqyqRorOHRqKRnJY2vlo22V3WoWIdGShqP3ubJN+wrcpKrb+ANi9WCPSzhHnsb+XzGx9OibcUpbjeDS+xXEsj5bcTdxEc03ab/RZKI7kmm63a1EiwHipdaY2b+1+c7aVpsupLAFoPYNix7kKNG3bGw3l6hTMTXXAEviGwDKqmV2csXxONjNGmyhyiGlYH4yDowG7H9FFiFbdM+F3wUrasZM8ByJVnWKL2vqczZzUvnmvNxWZ+5wtn6aspB95GvIU6bhPYCr/XakTC78DMhkWFqVUnhGSLXO7dYlxyqTVOK4uEnlfPyi3uArMbNGLr9haOhIgu3XhHwUCX4465vUa8bYXSJRkbfcNdxPtMoqd7EPjlpntiiRQZ+Mr18qOIyJsD4jY3Bzy5WmuEfUw9wQwuTAfIea61tft45x84rBZZSwkIcqx5ZARwcstRLqCL5XNlJ3xShUkIbl6eD5vpGAkv77StNcOVGJuom2Mrq0TF9SSR+R7py/cka6BFPG8JaxTpzZf1yvNO4hTAV6ltwaALQM/R8iqYsVcOtnNbkD2Z8SzrEy/yhoej2jbIguuw48R8xOjXHUN3iLi1/2YI/AQ83heM36I7frPCCs2RpFPlS+xyKDEJ9IpMMFa1uPw6F4K3XxPfXjKYwavIZVxZOoW0oZWKjAlYm1s4NeRhvhEogIzHE17Ijfdx6X5rj7YUUSDvBXZWM7cEUXkE4aoCaI+uTC/rLmtHj0RYVsOrXy51W7Fd0uXDUj7hJcQpdvwfI+8OUqGpRrZzqIcKizZ8Ilv9GbwS0RjRLQnIJSLK6WcuzrceY7IPgwUB14imFkw4pf67e3OEjZFoElpknOcC9vSUcJ6DZ+H+A2PmLpAgqKpG6U/+tEZIj2m1qOenA/38K67A+mWmOsD6sFwDebGGg+v7Oc1bygiygNYXxGbtRkYE/gBHxF1eADrvaY4IgDP24Ssja12oDzyO8IuQ0yVAD6HsLPQpkeB3ReIVDTLpfaii3hEHD9MiwqvsCgFyPTBc7JlXV3wqY03hogU0XKET2nu8dSod4Iq8xY2l3nh/3iMuRideTwbCYFPEOC4svx/y9KTpWBnIxYaceghasRPqCZ6O4c2RDUQmzoLzjN4CRFie2+uPiXaRcR68L1fjL10RcQDEJ+36HFGPqw5orHN+8RM2mPcXvyg2/rciwoxjCZtI+WJyXYqaQPy05Wl2IhoqHdhpJ5ZIFomgNdYjn76qGq/sK7UJ+4IETm1Og7ggWjz/kJvkfjK6RRcZpMoehLuLMSKuzmBS37Q3IuvFjZ2wtzto7HO3BBvBMiqjcmHD8HswmG8IWzBI620eEceOv8fwZLPHd1ozhC4h7DMzC/TxDPJvbN6ud/373uVPXJMify+zRrF8LyCDzCIOT7YEPfaekuS/Tc/P1uMqsuzg7RZFsx839cuqzkrqSy0uMoice5uw7Sx+tKVu0QradqmotfOkA/sRsGLo6onmDZy8cIsLm/Yf77gFp0cVmCE9cWRb0Y7CdOzlTc7PjRi/dIXutB0vaf9+y0/VeTJjEO33SRAxNx9d565az8QBdWwD7Qyz+tXB66wLsqZ0Npjs7Abyw75Jr6ceqfVJbpETsmdLdqOobBUWnuwM8dXhWeDwM/wDsyR+3u9HxANBt7HwgrjmDAc5nUlFWsAWJoA7BZewngjR22T3ZNbZcOjl70IUNv71TBHtNKeRABM5xi8qsSXtaPZqS4Q8SbAeyAycieXjCkip8mdN6qh5I1fVor1Rx4DoHkcRXrWJ+bjfjWD4xCxOa1UAFVZvHqr5N0YF1qk63tHiCSIy3IPTjuf1cKHllV8puKLsRAMFRag7/DtVaL0ZkaEvpNTq5JaA3rHPjyi7UYCmgQC7FNEuoc3YYZsjD0IKOJVqpzukOnyYNSrF2tFZIBknBw2yZ689099EvLnsk9A9RXp8cdKXbVD6RSAh4hX9c1jS9yMOOIuEfO502XXHKe0oKkxu2tWJ5kCtDd7XE+CD6DtcrS9Nujqwj4sys2b5yIZTmHczqG3UjKhyCWq0C6V9VoedCeoblTEiifDv0wPigCMmKN1YuCDqDveKlYCsJfbQzXMYR807vjAMgaPNHjjwBqxykBHRD07/1sX5czezfGRBCTw+HTBwCdQRcNKpgT6yeWRbMmQFiNG1mHbIDbaq+YY13oZtOnGVCq+84O6v/uJsGPBVDBc9uGTzGXjIA5goOsDuOc5ikhWD9uBEcEOEV/98bsPsSlY1UbMzbH3yJXOjEAU0zAi8GmEdd7dvq4PGtyx3naOBHB0bcmmtSYM8VWDsJxC+S0pEenqkjyYYe6GAARVqqvwS5gjansCZPIUvmfWzNjLUAVg5e06ELEiGY9oDOARa9HBimwpYjI1Hmja+wPQNl6yJfCLCL6FiQqSvL2LJbSGePr7Ms7czBs6ISIi78ADBn/xZqbriTJBFK4G2WRRREEWxRU17rvGnPu/rS8Q4jh2Z2Z+JN/55aM2vHRXn6ouvJZ8qlXz4LDsPQnVm+tkLa7f8zZtnJ68Jkn26tH+UyD9uLrzVg/mOFRrKbKk/lW1tkvSsEiFy9AkoV4jRtP+iy3Rt6g2wWFMVbV7j72iPSuXzZVBt/d6gEsOAJOJd/St7ydFWrGto/jBliYRm7tzhb5J0gCH7Tt1OddsH7lH2V/0Ox+PMJFMFyeDTQBtKpzoAey6xd6AlrF4FWeeF51IT0JG3yb2gtY79UNcTw+BXis31Nq1LjcM2FQGhP1Xq4XWhWYyYPb6TJwTFOoFkzWjbxTbydo7df/uIUpg0f3zdXhZQx4zVxYXTucY8jRfiLQ9aZNAxoXRVP1O5rInlMe1ZdfvYfpogHYz6uPIZlr/aAsiWj7AZj0ZiBxXaOJ2m4bp9VIyf2uE+E2a9pWns3Kht1601NBl8cAW9LoHmizP9EleCQp3oX5RSFJv5+9g5neTJ9Gr0B/adnWVDEb6UAZi9vxjC7CLomMZ7Uig7pZRsosV+gFJE6gKM0W7n226bce5dSkGWs+ljgtgT5GMW1N8luwppExGEv2I6qm8pqrdFL6JkC5m3y4M5PyUDA/ASKkNZKwvgShZuk1iiVenH9JY06Y0s3XilTgrI5NnyhFIpacWJhBSBciskShDR6/EHL9DP6a17NdovRZN9bHuXLQBrWxgSY8aAVmtrgHu65x4DRNdd7INox+TbiNhysIiXpttZd2S61KKhv0bFGRs6AJoVl8wji3a1Et9iX5Q1knu0Fg0L2O1tjgioDOAxzL20gJmSiPDYLwQDFvOqTa5bulH5cCrspe9aBEs0/E9ZQjAfMwsMa6keBk6m57Aka5VCpEw+lHpfQRUPyqCxwmmfVvukK3B//VzTQUuFAGedRMMWq9orGUW/bBmrZZFF4c41TzpiuOGpv5jAcLeoLXZAHDDncBEY4XFCOjH9VLsRYF5vXUDf3SVmrlRPDgaRvo4gzwVbcOuQWPtUKUfV7PVMnJz5bRXZ61Go6NPgKtyj44DKjQG/HbMeOuIqxQjpP9Bc2yoJqqbR/Xbbe7SWoPc/jS8FNqYbTTNDdeCUAtpKPtV+h9Uy7Q6zfeCp1kFcm+tD0/A+l5qn3x9CmCsGvxEHyWKP/7KJIn9sYL4hqk+k2ULrDpp314kS/dl9D8Li9Db0A5Iq33eO6YmWVpW8EiA9EejTRQSin01wiyua5jOvdbUJLLbvOnaSpwHRgJoSjlD/VudTVrYbE3idB5SgIT+Dr3VkDzfCx869EjFgyr0IRXFynag5uMrlUqQ4q2yeCFOydDUQoWWAMro0YO4Xs9ueDV7/DMudhBK5ZmRGWJorP8B2sSnUoVfk/U2zQKqacD83g6mvQbNEpSenUt3hEwtFAOx+qkLxxyfoXWeoBtExDLUSb2TkvoVdP99rk/wofHnKsOuhy8e0RXoU6kqrTXZMzzi5BrkIqK/hAcLgVhnJlBhHPQMMQmgDTyqQWbxtYsUXsDn+JvSbaUGXe7tJ7I61Gs0Bt0zT/OO4sszqVAbaEulFHqQ8gZs9DzhA7b0DH1G99+hhwBswRstdRrKhxfWvaI1LLqg4dJgJrB2u7xJmzSDSJVHg/GBiLFipTNkS/YbNMtOSk6adEqNhOFRQrMboA74MI0urydtoBsa0MtjXJavkrI7y9sJ/99K3tS2Kx+aA/NKqSndyc5AuqexV8Rz8wj0jUfoKc5Ego0ohqYzoDoO79RvQ7OdF5yQV7mbNExTMY7RyRgRp75EI3lPX8e0EmXAQiIKAOfDigAkzV/QCYyCr18p5T1An/Mvkif3UI2ED+qrXtxuVPiWbvcXITmQbUvlz7MTKdBaLjfThSQiJfSBtFfmlhJmOMqxhyW0cvIZ0VfuUeoJmgmmz65RLvOGhk56L/TGdNk07L3Jp8O5gS9lEEWAFnzuySXKsoo5KeCU0GQi+hq6a7wrfAwP5QqV3iw+vczKRC97ErHdpFal2B+ZTsh7+koxkRhi5bDu40uMCFdWBs1lfg8PxddqQmhxTJOKBa15Swi6Rr2YGTmtUTsy4w51ZaznWz6HtynBiv5Vjk6C5LKCK45pMfQcE9ryTv26XkY60R6nwYw6h97CUGygl1i8OypsJA87f3S8Cqeg/ZQRT/pX7tFX3zX6DbqCG9UGgsJtGLaJDC3NptSLd3vJ6ssYqjXOGt50ydeUP0NDIOsRmhKMP2Z6gkHpl8KN6JTQqc74w4ilWv5Oomo88hyqyDjT2FdR409ntRfWbPnUQeNpAR6hzSdlwJJ+gw7gfAzplC2AmS4IjwSfOtXYgGdRq7i5xPaDnUIukLLmLjtV+Y6o5dIQdgld+vQTNKdKyfwAXUHlY4iiHVge+lrMOOiHAJLbZNb5clPJQp2Yl027lAAe9c5zT7K5JRlWqIPN36F55qfw6JZDBtiSsgFMnYceof15hRnNLS5lLKq3Tu5XUepQDIyIuQdP6vN1vUNLVP4FWmIccwndWbkarHLIFpOhh6zwI/OpYDpB+rxEhy4zbn/F0vEUEu1ut5AWQIWWwMjid+xqRRGiO7QFKGLouu9NOeYSGoD5OYT5KJK+ALoK7f7cK4r2fD+xdrxZRJHv9WkCzGkHTAQJ3+nRBcs7dIAjiaG7GfCiPDMX0FIlHP4a8gq8Pm6anJ8VoTDG5A7t0JI/Q8X1+GYvKcBim0OrOfTia+hpY1AeTlbDdX6Hi9p9Do8EOKg58xP0k+GwEd7YryVPMSWpUXTc1jj/DXoAuJRAa9JEg0oXWQgdTclEycciDWfdA7zAIoFWGYCQ/gJNbe2hwRagwXJKTyFaoPtXaBlvdD5E+Z+h0n+8nOl2okoUhXeBCCKICiLggPM8j3HY7/9ad4mtWdHytp3ule+HKzFRP8sjVcU5h+PHTiY97yLL5OFK6JMrASdqkuyEJiTbfPKU+T9pbTAuI5dschK6ZBuA6HOUfMnfGOkqsv2tgo8kPErqi/BIcSqscELy1nXhlTekvrAk1fikfnwhXWSxT9JOpNwuAOR7LCP5QWd3ThtXVi+lF2QBZ71zRLakt1Amm69i+rQj2dsHuCOWFZIrPLHukRmpdMQL/XI7mVvICLB83rLZ5ZEXJ9GxZMIL6epFeqFumliR28tNJzjjkWMdkUo2x0+9cFaVbTzj+Tn5SC/ZG9VuMRVsL0Fsng+3OwS01UkAMHRyF+v1F4e8i3S4La4SX8zJ4qvJpWBAhgIZ2tffUrn7Uwl8IpTnf1aut4qG6qvJpUimkG2pI4zJE7rz0kkyjQ9TaHCEH6bJtnwa91U9gq2ydZGOxXBL3bRlC6YhK/hhTvqLBdOqp8/gkiM4PfbMgauuNMnSdC+sg4ufxdBjR5wlS1Nlu5sMMSTHqPf0sxOQHUeyCagaykY38KNYqqsJ+/nultXUGeRdMsTStg+BeSCXZw+PTDRRVDP4UZZqBUoLj6yz+XaVZkYn6zBztf0SF//CGo+MLJw5w48ScSzb2E7nlpUuYk2yC7EgZ+iQ2TCHR8IZ5izgR6lyJj+FkMrmlpiSah6Y+ywjS1aWz3brMdalBd5GCPwtxiUeWwEeWQwXxf0CY3KjQNQC2ohIP3gOJNOG0dXwNpbe/Fvt/GknRFHgETvvcnFEmixqQDUqH7QBuWv38UTTxDzbxrvM2MRf0ijuEchOQOZ7pXWgFckJgFQp8h1nw561VZ4jqYYxy3hJlneuieLCQ85FTg0vyap1SE71Ds/ejmlH6V2TLg2Wdl04PsNsTZaQ67Iv3pWOuf5LaVHcODjn8Uj4MVO5MQOSMwCZEvUQmR6rs6yk5+WSvnBeR2DmSj2RDqhrXx6tfDLjQblj4BUZjoQpSV+0BiPSFkde0xemTy4QlvxipigZygym2Sl+RyaR/mCcvbHEV2os4g0KDDF4jkdxUjrkGNlboqhCulie6iVZcVtjDnM6eVPa5Sepb0kbsT5EoYtHgma+RDbgUk/fNmV0vJ3O+tPwAE5aiNUmeEt6SKYSYlZSg29JD5p9w5BULB5TdTJ2FPI0xoU1yZzokKOGZPIbZVDm8i3p6q/NqdA5AL4lnY2jy4wmyQPsyYNo3Leqms7rutpXZAn9AgLdzb8h7dwS1x7p4BdaJvMH0s5WV5DOSCY5zddZQIG8LTptcmOsyVMweY4D0TFRKEWQo6Su7Ensb43vDcYPwf6u9IojWE1IEnKeq/eHIqirfVwJSb1r7Kh/RCGeCOcY6K75aoTvtMkcO9eDd/V70spJ9zCuSYtU9NLOyHQqmzmueCpZxoL0hxUhqZs2ke6EL6XTV2yXNjZJXLjMyaR36Rse5OTKVTgTaTnQRFUXOPq5unZfWJFbY80XhVcfUwzUWHsZy79I6R72jK4hLZP+JAMp5vnYRiSZFAaTIM2zIfqMm8Z99Ek9MDfkOCrLStwMw96VfyeNABiwA3ywD5l0nLqhQMrKHQltIvnjYjZXGSteya9Gn3GuknOMSDdwDTyRqmOwib3X0ndEzLbwGeI7Me2kVwHmOUmou06RXIiQjewaNzSXPGCpkstqTVa2qaGgVsXvpbFitUHd/I60OG9XcIqSMJyWu75bqqHDbFH7Wqfevqi3Bi0h+4LA6ZSWb0jnSZ8FfEd6xomJfU1aIGuOJrZhdVx1/3DkWqD8shS5EqCm+srvpZN6Lu870qYbrzGUfZztiUh16jmkCkUOH4q+fTOpNs2VIauLE8ZIzf6PtDO/n3Ou4hvSxmICGOkAz+wbVpG6p2z48BQzkiFGKv2gYz6fZBSFGbxKf/lC2pzaZBJtxpbsfWekj6cpEH3gGa+Tn4dcYUpyKmlkyKg8zcupu2pk3PW3eXTV2JJIG7WWnlxGCYBRoe7z8OdfxLbrD9C2NdlAh2FqcW3BiR1Jy4io0D0F99gVnSnEcIYL3YqBbKlv4itrskfyECWPMSvkzNqxYv6htBP7Q5i2JRvog1I8j2zRVcmRpDmngoZPHsvlm3R/s68uNSTMP4RZ1h+62sWB5G6UQUL7RE6TLNghiRDtug/LJIR0M5+YD1fm4EQT4xwkZGd1xicPE3L7+KZEmlTbhk3Vv7VBaXWfqr7GFaO6hpZuPrT1tVjMaUhQsqReBxLrXU4ko/zWzlZUK5GCurTDymqaB6p9ZFRK9gZdXvugWuo8HCcBvSFZ2lj3sC5aGG55/Boe945mb0e6FhKGPrl6W1qM1QEw3JqQsKhHJGeYUNp/s2rFW0/0ddUNks9BG4Ydkp+dT23bQa20qUPOaDc3Pi/jsjXwJqJcnTnwKh4kdJueTxbFUPctSPB6WQMIDvY81/i1Qi0zOlYX95dfpjUxK/mhgAxF+aLyvrMaKzDtLiQY28GYVAei5WcgQ7TUVCojzq7eDyrX4Yya4svr51oCU1+tCfwzRIF6DZrdgIxwZPXIiug2lZdNX+TW8GonqxxsnWTKeXz7UVbD8VAqaPhHmFX2ajAXU1xoOPiC18+nydIQU/P1MotkDvVKe3uMCslTCjwQZoWoldS0iX+CU2E8gLY4IiGX1iCWGm4spvWezj1g4CWevmPPQdR3c1ZzAClRy8AwpmvhHzDcLg4WTHuKKw2Op+4CN+oVEeSbsWkI/A/hf83dCY+iSBQA4FeUCHLfl4ogKsrlgQce7///rbWxt7O7GY/u6ZnZLzExppQneWiqinpFEUVIHKrr0+OdLFK6KlgpzioCP4lfm1RXwfrIZ1Ih4lmDd5ZpAQiHIdHLhx9zRJx5RMSUK/0BDz+07nsgbGZ0wMBP0br745qFRX8KLV4K7X9OubNFNIxu19oFHokoosySob6fWZd73y+Z1O3tHc6awJcRz7SNGki4kz5eOcQc4iiBm+VBHc08AN5wLHiErCh2fSC9uXyRdgn8mDpuePD6SC/Wl2P2j3YugJBnwr8Ob2eGocKbOtVixBAg3/amHjwiTArZEK4NJ3I4v5fWwC+7FvDKCGcuA1/A6LmqTAn0ZIX8+5w1wEreLaF7LiI3hfV2vkg1eGjNJI4hsDukg6q8v+B6mlYE1BWHW5+FTxIaG7kIgA9iD/6FRALcCOk64pC7CMyknnMhPEYCRfNz0hvZ+Wyh5+TukfWVBzCVKTpLDT5B6oyQG/cAFmP3fkmjrGnrfCzgEELxfPkmowIfVhDaNjrSeAn3kGmxEYCvZcTZakrgJWQ93iPXvTZXxYsHd+mZZba9q+DEhmcVXsDqdg2uOaaptSvhLr6clARIUnBbem6s5xFLrkORDjwANjAiAnctZSFGxBzmyvxMa3hFaI9WEskiGXMrDeE+ptOtGADJPVKObpa1Ru4GDEl+oZQz3nJJVYqAhfsUmWkLXfFaZ2jjEl5SOeI8AqbryE5kxTU8oC77S7Ut33d2KDWzTblg4D8EthRFT7FXhpuwAJpb+MzDw8eWSBF3KquHe3rh4TXzVVBbhMjNjllaxxoe4U9GlhAAwpzksznrmPZoMj50gtPVsnPoKsvO1o7Lculbb63mlzR8HEY1YYRdLBsWGSgjNBl4Va+Y2DqBzYyjbpshj5B5VjTtsgZ27lvDriwfkMO2FrZN5SlkaTDX3gJlk05fT+AxJWYiRXR1jzSVgzMPXqctHdohiYNID15awhNMpBdiqL3v39KbVtHSvVqWIQPAwxsrXHXzuQBPLGVVOA6IoIGiOGiv4VP0PlUgMfo2ZtauIfAMmyyLyaFMWPKftoQICyWbFIHHwzO8LjMuqyYAoCgGciV8DnMYmyciOXvEsTZ+rYgRv1D0fnelu0EZrq+iMujoq6IQy4SHFwiHFT9dtNlYl33EDnxWuUnf5swdREylvK/Ci3hGSuqo9K9O0TyxGB5eZKUNC3xbaOe06CO6BD6LJKPRSbkVjzwvSnMBv1htDnshtErf1fFL5XFIXHUHLtFSRJyF80lJ4Bfig7SXDG5LvZW1u5xlPHyFynaks8gzF6RIc288UOElLAufZnUPTGi0Q6+kqd3z9sDD15DTwMQ+y2/waqcp5hxekeTwWeE5JKAqtAHgx25/RF0CX9Y7XXDiQeXHiLNqEevqS0VRKrLIF/Aya9WXPGvDwnwIVj+fINch8DMEXz+vgQ3EAulKCtKKvFCgyJbtDF7FKztFO9i3QcP5Md+grcDPIgM7IDyoW6RxIvVl6Vn7DYf4eoGbZLeyqpF9CE8A4NtUprM1/DzVGWkAUt8YyNsOE01y9eEfTLO1EY0Xg7YOaS0VdltXGZgVnaSc6cF3qHeKByAIPXdjsZXkTzoPQiLScNCORMBzmpieJH1v6/BmbnJHeTtm4FtEliWpAbndlun5gRqYD7vhgT0dis+vJfVgKkxwHJgJabv4Ms3HzpKH78G2c2arW8ekt58Np4JrbKy7UW1ceIr0xN2SCVeBH2USAEkmOAutbg3fyTUOaduvazCTu5JvlfE4upMCAg9PCGEhh5bSH9ni4kTamI9OyCxV+FZGh2cIaASkwg669d7VhGlm6hJ8QXI46z0r3+Jgc5YFADIsVrndA5XA92LbD9SmUyBhI+rKOuUGtebH/cBj4ROEpIllRZsyDTcqIv82/cghbvs8/CJ8E7ELQpiO3UWkKAbTxC9kPdLgFcQKxXiseElTKEk3nmpA3rtY2+2QhV9FkiC0vbcc3FB8w503U2YtGsfDyXoS8CkzJ3ktCKexMub0S6Z97OhAmmMFv1TZjQK5ZkFzj9xt+9RtVllSmMtGVwyiRGMEFj6wAqMlUSAWhryJLGahByPTI5HRH7azfmG3977E6BcjASLdKQywdebQ2+Q4d3GjuerVymbQLfpXl+zqcn1SFMVgo9QSM1WyyRYx1hc8wFAAYJR0n2nwm5zeN/JMAIRpOaZtmuw7pnPu6/6wpwmMpkmLK0nTGEH11koushWHLZMVvVsdo6253Vrwu/QK5xbBMbD49jd3f7T75ch2LuMRReS2x106vop3k/eWsjpGtBH3sTvngVi+gXiBJiPw25DracIWlzYSANGEZpV09cXGofgjW3OGdCt3IosAL/mpjZx4qAAY+K2YaIItGgEfqQAEiFpl6Qh/YD+umkhiCIBwGjgz+va2jGfhD0hEZ8ftCwLQoWZWJgz7vvluFSz1d01Q1T3hNrJA6tzV8YY6Pvwh7LSSBICosdvzeSxype4xBD68D5NpSl6IMZN0sU1xaop/fl9pneIHs+OJURLH2apeDcQ4NZ3RnnvLGaPUNxyOKScH3h+P+IqtN/LodrLj3irD0fXBcfaZm3B4JesGyvLF79vbuFr/HwL+m5BUnfFkMqGIKLY7Pdl7m7ZBc6JzHK5XDZv8nzZJ/8Cz/GJY+Xkn3+12pb6TM/my6fhRogo8fKO/AIDQ+L8tq+pwAAAAAElFTkSuQmCC\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode, /* vue-cli only */\n components, // fixed by xxxxxx auto components\n renderjs // fixed by xxxxxx renderjs\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // fixed by xxxxxx auto components\n if (components) {\n if (!options.components) {\n options.components = {}\n }\n var hasOwn = Object.prototype.hasOwnProperty\n for (var name in components) {\n if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {\n options.components[name] = components[name]\n }\n }\n }\n // fixed by xxxxxx renderjs\n if (renderjs) {\n (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {\n this[renderjs.__module] = this\n });\n (options.mixins || (options.mixins = [])).push(renderjs)\n }\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import store from \"../store.js\"\r\nimport request from './request.js'\r\nimport alert from './alert.js'\r\n\r\nconst login = {\r\n\tcheckAuth(callback) {\r\n\t\tconsole.log(1);\r\n\t\tif (this.getLocalUserInfo()) {\r\n\t\t\tconsole.log(2);\r\n\t\t\tcallback(true)\r\n\t\t} else {\r\n\t\t\tconsole.log(3);\r\n\t\t\tcallback(false);\r\n\t\t\tconsole.log('未获取到用户本地数据,去获取授权设置', 22222222)\r\n\t\t\tthis.askLogin()\r\n\t\t}\r\n\t},\r\n\r\n\tgetLocalUserInfo() {\r\n\t\tconst user = uni.getStorageSync(\"token\");\r\n\t\tconsole.log('从本地存储中获取用户数据', user, 11111111);\r\n\t\tif (!user) return false;\r\n\t\tif (!user.token) return false;\r\n\t\tstore.commit('saveToken', user);\r\n\t\treturn true\r\n\t},\r\n\r\n\tnoCase() {\r\n\t\talert.showError('案件不存在');\r\n\t\tsetTimeout(() => {\r\n\t\t\tuni.switchTab({\r\n\t\t\t\turl: '/pages/case/caseList/caseList'\r\n\t\t\t});\r\n\t\t}, 1500);\r\n\t},\r\n\r\n\taskLogin() {\r\n\t\tuni.showModal({\r\n\t\t\ttitle: '尚未登录',\r\n\t\t\tcontent: '前往授权登录页面吗?',\r\n\t\t\tsuccess(res) {\r\n\t\t\t\tconsole.log(res)\r\n\t\t\t\tif (res.confirm) {\r\n\t\t\t\t\tuni.navigateTo({\r\n\t\t\t\t\t\turl: '/pages/login/login'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tgetUserProfile(data) {\r\n\t\tconst that = this;\r\n\t\tconsole.log(data);\r\n\t\t// return\r\n\t\twx.getUserProfile({\r\n\t\t\tlang: 'zh_CN',\r\n\t\t\tdesc: '用于完善会员资料',\r\n\t\t success (res) {\r\n\t\t\t\tthat.login(data,res)\r\n\t\t },\r\n\t\t\tfail (e) {\r\n\t\t\t\tconsole.error('获取用户身份信息失败了', e);\r\n\t\t\t\talert.showError('获取失败')\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tlogin(data) {\r\n\t\tconst that = this;\r\n\t\tuni.showLoading({\r\n\t\t\ttitle: '登录中',\r\n\t\t});\r\n\t\twx.login({\r\n\t\t\tsuccess: res => {\r\n\t\t\t\tconsole.log(res, '----------- login获取的 -----------')\r\n\t\t\t\tconst code = res.code;\r\n\t\t\t\tconsole.log(res.code);\r\n\t\t\t\trequest.post('/api/Accounts/SignIn', {\r\n\t\t\t\t\twechatJsCode:code,\r\n\t\t\t\t\tusername:data.name,\r\n\t\t\t\t\tpassword:data.password\r\n\t\t\t\t}, function(data, res) {\r\n\t\t\t\t\tuni.hideLoading();\r\n\t\t\t\t\tconsole.log(data, res ,'----------后端传回来的----------')\r\n\t\t\t\t\tif(res.status==500){\r\n\t\t\t\t\t\treturn alert.showError(\"用户名或密码错误\")\r\n\t\t\t\t\t}\r\n\t\t\t\t\tuni.setStorageSync(\"token\", res)\r\n\t\t\t\t\tstore.commit('saveToken', res)\r\n\t\t\t\t\tconsole.log(store.state.token);\r\n\t\t\t\t\trequest.get(\"/api/Accounts/Profile\", {}, (data, res) => {\r\n\t\t\t\t\t\tconsole.log(res);\r\n\t\t\t\t\t\tuni.setStorageSync(\"user\", res)\r\n\t\t\t\t\t\tuni.reLaunch({\r\n\t\t\t\t\t\t\turl: \"/pages/tabbar/index\",\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t\t\t\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tfail: err => {\r\n\t\t\t\tconsole.error(err, 8877897)\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tlogout() {\r\n\t\tstore.state.user = {\r\n\t\t\tuser: null,\r\n\t\t\tpath: '/pages/login/login'\r\n\t\t}\r\n\t\tstore.commit('saveToken', null)\r\n\t\t// uni.setStorageSync(\"token\",null);\r\n\t\tuni.clearStorage();\r\n\t\tuni.reLaunch({\r\n\t\t\turl: '/pages/login/login'\r\n\t\t})\r\n\t\t\t\r\n\t\tconsole.log('退出登录。。。', this.user)\r\n\t}\r\n\r\n\r\n}\r\n\r\nexport default login\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nVue.use(Vuex)\r\n\r\nconst store = new Vuex.Store({\r\n\tstate: {\r\n\t\ttoken: null,\r\n\t\tpath: '/pages/index/index',\r\n\t\tpeople: {\r\n\t\t\tid: null,\r\n\t\t\tname: null,\r\n\t\t\ttag: null\r\n\t\t},\r\n\t\ttaskType:'',\r\n\t},\r\n\tmutations: {\r\n\t\tsavePath (state, path) {\r\n\t\t\tstate.path = path;\r\n\t\t},\r\n\t\tsaveToken (state, token) {\r\n\t\t\tstate.token = token\r\n\t\t},\r\n\t\tsavePeople (state, people){\r\n\t\t\tstate.people = people\r\n\t\t},\r\n\t\tsaveTaskType (state, taskType){\r\n\t\t\tstate.taskType = taskType\r\n\t\t},\r\n\t},\r\n\tactions: {},\r\n})\r\nexport default store\r\n","import{initVueI18n as e}from\"@dcloudio/uni-i18n\";import t from\"@/pages.json\";\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}function s(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error(\"Dynamic requires are not currently supported by @rollup/plugin-commonjs\")}(null==t&&n.path)}},n.exports),n.exports}var o=s((function(e,t){var n;e.exports=(n=n||function(e,t){var n=Object.create||function(){function e(){}return function(t){var n;return e.prototype=t,n=new e,e.prototype=null,n}}(),s={},o=s.lib={},r=o.Base={extend:function(e){var t=n(this);return e&&t.mixIn(e),t.hasOwnProperty(\"init\")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty(\"toString\")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},i=o.WordArray=r.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||c).stringify(this)},concat:function(e){var t=this.words,n=e.words,s=this.sigBytes,o=e.sigBytes;if(this.clamp(),s%4)for(var r=0;r>>2]>>>24-r%4*8&255;t[s+r>>>2]|=i<<24-(s+r)%4*8}else for(r=0;r>>2]=n[r>>>2];return this.sigBytes+=o,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n,s=[],o=function(t){t=t;var n=987654321,s=4294967295;return function(){var o=((n=36969*(65535&n)+(n>>16)&s)<<16)+(t=18e3*(65535&t)+(t>>16)&s)&s;return o/=4294967296,(o+=.5)*(e.random()>.5?1:-1)}},r=0;r>>2]>>>24-o%4*8&255;s.push((r>>>4).toString(16)),s.push((15&r).toString(16))}return s.join(\"\")},parse:function(e){for(var t=e.length,n=[],s=0;s>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new i.init(n,t/2)}},u=a.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,s=[],o=0;o>>2]>>>24-o%4*8&255;s.push(String.fromCharCode(r))}return s.join(\"\")},parse:function(e){for(var t=e.length,n=[],s=0;s>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new i.init(n,t)}},l=a.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error(\"Malformed UTF-8 data\")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},h=o.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new i.init,this._nDataBytes=0},_append:function(e){\"string\"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,s=n.words,o=n.sigBytes,r=this.blockSize,a=o/(4*r),c=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*r,u=e.min(4*c,o);if(c){for(var l=0;l>>24)|4278255360&(o<<24|o>>>8)}var r=this._hash.words,i=e[t+0],c=e[t+1],f=e[t+2],g=e[t+3],p=e[t+4],m=e[t+5],y=e[t+6],_=e[t+7],w=e[t+8],k=e[t+9],T=e[t+10],S=e[t+11],v=e[t+12],A=e[t+13],P=e[t+14],I=e[t+15],b=r[0],O=r[1],C=r[2],E=r[3];b=u(b,O,C,E,i,7,a[0]),E=u(E,b,O,C,c,12,a[1]),C=u(C,E,b,O,f,17,a[2]),O=u(O,C,E,b,g,22,a[3]),b=u(b,O,C,E,p,7,a[4]),E=u(E,b,O,C,m,12,a[5]),C=u(C,E,b,O,y,17,a[6]),O=u(O,C,E,b,_,22,a[7]),b=u(b,O,C,E,w,7,a[8]),E=u(E,b,O,C,k,12,a[9]),C=u(C,E,b,O,T,17,a[10]),O=u(O,C,E,b,S,22,a[11]),b=u(b,O,C,E,v,7,a[12]),E=u(E,b,O,C,A,12,a[13]),C=u(C,E,b,O,P,17,a[14]),b=l(b,O=u(O,C,E,b,I,22,a[15]),C,E,c,5,a[16]),E=l(E,b,O,C,y,9,a[17]),C=l(C,E,b,O,S,14,a[18]),O=l(O,C,E,b,i,20,a[19]),b=l(b,O,C,E,m,5,a[20]),E=l(E,b,O,C,T,9,a[21]),C=l(C,E,b,O,I,14,a[22]),O=l(O,C,E,b,p,20,a[23]),b=l(b,O,C,E,k,5,a[24]),E=l(E,b,O,C,P,9,a[25]),C=l(C,E,b,O,g,14,a[26]),O=l(O,C,E,b,w,20,a[27]),b=l(b,O,C,E,A,5,a[28]),E=l(E,b,O,C,f,9,a[29]),C=l(C,E,b,O,_,14,a[30]),b=h(b,O=l(O,C,E,b,v,20,a[31]),C,E,m,4,a[32]),E=h(E,b,O,C,w,11,a[33]),C=h(C,E,b,O,S,16,a[34]),O=h(O,C,E,b,P,23,a[35]),b=h(b,O,C,E,c,4,a[36]),E=h(E,b,O,C,p,11,a[37]),C=h(C,E,b,O,_,16,a[38]),O=h(O,C,E,b,T,23,a[39]),b=h(b,O,C,E,A,4,a[40]),E=h(E,b,O,C,i,11,a[41]),C=h(C,E,b,O,g,16,a[42]),O=h(O,C,E,b,y,23,a[43]),b=h(b,O,C,E,k,4,a[44]),E=h(E,b,O,C,v,11,a[45]),C=h(C,E,b,O,I,16,a[46]),b=d(b,O=h(O,C,E,b,f,23,a[47]),C,E,i,6,a[48]),E=d(E,b,O,C,_,10,a[49]),C=d(C,E,b,O,P,15,a[50]),O=d(O,C,E,b,m,21,a[51]),b=d(b,O,C,E,v,6,a[52]),E=d(E,b,O,C,g,10,a[53]),C=d(C,E,b,O,T,15,a[54]),O=d(O,C,E,b,c,21,a[55]),b=d(b,O,C,E,w,6,a[56]),E=d(E,b,O,C,I,10,a[57]),C=d(C,E,b,O,y,15,a[58]),O=d(O,C,E,b,A,21,a[59]),b=d(b,O,C,E,p,6,a[60]),E=d(E,b,O,C,S,10,a[61]),C=d(C,E,b,O,f,15,a[62]),O=d(O,C,E,b,k,21,a[63]),r[0]=r[0]+b|0,r[1]=r[1]+O|0,r[2]=r[2]+C|0,r[3]=r[3]+E|0},_doFinalize:function(){var t=this._data,n=t.words,s=8*this._nDataBytes,o=8*t.sigBytes;n[o>>>5]|=128<<24-o%32;var r=e.floor(s/4294967296),i=s;n[15+(o+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),n[14+(o+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t.sigBytes=4*(n.length+1),this._process();for(var a=this._hash,c=a.words,u=0;u<4;u++){var l=c[u];c[u]=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8)}return a},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}});function u(e,t,n,s,o,r,i){var a=e+(t&n|~t&s)+o+i;return(a<>>32-r)+t}function l(e,t,n,s,o,r,i){var a=e+(t&s|n&~s)+o+i;return(a<>>32-r)+t}function h(e,t,n,s,o,r,i){var a=e+(t^n^s)+o+i;return(a<>>32-r)+t}function d(e,t,n,s,o,r,i){var a=e+(n^(t|~s))+o+i;return(a<>>32-r)+t}t.MD5=r._createHelper(c),t.HmacMD5=r._createHmacHelper(c)}(Math),n.MD5)})),s((function(e,t){var n,s,r;e.exports=(s=(n=o).lib.Base,r=n.enc.Utf8,void(n.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,\"string\"==typeof t&&(t=r.parse(t));var n=e.blockSize,s=4*n;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),i=this._iKey=t.clone(),a=o.words,c=i.words,u=0;u{T.indexOf(n)>-1&&function(e,t,n){let s=S[e][t];s||(s=S[e][t]=[]),-1===s.indexOf(n)&&\"function\"==typeof n&&s.push(n)}(e,n,t[n])}))}function A(e,t){S[e]||(S[e]={}),l(t)?Object.keys(t).forEach((n=>{T.indexOf(n)>-1&&function(e,t,n){const s=S[e][t];if(!s)return;const o=s.indexOf(n);o>-1&&s.splice(o,1)}(e,n,t[n])})):delete S[e]}function P(e,t){return e&&0!==e.length?e.reduce(((e,n)=>e.then((()=>n(t)))),Promise.resolve()):Promise.resolve()}function I(e,t){return S[e]&&S[e][t]||[]}const b=k(\"_globalUniCloudListener\"),O=\"response\",C=\"needLogin\",E=\"refreshToken\",R=\"clientdb\",U=\"cloudfunction\",x=\"cloudobject\";function L(e){return b[e]||(b[e]=[]),b[e]}function D(e,t){const n=L(e);n.includes(t)||n.push(t)}function q(e,t){const n=L(e),s=n.indexOf(t);-1!==s&&n.splice(s,1)}function N(e,t){const n=L(e);for(let e=0;es?Promise.resolve():P(I(t,\"invoke\"),n))).then((()=>e.call(this,n))).then((e=>s?Promise.resolve(e):P(I(t,\"success\"),e).then((()=>P(I(t,\"complete\"),e))).then((()=>(o&&N(O,{type:U,content:e}),Promise.resolve(e))))),(e=>s?Promise.reject(e):P(I(t,\"fail\"),e).then((()=>P(I(t,\"complete\"),e))).then((()=>(N(O,{type:U,content:e}),Promise.reject(e))))));if(!(n.success||n.fail||n.complete))return a;a.then((e=>{n.success&&n.success(e),n.complete&&n.complete(e),o&&N(O,{type:U,content:e})}),(e=>{n.fail&&n.fail(e),n.complete&&n.complete(e),o&&N(O,{type:U,content:e})}))}:function(t){if(!((t=t||{}).success||t.fail||t.complete))return e.call(this,t);e.call(this,t).then((e=>{t.success&&t.success(e),t.complete&&t.complete(e)}),(e=>{t.fail&&t.fail(e),t.complete&&t.complete(e)}))}}class M extends Error{constructor(e){super(e.message),this.errMsg=e.message||\"\",this.errCode=this.code=e.code||\"SYSTEM_ERROR\",this.requestId=e.requestId}}function $(){let e,t;try{if(uni.getLaunchOptionsSync){if(uni.getLaunchOptionsSync.toString().indexOf(\"not yet implemented\")>-1)return;const{scene:n,channel:s}=uni.getLaunchOptionsSync();e=s,t=n}}catch(e){}return{channel:e,scene:t}}let j;function K(){const e=uni.getLocale&&uni.getLocale()||\"en\";if(j)return{...j,locale:e,LOCALE:e};const t=uni.getSystemInfoSync(),{deviceId:n,osName:s,uniPlatform:o,appId:r}=t,i=[\"pixelRatio\",\"brand\",\"model\",\"system\",\"language\",\"version\",\"platform\",\"host\",\"SDKVersion\",\"swanNativeVersion\",\"app\",\"AppPlatform\",\"fontSizeSetting\"];for(let e=0;e{t(Object.assign(e,{complete(e){e||(e={}),d&&\"web\"===g&&e.errMsg&&0===e.errMsg.indexOf(\"request:fail\")&&console.warn(\"发布H5,需要在uniCloud后台操作,绑定安全域名,否则会因为跨域问题而无法访问。教程参考:https://uniapp.dcloud.io/uniCloud/quickstart?id=useinh5\");const t=e.data&&e.data.header&&e.data.header[\"x-serverless-request-id\"]||e.header&&e.header[\"request-id\"];if(!e.statusCode||e.statusCode>=400)return s(new M({code:\"SYS_ERR\",message:e.errMsg||\"request:fail\",requestId:t}));const o=e.data;if(o.error)return s(new M({code:o.error.code,message:o.error.message,requestId:t}));o.result=o.data,o.requestId=t,delete o.data,n(o)}}))}))}};var H={request:e=>uni.request(e),uploadFile:e=>uni.uploadFile(e),setStorageSync:(e,t)=>uni.setStorageSync(e,t),getStorageSync:e=>uni.getStorageSync(e),removeStorageSync:e=>uni.removeStorageSync(e),clearStorageSync:()=>uni.clearStorageSync()},W={\"uniCloud.init.paramRequired\":\"{param} required\",\"uniCloud.uploadFile.fileError\":\"filePath should be instance of File\"};const{t:z}=e({\"zh-Hans\":{\"uniCloud.init.paramRequired\":\"缺少参数:{param}\",\"uniCloud.uploadFile.fileError\":\"filePath应为File对象\"},\"zh-Hant\":{\"uniCloud.init.paramRequired\":\"缺少参数:{param}\",\"uniCloud.uploadFile.fileError\":\"filePath应为File对象\"},en:W,fr:{\"uniCloud.init.paramRequired\":\"{param} required\",\"uniCloud.uploadFile.fileError\":\"filePath should be instance of File\"},es:{\"uniCloud.init.paramRequired\":\"{param} required\",\"uniCloud.uploadFile.fileError\":\"filePath should be instance of File\"},ja:W},\"zh-Hans\");var V=class{constructor(e){[\"spaceId\",\"clientSecret\"].forEach((t=>{if(!Object.prototype.hasOwnProperty.call(e,t))throw new Error(z(\"uniCloud.init.paramRequired\",{param:t}))})),this.config=Object.assign({},{endpoint:\"https://api.bspapp.com\"},e),this.config.provider=\"aliyun\",this.config.requestUrl=this.config.endpoint+\"/client\",this.config.envType=this.config.envType||\"public\",this.config.accessTokenKey=\"access_token_\"+this.config.spaceId,this.adapter=H,this._getAccessTokenPromise=null,this._getAccessTokenPromiseStatus=null}get hasAccessToken(){return!!this.accessToken}setAccessToken(e){this.accessToken=e}requestWrapped(e){return B.wrappedRequest(e,this.adapter.request)}requestAuth(e){return this.requestWrapped(e)}request(e,t){return Promise.resolve().then((()=>this.hasAccessToken?t?this.requestWrapped(e):this.requestWrapped(e).catch((t=>new Promise(((e,n)=>{!t||\"GATEWAY_INVALID_TOKEN\"!==t.code&&\"InvalidParameter.InvalidToken\"!==t.code?n(t):e()})).then((()=>this.getAccessToken())).then((()=>{const t=this.rebuildRequest(e);return this.request(t,!0)})))):this.getAccessToken().then((()=>{const t=this.rebuildRequest(e);return this.request(t,!0)}))))}rebuildRequest(e){const t=Object.assign({},e);return t.data.token=this.accessToken,t.header[\"x-basement-token\"]=this.accessToken,t.header[\"x-serverless-sign\"]=B.sign(t.data,this.config.clientSecret),t}setupRequest(e,t){const n=Object.assign({},e,{spaceId:this.config.spaceId,timestamp:Date.now()}),s={\"Content-Type\":\"application/json\"};return\"auth\"!==t&&(n.token=this.accessToken,s[\"x-basement-token\"]=this.accessToken),s[\"x-serverless-sign\"]=B.sign(n,this.config.clientSecret),{url:this.config.requestUrl,method:\"POST\",data:n,dataType:\"json\",header:s}}getAccessToken(){if(\"pending\"===this._getAccessTokenPromiseStatus)return this._getAccessTokenPromise;this._getAccessTokenPromiseStatus=\"pending\";return this._getAccessTokenPromise=this.requestAuth(this.setupRequest({method:\"serverless.auth.user.anonymousAuthorize\",params:\"{}\"},\"auth\")).then((e=>new Promise(((t,n)=>{e.result&&e.result.accessToken?(this.setAccessToken(e.result.accessToken),this._getAccessTokenPromiseStatus=\"fulfilled\",t(this.accessToken)):(this._getAccessTokenPromiseStatus=\"rejected\",n(new M({code:\"AUTH_FAILED\",message:\"获取accessToken失败\"})))}))),(e=>(this._getAccessTokenPromiseStatus=\"rejected\",Promise.reject(e)))),this._getAccessTokenPromise}authorize(){this.getAccessToken()}callFunction(e){const t={method:\"serverless.function.runtime.invoke\",params:JSON.stringify({functionTarget:e.name,functionArgs:e.data||{}})};return this.request(this.setupRequest(t))}getOSSUploadOptionsFromPath(e){const t={method:\"serverless.file.resource.generateProximalSign\",params:JSON.stringify(e)};return this.request(this.setupRequest(t))}uploadFileToOSS({url:e,formData:t,name:n,filePath:s,fileType:o,onUploadProgress:r}){return new Promise(((i,a)=>{const c=this.adapter.uploadFile({url:e,formData:t,name:n,filePath:s,fileType:o,header:{\"X-OSS-server-side-encrpytion\":\"AES256\"},success(e){e&&e.statusCode<400?i(e):a(new M({code:\"UPLOAD_FAILED\",message:\"文件上传失败\"}))},fail(e){a(new M({code:e.code||\"UPLOAD_FAILED\",message:e.message||e.errMsg||\"文件上传失败\"}))}});\"function\"==typeof r&&c&&\"function\"==typeof c.onProgressUpdate&&c.onProgressUpdate((e=>{r({loaded:e.totalBytesSent,total:e.totalBytesExpectedToSend})}))}))}reportOSSUpload(e){const t={method:\"serverless.file.resource.report\",params:JSON.stringify(e)};return this.request(this.setupRequest(t))}uploadFile({filePath:e,cloudPath:t,fileType:n=\"image\",onUploadProgress:s,config:o}){if(\"string\"!==u(t))throw new M({code:\"INVALID_PARAM\",message:\"cloudPath必须为字符串类型\"});if(!(t=t.trim()))throw new M({code:\"CLOUDPATH_REQUIRED\",message:\"cloudPath不可为空\"});if(/:\\/\\//.test(t))throw new M({code:\"INVALID_PARAM\",message:\"cloudPath不合法\"});const r=o&&o.envType||this.config.envType;let i,a;return this.getOSSUploadOptionsFromPath({env:r,filename:t}).then((t=>{const o=t.result;i=o.id,a=\"https://\"+o.cdnDomain+\"/\"+o.ossPath;const r={url:\"https://\"+o.host,formData:{\"Cache-Control\":\"max-age=2592000\",\"Content-Disposition\":\"attachment\",OSSAccessKeyId:o.accessKeyId,Signature:o.signature,host:o.host,id:i,key:o.ossPath,policy:o.policy,success_action_status:200},fileName:\"file\",name:\"file\",filePath:e,fileType:n};return this.uploadFileToOSS(Object.assign({},r,{onUploadProgress:s}))})).then((()=>this.reportOSSUpload({id:i}))).then((t=>new Promise(((n,s)=>{t.success?n({success:!0,filePath:e,fileID:a}):s(new M({code:\"UPLOAD_FAILED\",message:\"文件上传失败\"}))}))))}deleteFile({fileList:e}){const t={method:\"serverless.file.resource.delete\",params:JSON.stringify({id:e[0]})};return this.request(this.setupRequest(t))}getTempFileURL({fileList:e}={}){return new Promise(((t,n)=>{Array.isArray(e)&&0!==e.length||n(new M({code:\"INVALID_PARAM\",message:\"fileList的元素必须是非空的字符串\"})),t({fileList:e.map((e=>({fileID:e,tempFileURL:e})))})}))}};var J={init(e){const t=new V(e),n={signInAnonymously:function(){return t.authorize()},getLoginState:function(){return Promise.resolve(!1)}};return t.auth=function(){return n},t.customAuth=t.auth,t}};const Y=\"undefined\"!=typeof location&&\"http:\"===location.protocol?\"http:\":\"https:\";var X;!function(e){e.local=\"local\",e.none=\"none\",e.session=\"session\"}(X||(X={}));var G=function(){};const Q=()=>{let e;if(!Promise){e=()=>{},e.promise={};const t=()=>{throw new M({message:'Your Node runtime does support ES6 Promises. Set \"global.Promise\" to your preferred implementation of promises.'})};return Object.defineProperty(e.promise,\"then\",{get:t}),Object.defineProperty(e.promise,\"catch\",{get:t}),e}const t=new Promise(((t,n)=>{e=(e,s)=>e?n(e):t(s)}));return e.promise=t,e};function Z(e){return void 0===e}function ee(e){return\"[object Null]\"===Object.prototype.toString.call(e)}var te;function ne(e){const t=(n=e,\"[object Array]\"===Object.prototype.toString.call(n)?e:[e]);var n;for(const e of t){const{isMatch:t,genAdapter:n,runtime:s}=e;if(t())return{adapter:n(),runtime:s}}}!function(e){e.WEB=\"web\",e.WX_MP=\"wx_mp\"}(te||(te={}));const se={adapter:null,runtime:void 0},oe=[\"anonymousUuidKey\"];class re extends G{constructor(){super(),se.adapter.root.tcbObject||(se.adapter.root.tcbObject={})}setItem(e,t){se.adapter.root.tcbObject[e]=t}getItem(e){return se.adapter.root.tcbObject[e]}removeItem(e){delete se.adapter.root.tcbObject[e]}clear(){delete se.adapter.root.tcbObject}}function ie(e,t){switch(e){case\"local\":return t.localStorage||new re;case\"none\":return new re;default:return t.sessionStorage||new re}}class ae{constructor(e){if(!this._storage){this._persistence=se.adapter.primaryStorage||e.persistence,this._storage=ie(this._persistence,se.adapter);const t=`access_token_${e.env}`,n=`access_token_expire_${e.env}`,s=`refresh_token_${e.env}`,o=`anonymous_uuid_${e.env}`,r=`login_type_${e.env}`,i=`user_info_${e.env}`;this.keys={accessTokenKey:t,accessTokenExpireKey:n,refreshTokenKey:s,anonymousUuidKey:o,loginTypeKey:r,userInfoKey:i}}}updatePersistence(e){if(e===this._persistence)return;const t=\"local\"===this._persistence;this._persistence=e;const n=ie(e,se.adapter);for(const e in this.keys){const s=this.keys[e];if(t&&oe.includes(e))continue;const o=this._storage.getItem(s);Z(o)||ee(o)||(n.setItem(s,o),this._storage.removeItem(s))}this._storage=n}setStore(e,t,n){if(!this._storage)return;const s={version:n||\"localCachev1\",content:t},o=JSON.stringify(s);try{this._storage.setItem(e,o)}catch(e){throw e}}getStore(e,t){try{if(!this._storage)return}catch(e){return\"\"}t=t||\"localCachev1\";const n=this._storage.getItem(e);if(!n)return\"\";if(n.indexOf(t)>=0){return JSON.parse(n).content}return\"\"}removeStore(e){this._storage.removeItem(e)}}const ce={},ue={};function le(e){return ce[e]}class he{constructor(e,t){this.data=t||null,this.name=e}}class de extends he{constructor(e,t){super(\"error\",{error:e,data:t}),this.error=e}}const fe=new class{constructor(){this._listeners={}}on(e,t){return function(e,t,n){n[e]=n[e]||[],n[e].push(t)}(e,t,this._listeners),this}off(e,t){return function(e,t,n){if(n&&n[e]){const s=n[e].indexOf(t);-1!==s&&n[e].splice(s,1)}}(e,t,this._listeners),this}fire(e,t){if(e instanceof de)return console.error(e.error),this;const n=\"string\"==typeof e?new he(e,t||{}):e;const s=n.name;if(this._listens(s)){n.target=this;const e=this._listeners[s]?[...this._listeners[s]]:[];for(const t of e)t.call(this,n)}return this}_listens(e){return this._listeners[e]&&this._listeners[e].length>0}};function ge(e,t){fe.on(e,t)}function pe(e,t={}){fe.fire(e,t)}function me(e,t){fe.off(e,t)}const ye=\"loginStateChanged\",_e=\"loginStateExpire\",we=\"loginTypeChanged\",ke=\"anonymousConverted\",Te=\"refreshAccessToken\";var Se;!function(e){e.ANONYMOUS=\"ANONYMOUS\",e.WECHAT=\"WECHAT\",e.WECHAT_PUBLIC=\"WECHAT-PUBLIC\",e.WECHAT_OPEN=\"WECHAT-OPEN\",e.CUSTOM=\"CUSTOM\",e.EMAIL=\"EMAIL\",e.USERNAME=\"USERNAME\",e.NULL=\"NULL\"}(Se||(Se={}));const ve=[\"auth.getJwt\",\"auth.logout\",\"auth.signInWithTicket\",\"auth.signInAnonymously\",\"auth.signIn\",\"auth.fetchAccessTokenWithRefreshToken\",\"auth.signUpWithEmailAndPassword\",\"auth.activateEndUserMail\",\"auth.sendPasswordResetEmail\",\"auth.resetPasswordWithToken\",\"auth.isUsernameRegistered\"],Ae={\"X-SDK-Version\":\"1.3.5\"};function Pe(e,t,n){const s=e[t];e[t]=function(t){const o={},r={};n.forEach((n=>{const{data:s,headers:i}=n.call(e,t);Object.assign(o,s),Object.assign(r,i)}));const i=t.data;return i&&(()=>{var e;if(e=i,\"[object FormData]\"!==Object.prototype.toString.call(e))t.data={...i,...o};else for(const e in o)i.append(e,o[e])})(),t.headers={...t.headers||{},...r},s.call(e,t)}}function Ie(){const e=Math.random().toString(16).slice(2);return{data:{seqId:e},headers:{...Ae,\"x-seqid\":e}}}class be{constructor(e={}){var t;this.config=e,this._reqClass=new se.adapter.reqClass({timeout:this.config.timeout,timeoutMsg:`请求在${this.config.timeout/1e3}s内未完成,已中断`,restrictedMethods:[\"post\"]}),this._cache=le(this.config.env),this._localCache=(t=this.config.env,ue[t]),Pe(this._reqClass,\"post\",[Ie]),Pe(this._reqClass,\"upload\",[Ie]),Pe(this._reqClass,\"download\",[Ie])}async post(e){return await this._reqClass.post(e)}async upload(e){return await this._reqClass.upload(e)}async download(e){return await this._reqClass.download(e)}async refreshAccessToken(){let e,t;this._refreshAccessTokenPromise||(this._refreshAccessTokenPromise=this._refreshAccessToken());try{e=await this._refreshAccessTokenPromise}catch(e){t=e}if(this._refreshAccessTokenPromise=null,this._shouldRefreshAccessTokenHook=null,t)throw t;return e}async _refreshAccessToken(){const{accessTokenKey:e,accessTokenExpireKey:t,refreshTokenKey:n,loginTypeKey:s,anonymousUuidKey:o}=this._cache.keys;this._cache.removeStore(e),this._cache.removeStore(t);let r=this._cache.getStore(n);if(!r)throw new M({message:\"未登录CloudBase\"});const i={refresh_token:r},a=await this.request(\"auth.fetchAccessTokenWithRefreshToken\",i);if(a.data.code){const{code:e}=a.data;if(\"SIGN_PARAM_INVALID\"===e||\"REFRESH_TOKEN_EXPIRED\"===e||\"INVALID_REFRESH_TOKEN\"===e){if(this._cache.getStore(s)===Se.ANONYMOUS&&\"INVALID_REFRESH_TOKEN\"===e){const e=this._cache.getStore(o),t=this._cache.getStore(n),s=await this.send(\"auth.signInAnonymously\",{anonymous_uuid:e,refresh_token:t});return this.setRefreshToken(s.refresh_token),this._refreshAccessToken()}pe(_e),this._cache.removeStore(n)}throw new M({code:a.data.code,message:`刷新access token失败:${a.data.code}`})}if(a.data.access_token)return pe(Te),this._cache.setStore(e,a.data.access_token),this._cache.setStore(t,a.data.access_token_expire+Date.now()),{accessToken:a.data.access_token,accessTokenExpire:a.data.access_token_expire};a.data.refresh_token&&(this._cache.removeStore(n),this._cache.setStore(n,a.data.refresh_token),this._refreshAccessToken())}async getAccessToken(){const{accessTokenKey:e,accessTokenExpireKey:t,refreshTokenKey:n}=this._cache.keys;if(!this._cache.getStore(n))throw new M({message:\"refresh token不存在,登录状态异常\"});let s=this._cache.getStore(e),o=this._cache.getStore(t),r=!0;return this._shouldRefreshAccessTokenHook&&!await this._shouldRefreshAccessTokenHook(s,o)&&(r=!1),(!s||!o||o{e.wxOpenId&&e.wxPublicId&&(t=!0)})),{users:n,hasPrimaryUid:t}}setPrimaryUid(e){return this._request.send(\"auth.setPrimaryUid\",{uid:e})}unlink(e){return this._request.send(\"auth.unlink\",{platform:e})}async update(e){const{nickName:t,gender:n,avatarUrl:s,province:o,country:r,city:i}=e,{data:a}=await this._request.send(\"auth.updateUserInfo\",{nickName:t,gender:n,avatarUrl:s,province:o,country:r,city:i});this.setLocalUserInfo(a)}async refresh(){const{data:e}=await this._request.send(\"auth.getUserInfo\",{});return this.setLocalUserInfo(e),e}setUserInfo(){const{userInfoKey:e}=this._cache.keys,t=this._cache.getStore(e);[\"uid\",\"loginType\",\"openid\",\"wxOpenId\",\"wxPublicId\",\"unionId\",\"qqMiniOpenId\",\"email\",\"hasPassword\",\"customUserId\",\"nickName\",\"gender\",\"avatarUrl\"].forEach((e=>{this[e]=t[e]})),this.location={country:t.country,province:t.province,city:t.city}}setLocalUserInfo(e){const{userInfoKey:t}=this._cache.keys;this._cache.setStore(t,e),this.setUserInfo()}}class Ue{constructor(e){if(!e)throw new M({code:\"PARAM_ERROR\",message:\"envId is not defined\"});this._cache=le(e);const{refreshTokenKey:t,accessTokenKey:n,accessTokenExpireKey:s}=this._cache.keys,o=this._cache.getStore(t),r=this._cache.getStore(n),i=this._cache.getStore(s);this.credential={refreshToken:o,accessToken:r,accessTokenExpire:i},this.user=new Re(e)}get isAnonymousAuth(){return this.loginType===Se.ANONYMOUS}get isCustomAuth(){return this.loginType===Se.CUSTOM}get isWeixinAuth(){return this.loginType===Se.WECHAT||this.loginType===Se.WECHAT_OPEN||this.loginType===Se.WECHAT_PUBLIC}get loginType(){return this._cache.getStore(this._cache.keys.loginTypeKey)}}class xe extends Ee{async signIn(){this._cache.updatePersistence(\"local\");const{anonymousUuidKey:e,refreshTokenKey:t}=this._cache.keys,n=this._cache.getStore(e)||void 0,s=this._cache.getStore(t)||void 0,o=await this._request.send(\"auth.signInAnonymously\",{anonymous_uuid:n,refresh_token:s});if(o.uuid&&o.refresh_token){this._setAnonymousUUID(o.uuid),this.setRefreshToken(o.refresh_token),await this._request.refreshAccessToken(),pe(ye),pe(we,{env:this.config.env,loginType:Se.ANONYMOUS,persistence:\"local\"});const e=new Ue(this.config.env);return await e.user.refresh(),e}throw new M({message:\"匿名登录失败\"})}async linkAndRetrieveDataWithTicket(e){const{anonymousUuidKey:t,refreshTokenKey:n}=this._cache.keys,s=this._cache.getStore(t),o=this._cache.getStore(n),r=await this._request.send(\"auth.linkAndRetrieveDataWithTicket\",{anonymous_uuid:s,refresh_token:o,ticket:e});if(r.refresh_token)return this._clearAnonymousUUID(),this.setRefreshToken(r.refresh_token),await this._request.refreshAccessToken(),pe(ke,{env:this.config.env}),pe(we,{loginType:Se.CUSTOM,persistence:\"local\"}),{credential:{refreshToken:r.refresh_token}};throw new M({message:\"匿名转化失败\"})}_setAnonymousUUID(e){const{anonymousUuidKey:t,loginTypeKey:n}=this._cache.keys;this._cache.removeStore(t),this._cache.setStore(t,e),this._cache.setStore(n,Se.ANONYMOUS)}_clearAnonymousUUID(){this._cache.removeStore(this._cache.keys.anonymousUuidKey)}}class Le extends Ee{async signIn(e){if(\"string\"!=typeof e)throw new M({param:\"PARAM_ERROR\",message:\"ticket must be a string\"});const{refreshTokenKey:t}=this._cache.keys,n=await this._request.send(\"auth.signInWithTicket\",{ticket:e,refresh_token:this._cache.getStore(t)||\"\"});if(n.refresh_token)return this.setRefreshToken(n.refresh_token),await this._request.refreshAccessToken(),pe(ye),pe(we,{env:this.config.env,loginType:Se.CUSTOM,persistence:this.config.persistence}),await this.refreshUserInfo(),new Ue(this.config.env);throw new M({message:\"自定义登录失败\"})}}class De extends Ee{async signIn(e,t){if(\"string\"!=typeof e)throw new M({code:\"PARAM_ERROR\",message:\"email must be a string\"});const{refreshTokenKey:n}=this._cache.keys,s=await this._request.send(\"auth.signIn\",{loginType:\"EMAIL\",email:e,password:t,refresh_token:this._cache.getStore(n)||\"\"}),{refresh_token:o,access_token:r,access_token_expire:i}=s;if(o)return this.setRefreshToken(o),r&&i?this.setAccessToken(r,i):await this._request.refreshAccessToken(),await this.refreshUserInfo(),pe(ye),pe(we,{env:this.config.env,loginType:Se.EMAIL,persistence:this.config.persistence}),new Ue(this.config.env);throw s.code?new M({code:s.code,message:`邮箱登录失败: ${s.message}`}):new M({message:\"邮箱登录失败\"})}async activate(e){return this._request.send(\"auth.activateEndUserMail\",{token:e})}async resetPasswordWithToken(e,t){return this._request.send(\"auth.resetPasswordWithToken\",{token:e,newPassword:t})}}class qe extends Ee{async signIn(e,t){if(\"string\"!=typeof e)throw new M({code:\"PARAM_ERROR\",message:\"username must be a string\"});\"string\"!=typeof t&&(t=\"\",console.warn(\"password is empty\"));const{refreshTokenKey:n}=this._cache.keys,s=await this._request.send(\"auth.signIn\",{loginType:Se.USERNAME,username:e,password:t,refresh_token:this._cache.getStore(n)||\"\"}),{refresh_token:o,access_token_expire:r,access_token:i}=s;if(o)return this.setRefreshToken(o),i&&r?this.setAccessToken(i,r):await this._request.refreshAccessToken(),await this.refreshUserInfo(),pe(ye),pe(we,{env:this.config.env,loginType:Se.USERNAME,persistence:this.config.persistence}),new Ue(this.config.env);throw s.code?new M({code:s.code,message:`用户名密码登录失败: ${s.message}`}):new M({message:\"用户名密码登录失败\"})}}class Ne{constructor(e){this.config=e,this._cache=le(e.env),this._request=Ce(e.env),this._onAnonymousConverted=this._onAnonymousConverted.bind(this),this._onLoginTypeChanged=this._onLoginTypeChanged.bind(this),ge(we,this._onLoginTypeChanged)}get currentUser(){const e=this.hasLoginState();return e&&e.user||null}get loginType(){return this._cache.getStore(this._cache.keys.loginTypeKey)}anonymousAuthProvider(){return new xe(this.config)}customAuthProvider(){return new Le(this.config)}emailAuthProvider(){return new De(this.config)}usernameAuthProvider(){return new qe(this.config)}async signInAnonymously(){return new xe(this.config).signIn()}async signInWithEmailAndPassword(e,t){return new De(this.config).signIn(e,t)}signInWithUsernameAndPassword(e,t){return new qe(this.config).signIn(e,t)}async linkAndRetrieveDataWithTicket(e){this._anonymousAuthProvider||(this._anonymousAuthProvider=new xe(this.config)),ge(ke,this._onAnonymousConverted);return await this._anonymousAuthProvider.linkAndRetrieveDataWithTicket(e)}async signOut(){if(this.loginType===Se.ANONYMOUS)throw new M({message:\"匿名用户不支持登出操作\"});const{refreshTokenKey:e,accessTokenKey:t,accessTokenExpireKey:n}=this._cache.keys,s=this._cache.getStore(e);if(!s)return;const o=await this._request.send(\"auth.logout\",{refresh_token:s});return this._cache.removeStore(e),this._cache.removeStore(t),this._cache.removeStore(n),pe(ye),pe(we,{env:this.config.env,loginType:Se.NULL,persistence:this.config.persistence}),o}async signUpWithEmailAndPassword(e,t){return this._request.send(\"auth.signUpWithEmailAndPassword\",{email:e,password:t})}async sendPasswordResetEmail(e){return this._request.send(\"auth.sendPasswordResetEmail\",{email:e})}onLoginStateChanged(e){ge(ye,(()=>{const t=this.hasLoginState();e.call(this,t)}));const t=this.hasLoginState();e.call(this,t)}onLoginStateExpired(e){ge(_e,e.bind(this))}onAccessTokenRefreshed(e){ge(Te,e.bind(this))}onAnonymousConverted(e){ge(ke,e.bind(this))}onLoginTypeChanged(e){ge(we,(()=>{const t=this.hasLoginState();e.call(this,t)}))}async getAccessToken(){return{accessToken:(await this._request.getAccessToken()).accessToken,env:this.config.env}}hasLoginState(){const{refreshTokenKey:e}=this._cache.keys;return this._cache.getStore(e)?new Ue(this.config.env):null}async isUsernameRegistered(e){if(\"string\"!=typeof e)throw new M({code:\"PARAM_ERROR\",message:\"username must be a string\"});const{data:t}=await this._request.send(\"auth.isUsernameRegistered\",{username:e});return t&&t.isRegistered}getLoginState(){return Promise.resolve(this.hasLoginState())}async signInWithTicket(e){return new Le(this.config).signIn(e)}shouldRefreshAccessToken(e){this._request._shouldRefreshAccessTokenHook=e.bind(this)}getUserInfo(){return this._request.send(\"auth.getUserInfo\",{}).then((e=>e.code?e:{...e.data,requestId:e.seqId}))}getAuthHeader(){const{refreshTokenKey:e,accessTokenKey:t}=this._cache.keys,n=this._cache.getStore(e);return{\"x-cloudbase-credentials\":this._cache.getStore(t)+\"/@@/\"+n}}_onAnonymousConverted(e){const{env:t}=e.data;t===this.config.env&&this._cache.updatePersistence(this.config.persistence)}_onLoginTypeChanged(e){const{loginType:t,persistence:n,env:s}=e.data;s===this.config.env&&(this._cache.updatePersistence(n),this._cache.setStore(this._cache.keys.loginTypeKey,t))}}const Fe=function(e,t){t=t||Q();const n=Ce(this.config.env),{cloudPath:s,filePath:o,onUploadProgress:r,fileType:i=\"image\"}=e;return n.send(\"storage.getUploadMetadata\",{path:s}).then((e=>{const{data:{url:a,authorization:c,token:u,fileId:l,cosFileId:h},requestId:d}=e,f={key:s,signature:c,\"x-cos-meta-fileid\":h,success_action_status:\"201\",\"x-cos-security-token\":u};n.upload({url:a,data:f,file:o,name:s,fileType:i,onUploadProgress:r}).then((e=>{201===e.statusCode?t(null,{fileID:l,requestId:d}):t(new M({code:\"STORAGE_REQUEST_FAIL\",message:`STORAGE_REQUEST_FAIL: ${e.data}`}))})).catch((e=>{t(e)}))})).catch((e=>{t(e)})),t.promise},Me=function(e,t){t=t||Q();const n=Ce(this.config.env),{cloudPath:s}=e;return n.send(\"storage.getUploadMetadata\",{path:s}).then((e=>{t(null,e)})).catch((e=>{t(e)})),t.promise},$e=function({fileList:e},t){if(t=t||Q(),!e||!Array.isArray(e))return{code:\"INVALID_PARAM\",message:\"fileList必须是非空的数组\"};for(let t of e)if(!t||\"string\"!=typeof t)return{code:\"INVALID_PARAM\",message:\"fileList的元素必须是非空的字符串\"};const n={fileid_list:e};return Ce(this.config.env).send(\"storage.batchDeleteFile\",n).then((e=>{e.code?t(null,e):t(null,{fileList:e.data.delete_list,requestId:e.requestId})})).catch((e=>{t(e)})),t.promise},je=function({fileList:e},t){t=t||Q(),e&&Array.isArray(e)||t(null,{code:\"INVALID_PARAM\",message:\"fileList必须是非空的数组\"});let n=[];for(let s of e)\"object\"==typeof s?(s.hasOwnProperty(\"fileID\")&&s.hasOwnProperty(\"maxAge\")||t(null,{code:\"INVALID_PARAM\",message:\"fileList的元素必须是包含fileID和maxAge的对象\"}),n.push({fileid:s.fileID,max_age:s.maxAge})):\"string\"==typeof s?n.push({fileid:s}):t(null,{code:\"INVALID_PARAM\",message:\"fileList的元素必须是字符串\"});const s={file_list:n};return Ce(this.config.env).send(\"storage.batchGetDownloadUrl\",s).then((e=>{e.code?t(null,e):t(null,{fileList:e.data.download_list,requestId:e.requestId})})).catch((e=>{t(e)})),t.promise},Ke=async function({fileID:e},t){const n=(await je.call(this,{fileList:[{fileID:e,maxAge:600}]})).fileList[0];if(\"SUCCESS\"!==n.code)return t?t(n):new Promise((e=>{e(n)}));const s=Ce(this.config.env);let o=n.download_url;if(o=encodeURI(o),!t)return s.download({url:o});t(await s.download({url:o}))},Be=function({name:e,data:t,query:n,parse:s,search:o},r){const i=r||Q();let a;try{a=t?JSON.stringify(t):\"\"}catch(e){return Promise.reject(e)}if(!e)return Promise.reject(new M({code:\"PARAM_ERROR\",message:\"函数名不能为空\"}));const c={inQuery:n,parse:s,search:o,function_name:e,request_data:a};return Ce(this.config.env).send(\"functions.invokeFunction\",c).then((e=>{if(e.code)i(null,e);else{let t=e.data.response_data;if(s)i(null,{result:t,requestId:e.requestId});else try{t=JSON.parse(e.data.response_data),i(null,{result:t,requestId:e.requestId})}catch(e){i(new M({message:\"response data must be json\"}))}}return i.promise})).catch((e=>{i(e)})),i.promise},He={timeout:15e3,persistence:\"session\"},We={};class ze{constructor(e){this.config=e||this.config,this.authObj=void 0}init(e){switch(se.adapter||(this.requestClient=new se.adapter.reqClass({timeout:e.timeout||5e3,timeoutMsg:`请求在${(e.timeout||5e3)/1e3}s内未完成,已中断`})),this.config={...He,...e},!0){case this.config.timeout>6e5:console.warn(\"timeout大于可配置上限[10分钟],已重置为上限数值\"),this.config.timeout=6e5;break;case this.config.timeout<100:console.warn(\"timeout小于可配置下限[100ms],已重置为下限数值\"),this.config.timeout=100}return new ze(this.config)}auth({persistence:e}={}){if(this.authObj)return this.authObj;const t=e||se.adapter.primaryStorage||He.persistence;var n;return t!==this.config.persistence&&(this.config.persistence=t),function(e){const{env:t}=e;ce[t]=new ae(e),ue[t]=new ae({...e,persistence:\"local\"})}(this.config),n=this.config,Oe[n.env]=new be(n),this.authObj=new Ne(this.config),this.authObj}on(e,t){return ge.apply(this,[e,t])}off(e,t){return me.apply(this,[e,t])}callFunction(e,t){return Be.apply(this,[e,t])}deleteFile(e,t){return $e.apply(this,[e,t])}getTempFileURL(e,t){return je.apply(this,[e,t])}downloadFile(e,t){return Ke.apply(this,[e,t])}uploadFile(e,t){return Fe.apply(this,[e,t])}getUploadMetadata(e,t){return Me.apply(this,[e,t])}registerExtension(e){We[e.name]=e}async invokeExtension(e,t){const n=We[e];if(!n)throw new M({message:`扩展${e} 必须先注册`});return await n.invoke(t,this)}useAdapters(e){const{adapter:t,runtime:n}=ne(e)||{};t&&(se.adapter=t),n&&(se.runtime=n)}}var Ve=new ze;function Je(e,t,n){void 0===n&&(n={});var s=/\\?/.test(t),o=\"\";for(var r in n)\"\"===o?!s&&(t+=\"?\"):o+=\"&\",o+=r+\"=\"+encodeURIComponent(n[r]);return/^http(s)?:\\/\\//.test(t+=o)?t:\"\"+e+t}class Ye{post(e){const{url:t,data:n,headers:s}=e;return new Promise(((e,o)=>{H.request({url:Je(\"https:\",t),data:n,method:\"POST\",header:s,success(t){e(t)},fail(e){o(e)}})}))}upload(e){return new Promise(((t,n)=>{const{url:s,file:o,data:r,headers:i,fileType:a}=e,c=H.uploadFile({url:Je(\"https:\",s),name:\"file\",formData:Object.assign({},r),filePath:o,fileType:a,header:i,success(e){const n={statusCode:e.statusCode,data:e.data||{}};200===e.statusCode&&r.success_action_status&&(n.statusCode=parseInt(r.success_action_status,10)),t(n)},fail(e){d&&\"mp-alipay\"===g&&console.warn(\"支付宝小程序开发工具上传腾讯云时无法准确判断是否上传成功,请使用真机测试\"),n(new Error(e.errMsg||\"uploadFile:fail\"))}});\"function\"==typeof e.onUploadProgress&&c&&\"function\"==typeof c.onProgressUpdate&&c.onProgressUpdate((t=>{e.onUploadProgress({loaded:t.totalBytesSent,total:t.totalBytesExpectedToSend})}))}))}}const Xe={setItem(e,t){H.setStorageSync(e,t)},getItem:e=>H.getStorageSync(e),removeItem(e){H.removeStorageSync(e)},clear(){H.clearStorageSync()}};var Ge={genAdapter:function(){return{root:{},reqClass:Ye,localStorage:Xe,primaryStorage:\"local\"}},isMatch:function(){return!0},runtime:\"uni_app\"};Ve.useAdapters(Ge);const Qe=Ve,Ze=Qe.init;Qe.init=function(e){e.env=e.spaceId;const t=Ze.call(this,e);t.config.provider=\"tencent\",t.config.spaceId=e.spaceId;const n=t.auth;return t.auth=function(e){const t=n.call(this,e);return[\"linkAndRetrieveDataWithTicket\",\"signInAnonymously\",\"signOut\",\"getAccessToken\",\"getLoginState\",\"signInWithTicket\",\"getUserInfo\"].forEach((e=>{t[e]=F(t[e]).bind(t)})),t},t.customAuth=t.auth,t};var et=Qe;function tt(){return{token:H.getStorageSync(\"uni_id_token\")||H.getStorageSync(\"uniIdToken\"),tokenExpired:H.getStorageSync(\"uni_id_token_expired\")}}function nt({token:e,tokenExpired:t}={}){e&&H.setStorageSync(\"uni_id_token\",e),t&&H.setStorageSync(\"uni_id_token_expired\",t)}function st(){if(!d||\"web\"!==g)return;uni.getStorageSync(\"__LAST_DCLOUD_APPID\")!==_&&(uni.setStorageSync(\"__LAST_DCLOUD_APPID\",_),console.warn(\"检测到当前项目与上次运行到此端口的项目不一致,自动清理uni-id保存的token信息(仅开发调试时生效)\"),H.removeStorageSync(\"uni_id_token\"),H.removeStorageSync(\"uniIdToken\"),H.removeStorageSync(\"uni_id_token_expired\"))}var ot=class extends V{getAccessToken(){return new Promise(((e,t)=>{const n=\"Anonymous_Access_token\";this.setAccessToken(n),e(n)}))}setupRequest(e,t){const n=Object.assign({},e,{spaceId:this.config.spaceId,timestamp:Date.now()}),s={\"Content-Type\":\"application/json\"};\"auth\"!==t&&(n.token=this.accessToken,s[\"x-basement-token\"]=this.accessToken),s[\"x-serverless-sign\"]=B.sign(n,this.config.clientSecret);const o=K();s[\"x-client-info\"]=encodeURIComponent(JSON.stringify(o));const{token:r}=tt();return s[\"x-client-token\"]=r,{url:this.config.requestUrl,method:\"POST\",data:n,dataType:\"json\",header:JSON.parse(JSON.stringify(s))}}uploadFileToOSS({url:e,formData:t,name:n,filePath:s,fileType:o,onUploadProgress:r}){return new Promise(((i,a)=>{const c=this.adapter.uploadFile({url:e,formData:t,name:n,filePath:s,fileType:o,success(e){e&&e.statusCode<400?i(e):a(new M({code:\"UPLOAD_FAILED\",message:\"文件上传失败\"}))},fail(e){a(new M({code:e.code||\"UPLOAD_FAILED\",message:e.message||e.errMsg||\"文件上传失败\"}))}});\"function\"==typeof r&&c&&\"function\"==typeof c.onProgressUpdate&&c.onProgressUpdate((e=>{r({loaded:e.totalBytesSent,total:e.totalBytesExpectedToSend})}))}))}uploadFile({filePath:e,cloudPath:t,fileType:n=\"image\",onUploadProgress:s}){if(!t)throw new M({code:\"CLOUDPATH_REQUIRED\",message:\"cloudPath不可为空\"});let o;return this.getOSSUploadOptionsFromPath({cloudPath:t}).then((t=>{const{url:r,formData:i,name:a}=t.result;o=t.result.fileUrl;const c={url:r,formData:i,name:a,filePath:e,fileType:n};return this.uploadFileToOSS(Object.assign({},c,{onUploadProgress:s}))})).then((()=>this.reportOSSUpload({cloudPath:t}))).then((t=>new Promise(((n,s)=>{t.success?n({success:!0,filePath:e,fileID:o}):s(new M({code:\"UPLOAD_FAILED\",message:\"文件上传失败\"}))}))))}deleteFile({fileList:e}){const t={method:\"serverless.file.resource.delete\",params:JSON.stringify({fileList:e})};return this.request(this.setupRequest(t))}getTempFileURL({fileList:e}={}){const t={method:\"serverless.file.resource.getTempFileURL\",params:JSON.stringify({fileList:e})};return this.request(this.setupRequest(t))}};var rt={init(e){const t=new ot(e),n={signInAnonymously:function(){return t.authorize()},getLoginState:function(){return Promise.resolve(!1)}};return t.auth=function(){return n},t.customAuth=t.auth,t}};function it({data:e}){let t;t=K();const n=JSON.parse(JSON.stringify(e||{}));if(Object.assign(n,{clientInfo:t}),!n.uniIdToken){const{token:e}=tt();e&&(n.uniIdToken=e)}return n}function at({name:e,data:t}){const{localAddress:n,localPort:s}=this,o={aliyun:\"aliyun\",tencent:\"tcb\"}[this.config.provider],r=this.config.spaceId,i=`http://${n}:${s}/system/check-function`,a=`http://${n}:${s}/cloudfunctions/${e}`;return new Promise(((t,n)=>{H.request({method:\"POST\",url:i,data:{name:e,platform:g,provider:o,spaceId:r},timeout:3e3,success(e){t(e)},fail(){t({data:{code:\"NETWORK_ERROR\",message:\"连接本地调试服务失败,请检查客户端是否和主机在同一局域网下,自动切换为已部署的云函数。\"}})}})})).then((({data:e}={})=>{const{code:t,message:n}=e||{};return{code:0===t?0:t||\"SYS_ERR\",message:n||\"SYS_ERR\"}})).then((({code:n,message:s})=>{if(0!==n){switch(n){case\"MODULE_ENCRYPTED\":console.error(`此云函数(${e})依赖加密公共模块不可本地调试,自动切换为云端已部署的云函数`);break;case\"FUNCTION_ENCRYPTED\":console.error(`此云函数(${e})已加密不可本地调试,自动切换为云端已部署的云函数`);break;case\"ACTION_ENCRYPTED\":console.error(s||\"需要访问加密的uni-clientDB-action,自动切换为云端环境\");break;case\"NETWORK_ERROR\":{const e=\"连接本地调试服务失败,请检查客户端是否和主机在同一局域网下\";throw console.error(e),new Error(e)}case\"SWITCH_TO_CLOUD\":break;default:{const e=`检测本地调试服务出现错误:${s},请检查网络环境或重启客户端再试`;throw console.error(e),new Error(e)}}return this._originCallFunction({name:e,data:t})}return new Promise(((e,n)=>{const s=it.call(this,{data:t});H.request({method:\"POST\",url:a,data:{provider:o,platform:g,param:s},success:({statusCode:t,data:s}={})=>!t||t>=400?n(new M({code:s.code||\"SYS_ERR\",message:s.message||\"request:fail\"})):e({result:s}),fail(e){n(new M({code:e.code||e.errCode||\"SYS_ERR\",message:e.message||e.errMsg||\"request:fail\"}))}})}))}))}const ct=[{rule:/fc_function_not_found|FUNCTION_NOT_FOUND/,content:\",云函数[{functionName}]在云端不存在,请检查此云函数名称是否正确以及该云函数是否已上传到服务空间\",mode:\"append\"}];var ut=/[\\\\^$.*+?()[\\]{}|]/g,lt=RegExp(ut.source);function ht(e,t,n){return e.replace(new RegExp((s=t)&<.test(s)?s.replace(ut,\"\\\\$&\"):s,\"g\"),n);var s}function dt({functionName:e,result:t,logPvd:n}){if(this.config.debugLog&&t&&t.requestId){const s=JSON.stringify({spaceId:this.config.spaceId,functionName:e,requestId:t.requestId});console.log(`[${n}-request]${s}[/${n}-request]`)}}function ft(e){const t=e.callFunction,n=function(n){const s=n.name;n.data=it.call(e,{data:n.data});const o={aliyun:\"aliyun\",tencent:\"tcb\",tcb:\"tcb\"}[this.config.provider];return t.call(this,n).then((e=>(e.errCode=0,dt.call(this,{functionName:s,result:e,logPvd:o}),Promise.resolve(e))),(e=>(dt.call(this,{functionName:s,result:e,logPvd:o}),e&&e.message&&(e.message=function({message:e=\"\",extraInfo:t={},formatter:n=[]}={}){for(let s=0;s(console.warn(\"当前返回结果为Promise类型,不可直接访问其result属性,详情请参考:https://uniapp.dcloud.net.cn/uniCloud/faq?id=promise\"),{})}),s}}const gt=Symbol(\"CLIENT_DB_INTERNAL\");function pt(e,t){return e.then=\"DoNotReturnProxyWithAFunctionNamedThen\",e._internalType=gt,e.__ob__=void 0,new Proxy(e,{get(e,n,s){if(\"_uniClient\"===n)return null;if(n in e||\"string\"!=typeof n){const t=e[n];return\"function\"==typeof t?t.bind(e):t}return t.get(e,n,s)}})}function mt(e){return{on:(t,n)=>{e[t]=e[t]||[],e[t].indexOf(n)>-1||e[t].push(n)},off:(t,n)=>{e[t]=e[t]||[];const s=e[t].indexOf(n);-1!==s&&e[t].splice(s,1)}}}const yt=[\"db.Geo\",\"db.command\",\"command.aggregate\"];function _t(e,t){return yt.indexOf(`${e}.${t}`)>-1}function wt(e){switch(u(e)){case\"array\":return e.map((e=>wt(e)));case\"object\":return e._internalType===gt||Object.keys(e).forEach((t=>{e[t]=wt(e[t])})),e;case\"regexp\":return{$regexp:{source:e.source,flags:e.flags}};case\"date\":return{$date:e.toISOString()};default:return e}}function kt(e){return e&&e.content&&e.content.$method}class Tt{constructor(e,t,n){this.content=e,this.prevStage=t||null,this.udb=null,this._database=n}toJSON(){let e=this;const t=[e.content];for(;e.prevStage;)e=e.prevStage,t.push(e.content);return{$db:t.reverse().map((e=>({$method:e.$method,$param:wt(e.$param)})))}}getAction(){const e=this.toJSON().$db.find((e=>\"action\"===e.$method));return e&&e.$param&&e.$param[0]}getCommand(){return{$db:this.toJSON().$db.filter((e=>\"action\"!==e.$method))}}get isAggregate(){let e=this;for(;e;){const t=kt(e),n=kt(e.prevStage);if(\"aggregate\"===t&&\"collection\"===n||\"pipeline\"===t)return!0;e=e.prevStage}return!1}get isCommand(){let e=this;for(;e;){if(\"command\"===kt(e))return!0;e=e.prevStage}return!1}get isAggregateCommand(){let e=this;for(;e;){const t=kt(e),n=kt(e.prevStage);if(\"aggregate\"===t&&\"command\"===n)return!0;e=e.prevStage}return!1}get count(){if(!this.isAggregate)return function(){return this._send(\"count\",Array.from(arguments))};const e=this;return function(){return St({$method:\"count\",$param:wt(Array.from(arguments))},e,this._database)}}get remove(){if(!this.isCommand)return function(){return this._send(\"remove\",Array.from(arguments))};const e=this;return function(){return St({$method:\"remove\",$param:wt(Array.from(arguments))},e,this._database)}}get(){return this._send(\"get\",Array.from(arguments))}add(){return this._send(\"add\",Array.from(arguments))}update(){return this._send(\"update\",Array.from(arguments))}end(){return this._send(\"end\",Array.from(arguments))}get set(){if(!this.isCommand)return function(){throw new Error(\"JQL禁止使用set方法\")};const e=this;return function(){return St({$method:\"set\",$param:wt(Array.from(arguments))},e,this._database)}}_send(e,t){const n=this.getAction(),s=this.getCommand();if(s.$db.push({$method:e,$param:wt(t)}),d){const e=s.$db.find((e=>\"collection\"===e.$method)),t=e&&e.$param;t&&1===t.length&&\"string\"==typeof e.$param[0]&&e.$param[0].indexOf(\",\")>-1&&console.warn(\"检测到使用JQL语法联表查询时,未使用getTemp先过滤主表数据,在主表数据量大的情况下可能会查询缓慢。\\n- 如何优化请参考此文档:https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup-with-temp \\n- 如果主表数据量很小请忽略此信息,项目发行时不会出现此提示。\")}return this._database._callCloudFunction({action:n,command:s})}}function St(e,t,n){return pt(new Tt(e,t,n),{get(e,t){let s=\"db\";return e&&e.content&&(s=e.content.$method),_t(s,t)?St({$method:t},e,n):function(){return St({$method:t,$param:wt(Array.from(arguments))},e,n)}}})}function vt({path:e,method:t}){return class{constructor(){this.param=Array.from(arguments)}toJSON(){return{$newDb:[...e.map((e=>({$method:e}))),{$method:t,$param:this.param}]}}}}class At extends class{constructor({uniClient:e={}}={}){this._uniClient=e,this._authCallBacks={},this._dbCallBacks={},e.isDefault&&(this._dbCallBacks=k(\"_globalUniCloudDatabaseCallback\")),this.auth=mt(this._authCallBacks),Object.assign(this,mt(this._dbCallBacks)),this.env=pt({},{get:(e,t)=>({$env:t})}),this.Geo=pt({},{get:(e,t)=>vt({path:[\"Geo\"],method:t})}),this.serverDate=vt({path:[],method:\"serverDate\"}),this.RegExp=vt({path:[],method:\"RegExp\"})}getCloudEnv(e){if(\"string\"!=typeof e||!e.trim())throw new Error(\"getCloudEnv参数错误\");return{$env:e.replace(\"$cloudEnv_\",\"\")}}_callback(e,t){const n=this._dbCallBacks;n[e]&&n[e].forEach((e=>{e(...t)}))}_callbackAuth(e,t){const n=this._authCallBacks;n[e]&&n[e].forEach((e=>{e(...t)}))}multiSend(){const e=Array.from(arguments),t=e.map((e=>{const t=e.getAction(),n=e.getCommand();if(\"getTemp\"!==n.$db[n.$db.length-1].$method)throw new Error(\"multiSend只支持子命令内使用getTemp\");return{action:t,command:n}}));return this._callCloudFunction({multiCommand:t,queryList:e})}}{_callCloudFunction({action:e,command:t,multiCommand:n,queryList:s}){function o(e,t){if(n&&s)for(let n=0;nP(I(\"database\",\"complete\"),e))).then((()=>(o(null,e),N(O,{type:R,content:e}),Promise.reject(e))))}const a=P(I(\"database\",\"invoke\")),u=this._uniClient;return a.then((()=>u.callFunction({name:\"DCloud-clientDB\",type:c,data:{action:e,command:t,multiCommand:n}}))).then((e=>{const{code:t,message:n,token:s,tokenExpired:r,systemInfo:a=[]}=e.result;if(a)for(let e=0;e(console.warn(s),t)})}}return function(e){return P(I(\"database\",\"success\"),e).then((()=>P(I(\"database\",\"complete\"),e))).then((()=>(o(e,null),N(O,{type:R,content:e}),Promise.resolve(e))))}(e)}),(e=>{/fc_function_not_found|FUNCTION_NOT_FOUND/g.test(e.message)&&console.warn(\"clientDB未初始化,请在web控制台保存一次schema以开启clientDB\");return i(new M({code:e.code||\"SYSTEM_ERROR\",message:e.message,requestId:e.requestId}))}))}}function Pt(e){e.database=function(t){if(t&&Object.keys(t).length>0)return e.init(t).database();if(this._database)return this._database;const n=function(e,t={}){return pt(new e(t),{get:(e,t)=>_t(\"db\",t)?St({$method:t},null,e):function(){return St({$method:t,$param:wt(Array.from(arguments))},null,e)}})}(At,{uniClient:e});return this._database=n,n}}const It=\"token无效,跳转登录页面\",bt=\"token过期,跳转登录页面\",Ot={TOKEN_INVALID_TOKEN_EXPIRED:bt,TOKEN_INVALID_INVALID_CLIENTID:It,TOKEN_INVALID:It,TOKEN_INVALID_WRONG_TOKEN:It,TOKEN_INVALID_ANONYMOUS_USER:It},Ct={\"uni-id-token-expired\":bt,\"uni-id-check-token-failed\":It,\"uni-id-token-not-exist\":It,\"uni-id-check-device-feature-failed\":It};function Et(e,t){let n=\"\";return n=e?`${e}/${t}`:t,n.replace(/^\\//,\"\")}function Rt(e=[],t=\"\"){const n=[],s=[];return e.forEach((e=>{!0===e.needLogin?n.push(Et(t,e.path)):!1===e.needLogin&&s.push(Et(t,e.path))})),{needLoginPage:n,notNeedLoginPage:s}}function Ut(e=\"\",t={}){if(!e)return!1;if(!(t&&t.list&&t.list.length))return!1;const n=t.list,s=e.split(\"?\")[0].replace(/^\\//,\"\");return n.some((e=>e.pagePath===s))}const xt=!!t.uniIdRouter;const{loginPage:Lt,routerNeedLogin:Dt,resToLogin:qt,needLoginPage:Nt,notNeedLoginPage:Ft,loginPageInTabBar:Mt}=function({pages:e=[],subPackages:n=[],uniIdRouter:s={},tabBar:o={}}=t){const{loginPage:r,needLogin:i=[],resToLogin:a=!0}=s,{needLoginPage:c,notNeedLoginPage:u}=Rt(e),{needLoginPage:l,notNeedLoginPage:h}=function(e=[]){const t=[],n=[];return e.forEach((e=>{const{root:s,pages:o=[]}=e,{needLoginPage:r,notNeedLoginPage:i}=Rt(o,s);t.push(...r),n.push(...i)})),{needLoginPage:t,notNeedLoginPage:n}}(n);return{loginPage:r,routerNeedLogin:i,resToLogin:a,needLoginPage:[...c,...l],notNeedLoginPage:[...u,...h],loginPageInTabBar:Ut(r,o)}}();function $t(e){const t=function(e){const t=getCurrentPages(),n=t[t.length-1].route,s=e.charAt(0),o=e.split(\"?\")[0];if(\"/\"===s)return o;const r=o.replace(/^\\//,\"\").split(\"/\"),i=n.split(\"/\");i.pop();for(let e=0;e-1)&&(Nt.indexOf(t)>-1||Dt.some((t=>function(e,t){return new RegExp(t).test(e)}(e,t))))}function jt(e,t){return\"/\"!==e.charAt(0)&&(e=\"/\"+e),t?e.indexOf(\"?\")>-1?e+`&uniIdRedirectUrl=${encodeURIComponent(t)}`:e+`?uniIdRedirectUrl=${encodeURIComponent(t)}`:e}function Kt(){const e=[\"navigateTo\",\"redirectTo\",\"reLaunch\",\"switchTab\"];for(let t=0;t0)return setTimeout((()=>{N(C,o)}),0),e.url=\"\",!1;if(!Lt)return e;const t=jt(Lt,o.uniIdRedirectUrl);if(Mt){if(\"navigateTo\"===n||\"redirectTo\"===n)return setTimeout((()=>{uni.switchTab({url:t})})),!1}else if(\"switchTab\"===n)return setTimeout((()=>{uni.navigateTo({url:t})})),!1;e.url=t}return e}})}}function Bt(){this.onResponse((e=>{const{type:t,content:n}=e;let s=!1;switch(t){case\"cloudobject\":s=function(e){const{errCode:t}=e;return t in Ct}(n);break;case\"clientdb\":s=function(e){const{errCode:t}=e;return t in Ot}(n)}s&&function(e={}){const t=L(C),n=getCurrentPages(),s=n[n.length-1],o=s&&s.$page&&s.$page.fullPath;if(t.length>0)return N(C,Object.assign({uniIdRedirectUrl:o},e));Lt&&uni.navigateTo({url:jt(Lt,o)})}(n)}))}function Ht(e){e.onNeedLogin=function(e){D(C,e)},e.offNeedLogin=function(e){q(C,e)},xt&&(k(\"uni-cloud-status\").needLoginInit||(k(\"uni-cloud-status\").needLoginInit=!0,function t(){const n=getCurrentPages();n&&n[0]?Kt.call(e):setTimeout((()=>{t()}),30)}(),qt&&Bt.call(e)))}function Wt(e){!function(e){e.onResponse=function(e){D(O,e)},e.offResponse=function(e){q(O,e)}}(e),Ht(e),function(e){e.onRefreshToken=function(e){D(E,e)},e.offRefreshToken=function(e){q(E,e)}}(e)}let zt;const Vt=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",Jt=/^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;function Yt(){const e=tt().token||\"\",t=e.split(\".\");if(!e||3!==t.length)return{uid:null,role:[],permission:[],tokenExpired:0};let n;try{n=JSON.parse((s=t[1],decodeURIComponent(zt(s).split(\"\").map((function(e){return\"%\"+(\"00\"+e.charCodeAt(0).toString(16)).slice(-2)})).join(\"\"))))}catch(e){throw new Error(\"获取当前用户信息出错,详细错误信息为:\"+e.message)}var s;return n.tokenExpired=1e3*n.exp,delete n.exp,delete n.iat,n}zt=\"function\"!=typeof atob?function(e){if(e=String(e).replace(/[\\t\\n\\f\\r ]+/g,\"\"),!Jt.test(e))throw new Error(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\");var t;e+=\"==\".slice(2-(3&e.length));for(var n,s,o=\"\",r=0;r>16&255):64===s?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return o}:atob;var Xt=s((function(e,t){Object.defineProperty(t,\"__esModule\",{value:!0});const n=\"chooseAndUploadFile:ok\",s=\"chooseAndUploadFile:fail\";function o(e,t){return e.tempFiles.forEach(((e,n)=>{e.name||(e.name=e.path.substring(e.path.lastIndexOf(\"/\")+1)),t&&(e.fileType=t),e.cloudPath=Date.now()+\"_\"+n+e.name.substring(e.name.lastIndexOf(\".\"))})),e.tempFilePaths||(e.tempFilePaths=e.tempFiles.map((e=>e.path))),e}function r(e,t,{onChooseFile:s,onUploadProgress:o}){return t.then((e=>{if(s){const t=s(e);if(void 0!==t)return Promise.resolve(t).then((t=>void 0===t?e:t))}return e})).then((t=>!1===t?{errMsg:n,tempFilePaths:[],tempFiles:[]}:function(e,t,s=5,o){(t=Object.assign({},t)).errMsg=n;const r=t.tempFiles,i=r.length;let a=0;return new Promise((n=>{for(;a=i)return void(!r.find((e=>!e.url&&!e.errMsg))&&n(t));const u=r[s];e.uploadFile({filePath:u.path,cloudPath:u.cloudPath,fileType:u.fileType,onUploadProgress(e){e.index=s,e.tempFile=u,e.tempFilePath=u.path,o&&o(e)}}).then((e=>{u.url=e.fileID,s{u.errMsg=e.errMsg||e.message,s{uni.chooseImage({count:t,sizeType:n,sourceType:r,extension:i,success(t){e(o(t,\"image\"))},fail(e){a({errMsg:e.errMsg.replace(\"chooseImage:fail\",s)})}})}))}(t),t):\"video\"===t.type?r(e,function(e){const{camera:t,compressed:n,maxDuration:r,sourceType:i=[\"album\",\"camera\"],extension:a}=e;return new Promise(((e,c)=>{uni.chooseVideo({camera:t,compressed:n,maxDuration:r,sourceType:i,extension:a,success(t){const{tempFilePath:n,duration:s,size:r,height:i,width:a}=t;e(o({errMsg:\"chooseVideo:ok\",tempFilePaths:[n],tempFiles:[{name:t.tempFile&&t.tempFile.name||\"\",path:n,size:r,type:t.tempFile&&t.tempFile.type||\"\",width:a,height:i,duration:s,fileType:\"video\",cloudPath:\"\"}]},\"video\"))},fail(e){c({errMsg:e.errMsg.replace(\"chooseVideo:fail\",s)})}})}))}(t),t):r(e,function(e){const{count:t,extension:n}=e;return new Promise(((e,r)=>{let i=uni.chooseFile;if(\"undefined\"!=typeof wx&&\"function\"==typeof wx.chooseMessageFile&&(i=wx.chooseMessageFile),\"function\"!=typeof i)return r({errMsg:s+\" 请指定 type 类型,该平台仅支持选择 image 或 video。\"});i({type:\"all\",count:t,extension:n,success(t){e(o(t))},fail(e){r({errMsg:e.errMsg.replace(\"chooseFile:fail\",s)})}})}))}(t),t)}}})),Gt=n(Xt);const Qt=\"manual\";function Zt(e){return{props:{localdata:{type:Array,default:()=>[]},options:{type:[Object,Array],default:()=>({})},spaceInfo:{type:Object,default:()=>({})},collection:{type:[String,Array],default:\"\"},action:{type:String,default:\"\"},field:{type:String,default:\"\"},orderby:{type:String,default:\"\"},where:{type:[String,Object],default:\"\"},pageData:{type:String,default:\"add\"},pageCurrent:{type:Number,default:1},pageSize:{type:Number,default:20},getcount:{type:[Boolean,String],default:!1},gettree:{type:[Boolean,String],default:!1},gettreepath:{type:[Boolean,String],default:!1},startwith:{type:String,default:\"\"},limitlevel:{type:Number,default:10},groupby:{type:String,default:\"\"},groupField:{type:String,default:\"\"},distinct:{type:[Boolean,String],default:!1},foreignKey:{type:String,default:\"\"},loadtime:{type:String,default:\"auto\"},manual:{type:Boolean,default:!1}},data:()=>({mixinDatacomLoading:!1,mixinDatacomHasMore:!1,mixinDatacomResData:[],mixinDatacomErrorMessage:\"\",mixinDatacomPage:{}}),created(){this.mixinDatacomPage={current:this.pageCurrent,size:this.pageSize,count:0},this.$watch((()=>{var e=[];return[\"pageCurrent\",\"pageSize\",\"localdata\",\"collection\",\"action\",\"field\",\"orderby\",\"where\",\"getont\",\"getcount\",\"gettree\",\"groupby\",\"groupField\",\"distinct\"].forEach((t=>{e.push(this[t])})),e}),((e,t)=>{if(this.loadtime===Qt)return;let n=!1;const s=[];for(let o=2;o{this.mixinDatacomLoading=!1;const{data:s,count:o}=n.result;this.getcount&&(this.mixinDatacomPage.count=o),this.mixinDatacomHasMore=s.length{this.mixinDatacomLoading=!1,this.mixinDatacomErrorMessage=e,n&&n(e)})))},mixinDatacomGet(t={}){let n=e.database(this.spaceInfo);const s=t.action||this.action;s&&(n=n.action(s));const o=t.collection||this.collection;n=Array.isArray(o)?n.collection(...o):n.collection(o);const r=t.where||this.where;r&&Object.keys(r).length&&(n=n.where(r));const i=t.field||this.field;i&&(n=n.field(i));const a=t.foreignKey||this.foreignKey;a&&(n=n.foreignKey(a));const c=t.groupby||this.groupby;c&&(n=n.groupBy(c));const u=t.groupField||this.groupField;u&&(n=n.groupField(u));!0===(void 0!==t.distinct?t.distinct:this.distinct)&&(n=n.distinct());const l=t.orderby||this.orderby;l&&(n=n.orderBy(l));const h=void 0!==t.pageCurrent?t.pageCurrent:this.mixinDatacomPage.current,d=void 0!==t.pageSize?t.pageSize:this.mixinDatacomPage.size,f=void 0!==t.getcount?t.getcount:this.getcount,g=void 0!==t.gettree?t.gettree:this.gettree,p=void 0!==t.gettreepath?t.gettreepath:this.gettreepath,m={getCount:f},y={limitLevel:void 0!==t.limitlevel?t.limitlevel:this.limitlevel,startWith:void 0!==t.startwith?t.startwith:this.startwith};return g&&(m.getTree=y),p&&(m.getTreePath=y),n=n.skip(d*(h-1)).limit(d).get(m),n}}}}function en(e){return function(t,n={}){n=function(e,t={}){return e.customUI=t.customUI||e.customUI,Object.assign(e.loadingOptions,t.loadingOptions),Object.assign(e.errorOptions,t.errorOptions),e}({customUI:!1,loadingOptions:{title:\"加载中...\",mask:!0},errorOptions:{type:\"modal\",retry:!1}},n);const{customUI:s,loadingOptions:o,errorOptions:r}=n,i=!s;return new Proxy({},{get:(n,s)=>async function n(...c){let u;i&&uni.showLoading({title:o.title,mask:o.mask});try{u=await e.callFunction({name:t,type:a,data:{method:s,params:c}})}catch(e){u={result:e}}const{errCode:l,errMsg:h,newToken:d}=u.result||{};if(i&&uni.hideLoading(),d&&d.token&&d.tokenExpired&&(nt(d),N(E,{...d})),l){if(i)if(\"toast\"===r.type)uni.showToast({title:h,icon:\"none\"});else{if(\"modal\"!==r.type)throw new Error(`Invalid errorOptions.type: ${r.type}`);{const{confirm:e}=await async function({title:e,content:t,showCancel:n,cancelText:s,confirmText:o}={}){return new Promise(((r,i)=>{uni.showModal({title:e,content:t,showCancel:n,cancelText:s,confirmText:o,success(e){r(e)},fail(){r({confirm:!1,cancel:!0})}})}))}({title:\"提示\",content:h,showCancel:r.retry,cancelText:\"取消\",confirmText:r.retry?\"重试\":\"确定\"});if(r.retry&&e)return n(...c)}}const e=new M({code:l,message:h,requestId:u.requestId});throw e.detail=u.result,N(O,{type:x,content:e}),e}return N(O,{type:x,content:u.result}),u.result}})}}async function tn(e,t){const n=`http://${e}:${t}/system/ping`;try{const e=await(s={url:n,timeout:500},new Promise(((e,t)=>{H.request({...s,success(t){e(t)},fail(e){t(e)}})})));return!(!e.data||0!==e.data.code)}catch(e){return!1}var s}function nn(e){if(e.initUniCloudStatus&&\"rejected\"!==e.initUniCloudStatus)return;let t=Promise.resolve();var n;n=1,t=new Promise(((e,t)=>{setTimeout((()=>{e()}),n)})),e.isReady=!1,e.isDefault=!1;const s=e.auth();e.initUniCloudStatus=\"pending\",e.initUniCloud=t.then((()=>s.getLoginState())).then((e=>e?Promise.resolve():s.signInAnonymously())).then((()=>{if(!d)return Promise.resolve();if(\"app\"===g&&\"ios\"===uni.getSystemInfoSync().osName){const{osName:e,osVersion:t}=uni.getSystemInfoSync();\"ios\"===e&&function(e){if(!e||\"string\"!=typeof e)return 0;const t=e.match(/^(\\d+)./);return t&&t[1]?parseInt(t[1]):0}(t)>=14&&console.warn(\"iOS 14及以上版本连接uniCloud本地调试服务需要允许客户端查找并连接到本地网络上的设备(仅开发模式生效,发行模式会连接uniCloud云端服务)\")}if(d&&e.debugInfo){const{address:t,servePort:n}=e.debugInfo;return async function(e,t){let n;for(let s=0;s{if(!d)return Promise.resolve();const s=console[\"app\"===g?\"error\":\"warn\"];if(t)e.localAddress=t,e.localPort=n;else if(e.debugInfo){let t=\"\";\"remote\"===e.debugInfo.initialLaunchType?(e.debugInfo.forceRemote=!0,t=\"当前客户端和HBuilderX不在同一局域网下(或其他网络原因无法连接HBuilderX),uniCloud本地调试服务不对当前客户端生效。\\n- 如果不使用uniCloud本地调试服务,请直接忽略此信息。\\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。\\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs\"):t=\"无法连接uniCloud本地调试服务,请检查当前客户端是否与主机在同一局域网下。\\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。\\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs\",\"web\"===g&&(t+=\"\\n- 部分浏览器开启节流模式之后访问本地地址受限,请检查是否启用了节流模式\"),0===g.indexOf(\"mp-\")&&(t+=\"\\n- 小程序中如何使用uniCloud,请参考:https://uniapp.dcloud.net.cn/uniCloud/publish.html#useinmp\"),s(t)}})).then((()=>{st(),e.isReady=!0,e.initUniCloudStatus=\"fulfilled\"})).catch((t=>{console.error(t),e.initUniCloudStatus=\"rejected\"}))}let sn=new class{init(e){let t={};const n=d&&(\"web\"===g&&navigator.userAgent.indexOf(\"HBuilderX\")>0||\"app\"===g);switch(e.provider){case\"tcb\":case\"tencent\":t=et.init(Object.assign(e,{debugLog:n}));break;case\"aliyun\":t=J.init(Object.assign(e,{debugLog:n}));break;case\"private\":t=rt.init(Object.assign(e,{debugLog:n}));break;default:throw new Error(\"未提供正确的provider参数\")}const s=p;d&&s&&!s.code&&(t.debugInfo=s),nn(t),t.reInit=function(){nn(this)},ft(t),function(e){const t=e.uploadFile;e.uploadFile=function(e){return t.call(this,e)}}(t),Pt(t),function(e){e.getCurrentUserInfo=Yt,e.chooseAndUploadFile=Gt.initChooseAndUploadFile(e),Object.assign(e,{get mixinDatacom(){return Zt(e)}}),e.importObject=en(e)}(t);return[\"callFunction\",\"uploadFile\",\"deleteFile\",\"getTempFileURL\",\"downloadFile\",\"chooseAndUploadFile\"].forEach((e=>{if(!t[e])return;const n=t[e];t[e]=function(){return t.reInit(),n.apply(t,Array.from(arguments))},t[e]=F(t[e],e).bind(t)})),t.init=this.init,t}};(()=>{{const e=m;let t={};if(1===e.length)t=e[0],sn=sn.init(t),sn.isDefault=!0;else{const t=[\"auth\",\"callFunction\",\"uploadFile\",\"deleteFile\",\"getTempFileURL\",\"downloadFile\",\"database\",\"getCurrentUSerInfo\",\"importObject\"];let n;n=e&&e.length>0?\"应用有多个服务空间,请通过uniCloud.init方法指定要使用的服务空间\":y?\"应用未关联服务空间,请在uniCloud目录右键关联服务空间\":\"uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目,且需要在uniCloud目录关联服务空间\",t.forEach((e=>{sn[e]=function(){return console.error(n),Promise.reject(new M({code:\"SYS_ERR\",message:n}))}}))}Object.assign(sn,{get mixinDatacom(){return Zt(sn)}}),Wt(sn),sn.addInterceptor=v,sn.removeInterceptor=A,d&&\"web\"===g&&(window.uniCloud=sn)}})();var on=sn;export{on as default};\n","export default {\"appid\":\"__UNI__915967A\"}","/*\r\n * uCharts (R)\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts (R) 官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\r\n\r\n'use strict';\r\n\r\nvar config = {\r\n version: 'v2.4.3-20220505',\r\n yAxisWidth: 15,\r\n xAxisHeight: 22,\r\n xAxisTextPadding: 3,\r\n padding: [10, 10, 10, 10],\r\n pixelRatio: 1,\r\n rotate: false,\r\n fontSize: 13,\r\n fontColor: '#666666',\r\n dataPointShape: ['circle', 'circle', 'circle', 'circle'],\r\n color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],\r\n linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],\r\n pieChartLinePadding: 15,\r\n pieChartTextPadding: 5,\r\n titleFontSize: 20,\r\n subtitleFontSize: 15,\r\n toolTipPadding: 3,\r\n toolTipBackground: '#000000',\r\n toolTipOpacity: 0.7,\r\n toolTipLineHeight: 20,\r\n radarLabelTextMargin: 13,\r\n};\r\n\r\nvar assign = function(target, ...varArgs) {\r\n if (target == null) {\r\n throw new TypeError('[uCharts] Cannot convert undefined or null to object');\r\n }\r\n if (!varArgs || varArgs.length <= 0) {\r\n return target;\r\n }\r\n // 深度合并对象\r\n function deepAssign(obj1, obj2) {\r\n for (let key in obj2) {\r\n obj1[key] = obj1[key] && obj1[key].toString() === \"[object Object]\" ?\r\n deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];\r\n }\r\n return obj1;\r\n }\r\n varArgs.forEach(val => {\r\n target = deepAssign(target, val);\r\n });\r\n return target;\r\n};\r\n\r\nvar util = {\r\n toFixed: function toFixed(num, limit) {\r\n limit = limit || 2;\r\n if (this.isFloat(num)) {\r\n num = num.toFixed(limit);\r\n }\r\n return num;\r\n },\r\n isFloat: function isFloat(num) {\r\n return num % 1 !== 0;\r\n },\r\n approximatelyEqual: function approximatelyEqual(num1, num2) {\r\n return Math.abs(num1 - num2) < 1e-10;\r\n },\r\n isSameSign: function isSameSign(num1, num2) {\r\n return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;\r\n },\r\n isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {\r\n return this.isSameSign(p1.x, p2.x);\r\n },\r\n isCollision: function isCollision(obj1, obj2) {\r\n obj1.end = {};\r\n obj1.end.x = obj1.start.x + obj1.width;\r\n obj1.end.y = obj1.start.y - obj1.height;\r\n obj2.end = {};\r\n obj2.end.x = obj2.start.x + obj2.width;\r\n obj2.end.y = obj2.start.y - obj2.height;\r\n var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;\r\n return !flag;\r\n }\r\n};\r\n\r\n//兼容H5点击事件\r\nfunction getH5Offset(e) {\r\n e.mp = {\r\n changedTouches: []\r\n };\r\n e.mp.changedTouches.push({\r\n x: e.offsetX,\r\n y: e.offsetY\r\n });\r\n return e;\r\n}\r\n\r\n// hex 转 rgba\r\nfunction hexToRgb(hexValue, opc) {\r\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n var hex = hexValue.replace(rgx, function(m, r, g, b) {\r\n return r + r + g + g + b + b;\r\n });\r\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n var r = parseInt(rgb[1], 16);\r\n var g = parseInt(rgb[2], 16);\r\n var b = parseInt(rgb[3], 16);\r\n return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';\r\n}\r\n\r\nfunction findRange(num, type, limit) {\r\n if (isNaN(num)) {\r\n throw new Error('[uCharts] series数据需为Number格式');\r\n }\r\n limit = limit || 10;\r\n type = type ? type : 'upper';\r\n var multiple = 1;\r\n while (limit < 1) {\r\n limit *= 10;\r\n multiple *= 10;\r\n }\r\n if (type === 'upper') {\r\n num = Math.ceil(num * multiple);\r\n } else {\r\n num = Math.floor(num * multiple);\r\n }\r\n while (num % limit !== 0) {\r\n if (type === 'upper') {\r\n if (num == num + 1) { //修复数据值过大num++无效的bug by 向日葵 @xrk_jy\r\n break;\r\n }\r\n num++;\r\n } else {\r\n num--;\r\n }\r\n }\r\n return num / multiple;\r\n}\r\n\r\nfunction calCandleMA(dayArr, nameArr, colorArr, kdata) {\r\n let seriesTemp = [];\r\n for (let k = 0; k < dayArr.length; k++) {\r\n let seriesItem = {\r\n data: [],\r\n name: nameArr[k],\r\n color: colorArr[k]\r\n };\r\n for (let i = 0, len = kdata.length; i < len; i++) {\r\n if (i < dayArr[k]) {\r\n seriesItem.data.push(null);\r\n continue;\r\n }\r\n let sum = 0;\r\n for (let j = 0; j < dayArr[k]; j++) {\r\n sum += kdata[i - j][1];\r\n }\r\n seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));\r\n }\r\n seriesTemp.push(seriesItem);\r\n }\r\n return seriesTemp;\r\n}\r\n\r\nfunction calValidDistance(self, distance, chartData, config, opts) {\r\n var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];\r\n var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);\r\n if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){\r\n if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2\r\n dataChartWidth += (opts.extra.mount.widthRatio - 1)*chartData.eachSpacing;\r\n }\r\n var validDistance = distance;\r\n if (distance >= 0) {\r\n validDistance = 0;\r\n self.uevent.trigger('scrollLeft');\r\n self.scrollOption.position = 'left'\r\n opts.xAxis.scrollPosition = 'left';\r\n } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {\r\n validDistance = dataChartAreaWidth - dataChartWidth;\r\n self.uevent.trigger('scrollRight');\r\n self.scrollOption.position = 'right'\r\n opts.xAxis.scrollPosition = 'right';\r\n } else {\r\n self.scrollOption.position = distance\r\n opts.xAxis.scrollPosition = distance;\r\n }\r\n return validDistance;\r\n}\r\n\r\nfunction isInAngleRange(angle, startAngle, endAngle) {\r\n function adjust(angle) {\r\n while (angle < 0) {\r\n angle += 2 * Math.PI;\r\n }\r\n while (angle > 2 * Math.PI) {\r\n angle -= 2 * Math.PI;\r\n }\r\n return angle;\r\n }\r\n angle = adjust(angle);\r\n startAngle = adjust(startAngle);\r\n endAngle = adjust(endAngle);\r\n if (startAngle > endAngle) {\r\n endAngle += 2 * Math.PI;\r\n if (angle < startAngle) {\r\n angle += 2 * Math.PI;\r\n }\r\n }\r\n return angle >= startAngle && angle <= endAngle;\r\n}\r\n\r\nfunction createCurveControlPoints(points, i) {\r\n function isNotMiddlePoint(points, i) {\r\n if (points[i - 1] && points[i + 1]) {\r\n return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y,\r\n points[i + 1].y);\r\n } else {\r\n return false;\r\n }\r\n }\r\n function isNotMiddlePointX(points, i) {\r\n if (points[i - 1] && points[i + 1]) {\r\n return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x,\r\n points[i + 1].x);\r\n } else {\r\n return false;\r\n }\r\n }\r\n var a = 0.2;\r\n var b = 0.2;\r\n var pAx = null;\r\n var pAy = null;\r\n var pBx = null;\r\n var pBy = null;\r\n if (i < 1) {\r\n pAx = points[0].x + (points[1].x - points[0].x) * a;\r\n pAy = points[0].y + (points[1].y - points[0].y) * a;\r\n } else {\r\n pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;\r\n pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;\r\n }\r\n\r\n if (i > points.length - 3) {\r\n var last = points.length - 1;\r\n pBx = points[last].x - (points[last].x - points[last - 1].x) * b;\r\n pBy = points[last].y - (points[last].y - points[last - 1].y) * b;\r\n } else {\r\n pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;\r\n pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;\r\n }\r\n if (isNotMiddlePoint(points, i + 1)) {\r\n pBy = points[i + 1].y;\r\n }\r\n if (isNotMiddlePoint(points, i)) {\r\n pAy = points[i].y;\r\n }\r\n if (isNotMiddlePointX(points, i + 1)) {\r\n pBx = points[i + 1].x;\r\n }\r\n if (isNotMiddlePointX(points, i)) {\r\n pAx = points[i].x;\r\n }\r\n if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {\r\n pAy = points[i].y;\r\n }\r\n if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {\r\n pBy = points[i + 1].y;\r\n }\r\n if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {\r\n pAx = points[i].x;\r\n }\r\n if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {\r\n pBx = points[i + 1].x;\r\n }\r\n return {\r\n ctrA: {\r\n x: pAx,\r\n y: pAy\r\n },\r\n ctrB: {\r\n x: pBx,\r\n y: pBy\r\n }\r\n };\r\n}\r\n\r\n\r\nfunction convertCoordinateOrigin(x, y, center) {\r\n return {\r\n x: center.x + x,\r\n y: center.y - y\r\n };\r\n}\r\n\r\nfunction avoidCollision(obj, target) {\r\n if (target) {\r\n // is collision test\r\n while (util.isCollision(obj, target)) {\r\n if (obj.start.x > 0) {\r\n obj.start.y--;\r\n } else if (obj.start.x < 0) {\r\n obj.start.y++;\r\n } else {\r\n if (obj.start.y > 0) {\r\n obj.start.y++;\r\n } else {\r\n obj.start.y--;\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\n\r\nfunction fixPieSeries(series, opts, config){\r\n let pieSeriesArr = [];\r\n if(series.length>0 && series[0].data.constructor.toString().indexOf('Array') > -1){\r\n opts._pieSeries_ = series;\r\n let oldseries = series[0].data;\r\n for (var i = 0; i < oldseries.length; i++) {\r\n oldseries[i].formatter = series[0].formatter;\r\n oldseries[i].data = oldseries[i].value;\r\n pieSeriesArr.push(oldseries[i]);\r\n }\r\n opts.series = pieSeriesArr;\r\n }else{\r\n pieSeriesArr = series;\r\n }\r\n return pieSeriesArr;\r\n}\r\n\r\nfunction fillSeries(series, opts, config) {\r\n var index = 0;\r\n for (var i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n if (!item.color) {\r\n item.color = config.color[index];\r\n index = (index + 1) % config.color.length;\r\n }\r\n if (!item.linearIndex) {\r\n item.linearIndex = i;\r\n }\r\n if (!item.index) {\r\n item.index = 0;\r\n }\r\n if (!item.type) {\r\n item.type = opts.type;\r\n }\r\n if (typeof item.show == \"undefined\") {\r\n item.show = true;\r\n }\r\n if (!item.type) {\r\n item.type = opts.type;\r\n }\r\n if (!item.pointShape) {\r\n item.pointShape = \"circle\";\r\n }\r\n if (!item.legendShape) {\r\n switch (item.type) {\r\n case 'line':\r\n item.legendShape = \"line\";\r\n break;\r\n case 'column':\r\n case 'bar':\r\n item.legendShape = \"rect\";\r\n break;\r\n case 'area':\r\n case 'mount':\r\n item.legendShape = \"triangle\";\r\n break;\r\n default:\r\n item.legendShape = \"circle\";\r\n }\r\n }\r\n }\r\n return series;\r\n}\r\n\r\nfunction fillCustomColor(linearType, customColor, series, config) {\r\n var newcolor = customColor || [];\r\n if (linearType == 'custom' && newcolor.length == 0 ) {\r\n newcolor = config.linearColor;\r\n }\r\n if (linearType == 'custom' && newcolor.length < series.length) {\r\n let chazhi = series.length - newcolor.length;\r\n for (var i = 0; i < chazhi; i++) {\r\n newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);\r\n }\r\n }\r\n return newcolor;\r\n}\r\n\r\nfunction getDataRange(minData, maxData) {\r\n var limit = 0;\r\n var range = maxData - minData;\r\n if (range >= 10000) {\r\n limit = 1000;\r\n } else if (range >= 1000) {\r\n limit = 100;\r\n } else if (range >= 100) {\r\n limit = 10;\r\n } else if (range >= 10) {\r\n limit = 5;\r\n } else if (range >= 1) {\r\n limit = 1;\r\n } else if (range >= 0.1) {\r\n limit = 0.1;\r\n } else if (range >= 0.01) {\r\n limit = 0.01;\r\n } else if (range >= 0.001) {\r\n limit = 0.001;\r\n } else if (range >= 0.0001) {\r\n limit = 0.0001;\r\n } else if (range >= 0.00001) {\r\n limit = 0.00001;\r\n } else {\r\n limit = 0.000001;\r\n }\r\n return {\r\n minRange: findRange(minData, 'lower', limit),\r\n maxRange: findRange(maxData, 'upper', limit)\r\n };\r\n}\r\n\r\nfunction measureText(text, fontSize, context) {\r\n var width = 0;\r\n text = String(text);\r\n\r\n\r\n\r\n if (context !== false && context !== undefined && context.setFontSize && context.measureText) {\r\n context.setFontSize(fontSize);\r\n return context.measureText(text).width;\r\n } else {\r\n var text = text.split('');\r\n for (let i = 0; i < text.length; i++) {\r\n let item = text[i];\r\n if (/[a-zA-Z]/.test(item)) {\r\n width += 7;\r\n } else if (/[0-9]/.test(item)) {\r\n width += 5.5;\r\n } else if (/\\./.test(item)) {\r\n width += 2.7;\r\n } else if (/-/.test(item)) {\r\n width += 3.25;\r\n } else if (/:/.test(item)) {\r\n width += 2.5;\r\n } else if (/[\\u4e00-\\u9fa5]/.test(item)) {\r\n width += 10;\r\n } else if (/\\(|\\)/.test(item)) {\r\n width += 3.73;\r\n } else if (/\\s/.test(item)) {\r\n width += 2.5;\r\n } else if (/%/.test(item)) {\r\n width += 8;\r\n } else {\r\n width += 10;\r\n }\r\n }\r\n return width * fontSize / 10;\r\n }\r\n}\r\n\r\nfunction dataCombine(series) {\r\n return series.reduce(function(a, b) {\r\n return (a.data ? a.data : a).concat(b.data);\r\n }, []);\r\n}\r\n\r\nfunction dataCombineStack(series, len) {\r\n var sum = new Array(len);\r\n for (var j = 0; j < sum.length; j++) {\r\n sum[j] = 0;\r\n }\r\n for (var i = 0; i < series.length; i++) {\r\n for (var j = 0; j < sum.length; j++) {\r\n sum[j] += series[i].data[j];\r\n }\r\n }\r\n return series.reduce(function(a, b) {\r\n return (a.data ? a.data : a).concat(b.data).concat(sum);\r\n }, []);\r\n}\r\n\r\nfunction getTouches(touches, opts, e) {\r\n let x, y;\r\n if (touches.clientX) {\r\n if (opts.rotate) {\r\n y = opts.height - touches.clientX * opts.pix;\r\n x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix;\r\n } else {\r\n x = touches.clientX * opts.pix;\r\n y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix;\r\n }\r\n } else {\r\n if (opts.rotate) {\r\n y = opts.height - touches.x * opts.pix;\r\n x = touches.y * opts.pix;\r\n } else {\r\n x = touches.x * opts.pix;\r\n y = touches.y * opts.pix;\r\n }\r\n }\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n}\r\n\r\nfunction getSeriesDataItem(series, index, group) {\r\n var data = [];\r\n var newSeries = [];\r\n var indexIsArr = index.constructor.toString().indexOf('Array') > -1;\r\n if(indexIsArr){\r\n let tempSeries = filterSeries(series);\r\n for (var i = 0; i < group.length; i++) {\r\n newSeries.push(tempSeries[group[i]]);\r\n }\r\n }else{\r\n newSeries = series;\r\n };\r\n for (let i = 0; i < newSeries.length; i++) {\r\n let item = newSeries[i];\r\n let tmpindex = -1;\r\n if(indexIsArr){\r\n tmpindex = index[i];\r\n }else{\r\n tmpindex = index;\r\n }\r\n if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) {\r\n let seriesItem = {};\r\n seriesItem.color = item.color;\r\n seriesItem.type = item.type;\r\n seriesItem.style = item.style;\r\n seriesItem.pointShape = item.pointShape;\r\n seriesItem.disableLegend = item.disableLegend;\r\n seriesItem.name = item.name;\r\n seriesItem.show = item.show;\r\n seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];\r\n data.push(seriesItem);\r\n }\r\n }\r\n return data;\r\n}\r\n\r\nfunction getMaxTextListLength(list, fontSize, context) {\r\n var lengthList = list.map(function(item) {\r\n return measureText(item, fontSize, context);\r\n });\r\n return Math.max.apply(null, lengthList);\r\n}\r\n\r\nfunction getRadarCoordinateSeries(length) {\r\n var eachAngle = 2 * Math.PI / length;\r\n var CoordinateSeries = [];\r\n for (var i = 0; i < length; i++) {\r\n CoordinateSeries.push(eachAngle * i);\r\n }\r\n return CoordinateSeries.map(function(item) {\r\n return -1 * item + Math.PI / 2;\r\n });\r\n}\r\n\r\nfunction getToolTipData(seriesData, opts, index, group, categories) {\r\n var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\r\n var calPoints = opts.chartData.calPoints?opts.chartData.calPoints:[];\r\n let points = {};\r\n if(group.length > 0){\r\n let filterPoints = [];\r\n for (let i = 0; i < group.length; i++) {\r\n filterPoints.push(calPoints[group[i]])\r\n }\r\n points = filterPoints[0][index[0]];\r\n }else{\r\n for (let i = 0; i < calPoints.length; i++) {\r\n if(calPoints[i][index]){\r\n points = calPoints[i][index];\r\n break;\r\n }\r\n }\r\n };\r\n var textList = seriesData.map(function(item) {\r\n let titleText = null;\r\n if (opts.categories && opts.categories.length>0) {\r\n titleText = categories[index];\r\n };\r\n return {\r\n text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,\r\n color: item.color\r\n };\r\n });\r\n var offset = {\r\n x: Math.round(points.x),\r\n y: Math.round(points.y)\r\n };\r\n return {\r\n textList: textList,\r\n offset: offset\r\n };\r\n}\r\n\r\nfunction getMixToolTipData(seriesData, opts, index, categories) {\r\n var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\r\n var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;\r\n var textList = seriesData.map(function(item) {\r\n return {\r\n text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data,\r\n color: item.color,\r\n disableLegend: item.disableLegend ? true : false\r\n };\r\n });\r\n textList = textList.filter(function(item) {\r\n if (item.disableLegend !== true) {\r\n return item;\r\n }\r\n });\r\n var offset = {\r\n x: Math.round(points),\r\n y: 0\r\n };\r\n return {\r\n textList: textList,\r\n offset: offset\r\n };\r\n}\r\n\r\nfunction getCandleToolTipData(series, seriesData, opts, index, categories, extra) {\r\n var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\r\n var calPoints = opts.chartData.calPoints;\r\n let upColor = extra.color.upFill;\r\n let downColor = extra.color.downFill;\r\n //颜色顺序为开盘,收盘,最低,最高\r\n let color = [upColor, upColor, downColor, upColor];\r\n var textList = [];\r\n seriesData.map(function(item) {\r\n if (index == 0) {\r\n if (item.data[1] - item.data[0] < 0) {\r\n color[1] = downColor;\r\n } else {\r\n color[1] = upColor;\r\n }\r\n } else {\r\n if (item.data[0] < series[index - 1][1]) {\r\n color[0] = downColor;\r\n }\r\n if (item.data[1] < item.data[0]) {\r\n color[1] = downColor;\r\n }\r\n if (item.data[2] > series[index - 1][1]) {\r\n color[2] = upColor;\r\n }\r\n if (item.data[3] < series[index - 1][1]) {\r\n color[3] = downColor;\r\n }\r\n }\r\n let text1 = {\r\n text: '开盘:' + item.data[0],\r\n color: color[0]\r\n };\r\n let text2 = {\r\n text: '收盘:' + item.data[1],\r\n color: color[1]\r\n };\r\n let text3 = {\r\n text: '最低:' + item.data[2],\r\n color: color[2]\r\n };\r\n let text4 = {\r\n text: '最高:' + item.data[3],\r\n color: color[3]\r\n };\r\n textList.push(text1, text2, text3, text4);\r\n });\r\n var validCalPoints = [];\r\n var offset = {\r\n x: 0,\r\n y: 0\r\n };\r\n for (let i = 0; i < calPoints.length; i++) {\r\n let points = calPoints[i];\r\n if (typeof points[index] !== 'undefined' && points[index] !== null) {\r\n validCalPoints.push(points[index]);\r\n }\r\n }\r\n offset.x = Math.round(validCalPoints[0][0].x);\r\n return {\r\n textList: textList,\r\n offset: offset\r\n };\r\n}\r\n\r\nfunction filterSeries(series) {\r\n let tempSeries = [];\r\n for (let i = 0; i < series.length; i++) {\r\n if (series[i].show == true) {\r\n tempSeries.push(series[i])\r\n }\r\n }\r\n return tempSeries;\r\n}\r\n\r\nfunction findCurrentIndex(currentPoints, calPoints, opts, config) {\r\n var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\r\n var current={ index:-1, group:[] };\r\n var spacing = opts.chartData.eachSpacing / 2;\r\n let xAxisPoints = [];\r\n if (calPoints && calPoints.length > 0) {\r\n if (!opts.categories) {\r\n spacing = 0;\r\n }else{\r\n for (let i = 1; i < opts.chartData.xAxisPoints.length; i++) {\r\n xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);\r\n }\r\n if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {\r\n xAxisPoints = opts.chartData.xAxisPoints;\r\n }\r\n }\r\n if (isInExactChartArea(currentPoints, opts, config)) {\r\n if (!opts.categories) {\r\n let timePoints = Array(calPoints.length);\r\n for (let i = 0; i < calPoints.length; i++) {\r\n timePoints[i] = Array(calPoints[i].length)\r\n for (let j = 0; j < calPoints[i].length; j++) {\r\n timePoints[i][j] = (Math.abs(calPoints[i][j].x - currentPoints.x));\r\n }\r\n };\r\n let pointValue = Array(timePoints.length);\r\n let pointIndex = Array(timePoints.length);\r\n for (let i = 0; i < timePoints.length; i++) {\r\n pointValue[i] = Math.min.apply(null, timePoints[i]);\r\n pointIndex[i] = timePoints[i].indexOf(pointValue[i]);\r\n }\r\n let minValue = Math.min.apply(null, pointValue);\r\n current.index = [];\r\n for (let i = 0; i < pointValue.length; i++) {\r\n if(pointValue[i] == minValue){\r\n current.group.push(i);\r\n current.index.push(pointIndex[i]);\r\n }\r\n };\r\n }else{\r\n xAxisPoints.forEach(function(item, index) {\r\n if (currentPoints.x + offset + spacing > item) {\r\n current.index = index;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n return current;\r\n}\r\n\r\nfunction findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {\r\n var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\r\n var current={ index:-1, group:[] };\r\n var spacing = opts.chartData.eachSpacing / 2;\r\n let yAxisPoints = opts.chartData.yAxisPoints;\r\n if (calPoints && calPoints.length > 0) {\r\n if (isInExactChartArea(currentPoints, opts, config)) {\r\n yAxisPoints.forEach(function(item, index) {\r\n if (currentPoints.y + offset + spacing > item) {\r\n current.index = index;\r\n }\r\n });\r\n }\r\n }\r\n return current;\r\n}\r\n\r\nfunction findLegendIndex(currentPoints, legendData, opts) {\r\n let currentIndex = -1;\r\n let gap = 0;\r\n if (isInExactLegendArea(currentPoints, legendData.area)) {\r\n let points = legendData.points;\r\n let index = -1;\r\n for (let i = 0, len = points.length; i < len; i++) {\r\n let item = points[i];\r\n for (let j = 0; j < item.length; j++) {\r\n index += 1;\r\n let area = item[j]['area'];\r\n if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {\r\n currentIndex = index;\r\n break;\r\n }\r\n }\r\n }\r\n return currentIndex;\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction isInExactLegendArea(currentPoints, area) {\r\n return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y;\r\n}\r\n\r\nfunction isInExactChartArea(currentPoints, opts, config) {\r\n return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];\r\n}\r\n\r\nfunction findRadarChartCurrentIndex(currentPoints, radarData, count) {\r\n var eachAngleArea = 2 * Math.PI / count;\r\n var currentIndex = -1;\r\n if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {\r\n var fixAngle = function fixAngle(angle) {\r\n if (angle < 0) {\r\n angle += 2 * Math.PI;\r\n }\r\n if (angle > 2 * Math.PI) {\r\n angle -= 2 * Math.PI;\r\n }\r\n return angle;\r\n };\r\n var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);\r\n angle = -1 * angle;\r\n if (angle < 0) {\r\n angle += 2 * Math.PI;\r\n }\r\n var angleList = radarData.angleList.map(function(item) {\r\n item = fixAngle(-1 * item);\r\n return item;\r\n });\r\n angleList.forEach(function(item, index) {\r\n var rangeStart = fixAngle(item - eachAngleArea / 2);\r\n var rangeEnd = fixAngle(item + eachAngleArea / 2);\r\n if (rangeEnd < rangeStart) {\r\n rangeEnd += 2 * Math.PI;\r\n }\r\n if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {\r\n currentIndex = index;\r\n }\r\n });\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findFunnelChartCurrentIndex(currentPoints, funnelData) {\r\n var currentIndex = -1;\r\n for (var i = 0, len = funnelData.series.length; i < len; i++) {\r\n var item = funnelData.series[i];\r\n if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findWordChartCurrentIndex(currentPoints, wordData) {\r\n var currentIndex = -1;\r\n for (var i = 0, len = wordData.length; i < len; i++) {\r\n var item = wordData[i];\r\n if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findMapChartCurrentIndex(currentPoints, opts) {\r\n var currentIndex = -1;\r\n var cData = opts.chartData.mapData;\r\n var data = opts.series;\r\n var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);\r\n var poi = [tmp.x, tmp.y];\r\n for (var i = 0, len = data.length; i < len; i++) {\r\n var item = data[i].geometry.coordinates;\r\n if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findRoseChartCurrentIndex(currentPoints, pieData, opts) {\r\n var currentIndex = -1;\r\n var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);\r\n if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\r\n var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\r\n angle = -angle;\r\n if(opts.extra.rose && opts.extra.rose.offsetAngle){\r\n angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;\r\n }\r\n for (var i = 0, len = series.length; i < len; i++) {\r\n if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction findPieChartCurrentIndex(currentPoints, pieData, opts) {\r\n var currentIndex = -1;\r\n var series = getPieDataPoints(pieData.series);\r\n if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\r\n var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\r\n angle = -angle;\r\n if(opts.extra.pie && opts.extra.pie.offsetAngle){\r\n angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;\r\n }\r\n if(opts.extra.ring && opts.extra.ring.offsetAngle){\r\n angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;\r\n }\r\n for (var i = 0, len = series.length; i < len; i++) {\r\n if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n return currentIndex;\r\n}\r\n\r\nfunction isInExactPieChartArea(currentPoints, center, radius) {\r\n return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);\r\n}\r\n\r\n\r\nfunction splitPoints(points,eachSeries) {\r\n var newPoints = [];\r\n var items = [];\r\n points.forEach(function(item, index) {\r\n if(eachSeries.connectNulls){\r\n if (item !== null) {\r\n items.push(item);\r\n }\r\n }else{\r\n if (item !== null) {\r\n items.push(item);\r\n } else {\r\n if (items.length) {\r\n newPoints.push(items);\r\n }\r\n items = [];\r\n }\r\n }\r\n \r\n });\r\n if (items.length) {\r\n newPoints.push(items);\r\n }\r\n return newPoints;\r\n}\r\n\r\n\r\nfunction calLegendData(series, opts, config, chartData, context) {\r\n let legendData = {\r\n area: {\r\n start: {\r\n x: 0,\r\n y: 0\r\n },\r\n end: {\r\n x: 0,\r\n y: 0\r\n },\r\n width: 0,\r\n height: 0,\r\n wholeWidth: 0,\r\n wholeHeight: 0\r\n },\r\n points: [],\r\n widthArr: [],\r\n heightArr: []\r\n };\r\n if (opts.legend.show === false) {\r\n chartData.legendData = legendData;\r\n return legendData;\r\n }\r\n let padding = opts.legend.padding * opts.pix;\r\n let margin = opts.legend.margin * opts.pix;\r\n let fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;\r\n let shapeWidth = 15 * opts.pix;\r\n let shapeRight = 5 * opts.pix;\r\n let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\r\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\r\n let legendList = [];\r\n let widthCount = 0;\r\n let widthCountArr = [];\r\n let currentRow = [];\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n const legendText = item.legendText ? item.legendText : item.name;\r\n let itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\r\n if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {\r\n legendList.push(currentRow);\r\n widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\r\n widthCount = itemWidth;\r\n currentRow = [item];\r\n } else {\r\n widthCount += itemWidth;\r\n currentRow.push(item);\r\n }\r\n }\r\n if (currentRow.length) {\r\n legendList.push(currentRow);\r\n widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\r\n legendData.widthArr = widthCountArr;\r\n let legendWidth = Math.max.apply(null, widthCountArr);\r\n switch (opts.legend.float) {\r\n case 'left':\r\n legendData.area.start.x = opts.area[3];\r\n legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;\r\n break;\r\n case 'right':\r\n legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;\r\n legendData.area.end.x = opts.width - opts.area[1];\r\n break;\r\n default:\r\n legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;\r\n legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;\r\n }\r\n legendData.area.width = legendWidth + 2 * padding;\r\n legendData.area.wholeWidth = legendWidth + 2 * padding;\r\n legendData.area.height = legendList.length * lineHeight + 2 * padding;\r\n legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;\r\n legendData.points = legendList;\r\n }\r\n } else {\r\n let len = series.length;\r\n let maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding;\r\n let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);\r\n legendData.area.height = maxLength * lineHeight + padding * 2;\r\n legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;\r\n switch (opts.legend.float) {\r\n case 'top':\r\n legendData.area.start.y = opts.area[0] + margin;\r\n legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\r\n break;\r\n case 'bottom':\r\n legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;\r\n legendData.area.end.y = opts.height - opts.area[2] - margin;\r\n break;\r\n default:\r\n legendData.area.start.y = (opts.height - legendData.area.height) / 2;\r\n legendData.area.end.y = (opts.height + legendData.area.height) / 2;\r\n }\r\n let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1);\r\n let currentRow = [];\r\n for (let i = 0; i < lineNum; i++) {\r\n let temp = series.slice(i * maxLength, i * maxLength + maxLength);\r\n currentRow.push(temp);\r\n }\r\n legendData.points = currentRow;\r\n if (currentRow.length) {\r\n for (let i = 0; i < currentRow.length; i++) {\r\n let item = currentRow[i];\r\n let maxWidth = 0;\r\n for (let j = 0; j < item.length; j++) {\r\n let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\r\n if (itemWidth > maxWidth) {\r\n maxWidth = itemWidth;\r\n }\r\n }\r\n legendData.widthArr.push(maxWidth);\r\n legendData.heightArr.push(item.length * lineHeight + padding * 2);\r\n }\r\n let legendWidth = 0\r\n for (let i = 0; i < legendData.widthArr.length; i++) {\r\n legendWidth += legendData.widthArr[i];\r\n }\r\n legendData.area.width = legendWidth - opts.legend.itemGap * opts.pix + 2 * padding;\r\n legendData.area.wholeWidth = legendData.area.width + padding;\r\n }\r\n }\r\n switch (opts.legend.position) {\r\n case 'top':\r\n legendData.area.start.y = opts.area[0] + margin;\r\n legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\r\n break;\r\n case 'bottom':\r\n legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;\r\n legendData.area.end.y = opts.height - opts.area[2] - margin;\r\n break;\r\n case 'left':\r\n legendData.area.start.x = opts.area[3];\r\n legendData.area.end.x = opts.area[3] + legendData.area.width;\r\n break;\r\n case 'right':\r\n legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;\r\n legendData.area.end.x = opts.width - opts.area[1];\r\n break;\r\n }\r\n chartData.legendData = legendData;\r\n return legendData;\r\n}\r\n\r\nfunction calCategoriesData(categories, opts, config, eachSpacing, context) {\r\n var result = {\r\n angle: 0,\r\n xAxisHeight: config.xAxisHeight\r\n };\r\n var fontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\r\n var categoriesTextLenth = categories.map(function(item,index) {\r\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item;\r\n return measureText(String(xitem), fontSize, context);\r\n });\r\n \r\n var maxTextLength = Math.max.apply(this, categoriesTextLenth);\r\n if (opts.xAxis.rotateLabel == true) {\r\n result.angle = opts.xAxis.rotateAngle * Math.PI / 180;\r\n let tempHeight = 2 * config.xAxisTextPadding + Math.abs(maxTextLength * Math.sin(result.angle))\r\n tempHeight = tempHeight < fontSize + 2 * config.xAxisTextPadding ? tempHeight + 2 * config.xAxisTextPadding : tempHeight;\r\n if(opts.enableScroll == true && opts.xAxis.scrollShow == true){\r\n tempHeight += 12 * opts.pix;\r\n }\r\n result.xAxisHeight = tempHeight;\r\n }\r\n if (opts.xAxis.disabled){\r\n result.xAxisHeight = 0;\r\n }\r\n return result;\r\n}\r\n\r\nfunction getXAxisTextList(series, opts, config, stack) {\r\n var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\r\n var data;\r\n if (stack == 'stack') {\r\n data = dataCombineStack(series, opts.categories.length);\r\n } else {\r\n data = dataCombine(series);\r\n }\r\n var sorted = [];\r\n // remove null from data\r\n data = data.filter(function(item) {\r\n //return item !== null;\r\n if (typeof item === 'object' && item !== null) {\r\n if (item.constructor.toString().indexOf('Array') > -1) {\r\n return item !== null;\r\n } else {\r\n return item.value !== null;\r\n }\r\n } else {\r\n return item !== null;\r\n }\r\n });\r\n data.map(function(item) {\r\n if (typeof item === 'object') {\r\n if (item.constructor.toString().indexOf('Array') > -1) {\r\n if (opts.type == 'candle') {\r\n item.map(function(subitem) {\r\n sorted.push(subitem);\r\n })\r\n } else {\r\n sorted.push(item[0]);\r\n }\r\n } else {\r\n sorted.push(item.value);\r\n }\r\n } else {\r\n sorted.push(item);\r\n }\r\n })\r\n\r\n var minData = 0;\r\n var maxData = 0;\r\n if (sorted.length > 0) {\r\n minData = Math.min.apply(this, sorted);\r\n maxData = Math.max.apply(this, sorted);\r\n }\r\n //为了兼容v1.9.0之前的项目\r\n if (index > -1) {\r\n if (typeof opts.xAxis.data[index].min === 'number') {\r\n minData = Math.min(opts.xAxis.data[index].min, minData);\r\n }\r\n if (typeof opts.xAxis.data[index].max === 'number') {\r\n maxData = Math.max(opts.xAxis.data[index].max, maxData);\r\n }\r\n } else {\r\n if (typeof opts.xAxis.min === 'number') {\r\n minData = Math.min(opts.xAxis.min, minData);\r\n }\r\n if (typeof opts.xAxis.max === 'number') {\r\n maxData = Math.max(opts.xAxis.max, maxData);\r\n }\r\n }\r\n if (minData === maxData) {\r\n var rangeSpan = maxData || 10;\r\n maxData += rangeSpan;\r\n }\r\n //var dataRange = getDataRange(minData, maxData);\r\n var minRange = minData;\r\n var maxRange = maxData;\r\n var range = [];\r\n var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;\r\n for (var i = 0; i <= opts.xAxis.splitNumber; i++) {\r\n range.push(minRange + eachRange * i);\r\n }\r\n return range;\r\n}\r\n\r\nfunction calXAxisData(series, opts, config, context) {\r\n //堆叠图重算Y轴\r\n var columnstyle = assign({}, {\r\n type: \"\"\r\n }, opts.extra.bar);\r\n var result = {\r\n angle: 0,\r\n xAxisHeight: config.xAxisHeight\r\n };\r\n result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);\r\n result.rangesFormat = result.ranges.map(function(item) {\r\n //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);\r\n item = util.toFixed(item, 2);\r\n return item;\r\n });\r\n var xAxisScaleValues = result.ranges.map(function(item) {\r\n // 如果刻度值是浮点数,则保留两位小数\r\n item = util.toFixed(item, 2);\r\n // 若有自定义格式则调用自定义的格式化函数\r\n //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item;\r\n return item;\r\n });\r\n result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));\r\n // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\\结束点以及总长\r\n var eachSpacing = result.eachSpacing;\r\n var textLength = xAxisScaleValues.map(function(item) {\r\n return measureText(item, opts.xAxis.fontSize * opts.pix || config.fontSize, context);\r\n });\r\n // get max length of categories text\r\n var maxTextLength = Math.max.apply(this, textLength);\r\n // 如果刻度值文本内容过长,则将其逆时针旋转45°\r\n if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {\r\n result.angle = 45 * Math.PI / 180;\r\n result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);\r\n }\r\n if (opts.xAxis.disabled === true) {\r\n result.xAxisHeight = 0;\r\n }\r\n return result;\r\n}\r\n\r\nfunction getRadarDataPoints(angleList, center, radius, series, opts) {\r\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\r\n var radarOption = opts.extra.radar || {};\r\n radarOption.max = radarOption.max || 0;\r\n var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\r\n var data = [];\r\n for (let i = 0; i < series.length; i++) {\r\n let each = series[i];\r\n let listItem = {};\r\n listItem.color = each.color;\r\n listItem.legendShape = each.legendShape;\r\n listItem.pointShape = each.pointShape;\r\n listItem.data = [];\r\n each.data.forEach(function(item, index) {\r\n let tmp = {};\r\n tmp.angle = angleList[index];\r\n tmp.proportion = item / maxData;\r\n tmp.value = item;\r\n tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);\r\n listItem.data.push(tmp);\r\n });\r\n data.push(listItem);\r\n }\r\n return data;\r\n}\r\n\r\nfunction getPieDataPoints(series, radius) {\r\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\r\n var count = 0;\r\n var _start_ = 0;\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n count += item.data;\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n if (count === 0) {\r\n item._proportion_ = 1 / series.length * process;\r\n } else {\r\n item._proportion_ = item.data / count * process;\r\n }\r\n item._radius_ = radius;\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item._start_ = _start_;\r\n _start_ += 2 * item._proportion_ * Math.PI;\r\n }\r\n return series;\r\n}\r\n\r\nfunction getFunnelDataPoints(series, radius, type, eachSpacing) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n series = series.sort(function(a, b) {\r\n return parseInt(b.data) - parseInt(a.data);\r\n });\r\n for (let i = 0; i < series.length; i++) {\r\n if(type == 'funnel'){\r\n series[i].radius = series[i].data / series[0].data * radius * process;\r\n }else{\r\n series[i].radius = (eachSpacing * (series.length - i)) / (eachSpacing * series.length) * radius * process;\r\n }\r\n series[i]._proportion_ = series[i].data / series[0].data;\r\n }\r\n if(type !== 'pyramid'){\r\n series.reverse();\r\n }\r\n return series;\r\n}\r\n\r\nfunction getRoseDataPoints(series, type, minRadius, radius) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var count = 0;\r\n var _start_ = 0;\r\n var dataArr = [];\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n count += item.data;\r\n dataArr.push(item.data);\r\n }\r\n var minData = Math.min.apply(null, dataArr);\r\n var maxData = Math.max.apply(null, dataArr);\r\n var radiusLength = radius - minRadius;\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n if (count === 0) {\r\n item._proportion_ = 1 / series.length * process;\r\n item._rose_proportion_ = 1 / series.length * process;\r\n } else {\r\n item._proportion_ = item.data / count * process;\r\n if(type == 'area'){\r\n item._rose_proportion_ = 1 / series.length * process;\r\n }else{\r\n item._rose_proportion_ = item.data / count * process;\r\n }\r\n }\r\n item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData)) || radius;\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item._start_ = _start_;\r\n _start_ += 2 * item._rose_proportion_ * Math.PI;\r\n }\r\n return series;\r\n}\r\n\r\nfunction getArcbarDataPoints(series, arcbarOption) {\r\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\r\n if (process == 1) {\r\n process = 0.999999;\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n let totalAngle;\r\n if (arcbarOption.type == 'circle') {\r\n totalAngle = 2;\r\n } else {\r\n if (arcbarOption.endAngle < arcbarOption.startAngle) {\r\n totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\r\n } else {\r\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\r\n }\r\n }\r\n item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\r\n if (item._proportion_ >= 2) {\r\n item._proportion_ = item._proportion_ % 2;\r\n }\r\n }\r\n return series;\r\n}\r\n\r\nfunction getGaugeArcbarDataPoints(series, arcbarOption) {\r\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\r\n if (process == 1) {\r\n process = 0.999999;\r\n }\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n let totalAngle;\r\n if (arcbarOption.type == 'circle') {\r\n totalAngle = 2;\r\n } else {\r\n if (arcbarOption.endAngle < arcbarOption.startAngle) {\r\n totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\r\n } else {\r\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\r\n }\r\n }\r\n item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\r\n if (item._proportion_ >= 2) {\r\n item._proportion_ = item._proportion_ % 2;\r\n }\r\n }\r\n return series;\r\n}\r\n\r\nfunction getGaugeAxisPoints(categories, startAngle, endAngle) {\r\n let totalAngle = startAngle - endAngle + 1;\r\n let tempStartAngle = startAngle;\r\n for (let i = 0; i < categories.length; i++) {\r\n categories[i].value = categories[i].value === null ? 0 : categories[i].value;\r\n categories[i]._startAngle_ = tempStartAngle;\r\n categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;\r\n if (categories[i]._endAngle_ >= 2) {\r\n categories[i]._endAngle_ = categories[i]._endAngle_ % 2;\r\n }\r\n tempStartAngle = categories[i]._endAngle_;\r\n }\r\n return categories;\r\n}\r\n\r\nfunction getGaugeDataPoints(series, categories, gaugeOption) {\r\n let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n item.data = item.data === null ? 0 : item.data;\r\n if (gaugeOption.pointer.color == 'auto') {\r\n for (let i = 0; i < categories.length; i++) {\r\n if (item.data <= categories[i].value) {\r\n item.color = categories[i].color;\r\n break;\r\n }\r\n }\r\n } else {\r\n item.color = gaugeOption.pointer.color;\r\n }\r\n let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;\r\n item._oldAngle_ = gaugeOption.oldAngle;\r\n if (gaugeOption.oldAngle < gaugeOption.endAngle) {\r\n item._oldAngle_ += 2;\r\n }\r\n if (item.data >= gaugeOption.oldData) {\r\n item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;\r\n } else {\r\n item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;\r\n }\r\n if (item._proportion_ >= 2) {\r\n item._proportion_ = item._proportion_ % 2;\r\n }\r\n }\r\n return series;\r\n}\r\n\r\nfunction getPieTextMaxLength(series, config, context, opts) {\r\n series = getPieDataPoints(series);\r\n let maxLength = 0;\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n let text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';\r\n maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));\r\n }\r\n return maxLength;\r\n}\r\n\r\nfunction fixColumeData(points, eachSpacing, columnLen, index, config, opts) {\r\n return points.map(function(item) {\r\n if (item === null) {\r\n return null;\r\n }\r\n var seriesGap = 0;\r\n var categoryGap = 0;\r\n if (opts.type == 'mix') {\r\n seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;\r\n categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;\r\n } else {\r\n seriesGap = opts.extra.column.seriesGap * opts.pix || 0;\r\n categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\r\n }\r\n seriesGap = Math.min(seriesGap, eachSpacing / columnLen)\r\n categoryGap = Math.min(categoryGap, eachSpacing / columnLen)\r\n item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\r\n if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);\r\n }\r\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\r\n }\r\n if (item.width <= 0) {\r\n item.width = 1;\r\n }\r\n item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixBarData(points, eachSpacing, columnLen, index, config, opts) {\r\n return points.map(function(item) {\r\n if (item === null) {\r\n return null;\r\n }\r\n var seriesGap = 0;\r\n var categoryGap = 0;\r\n seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;\r\n categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\r\n seriesGap = Math.min(seriesGap, eachSpacing / columnLen)\r\n categoryGap = Math.min(categoryGap, eachSpacing / columnLen)\r\n item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\r\n if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\r\n }\r\n if (item.width <= 0) {\r\n item.width = 1;\r\n }\r\n item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {\r\n var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\r\n return points.map(function(item) {\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = eachSpacing - 2 * categoryGap;\r\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\r\n }\r\n if (index > 0) {\r\n item.width -= border;\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {\r\n var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\r\n return points.map(function(item, indexn) {\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = Math.ceil(eachSpacing - 2 * categoryGap);\r\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\r\n }\r\n if (item.width <= 0) {\r\n item.width = 1;\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {\r\n var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\r\n return points.map(function(item, indexn) {\r\n if (item === null) {\r\n return null;\r\n }\r\n item.width = Math.ceil(eachSpacing - 2 * categoryGap);\r\n if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\r\n item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\r\n }\r\n if (item.width <= 0) {\r\n item.width = 1;\r\n }\r\n return item;\r\n });\r\n}\r\n\r\nfunction getXAxisPoints(categories, opts, config) {\r\n var spacingValid = opts.width - opts.area[1] - opts.area[3];\r\n var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;\r\n if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {\r\n dataCount -= 1;\r\n }\r\n var widthRatio = 0;\r\n if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){\r\n if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2\r\n widthRatio = opts.extra.mount.widthRatio - 1;\r\n dataCount += widthRatio;\r\n }\r\n var eachSpacing = spacingValid / dataCount;\r\n var xAxisPoints = [];\r\n var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\r\n categories.forEach(function(item, index) {\r\n xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing);\r\n });\r\n if (opts.xAxis.boundaryGap !== 'justify') {\r\n if (opts.enableScroll === true) {\r\n xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing);\r\n } else {\r\n xAxisPoints.push(endX);\r\n }\r\n }\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n startX: startX,\r\n endX: endX,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\r\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\r\n var points = [];\r\n var validHeight = opts.height - opts.area[0] - opts.area[2];\r\n data.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var cPoints = [];\r\n item.forEach(function(items, indexs) {\r\n var point = {};\r\n point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\r\n var value = items.value || items;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.y = opts.height - Math.round(height) - opts.area[2];\r\n cPoints.push(point);\r\n });\r\n points.push(cPoints);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\r\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\r\n var boundaryGap = 'center';\r\n if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' ) {\r\n boundaryGap = opts.xAxis.boundaryGap;\r\n }\r\n var points = [];\r\n var validHeight = opts.height - opts.area[0] - opts.area[2];\r\n var validWidth = opts.width - opts.area[1] - opts.area[3];\r\n data.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var point = {};\r\n point.color = item.color;\r\n point.x = xAxisPoints[index];\r\n var value = item;\r\n if (typeof item === 'object' && item !== null) {\r\n if (item.constructor.toString().indexOf('Array') > -1) {\r\n let xranges, xminRange, xmaxRange;\r\n xranges = [].concat(opts.chartData.xAxisData.ranges);\r\n xminRange = xranges.shift();\r\n xmaxRange = xranges.pop();\r\n value = item[1];\r\n point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\r\n if(opts.type == 'bubble'){\r\n point.r = item[2];\r\n point.t = item[3];\r\n }\r\n } else {\r\n value = item.value;\r\n }\r\n }\r\n if (boundaryGap == 'center') {\r\n point.x += eachSpacing / 2;\r\n }\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.y = opts.height - height - opts.area[2];\r\n points.push(point);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption) {\r\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\r\n var points = [];\r\n var validHeight = opts.height - opts.area[0] - opts.area[2];\r\n var validWidth = opts.width - opts.area[1] - opts.area[3];\r\n var mountWidth = eachSpacing * mountOption.widthRatio;\r\n series.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var point = {};\r\n point.color = item.color;\r\n point.x = xAxisPoints[index];\r\n point.x += eachSpacing / 2;\r\n var value = item.data;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.y = opts.height - height - opts.area[2];\r\n point.value = value;\r\n point.width = mountWidth;\r\n points.push(point);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) {\r\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\r\n var points = [];\r\n var validHeight = opts.height - opts.area[0] - opts.area[2];\r\n var validWidth = opts.width - opts.area[1] - opts.area[3];\r\n data.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var point = {};\r\n point.color = item.color;\r\n point.y = yAxisPoints[index];\r\n var value = item;\r\n if (typeof item === 'object' && item !== null) {\r\n value = item.value;\r\n }\r\n var height = validWidth * (value - minRange) / (maxRange - minRange);\r\n height *= process;\r\n point.height = height;\r\n point.value = value;\r\n point.x = height + opts.area[3];\r\n points.push(point);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\r\n var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\r\n var points = [];\r\n var validHeight = opts.height - opts.area[0] - opts.area[2];\r\n data.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var point = {};\r\n point.color = item.color;\r\n point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\r\n\r\n if (seriesIndex > 0) {\r\n var value = 0;\r\n for (let i = 0; i <= seriesIndex; i++) {\r\n value += stackSeries[i].data[index];\r\n }\r\n var value0 = value - item;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\r\n } else {\r\n var value = item;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n var height0 = 0;\r\n }\r\n var heightc = height0;\r\n height *= process;\r\n heightc *= process;\r\n point.y = opts.height - Math.round(height) - opts.area[2];\r\n point.y0 = opts.height - Math.round(heightc) - opts.area[2];\r\n points.push(point);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\r\n var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\r\n var points = [];\r\n var validHeight = opts.width - opts.area[1] - opts.area[3];\r\n data.forEach(function(item, index) {\r\n if (item === null) {\r\n points.push(null);\r\n } else {\r\n var point = {};\r\n point.color = item.color;\r\n point.y = yAxisPoints[index];\r\n if (seriesIndex > 0) {\r\n var value = 0;\r\n for (let i = 0; i <= seriesIndex; i++) {\r\n value += stackSeries[i].data[index];\r\n }\r\n var value0 = value - item;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\r\n } else {\r\n var value = item;\r\n var height = validHeight * (value - minRange) / (maxRange - minRange);\r\n var height0 = 0;\r\n }\r\n var heightc = height0;\r\n height *= process;\r\n heightc *= process;\r\n point.height = height - heightc;\r\n point.x = opts.area[3] + height;\r\n point.x0 = opts.area[3] + heightc;\r\n points.push(point);\r\n }\r\n });\r\n return points;\r\n}\r\n\r\nfunction getYAxisTextList(series, opts, config, stack, yData) {\r\n var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;\r\n var data;\r\n if (stack == 'stack') {\r\n data = dataCombineStack(series, opts.categories.length);\r\n } else {\r\n data = dataCombine(series);\r\n }\r\n var sorted = [];\r\n // remove null from data\r\n data = data.filter(function(item) {\r\n //return item !== null;\r\n if (typeof item === 'object' && item !== null) {\r\n if (item.constructor.toString().indexOf('Array') > -1) {\r\n return item !== null;\r\n } else {\r\n return item.value !== null;\r\n }\r\n } else {\r\n return item !== null;\r\n }\r\n });\r\n data.map(function(item) {\r\n if (typeof item === 'object') {\r\n if (item.constructor.toString().indexOf('Array') > -1) {\r\n if (opts.type == 'candle') {\r\n item.map(function(subitem) {\r\n sorted.push(subitem);\r\n })\r\n } else {\r\n sorted.push(item[1]);\r\n }\r\n } else {\r\n sorted.push(item.value);\r\n }\r\n } else {\r\n sorted.push(item);\r\n }\r\n })\r\n var minData = yData.min || 0;\r\n var maxData = yData.max || 0;\r\n if (sorted.length > 0) {\r\n minData = Math.min.apply(this, sorted);\r\n maxData = Math.max.apply(this, sorted);\r\n }\r\n if (minData === maxData) {\r\n // var rangeSpan = maxData || 10;\r\n // maxData += rangeSpan;\r\n if(maxData == 0){\r\n maxData = 10;\r\n }else{\r\n minData = 0;\r\n }\r\n }\r\n var dataRange = getDataRange(minData, maxData);\r\n var minRange = (yData.min === undefined || yData.min === null) ? dataRange.minRange : yData.min;\r\n var maxRange = (yData.max === undefined || yData.max === null) ? dataRange.maxRange : yData.max;\r\n var range = [];\r\n var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;\r\n for (var i = 0; i <= opts.yAxis.splitNumber; i++) {\r\n range.push(minRange + eachRange * i);\r\n }\r\n return range.reverse();\r\n}\r\n\r\nfunction calYAxisData(series, opts, config, context) {\r\n //堆叠图重算Y轴\r\n var columnstyle = assign({}, {\r\n type: \"\"\r\n }, opts.extra.column);\r\n //如果是多Y轴,重新计算\r\n var YLength = opts.yAxis.data.length;\r\n var newSeries = new Array(YLength);\r\n if (YLength > 0) {\r\n for (let i = 0; i < YLength; i++) {\r\n newSeries[i] = [];\r\n for (let j = 0; j < series.length; j++) {\r\n if (series[j].index == i) {\r\n newSeries[i].push(series[j]);\r\n }\r\n }\r\n }\r\n var rangesArr = new Array(YLength);\r\n var rangesFormatArr = new Array(YLength);\r\n var yAxisWidthArr = new Array(YLength);\r\n\r\n for (let i = 0; i < YLength; i++) {\r\n let yData = opts.yAxis.data[i];\r\n //如果总开关不显示,强制每个Y轴为不显示\r\n if (opts.yAxis.disabled == true) {\r\n yData.disabled = true;\r\n }\r\n if(yData.type === 'categories'){\r\n if(!yData.formatter){\r\n yData.formatter = (val,index,opts) => {return val + (yData.unit || '')};\r\n }\r\n yData.categories = yData.categories || opts.categories;\r\n rangesArr[i] = yData.categories;\r\n }else{\r\n if(!yData.formatter){\r\n yData.formatter = (val,index,opts) => {return val.toFixed(yData.tofix) + (yData.unit || '')};\r\n }\r\n rangesArr[i] = getYAxisTextList(newSeries[i], opts, config, columnstyle.type, yData, i);\r\n }\r\n let yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;\r\n yAxisWidthArr[i] = {\r\n position: yData.position ? yData.position : 'left',\r\n width: 0\r\n };\r\n rangesFormatArr[i] = rangesArr[i].map(function(items,index) {\r\n items = yData.formatter(items,index,opts);\r\n yAxisWidthArr[i].width = Math.max(yAxisWidthArr[i].width, measureText(items, yAxisFontSizes, context) + 5);\r\n return items;\r\n });\r\n let calibration = yData.calibration ? 4 * opts.pix : 0;\r\n yAxisWidthArr[i].width += calibration + 3 * opts.pix;\r\n if (yData.disabled === true) {\r\n yAxisWidthArr[i].width = 0;\r\n }\r\n }\r\n } else {\r\n var rangesArr = new Array(1);\r\n var rangesFormatArr = new Array(1);\r\n var yAxisWidthArr = new Array(1);\r\n if(opts.type === 'bar'){\r\n rangesArr[0] = opts.categories;\r\n if(!opts.yAxis.formatter){\r\n opts.yAxis.formatter = (val,index,opts) => {return val + (opts.yAxis.unit || '')}\r\n }\r\n }else{\r\n if(!opts.yAxis.formatter){\r\n opts.yAxis.formatter = (val,index,opts) => {return val.toFixed(opts.yAxis.tofix ) + (opts.yAxis.unit || '')}\r\n }\r\n rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});\r\n }\r\n yAxisWidthArr[0] = {\r\n position: 'left',\r\n width: 0\r\n };\r\n var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;\r\n rangesFormatArr[0] = rangesArr[0].map(function(item,index) {\r\n item = opts.yAxis.formatter(item,index,opts);\r\n yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);\r\n return item;\r\n });\r\n yAxisWidthArr[0].width += 3 * opts.pix;\r\n if (opts.yAxis.disabled === true) {\r\n yAxisWidthArr[0] = {\r\n position: 'left',\r\n width: 0\r\n };\r\n opts.yAxis.data[0] = {\r\n disabled: true\r\n };\r\n } else {\r\n opts.yAxis.data[0] = {\r\n disabled: false,\r\n position: 'left',\r\n max: opts.yAxis.max,\r\n min: opts.yAxis.min,\r\n formatter: opts.yAxis.formatter\r\n };\r\n if(opts.type === 'bar'){\r\n opts.yAxis.data[0].categories = opts.categories;\r\n opts.yAxis.data[0].type = 'categories';\r\n }\r\n }\r\n }\r\n return {\r\n rangesFormat: rangesFormatArr,\r\n ranges: rangesArr,\r\n yAxisWidth: yAxisWidthArr\r\n };\r\n}\r\n\r\nfunction calTooltipYAxisData(point, series, opts, config, eachSpacing) {\r\n let ranges = [].concat(opts.chartData.yAxisData.ranges);\r\n let spacingValid = opts.height - opts.area[0] - opts.area[2];\r\n let minAxis = opts.area[0];\r\n let items = [];\r\n for (let i = 0; i < ranges.length; i++) {\r\n let maxVal = ranges[i].shift();\r\n let minVal = ranges[i].pop();\r\n let item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;\r\n item = opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item) : item.toFixed(0);\r\n items.push(String(item))\r\n }\r\n return items;\r\n}\r\n\r\nfunction calMarkLineData(points, opts) {\r\n let minRange, maxRange;\r\n let spacingValid = opts.height - opts.area[0] - opts.area[2];\r\n for (let i = 0; i < points.length; i++) {\r\n points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;\r\n let range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);\r\n minRange = range.pop();\r\n maxRange = range.shift();\r\n let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);\r\n points[i].y = opts.height - Math.round(height) - opts.area[2];\r\n }\r\n return points;\r\n}\r\n\r\nfunction contextRotate(context, opts) {\r\n if (opts.rotateLock !== true) {\r\n context.translate(opts.height, 0);\r\n context.rotate(90 * Math.PI / 180);\r\n } else if (opts._rotate_ !== true) {\r\n context.translate(opts.height, 0);\r\n context.rotate(90 * Math.PI / 180);\r\n opts._rotate_ = true;\r\n }\r\n}\r\n\r\nfunction drawPointShape(points, color, shape, context, opts) {\r\n context.beginPath();\r\n if (opts.dataPointShapeType == 'hollow') {\r\n context.setStrokeStyle(color);\r\n context.setFillStyle(opts.background);\r\n context.setLineWidth(2 * opts.pix);\r\n } else {\r\n context.setStrokeStyle(\"#ffffff\");\r\n context.setFillStyle(color);\r\n context.setLineWidth(1 * opts.pix);\r\n }\r\n if (shape === 'diamond') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x, item.y - 4.5);\r\n context.lineTo(item.x - 4.5, item.y);\r\n context.lineTo(item.x, item.y + 4.5);\r\n context.lineTo(item.x + 4.5, item.y);\r\n context.lineTo(item.x, item.y - 4.5);\r\n }\r\n });\r\n } else if (shape === 'circle') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x + 2.5 * opts.pix, item.y);\r\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\r\n }\r\n });\r\n } else if (shape === 'square') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x - 3.5, item.y - 3.5);\r\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\r\n }\r\n });\r\n } else if (shape === 'triangle') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x, item.y - 4.5);\r\n context.lineTo(item.x - 4.5, item.y + 4.5);\r\n context.lineTo(item.x + 4.5, item.y + 4.5);\r\n context.lineTo(item.x, item.y - 4.5);\r\n }\r\n });\r\n } else if (shape === 'triangle') {\r\n return;\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n}\r\n\r\nfunction drawRingTitle(opts, config, context, center) {\r\n var titlefontSize = opts.title.fontSize || config.titleFontSize;\r\n var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;\r\n var title = opts.title.name || '';\r\n var subtitle = opts.subtitle.name || '';\r\n var titleFontColor = opts.title.color || opts.fontColor;\r\n var subtitleFontColor = opts.subtitle.color || opts.fontColor;\r\n var titleHeight = title ? titlefontSize : 0;\r\n var subtitleHeight = subtitle ? subtitlefontSize : 0;\r\n var margin = 5;\r\n if (subtitle) {\r\n var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);\r\n var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX|| 0) * opts.pix ;\r\n var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;\r\n if (title) {\r\n startY += (titleHeight * opts.pix + margin) / 2;\r\n }\r\n context.beginPath();\r\n context.setFontSize(subtitlefontSize * opts.pix);\r\n context.setFillStyle(subtitleFontColor);\r\n context.fillText(subtitle, startX, startY);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n if (title) {\r\n var _textWidth = measureText(title, titlefontSize * opts.pix, context);\r\n var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);\r\n var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;\r\n if (subtitle) {\r\n _startY -= (subtitleHeight * opts.pix + margin) / 2;\r\n }\r\n context.beginPath();\r\n context.setFontSize(titlefontSize * opts.pix);\r\n context.setFillStyle(titleFontColor);\r\n context.fillText(title, _startX, _startY);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n}\r\n\r\nfunction drawPointText(points, series, config, context, opts) {\r\n // 绘制数据文案\r\n var data = series.data;\r\n var textOffset = series.textOffset ? series.textOffset : 0;\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.beginPath();\r\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(series.textColor || opts.fontColor);\r\n var value = data[index]\r\n if (typeof data[index] === 'object' && data[index] !== null) {\r\n if (data[index].constructor.toString().indexOf('Array')>-1) {\r\n value = data[index][1];\r\n } else {\r\n value = data[index].value\r\n }\r\n }\r\n var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value;\r\n context.setTextAlign('center');\r\n context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\r\n context.closePath();\r\n context.stroke();\r\n context.setTextAlign('left');\r\n }\r\n });\r\n}\r\n\r\nfunction drawMountPointText(points, series, config, context, opts) {\r\n // 绘制数据文案\r\n var data = series.data;\r\n var textOffset = series.textOffset ? series.textOffset : 0;\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.beginPath();\r\n var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(series[index].textColor || opts.fontColor);\r\n var value = item.value\r\n var formatVal = series[index].formatter ? series[index].formatter(value,index,series,opts) : value;\r\n context.setTextAlign('center');\r\n context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\r\n context.closePath();\r\n context.stroke();\r\n context.setTextAlign('left');\r\n }\r\n });\r\n}\r\n\r\nfunction drawBarPointText(points, series, config, context, opts) {\r\n // 绘制数据文案\r\n var data = series.data;\r\n var textOffset = series.textOffset ? series.textOffset : 0;\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.beginPath();\r\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(series.textColor || opts.fontColor);\r\n var value = data[index]\r\n if (typeof data[index] === 'object' && data[index] !== null) {\r\n value = data[index].value ;\r\n }\r\n var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value;\r\n context.setTextAlign('left');\r\n context.fillText(String(formatVal), item.x + 4 * opts.pix , item.y + fontSize / 2 - 3 );\r\n context.closePath();\r\n context.stroke();\r\n }\r\n });\r\n}\r\n\r\nfunction drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {\r\n radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;\r\n radius = radius < 10 ? 10 : radius;\r\n let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\r\n let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;\r\n let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;\r\n let nowAngle = gaugeOption.startAngle;\r\n let nowNumber = gaugeOption.startNumber;\r\n for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\r\n var pos = {\r\n x: radius * Math.cos(nowAngle * Math.PI),\r\n y: radius * Math.sin(nowAngle * Math.PI)\r\n };\r\n var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber,i,opts) : nowNumber;\r\n pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2;\r\n pos.y += centerPosition.y;\r\n var startX = pos.x;\r\n var startY = pos.y;\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(gaugeOption.labelColor || opts.fontColor);\r\n context.fillText(labelText, startX, startY + config.fontSize / 2);\r\n context.closePath();\r\n context.stroke();\r\n nowAngle += splitAngle;\r\n if (nowAngle >= 2) {\r\n nowAngle = nowAngle % 2;\r\n }\r\n nowNumber += splitNumber;\r\n }\r\n}\r\n\r\nfunction drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {\r\n var radarOption = opts.extra.radar || {};\r\n angleList.forEach(function(angle, index) {\r\n if(radarOption.labelPointShow === true && opts.categories[index] !== ''){\r\n var posPoint = {\r\n x: radius * Math.cos(angle),\r\n y: radius * Math.sin(angle)\r\n };\r\n var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition);\r\n context.setFillStyle(radarOption.labelPointColor);\r\n context.beginPath();\r\n context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false);\r\n context.closePath();\r\n context.fill();\r\n }\r\n var pos = {\r\n x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle),\r\n y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle)\r\n };\r\n var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);\r\n var startX = posRelativeCanvas.x;\r\n var startY = posRelativeCanvas.y;\r\n if (util.approximatelyEqual(pos.x, 0)) {\r\n startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2;\r\n } else if (pos.x < 0) {\r\n startX -= measureText(opts.categories[index] || '', config.fontSize, context);\r\n }\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(radarOption.labelColor || opts.fontColor);\r\n context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);\r\n context.closePath();\r\n context.stroke();\r\n });\r\n\r\n}\r\n\r\nfunction drawPieText(series, opts, config, context, radius, center) {\r\n var lineRadius = config.pieChartLinePadding;\r\n var textObjectCollection = [];\r\n var lastTextObject = null;\r\n var seriesConvert = series.map(function(item,index) {\r\n var text = item.formatter ? item.formatter(item,index,series,opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';\r\n text = item.labelText ? item.labelText : text;\r\n var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);\r\n if (item._rose_proportion_) {\r\n arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);\r\n }\r\n var color = item.color;\r\n var radius = item._radius_;\r\n return {\r\n arc: arc,\r\n text: text,\r\n color: color,\r\n radius: radius,\r\n textColor: item.textColor,\r\n textSize: item.textSize,\r\n labelShow: item.labelShow\r\n };\r\n });\r\n for (let i = 0; i < seriesConvert.length; i++) {\r\n let item = seriesConvert[i];\r\n // line end\r\n let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);\r\n let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);\r\n // line start\r\n let orginX2 = Math.cos(item.arc) * item.radius;\r\n let orginY2 = Math.sin(item.arc) * item.radius;\r\n // text start\r\n let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;\r\n let orginY3 = orginY1;\r\n let textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context);\r\n let startY = orginY3;\r\n if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {\r\n x: orginX3\r\n })) {\r\n if (orginX3 > 0) {\r\n startY = Math.min(orginY3, lastTextObject.start.y);\r\n } else if (orginX1 < 0) {\r\n startY = Math.max(orginY3, lastTextObject.start.y);\r\n } else {\r\n if (orginY3 > 0) {\r\n startY = Math.max(orginY3, lastTextObject.start.y);\r\n } else {\r\n startY = Math.min(orginY3, lastTextObject.start.y);\r\n }\r\n }\r\n }\r\n if (orginX3 < 0) {\r\n orginX3 -= textWidth;\r\n }\r\n let textObject = {\r\n lineStart: {\r\n x: orginX2,\r\n y: orginY2\r\n },\r\n lineEnd: {\r\n x: orginX1,\r\n y: orginY1\r\n },\r\n start: {\r\n x: orginX3,\r\n y: startY\r\n },\r\n width: textWidth,\r\n height: config.fontSize,\r\n text: item.text,\r\n color: item.color,\r\n textColor: item.textColor,\r\n textSize: item.textSize\r\n };\r\n lastTextObject = avoidCollision(textObject, lastTextObject);\r\n textObjectCollection.push(lastTextObject);\r\n }\r\n for (let i = 0; i < textObjectCollection.length; i++) {\r\n if(seriesConvert[i].labelShow === false){\r\n continue;\r\n }\r\n let item = textObjectCollection[i];\r\n let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center);\r\n let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center);\r\n let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center);\r\n context.setLineWidth(1 * opts.pix);\r\n context.setFontSize(item.textSize * opts.pix || config.fontSize);\r\n context.beginPath();\r\n context.setStrokeStyle(item.color);\r\n context.setFillStyle(item.color);\r\n context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\r\n let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x;\r\n let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;\r\n context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);\r\n context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\r\n context.stroke();\r\n context.closePath();\r\n context.beginPath();\r\n context.moveTo(textPosition.x + item.width, textPosition.y);\r\n context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(item.textSize * opts.pix || config.fontSize);\r\n context.setFillStyle(item.textColor || opts.fontColor);\r\n context.fillText(item.text, textStartX, textPosition.y + 3);\r\n context.closePath();\r\n context.stroke();\r\n context.closePath();\r\n }\r\n}\r\n\r\nfunction drawToolTipSplitLine(offsetX, opts, config, context) {\r\n var toolTipOption = opts.extra.tooltip || {};\r\n toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;\r\n toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;\r\n var startY = opts.area[0];\r\n var endY = opts.height - opts.area[2];\r\n if (toolTipOption.gridType == 'dash') {\r\n context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\r\n }\r\n context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\r\n context.setLineWidth(1 * opts.pix);\r\n context.beginPath();\r\n context.moveTo(offsetX, startY);\r\n context.lineTo(offsetX, endY);\r\n context.stroke();\r\n context.setLineDash([]);\r\n if (toolTipOption.xAxisLabel) {\r\n let labelText = opts.categories[opts.tooltip.index];\r\n context.setFontSize(config.fontSize);\r\n let textWidth = measureText(labelText, config.fontSize, context);\r\n let textX = offsetX - 0.5 * textWidth;\r\n let textY = endY;\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\r\n context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\r\n context.setLineWidth(1 * opts.pix);\r\n context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\r\n context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n}\r\n\r\nfunction drawMarkLine(opts, config, context) {\r\n let markLineOption = assign({}, {\r\n type: 'solid',\r\n dashLength: 4,\r\n data: []\r\n }, opts.extra.markLine);\r\n let startX = opts.area[3];\r\n let endX = opts.width - opts.area[1];\r\n let points = calMarkLineData(markLineOption.data, opts);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = assign({}, {\r\n lineColor: '#DE4A42',\r\n showLabel: false,\r\n labelFontColor: '#666666',\r\n labelBgColor: '#DFE8FF',\r\n labelBgOpacity: 0.8,\r\n labelAlign: 'left',\r\n labelOffsetX: 0,\r\n labelOffsetY: 0,\r\n }, points[i]);\r\n if (markLineOption.type == 'dash') {\r\n context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);\r\n }\r\n context.setStrokeStyle(item.lineColor);\r\n context.setLineWidth(1 * opts.pix);\r\n context.beginPath();\r\n context.moveTo(startX, item.y);\r\n context.lineTo(endX, item.y);\r\n context.stroke();\r\n context.setLineDash([]);\r\n if (item.showLabel) {\r\n let labelText = item.labelText ? item.labelText : item.value;\r\n context.setFontSize(config.fontSize);\r\n let textWidth = measureText(labelText, config.fontSize, context);\r\n let bgWidth = textWidth + config.toolTipPadding * 2;\r\n let bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1];\r\n bgStartX += item.labelOffsetX;\r\n let bgStartY = item.y - 0.5 * config.fontSize - config.toolTipPadding;\r\n bgStartY += item.labelOffsetY;\r\n let textX = bgStartX + config.toolTipPadding;\r\n let textY = item.y;\r\n context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));\r\n context.setStrokeStyle(item.labelBgColor);\r\n context.setLineWidth(1 * opts.pix);\r\n context.beginPath();\r\n context.rect(bgStartX, bgStartY, bgWidth, config.fontSize + 2 * config.toolTipPadding);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n context.setFontSize(config.fontSize);\r\n context.setTextAlign('left');\r\n context.setFillStyle(item.labelFontColor);\r\n context.fillText(String(labelText), textX, bgStartY + config.fontSize + config.toolTipPadding/2);\r\n context.stroke();\r\n context.setTextAlign('left');\r\n }\r\n }\r\n}\r\n\r\nfunction drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {\r\n var toolTipOption = assign({}, {\r\n gridType: 'solid',\r\n dashLength: 4\r\n }, opts.extra.tooltip);\r\n var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\r\n if (toolTipOption.gridType == 'dash') {\r\n context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\r\n }\r\n context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\r\n context.setLineWidth(1 * opts.pix);\r\n context.beginPath();\r\n context.moveTo(startX, opts.tooltip.offset.y);\r\n context.lineTo(endX, opts.tooltip.offset.y);\r\n context.stroke();\r\n context.setLineDash([]);\r\n if (toolTipOption.yAxisLabel) {\r\n let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);\r\n let widthArr = opts.chartData.yAxisData.yAxisWidth;\r\n let tStartLeft = opts.area[3];\r\n let tStartRight = opts.width - opts.area[1];\r\n for (let i = 0; i < labelText.length; i++) {\r\n context.setFontSize(config.fontSize);\r\n let textWidth = measureText(labelText[i], config.fontSize, context);\r\n let bgStartX, bgEndX, bgWidth;\r\n if (widthArr[i].position == 'left') {\r\n bgStartX = tStartLeft - widthArr[i].width;\r\n bgEndX = Math.max(bgStartX, bgStartX + textWidth + config.toolTipPadding * 2);\r\n } else {\r\n bgStartX = tStartRight;\r\n bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + config.toolTipPadding * 2);\r\n }\r\n bgWidth = bgEndX - bgStartX;\r\n let textX = bgStartX + (bgWidth - textWidth) / 2;\r\n let textY = opts.tooltip.offset.y;\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\r\n context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\r\n context.setLineWidth(1 * opts.pix);\r\n context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 *\r\n config.toolTipPadding);\r\n context.closePath();\r\n context.stroke();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\r\n context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);\r\n context.closePath();\r\n context.stroke();\r\n if (widthArr[i].position == 'left') {\r\n tStartLeft -= (widthArr[i].width + opts.yAxis.padding * opts.pix);\r\n } else {\r\n tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\r\n var toolTipOption = assign({}, {\r\n activeBgColor: '#000000',\r\n activeBgOpacity: 0.08,\r\n activeWidth: eachSpacing\r\n }, opts.extra.column);\r\n toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth;\r\n var startY = opts.area[0];\r\n var endY = opts.height - opts.area[2];\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\r\n context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY);\r\n context.closePath();\r\n context.fill();\r\n context.setFillStyle(\"#FFFFFF\");\r\n}\r\n\r\nfunction drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\r\n var toolTipOption = assign({}, {\r\n activeBgColor: '#000000',\r\n activeBgOpacity: 0.08\r\n }, opts.extra.bar);\r\n var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\r\n context.rect( startX ,offsetX - eachSpacing / 2 , endX - startX,eachSpacing);\r\n context.closePath();\r\n context.fill();\r\n context.setFillStyle(\"#FFFFFF\");\r\n}\r\n\r\n\r\nfunction drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {\r\n var toolTipOption = assign({}, {\r\n showBox: true,\r\n showArrow: true,\r\n showCategory: false,\r\n bgColor: '#000000',\r\n bgOpacity: 0.7,\r\n borderColor: '#000000',\r\n borderWidth: 0,\r\n borderRadius: 0,\r\n borderOpacity: 0.7,\r\n fontColor: '#FFFFFF',\r\n splitLine: true,\r\n }, opts.extra.tooltip);\r\n if(toolTipOption.showCategory==true && opts.categories){\r\n textList.unshift({text:opts.categories[opts.tooltip.index],color:null})\r\n }\r\n var legendWidth = 4 * opts.pix;\r\n var legendMarginRight = 5 * opts.pix;\r\n var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;\r\n var isOverRightBorder = false;\r\n if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {\r\n if (toolTipOption.splitLine == true) {\r\n drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);\r\n }\r\n }\r\n offset = assign({\r\n x: 0,\r\n y: 0\r\n }, offset);\r\n offset.y -= 8 * opts.pix;\r\n var textWidth = textList.map(function(item) {\r\n return measureText(item.text, config.fontSize, context);\r\n });\r\n var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);\r\n var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;\r\n if (toolTipOption.showBox == false) {\r\n return\r\n }\r\n // if beyond the right border\r\n if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) {\r\n isOverRightBorder = true;\r\n }\r\n if (toolTipHeight + offset.y > opts.height) {\r\n offset.y = opts.height - toolTipHeight;\r\n }\r\n // draw background rect\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity));\r\n context.setLineWidth(toolTipOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));\r\n var radius = toolTipOption.borderRadius;\r\n if (isOverRightBorder) {\r\n if (toolTipOption.showArrow) {\r\n context.moveTo(offset.x, offset.y + 10 * opts.pix);\r\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\r\n }\r\n context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\r\n context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius,\r\n Math.PI / 2, Math.PI, false);\r\n context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\r\n context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\r\n if (toolTipOption.showArrow) {\r\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\r\n context.lineTo(offset.x, offset.y + 10 * opts.pix);\r\n }\r\n } else {\r\n if (toolTipOption.showArrow) {\r\n context.moveTo(offset.x, offset.y + 10 * opts.pix);\r\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\r\n }\r\n context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\r\n context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0,\r\n false);\r\n context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0,\r\n Math.PI / 2, false);\r\n context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\r\n if (toolTipOption.showArrow) {\r\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\r\n context.lineTo(offset.x, offset.y + 10 * opts.pix);\r\n }\r\n }\r\n context.closePath();\r\n context.fill();\r\n if (toolTipOption.borderWidth > 0) {\r\n context.stroke();\r\n }\r\n // draw legend\r\n textList.forEach(function(item, index) {\r\n if (item.color !== null) {\r\n context.beginPath();\r\n context.setFillStyle(item.color);\r\n var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;\r\n var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding + 1;\r\n if (isOverRightBorder) {\r\n startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;\r\n }\r\n context.fillRect(startX, startY, legendWidth, config.fontSize);\r\n context.closePath();\r\n }\r\n });\r\n // draw text list\r\n textList.forEach(function(item, index) {\r\n var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;\r\n if (isOverRightBorder) {\r\n startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;\r\n }\r\n var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + config.toolTipPadding;\r\n context.beginPath();\r\n context.setFontSize(config.fontSize);\r\n context.setFillStyle(toolTipOption.fontColor);\r\n context.fillText(item.text, startX, startY + config.fontSize);\r\n context.closePath();\r\n context.stroke();\r\n });\r\n}\r\n\r\nfunction drawColumnDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let columnOption = assign({}, {\r\n type: 'group',\r\n width: eachSpacing / 2,\r\n meterBorder: 4,\r\n meterFillColor: '#FFFFFF',\r\n barBorderCircle: false,\r\n barBorderRadius: [],\r\n seriesGap: 2,\r\n linearType: 'none',\r\n linearOpacity: 1,\r\n customColor: [],\r\n colorStop: 0,\r\n }, opts.extra.column);\r\n let calPoints = [];\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = xAxisPoints.length + 2;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\r\n rightNum = leftNum + opts.xAxis.itemCount + 4;\r\n }\r\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\r\n drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);\r\n }\r\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n switch (columnOption.type) {\r\n case 'group':\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n calPoints.push(tooltipPoints);\r\n points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n //fix issues/I27B1N yyoinge & Joeshu\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color\r\n var strokeColor = item.color || eachSeries.color\r\n if (columnOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (columnOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\r\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n // 圆角边框\r\n if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) {\r\n const left = startX;\r\n const top = item.y;\r\n const width = item.width;\r\n const height = opts.height - opts.area[2] - item.y;\r\n if (columnOption.barBorderCircle) {\r\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = columnOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\r\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\r\n context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2);\r\n context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI);\r\n } else {\r\n context.moveTo(startX, item.y);\r\n context.lineTo(startX + item.width, item.y);\r\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\r\n context.lineTo(startX, opts.height - opts.area[2]);\r\n context.lineTo(startX, item.y);\r\n context.setLineWidth(1)\r\n context.setStrokeStyle(strokeColor);\r\n }\r\n context.setFillStyle(fillColor);\r\n context.closePath();\r\n //context.stroke();\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'stack':\r\n // 绘制堆叠数据图\r\n var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n calPoints.push(points);\r\n points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color;\r\n var startX = item.x - item.width / 2 + 1;\r\n var height = opts.height - item.y - opts.area[2];\r\n var height0 = opts.height - item.y0 - opts.area[2];\r\n if (seriesIndex > 0) {\r\n height -= height0;\r\n }\r\n context.setFillStyle(fillColor);\r\n context.moveTo(startX, item.y);\r\n context.fillRect(startX, item.y, item.width, height);\r\n context.closePath();\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'meter':\r\n // 绘制温度计数据图\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n //画背景颜色\r\n context.beginPath();\r\n if (seriesIndex == 0 && columnOption.meterBorder > 0) {\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(columnOption.meterBorder * opts.pix);\r\n }\r\n if(seriesIndex == 0){\r\n context.setFillStyle(columnOption.meterFillColor);\r\n }else{\r\n context.setFillStyle(item.color || eachSeries.color);\r\n }\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) {\r\n const left = startX;\r\n const top = item.y;\r\n const width = item.width;\r\n const height = opts.height - opts.area[2] - item.y;\r\n if (columnOption.barBorderCircle) {\r\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = columnOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\r\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\r\n context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2);\r\n context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI);\r\n context.fill();\r\n }else{\r\n context.moveTo(startX, item.y);\r\n context.lineTo(startX + item.width, item.y);\r\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\r\n context.lineTo(startX, opts.height - opts.area[2]);\r\n context.lineTo(startX, item.y);\r\n context.fill();\r\n }\r\n if (seriesIndex == 0 && columnOption.meterBorder > 0) {\r\n context.closePath();\r\n context.stroke();\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n });\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n switch (columnOption.type) {\r\n case 'group':\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\r\n drawPointText(points, eachSeries, config, context, opts);\r\n break;\r\n case 'stack':\r\n var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n drawPointText(points, eachSeries, config, context, opts);\r\n break;\r\n case 'meter':\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n drawPointText(points, eachSeries, config, context, opts);\r\n break;\r\n }\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawMountDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let mountOption = assign({}, {\r\n type: 'mount',\r\n widthRatio: 1,\r\n borderWidth: 1,\r\n barBorderCircle: false,\r\n barBorderRadius: [],\r\n linearType: 'none',\r\n linearOpacity: 1,\r\n customColor: [],\r\n colorStop: 0,\r\n }, opts.extra.mount);\r\n mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio;\r\n mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio;\r\n let calPoints = [];\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = xAxisPoints.length + 2;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\r\n rightNum = leftNum + opts.xAxis.itemCount + 4;\r\n }\r\n mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config);\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, process);\r\n switch (mountOption.type) {\r\n case 'bar':\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - eachSpacing*mountOption.widthRatio/2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || series[i].color\r\n var strokeColor = item.color || series[i].color\r\n if (mountOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (mountOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\r\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n // 圆角边框\r\n if ((mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4) || mountOption.barBorderCircle === true) {\r\n const left = startX;\r\n const top = item.y;\r\n const width = item.width;\r\n const height = opts.height - opts.area[2] - item.y - mountOption.borderWidth * opts.pix / 2; \r\n if (mountOption.barBorderCircle) {\r\n mountOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = mountOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\r\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\r\n context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2);\r\n context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI);\r\n } else {\r\n context.moveTo(startX, item.y);\r\n context.lineTo(startX + item.width, item.y);\r\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\r\n context.lineTo(startX, opts.height - opts.area[2]);\r\n context.lineTo(startX, item.y);\r\n }\r\n context.setStrokeStyle(strokeColor);\r\n context.setFillStyle(fillColor);\r\n if(mountOption.borderWidth > 0){\r\n context.setLineWidth(mountOption.borderWidth * opts.pix);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'triangle':\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - eachSpacing*mountOption.widthRatio/2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || series[i].color\r\n var strokeColor = item.color || series[i].color\r\n if (mountOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (mountOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\r\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n context.moveTo(startX, opts.height - opts.area[2]);\r\n context.lineTo(item.x, item.y);\r\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\r\n context.setStrokeStyle(strokeColor);\r\n context.setFillStyle(fillColor);\r\n if(mountOption.borderWidth > 0){\r\n context.setLineWidth(mountOption.borderWidth * opts.pix);\r\n context.stroke();\r\n }\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'mount':\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - eachSpacing*mountOption.widthRatio/2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || series[i].color\r\n var strokeColor = item.color || series[i].color\r\n if (mountOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (mountOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\r\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n context.moveTo(startX, opts.height - opts.area[2]);\r\n context.bezierCurveTo(item.x - item.width/4, opts.height - opts.area[2], item.x - item.width/4, item.y, item.x, item.y);\r\n context.bezierCurveTo(item.x + item.width/4, item.y, item.x + item.width/4, opts.height - opts.area[2], startX + item.width, opts.height - opts.area[2]);\r\n context.setStrokeStyle(strokeColor);\r\n context.setFillStyle(fillColor);\r\n if(mountOption.borderWidth > 0){\r\n context.setLineWidth(mountOption.borderWidth * opts.pix);\r\n context.stroke();\r\n }\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'sharp':\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - eachSpacing*mountOption.widthRatio/2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || series[i].color\r\n var strokeColor = item.color || series[i].color\r\n if (mountOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (mountOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\r\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n context.moveTo(startX, opts.height - opts.area[2]);\r\n context.quadraticCurveTo(item.x - 0, opts.height - opts.area[2] - height/4, item.x, item.y);\r\n context.quadraticCurveTo(item.x + 0, opts.height - opts.area[2] - height/4, startX + item.width, opts.height - opts.area[2])\r\n context.setStrokeStyle(strokeColor);\r\n context.setFillStyle(fillColor);\r\n if(mountOption.borderWidth > 0){\r\n context.setLineWidth(mountOption.borderWidth * opts.pix);\r\n context.stroke();\r\n }\r\n context.fill();\r\n }\r\n };\r\n break;\r\n }\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, process);\r\n drawMountPointText(points, series, config, context, opts);\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: points,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawBarDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let yAxisPoints = [];\r\n let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/opts.categories.length;\r\n for (let i = 0; i < opts.categories.length; i++) {\r\n yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);\r\n }\r\n let columnOption = assign({}, {\r\n type: 'group',\r\n width: eachSpacing / 2,\r\n meterBorder: 4,\r\n meterFillColor: '#FFFFFF',\r\n barBorderCircle: false,\r\n barBorderRadius: [],\r\n seriesGap: 2,\r\n linearType: 'none',\r\n linearOpacity: 1,\r\n customColor: [],\r\n colorStop: 0,\r\n }, opts.extra.bar);\r\n let calPoints = [];\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = yAxisPoints.length + 2;\r\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\r\n drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);\r\n }\r\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.xAxisData.ranges);\r\n maxRange = ranges.pop();\r\n minRange = ranges.shift();\r\n var data = eachSeries.data;\r\n switch (columnOption.type) {\r\n case 'group':\r\n var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\r\n var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n calPoints.push(tooltipPoints);\r\n points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n //fix issues/I27B1N yyoinge & Joeshu\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n //var startX = item.x - item.width / 2;\r\n var startX = opts.area[3];\r\n var startY = item.y - item.width / 2;\r\n var height = item.height;\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color\r\n var strokeColor = item.color || eachSeries.color\r\n if (columnOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, item.x, item.y);\r\n //透明渐变\r\n if (columnOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\r\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n // 圆角边框\r\n if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) {\r\n const left = startX;\r\n const width = item.width;\r\n const top = item.y - item.width / 2;\r\n const height = item.height;\r\n if (columnOption.barBorderCircle) {\r\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = columnOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n \r\n context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);\r\n context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);\r\n context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);\r\n context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);\r\n } else {\r\n context.moveTo(startX, startY);\r\n context.lineTo(item.x, startY);\r\n context.lineTo(item.x, startY + item.width);\r\n context.lineTo(startX, startY + item.width);\r\n context.lineTo(startX, startY);\r\n context.setLineWidth(1)\r\n context.setStrokeStyle(strokeColor);\r\n }\r\n context.setFillStyle(fillColor);\r\n context.closePath();\r\n //context.stroke();\r\n context.fill();\r\n }\r\n };\r\n break;\r\n case 'stack':\r\n // 绘制堆叠数据图\r\n var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n calPoints.push(points);\r\n points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color;\r\n var startX = item.x0;\r\n context.setFillStyle(fillColor);\r\n context.moveTo(startX, item.y - item.width/2);\r\n context.fillRect(startX, item.y - item.width/2, item.height , item.width);\r\n context.closePath();\r\n context.fill();\r\n }\r\n };\r\n break;\r\n }\r\n });\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.xAxisData.ranges);\r\n maxRange = ranges.pop();\r\n minRange = ranges.shift();\r\n var data = eachSeries.data;\r\n switch (columnOption.type) {\r\n case 'group':\r\n var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\r\n points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\r\n drawBarPointText(points, eachSeries, config, context, opts);\r\n break;\r\n case 'stack':\r\n var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\r\n drawBarPointText(points, eachSeries, config, context, opts);\r\n break;\r\n }\r\n });\r\n }\r\n return {\r\n yAxisPoints: yAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawCandleDataPoints(series, seriesMA, opts, config, context) {\r\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\r\n var candleOption = assign({}, {\r\n color: {},\r\n average: {}\r\n }, opts.extra.candle);\r\n candleOption.color = assign({}, {\r\n upLine: '#f04864',\r\n upFill: '#f04864',\r\n downLine: '#2fc25b',\r\n downFill: '#2fc25b'\r\n }, candleOption.color);\r\n candleOption.average = assign({}, {\r\n show: false,\r\n name: [],\r\n day: [],\r\n color: config.color\r\n }, candleOption.average);\r\n opts.extra.candle = candleOption;\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let calPoints = [];\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = xAxisPoints.length + 2;\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\r\n rightNum = leftNum + opts.xAxis.itemCount + 4;\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\r\n }\r\n //画均线\r\n if (candleOption.average.show || seriesMA) { //Merge pull request !12 from 邱贵翔\r\n seriesMA.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n var splitPointList = splitPoints(points,eachSeries);\r\n for (let i = 0; i < splitPointList.length; i++) {\r\n let points = splitPointList[i];\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(1);\r\n if (points.length === 1) {\r\n context.moveTo(points[0].x, points[0].y);\r\n context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\r\n } else {\r\n context.moveTo(points[0].x, points[0].y);\r\n let startPoint = 0;\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n var ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x,\r\n item.y);\r\n }\r\n }\r\n context.moveTo(points[0].x, points[0].y);\r\n }\r\n context.closePath();\r\n context.stroke();\r\n }\r\n });\r\n }\r\n //画K线\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n var splitPointList = splitPoints(points,eachSeries);\r\n for (let i = 0; i < splitPointList[0].length; i++) {\r\n if (i > leftNum && i < rightNum) {\r\n let item = splitPointList[0][i];\r\n context.beginPath();\r\n //如果上涨\r\n if (data[i][1] - data[i][0] > 0) {\r\n context.setStrokeStyle(candleOption.color.upLine);\r\n context.setFillStyle(candleOption.color.upFill);\r\n context.setLineWidth(1 * opts.pix);\r\n context.moveTo(item[3].x, item[3].y); //顶点\r\n context.lineTo(item[1].x, item[1].y); //收盘中间点\r\n context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\r\n context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\r\n context.lineTo(item[0].x, item[0].y); //开盘中间点\r\n context.lineTo(item[2].x, item[2].y); //底点\r\n context.lineTo(item[0].x, item[0].y); //开盘中间点\r\n context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\r\n context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\r\n context.lineTo(item[1].x, item[1].y); //收盘中间点\r\n context.moveTo(item[3].x, item[3].y); //顶点\r\n } else {\r\n context.setStrokeStyle(candleOption.color.downLine);\r\n context.setFillStyle(candleOption.color.downFill);\r\n context.setLineWidth(1 * opts.pix);\r\n context.moveTo(item[3].x, item[3].y); //顶点\r\n context.lineTo(item[0].x, item[0].y); //开盘中间点\r\n context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\r\n context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\r\n context.lineTo(item[1].x, item[1].y); //收盘中间点\r\n context.lineTo(item[2].x, item[2].y); //底点\r\n context.lineTo(item[1].x, item[1].y); //收盘中间点\r\n context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\r\n context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\r\n context.lineTo(item[0].x, item[0].y); //开盘中间点\r\n context.moveTo(item[3].x, item[3].y); //顶点\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n }\r\n }\r\n });\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawAreaDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var areaOption = assign({}, {\r\n type: 'straight',\r\n opacity: 0.2,\r\n addLine: false,\r\n width: 2,\r\n gradient: false\r\n }, opts.extra.area);\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let endY = opts.height - opts.area[2];\r\n let calPoints = [];\r\n context.save();\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\r\n }\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n let data = eachSeries.data;\r\n let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n let splitPointList = splitPoints(points,eachSeries);\r\n for (let i = 0; i < splitPointList.length; i++) {\r\n let points = splitPointList[i];\r\n // 绘制区域数\r\n context.beginPath();\r\n context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n if (areaOption.gradient) {\r\n let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\r\n gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\r\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\r\n context.setFillStyle(gradient);\r\n } else {\r\n context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n }\r\n context.setLineWidth(areaOption.width * opts.pix);\r\n if (points.length > 1) {\r\n let firstPoint = points[0];\r\n let lastPoint = points[points.length - 1];\r\n context.moveTo(firstPoint.x, firstPoint.y);\r\n let startPoint = 0;\r\n if (areaOption.type === 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n let ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\r\n }\r\n };\r\n } \r\n if (areaOption.type === 'straight') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n if (areaOption.type === 'step') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, points[j - 1].y);\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n context.lineTo(lastPoint.x, endY);\r\n context.lineTo(firstPoint.x, endY);\r\n context.lineTo(firstPoint.x, firstPoint.y);\r\n } else {\r\n let item = points[0];\r\n context.moveTo(item.x - eachSpacing / 2, item.y);\r\n context.lineTo(item.x + eachSpacing / 2, item.y);\r\n context.lineTo(item.x + eachSpacing / 2, endY);\r\n context.lineTo(item.x - eachSpacing / 2, endY);\r\n context.moveTo(item.x - eachSpacing / 2, item.y);\r\n }\r\n context.closePath();\r\n context.fill();\r\n //画连线\r\n if (areaOption.addLine) {\r\n if (eachSeries.lineType == 'dash') {\r\n let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\r\n dashLength *= opts.pix;\r\n context.setLineDash([dashLength, dashLength]);\r\n }\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(areaOption.width * opts.pix);\r\n if (points.length === 1) {\r\n context.moveTo(points[0].x, points[0].y);\r\n context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\r\n } else {\r\n context.moveTo(points[0].x, points[0].y);\r\n let startPoint = 0;\r\n if (areaOption.type === 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n let ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\r\n }\r\n };\r\n }\r\n if (areaOption.type === 'straight') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n if (areaOption.type === 'step') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, points[j - 1].y);\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n context.moveTo(points[0].x, points[0].y);\r\n }\r\n context.stroke();\r\n context.setLineDash([]);\r\n }\r\n }\r\n //画点\r\n if (opts.dataPointShape !== false) {\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\r\n }\r\n });\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n drawPointText(points, eachSeries, config, context, opts);\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawScatterDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var scatterOption = assign({}, {\r\n type: 'circle'\r\n }, opts.extra.scatter);\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var calPoints = [];\r\n context.save();\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\r\n }\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setFillStyle(eachSeries.color);\r\n context.setLineWidth(1 * opts.pix);\r\n var shape = eachSeries.pointShape;\r\n if (shape === 'diamond') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x, item.y - 4.5);\r\n context.lineTo(item.x - 4.5, item.y);\r\n context.lineTo(item.x, item.y + 4.5);\r\n context.lineTo(item.x + 4.5, item.y);\r\n context.lineTo(item.x, item.y - 4.5);\r\n }\r\n });\r\n } else if (shape === 'circle') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x + 2.5 * opts.pix, item.y);\r\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\r\n }\r\n });\r\n } else if (shape === 'square') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x - 3.5, item.y - 3.5);\r\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\r\n }\r\n });\r\n } else if (shape === 'triangle') {\r\n points.forEach(function(item, index) {\r\n if (item !== null) {\r\n context.moveTo(item.x, item.y - 4.5);\r\n context.lineTo(item.x - 4.5, item.y + 4.5);\r\n context.lineTo(item.x + 4.5, item.y + 4.5);\r\n context.lineTo(item.x, item.y - 4.5);\r\n }\r\n });\r\n } else if (shape === 'triangle') {\r\n return;\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n });\r\n if (opts.dataLabel !== false && process === 1) {\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n drawPointText(points, eachSeries, config, context, opts);\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawBubbleDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var bubbleOption = assign({}, {\r\n opacity: 1,\r\n border:2\r\n }, opts.extra.bubble);\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var calPoints = [];\r\n context.save();\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\r\n }\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(bubbleOption.border * opts.pix);\r\n context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));\r\n points.forEach(function(item, index) {\r\n context.moveTo(item.x + item.r, item.y);\r\n context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);\r\n });\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n \r\n if (opts.dataLabel !== false && process === 1) {\r\n points.forEach(function(item, index) {\r\n context.beginPath();\r\n var fontSize = series.textSize * opts.pix || config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(series.textColor || \"#FFFFFF\");\r\n context.setTextAlign('center');\r\n context.fillText(String(item.t), item.x, item.y + fontSize/2);\r\n context.closePath();\r\n context.stroke();\r\n context.setTextAlign('left');\r\n });\r\n }\r\n });\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawLineDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var lineOption = assign({}, {\r\n type: 'straight',\r\n width: 2\r\n }, opts.extra.line);\r\n lineOption.width *= opts.pix;\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var calPoints = [];\r\n context.save();\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\r\n }\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n var splitPointList = splitPoints(points,eachSeries);\r\n if (eachSeries.lineType == 'dash') {\r\n let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\r\n dashLength *= opts.pix;\r\n context.setLineDash([dashLength, dashLength]);\r\n }\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(lineOption.width);\r\n splitPointList.forEach(function(points, index) {\r\n if (points.length === 1) {\r\n context.moveTo(points[0].x, points[0].y);\r\n context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\r\n } else {\r\n context.moveTo(points[0].x, points[0].y);\r\n let startPoint = 0;\r\n if (lineOption.type === 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n var ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\r\n }\r\n };\r\n }\r\n if (lineOption.type === 'straight') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n if (lineOption.type === 'step') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, points[j - 1].y);\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n context.moveTo(points[0].x, points[0].y);\r\n }\r\n });\r\n context.stroke();\r\n context.setLineDash([]);\r\n if (opts.dataPointShape !== false) {\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\r\n }\r\n });\r\n if (opts.dataLabel !== false && process === 1) {\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n drawPointText(points, eachSeries, config, context, opts);\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing\r\n };\r\n}\r\n\r\nfunction drawMixDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n eachSpacing = xAxisData.eachSpacing;\r\n let columnOption = assign({}, {\r\n width: eachSpacing / 2,\r\n barBorderCircle: false,\r\n barBorderRadius: [],\r\n seriesGap: 2,\r\n linearType: 'none',\r\n linearOpacity: 1,\r\n customColor: [],\r\n colorStop: 0,\r\n }, opts.extra.mix.column);\r\n let areaOption = assign({}, {\r\n opacity: 0.2,\r\n gradient: false\r\n }, opts.extra.mix.area);\r\n let endY = opts.height - opts.area[2];\r\n let calPoints = [];\r\n var columnIndex = 0;\r\n var columnLength = 0;\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n if (eachSeries.type == 'column') {\r\n columnLength += 1;\r\n }\r\n });\r\n context.save();\r\n let leftNum = -2;\r\n let rightNum = xAxisPoints.length + 2;\r\n let leftSpace = 0;\r\n let rightSpace = opts.width + eachSpacing;\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\r\n rightNum = leftNum + opts.xAxis.itemCount + 4;\r\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\r\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\r\n }\r\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n calPoints.push(points);\r\n // 绘制柱状数据图\r\n if (eachSeries.type == 'column') {\r\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\r\n for (let i = 0; i < points.length; i++) {\r\n let item = points[i];\r\n if (item !== null && i > leftNum && i < rightNum) {\r\n var startX = item.x - item.width / 2;\r\n var height = opts.height - item.y - opts.area[2];\r\n context.beginPath();\r\n var fillColor = item.color || eachSeries.color\r\n var strokeColor = item.color || eachSeries.color\r\n if (columnOption.linearType !== 'none') {\r\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\r\n //透明渐变\r\n if (columnOption.linearType == 'opacity') {\r\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n } else {\r\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\r\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\r\n grd.addColorStop(1, hexToRgb(fillColor, 1));\r\n }\r\n fillColor = grd\r\n }\r\n // 圆角边框\r\n if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle) {\r\n const left = startX;\r\n const top = item.y;\r\n const width = item.width;\r\n const height = opts.height - opts.area[2] - item.y;\r\n if (columnOption.barBorderCircle) {\r\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\r\n }\r\n let [r0, r1, r2, r3] = columnOption.barBorderRadius;\r\n let minRadius = Math.min(width/2,height/2);\r\n r0 = r0 > minRadius ? minRadius : r0;\r\n r1 = r1 > minRadius ? minRadius : r1;\r\n r2 = r2 > minRadius ? minRadius : r2;\r\n r3 = r3 > minRadius ? minRadius : r3;\r\n r0 = r0 < 0 ? 0 : r0;\r\n r1 = r1 < 0 ? 0 : r1;\r\n r2 = r2 < 0 ? 0 : r2;\r\n r3 = r3 < 0 ? 0 : r3;\r\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\r\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\r\n context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2);\r\n context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI);\r\n } else {\r\n context.moveTo(startX, item.y);\r\n context.lineTo(startX + item.width, item.y);\r\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\r\n context.lineTo(startX, opts.height - opts.area[2]);\r\n context.lineTo(startX, item.y);\r\n context.setLineWidth(1)\r\n context.setStrokeStyle(strokeColor);\r\n }\r\n context.setFillStyle(fillColor);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n columnIndex += 1;\r\n }\r\n //绘制区域图数据\r\n if (eachSeries.type == 'area') {\r\n let splitPointList = splitPoints(points,eachSeries);\r\n for (let i = 0; i < splitPointList.length; i++) {\r\n let points = splitPointList[i];\r\n // 绘制区域数据\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n if (areaOption.gradient) {\r\n let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\r\n gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\r\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\r\n context.setFillStyle(gradient);\r\n } else {\r\n context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\r\n }\r\n context.setLineWidth(2 * opts.pix);\r\n if (points.length > 1) {\r\n var firstPoint = points[0];\r\n let lastPoint = points[points.length - 1];\r\n context.moveTo(firstPoint.x, firstPoint.y);\r\n let startPoint = 0;\r\n if (eachSeries.style === 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n var ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\r\n }\r\n };\r\n } else {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n };\r\n }\r\n context.lineTo(lastPoint.x, endY);\r\n context.lineTo(firstPoint.x, endY);\r\n context.lineTo(firstPoint.x, firstPoint.y);\r\n } else {\r\n let item = points[0];\r\n context.moveTo(item.x - eachSpacing / 2, item.y);\r\n context.lineTo(item.x + eachSpacing / 2, item.y);\r\n context.lineTo(item.x + eachSpacing / 2, endY);\r\n context.lineTo(item.x - eachSpacing / 2, endY);\r\n context.moveTo(item.x - eachSpacing / 2, item.y);\r\n }\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n // 绘制折线数据图\r\n if (eachSeries.type == 'line') {\r\n var splitPointList = splitPoints(points,eachSeries);\r\n splitPointList.forEach(function(points, index) {\r\n if (eachSeries.lineType == 'dash') {\r\n let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\r\n dashLength *= opts.pix;\r\n context.setLineDash([dashLength, dashLength]);\r\n }\r\n context.beginPath();\r\n context.setStrokeStyle(eachSeries.color);\r\n context.setLineWidth(2 * opts.pix);\r\n if (points.length === 1) {\r\n context.moveTo(points[0].x, points[0].y);\r\n context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\r\n } else {\r\n context.moveTo(points[0].x, points[0].y);\r\n let startPoint = 0;\r\n if (eachSeries.style == 'curve') {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n var ctrlPoint = createCurveControlPoints(points, j - 1);\r\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,\r\n item.x, item.y);\r\n }\r\n }\r\n } else {\r\n for (let j = 0; j < points.length; j++) {\r\n let item = points[j];\r\n if (startPoint == 0 && item.x > leftSpace) {\r\n context.moveTo(item.x, item.y);\r\n startPoint = 1;\r\n }\r\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\r\n context.lineTo(item.x, item.y);\r\n }\r\n }\r\n }\r\n context.moveTo(points[0].x, points[0].y);\r\n }\r\n context.stroke();\r\n context.setLineDash([]);\r\n });\r\n }\r\n // 绘制点数据图\r\n if (eachSeries.type == 'point') {\r\n eachSeries.addPoint = true;\r\n }\r\n if (eachSeries.addPoint == true && eachSeries.type !== 'column') {\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\r\n }\r\n });\r\n if (opts.dataLabel !== false && process === 1) {\r\n var columnIndex = 0;\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n let ranges, minRange, maxRange;\r\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\r\n minRange = ranges.pop();\r\n maxRange = ranges.shift();\r\n var data = eachSeries.data;\r\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\r\n if (eachSeries.type !== 'column') {\r\n drawPointText(points, eachSeries, config, context, opts);\r\n } else {\r\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\r\n drawPointText(points, eachSeries, config, context, opts);\r\n columnIndex += 1;\r\n }\r\n });\r\n }\r\n context.restore();\r\n return {\r\n xAxisPoints: xAxisPoints,\r\n calPoints: calPoints,\r\n eachSpacing: eachSpacing,\r\n }\r\n}\r\n\r\n\r\nfunction drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {\r\n var toolTipOption = opts.extra.tooltip || {};\r\n if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) {\r\n drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints)\r\n }\r\n context.save();\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\r\n context.translate(opts._scrollDistance_, 0);\r\n }\r\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\r\n drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);\r\n }\r\n context.restore();\r\n\r\n}\r\n\r\nfunction drawXAxis(categories, opts, config, context) {\r\n\r\n let xAxisData = opts.chartData.xAxisData,\r\n xAxisPoints = xAxisData.xAxisPoints,\r\n startX = xAxisData.startX,\r\n endX = xAxisData.endX,\r\n eachSpacing = xAxisData.eachSpacing;\r\n var boundaryGap = 'center';\r\n if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area'|| opts.type == 'scatter' || opts.type == 'bubble') {\r\n boundaryGap = opts.xAxis.boundaryGap;\r\n }\r\n var startY = opts.height - opts.area[2];\r\n var endY = opts.area[0];\r\n\r\n //绘制滚动条\r\n if (opts.enableScroll && opts.xAxis.scrollShow) {\r\n var scrollY = opts.height - opts.area[2] + config.xAxisHeight;\r\n var scrollScreenWidth = endX - startX;\r\n var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);\r\n if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){\r\n if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2\r\n scrollTotalWidth += (opts.extra.mount.widthRatio - 1)*eachSpacing;\r\n }\r\n var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;\r\n var scrollLeft = 0;\r\n if (opts._scrollDistance_) {\r\n scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth;\r\n }\r\n context.beginPath();\r\n context.setLineCap('round');\r\n context.setLineWidth(6 * opts.pix);\r\n context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || \"#EFEBEF\");\r\n context.moveTo(startX, scrollY);\r\n context.lineTo(endX, scrollY);\r\n context.stroke();\r\n context.closePath();\r\n context.beginPath();\r\n context.setLineCap('round');\r\n context.setLineWidth(6 * opts.pix);\r\n context.setStrokeStyle(opts.xAxis.scrollColor || \"#A6A6A6\");\r\n context.moveTo(startX + scrollLeft, scrollY);\r\n context.lineTo(startX + scrollLeft + scrollWidth, scrollY);\r\n context.stroke();\r\n context.closePath();\r\n context.setLineCap('butt');\r\n }\r\n context.save();\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\r\n context.translate(opts._scrollDistance_, 0);\r\n }\r\n //绘制X轴刻度线\r\n if (opts.xAxis.calibration === true) {\r\n context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\r\n context.setLineCap('butt');\r\n context.setLineWidth(1 * opts.pix);\r\n xAxisPoints.forEach(function(item, index) {\r\n if (index > 0) {\r\n context.beginPath();\r\n context.moveTo(item - eachSpacing / 2, startY);\r\n context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n });\r\n }\r\n //绘制X轴网格\r\n if (opts.xAxis.disableGrid !== true) {\r\n context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\r\n context.setLineCap('butt');\r\n context.setLineWidth(1 * opts.pix);\r\n if (opts.xAxis.gridType == 'dash') {\r\n context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);\r\n }\r\n opts.xAxis.gridEval = opts.xAxis.gridEval || 1;\r\n xAxisPoints.forEach(function(item, index) {\r\n if (index % opts.xAxis.gridEval == 0) {\r\n context.beginPath();\r\n context.moveTo(item, startY);\r\n context.lineTo(item, endY);\r\n context.stroke();\r\n }\r\n });\r\n context.setLineDash([]);\r\n }\r\n //绘制X轴文案\r\n if (opts.xAxis.disabled !== true) {\r\n // 对X轴列表做抽稀处理\r\n //默认全部显示X轴标签\r\n let maxXAxisListLength = categories.length;\r\n //如果设置了X轴单屏数量\r\n if (opts.xAxis.labelCount) {\r\n //如果设置X轴密度\r\n if (opts.xAxis.itemCount) {\r\n maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);\r\n } else {\r\n maxXAxisListLength = opts.xAxis.labelCount;\r\n }\r\n maxXAxisListLength -= 1;\r\n }\r\n\r\n let ratio = Math.ceil(categories.length / maxXAxisListLength);\r\n\r\n let newCategories = [];\r\n let cgLength = categories.length;\r\n for (let i = 0; i < cgLength; i++) {\r\n if (i % ratio !== 0) {\r\n newCategories.push(\"\");\r\n } else {\r\n newCategories.push(categories[i]);\r\n }\r\n }\r\n newCategories[cgLength - 1] = categories[cgLength - 1];\r\n var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\r\n if (config._xAxisTextAngle_ === 0) {\r\n newCategories.forEach(function(item, index) {\r\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item;\r\n var offset = -measureText(String(xitem), xAxisFontSize, context) / 2;\r\n if (boundaryGap == 'center') {\r\n offset += eachSpacing / 2;\r\n }\r\n var scrollHeight = 0;\r\n if (opts.xAxis.scrollShow) {\r\n scrollHeight = 6 * opts.pix;\r\n }\r\n context.beginPath();\r\n context.setFontSize(xAxisFontSize);\r\n context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\r\n context.fillText(String(xitem), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2);\r\n context.closePath();\r\n context.stroke();\r\n });\r\n } else {\r\n newCategories.forEach(function(item, index) {\r\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;\r\n context.save();\r\n context.beginPath();\r\n context.setFontSize(xAxisFontSize);\r\n context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\r\n var textWidth = measureText(String(xitem), xAxisFontSize, context);\r\n var offsetX = xAxisPoints[index];\r\n if (boundaryGap == 'center') {\r\n offsetX = xAxisPoints[index] + eachSpacing / 2;\r\n }\r\n var scrollHeight = 0;\r\n if (opts.xAxis.scrollShow) {\r\n scrollHeight = 6 * opts.pix;\r\n }\r\n var offsetY = startY + 6 * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_));\r\n if(opts.xAxis.rotateAngle < 0){\r\n offsetX -= xAxisFontSize / 2;\r\n textWidth = 0;\r\n }else{\r\n offsetX += xAxisFontSize / 2;\r\n textWidth = -textWidth;\r\n }\r\n context.translate(offsetX, offsetY);\r\n context.rotate(-1 * config._xAxisTextAngle_);\r\n context.fillText(String(xitem), textWidth , 0 );\r\n context.closePath();\r\n context.stroke();\r\n context.restore();\r\n });\r\n }\r\n }\r\n context.restore();\r\n //绘制X轴轴线\r\n if (opts.xAxis.axisLine) {\r\n context.beginPath();\r\n context.setStrokeStyle(opts.xAxis.axisLineColor);\r\n context.setLineWidth(1 * opts.pix);\r\n context.moveTo(startX, opts.height - opts.area[2]);\r\n context.lineTo(endX, opts.height - opts.area[2]);\r\n context.stroke();\r\n }\r\n}\r\n\r\nfunction drawYAxisGrid(categories, opts, config, context) {\r\n if (opts.yAxis.disableGrid === true) {\r\n return;\r\n }\r\n let spacingValid = opts.height - opts.area[0] - opts.area[2];\r\n let eachSpacing = spacingValid / opts.yAxis.splitNumber;\r\n let startX = opts.area[3];\r\n let xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\r\n xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;\r\n let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);\r\n if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1 ){\r\n if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2\r\n TotalWidth += (opts.extra.mount.widthRatio - 1)*xAxiseachSpacing;\r\n }\r\n let endX = startX + TotalWidth;\r\n let points = [];\r\n let startY = 1\r\n if (opts.xAxis.axisLine === false) {\r\n startY = 0\r\n }\r\n for (let i = startY; i < opts.yAxis.splitNumber + 1; i++) {\r\n points.push(opts.height - opts.area[2] - eachSpacing * i);\r\n }\r\n context.save();\r\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\r\n context.translate(opts._scrollDistance_, 0);\r\n }\r\n if (opts.yAxis.gridType == 'dash') {\r\n context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);\r\n }\r\n context.setStrokeStyle(opts.yAxis.gridColor);\r\n context.setLineWidth(1 * opts.pix);\r\n points.forEach(function(item, index) {\r\n context.beginPath();\r\n context.moveTo(startX, item);\r\n context.lineTo(endX, item);\r\n context.stroke();\r\n });\r\n context.setLineDash([]);\r\n context.restore();\r\n}\r\n\r\nfunction drawYAxis(series, opts, config, context) {\r\n if (opts.yAxis.disabled === true) {\r\n return;\r\n }\r\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\r\n var eachSpacing = spacingValid / opts.yAxis.splitNumber;\r\n var startX = opts.area[3];\r\n var endX = opts.width - opts.area[1];\r\n var endY = opts.height - opts.area[2];\r\n var fillEndY = endY + config.xAxisHeight;\r\n if (opts.xAxis.scrollShow) {\r\n fillEndY -= 3 * opts.pix;\r\n }\r\n if (opts.xAxis.rotateLabel) {\r\n fillEndY = opts.height - opts.area[2] + opts.fontSize * opts.pix / 2;\r\n }\r\n // set YAxis background\r\n context.beginPath();\r\n context.setFillStyle(opts.background);\r\n if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {\r\n context.fillRect(0, 0, startX, fillEndY);\r\n }\r\n if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {\r\n context.fillRect(endX, 0, opts.width, fillEndY);\r\n }\r\n context.closePath();\r\n context.stroke();\r\n \r\n let tStartLeft = opts.area[3];\r\n let tStartRight = opts.width - opts.area[1];\r\n let tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;\r\n if (opts.yAxis.data) {\r\n for (let i = 0; i < opts.yAxis.data.length; i++) {\r\n let yData = opts.yAxis.data[i];\r\n var points = [];\r\n if(yData.type === 'categories'){\r\n for (let i = 0; i <= yData.categories.length; i++) {\r\n points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * i);\r\n }\r\n }else{\r\n for (let i = 0; i <= opts.yAxis.splitNumber; i++) {\r\n points.push(opts.area[0] + eachSpacing * i);\r\n }\r\n }\r\n if (yData.disabled !== true) {\r\n let rangesFormat = opts.chartData.yAxisData.rangesFormat[i];\r\n let yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;\r\n let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];\r\n let textAlign = yData.textAlign || \"right\";\r\n //画Y轴刻度及文案\r\n rangesFormat.forEach(function(item, index) {\r\n var pos = points[index];\r\n context.beginPath();\r\n context.setFontSize(yAxisFontSize);\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(yData.axisLineColor || '#cccccc');\r\n context.setFillStyle(yData.fontColor || opts.fontColor);\r\n let tmpstrat = 0;\r\n let gapwidth = 4 * opts.pix;\r\n if (yAxisWidth.position == 'left') {\r\n //画刻度线\r\n if (yData.calibration == true) {\r\n context.moveTo(tStartLeft, pos);\r\n context.lineTo(tStartLeft - 3 * opts.pix, pos);\r\n gapwidth += 3 * opts.pix;\r\n }\r\n //画文字\r\n switch (textAlign) {\r\n case \"left\":\r\n context.setTextAlign('left');\r\n tmpstrat = tStartLeft - yAxisWidth.width\r\n break;\r\n case \"right\":\r\n context.setTextAlign('right');\r\n tmpstrat = tStartLeft - gapwidth\r\n break;\r\n default:\r\n context.setTextAlign('center');\r\n tmpstrat = tStartLeft - yAxisWidth.width / 2\r\n }\r\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\r\n\r\n } else if (yAxisWidth.position == 'right') {\r\n //画刻度线\r\n if (yData.calibration == true) {\r\n context.moveTo(tStartRight, pos);\r\n context.lineTo(tStartRight + 3 * opts.pix, pos);\r\n gapwidth += 3 * opts.pix;\r\n }\r\n switch (textAlign) {\r\n case \"left\":\r\n context.setTextAlign('left');\r\n tmpstrat = tStartRight + gapwidth\r\n break;\r\n case \"right\":\r\n context.setTextAlign('right');\r\n tmpstrat = tStartRight + yAxisWidth.width\r\n break;\r\n default:\r\n context.setTextAlign('center');\r\n tmpstrat = tStartRight + yAxisWidth.width / 2\r\n }\r\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\r\n } else if (yAxisWidth.position == 'center') {\r\n //画刻度线\r\n if (yData.calibration == true) {\r\n context.moveTo(tStartCenter, pos);\r\n context.lineTo(tStartCenter - 3 * opts.pix, pos);\r\n gapwidth += 3 * opts.pix;\r\n }\r\n //画文字\r\n switch (textAlign) {\r\n case \"left\":\r\n context.setTextAlign('left');\r\n tmpstrat = tStartCenter - yAxisWidth.width\r\n break;\r\n case \"right\":\r\n context.setTextAlign('right');\r\n tmpstrat = tStartCenter - gapwidth\r\n break;\r\n default:\r\n context.setTextAlign('center');\r\n tmpstrat = tStartCenter - yAxisWidth.width / 2\r\n }\r\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\r\n }\r\n context.closePath();\r\n context.stroke();\r\n context.setTextAlign('left');\r\n });\r\n //画Y轴轴线\r\n if (yData.axisLine !== false) {\r\n context.beginPath();\r\n context.setStrokeStyle(yData.axisLineColor || '#cccccc');\r\n context.setLineWidth(1 * opts.pix);\r\n if (yAxisWidth.position == 'left') {\r\n context.moveTo(tStartLeft, opts.height - opts.area[2]);\r\n context.lineTo(tStartLeft, opts.area[0]);\r\n } else if (yAxisWidth.position == 'right') {\r\n context.moveTo(tStartRight, opts.height - opts.area[2]);\r\n context.lineTo(tStartRight, opts.area[0]);\r\n } else if (yAxisWidth.position == 'center') {\r\n context.moveTo(tStartCenter, opts.height - opts.area[2]);\r\n context.lineTo(tStartCenter, opts.area[0]);\r\n }\r\n context.stroke();\r\n }\r\n //画Y轴标题\r\n if (opts.yAxis.showTitle) {\r\n let titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;\r\n let title = yData.title;\r\n context.beginPath();\r\n context.setFontSize(titleFontSize);\r\n context.setFillStyle(yData.titleFontColor || opts.fontColor);\r\n if (yAxisWidth.position == 'left') {\r\n context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\r\n } else if (yAxisWidth.position == 'right') {\r\n context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\r\n } else if (yAxisWidth.position == 'center') {\r\n context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\r\n }\r\n context.closePath();\r\n context.stroke();\r\n }\r\n if (yAxisWidth.position == 'left') {\r\n tStartLeft -= (yAxisWidth.width + opts.yAxis.padding * opts.pix);\r\n } else {\r\n tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nfunction drawLegend(series, opts, config, context, chartData) {\r\n if (opts.legend.show === false) {\r\n return;\r\n }\r\n let legendData = chartData.legendData;\r\n let legendList = legendData.points;\r\n let legendArea = legendData.area;\r\n let padding = opts.legend.padding * opts.pix;\r\n let fontSize = opts.legend.fontSize * opts.pix;\r\n let shapeWidth = 15 * opts.pix;\r\n let shapeRight = 5 * opts.pix;\r\n let itemGap = opts.legend.itemGap * opts.pix;\r\n let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\r\n //画背景及边框\r\n context.beginPath();\r\n context.setLineWidth(opts.legend.borderWidth * opts.pix);\r\n context.setStrokeStyle(opts.legend.borderColor);\r\n context.setFillStyle(opts.legend.backgroundColor);\r\n context.moveTo(legendArea.start.x, legendArea.start.y);\r\n context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n legendList.forEach(function(itemList, listIndex) {\r\n let width = 0;\r\n let height = 0;\r\n width = legendData.widthArr[listIndex];\r\n height = legendData.heightArr[listIndex];\r\n let startX = 0;\r\n let startY = 0;\r\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\r\n switch (opts.legend.float) {\r\n case 'left':\r\n startX = legendArea.start.x + padding;\r\n break;\r\n case 'right':\r\n startX = legendArea.start.x + legendArea.width - width;\r\n break;\r\n default:\r\n startX = legendArea.start.x + (legendArea.width - width) / 2;\r\n }\r\n startY = legendArea.start.y + padding + listIndex * lineHeight;\r\n } else {\r\n if (listIndex == 0) {\r\n width = 0;\r\n } else {\r\n width = legendData.widthArr[listIndex - 1];\r\n }\r\n startX = legendArea.start.x + padding + width;\r\n startY = legendArea.start.y + padding + (legendArea.height - height) / 2;\r\n }\r\n context.setFontSize(config.fontSize);\r\n for (let i = 0; i < itemList.length; i++) {\r\n let item = itemList[i];\r\n item.area = [0, 0, 0, 0];\r\n item.area[0] = startX;\r\n item.area[1] = startY;\r\n item.area[3] = startY + lineHeight;\r\n context.beginPath();\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);\r\n context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);\r\n switch (item.legendShape) {\r\n case 'line':\r\n context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);\r\n break;\r\n case 'triangle':\r\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\r\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\r\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n break;\r\n case 'diamond':\r\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);\r\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\r\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);\r\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n break;\r\n case 'circle':\r\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);\r\n context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);\r\n break;\r\n case 'rect':\r\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\r\n break;\r\n case 'square':\r\n context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);\r\n break;\r\n case 'none':\r\n break;\r\n default:\r\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\r\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\r\n }\r\n context.closePath();\r\n context.fill();\r\n context.stroke();\r\n startX += shapeWidth + shapeRight;\r\n let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;\r\n const legendText = item.legendText ? item.legendText : item.name;\r\n context.beginPath();\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);\r\n context.fillText(legendText, startX, startY + fontTrans);\r\n context.closePath();\r\n context.stroke();\r\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\r\n startX += measureText(legendText, fontSize, context) + itemGap;\r\n item.area[2] = startX;\r\n } else {\r\n item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;;\r\n startX -= shapeWidth + shapeRight;\r\n startY += lineHeight;\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction drawPieDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var pieOption = assign({}, {\r\n activeOpacity: 0.5,\r\n activeRadius: 10,\r\n offsetAngle: 0,\r\n labelWidth: 15,\r\n ringWidth: 30,\r\n customRadius: 0,\r\n border: false,\r\n borderWidth: 2,\r\n borderColor: '#FFFFFF',\r\n centerColor: '#FFFFFF',\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.type == \"pie\" ? opts.extra.pie : opts.extra.ring);\r\n var centerPosition = {\r\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\r\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\r\n };\r\n if (config.pieChartLinePadding == 0) {\r\n config.pieChartLinePadding = pieOption.activeRadius * opts.pix;\r\n }\r\n\r\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\r\n radius = radius < 10 ? 10 : radius;\r\n if (pieOption.customRadius > 0) {\r\n radius = pieOption.customRadius * opts.pix;\r\n }\r\n series = getPieDataPoints(series, radius, process);\r\n var activeRadius = pieOption.activeRadius * opts.pix;\r\n pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);\r\n series = series.map(function(eachSeries) {\r\n eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180;\r\n return eachSeries;\r\n });\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == seriesIndex) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5));\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n context.beginPath();\r\n context.setLineWidth(pieOption.borderWidth * opts.pix);\r\n context.lineJoin = \"round\";\r\n context.setStrokeStyle(pieOption.borderColor);\r\n var fillcolor = eachSeries.color;\r\n if (pieOption.linearType == 'custom') {\r\n var grd;\r\n if(context.createCircularGradient){\r\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_)\r\n }else{\r\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_)\r\n }\r\n grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1))\r\n grd.addColorStop(1, hexToRgb(eachSeries.color, 1))\r\n fillcolor = grd\r\n }\r\n context.setFillStyle(fillcolor);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n if (pieOption.border == true) {\r\n context.stroke();\r\n }\r\n });\r\n if (opts.type === 'ring') {\r\n var innerPieWidth = radius * 0.6;\r\n if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {\r\n innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);\r\n }\r\n context.beginPath();\r\n context.setFillStyle(pieOption.centerColor);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n }\r\n if (opts.dataLabel !== false && process === 1) {\r\n drawPieText(series, opts, config, context, radius, centerPosition);\r\n }\r\n if (process === 1 && opts.type === 'ring') {\r\n drawRingTitle(opts, config, context, centerPosition);\r\n }\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n series: series\r\n };\r\n}\r\n\r\nfunction drawRoseDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var roseOption = assign({}, {\r\n type: 'area',\r\n activeOpacity: 0.5,\r\n activeRadius: 10,\r\n offsetAngle: 0,\r\n labelWidth: 15,\r\n border: false,\r\n borderWidth: 2,\r\n borderColor: '#FFFFFF',\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.extra.rose);\r\n if (config.pieChartLinePadding == 0) {\r\n config.pieChartLinePadding = roseOption.activeRadius * opts.pix;\r\n }\r\n var centerPosition = {\r\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\r\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\r\n };\r\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\r\n radius = radius < 10 ? 10 : radius;\r\n var minRadius = roseOption.minRadius || radius * 0.5;\r\n series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);\r\n var activeRadius = roseOption.activeRadius * opts.pix;\r\n roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);\r\n series = series.map(function(eachSeries) {\r\n eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;\r\n return eachSeries;\r\n });\r\n series.forEach(function(eachSeries, seriesIndex) {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == seriesIndex) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n context.beginPath();\r\n context.setLineWidth(roseOption.borderWidth * opts.pix);\r\n context.lineJoin = \"round\";\r\n context.setStrokeStyle(roseOption.borderColor);\r\n var fillcolor = eachSeries.color;\r\n if (roseOption.linearType == 'custom') {\r\n var grd;\r\n if(context.createCircularGradient){\r\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_)\r\n }else{\r\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_)\r\n }\r\n grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1))\r\n grd.addColorStop(1, hexToRgb(eachSeries.color, 1))\r\n fillcolor = grd\r\n }\r\n context.setFillStyle(fillcolor);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n if (roseOption.border == true) {\r\n context.stroke();\r\n }\r\n });\r\n\r\n if (opts.dataLabel !== false && process === 1) {\r\n drawPieText(series, opts, config, context, radius, centerPosition);\r\n }\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n series: series\r\n };\r\n}\r\n\r\nfunction drawArcbarDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var arcbarOption = assign({}, {\r\n startAngle: 0.75,\r\n endAngle: 0.25,\r\n type: 'default',\r\n lineCap: 'round',\r\n width: 12 ,\r\n gap: 2 ,\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.extra.arcbar);\r\n series = getArcbarDataPoints(series, arcbarOption, process);\r\n var centerPosition;\r\n if (arcbarOption.centerX || arcbarOption.centerY) {\r\n centerPosition = {\r\n x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,\r\n y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2\r\n };\r\n } else {\r\n centerPosition = {\r\n x: opts.width / 2,\r\n y: opts.height / 2\r\n };\r\n }\r\n var radius;\r\n if (arcbarOption.radius) {\r\n radius = arcbarOption.radius;\r\n } else {\r\n radius = Math.min(centerPosition.x, centerPosition.y);\r\n radius -= 5 * opts.pix;\r\n radius -= arcbarOption.width / 2;\r\n }\r\n radius = radius < 10 ? 10 : radius;\r\n arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);\r\n \r\n for (let i = 0; i < series.length; i++) {\r\n let eachSeries = series[i];\r\n //背景颜色\r\n context.setLineWidth(arcbarOption.width * opts.pix);\r\n context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');\r\n context.setLineCap(arcbarOption.lineCap);\r\n context.beginPath();\r\n if (arcbarOption.type == 'default') {\r\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, false);\r\n } else {\r\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, false);\r\n }\r\n context.stroke();\r\n //进度条\r\n var fillColor = eachSeries.color\r\n if(arcbarOption.linearType == 'custom'){\r\n var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);\r\n grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1))\r\n grd.addColorStop(0, hexToRgb(eachSeries.color, 1))\r\n fillColor = grd;\r\n }\r\n context.setLineWidth(arcbarOption.width * opts.pix);\r\n context.setStrokeStyle(fillColor);\r\n context.setLineCap(arcbarOption.lineCap);\r\n context.beginPath();\r\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, false);\r\n context.stroke();\r\n }\r\n drawRingTitle(opts, config, context, centerPosition);\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n series: series\r\n };\r\n}\r\n\r\nfunction drawGaugeDataPoints(categories, series, opts, config, context) {\r\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\r\n var gaugeOption = assign({}, {\r\n type: 'default',\r\n startAngle: 0.75,\r\n endAngle: 0.25,\r\n width: 15,\r\n labelOffset:13,\r\n splitLine: {\r\n fixRadius: 0,\r\n splitNumber: 10,\r\n width: 15,\r\n color: '#FFFFFF',\r\n childNumber: 5,\r\n childWidth: 5\r\n },\r\n pointer: {\r\n width: 15,\r\n color: 'auto'\r\n }\r\n }, opts.extra.gauge);\r\n if (gaugeOption.oldAngle == undefined) {\r\n gaugeOption.oldAngle = gaugeOption.startAngle;\r\n }\r\n if (gaugeOption.oldData == undefined) {\r\n gaugeOption.oldData = 0;\r\n }\r\n categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);\r\n var centerPosition = {\r\n x: opts.width / 2,\r\n y: opts.height / 2\r\n };\r\n var radius = Math.min(centerPosition.x, centerPosition.y);\r\n radius -= 5 * opts.pix;\r\n radius -= gaugeOption.width / 2;\r\n radius = radius < 10 ? 10 : radius;\r\n var innerRadius = radius - gaugeOption.width;\r\n var totalAngle = 0;\r\n //判断仪表盘的样式:default百度样式,progress新样式\r\n if (gaugeOption.type == 'progress') {\r\n //## 第一步画中心圆形背景和进度条背景\r\n //中心圆形背景\r\n var pieRadius = radius - gaugeOption.width * 3;\r\n context.beginPath();\r\n let gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);\r\n //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)\r\n gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));\r\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\r\n context.setFillStyle(gradient);\r\n context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);\r\n context.fill();\r\n //画进度条背景\r\n context.setLineWidth(gaugeOption.width);\r\n context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\r\n context.setLineCap('round');\r\n context.beginPath();\r\n context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);\r\n context.stroke();\r\n //## 第二步画刻度线\r\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\r\n let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\r\n let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\r\n let endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n let len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;\r\n let proc = series[0].data * process;\r\n for (let i = 0; i < len; i++) {\r\n context.beginPath();\r\n //刻度线随进度变色\r\n if (proc > (i / len)) {\r\n context.setStrokeStyle(hexToRgb(series[0].color, 1));\r\n } else {\r\n context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\r\n }\r\n context.setLineWidth(3 * opts.pix);\r\n context.moveTo(startX, 0);\r\n context.lineTo(endX, 0);\r\n context.stroke();\r\n context.rotate(childAngle * Math.PI);\r\n }\r\n context.restore();\r\n //## 第三步画进度条\r\n series = getGaugeArcbarDataPoints(series, gaugeOption, process);\r\n context.setLineWidth(gaugeOption.width);\r\n context.setStrokeStyle(series[0].color);\r\n context.setLineCap('round');\r\n context.beginPath();\r\n context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);\r\n context.stroke();\r\n //## 第四步画指针\r\n let pointerRadius = radius - gaugeOption.width * 2.5;\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((series[0]._proportion_ - 1) * Math.PI);\r\n context.beginPath();\r\n context.setLineWidth(gaugeOption.width / 3);\r\n let gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);\r\n gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));\r\n gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));\r\n gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));\r\n context.setStrokeStyle(gradient3);\r\n context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);\r\n context.stroke();\r\n context.beginPath();\r\n context.setLineWidth(1);\r\n context.setStrokeStyle(series[0].color);\r\n context.setFillStyle(series[0].color);\r\n context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\r\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);\r\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);\r\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\r\n context.stroke();\r\n context.fill();\r\n context.restore();\r\n //default百度样式\r\n } else {\r\n //画背景\r\n context.setLineWidth(gaugeOption.width);\r\n context.setLineCap('butt');\r\n for (let i = 0; i < categories.length; i++) {\r\n let eachCategories = categories[i];\r\n context.beginPath();\r\n context.setStrokeStyle(eachCategories.color);\r\n context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);\r\n context.stroke();\r\n }\r\n context.save();\r\n //画刻度线\r\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;\r\n let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\r\n let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\r\n let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\r\n let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\r\n let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\r\n context.beginPath();\r\n context.setStrokeStyle(gaugeOption.splitLine.color);\r\n context.setLineWidth(2 * opts.pix);\r\n context.moveTo(startX, 0);\r\n context.lineTo(endX, 0);\r\n context.stroke();\r\n context.rotate(splitAngle * Math.PI);\r\n }\r\n context.restore();\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\r\n for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) {\r\n context.beginPath();\r\n context.setStrokeStyle(gaugeOption.splitLine.color);\r\n context.setLineWidth(1 * opts.pix);\r\n context.moveTo(startX, 0);\r\n context.lineTo(childendX, 0);\r\n context.stroke();\r\n context.rotate(childAngle * Math.PI);\r\n }\r\n context.restore();\r\n //画指针\r\n series = getGaugeDataPoints(series, categories, gaugeOption, process);\r\n for (let i = 0; i < series.length; i++) {\r\n let eachSeries = series[i];\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n context.rotate((eachSeries._proportion_ - 1) * Math.PI);\r\n context.beginPath();\r\n context.setFillStyle(eachSeries.color);\r\n context.moveTo(gaugeOption.pointer.width, 0);\r\n context.lineTo(0, -gaugeOption.pointer.width / 2);\r\n context.lineTo(-innerRadius, 0);\r\n context.lineTo(0, gaugeOption.pointer.width / 2);\r\n context.lineTo(gaugeOption.pointer.width, 0);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFillStyle('#FFFFFF');\r\n context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);\r\n context.fill();\r\n context.restore();\r\n }\r\n if (opts.dataLabel !== false) {\r\n drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);\r\n }\r\n }\r\n //画仪表盘标题,副标题\r\n drawRingTitle(opts, config, context, centerPosition);\r\n if (process === 1 && opts.type === 'gauge') {\r\n opts.extra.gauge.oldAngle = series[0]._proportion_;\r\n opts.extra.gauge.oldData = series[0].data;\r\n }\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n innerRadius: innerRadius,\r\n categories: categories,\r\n totalAngle: totalAngle\r\n };\r\n}\r\n\r\nfunction drawRadarDataPoints(series, opts, config, context) {\r\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n var radarOption = assign({}, {\r\n gridColor: '#cccccc',\r\n gridType: 'radar',\r\n gridEval:1,\r\n axisLabel:false,\r\n axisLabelTofix:0,\r\n labelColor:'#666666',\r\n labelPointShow:false,\r\n labelPointRadius:3,\r\n labelPointColor:'#cccccc',\r\n opacity: 0.2,\r\n gridCount: 3,\r\n border:false,\r\n borderWidth:2,\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.extra.radar);\r\n var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);\r\n var centerPosition = {\r\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\r\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\r\n };\r\n var xr = (opts.width - opts.area[1] - opts.area[3]) / 2\r\n var yr = (opts.height - opts.area[0] - opts.area[2]) / 2\r\n var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);\r\n radius -= config.radarLabelTextMargin * opts.pix;\r\n radius = radius < 10 ? 10 : radius;\r\n // 画分割线\r\n context.beginPath();\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(radarOption.gridColor);\r\n coordinateAngle.forEach(function(angle,index) {\r\n var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);\r\n context.moveTo(centerPosition.x, centerPosition.y);\r\n if (index % radarOption.gridEval == 0) {\r\n context.lineTo(pos.x, pos.y);\r\n }\r\n });\r\n context.stroke();\r\n context.closePath();\r\n \r\n // 画背景网格\r\n var _loop = function _loop(i) {\r\n var startPos = {};\r\n context.beginPath();\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(radarOption.gridColor);\r\n if (radarOption.gridType == 'radar') {\r\n coordinateAngle.forEach(function(angle, index) {\r\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius /\r\n radarOption.gridCount * i * Math.sin(angle), centerPosition);\r\n if (index === 0) {\r\n startPos = pos;\r\n context.moveTo(pos.x, pos.y);\r\n } else {\r\n context.lineTo(pos.x, pos.y);\r\n }\r\n });\r\n context.lineTo(startPos.x, startPos.y);\r\n } else {\r\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);\r\n context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);\r\n }\r\n context.stroke();\r\n context.closePath();\r\n };\r\n for (var i = 1; i <= radarOption.gridCount; i++) {\r\n _loop(i);\r\n }\r\n radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config);\r\n var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);\r\n radarDataPoints.forEach(function(eachSeries, seriesIndex) {\r\n // 绘制区域数据\r\n context.beginPath();\r\n context.setLineWidth(radarOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(eachSeries.color);\r\n \r\n var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity);\r\n if (radarOption.linearType == 'custom') {\r\n var grd;\r\n if(context.createCircularGradient){\r\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius)\r\n }else{\r\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, radius)\r\n }\r\n grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity))\r\n grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity))\r\n fillcolor = grd\r\n }\r\n \r\n context.setFillStyle(fillcolor);\r\n eachSeries.data.forEach(function(item, index) {\r\n if (index === 0) {\r\n context.moveTo(item.position.x, item.position.y);\r\n } else {\r\n context.lineTo(item.position.x, item.position.y);\r\n }\r\n });\r\n context.closePath();\r\n context.fill();\r\n if(radarOption.border === true){\r\n context.stroke();\r\n }\r\n context.closePath();\r\n if (opts.dataPointShape !== false) {\r\n var points = eachSeries.data.map(function(item) {\r\n return item.position;\r\n });\r\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\r\n }\r\n });\r\n // 画刻度值\r\n if(radarOption.axisLabel === true){\r\n const maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\r\n const stepLength = radius / radarOption.gridCount;\r\n const fontSize = opts.fontSize * opts.pix;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(opts.fontColor);\r\n context.setTextAlign('left');\r\n for (var i = 0; i < radarOption.gridCount + 1; i++) {\r\n let label = i * maxData / radarOption.gridCount;\r\n label = label.toFixed(radarOption.axisLabelTofix);\r\n context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2);\r\n }\r\n }\r\n \r\n // draw label text\r\n drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);\r\n \r\n // draw dataLabel\r\n if (opts.dataLabel !== false && process === 1) {\r\n radarDataPoints.forEach(function(eachSeries, seriesIndex) {\r\n context.beginPath();\r\n var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(eachSeries.textColor || opts.fontColor);\r\n eachSeries.data.forEach(function(item, index) {\r\n //如果是中心点垂直的上下点位\r\n if(Math.abs(item.position.x - centerPosition.x)<2){\r\n //如果在上面\r\n if(item.position.y < centerPosition.y){\r\n context.setTextAlign('center');\r\n context.fillText(item.value, item.position.x, item.position.y - 4);\r\n }else{\r\n context.setTextAlign('center');\r\n context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);\r\n }\r\n }else{\r\n //如果在左侧\r\n if(item.position.x < centerPosition.x){\r\n context.setTextAlign('right');\r\n context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);\r\n }else{\r\n context.setTextAlign('left');\r\n context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);\r\n }\r\n }\r\n });\r\n context.closePath();\r\n context.stroke();\r\n });\r\n context.setTextAlign('left');\r\n }\r\n \r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n angleList: coordinateAngle\r\n };\r\n}\r\n\r\n// 经纬度转墨卡托\r\nfunction lonlat2mercator(longitude, latitude) {\r\n var mercator = Array(2);\r\n var x = longitude * 20037508.34 / 180;\r\n var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);\r\n y = y * 20037508.34 / 180;\r\n mercator[0] = x;\r\n mercator[1] = y;\r\n return mercator;\r\n}\r\n\r\n// 墨卡托转经纬度\r\nfunction mercator2lonlat(longitude, latitude) {\r\n var lonlat = Array(2)\r\n var x = longitude / 20037508.34 * 180;\r\n var y = latitude / 20037508.34 * 180;\r\n y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);\r\n lonlat[0] = x;\r\n lonlat[1] = y;\r\n return lonlat;\r\n}\r\n\r\nfunction getBoundingBox(data) {\r\n var bounds = {},coords;\r\n bounds.xMin = 180;\r\n bounds.xMax = 0;\r\n bounds.yMin = 90;\r\n bounds.yMax = 0\r\n for (var i = 0; i < data.length; i++) {\r\n var coorda = data[i].geometry.coordinates\r\n for (var k = 0; k < coorda.length; k++) {\r\n coords = coorda[k];\r\n if (coords.length == 1) {\r\n coords = coords[0]\r\n }\r\n for (var j = 0; j < coords.length; j++) {\r\n var longitude = coords[j][0];\r\n var latitude = coords[j][1];\r\n var point = {\r\n x: longitude,\r\n y: latitude\r\n }\r\n bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;\r\n bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;\r\n bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;\r\n bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;\r\n }\r\n }\r\n }\r\n return bounds;\r\n}\r\n\r\nfunction coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {\r\n return {\r\n x: (longitude - bounds.xMin) * scale + xoffset,\r\n y: (bounds.yMax - latitude) * scale + yoffset\r\n };\r\n}\r\n\r\nfunction pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {\r\n return {\r\n x: (pointX - xoffset) / scale + bounds.xMin,\r\n y: bounds.yMax - (pointY - yoffset) / scale\r\n };\r\n}\r\n\r\nfunction isRayIntersectsSegment(poi, s_poi, e_poi) {\r\n if (s_poi[1] == e_poi[1]) {\r\n return false;\r\n }\r\n if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {\r\n return false;\r\n }\r\n if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {\r\n return false;\r\n }\r\n if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {\r\n return false;\r\n }\r\n if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {\r\n return false;\r\n }\r\n if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {\r\n return false;\r\n }\r\n let xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);\r\n if (xseg < poi[0]) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n}\r\n\r\nfunction isPoiWithinPoly(poi, poly, mercator) {\r\n let sinsc = 0;\r\n for (let i = 0; i < poly.length; i++) {\r\n let epoly = poly[i][0];\r\n if (poly.length == 1) {\r\n epoly = poly[i][0]\r\n }\r\n for (let j = 0; j < epoly.length - 1; j++) {\r\n let s_poi = epoly[j];\r\n let e_poi = epoly[j + 1];\r\n if (mercator) {\r\n s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);\r\n e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);\r\n }\r\n if (isRayIntersectsSegment(poi, s_poi, e_poi)) {\r\n sinsc += 1;\r\n }\r\n }\r\n }\r\n if (sinsc % 2 == 1) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nfunction drawMapDataPoints(series, opts, config, context) {\r\n var mapOption = assign({}, {\r\n border: true,\r\n mercator: false,\r\n borderWidth: 1,\r\n borderColor: '#666666',\r\n fillOpacity: 0.6,\r\n activeBorderColor: '#f04864',\r\n activeFillColor: '#facc14',\r\n activeFillOpacity: 1\r\n }, opts.extra.map);\r\n var coords, point;\r\n var data = series;\r\n var bounds = getBoundingBox(data);\r\n if (mapOption.mercator) {\r\n var max = lonlat2mercator(bounds.xMax, bounds.yMax)\r\n var min = lonlat2mercator(bounds.xMin, bounds.yMin)\r\n bounds.xMax = max[0]\r\n bounds.yMax = max[1]\r\n bounds.xMin = min[0]\r\n bounds.yMin = min[1]\r\n }\r\n var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);\r\n var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);\r\n var scale = xScale < yScale ? xScale : yScale;\r\n var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;\r\n var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;\r\n for (var i = 0; i < data.length; i++) {\r\n context.beginPath();\r\n context.setLineWidth(mapOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(mapOption.borderColor);\r\n context.setFillStyle(hexToRgb(series[i].color, mapOption.fillOpacity));\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.setStrokeStyle(mapOption.activeBorderColor);\r\n context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));\r\n }\r\n }\r\n var coorda = data[i].geometry.coordinates\r\n for (var k = 0; k < coorda.length; k++) {\r\n coords = coorda[k];\r\n if (coords.length == 1) {\r\n coords = coords[0]\r\n }\r\n for (var j = 0; j < coords.length; j++) {\r\n var gaosi = Array(2);\r\n if (mapOption.mercator) {\r\n gaosi = lonlat2mercator(coords[j][0], coords[j][1])\r\n } else {\r\n gaosi = coords[j]\r\n }\r\n point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset)\r\n if (j === 0) {\r\n context.beginPath();\r\n context.moveTo(point.x, point.y);\r\n } else {\r\n context.lineTo(point.x, point.y);\r\n }\r\n }\r\n context.fill();\r\n if (mapOption.border == true) {\r\n context.stroke();\r\n }\r\n }\r\n }\r\n if (opts.dataLabel == true) {\r\n for (var i = 0; i < data.length; i++) {\r\n var centerPoint = data[i].properties.centroid;\r\n if (centerPoint) {\r\n if (mapOption.mercator) {\r\n centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1])\r\n }\r\n point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);\r\n let fontSize = data[i].textSize * opts.pix || config.fontSize;\r\n let text = data[i].properties.name;\r\n context.beginPath();\r\n context.setFontSize(fontSize)\r\n context.setFillStyle(data[i].textColor || opts.fontColor)\r\n context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2);\r\n context.closePath();\r\n context.stroke();\r\n }\r\n }\r\n }\r\n opts.chartData.mapData = {\r\n bounds: bounds,\r\n scale: scale,\r\n xoffset: xoffset,\r\n yoffset: yoffset,\r\n mercator: mapOption.mercator\r\n }\r\n drawToolTipBridge(opts, config, context, 1);\r\n context.draw();\r\n}\r\n\r\nfunction normalInt(min, max, iter) {\r\n iter = iter == 0 ? 1 : iter;\r\n var arr = [];\r\n for (var i = 0; i < iter; i++) {\r\n arr[i] = Math.random();\r\n };\r\n return Math.floor(arr.reduce(function(i, j) {\r\n return i + j\r\n }) / iter * (max - min)) + min;\r\n};\r\n\r\nfunction collisionNew(area, points, width, height) {\r\n var isIn = false;\r\n for (let i = 0; i < points.length; i++) {\r\n if (points[i].area) {\r\n if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {\r\n if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {\r\n isIn = true;\r\n break;\r\n } else {\r\n isIn = false;\r\n }\r\n } else {\r\n isIn = true;\r\n break;\r\n }\r\n }\r\n }\r\n return isIn;\r\n};\r\n\r\nfunction getWordCloudPoint(opts, type, context) {\r\n let points = opts.series;\r\n switch (type) {\r\n case 'normal':\r\n for (let i = 0; i < points.length; i++) {\r\n let text = points[i].name;\r\n let tHeight = points[i].textSize * opts.pix;\r\n let tWidth = measureText(text, tHeight, context);\r\n let x, y;\r\n let area;\r\n let breaknum = 0;\r\n while (true) {\r\n breaknum++;\r\n x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;\r\n y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;\r\n area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 +\r\n opts.height / 2\r\n ];\r\n let isCollision = collisionNew(area, points, opts.width, opts.height);\r\n if (!isCollision) break;\r\n if (breaknum == 1000) {\r\n area = [-100, -100, -100, -100];\r\n break;\r\n }\r\n };\r\n points[i].area = area;\r\n }\r\n break;\r\n case 'vertical':\r\n function Spin() {\r\n //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)\r\n if (Math.random() > 0.7) {\r\n return true;\r\n } else {\r\n return false\r\n };\r\n };\r\n for (let i = 0; i < points.length; i++) {\r\n let text = points[i].name;\r\n let tHeight = points[i].textSize * opts.pix;\r\n let tWidth = measureText(text, tHeight, context);\r\n let isSpin = Spin();\r\n let x, y, area, areav;\r\n let breaknum = 0;\r\n while (true) {\r\n breaknum++;\r\n let isCollision;\r\n if (isSpin) {\r\n x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;\r\n y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;\r\n area = [y - 5 - tWidth + opts.width / 2, (-x - 5 + opts.height / 2), y + 5 + opts.width / 2, (-x + tHeight + 5 + opts.height / 2)];\r\n areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-x + tHeight + 5 + opts.height / 2) - 5, (opts.height / 2 - opts.width / 2) + (y - 5 - tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-x + tHeight + 5 + opts.height / 2) + tHeight, (opts.height / 2 - opts.width / 2) + (y - 5 - tWidth + opts.width / 2) + tWidth + 5];\r\n isCollision = collisionNew(areav, points, opts.height, opts.width);\r\n } else {\r\n x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;\r\n y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;\r\n area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2];\r\n isCollision = collisionNew(area, points, opts.width, opts.height);\r\n }\r\n if (!isCollision) break;\r\n if (breaknum == 1000) {\r\n area = [-1000, -1000, -1000, -1000];\r\n break;\r\n }\r\n };\r\n if (isSpin) {\r\n points[i].area = areav;\r\n points[i].areav = area;\r\n } else {\r\n points[i].area = area;\r\n }\r\n points[i].rotate = isSpin;\r\n };\r\n break;\r\n }\r\n return points;\r\n}\r\n\r\nfunction drawWordCloudDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let wordOption = assign({}, {\r\n type: 'normal',\r\n autoColors: true\r\n }, opts.extra.word);\r\n if (!opts.chartData.wordCloudData) {\r\n opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);\r\n }\r\n context.beginPath();\r\n context.setFillStyle(opts.background);\r\n context.rect(0, 0, opts.width, opts.height);\r\n context.fill();\r\n context.save();\r\n let points = opts.chartData.wordCloudData;\r\n context.translate(opts.width / 2, opts.height / 2);\r\n for (let i = 0; i < points.length; i++) {\r\n context.save();\r\n if (points[i].rotate) {\r\n context.rotate(90 * Math.PI / 180);\r\n }\r\n let text = points[i].name;\r\n let tHeight = points[i].textSize * opts.pix;\r\n let tWidth = measureText(text, tHeight, context);\r\n context.beginPath();\r\n context.setStrokeStyle(points[i].color);\r\n context.setFillStyle(points[i].color);\r\n context.setFontSize(tHeight);\r\n if (points[i].rotate) {\r\n if (points[i].areav[0] > 0) {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\r\n } else {\r\n context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\r\n }\r\n } else {\r\n context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\r\n }\r\n }\r\n } else {\r\n if (points[i].area[0] > 0) {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\r\n } else {\r\n context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\r\n }\r\n } else {\r\n context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\r\n }\r\n }\r\n }\r\n context.stroke();\r\n context.restore();\r\n }\r\n context.restore();\r\n}\r\n\r\nfunction drawFunnelDataPoints(series, opts, config, context) {\r\n let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\r\n let funnelOption = assign({}, {\r\n type:'funnel',\r\n activeWidth: 10,\r\n activeOpacity: 0.3,\r\n border: false,\r\n borderWidth: 2,\r\n borderColor: '#FFFFFF',\r\n fillOpacity: 1,\r\n labelAlign: 'right',\r\n linearType: 'none',\r\n customColor: [],\r\n }, opts.extra.funnel);\r\n let eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;\r\n let centerPosition = {\r\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\r\n y: opts.height - opts.area[2]\r\n };\r\n let activeWidth = funnelOption.activeWidth * opts.pix;\r\n let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);\r\n series = getFunnelDataPoints(series, radius, funnelOption.type, eachSpacing, process);\r\n context.save();\r\n context.translate(centerPosition.x, centerPosition.y);\r\n funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);\r\n if(funnelOption.type == 'pyramid'){\r\n for (let i = 0; i < series.length; i++) {\r\n if (i == series.length -1) {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));\r\n context.moveTo(-activeWidth, -eachSpacing);\r\n context.lineTo(-series[i].radius - activeWidth, 0);\r\n context.lineTo(series[i].radius + activeWidth, 0);\r\n context.lineTo(activeWidth, -eachSpacing);\r\n context.lineTo(-activeWidth, -eachSpacing);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i];\r\n context.beginPath();\r\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\r\n if (funnelOption.linearType == 'custom') {\r\n var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\r\n grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\r\n grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n fillColor = grd\r\n }\r\n context.setFillStyle(fillColor);\r\n context.moveTo(0, -eachSpacing);\r\n context.lineTo(-series[i].radius, 0);\r\n context.lineTo(series[i].radius, 0);\r\n context.lineTo(0, -eachSpacing);\r\n context.closePath();\r\n context.fill();\r\n if (funnelOption.border == true) {\r\n context.stroke();\r\n }\r\n } else {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i].radius - activeWidth, 0);\r\n context.lineTo(-series[i + 1].radius - activeWidth, -eachSpacing);\r\n context.lineTo(series[i + 1].radius + activeWidth, -eachSpacing);\r\n context.lineTo(series[i].radius + activeWidth, 0);\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i];\r\n context.beginPath();\r\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\r\n if (funnelOption.linearType == 'custom') {\r\n var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\r\n grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\r\n grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n fillColor = grd\r\n }\r\n context.setFillStyle(fillColor);\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i].radius, 0);\r\n context.lineTo(-series[i + 1].radius, -eachSpacing);\r\n context.lineTo(series[i + 1].radius, -eachSpacing);\r\n context.lineTo(series[i].radius, 0);\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fill();\r\n if (funnelOption.border == true) {\r\n context.stroke();\r\n }\r\n }\r\n context.translate(0, -eachSpacing)\r\n }\r\n }else{\r\n for (let i = 0; i < series.length; i++) {\r\n if (i == 0) {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));\r\n context.moveTo(-activeWidth, 0);\r\n context.lineTo(-series[i].radius - activeWidth, -eachSpacing);\r\n context.lineTo(series[i].radius + activeWidth, -eachSpacing);\r\n context.lineTo(activeWidth, 0);\r\n context.lineTo(-activeWidth, 0);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing, centerPosition.x + series[i].radius, centerPosition.y];\r\n context.beginPath();\r\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\r\n if (funnelOption.linearType == 'custom') {\r\n var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\r\n grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\r\n grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n fillColor = grd\r\n }\r\n context.setFillStyle(fillColor);\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i].radius, -eachSpacing);\r\n context.lineTo(series[i].radius, -eachSpacing);\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fill();\r\n if (funnelOption.border == true) {\r\n context.stroke();\r\n }\r\n } else {\r\n if (opts.tooltip) {\r\n if (opts.tooltip.index == i) {\r\n context.beginPath();\r\n context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i - 1].radius - activeWidth, 0);\r\n context.lineTo(-series[i].radius - activeWidth, -eachSpacing);\r\n context.lineTo(series[i].radius + activeWidth, -eachSpacing);\r\n context.lineTo(series[i - 1].radius + activeWidth, 0);\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fill();\r\n }\r\n }\r\n series[i].funnelArea = [centerPosition.x - series[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + series[i].radius, centerPosition.y - eachSpacing * i];\r\n context.beginPath();\r\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\r\n context.setStrokeStyle(funnelOption.borderColor);\r\n var fillColor = hexToRgb(series[i].color, funnelOption.fillOpacity);\r\n if (funnelOption.linearType == 'custom') {\r\n var grd = context.createLinearGradient(series[i].radius, -eachSpacing, -series[i].radius, -eachSpacing);\r\n grd.addColorStop(0, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[series[i].linearIndex], funnelOption.fillOpacity));\r\n grd.addColorStop(1, hexToRgb(series[i].color, funnelOption.fillOpacity));\r\n fillColor = grd\r\n }\r\n context.setFillStyle(fillColor);\r\n context.moveTo(0, 0);\r\n context.lineTo(-series[i - 1].radius, 0);\r\n context.lineTo(-series[i].radius, -eachSpacing);\r\n context.lineTo(series[i].radius, -eachSpacing);\r\n context.lineTo(series[i - 1].radius, 0);\r\n context.lineTo(0, 0);\r\n context.closePath();\r\n context.fill();\r\n if (funnelOption.border == true) {\r\n context.stroke();\r\n }\r\n }\r\n context.translate(0, -eachSpacing)\r\n }\r\n }\r\n \r\n context.restore();\r\n if (opts.dataLabel !== false && process === 1) {\r\n drawFunnelText(series, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\r\n }\r\n return {\r\n center: centerPosition,\r\n radius: radius,\r\n series: series\r\n };\r\n}\r\n\r\nfunction drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {\r\n for (let i = 0; i < series.length; i++) {\r\n let item = series[i];\r\n if(item.labelShow === false){\r\n continue;\r\n }\r\n let startX, endX, startY, fontSize;\r\n let text = item.formatter ? item.formatter(item,i,series,opts) : util.toFixed(item._proportion_ * 100) + '%';\r\n text = item.labelText ? item.labelText : text;\r\n if (labelAlign == 'right') {\r\n if(opts.extra.funnel.type === 'pyramid'){\r\n if (i == series.length -1) {\r\n startX = (item.funnelArea[2] + centerPosition.x) / 2;\r\n } else {\r\n startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2;\r\n }\r\n }else{\r\n if (i == 0) {\r\n startX = (item.funnelArea[2] + centerPosition.x) / 2;\r\n } else {\r\n startX = (item.funnelArea[2] + series[i - 1].funnelArea[2]) / 2;\r\n }\r\n }\r\n endX = startX + activeWidth * 2;\r\n startY = item.funnelArea[1] + eachSpacing / 2;\r\n fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(item.color);\r\n context.setFillStyle(item.color);\r\n context.beginPath();\r\n context.moveTo(startX, startY);\r\n context.lineTo(endX, startY);\r\n context.stroke();\r\n context.closePath();\r\n context.beginPath();\r\n context.moveTo(endX, startY);\r\n context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(item.textColor || opts.fontColor);\r\n context.fillText(text, endX + 5, startY + fontSize / 2 - 2);\r\n context.closePath();\r\n context.stroke();\r\n context.closePath();\r\n } else {\r\n if(opts.extra.funnel.type === 'pyramid'){\r\n if (i == series.length -1) {\r\n startX = (item.funnelArea[0] + centerPosition.x) / 2;\r\n } else {\r\n startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2;\r\n }\r\n }else{\r\n if (i == 0) {\r\n startX = (item.funnelArea[0] + centerPosition.x) / 2;\r\n } else {\r\n startX = (item.funnelArea[0] + series[i - 1].funnelArea[0]) / 2;\r\n }\r\n }\r\n endX = startX - activeWidth * 2;\r\n startY = item.funnelArea[1] + eachSpacing / 2;\r\n fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\r\n context.setLineWidth(1 * opts.pix);\r\n context.setStrokeStyle(item.color);\r\n context.setFillStyle(item.color);\r\n context.beginPath();\r\n context.moveTo(startX, startY);\r\n context.lineTo(endX, startY);\r\n context.stroke();\r\n context.closePath();\r\n context.beginPath();\r\n context.moveTo(endX, startY);\r\n context.arc(endX, startY, 2, 0, 2 * Math.PI);\r\n context.closePath();\r\n context.fill();\r\n context.beginPath();\r\n context.setFontSize(fontSize);\r\n context.setFillStyle(item.textColor || opts.fontColor);\r\n context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2);\r\n context.closePath();\r\n context.stroke();\r\n context.closePath();\r\n }\r\n\r\n }\r\n}\r\n\r\n\r\nfunction drawCanvas(opts, context) {\r\n context.draw();\r\n}\r\n\r\nvar Timing = {\r\n easeIn: function easeIn(pos) {\r\n return Math.pow(pos, 3);\r\n },\r\n easeOut: function easeOut(pos) {\r\n return Math.pow(pos - 1, 3) + 1;\r\n },\r\n easeInOut: function easeInOut(pos) {\r\n if ((pos /= 0.5) < 1) {\r\n return 0.5 * Math.pow(pos, 3);\r\n } else {\r\n return 0.5 * (Math.pow(pos - 2, 3) + 2);\r\n }\r\n },\r\n linear: function linear(pos) {\r\n return pos;\r\n }\r\n};\r\n\r\nfunction Animation(opts) {\r\n this.isStop = false;\r\n opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;\r\n opts.timing = opts.timing || 'easeInOut';\r\n var delay = 17;\r\n function createAnimationFrame() {\r\n if (typeof setTimeout !== 'undefined') {\r\n return function(step, delay) {\r\n setTimeout(function() {\r\n var timeStamp = +new Date();\r\n step(timeStamp);\r\n }, delay);\r\n };\r\n } else if (typeof requestAnimationFrame !== 'undefined') {\r\n return requestAnimationFrame;\r\n } else {\r\n return function(step) {\r\n step(null);\r\n };\r\n }\r\n };\r\n var animationFrame = createAnimationFrame();\r\n var startTimeStamp = null;\r\n var _step = function step(timestamp) {\r\n if (timestamp === null || this.isStop === true) {\r\n opts.onProcess && opts.onProcess(1);\r\n opts.onAnimationFinish && opts.onAnimationFinish();\r\n return;\r\n }\r\n if (startTimeStamp === null) {\r\n startTimeStamp = timestamp;\r\n }\r\n if (timestamp - startTimeStamp < opts.duration) {\r\n var process = (timestamp - startTimeStamp) / opts.duration;\r\n var timingFunction = Timing[opts.timing];\r\n process = timingFunction(process);\r\n opts.onProcess && opts.onProcess(process);\r\n animationFrame(_step, delay);\r\n } else {\r\n opts.onProcess && opts.onProcess(1);\r\n opts.onAnimationFinish && opts.onAnimationFinish();\r\n }\r\n };\r\n _step = _step.bind(this);\r\n animationFrame(_step, delay);\r\n}\r\n\r\nAnimation.prototype.stop = function() {\r\n this.isStop = true;\r\n};\r\n\r\nfunction drawCharts(type, opts, config, context) {\r\n var _this = this;\r\n var series = opts.series;\r\n //兼容ECharts饼图类数据格式\r\n if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') {\r\n series = fixPieSeries(series, opts, config);\r\n }\r\n var categories = opts.categories;\r\n if (type === 'mount') {\r\n categories = [];\r\n for (let j = 0; j < series.length; j++) {\r\n if(series[j].show !== false) categories.push(series[j].name)\r\n }\r\n opts.categories = categories;\r\n }\r\n series = fillSeries(series, opts, config);\r\n var duration = opts.animation ? opts.duration : 0;\r\n _this.animationInstance && _this.animationInstance.stop();\r\n var seriesMA = null;\r\n if (type == 'candle') {\r\n let average = assign({}, opts.extra.candle.average);\r\n if (average.show) {\r\n seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);\r\n seriesMA = fillSeries(seriesMA, opts, config);\r\n opts.seriesMA = seriesMA;\r\n } else if (opts.seriesMA) {\r\n seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);\r\n } else {\r\n seriesMA = series;\r\n }\r\n } else {\r\n seriesMA = series;\r\n }\r\n /* 过滤掉show=false的series */\r\n opts._series_ = series = filterSeries(series);\r\n //重新计算图表区域\r\n opts.area = new Array(4);\r\n //复位绘图区域\r\n for (let j = 0; j < 4; j++) {\r\n opts.area[j] = opts.padding[j] * opts.pix;\r\n }\r\n //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域\r\n var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),\r\n legendHeight = _calLegendData.area.wholeHeight,\r\n legendWidth = _calLegendData.area.wholeWidth;\r\n\r\n switch (opts.legend.position) {\r\n case 'top':\r\n opts.area[0] += legendHeight;\r\n break;\r\n case 'bottom':\r\n opts.area[2] += legendHeight;\r\n break;\r\n case 'left':\r\n opts.area[3] += legendWidth;\r\n break;\r\n case 'right':\r\n opts.area[1] += legendWidth;\r\n break;\r\n }\r\n\r\n let _calYAxisData = {},\r\n yAxisWidth = 0;\r\n if (opts.type === 'line' || opts.type === 'column'|| opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\r\n _calYAxisData = calYAxisData(series, opts, config, context);\r\n yAxisWidth = _calYAxisData.yAxisWidth;\r\n //如果显示Y轴标题\r\n if (opts.yAxis.showTitle) {\r\n let maxTitleHeight = 0;\r\n for (let i = 0; i < opts.yAxis.data.length; i++) {\r\n maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize)\r\n }\r\n opts.area[0] += maxTitleHeight;\r\n }\r\n let rightIndex = 0,\r\n leftIndex = 0;\r\n //计算主绘图区域左右位置\r\n for (let i = 0; i < yAxisWidth.length; i++) {\r\n if (yAxisWidth[i].position == 'left') {\r\n if (leftIndex > 0) {\r\n opts.area[3] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix;\r\n } else {\r\n opts.area[3] += yAxisWidth[i].width;\r\n }\r\n leftIndex += 1;\r\n } else if (yAxisWidth[i].position == 'right') {\r\n if (rightIndex > 0) {\r\n opts.area[1] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix;\r\n } else {\r\n opts.area[1] += yAxisWidth[i].width;\r\n }\r\n rightIndex += 1;\r\n }\r\n }\r\n } else {\r\n config.yAxisWidth = yAxisWidth;\r\n }\r\n opts.chartData.yAxisData = _calYAxisData;\r\n\r\n if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {\r\n opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);\r\n let _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\r\n xAxisHeight = _calCategoriesData.xAxisHeight,\r\n angle = _calCategoriesData.angle;\r\n config.xAxisHeight = xAxisHeight;\r\n config._xAxisTextAngle_ = angle;\r\n opts.area[2] += xAxisHeight;\r\n opts.chartData.categoriesData = _calCategoriesData;\r\n } else {\r\n if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\r\n opts.chartData.xAxisData = calXAxisData(series, opts, config, context);\r\n categories = opts.chartData.xAxisData.rangesFormat;\r\n let _calCategoriesData = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\r\n xAxisHeight = _calCategoriesData.xAxisHeight,\r\n angle = _calCategoriesData.angle;\r\n config.xAxisHeight = xAxisHeight;\r\n config._xAxisTextAngle_ = angle;\r\n opts.area[2] += xAxisHeight;\r\n opts.chartData.categoriesData = _calCategoriesData;\r\n } else {\r\n opts.chartData.xAxisData = {\r\n xAxisPoints: []\r\n };\r\n }\r\n }\r\n\r\n //计算右对齐偏移距离\r\n if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {\r\n let offsetLeft = 0,\r\n xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\r\n startX = opts.chartData.xAxisData.startX,\r\n endX = opts.chartData.xAxisData.endX,\r\n eachSpacing = opts.chartData.xAxisData.eachSpacing;\r\n let totalWidth = eachSpacing * (xAxisPoints.length - 1);\r\n let screenWidth = endX - startX;\r\n offsetLeft = screenWidth - totalWidth;\r\n _this.scrollOption.currentOffset = offsetLeft;\r\n _this.scrollOption.startTouchX = offsetLeft;\r\n _this.scrollOption.distance = 0;\r\n _this.scrollOption.lastMoveTime = 0;\r\n opts._scrollDistance_ = offsetLeft;\r\n }\r\n\r\n if (type === 'pie' || type === 'ring' || type === 'rose') {\r\n config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts);\r\n }\r\n \r\n switch (type) {\r\n case 'word':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawWordCloudDataPoints(series, opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'map':\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n drawMapDataPoints(series, opts, config, context);\r\n break;\r\n case 'funnel':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'line':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawLineDataPoints.xAxisPoints,\r\n calPoints = _drawLineDataPoints.calPoints,\r\n eachSpacing = _drawLineDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'scatter':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawScatterDataPoints.xAxisPoints,\r\n calPoints = _drawScatterDataPoints.calPoints,\r\n eachSpacing = _drawScatterDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'bubble':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawBubbleDataPoints.xAxisPoints,\r\n calPoints = _drawBubbleDataPoints.calPoints,\r\n eachSpacing = _drawBubbleDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'mix':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawMixDataPoints.xAxisPoints,\r\n calPoints = _drawMixDataPoints.calPoints,\r\n eachSpacing = _drawMixDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'column':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawColumnDataPoints.xAxisPoints,\r\n calPoints = _drawColumnDataPoints.calPoints,\r\n eachSpacing = _drawColumnDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'mount':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawMountDataPoints.xAxisPoints,\r\n calPoints = _drawMountDataPoints.calPoints,\r\n eachSpacing = _drawMountDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'bar':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawXAxis(categories, opts, config, context);\r\n var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),\r\n yAxisPoints = _drawBarDataPoints.yAxisPoints,\r\n calPoints = _drawBarDataPoints.calPoints,\r\n eachSpacing = _drawBarDataPoints.eachSpacing;\r\n opts.chartData.yAxisPoints = yAxisPoints;\r\n opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'area':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),\r\n xAxisPoints = _drawAreaDataPoints.xAxisPoints,\r\n calPoints = _drawAreaDataPoints.calPoints,\r\n eachSpacing = _drawAreaDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'ring':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'pie':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'rose':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'radar':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n drawToolTipBridge(opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'arcbar':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'gauge':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n case 'candle':\r\n this.animationInstance = new Animation({\r\n timing: opts.timing,\r\n duration: duration,\r\n onProcess: function onProcess(process) {\r\n context.clearRect(0, 0, opts.width, opts.height);\r\n if (opts.rotate) {\r\n contextRotate(context, opts);\r\n }\r\n drawYAxisGrid(categories, opts, config, context);\r\n drawXAxis(categories, opts, config, context);\r\n var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),\r\n xAxisPoints = _drawCandleDataPoints.xAxisPoints,\r\n calPoints = _drawCandleDataPoints.calPoints,\r\n eachSpacing = _drawCandleDataPoints.eachSpacing;\r\n opts.chartData.xAxisPoints = xAxisPoints;\r\n opts.chartData.calPoints = calPoints;\r\n opts.chartData.eachSpacing = eachSpacing;\r\n drawYAxis(series, opts, config, context);\r\n if (opts.enableMarkLine !== false && process === 1) {\r\n drawMarkLine(opts, config, context);\r\n }\r\n if (seriesMA) {\r\n drawLegend(seriesMA, opts, config, context, opts.chartData);\r\n } else {\r\n drawLegend(opts.series, opts, config, context, opts.chartData);\r\n }\r\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\r\n drawCanvas(opts, context);\r\n },\r\n onAnimationFinish: function onAnimationFinish() {\r\n _this.uevent.trigger('renderComplete');\r\n }\r\n });\r\n break;\r\n }\r\n}\r\n\r\nfunction uChartsEvent() {\r\n this.events = {};\r\n}\r\n\r\nuChartsEvent.prototype.addEventListener = function(type, listener) {\r\n this.events[type] = this.events[type] || [];\r\n this.events[type].push(listener);\r\n};\r\n\r\nuChartsEvent.prototype.delEventListener = function(type) {\r\n this.events[type] = [];\r\n};\r\n\r\nuChartsEvent.prototype.trigger = function() {\r\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n var type = args[0];\r\n var params = args.slice(1);\r\n if (!!this.events[type]) {\r\n this.events[type].forEach(function(listener) {\r\n try {\r\n listener.apply(null, params);\r\n } catch (e) {\r\n //console.log('[uCharts] '+e);\r\n }\r\n });\r\n }\r\n};\r\n\r\nvar uCharts = function uCharts(opts) {\r\n opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;\r\n opts.fontSize = opts.fontSize ? opts.fontSize : 13;\r\n opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;\r\n if (opts.background == \"\" || opts.background == \"none\") {\r\n opts.background = \"#FFFFFF\"\r\n }\r\n opts.title = assign({}, opts.title);\r\n opts.subtitle = assign({}, opts.subtitle);\r\n opts.duration = opts.duration ? opts.duration : 1000;\r\n opts.yAxis = assign({}, {\r\n data: [],\r\n showTitle: false,\r\n disabled: false,\r\n disableGrid: false,\r\n splitNumber: 5,\r\n gridType: 'solid',\r\n dashLength: 4 * opts.pix,\r\n gridColor: '#cccccc',\r\n padding: 10,\r\n fontColor: '#666666'\r\n }, opts.yAxis);\r\n opts.xAxis = assign({}, {\r\n rotateLabel: false,\r\n rotateAngle:45,\r\n disabled: false,\r\n disableGrid: false,\r\n splitNumber: 5,\r\n calibration:false,\r\n gridType: 'solid',\r\n dashLength: 4,\r\n scrollAlign: 'left',\r\n boundaryGap: 'center',\r\n axisLine: true,\r\n axisLineColor: '#cccccc'\r\n }, opts.xAxis);\r\n opts.xAxis.scrollPosition = opts.xAxis.scrollAlign;\r\n opts.legend = assign({}, {\r\n show: true,\r\n position: 'bottom',\r\n float: 'center',\r\n backgroundColor: 'rgba(0,0,0,0)',\r\n borderColor: 'rgba(0,0,0,0)',\r\n borderWidth: 0,\r\n padding: 5,\r\n margin: 5,\r\n itemGap: 10,\r\n fontSize: opts.fontSize,\r\n lineHeight: opts.fontSize,\r\n fontColor: opts.fontColor,\r\n formatter: {},\r\n hiddenColor: '#CECECE'\r\n }, opts.legend);\r\n opts.extra = assign({}, opts.extra);\r\n opts.rotate = opts.rotate ? true : false;\r\n opts.animation = opts.animation ? true : false;\r\n opts.rotate = opts.rotate ? true : false;\r\n opts.canvas2d = opts.canvas2d ? true : false;\r\n \r\n let config$$1 = assign({}, config);\r\n config$$1.color = opts.color ? opts.color : config$$1.color;\r\n if (opts.type == 'pie') {\r\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\r\n }\r\n if (opts.type == 'ring') {\r\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\r\n }\r\n if (opts.type == 'rose') {\r\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\r\n }\r\n config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;\r\n\r\n //屏幕旋转\r\n config$$1.rotate = opts.rotate;\r\n if (opts.rotate) {\r\n let tempWidth = opts.width;\r\n let tempHeight = opts.height;\r\n opts.width = tempHeight;\r\n opts.height = tempWidth;\r\n }\r\n\r\n //适配高分屏\r\n opts.padding = opts.padding ? opts.padding : config$$1.padding;\r\n config$$1.yAxisWidth = config.yAxisWidth * opts.pix;\r\n config$$1.xAxisHeight = config.xAxisHeight * opts.pix;\r\n if (opts.enableScroll && opts.xAxis.scrollShow) {\r\n config$$1.xAxisHeight += 6 * opts.pix;\r\n }\r\n config$$1.fontSize = opts.fontSize * opts.pix;\r\n config$$1.titleFontSize = config.titleFontSize * opts.pix;\r\n config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;\r\n config$$1.toolTipPadding = config.toolTipPadding * opts.pix;\r\n config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pix;\r\n if(!opts.context){\r\n throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!');\r\n }\r\n this.context = opts.context;\r\n if (!this.context.setTextAlign) {\r\n this.context.setStrokeStyle = function(e) {\r\n return this.strokeStyle = e;\r\n }\r\n this.context.setLineWidth = function(e) {\r\n return this.lineWidth = e;\r\n }\r\n this.context.setLineCap = function(e) {\r\n return this.lineCap = e;\r\n }\r\n this.context.setFontSize = function(e) {\r\n return this.font = e + \"px sans-serif\";\r\n }\r\n this.context.setFillStyle = function(e) {\r\n return this.fillStyle = e;\r\n }\r\n this.context.setTextAlign = function(e) {\r\n return this.textAlign = e;\r\n }\r\n this.context.draw = function() {}\r\n }\r\n //兼容NVUEsetLineDash\r\n if(!this.context.setLineDash){\r\n this.context.setLineDash = function(e) {}\r\n }\r\n opts.chartData = {};\r\n this.uevent = new uChartsEvent();\r\n this.scrollOption = {\r\n currentOffset: 0,\r\n startTouchX: 0,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n this.opts = opts;\r\n this.config = config$$1;\r\n drawCharts.call(this, opts.type, opts, config$$1, this.context);\r\n};\r\n\r\nuCharts.prototype.updateData = function() {\r\n let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n this.opts = assign({}, this.opts, data);\r\n this.opts.updateData = true;\r\n let scrollPosition = data.scrollPosition || 'current';\r\n switch (scrollPosition) {\r\n case 'current':\r\n this.opts._scrollDistance_ = this.scrollOption.currentOffset;\r\n break;\r\n case 'left':\r\n this.opts._scrollDistance_ = 0;\r\n this.scrollOption = {\r\n currentOffset: 0,\r\n startTouchX: 0,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n break;\r\n case 'right':\r\n let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), yAxisWidth = _calYAxisData.yAxisWidth;\r\n this.config.yAxisWidth = yAxisWidth;\r\n let offsetLeft = 0;\r\n let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), xAxisPoints = _getXAxisPoints0.xAxisPoints,\r\n startX = _getXAxisPoints0.startX,\r\n endX = _getXAxisPoints0.endX,\r\n eachSpacing = _getXAxisPoints0.eachSpacing;\r\n let totalWidth = eachSpacing * (xAxisPoints.length - 1);\r\n let screenWidth = endX - startX;\r\n offsetLeft = screenWidth - totalWidth;\r\n this.scrollOption = {\r\n currentOffset: offsetLeft,\r\n startTouchX: offsetLeft,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n this.opts._scrollDistance_ = offsetLeft;\r\n break;\r\n }\r\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\r\n};\r\n\r\nuCharts.prototype.zoom = function() {\r\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;\r\n if (this.opts.enableScroll !== true) {\r\n console.log('[uCharts] 请启用滚动条后使用')\r\n return;\r\n }\r\n //当前屏幕中间点\r\n let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2);\r\n this.opts.animation = false;\r\n this.opts.xAxis.itemCount = val.itemCount;\r\n //重新计算x轴偏移距离\r\n let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),\r\n yAxisWidth = _calYAxisData.yAxisWidth;\r\n this.config.yAxisWidth = yAxisWidth;\r\n let offsetLeft = 0;\r\n let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\r\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\r\n startX = _getXAxisPoints0.startX,\r\n endX = _getXAxisPoints0.endX,\r\n eachSpacing = _getXAxisPoints0.eachSpacing;\r\n let centerLeft = eachSpacing * centerPoint;\r\n let screenWidth = endX - startX;\r\n let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\r\n offsetLeft = screenWidth / 2 - centerLeft;\r\n if (offsetLeft > 0) {\r\n offsetLeft = 0;\r\n }\r\n if (offsetLeft < MaxLeft) {\r\n offsetLeft = MaxLeft;\r\n }\r\n this.scrollOption = {\r\n currentOffset: offsetLeft,\r\n startTouchX: 0,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\r\n this.opts._scrollDistance_ = offsetLeft;\r\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\r\n};\r\n\r\nuCharts.prototype.dobuleZoom = function(e) {\r\n if (this.opts.enableScroll !== true) {\r\n console.log('[uCharts] 请启用滚动条后使用')\r\n return;\r\n }\r\n const tcs = e.changedTouches;\r\n if (tcs.length < 2) {\r\n return;\r\n }\r\n for (var i = 0; i < tcs.length; i++) {\r\n tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX;\r\n tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY;\r\n }\r\n const ntcs = [getTouches(tcs[0], this.opts, e),getTouches(tcs[1], this.opts, e)]; \r\n const xlength = Math.abs(ntcs[0].x - ntcs[1].x);\r\n // 记录初始的两指之间的数据\r\n if(!this.scrollOption.moveCount){\r\n let cts0 = {changedTouches:[{x:tcs[0].x,y:this.opts.area[0] / this.opts.pix + 2}]};\r\n let cts1 = {changedTouches:[{x:tcs[1].x,y:this.opts.area[0] / this.opts.pix + 2}]};\r\n if(this.opts.rotate){\r\n cts0 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[0].y}]};\r\n cts1 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[1].y}]};\r\n }\r\n const moveCurrent1 = this.getCurrentDataIndex(cts0).index;\r\n const moveCurrent2 = this.getCurrentDataIndex(cts1).index;\r\n const moveCount = Math.abs(moveCurrent1 - moveCurrent2);\r\n this.scrollOption.moveCount = moveCount;\r\n this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2);\r\n this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2);\r\n return;\r\n }\r\n \r\n let currentEachSpacing = xlength / this.scrollOption.moveCount;\r\n let itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing;\r\n itemCount = itemCount <= 2 ? 2 : itemCount;\r\n itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount;\r\n this.opts.animation = false;\r\n this.opts.xAxis.itemCount = itemCount;\r\n // 重新计算滚动条偏移距离\r\n let offsetLeft = 0;\r\n let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\r\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\r\n startX = _getXAxisPoints0.startX,\r\n endX = _getXAxisPoints0.endX,\r\n eachSpacing = _getXAxisPoints0.eachSpacing;\r\n let currentLeft = eachSpacing * this.scrollOption.moveCurrent1;\r\n let screenWidth = endX - startX;\r\n let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\r\n offsetLeft = -currentLeft+Math.min(ntcs[0].x,ntcs[1].x)-this.opts.area[3]-eachSpacing;\r\n if (offsetLeft > 0) {\r\n offsetLeft = 0;\r\n }\r\n if (offsetLeft < MaxLeft) {\r\n offsetLeft = MaxLeft;\r\n }\r\n this.scrollOption.currentOffset= offsetLeft;\r\n this.scrollOption.startTouchX= 0;\r\n this.scrollOption.distance=0;\r\n calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\r\n this.opts._scrollDistance_ = offsetLeft;\r\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\r\n}\r\n\r\nuCharts.prototype.stopAnimation = function() {\r\n this.animationInstance && this.animationInstance.stop();\r\n};\r\n\r\nuCharts.prototype.addEventListener = function(type, listener) {\r\n this.uevent.addEventListener(type, listener);\r\n};\r\n\r\nuCharts.prototype.delEventListener = function(type) {\r\n this.uevent.delEventListener(type);\r\n};\r\n\r\nuCharts.prototype.getCurrentDataIndex = function(e) {\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (touches) {\r\n let _touches$ = getTouches(touches, this.opts, e);\r\n if (this.opts.type === 'pie' || this.opts.type === 'ring') {\r\n return findPieChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.pieData, this.opts);\r\n } else if (this.opts.type === 'rose') {\r\n return findRoseChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.pieData, this.opts);\r\n } else if (this.opts.type === 'radar') {\r\n return findRadarChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.radarData, this.opts.categories.length);\r\n } else if (this.opts.type === 'funnel') {\r\n return findFunnelChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.funnelData);\r\n } else if (this.opts.type === 'map') {\r\n return findMapChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts);\r\n } else if (this.opts.type === 'word') {\r\n return findWordChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.wordCloudData);\r\n } else if (this.opts.type === 'bar') {\r\n return findBarChartCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\r\n } else {\r\n return findCurrentIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\r\n }\r\n }\r\n return -1;\r\n};\r\n\r\nuCharts.prototype.getLegendDataIndex = function(e) {\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (touches) {\r\n let _touches$ = getTouches(touches, this.opts, e);\r\n return findLegendIndex({\r\n x: _touches$.x,\r\n y: _touches$.y\r\n }, this.opts.chartData.legendData);\r\n }\r\n return -1;\r\n};\r\n\r\nuCharts.prototype.touchLegend = function(e) {\r\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (touches) {\r\n var _touches$ = getTouches(touches, this.opts, e);\r\n var index = this.getLegendDataIndex(e);\r\n if (index >= 0) {\r\n if (this.opts.type == 'candle') {\r\n this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;\r\n } else {\r\n this.opts.series[index].show = !this.opts.series[index].show;\r\n }\r\n this.opts.animation = option.animation ? true : false;\r\n this.opts._scrollDistance_ = this.scrollOption.currentOffset;\r\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\r\n }\r\n }\r\n\r\n};\r\n\r\nuCharts.prototype.showToolTip = function(e) {\r\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (!touches) {\r\n console.log(\"[uCharts] 未获取到event坐标信息\");\r\n }\r\n var _touches$ = getTouches(touches, this.opts, e);\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {\r\n var current = this.getCurrentDataIndex(e);\r\n var index = option.index == undefined ? current.index : option.index;\r\n if (index > -1 || index.length>0) {\r\n var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\r\n if (seriesData.length !== 0) {\r\n var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\r\n textList = _getToolTipData.textList,\r\n offset = _getToolTipData.offset;\r\n offset.y = _touches$.y;\r\n opts.tooltip = {\r\n textList: option.textList !== undefined ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'mount') {\r\n var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = assign({}, opts._series_[index]);\r\n var textList = [{\r\n text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\r\n color: seriesData.color\r\n }];\r\n var offset = {\r\n x: opts.chartData.calPoints[index].x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n \r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'bar') {\r\n var current = this.getCurrentDataIndex(e);\r\n var index = option.index == undefined ? current.index : option.index;\r\n if (index > -1 || index.length>0) {\r\n var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\r\n if (seriesData.length !== 0) {\r\n var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\r\n textList = _getToolTipData.textList,\r\n offset = _getToolTipData.offset;\r\n offset.x = _touches$.x;\r\n opts.tooltip = {\r\n textList: option.textList !== undefined ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'mix') {\r\n var current = this.getCurrentDataIndex(e);\r\n var index = option.index == undefined ? current.index : option.index;\r\n if (index > -1) {\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n var seriesData = getSeriesDataItem(this.opts.series, index);\r\n if (seriesData.length !== 0) {\r\n var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option),\r\n textList = _getMixToolTipData.textList,\r\n offset = _getMixToolTipData.offset;\r\n offset.y = _touches$.y;\r\n opts.tooltip = {\r\n textList: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'candle') {\r\n var current = this.getCurrentDataIndex(e);\r\n var index = option.index == undefined ? current.index : option.index;\r\n if (index > -1) {\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset,\r\n animation: false\r\n });\r\n var seriesData = getSeriesDataItem(this.opts.series, index);\r\n if (seriesData.length !== 0) {\r\n var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option),\r\n textList = _getToolTipData.textList,\r\n offset = _getToolTipData.offset;\r\n offset.y = _touches$.y;\r\n opts.tooltip = {\r\n textList: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {\r\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = assign({}, opts._series_[index]);\r\n var textList = [{\r\n text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\r\n color: seriesData.color\r\n }];\r\n var offset = {\r\n x: _touches$.x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'map') {\r\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = assign({}, this.opts.series[index]);\r\n seriesData.name = seriesData.properties.name\r\n var textList = [{\r\n text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\r\n color: seriesData.color\r\n }];\r\n var offset = {\r\n x: _touches$.x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n opts.updateData = false;\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'word') {\r\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = assign({}, this.opts.series[index]);\r\n var textList = [{\r\n text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\r\n color: seriesData.color\r\n }];\r\n var offset = {\r\n x: _touches$.x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n opts.updateData = false;\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n if (this.opts.type === 'radar') {\r\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\r\n if (index > -1) {\r\n var opts = assign({}, this.opts, {animation: false});\r\n var seriesData = getSeriesDataItem(this.opts.series, index);\r\n if (seriesData.length !== 0) {\r\n var textList = seriesData.map((item) => {\r\n return {\r\n text: option.formatter ? option.formatter(item, this.opts.categories[index], index, this.opts) : item.name + ': ' + item.data,\r\n color: item.color\r\n };\r\n });\r\n var offset = {\r\n x: _touches$.x,\r\n y: _touches$.y\r\n };\r\n opts.tooltip = {\r\n textList: option.textList ? option.textList : textList,\r\n offset: option.offset !== undefined ? option.offset : offset,\r\n option: option,\r\n index: index\r\n };\r\n }\r\n }\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n }\r\n};\r\n\r\nuCharts.prototype.translate = function(distance) {\r\n this.scrollOption = {\r\n currentOffset: distance,\r\n startTouchX: distance,\r\n distance: 0,\r\n lastMoveTime: 0\r\n };\r\n let opts = assign({}, this.opts, {\r\n _scrollDistance_: distance,\r\n animation: false\r\n });\r\n drawCharts.call(this, this.opts.type, opts, this.config, this.context);\r\n};\r\n\r\nuCharts.prototype.scrollStart = function(e) {\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n var _touches$ = getTouches(touches, this.opts, e);\r\n if (touches && this.opts.enableScroll === true) {\r\n this.scrollOption.startTouchX = _touches$.x;\r\n }\r\n};\r\n\r\nuCharts.prototype.scroll = function(e) {\r\n if (this.scrollOption.lastMoveTime === 0) {\r\n this.scrollOption.lastMoveTime = Date.now();\r\n }\r\n let Limit = this.opts.touchMoveLimit || 60;\r\n let currMoveTime = Date.now();\r\n let duration = currMoveTime - this.scrollOption.lastMoveTime;\r\n if (duration < Math.floor(1000 / Limit)) return;\r\n if (this.scrollOption.startTouchX == 0) return;\r\n this.scrollOption.lastMoveTime = currMoveTime;\r\n var touches = null;\r\n if (e.changedTouches) {\r\n touches = e.changedTouches[0];\r\n } else {\r\n touches = e.mp.changedTouches[0];\r\n }\r\n if (touches && this.opts.enableScroll === true) {\r\n var _touches$ = getTouches(touches, this.opts, e);\r\n var _distance;\r\n _distance = _touches$.x - this.scrollOption.startTouchX;\r\n var currentOffset = this.scrollOption.currentOffset;\r\n var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);\r\n this.scrollOption.distance = _distance = validDistance - currentOffset;\r\n var opts = assign({}, this.opts, {\r\n _scrollDistance_: currentOffset + _distance,\r\n animation: false\r\n });\r\n\t\tthis.opts = opts;\r\n drawCharts.call(this, opts.type, opts, this.config, this.context);\r\n return currentOffset + _distance;\r\n }\r\n};\r\n\r\nuCharts.prototype.scrollEnd = function(e) {\r\n if (this.opts.enableScroll === true) {\r\n var _scrollOption = this.scrollOption,\r\n currentOffset = _scrollOption.currentOffset,\r\n distance = _scrollOption.distance;\r\n this.scrollOption.currentOffset = currentOffset + distance;\r\n this.scrollOption.distance = 0;\r\n this.scrollOption.moveCount = 0;\r\n }\r\n};\r\n\r\nexport default uCharts;","/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts®官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\r\n\r\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\r\nconst color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\r\n\r\n//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改\r\nconst formatDateTime = (timeStamp, returnType)=>{\r\n var date = new Date();\r\n date.setTime(timeStamp * 1000);\r\n var y = date.getFullYear();\r\n var m = date.getMonth() + 1;\r\n m = m < 10 ? ('0' + m) : m;\r\n var d = date.getDate();\r\n d = d < 10 ? ('0' + d) : d;\r\n var h = date.getHours();\r\n h = h < 10 ? ('0' + h) : h;\r\n var minute = date.getMinutes();\r\n var second = date.getSeconds();\r\n minute = minute < 10 ? ('0' + minute) : minute;\r\n second = second < 10 ? ('0' + second) : second;\r\n if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;}\r\n if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;}\r\n if(returnType == 'h:m'){return h +':' + minute;}\r\n if(returnType == 'h:m:s'){return h +':' + minute +':' + second;}\r\n return [y, m, d, h, minute, second];\r\n}\r\n\r\nconst cfu = {\r\n //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可\r\n\t\"type\":[\"pie\",\"ring\",\"rose\",\"word\",\"funnel\",\"map\",\"arcbar\",\"line\",\"column\",\"mount\",\"bar\",\"area\",\"radar\",\"gauge\",\"candle\",\"mix\",\"tline\",\"tarea\",\"scatter\",\"bubble\",\"demotype\"],\r\n\t\"range\":[\"饼状图\",\"圆环图\",\"玫瑰图\",\"词云图\",\"漏斗图\",\"地图\",\"圆弧进度条\",\"折线图\",\"柱状图\",\"山峰图\",\"条状图\",\"区域图\",\"雷达图\",\"仪表盘\",\"K线图\",\"混合图\",\"时间轴折线\",\"时间轴区域\",\"散点图\",\"气泡图\",\"自定义类型\"],\r\n //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的\"demotype\"\r\n //自定义类型时需要注意\"tline\",\"tarea\",\"scatter\",\"bubble\"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories\r\n\t\"categories\":[\"line\",\"column\",\"mount\",\"bar\",\"area\",\"radar\",\"gauge\",\"candle\",\"mix\",\"demotype\"],\r\n //instance为实例变量承载属性,不要删除\r\n \"instance\":{},\r\n //option为opts及eopts承载属性,不要删除\r\n \"option\":{},\r\n //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\r\n \"formatter\":{\r\n \"yAxisDemo1\":function(val, index, opts){return val+'元'},\r\n \"yAxisDemo2\":function(val, index, opts){return val.toFixed(2)},\r\n \"xAxisDemo1\":function(val, index, opts){return val+'年';},\r\n \"xAxisDemo2\":function(val, index, opts){return formatDateTime(val,'h:m')},\r\n \"seriesDemo1\":function(val, index, series, opts){return val+'元'},\r\n \"tooltipDemo1\":function(item, category, index, opts){\r\n if(index==0){\r\n \treturn '随便用'+item.data+'年'\r\n }else{\r\n \treturn '其他我没改'+item.data+'天'\r\n }\r\n },\r\n \"pieDemo\":function(val, index, series, opts){\r\n if(index !== undefined){\r\n return series[index].name+':'+series[index].data+'元'\r\n }\r\n },\r\n },\r\n //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。\r\n \"demotype\":{\r\n //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置\r\n \"type\": \"line\",\r\n \"color\": color,\r\n \"padding\": [15,10,0,15],\r\n \"xAxis\": {\r\n \"disableGrid\": true,\r\n },\r\n \"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n },\r\n \"legend\": {\r\n },\r\n \"extra\": {\r\n \t\"line\": {\r\n \t\t\"type\": \"curve\",\r\n \t\t\"width\": 2\r\n \t},\r\n }\r\n },\r\n //下面是自定义配置,请添加项目所需的通用配置\r\n\t\"pie\":{\r\n\t\t\"type\": \"pie\",\r\n \"color\": color,\r\n\t\t\"padding\": [5,5,5,5],\r\n\t\t\"extra\": {\r\n\t\t\t\"pie\": {\r\n\t\t\t\t\"activeOpacity\": 0.5,\r\n\t\t\t\t\"activeRadius\": 10,\r\n\t\t\t\t\"offsetAngle\": 0,\r\n\t\t\t\t\"labelWidth\": 15,\r\n\t\t\t\t\"border\": true,\r\n\t\t\t\t\"borderWidth\": 3,\r\n\t\t\t\t\"borderColor\": \"#FFFFFF\"\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"ring\":{\r\n\t\t\"type\": \"ring\",\r\n \"color\": color,\r\n\t\t\"padding\": [5,5,5,5],\r\n\t\t\"rotate\": false,\r\n\t\t\"dataLabel\": true,\r\n\t\t\"legend\": {\r\n\t\t\t\"show\": true,\r\n\t\t\t\"position\": \"right\",\r\n \"lineHeight\": 25,\r\n\t\t},\r\n\t\t\"title\": {\r\n\t\t\t\"name\": \"收益率\",\r\n\t\t\t\"fontSize\": 15,\r\n\t\t\t\"color\": \"#666666\"\r\n\t\t},\r\n\t\t\"subtitle\": {\r\n\t\t\t\"name\": \"70%\",\r\n\t\t\t\"fontSize\": 25,\r\n\t\t\t\"color\": \"#7cb5ec\"\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"ring\": {\r\n\t\t\t\t\"ringWidth\":30,\r\n\t\t\t\t\"activeOpacity\": 0.5,\r\n\t\t\t\t\"activeRadius\": 10,\r\n\t\t\t\t\"offsetAngle\": 0,\r\n\t\t\t\t\"labelWidth\": 15,\r\n\t\t\t\t\"border\": true,\r\n\t\t\t\t\"borderWidth\": 3,\r\n\t\t\t\t\"borderColor\": \"#FFFFFF\"\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n\t\"rose\":{\r\n\t\t\"type\": \"rose\",\r\n \"color\": color,\r\n\t\t\"padding\": [5,5,5,5],\r\n\t\t\"legend\": {\r\n\t\t\t\"show\": true,\r\n\t\t\t\"position\": \"left\",\r\n \"lineHeight\": 25,\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"rose\": {\r\n\t\t\t\t\"type\": \"area\",\r\n\t\t\t\t\"minRadius\": 50,\r\n\t\t\t\t\"activeOpacity\": 0.5,\r\n\t\t\t\t\"activeRadius\": 10,\r\n\t\t\t\t\"offsetAngle\": 0,\r\n\t\t\t\t\"labelWidth\": 15,\r\n\t\t\t\t\"border\": false,\r\n\t\t\t\t\"borderWidth\": 2,\r\n\t\t\t\t\"borderColor\": \"#FFFFFF\"\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"word\":{\r\n\t\t\"type\": \"word\",\r\n \"color\": color,\r\n\t\t\"extra\": {\r\n\t\t\t\"word\": {\r\n\t\t\t\t\"type\": \"normal\",\r\n\t\t\t\t\"autoColors\": false\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"funnel\":{\r\n\t\t\"type\": \"funnel\",\r\n \"color\": color,\r\n\t\t\"padding\": [15,15,0,15],\r\n\t\t\"extra\": {\r\n\t\t\t\"funnel\": {\r\n\t\t\t\t\"activeOpacity\": 0.3,\r\n\t\t\t\t\"activeWidth\": 10,\r\n\t\t\t\t\"border\": true,\r\n\t\t\t\t\"borderWidth\": 2,\r\n\t\t\t\t\"borderColor\": \"#FFFFFF\",\r\n\t\t\t\t\"fillOpacity\": 1,\r\n\t\t\t\t\"labelAlign\": \"right\"\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"map\":{\r\n\t\t\"type\": \"map\",\r\n \"color\": color,\r\n\t\t\"padding\": [0,0,0,0],\r\n \"dataLabel\": true,\r\n\t\t\"extra\": {\r\n\t\t\t\"map\": {\r\n\t\t\t\t\"border\": true,\r\n\t\t\t\t\"borderWidth\": 1,\r\n\t\t\t\t\"borderColor\": \"#666666\",\r\n\t\t\t\t\"fillOpacity\": 0.6,\r\n\t\t\t\t\"activeBorderColor\": \"#F04864\",\r\n\t\t\t\t\"activeFillColor\": \"#FACC14\",\r\n\t\t\t\t\"activeFillOpacity\": 1\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"arcbar\":{\r\n\t\t\"type\": \"arcbar\",\r\n \"color\": color,\r\n\t\t\"title\": {\r\n\t\t\t\"name\": \"百分比\",\r\n\t\t\t\"fontSize\": 25,\r\n\t\t\t\"color\": \"#00FF00\"\r\n\t\t},\r\n\t\t\"subtitle\": {\r\n\t\t\t\"name\": \"默认标题\",\r\n\t\t\t\"fontSize\": 15,\r\n\t\t\t\"color\": \"#666666\"\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"arcbar\": {\r\n\t\t\t\t\"type\": \"default\",\r\n\t\t\t\t\"width\": 12,\r\n\t\t\t\t\"backgroundColor\": \"#E9E9E9\",\r\n\t\t\t\t\"startAngle\": 0.75,\r\n\t\t\t\t\"endAngle\": 0.25,\r\n\t\t\t\t\"gap\": 2\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"line\":{\r\n\t\t\"type\": \"line\",\r\n \"color\": color,\r\n\t\t\"padding\": [15,10,0,15],\r\n\t\t\"xAxis\": {\r\n \"disableGrid\": true,\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"line\": {\r\n\t\t\t\t\"type\": \"straight\",\r\n\t\t\t\t\"width\": 2\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n \"tline\":{\r\n \t\"type\": \"line\",\r\n \"color\": color,\r\n \t\"padding\": [15,10,0,15],\r\n \t\"xAxis\": {\r\n \"disableGrid\": false,\r\n \"boundaryGap\":\"justify\",\r\n \t},\r\n \t\"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n \"data\":[\r\n {\r\n \"min\":0,\r\n \"max\":80\r\n }\r\n ]\r\n \t},\r\n \t\"legend\": {\r\n \t},\r\n \t\"extra\": {\r\n \t\t\"line\": {\r\n \t\t\t\"type\": \"curve\",\r\n \t\t\t\"width\": 2\r\n \t\t},\r\n \t}\r\n },\r\n \"tarea\":{\r\n \t\"type\": \"area\",\r\n \"color\": color,\r\n \t\"padding\": [15,10,0,15],\r\n \t\"xAxis\": {\r\n \"disableGrid\": true,\r\n \"boundaryGap\":\"justify\",\r\n \t},\r\n \t\"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n \"data\":[\r\n {\r\n \"min\":0,\r\n \"max\":80\r\n }\r\n ]\r\n \t},\r\n \t\"legend\": {\r\n \t},\r\n \t\"extra\": {\r\n \t\t\"area\": {\r\n \t\t\t\"type\": \"curve\",\r\n \t\t\t\"opacity\": 0.2,\r\n \t\t\t\"addLine\": true,\r\n \t\t\t\"width\": 2,\r\n \t\t\t\"gradient\": true\r\n \t\t},\r\n \t}\r\n },\r\n\t\"column\":{\r\n\t\t\"type\": \"column\",\r\n \"color\": color,\r\n\t\t\"padding\": [15,15,0,5],\r\n\t\t\"xAxis\": {\r\n \"disableGrid\": true,\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n \"data\":[{\"min\":0}]\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"column\": {\r\n\t\t\t\t\"type\": \"group\",\r\n\t\t\t\t\"width\": 30,\r\n\t\t\t\t\"activeBgColor\": \"#000000\",\r\n\t\t\t\t\"activeBgOpacity\": 0.08\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n \"mount\":{\r\n \t\"type\": \"mount\",\r\n \"color\": color,\r\n \t\"padding\": [15,15,0,5],\r\n \t\"xAxis\": {\r\n \"disableGrid\": true,\r\n \t},\r\n \t\"yAxis\": {\r\n \"data\":[{\"min\":0}]\r\n \t},\r\n \t\"legend\": {\r\n \t},\r\n \t\"extra\": {\r\n \t\t\"mount\": {\r\n \t\t\t\"type\": \"mount\",\r\n \t\t\t\"widthRatio\": 1.5,\r\n \t\t},\r\n \t}\r\n },\r\n \"bar\":{\r\n \t\"type\": \"bar\",\r\n \"color\": color,\r\n \t\"padding\": [15,30,0,5],\r\n \t\"xAxis\": {\r\n \"boundaryGap\":\"justify\",\r\n \"disableGrid\":false,\r\n \"min\":0,\r\n \"axisLine\":false\r\n \t},\r\n \t\"yAxis\": {\r\n \t},\r\n \t\"legend\": {\r\n \t},\r\n \t\"extra\": {\r\n \t\t\"bar\": {\r\n \t\t\t\"type\": \"group\",\r\n \t\t\t\"width\": 30,\r\n \t\t\t\"meterBorde\": 1,\r\n \t\t\t\"meterFillColor\": \"#FFFFFF\",\r\n \t\t\t\"activeBgColor\": \"#000000\",\r\n \t\t\t\"activeBgOpacity\": 0.08\r\n \t\t},\r\n \t}\r\n },\r\n\t\"area\":{\r\n\t\t\"type\": \"area\",\r\n\t\t\"color\": color,\r\n\t\t\"padding\": [15,15,0,15],\r\n\t\t\"xAxis\": {\r\n \"disableGrid\": true,\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n \"gridType\": \"dash\",\r\n \"dashLength\": 2,\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"area\": {\r\n\t\t\t\t\"type\": \"straight\",\r\n\t\t\t\t\"opacity\": 0.2,\r\n\t\t\t\t\"addLine\": true,\r\n\t\t\t\t\"width\": 2,\r\n\t\t\t\t\"gradient\": false\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"radar\":{\r\n\t\t\"type\": \"radar\",\r\n\t\t\"color\": color,\r\n\t\t\"padding\": [5,5,5,5],\r\n \"dataLabel\": false,\r\n\t\t\"legend\": {\r\n\t\t\t\"show\": true,\r\n\t\t\t\"position\": \"right\",\r\n \"lineHeight\": 25,\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"radar\": {\r\n\t\t\t\t\"gridType\": \"radar\",\r\n\t\t\t\t\"gridColor\": \"#CCCCCC\",\r\n\t\t\t\t\"gridCount\": 3,\r\n\t\t\t\t\"opacity\": 0.2,\r\n\t\t\t\t\"max\": 200\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"gauge\":{\r\n\t\t\"type\": \"gauge\",\r\n\t\t\"color\": color,\r\n\t\t\"title\": {\r\n\t\t\t\"name\": \"66Km/H\",\r\n\t\t\t\"fontSize\": 25,\r\n\t\t\t\"color\": \"#2fc25b\",\r\n\t\t\t\"offsetY\": 50\r\n\t\t},\r\n\t\t\"subtitle\": {\r\n\t\t\t\"name\": \"实时速度\",\r\n\t\t\t\"fontSize\": 15,\r\n\t\t\t\"color\": \"#1890ff\",\r\n\t\t\t\"offsetY\": -50\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"gauge\": {\r\n\t\t\t\t\"type\": \"default\",\r\n\t\t\t\t\"width\": 30,\r\n\t\t\t\t\"labelColor\": \"#666666\",\r\n\t\t\t\t\"startAngle\": 0.75,\r\n\t\t\t\t\"endAngle\": 0.25,\r\n\t\t\t\t\"startNumber\": 0,\r\n\t\t\t\t\"endNumber\": 100,\r\n\t\t\t\t\"labelFormat\": \"\",\r\n\t\t\t\t\"splitLine\": {\r\n\t\t\t\t\t\"fixRadius\": 0,\r\n\t\t\t\t\t\"splitNumber\": 10,\r\n\t\t\t\t\t\"width\": 30,\r\n\t\t\t\t\t\"color\": \"#FFFFFF\",\r\n\t\t\t\t\t\"childNumber\": 5,\r\n\t\t\t\t\t\"childWidth\": 12\r\n\t\t\t\t},\r\n\t\t\t\t\"pointer\": {\r\n\t\t\t\t\t\"width\": 24,\r\n\t\t\t\t\t\"color\": \"auto\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"candle\":{\r\n\t\t\"type\": \"candle\",\r\n\t\t\"color\": color,\r\n\t\t\"padding\": [15,15,0,15],\r\n\t\t\"enableScroll\": true,\r\n\t\t\"enableMarkLine\": true,\r\n\t\t\"dataLabel\": false,\r\n\t\t\"xAxis\": {\r\n\t\t\t\"labelCount\": 4,\r\n\t\t\t\"itemCount\": 40,\r\n\t\t\t\"disableGrid\": true,\r\n\t\t\t\"gridColor\": \"#CCCCCC\",\r\n\t\t\t\"gridType\": \"solid\",\r\n\t\t\t\"dashLength\": 4,\r\n\t\t\t\"scrollShow\": true,\r\n\t\t\t\"scrollAlign\": \"left\",\r\n\t\t\t\"scrollColor\": \"#A6A6A6\",\r\n\t\t\t\"scrollBackgroundColor\": \"#EFEBEF\"\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"candle\": {\r\n\t\t\t\t\"color\": {\r\n\t\t\t\t\t\"upLine\": \"#f04864\",\r\n\t\t\t\t\t\"upFill\": \"#f04864\",\r\n\t\t\t\t\t\"downLine\": \"#2fc25b\",\r\n\t\t\t\t\t\"downFill\": \"#2fc25b\"\r\n\t\t\t\t},\r\n\t\t\t\t\"average\": {\r\n\t\t\t\t\t\"show\": true,\r\n\t\t\t\t\t\"name\": [\"MA5\",\"MA10\",\"MA30\"],\r\n\t\t\t\t\t\"day\": [5,10,20],\r\n\t\t\t\t\t\"color\": [\"#1890ff\",\"#2fc25b\",\"#facc14\"]\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"markLine\": {\r\n\t\t\t\t\"type\": \"dash\",\r\n\t\t\t\t\"dashLength\": 5,\r\n\t\t\t\t\"data\": [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"value\": 2150,\r\n\t\t\t\t\t\t\"lineColor\": \"#f04864\",\r\n\t\t\t\t\t\t\"showLabel\": true\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t\"value\": 2350,\r\n\t\t\t\t\t\t\"lineColor\": \"#f04864\",\r\n\t\t\t\t\t\t\"showLabel\": true\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"mix\":{\r\n\t\t\"type\": \"mix\",\r\n\t\t\"color\": color,\r\n\t\t\"padding\": [15,15,0,15],\r\n\t\t\"xAxis\": {\r\n \"disableGrid\": true,\r\n\t\t},\r\n\t\t\"yAxis\": {\r\n\t\t\t\"disabled\": false,\r\n\t\t\t\"disableGrid\": false,\r\n\t\t\t\"splitNumber\": 5,\r\n\t\t\t\"gridType\": \"dash\",\r\n\t\t\t\"dashLength\": 4,\r\n\t\t\t\"gridColor\": \"#CCCCCC\",\r\n\t\t\t\"padding\": 10,\r\n\t\t\t\"showTitle\": true,\r\n\t\t\t\"data\": []\r\n\t\t},\r\n\t\t\"legend\": {\r\n\t\t},\r\n\t\t\"extra\": {\r\n\t\t\t\"mix\": {\r\n\t\t\t\t\"column\": {\r\n\t\t\t\t\t\"width\": 20\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t}\r\n\t},\r\n\t\"scatter\":{\r\n\t\t\"type\": \"scatter\",\r\n\t\t\"color\":color,\r\n\t\t\"padding\":[15,15,0,15],\r\n \"dataLabel\":false,\r\n \"xAxis\": {\r\n \"disableGrid\": false,\r\n \"gridType\":\"dash\",\r\n \"splitNumber\":5,\r\n \"boundaryGap\":\"justify\",\r\n \"min\":0\r\n },\r\n \"yAxis\": {\r\n \"disableGrid\": false,\r\n \"gridType\":\"dash\",\r\n },\r\n \"legend\": {\r\n },\r\n \"extra\": {\r\n \t\"scatter\": {\r\n \t},\r\n }\r\n\t},\r\n\t\"bubble\":{\r\n\t\t\"type\": \"bubble\",\r\n\t\t\"color\":color,\r\n\t\t\"padding\":[15,15,0,15],\r\n \"xAxis\": {\r\n \"disableGrid\": false,\r\n \"gridType\":\"dash\",\r\n \"splitNumber\":5,\r\n \"boundaryGap\":\"justify\",\r\n \"min\":0,\r\n \"max\":250\r\n },\r\n \"yAxis\": {\r\n \"disableGrid\": false,\r\n \"gridType\":\"dash\",\r\n \"data\":[{\r\n \"min\":0,\r\n \"max\":150\r\n }]\r\n },\r\n \"legend\": {\r\n },\r\n \"extra\": {\r\n \t\"bubble\": {\r\n \"border\":2,\r\n \"opacity\": 0.5,\r\n \t},\r\n }\r\n\t}\r\n}\r\n\r\nexport default cfu;","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\n'use strict';\n\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype[[104,111,116,85,112,100,97,116,101].map(function (item) {return String.fromCharCode(item)}).join('')] = function (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index_cjs = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nmodule.exports = index_cjs;\n","import config from '../config.js'\r\nimport common from './alert.js'\r\nimport store from '../store.js'\r\n\r\nconst request = {\r\n\tgetToken(){\r\n\t\tlet user=store.state.token\r\n\t\t// console.log(user);\r\n\t\tif(user){\r\n\t\t\tthis.post(\"/api/Accounts/RefreshToken\",{token:user.token,refreshToken:user.refreshToken},(data,res)=>{\r\n\t\t\t\tstore.commit('saveToken', res)\r\n\t\t\t\tuni.setStorageSync(\"token\", res)\r\n\t\t\t})\r\n\t\t}else{\r\n\t\t\treturn\r\n\t\t}\r\n\t\t\r\n\t},\r\n\tuploadFile(filePath, callback) {\r\n\t\tconst user = store.state.token || {};\r\n\t\t// if(!user.lawyerInfo) return common.askLogin();\r\n\t\tconsole.log(filePath, callback,2222222);\r\n\t\tuni.uploadFile({\r\n\t\t\turl: config.domain + '/api/Objects/integration/xxx',\r\n\t\t\tfilePath: filePath,\r\n\t\t\tname: 'file',\r\n\t\t\theader: {\r\n\t\t\t\t'Authorization': \"Bearer \"+ user.token || '',\r\n\t\t\t},\r\n\t\t\tsuccess (res) {\r\n\t\t\t\tconsole.log(res,333333);\r\n\t\t\t\tconst data = JSON.parse(res.data);\r\n\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\t\r\n\tuploadFile2(filePath, formdata, callback) {\r\n\t\tconst user = store.state.user || {};\r\n\t\tif(!user.lawyerInfo) return common.askLogin();\r\n\t\tconsole.log('1111111111111'+filePath)\r\n\t\tconsole.log('2222222222222'+formdata)\r\n\t\tconsole.log('3333333333333'+callback)\r\n\t\tuni.uploadFile({\r\n\t\t\turl: config.domain + '/file/uploadFile2',\r\n\t\t\tfilePath: filePath,\r\n\t\t\tname: 'file',\r\n\t\t\tformData: formdata,\r\n\t\t\theader: {\r\n\t\t\t\t'token': user.lawyerInfo.token || '',\r\n\t\t\t\t'login_type': user.login_type || 0,\r\n\t\t\t\t'who': user.who\r\n\t\t\t},\r\n\t\t\tsuccess (res) {\r\n\t\t\t\tconsole.log(res)\r\n\t\t\t\tconst data = JSON.parse(res.data);\r\n\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\r\n\tasync get(url, data, callback) {\r\n\r\n\t\tthis.getToken()\r\n\t\tconst user = store.state.token || {};\r\n\t\tawait uni.request({\r\n\t\t\turl: config.api + url, // 仅为示例,并非真实的接口地址\r\n\t\t\tmethod: 'GET',\r\n\t\t\tdata: data,\r\n\t\t\theader: {\r\n\t\t\t\t'Authorization': \"Bearer \"+ user.token || '',\r\n\t\t\t\t'content-type': 'application/json'\r\n\t\t\t},\r\n\t\t\tsuccess(res) {\r\n\t\t\t\tconst data = res.data;\r\n\t\t\t\t// console.log(data, '请求返回的数据', 1000000000000000)\r\n\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\tfail: err => {\r\n\t\t\t\t\tcommon.showError(\"网络链接不畅,请稍后重试\")\r\n\t\t\t\t}\r\n\t\t})\r\n\t},\r\n\tpost(url, data, callback) {\r\n\t\t\r\n\t\tif(url!=\"/api/Accounts/RefreshToken\"&&user!={}){\r\n\t\t\tthis.getToken()\r\n\t\t}\r\n\t\tconst user = store.state.token || {};\r\n\t\ttry {\r\n\t\t\tuni.request({\r\n\t\t\t\turl: config.api + url, // 仅为示例,并非真实的接口地址\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tdata: data,\r\n\t\t\t\theader: {\r\n\t\t\t\t\t'Authorization': \"Bearer \"+ user.token || '',\r\n\t\t\t\t},\r\n\t\t\t\tsuccess(res) {\r\n\t\t\t\t\tconst data = res.data;\r\n\t\t\t\t\t// console.log(res, '------------- 请求返回的数据 -------------')\r\n\t\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// 第一个参数是data,第二个是全部数据,有时候会用到msg之类的数据,\r\n\t\t\t\t\t\t// 默认只要第一个值即可获取数据\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfail: err => {\r\n\t\t\t\t\tcommon.showError(\"网络链接不畅,请稍后重试\")\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e)\r\n\t\t\t//TODO handle the exception\r\n\t\t}\r\n\t},\r\n\tpatch(url, data, callback) {\r\n\t\t\r\n\t\tif(url!=\"/api/Accounts/RefreshToken\"&&user!={}){\r\n\t\t\tthis.getToken()\r\n\t\t}\r\n\t\tconst user = store.state.token || {};\r\n\t\ttry {\r\n\t\t\tuni.request({\r\n\t\t\t\turl: config.api + url, // 仅为示例,并非真实的接口地址\r\n\t\t\t\tmethod: 'PATCH',\r\n\t\t\t\tdata: data,\r\n\t\t\t\theader: {\r\n\t\t\t\t\t'Authorization': \"Bearer \"+ user.token || '',\r\n\t\t\t\t},\r\n\t\t\t\tsuccess(res) {\r\n\t\t\t\t\tconst data = res.data;\r\n\t\t\t\t\t// console.log(res, '------------- 请求返回的数据 -------------')\r\n\t\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// 第一个参数是data,第二个是全部数据,有时候会用到msg之类的数据,\r\n\t\t\t\t\t\t// 默认只要第一个值即可获取数据\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfail: err => {\r\n\t\t\t\t\tcommon.showError(\"网络链接不畅,请稍后重试\")\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e)\r\n\t\t\t//TODO handle the exception\r\n\t\t}\r\n\t},\r\n\tget2(url, data, callback) {\r\n\t\tconst user = store.state.user || {};\r\n\t\tuni.request({\r\n\t\t\turl: config.domain + url, // 仅为示例,并非真实的接口地址\r\n\t\t\tmethod: 'GET',\r\n\t\t\tdata: data,\r\n\t\t\theader: {\r\n\t\t\t\t'token': user.token || '',\r\n\t\t\t\t'login_type': user.login_type || 0\r\n\t\t\t},\r\n\t\t\tsuccess(res) {\r\n\t\t\t\tconst data = res.data;\r\n\t\t\t\t// console.log(data, '请求返回的数据', 1000000000000000)\r\n\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\t\r\n\tpost2(url, data, callback) {\r\n\t\tconst user = store.state.user || {};\r\n\t\ttry {\r\n\t\t\tuni.request({\r\n\t\t\t\turl: config.domain + url, // 仅为示例,并非真实的接口地址\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tdata: data,\r\n\t\t\t\theader: {\r\n\t\t\t\t\t'token': user.lawyerInfo.token || '',\r\n\t\t\t\t\t'login_type': user.login_type || 0,\r\n\t\t\t\t\t'who': user.who\r\n\t\t\t\t},\r\n\t\t\t\tsuccess(res) {\r\n\t\t\t\t\tconst data = res.data;\r\n\t\t\t\t\tconsole.log(data, '------------- 请求返回的数据 -------------')\r\n\t\t\t\t\tif (data.status == -100) {\r\n\t\t\t\t\t\tconsole.log('没有登录');\r\n\t\t\t\t\t\tcommon.askLogin()\r\n\t\t\t\t\t} else if (data.status == -1) {\r\n\t\t\t\t\t\tcommon.showError(data.msg)\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// 第一个参数是data,第二个是全部数据,有时候会用到msg之类的数据,\r\n\t\t\t\t\t\t// 默认只要第一个值即可获取数据\r\n\t\t\t\t\t\tcallback(data.data, data)\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tfail: err => {\r\n\t\t\t\t\tconsole.error(err, 8877897)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(e)\r\n\t\t\t//TODO handle the exception\r\n\t\t}\r\n\t},\r\n\t\r\n\t\r\n}\r\n\r\nexport default request\r\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAiCAYAAADRcLDBAAAAAXNSR0IArs4c6QAAANtJREFUWEdjZBgEgHEQuIFhcDji+KkL+5FD4wfDr0hHM7MXx09dWM7AwCBBj5BiPH7qwn8Ui/7+V7S0NHxw/NSF+wwMDAojyhEgH8MB478fthYWFk+On75wmOE/gwxdQoIelhCyY3DkDkKupIf8aEjAQnk0JEZDAj3HMR47dckeWfDn17cnHR0dfxw/c9H8/z9GDrpk0dEKDBrMg6UqP5+A0qj5+mGNo6Pjl6MnzoUwMTHy0CVN0MMSQnaMlpijJSZGiUko0dBDfjRhDq6EOdoNHGQVGLjjO6DdQADU2YrkfFyMPQAAAABJRU5ErkJggg==\"","const api = 'https://fx.anxincloud.cn';\nconst domain = 'https://fx.anxincloud.cn';\n\nconst devApi = 'https://121.36.37.70:8204';\nconst devDomain = 'https://121.36.37.70:8204';\n\nconst online = false; //是否线上模式\n\nexport default {\n domain: online ? domain : devDomain,\n api: online ? api : devApi\n}","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","const alert = {\r\n // 显示等待对话框\r\n showLoading: function(msg) {\r\n uni.showToast({\r\n title: msg,\r\n icon: \"loading\",\r\n duration: 100000\r\n });\r\n },\r\n // 隐藏等待对话框\r\n hideLoading: function(msg) {\r\n uni.hideToast();\r\n },\r\n // 成功\r\n showSuccess: function(msg) {\r\n uni.showToast({\r\n title: msg,\r\n icon: \"success\",\r\n duration: 2000\r\n });\r\n },\r\n //显示警告\r\n showWarning: function(msg) {\r\n uni.showToast({\r\n title: msg,\r\n icon: \"none\",\r\n duration: 2000\r\n });\r\n },\r\n\r\n showError: function(msg) {\r\n uni.showToast({\r\n title: msg,\r\n icon: \"none\",\r\n duration: 2000\r\n });\r\n },\r\n askLogin: function () {\r\n uni.showModal({\r\n title: '尚未登录',\r\n content: '前往授权登录页面吗?',\r\n success(res) {\r\n console.log(res)\r\n if (res.confirm) {\r\n uni.redirectTo({\r\n url: '/pages/login/login'\r\n })\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport default alert","export default {\n props: {\n localdata: {\n type: [Array, Object],\n default () {\n return []\n }\n },\n spaceInfo: {\n type: Object,\n default () {\n return {}\n }\n },\n collection: {\n type: String,\n default: ''\n },\n action: {\n type: String,\n default: ''\n },\n field: {\n type: String,\n default: ''\n },\n orderby: {\n type: String,\n default: ''\n },\n where: {\n type: [String, Object],\n default: ''\n },\n pageData: {\n type: String,\n default: 'add'\n },\n pageCurrent: {\n type: Number,\n default: 1\n },\n pageSize: {\n type: Number,\n default: 20\n },\n getcount: {\n type: [Boolean, String],\n default: false\n },\n getone: {\n type: [Boolean, String],\n default: false\n },\n gettree: {\n type: [Boolean, String],\n default: false\n },\n manual: {\n type: Boolean,\n default: false\n },\n value: {\n type: [Array, String, Number],\n default () {\n return []\n }\n },\n modelValue: {\n type: [Array, String, Number],\n default () {\n return []\n }\n },\n preload: {\n type: Boolean,\n default: false\n },\n stepSearh: {\n type: Boolean,\n default: true\n },\n selfField: {\n type: String,\n default: ''\n },\n parentField: {\n type: String,\n default: ''\n },\n multiple: {\n type: Boolean,\n default: false\n },\n map: {\n type: Object,\n default() {\n return {\n text: \"text\",\n value: \"value\"\n }\n }\n }\n },\n data() {\n return {\n loading: false,\n errorMessage: '',\n loadMore: {\n contentdown: '',\n contentrefresh: '',\n contentnomore: ''\n },\n dataList: [],\n selected: [],\n selectedIndex: 0,\n page: {\n current: this.pageCurrent,\n size: this.pageSize,\n count: 0\n }\n }\n },\n computed: {\n isLocaldata() {\n return !this.collection.length\n },\n postField() {\n let fields = [this.field];\n if (this.parentField) {\n fields.push(`${this.parentField} as parent_value`);\n }\n return fields.join(',');\n },\n dataValue() {\n let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null || this.modelValue !== undefined)\n return isModelValue ? this.modelValue : this.value\n },\n hasValue() {\n if (typeof this.dataValue === 'number') {\n return true\n }\n return (this.dataValue != null) && (this.dataValue.length > 0)\n }\n },\n created() {\n this.$watch(() => {\n var al = [];\n ['pageCurrent',\n 'pageSize',\n 'spaceInfo',\n 'value',\n 'modelValue',\n 'localdata',\n 'collection',\n 'action',\n 'field',\n 'orderby',\n 'where',\n 'getont',\n 'getcount',\n 'gettree'\n ].forEach(key => {\n al.push(this[key])\n });\n return al\n }, (newValue, oldValue) => {\n let needReset = false\n for (let i = 2; i < newValue.length; i++) {\n if (newValue[i] != oldValue[i]) {\n needReset = true\n break\n }\n }\n if (newValue[0] != oldValue[0]) {\n this.page.current = this.pageCurrent\n }\n this.page.size = this.pageSize\n\n this.onPropsChange()\n })\n this._treeData = []\n },\n methods: {\n onPropsChange() {\n this._treeData = []\n },\n getCommand(options = {}) {\n /* eslint-disable no-undef */\n let db = uniCloud.database(this.spaceInfo)\n\n const action = options.action || this.action\n if (action) {\n db = db.action(action)\n }\n\n const collection = options.collection || this.collection\n db = db.collection(collection)\n\n const where = options.where || this.where\n if (!(!where || !Object.keys(where).length)) {\n db = db.where(where)\n }\n\n const field = options.field || this.field\n if (field) {\n db = db.field(field)\n }\n\n const orderby = options.orderby || this.orderby\n if (orderby) {\n db = db.orderBy(orderby)\n }\n\n const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current\n const size = options.pageSize !== undefined ? options.pageSize : this.page.size\n const getCount = options.getcount !== undefined ? options.getcount : this.getcount\n const getTree = options.gettree !== undefined ? options.gettree : this.gettree\n\n const getOptions = {\n getCount,\n getTree\n }\n if (options.getTreePath) {\n getOptions.getTreePath = options.getTreePath\n }\n\n db = db.skip(size * (current - 1)).limit(size).get(getOptions)\n\n return db\n },\n\t\tgetNodeData(callback) {\n\t\t if (this.loading) {\n\t\t return\n\t\t }\n\t\t this.loading = true\n\t\t this.getCommand({\n\t\t field: this.postField,\n\t\t\t\twhere: this._pathWhere()\n\t\t }).then((res) => {\n\t\t this.loading = false\n\t\t this.selected = res.result.data\n\t\t callback && callback()\n\t\t }).catch((err) => {\n\t\t this.loading = false\n\t\t this.errorMessage = err\n\t\t })\n\t\t},\n getTreePath(callback) {\n if (this.loading) {\n return\n }\n this.loading = true\n\n this.getCommand({\n field: this.postField,\n getTreePath: {\n startWith: `${this.selfField}=='${this.dataValue}'`\n }\n }).then((res) => {\n this.loading = false\n let treePath = []\n this._extractTreePath(res.result.data, treePath)\n this.selected = treePath\n callback && callback()\n }).catch((err) => {\n this.loading = false\n this.errorMessage = err\n })\n },\n loadData() {\n if (this.isLocaldata) {\n this._processLocalData()\n return\n }\n\n if (this.dataValue != null) {\n this._loadNodeData((data) => {\n this._treeData = data\n this._updateBindData()\n this._updateSelected()\n })\n return\n }\n\n if (this.stepSearh) {\n this._loadNodeData((data) => {\n this._treeData = data\n this._updateBindData()\n })\n } else {\n this._loadAllData((data) => {\n this._treeData = []\n this._extractTree(data, this._treeData, null)\n this._updateBindData()\n })\n }\n },\n _loadAllData(callback) {\n if (this.loading) {\n return\n }\n this.loading = true\n\n this.getCommand({\n field: this.postField,\n gettree: true,\n startwith: `${this.selfField}=='${this.dataValue}'`\n }).then((res) => {\n this.loading = false\n callback(res.result.data)\n this.onDataChange()\n }).catch((err) => {\n this.loading = false\n this.errorMessage = err\n })\n },\n _loadNodeData(callback, pw) {\n if (this.loading) {\n return\n }\n this.loading = true\n\n this.getCommand({\n field: this.postField,\n where: pw || this._postWhere(),\n pageSize: 500\n }).then((res) => {\n this.loading = false\n callback(res.result.data)\n this.onDataChange()\n }).catch((err) => {\n this.loading = false\n this.errorMessage = err\n })\n },\n _pathWhere() {\n let result = []\n let where_field = this._getParentNameByField();\n if (where_field) {\n result.push(`${where_field} == '${this.dataValue}'`)\n }\n\n if (this.where) {\n return `(${this.where}) && (${result.join(' || ')})`\n }\n\n return result.join(' || ')\n },\n _postWhere() {\n let result = []\n let selected = this.selected\n let parentField = this.parentField\n if (parentField) {\n result.push(`${parentField} == null || ${parentField} == \"\"`)\n }\n if (selected.length) {\n for (var i = 0; i < selected.length - 1; i++) {\n result.push(`${parentField} == '${selected[i].value}'`)\n }\n }\n\n let where = []\n if (this.where) {\n where.push(`(${this.where})`)\n }\n if (result.length) {\n where.push(`(${result.join(' || ')})`)\n }\n\n return where.join(' && ')\n },\n _nodeWhere() {\n let result = []\n let selected = this.selected\n if (selected.length) {\n result.push(`${this.parentField} == '${selected[selected.length - 1].value}'`)\n }\n\n if (this.where) {\n return `(${this.where}) && (${result.join(' || ')})`\n }\n\n return result.join(' || ')\n },\n _getParentNameByField() {\n const fields = this.field.split(',');\n let where_field = null;\n for (let i = 0; i < fields.length; i++) {\n const items = fields[i].split('as');\n if (items.length < 2) {\n continue;\n }\n if (items[1].trim() === 'value') {\n where_field = items[0].trim();\n break;\n }\n }\n return where_field\n },\n _isTreeView() {\n return (this.parentField && this.selfField)\n },\n _updateSelected() {\n var dl = this.dataList\n var sl = this.selected\n let textField = this.map.text\n let valueField = this.map.value\n for (var i = 0; i < sl.length; i++) {\n var value = sl[i].value\n var dl2 = dl[i]\n for (var j = 0; j < dl2.length; j++) {\n var item2 = dl2[j]\n if (item2[valueField] === value) {\n sl[i].text = item2[textField]\n break\n }\n }\n }\n },\n _updateBindData(node) {\n const {\n dataList,\n hasNodes\n } = this._filterData(this._treeData, this.selected)\n\n let isleaf = this._stepSearh === false && !hasNodes\n\n if (node) {\n node.isleaf = isleaf\n }\n\n this.dataList = dataList\n this.selectedIndex = dataList.length - 1\n\n if (!isleaf && this.selected.length < dataList.length) {\n this.selected.push({\n value: null,\n text: \"请选择\"\n })\n }\n\n return {\n isleaf,\n hasNodes\n }\n },\n _filterData(data, paths) {\n let dataList = []\n let hasNodes = true\n\n dataList.push(data.filter((item) => {\n return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '')\n }))\n for (let i = 0; i < paths.length; i++) {\n var value = paths[i].value\n var nodes = data.filter((item) => {\n return item.parent_value === value\n })\n\n if (nodes.length) {\n dataList.push(nodes)\n } else {\n hasNodes = false\n }\n }\n\n return {\n dataList,\n hasNodes\n }\n },\n _extractTree(nodes, result, parent_value) {\n let list = result || []\n let valueField = this.map.value\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i]\n\n let child = {}\n for (let key in node) {\n if (key !== 'children') {\n child[key] = node[key]\n }\n }\n if (parent_value !== null && parent_value !== undefined && parent_value !== '') {\n child.parent_value = parent_value\n }\n result.push(child)\n\n let children = node.children\n if (children) {\n this._extractTree(children, result, node[valueField])\n }\n }\n },\n _extractTreePath(nodes, result) {\n let list = result || []\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i]\n\n let child = {}\n for (let key in node) {\n if (key !== 'children') {\n child[key] = node[key]\n }\n }\n result.push(child)\n\n let children = node.children\n if (children) {\n this._extractTreePath(children, result)\n }\n }\n },\n _findNodePath(key, nodes, path = []) {\n let textField = this.map.text\n let valueField = this.map.value\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i]\n let children = node.children\n let text = node[textField]\n let value = node[valueField]\n\n path.push({\n value,\n text\n })\n\n if (value === key) {\n return path\n }\n\n if (children) {\n const p = this._findNodePath(key, children, path)\n if (p.length) {\n return p\n }\n }\n\n path.pop()\n }\n return []\n },\n _processLocalData() {\n this._treeData = []\n this._extractTree(this.localdata, this._treeData)\n\n var inputValue = this.dataValue\n if (inputValue === undefined) {\n return\n }\n\n if (Array.isArray(inputValue)) {\n inputValue = inputValue[inputValue.length - 1]\n if (typeof inputValue === 'object' && inputValue[this.map.value]) {\n inputValue = inputValue[this.map.value]\n }\n }\n\n this.selected = this._findNodePath(inputValue, this.localdata)\n }\n }\n}\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) { // eslint-disable-line func-name-matching\n return prefix + '[]';\n },\n indices: function indices(prefix, key) { // eslint-disable-line func-name-matching\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) { // eslint-disable-line func-name-matching\n return prefix;\n }\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify( // eslint-disable-line func-name-matching\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (Array.isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (Array.isArray(obj)) {\n values = values.concat(stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n values = values.concat(stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (Array.isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n keys = keys.concat(stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (typeof target === 'object') {\n if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n if (target[i] && typeof target[i] === 'object') {\n target[i] = merge(target[i], item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return value;\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]') {\n obj = [];\n obj = obj.concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","import en from './en.json'\r\nimport zhHans from './zh-Hans.json'\r\nimport zhHant from './zh-Hant.json'\r\nexport default {\r\n\ten,\r\n\t'zh-Hans': zhHans,\r\n\t'zh-Hant': zhHant\r\n}\r\n","class Request {\n constructor(options = {}) {\n // 请求的根路径\n this.baseUrl = options.baseUrl || ''\n // 请求的 url 地址\n this.url = options.url || ''\n // 请求方式\n this.method = 'GET'\n // 请求的参数对象\n this.data = null\n // header 请求头\n this.header = options.header || {}\n this.beforeRequest = null\n this.afterRequest = null\n }\n\n get(url, data = {}) {\n this.method = 'GET'\n this.url = this.baseUrl + url\n this.data = data\n return this._()\n }\n\n post(url, data = {}) {\n this.method = 'POST'\n this.url = this.baseUrl + url\n this.data = data\n return this._()\n }\n\n put(url, data = {}) {\n this.method = 'PUT'\n this.url = this.baseUrl + url\n this.data = data\n return this._()\n }\n\n delete(url, data = {}) {\n this.method = 'DELETE'\n this.url = this.baseUrl + url\n this.data = data\n return this._()\n }\n\n _() {\n // 清空 header 对象\n this.header = {}\n // 请求之前做一些事\n this.beforeRequest && typeof this.beforeRequest === 'function' && this.beforeRequest(this)\n // 发起请求\n return new Promise((resolve, reject) => {\n let weixin = wx\n // 适配 uniapp\n if ('undefined' !== typeof uni) {\n weixin = uni\n }\n weixin.request({\n url: this.url,\n method: this.method,\n data: this.data,\n header: this.header,\n success: (res) => { resolve(res) },\n fail: (err) => { reject(err) },\n complete: (res) => {\n // 请求完成以后做一些事情\n this.afterRequest && typeof this.afterRequest === 'function' && this.afterRequest(res)\n }\n })\n })\n }\n}\n\nexport const $http = new Request()","export default {\n \"id\": \"2852637\",\n \"name\": \"uniui图标库\",\n \"font_family\": \"uniicons\",\n \"css_prefix_text\": \"uniui-\",\n \"description\": \"\",\n \"glyphs\": [\n {\n \"icon_id\": \"25027049\",\n \"name\": \"yanse\",\n \"font_class\": \"color\",\n \"unicode\": \"e6cf\",\n \"unicode_decimal\": 59087\n },\n {\n \"icon_id\": \"25027048\",\n \"name\": \"wallet\",\n \"font_class\": \"wallet\",\n \"unicode\": \"e6b1\",\n \"unicode_decimal\": 59057\n },\n {\n \"icon_id\": \"25015720\",\n \"name\": \"settings-filled\",\n \"font_class\": \"settings-filled\",\n \"unicode\": \"e6ce\",\n \"unicode_decimal\": 59086\n },\n {\n \"icon_id\": \"25015434\",\n \"name\": \"shimingrenzheng-filled\",\n \"font_class\": \"auth-filled\",\n \"unicode\": \"e6cc\",\n \"unicode_decimal\": 59084\n },\n {\n \"icon_id\": \"24934246\",\n \"name\": \"shop-filled\",\n \"font_class\": \"shop-filled\",\n \"unicode\": \"e6cd\",\n \"unicode_decimal\": 59085\n },\n {\n \"icon_id\": \"24934159\",\n \"name\": \"staff-filled-01\",\n \"font_class\": \"staff-filled\",\n \"unicode\": \"e6cb\",\n \"unicode_decimal\": 59083\n },\n {\n \"icon_id\": \"24932461\",\n \"name\": \"VIP-filled\",\n \"font_class\": \"vip-filled\",\n \"unicode\": \"e6c6\",\n \"unicode_decimal\": 59078\n },\n {\n \"icon_id\": \"24932462\",\n \"name\": \"plus_circle_fill\",\n \"font_class\": \"plus-filled\",\n \"unicode\": \"e6c7\",\n \"unicode_decimal\": 59079\n },\n {\n \"icon_id\": \"24932463\",\n \"name\": \"folder_add-filled\",\n \"font_class\": \"folder-add-filled\",\n \"unicode\": \"e6c8\",\n \"unicode_decimal\": 59080\n },\n {\n \"icon_id\": \"24932464\",\n \"name\": \"yanse-filled\",\n \"font_class\": \"color-filled\",\n \"unicode\": \"e6c9\",\n \"unicode_decimal\": 59081\n },\n {\n \"icon_id\": \"24932465\",\n \"name\": \"tune-filled\",\n \"font_class\": \"tune-filled\",\n \"unicode\": \"e6ca\",\n \"unicode_decimal\": 59082\n },\n {\n \"icon_id\": \"24932455\",\n \"name\": \"a-rilidaka-filled\",\n \"font_class\": \"calendar-filled\",\n \"unicode\": \"e6c0\",\n \"unicode_decimal\": 59072\n },\n {\n \"icon_id\": \"24932456\",\n \"name\": \"notification-filled\",\n \"font_class\": \"notification-filled\",\n \"unicode\": \"e6c1\",\n \"unicode_decimal\": 59073\n },\n {\n \"icon_id\": \"24932457\",\n \"name\": \"wallet-filled\",\n \"font_class\": \"wallet-filled\",\n \"unicode\": \"e6c2\",\n \"unicode_decimal\": 59074\n },\n {\n \"icon_id\": \"24932458\",\n \"name\": \"paihangbang-filled\",\n \"font_class\": \"medal-filled\",\n \"unicode\": \"e6c3\",\n \"unicode_decimal\": 59075\n },\n {\n \"icon_id\": \"24932459\",\n \"name\": \"gift-filled\",\n \"font_class\": \"gift-filled\",\n \"unicode\": \"e6c4\",\n \"unicode_decimal\": 59076\n },\n {\n \"icon_id\": \"24932460\",\n \"name\": \"fire-filled\",\n \"font_class\": \"fire-filled\",\n \"unicode\": \"e6c5\",\n \"unicode_decimal\": 59077\n },\n {\n \"icon_id\": \"24928001\",\n \"name\": \"refreshempty\",\n \"font_class\": \"refreshempty\",\n \"unicode\": \"e6bf\",\n \"unicode_decimal\": 59071\n },\n {\n \"icon_id\": \"24926853\",\n \"name\": \"location-ellipse\",\n \"font_class\": \"location-filled\",\n \"unicode\": \"e6af\",\n \"unicode_decimal\": 59055\n },\n {\n \"icon_id\": \"24926735\",\n \"name\": \"person-filled\",\n \"font_class\": \"person-filled\",\n \"unicode\": \"e69d\",\n \"unicode_decimal\": 59037\n },\n {\n \"icon_id\": \"24926703\",\n \"name\": \"personadd-filled\",\n \"font_class\": \"personadd-filled\",\n \"unicode\": \"e698\",\n \"unicode_decimal\": 59032\n },\n {\n \"icon_id\": \"24923351\",\n \"name\": \"back\",\n \"font_class\": \"back\",\n \"unicode\": \"e6b9\",\n \"unicode_decimal\": 59065\n },\n {\n \"icon_id\": \"24923352\",\n \"name\": \"forward\",\n \"font_class\": \"forward\",\n \"unicode\": \"e6ba\",\n \"unicode_decimal\": 59066\n },\n {\n \"icon_id\": \"24923353\",\n \"name\": \"arrowthinright\",\n \"font_class\": \"arrow-right\",\n \"unicode\": \"e6bb\",\n \"unicode_decimal\": 59067\n },\n\t\t{\n\t\t \"icon_id\": \"24923353\",\n\t\t \"name\": \"arrowthinright\",\n\t\t \"font_class\": \"arrowthinright\",\n\t\t \"unicode\": \"e6bb\",\n\t\t \"unicode_decimal\": 59067\n\t\t},\n {\n \"icon_id\": \"24923354\",\n \"name\": \"arrowthinleft\",\n \"font_class\": \"arrow-left\",\n \"unicode\": \"e6bc\",\n \"unicode_decimal\": 59068\n },\n\t\t{\n\t\t \"icon_id\": \"24923354\",\n\t\t \"name\": \"arrowthinleft\",\n\t\t \"font_class\": \"arrowthinleft\",\n\t\t \"unicode\": \"e6bc\",\n\t\t \"unicode_decimal\": 59068\n\t\t},\n {\n \"icon_id\": \"24923355\",\n \"name\": \"arrowthinup\",\n \"font_class\": \"arrow-up\",\n \"unicode\": \"e6bd\",\n \"unicode_decimal\": 59069\n },\n\t\t{\n\t\t \"icon_id\": \"24923355\",\n\t\t \"name\": \"arrowthinup\",\n\t\t \"font_class\": \"arrowthinup\",\n\t\t \"unicode\": \"e6bd\",\n\t\t \"unicode_decimal\": 59069\n\t\t},\n {\n \"icon_id\": \"24923356\",\n \"name\": \"arrowthindown\",\n \"font_class\": \"arrow-down\",\n \"unicode\": \"e6be\",\n \"unicode_decimal\": 59070\n },{\n \"icon_id\": \"24923356\",\n \"name\": \"arrowthindown\",\n \"font_class\": \"arrowthindown\",\n \"unicode\": \"e6be\",\n \"unicode_decimal\": 59070\n },\n {\n \"icon_id\": \"24923349\",\n \"name\": \"arrowdown\",\n \"font_class\": \"bottom\",\n \"unicode\": \"e6b8\",\n \"unicode_decimal\": 59064\n },{\n \"icon_id\": \"24923349\",\n \"name\": \"arrowdown\",\n \"font_class\": \"arrowdown\",\n \"unicode\": \"e6b8\",\n \"unicode_decimal\": 59064\n },\n {\n \"icon_id\": \"24923346\",\n \"name\": \"arrowright\",\n \"font_class\": \"right\",\n \"unicode\": \"e6b5\",\n \"unicode_decimal\": 59061\n },\n\t\t{\n\t\t \"icon_id\": \"24923346\",\n\t\t \"name\": \"arrowright\",\n\t\t \"font_class\": \"arrowright\",\n\t\t \"unicode\": \"e6b5\",\n\t\t \"unicode_decimal\": 59061\n\t\t},\n {\n \"icon_id\": \"24923347\",\n \"name\": \"arrowup\",\n \"font_class\": \"top\",\n \"unicode\": \"e6b6\",\n \"unicode_decimal\": 59062\n },\n\t\t{\n\t\t \"icon_id\": \"24923347\",\n\t\t \"name\": \"arrowup\",\n\t\t \"font_class\": \"arrowup\",\n\t\t \"unicode\": \"e6b6\",\n\t\t \"unicode_decimal\": 59062\n\t\t},\n {\n \"icon_id\": \"24923348\",\n \"name\": \"arrowleft\",\n \"font_class\": \"left\",\n \"unicode\": \"e6b7\",\n \"unicode_decimal\": 59063\n },\n\t\t{\n\t\t \"icon_id\": \"24923348\",\n\t\t \"name\": \"arrowleft\",\n\t\t \"font_class\": \"arrowleft\",\n\t\t \"unicode\": \"e6b7\",\n\t\t \"unicode_decimal\": 59063\n\t\t},\n {\n \"icon_id\": \"24923334\",\n \"name\": \"eye\",\n \"font_class\": \"eye\",\n \"unicode\": \"e651\",\n \"unicode_decimal\": 58961\n },\n {\n \"icon_id\": \"24923335\",\n \"name\": \"eye-filled\",\n \"font_class\": \"eye-filled\",\n \"unicode\": \"e66a\",\n \"unicode_decimal\": 58986\n },\n {\n \"icon_id\": \"24923336\",\n \"name\": \"eye-slash\",\n \"font_class\": \"eye-slash\",\n \"unicode\": \"e6b3\",\n \"unicode_decimal\": 59059\n },\n {\n \"icon_id\": \"24923337\",\n \"name\": \"eye-slash-filled\",\n \"font_class\": \"eye-slash-filled\",\n \"unicode\": \"e6b4\",\n \"unicode_decimal\": 59060\n },\n {\n \"icon_id\": \"24923305\",\n \"name\": \"info-filled\",\n \"font_class\": \"info-filled\",\n \"unicode\": \"e649\",\n \"unicode_decimal\": 58953\n },\n {\n \"icon_id\": \"24923299\",\n \"name\": \"reload-01\",\n \"font_class\": \"reload\",\n \"unicode\": \"e6b2\",\n \"unicode_decimal\": 59058\n },\n {\n \"icon_id\": \"24923195\",\n \"name\": \"mic_slash_fill\",\n \"font_class\": \"micoff-filled\",\n \"unicode\": \"e6b0\",\n \"unicode_decimal\": 59056\n },\n {\n \"icon_id\": \"24923165\",\n \"name\": \"map-pin-ellipse\",\n \"font_class\": \"map-pin-ellipse\",\n \"unicode\": \"e6ac\",\n \"unicode_decimal\": 59052\n },\n {\n \"icon_id\": \"24923166\",\n \"name\": \"map-pin\",\n \"font_class\": \"map-pin\",\n \"unicode\": \"e6ad\",\n \"unicode_decimal\": 59053\n },\n {\n \"icon_id\": \"24923167\",\n \"name\": \"location\",\n \"font_class\": \"location\",\n \"unicode\": \"e6ae\",\n \"unicode_decimal\": 59054\n },\n {\n \"icon_id\": \"24923064\",\n \"name\": \"starhalf\",\n \"font_class\": \"starhalf\",\n \"unicode\": \"e683\",\n \"unicode_decimal\": 59011\n },\n {\n \"icon_id\": \"24923065\",\n \"name\": \"star\",\n \"font_class\": \"star\",\n \"unicode\": \"e688\",\n \"unicode_decimal\": 59016\n },\n {\n \"icon_id\": \"24923066\",\n \"name\": \"star-filled\",\n \"font_class\": \"star-filled\",\n \"unicode\": \"e68f\",\n \"unicode_decimal\": 59023\n },\n {\n \"icon_id\": \"24899646\",\n \"name\": \"a-rilidaka\",\n \"font_class\": \"calendar\",\n \"unicode\": \"e6a0\",\n \"unicode_decimal\": 59040\n },\n {\n \"icon_id\": \"24899647\",\n \"name\": \"fire\",\n \"font_class\": \"fire\",\n \"unicode\": \"e6a1\",\n \"unicode_decimal\": 59041\n },\n {\n \"icon_id\": \"24899648\",\n \"name\": \"paihangbang\",\n \"font_class\": \"medal\",\n \"unicode\": \"e6a2\",\n \"unicode_decimal\": 59042\n },\n {\n \"icon_id\": \"24899649\",\n \"name\": \"font\",\n \"font_class\": \"font\",\n \"unicode\": \"e6a3\",\n \"unicode_decimal\": 59043\n },\n {\n \"icon_id\": \"24899650\",\n \"name\": \"gift\",\n \"font_class\": \"gift\",\n \"unicode\": \"e6a4\",\n \"unicode_decimal\": 59044\n },\n {\n \"icon_id\": \"24899651\",\n \"name\": \"link\",\n \"font_class\": \"link\",\n \"unicode\": \"e6a5\",\n \"unicode_decimal\": 59045\n },\n {\n \"icon_id\": \"24899652\",\n \"name\": \"notification\",\n \"font_class\": \"notification\",\n \"unicode\": \"e6a6\",\n \"unicode_decimal\": 59046\n },\n {\n \"icon_id\": \"24899653\",\n \"name\": \"staff\",\n \"font_class\": \"staff\",\n \"unicode\": \"e6a7\",\n \"unicode_decimal\": 59047\n },\n {\n \"icon_id\": \"24899654\",\n \"name\": \"VIP\",\n \"font_class\": \"vip\",\n \"unicode\": \"e6a8\",\n \"unicode_decimal\": 59048\n },\n {\n \"icon_id\": \"24899655\",\n \"name\": \"folder_add\",\n \"font_class\": \"folder-add\",\n \"unicode\": \"e6a9\",\n \"unicode_decimal\": 59049\n },\n {\n \"icon_id\": \"24899656\",\n \"name\": \"tune\",\n \"font_class\": \"tune\",\n \"unicode\": \"e6aa\",\n \"unicode_decimal\": 59050\n },\n {\n \"icon_id\": \"24899657\",\n \"name\": \"shimingrenzheng\",\n \"font_class\": \"auth\",\n \"unicode\": \"e6ab\",\n \"unicode_decimal\": 59051\n },\n {\n \"icon_id\": \"24899565\",\n \"name\": \"person\",\n \"font_class\": \"person\",\n \"unicode\": \"e699\",\n \"unicode_decimal\": 59033\n },\n {\n \"icon_id\": \"24899566\",\n \"name\": \"email-filled\",\n \"font_class\": \"email-filled\",\n \"unicode\": \"e69a\",\n \"unicode_decimal\": 59034\n },\n {\n \"icon_id\": \"24899567\",\n \"name\": \"phone-filled\",\n \"font_class\": \"phone-filled\",\n \"unicode\": \"e69b\",\n \"unicode_decimal\": 59035\n },\n {\n \"icon_id\": \"24899568\",\n \"name\": \"phone\",\n \"font_class\": \"phone\",\n \"unicode\": \"e69c\",\n \"unicode_decimal\": 59036\n },\n {\n \"icon_id\": \"24899570\",\n \"name\": \"email\",\n \"font_class\": \"email\",\n \"unicode\": \"e69e\",\n \"unicode_decimal\": 59038\n },\n {\n \"icon_id\": \"24899571\",\n \"name\": \"personadd\",\n \"font_class\": \"personadd\",\n \"unicode\": \"e69f\",\n \"unicode_decimal\": 59039\n },\n {\n \"icon_id\": \"24899558\",\n \"name\": \"chatboxes-filled\",\n \"font_class\": \"chatboxes-filled\",\n \"unicode\": \"e692\",\n \"unicode_decimal\": 59026\n },\n {\n \"icon_id\": \"24899559\",\n \"name\": \"contact\",\n \"font_class\": \"contact\",\n \"unicode\": \"e693\",\n \"unicode_decimal\": 59027\n },\n {\n \"icon_id\": \"24899560\",\n \"name\": \"chatbubble-filled\",\n \"font_class\": \"chatbubble-filled\",\n \"unicode\": \"e694\",\n \"unicode_decimal\": 59028\n },\n {\n \"icon_id\": \"24899561\",\n \"name\": \"contact-filled\",\n \"font_class\": \"contact-filled\",\n \"unicode\": \"e695\",\n \"unicode_decimal\": 59029\n },\n {\n \"icon_id\": \"24899562\",\n \"name\": \"chatboxes\",\n \"font_class\": \"chatboxes\",\n \"unicode\": \"e696\",\n \"unicode_decimal\": 59030\n },\n {\n \"icon_id\": \"24899563\",\n \"name\": \"chatbubble\",\n \"font_class\": \"chatbubble\",\n \"unicode\": \"e697\",\n \"unicode_decimal\": 59031\n },\n {\n \"icon_id\": \"24881290\",\n \"name\": \"upload-filled\",\n \"font_class\": \"upload-filled\",\n \"unicode\": \"e68e\",\n \"unicode_decimal\": 59022\n },\n {\n \"icon_id\": \"24881292\",\n \"name\": \"upload\",\n \"font_class\": \"upload\",\n \"unicode\": \"e690\",\n \"unicode_decimal\": 59024\n },\n {\n \"icon_id\": \"24881293\",\n \"name\": \"weixin\",\n \"font_class\": \"weixin\",\n \"unicode\": \"e691\",\n \"unicode_decimal\": 59025\n },\n {\n \"icon_id\": \"24881274\",\n \"name\": \"compose\",\n \"font_class\": \"compose\",\n \"unicode\": \"e67f\",\n \"unicode_decimal\": 59007\n },\n {\n \"icon_id\": \"24881275\",\n \"name\": \"qq\",\n \"font_class\": \"qq\",\n \"unicode\": \"e680\",\n \"unicode_decimal\": 59008\n },\n {\n \"icon_id\": \"24881276\",\n \"name\": \"download-filled\",\n \"font_class\": \"download-filled\",\n \"unicode\": \"e681\",\n \"unicode_decimal\": 59009\n },\n {\n \"icon_id\": \"24881277\",\n \"name\": \"pengyouquan\",\n \"font_class\": \"pyq\",\n \"unicode\": \"e682\",\n \"unicode_decimal\": 59010\n },\n {\n \"icon_id\": \"24881279\",\n \"name\": \"sound\",\n \"font_class\": \"sound\",\n \"unicode\": \"e684\",\n \"unicode_decimal\": 59012\n },\n {\n \"icon_id\": \"24881280\",\n \"name\": \"trash-filled\",\n \"font_class\": \"trash-filled\",\n \"unicode\": \"e685\",\n \"unicode_decimal\": 59013\n },\n {\n \"icon_id\": \"24881281\",\n \"name\": \"sound-filled\",\n \"font_class\": \"sound-filled\",\n \"unicode\": \"e686\",\n \"unicode_decimal\": 59014\n },\n {\n \"icon_id\": \"24881282\",\n \"name\": \"trash\",\n \"font_class\": \"trash\",\n \"unicode\": \"e687\",\n \"unicode_decimal\": 59015\n },\n {\n \"icon_id\": \"24881284\",\n \"name\": \"videocam-filled\",\n \"font_class\": \"videocam-filled\",\n \"unicode\": \"e689\",\n \"unicode_decimal\": 59017\n },\n {\n \"icon_id\": \"24881285\",\n \"name\": \"spinner-cycle\",\n \"font_class\": \"spinner-cycle\",\n \"unicode\": \"e68a\",\n \"unicode_decimal\": 59018\n },\n {\n \"icon_id\": \"24881286\",\n \"name\": \"weibo\",\n \"font_class\": \"weibo\",\n \"unicode\": \"e68b\",\n \"unicode_decimal\": 59019\n },\n {\n \"icon_id\": \"24881288\",\n \"name\": \"videocam\",\n \"font_class\": \"videocam\",\n \"unicode\": \"e68c\",\n \"unicode_decimal\": 59020\n },\n {\n \"icon_id\": \"24881289\",\n \"name\": \"download\",\n \"font_class\": \"download\",\n \"unicode\": \"e68d\",\n \"unicode_decimal\": 59021\n },\n {\n \"icon_id\": \"24879601\",\n \"name\": \"help\",\n \"font_class\": \"help\",\n \"unicode\": \"e679\",\n \"unicode_decimal\": 59001\n },\n {\n \"icon_id\": \"24879602\",\n \"name\": \"navigate-filled\",\n \"font_class\": \"navigate-filled\",\n \"unicode\": \"e67a\",\n \"unicode_decimal\": 59002\n },\n {\n \"icon_id\": \"24879603\",\n \"name\": \"plusempty\",\n \"font_class\": \"plusempty\",\n \"unicode\": \"e67b\",\n \"unicode_decimal\": 59003\n },\n {\n \"icon_id\": \"24879604\",\n \"name\": \"smallcircle\",\n \"font_class\": \"smallcircle\",\n \"unicode\": \"e67c\",\n \"unicode_decimal\": 59004\n },\n {\n \"icon_id\": \"24879605\",\n \"name\": \"minus-filled\",\n \"font_class\": \"minus-filled\",\n \"unicode\": \"e67d\",\n \"unicode_decimal\": 59005\n },\n {\n \"icon_id\": \"24879606\",\n \"name\": \"micoff\",\n \"font_class\": \"micoff\",\n \"unicode\": \"e67e\",\n \"unicode_decimal\": 59006\n },\n {\n \"icon_id\": \"24879588\",\n \"name\": \"closeempty\",\n \"font_class\": \"closeempty\",\n \"unicode\": \"e66c\",\n \"unicode_decimal\": 58988\n },\n {\n \"icon_id\": \"24879589\",\n \"name\": \"clear\",\n \"font_class\": \"clear\",\n \"unicode\": \"e66d\",\n \"unicode_decimal\": 58989\n },\n {\n \"icon_id\": \"24879590\",\n \"name\": \"navigate\",\n \"font_class\": \"navigate\",\n \"unicode\": \"e66e\",\n \"unicode_decimal\": 58990\n },\n {\n \"icon_id\": \"24879591\",\n \"name\": \"minus\",\n \"font_class\": \"minus\",\n \"unicode\": \"e66f\",\n \"unicode_decimal\": 58991\n },\n {\n \"icon_id\": \"24879592\",\n \"name\": \"image\",\n \"font_class\": \"image\",\n \"unicode\": \"e670\",\n \"unicode_decimal\": 58992\n },\n {\n \"icon_id\": \"24879593\",\n \"name\": \"mic\",\n \"font_class\": \"mic\",\n \"unicode\": \"e671\",\n \"unicode_decimal\": 58993\n },\n {\n \"icon_id\": \"24879594\",\n \"name\": \"paperplane\",\n \"font_class\": \"paperplane\",\n \"unicode\": \"e672\",\n \"unicode_decimal\": 58994\n },\n {\n \"icon_id\": \"24879595\",\n \"name\": \"close\",\n \"font_class\": \"close\",\n \"unicode\": \"e673\",\n \"unicode_decimal\": 58995\n },\n {\n \"icon_id\": \"24879596\",\n \"name\": \"help-filled\",\n \"font_class\": \"help-filled\",\n \"unicode\": \"e674\",\n \"unicode_decimal\": 58996\n },\n {\n \"icon_id\": \"24879597\",\n \"name\": \"plus-filled\",\n \"font_class\": \"paperplane-filled\",\n \"unicode\": \"e675\",\n \"unicode_decimal\": 58997\n },\n {\n \"icon_id\": \"24879598\",\n \"name\": \"plus\",\n \"font_class\": \"plus\",\n \"unicode\": \"e676\",\n \"unicode_decimal\": 58998\n },\n {\n \"icon_id\": \"24879599\",\n \"name\": \"mic-filled\",\n \"font_class\": \"mic-filled\",\n \"unicode\": \"e677\",\n \"unicode_decimal\": 58999\n },\n {\n \"icon_id\": \"24879600\",\n \"name\": \"image-filled\",\n \"font_class\": \"image-filled\",\n \"unicode\": \"e678\",\n \"unicode_decimal\": 59000\n },\n {\n \"icon_id\": \"24855900\",\n \"name\": \"locked-filled\",\n \"font_class\": \"locked-filled\",\n \"unicode\": \"e668\",\n \"unicode_decimal\": 58984\n },\n {\n \"icon_id\": \"24855901\",\n \"name\": \"info\",\n \"font_class\": \"info\",\n \"unicode\": \"e669\",\n \"unicode_decimal\": 58985\n },\n {\n \"icon_id\": \"24855903\",\n \"name\": \"locked\",\n \"font_class\": \"locked\",\n \"unicode\": \"e66b\",\n \"unicode_decimal\": 58987\n },\n {\n \"icon_id\": \"24855884\",\n \"name\": \"camera-filled\",\n \"font_class\": \"camera-filled\",\n \"unicode\": \"e658\",\n \"unicode_decimal\": 58968\n },\n {\n \"icon_id\": \"24855885\",\n \"name\": \"chat-filled\",\n \"font_class\": \"chat-filled\",\n \"unicode\": \"e659\",\n \"unicode_decimal\": 58969\n },\n {\n \"icon_id\": \"24855886\",\n \"name\": \"camera\",\n \"font_class\": \"camera\",\n \"unicode\": \"e65a\",\n \"unicode_decimal\": 58970\n },\n {\n \"icon_id\": \"24855887\",\n \"name\": \"circle\",\n \"font_class\": \"circle\",\n \"unicode\": \"e65b\",\n \"unicode_decimal\": 58971\n },\n {\n \"icon_id\": \"24855888\",\n \"name\": \"checkmarkempty\",\n \"font_class\": \"checkmarkempty\",\n \"unicode\": \"e65c\",\n \"unicode_decimal\": 58972\n },\n {\n \"icon_id\": \"24855889\",\n \"name\": \"chat\",\n \"font_class\": \"chat\",\n \"unicode\": \"e65d\",\n \"unicode_decimal\": 58973\n },\n {\n \"icon_id\": \"24855890\",\n \"name\": \"circle-filled\",\n \"font_class\": \"circle-filled\",\n \"unicode\": \"e65e\",\n \"unicode_decimal\": 58974\n },\n {\n \"icon_id\": \"24855891\",\n \"name\": \"flag\",\n \"font_class\": \"flag\",\n \"unicode\": \"e65f\",\n \"unicode_decimal\": 58975\n },\n {\n \"icon_id\": \"24855892\",\n \"name\": \"flag-filled\",\n \"font_class\": \"flag-filled\",\n \"unicode\": \"e660\",\n \"unicode_decimal\": 58976\n },\n {\n \"icon_id\": \"24855893\",\n \"name\": \"gear-filled\",\n \"font_class\": \"gear-filled\",\n \"unicode\": \"e661\",\n \"unicode_decimal\": 58977\n },\n {\n \"icon_id\": \"24855894\",\n \"name\": \"home\",\n \"font_class\": \"home\",\n \"unicode\": \"e662\",\n \"unicode_decimal\": 58978\n },\n {\n \"icon_id\": \"24855895\",\n \"name\": \"home-filled\",\n \"font_class\": \"home-filled\",\n \"unicode\": \"e663\",\n \"unicode_decimal\": 58979\n },\n {\n \"icon_id\": \"24855896\",\n \"name\": \"gear\",\n \"font_class\": \"gear\",\n \"unicode\": \"e664\",\n \"unicode_decimal\": 58980\n },\n {\n \"icon_id\": \"24855897\",\n \"name\": \"smallcircle-filled\",\n \"font_class\": \"smallcircle-filled\",\n \"unicode\": \"e665\",\n \"unicode_decimal\": 58981\n },\n {\n \"icon_id\": \"24855898\",\n \"name\": \"map-filled\",\n \"font_class\": \"map-filled\",\n \"unicode\": \"e666\",\n \"unicode_decimal\": 58982\n },\n {\n \"icon_id\": \"24855899\",\n \"name\": \"map\",\n \"font_class\": \"map\",\n \"unicode\": \"e667\",\n \"unicode_decimal\": 58983\n },\n {\n \"icon_id\": \"24855825\",\n \"name\": \"refresh-filled\",\n \"font_class\": \"refresh-filled\",\n \"unicode\": \"e656\",\n \"unicode_decimal\": 58966\n },\n {\n \"icon_id\": \"24855826\",\n \"name\": \"refresh\",\n \"font_class\": \"refresh\",\n \"unicode\": \"e657\",\n \"unicode_decimal\": 58967\n },\n {\n \"icon_id\": \"24855808\",\n \"name\": \"cloud-upload\",\n \"font_class\": \"cloud-upload\",\n \"unicode\": \"e645\",\n \"unicode_decimal\": 58949\n },\n {\n \"icon_id\": \"24855809\",\n \"name\": \"cloud-download-filled\",\n \"font_class\": \"cloud-download-filled\",\n \"unicode\": \"e646\",\n \"unicode_decimal\": 58950\n },\n {\n \"icon_id\": \"24855810\",\n \"name\": \"cloud-download\",\n \"font_class\": \"cloud-download\",\n \"unicode\": \"e647\",\n \"unicode_decimal\": 58951\n },\n {\n \"icon_id\": \"24855811\",\n \"name\": \"cloud-upload-filled\",\n \"font_class\": \"cloud-upload-filled\",\n \"unicode\": \"e648\",\n \"unicode_decimal\": 58952\n },\n {\n \"icon_id\": \"24855813\",\n \"name\": \"redo\",\n \"font_class\": \"redo\",\n \"unicode\": \"e64a\",\n \"unicode_decimal\": 58954\n },\n {\n \"icon_id\": \"24855814\",\n \"name\": \"images-filled\",\n \"font_class\": \"images-filled\",\n \"unicode\": \"e64b\",\n \"unicode_decimal\": 58955\n },\n {\n \"icon_id\": \"24855815\",\n \"name\": \"undo-filled\",\n \"font_class\": \"undo-filled\",\n \"unicode\": \"e64c\",\n \"unicode_decimal\": 58956\n },\n {\n \"icon_id\": \"24855816\",\n \"name\": \"more\",\n \"font_class\": \"more\",\n \"unicode\": \"e64d\",\n \"unicode_decimal\": 58957\n },\n {\n \"icon_id\": \"24855817\",\n \"name\": \"more-filled\",\n \"font_class\": \"more-filled\",\n \"unicode\": \"e64e\",\n \"unicode_decimal\": 58958\n },\n {\n \"icon_id\": \"24855818\",\n \"name\": \"undo\",\n \"font_class\": \"undo\",\n \"unicode\": \"e64f\",\n \"unicode_decimal\": 58959\n },\n {\n \"icon_id\": \"24855819\",\n \"name\": \"images\",\n \"font_class\": \"images\",\n \"unicode\": \"e650\",\n \"unicode_decimal\": 58960\n },\n {\n \"icon_id\": \"24855821\",\n \"name\": \"paperclip\",\n \"font_class\": \"paperclip\",\n \"unicode\": \"e652\",\n \"unicode_decimal\": 58962\n },\n {\n \"icon_id\": \"24855822\",\n \"name\": \"settings\",\n \"font_class\": \"settings\",\n \"unicode\": \"e653\",\n \"unicode_decimal\": 58963\n },\n {\n \"icon_id\": \"24855823\",\n \"name\": \"search\",\n \"font_class\": \"search\",\n \"unicode\": \"e654\",\n \"unicode_decimal\": 58964\n },\n {\n \"icon_id\": \"24855824\",\n \"name\": \"redo-filled\",\n \"font_class\": \"redo-filled\",\n \"unicode\": \"e655\",\n \"unicode_decimal\": 58965\n },\n {\n \"icon_id\": \"24841702\",\n \"name\": \"list\",\n \"font_class\": \"list\",\n \"unicode\": \"e644\",\n \"unicode_decimal\": 58948\n },\n {\n \"icon_id\": \"24841489\",\n \"name\": \"mail-open-filled\",\n \"font_class\": \"mail-open-filled\",\n \"unicode\": \"e63a\",\n \"unicode_decimal\": 58938\n },\n {\n \"icon_id\": \"24841491\",\n \"name\": \"hand-thumbsdown-filled\",\n \"font_class\": \"hand-down-filled\",\n \"unicode\": \"e63c\",\n \"unicode_decimal\": 58940\n },\n {\n \"icon_id\": \"24841492\",\n \"name\": \"hand-thumbsdown\",\n \"font_class\": \"hand-down\",\n \"unicode\": \"e63d\",\n \"unicode_decimal\": 58941\n },\n {\n \"icon_id\": \"24841493\",\n \"name\": \"hand-thumbsup-filled\",\n \"font_class\": \"hand-up-filled\",\n \"unicode\": \"e63e\",\n \"unicode_decimal\": 58942\n },\n {\n \"icon_id\": \"24841494\",\n \"name\": \"hand-thumbsup\",\n \"font_class\": \"hand-up\",\n \"unicode\": \"e63f\",\n \"unicode_decimal\": 58943\n },\n {\n \"icon_id\": \"24841496\",\n \"name\": \"heart-filled\",\n \"font_class\": \"heart-filled\",\n \"unicode\": \"e641\",\n \"unicode_decimal\": 58945\n },\n {\n \"icon_id\": \"24841498\",\n \"name\": \"mail-open\",\n \"font_class\": \"mail-open\",\n \"unicode\": \"e643\",\n \"unicode_decimal\": 58947\n },\n {\n \"icon_id\": \"24841488\",\n \"name\": \"heart\",\n \"font_class\": \"heart\",\n \"unicode\": \"e639\",\n \"unicode_decimal\": 58937\n },\n {\n \"icon_id\": \"24839963\",\n \"name\": \"loop\",\n \"font_class\": \"loop\",\n \"unicode\": \"e633\",\n \"unicode_decimal\": 58931\n },\n {\n \"icon_id\": \"24839866\",\n \"name\": \"pulldown\",\n \"font_class\": \"pulldown\",\n \"unicode\": \"e632\",\n \"unicode_decimal\": 58930\n },\n {\n \"icon_id\": \"24813798\",\n \"name\": \"scan\",\n \"font_class\": \"scan\",\n \"unicode\": \"e62a\",\n \"unicode_decimal\": 58922\n },\n {\n \"icon_id\": \"24813786\",\n \"name\": \"bars\",\n \"font_class\": \"bars\",\n \"unicode\": \"e627\",\n \"unicode_decimal\": 58919\n },\n {\n \"icon_id\": \"24813788\",\n \"name\": \"cart-filled\",\n \"font_class\": \"cart-filled\",\n \"unicode\": \"e629\",\n \"unicode_decimal\": 58921\n },\n {\n \"icon_id\": \"24813790\",\n \"name\": \"checkbox\",\n \"font_class\": \"checkbox\",\n \"unicode\": \"e62b\",\n \"unicode_decimal\": 58923\n },\n {\n \"icon_id\": \"24813791\",\n \"name\": \"checkbox-filled\",\n \"font_class\": \"checkbox-filled\",\n \"unicode\": \"e62c\",\n \"unicode_decimal\": 58924\n },\n {\n \"icon_id\": \"24813794\",\n \"name\": \"shop\",\n \"font_class\": \"shop\",\n \"unicode\": \"e62f\",\n \"unicode_decimal\": 58927\n },\n {\n \"icon_id\": \"24813795\",\n \"name\": \"headphones\",\n \"font_class\": \"headphones\",\n \"unicode\": \"e630\",\n \"unicode_decimal\": 58928\n },\n {\n \"icon_id\": \"24813796\",\n \"name\": \"cart\",\n \"font_class\": \"cart\",\n \"unicode\": \"e631\",\n \"unicode_decimal\": 58929\n }\n ]\n}\n","const isArray = Array.isArray;\r\nconst isObject = (val) => val !== null && typeof val === 'object';\r\nconst defaultDelimiters = ['{', '}'];\r\nclass BaseFormatter {\r\n constructor() {\r\n this._caches = Object.create(null);\r\n }\r\n interpolate(message, values, delimiters = defaultDelimiters) {\r\n if (!values) {\r\n return [message];\r\n }\r\n let tokens = this._caches[message];\r\n if (!tokens) {\r\n tokens = parse(message, delimiters);\r\n this._caches[message] = tokens;\r\n }\r\n return compile(tokens, values);\r\n }\r\n}\r\nconst RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\r\nconst RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\r\nfunction parse(format, [startDelimiter, endDelimiter]) {\r\n const tokens = [];\r\n let position = 0;\r\n let text = '';\r\n while (position < format.length) {\r\n let char = format[position++];\r\n if (char === startDelimiter) {\r\n if (text) {\r\n tokens.push({ type: 'text', value: text });\r\n }\r\n text = '';\r\n let sub = '';\r\n char = format[position++];\r\n while (char !== undefined && char !== endDelimiter) {\r\n sub += char;\r\n char = format[position++];\r\n }\r\n const isClosed = char === endDelimiter;\r\n const type = RE_TOKEN_LIST_VALUE.test(sub)\r\n ? 'list'\r\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\r\n ? 'named'\r\n : 'unknown';\r\n tokens.push({ value: sub, type });\r\n }\r\n // else if (char === '%') {\r\n // // when found rails i18n syntax, skip text capture\r\n // if (format[position] !== '{') {\r\n // text += char\r\n // }\r\n // }\r\n else {\r\n text += char;\r\n }\r\n }\r\n text && tokens.push({ type: 'text', value: text });\r\n return tokens;\r\n}\r\nfunction compile(tokens, values) {\r\n const compiled = [];\r\n let index = 0;\r\n const mode = isArray(values)\r\n ? 'list'\r\n : isObject(values)\r\n ? 'named'\r\n : 'unknown';\r\n if (mode === 'unknown') {\r\n return compiled;\r\n }\r\n while (index < tokens.length) {\r\n const token = tokens[index];\r\n switch (token.type) {\r\n case 'text':\r\n compiled.push(token.value);\r\n break;\r\n case 'list':\r\n compiled.push(values[parseInt(token.value, 10)]);\r\n break;\r\n case 'named':\r\n if (mode === 'named') {\r\n compiled.push(values[token.value]);\r\n }\r\n else {\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);\r\n }\r\n }\r\n break;\r\n case 'unknown':\r\n if (process.env.NODE_ENV !== 'production') {\r\n console.warn(`Detect 'unknown' type of token!`);\r\n }\r\n break;\r\n }\r\n index++;\r\n }\r\n return compiled;\r\n}\r\n\r\nconst LOCALE_ZH_HANS = 'zh-Hans';\r\nconst LOCALE_ZH_HANT = 'zh-Hant';\r\nconst LOCALE_EN = 'en';\r\nconst LOCALE_FR = 'fr';\r\nconst LOCALE_ES = 'es';\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\r\nconst defaultFormatter = new BaseFormatter();\r\nfunction include(str, parts) {\r\n return !!parts.find((part) => str.indexOf(part) !== -1);\r\n}\r\nfunction startsWith(str, parts) {\r\n return parts.find((part) => str.indexOf(part) === 0);\r\n}\r\nfunction normalizeLocale(locale, messages) {\r\n if (!locale) {\r\n return;\r\n }\r\n locale = locale.trim().replace(/_/g, '-');\r\n if (messages && messages[locale]) {\r\n return locale;\r\n }\r\n locale = locale.toLowerCase();\r\n if (locale.indexOf('zh') === 0) {\r\n if (locale.indexOf('-hans') > -1) {\r\n return LOCALE_ZH_HANS;\r\n }\r\n if (locale.indexOf('-hant') > -1) {\r\n return LOCALE_ZH_HANT;\r\n }\r\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\r\n return LOCALE_ZH_HANT;\r\n }\r\n return LOCALE_ZH_HANS;\r\n }\r\n const lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);\r\n if (lang) {\r\n return lang;\r\n }\r\n}\r\nclass I18n {\r\n constructor({ locale, fallbackLocale, messages, watcher, formater, }) {\r\n this.locale = LOCALE_EN;\r\n this.fallbackLocale = LOCALE_EN;\r\n this.message = {};\r\n this.messages = {};\r\n this.watchers = [];\r\n if (fallbackLocale) {\r\n this.fallbackLocale = fallbackLocale;\r\n }\r\n this.formater = formater || defaultFormatter;\r\n this.messages = messages || {};\r\n this.setLocale(locale || LOCALE_EN);\r\n if (watcher) {\r\n this.watchLocale(watcher);\r\n }\r\n }\r\n setLocale(locale) {\r\n const oldLocale = this.locale;\r\n this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;\r\n if (!this.messages[this.locale]) {\r\n // 可能初始化时不存在\r\n this.messages[this.locale] = {};\r\n }\r\n this.message = this.messages[this.locale];\r\n // 仅发生变化时,通知\r\n if (oldLocale !== this.locale) {\r\n this.watchers.forEach((watcher) => {\r\n watcher(this.locale, oldLocale);\r\n });\r\n }\r\n }\r\n getLocale() {\r\n return this.locale;\r\n }\r\n watchLocale(fn) {\r\n const index = this.watchers.push(fn) - 1;\r\n return () => {\r\n this.watchers.splice(index, 1);\r\n };\r\n }\r\n add(locale, message, override = true) {\r\n const curMessages = this.messages[locale];\r\n if (curMessages) {\r\n if (override) {\r\n Object.assign(curMessages, message);\r\n }\r\n else {\r\n Object.keys(message).forEach((key) => {\r\n if (!hasOwn(curMessages, key)) {\r\n curMessages[key] = message[key];\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n this.messages[locale] = message;\r\n }\r\n }\r\n f(message, values, delimiters) {\r\n return this.formater.interpolate(message, values, delimiters).join('');\r\n }\r\n t(key, locale, values) {\r\n let message = this.message;\r\n if (typeof locale === 'string') {\r\n locale = normalizeLocale(locale, this.messages);\r\n locale && (message = this.messages[locale]);\r\n }\r\n else {\r\n values = locale;\r\n }\r\n if (!hasOwn(message, key)) {\r\n console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`);\r\n return key;\r\n }\r\n return this.formater.interpolate(message[key], values).join('');\r\n }\r\n}\r\n\r\nfunction watchAppLocale(appVm, i18n) {\r\n // 需要保证 watch 的触发在组件渲染之前\r\n if (appVm.$watchLocale) {\r\n // vue2\r\n appVm.$watchLocale((newLocale) => {\r\n i18n.setLocale(newLocale);\r\n });\r\n }\r\n else {\r\n appVm.$watch(() => appVm.$locale, (newLocale) => {\r\n i18n.setLocale(newLocale);\r\n });\r\n }\r\n}\r\nfunction getDefaultLocale() {\r\n if (typeof uni !== 'undefined' && uni.getLocale) {\r\n return uni.getLocale();\r\n }\r\n // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale\r\n if (typeof global !== 'undefined' && global.getLocale) {\r\n return global.getLocale();\r\n }\r\n return LOCALE_EN;\r\n}\r\nfunction initVueI18n(locale, messages = {}, fallbackLocale, watcher) {\r\n // 兼容旧版本入参\r\n if (typeof locale !== 'string') {\r\n [locale, messages] = [\r\n messages,\r\n locale,\r\n ];\r\n }\r\n if (typeof locale !== 'string') {\r\n // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined\r\n locale = getDefaultLocale();\r\n }\r\n if (typeof fallbackLocale !== 'string') {\r\n fallbackLocale =\r\n (typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale) ||\r\n LOCALE_EN;\r\n }\r\n const i18n = new I18n({\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n watcher,\r\n });\r\n let t = (key, values) => {\r\n if (typeof getApp !== 'function') {\r\n // app view\r\n /* eslint-disable no-func-assign */\r\n t = function (key, values) {\r\n return i18n.t(key, values);\r\n };\r\n }\r\n else {\r\n let isWatchedAppLocale = false;\r\n t = function (key, values) {\r\n const appVm = getApp().$vm;\r\n // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化\r\n // options: {\r\n // \ttype: Array,\r\n // \tdefault () {\r\n // \t\treturn [{\r\n // \t\t\ticon: 'shop',\r\n // \t\t\ttext: t(\"uni-goods-nav.options.shop\"),\r\n // \t\t}, {\r\n // \t\t\ticon: 'cart',\r\n // \t\t\ttext: t(\"uni-goods-nav.options.cart\")\r\n // \t\t}]\r\n // \t}\r\n // },\r\n if (appVm) {\r\n // 触发响应式\r\n appVm.$locale;\r\n if (!isWatchedAppLocale) {\r\n isWatchedAppLocale = true;\r\n watchAppLocale(appVm, i18n);\r\n }\r\n }\r\n return i18n.t(key, values);\r\n };\r\n }\r\n return t(key, values);\r\n };\r\n return {\r\n i18n,\r\n f(message, values, delimiters) {\r\n return i18n.f(message, values, delimiters);\r\n },\r\n t(key, values) {\r\n return t(key, values);\r\n },\r\n add(locale, message, override = true) {\r\n return i18n.add(locale, message, override);\r\n },\r\n watch(fn) {\r\n return i18n.watchLocale(fn);\r\n },\r\n getLocale() {\r\n return i18n.getLocale();\r\n },\r\n setLocale(newLocale) {\r\n return i18n.setLocale(newLocale);\r\n },\r\n };\r\n}\r\n\r\nconst isString = (val) => typeof val === 'string';\r\nlet formater;\r\nfunction hasI18nJson(jsonObj, delimiters) {\r\n if (!formater) {\r\n formater = new BaseFormatter();\r\n }\r\n return walkJsonObj(jsonObj, (jsonObj, key) => {\r\n const value = jsonObj[key];\r\n if (isString(value)) {\r\n if (isI18nStr(value, delimiters)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n return hasI18nJson(value, delimiters);\r\n }\r\n });\r\n}\r\nfunction parseI18nJson(jsonObj, values, delimiters) {\r\n if (!formater) {\r\n formater = new BaseFormatter();\r\n }\r\n walkJsonObj(jsonObj, (jsonObj, key) => {\r\n const value = jsonObj[key];\r\n if (isString(value)) {\r\n if (isI18nStr(value, delimiters)) {\r\n jsonObj[key] = compileStr(value, values, delimiters);\r\n }\r\n }\r\n else {\r\n parseI18nJson(value, values, delimiters);\r\n }\r\n });\r\n return jsonObj;\r\n}\r\nfunction compileI18nJsonStr(jsonStr, { locale, locales, delimiters, }) {\r\n if (!isI18nStr(jsonStr, delimiters)) {\r\n return jsonStr;\r\n }\r\n if (!formater) {\r\n formater = new BaseFormatter();\r\n }\r\n const localeValues = [];\r\n Object.keys(locales).forEach((name) => {\r\n if (name !== locale) {\r\n localeValues.push({\r\n locale: name,\r\n values: locales[name],\r\n });\r\n }\r\n });\r\n localeValues.unshift({ locale, values: locales[locale] });\r\n try {\r\n return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);\r\n }\r\n catch (e) { }\r\n return jsonStr;\r\n}\r\nfunction isI18nStr(value, delimiters) {\r\n return value.indexOf(delimiters[0]) > -1;\r\n}\r\nfunction compileStr(value, values, delimiters) {\r\n return formater.interpolate(value, values, delimiters).join('');\r\n}\r\nfunction compileValue(jsonObj, key, localeValues, delimiters) {\r\n const value = jsonObj[key];\r\n if (isString(value)) {\r\n // 存在国际化\r\n if (isI18nStr(value, delimiters)) {\r\n jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);\r\n if (localeValues.length > 1) {\r\n // 格式化国际化语言\r\n const valueLocales = (jsonObj[key + 'Locales'] = {});\r\n localeValues.forEach((localValue) => {\r\n valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);\r\n });\r\n }\r\n }\r\n }\r\n else {\r\n compileJsonObj(value, localeValues, delimiters);\r\n }\r\n}\r\nfunction compileJsonObj(jsonObj, localeValues, delimiters) {\r\n walkJsonObj(jsonObj, (jsonObj, key) => {\r\n compileValue(jsonObj, key, localeValues, delimiters);\r\n });\r\n return jsonObj;\r\n}\r\nfunction walkJsonObj(jsonObj, walk) {\r\n if (isArray(jsonObj)) {\r\n for (let i = 0; i < jsonObj.length; i++) {\r\n if (walk(jsonObj, i)) {\r\n return true;\r\n }\r\n }\r\n }\r\n else if (isObject(jsonObj)) {\r\n for (const key in jsonObj) {\r\n if (walk(jsonObj, key)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction resolveLocale(locales) {\r\n return (locale) => {\r\n if (!locale) {\r\n return locale;\r\n }\r\n locale = normalizeLocale(locale) || locale;\r\n return resolveLocaleChain(locale).find((locale) => locales.indexOf(locale) > -1);\r\n };\r\n}\r\nfunction resolveLocaleChain(locale) {\r\n const chain = [];\r\n const tokens = locale.split('-');\r\n while (tokens.length) {\r\n chain.push(tokens.join('-'));\r\n tokens.pop();\r\n }\r\n return chain;\r\n}\r\n\r\nexport { BaseFormatter as Formatter, I18n, LOCALE_EN, LOCALE_ES, LOCALE_FR, LOCALE_ZH_HANS, LOCALE_ZH_HANT, compileI18nJsonStr, hasI18nJson, initVueI18n, isI18nStr, isString, normalizeLocale, parseI18nJson, resolveLocale };\r\n","module.exports = \"/static/login/banner.jpg\";","module.exports = \"/static/login/title.png\";","/*!\n * Vue.js v2.6.11\n * (c) 2014-2022 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n if (vm.$options && vm.$options.__file) { // fixed by xxxxxx\n return ('') + vm.$options.__file\n }\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm && vm.$options.name !== 'PageBody') {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n !vm.$options.isReserved && tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.SharedObject.target) {\n Dep.SharedObject.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n// fixed by xxxxxx (nvue shared vuex)\n/* eslint-disable no-undef */\nDep.SharedObject = {};\nDep.SharedObject.target = null;\nDep.SharedObject.targetStack = [];\n\nfunction pushTarget (target) {\n Dep.SharedObject.targetStack.push(target);\n Dep.SharedObject.target = target;\n Dep.target = target;\n}\n\nfunction popTarget () {\n Dep.SharedObject.targetStack.pop();\n Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];\n Dep.target = Dep.SharedObject.target;\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n {// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑\n if(value.push !== value.__proto__.push){\n copyAugment(value, arrayMethods, arrayKeys);\n } else {\n protoAugment(value, arrayMethods);\n }\n }\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.SharedObject.target) { // fixed by xxxxxx\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\n/* */\n\n// fixed by xxxxxx (mp properties)\nfunction extractPropertiesFromVNodeData(data, Ctor, res, context) {\n var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;\n if (isUndef(propOptions)) {\n return res\n }\n var externalClasses = Ctor.options.mpOptions.externalClasses || [];\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n var result = checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n // externalClass\n if (\n result &&\n res[key] &&\n externalClasses.indexOf(altKey) !== -1 &&\n context[camelize(res[key])]\n ) {\n // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)\n res[key] = context[camelize(res[key])];\n }\n }\n }\n return res\n}\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag,\n context// fixed by xxxxxx\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, {}, context)\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, res, context)\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.