This commit is contained in:
2023-11-27 16:23:01 +08:00
15 changed files with 427 additions and 143 deletions

View File

@@ -12,8 +12,8 @@
<slot></slot>
</div>
<div class="dialog_footer">
<button class="button_control button_control_s button_control_disabled mgr31" @click="toCancle"><p>取消</p></button>
<button class="button_control button_control_s" :class="{'button--info': unclick === true}" :disabled="disabled" @click="toSure"><p>确定</p></button>
<button class="button_control button_control_s button_control_disabled mgr31" @click="toCancle"><p>{{ $t('button.cancel') }}</p></button>
<button class="button_control button_control_s" :class="{'button--info': unclick === true}" :disabled="disabled" @click="toSure"><p>{{ $t('button.ok') }}</p></button>
</div>
</div>
</div>

View File

@@ -10,19 +10,31 @@ Vue.use(VueI18n)
// 引入本地包
const messages = {
'en-US': Object.assign(en, enLocale),
'en': Object.assign(en, enLocale),
'zh-CN': Object.assign(zh, zhLocale),
'zh': Object.assign(zh, zhLocale)
'en-us': Object.assign(en, enLocale),
'zh-cn': Object.assign(zh, zhLocale)
}
// 获取当前系统使用语言字符串
export const getLanguage = () => {
// 本地缓存获取
let language = window.localStorage.getItem('locale')
if (language) {
return language
}
// 返回当前浏览器的语言设置
language = (navigator.language || navigator.browserLanguage).toLowerCase()
const locales = Object.keys(messages)
for (const local of locales) {
if (local.indexOf(language) > -1) {
return local
}
}
return 'zh-cn'
}
const navLang = navigator.language || navigator.userLanguage
let localLang = navLang || false
let lang = localLang || window.localStorage.getItem('locale') || 'zh-CN'
lang = 'zh-CN'
// 创建国际化实例
const i18n = new VueI18n({
locale: lang,
locale: getLanguage(),
messages
})

View File

@@ -1,11 +1,85 @@
module.exports = {
login: {
passwordlogin: 'Password login',
passwordlogin: 'Login',
configuration: 'Configuration',
username: 'Username',
password: 'Password',
domainnameaddress: 'Domain name address',
domainnameaddress: 'Domain address',
refreshtime: 'Refresh time(s)',
login: 'Login'
},
user: {
usermanagement: 'User management',
fullname: 'Full name',
phone: 'Phone',
gender: 'Gender',
creationdate: 'Creation date',
adduser: 'Add user',
question1: 'Are you sure you want to reset your password?',
question2: 'Are you sure you want to delete this user?'
},
role: {
rolemanagement: 'Role management',
rolename: 'Role name',
role: 'Role',
describe: 'Describe',
creationdate: 'Creation date',
addrole: 'Add role'
},
system: {
systemmanagement: 'System management',
code: 'Code',
value: 'Value',
addparameter: 'Add parameter',
question1: 'Are you sure to delete it?'
},
developer: {
developeroptions: 'Developer options'
},
vehiclestatus: {
vehiclestatus: 'Vehicle status',
status: 'Status',
coordinate: 'coordinate',
headingangle: 'Heading angle',
steeringwheelangle: 'Steering wheel angle',
issuancespeed: 'Issuance speed',
actualspeed: 'Actual speed',
lateraldeviation: 'Lateral deviation',
headingdeviation: 'Heading deviation',
workstatus: 'Work status',
sensorstatus: 'Sensor status',
emergencystop: 'Emergency stop',
avoidancemoderate: 'Avoidance moderate',
resetbutton: 'Reset button',
avoidanceparking: 'Avoidance parking',
Safetyedge: 'Safety edge',
run: 'Run',
abnormal: 'Abnormal'
},
vehiclecontrol: {
vehiclecontrol: 'Vehicle control',
Status: 'Status',
Control: 'Control',
control: ' control',
deviatestatus: 'Deviate status',
updatestatus: 'Update status',
monitorcontrol: 'Monitor control',
initializecoordinates: 'Initialize coordinates',
coordinateinformation: 'Coordinate information'
},
button: {
cancel: 'Cancel',
ok: 'OK',
save: 'Save',
modify: 'Modify',
delete: 'Delete',
exit: 'Exit',
resetpassword: 'Reset password'
},
common: {
name: 'Name',
username: 'User name',
number: 'S/N',
operate: 'Operate',
remark: 'Remark'
}
}

View File

