提交 62f9496b authored 作者: zyx's avatar zyx

update

上级 aef63a2c
......@@ -129,6 +129,7 @@ if ($GLOBAL.isDev === 'development') {
plugins: [
new CleanWebpackPlugin(['**/*'], { root: $GLOBAL.OutputPath }),
new MiniCssExtractPlugin({
filename: '[name].[contenthash:12].css',
chunkFilename: $GLOBAL.cssName
}),
new VueLoaderPlugin(),
......
......@@ -6517,6 +6517,11 @@
"integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==",
"dev": true
},
"js-cookie": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
"integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ=="
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
......
......@@ -66,6 +66,7 @@
"axios": "^0.19.2",
"cross-env": "^7.0.2",
"element-ui": "^2.13.0",
"js-cookie": "^2.2.1",
"lodash": "^4.17.15",
"promise.prototype.finally": "^3.1.2",
"vue": "^2.6.11",
......
import Cookies from 'js-cookie'
import VueI18n from 'vue-i18n'
import language from './language'
export default () => {
let _locale = 'zh-CN'
/* 国际化初始化 */
const lang = JSON.parse(window.localStorage.getItem('lang') || '{}')
if (lang.lang) {
_locale = lang.lang
} else {
_locale = window.navigator.language || window.navigator.userLanguage
const _defaultLocale = 'zh-CN'
const _lang = Cookies.get('lang') || window.navigator.language || window.navigator.userLanguage || ''
if (_lang) {
if (language[_lang]) {
_locale = _lang
} else {
let flag = true
/* 做一下 兼容性处理 */
for (const k in language) {
const reg = new RegExp(k, 'gi')
if (reg.test(_lang)) {
_locale = k
flag = false
break
}
}
if (flag) {
/* 当前语言版本 - 不再我们的语言库中,那么默认 en */
_locale = _defaultLocale
Cookies.set('lang', _defaultLocale, { expires: 30, domain: '.ezijing.com' })
}
}
}
return new VueI18n({
locale: _locale, // 定义默认语言为中文
......
/* 定义语言模型 - key 值定义 跟 languages i18n 中 保持一致 */
const language = {
'zh-CN': { show: '语言', arr: [{ 'zh-CN': '中文' }, { en: 'English' }] },
en: { show: 'Language', arr: [{ 'zh-CN': '中文' }, { en: 'English' }] }
}
export default language
<template>
<div class="err-container">
<img class="error-404" src="@/assets/images/404.png" alt="页面未找到" />
<div class="tit">很抱歉,您访问的页面已经断开...</div>
<div style="height: 20px; width: 100%;"></div>
<el-button type="primary" @click="goIndex">返回首页</el-button>
<el-button type="primary" @click="goPrev">返回上一页</el-button>
<div style="height: 50px; width: 100%;"></div>
</div>
</template>
<script>
export default {
mounted () {
// this.VueEvent.$emit('headerChange', '1-error') // 修改 头部导航
},
methods: {
goIndex () {
this.$router.push({ path: '/' })
},
goPrev () {
this.$router.go(-1)
}
}
}
</script>
<style lang="scss" scoped>
.err-container {
width: 100%;
// height: 100%;
text-align: center;
overflow: hidden;
.error-404 {
display: block;
width: 60%;
max-width: 600px;
margin: 10% auto;
}
.tit {
font-size: 24px;
color: #313131;
text-align: center;
}
}
</style>
<template>
<div class="err-container">
<img class="error-500" src="@/assets/images/500.png" alt="服务器错误" />
<div class="tit">很抱歉,您访问的服务器出错...</div>
<div style="height: 20px; width: 100%;"></div>
<el-button type="primary" @click="goIndex">返回首页</el-button>
<el-button type="primary" @click="goPrev">返回上一页</el-button>
<div style="height: 50px; width: 100%;"></div>
</div>
</template>
<script>
export default {
mounted () {
// this.VueEvent.$emit('headerChange', '1-error') // 修改 头部导航
},
methods: {
goIndex () {
this.$router.push({ path: '/' })
},
goPrev () {
this.$router.go(-1)
}
}
}
</script>
<style lang="scss" scoped>
.err-container {
width: 100%;
// height: 100%;
text-align: center;
overflow: hidden;
.error-500 {
display: block;
width: 60%;
max-width: 600px;
margin: 10% auto;
}
.tit {
font-size: 24px;
color: #313131;
text-align: center;
}
}
</style>
......@@ -14,26 +14,38 @@
</template>
<script>
/* 定义语言模型 - key 值定义 跟 languages i18n 中 保持一致 */
const language = {
'zh-CN': { show: '语言', arr: [{ 'zh-CN': '中文' }, { en: 'English' }] },
en: { show: 'Language', arr: [{ 'zh-CN': '中文' }, { en: 'English' }] }
}
import Cookies from 'js-cookie'
import language from '@/assets/languages/language'
export default {
name: 'sLanguage',
componentName: 'sLanguage',
data () {
const lang = JSON.parse(window.localStorage.getItem('lang') || '{}')
if (lang.lang) {
this.$i18n.locale = lang.lang
const _defaultLocale = 'zh-CN'
const _lang = Cookies.get('lang') || window.navigator.language || window.navigator.userLanguage || ''
if (_lang) {
if (language[_lang]) {
this.$i18n.locale = _lang
} else {
let flag = true
/* 做一下 兼容性处理 */
for (const k in language) {
const reg = new RegExp(k, 'gi')
if (reg.test(_lang)) {
this.$i18n.locale = k
flag = false
break
}
}
if (flag) {
/* 当前语言版本 - 不再我们的语言库中,那么默认 en */
this.$i18n.locale = _defaultLocale
Cookies.set('lang', _defaultLocale, { expires: 30, domain: '.ezijing.com' })
}
}
} else {
this.$i18n.locale = window.navigator.language || window.navigator.userLanguage
}
/* 兼容判断,如果不存在,则取 英文 */
if (!language[this.$i18n.locale]) {
this.$i18n.locale = 'en'
window.localStorage.setItem('lang', JSON.stringify({ lang: this.$i18n.locale }))
this.$i18n.locale = _defaultLocale
Cookies.set('lang', _defaultLocale, { expires: 30, domain: '.ezijing.com' })
}
let show = language[this.$i18n.locale].show
language[this.$i18n.locale].arr.forEach((item, i) => {
......@@ -49,7 +61,7 @@ export default {
mounted () {},
methods: {
handleSelect (key, val) {
window.localStorage.setItem('lang', JSON.stringify({ lang: key }))
Cookies.set('lang', key, { expires: 30, domain: '.ezijing.com' })
this.$i18n.locale = key
/* 刷新页面 */
this.$router.go(0)
......
import VueI18n from 'vue-i18n'
import language from './language'
export default () => {
let _locale = 'zh-CN'
/* 国际化初始化 */
const lang = JSON.parse(window.localStorage.getItem('lang') || '{}')
if (lang.lang) {
_locale = lang.lang
} else {
_locale = window.navigator.language || window.navigator.userLanguage
const _defaultLocale = 'zh-CN'
const _lang = Cookies.get('lang') || window.navigator.language || window.navigator.userLanguage || ''
if (_lang) {
if (language[_lang]) {
_locale = _lang
} else {
let flag = true
/* 做一下 兼容性处理 */
for (const k in language) {
const reg = new RegExp(k, 'gi')
if (reg.test(_lang)) {
_locale = k
flag = false
break
}
}
if (flag) {
/* 当前语言版本 - 不再我们的语言库中,那么默认 en */
_locale = _defaultLocale
Cookies.set('lang', _defaultLocale, { expires: 30, domain: '.ezijing.com' })
}
}
}
return new VueI18n({
locale: _locale, // 定义默认语言为中文
......
/* 定义语言模型 - key 值定义 跟 languages i18n 中 保持一致 */
const language = {
'zh-CN': { show: '语言', arr: [{ 'zh-CN': '中文' }, { en: 'English' }] },
en: { show: 'Language', arr: [{ 'zh-CN': '中文' }, { en: 'English' }] }
}
export default language
......@@ -58,7 +58,7 @@ export default {
}
},
mounted () {
Login.clearCookies({}).then(res => res)
// Login.clearCookies({}).then(res => res)
},
methods: {
onSubmitSetAccount () {
......
......@@ -21,6 +21,67 @@ export default [
},
/* App 内登录页面未找到时 - 指向 */
{ path: '/login/*', redirect: '/login/index' },
/* 学习系统 - 登录后,进入页面 */
{
path: '/app',
redirect: '/app/error/404',
component: App,
children: [
{ path: 'error/404', component: () => import('../components/error/404.vue') },
{
path: 'my-learn',
redirect: 'error/404',
component: container,
children: [
{ path: 'course', component: () => import('../pages/myLearn/course.vue') },
{ path: 'course-detail/:sid/:cid', component: () => import('../pages/myLearn/courseDetail.vue'), props: true },
{ path: 'discuss-detail/:sid/:cid/:id', component: () => import('../pages/myLearn/discussDetail.vue'), props: true },
{ path: 'course-all', component: () => import('../pages/myLearn/courseAll.vue') },
{ path: 'discussion', component: () => import('../pages/myLearn/discussion.vue') },
{ path: 'report-list', component: () => import('../pages/myLearn/reportList.vue') },
{ path: 'report-active-list', component: () => import('../pages/myLearn/reportActiveList.vue') },
{ path: 'report-list-all/:rid', component: () => import('../pages/myLearn/reportListAll.vue'), props: true },
{ path: 'report-add/:rid', component: () => import('../pages/myLearn/reportAdd.vue'), props: true },
{ path: 'report-submit/:rid/:reid', component: () => import('../pages/myLearn/reportSubmit.vue'), props: true }
]
},
{
path: 'my-grade',
redirect: 'error/404',
component: container,
children: [
{ path: 'credit', component: () => import('../pages/myGrade/credit.vue') },
{ path: 'rebuild', component: () => import('../pages/myGrade/rebuild.vue') },
{ path: 'message', component: () => import('../pages/myGrade/message.vue') }
]
},
{
path: 'account',
redirect: 'error/404',
component: container,
children: [
{ path: 'set-pwd', component: () => import('../pages/account/setPwd.vue') },
{ path: 'update-pic', component: () => import('../pages/account/updatePic.vue') },
{ path: 'feedbackList', component: () => import('../pages/account/feedbackList.vue') },
{ path: 'feedbackCreate', component: () => import('../pages/account/feedbackCreate.vue') }
]
},
{
path: 'service-hall',
redirect: 'error/404',
component: container,
children: [
{ path: 'hall', component: () => import('../pages/serviceHall/hall.vue') },
{ path: 'learning-add/:rid', component: () => import('../pages/serviceHall/learningAdd.vue'), props: true },
{ path: 'share-add/:rid', component: () => import('../pages/serviceHall/shareAdd.vue'), props: true },
{ path: 'again-add/:rid', component: () => import('../pages/serviceHall/againAdd.vue'), props: true },
{ path: 'my-apply', component: () => import('../pages/serviceHall/myApply.vue'), props: true },
{ path: 'upload-report/:rid/:reid', component: () => import('../pages/serviceHall/uploadReport.vue'), props: true },
{ path: 'view-report/:rid', component: () => import('../pages/serviceHall/viewReport.vue'), props: true }
]
}
]
},
/* 如果所有页面都没找到 - 指向 */
{ path: '*', component: () => import('../pages/test.vue') }
{ path: '*', component: () => import('@/components/errorPages/404.vue') }
]
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论