@@ -455,7 +455,7 @@ export default { | |||||
.then(({ data: res }) => { | .then(({ data: res }) => { | ||||
if (res && res.code === 0) { | if (res && res.code === 0) { | ||||
this.$message({ | this.$message({ | ||||
message: btn.name === 'save' ? '添加成功!' : '更新成功!', | |||||
message: btn.name === 'save' ? i18n.t('prompt.success') : '更新成功!', | |||||
type: 'success', | type: 'success', | ||||
duration: 1500, | duration: 1500, | ||||
onClose: () => { | onClose: () => { | ||||
@@ -1,6 +1,8 @@ | |||||
<template> | <template> | ||||
<div class="attr-form"> | <div class="attr-form"> | ||||
<h3>{{ title }} <el-button style="margin-left: 8px;" type="text" v-if="!isDetail && !showAddAttr" @click="showAddAttr = true">添加</el-button></h3> | |||||
<h3> | |||||
{{ title }} <el-button style="margin-left: 8px;" type="text" v-if="!isDetail && !showAddAttr" @click="showAddAttr = true">{{ $t('add') }}</el-button> | |||||
</h3> | |||||
<div v-if="!showAddAttr"> | <div v-if="!showAddAttr"> | ||||
<component | <component | ||||
key="sub-table" | key="sub-table" | ||||
@@ -28,7 +30,7 @@ | |||||
<el-row :gutter="20" style="padding: 0 24px;"> | <el-row :gutter="20" style="padding: 0 24px;"> | ||||
<el-col :span="attrFormFields.length > 6 ? 6 : 12" v-for="field in attrFormFields" :key="field.prop + 'col'"> | <el-col :span="attrFormFields.length > 6 ? 6 : 12" v-for="field in attrFormFields" :key="field.prop + 'col'"> | ||||
<el-form-item :key="field.prop" :prop="field.prop" :label="field.name" style="width: 100%"> | <el-form-item :key="field.prop" :prop="field.prop" :label="field.name" style="width: 100%"> | ||||
<el-input v-if="field.formType === 'input' || !field.formType" v-model="AttrForm[field.prop]" placeholder="请填写" clearable /> | |||||
<el-input v-if="field.formType === 'input' || !field.formType" v-model="AttrForm[field.prop]" :placeholder="$t('hints.input')" clearable /> | |||||
<el-select v-if="field.formType === 'select'" v-model="AttrForm[field.prop]" clearable> | <el-select v-if="field.formType === 'select'" v-model="AttrForm[field.prop]" clearable> | ||||
<el-option v-for="opt in field.formOptions" :key="opt.value" :label="opt.label" :value="opt.value" /> | <el-option v-for="opt in field.formOptions" :key="opt.value" :label="opt.label" :value="opt.value" /> | ||||
</el-select> | </el-select> | ||||
@@ -51,7 +53,7 @@ | |||||
import i18n from '@/i18n' | import i18n from '@/i18n' | ||||
import BaseTable from '@/components/base-table' | import BaseTable from '@/components/base-table' | ||||
import { pick } from 'lodash/object' | import { pick } from 'lodash/object' | ||||
import { calcMaxHeight } from '@/utils' | |||||
export default { | export default { | ||||
name: 'AttrForm', | name: 'AttrForm', | ||||
components: { BaseTable }, | components: { BaseTable }, | ||||
@@ -91,6 +93,7 @@ export default { | |||||
}, | }, | ||||
data() { | data() { | ||||
return { | return { | ||||
calcMaxHeight, | |||||
showAddAttr: false, | showAddAttr: false, | ||||
dataList: [], | dataList: [], | ||||
pageIndex: 1, | pageIndex: 1, | ||||
@@ -201,7 +204,7 @@ export default { | |||||
deleteHandle(id) { | deleteHandle(id) { | ||||
var ids = id ? [id] : [] | var ids = id ? [id] : [] | ||||
this.$confirm(`确定对id=${ids.join(',')}进行${id ? i18n.t('delete') : i18n.t('deleteBatch')}操作?`, i18n.t('prompt.title'), { | |||||
this.$confirm(`${i18n.t('prompt.info', { handle: id ? i18n.t('delete').toLowerCase() : i18n.t('deleteBatch').toLowerCase() })}`, i18n.t('prompt.title'), { | |||||
confirmButtonText: i18n.t('confirm'), | confirmButtonText: i18n.t('confirm'), | ||||
cancelButtonText: i18n.t('cancel'), | cancelButtonText: i18n.t('cancel'), | ||||
type: 'warning' | type: 'warning' | ||||
@@ -110,7 +110,7 @@ import i18n from '@/i18n' | |||||
const title = { | const title = { | ||||
detail: i18n.t('detail'), | detail: i18n.t('detail'), | ||||
add: i18n.t('add'), | add: i18n.t('add'), | ||||
edit: '编辑' | |||||
edit: i18n.t('edit') | |||||
} | } | ||||
// 或者也可以改造成自定义颜色: | // 或者也可以改造成自定义颜色: | ||||
@@ -124,9 +124,9 @@ const btnType = { | |||||
const btnName = { | const btnName = { | ||||
// for i18n | // for i18n | ||||
save: '保存', | |||||
update: '更新', | |||||
reset: '重置', | |||||
save: i18n.t('save'), | |||||
update: i18n.t('update'), | |||||
reset: i18n.t('reset'), | |||||
cancel: i18n.t('cancel') | cancel: i18n.t('cancel') | ||||
// add more... | // add more... | ||||
} | } | ||||
@@ -207,7 +207,7 @@ export default { | |||||
}, | }, | ||||
mounted() { | mounted() { | ||||
/** 计算 defaultPlaceholders */ | /** 计算 defaultPlaceholders */ | ||||
const prefix = '请输入' | |||||
const prefix = i18n.t('hints.input') | |||||
Object.entries(this.defaultNames).map(([key, value]) => { | Object.entries(this.defaultNames).map(([key, value]) => { | ||||
this.defaultPlaceholders[key] = prefix + value | this.defaultPlaceholders[key] = prefix + value | ||||
}) | }) | ||||
@@ -251,7 +251,7 @@ export default { | |||||
if (item.required) { | if (item.required) { | ||||
const requiredRule = { | const requiredRule = { | ||||
required: true, | required: true, | ||||
message: '请输入必填项', | |||||
message: i18n.t('validate.required'), | |||||
trigger: 'change' | trigger: 'change' | ||||
} | } | ||||
/** 检查是否已经存在该字段的规则 */ | /** 检查是否已经存在该字段的规则 */ | ||||
@@ -296,19 +296,14 @@ export default { | |||||
this.configs.extraComponents && | this.configs.extraComponents && | ||||
this.configs.extraComponents.forEach(item => { | this.configs.extraComponents.forEach(item => { | ||||
if (Object.hasOwn(this.dataForm, [item.name])) { | if (Object.hasOwn(this.dataForm, [item.name])) { | ||||
console.log('有了!') | |||||
return | return | ||||
} else { | } else { | ||||
console.log('新建!') | |||||
this.$set(this.dataForm, [item.name], calDefault(item.fieldType)) | this.$set(this.dataForm, [item.name], calDefault(item.fieldType)) | ||||
} | } | ||||
console.log('component: ', item.component) | |||||
}) | }) | ||||
/** 单独设置 id */ | /** 单独设置 id */ | ||||
this.$set(this.dataForm, 'id', null) | this.$set(this.dataForm, 'id', null) | ||||
console.log('mounted: this.dataForm', JSON.stringify(this.dataForm)) | |||||
}) | }) | ||||
}, | }, | ||||
@@ -335,7 +330,7 @@ export default { | |||||
: this.defaultPlaceholders[opt.name] | : this.defaultPlaceholders[opt.name] | ||||
? this.defaultPlaceholders[opt.name] | ? this.defaultPlaceholders[opt.name] | ||||
: opt.label | : opt.label | ||||
? (opt.type === 'select' ? i18n.t('choose') : '请输入') + opt.label | |||||
? (opt.type === 'select' ? i18n.t('choose') : i18n.t('hints.input')) + opt.label | |||||
: null | : null | ||||
// : opt.type === 'select' | // : opt.type === 'select' | ||||
@@ -402,7 +397,6 @@ export default { | |||||
this.fileForm[file.typeCode] = [file.id] | this.fileForm[file.typeCode] = [file.id] | ||||
} | } | ||||
}) | }) | ||||
console.log('after分流:', this.fileList) | |||||
} | } | ||||
} | } | ||||
}) | }) | ||||
@@ -411,12 +405,12 @@ export default { | |||||
if (this.shouldWait) | if (this.shouldWait) | ||||
this.shouldWait.then(() => { | this.shouldWait.then(() => { | ||||
if (this.tempForm.length) { | if (this.tempForm.length) { | ||||
console.log('create new, tempform', JSON.stringify(this.tempForm.length)) | |||||
// console.log('create new, tempform', JSON.stringify(this.tempForm.length)) | |||||
this.tempForm.forEach(item => { | this.tempForm.forEach(item => { | ||||
console.log('item data', item.data) | |||||
// console.log('item data', item.data) | |||||
this.dataForm[item.name] = item.data | this.dataForm[item.name] = item.data | ||||
}) | }) | ||||
console.log('create new, dataform', JSON.stringify(this.dataForm)) | |||||
// console.log('create new, dataform', JSON.stringify(this.dataForm)) | |||||
} | } | ||||
}) | }) | ||||
} | } | ||||
@@ -427,9 +421,7 @@ export default { | |||||
this.$emit('select-change', { name, id }) | this.$emit('select-change', { name, id }) | ||||
}, | }, | ||||
handleEditorReady(val) { | |||||
console.log('editor rready..', val) | |||||
}, | |||||
handleEditorReady(val) {}, | |||||
handleClick(btn) { | handleClick(btn) { | ||||
/** 提取url */ | /** 提取url */ | ||||
@@ -448,7 +440,6 @@ export default { | |||||
if (valid) { | if (valid) { | ||||
/** 对于文件上传的单独处理(合并处理) */ | /** 对于文件上传的单独处理(合并处理) */ | ||||
if (Object.keys(this.fileForm).length) { | if (Object.keys(this.fileForm).length) { | ||||
console.log('fileform 有值') | |||||
// LABEL: FILE_RELATED | // LABEL: FILE_RELATED | ||||
let fileIds = [] | let fileIds = [] | ||||
for (const [key, item] of Object.entries(this.fileForm)) { | for (const [key, item] of Object.entries(this.fileForm)) { | ||||
@@ -471,7 +462,8 @@ export default { | |||||
.then(({ data: res }) => { | .then(({ data: res }) => { | ||||
if (res && res.code === 0) { | if (res && res.code === 0) { | ||||
this.$message({ | this.$message({ | ||||
message: btn.name === 'save' ? '添加成功!' : '更新成功!', | |||||
message: i18n.t('prompt.success'), | |||||
// message: btn.name === 'save' ? i18n.t('prompt.success') : '更新成功!', | |||||
type: 'success', | type: 'success', | ||||
duration: 1500, | duration: 1500, | ||||
onClose: () => { | onClose: () => { | ||||
@@ -512,7 +504,7 @@ export default { | |||||
// LABEL: FILE_RELATED | // LABEL: FILE_RELATED | ||||
handleUploadListUpdate(filelist, typeCode = 'DefaultTypeCode') { | handleUploadListUpdate(filelist, typeCode = 'DefaultTypeCode') { | ||||
console.log('before handleUploadListUpdate(): ', JSON.parse(JSON.stringify(this.fileForm))) | |||||
// console.log('before handleUploadListUpdate(): ', JSON.parse(JSON.stringify(this.fileForm))) | |||||
// 设备类型 typeCode: EquipmentTypeFile | // 设备类型 typeCode: EquipmentTypeFile | ||||
// 设备信息 typeCode: EquipmentInfoFile | EquipmentInfoImage | // 设备信息 typeCode: EquipmentInfoFile | EquipmentInfoImage | ||||
@@ -529,7 +521,7 @@ export default { | |||||
typeCode, | typeCode, | ||||
filelist.map(item => item.id) | filelist.map(item => item.id) | ||||
) | ) | ||||
console.log('after handleUploadListUpdate(): ', this.fileForm) | |||||
// console.log('after handleUploadListUpdate(): ', this.fileForm) | |||||
}, | }, | ||||
handleClose() { | handleClose() { | ||||
@@ -1,11 +1,5 @@ | |||||
/** | |||||
* @Author: lb | |||||
* @CreateDate: 2022.8.8 | |||||
* @Modifier: | |||||
* @ModifiedDate: | |||||
* 表格里的文本组件 | |||||
* 一般用途:展示查看详情入口 | |||||
*/ | |||||
import i18n from '@/i18n' | |||||
export default { | export default { | ||||
name: 'TableTextComponent', | name: 'TableTextComponent', | ||||
props: { | props: { | ||||
@@ -17,12 +11,12 @@ export default { | |||||
data() { | data() { | ||||
return { | return { | ||||
// for i18n inject: | // for i18n inject: | ||||
defaultText: '查看详情' | |||||
defaultText: i18n.t('viewdetail') | |||||
} | } | ||||
}, | }, | ||||
methods: { | methods: { | ||||
emitClick() { | emitClick() { | ||||
console.log('inject data:' ,this.injectData) | |||||
// console.log('inject data:' ,this.injectData) | |||||
this.$emit('emit-data', { | this.$emit('emit-data', { | ||||
type: this.injectData.head?.actionName || 'view-detail-action', | type: this.injectData.head?.actionName || 'view-detail-action', | ||||
data: this.injectData.head?.emitFullData ? this.injectData : this.injectData.id | data: this.injectData.head?.emitFullData ? this.injectData : this.injectData.id | ||||
@@ -1,11 +1,5 @@ | |||||
/** | |||||
* @Author: lb | |||||
* @CreateDate: 2022.8.8 | |||||
* @Modifier: | |||||
* @ModifiedDate: | |||||
* 表格里的操作组件 | |||||
* 一般用途:展示添加删除按钮 | |||||
*/ | |||||
import i18n from '@/i18n' | |||||
export default { | export default { | ||||
name: 'TableOperations', | name: 'TableOperations', | ||||
props: { | props: { | ||||
@@ -30,12 +24,12 @@ export default { | |||||
}, | }, | ||||
text: { | text: { | ||||
// TODO: i18n | // TODO: i18n | ||||
edit: '编辑', | |||||
detail: '详情', | |||||
delete: '删除', | |||||
viewAttr: '查看属性', | |||||
preview: '预览', | |||||
design: '设计' | |||||
edit: i18n.t('edit'), | |||||
detail: i18n.t('detail'), | |||||
delete: i18n.t('delete'), | |||||
viewAttr: i18n.t('viewattr'), | |||||
preview: i18n.t('preview'), | |||||
design: i18n.t('design'), | |||||
// add more... | // add more... | ||||
} | } | ||||
} | } | ||||
@@ -13,7 +13,7 @@ | |||||
<!-- :before-remove="beforeRemove" --> | <!-- :before-remove="beforeRemove" --> | ||||
<!-- accept="image/*" --> | <!-- accept="image/*" --> | ||||
<!-- <el-upload class="yd-upload" :action="$http.adornUrl(url)" multiple name="files" :data="extraParams" :file-list="fileList" :on-remove="handleRemove" :before-remove="beforeRemove"> --> | <!-- <el-upload class="yd-upload" :action="$http.adornUrl(url)" multiple name="files" :data="extraParams" :file-list="fileList" :on-remove="handleRemove" :before-remove="beforeRemove"> --> | ||||
<el-button :disabled="readOnly" size="small" type="primary">{{ buttonContent }}</el-button> | |||||
<el-button :disabled="readOnly" type="primary">{{ buttonContent }}</el-button> | |||||
<div v-if="tip" slot="tip" class="el-upload__tip">{{ tip }}</div> | <div v-if="tip" slot="tip" class="el-upload__tip">{{ tip }}</div> | ||||
</el-upload> | </el-upload> | ||||
</div> | </div> | ||||
@@ -101,8 +101,6 @@ export default { | |||||
/** 大小验证,由配置文件开启 */ | /** 大小验证,由配置文件开启 */ | ||||
validateFile(file) { | validateFile(file) { | ||||
console.log('[*] 验证文件大小') | |||||
const isRightSize = file.size / 1024 / 1024 < 2 | const isRightSize = file.size / 1024 / 1024 < 2 | ||||
if (!isRightSize) { | if (!isRightSize) { | ||||
// this.$message.error(this.$t('upload.picSizeAlarm')) | // this.$message.error(this.$t('upload.picSizeAlarm')) | ||||
@@ -156,7 +154,6 @@ export default { | |||||
alink.style.display = 'none' | alink.style.display = 'none' | ||||
alink.target = '_blank' | alink.target = '_blank' | ||||
alink.href = URL.createObjectURL(blob) | alink.href = URL.createObjectURL(blob) | ||||
console.log('下载地址:', alink.href) | |||||
document.body.appendChild(alink) | document.body.appendChild(alink) | ||||
alink.click() | alink.click() | ||||
URL.revokeObjectURL(alink.href) | URL.revokeObjectURL(alink.href) | ||||
@@ -184,12 +181,19 @@ export default { | |||||
margin-bottom: 20px; | margin-bottom: 20px; | ||||
} | } | ||||
.base-upload >>> .el-upload--text { | |||||
width: 100px; | |||||
.base-upload >>> .el-button { | |||||
display: block; | |||||
width: 200px; | |||||
position: relative; | position: relative; | ||||
left: -72px; | |||||
left: -100px; | |||||
} | } | ||||
/* .base-upload >>> .el-upload--text { | |||||
width: 100px; | |||||
position: relative; | |||||
left: -100px; | |||||
} */ | |||||
.base-upload >>> .el-upload__tip { | .base-upload >>> .el-upload__tip { | ||||
margin-top: 0; | margin-top: 0; | ||||
margin-left: 5px; | margin-left: 5px; | ||||
@@ -7,6 +7,7 @@ t.brand = {} | |||||
t.brand.lg = 'Monitoring System' | t.brand.lg = 'Monitoring System' | ||||
t.brand.mini = 'PMS' | t.brand.mini = 'PMS' | ||||
t.save = 'Save' | |||||
t.add = 'Add' | t.add = 'Add' | ||||
t.delete = 'Delete' | t.delete = 'Delete' | ||||
t.deleteBatch = 'Delete Batch' | t.deleteBatch = 'Delete Batch' | ||||
@@ -68,7 +69,7 @@ t.enname = 'English Name' | |||||
t.collectOrNot = 'Collect or not' | t.collectOrNot = 'Collect or not' | ||||
t.min = 'Min Value' | t.min = 'Min Value' | ||||
t.max = 'Max Value' | t.max = 'Max Value' | ||||
t.status = 'Status', | |||||
t.status = 'Status' | |||||
t.normal = 'Normal' | t.normal = 'Normal' | ||||
t.addr = 'Address' | t.addr = 'Address' | ||||
t.planStop = 'Plan to stop' | t.planStop = 'Plan to stop' | ||||
@@ -76,18 +77,421 @@ t.startTime = 'Start Time' | |||||
t.endTime = 'End Time' | t.endTime = 'End Time' | ||||
t.today = 'Today' | t.today = 'Today' | ||||
t.graph = 'Graph' | |||||
t.category = 'Category' | |||||
t.categoryName = 'Category Name' | |||||
t.categoryCode = 'Category Code' | |||||
t.rate = 'Rate' | |||||
t.link = 'Link Url' | |||||
t.refresh = 'Refresh' | |||||
t.abbr = 'Abbreviation' | |||||
t.detail = 'Details' | |||||
t.viewdetail = 'Details' | |||||
t.viewattr = 'View Attributions' | |||||
t.edit = 'Edit' | |||||
t.source = 'Source' | |||||
t.auto = 'Auto' | |||||
t.manual = 'Manually' | |||||
t.loaddone = 'Loaded' | |||||
t.produceTime = 'Date of manufacture' | |||||
t.enterTime = 'Enter Time' | |||||
t.manufacturer = 'Manufacturer' | |||||
t.success = 'success!' | |||||
t.all = 'All' | |||||
t.reset = 'Reset' | |||||
t.preview = 'Preview' | |||||
t.design = 'Design' | |||||
t.errors = {} | |||||
t.errors.nosection = 'There is no sections on this product line.' | |||||
t.errors.numsection = 'There are {num} sections on this product line.' | |||||
t.errors.nodata = 'Error, no data available!' | |||||
t.hints = {} | |||||
t.hints.input = 'Please input ' | |||||
t.hints.select = 'Please select ' | |||||
t.hints.date = 'Please select date' | |||||
t.hints.checktime = 'Please select inspection time' | |||||
t.hints.number = 'Please input correct number' | |||||
t.hints.addr = 'Please input address' | |||||
t.hints.upload2m = 'File size cannot be larger than 2mb (2048kb)' | |||||
t.hints.upload2mPic = 'Image files only. File size cannot be larger than 2mb (2048kb)' | |||||
t.factory = {} | |||||
t.factory.title = 'Factory' | |||||
t.factory.name = 'Factory Name' | |||||
t.factory.code = 'Factory Code' | |||||
t.prod = {} | |||||
t.prod.id = 'Product ID' | |||||
t.prod.name = 'Product Name' | |||||
t.prod.code = 'Product Code' | |||||
t.prod.type = 'Product Type' | |||||
t.prod.area = 'Area' | |||||
t.prod.spec = 'Product Specification' | |||||
t.prod.attr = 'Dynamic Attributes' | |||||
t.prod.attrcode = 'Attribute Code' | |||||
t.prod.attrcodeHints = 'Please input attribute code' | |||||
t.prod.attrname = 'Attribute Node' | |||||
t.prod.attrnameHints = 'Please input attribute name' | |||||
t.prod.attrvalueHints = 'Please input attribute value' | |||||
t.prod.descHints = 'Please input description' | |||||
t.prod.processTime = 'Processing Time' | |||||
t.prod.processTimeHints = 'Please input processing time' | |||||
t.prod.relatedPid = 'Related Product' | |||||
t.alarm = {} | |||||
t.alarm.name = 'Alarm' | |||||
t.alarm.info = 'Alarm Informations' | |||||
t.alarm.view = 'View Alarm' | |||||
t.alarm.eq = 'Alarm Equipment' | |||||
t.alarm.type = 'Alarm Type' | |||||
t.alarm.code = 'Alarm Code' | |||||
t.alarm.level = 'Alarm Level' | |||||
t.alarm.content = 'Alarm Content' | |||||
t.alarm.source = 'Alarm Source' | |||||
t.alarm.det = 'Alarm Details' | |||||
t.report = {} | |||||
t.report.name = 'Report Name' | |||||
t.report.det = 'Report Content' | |||||
t.report.type = 'Report Type' | |||||
t.report.code = 'Report Code' | |||||
t.report.lnk = 'Report Url' | |||||
t.inspect = {} | |||||
t.inspect.type = 'Inspection Type' | |||||
t.inspect.code = 'Inspection Code' | |||||
t.inspect.det = 'Inspection Details' | |||||
t.inspect.detcode = 'Inspection Content Code' | |||||
t.inspect.people = 'Inspector' | |||||
t.inspect.time = 'Inspection Time' | |||||
t.inspect.typetotal = 'Total Inspection Types' | |||||
t.inspect.typename = 'Inspection Type' | |||||
t.inspect.typecode = 'Inspection Code' | |||||
t.inspect.ioTotal = 'Data of input/output and total inspections' | |||||
t.inspect.plTotal = 'Inspection types per line' | |||||
t.inspect.inTotal = 'Up Sum' | |||||
t.inspect.outTotal = 'Down Sum' | |||||
t.inspect.checkTotal = 'Total Inspections' | |||||
t.inspect.rate = 'Rate' | |||||
t.inspect.typeCount = 'Data of inspection types' | |||||
t.realtime = {} | |||||
t.realtime.eq = 'Realtime data of equipments' | |||||
t.realtime.pl = 'Realtime data of product lines' | |||||
t.realtime.inspect = 'Realtime data of quality inspections' | |||||
t.realtime.in = 'in' | |||||
t.realtime.out = 'out' | |||||
t.realtime.data = 'scrap' | |||||
t.realtime.num = 'scrap quantity' | |||||
t.realtime.rate = 'scrap rate' | |||||
t.realtime.total = 'total production' | |||||
t.realtime.goodrate = 'Passed Rate' | |||||
t.ws = {} | |||||
t.ws.title = 'Work Section' | |||||
t.ws.id = 'Work Section ID' | |||||
t.ws.name = 'Work Section Name' | |||||
t.ws.code = 'Work Section Code' | |||||
t.ws.binded = 'Binded Equipments' | |||||
t.ws.unbind = 'Please select an equipment to bind.' | |||||
t.ws.sort = 'sort' | |||||
t.ws.setorder = 'Please input order of equipments in the work section.' | |||||
t.ws.bind = 'bind' | |||||
t.ws.eqbind = 'Binded Equipment(s)' | |||||
t.ws.belong = 'Product Line' | |||||
t.file = {} | |||||
t.file.title = 'File' | |||||
t.file.name = 'File Name' | |||||
t.file.code = 'File Code' | |||||
t.file.typeName = 'File Type' | |||||
t.file.typeCode = 'File Type Code' | |||||
t.eq = {} | |||||
t.eq.title = 'Equipment' | |||||
t.eq.id = 'Equipment ID' | |||||
t.eq.name = 'Equipment Name' | |||||
t.eq.code = 'Equipment Code' | |||||
t.eq.type = 'Equipment Type' | |||||
t.eq.grade = 'Specification of equipment' | |||||
t.eq.group = 'Equipment Group' | |||||
t.eq.groupname = 'Group Name' | |||||
t.eq.groupcode = 'Group Code' | |||||
t.eq.excode = 'External Code' | |||||
t.eq.input = 'Input Device' | |||||
t.eq.output = 'Output Device' | |||||
t.eq.tvalue = 'Device\'s TT Value' | |||||
t.eq.processingTime = 'Processing Time (s)' | |||||
t.eq.dtype = 'Data source' | |||||
t.eq.dtypenone = 'none' | |||||
t.eq.dtypeinput = 'Input Data Device' | |||||
t.eq.dtypeoutput = 'Output Data Device' | |||||
t.eq.upload = 'Upload' | |||||
t.eq.image = 'Equipment Pictures' | |||||
t.eq.viewattr = 'Equipment Attributions' | |||||
t.eq.plcbarcode = 'PLC Bar Code' | |||||
t.eq.plccode = 'PLC Code' | |||||
t.eq.plcname = 'PLC Name' | |||||
t.eq.port = 'Port' | |||||
t.eq.type = 'Type' | |||||
t.eq.typecode = 'Type Code' | |||||
t.eq.parent = 'Parent' | |||||
t.pl = {} | |||||
t.pl.title = 'Product Line' | |||||
t.pl.id = 'Product Line ID' | |||||
t.pl.name = 'Product Line Name' | |||||
t.pl.code = 'Product Line Code' | |||||
t.pl.status = 'Product Line Status' | |||||
t.pl.belong = 'Product Line' | |||||
t.pl.tvalue = 'TT Value' | |||||
t.pl.factoryHints = 'Please select a factory' | |||||
t.prompt = {} | |||||
t.prompt.title = 'Prompt' | |||||
t.prompt.info = 'Are you sure to {handle}?' | |||||
t.prompt.sure = 'Are you sure to delete this record?' | |||||
t.prompt.success = 'success' | |||||
t.prompt.failed = 'failed' | |||||
t.prompt.deleteBatch = 'Please choose items to delete.' | |||||
t.validate = {} | |||||
t.validate.required = 'This is required.' | |||||
t.validate.format = '{attr} has a wrong format.' | |||||
t.upload = {} | |||||
t.upload.title = 'Upload Assets' | |||||
t.upload.text = '将文件拖到此处,或<em>点击上传</em>' | |||||
t.upload.tip = 'Only support files with format: {format}' | |||||
t.upload.button = 'upload' | |||||
t.datePicker = {} | |||||
t.datePicker.range = 'to' | |||||
t.datePicker.start = 'Start Time' | |||||
t.datePicker.end = 'End Time' | |||||
t.fullscreen = {} | |||||
t.fullscreen.prompt = 'This operation is not supported by your browser.' | |||||
t.updatePassword = {} | |||||
t.updatePassword.title = 'Update Password' | |||||
t.updatePassword.username = 'Username' | |||||
t.updatePassword.password = 'Current Password' | |||||
t.updatePassword.newPassword = 'New Password' | |||||
t.updatePassword.confirmPassword = 'Confirm Password' | |||||
t.updatePassword.validate = {} | |||||
t.updatePassword.validate.confirmPassword = 'The two passwords are different. Please check again.' | |||||
t.contentTabs = {} | |||||
t.contentTabs.closeCurrent = 'Close current tab' | |||||
t.contentTabs.closeOther = 'Close other tabs' | |||||
t.contentTabs.closeAll = 'Close all tabs' | |||||
/* 页面 */ | |||||
t.notFound = {} | |||||
t.notFound.desc = 'Sorry! The page you\'re looking is missing.' | |||||
t.notFound.back = 'Back' | |||||
t.notFound.home = 'Home Page' | |||||
t.login = {} | t.login = {} | ||||
t.login.title = 'Login' | t.login.title = 'Login' | ||||
t.login.username = 'Username' | t.login.username = 'Username' | ||||
t.login.password = 'Password' | t.login.password = 'Password' | ||||
t.login.captcha = 'Validation Code' | |||||
t.login.captcha = 'Captcha' | |||||
t.login.demo = 'Demo' | t.login.demo = 'Demo' | ||||
t.login.copyright = 'CNBM' | |||||
t.login.copyright = 'Copyright @Intelligent Automation Research Institute Co., Ltd Version: 1.0' | |||||
t.prompt = {} | |||||
t.prompt.title = 'Prompt' | |||||
t.prompt.info = 'Are you sure to {handle}?' | |||||
t.schedule = {} | |||||
t.schedule.beanName = 'bean名称' | |||||
t.schedule.beanNameTips = 'spring bean名称, 如: testTask' | |||||
t.schedule.pauseBatch = 'Pause' | |||||
t.schedule.resumeBatch = 'Resume' | |||||
t.schedule.runBatch = 'Run' | |||||
t.schedule.log = '日志列表' | |||||
t.schedule.params = '参数' | |||||
t.schedule.cronExpression = 'cron expression' | |||||
t.schedule.cronExpressionTips = 'ex: 0 0 12 * * ?' | |||||
t.schedule.remark = 'Remark' | |||||
t.schedule.status = 'Status' | |||||
t.schedule.status0 = 'Pause' | |||||
t.schedule.status1 = 'Normal' | |||||
t.schedule.statusLog0 = 'Failed' | |||||
t.schedule.statusLog1 = 'Success' | |||||
t.schedule.pause = 'Pause' | |||||
t.schedule.resume = 'Resume' | |||||
t.schedule.run = 'Excute' | |||||
t.schedule.jobId = 'Job ID' | |||||
t.schedule.times = 'Time Cost (ms)' | |||||
t.schedule.createDate = '执行时间' | |||||
t.oss = {} | |||||
t.oss.config = '云存储配置' | |||||
t.oss.upload = '上传文件' | |||||
t.oss.url = 'URL地址' | |||||
t.oss.createDate = 'Create Time' | |||||
t.oss.type = '类型' | |||||
t.oss.type1 = '七牛' | |||||
t.oss.type2 = '阿里云' | |||||
t.oss.type3 = '腾讯云' | |||||
t.oss.qiniuDomain = '域名' | |||||
t.oss.qiniuDomainTips = '七牛绑定的域名' | |||||
t.oss.qiniuPrefix = '路径前缀' | |||||
t.oss.qiniuPrefixTips = '不设置默认为空' | |||||
t.oss.qiniuAccessKey = 'AccessKey' | |||||
t.oss.qiniuAccessKeyTips = '七牛AccessKey' | |||||
t.oss.qiniuSecretKey = 'SecretKey' | |||||
t.oss.qiniuSecretKeyTips = '七牛SecretKey' | |||||
t.oss.qiniuBucketName = '空间名' | |||||
t.oss.qiniuBucketNameTips = '七牛存储空间名' | |||||
t.oss.aliyunDomain = '域名' | |||||
t.oss.aliyunDomainTips = '阿里云绑定的域名,如:http://cdn.renren.io' | |||||
t.oss.aliyunPrefix = '路径前缀' | |||||
t.oss.aliyunPrefixTips = '不设置默认为空' | |||||
t.oss.aliyunEndPoint = 'EndPoint' | |||||
t.oss.aliyunEndPointTips = '阿里云EndPoint' | |||||
t.oss.aliyunAccessKeyId = 'AccessKeyId' | |||||
t.oss.aliyunAccessKeyIdTips = '阿里云AccessKeyId' | |||||
t.oss.aliyunAccessKeySecret = 'AccessKeySecret' | |||||
t.oss.aliyunAccessKeySecretTips = '阿里云AccessKeySecret' | |||||
t.oss.aliyunBucketName = 'BucketName' | |||||
t.oss.aliyunBucketNameTips = '阿里云BucketName' | |||||
t.oss.qcloudDomain = '域名' | |||||
t.oss.qcloudDomainTips = '腾讯云绑定的域名' | |||||
t.oss.qcloudPrefix = '路径前缀' | |||||
t.oss.qcloudPrefixTips = '不设置默认为空' | |||||
t.oss.qcloudAppId = 'AppId' | |||||
t.oss.qcloudAppIdTips = '腾讯云AppId' | |||||
t.oss.qcloudSecretId = 'SecretId' | |||||
t.oss.qcloudSecretIdTips = '腾讯云SecretId' | |||||
t.oss.qcloudSecretKey = 'SecretKey' | |||||
t.oss.qcloudSecretKeyTips = '腾讯云SecretKey' | |||||
t.oss.qcloudBucketName = 'BucketName' | |||||
t.oss.qcloudBucketNameTips = '腾讯云BucketName' | |||||
t.oss.qcloudRegion = '所属地区' | |||||
t.oss.qcloudRegionTips = '请选择' | |||||
t.oss.qcloudRegionBeijing1 = '北京一区(华北)' | |||||
t.oss.qcloudRegionBeijing = '北京' | |||||
t.oss.qcloudRegionShanghai = '上海(华东)' | |||||
t.oss.qcloudRegionGuangzhou = '广州(华南)' | |||||
t.oss.qcloudRegionChengdu = '成都(西南)' | |||||
t.oss.qcloudRegionChongqing = '重庆' | |||||
t.oss.qcloudRegionSingapore = '新加坡' | |||||
t.oss.qcloudRegionHongkong = '香港' | |||||
t.oss.qcloudRegionToronto = '多伦多' | |||||
t.oss.qcloudRegionFrankfurt = '法兰克福' | |||||
t.dept = {} | |||||
t.dept.name = 'Department Name' | |||||
t.dept.parentName = 'Superior Department' | |||||
t.dept.sort = 'Sort' | |||||
t.dept.parentNameDefault = 'First tier department' | |||||
t.dept.chooseerror = 'Please select a department' | |||||
t.dept.title = 'Department Selection' | |||||
t.dict = {} | |||||
t.dict.dictName = 'Dictionary Name' | |||||
t.dict.dictType = 'Dictionary Type' | |||||
t.dict.dictLabel = 'Dictionary Label' | |||||
t.dict.dictValue = 'Dictionary Value' | |||||
t.dict.sort = 'Sort' | |||||
t.dict.remark = 'Remark' | |||||
t.dict.createDate = 'Create Time' | |||||
t.logError = {} | |||||
t.logError.requestUri = 'Request URI' | |||||
t.logError.requestMethod = 'Request Method' | |||||
t.logError.requestParams = 'Request Parameters' | |||||
t.logError.ip = 'IP' | |||||
t.logError.userAgent = 'User Agent' | |||||
t.logError.createDate = 'Create Time' | |||||
t.logError.errorInfo = 'Exceptions' | |||||
t.logLogin = {} | |||||
t.logLogin.creatorName = 'User Name' | |||||
t.logLogin.status = 'Status' | |||||
t.logLogin.status0 = 'Failed' | |||||
t.logLogin.status1 = 'Success' | |||||
t.logLogin.status2 = 'Account has been locked' | |||||
t.logLogin.operation = 'Operation Type' | |||||
t.logLogin.operation0 = 'Login' | |||||
t.logLogin.operation1 = 'Logout' | |||||
t.logLogin.ip = 'IP' | |||||
t.logLogin.userAgent = 'User-Agent' | |||||
t.logLogin.createDate = 'Create Time' | |||||
t.logOperation = {} | |||||
t.logOperation.status = 'Status' | |||||
t.logOperation.status0 = 'Failed' | |||||
t.logOperation.status1 = 'Success' | |||||
t.logOperation.creatorName = 'User Name' | |||||
t.logOperation.operation = 'User Operations' | |||||
t.logOperation.requestUri = 'Request URI' | |||||
t.logOperation.requestMethod = 'Request Method' | |||||
t.logOperation.requestParams = 'Request Parameters' | |||||
t.logOperation.requestTime = 'Request Duration' | |||||
t.logOperation.ip = 'IP' | |||||
t.logOperation.userAgent = 'User-Agent' | |||||
t.logOperation.createDate = 'Create Time' | |||||
t.menu = {} | |||||
t.menu.name = 'Name' | |||||
t.menu.icon = 'Icons' | |||||
t.menu.type = 'Type' | |||||
t.menu.type0 = 'Menu' | |||||
t.menu.type1 = 'Button' | |||||
t.menu.sort = 'Sort' | |||||
t.menu.url = 'Route' | |||||
t.menu.permissions = '授权标识' | |||||
t.menu.permissionsTips = '多个用逗号分隔,如:sys:menu:save,sys:menu:update' | |||||
t.menu.parentName = '上级菜单' | |||||
t.menu.parentNameDefault = 'First tier menu' | |||||
t.menu.resource = '授权资源' | |||||
t.menu.resourceUrl = '资源URL' | |||||
t.menu.resourceMethod = 'Request methods' | |||||
t.menu.resourceAddItem = '添加一项' | |||||
t.params = {} | |||||
t.params.name = 'Parameter Name' | |||||
t.params.code = 'Parameter Code' | |||||
t.params.paramCode = 'Parameter Code' | |||||
t.params.paramValue = 'Parameter Value' | |||||
t.params.paramStdValue = 'Standard Parameter Code' | |||||
t.params.plctitle = 'PLC Collection Parameters' | |||||
t.params.plcid = 'PLC连接表ID' | |||||
t.params.remark = 'Remark' | |||||
t.role = {} | |||||
t.role.name = 'Role Name' | |||||
t.role.remark = 'Remark' | |||||
t.role.createDate = 'Create Time' | |||||
t.role.menuList = '菜单授权' | |||||
t.role.deptList = '数据授权' | |||||
t.user = {} | |||||
t.user.username = 'User Name' | |||||
t.user.deptName = '所属部门' | |||||
t.user.email = 'Email' | |||||
t.user.mobile = 'Phone' | |||||
t.user.status = 'Status' | |||||
t.user.status0 = '停用' | |||||
t.user.status1 = 'Normal' | |||||
t.user.createDate = 'Create Time' | |||||
t.user.password = 'Password' | |||||
t.user.confirmPassword = 'Confirm Password' | |||||
t.user.realName = 'Actual Name' | |||||
t.user.gender = 'Gender' | |||||
t.user.gender0 = 'male' | |||||
t.user.gender1 = 'female' | |||||
t.user.gender2 = 'secret' | |||||
t.user.roleIdList = 'Role Configurations' | |||||
t.user.validate = {} | |||||
t.user.validate.confirmPassword = 'The two passwords are different. Please check again.' | |||||
t.user.select = 'Select an user' | |||||
t.user.selecterror = 'Pick up a record' | |||||
export default t | export default t |
@@ -21,11 +21,13 @@ export const messages = { | |||||
} | } | ||||
export function getLanguage() { | export function getLanguage() { | ||||
const chooseLanguage = Cookies.get('language') | |||||
if (chooseLanguage) return chooseLanguage | |||||
if (Cookies.get('language')) { | |||||
return Cookies.get('language') | |||||
} | |||||
// if has not choose language | // if has not choose language | ||||
const language = (navigator.language || navigator.browserLanguage).toLowerCase() | |||||
const language = (navigator.language || navigator.browserLanguage) | |||||
const locales = Object.keys(messages) | const locales = Object.keys(messages) | ||||
for (const locale of locales) { | for (const locale of locales) { | ||||
if (language.indexOf(locale) > -1) { | if (language.indexOf(locale) > -1) { | ||||
@@ -33,8 +35,9 @@ export function getLanguage() { | |||||
return locale | return locale | ||||
} | } | ||||
} | } | ||||
Cookies.set('language', 'zh-CN') | |||||
return 'zh-CN' | |||||
Cookies.set('language', 'en') | |||||
return 'en' | |||||
} | } | ||||
export default new VueI18n({ | export default new VueI18n({ | ||||
@@ -15,7 +15,7 @@ t.brand.mini = '监控' | |||||
// 对比 v2, v3 的结果,补充此文件和 en.js 文件 | // 对比 v2, v3 的结果,补充此文件和 en.js 文件 | ||||
// 然后替换vue文件的内容 | // 然后替换vue文件的内容 | ||||
t.save = '保存' | |||||
t.add = '新增' // 1 | t.add = '新增' // 1 | ||||
t.delete = '删除' // 1 | t.delete = '删除' // 1 | ||||
t.deleteBatch = '批量删除' // 1 | t.deleteBatch = '批量删除' // 1 | ||||
@@ -95,6 +95,8 @@ t.link = '链接地址' | |||||
t.refresh = '刷新' | t.refresh = '刷新' | ||||
t.abbr = '缩写' | t.abbr = '缩写' | ||||
t.detail = '详情' | t.detail = '详情' | ||||
t.viewdetail = '查看详情' | |||||
t.viewattr = '查看属性' | |||||
t.edit = '编辑' | t.edit = '编辑' | ||||
t.source = '来源' | t.source = '来源' | ||||
t.auto = '自动' | t.auto = '自动' | ||||
@@ -105,6 +107,9 @@ t.enterTime = '进厂日期' | |||||
t.manufacturer = '制造商' | t.manufacturer = '制造商' | ||||
t.success = '修改成功!' | t.success = '修改成功!' | ||||
t.all = '全部' | t.all = '全部' | ||||
t.reset = '重置' | |||||
t.preview = '预览' | |||||
t.design = '设计' | |||||
t.errors = {} | t.errors = {} | ||||
t.errors.nosection = '该产线没有工段' | t.errors.nosection = '该产线没有工段' | ||||
@@ -112,6 +117,8 @@ t.errors.numsection = '该产线有{num}条工段' | |||||
t.errors.nodata = '没有查询到相关数据!' | t.errors.nodata = '没有查询到相关数据!' | ||||
t.hints = {} | t.hints = {} | ||||
t.hints.input = '请输入' | |||||
t.hints.select = '请选择' | |||||
t.hints.date = '请选择日期' | t.hints.date = '请选择日期' | ||||
t.hints.checktime = '请选择检测时间' | t.hints.checktime = '请选择检测时间' | ||||
t.hints.number = '请输入正确的数值' | t.hints.number = '请输入正确的数值' | ||||
@@ -267,6 +274,7 @@ t.validate.required = '必填项不能为空' | |||||
t.validate.format = '{attr}格式错误' | t.validate.format = '{attr}格式错误' | ||||
t.upload = {} | t.upload = {} | ||||
t.upload.title = '上传资料' | |||||
t.upload.text = '将文件拖到此处,或<em>点击上传</em>' | t.upload.text = '将文件拖到此处,或<em>点击上传</em>' | ||||
t.upload.tip = '只支持{format}格式文件!' | t.upload.tip = '只支持{format}格式文件!' | ||||
t.upload.button = '点击上传' | t.upload.button = '点击上传' | ||||
@@ -305,7 +313,7 @@ t.login.username = '用户名' | |||||
t.login.password = '密码' | t.login.password = '密码' | ||||
t.login.captcha = '验证码' | t.login.captcha = '验证码' | ||||
t.login.demo = '在线演示' | t.login.demo = '在线演示' | ||||
t.login.copyright = '人人开源' | |||||
t.login.copyright = '版权所有:中建材智能自动化研究院有限公司 版本: 1.0' | |||||
t.schedule = {} | t.schedule = {} | ||||
t.schedule.beanName = 'bean名称' | t.schedule.beanName = 'bean名称' | ||||
@@ -126,11 +126,13 @@ export default { | |||||
switch (command) { | switch (command) { | ||||
case 'toCN': | case 'toCN': | ||||
this.$root.$i18n.locale = 'zh-CN' | this.$root.$i18n.locale = 'zh-CN' | ||||
window.navigator.language = 'zh-cn' | |||||
break | break | ||||
case 'toEN': | |||||
console.log('root', this.$root.$i18n.locale) | |||||
this.$root.$i18n.locale = 'en' | |||||
location.reload() | |||||
case 'toEN': | |||||
console.log('root', this.$root.$i18n.locale) | |||||
this.$root.$i18n.locale = 'en' | |||||
location.reload() | |||||
window.navigator.language = 'en-US' | |||||
break | break | ||||
} | } | ||||
}, | }, | ||||
@@ -179,7 +179,7 @@ const addOrUpdateConfigs = { | |||||
}, | }, | ||||
{ | { | ||||
name: 'files', | name: 'files', | ||||
label: i18n.t('upload'), | |||||
label: i18n.t('upload.title'), | |||||
fieldType: 'array', | fieldType: 'array', | ||||
component: () => import('@/components/base-upload'), | component: () => import('@/components/base-upload'), | ||||
props: { | props: { | ||||
@@ -62,7 +62,7 @@ const addOrUpdateConfigs = { | |||||
{ | { | ||||
name: 'files', | name: 'files', | ||||
fieldType: 'array', | fieldType: 'array', | ||||
label: i18n.t('upload'), | |||||
label: i18n.t('upload.title'), | |||||
component: () => import('@/components/base-upload'), | component: () => import('@/components/base-upload'), | ||||
props: { | props: { | ||||
// 上传组件需要的 props | // 上传组件需要的 props | ||||
@@ -38,14 +38,14 @@ import { calcMaxHeight } from '@/utils' | |||||
import { timeFilter } from '@/utils/filters' | import { timeFilter } from '@/utils/filters' | ||||
const tableConfigs = [ | const tableConfigs = [ | ||||
{ prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter }, | { prop: 'createTime', name: i18n.t('createTime'), filter: timeFilter }, | ||||
{ prop: 'name', name: i18n.t('categoryName.type') }, | |||||
{ prop: 'name', name: i18n.t('categoryName') }, | |||||
{ prop: 'operations', name: i18n.t('handle'), width: 180, subcomponent: TableOperateComponent, options: ['edit', 'delete'] } | { prop: 'operations', name: i18n.t('handle'), width: 180, subcomponent: TableOperateComponent, options: ['edit', 'delete'] } | ||||
] | ] | ||||
const addOrUpdateConfigs = { | const addOrUpdateConfigs = { | ||||
type: 'dialog', | type: 'dialog', | ||||
infoUrl: '/monitoring/reportSheetCategory', | infoUrl: '/monitoring/reportSheetCategory', | ||||
fields: [{ name: 'name', label: i18n.t('categoryName.type'), required: true, span: 24 }], | |||||
fields: [{ name: 'name', label: i18n.t('categoryName'), required: true, span: 24 }], | |||||
operations: [ | operations: [ | ||||
{ name: 'cancel', url: true, showAlways: true }, | { name: 'cancel', url: true, showAlways: true }, | ||||
{ name: 'save', url: '/monitoring/reportSheetCategory', permission: 'monitoring:reportsheetcategory:save', showOnEdit: false }, | { name: 'save', url: '/monitoring/reportSheetCategory', permission: 'monitoring:reportsheetcategory:save', showOnEdit: false }, | ||||
@@ -65,7 +65,7 @@ import SmallTitle from '@/components/small-title' | |||||
import { pick } from 'lodash/object' | import { pick } from 'lodash/object' | ||||
import TableOperateComponent from '@/components/base-table/components/operationComponent' | import TableOperateComponent from '@/components/base-table/components/operationComponent' | ||||
import AttrForm from './workshopSectionDialogAttrForm.vue' | import AttrForm from './workshopSectionDialogAttrForm.vue' | ||||
import { calcMaxHeight } from '@/utils' | |||||
const tableProps = [ | const tableProps = [ | ||||
{ name: i18n.t('eq.name'), prop: 'equipmentName' }, | { name: i18n.t('eq.name'), prop: 'equipmentName' }, | ||||
{ name: i18n.t('dept.sort'), prop: 'sort' }, | { name: i18n.t('dept.sort'), prop: 'sort' }, | ||||
@@ -84,6 +84,7 @@ export default { | |||||
components: { BaseTable, SmallTitle, AttrForm }, | components: { BaseTable, SmallTitle, AttrForm }, | ||||
data() { | data() { | ||||
return { | return { | ||||
calcMaxHeight, | |||||
visible: false, | visible: false, | ||||
isDetail: false, | isDetail: false, | ||||
tableProps, | tableProps, | ||||
@@ -42,12 +42,13 @@ | |||||
</el-form> | </el-form> | ||||
</div> | </div> | ||||
<div class="login-footer"> | <div class="login-footer"> | ||||
<p> | |||||
<a href="http://demo.open.renren.io/renren-security" target="_blank">{{ $t('login.demo') }}</a> | |||||
<p style="background: #ececec99; border-radius: 8px;"> | |||||
<el-button style="background: none; color: #fff; border: unset; outline: unset; cursor: pointer;" @click="chLang('zh')">中文</el-button> | | |||||
<el-button style="background: none; color: #fff; border: unset; outline: unset; cursor: pointer;" @click="chLang('en')">English</el-button> | |||||
</p> | </p> | ||||
<p> | <p> | ||||
<a href="https://www.renren.io/" target="_blank">{{ $t('login.copyright') }}</a> | |||||
2022 © renren.io | |||||
{{ $t('login.copyright') }} | |||||
</p> | </p> | ||||
</div> | </div> | ||||
</main> | </main> | ||||
@@ -86,6 +87,18 @@ export default { | |||||
// this.getCaptcha() | // this.getCaptcha() | ||||
}, | }, | ||||
methods: { | methods: { | ||||
chLang(lang) { | |||||
switch (lang) { | |||||
case 'zh': | |||||
this.$root.$i18n.locale = 'zh-CN' | |||||
// location.reload() | |||||
break | |||||
case 'en': | |||||
this.$root.$i18n.locale = 'en' | |||||
location.reload() | |||||
break | |||||
} | |||||
}, | |||||
// 获取验证码 | // 获取验证码 | ||||
getCaptcha() { | getCaptcha() { | ||||
this.dataForm.uuid = getUUID() | this.dataForm.uuid = getUUID() | ||||