glhcp/server/public/kefu/js/chunk-72ef8297.586104ce.js.map

1 line
19 KiB
Plaintext

{"version":3,"sources":["webpack:///./src/views/account/login.vue?2005","webpack:///./src/views/account/login.vue?5af4","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./src/views/account/login.vue?b0f2","webpack:///./src/utils/cache.js","webpack:///src/views/account/login.vue","webpack:///./src/views/account/login.vue?8b57","webpack:///./src/views/account/login.vue","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js"],"names":["module","exports","_typeof","obj","Symbol","iterator","constructor","prototype","render","_vm","this","_h","$createElement","_c","_self","staticClass","_v","_s","$route","query","type","ref","attrs","accountObj","rules","nativeOn","$event","indexOf","_k","keyCode","key","$refs","inputPwd","focus","model","value","callback","$$v","$set","expression","slot","handleLogin","apply","arguments","rememberAccount","staticStyle","loadingLogin","on","copyright","staticRenderFns","cache","keyPrev","set","expire","data","time","JSON","stringify","window","localStorage","setItem","e","get","getItem","parse","removeItem","Math","round","Date","getTime","remove","getKey","account","password","required","message","trigger","methods","remember","login","then","redirect","catch","computed","mapGetters","created","component","defineWellKnownSymbol","$","DESCRIPTORS","global","uncurryThis","hasOwn","isCallable","isPrototypeOf","toString","defineProperty","f","copyConstructorProperties","NativeSymbol","SymbolPrototype","undefined","description","EmptyStringDescriptionStore","SymbolWrapper","length","result","NATIVE_SYMBOL","String","symbolToString","symbolValueOf","valueOf","regexp","replace","stringSlice","slice","configurable","symbol","string","desc","forced"],"mappings":"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","file":"js/chunk-72ef8297.586104ce.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#4073FA\"};","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&lang=scss&scope=true&\"","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login\"},[_c('div',{staticClass:\"main\"},[_c('div',{staticClass:\"login-container\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$route.query.type ?'商家客服登录' : '平台客服登录'))]),_c('div',{staticClass:\"form m-t-40\"},[_c('el-form',{ref:\"form\",attrs:{\"model\":_vm.accountObj,\"rules\":_vm.rules}},[_c('el-form-item',{attrs:{\"prop\":\"account\"}},[_c('el-input',{attrs:{\"placeholder\":\"请输入账号\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.$refs.inputPwd.focus()}},model:{value:(_vm.accountObj.account),callback:function ($$v) {_vm.$set(_vm.accountObj, \"account\", $$v)},expression:\"accountObj.account\"}},[_c('i',{staticClass:\"el-input__icon el-icon-s-custom\",attrs:{\"slot\":\"prefix\"},slot:\"prefix\"})])],1),_c('el-form-item',{attrs:{\"prop\":\"password\"}},[_c('el-input',{ref:\"inputPwd\",attrs:{\"placeholder\":\"请输入密码\",\"show-password\":\"\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleLogin.apply(null, arguments)}},model:{value:(_vm.accountObj.password),callback:function ($$v) {_vm.$set(_vm.accountObj, \"password\", $$v)},expression:\"accountObj.password\"}},[_c('i',{staticClass:\"el-input__icon el-icon-s-cooperation\",attrs:{\"slot\":\"prefix\"},slot:\"prefix\"})])],1),_c('div',{staticClass:\"m-b-10 p-t-10\"},[_c('el-checkbox',{attrs:{\"label\":\"记住账号\"},model:{value:(_vm.rememberAccount),callback:function ($$v) {_vm.rememberAccount=$$v},expression:\"rememberAccount\"}})],1),_c('el-button',{staticStyle:{\"width\":\"100%\"},attrs:{\"type\":\"primary\",\"loading\":_vm.loadingLogin},on:{\"click\":_vm.handleLogin}},[_vm._v(\"登录\")])],1)],1)])]),_c('div',{staticClass:\"footer\"},[_vm._v(_vm._s(_vm.copyright))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const cache = {\n\n keyPrev: 'kefu_',\n\t//设置缓存(expire为缓存时效)\n\tset(key, value, expire) {\n\t\tlet data = {\n\t\t\texpire: expire ? (this.time() + expire) : \"\",\n\t\t\tvalue\n\t\t}\n\t\t\n\t\tif (typeof data === 'object')\n\t\t\tdata = JSON.stringify(data);\n\t\ttry {\n window.localStorage.setItem(key, data)\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t},\n\tget(key) {\n\t\ttry {\n\t\t\tlet data = window.localStorage.getItem(key)\n if(!data) return false\n\t\t\tconst {value, expire} = JSON.parse(data)\n\t\t\tif(expire && expire < this.time()) {\n\t\t\t\twindow.localStorage.removeItem(key)\n\t\t\t\treturn false;\n\t\t\t}else {\n\t\t\t\treturn value\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t},\n\t//获取当前时间\n\ttime() {\n\t\treturn Math.round(new Date().getTime() / 1000);\n\t},\n\tremove(key) {\n\t\tif(key) window.localStorage.removeItem(key)\n\t},\n getKey(key) {\n\t\treturn this.keyPrev + key\n\t}\n}\n\nexport default cache;\n","<template>\n <div class=\"login\">\n <div class=\"main\">\n <div class=\"login-container\">\n <div class=\"title\">{{$route.query.type ?'商家客服登录' : '平台客服登录'}}</div>\n <div class=\"form m-t-40\">\n <el-form :model=\"accountObj\" :rules=\"rules\" ref=\"form\">\n <el-form-item prop=\"account\">\n <el-input\n placeholder=\"请输入账号\"\n v-model=\"accountObj.account\"\n @keyup.enter.native=\"$refs.inputPwd.focus()\"\n >\n <i\n slot=\"prefix\"\n class=\"el-input__icon el-icon-s-custom\"\n ></i>\n </el-input>\n </el-form-item>\n <el-form-item prop=\"password\">\n <el-input\n ref=\"inputPwd\"\n placeholder=\"请输入密码\"\n v-model=\"accountObj.password\"\n show-password\n @keyup.enter.native=\"handleLogin\"\n >\n <i\n slot=\"prefix\"\n class=\"el-input__icon el-icon-s-cooperation\"\n ></i>\n </el-input>\n </el-form-item>\n <div class=\"m-b-10 p-t-10\">\n <el-checkbox\n v-model=\"rememberAccount\"\n label=\"记住账号\"\n ></el-checkbox>\n </div>\n <el-button\n style=\"width: 100%\"\n type=\"primary\"\n :loading=\"loadingLogin\"\n @click=\"handleLogin\"\n >登录</el-button\n >\n </el-form>\n </div>\n </div>\n </div>\n <div class=\"footer\">{{ copyright }}</div>\n </div>\n</template>\n\n<script>\nimport cache from '@/utils/cache'\nimport { apiLogin } from '@/api/app'\nimport { mapGetters } from 'vuex'\nexport default {\n data() {\n return {\n rememberAccount: false,\n loadingLogin: false,\n accountObj: {\n account: '',\n password: '',\n },\n rules: {\n account: [\n {\n required: true,\n message: '请输入账号',\n trigger: ['blur'],\n },\n ],\n password: [\n {\n required: true,\n message: '请输入密码',\n trigger: ['blur'],\n },\n ],\n },\n }\n },\n methods: {\n handleLogin() {\n this.$refs.form.validate((valid) => {\n if (!valid) return\n cache.set('remember_account', {\n remember: this.rememberAccount,\n account: this.accountObj.account,\n })\n this.login()\n })\n },\n //登录\n login() {\n this.loadingLogin = true\n const { account, password } = this.accountObj\n\n this.$store.dispatch('login', {\n account,\n password,\n type: this.$route.query.type || 0,\n }).then(data => {\n const {\n query: { redirect },\n } = this.$route\n const path = typeof redirect === 'string' ? redirect : '/'\n this.$router.replace(path)\n }).catch(() => {\n this.loadingLogin = false\n })\n },\n },\n computed: {\n ...mapGetters(['copyright'])\n },\n created() {\n const value = cache.get('remember_account')\n if (value.remember) {\n this.rememberAccount = value.remember\n this.accountObj.account = value.account\n }\n },\n}\n</script>\n\n<style lang=\"scss\" scope>\n.login {\n display: flex;\n flex-direction: column;\n height: 100vh;\n .main {\n flex: 1;\n background-image: url(../../assets/images/login_bg.png);\n background-repeat: no-repeat;\n background-size: cover;\n background-position: center;\n display: flex;\n justify-content: center;\n align-items: center;\n .login-container {\n width: 400px;\n border-radius: 10px;\n background: #fff;\n box-shadow: 0px 0px 10px rgba(64, 115, 250, 0.08);\n padding: 30px 40px 80px;\n .title {\n text-align: center;\n font-size: 24px;\n font-weight: 500;\n }\n }\n }\n .footer {\n font-size: 12px;\n color: #9999;\n text-align: center;\n padding: 20px 0;\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=006baaa0&\"\nimport script from \"./login.vue?vue&type=script&lang=js&\"\nexport * from \"./login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&lang=scss&scope=true&\"\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 defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n"],"sourceRoot":""}