@@ -455,7 +455,7 @@ export default { | |||
.then(({ data: res }) => { | |||
if (res && res.code === 0) { | |||
this.$message({ | |||
message: btn.name === 'save' ? '添加成功!' : '更新成功!', | |||
message: btn.name === 'save' ? i18n.t('prompt.success') : '更新成功!', | |||
type: 'success', | |||
duration: 1500, | |||
onClose: () => { | |||
@@ -1,6 +1,8 @@ | |||
<template> | |||
<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"> | |||
<component | |||
key="sub-table" | |||
@@ -28,7 +30,7 @@ | |||
<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-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-option v-for="opt in field.formOptions" :key="opt.value" :label="opt.label" :value="opt.value" /> | |||
</el-select> | |||
@@ -51,7 +53,7 @@ | |||
import i18n from '@/i18n' | |||
import BaseTable from '@/components/base-table' | |||
import { pick } from 'lodash/object' | |||
import { calcMaxHeight } from '@/utils' | |||
export default { | |||
name: 'AttrForm', | |||
components: { BaseTable }, | |||
@@ -91,6 +93,7 @@ export default { | |||
}, | |||
data() { | |||
return { | |||
calcMaxHeight, | |||
showAddAttr: false, | |||
dataList: [], | |||
pageIndex: 1, | |||
@@ -201,7 +204,7 @@ export default { | |||
deleteHandle(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'), | |||
cancelButtonText: i18n.t('cancel'), | |||
type: 'warning' | |||
@@ -110,7 +110,7 @@ import i18n from '@/i18n' | |||
const title = { | |||
detail: i18n.t('detail'), | |||
add: i18n.t('add'), | |||
edit: '编辑' | |||
edit: i18n.t('edit') | |||
} | |||
// 或者也可以改造成自定义颜色: | |||
@@ -124,9 +124,9 @@ const btnType = { | |||
const btnName = { | |||
// for i18n | |||
save: '保存', | |||
update: '更新', | |||
reset: '重置', | |||
save: i18n.t('save'), | |||
update: i18n.t('update'), | |||
reset: i18n.t('reset'), | |||
cancel: i18n.t('cancel') | |||
// add more... | |||
} | |||
@@ -207,7 +207,7 @@ export default { | |||
}, | |||
mounted() { | |||
/** 计算 defaultPlaceholders */ | |||
const prefix = '请输入' | |||
const prefix = i18n.t('hints.input') | |||
Object.entries(this.defaultNames).map(([key, value]) => { | |||
this.defaultPlaceholders[key] = prefix + value | |||
}) | |||
@@ -251,7 +251,7 @@ export default { | |||
if (item.required) { | |||
const requiredRule = { | |||
required: true, | |||
message: '请输入必填项', | |||
message: i18n.t('validate.required'), | |||
trigger: 'change' | |||
} | |||
/** 检查是否已经存在该字段的规则 */ | |||
@@ -296,19 +296,14 @@ export default { | |||
this.configs.extraComponents && | |||
this.configs.extraComponents.forEach(item => { | |||
if (Object.hasOwn(this.dataForm, [item.name])) { | |||
console.log('有了!') | |||
return | |||
} else { | |||
console.log('新建!') | |||
this.$set(this.dataForm, [item.name], calDefault(item.fieldType)) | |||
} | |||
console.log('component: ', item.component) | |||
}) | |||
/** 单独设置 id */ | |||
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] | |||
: opt.label | |||
? (opt.type === 'select' ? i18n.t('choose') : '请输入') + opt.label | |||
? (opt.type === 'select' ? i18n.t('choose') : i18n.t('hints.input')) + opt.label | |||
: null | |||
// : opt.type === 'select' | |||
@@ -402,7 +397,6 @@ export default { | |||
this.fileForm[file.typeCode] = [file.id] | |||
} | |||
}) | |||
console.log('after分流:', this.fileList) | |||
} | |||
} | |||
}) | |||
@@ -411,12 +405,12 @@ export default { | |||
if (this.shouldWait) | |||
this.shouldWait.then(() => { | |||
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 => { | |||
console.log('item data', item.data) | |||
// console.log('item data', 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 }) | |||
}, | |||
handleEditorReady(val) { | |||
console.log('editor rready..', val) | |||
}, | |||
handleEditorReady(val) {}, | |||
handleClick(btn) { | |||
/** 提取url */ | |||
@@ -448,7 +440,6 @@ export default { | |||
if (valid) { | |||
/** 对于文件上传的单独处理(合并处理) */ | |||
if (Object.keys(this.fileForm).length) { | |||
console.log('fileform 有值') | |||
// LABEL: FILE_RELATED | |||
let fileIds = [] | |||
for (const [key, item] of Object.entries(this.fileForm)) { | |||
@@ -471,7 +462,8 @@ export default { | |||
.then(({ data: res }) => { | |||
if (res && res.code === 0) { | |||
this.$message({ | |||
message: btn.name === 'save' ? '添加成功!' : '更新成功!', | |||
message: i18n.t('prompt.success'), | |||
// message: btn.name === 'save' ? i18n.t('prompt.success') : '更新成功!', | |||
type: 'success', | |||
duration: 1500, | |||
onClose: () => { | |||
@@ -512,7 +504,7 @@ export default { | |||
// LABEL: FILE_RELATED | |||
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: EquipmentInfoFile | EquipmentInfoImage | |||
@@ -529,7 +521,7 @@ export default { | |||
typeCode, | |||
filelist.map(item => item.id) | |||
) | |||
console.log('after handleUploadListUpdate(): ', this.fileForm) | |||
// console.log('after handleUploadListUpdate(): ', this.fileForm) | |||
}, | |||
handleClose() { | |||
@@ -1,11 +1,5 @@ | |||
/** | |||
* @Author: lb | |||
* @CreateDate: 2022.8.8 | |||
* @Modifier: | |||
* @ModifiedDate: | |||
* 表格里的文本组件 | |||
* 一般用途:展示查看详情入口 | |||
*/ | |||
import i18n from '@/i18n' | |||
export default { | |||
name: 'TableTextComponent', | |||
props: { | |||
@@ -17,12 +11,12 @@ export default { | |||
data() { | |||
return { | |||
// for i18n inject: | |||
defaultText: '查看详情' | |||
defaultText: i18n.t('viewdetail') | |||
} | |||
}, | |||
methods: { | |||
emitClick() { | |||
console.log('inject data:' ,this.injectData) | |||
// console.log('inject data:' ,this.injectData) | |||
this.$emit('emit-data', { | |||
type: this.injectData.head?.actionName || 'view-detail-action', | |||
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 { | |||
name: 'TableOperations', | |||
props: { | |||
@@ -30,12 +24,12 @@ export default { | |||
}, | |||
text: { | |||
// 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... | |||
} | |||
} | |||
@@ -13,7 +13,7 @@ | |||
<!-- :before-remove="beforeRemove" --> | |||
<!-- 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-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> | |||
</el-upload> | |||
</div> | |||
@@ -101,8 +101,6 @@ export default { | |||
/** 大小验证,由配置文件开启 */ | |||
validateFile(file) { | |||
console.log('[*] 验证文件大小') | |||
const isRightSize = file.size / 1024 / 1024 < 2 | |||
if (!isRightSize) { | |||
// this.$message.error(this.$t('upload.picSizeAlarm')) | |||
@@ -156,7 +154,6 @@ export default { | |||
alink.style.display = 'none' | |||
alink.target = '_blank' | |||
alink.href = URL.createObjectURL(blob) | |||
console.log('下载地址:', alink.href) | |||
document.body.appendChild(alink) | |||
alink.click() | |||
URL.revokeObjectURL(alink.href) | |||
@@ -184,12 +181,19 @@ export default { | |||
margin-bottom: 20px; | |||
} | |||
.base-upload >>> .el-upload--text { | |||
width: 100px; | |||
.base-upload >>> .el-button { | |||
display: block; | |||
width: 200px; | |||
position: relative; | |||
left: -72px; | |||
left: -100px; | |||
} | |||
/* .base-upload >>> .el-upload--text { | |||
width: 100px; | |||
position: relative; | |||
left: -100px; | |||
} */ | |||
.base-upload >>> .el-upload__tip { | |||
margin-top: 0; | |||
margin-left: 5px; | |||
@@ -7,6 +7,7 @@ t.brand = {} | |||
t.brand.lg = 'Monitoring System' | |||
t.brand.mini = 'PMS' | |||
t.save = 'Save' | |||
t.add = 'Add' | |||
t.delete = 'Delete' | |||
t.deleteBatch = 'Delete Batch' | |||
@@ -68,7 +69,7 @@ t.enname = 'English Name' | |||
t.collectOrNot = 'Collect or not' | |||
t.min = 'Min Value' | |||
t.max = 'Max Value' | |||
t.status = 'Status', | |||
t.status = 'Status' | |||
t.normal = 'Normal' | |||
t.addr = 'Address' | |||
t.planStop = 'Plan to stop' | |||
@@ -76,18 +77,421 @@ t.startTime = 'Start Time' | |||
t.endTime = 'End Time' | |||
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.title = 'Login' | |||
t.login.username = 'Username' | |||
t.login.password = 'Password' | |||
t.login.captcha = 'Validation Code' | |||
t.login.captcha = 'Captcha' | |||
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 |
@@ -21,11 +21,13 @@ export const messages = { | |||
} | |||
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 | |||
const language = (navigator.language || navigator.browserLanguage).toLowerCase() | |||
const language = (navigator.language || navigator.browserLanguage) | |||
const locales = Object.keys(messages) | |||
for (const locale of locales) { | |||
if (language.indexOf(locale) > -1) { | |||
@@ -33,8 +35,9 @@ export function getLanguage() { | |||
return locale | |||
} | |||
} | |||
Cookies.set('language', 'zh-CN') | |||
return 'zh-CN' | |||
Cookies.set('language', 'en') | |||
return 'en' | |||
} | |||
export default new VueI18n({ | |||
@@ -15,7 +15,7 @@ t.brand.mini = '监控' | |||
// 对比 v2, v3 的结果,补充此文件和 en.js 文件 | |||
// 然后替换vue文件的内容 | |||
t.save = '保存' | |||
t.add = '新增' // 1 | |||
t.delete = '删除' // 1 | |||
t.deleteBatch = '批量删除' // 1 | |||
@@ -95,6 +95,8 @@ t.link = '链接地址' | |||
t.refresh = '刷新' | |||
t.abbr = '缩写' | |||
t.detail = '详情' | |||
t.viewdetail = '查看详情' | |||
t.viewattr = '查看属性' | |||
t.edit = '编辑' | |||
t.source = '来源' | |||
t.auto = '自动' | |||
@@ -105,6 +107,9 @@ t.enterTime = '进厂日期' | |||
t.manufacturer = '制造商' | |||
t.success = '修改成功!' | |||
t.all = '全部' | |||
t.reset = '重置' | |||
t.preview = '预览' | |||
t.design = '设计' | |||
t.errors = {} | |||
t.errors.nosection = '该产线没有工段' | |||
@@ -112,6 +117,8 @@ t.errors.numsection = '该产线有{num}条工段' | |||
t.errors.nodata = '没有查询到相关数据!' | |||
t.hints = {} | |||
t.hints.input = '请输入' | |||
t.hints.select = '请选择' | |||
t.hints.date = '请选择日期' | |||
t.hints.checktime = '请选择检测时间' | |||
t.hints.number = '请输入正确的数值' | |||
@@ -267,6 +274,7 @@ t.validate.required = '必填项不能为空' | |||
t.validate.format = '{attr}格式错误' | |||
t.upload = {} | |||
t.upload.title = '上传资料' | |||
t.upload.text = '将文件拖到此处,或<em>点击上传</em>' | |||
t.upload.tip = '只支持{format}格式文件!' | |||
t.upload.button = '点击上传' | |||
@@ -305,7 +313,7 @@ t.login.username = '用户名' | |||
t.login.password = '密码' | |||
t.login.captcha = '验证码' | |||
t.login.demo = '在线演示' | |||
t.login.copyright = '人人开源' | |||
t.login.copyright = '版权所有:中建材智能自动化研究院有限公司 版本: 1.0' | |||
t.schedule = {} | |||
t.schedule.beanName = 'bean名称' | |||
@@ -126,11 +126,13 @@ export default { | |||
switch (command) { | |||
case 'toCN': | |||
this.$root.$i18n.locale = 'zh-CN' | |||
window.navigator.language = 'zh-cn' | |||
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 | |||
} | |||
}, | |||
@@ -179,7 +179,7 @@ const addOrUpdateConfigs = { | |||
}, | |||
{ | |||
name: 'files', | |||
label: i18n.t('upload'), | |||
label: i18n.t('upload.title'), | |||
fieldType: 'array', | |||
component: () => import('@/components/base-upload'), | |||
props: { | |||
@@ -62,7 +62,7 @@ const addOrUpdateConfigs = { | |||
{ | |||
name: 'files', | |||
fieldType: 'array', | |||
label: i18n.t('upload'), | |||
label: i18n.t('upload.title'), | |||
component: () => import('@/components/base-upload'), | |||
props: { | |||
// 上传组件需要的 props | |||
@@ -38,14 +38,14 @@ import { calcMaxHeight } from '@/utils' | |||
import { timeFilter } from '@/utils/filters' | |||
const tableConfigs = [ | |||
{ 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'] } | |||
] | |||
const addOrUpdateConfigs = { | |||
type: 'dialog', | |||
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: [ | |||
{ name: 'cancel', url: true, showAlways: true }, | |||
{ 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 TableOperateComponent from '@/components/base-table/components/operationComponent' | |||
import AttrForm from './workshopSectionDialogAttrForm.vue' | |||
import { calcMaxHeight } from '@/utils' | |||
const tableProps = [ | |||
{ name: i18n.t('eq.name'), prop: 'equipmentName' }, | |||
{ name: i18n.t('dept.sort'), prop: 'sort' }, | |||
@@ -84,6 +84,7 @@ export default { | |||
components: { BaseTable, SmallTitle, AttrForm }, | |||
data() { | |||
return { | |||
calcMaxHeight, | |||
visible: false, | |||
isDetail: false, | |||
tableProps, | |||
@@ -42,12 +42,13 @@ | |||
</el-form> | |||
</div> | |||
<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> | |||
<a href="https://www.renren.io/" target="_blank">{{ $t('login.copyright') }}</a> | |||
2022 © renren.io | |||
{{ $t('login.copyright') }} | |||
</p> | |||
</div> | |||
</main> | |||
@@ -86,6 +87,18 @@ export default { | |||
// this.getCaptcha() | |||
}, | |||
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() { | |||
this.dataForm.uuid = getUUID() | |||