@@ -2,10 +2,84 @@ module.exports = {
login: {
passwordlogin: '密码登录',
configuration: '配置',
username: '用户名',
password: '密码',
domainnameaddress: '域名地址',
refreshtime: '刷新时间(秒)',
login: '登录'
},
user: {
usermanagement: '用户管理',
fullname: '姓名',
phone: '电话',
gender: '性别',
creationdate: '创建日期',
adduser: '添加用户',
question1: '确定重置密码吗?',
question2: '确定删除该用户吗?'
},
role: {
rolemanagement: '角色管理',
rolename: '角色名',
role: '角色',
describe: '描述',
creationdate: '创建日期',
addrole: '新增角色'
},
system: {
systemmanagement: '系统管理',
code: '编码',
value: '值',
addparameter: '添加参数',
question1: '确定删除吗?'
},
developer: {
developeroptions: '开发者选项'
},
vehiclestatus: {
vehiclestatus: '车辆状态',
status: '状态',
coordinate: '坐标',
headingangle: '航向角',
steeringwheelangle: '舵轮角度',
issuancespeed: '下发速度',
actualspeed: '实际速度',
lateraldeviation: '横向偏差',
headingdeviation: '航向偏差',
workstatus: '工作状态',
sensorstatus: '传感器状态',
emergencystop: '急停按钮',
avoidancemoderate: '避障减速',
resetbutton: '复位按钮',
avoidanceparking: '避障停车',
Safetyedge: '安全触边',
run: '运行',
abnormal: '异常'
},
vehiclecontrol: {
vehiclecontrol: '车辆控制',
Status: '状态',
Control: '控制',
control: '控制',
deviatestatus: '偏离状态',
updatestatus: '更新状态',
monitorcontrol: '显示屏',
initializecoordinates: '初始化坐标',
coordinateinformation: '坐标信息'
},
button: {
cancel: '取消',
ok: '确定',
save: '保存',
modify: '修改',
delete: '删除',
exit: '退出',
resetpassword: '重置密码'
},
common: {
name: '名称',
username: '用户名',
number: '序号',
operate: '操作',
remark: '备注'
}
}

BIN
src/images/new/arrow_up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

View File

