Browse Source

chore:[双语调整] 一些页面双语修改

luojie
memorylkf 3 weeks ago
parent
commit
1de7127ecc
8 changed files with 177 additions and 102 deletions
  1. +1
    -1
      public/index.html
  2. +3
    -3
      src/components/Breadcrumb/index.vue
  3. +15
    -1
      src/lang/en.js
  4. +15
    -1
      src/lang/zh.js
  5. +6
    -6
      src/layout/components/Navbar.vue
  6. +5
    -4
      src/router/index.js
  7. +128
    -82
      src/utils/request.js
  8. +4
    -4
      src/views/login.vue

+ 1
- 1
public/index.html View File

@ -201,7 +201,7 @@
<div id="loader"></div>
<div class="loader-section section-left"></div>
<div class="loader-section section-right"></div>
<div class="load_title">正在加载系统资源,请耐心等待</div>
<div class="load_title">Loding</div>
</div>
</div>
</body>

+ 3
- 3
src/components/Breadcrumb/index.vue View File

@ -46,9 +46,9 @@ export default {
matched = router.matched.filter(item => item.meta && item.meta.title)
}
//
if (!this.isDashboard(matched[0])) {
matched = [{ path: "/index", meta: { title: "首页" } }].concat(matched)
}
// if (!this.isDashboard(matched[0])) {
// matched = [{ path: "/index", meta: { title: "1" } }].concat(matched)
// }
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
},
findPathNum(str, char = "/") {

+ 15
- 1
src/lang/en.js View File

@ -1,12 +1,26 @@
export default {
title: 'HXHQ',
system: {
tip: 'prompt',
logOut: 'Are you sure to log out and exit the system?'
},
btn: {
confirm: 'confirm',
cancel: 'cancel'
},
login: {
title: 'Login Form',
logIn: 'Login in',
username: 'Username',
usernameRequired: 'Please Enter Username',
password: 'Password',
passwordRequired: 'Please Enter Password',
code: 'Code',
rememberMe: 'Remember Me'
codeRequired: 'Please Enter Code',
rememberMe: 'Remember Me',
loginIng: 'Loging...',
logOut: 'logOut',
profile: 'profile'
},
tagsView: {
refresh: 'Refresh',

+ 15
- 1
src/lang/zh.js View File

@ -1,12 +1,26 @@
export default {
title: '华西海圻管理系统',
system: {
tip: '提示',
logOut: '确定注销并退出系统吗?'
},
btn: {
confirm: '确定',
cancel: '取消'
},
login: {
title: '华西海圻管理系统',
logIn: '登录',
username: '账号',
usernameRequired: '请输入您的账号',
password: '密码',
passwordRequired: '请输入您的密码',
code: '验证码',
rememberMe: '记住密码'
codeRequired: '请输入验证码',
rememberMe: '记住密码',
loginIng: '登 录 中...',
logOut: '退出登录',
profile: '个人中心'
},
tagsView: {
refresh: '刷新',

+ 6
- 6
src/layout/components/Navbar.vue View File

@ -26,10 +26,10 @@
</div>
<el-dropdown-menu slot="dropdown">
<router-link to="/user/profile">
<el-dropdown-item>个人中心</el-dropdown-item>
<el-dropdown-item>{{ $t('login.profile') }}</el-dropdown-item>
</router-link>
<el-dropdown-item divided @click.native="logout">
<span>退出登录</span>
<span>{{ $t('login.logOut') }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@ -89,13 +89,13 @@ export default {
this.$emit('setLayout')
},
logout() {
this.$confirm('确定注销并退出系统吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
this.$confirm(this.$t('system.logOut'), this.$t('system.tip'), {
confirmButtonText: this.$t('btn.confirm'),
cancelButtonText: this.$t('btn.cancel'),
type: 'warning'
}).then(() => {
this.$store.dispatch('LogOut').then(() => {
location.href = '/index'
location.href = '/user/work'
})
}).catch(() => {})
}

+ 5
- 4
src/router/index.js View File

@ -64,7 +64,7 @@ export const constantRoutes = [
{
path: '',
component: Layout,
redirect: 'index',
redirect: '/user/work',
children: [
{
path: 'index',
@ -72,7 +72,8 @@ export const constantRoutes = [
name: 'Index',
meta: { title: '首页', icon: 'dashboard', affix: true }
}
]
],
hidden: true
},
{
path: '/user',
@ -169,11 +170,11 @@ let routerPush = Router.prototype.push
let routerReplace = Router.prototype.replace
// push
Router.prototype.push = function push(location) {
return routerPush.call(this, location).catch(err => err)
return routerPush.call(this, location).catch((err) => err)
}
// replace
Router.prototype.replace = function push(location) {
return routerReplace.call(this, location).catch(err => err)
return routerReplace.call(this, location).catch((err) => err)
}
export default new Router({

+ 128
- 82
src/utils/request.js View File

@ -3,7 +3,7 @@ import { Notification, MessageBox, Message, Loading } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import { tansParams, blobValidate } from "@/utils/ruoyi"
import { tansParams, blobValidate } from '@/utils/ruoyi'
import cache from '@/plugins/cache'
import { saveAs } from 'file-saver'
@ -21,78 +21,112 @@ const service = axios.create({
})
// request拦截器
service.interceptors.request.use(config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 是否需要防止数据重复提交
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
// get请求映射params参数
if (config.method === 'get' && config.params) {
let url = config.url + '?' + tansParams(config.params)
url = url.slice(0, -1)
config.params = {}
config.url = url
}
if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
const requestObj = {
url: config.url,
data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
time: new Date().getTime()
service.interceptors.request.use(
(config) => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 是否需要防止数据重复提交
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
const requestSize = Object.keys(JSON.stringify(requestObj)).length // 请求数据大小
const limitSize = 5 * 1024 * 1024 // 限制存放数据5M
if (requestSize >= limitSize) {
console.warn(`[${config.url}]: ` + '请求数据大小超出允许的5M限制,无法进行防重复提交验证。')
return config
// get请求映射params参数
if (config.method === 'get' && config.params) {
let url = config.url + '?' + tansParams(config.params)
url = url.slice(0, -1)
config.params = {}
config.url = url
}
const sessionObj = cache.session.getJSON('sessionObj')
if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
cache.session.setJSON('sessionObj', requestObj)
} else {
const s_url = sessionObj.url // 请求地址
const s_data = sessionObj.data // 请求数据
const s_time = sessionObj.time // 请求时间
const interval = 1000 // 间隔时间(ms),小于此时间视为重复提交
if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
const message = '数据正在处理,请勿重复提交'
console.warn(`[${s_url}]: ` + message)
return Promise.reject(new Error(message))
} else {
if (
!isRepeatSubmit &&
(config.method === 'post' || config.method === 'put')
) {
const requestObj = {
url: config.url,
data:
typeof config.data === 'object'
? JSON.stringify(config.data)
: config.data,
time: new Date().getTime()
}
const requestSize = Object.keys(JSON.stringify(requestObj)).length // 请求数据大小
const limitSize = 5 * 1024 * 1024 // 限制存放数据5M
if (requestSize >= limitSize) {
console.warn(
`[${config.url}]: ` +
'请求数据大小超出允许的5M限制,无法进行防重复提交验证。'
)
return config
}
const sessionObj = cache.session.getJSON('sessionObj')
if (
sessionObj === undefined ||
sessionObj === null ||
sessionObj === ''
) {
cache.session.setJSON('sessionObj', requestObj)
} else {
const s_url = sessionObj.url // 请求地址
const s_data = sessionObj.data // 请求数据
const s_time = sessionObj.time // 请求时间
const interval = 1000 // 间隔时间(ms),小于此时间视为重复提交
if (
s_data === requestObj.data &&
requestObj.time - s_time < interval &&
s_url === requestObj.url
) {
const message = '数据正在处理,请勿重复提交'
console.warn(`[${s_url}]: ` + message)
return Promise.reject(new Error(message))
} else {
cache.session.setJSON('sessionObj', requestObj)
}
}
}
}
return config
}, error => {
return config
},
(error) => {
console.log(error)
Promise.reject(error)
})
}
)
// 响应拦截器
service.interceptors.response.use(res => {
service.interceptors.response.use(
(res) => {
// 未设置状态码则默认成功状态
const code = res.data.code || 200
// 获取错误信息
const msg = errorCode[code] || res.data.msg || errorCode['default']
// 二进制数据则直接返回
if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
if (
res.request.responseType === 'blob' ||
res.request.responseType === 'arraybuffer'
) {
return res.data
}
if (code === 401) {
if (!isRelogin.show) {
isRelogin.show = true
MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
isRelogin.show = false
store.dispatch('LogOut').then(() => {
location.href = '/index'
MessageBox.confirm(
'登录状态已过期,您可以继续留在该页面,或者重新登录',
'系统提示',
{
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning'
}
)
.then(() => {
isRelogin.show = false
store.dispatch('LogOut').then(() => {
location.href = '/user/work'
})
})
}).catch(() => {
isRelogin.show = false
})
}
.catch(() => {
isRelogin.show = false
})
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
Message({ message: msg, type: 'error' })
@ -107,15 +141,15 @@ service.interceptors.response.use(res => {
return res.data
}
},
error => {
(error) => {
console.log('err' + error)
let { message } = error
if (message == "Network Error") {
message = "后端接口连接异常"
} else if (message.includes("timeout")) {
message = "系统接口请求超时"
} else if (message.includes("Request failed with status code")) {
message = "系统接口" + message.substr(message.length - 3) + "异常"
if (message == 'Network Error') {
message = '后端接口连接异常'
} else if (message.includes('timeout')) {
message = '系统接口请求超时'
} else if (message.includes('Request failed with status code')) {
message = '系统接口' + message.substr(message.length - 3) + '异常'
}
Message({ message: message, type: 'error', duration: 5 * 1000 })
return Promise.reject(error)
@ -124,29 +158,41 @@ service.interceptors.response.use(res => {
// 通用下载方法
export function download(url, params, filename, config) {
downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
return service.post(url, params, {
transformRequest: [(params) => { return tansParams(params) }],
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
responseType: 'blob',
...config
}).then(async (data) => {
const isBlob = blobValidate(data)
if (isBlob) {
const blob = new Blob([data])
saveAs(blob, filename)
} else {
const resText = await data.text()
const rspObj = JSON.parse(resText)
const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
Message.error(errMsg)
}
downloadLoadingInstance.close()
}).catch((r) => {
console.error(r)
Message.error('下载文件出现错误,请联系管理员!')
downloadLoadingInstance.close()
downloadLoadingInstance = Loading.service({
text: '正在下载数据,请稍候',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
return service
.post(url, params, {
transformRequest: [
(params) => {
return tansParams(params)
}
],
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
responseType: 'blob',
...config
})
.then(async (data) => {
const isBlob = blobValidate(data)
if (isBlob) {
const blob = new Blob([data])
saveAs(blob, filename)
} else {
const resText = await data.text()
const rspObj = JSON.parse(resText)
const errMsg =
errorCode[rspObj.code] || rspObj.msg || errorCode['default']
Message.error(errMsg)
}
downloadLoadingInstance.close()
})
.catch((r) => {
console.error(r)
Message.error('下载文件出现错误,请联系管理员!')
downloadLoadingInstance.close()
})
}
export default service

+ 4
- 4
src/views/login.vue View File

@ -48,7 +48,7 @@
@click.native.prevent="handleLogin"
>
<span v-if="!loading">{{ $t('login.logIn') }}</span>
<span v-else> 中...</span>
<span v-else>{{ $t('login.loginIng') }}</span>
</el-button>
<div style="float: right;" v-if="register">
<router-link class="link-type" :to="'/register'">立即注册</router-link>
@ -86,12 +86,12 @@ export default {
},
loginRules: {
username: [
{ required: true, trigger: "blur", message: "请输入您的账号" }
{ required: true, trigger: "blur", message: this.$t('login.usernameRequired') }
],
password: [
{ required: true, trigger: "blur", message: "请输入您的密码" }
{ required: true, trigger: "blur", message: this.$t('login.passwordRequired') }
],
code: [{ required: true, trigger: "change", message: "请输入验证码" }]
code: [{ required: true, trigger: "change", message: this.$t('login.codeRequired') }]
},
loading: false,
//

Loading…
Cancel
Save