国际化调整

This commit is contained in:
fan 2019-09-12 13:22:30 +08:00
parent 7a284fea4a
commit 2dffe78baf
30 changed files with 202 additions and 87 deletions

View File

@ -84,4 +84,8 @@ export default {
startSimulationFailed: 'Start simulation failed, please go back and try again',
endSimulationFailed: 'End simulation failed, please return',
runGraphIsNotLoaded: 'Today\'s run graph is not loaded',
startedComprehensiveDrillFailure: 'Started a comprehensive drill failure.',
stationAttendantStationCannotBeEmpty: 'Station attendant station cannot be empty',
destroyedRoomFailed: 'Destroyed room failed!',
exceededTheTotalNumberOfAssignableRoles: 'The number of assigned roles has exceeded the total number of assignable roles!'
};

View File

@ -145,5 +145,6 @@ export default {
amount: 'Amount',
yes: 'Yes',
no: 'No',
details: 'Details'
details: 'Details',
enterNameToFilter: 'Enter a name to filter'
};

View File

@ -21,6 +21,8 @@ import dashboard from './dashboard';
import jlmap3d from './jlmap3d';
import display from './display';
import joinTraining from './joinTraining';
import trainRoom from './trainRoom';
import menu from './menu';
export default {
...enLocale,
@ -45,5 +47,7 @@ export default {
dashboard,
jlmap3d,
display,
joinTraining
joinTraining,
trainRoom,
menu
};

View File

@ -0,0 +1,3 @@
export default {
};

View File

@ -96,5 +96,11 @@ export default {
packingDetails: 'Packing details',
belongsToMap: 'Belongs to map',
oneClickGeneration: 'One-click generation',
selectPermission: 'Select Permission'
selectPermission: 'Select Permission',
permission: 'Permission',
orderSelectionItem: 'Order selection item',
orderDetails: 'Order details',
statusType: 'Status type',
private: 'Private',
public: 'Public'
};

View File

@ -27,6 +27,7 @@ export default {
editPermissionPackageRule: 'edit authority packaging rule',
restPermissionMaxNumber: '(maximum number of remaining permissions: {0})',
pleaseSelectTransferPermission: 'Select transfer permissions',
permissionName: 'Permission Name'
permissionName: 'Permission Name',
private: 'Private',
public: 'Public'
};

View File

@ -252,5 +252,6 @@ export default {
modifyTheFailure: 'Modify the failure',
selectTheCourseNameFirst: 'Please select the course name first',
selectMultiplePermissions: 'Please select multiple permissions',
enterPermissionName: 'Please enter a permission name'
enterPermissionName: 'Please enter a permission name',
pleaseSelectPermission: 'Please select permission'
};

View File

@ -137,5 +137,9 @@ export default {
setUpASubscriptionMapFailed: 'Setting up a subscription map failed!',
getMapStateDataException: 'Get map state data exception, please refresh the page to reload. If you encounter such problems many times, please contact the development team in an emergency!',
packagedSuccessfully: 'Packaged successfully',
oneKeyGeneratedSuccessfully: 'One key generated successfully!'
oneKeyGeneratedSuccessfully: 'One key generated successfully!',
obtainedPermissionSuccessfully: 'Successfully obtained permission',
modifyTheUserPermissionStatus: 'Will this action modify the user permission status?',
destroyRoomHint: 'You will destroy the room, are you sure you want to do this?',
contentIsEmptyAndCannotBeSent: 'The content is empty and cannot be sent!'
};

View File

@ -0,0 +1,29 @@
export default {
comprehensiveTrainingManager: 'Comprehensive training manager:',
comprehensiveDrillRoom: 'Comprehensive drill room',
numberOfAssignableRoles: 'Number of assignable roles:',
dispatcher: 'Dispatcher',
increaseDispatchers: 'Increase dispatchers',
stationAttendant: 'Station attendant',
increaseStationAttendant: 'Increase station attendant',
teacher: 'Teacher',
increaseTeacher: 'Increase teacher',
universalAccount: 'Universal Account',
increaseUniversalAccount: 'Increase universal account',
driver: 'Driver',
increaseDriver: 'Increase driver',
bigScreen: 'Big screen',
increaseBigScreen: 'Increase big screen',
destroyRoom: 'Destroy room',
generatingQRCode: 'Generating QRCode',
startSimulation: 'Start simulation',
enterSimulation: 'Enter simulation',
endSimulation: 'End Simulation',
distributeTheRoomQRCode: 'Distribute the room QR code',
increaseIbp: 'increase IBP',
kickOutTheRoom: 'Kick out the room',
sending: 'sending...',
holdAndTalk: 'Hold and talk',
recording: 'recording...',
sendText: 'Send text'
};

View File

@ -84,4 +84,8 @@ export default {
startSimulationFailed: '开始仿真失败,请返回重试',
endSimulationFailed: '结束仿真失败,请返回',
runGraphIsNotLoaded: '今日运行图未加载',
startedComprehensiveDrillFailure: '开始综合演练失败。',
stationAttendantStationCannotBeEmpty: '值班员所属车站不能为空',
destroyedRoomFailed: '销毁房间失败!',
exceededTheTotalNumberOfAssignableRoles: '分配角色数量已超过可分配角色总数!'
};

View File

@ -18,7 +18,7 @@ export default {
chooseDate: '请选择日期',
chooseTime: '请选择时间',
chooseDateTime: '请选择日期时间',
choosh: '请选择',
choose: '请选择',
select: '选 择',
selectAdd: '选中添加',
export: '导 出',
@ -151,5 +151,6 @@ export default {
amount: '总数量',
yes: '是',
no: '否',
details: '详情'
details: '详情',
enterNameToFilter: '输入名称进行过滤'
};

View File

@ -21,6 +21,8 @@ import dashboard from './dashboard';
import jlmap3d from './jlmap3d';
import display from './display';
import joinTraining from './joinTraining';
import trainRoom from './trainRoom';
import menu from './menu';
export default {
...cnLocale,
@ -44,5 +46,8 @@ export default {
exam,
dashboard,
jlmap3d,
display
display,
joinTraining,
trainRoom,
menu
};

View File

@ -0,0 +1,3 @@
export default {
};

View File

@ -96,5 +96,9 @@ export default {
packingDetails: '打包详情',
belongsToMap: '所属地图',
oneClickGeneration: '一键生成',
selectPermission: '选择权限'
selectPermission: '选择权限',
permission: '权限',
orderSelectionItem: '订单选择商品',
orderDetails: '订单详情',
statusType: '状态类型',
};

View File

@ -27,6 +27,7 @@ export default {
editPermissionPackageRule: '编辑权限打包规则',
restPermissionMaxNumber: '(剩余最大权限个数:{0}',
pleaseSelectTransferPermission: '选择转赠权限',
permissionName: '权限名称'
permissionName: '权限名称',
private: '专用',
public: '公用'
};

View File

@ -262,5 +262,6 @@ export default {
modifyTheFailure: '修改失败',
selectTheCourseNameFirst: '请先选择课程名称',
selectMultiplePermissions: '请选择多个权限',
enterPermissionName: '请输入权限名称'
enterPermissionName: '请输入权限名称',
pleaseSelectPermission: '请选择权限'
};

View File

@ -141,5 +141,9 @@ export default {
setUpASubscriptionMapFailed: '设置订阅地图失败!',
getMapStateDataException: '获取地图状态数据异常,请刷新页面重新加载。若多次遇到此类问题,请急时联系开发团队处理!',
packagedSuccessfully: '打包成功',
oneKeyGeneratedSuccessfully: '一键生成成功!'
oneKeyGeneratedSuccessfully: '一键生成成功!',
obtainedPermissionSuccessfully: '领取权限成功',
modifyTheUserPermissionStatus: '此操作将修改用户权限状态?',
destroyRoomHint: '您将销毁房间,是否确定执行此操作',
contentIsEmptyAndCannotBeSent: '内容为空,不可发送!'
};

View File

@ -0,0 +1,29 @@
export default {
comprehensiveTrainingManager: '综合实训管理者:',
comprehensiveDrillRoom: '综合演练室',
numberOfAssignableRoles: '可分配角色数量:',
dispatcher: '调度员',
increaseDispatchers: '增加调度人员',
stationAttendant: '车站值班员',
increaseStationAttendant: '增加车站值班员',
teacher: '教员',
increaseTeacher: '增加教员',
universalAccount: '通号',
increaseUniversalAccount: '增加通号',
driver: '司机',
increaseDriver: '增加司机',
bigScreen: '大屏',
increaseBigScreen: '增加大屏',
destroyRoom: '销毁房间',
generatingQRCode: '生成二维码',
startSimulation: '开始仿真',
enterSimulation: '进入仿真',
endSimulation: '结束仿真',
distributeTheRoomQRCode: '分发房间二维码',
increaseIbp: '增加IBP',
kickOutTheRoom: '提出房间',
sending: '发送中...',
holdAndTalk: '按住说话',
recording: '录音中...',
sendText: '发送文字'
};

View File

@ -77,13 +77,13 @@ export default {
const form = {
labelWidth: '135px',
items: [
{ prop: 'name', label: '商品名称', type: 'text', required: false },
{ prop: 'permissionName', label: '权限', type: 'text', required: false, disabled: true, rightWidth: true, buttontip: '选择权限', buttonClick: this.buttonClick },
{ prop: 'forever', label: '是否试用', type: 'radio', required: false, options: this.$ConstSelect.Whether, disabled: this.foreverIsDisabled },
{ prop: 'tryUseTimeUnit', label: '时间单位', type: 'select', required: false, disabled: this.foreverIsDisabled, show: this.isShowForever, options: this.TimeStyleList },
{ prop: 'tryUseTime', label: '试用时长', type: 'number', required: false, disabled: this.foreverIsDisabled, show: this.isShowForever, message: `${this.TimeStyleDict[this.formModel.tryUseTimeUnit]}` },
{ prop: 'price', label: '价格', type: 'number', required: false, min: 0.01, message: '元' },
{ prop: 'remarks', label: '描述', type: 'textarea', required: false }
{ prop: 'name', label: this.$t('orderAuthor.commodityName'), type: 'text', required: false },
{ prop: 'permissionName', label: this.$t('orderAuthor.permission'), type: 'text', required: false, disabled: true, rightWidth: true, buttontip: this.$t('orderAuthor.selectPermission'), buttonClick: this.buttonClick },
{ prop: 'forever', label: this.$t('orderAuthor.whetherTrial'), type: 'radio', required: false, options: this.$ConstSelect.Whether, disabled: this.foreverIsDisabled },
{ prop: 'tryUseTimeUnit', label: this.$t('orderAuthor.unitOfTime'), type: 'select', required: false, disabled: this.foreverIsDisabled, show: this.isShowForever, options: this.TimeStyleList },
{ prop: 'tryUseTime', label: this.$t('orderAuthor.trialTime'), type: 'number', required: false, disabled: this.foreverIsDisabled, show: this.isShowForever, message: `${this.TimeStyleDict[this.formModel.tryUseTimeUnit]}` },
{ prop: 'price', label: this.$t('orderAuthor.price'), type: 'number', required: false, min: 0.01, message: this.$t('global.yuan') },
{ prop: 'remarks', label: this.$t('orderAuthor.describtion'), type: 'textarea', required: false }
]
};
@ -96,7 +96,7 @@ export default {
{ required: true, message: this.$t('rules.goodsNameInput'), trigger: 'blur' }
],
permissionName: [
{ required: true, message: '请选择权限', trigger: 'change' }
{ required: true, message: this.$t('rules.pleaseSelectPermission'), trigger: 'change' }
],
forever: [
{ required: true, message: this.$t('rules.pleaseSelect'), trigger: 'change' }
@ -177,7 +177,7 @@ export default {
id: res.data.id
};
} catch (err) {
this.$messageBox('获取商品详情失败');
this.$messageBox(this.$t('error.getItemDetailFailed'));
}
}

View File

@ -60,11 +60,11 @@ export default {
prop: 'name'
},
{
title: '权限名称',
title: this.$t('orderAuthor.permissionName'),
prop: 'permissionName'
},
{
title: `${this.$t('orderAuthor.price')}`,
title: `${this.$t('orderAuthor.price')}`,
prop: 'price'
},
{

View File

@ -1,6 +1,6 @@
<template>
<el-dialog
title="订单选择商品"
:title="this.$t('orderAuthor.orderSelectionItem')"
:visible.sync="show"
top="20px"
width="90%"
@ -75,7 +75,7 @@ export default {
prop: 'name'
},
{
title: '权限名称',
title: this.$t('orderAuthor.permissionName'),
prop: 'permissionName'
},
{
@ -83,7 +83,7 @@ export default {
prop: 'price'
},
{
title: '所属地图',
title: this.$t('orderAuthor.belongsToMap'),
prop: 'mapId',
type: 'tag',
columnValue: (row) => { return this.$convertField(row.mapId, this.mapList, ['value', 'label']); },

View File

@ -1,12 +1,12 @@
<template>
<el-dialog title="订单详情" :visible.sync="show" width="500px" :before-do-close="doClose" :close-on-click-modal="false">
<el-dialog :title="this.$t('orderAuthor.orderDetails')" :visible.sync="show" width="500px" :before-do-close="doClose" :close-on-click-modal="false">
<div>
<el-scrollbar wrap-class="scrollbar-wrapper" style="height: 400px">
<data-form ref="dataform" :form="form" :form-model="formModel" class="data-box" />
</el-scrollbar>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="doClose"> </el-button>
<el-button type="primary" @click="doClose">{{$t('global.close')}}</el-button>
</div>
</el-dialog>
</template>

View File

@ -73,7 +73,7 @@ export default {
prop: 'userName'
},
{
title: '用户手机号',
title: this.$t('orderAuthor.userMobile'),
prop: 'userMobile'
},
{
@ -171,7 +171,7 @@ export default {
width: '260',
buttons: [
{
name: '详情',
name: this.$t('global.details'),
handleClick: this.handleDetail
},
{

View File

@ -1,5 +1,5 @@
<template>
<el-dialog title="扫码" :visible.sync="centerDialogVisible" width="30%" center>
<el-dialog :title="this.$t('global.scan')" :visible.sync="centerDialogVisible" width="30%" center>
<el-input v-model="input" :placeholder="$t('global.inputRoomNumber')" />
<span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false">{{ $t('global.cancel') }}</el-button>
@ -30,7 +30,7 @@ export default {
if (this.input) {
try {
await getPermission(`${this.input}`);
this.$message.success('领取权限成功');
this.$message.success(this.$t('tip.obtainedPermissionSuccessfully'));
this.centerDialogVisible = false;
} catch (error) {
this.$messageBox(`${this.$t('error.scanningError')}:${error.message}`);

View File

@ -1,5 +1,5 @@
<template>
<el-dialog title="打包详情" :visible.sync="dialogShow" width="800px" :before-close="close">
<el-dialog :title="this.$t('orderAuthor.packingDetails')" :visible.sync="dialogShow" width="800px" :before-close="close">
<div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</div>
@ -38,7 +38,7 @@ export default {
indexShow: true,
columns: [
{
title: '权限名称',
title: this.$t('orderAuthor.permissionName'),
prop: 'name'
},
{

View File

@ -35,7 +35,7 @@ export default {
},
status: {
type: 'select',
label: '状态类型',
label: this.$t('permission.statusType'),
config: {
data: []
}
@ -45,8 +45,8 @@ export default {
label: this.$t('permission.permissionUseType'),
config: {
data: [
{ value: false, label: '专用' },
{ value: true, label: '公用' }
{ value: false, label: this.$t('permission.private')},
{ value: true, label: this.$t('permission.public')}
]
}
}
@ -58,11 +58,11 @@ export default {
indexShow: true,
columns: [
{
title: '用户名称',
title: this.$t('permission.userName'),
prop: 'userName'
},
{
title: '权限名称',
title: this.$t('permission.permissionName'),
width: '260',
prop: 'permissionName'
},
@ -152,7 +152,7 @@ export default {
// }
// },
{
name: '详情',
name: this.$t('global.details'),
handleClick: this.handleRoleVest,
type: '',
showControl: (row) => { return !row.permissionType; }
@ -204,7 +204,7 @@ export default {
}
},
handleEfficacy(index, row) {
this.$confirm('此操作将修改用户权限状态?', this.$t('global.tips'), {
this.$confirm(this.$t('tip.modifyTheUserPermissionStatus'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'),
type: 'warning'

View File

@ -10,7 +10,7 @@
:before-close="cancel"
:close-on-click-modal="false"
>
<el-input v-model="filterText" placeholder="输入名称进行过滤" clearable />
<el-input v-model="filterText" :placeholder="this.$t('global.enterNameToFilter')" clearable />
<ul class="listBox">
<li v-for="(item,index) in list" :key="index" class="listLi">
<input
@ -25,8 +25,8 @@
</li>
</ul>
<span slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
<el-button type="primary" @click="commit"> </el-button>
<el-button @click="cancel">{{$t('global.cancel')}}</el-button>
<el-button type="primary" @click="commit">{{$t('global.confirm')}}</el-button>
</span>
</el-dialog>
</template>

View File

@ -3,10 +3,10 @@
<div class="content-box">
<!-- title显示 -->
<div class="creator">
<p style="margin-top: 2px;font-size: 15px;">综合实训管理者: {{ roomInfo.creator }}</p>
<p class="roomName">综合演练室</p>
<p style="margin-top: 2px;font-size: 15px;">{{ $t('trainRoom.comprehensiveTrainingManager') + roomInfo.creator }}</p>
<p class="roomName">{{$t('trainRoom.comprehensiveDrillRoom')}}</p>
<div style="padding-right: 30px;">
<p class="num">可分配角色数量: {{ permissionRest }} / {{ roomInfo.permissionNum - 1 }}</p>
<p class="num">{{$t('trainRoom.numberOfAssignableRoles')}}{{ permissionRest }} / {{ roomInfo.permissionNum - 1 }}</p>
</div>
</div>
<!-- 聊天窗口 -->
@ -18,7 +18,7 @@
<div style="height: calc(100% - 20px); overflow-y: scroll; padding: 0px 30px;">
<div style="display: flex; justify-content: space-between;">
<div class="Scheduling">
<p class="title">调度员</p>
<p class="title">{{$t('trainRoom.dispatcher')}}</p>
<ul>
<li v-for="(nor, index) in dispatchList" :key="index" class="selectPerson">
<span>{{ nor.nickName }}</span>
@ -34,7 +34,7 @@
</div>
</div>
<div class="Scheduling">
<p class="title">车站值班员</p>
<p class="title">{{$t('trainRoom.stationAttendant')}}</p>
<ul>
<li v-for="(nor, index) in equipmentList" :key="index" class="selectPerson">
<span>{{ nor.nickName }}</span>
@ -46,7 +46,7 @@
<div style="float: right; margin-right: 15px;">
<el-select
v-model="nor.deviceCode"
placeholder="请选择"
:placeholder="this.$t('global.choose')"
size="mini"
:disabled="userId != roomInfo.creatorId"
@change="handleChangeUser(nor, 'Attendant', stationListForEquipment, equipmentList)"
@ -74,7 +74,7 @@
</div>
<div style="display: flex; justify-content: space-between;">
<div class="Scheduling ">
<p class="title">教员</p>
<p class="title">{{$t('trainRoom.teacher')}}</p>
<ul>
<li v-for="(nor, index) in adminList" :key="index" class="selectPerson">
<span>{{ nor.nickName }}</span>
@ -90,7 +90,7 @@
</div>
</div>
<div class="Scheduling ">
<p class="title">通号</p>
<p class="title">{{$t('trainRoom.universalAccount')}}</p>
<ul>
<li v-for="(nor, index) in signalList" :key="index" class="selectPerson">
<span>{{ nor.nickName }}</span>
@ -108,7 +108,7 @@
</div>
<div style="display: flex; justify-content: space-between;">
<div class="Scheduling">
<p class="title">司机</p>
<p class="title">{{$t('trainRoom.driver')}}</p>
<ul>
<li v-for="(nor, index) in driverList" :key="index" class="selectPerson">
<span>{{ nor.nickName }}</span>
@ -136,7 +136,7 @@
<div style="float: right; margin-right: 15px;">
<el-select
v-model="nor.deviceCode"
placeholder="请选择"
:placeholder="this.$t('global.choose')"
size="mini"
:disabled="userId != roomInfo.creatorId"
@change="handleChangeUser(nor, 'IBP', stationListForIBP, ibpList)"
@ -164,7 +164,7 @@
</div>
<div style="display: flex; justify-content: space-between;">
<div class="Scheduling">
<p class="title">大屏</p>
<p class="title">{{$t('trainRoom.bigScreen')}}</p>
<ul>
<li v-for="(nor, index) in bigScreenList" :key="index" class="selectPerson">
<span>{{ nor.nickName }}</span>
@ -188,7 +188,7 @@
type="danger"
:loading="loading"
@click="exit"
>销毁房间
>{{$t('trainRoom.destroyRoom')}}
</el-button>
<el-button
v-if="userId == roomInfo.creatorId"
@ -196,7 +196,7 @@
type="success"
:loading="loading"
@click="postCode"
>生成二维码
>{{$t('trainRoom.generatingQRCode')}}
</el-button>
<template v-if="!starting">
<el-button
@ -206,7 +206,7 @@
:loading="loading"
@click="start"
>
开始仿真</el-button>
{{$t('trainRoom.startSimulation')}}</el-button>
</template>
<template v-else>
<el-button
@ -215,7 +215,7 @@
:loading="loading"
@click="joinJointTrain"
>
进入仿真</el-button>
{{$t('trainRoom.enterSimulation')}}</el-button>
<el-button
v-if="userId == roomInfo.creatorId"
style="margin-left: 10px"
@ -223,9 +223,9 @@
:loading="loading"
@click="stop"
>
结束仿真</el-button>
{{$t('trainRoom.endSimulation')}}</el-button>
</template>
<el-button type="" @click="backRoom">返回
<el-button type="" @click="backRoom">{{$t('global.back')}}
</el-button>
</div>
</div>
@ -236,7 +236,7 @@
<div style="float: left;" />
<div style="float: right; font-size: 15px;">{{ treeData.length }}/{{ roomInfo.totalNum }}</div>
</div>
<el-input v-model="filterText" placeholder="输入名称进行过滤" clearable />
<el-input v-model="filterText" :placeholder="this.$t('global.enterNameToFilter')" clearable />
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: (height) +'px' }">
<el-tree
ref="trainingTree"
@ -480,7 +480,7 @@ export default {
this.treeData.splice(index, 1);
if (this.userId == param.id) {
this.$router.push({ path: `/` });
this.messageInfo('您被管理员踢出房间。', 'warning');
this.messageInfo(this.$t('tip.beKickedOut'), 'warning');
} else {
param.userRole = '';
param['deviceCode'] = '';
@ -640,7 +640,7 @@ export default {
if (res.code == '200') {
const param = {
url: res.data,
title: '分发房间二维码'
title: this.$t('trainRoom.distributeTheRoomQRCode')
};
if (this.$refs) {
this.$refs.qrCode.doShow(param);
@ -662,11 +662,11 @@ export default {
await startJointTraining(this.$route.query.group);
this.loading = false;
} catch (error) {
this.messageInfo('开始综合演练失败。', 'error');
this.messageInfo( this.$t('error.startedComprehensiveDrillFailure'), 'error');
this.loading = false;
}
} else {
this.messageInfo('车站值班员所属车站不能为空', 'error');
this.messageInfo( this.$t('error.stationAttendantStationCannotBeEmpty'), 'error');
this.loading = false;
}
},
@ -687,26 +687,36 @@ export default {
this.loading = false;
this.$router.push({ path: `/demonstration/detail/${this.mapId}` });
} catch (error) {
this.messageInfo('操作失败!', 'error');
this.messageInfo( this.$t('error.operationFailure'), 'error');
}
},
//
exit() {
this.loading = false;
this.$confirm('您将销毁房间,是否确定执行此操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
this.$confirm( this.$t('tip.destroyRoomHint'), this.$t('tip.hint'), {
confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'),
type: 'warning'
}).then(async () => {
try {
await deljointTrainRoom(this.$route.query.group);
} catch (error) {
this.messageInfo('销毁房间失败!', 'error');
this.messageInfo(this.$t('error.destroyedRoomFailed'), 'error');
}
});
},
//
addingRoles(name, title) {
const titleMap = {
'增加调度人员': this.$t('trainRoom.increaseDispatchers'),
'增加车站值班员': this.$t('trainRoom.increaseStationAttendant'),
'增加教员': this.$t('trainRoom.increaseTeacher'),
'增加通号': this.$t('trainRoom.increaseUniversalAccount'),
'增加司机': this.$t('trainRoom.driver'),
'增加大屏': this.$t('trainRoom.increaseBigScreen'),
'增加IBP': this.$t('trainRoom.increaseIbp')
};
title = titleMap[title];
this.listName = name;
const treeList = [];
this.treeData.forEach(item => {
@ -763,7 +773,7 @@ export default {
});
} catch (error) {
if (error.code == 500009) {
this.messageInfo('分配角色数量已超过可分配角色总数!', 'error');
this.messageInfo(this.$t('error.exceededTheTotalNumberOfAssignableRoles'), 'error');
}
this.treeData.forEach(item => {
if (item.userRole == '' || item.userRole == 'Audience' || item.userRole == 'IBP') {

View File

@ -29,7 +29,7 @@ export default {
menu: [],
menuShow: [
{
label: '踢出房间',
label: this.$t('trainRoom.kickOutTheRoom'),
handler: this.kicked
}
],

View File

@ -39,7 +39,7 @@
rows=""
cols=""
/>
<button class="sendBtn" @click="sendText()">发送文字</button>
<button class="sendBtn" @click="sendText()">{{$t('trainRoom.sendText')}}</button>
<div
class="sendBtn yuyin_start zIndex1"
:style="{background: background}"
@ -47,7 +47,7 @@
@mouseup="stopRecording()"
>{{ speak }}</div>
<div v-show="sending" class="sendBtn yuyin_start zIndex2" :style="{background: background}">
发送中...</div>
{{$t('trainRoom.sending')}}</div>
</div>
</div>
</div>
@ -72,7 +72,7 @@ export default {
text: '',
recorders: null,
stomp: null,
speak: '按住说话',
speak: this.$t('trainRoom.holdAndTalk'),
sending: false,
background: '',
userId: ''
@ -93,7 +93,7 @@ export default {
//
async sendText() {
if (!this.text.trim()) {
alert('内容为空,不可发送!');
alert(this.$t('trainRoom.contentIsEmptyAndCannotBeSent'));
this.text = '';
} else {
try {
@ -107,7 +107,7 @@ export default {
//
startRecording() {
this.background = '#ccc';
this.speak = '录音中...';
this.speak = this.$t('trainRoom.recording');
this.sending = false;
HZRecorder.init.get(rec => {
if (typeof rec == 'object') {
@ -119,7 +119,7 @@ export default {
//
async stopRecording() {
this.background = '';
this.speak = '按住说话';
this.speak = this.$t('trainRoom.holdAndTalk');
this.sending = true;
if (this.recorders) {
this.recorders.stop();
@ -131,25 +131,25 @@ export default {
if (message.err_no == 3301) {
this.$message({
showClose: true,
message: '音频质量有问题',
message: this.$t('error.problemWithAudioQuality'),
type: 'error'
});
} else if (message.err_no == 3308) {
this.$message({
showClose: true,
message: '音频过长,建议60s以下',
message: this.$t('error.audioIsTooLong'),
type: 'error'
});
} else if (message.err_no == 3314) {
this.$message({
showClose: true,
message: '音频太短,建议重录',
message: this.$t('error.audioIsTooShort'),
type: 'error'
});
} else {
this.$message({
showClose: true,
message: '网络问题,请重试',
message: this.$t('error.networkProblem'),
type: 'error'
});
}
@ -159,7 +159,7 @@ export default {
this.sending = false;
this.$message({
showClose: true,
message: '音频太短,建议重录',
message: this.$t('error.audioIsTooShort'),
type: 'error'
});
}