{"version":3,"sources":["webpack:///./src/views/ap/login/Login.vue?8fa3","webpack:///./src/controllers/ap/login/Login.ts","webpack:///./src/controllers/ap/login/Login.ts?f910","webpack:///./src/views/ap/login/Login.vue"],"names":["render","_vm","this","_c","_self","_setupProxy","staticClass","_m","attrs","_v","directives","name","rawName","value","login","expression","modifiers","domProps","on","$event","target","composing","$set","trim","$forceUpdate","requiredMsg","isPwdShow","eventKeyPress","eventKeyUp","pwdOrigin","changeInputType","errMsg","password","_s","verificationCode","imgSrc","preventDefault","refresh","identification","checkCode","account","doubleClick","stopPropagation","checkAndSubmit","staticRenderFns","isLoading","Protobuf","Login","create","uid","isCapsLock","created","sleep","userAgent","navigator","indexOf","alert","mounted","window","addEventListener","eventEnter","beforeDestroy","removeEventListener","ms","Promise","resolve","setTimeout","isEmpty","submit","item","encoder","TextEncoder","encode","toString","console","log","loginQuery","finish","errorCodeForCheckCode","ErrorCode","EC_CAPTCHA_ERROR","responseInfo","errorCode","EC_SUCESS","EC_USER_IS_NOT_EXISTS","EC_USER_IS_DISABLE","EC_USER_LOGIN_ERROR","storeUserInfo","StoreUser","decode","Uint8Array","failedCount","loginFailedCount","EC_USER_IS_LOCK","EC_OVER_ONLINE_UPPER_LIMIT","userAuth","UserAuth","set","token","expires","sameSite","groupPermission","permission","userAuthPrivJson","JSON","stringify","setAuth","JWT","loginType","String","userInfo","type","$router","push","id","Math","floor","Date","getTime","getCaptcha","event","key","length","e","Event","isShiftKey","shiftKey","LoginLoginController","components","Loading","component"],"mappings":"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","file":"js/chunk-2d0be187.1e72954e.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"login\"},[_vm._m(0),_c('div',{staticClass:\"bgBlock col-6 flex--center\"},[_c('div',{staticClass:\"col-8\"},[_c('form',[_c('div',{staticClass:\"col-row\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"特店代號/統編\")]),_c('div',{staticClass:\"e-formGroup e-formGroup--12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.login.identification),expression:\"login.identification\",modifiers:{\"trim\":true}}],staticClass:\"e-formGroup_item e-formGroup_item--login\",attrs:{\"type\":\"text\",\"placeholder\":\"請輸入特店代號/統編\",\"maxlength\":\"20\",\"onkeyup\":\"value=value.replace(/[^\\\\u0000-\\\\u00ff]/g,'')\",\"onbeforepaste\":\"clipboarddata.setdata(text,clipboarddata.getdata(text).replace(/[^\\\\u0000-\\\\u00ff]/g,''))\"},domProps:{\"value\":(_vm.login.identification)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.login, \"identification\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('img',{staticClass:\"e-formGroup_icon e-formGroup_icon--l\",attrs:{\"src\":\"/img/user.svg\",\"alt\":\"\"}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.requiredMsg.identification),expression:\"requiredMsg.identification\"}],staticClass:\"e-formGroup_err\"},[_vm._v(\"必填\")])]),_c('div',{staticClass:\"col-row\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"使用者代號\")]),_c('div',{staticClass:\"e-formGroup e-formGroup--12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.login.account),expression:\"login.account\",modifiers:{\"trim\":true}}],staticClass:\"e-formGroup_item e-formGroup_item--login\",attrs:{\"type\":\"text\",\"placeholder\":\"請輸入使用者代號\",\"maxlength\":\"20\",\"onkeyup\":\"value=value.replace(/[^\\\\u0000-\\\\u00ff]/g,'')\",\"onbeforepaste\":\"clipboarddata.setdata(text,clipboarddata.getdata(text).replace(/[^\\\\u0000-\\\\u00ff]/g,''))\"},domProps:{\"value\":(_vm.login.account)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.login, \"account\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('img',{staticClass:\"e-formGroup_icon e-formGroup_icon--l\",attrs:{\"src\":\"/img/user.svg\",\"alt\":\"\"}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.requiredMsg.account),expression:\"requiredMsg.account\"}],staticClass:\"e-formGroup_err\"},[_vm._v(\"必填\")])]),_c('div',{staticClass:\"col-row\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"密碼\")]),_c('div',{staticClass:\"e-formGroup e-formGroup--12\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.pwdOrigin),expression:\"pwdOrigin\",modifiers:{\"trim\":true}},{name:\"show\",rawName:\"v-show\",value:(!_vm.isPwdShow),expression:\"!isPwdShow\"}],staticClass:\"e-formGroup_item e-formGroup_item--login\",attrs:{\"type\":\"password\",\"placeholder\":\"請輸入密碼\"},domProps:{\"value\":(_vm.pwdOrigin)},on:{\"keypress\":_vm.eventKeyPress,\"keyup\":_vm.eventKeyUp,\"input\":function($event){if($event.target.composing)return;_vm.pwdOrigin=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.pwdOrigin),expression:\"pwdOrigin\",modifiers:{\"trim\":true}},{name:\"show\",rawName:\"v-show\",value:(_vm.isPwdShow),expression:\"isPwdShow\"}],staticClass:\"e-formGroup_item e-formGroup_item--login\",attrs:{\"type\":\"text\",\"placeholder\":\"請輸入密碼\"},domProps:{\"value\":(_vm.pwdOrigin)},on:{\"keypress\":_vm.eventKeyPress,\"keyup\":_vm.eventKeyUp,\"input\":function($event){if($event.target.composing)return;_vm.pwdOrigin=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('img',{staticClass:\"e-formGroup_icon e-formGroup_icon--l\",attrs:{\"src\":\"/img/pwlock.svg\",\"alt\":\"\"}}),_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isPwdShow),expression:\"!isPwdShow\"}],staticClass:\"e-formGroup_icon h-zindex5 mb3\",attrs:{\"src\":\"/img/icon-show.svg\",\"alt\":\"\"},on:{\"click\":function($event){return _vm.changeInputType('text')}}}),_vm._v(\" \"),_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isPwdShow),expression:\"isPwdShow\"}],staticClass:\"e-formGroup_icon h-zindex5 mb3\",attrs:{\"src\":\"/img/icon-hide.svg\",\"alt\":\"\"},on:{\"click\":function($event){return _vm.changeInputType('password')}}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errMsg.password !== ''),expression:\"errMsg.password !== ''\"}],staticClass:\"e-formGroup_err\"},[_vm._v(_vm._s(_vm.errMsg.password))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.requiredMsg.password),expression:\"requiredMsg.password\"}],staticClass:\"e-formGroup_err\"},[_vm._v(\"必填\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isCapsLock),expression:\"isCapsLock\"}],staticClass:\"e-formGroup_err\"},[_vm._v(\"已啟用CapsLock!\")])]),_c('div',{staticClass:\"col-row flex--sb\"},[_c('div',{staticClass:\"col-6 col-noGutter\"},[_c('div',{staticClass:\"e-form\"},[_c('label',{attrs:{\"for\":\"\"}},[_vm._v(\"驗證碼\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.login.checkCode),expression:\"login.checkCode\",modifiers:{\"trim\":true}}],staticClass:\"e-formGroup_item\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.login.checkCode)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.login, \"checkCode\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.requiredMsg.checkCode),expression:\"requiredMsg.checkCode\"}],staticClass:\"e-formGroup_err\"},[_vm._v(\"必填\")])])]),_c('div',{staticClass:\"col-6 col-noGutter flex--end\"},[_c('img',{staticClass:\"e-form_img\",attrs:{\"src\":_vm.verificationCode.imgSrc}}),_c('a',{on:{\"click\":function($event){$event.preventDefault();return _vm.refresh()}}},[_c('img',{staticClass:\"mt25\",attrs:{\"src\":\"/img/refresh.svg\",\"alt\":\"\"}})])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errMsg.identification !== ''),expression:\"errMsg.identification !== ''\"}],staticClass:\"e-formGroup_err\"},[_vm._v(_vm._s(_vm.errMsg.identification))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errMsg.checkCode !== ''),expression:\"errMsg.checkCode !== ''\"}],staticClass:\"e-formGroup_err\"},[_vm._v(_vm._s(_vm.errMsg.checkCode))]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.errMsg.account !== ''),expression:\"errMsg.account !== ''\"}],staticClass:\"e-formGroup_err\"},[_vm._v(_vm._s(_vm.errMsg.account))])]),_c('div',{staticClass:\"col-row flex--center mb-20\"},[_c('a',{staticClass:\"e-btn e-btn--primary e-btn--w100\",attrs:{\"disabled\":_vm.doubleClick},on:{\"click\":function($event){$event.stopPropagation();return _vm.checkAndSubmit()}}},[_vm._v(\"登入\")])]),_c('div',{staticClass:\"col-row txt-c\"},[_c('router-link',{staticClass:\"e-formGroup_txt\",attrs:{\"to\":\"/forget\"}},[_c('span',[_vm._v(\"忘記密碼\")])])],1)]),_c('p',{staticClass:\"txt-c mt20\"},[_vm._v(\"© 合作金庫 Web對帳查詢平台\")])])]),_c('Loading',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}]})],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"col-row flex--center\"},[_c('img',{staticClass:\"logo\",attrs:{\"src\":\"/img/logo.png\",\"alt\":\"\"}})])\n}]\n\nexport { render, staticRenderFns }","import { Component, Vue } from \"vue-property-decorator\";\r\nimport Cookies from 'js-cookie';\r\n\r\nimport { Loading } from \"@/components\";\r\nimport { LoginModel } from \"@/models\";\r\nimport { TCBReceiptApi } from \"@/network/pb/proto\";\r\nimport { AuthType, Network } from \"@/network\";\r\nimport { UserInfo } from \"@/types/Login\";\r\nimport * as CryptoJS from 'crypto-js'\r\n\r\n@Component({\r\n components: {\r\n Loading,\r\n },\r\n})\r\nexport default class LoginLoginController extends Vue {\r\n private isLoading = true;\r\n private doubleClick = false;\r\n private isPwdShow = false;\r\n\r\n private login = TCBReceiptApi.Protobuf.Login.create();\r\n private pwdOrigin = \"\";\r\n private errMsg: {\r\n identification: string,\r\n account: string,\r\n password: string,\r\n checkCode: string,\r\n } = {\r\n identification: \"\",\r\n account: \"\",\r\n password: \"\",\r\n checkCode: \"\",\r\n };\r\n private verificationCode: {\r\n uid: string,\r\n imgSrc: string,\r\n } = {\r\n uid: \"\",\r\n imgSrc: \"\",\r\n };\r\n private requiredMsg: {\r\n identification: boolean,\r\n account: boolean,\r\n password: boolean,\r\n checkCode: boolean,\r\n } = {\r\n identification: false,\r\n account: false,\r\n password: false,\r\n checkCode: false,\r\n };\r\n private isCapsLock = false; \r\n\r\n public async created() {\r\n // get first code pic\r\n await this.refresh();\r\n\r\n this.isLoading = false;\r\n\r\n await this.sleep(1500);\r\n const userAgent = navigator.userAgent; // 取得瀏覽器的userAgent字串 藉此辨認\r\n if (!(userAgent.indexOf(\"Chrome\") > -1 || userAgent.indexOf(\"Edg\") > -1)) { // Trident => IE\r\n alert(\"本網站建議使用Chrome、Edge瀏覽器瀏覽\");\r\n }\r\n }\r\n\r\n public mounted() {\r\n window.addEventListener('keyup', this.eventEnter);\r\n }\r\n\r\n public beforeDestroy() {\r\n window.removeEventListener('keyup', this.eventEnter);\r\n } \r\n\r\n private async sleep(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n }\r\n\r\n private async checkAndSubmit() {\r\n let isEmpty = false;\r\n\r\n // init\r\n this.errMsg.identification = \"\";\r\n this.errMsg.account = \"\";\r\n this.errMsg.password = \"\";\r\n this.errMsg.checkCode = \"\";\r\n this.requiredMsg.identification = false;\r\n this.requiredMsg.account = false;\r\n this.requiredMsg.password = false;\r\n this.requiredMsg.checkCode = false;\r\n\r\n if (this.login.identification === \"\") {\r\n this.requiredMsg.identification = true;\r\n isEmpty = true;\r\n }\r\n if (this.login.account === \"\") {\r\n this.requiredMsg.account = true;\r\n isEmpty = true;\r\n }\r\n if (this.pwdOrigin === \"\") {\r\n this.requiredMsg.password = true;\r\n isEmpty = true;\r\n }\r\n if (this.login.checkCode === \"\") {\r\n this.requiredMsg.checkCode = true;\r\n isEmpty = true;\r\n }\r\n\r\n if (isEmpty) return false;\r\n\r\n await this.submit();\r\n }\r\n\r\n private async submit() {\r\n \r\n if (!this.doubleClick) {\r\n this.doubleClick = true;\r\n\r\n /* send value */\r\n this.isLoading = true;\r\n\r\n const item = this.login as TCBReceiptApi.Protobuf.Login;\r\n const encoder = new TextEncoder();\r\n item.password = encoder.encode(this.pwdOrigin);\r\n item.account = CryptoJS.SHA256(this.login.account).toString();\r\n console.log(item);\r\n const loginQuery = TCBReceiptApi.Protobuf.Login.encode(item).finish();\r\n \r\n // 驗證碼\r\n const errorCodeForCheckCode = await LoginModel.checkCode(loginQuery);\r\n if (errorCodeForCheckCode === TCBReceiptApi.Protobuf.ErrorCode.EC_CAPTCHA_ERROR) {\r\n this.errMsg.checkCode = \"驗證碼錯誤\";\r\n this.refresh();\r\n this.isLoading = false;\r\n this.doubleClick = false;\r\n this.login.checkCode = \"\";\r\n this.login.account = \"\";\r\n return false;\r\n }\r\n\r\n // 登入\r\n const responseInfo = await LoginModel.login(loginQuery);\r\n const errorCode = responseInfo.errorCode as number;\r\n\r\n this.doubleClick = false;\r\n this.isLoading = false;\r\n\r\n if (errorCode !== TCBReceiptApi.Protobuf.ErrorCode.EC_SUCESS) {\r\n if (errorCode === TCBReceiptApi.Protobuf.ErrorCode.EC_USER_IS_NOT_EXISTS) {\r\n this.errMsg.identification = \"特店代號/統編錯誤或帳號不存在\";\r\n } else if (errorCode === TCBReceiptApi.Protobuf.ErrorCode.EC_USER_IS_DISABLE) {\r\n this.errMsg.identification = \"此帳號已停用\";\r\n } else if (errorCode === TCBReceiptApi.Protobuf.ErrorCode.EC_USER_LOGIN_ERROR) {\r\n const storeUserInfo = TCBReceiptApi.Protobuf.StoreUser.decode(\r\n new Uint8Array(responseInfo.item)\r\n );\r\n console.log(storeUserInfo);\r\n const failedCount = storeUserInfo.loginFailedCount as number;\r\n this.errMsg.account = \"密碼已錯誤\" + failedCount + \"次,您還有\" + (5 - failedCount) + \"次機會\";\r\n } else if (errorCode === TCBReceiptApi.Protobuf.ErrorCode.EC_USER_IS_LOCK) {\r\n this.errMsg.identification = \"此帳號已鎖定\";\r\n } else if (errorCode === TCBReceiptApi.Protobuf.ErrorCode.EC_OVER_ONLINE_UPPER_LIMIT) {\r\n this.errMsg.identification = \"目前已達登入上限,請稍後再登入\";\r\n } else {\r\n this.errMsg.identification = \"例外錯誤\";\r\n }\r\n\r\n this.login.account = \"\";\r\n this.pwdOrigin = \"\";\r\n this.login.checkCode = \"\";\r\n this.refresh();\r\n return false;\r\n }\r\n\r\n // 登入成功\r\n console.log(\"####登入成功####\");\r\n const userAuth = TCBReceiptApi.Protobuf.UserAuth.decode(\r\n new Uint8Array(responseInfo.item)\r\n );\r\n console.log(userAuth);\r\n\r\n Cookies.set(\"appToken\", userAuth.token as string, { expires: 1, sameSite: 'strict' });\r\n if (userAuth.groupPermission && userAuth.groupPermission.permission) {\r\n const userAuthPrivJson: string = JSON.stringify(userAuth.groupPermission.permission) as string;\r\n Cookies.set(\"appUserAuthPrivJson\", userAuthPrivJson, { sameSite: 'strict' });\r\n }\r\n Network.setAuth(AuthType.JWT, userAuth.token as string);\r\n\r\n // 紀錄登入狀態\r\n if (userAuth.loginType) {\r\n const loginType = String(userAuth.loginType);\r\n Cookies.set(\"loginType\", loginType as string, { sameSite: 'strict' });\r\n }\r\n // 紀錄資訊\r\n const userInfo: UserInfo = {\r\n identification: this.login.identification as string,\r\n account: this.login.account as string,\r\n };\r\n Cookies.set(\"appUserInfo\", JSON.stringify(userInfo) as string, { sameSite: 'strict' });\r\n // 紀錄帳號類型\r\n if (userAuth.type === 4) { // 管理員帳號\r\n Cookies.set(\"isAdmin\", \"1\" as string, { sameSite: 'strict' });\r\n }\r\n\r\n this.$router.push(\"/announcement/list\");\r\n /* send value */\r\n }\r\n }\r\n\r\n private async refresh() {\r\n this.login.id = Math.floor(new Date().getTime() / 1000) as number;\r\n\r\n /* send value */\r\n const item = this.login as TCBReceiptApi.Protobuf.Login;\r\n const loginQuery = TCBReceiptApi.Protobuf.Login.encode(item).finish();\r\n\r\n await LoginModel.getCaptcha(loginQuery);\r\n /* send value */\r\n this.verificationCode.imgSrc = process.env.VUE_APP_API_BASE_URL + \"/api/web_user/captcha/img?timestamp=\" + this.login.id;\r\n }\r\n\r\n private changeInputType(type: number) {\r\n if (!this.isPwdShow) {\r\n this.isPwdShow = true;\r\n } else if (this.isPwdShow) {\r\n this.isPwdShow = false;\r\n }\r\n }\r\n\r\n /* 無法直接讀取\"CapsLock\"狀態,僅能依賴是否鍵入\"CapsLock\"切換且往後鍵入的字符來判斷是否有開啟\"CapsLock\" */\r\n /* 僅運作在英文輸入法 */\r\n\r\n // 判斷是否有切換\"CapsLock\"大寫鎖定鍵\r\n private eventKeyUp(event: KeyboardEvent) {\r\n // KeyPress 能觸發\"Shift\"與\"CapsLock\" \r\n // ex.如果是\"Shift\"+\"a\" => 則觸發兩個事件,完全獨立觸發,判斷不到\"Shift\"狀態\r\n if (event.key === \"CapsLock\" && this.pwdOrigin.length > 0) {\r\n this.isCapsLock = !this.isCapsLock;\r\n }\r\n\r\n return;\r\n }\r\n\r\n // 判斷大小寫狀態\r\n private eventKeyPress(event: KeyboardEvent) {\r\n // KeyPress 不觸發\"Shift\"與\"CapsLock\" \r\n // ex.如果是\"Shift\"+\"a\" => 僅觸發一個事件且帶有\"Shift\"狀態\r\n const e = event||window.Event;\r\n const isShiftKey = e.shiftKey ? true : false;\r\n\r\n if (\r\n (isShiftKey && e.key >= 'a' && e.key <= 'z') ||\r\n (!isShiftKey && e.key >= 'A' && e.key <= 'Z' && e.key != 'Enter')\r\n ) {\r\n this.isCapsLock = true;\r\n } else {\r\n this.isCapsLock = false;\r\n }\r\n\r\n return;\r\n }\r\n\r\n private eventEnter(event: KeyboardEvent) {\r\n if (event.key == \"Enter\") {\r\n this.checkAndSubmit();\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/ts-loader/index.js??ref--14-2!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Login.ts?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/ts-loader/index.js??ref--14-2!../../../../node_modules/eslint-loader/index.js??ref--13-0!./Login.ts?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=756ccd65&\"\nimport script from \"@/controllers/ap/login/Login?vue&type=script&lang=ts&\"\nexport * from \"@/controllers/ap/login/Login?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"],"sourceRoot":""}