{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/store/index.ts","webpack:///./src/common/element-val.ts","webpack:///./src/components/DateText.vue?baed","webpack:///./src/components/DateText.vue","webpack:///./src/components/DateText.vue?917a","webpack:///./src/components/DateText.vue?9a85","webpack:///./src/App.vue?dfc8","webpack:///./src/App.vue","webpack:///./src/registerServiceWorker.ts","webpack:///./src/router/index.ts","webpack:///./src/assets/element-ui-en.ts","webpack:///./src/components/NumberText.vue?34f4","webpack:///./src/components/NumberText.vue","webpack:///./src/components/NumberText.vue?fe13","webpack:///./src/components/NumberText.vue?4c6c","webpack:///./src/components/StockName.vue?50d1","webpack:///./src/components/StockName.vue","webpack:///./src/components/StockName.vue?98d9","webpack:///./src/components/StockName.vue?b947","webpack:///./src/main.ts","webpack:///./src/common/utility.ts","webpack:///./src/services/config.ts","webpack:///./src/services/serviceBase.ts","webpack:///./src/services/authService.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","use","user","userStr","sessionStorage","getItem","lang","JSON","parse","email","jwt","accNo","Store","state","notificationCount","agent","mutations","setUser","setItem","stringify","removeItem","setAgent","setNotificationCount","setLang","actions","$t","required","req","this","rule","callback","toString","trim","intRequired","invalid","gt0","parseInt","test","intNumber","numReq","isNaN","number","parseFloat","numberRequired","requiredRule","trigger","validator","requiredEmailRule","requiredIntRule","expRule","exp","msg","regExp","requiredNumberRule","RegExp","pattern","compare","pwdNotMatch","targetFun","fun","requireAll","obj","fields","index","render","_vm","_h","$createElement","_c","_self","_v","_s","date","getMonth","getDate","getFullYear","getTime","dateStr","staticRenderFns","utility","parseTime","h","getHours","getMinutes","padStart","component","attrs","ready","log","registered","cached","updatefound","updated","offline","routes","path","meta","children","router","base","beforeEach","to","from","next","toLowerCase","localStorage","checkLogin","store","checkLoginAsync","res","Result","userString","decodeURIComponent","escape","atob","split","userData","LoginId","Name","uid","UId","AccNo","commit","el","colorpicker","confirm","clear","datepicker","now","today","cancel","selectDate","selectTime","startDate","startTime","endDate","endTime","prevYear","nextYear","prevMonth","nextMonth","year","month1","month2","month3","month4","month5","month6","month7","month8","month9","month10","month11","month12","week","weeks","sun","mon","tue","wed","thu","fri","sat","months","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","select","loading","noMatch","noData","placeholder","cascader","pagination","goto","pagesize","total","pageClassifier","messagebox","title","upload","deleteTip","delete","preview","continue","table","emptyText","confirmFilter","resetFilter","clearFilter","sumText","tree","transfer","titles","filterPlaceholder","noCheckedFormat","hasCheckedFormat","image","pageHeader","popconfirm","confirmButtonText","cancelButtonText","class","numberValue","$num","Math","abs","num","digits","toLocaleString","maximumFractionDigits","minimumFractionDigits","default","currency","stkName","location","protocol","startsWith","hostname","replace","registerHooks","config","productionTip","defaults","baseURL","VUE_APP_BASE_URL","interceptors","headers","Authorization","response","status","emptyUser","locale","i18n","messages","en","zh","DateText","App","$mount","getBase64","file","reader","FileReader","fileResult","readAsDataURL","onloadend","freezeArrayItems","arr","freeze","freezeArrayAndItems","removeArrayItem","item","findIndex","getUUID","len","radix","chars","uuid","random","join","getUUInt","getByKey","keys","first","copyArray","newArr","parseDate","a","indexOf","substring","Date","splitDate","dateArr","timeArr","substr","download","blob","Blob","fileName","url","URL","createObjectURL","link","style","display","body","click","revokeObjectURL","navigator","msSaveBlob","sortArr","sort","b","sortByFiled","direction","filedSelector","left","right","v","getSymbolDisplay","symbolName","iSameSymbol","displayName","parseSymbols","symbols","map","getDistinct","items","temp","Set","add","host","tryPostResult","reqConfig","post","tryPostBooleanResult","tryUploadResult","formData","FormData","append","tryDownload","responseType","includes","errorJson","readAsText","loginAsync","Source","changePwdAsync","getIpRestrictionsAsync","setIpRestrictionAsync","getSecurityQuestionsAsync","acc","UserAcc","setSecurityQuestionsAsync"],"mappings":"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","file":"app.1e3622a6004885ff31d4.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-06ab6c45\":1,\"chunk-0b5f60bc\":1,\"chunk-3582871b\":1,\"chunk-4b11d75f\":1,\"chunk-2a2cce3a\":1,\"chunk-7ec78664\":1,\"chunk-cbac8f04\":1,\"chunk-76e8a074\":1,\"chunk-25244e83\":1,\"chunk-975f093e\":1,\"chunk-c3ca2bde\":1,\"chunk-d51ea28e\":1,\"chunk-ef57d3d0\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport { User } from '@/services/data'\r\n\r\nVue.use(Vuex)\r\n\r\nlet user: User = null\r\nconst userStr = sessionStorage.getItem('user')\r\nconst lang: string = sessionStorage.getItem('lang') || 'en'\r\nif (userStr) {\r\n try {\r\n user = JSON.parse(userStr)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n} else {\r\n user = {\r\n email: null,\r\n jwt: null,\r\n accNo: null,\r\n name: null\r\n }\r\n}\r\n\r\nexport default new Vuex.Store({\r\n state: {\r\n user,\r\n lang: lang,\r\n notificationCount: null,\r\n agent: {}\r\n },\r\n mutations: {\r\n setUser (state, user) {\r\n state.user = user\r\n if (!user) {\r\n sessionStorage.removeItem('user')\r\n return\r\n }\r\n sessionStorage.setItem('user', JSON.stringify(user))\r\n },\r\n setAgent (state, agent) {\r\n state.agent = agent\r\n },\r\n setNotificationCount (state, value) {\r\n state.notificationCount = value\r\n },\r\n setLang (state, value) {\r\n state.lang = value\r\n }\r\n },\r\n actions: {},\r\n modules: {}\r\n})\r\n","type ErrorCallback = (error?: Error) => void\r\ntype ValidationCallback = (rule: object, value: string, callback: ErrorCallback) => void\r\nexport type Ruler = Array<{ trigger: string; validator: ValidationCallback | Array }>\r\n\r\nexport default {\r\n $t: function (key: string): string {\r\n return key\r\n },\r\n required (): ValidationCallback {\r\n const req = this.$t('val.required')\r\n return (rule, value: string, callback) => {\r\n if (value == null || value.toString().trim() === '') {\r\n callback(new Error(req))\r\n } else {\r\n callback()\r\n }\r\n }\r\n },\r\n intRequired (): ValidationCallback {\r\n const invalid = this.$t('val.intNumReq')\r\n const gt0 = this.$t('val.required')\r\n return (rule, value, callback) => {\r\n if (value == null || value.toString().trim() === '') {\r\n callback(new Error(invalid))\r\n } else if (parseInt(value) <= 0) {\r\n callback(new Error(gt0))\r\n } else if (!/^[1-9]\\d*$/.test(value)) {\r\n callback(new Error(invalid))\r\n } else {\r\n callback()\r\n }\r\n }\r\n },\r\n intNumber (): ValidationCallback {\r\n const numReq = this.$t('val.numReq')\r\n return (rule, value, callback) => {\r\n if (isNaN(parseInt(value)) || !/^[-]?\\d+$/.test(value)) {\r\n callback(new Error(numReq))\r\n } else {\r\n callback()\r\n }\r\n }\r\n },\r\n number (): ValidationCallback {\r\n const invalid = this.$t('val.numReq')\r\n const gt0 = this.$t('val.gt0')\r\n return (rule, value, callback) => {\r\n if (value && isNaN(parseFloat(value))) {\r\n callback(new Error(invalid))\r\n } else if (value && parseFloat(value) < 0) {\r\n callback(new Error(gt0))\r\n } else {\r\n callback()\r\n }\r\n }\r\n },\r\n numberRequired (): ValidationCallback {\r\n const req = this.$t('val.required')\r\n const invalid = this.$t('val.numReq')\r\n const gt0 = this.$t('val.gt0')\r\n return (rule, value, callback) => {\r\n if (value == null || value.toString().trim() === '') {\r\n callback(new Error(req))\r\n } else if (isNaN(parseFloat(value))) {\r\n callback(new Error(invalid))\r\n } else if (parseFloat(value) < 0) {\r\n callback(new Error(gt0))\r\n } else {\r\n callback()\r\n }\r\n }\r\n },\r\n requiredRule (trigger = 'blur'): Ruler {\r\n return [{\r\n validator: this.required(),\r\n trigger: trigger\r\n }]\r\n },\r\n requiredEmailRule (trigger = 'blur'): Ruler {\r\n return [{\r\n validator: this.required(),\r\n trigger: trigger\r\n }, {\r\n validator: this.email(),\r\n trigger: trigger\r\n }]\r\n },\r\n requiredIntRule (trigger = 'blur'): Ruler {\r\n return [{\r\n validator: this.intRequired(),\r\n trigger: trigger\r\n }]\r\n },\r\n expRule (req: boolean, exp: string, msg: string, trigger = 'blur'): Ruler {\r\n if (req) {\r\n return [{\r\n validator: this.required(),\r\n trigger: trigger\r\n }, {\r\n validator: this.regExp(exp, msg),\r\n trigger: trigger\r\n }]\r\n } else {\r\n return [{\r\n validator: this.regExp(exp, msg),\r\n trigger: trigger\r\n }]\r\n }\r\n },\r\n requiredNumberRule (trigger = 'blur'): Ruler {\r\n return [{\r\n validator: this.numberRequired(),\r\n trigger: trigger\r\n }]\r\n },\r\n email (): ValidationCallback {\r\n const req = this.$t('val.invalidEmail')\r\n return (rule, value, callback) => {\r\n if (!new RegExp('(\\\\w+([-+.]\\\\w+)*@\\\\w+([-.]\\\\w+)*\\\\.\\\\w+([-.]\\\\w+)*)').test(value)) {\r\n callback(new Error(req))\r\n } else {\r\n callback()\r\n }\r\n }\r\n },\r\n regExp (pattern: string, msg?: string): ValidationCallback {\r\n const req = msg || this.$t('val.invalidFormat')\r\n return (rule, value, callback) => {\r\n if (!new RegExp(pattern).test(value)) {\r\n callback(new Error(req))\r\n } else {\r\n callback()\r\n }\r\n }\r\n },\r\n compare (): ((p: () => string) => ValidationCallback) {\r\n const pwdNotMatch = this.$t('val.pwdNotMatch')\r\n return (targetFun: () => string): ValidationCallback => {\r\n return (rule, value, callback) => {\r\n if (!targetFun() && !value) {\r\n callback()\r\n return\r\n }\r\n if (value !== targetFun()) {\r\n callback(new Error(pwdNotMatch))\r\n } else {\r\n callback()\r\n }\r\n }\r\n }\r\n },\r\n fun (): ((p: () => boolean, msg: string) => ValidationCallback) {\r\n const req = this.$t('val.required')\r\n return (targetFun: () => boolean, msg: string): ValidationCallback => {\r\n msg = msg || req\r\n return (rule, value, callback) => {\r\n if (!targetFun()) {\r\n callback(new Error(msg))\r\n } else {\r\n callback()\r\n }\r\n }\r\n }\r\n },\r\n requireAll (...fields: Array) {\r\n const obj = {} as any\r\n for (const index in fields) {\r\n obj[fields[index]] = this.requiredRule()\r\n }\r\n return obj\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.date)?_c('span',[_vm._v(_vm._s(((_vm.date.getMonth() + 1) + \"/\" + (_vm.date.getDate()) + \"/\" + (_vm.date.getFullYear() - 2000) + \" \" + (_vm.getTime()))))]):_c('span',[_vm._v(_vm._s(_vm.dateStr))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\nimport utility from '@/common/utility'\r\n\r\n@Component\r\nexport default class DateText extends Vue {\r\n name = 'DateText'\r\n date: Date = null\r\n @Prop() dateStr: string\r\n\r\n mounted () {\r\n if (this.dateStr) {\r\n this.date = utility.parseTime(this.dateStr)\r\n }\r\n }\r\n\r\n getTime () {\r\n const h = this.date.getHours()\r\n const m = this.date.getMinutes().toString().padStart(2, '0')\r\n if (h === 0) return `$12:${m}AM`\r\n if (h < 12) return `${h}:${m}AM`\r\n return `${h - 12}:${m}PM`\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DateText.vue?vue&type=template&id=33d0ad8e&\"\nimport script from \"./DateText.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateText.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=8402a5c6&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable no-console */\r\n\r\nimport { register } from 'register-service-worker'\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n register(`${process.env.BASE_URL}service-worker.js`, {\r\n ready () {\r\n console.log(\r\n 'App is being served from cache by a service worker.\\n' +\r\n 'For more details, visit https://goo.gl/AFskqB'\r\n )\r\n },\r\n registered () {\r\n console.log('Service worker has been registered.')\r\n },\r\n cached () {\r\n console.log('Content has been cached for offline use.')\r\n },\r\n updatefound () {\r\n console.log('New content is downloading.')\r\n },\r\n updated () {\r\n console.log('New content is available; please refresh.')\r\n },\r\n offline () {\r\n console.log('No internet connection found. App is running in offline mode.')\r\n },\r\n error (error) {\r\n console.error('Error during service worker registration:', error)\r\n }\r\n })\r\n}\r\n","import Vue from 'vue'\r\nimport VueRouter, { RouteConfig } from 'vue-router'\r\nimport store from '../store/index'\r\nimport auth from '@/services/authService'\r\nimport { User } from '@/services/data'\r\n\r\nVue.use(VueRouter)\r\n\r\nconst routes: Array = [\r\n {\r\n path: '/',\r\n name: 'index',\r\n component: () => import('../views/Index.vue')\r\n },\r\n {\r\n path: '/coin',\r\n name: 'coin',\r\n meta: 'anonymous',\r\n component: () => import('../views/Layouts/Empty.vue'),\r\n children: [\r\n {\r\n path: 'dual-investment',\r\n name: 'dual-investment',\r\n meta: 'anonymous',\r\n component: () => import('../views/Coin/DualInvestment.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: '/home',\r\n name: 'home',\r\n component: () => import('../views/Home.vue'),\r\n children: [\r\n {\r\n path: 'status',\r\n name: 'status',\r\n component: () => import('../views/Home/Status.vue')\r\n },\r\n {\r\n path: 'portfolio',\r\n name: 'portfolio',\r\n component: () => import('../views/Home/Portfolio.vue')\r\n },\r\n {\r\n path: 'watchlist',\r\n name: 'watchlist',\r\n component: () => import('../views/Home/Watchlist.vue')\r\n },\r\n {\r\n path: 'options',\r\n name: 'options',\r\n component: () => import('../views/Home/Options.vue')\r\n },\r\n {\r\n path: 'transactions',\r\n name: 'transactions',\r\n component: () => import('../views/Home/Transactions.vue')\r\n },\r\n {\r\n path: 'alerts',\r\n name: 'alerts',\r\n component: () => import('../views/Home/Alerts.vue')\r\n },\r\n {\r\n path: 'news',\r\n name: 'news',\r\n component: () => import('../views/Home/News.vue')\r\n },\r\n {\r\n path: 'chart',\r\n name: 'chart',\r\n component: () => import('../views/Home/Chart.vue')\r\n },\r\n {\r\n path: 'todo',\r\n name: 'todo',\r\n component: () => import('../views/Home/ToDo.vue')\r\n },\r\n {\r\n path: 'historical-data',\r\n name: 'historicalData',\r\n component: () => import('../views/Historical/List.vue')\r\n },\r\n {\r\n path: 'optCheck',\r\n name: 'optCheck',\r\n component: () => import('../views/Home/PutCallCheckList.vue')\r\n },\r\n {\r\n path: 'markets',\r\n name: 'markets',\r\n component: () => import('../views/Home/Markets.vue')\r\n },\r\n {\r\n path: 'Report',\r\n name: 'Report',\r\n component: () => import('../views/Report/Reports.vue'),\r\n children: [\r\n {\r\n path: 'stock-pl',\r\n name: 'stockPL',\r\n component: () => import('../views/Report/StockPL.vue')\r\n },\r\n {\r\n path: 'portfolio-debug',\r\n name: 'portfolioDebug',\r\n component: () => import('../views/Report/PortfolioReturn.vue')\r\n },\r\n {\r\n path: 'portfolio-return',\r\n name: 'portfolioReturn',\r\n component: () => import('../views/Report/PortfolioReturnChart.vue')\r\n },\r\n {\r\n path: 'stock-trades',\r\n name: 'stock-trades',\r\n component: () => import('../views/Report/StockTrades.vue')\r\n },\r\n {\r\n path: 'option-trades',\r\n name: 'option-trades',\r\n component: () => import('../views/Report/OptionTrades.vue')\r\n },\r\n {\r\n path: 'dividends',\r\n name: 'dividends',\r\n component: () => import('../views/Report/Dividends.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: 'analysis',\r\n name: 'analysis',\r\n component: () => import('../views/Analysis/Index.vue')\r\n },\r\n {\r\n path: 'settings',\r\n name: 'settings',\r\n component: () => import('../views/Settings/Index.vue'),\r\n children: [\r\n {\r\n path: 'mail',\r\n name: 'mail',\r\n component: () => import('../views/Settings/Mail.vue')\r\n },\r\n {\r\n path: 'user',\r\n name: 'user',\r\n component: () => import('../views/Settings/UserSettings.vue')\r\n },\r\n {\r\n path: 'trading',\r\n name: 'trading',\r\n component: () => import('../views/Settings/Trading.vue')\r\n },\r\n {\r\n path: 'app',\r\n name: 'app',\r\n component: () => import('../views/Settings/App.vue')\r\n },\r\n {\r\n path: 'account',\r\n name: 'account',\r\n component: () => import('../views/Settings/Account.vue')\r\n },\r\n {\r\n path: 'notifications',\r\n name: 'notifications',\r\n component: () => import('../views/Settings/Notifications.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: 'freebieDetector',\r\n name: 'freebieDetector',\r\n component: () => import('../views/FreebieDetector/Index.vue'),\r\n children: [\r\n {\r\n path: 'list',\r\n name: 'list',\r\n component: () => import('../views/FreebieDetector/List.vue')\r\n },\r\n {\r\n path: 'log',\r\n name: 'log',\r\n component: () => import('../views/FreebieDetector/Log.vue')\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n path: '/notfound',\r\n name: 'notfound',\r\n meta: 'anonymous',\r\n component: () => import('../views/Page404.vue')\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n meta: 'anonymous',\r\n component: () => import('../views/Login/Login.vue')\r\n },\r\n {\r\n path: '/forgotPwd',\r\n name: 'forgotPwd',\r\n meta: 'anonymous',\r\n component: () => import('../views/Login/ForgotPwd.vue')\r\n }\r\n]\r\n\r\nconst router = new VueRouter({\r\n mode: 'hash',\r\n base: process.env.BASE_URL,\r\n routes\r\n})\r\n\r\nrouter.beforeEach(async (to, from, next) => {\r\n if (to.name == null) {\r\n next({ path: '/notfound' })\r\n return\r\n }\r\n const name = to.name.toLowerCase()\r\n if (name === 'notfound' || to.meta === 'anonymous') {\r\n next()\r\n return\r\n }\r\n if (name === 'login' && !localStorage.getItem('jwt')) {\r\n next()\r\n return\r\n }\r\n const checkLogin = (name === 'index' || name === 'login')\r\n if (!store.state.user || !store.state.user.jwt || checkLogin) {\r\n const jwt = localStorage.getItem('jwt')\r\n if (jwt) {\r\n const res = await auth.checkLoginAsync(jwt)\r\n if (res.Result === true) {\r\n const userString = decodeURIComponent(escape(window.atob(jwt.split('.')[1])))\r\n const user = JSON.parse(userString)\r\n const userData: User = {\r\n email: user.LoginId,\r\n name: user.Name,\r\n uid: user.UId,\r\n accNo: user.AccNo,\r\n jwt: jwt\r\n }\r\n store.commit('setUser', userData)\r\n if (checkLogin) {\r\n next({ path: '/home/portfolio' })\r\n return\r\n }\r\n next()\r\n } else { // failure login\r\n localStorage.removeItem('jwt')\r\n next({ path: '/login' })\r\n }\r\n } else {\r\n localStorage.removeItem('jwt')\r\n next({ path: '/login' })\r\n }\r\n } else {\r\n next()\r\n }\r\n})\r\n\r\nexport default router\r\n","export default {\r\n el: {\r\n colorpicker: {\r\n confirm: 'OK',\r\n clear: 'Clear'\r\n },\r\n datepicker: {\r\n now: 'Now',\r\n today: 'Today',\r\n cancel: 'Cancel',\r\n clear: 'Clear',\r\n confirm: 'OK',\r\n selectDate: 'Select date',\r\n selectTime: 'Select time',\r\n startDate: 'Start Date',\r\n startTime: 'Start Time',\r\n endDate: 'End Date',\r\n endTime: 'End Time',\r\n prevYear: 'Previous Year',\r\n nextYear: 'Next Year',\r\n prevMonth: 'Previous Month',\r\n nextMonth: 'Next Month',\r\n year: '',\r\n month1: 'January',\r\n month2: 'February',\r\n month3: 'March',\r\n month4: 'April',\r\n month5: 'May',\r\n month6: 'June',\r\n month7: 'July',\r\n month8: 'August',\r\n month9: 'September',\r\n month10: 'October',\r\n month11: 'November',\r\n month12: 'December',\r\n week: 'week',\r\n weeks: {\r\n sun: 'Sun',\r\n mon: 'Mon',\r\n tue: 'Tue',\r\n wed: 'Wed',\r\n thu: 'Thu',\r\n fri: 'Fri',\r\n sat: 'Sat'\r\n },\r\n months: {\r\n jan: 'Jan',\r\n feb: 'Feb',\r\n mar: 'Mar',\r\n apr: 'Apr',\r\n may: 'May',\r\n jun: 'Jun',\r\n jul: 'Jul',\r\n aug: 'Aug',\r\n sep: 'Sep',\r\n oct: 'Oct',\r\n nov: 'Nov',\r\n dec: 'Dec'\r\n }\r\n },\r\n select: {\r\n loading: 'Loading',\r\n noMatch: 'No matching data',\r\n noData: 'No data',\r\n placeholder: 'Select'\r\n },\r\n cascader: {\r\n noMatch: 'No matching data',\r\n loading: 'Loading',\r\n placeholder: 'Select',\r\n noData: 'No data'\r\n },\r\n pagination: {\r\n goto: 'Go to',\r\n pagesize: '/page',\r\n total: 'Total {total}',\r\n pageClassifier: ''\r\n },\r\n messagebox: {\r\n title: 'Message',\r\n confirm: 'OK',\r\n cancel: 'Cancel',\r\n error: 'Illegal input'\r\n },\r\n upload: {\r\n deleteTip: 'press delete to remove',\r\n delete: 'Delete',\r\n preview: 'Preview',\r\n continue: 'Continue'\r\n },\r\n table: {\r\n emptyText: 'No Data',\r\n confirmFilter: 'Confirm',\r\n resetFilter: 'Reset',\r\n clearFilter: 'All',\r\n sumText: 'Sum'\r\n },\r\n tree: {\r\n emptyText: 'No Data'\r\n },\r\n transfer: {\r\n noMatch: 'No matching data',\r\n noData: 'No data',\r\n titles: ['List 1', 'List 2'], // to be translated\r\n filterPlaceholder: 'Enter keyword', // to be translated\r\n noCheckedFormat: '{total} items', // to be translated\r\n hasCheckedFormat: '{checked}/{total} checked' // to be translated\r\n },\r\n image: {\r\n error: 'FAILED'\r\n },\r\n pageHeader: {\r\n title: 'Back' // to be translated\r\n },\r\n popconfirm: {\r\n confirmButtonText: 'Yes',\r\n cancelButtonText: 'No'\r\n }\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.numberValue < 0 ? 'text-danger' : ''},[(_vm.isInteger)?_c('span',[_vm._v(\" \"+_vm._s(_vm.numberValue >= 0 ? _vm.$num(_vm.numberValue,0) : '(' + _vm.$num(Math.abs(_vm.numberValue),0) + ')')+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.numberValue >= 0 ? _vm.$num(_vm.numberValue) : '(' + _vm.$num(Math.abs(_vm.numberValue)) + ')')+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\n\r\n@Component\r\nexport default class NumberText extends Vue {\r\n name = 'NumberText'\r\n @Prop() numberValue: number\r\n @Prop({ default: false }) isInteger: boolean\r\n\r\n $num (num: number, digits = 2): string {\r\n if (num != null && num !== undefined) {\r\n return num.toLocaleString('en-US', { maximumFractionDigits: 2, minimumFractionDigits: digits })\r\n }\r\n return null\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NumberText.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NumberText.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NumberText.vue?vue&type=template&id=5a1aec40&\"\nimport script from \"./NumberText.vue?vue&type=script&lang=ts&\"\nexport * from \"./NumberText.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[( _vm.currency === 'HKD' )?_c('span',[_vm._v(\"HKG:\"+_vm._s(_vm.stkName.padStart(4, '0')))]):_c('span',[_vm._v(_vm._s(_vm.stkName))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\n\r\n@Component\r\nexport default class StockName extends Vue {\r\n name = 'StockName'\r\n @Prop() stkName: string\r\n @Prop() currency: string\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StockName.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StockName.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StockName.vue?vue&type=template&id=04036590&\"\nimport script from \"./StockName.vue?vue&type=script&lang=ts&\"\nexport * from \"./StockName.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport Component from 'vue-class-component'\r\nimport App from './App.vue'\r\nimport './registerServiceWorker'\r\nimport router from './router'\r\nimport store from './store'\r\nimport validation from './common/element-val'\r\nimport ElementUI from 'element-ui'\r\nimport 'element-ui/lib/theme-chalk/index.css'\r\nimport 'element-ui/lib/theme-chalk/display.css'\r\nimport locale from './assets/element-ui-en'\r\nimport Axios from 'axios'\r\nimport VueI18n from 'vue-i18n'\r\nimport './assets/css/common.scss'\r\nimport { User } from '@/services/data'\r\nimport NumberText from '@/components/NumberText.vue'\r\nimport StockName from '@/components/StockName.vue'\r\nimport DateText from '@/components/DateText.vue'\r\n\r\nif (window.location.protocol.startsWith('http:') && window.location.hostname !== 'localhost') {\r\n location.href = location.href.replace('http:', 'https:')\r\n}\r\n\r\n// 注册钩子函数\r\nComponent.registerHooks([\r\n 'beforeRouteEnter',\r\n 'beforeRouteLeave',\r\n 'beforeRouteUpdate'\r\n])\r\n\r\nVue.config.productionTip = false\r\nAxios.defaults.baseURL = process.env.VUE_APP_BASE_URL\r\nAxios.interceptors.request.use(config => {\r\n // show loading\r\n const userData: User = store.state.user\r\n if (userData && userData.jwt) {\r\n config.headers.Authorization = 'bearer ' + userData.jwt\r\n }\r\n return config\r\n})\r\n// 响应拦截器\r\nAxios.interceptors.response.use((response) => {\r\n return response\r\n}, (error) => {\r\n if (error.response && error.response.status === 401) {\r\n const emptyUser: User = {\r\n email: null,\r\n jwt: null,\r\n accNo: null,\r\n name: null\r\n }\r\n store.commit('setUser', emptyUser)\r\n }\r\n return Promise.reject(error)\r\n})\r\nVue.use(ElementUI, { locale })\r\nVue.config.productionTip = false\r\nVue.use(VueI18n)\r\nconst i18n = new VueI18n({\r\n locale: store.state.lang,\r\n messages: {\r\n en: require('./locales/en.json'),\r\n zh: require('./locales/zh.json')\r\n }\r\n})\r\n\r\nVue.component('number-text', NumberText)\r\nVue.component('stock-name', StockName)\r\nVue.component('date-text', DateText)\r\n\r\nvalidation.$t = function (key: string) {\r\n return i18n.t(key) as string\r\n}\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n i18n,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n","export default {\r\n getBase64 (file: Blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n let fileResult: string | ArrayBuffer = null\r\n reader.readAsDataURL(file)\r\n reader.onload = function () {\r\n fileResult = reader.result\r\n }\r\n reader.onerror = function (error) {\r\n reject(error)\r\n }\r\n reader.onloadend = function () {\r\n resolve(fileResult)\r\n }\r\n })\r\n },\r\n freezeArrayItems (arr: Array) {\r\n for (let i = 0; i < arr.length; i++) {\r\n Object.freeze(arr[i])\r\n }\r\n return arr\r\n },\r\n freezeArrayAndItems (arr: Array) {\r\n Object.freeze(arr)\r\n this.freezeArrayItems(arr)\r\n return arr\r\n },\r\n removeArrayItem (arr: Array, item: any) {\r\n const index = arr.findIndex(p => p === item)\r\n if (index >= 0) {\r\n arr.splice(index, 1)\r\n }\r\n },\r\n getUUID (len: number, radix: number): string {\r\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')\r\n const uuid = []\r\n radix = radix || chars.length\r\n if (len) {\r\n for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]\r\n } else {\r\n uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'\r\n uuid[14] = '4'\r\n for (let i = 0; i < 36; i++) {\r\n if (!uuid[i]) {\r\n const r = 0 | Math.random() * 16\r\n uuid[i] = chars[(i === 19) ? (r & 0x3) | 0x8 : r]\r\n }\r\n }\r\n }\r\n return uuid.join('')\r\n },\r\n getUUInt () {\r\n return parseInt(this.getUUID(6, 10))\r\n },\r\n getByKey (item: Record, key: string) {\r\n const keys = key.split('.')\r\n if (keys.length === 1) {\r\n return item[key]\r\n }\r\n let first: string = keys.shift()\r\n let target: any = item[first]\r\n while (first != null) {\r\n first = keys.shift()\r\n if (first != null) {\r\n target = target[first]\r\n }\r\n }\r\n return target\r\n },\r\n copyArray (keys: T[]) {\r\n const newArr: T[] = []\r\n for (let i = 0; i < keys.length; i++) {\r\n newArr.push(keys[i])\r\n }\r\n return newArr\r\n },\r\n parseDate (a: string): Date {\r\n if (a) {\r\n const index = a.indexOf(' ')\r\n if (index > 0) {\r\n a = a.substring(0, index)\r\n }\r\n const arr = a.split('/')\r\n return new Date(parseInt(arr[2]) + 2000, parseInt(arr[0]) - 1, parseInt(arr[1]))\r\n }\r\n return null\r\n },\r\n splitDate (a: string): string {\r\n if (a) {\r\n const index = a.indexOf(' ')\r\n if (index > 0) {\r\n a = a.substring(0, index)\r\n }\r\n }\r\n return a\r\n },\r\n parseTime (a: string): Date {\r\n if (a) {\r\n const index = a.indexOf(' ')\r\n let dateArr: string[] = null\r\n let timeArr: string[] = null\r\n if (index > 0) {\r\n dateArr = a.substring(0, index).split('/')\r\n timeArr = a.substr(index + 1).split(':')\r\n if (dateArr.length === 3 && timeArr.length === 3) {\r\n return new Date(parseInt(dateArr[2]) + 2000, parseInt(dateArr[0]) - 1, parseInt(dateArr[1]), parseInt(timeArr[0]), parseInt(timeArr[1]), parseInt(timeArr[2]))\r\n }\r\n }\r\n }\r\n return null\r\n },\r\n download (name: string, data: BlobPart, type?: string) {\r\n if (!type) {\r\n type = 'text/csv;charset=utf-8;'\r\n }\r\n const blob = new Blob([data], { type: type })\r\n const fileName = name\r\n if ('download' in document.createElement('a')) { // 不是IE浏览器\r\n const url = window.URL.createObjectURL(blob)\r\n const link = document.createElement('a')\r\n link.style.display = 'none'\r\n link.href = url\r\n link.setAttribute('download', fileName)\r\n document.body.appendChild(link)\r\n link.click()\r\n document.body.removeChild(link)// 下载完成移除元素\r\n window.URL.revokeObjectURL(url) // 释放掉blob对象\r\n } else { // IE 10+\r\n window.navigator.msSaveBlob(blob, fileName)\r\n }\r\n },\r\n sortArr (arr: any[]) {\r\n const sort = (a: any, b: any): number => {\r\n if (a === b) return 0\r\n return a > b ? 1 : -1\r\n }\r\n arr.sort(sort)\r\n },\r\n sortByFiled (arr: T[], direction: 'Asc' | 'Desc', filedSelector: (item: T) => any) {\r\n const sort = (left: T, right: T): number => {\r\n const v = direction === 'Asc' ? 1 : -1\r\n if (filedSelector(left) === filedSelector(right)) return 0\r\n return filedSelector(left) > filedSelector(right) ? v : v * -1\r\n }\r\n arr.sort(sort)\r\n },\r\n getSymbolDisplay (symbolName: string, currency: string) {\r\n return currency === 'HKD' ? 'HKG:' + symbolName.padStart(4, '0') : symbolName\r\n },\r\n iSameSymbol (displayName: string, symbolName: string, currency: string) {\r\n return displayName === this.getSymbolDisplay(symbolName, currency)\r\n },\r\n parseSymbols (symbols: string[]) {\r\n return symbols.map(p => {\r\n const index = p.indexOf(':')\r\n return index > 0 ? p.substr(index + 1) : p\r\n })\r\n },\r\n getDistinct (items: T[]) {\r\n const temp = new Set()\r\n for (const item of items) {\r\n temp.add(item)\r\n }\r\n const arr: T[] = []\r\n for (const i of temp) {\r\n arr.push(i)\r\n }\r\n return arr\r\n }\r\n}\r\n","export default {\r\n host: '/api'\r\n}\r\n","import config from './config'\r\nimport axios, { AxiosRequestConfig, AxiosResponse } from 'axios'\r\nimport { ApiBooleanResult, ApiResult } from '@/services/data'\r\n\r\nexport default {\r\n async tryPostResult (url: string, data?: any, reqConfig?: AxiosRequestConfig): Promise> {\r\n try {\r\n return (await axios.post(config.host + url, data, reqConfig) as AxiosResponse>).data\r\n } catch (e) {\r\n return Promise.resolve>({ Error: e as string, Result: null })\r\n }\r\n },\r\n async tryPostBooleanResult (url: string, data?: any, reqConfig?: AxiosRequestConfig): Promise {\r\n try {\r\n return (await axios.post(config.host + url, data, reqConfig) as AxiosResponse).data\r\n } catch (e) {\r\n return Promise.resolve({ Error: e as string, Result: false })\r\n }\r\n },\r\n async tryUploadResult (url: string, data: any): Promise> {\r\n const formData = new FormData()\r\n for (const value in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, value)) {\r\n formData.append(value, data[value])\r\n }\r\n }\r\n return this.tryPostResult(url, formData, { headers: { 'Content-Type': 'multipart/form-data' } })\r\n },\r\n async tryDownload (url: string, data?: any): Promise {\r\n try {\r\n const response = await axios.post(config.host + url, data, { responseType: 'blob' })\r\n if (response.headers['content-type'].includes('json')) {\r\n return new Promise((resolve, reject) => {\r\n const { data } = response\r\n let error: string = null\r\n const reader = new FileReader()\r\n reader.onload = () => {\r\n const { result } = reader\r\n const errorJson = JSON.parse(result as string)\r\n error = errorJson.error\r\n }\r\n reader.onerror = function (error) {\r\n reject(error)\r\n }\r\n reader.onloadend = function () {\r\n reject(error)\r\n }\r\n reader.readAsText(data)\r\n })\r\n } else {\r\n return response.data\r\n }\r\n } catch (e) {\r\n return Promise.reject(e)\r\n }\r\n }\r\n}\r\n","import { ApiBooleanResult, ApiResult, JwtResult } from './data'\r\nimport serviceBase from '@/services/serviceBase'\r\n\r\nexport interface LogModel {\r\n Email: string;\r\n Password: string;\r\n Source?: string;\r\n Language: string;\r\n RememberMe: boolean;\r\n}\r\n\r\nexport interface ChangePwdModel {\r\n OriPassword: string;\r\n NewPassword: string;\r\n Confirm?: string;\r\n}\r\n\r\nexport interface IpRestrictionModel {\r\n IpRestrictionId: number;\r\n Ip: string;\r\n Mask: string;\r\n IsAllow: boolean;\r\n}\r\n\r\nexport interface SecurityQuestionModel {\r\n Answer: string;\r\n Question: string;\r\n SecurityQuestionId: number;\r\n}\r\n\r\nexport default {\r\n async checkLoginAsync (jwt: string): Promise {\r\n return await serviceBase.tryPostBooleanResult('/Auth/checkLoginStatus', null, { headers: { Authorization: 'bearer ' + jwt } })\r\n },\r\n async loginAsync (data: LogModel): Promise> {\r\n data.Source = 'Web'\r\n return await serviceBase.tryPostResult('/Auth/Login', data)\r\n },\r\n async changePwdAsync (data: ChangePwdModel) {\r\n return await serviceBase.tryPostResult('/Auth/ChangePwd', data)\r\n },\r\n async getIpRestrictionsAsync (): Promise> {\r\n return await serviceBase.tryPostResult('/Auth/getIpRestrictions')\r\n },\r\n async setIpRestrictionAsync (data: IpRestrictionModel): Promise {\r\n return await serviceBase.tryPostBooleanResult('/Auth/AddOrUpdateIpRestrictions', [data])\r\n },\r\n async getSecurityQuestionsAsync (acc?: string): Promise> {\r\n return await serviceBase.tryPostResult('/Auth/getSecurityQuestions', { UserAcc: acc })\r\n },\r\n async setSecurityQuestionsAsync (data: SecurityQuestionModel[]): Promise {\r\n return await serviceBase.tryPostBooleanResult('/Auth/AddOrUpdateSecurityQuestions', data)\r\n }\r\n}\r\n"],"sourceRoot":""}