Merge remote-tracking branch 'origin/test'
This commit is contained in:
commit
3855087abd
@ -265,3 +265,11 @@ export function loadTrainingBg(group, trainingId) {
|
||||
method: 'post'
|
||||
});
|
||||
}
|
||||
/** 预备开始场景 */
|
||||
export function prepareScene(group, params) {
|
||||
return request({
|
||||
url:`/api/training2Simulation/${group}/prepare/start`,
|
||||
method: 'post',
|
||||
params
|
||||
});
|
||||
}
|
||||
|
@ -182,3 +182,10 @@ export function importTrainingData(data) {
|
||||
data
|
||||
});
|
||||
}
|
||||
/** 实训跳转到当前步骤*/
|
||||
export function jumpToTraining(group, stepId) {
|
||||
return request({
|
||||
url: `/api/training2Simulation/${group}/jumpTo/${stepId}`,
|
||||
method: 'put'
|
||||
});
|
||||
}
|
||||
|
@ -318,11 +318,12 @@ export default class Switch extends Group {
|
||||
|
||||
/** 名称动画*/
|
||||
nameTextAnimation() {
|
||||
this.name.getNameText().animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
.when(1000, { textFill: this.style.Switch.text.lossColor })
|
||||
.when(2000, { textFill: this.style.backgroundColor })
|
||||
.start();
|
||||
if (this.name.getNameText()) {
|
||||
this.name.getNameText().animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
.when(1000, { textFill: this.style.Switch.text.lossColor })
|
||||
.when(2000, { textFill: this.style.backgroundColor });
|
||||
}
|
||||
|
||||
this.name.getTextRect().animateStyle(true)
|
||||
.when(0, { textFill: this.style.backgroundColor })
|
||||
|
163
src/jmapNew/theme/datie_02/menus/dialog/loadSpareTrain.vue
Normal file
163
src/jmapNew/theme/datie_02/menus/dialog/loadSpareTrain.vue
Normal file
@ -0,0 +1,163 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-dialogDrag
|
||||
:class="popClass+' train-set-plan'"
|
||||
:title="title"
|
||||
:visible.sync="show"
|
||||
width="360px"
|
||||
:before-close="doClose"
|
||||
:z-index="2000"
|
||||
:modal="false"
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="11">车组号</el-col>
|
||||
<el-col :span="11" :offset="1">
|
||||
<el-select v-model="addModel.groupNumber" size="mini">
|
||||
<el-option
|
||||
v-for="item in trainList"
|
||||
:key="item.code"
|
||||
:disabled="disabledTrain(item.code)"
|
||||
:label="item.code"
|
||||
:value="item.code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row justify="center" class="button-group">
|
||||
<el-col :span="10">
|
||||
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
|
||||
</el-col>
|
||||
<el-col :span="8" :offset="5">
|
||||
<el-button :id="domIdCancel" @click="cancel">取 消</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||
import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
|
||||
|
||||
export default {
|
||||
name: 'TrainSetPlan',
|
||||
components: {
|
||||
NoticeInfo
|
||||
},
|
||||
props:{
|
||||
popClass:{
|
||||
type:String,
|
||||
required:true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
trainNoList: [],
|
||||
selected: null,
|
||||
messageTip1:'',
|
||||
addModel: {
|
||||
groupNumber: '',
|
||||
sectionCode: ''
|
||||
},
|
||||
dialogShow: false,
|
||||
loading: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('map', [
|
||||
'mapConfig',
|
||||
'trainList'
|
||||
]),
|
||||
show() {
|
||||
return this.dialogShow && !this.$store.state.menuOperation.break;
|
||||
},
|
||||
domIdCancel() {
|
||||
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
|
||||
},
|
||||
domIdConfirm() {
|
||||
return this.dialogShow ? OperationEvent.Train.editTrainId.menu.domId : '';
|
||||
},
|
||||
title() {
|
||||
return '加载备用车';
|
||||
}
|
||||
},
|
||||
watch:{},
|
||||
methods: {
|
||||
doShow(operate, selected) {
|
||||
this.$root.$emit('dialogOpen', selected);
|
||||
this.selected = selected;
|
||||
// 如果不是断点激活,则需要对初始值进行初始化
|
||||
this.addModel.sectionCode = selected.code;
|
||||
this.dialogShow = true;
|
||||
this.$nextTick(function () {
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
});
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
this.addModel = {
|
||||
groupNumber: '',
|
||||
sectionCode: ''
|
||||
};
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
this.$store.dispatch('map/setTrainWindowShow', false);
|
||||
mouseCancelState(this.selected);
|
||||
},
|
||||
commit() {
|
||||
if (!this.addModel.groupNumber) {
|
||||
this.messageTip1 = '请输入车组号';
|
||||
return;
|
||||
}
|
||||
const params = {
|
||||
groupNumber: this.addModel.groupNumber,
|
||||
sectionCode: this.addModel.sectionCode,
|
||||
right: true
|
||||
};
|
||||
this.messageTip1 = '';
|
||||
this.loading = true;
|
||||
commitOperate(menuOperate.Section.loadSpareTrain, params, 2).then(({valid})=>{
|
||||
this.loading = false;
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
this.doClose();
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
cancel() {
|
||||
const operate = {
|
||||
operation: OperationEvent.Command.cancel.menu.operation
|
||||
};
|
||||
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
}).catch(() => { this.doClose(); });
|
||||
},
|
||||
disabledTrain(code) {
|
||||
return this.$store.state.map.activeTrainList.includes(code);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
/deep/ .el-row {
|
||||
margin: 10px
|
||||
}
|
||||
|
||||
.ningbo-01__systerm .el-dialog .base-label {
|
||||
// background: rgba(0, 0, 0, x);
|
||||
position: relative;
|
||||
left: -5px;
|
||||
top: -18px;
|
||||
padding: 0 5px;
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
</style>
|
@ -4,6 +4,7 @@
|
||||
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
||||
<train-add-plan ref="trainAddPlan" pop-class="chengdou-03__systerm" />
|
||||
<set-fault ref="setFault" pop-class="datie-02__systerm" />
|
||||
<load-spare-train ref="loadSpareTrain" pop-class="datie-02__systerm" />
|
||||
<add-spare-train ref="addSpareTrain" />
|
||||
<draw-select ref="drawSelect" />
|
||||
<fork-directive ref="forkDirective" />
|
||||
@ -22,6 +23,7 @@ import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/men
|
||||
import AddSpareTrain from './dialog/addSpareTrain';
|
||||
import DrawSelect from './dialog/drawSelect';
|
||||
import ForkDirective from './dialog/forkDirective';
|
||||
import LoadSpareTrain from './dialog/loadSpareTrain';
|
||||
|
||||
export default {
|
||||
name: 'SectionMenu',
|
||||
@ -32,7 +34,8 @@ export default {
|
||||
SetFault,
|
||||
AddSpareTrain,
|
||||
DrawSelect,
|
||||
ForkDirective
|
||||
ForkDirective,
|
||||
LoadSpareTrain
|
||||
},
|
||||
props: {
|
||||
selected: {
|
||||
@ -84,6 +87,11 @@ export default {
|
||||
label: '取消故障',
|
||||
handler: this.cancelStoppage,
|
||||
cmdType: CMD.Fault.CMD_CANCEL_FAULT
|
||||
},
|
||||
{
|
||||
label: '设置备用车',
|
||||
handler: this.loadSpare,
|
||||
cmdType: CMD.Section.CMD_TRAIN_LOAD_SPARE_TRAIN
|
||||
}
|
||||
]
|
||||
};
|
||||
@ -107,14 +115,14 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
const isDev = process.env.NODE_ENV === 'development';
|
||||
if (isDev) {
|
||||
this.menuNormal.push( {
|
||||
label: '新建计划列车',
|
||||
handler: this.createPlanTrain,
|
||||
cmdType: CMD.Section.CMD_Train_Init_Plan
|
||||
});
|
||||
}
|
||||
// const isDev = process.env.NODE_ENV === 'development';
|
||||
// if (isDev) {
|
||||
// this.menuNormal.push( {
|
||||
// label: '新建计划列车',
|
||||
// handler: this.createPlanTrain,
|
||||
// cmdType: CMD.Section.CMD_Train_Init_Plan
|
||||
// });
|
||||
// }
|
||||
},
|
||||
methods: {
|
||||
initMenu() {
|
||||
@ -202,6 +210,13 @@ export default {
|
||||
this.$refs.trainAddPlan.doShow(operate);
|
||||
}
|
||||
});
|
||||
},
|
||||
loadSpare() {
|
||||
commitOperate(menuOperate.Section.loadSpareTrain, {sectionCode:this.selected.code}).then(({valid, operate})=>{
|
||||
if (valid) {
|
||||
this.$refs.loadSpareTrain.doShow(operate, this.selected);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -516,7 +516,9 @@ export default {
|
||||
CMD_Conversation_Group_Text_Chat: {value: 'Conversation_Group_Text_Chat', label: '发送会话群文字消息'},
|
||||
CMD_Conversation_Group_Audio_Base64: {value: 'Conversation_Group_Audio_Base64', label: '发送会话群语音消息'},
|
||||
CMD_Conversation_Group_Private_Text_Chat: {value: 'Conversation_Group_Private_Text_Chat', label: '发送私聊文字消息'},
|
||||
CMD_Conversation_Group_Private_Audio_Base64: {value: 'Conversation_Group_Private_Audio_Base64', label: '发送私聊语音消息'}
|
||||
CMD_Conversation_Group_Private_Audio_Base64: {value: 'Conversation_Group_Private_Audio_Base64', label: '发送私聊语音消息'},
|
||||
CMD_Conversation_Group_Create: {value: 'Conversation_Group_Create', label: '创建会话群'},
|
||||
CMD_Conversation_Group_Invite_Member: {value: 'Conversation_Group_Invite_Member', label: '邀请人员入群'}
|
||||
},
|
||||
PSL: {
|
||||
CMD_PSL_PRESS_BUTTON: {value: 'PSL_PRESS_BUTTON', label: 'PSL按钮操作'}
|
||||
|
@ -4389,11 +4389,11 @@ export const OperationEvent = {
|
||||
},
|
||||
moonDay: {
|
||||
operation: 'b101',
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-MoonDay'
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-MoonDay{BOTTOM}'
|
||||
},
|
||||
hourMinute: {
|
||||
operation: 'b102',
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-HourMinute'
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-HourMinute{BOTTOM}'
|
||||
},
|
||||
result: {
|
||||
operation: 'b103',
|
||||
@ -4401,11 +4401,11 @@ export const OperationEvent = {
|
||||
},
|
||||
noticeTimeMoonDay: {
|
||||
operation: 'b104',
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-NoticeTimeMoonDay'
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-NoticeTimeMoonDay{BOTTOM}'
|
||||
},
|
||||
noticeTimeHourMinute: {
|
||||
operation: 'b105',
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-NoticeTimeHourMinute'
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-NoticeTimeHourMinute{BOTTOM}'
|
||||
},
|
||||
noticeTimeInfo: {
|
||||
operation: 'b106',
|
||||
@ -4413,11 +4413,11 @@ export const OperationEvent = {
|
||||
},
|
||||
arriveTimeMoonDay: {
|
||||
operation: 'b107',
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-ArriveTimeMoonDay'
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-ArriveTimeMoonDay{BOTTOM}'
|
||||
},
|
||||
arriveTimeHourMinute: {
|
||||
operation: 'b108',
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-ArriveTimeHourMinute'
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-ArriveTimeHourMinute{BOTTOM}'
|
||||
},
|
||||
arriveTimeInfo: {
|
||||
operation: 'b109',
|
||||
@ -4425,11 +4425,11 @@ export const OperationEvent = {
|
||||
},
|
||||
endTimeMoonDay: {
|
||||
operation: 'b110',
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-EndTimeMoonDay'
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-EndTimeMoonDay{BOTTOM}'
|
||||
},
|
||||
endTimeHourMinute: {
|
||||
operation: 'b111',
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-EndTimeHourMinute'
|
||||
domId: '_Tips-TicketOrRegister-RegisterInput-EndTimeHourMinute{BOTTOM}'
|
||||
},
|
||||
endTimeInfo: {
|
||||
operation: 'b112',
|
||||
@ -5027,7 +5027,7 @@ export const OperationEvent = {
|
||||
},
|
||||
requestDate:{
|
||||
operation: '120a',
|
||||
domId: '_Tips-Rail-equipmentConstructionFill-requestDate'
|
||||
domId: '_Tips-Rail-equipmentConstructionFill-requestDate{BOTTOM}'
|
||||
},
|
||||
requestDetails:{
|
||||
operation: '120b',
|
||||
@ -5035,7 +5035,7 @@ export const OperationEvent = {
|
||||
},
|
||||
planSpendTime:{
|
||||
operation: '120c',
|
||||
domId: '_Tips-Rail-equipmentConstructionFill-planSpendTime'
|
||||
domId: '_Tips-Rail-equipmentConstructionFill-planSpendTime{BOTTOM}'
|
||||
},
|
||||
acceptDetail:{
|
||||
operation: '120d',
|
||||
@ -5043,7 +5043,7 @@ export const OperationEvent = {
|
||||
},
|
||||
confirmReviewDate:{
|
||||
operation: '120e',
|
||||
domId: '_Tips-Rail-equipmentConstructionFill-confirmReviewDate'
|
||||
domId: '_Tips-Rail-equipmentConstructionFill-confirmReviewDate{BOTTOM}'
|
||||
},
|
||||
confirmReviewDetail:{
|
||||
operation: '120f',
|
||||
@ -5165,6 +5165,14 @@ export const OperationEvent = {
|
||||
record: {
|
||||
operation: '1403',
|
||||
domId: '_Tips-Conversation-Chat-record'
|
||||
},
|
||||
createGroup: {
|
||||
operation: '1404',
|
||||
domId: '_Tips-Conversation-Chat-createGroup'
|
||||
},
|
||||
inviteToGroup: {
|
||||
operation: '1405',
|
||||
domId: '_Tips-Conversation-Chat-inviteToGroup'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -83,7 +83,6 @@ class ValidateHandler {
|
||||
if (stepOperation.val) {
|
||||
valid = ((operate.val).toString() === stepOperation.val.toString()) && valid;
|
||||
}
|
||||
|
||||
const opParam = operate.param === undefined ? {} : operate.param;
|
||||
if ((opParam || stepOperation.params) && !opParam.hasOwnProperty('fileBase64Str')) {
|
||||
valid = this.checkParamConsistent(opParam, stepOperation.params, operate.operation) && valid;
|
||||
@ -100,7 +99,7 @@ class ValidateHandler {
|
||||
Handler.judgeIsTextSendOperation();
|
||||
} else {
|
||||
store.dispatch('trainingNew/handleStepRecord', { type:'ERROR', stepOperation });
|
||||
console.error('校验失败;');
|
||||
console.error('校验失败;', stepOperation, operate);
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
@ -20,7 +20,8 @@ const training = {
|
||||
voiceStepList: [], // 实训特殊语音步骤列表
|
||||
voiceStepIndex: -1,
|
||||
examSwitch: false, // 考试开始结束标注
|
||||
stepRecord: [] // 操作记录
|
||||
stepRecord: [], // 操作记录
|
||||
joinTrainingInfo: null
|
||||
},
|
||||
getters: {
|
||||
teachMode: (state) => {
|
||||
@ -51,7 +52,9 @@ const training = {
|
||||
state.trainingSwitch = flag;
|
||||
state.stepInfo = {};
|
||||
state.operateOrder = 0;
|
||||
state.stepRecord = [];
|
||||
if (flag) {
|
||||
state.stepRecord = [];
|
||||
}
|
||||
},
|
||||
setTrainingOperate: (state, trainingOperate) => {
|
||||
state.trainingOperate = trainingOperate;
|
||||
@ -125,6 +128,9 @@ const training = {
|
||||
if (type === 'OVER') {
|
||||
step.success = true;
|
||||
}
|
||||
},
|
||||
setJoinTrainingInfo: (state, joinTrainingInfo) => {
|
||||
state.joinTrainingInfo = joinTrainingInfo;
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
@ -200,7 +206,7 @@ const training = {
|
||||
},
|
||||
handleMatchVoice: ({ commit }, info) => {
|
||||
const stepOperation = Handler.getTrainingOperation();
|
||||
if (info && info.content === 'true') {
|
||||
if (info && info.content === 'true' && store.state.training.myMemberId == info.memberId) {
|
||||
const rightMsg = {errMsg: LangStorage.getLang() === 'en' ? "Correct operation! That's great!" : '操作正确!真棒!', color: 'green'};
|
||||
commit('setOperateErrMsg', rightMsg);
|
||||
if (Handler.isLastOperation()) {
|
||||
@ -225,6 +231,9 @@ const training = {
|
||||
},
|
||||
handleStepRecord: ({ commit }, { type, stepOperation }) => {
|
||||
commit('handleStepRecord', { type, stepOperation });
|
||||
},
|
||||
setJoinTrainingInfo: ({ commit }, joinTrainingInfo ) => {
|
||||
commit('setJoinTrainingInfo', joinTrainingInfo);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -213,6 +213,16 @@ function handle(data) {
|
||||
case 'Simulation_Control_Transfer_Result':
|
||||
store.dispatch('socket/setControlTransfer', msg);
|
||||
break;
|
||||
case 'Simulation_Training_Prepare_Start': // 仿真预加载
|
||||
store.dispatch('trainingNew/setJoinTrainingInfo', msg);
|
||||
break;
|
||||
case 'Simulation_Training_Status': // 仿真实训开始结束状态
|
||||
if (msg == 1) {
|
||||
store.dispatch('trainingNew/trainingStart');
|
||||
} else {
|
||||
store.dispatch('trainingNew/trainingEnd');
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 仿真内部聊天
|
||||
|
@ -138,7 +138,7 @@ export default {
|
||||
return this.$route.query.projectDevice;
|
||||
},
|
||||
projectCode() {
|
||||
return this.$store.state.projectConfig.projectCode;
|
||||
return this.$store.state.projectConfig.markKey;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -250,7 +250,7 @@ export default {
|
||||
},
|
||||
judgeOtherPage(params) {
|
||||
// itemMap: {DEFAULT_MEMBER: '1'}type: "METRO"
|
||||
getBackProjectConfigByCode(this.projectCode).then(res=>{
|
||||
getBackProjectConfigByCode(this.$store.state.projectConfig.projectCode).then(res=>{
|
||||
if (res.data) {
|
||||
const {mapId, functionId} = res.data;
|
||||
if (functionId && mapId) {
|
||||
@ -354,7 +354,7 @@ export default {
|
||||
const model = Object.assign({}, this.loginForm);
|
||||
model.password = md5(model.password);
|
||||
model.type = 'class';
|
||||
model.project = this.projectCode;
|
||||
model.project = this.$store.state.projectConfig.projectCode;
|
||||
if (this.$route.query.projectDevice) {
|
||||
model.deviceCode = this.$route.query.projectDevice;
|
||||
}
|
||||
|
@ -334,7 +334,7 @@ export default {
|
||||
);
|
||||
}
|
||||
}
|
||||
}).catch(() => { console.error('操作失败!'); });
|
||||
}).catch((e) => { console.error('操作失败!', e); });
|
||||
} else {
|
||||
this.stopRecording(); // 发送语音
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ export default {
|
||||
|
||||
submitAnswer(postData).then(resp => {
|
||||
this.$set(this.questionStateList[1], this.currentQuestionIndex, true);
|
||||
this.$store.dispatch('trainingNew/trainingEnd');
|
||||
// this.$store.dispatch('trainingNew/trainingEnd');
|
||||
}).catch(() => {
|
||||
this.$message.error('记录数据失败!');
|
||||
});
|
||||
|
@ -33,8 +33,8 @@
|
||||
<div class="activeLine" />
|
||||
</div>
|
||||
<div class="nullDiv" />
|
||||
<div class="editFilter " :class="myMemberId ? 'pointer' : 'disable'">
|
||||
<i class="el-icon-plus" title="创建会话群" @click="createGroup" />
|
||||
<div class="editFilter" :class="myMemberId ? 'pointer' : 'disable'">
|
||||
<i :id="createGroupDomId" class="el-icon-plus" title="创建会话群" @click="createGroup" />
|
||||
<!-- <i class="el-icon-more" /> -->
|
||||
</div>
|
||||
</div>
|
||||
@ -63,7 +63,7 @@
|
||||
<address-book ref="addressBook" :member-tree-data="memberTreeData" @sendPrivateMsg="sendPrivateMsg" />
|
||||
</div>
|
||||
</div>
|
||||
<edit-group ref="editGroup" :member-tree-data="memberTreeData" />
|
||||
<edit-group ref="editGroup" :member-tree-data="memberTreeData" @handleEditGroup="handleEditGroup" />
|
||||
<pop-menu ref="popMenu" :menu="menu" />
|
||||
<dialog-member ref="dialogMember" :member-tree-data="memberTreeData" @updateLeaderId="updateLeaderId" />
|
||||
</el-dialog>
|
||||
@ -79,6 +79,7 @@ import AddressBook from './addressBook';
|
||||
import PopMenu from '@/components/PopMenu';
|
||||
import DialogMember from './dialogMember';
|
||||
import { objectIsEqual } from '@/utils/date';
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
export default {
|
||||
name: 'ChatDialog',
|
||||
components: {
|
||||
@ -95,6 +96,7 @@ export default {
|
||||
return {
|
||||
logoImgUrl: '',
|
||||
dialogVisible: false,
|
||||
showEditGroup: false,
|
||||
tabs: [
|
||||
{label:'消息', icon:'el-icon-chat-dot-square'},
|
||||
{label:'通讯录', icon:'el-icon-notebook-1'}
|
||||
@ -119,6 +121,9 @@ export default {
|
||||
groupId() {
|
||||
return this.$route.query.group;
|
||||
},
|
||||
createGroupDomId() {
|
||||
return this.showEditGroup ? '' : OperationEvent.Conversation.Chat.createGroup.domId;
|
||||
},
|
||||
myMemberId() {
|
||||
return this.$store.state.training.myMemberId;
|
||||
},
|
||||
@ -275,6 +280,9 @@ export default {
|
||||
this.handleClose();
|
||||
},
|
||||
methods: {
|
||||
handleEditGroup(val) {
|
||||
this.showEditGroup = val;
|
||||
},
|
||||
showMenu(event, item) {
|
||||
this.groupClick(item);
|
||||
this.initMenu(item);
|
||||
|
@ -59,7 +59,7 @@
|
||||
</el-form-item> -->
|
||||
<el-form-item v-if="showSubmitBtn">
|
||||
<el-button @click="handleClose">取消</el-button>
|
||||
<el-button type="primary" @click="onSubmit">确定</el-button>
|
||||
<el-button :id="submitDomId" type="primary" @click="onSubmit">确定</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
@ -69,8 +69,11 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { createGroup, inviteMemberToGroup } from '@/api/newChat';
|
||||
import { inviteMemberToGroup } from '@/api/newChat';
|
||||
import { getUploadUrl } from '@/api/projectConfig';
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import {UserOperationType} from '@/scripts/ConstDic';
|
||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||
export default {
|
||||
name: 'EditGroup',
|
||||
components: {
|
||||
@ -118,6 +121,15 @@ export default {
|
||||
groupId() {
|
||||
return this.$route.query.group;
|
||||
},
|
||||
submitDomId() {
|
||||
let domId = '';
|
||||
if (this.title == '邀请成员') {
|
||||
domId = OperationEvent.Conversation.Chat.inviteToGroup.domId;
|
||||
} else if (this.title == '创建会话群') {
|
||||
domId = OperationEvent.Conversation.Chat.createGroup.domId;
|
||||
}
|
||||
return this.dialogVisible ? domId : '';
|
||||
},
|
||||
memberData() {
|
||||
return this.$store.state.training.memberData;
|
||||
},
|
||||
@ -155,6 +167,12 @@ export default {
|
||||
this.treeDisabled = true;
|
||||
this.nameDisabled = true;
|
||||
}
|
||||
},
|
||||
dialogVisible() {
|
||||
this.$emit('handleEditGroup', this.dialogVisible);
|
||||
this.$nextTick(() => {
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
});
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -231,21 +249,27 @@ export default {
|
||||
}).catch(err => {
|
||||
this.$message.error(`邀请成员失败!${err.message}`);
|
||||
});
|
||||
|
||||
} else if (this.title == '创建会话群') {
|
||||
const list = [];
|
||||
this.selectTreeNode.forEach(item => {
|
||||
list.push(item.id);
|
||||
});
|
||||
const params = {
|
||||
name: this.form.name,
|
||||
imageUrl: this.form.imageUrl,
|
||||
memberIds: list
|
||||
const operate = {
|
||||
over: true,
|
||||
cmdType: CMD.Conversation.CMD_Conversation_Group_Create,
|
||||
operation: OperationEvent.Conversation.Chat.createGroup.operation,
|
||||
userOperationType: UserOperationType.LEFTCLICK,
|
||||
param: {
|
||||
name: this.form.name,
|
||||
memberIds: list
|
||||
}
|
||||
};
|
||||
createGroup(this.groupId, params).then(res => {
|
||||
this.initData();
|
||||
this.handleClose();
|
||||
this.$message.success('创建会话群成功!');
|
||||
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.initData();
|
||||
this.handleClose();
|
||||
this.$message.success('创建会话群成功!');
|
||||
}
|
||||
}).catch(err => {
|
||||
this.$message.error(`创建会话群失败!${err.message}`);
|
||||
});
|
||||
|
@ -21,9 +21,10 @@
|
||||
<span v-else>{{ scope.row.projectName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="requestDate" :label="'月日\n时分'" width="80">
|
||||
<el-table-column prop="requestDate" :label="'月日\n时分'" width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="constructionFill.requestDate.domId" v-model="scope.row.requestDate" @blur="requestDateChange(scope.row.requestDate)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="constructionFill.requestDate.domId" v-model="scope.row.requestDate" @blur="requestDateChange(scope.row.requestDate)" /> -->
|
||||
<el-date-picker v-if="dataIndex === scope.$index" :id="constructionFill.requestDate.domId" v-model="scope.row.requestDate" format="M月d日 HH:mm" value-format="M月d日 HH:mm" class="dateClass" :clearable="false" type="datetime" @change="requestDateChange(scope.row.requestDate)" />
|
||||
<span v-else>{{ scope.row.requestDate }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -33,9 +34,10 @@
|
||||
<span v-else>{{ scope.row.requestDetails }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="planSpendTime" :label="'所需\n时分'" width="80">
|
||||
<el-table-column prop="planSpendTime" :label="'所需\n时分'" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="constructionFill.planSpendTime.domId" v-model="scope.row.planSpendTime" @blur="planSpendTimeChange(scope.row.planSpendTime)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="constructionFill.planSpendTime.domId" v-model="scope.row.planSpendTime" @blur="planSpendTimeChange(scope.row.planSpendTime)" /> -->
|
||||
<el-time-picker v-if="dataIndex === scope.$index" :id="constructionFill.planSpendTime.domId" v-model="scope.row.planSpendTime" :picker-options="{format:'HH:mm'}" format="HH:mm" value-format="HH:mm" class="timeClass" :clearable="false" @change="planSpendTimeChange(scope.row.planSpendTime)" />
|
||||
<span v-else>{{ scope.row.planSpendTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -49,9 +51,10 @@
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="施工后开通检查确认、销记">
|
||||
<el-table-column prop="confirmReviewDate" :label="'月日\n时分'" width="80">
|
||||
<el-table-column prop="confirmReviewDate" :label="'月日\n时分'" width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="constructionFill.confirmReviewDate.domId" v-model="scope.row.confirmReviewDate" @blur="confirmReviewDateChange(scope.row.confirmReviewDate)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="constructionFill.confirmReviewDate.domId" v-model="scope.row.confirmReviewDate" @blur="confirmReviewDateChange(scope.row.confirmReviewDate)" /> -->
|
||||
<el-date-picker v-if="dataIndex === scope.$index" :id="constructionFill.confirmReviewDate.domId" v-model="scope.row.confirmReviewDate" format="M月d日 HH:mm" value-format="M月d日 HH:mm" class="dateClass" :clearable="false" type="datetime" @change="confirmReviewDateChange(scope.row.confirmReviewDate)" />
|
||||
<span v-else>{{ scope.row.confirmReviewDate }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -253,7 +256,7 @@ export default {
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.equipmentConstructionTable{
|
||||
width:91%;margin-left:15px
|
||||
width: 100%;
|
||||
}
|
||||
.el-table .cell {
|
||||
white-space: pre-line;
|
||||
@ -262,4 +265,14 @@ export default {
|
||||
margin-right: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.dateClass {
|
||||
width: 139px;
|
||||
}
|
||||
.timeClass {
|
||||
width: 79px;
|
||||
}
|
||||
/deep/ .el-input--suffix .el-input__inner {
|
||||
padding-right: 10px;
|
||||
padding-left: 28px;
|
||||
}
|
||||
</style>
|
||||
|
@ -11,15 +11,17 @@
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
>
|
||||
<el-table-column prop="date" label="月 日" width="95">
|
||||
<el-table-column prop="date" label="月 日" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="registerInput.moonDay.domId" v-model="scope.row.moonDay" @blur="moonDayChange(scope.row.moonDay)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="registerInput.moonDay.domId" v-model="scope.row.moonDay" @blur="moonDayChange(scope.row.moonDay)" /> -->
|
||||
<el-date-picker v-if="dataIndex === scope.$index" :id="registerInput.moonDay.domId" v-model="scope.row.moonDay" format="M月d日" value-format="M月d日" class="dateClass" :clearable="false" type="date" @change="moonDayChange(scope.row.moonDay)" />
|
||||
<span v-else>{{ scope.row.moonDay }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="time" label="时 分" width="95">
|
||||
<el-table-column prop="time" label="时 分" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="registerInput.hourMinute.domId" v-model="scope.row.hourMinute" @blur="hourMinuteChange(scope.row.hourMinute)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="registerInput.hourMinute.domId" v-model="scope.row.hourMinute" @blur="hourMinuteChange(scope.row.hourMinute)" /> -->
|
||||
<el-time-picker v-if="dataIndex === scope.$index" :id="registerInput.hourMinute.domId" v-model="scope.row.hourMinute" :picker-options="{format:'HH:mm'}" format="HH:mm" value-format="HH:mm" class="timeClass" :clearable="false" @change="hourMinuteChange(scope.row.hourMinute)" />
|
||||
<span v-else>{{ scope.row.hourMinute }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -30,15 +32,17 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="通 知 时 间">
|
||||
<el-table-column prop="noticeDate" label="月 日" width="100">
|
||||
<el-table-column prop="noticeDate" label="月 日" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="registerInput.noticeTimeMoonDay.domId" v-model="scope.row.noticeTime.moonDay" @blur="noticeTimeMoonDayChange(scope.row.noticeTime.moonDay)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="registerInput.noticeTimeMoonDay.domId" v-model="scope.row.noticeTime.moonDay" @blur="noticeTimeMoonDayChange(scope.row.noticeTime.moonDay)" /> -->
|
||||
<el-date-picker v-if="dataIndex === scope.$index" :id="registerInput.noticeTimeMoonDay.domId" v-model="scope.row.noticeTime.moonDay" format="M月d日" value-format="M月d日" class="dateClass" :clearable="false" type="date" @change="noticeTimeMoonDayChange(scope.row.noticeTime.moonDay)" />
|
||||
<span v-else>{{ scope.row.noticeTime.moonDay }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="noticeTime" label="时 分" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="registerInput.noticeTimeHourMinute.domId" v-model="scope.row.noticeTime.hourMinute" @blur="noticeTimeHourMinuteChange(scope.row.noticeTime.hourMinute)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="registerInput.noticeTimeHourMinute.domId" v-model="scope.row.noticeTime.hourMinute" @blur="noticeTimeHourMinuteChange(scope.row.noticeTime.hourMinute)" /> -->
|
||||
<el-time-picker v-if="dataIndex === scope.$index" :id="registerInput.noticeTimeHourMinute.domId" v-model="scope.row.noticeTime.hourMinute" :picker-options="{format:'HH:mm'}" format="HH:mm" value-format="HH:mm" class="timeClass" :clearable="false" @change="noticeTimeHourMinuteChange(scope.row.noticeTime.hourMinute)" />
|
||||
<span v-else>{{ scope.row.noticeTime.hourMinute }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -50,15 +54,17 @@
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="到 达 时 间">
|
||||
<el-table-column prop="arriveDate" label="月 日" width="100">
|
||||
<el-table-column prop="arriveDate" label="月 日" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="registerInput.arriveTimeMoonDay.domId" v-model="scope.row.arriveTime.moonDay" @blur="arriveTimeMoonDayChange(scope.row.arriveTime.moonDay)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="registerInput.arriveTimeMoonDay.domId" v-model="scope.row.arriveTime.moonDay" @blur="arriveTimeMoonDayChange(scope.row.arriveTime.moonDay)" /> -->
|
||||
<el-date-picker v-if="dataIndex === scope.$index" :id="registerInput.arriveTimeMoonDay.domId" v-model="scope.row.arriveTime.moonDay" format="M月d日" value-format="M月d日" class="dateClass" :clearable="false" type="date" @change="arriveTimeMoonDayChange(scope.row.arriveTime.moonDay)" />
|
||||
<span v-else>{{ scope.row.arriveTime.moonDay }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="arriveTime" label="时 分" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="registerInput.arriveTimeHourMinute.domId" v-model="scope.row.arriveTime.hourMinute" @blur="arriveTimeHourMinuteChange(scope.row.arriveTime.hourMinute)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="registerInput.arriveTimeHourMinute.domId" v-model="scope.row.arriveTime.hourMinute" @blur="arriveTimeHourMinuteChange(scope.row.arriveTime.hourMinute)" /> -->
|
||||
<el-time-picker v-if="dataIndex === scope.$index" :id="registerInput.arriveTimeHourMinute.domId" v-model="scope.row.arriveTime.hourMinute" :picker-options="{format:'HH:mm'}" format="HH:mm" value-format="HH:mm" class="timeClass" :clearable="false" @change="arriveTimeHourMinuteChange(scope.row.arriveTime.hourMinute)" />
|
||||
<span v-else>{{ scope.row.arriveTime.hourMinute }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -70,15 +76,17 @@
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column label="销除不良及破损的时分及盖章">
|
||||
<el-table-column prop="repairDate" label="月 日" width="100">
|
||||
<el-table-column prop="repairDate" label="月 日" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="registerInput.endTimeMoonDay.domId" v-model="scope.row.endTime.moonDay" @blur="endTimeMoonDayChange(scope.row.endTime.moonDay)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="registerInput.endTimeMoonDay.domId" v-model="scope.row.endTime.moonDay" @blur="endTimeMoonDayChange(scope.row.endTime.moonDay)" /> -->
|
||||
<el-date-picker v-if="dataIndex === scope.$index" :id="registerInput.endTimeMoonDay.domId" v-model="scope.row.endTime.moonDay" format="M月d日" value-format="M月d日" class="dateClass" :clearable="false" type="date" @change="endTimeMoonDayChange(scope.row.endTime.moonDay)" />
|
||||
<span v-else>{{ scope.row.endTime.moonDay }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="repairTime" label="时 分" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-if="dataIndex === scope.$index" :id="registerInput.endTimeHourMinute.domId" v-model="scope.row.endTime.hourMinute" @blur="endTimeHourMinuteChange(scope.row.endTime.hourMinute)" />
|
||||
<!-- <el-input v-if="dataIndex === scope.$index" :id="registerInput.endTimeHourMinute.domId" v-model="scope.row.endTime.hourMinute" @blur="endTimeHourMinuteChange(scope.row.endTime.hourMinute)" /> -->
|
||||
<el-time-picker v-if="dataIndex === scope.$index" :id="registerInput.endTimeHourMinute.domId" v-model="scope.row.endTime.hourMinute" :picker-options="{format:'HH:mm'}" format="HH:mm" value-format="HH:mm" class="timeClass" :clearable="false" @change="endTimeHourMinuteChange(scope.row.endTime.hourMinute)" />
|
||||
<span v-else>{{ scope.row.endTime.hourMinute }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -304,6 +312,15 @@ export default {
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.dateClass {
|
||||
width: 99px;
|
||||
}
|
||||
.timeClass {
|
||||
width: 79px;
|
||||
}
|
||||
/deep/ .el-input--suffix .el-input__inner {
|
||||
padding-right: 10px;
|
||||
padding-left: 28px;
|
||||
}
|
||||
</style>
|
||||
|
@ -351,6 +351,7 @@ export default {
|
||||
list.push(obj);
|
||||
});
|
||||
await updateTrainingStep(this.group, this.editData.id, { step2VOList: list, playerIdList: this.playerIdList });
|
||||
this.getStepList(this.editData);
|
||||
this.$message.success('保存实训成功!');
|
||||
} catch {
|
||||
this.$message.error('保存实训失败');
|
||||
|
@ -1,6 +1,8 @@
|
||||
<template>
|
||||
<div>
|
||||
<div style="text-align: right;padding-right: 10px;">
|
||||
<el-button v-if="showJumpToTraining" size="small" type="text" @click="jumpToTraining">仿真到当前步骤</el-button>
|
||||
<el-divider v-if="showJumpToTraining" direction="vertical" />
|
||||
<el-button size="small" type="text" @click="clearOperation">清空</el-button>
|
||||
<el-divider direction="vertical" />
|
||||
<el-button size="small" type="text" @click="backDesignPane">返回</el-button>
|
||||
@ -36,6 +38,7 @@
|
||||
<script>
|
||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import { jumpToTraining} from '@/api/trainingManage';
|
||||
export default {
|
||||
name: 'EditOperateNew',
|
||||
data() {
|
||||
@ -48,6 +51,18 @@ export default {
|
||||
stepIndex: ''
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
showJumpToTraining() {
|
||||
let s = false;
|
||||
if (this.stepDetail.id) {
|
||||
s = true;
|
||||
}
|
||||
return s;
|
||||
},
|
||||
group() {
|
||||
return this.$route.query.group;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.trainingNew.trainingOperate': function (val) {
|
||||
if (val && this.editMode) {
|
||||
@ -97,6 +112,15 @@ export default {
|
||||
this.$store.dispatch('trainingNew/editDraftStepList', null);
|
||||
},
|
||||
methods: {
|
||||
jumpToTraining() {
|
||||
if (this.group && this.stepDetail.id) {
|
||||
jumpToTraining(this.group, this.stepDetail.id).then(res => {
|
||||
console.log(res, '跳转成功!');
|
||||
}).catch(err => {
|
||||
this.$message.error(`跳转失败!${err.message}`);
|
||||
});
|
||||
}
|
||||
},
|
||||
initData(data) {
|
||||
this.editMode = true;
|
||||
this.stepIndex = data.index;
|
||||
|
@ -8,7 +8,7 @@
|
||||
center
|
||||
>
|
||||
<template v-for="user in userList">
|
||||
<div :key="user.id" style="display: flex;justify-content: space-between;">
|
||||
<div :key="user.id" style="display: flex;justify-content: space-between;margin-bottom: 10px;">
|
||||
<div>{{ user.nickName }}</div>
|
||||
<el-select v-model="user.memberId" size="mini" placeholder="请选择">
|
||||
<el-option
|
||||
|
@ -4,9 +4,9 @@
|
||||
<div ref="drapBox" class="reminder-box">
|
||||
<div class="tip-title">
|
||||
<div style="display: flex;justify-content: center;align-items: center;">
|
||||
<i v-if="!trainingDesign && !examSwitch" class="icon el-icon-document" @click="trainingListShow" />
|
||||
<i v-show="!isShrink && !trainingSwitch && trainingDetail" class="icon el-icon-video-play" @click="handlerStart" />
|
||||
<i v-show="!isShrink && trainingSwitch" class="icon el-icon-switch-button" @click="handlerEnd" />
|
||||
<i v-if="!trainingDesign && !examSwitch && simulationCreator" class="icon el-icon-document" @click="trainingListShow" />
|
||||
<i v-show="!isShrink && !trainingSwitch && trainingDetail && simulationCreator" class="icon el-icon-video-play" @click="handlerStart" />
|
||||
<i v-show="!isShrink && trainingSwitch && simulationCreator" class="icon el-icon-switch-button" @click="handlerEnd" />
|
||||
<i v-show="isShrink" class="icon el-icon-minus" @click="shrink" />
|
||||
<i v-show="!isShrink" class="icon el-icon-plus" @click="shrink" />
|
||||
</div>
|
||||
@ -26,7 +26,7 @@
|
||||
<p v-if="!examSwitch" class="list-item">
|
||||
<span class="list-label">实训模式:</span>
|
||||
<span class="list-elem">
|
||||
<el-radio-group v-model="demoMode" :disabled="trainingSwitch" class="mode" size="small" @change="changeMode">
|
||||
<el-radio-group v-model="demoMode" :disabled="trainingSwitch || !simulationCreator" class="mode" size="small" @change="changeMode">
|
||||
<el-radio :label="TrainingMode.TEACH" border>{{ $t('display.lesson.teachingMode') }}</el-radio>
|
||||
<el-radio :label="TrainingMode.PRACTICE" border>{{ $t('display.lesson.practiceMode') }}</el-radio>
|
||||
<el-radio :label="TrainingMode.TEST" border>{{ $t('display.lesson.testMode') }}</el-radio>
|
||||
@ -37,18 +37,18 @@
|
||||
<span class="list-label" style="vertical-align: top;"> {{ $t('display.training.trainingInstructions') }}</span>
|
||||
<span class="list-elem elem-span">{{ trainingDetail ?trainingDetail.description:'' }}</span>
|
||||
</p>
|
||||
<p class="list-item">
|
||||
<p v-if="simulationCreator" class="list-item">
|
||||
<span class="list-label">操作按钮:</span>
|
||||
<span class="list-elem">
|
||||
<el-button v-if="!trainingSwitch && trainingDetail" size="small" type="success" @click="handlerStart">开始</el-button>
|
||||
<el-button v-if="trainingSwitch" size="small" type="danger" @click="handlerEnd">结束</el-button>
|
||||
</span>
|
||||
</p>
|
||||
<p v-if="!examSwitch" class="list-item">
|
||||
<p v-if="!examSwitch && simulationCreator" class="list-item">
|
||||
<span class="list-label">上 一 题:</span>
|
||||
<span class="list-elem elem-span training-box" @click="loadTraining(previousTraining)">{{ previousTraining? previousTraining.name: '' }}</span>
|
||||
</p>
|
||||
<p v-if="!examSwitch" class="list-item">
|
||||
<p v-if="!examSwitch && simulationCreator" class="list-item">
|
||||
<span class="list-label">下 一 题:</span>
|
||||
<span class="list-elem elem-span training-box" @click="loadTraining(nextTraining)">{{ nextTraining? nextTraining.name:'' }}</span>
|
||||
</p>
|
||||
@ -68,7 +68,7 @@
|
||||
|
||||
<script>
|
||||
import { ScriptMode } from '@/scripts/ConstDic';
|
||||
import { startTraining, endTraining, getPublishTrainingDetail, loadPublishTraining } from '@/api/jmap/training';
|
||||
import { startTraining, endTraining, getPublishTrainingDetail, loadPublishTraining, prepareScene } from '@/api/jmap/training';
|
||||
import ScenePlayRole from './scenePlayRole';
|
||||
import TestResult from './testResult';
|
||||
import { EventBus } from '@/scripts/event-bus';
|
||||
@ -116,11 +116,25 @@ export default {
|
||||
},
|
||||
examSwitch() {
|
||||
return this.$store.state.trainingNew.examSwitch;
|
||||
},
|
||||
simulationCreator() {
|
||||
return this.$store.state.training.simulationCreator;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.trainingNew.trainingDetail': function(val) {
|
||||
this.initAdjacentTraining();
|
||||
},
|
||||
'$store.state.trainingNew.joinTrainingInfo': function(val) {
|
||||
if (!this.simulationCreator && val && val.id) {
|
||||
this.loadTraining({ id: val.id });
|
||||
this.changeMode(val.mode);
|
||||
}
|
||||
},
|
||||
'$store.state.trainingNew.trainingSwitch': function(val) {
|
||||
if (!val && !this.simulationCreator) {
|
||||
this.handlerEnd();
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -159,15 +173,22 @@ export default {
|
||||
handlerStart() {
|
||||
Handler.clear();
|
||||
if (this.trainingDetail.type === 'SCENE' && !this.examSwitch) {
|
||||
this.$refs.scenePlayRole.doShow();
|
||||
this.handlePrepareScene();
|
||||
} else {
|
||||
this.startTraining();
|
||||
}
|
||||
},
|
||||
handlePrepareScene() {
|
||||
prepareScene(this.group, {mode: this.demoMode}).then(() => {
|
||||
this.$refs.scenePlayRole.doShow();
|
||||
}).catch(() => {
|
||||
this.$message.error('预开始场景实训失败!');
|
||||
});
|
||||
},
|
||||
startTraining() {
|
||||
this.$store.dispatch('trainingNew/changeTeachMode', this.demoMode);
|
||||
startTraining(this.group, {mode: this.demoMode}).then(() => {
|
||||
this.$store.dispatch('trainingNew/trainingStart');
|
||||
// this.$store.dispatch('trainingNew/trainingStart');
|
||||
}).catch(() => {
|
||||
this.$message.error('开始实训失败!');
|
||||
});
|
||||
@ -185,7 +206,7 @@ export default {
|
||||
if (this.demoMode === ScriptMode.TEST) {
|
||||
this.$refs.testResult.doShow(resp.data);
|
||||
}
|
||||
this.$store.dispatch('trainingNew/trainingEnd');
|
||||
// this.$store.dispatch('trainingNew/trainingEnd');
|
||||
}).catch((e) => {
|
||||
this.$message.error('结束实训失败!');
|
||||
});
|
||||
|
@ -21,6 +21,9 @@ export default {
|
||||
},
|
||||
myMemberId() {
|
||||
return this.$store.state.training.myMemberId;
|
||||
},
|
||||
simulationCreator() {
|
||||
return this.$store.state.training.simulationCreator;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -33,11 +36,16 @@ export default {
|
||||
},
|
||||
'$store.state.trainingNew.trainingSwitch': function(val) {
|
||||
if (!val) {
|
||||
this.trainingTipMessage = '';
|
||||
if (!this.simulationCreator) {
|
||||
this.trainingTipMessage = '当前实训已结束!';
|
||||
setTimeout(() => { this.trainingTipMessage = ''; }, 3000);
|
||||
} else {
|
||||
this.trainingTipMessage = '';
|
||||
}
|
||||
}
|
||||
},
|
||||
'$store.state.socket.trainingOverCount': function(val) {
|
||||
if (this.teachMode === ScriptMode.TEACH || this.teachMode === ScriptMode.PRACTICE) {
|
||||
if ((this.teachMode === ScriptMode.TEACH || this.teachMode === ScriptMode.PRACTICE) && this.simulationCreator) {
|
||||
this.trainingTipMessage = '实训完成,请点击结束按钮。';
|
||||
}
|
||||
},
|
||||
|
@ -22,7 +22,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联角色:" prop="roleCode">
|
||||
<el-select v-model="formIbp.roleCode" placeholder="请选择" size="small" @change="changeRoleIBP">
|
||||
<el-select v-model="formIbp.roleCode" placeholder="请选择" size="small">
|
||||
<el-option
|
||||
v-for="item in roleList"
|
||||
:key="item.value"
|
||||
@ -35,16 +35,16 @@
|
||||
<el-select v-model="formIbp.client" placeholder="请选择" size="small">
|
||||
<el-option
|
||||
v-for="item in clientList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form v-show="['IM','CW','DRIVE','DEPOT'].includes(data.type)" ref="formIm" :model="formIm" label-width="100px" :rules="rulesIm">
|
||||
<el-form-item label="关联角色:" prop="roleCode">
|
||||
<el-select v-model="formIm.roleCode" placeholder="请选择" size="small" @change="changeRoleIM">
|
||||
<el-select v-model="formIm.roleCode" placeholder="请选择" size="small">
|
||||
<el-option
|
||||
v-for="item in roleList"
|
||||
:key="item.value"
|
||||
@ -57,9 +57,9 @@
|
||||
<el-select v-model="formIm.client" placeholder="请选择" size="small">
|
||||
<el-option
|
||||
v-for="item in clientList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -76,7 +76,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联角色:" prop="roleCode">
|
||||
<el-select v-model="formLw.roleCode" placeholder="请选择" size="small" @change="changeRoleLW">
|
||||
<el-select v-model="formLw.roleCode" placeholder="请选择" size="small">
|
||||
<el-option
|
||||
v-for="item in roleList"
|
||||
:key="item.value"
|
||||
@ -89,9 +89,9 @@
|
||||
<el-select v-model="formLw.client" placeholder="请选择" size="small">
|
||||
<el-option
|
||||
v-for="item in clientList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -128,7 +128,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联角色:" prop="roleCode">
|
||||
<el-select v-model="formIscs.roleCode" placeholder="请选择" size="small" @change="changeRoleIscs">
|
||||
<el-select v-model="formIscs.roleCode" placeholder="请选择" size="small">
|
||||
<el-option
|
||||
v-for="item in roleList"
|
||||
:key="item.value"
|
||||
@ -141,9 +141,9 @@
|
||||
<el-select v-model="formIscs.client" placeholder="请选择" size="small">
|
||||
<el-option
|
||||
v-for="item in clientList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -157,17 +157,15 @@
|
||||
|
||||
<script>
|
||||
import { getDeviceDetail, getDevicesByType, setDeviceConfig } from '@/api/project';
|
||||
import { getAllMapOnline, querySimulationMemberByMapId, querySimulationStationsByMapId } from '@/api/jmap/map';
|
||||
import { getClientDataById, querySimulationMemberByMapId, querySimulationStationsByMapId } from '@/api/jmap/map';
|
||||
import { getBackProjectConfigByCode } from '@/api/projectConfig';
|
||||
import { getMapFunctioById } from '@/api/trainingPlatform';
|
||||
import ConstConfig from '@/scripts/ConstConfig';
|
||||
export default {
|
||||
name: 'EditConfig',
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
data: {},
|
||||
clientListMap:{},
|
||||
roleList:[],
|
||||
lwList: [],
|
||||
formIm:{
|
||||
@ -300,7 +298,9 @@ export default {
|
||||
this.dialogVisible = true;
|
||||
this.roleList = [];
|
||||
if (data.functionId) {
|
||||
if (data.mapId) { this.mapIdChange(data.mapId, data.functionId); }
|
||||
if (data.mapId) {
|
||||
this.mapIdChange(data.mapId, data.functionId);
|
||||
}
|
||||
} else {
|
||||
this.$message.error('请先配置项目信息');
|
||||
}
|
||||
@ -387,7 +387,6 @@ export default {
|
||||
},
|
||||
mapIdChange(mapId, functionId) {
|
||||
if (mapId) {
|
||||
// const stationResp = await querySimulationStationsByMapId(this.$route.query.mapId);
|
||||
querySimulationStationsByMapId(mapId).then(resp => {
|
||||
if (resp.data && resp.data.length) {
|
||||
this.stationList = resp.data;
|
||||
@ -395,54 +394,29 @@ export default {
|
||||
}).catch(() => {
|
||||
this.$message.error('获取车站列表失败');
|
||||
});
|
||||
querySimulationMemberByMapId(mapId).then(resp => {
|
||||
if (resp.data) {
|
||||
getMapFunctioById(functionId).then(response=>{
|
||||
if (resp.data) {
|
||||
const roleList = resp.data[response.data.simType];
|
||||
const clientListMapIn = ConstConfig.ConstSelect.clientMap;
|
||||
this.clientListMap = clientListMapIn[response.data.simType];
|
||||
const covertRoleList = [];
|
||||
roleList.forEach(member => {
|
||||
const data = this.handleMember(member, this.stationList);
|
||||
covertRoleList.push(data);
|
||||
});
|
||||
this.clientList = [];
|
||||
this.roleList = covertRoleList;
|
||||
const roleCode = this.formIbp.roleCode || this.formIm.roleCode || this.formLw.roleCode || this.formIscs.roleCode;
|
||||
const role = this.roleList.find(each=>{ return each.value == roleCode; });
|
||||
if (role) { this.clientList = this.clientListMap[role.memberType] || []; }
|
||||
}
|
||||
getMapFunctioById(functionId).then(functionResp => {
|
||||
const simType = functionResp.data.simType;
|
||||
querySimulationMemberByMapId(mapId).then(resp => {
|
||||
const roleList = resp.data[simType];
|
||||
const covertRoleList = [];
|
||||
roleList.forEach(member => {
|
||||
const data = this.handleMember(member, this.stationList);
|
||||
covertRoleList.push(data);
|
||||
});
|
||||
}
|
||||
}).catch(() => {
|
||||
this.$message.error('获取角色列表失败');
|
||||
});
|
||||
|
||||
this.roleList = covertRoleList;
|
||||
}).catch(() => {
|
||||
this.$message.error('获取角色列表失败');
|
||||
});
|
||||
getClientDataById(mapId).then(resp => {
|
||||
this.clientList = resp.data[simType];
|
||||
}).catch(() => {
|
||||
this.$message.error('获取客户端列表失败');
|
||||
});
|
||||
}).catch(() => { this.$message.error('获取线路功能数据失败!'); });
|
||||
} else {
|
||||
this.stationList = [];
|
||||
}
|
||||
},
|
||||
changeRoleIBP(role) {
|
||||
this.formIbp.client = '';
|
||||
this.changeRole(role);
|
||||
},
|
||||
changeRoleIM(role) {
|
||||
this.formIm.client = '';
|
||||
this.changeRole(role);
|
||||
},
|
||||
changeRoleLW(role) {
|
||||
this.formLw.client = '';
|
||||
this.changeRole(role);
|
||||
},
|
||||
changeRoleIscs(role) {
|
||||
this.formIscs.client = '';
|
||||
this.changeRole(role);
|
||||
},
|
||||
changeRole(role) {
|
||||
const roleMember = this.roleList.find(each=>{ return each.value == role; });
|
||||
this.clientList = this.clientListMap[roleMember.memberType] || [];
|
||||
},
|
||||
handleMember(member, stationList) {
|
||||
const data = { value: member.id, label: '', memberType: member.type };
|
||||
const device = stationList.find(station => station.code === member.deviceCode) || {};
|
||||
|
@ -11,8 +11,7 @@
|
||||
<script>
|
||||
import { getDevicesByType, getDeviceDetail, setDeviceConfig } from '@/api/project';
|
||||
// getStationListNeedAttendant
|
||||
import { getAllMapOnline, getPublishMapListOnline, querySimulationStationsByMapId, getPsdListByStandCode, getStandListByStationCode, querySimulationMemberByMapId} from '@/api/jmap/map';
|
||||
import ConstConfig from '@/scripts/ConstConfig';
|
||||
import { querySimulationStationsByMapId, getPsdListByStandCode, getStandListByStationCode, querySimulationMemberByMapId, getClientDataById} from '@/api/jmap/map';
|
||||
import { getBackProjectConfigByCode } from '@/api/projectConfig';
|
||||
import { getMapFunctioById } from '@/api/trainingPlatform';
|
||||
export default {
|
||||
@ -70,8 +69,7 @@ export default {
|
||||
stationList: [],
|
||||
standList: [],
|
||||
psdList: [],
|
||||
roleList:[],
|
||||
clientListMap:{}
|
||||
roleList:[]
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -97,8 +95,8 @@ export default {
|
||||
{ prop: 'stationCode', label: '关联车站:', type: 'select', options: this.stationList, optionLabel: 'name', optionValue: 'code', deviceChange: this.stationCodeChange},
|
||||
{ prop: 'standCode', label: '关联站台:', type: 'select', options: this.standList, optionLabel: 'name', optionValue: 'code', deviceChange: this.standCodeChange},
|
||||
{ prop: 'psdCode', label: '关联屏蔽门:', type: 'select', options: this.psdList, optionLabel: 'code', optionValue: 'code' },
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value', deviceChange:this.roleChange },
|
||||
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
|
||||
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }
|
||||
]
|
||||
};
|
||||
} else if (this.data.type === 'LSW') {
|
||||
@ -107,7 +105,7 @@ export default {
|
||||
items: [
|
||||
{ prop: 'deviceCode', label: '教研机:', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code' },
|
||||
{ prop: 'quadrant', label: '屏幕配置:', type: 'select', options: this.screenList, optionLabel: 'label', optionValue: 'value'},
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value', deviceChange:this.roleChange },
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
|
||||
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }
|
||||
]
|
||||
};
|
||||
@ -116,7 +114,7 @@ export default {
|
||||
labelWidth: '150px',
|
||||
items: [
|
||||
{ prop: 'deviceCode', label: '教研机:', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code' },
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value', deviceChange:this.roleChange },
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
|
||||
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }
|
||||
]
|
||||
};
|
||||
@ -125,7 +123,7 @@ export default {
|
||||
labelWidth: '150px',
|
||||
items: [
|
||||
{ prop: 'deviceCode', label: '教研机', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code'},
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value', deviceChange:this.roleChange },
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
|
||||
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }
|
||||
]
|
||||
};
|
||||
@ -134,7 +132,7 @@ export default {
|
||||
labelWidth: '150px',
|
||||
items: [
|
||||
{ prop: 'deviceCode', label: '教研机', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code'},
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value', deviceChange:this.roleChange },
|
||||
{ prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' },
|
||||
{ prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }
|
||||
]
|
||||
};
|
||||
@ -194,40 +192,54 @@ export default {
|
||||
if (resp.data && resp.data.length) {
|
||||
this.stationList = resp.data;
|
||||
}
|
||||
const self = this;
|
||||
querySimulationMemberByMapId(mapId).then(resp => {
|
||||
if (resp.data) {
|
||||
getMapFunctioById(functionId).then(response=>{
|
||||
if (resp.data) {
|
||||
const roleList = resp.data[response.data.simType];
|
||||
const clientListMapIn = ConstConfig.ConstSelect.clientMap;
|
||||
this.clientListMap = clientListMapIn[response.data.simType];
|
||||
const covertRoleList = [];
|
||||
roleList.forEach(member => {
|
||||
const data = self.handleMember(member, self.stationList);
|
||||
covertRoleList.push(data);
|
||||
});
|
||||
this.clientList = [];
|
||||
self.roleList = covertRoleList;
|
||||
const roleCode = this.formData.roleCode;
|
||||
const role = this.roleList.find(each=>{ return each.value == roleCode; });
|
||||
if (role) { this.clientList = this.clientListMap[role.memberType] || []; }
|
||||
}
|
||||
getMapFunctioById(functionId).then(functionResp => {
|
||||
const simType = functionResp.data.simType;
|
||||
querySimulationMemberByMapId(mapId).then(resp => {
|
||||
const roleList = resp.data[simType];
|
||||
const covertRoleList = [];
|
||||
roleList.forEach(member => {
|
||||
const data = this.handleMember(member, this.stationList);
|
||||
covertRoleList.push(data);
|
||||
});
|
||||
}
|
||||
}).catch(() => {
|
||||
this.$message.error('获取角色列表失败');
|
||||
});
|
||||
this.roleList = covertRoleList;
|
||||
}).catch(() => {
|
||||
this.$message.error('获取角色列表失败');
|
||||
});
|
||||
getClientDataById(mapId).then(resp => {
|
||||
this.clientList = resp.data[simType];
|
||||
}).catch(() => {
|
||||
this.$message.error('获取客户端列表失败');
|
||||
});
|
||||
}).catch(() => { this.$message.error('获取线路功能数据失败!'); });
|
||||
// const self = this;
|
||||
// querySimulationMemberByMapId(mapId).then(resp => {
|
||||
// if (resp.data) {
|
||||
// getMapFunctioById(functionId).then(response=>{
|
||||
// if (resp.data) {
|
||||
// const roleList = resp.data[response.data.simType];
|
||||
// const clientListMapIn = ConstConfig.ConstSelect.clientMap;
|
||||
// this.clientListMap = clientListMapIn[response.data.simType];
|
||||
// const covertRoleList = [];
|
||||
// roleList.forEach(member => {
|
||||
// const data = self.handleMember(member, self.stationList);
|
||||
// covertRoleList.push(data);
|
||||
// });
|
||||
// this.clientList = [];
|
||||
// self.roleList = covertRoleList;
|
||||
// const roleCode = this.formData.roleCode;
|
||||
// const role = this.roleList.find(each=>{ return each.value == roleCode; });
|
||||
// if (role) { this.clientList = this.clientListMap[role.memberType] || []; }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// }).catch(() => {
|
||||
// this.$message.error('获取角色列表失败');
|
||||
// });
|
||||
}).catch(() => {
|
||||
this.$message.error('获取车站列表失败');
|
||||
});
|
||||
}
|
||||
},
|
||||
roleChange(role) {
|
||||
this.formData.client = '';
|
||||
const roleMember = this.roleList.find(each=>{ return each.value == role; });
|
||||
if (roleMember) { this.clientList = this.clientListMap[roleMember.memberType] || []; }
|
||||
},
|
||||
handleMember(member, stationList) {
|
||||
const data = { value: member.id, label: '', memberType: member.type };
|
||||
const device = stationList.find(station => station.code === member.deviceCode) || {};
|
||||
|
Loading…
Reference in New Issue
Block a user