{"version":3,"sources":["webpack:///./src/views/login/index.vue?87bd","webpack:///./src/views/login/index.vue?33f1","webpack:///./src/views/login/component/account.vue?44f2","webpack:///./src/api/login/index.ts","webpack:///./src/views/login/component/account.vue","webpack:///./src/views/login/component/account.vue?6938","webpack:///./src/views/login/index.vue","webpack:///./src/views/login/index.vue?8a6f","webpack:///./src/views/login/component/account.vue?c95f","webpack:///./src/utils/formatTime.ts"],"names":["n","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","key","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","render","_ctx","_cache","$props","$setup","$data","$options","_component_Account","_component_el_tab_pane","_component_el_tabs","_component_el_button","getThemeConfig","globalViceTitle","tabsActiveName","globalTitle","isScan","modelValue","$event","onTabClick","onTabsClick","default","label","$t","name","disabled","isTabPaneShow","_","type","size","_component_el_input","_component_el_form_item","_component_el_form","ref","model","ruleForm","rules","prop","placeholder","userName","clearable","autocomplete","isShowPassword","password","suffix","onClick","round","onSignIn","loading","signIn","params","request","url","method","setup","t","store","route","router","ruleFormsss","state","code","required","message","trigger","currentTime","Date","form","validate","defaultAuthPageList","defaultAuthBtnList","adminAuthPageList","adminAuthBtnList","testAuthPageList","testAuthBtnList","username","login","data","error","userInfos","photo","time","getTime","authPageList","authBtnList","set","tnToken","tokenStr","dispatch","themeConfig","isRequestRoutes","signInSuccess","currentTimeInfo","value","query","redirect","push","path","Object","keys","length","JSON","parse","setTimeout","signInText","success","__exports__","components","Account","formatAxis","param","hour","getHours"],"mappings":"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","file":"js/chunk-18416d46.208d09b4.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=5cb1b9e5&scoped=true&lang=scss\"","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, vShow as _vShow, createVNode as _createVNode, withDirectives as _withDirectives, Transition as _Transition, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5cb1b9e5\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"login-container\" }\nconst _hoisted_2 = { class: \"login-logo\" }\nconst _hoisted_3 = { class: \"login-content-main\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"login-czyy\" }, null, -1))\nconst _hoisted_5 = { class: \"login-content-title\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = { class: \"mt10\" }\nconst _hoisted_8 = { class: \"login-copyright\" }\nconst _hoisted_9 = { class: \"mb5 login-copyright-company\" }\nconst _hoisted_10 = { class: \"login-copyright-msg\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Account = _resolveComponent(\"Account\")!\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\")!\n const _component_el_tabs = _resolveComponent(\"el-tabs\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", null, _toDisplayString($setup.getThemeConfig.globalViceTitle), 1)\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"login-content\", { 'login-content-mobile': _ctx.tabsActiveName === 'mobile' }])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createElementVNode(\"h4\", _hoisted_5, _toDisplayString($setup.getThemeConfig.globalTitle), 1),\n (!_ctx.isScan)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_el_tabs, {\n modelValue: _ctx.tabsActiveName,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.tabsActiveName) = $event)),\n onTabClick: $setup.onTabsClick\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('message.label.one1'),\n name: \"account\",\n disabled: _ctx.tabsActiveName === 'account'\n }, {\n default: _withCtx(() => [\n _createVNode(_Transition, { name: \"el-zoom-in-center\" }, {\n default: _withCtx(() => [\n _withDirectives(_createVNode(_component_Account, null, null, 512), [\n [_vShow, _ctx.isTabPaneShow]\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"label\", \"disabled\"])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_el_button, {\n type: \"text\",\n size: \"small\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('message.link.one3')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_el_button, {\n type: \"text\",\n size: \"small\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('message.link.two4')), 1)\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('message.copyright.one5')), 1),\n _createElementVNode(\"div\", _hoisted_10, _toDisplayString(_ctx.$t('message.copyright.two6')), 1)\n ])\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_el_input = _resolveComponent(\"el-input\")!\n const _component_el_form_item = _resolveComponent(\"el-form-item\")!\n const _component_el_button = _resolveComponent(\"el-button\")!\n const _component_el_form = _resolveComponent(\"el-form\")!\n\n return (_openBlock(), _createBlock(_component_el_form, {\n class: \"login-content-form\",\n ref: \"ruleFormsss\",\n model: _ctx.ruleForm,\n rules: _ctx.rules\n }, {\n default: _withCtx(() => [\n _createVNode(_component_el_form_item, { prop: \"userName\" }, {\n default: _withCtx(() => [\n _createVNode(_component_el_input, {\n type: \"text\",\n placeholder: _ctx.$t('message.account.accountPlaceholder1'),\n \"prefix-icon\": \"el-icon-user\",\n modelValue: _ctx.ruleForm.userName,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.ruleForm.userName) = $event)),\n clearable: \"\",\n autocomplete: \"off\"\n }, null, 8, [\"placeholder\", \"modelValue\"])\n ]),\n _: 1\n }),\n _createVNode(_component_el_form_item, { prop: \"password\" }, {\n default: _withCtx(() => [\n _createVNode(_component_el_input, {\n type: _ctx.isShowPassword ? 'text' : 'password',\n placeholder: _ctx.$t('message.account.accountPlaceholder2'),\n \"prefix-icon\": \"el-icon-lock\",\n modelValue: _ctx.ruleForm.password,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.ruleForm.password) = $event)),\n autocomplete: \"off\"\n }, {\n suffix: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"iconfont el-input__icon login-content-password\", _ctx.isShowPassword ? 'icon-yincangmima' : 'icon-xianshimima']),\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.isShowPassword = !_ctx.isShowPassword))\n }, null, 2)\n ]),\n _: 1\n }, 8, [\"type\", \"placeholder\", \"modelValue\"])\n ]),\n _: 1\n }),\n _createVNode(_component_el_form_item, null, {\n default: _withCtx(() => [\n _createVNode(_component_el_button, {\n type: \"primary\",\n class: \"login-content-submit\",\n round: \"\",\n onClick: _ctx.onSignIn,\n loading: _ctx.loading.signIn\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('message.account.accountBtnText')), 1)\n ]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"model\", \"rules\"]))\n}","import request from '@/utils/request'\n\n/**\n * 用户登录\n * @param params 要传的参数值\n * @returns 返回接口数据\n */\nexport function signIn (params: object) {\n return request({\n url: '/login',\n method: 'get',\n params: params\n })\n}\n\n// export function signIn (params: object) {\n// return request({\n// url: '/logintest/login',\n// method: 'get',\n// params: params\n// })\n// }\n\n/**\n * 用户退出登录\n * @param params 要传的参数值\n * @returns 返回接口数据\n */\nexport function signOut (params: object) {\n return request({\n url: '/user',\n method: 'get',\n params: params\n })\n}\n","\nimport { toRefs, reactive, defineComponent, computed, ref, unref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport { ElMessage } from 'element-plus'\nimport { useI18n } from 'vue-i18n'\nimport { initFrontEndControlRoutes } from '@/router/frontEnd'\n// import { initBackEndControlRoutes } from '@/router/backEnd'\nimport { useStore } from '@/store/index.ts'\nimport { Session } from '@/utils/storage'\nimport { formatAxis } from '@/utils/formatTime'\nimport { signIn } from '@/api/login/index'\nexport default defineComponent({\n name: 'login',\n setup () {\n const { t } = useI18n()\n // const { proxy } = getCurrentInstance() as any\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n const ruleFormsss = ref()\n const state = reactive({\n isShowPassword: false,\n ruleForm: {\n userName: '',\n password: '',\n code: '1234'\n },\n rules: {\n userName: [\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 loading: {\n signIn: false\n }\n })\n\n // 时间获取\n const currentTime = computed(() => {\n return formatAxis(new Date())\n })\n // 登录\n const onSignIn = async () => {\n const form = unref(ruleFormsss)\n if (!form) return\n try {\n await form.validate()\n } catch (error) {\n return\n }\n state.loading.signIn = true\n let defaultAuthPageList: Array = []\n let defaultAuthBtnList: Array = []\n // admin 页面权限标识,对应路由 meta.auth,用于控制路由的显示/隐藏\n const adminAuthPageList: Array = ['admin']\n // admin 按钮权限标识\n const adminAuthBtnList: Array = ['btn.add', 'btn.del', 'btn.edit', 'btn.link']\n // test 页面权限标识,对应路由 meta.auth,用于控制路由的显示/隐藏\n const testAuthPageList: Array = ['test']\n // test 按钮权限标识\n const testAuthBtnList: Array = ['btn.add', 'btn.link']\n // 不同用户模拟不同的用户权限\n if (state.ruleForm.userName === 'admin') {\n defaultAuthPageList = adminAuthPageList\n defaultAuthBtnList = adminAuthBtnList\n } else {\n defaultAuthPageList = testAuthPageList\n defaultAuthBtnList = testAuthBtnList\n }\n // let login:any = ''\n try {\n const login : any = await signIn({ username: state.ruleForm.userName, password: state.ruleForm.password })\n if (login.data === null) {\n state.loading.signIn = false\n ElMessage.error('用户名、密码不正确或用户被禁用!')\n return\n }\n\n // 用户信息模拟数据\n const userInfos:any = {\n userName: login.data.userName,\n photo:\n\t\t\t\t\tstate.ruleForm.userName === 'admin' ? 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg' : 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=317673774,2961727727&fm=26&gp=0.jpg',\n time: new Date().getTime(),\n authPageList: defaultAuthPageList,\n authBtnList: defaultAuthBtnList\n }\n // 存储 token 到浏览器缓存\n Session.set('token', login.tnToken.tokenStr)\n // 存储用户信息到浏览器缓存\n Session.set('userInfo', userInfos)\n // 1、请注意执行顺序(存储用户信息到vuex)\n store.dispatch('userInfos/setUserInfos', userInfos)\n if (!store.state.themeConfig.themeConfig.isRequestRoutes) {\n // 前端控制路由,2、请注意执行顺序\n await initFrontEndControlRoutes()\n signInSuccess()\n } else {\n // 模拟后端控制路由,isRequestRoutes 为 true,则开启后端控制路由\n // 添加完动态路由,再进行 router 跳转,否则可能报错 No match found for location with path \"/\"\n // await initBackEndControlRoutes()\n // 执行完 initBackEndControlRoutes,再执行 signInSuccess\n signInSuccess()\n }\n } catch (error:any) {\n ElMessage.error(error.message)\n state.loading.signIn = false\n }\n }\n // 登录成功后的跳转\n const signInSuccess = () => {\n // 初始化登录成功时间问候语\n const currentTimeInfo = currentTime.value\n // 登录成功,跳到转首页\n // 添加完动态路由,再进行 router 跳转,否则可能报错 No match found for location with path \"/\"\n // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中\n if (route.query?.redirect) {\n router.push({\n path: route.query?.redirect as string,\n query: Object.keys(route.query?.params as string).length > 0 ? JSON.parse(route.query?.params as string) : ''\n })\n } else {\n router.push('/')\n }\n // 登录成功提示\n setTimeout(() => {\n // 关闭 loading\n state.loading.signIn = true\n const signInText = t('message.signInText')\n ElMessage.success(`${currentTimeInfo},${signInText}`)\n // 修复防止退出登录再进入界面时,需要刷新样式才生效的问题,初始化布局样式等(登录的时候触发,目前方案)\n // proxy.mittBus.emit('onSignInClick')\n }, 300)\n }\n return {\n currentTime,\n ruleFormsss,\n onSignIn,\n ...toRefs(state)\n }\n }\n})\n","import { render } from \"./account.vue?vue&type=template&id=32b82135&scoped=true&ts=true\"\nimport script from \"./account.vue?vue&type=script&lang=ts\"\nexport * from \"./account.vue?vue&type=script&lang=ts\"\n\nimport \"./account.vue?vue&type=style&index=0&id=32b82135&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-32b82135\"]])\n\nexport default __exports__","\nimport { toRefs, reactive, computed } from 'vue'\nimport Account from '@/views/login/component/account.vue'\nimport { useStore } from '@/store/index.ts'\nexport default {\n name: 'login',\n components: { Account },\n setup () {\n const store = useStore()\n const state = reactive({\n tabsActiveName: 'account',\n isTabPaneShow: true,\n isScan: false\n })\n // 获取布局配置信息\n const getThemeConfig = computed(() => {\n return store.state.themeConfig.themeConfig\n })\n // 切换密码、手机登录\n const onTabsClick = () => {\n state.isTabPaneShow = !state.isTabPaneShow\n }\n return {\n onTabsClick,\n getThemeConfig,\n ...toRefs(state)\n }\n }\n}\n","import { render } from \"./index.vue?vue&type=template&id=5cb1b9e5&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5cb1b9e5&scoped=true&lang=scss\"\n\nimport exportComponent from \"D:\\\\SourceCode\\\\czyyts\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5cb1b9e5\"]])\n\nexport default __exports__","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./account.vue?vue&type=style&index=0&id=32b82135&scoped=true&lang=scss\"","/**\n * 时间日期转换\n * @param date 当前时间,new Date() 格式\n * @param format 需要转换的时间格式字符串\n * @description format 字符串随意,如 `YYYY-mm、YYYY-mm-dd`\n * @description format 季度:\"YYYY-mm-dd HH:MM:SS QQQQ\"\n * @description format 星期:\"YYYY-mm-dd HH:MM:SS WWW\"\n * @description format 几周:\"YYYY-mm-dd HH:MM:SS ZZZ\"\n * @description format 季度 + 星期 + 几周:\"YYYY-mm-dd HH:MM:SS WWW QQQQ ZZZ\"\n * @returns 返回拼接后的时间字符串\n */\nexport function formatDate (date: Date, format: string): string {\n const we = date.getDay() // 星期\n const z = getWeek(date) // 周\n const qut = Math.floor((date.getMonth() + 3) / 3).toString() // 季度\n const opt: { [key: string]: string } = {\n 'Y+': date.getFullYear().toString(), // 年\n 'm+': (date.getMonth() + 1).toString(), // 月(月份从0开始,要+1)\n 'd+': date.getDate().toString(), // 日\n 'H+': date.getHours().toString(), // 时\n 'M+': date.getMinutes().toString(), // 分\n 'S+': date.getSeconds().toString(), // 秒\n 'q+': qut // 季度\n }\n // 中文数字 (星期)\n const week: { [key: string]: string } = {\n 0: '日',\n 1: '一',\n 2: '二',\n 3: '三',\n 4: '四',\n 5: '五',\n 6: '六'\n }\n // 中文数字(季度)\n const quarter: { [key: string]: string } = {\n 1: '一',\n 2: '二',\n 3: '三',\n 4: '四'\n }\n if (/(W+)/.test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length > 1 ? (RegExp.$1.length > 2 ? '星期' + week[we] : '周' + week[we]) : week[we]) }\n if (/(Q+)/.test(format)) format = format.replace(RegExp.$1, RegExp.$1.length === 4 ? '第' + quarter[qut] + '季度' : quarter[qut])\n if (/(Z+)/.test(format)) format = format.replace(RegExp.$1, RegExp.$1.length === 3 ? '第' + z + '周' : z + '')\n for (const k in opt) {\n const r = new RegExp('(' + k + ')').exec(format)\n // 若输入的长度不为1,则前面补零\n if (r) format = format.replace(r[1], RegExp.$1.length === 1 ? opt[k] : opt[k].padStart(RegExp.$1.length, '0'))\n }\n return format\n}\n\n/**\n * 获取当前日期是第几周\n * @param dateTime 当前传入的日期值\n * @returns 返回第几周数字值\n */\nexport function getWeek (dateTime: Date): number {\n const temptTime = new Date(dateTime.getTime())\n // 周几\n const weekday = temptTime.getDay() || 7\n // 周1+5天=周六\n temptTime.setDate(temptTime.getDate() - weekday + 1 + 5)\n let firstDay = new Date(temptTime.getFullYear(), 0, 1)\n const dayOfWeek = firstDay.getDay()\n let spendDay = 1\n if (dayOfWeek !== 0) spendDay = 7 - dayOfWeek + 1\n firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay)\n const d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000)\n const result = Math.ceil(d / 7)\n return result\n}\n\n/**\n * 将时间转换为 `几秒前`、`几分钟前`、`几小时前`、`几天前`\n * @param param 当前时间,new Date() 格式或者字符串时间格式\n * @param format 需要转换的时间格式字符串\n * @description param 10秒: 10 * 1000\n * @description param 1分: 60 * 1000\n * @description param 1小时: 60 * 60 * 1000\n * @description param 24小时:60 * 60 * 24 * 1000\n * @description param 3天: 60 * 60* 24 * 1000 * 3\n * @returns 返回拼接后的时间字符串\n */\nexport function formatPast (param: string | Date, format = 'YYYY-mm-dd'): string {\n // 传入格式处理、存储转换值\n let t: any, s: number\n // 获取js 时间戳\n let time: number = new Date().getTime()\n // 是否是对象\n typeof param === 'string' || 'object' ? (t = new Date(param).getTime()) : (t = param)\n // 当前时间戳 - 传入时间戳\n time = Number.parseInt(`${time - t}`)\n if (time < 10000) {\n // 10秒内\n return '刚刚'\n } else if (time < 60000 && time >= 10000) {\n // 超过10秒少于1分钟内\n s = Math.floor(time / 1000)\n return `${s}秒前`\n } else if (time < 3600000 && time >= 60000) {\n // 超过1分钟少于1小时\n s = Math.floor(time / 60000)\n return `${s}分钟前`\n } else if (time < 86400000 && time >= 3600000) {\n // 超过1小时少于24小时\n s = Math.floor(time / 3600000)\n return `${s}小时前`\n } else if (time < 259200000 && time >= 86400000) {\n // 超过1天少于3天内\n s = Math.floor(time / 86400000)\n return `${s}天前`\n } else {\n // 超过3天\n const date = typeof param === 'string' || 'object' ? new Date(param) : param\n return formatDate(date, format)\n }\n}\n\n/**\n * 时间问候语\n * @param param 当前时间,new Date() 格式\n * @description param 调用 `formatAxis(new Date())` 输出 `上午好`\n * @returns 返回拼接后的时间字符串\n */\nexport function formatAxis (param: Date): string {\n const hour: number = new Date(param).getHours()\n if (hour < 6) return '凌晨好'\n else if (hour < 9) return '早上好'\n else if (hour < 12) return '上午好'\n else if (hour < 14) return '中午好'\n else if (hour < 17) return '下午好'\n else if (hour < 19) return '傍晚好'\n else if (hour < 22) return '晚上好'\n else return '夜里好'\n}\n"],"sourceRoot":""}