@@ -1,5 +1,5 @@
<template>
<div class="login-container">
<div class="login-container" :class="{'enClass': selectType === 'en-us'}">
<div class="login-header">
<div class="login_logo"></div>
</div>
@@ -7,12 +7,12 @@
<div class="login-wraper">
<div class="navs-wraper">
<button class="nav_item" :class="{'nav_item_active': tab === 0}" @click="toLogin">{{ $t('login.passwordlogin') }}</button>
<button class="nav_item" :class="{'nav_item_active': tab === 1}" @click="toSetup">配置</button>
<button class="nav_item" :class="{'nav_item_active': tab === 1}" @click="toSetup">{{ $t('login.configuration') }}</button>
</div>
<div v-show="tab === 0" class="login-content_wraper">
<div class="login-items-wraper">
<div class="login-item">
<div class="login-label" @click="toFocus(1)">用户名</div>
<div class="login-label" @click="toFocus(1)">{{ $t('common.username') }}</div>
<!-- <input type="text" class="login-input" ref="input1" v-model="username" @focus="show" data-layout="normal"> -->
<div class="login_value">
<keyboard-input
@@ -25,33 +25,33 @@
</div>
</div>
<div class="login-item">
<div class="login-label" @click="toFocus(2)">密码</div>
<div class="login-label" @click="toFocus(2)">{{ $t('login.password') }}</div>
<div class="login_value">
<input type="password" class="login-input" ref="input2" v-model="password" @focus="show" data-layout="normal">
</div>
</div>
</div>
<div class="login-buttons-wraper">
<button class="button_control" :disabled="disabled" @click="saveLogin"><p>登录</p></button>
<button class="button_control" :disabled="disabled" @click="saveLogin"><p>{{ $t('login.login') }}</p></button>
</div>
</div>
<div v-show="tab === 1" class="login-content_wraper">
<div class="login-items-wraper">
<div class="login-item">
<div class="login-label login-label_1" @click="toFocus(3)">域名地址</div>
<div class="login-label" @click="toFocus(3)">{{ $t('login.domainnameaddress') }}</div>
<div class="login_value login_value_1">
<input type="text" class="login-input" ref="input3" v-model.trim="baseUrl" @focus="show" data-layout="normal" data-next="1">
</div>
</div>
<div class="login-item">
<div class="login-label login-label_1" @click="toFocus(4)">刷新时间</div>
<div class="login-label" @click="toFocus(4)">{{ $t('login.refreshtime') }}</div>
<div class="login_value login_value_1">
<input type="number" class="login-input" ref="input4" v-model="setTime" @focus="show" data-layout="numeric">
</div>
</div>
</div>
<div class="login-buttons-wraper">
<button class="button_control" @click="saveSetup"><p>配置</p></button>
<button class="button_control" @click="saveSetup"><p>{{ $t('login.configuration') }}</p></button>
</div>
</div>
</div>
@@ -69,6 +69,7 @@ export default {
},
data () {
return {
selectType: '',
tab: 0,
username: '',
password: '',
@@ -84,6 +85,13 @@ export default {
}
}
},
created () {
if (this.$i18n.locale === 'zh-cn') {
this.selectType = 'zh-cn'
} else if (this.$i18n.locale === 'en-us') {
this.selectType = 'en-us'
}
},
mounted () {
// 点对点项目分辨率 1024 * 768
// alert(document.body.clientWidth, 'a')
@@ -246,14 +254,11 @@ export default {
width 100%
margin-bottom 40px
.login-label
width 115px
_font(30px, 80px, #AFBED8,,right)
.login-label_1
width 215px
_font(30px, 35px, #AFBED8,,)
.login_value
width calc(100% - 140px)
width calc(100% - 120px)
.login_value_1
width calc(100% - 240px)
width calc(100% - 225px)
.login-input
width 100%
_font(30px, 78px, #fff,,)
@@ -295,4 +300,12 @@ export default {
background-color #EEE
box-shadow 0px -3px 10px rgba(black, 0.3)
border-radius 10px
.enClass
.login_value
width calc(100% - 165px)
.login_value_1
width calc(100% - 255px)
.button_control
p
font-size 40px
</style>

View File

@@ -3,7 +3,7 @@
<div class="right_side">
<div class="content_wrap">
<div class="title_wrap">
<h2>开发者选项</h2>
<h2>{{ $t('developer.developeroptions') }}</h2>
</div>
<div class="page_container">
<div class="tabs_container">
@@ -36,7 +36,6 @@ import { getIP, getLogList, getROSNodeList, temperature, debugInfo, softwareVers
export default {
data () {
return {
tabs: [{id: '1', label: 'ifconfig'}, {id: '2', label: '日志列表'}, {id: '3', label: 'ROS运行列表'}, {id: '4', label: '芯片温度/主频'}, {id: '5', label: '调试信息'}, {id: '6', label: '软/硬件版本'}],
tab: '1',
interTime: this.$store.getters.setTime,
timer: null,
@@ -48,6 +47,15 @@ export default {
result6: ''
}
},
computed: {
tabs () {
let arr = [{id: '1', label: 'ifconfig'}, {id: '2', label: '日志列表'}, {id: '3', label: 'ROS运行列表'}, {id: '4', label: '芯片温度/主频'}, {id: '5', label: '调试信息'}, {id: '6', label: '软/硬件版本'}]
if (this.$i18n.locale === 'en-us') {
arr = [{id: '1', label: 'ifconfig'}, {id: '2', label: 'Log list'}, {id: '3', label: 'ROS run list'}, {id: '4', label: 'Chip TEMP/main frequency'}, {id: '5', label: 'Debug information'}, {id: '6', label: 'Software/Hardware Version'}]
}
return arr
}
},
created () {
this._getIP()
},
@@ -148,10 +156,10 @@ export default {
.tabs_scroll
overflow hidden
.tabs_nav
white-space nowrap
position relative
display flex
align-items center
transition transform .3s
float left
z-index 2
.tabs_item
padding 0 10px
@@ -184,4 +192,11 @@ export default {
white-space pre-line
word-break break-all
overflow-y auto
.enClass
.tabs_item
display: flex;
align-items: center;
justify-content: center;
font-size 20px
line-height 20px
</style>

View File

@@ -3,17 +3,17 @@
<div class="right_side">
<div class="content_wrap">
<div class="title_wrap">
<h2>角色管理</h2>
<h2>{{ $t('role.rolemanagement') }}</h2>
</div>
<div class="page_container">
<div class="grid_wrapper">
<table>
<tr>
<!-- <th>选中</th> -->
<th>角色名称</th>
<th>描述</th>
<th>创建日期</th>
<th width="330px">操作</th>
<th>{{ $t('role.rolename') }}</th>
<th>{{ $t('role.describe') }}</th>
<th>{{ $t('role.creationdate') }}</th>
<th width="330px">{{ $t('common.operate') }}</th>
</tr>
<tr v-for="(e, i) in datalist" :key="i" :class="{'tr_selected': pkId === e.roleId}">
<!-- <td>
@@ -24,15 +24,15 @@
<td @click="toCheck(e)">{{ e.createTime }}</td>
<td width="330px">
<div class="row">
<button class="button button--primary grid_button" @click="showDialog('2', e)">修改</button>
<button class="button button--primary grid_button" @click="showDialog('3', e)">删除</button>
<button class="button button--primary grid_button" @click="showDialog('2', e)">{{ $t('button.modify') }}</button>
<button class="button button--primary grid_button" @click="showDialog('3', e)">{{ $t('button.delete') }}</button>
</div>
</td>
</tr>
</table>
</div>
<div class="buttons_wrapper">
<button class="button_control" @click="showDialog('1')"><p>新增角色</p></button>
<button class="button_control" @click="showDialog('1')"><p>{{ $t('role.addrole') }}</p></button>
</div>
</div>
</div>
@@ -47,7 +47,7 @@
<div v-if="type === '1' || type === '2'" class="form_wraper">
<div class="form">
<div class="form_item">
<div class="form_item__label"><i>*</i>角色名称</div>
<div class="form_item__label"><i>*</i>{{ $t('role.rolename') }}</div>
<div class="form_item__content">
<!-- <input type="text" class="form_item__input" v-model="rolename" @focus="show" data-layout="normal"> -->
<keyboard-input
@@ -62,7 +62,7 @@
</div>
<div class="form">
<div class="form_item allwidth">
<div class="form_item__label">备注</div>
<div class="form_item__label">{{ $t('common.remark') }}</div>
<div class="form_item__content">
<!-- <textarea v-model="remark" style="resize:none;" class="form_item__input form_item__textarea" @focus="show" data-layout="normal"></textarea> -->
<keyboard-input
@@ -76,7 +76,7 @@
</div>
</div>
</div>
<div v-if="type === '3'" class="form_wraper">确定删除该用户吗</div>
<div v-if="type === '3'" class="form_wraper">{{ $t('user.question2') }}</div>
</jxDialog>
<div v-show="active1" class="dialog_wrapper">
<div class="dialog dialog_1">
@@ -100,8 +100,8 @@
</div>
</div>
<div class="dialog_footer">
<button class="button_control button_control_s button_control_disabled mgr31" @click="toCancle1"><p>取消</p></button>
<button class="button_control button_control_s" :class="{'button--info': pkId === '' || $refs.tree.getCheckedKeys().length === 0}" :disabled="disabled" @click="toSave"><p>保存</p></button>
<button class="button_control button_control_s button_control_disabled mgr31" @click="toCancle1"><p>{{ $t('button.cancel') }}</p></button>
<button class="button_control button_control_s" :class="{'button--info': pkId === '' || $refs.tree.getCheckedKeys().length === 0}" :disabled="disabled" @click="toSave"><p>{{ $t('button.save') }}</p></button>
</div>
</div>
</div>

View File

@@ -3,18 +3,18 @@
<div class="right_side">
<div class="content_wrap">
<div class="title_wrap">
<h2>系统管理</h2>
<h2>{{ $t('system.systemmanagement') }}</h2>
</div>
<div class="page_container">
<div class="grid_wrapper">
<table>
<tr>
<th>序号</th>
<th>编码</th>
<th>名称</th>
<th></th>
<th>备注</th>
<th>操作</th>
<th>{{ $t('common.number') }}</th>
<th>{{ $t('system.code') }}</th>
<th>{{ $t('common.name') }}</th>
<th>{{ $t('system.value') }}</th>
<th>{{ $t('common.remark') }}</th>
<th>{{ $t('common.operate') }}</th>
</tr>
<tr v-for="(e, i) in datalist" :key="i">
<td>{{i+1}}</td>
@@ -24,15 +24,15 @@
<td>{{ e.remark }}</td>
<td>
<div class="row">
<button class="button button--primary grid_button" @click="showDialog('2', e)">修改</button>
<button class="button button--primary grid_button" @click="showDialog('3', e)">删除</button>
<button class="button button--primary grid_button" @click="showDialog('2', e)">{{ $t('button.modify') }}</button>
<button class="button button--primary grid_button" @click="showDialog('3', e)">{{ $t('button.delete') }}</button>
</div>
</td>
</tr>
</table>
</div>
<div class="buttons_wrapper">
<button class="button_control" @click="showDialog('1')"><p>添加参数</p></button>
<button class="button_control" @click="showDialog('1')"><p>{{ $t('system.addparameter') }}</p></button>
</div>
</div>
</div>
@@ -47,13 +47,13 @@
<div v-if="type === '1' || type === '2'" class="form_wraper">
<div class="form">
<div class="form_item">
<div class="form_item__label"><i>*</i>编码</div>
<div class="form_item__label"><i>*</i>{{ $t('system.code') }}</div>
<div class="form_item__content">
<input type="text" class="form_item__input" v-model="code" @focus="show" data-layout="normal" data-next="1">
</div>
</div>
<div class="form_item">
<div class="form_item__label"><i>*</i>名字</div>
<div class="form_item__label"><i>*</i>{{ $t('common.name') }}</div>
<div class="form_item__content">
<!-- <input type="text" class="form_item__input" v-model="name" @focus="show" data-layout="normal"> -->
<keyboard-input
@@ -68,7 +68,7 @@
</div>
<div class="form">
<div class="form_item">
<div class="form_item__label"><i>*</i>数值</div>
<div class="form_item__label"><i>*</i>{{ $t('system.value') }}</div>
<div class="form_item__content">
<input type="text" class="form_item__input" v-model="value" @focus="show" data-layout="numeric" data-next="1">
</div>
@@ -76,7 +76,7 @@
</div>
<div class="form">
<div class="form_item allwidth">
<div class="form_item__label">备注</div>
<div class="form_item__label">{{ $t('common.remark') }}</div>
<div class="form_item__content">
<!-- <textarea v-model="remark" style="resize:none;" class="form_item__input form_item__textarea" @focus="show" data-layout="normal"></textarea> -->
<keyboard-input
@@ -90,7 +90,7 @@
</div>
</div>
</div>
<div v-if="type === '3'" class="form_wraper">确定删除吗</div>
<div v-if="type === '3'" class="form_wraper">{{$t('system.question1')}}</div>
</jxDialog>
</div>
<vue-touch-keyboard id="keyboard" :options="options" v-if="visible" :layout="layout" :cancel="hide" :accept="accept" :input="input" :next="next" />

View File

@@ -3,19 +3,19 @@
<div class="right_side">
<div class="content_wrap">
<div class="title_wrap">
<h2>用户管理</h2>
<h2>{{ $t('user.usermanagement') }}</h2>
</div>
<div class="page_container">
<div class="grid_wrapper">
<table>
<tr>
<th>序号</th>
<th>用户名</th>
<th>姓名</th>
<th>电话</th>
<th>性别</th>
<th>创建日期</th>
<th width="430px">操作</th>
<th>{{ $t('common.number')}}</th>
<th>{{ $t('common.username')}}</th>
<th>{{ $t('user.fullname')}}</th>
<th>{{ $t('user.phone')}}</th>
<th>{{ $t('user.gender')}}</th>
<th>{{ $t('user.creationdate')}}</th>
<th width="430px">{{ $t('common.operate')}}</th>
</tr>
<tr v-for="(e, i) in datalist" :key="i">
<td>{{i+1}}</td>
@@ -26,16 +26,16 @@
<td>{{ e.createTime }}</td>
<td width="430px">
<div class="row">
<button class="button button--primary grid_button mgr" @click="showDialog('2', e)">修改</button>
<button class="button button--primary grid_button mgr" @click="showDialog('3', e)">重置密码</button>
<button class="button button--primary grid_buttonmgr" @click="showDialog('4', e)">删除</button>
<button class="button button--primary grid_button mgr" @click="showDialog('2', e)">{{ $t('button.modify') }}</button>
<button class="button button--primary grid_button mgr" @click="showDialog('3', e)">{{ $t('button.resetpassword') }}</button>
<button class="button button--primary grid_buttonmgr" @click="showDialog('4', e)">{{ $t('button.delete') }}</button>
</div>
</td>
</tr>
</table>
</div>
<div class="buttons_wrapper">
<button class="button_control" @click="showDialog('1')"><p>添加用户</p></button>
<button class="button_control" @click="showDialog('1')"><p>{{ $t('user.adduser') }}</p></button>
</div>
</div>
</div>
@@ -50,7 +50,7 @@
<div v-if="type === '1' || type === '2'" class="form_wraper">
<div class="form">
<div class="form_item">
<div class="form_item__label"><i>*</i>用户名</div>
<div class="form_item__label"><i>*</i>{{ $t('common.username') }}</div>
<div class="form_item__content">
<!-- <input type="text" class="form_item__input" v-model="username" @focus="show" data-layout="normal"> -->
<keyboard-input
@@ -63,7 +63,7 @@
</div>
</div>
<div class="form_item">
<div class="form_item__label">电话</div>
<div class="form_item__label">{{ $t('user.phone') }}</div>
<div class="form_item__content">
<input type="text" class="form_item__input" v-model="phone" @focus="show" data-layout="numeric" data-next="1">
</div>
@@ -71,7 +71,7 @@
</div>
<div class="form">
<div class="form_item">
<div class="form_item__label">姓名</div>
<div class="form_item__label">{{ $t('user.fullname') }}</div>
<div class="form_item__content">
<!-- <input type="text" class="form_item__input" v-model="name" @focus="show" data-layout="normal"> -->
<keyboard-input
@@ -84,7 +84,7 @@
</div>
</div>
<div class="form_item">
<div class="form_item__label">性别</div>
<div class="form_item__label">{{ $t('user.gender') }}</div>
<div class="form_item__content">
<div class="form_item__radio_wrap">
<div class="form_item__radio" v-for="(e, i) in sexArr" :key="i">
@@ -99,13 +99,13 @@
</div>
<div class="form">
<div v-if="type === '1'" class="form_item">
<div class="form_item__label"><i>*</i>密码</div>
<div class="form_item__label"><i>*</i>{{ $t('login.password') }}</div>
<div class="form_item__content">
<input type="password" class="form_item__input" v-model="password" @focus="show" data-layout="normal">
</div>
</div>
<div class="form_item">
<div class="form_item__label">角色</div>
<div class="form_item__label">{{ $t('role.role') }}</div>
<div class="form_item__content">
<el-select v-model="value" placeholder="请选择">
<el-option
@@ -119,8 +119,8 @@
</div>
</div>
</div>
<div v-if="type === '3'" class="form_wraper">确定重置密码吗</div>
<div v-if="type === '4'" class="form_wraper">确定删除该用户吗</div>
<div v-if="type === '3'" class="form_wraper">{{ $t('user.question1') }}</div>
<div v-if="type === '4'" class="form_wraper">{{ $t('user.question2') }}</div>
</jxDialog>
</div>
<vue-touch-keyboard id="keyboard" :options="keyoptions" v-if="visible" :layout="layout" :cancel="hide" :accept="accept" :input="input" :next="next" />

View File

@@ -3,19 +3,19 @@
<div class="right_side">
<div class="content_wrap">
<div class="title_wrap">
<h2>车辆控制</h2>
<h2>{{ $t('vehiclecontrol.vehiclecontrol') }}</h2>
</div>
<div class="page_container">
<div class="state_title-wrap">
<h3>状态</h3>
<h3>{{ $t('vehiclecontrol.Status') }}</h3>
</div>
<div class="state_wrap">
<div class="state_item_wrap">
<div class="state_item_label">偏离状态</div>
<div class="state_item_label">{{ $t('vehiclecontrol.deviatestatus') }}:</div>
<div class="state_item_val" :class="{'state_item_val_disabled': status.inLineStatus === '1'}">{{status.inLineStatus_name}}</div>
</div>
<div class="state_item_wrap">
<div class="state_item_label">更新状态</div>
<div class="state_item_label">{{ $t('vehiclecontrol.updatestatus') }}:</div>
<div class="state_item_val" :class="{'state_item_val_disabled': status.UpdateStatus === '0'}">{{status.UpdateStatus_name}}</div>
</div>
</div>
@@ -41,11 +41,11 @@
<button class="switch_item switch_item_8" @click="switchDown('12', '0')" :disabled="disabled"></button>
</div>
<div class="state_title-wrap">
<h3>控制</h3>
<h3>{{ $t('vehiclecontrol.Control') }}</h3>
</div>
<div class="control_wrap">
<div class="control_item">
<div class="control_label">显示屏控制</div>
<div class="control_label">{{ $t('vehiclecontrol.monitorcontrol') }}</div>
<div class="control_val">
<button class="state_item_switch" :class="{'is-checked': switch1 === '1'}" :disabled="disabled" @click="switchDown('2', switch1)">
<input type="checkbox" class="switch__input">
@@ -54,7 +54,7 @@
</div>
</div>
<div class="control_item">
<div class="control_label">TCS控制</div>
<div class="control_label">TCS{{ $t('vehiclecontrol.control') }}</div>
<div class="control_val">
<button class="state_item_switch" :class="{'is-checked': switch2 === '1'}" :disabled="disabled" @click="switchDown('3', switch2)">
<input type="checkbox" class="switch__input">
@@ -63,7 +63,7 @@
</div>
</div>
<div class="control_item">
<div class="control_label">SCHE控制</div>
<div class="control_label">SCHE{{ $t('vehiclecontrol.control') }}</div>
<div class="control_val">
<button class="state_item_switch" :class="{'is-checked': switch3 === '1'}" :disabled="disabled" @click="switchDown('4', switch3)">
<input type="checkbox" class="switch__input">
@@ -72,7 +72,7 @@
</div>
</div>
<div class="control_item">
<div class="control_label">RC控制</div>
<div class="control_label">RC{{ $t('vehiclecontrol.control') }}</div>
<div class="control_val">
<button class="state_item_switch" :class="{'is-checked': switch4 === '1'}" :disabled="disabled" @click="switchDown('5', switch4)">
<input type="checkbox" class="switch__input">
@@ -81,7 +81,7 @@
</div>
</div>
<div class="control_item">
<div class="control_label">Joy控制</div>
<div class="control_label">Joy{{ $t('vehiclecontrol.control') }}</div>
<div class="control_val">
<button class="state_item_switch" :class="{'is-checked': switch5 === '1'}" :disabled="disabled" @click="switchDown('6', switch5)">
<input type="checkbox" class="switch__input">
@@ -95,19 +95,19 @@
<div v-show="show" class="dialog_wrapper">
<div class="dialog">
<div class="dialog_header">
<span class="dialog_title">初始化坐标</span>
<span class="dialog_title">{{ $t('vehiclecontrol.initializecoordinates') }}</span>
</div>
<div class="dialog_body">
<div class="pop_ul_wrapper">
<ul class="pop_ul">
<li>坐标信息</li>
<li>{{ $t('vehiclecontrol.coordinateinformation') }}</li>
<li v-for="(e,i) in result" :key="i" @click="tocheck(e)" :class="{'checked': e === obj}"><span class="pop_ul_span">{{e.point_code}}</span><span class="pop_ul_span">{{e.point_name}}</span><span class="pop_ul_span">{{e.x}}</span><span class="pop_ul_span">{{e.y}}</span><span class="pop_ul_span">{{e.t}}</span></li>
</ul>
</div>
</div>
<div class="dialog_footer">
<button class="button_control button_control_s button--info button_control_disabled mgr31" :disabled="disabled" @click="_restCoordinate"><p>确定</p></button>
<button class="button_control button_control_s" @click="show=false"><p>退出</p></button>
<button class="button_control button_control_s button--info button_control_disabled mgr31" :disabled="disabled" @click="_restCoordinate"><p>{{ $t('button.ok') }}</p></button>
<button class="button_control button_control_s" @click="show=false"><p>{{ $t('button.exit') }}</p></button>
</div>
</div>
</div>
@@ -400,4 +400,9 @@ export default {
background-color #FD6A35
.pop_ul li.checked span
color #fff
.enClass
.state_item_label
font-size 26px
.control_label
font-size 24px
</style>

View File

@@ -3,7 +3,7 @@
<div class="right_side">
<div class="content_wrap">
<div class="title_wrap">
<h2>车辆状态</h2>
<h2>{{ $t('vehiclestatus.vehiclestatus') }}</h2>
</div>
<div class="page_container">
<div class="state_title-wrap">
@@ -11,62 +11,62 @@
</div>
<div class="agv_wrap">
<div class="agv_item_wrap">
<div class="agv_item_label">X坐标</div>
<div class="agv_item_label">X {{ $t('vehiclestatus.coordinate') }}:</div>
<div class="agv_item_val">{{result.x}}</div>
</div>
<div class="agv_item_wrap">
<div class="agv_item_label">Y坐标</div>
<div class="agv_item_label">Y {{ $t('vehiclestatus.coordinate') }}:</div>
<div class="agv_item_val">{{result.y}}</div>
</div>
<div class="agv_item_wrap">
<div class="agv_item_label">航向角</div>
<div class="agv_item_label">{{ $t('vehiclestatus.headingangle') }}:</div>
<div class="agv_item_val">{{result.z}}</div>
</div>
<div class="agv_item_wrap">
<div class="agv_item_label">舵轮角度</div>
<div class="agv_item_label">{{ $t('vehiclestatus.steeringwheelangle') }}:</div>
<div class="agv_item_val">{{result.carrier}}</div>
</div>
<div class="agv_item_wrap">
<div class="agv_item_label">下发速度</div>
<div class="agv_item_label">{{ $t('vehiclestatus.issuancespeed') }}:</div>
<div class="agv_item_val">{{result.send_speed}}</div>
</div>
<div class="agv_item_wrap">
<div class="agv_item_label">实际速度</div>
<div class="agv_item_label">{{ $t('vehiclestatus.actualspeed') }}:</div>
<div class="agv_item_val">{{result.real_speed}}</div>
</div>
<div class="agv_item_wrap">
<div class="agv_item_label">横向偏差</div>
<div class="agv_item_label">{{ $t('vehiclestatus.lateraldeviation') }}:</div>
<div class="agv_item_val">{{result.landscape_deviation}}</div>
</div>
<div class="agv_item_wrap">
<div class="agv_item_label">航向偏差</div>
<div class="agv_item_label">{{ $t('vehiclestatus.headingdeviation') }}:</div>
<div class="agv_item_val">{{result.course_deviation}}</div>
</div>
</div>
<div class="state_line_dot_1"></div>
<div class="state_title-wrap">
<h3>状态</h3>
<h3>{{ $t('vehiclestatus.status') }}</h3>
</div>
<div class="state_wrap">
<div class="state_left_wrap">
<div class="state_item_wrap">
<div class="agv_item_label">车辆状态</div>
<div class="agv_item_val" :class="{'state_item_val_disabled': result.vehicle_status !== '运行'}">{{result.vehicle_status}}</div>
<div class="agv_item_label">{{ $t('vehiclestatus.vehiclestatus') }}:</div>
<div class="agv_item_val agv_item_val_1" :class="{'state_item_val_disabled': result.vehicle_status !== '运行'}">{{result.vehicle_status}}</div>
</div>
<div class="state_item_wrap">
<div class="agv_item_label">工作状态</div>
<div class="agv_item_val" :class="{'state_item_val_disabled': result.working_status !== '正常'}">{{result.working_status}}</div>
<div class="agv_item_label">{{ $t('vehiclestatus.workstatus') }}:</div>
<div class="agv_item_val agv_item_val_1" :class="{'state_item_val_disabled': result.working_status !== '正常'}">{{result.working_status}}</div>
</div>
</div>
<div class="state_line_dot_2"></div>
<div class="state_right_wrap">
<div class="state_item_label">传感器状态</div>
<div class="state_item_label">{{ $t('vehiclestatus.sensorstatus') }}:</div>
<div class="state_item_val_wrap">
<div class="state_item_val" :class="{'state_item_val_disabled': result1.stopButton_status === '1'}">急停按钮</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.speedReduction_status === '1'}">避障减速</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.resetButton_status === '1'}">复位按钮</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.speedStop_status === '1'}">避障停车</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.securityTentacle_status === '1'}">安全触边</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.stopButton_status === '1'}">{{ $t('vehiclestatus.emergencystop') }}</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.speedReduction_status === '1'}">{{ $t('vehiclestatus.avoidancemoderate') }}</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.resetButton_status === '1'}">{{ $t('vehiclestatus.resetbutton') }}</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.speedStop_status === '1'}">{{ $t('vehiclestatus.avoidanceparking') }}</div>
<div class="state_item_val" :class="{'state_item_val_disabled': result1.securityTentacle_status === '1'}">{{ $t('vehiclestatus.Safetyedge') }}</div>
</div>
</div>
</div>
@@ -135,19 +135,24 @@ export default {
width 100%
_fj()
flex-wrap wrap
padding 47px 30px 10px 30px
padding 27px 30px 10px 30px
.agv_item_wrap
width 25%
_fj()
margin-bottom 50px
margin-bottom 40px
.agv_item_label
width 190px
_font(36px, 56px, #B4C1D8, 500, right)
font-family: SourceHanSansCN-Medium;
.agv_item_val
width calc(100% - 190px)
padding-left 20px
_font(36px, 56px, #3CC1FF, 500, left)
font-family: SourceHanSansCN-Medium;
.agv_item_val_1
_font(36px, 56px, #fff, 500,,)
padding-left 66px
margin-left 20px
background left center url(../../../images/new/state_btn.png) no-repeat
.state_wrap
width 100%
@@ -168,12 +173,11 @@ export default {
_fj(flex-start, flex-start)
.state_item_label
width 250px
_font(36px, 36px, #B4C1D8, 500, right)
_font(36px, 56px, #B4C1D8, 500, right)
font-family: SourceHanSansCN-Medium;
.state_item_val_wrap
position relative
top -10px
width calc(100% - 250px)
padding-left 20px
_fj(flex-start, flex-start)
flex-wrap: wrap
.state_item_val
@@ -184,4 +188,15 @@ export default {
background left center url(../../../images/new/state_btn.png) no-repeat
.state_item_val_disabled
background-image url(../../../images/new/state_btn_disable.png)
.enClass
.agv_item_label
font-size 26px
line-height 28px
.state_item_label
font-size 26px
.state_item_val
display flex
align-items: center
font-size 26px
line-height 26px
</style>

View File

@@ -6,7 +6,18 @@
<el-menu-item :index="menu.index" v-for="menu in menus" :key="menu.index">{{menu.label}}</el-menu-item>
</el-menu>
</div>
<div class="lang_change_wraper">
<el-select v-model="selectType" placeholder="请选择" popper-class="lang_dropdown" @change="selectChanged">
<el-option
v-for="(item, index) in selectTypeList"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div class="header_state_wraper">
<div class="state-line"></div>
<div class="state-item">{{ topInfo.agvrun_status_name }}</div>
<div class="state-item">{{ topInfo.automatic_status_name }}</div>
<div class="elec-qty-wrap">
@@ -33,7 +44,7 @@
<jxTime></jxTime>
</div>
</div>
<div class="body-conatiner" :class="{'body-conatiner_1': $route.path !== '/index/home'}">
<div class="body-conatiner" :class="{'enClass': selectType === 'en-us', 'body-conatiner_1': $route.path !== '/index/home'}">
<div class="hud_left"></div>
<div class="hud_right"></div>
<div class="bottom_bg"></div>
@@ -109,7 +120,7 @@ export default {
// router: '/index/home'
// }]
// }, {
// label: '任务管理',
// label: '任务',
// index: '2',
// router: '',
// children: [{
@@ -126,7 +137,7 @@ export default {
// router: '/index/taskoperates'
// }]
// }, {
// label: '故障管理',
// label: '故障',
// index: '3',
// router: '',
// children: [{
@@ -139,7 +150,7 @@ export default {
// router: '/index/errordeal'
// }]
// }, {
// label: '车辆信息',
// label: '车辆',
// index: '4',
// router: '',
// children: [{
@@ -156,7 +167,7 @@ export default {
// index: '5',
// router: '/index/teach'
// }, {
// label: '系统管理',
// label: '系统',
// index: '6',
// router: '',
// children: [{
@@ -189,7 +200,9 @@ export default {
useKbEvents: false,
preventClickEvent: false
},
topInfo: {}
topInfo: {},
selectTypeList: [{value: 'zh-cn', label: '中文'}, {value: 'en-us', label: 'English'}],
selectType: ''
}
},
computed: {
@@ -242,6 +255,11 @@ export default {
}
})
}
if (this.$i18n.locale === 'zh-cn') {
this.selectType = 'zh-cn'
} else if (this.$i18n.locale === 'en-us') {
this.selectType = 'en-us'
}
},
beforeDestroy () {
clearInterval(this.timer)
@@ -373,6 +391,10 @@ export default {
this.input.blur()
this.hide()
}
},
selectChanged (e) {
this.$i18n.locale = e
window.localStorage.setItem('locale', e)
}
}
}
@@ -397,7 +419,8 @@ export default {
border none
background-color transparent
.el-menu-item
_wh(105px, 77px)
// _wh(105px, 77px)
_wh(95px, 77px)
_font(30px, 77px, #8DBFEE, bold, center)
font-family SourceHanSansCN-Bold
font-style italic
@@ -427,10 +450,10 @@ export default {
_wh(1px,42px)
opacity 0.3
background #AECAF5
margin 0 5px
.elec-qty-wrap
position relative
_wh(67px, 43px)
margin-right 5px
z-index 151
.elec-qty
position absolute
@@ -455,7 +478,6 @@ export default {
position relative
_fj(flex-start)
height 77px
margin-left 5px
.header_user_wraper_i
_fj(flex-start)
height 77px
@@ -471,7 +493,7 @@ export default {
.header_state_wraper
_fj(flex-start)
height 77px
margin-left 60px
margin-left 5px
.header_dropdown_wraper
position absolute
top 90%
@@ -548,4 +570,24 @@ export default {
.side-bar-container
.el-menu-item-long
padding 0 30px 10px 87px !important
.lang_change_wraper
_wh(90px, 77px)
padding-top 20.5px
margin-left 45px
/deep/ .el-input, /deep/ .el-select .el-input .el-select__caret
font-size: 20px;
height 36px
line-height 36px
/deep/ .el-input__inner
font-size: 20px;
line-height: 36px;
height: 36px;
border: 1px solid #4980bd;
border-radius 0
padding-left 5px
padding-right 15px
/deep/ .el-input__suffix
right 5px
/deep/ .el-icon-arrow-up
width 10px
</style>

View File

@@ -100,16 +100,16 @@ const router = new VueRouter({
]
})
router.beforeEach((to, from, next) => {
if (!localStorage.getItem('locale')) {
let lang = navigator.language
if (lang === 'zh' || lang === 'zh-CN') {
localStorage.setItem('locale', 'zh-CN')
} else {
localStorage.setItem('locale', 'en-US')
}
}
next()
})
// router.beforeEach((to, from, next) => {
// if (!localStorage.getItem('locale')) {
// let lang = navigator.language
// if (lang === 'zh' || lang === 'zh-CN') {
// localStorage.setItem('locale', 'zh-CN')
// } else {
// localStorage.setItem('locale', 'en-US')
// }
// }
// next()
// })
export default router

View File

@@ -344,8 +344,11 @@
width 100%
.el-select-dropdown
background: rgba(7,31,62,0.95);
border: 2px solid #4980BD;
border: 1px solid #4980BD;
border-radius 0
margin-top 10px !important
.el-popper .popper__arrow
visibility hidden
border-width: 10px;
.el-popper[x-placement^=bottom] .popper__arrow
top: -10px;
@@ -379,6 +382,17 @@
padding-right: 60px;
.el-input__suffix
right 15px
.el-icon-arrow-up
width 30px
background center / 100% auto url(../images/new/arrow_up.png) no-repeat
&:before
content: ''
.lang_dropdown
margin-top 5px !important
.el-select-dropdown__item
font-size: 18px;
height 50px
line-height 50px
.dialog_footer
height 188px
padding: 50px 20px;
@@ -640,4 +654,24 @@
// .el-checkbox__input.is-checked .el-checkbox__inner::after
// left: 11px;
// top: 9px;
// transform: rotate(45deg) scaleY(2)
// transform: rotate(45deg) scaleY(2)
//
.enClass
.button
font-size 26px
.grid_wrapper table th
font-size 28px
.form_item__label
font-size 25px
.button_control p
font-size 34px
.title_wrap h2
font-size 28px
.tabs_item
font-size 20px
.agv_item_label
font-size 24px
text-align left
.agv_item_label_1
font-size 24px