Merge remote-tracking branch 'origin/dev' into test

This commit is contained in:
fan 2019-08-20 18:59:22 +08:00
commit d9bbbac879
78 changed files with 1172 additions and 790 deletions

1
.gitignore vendored
View File

@ -6,6 +6,7 @@ yarn-debug.log*
yarn-error.log* yarn-error.log*
package-lock.json package-lock.json
tests/**/coverage/ tests/**/coverage/
src/utils/baseUrl*
# Editor directories and files # Editor directories and files
.idea .idea

View File

@ -420,10 +420,11 @@ export function getSimulationInfo(group) {
} }
/** 获取可用的设备指令*/ /** 获取可用的设备指令*/
export function getAvailableDeviceCommand() { export function getAvailableDeviceCommand(params) {
return request({ return request({
url: `/api/simulation/deviceCommand/available`, url: `/api/simulation/deviceCommand/available`,
method: 'get' method: 'get',
params
}); });
} }

View File

@ -46,6 +46,10 @@ export default {
addFailed: 'Failure to add', addFailed: 'Failure to add',
updateFailed: 'Failure to update', updateFailed: 'Failure to update',
exportException: 'Export exception', exportException: 'Export exception',
operationFailure: 'Operation Failure' operationFailure: 'Operation Failure',
createCommonRunPlanFailed: 'Failed to create a common run plan',
templateHasBeUse: 'The template has been used by the load plan and cannot be deleted',
setFailed: 'Setup failed',
deleteException: 'To remove exceptions, contact your administrator',
paperHasUseNotDel: 'The paper has been used and cannot be deleted'
}; };

View File

@ -34,6 +34,9 @@ export default {
distributeExamPermission: 'Distribution of Examination Authority', distributeExamPermission: 'Distribution of Examination Authority',
distributeSimulationPermission: 'Distribution of simulation privileges', distributeSimulationPermission: 'Distribution of simulation privileges',
distributeScreenPermission: 'Large Screen Privilege Distribution', distributeScreenPermission: 'Large Screen Privilege Distribution',
email: 'Email',
nickName: 'nickname',
mobile: 'mobile',
name: 'Name', name: 'Name',
code: 'Code', code: 'Code',
status: 'Status', status: 'Status',
@ -64,7 +67,8 @@ export default {
toBeDeveloped: 'Functions to be developed', toBeDeveloped: 'Functions to be developed',
yuan: '¥', yuan: '¥',
filteringKeywords: 'Enter keywords for filtering', filteringKeywords: 'Enter keywords for filtering',
previousStep: 'PreviousStep', lastStep: 'Last Step',
nextStep: 'Next Step ',
skip: 'Skip', skip: 'Skip',
modify: 'Modify', modify: 'Modify',
language: 'Language', language: 'Language',
@ -82,6 +86,10 @@ export default {
month: 'month', month: 'month',
putaway: 'Putaway', putaway: 'Putaway',
soldOut: 'Sold out', soldOut: 'Sold out',
exportMap: 'Export Map' exportMap: 'Export Map',
preview: 'Preview',
notBeUse: 'This function is not enabled for the time being',
fastCreate: 'Quickly Create',
duration: 'duration',
isTry: 'Try'
}; };

View File

@ -10,6 +10,9 @@ import tip from './tip';
import system from './system'; import system from './system';
import orderAuthor from './orderAuthor'; import orderAuthor from './orderAuthor';
import publish from './publish'; import publish from './publish';
import permission from './permission';
import replay from './replay';
import planMonitor from './planMonitor';
export default { export default {
...enLocale, ...enLocale,
@ -23,5 +26,8 @@ export default {
tip, tip,
system, system,
orderAuthor, orderAuthor,
publish publish,
permission,
replay,
planMonitor
}; };

View File

@ -0,0 +1,19 @@
export default {
permissionPack: 'Package',
setSuccess: 'Set successfully',
isSureSetBelonger: 'Are you sure to set {name} to be the owner of the permission?',
setBelonger: 'Set Owner',
lessonName: 'Lesson Name',
mapName: 'Map Name',
mapProductName: 'Product Name',
permissionType: 'Permission Type',
permissionStatus: 'Permission Status',
permissionUseType: 'Public/Private',
permissionTotal: 'Total',
permissionRemains: 'Remains',
isForever: 'Permanent',
startTime: 'Start Time',
endTime: 'End Time',
belonger: 'Owner',
userList: 'User List'
};

View File

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

View File

@ -1,10 +1,47 @@
export default { export default {
name: 'Name',
city: 'City', city: 'City',
skinType: 'Skin Type', skinType: 'Skin Type',
mapName: 'Map Name', mapName: 'Map Name',
lessonName: 'Lesson Name',
updateMapName: 'Update Map Name', updateMapName: 'Update Map Name',
updateTime: 'Update Time', updateTime: 'Update Time',
operationSuccess: 'Operate successfully', operationSuccess: 'Operate successfully',
deleteSuccess: 'Delete successfully' deleteSuccess: 'Delete successfully',
wellDelType: 'This action deletes the type. Do you want to continue?',
wellPutawayMap: 'This will launch the map. Do you want to continue?',
wellSoldOutMap: 'This operation will remove this map. Do you want to continue?',
productName: 'Product Name',
productType: 'Product Type',
productCode: 'Product Code',
lessonIntroduction: 'Lesson Introduction',
updateSuccess: 'Update successfully',
wellPutawayTraining: 'Will this operation continue on the last sortie?',
wellSoldOutTraining: 'Will this operation continue for the next sortie?',
wellPutawayProduct: 'This operation will put the product on the shelf. Do you want to continue?',
wellSoldOutProduct: 'This operation will be removed from the shelves. Do you want to continue?',
runPlanName: 'Run Plan Name',
runEveryDayTime: 'Daily Running Time',
userId: 'User Id',
wellDelRunPlanEveryDay: 'This action deletes the daily running plan. Do you want to continue?',
taskName: 'Task Name',
createTime: 'Creation Time',
detail: 'Detail',
generateRunPlan: 'Generate Daily Paln',
selectTemplateRunPlan: 'Select Template Run Plan',
pleaseSelectTemplate: 'Please Select Template Run Plan',
selectMap: 'Select Map',
createCommonRunPlan: 'Create Common Run Plan',
createCommonSuccess: 'Creation of a common run plan was successful',
wellGenerateEveryRunPlan: 'This operation generates a daily running diagram. Do you want to continue?',
wellDelTemplate: 'This action deletes the diagram template. Do you want to continue?',
fullMark: 'Full Mark',
passScore: 'Passing Score',
examTime: 'Exam Time',
creator: 'Creator',
paperName: 'Name Of Test Paper',
setSuccess: 'Set successfully',
wellPutawayPaper: 'This operation puts the paper on the shelf. Do you want to continue?',
wellSoldOutPaper: 'This operation removes the paper from the shelf. Do you want to continue?',
wellDelPaper: 'This operation will delete the paper. Do you want to continue?'
}; };

View File

@ -0,0 +1,9 @@
export default {
replay: 'Play',
mapName: 'Map Name',
creatorId: 'Creator of ID',
createTime: 'Create Time',
deleteSuccess: 'Delete successfully',
wellDelReplay: 'This action will delete the playback. Do you want to continue?'
};

View File

@ -211,6 +211,7 @@ export default {
linkWidthInputPrompt: 'Please enter a valid Link width', linkWidthInputPrompt: 'Please enter a valid Link width',
sectionWidthInput: 'Please enter section width', sectionWidthInput: 'Please enter section width',
sectionWidthInputPrompt: 'Please enter a valid segment width', sectionWidthInputPrompt: 'Please enter a valid segment width',
selectShowWatermark: 'Select whether or not to watermark' selectShowWatermark: 'Select whether or not to watermark',
pleaseInputMapName: 'Please enter a new name for the map',
inputTemplateRunPlan: 'Please select the template run diagram'
}; };

View File

@ -6,13 +6,11 @@ export default {
createDirectory: 'Create dictionary', createDirectory: 'Create dictionary',
editDictionary: 'Edit dictionary', editDictionary: 'Edit dictionary',
deleteSuccess: 'Successful deletion', deleteSuccess: 'Successful deletion',
dleeteTipContext: 'This operation will delete the type. Do you want to continue?',
createSuccess: 'Create successful', createSuccess: 'Create successful',
updateSuccess: 'Update successful', updateSuccess: 'Update successful',
destory: 'Destory', destory: 'Destory',
simulationGroup: 'Simulation Group', simulationGroup: 'Simulation Group',
userName: 'User Name', userName: 'User Name',
mobile: 'Cell-phone Number',
skinCode: 'Skin Code', skinCode: 'Skin Code',
prdType: 'Product Type', prdType: 'Product Type',
simulationType: 'Simulation Type', simulationType: 'Simulation Type',
@ -21,7 +19,7 @@ export default {
isError: 'Is Error', isError: 'Is Error',
isSuspend: 'Is Suspend', isSuspend: 'Is Suspend',
isDrivingAsplanned: 'Whether to drive as planned', isDrivingAsplanned: 'Whether to drive as planned',
delUserSimulationIsContinue: 'This operation will delete the user simulation data. Do you want to continue?', wellDelUserSimulation: 'This operation will delete the user simulation data. Do you want to continue?',
createDetail: 'Create details', createDetail: 'Create details',
editDetail: 'Editorial details', editDetail: 'Editorial details',
mapName: 'Map Name', mapName: 'Map Name',
@ -36,13 +34,12 @@ export default {
examScore: 'Examination Score', examScore: 'Examination Score',
examResult: 'Examination Results', examResult: 'Examination Results',
examName: 'Paper Name', examName: 'Paper Name',
delExamResultIsContinue: 'This operation will delete the test result. Do you want to continue?', wellDelExamResult: 'This operation will delete the test result. Do you want to continue?',
editExamDetail: 'Edit exam details', editExamDetail: 'Edit exam details',
subscribeMap: 'Subscribe', subscribeMap: 'Subscribe',
roles: 'Roles', roles: 'Roles',
email: 'Email',
nickname: 'Nickname', nickname: 'Nickname',
delTypeIsContinue: 'This operation will delete the type. Do you want to continue?', wellDelType: 'This operation will delete the type. Do you want to continue?',
permission: 'Permission', permission: 'Permission',
editUserPermission: 'Edit User Rights', editUserPermission: 'Edit User Rights',
lessonName: 'Lesson Name', lessonName: 'Lesson Name',

View File

@ -46,6 +46,11 @@ export default {
addFailed: '添加失败', addFailed: '添加失败',
updateFailed: '更新失败', updateFailed: '更新失败',
exportException: '导出异常', exportException: '导出异常',
operationFailure: '操作失败' operationFailure: '操作失败',
createCommonRunPlanFailed: '创建通用运行图失败',
templateHasBeUse: '该模板已被加载计划使用,无法删除',
setFailed: '设置失败',
deleteException: '删除异常,请联系管理员',
paperHasUseNotDel: '该试卷已被使用,不能删除'
}; };

View File

@ -34,6 +34,9 @@ export default {
distributeExamPermission: '考试权限分发', distributeExamPermission: '考试权限分发',
distributeSimulationPermission: '仿真权限分发', distributeSimulationPermission: '仿真权限分发',
distributeScreenPermission: '大屏权限分发', distributeScreenPermission: '大屏权限分发',
email: '邮箱',
nickName: '昵称',
mobile: '手机号',
name: '名称', name: '名称',
code: '编码', code: '编码',
status: '状态', status: '状态',
@ -65,7 +68,8 @@ export default {
choose: '选 择', choose: '选 择',
yuan: '元', yuan: '元',
filteringKeywords: '输入关键字进行过滤', filteringKeywords: '输入关键字进行过滤',
previousStep: '上一步', lastStep: '上一步',
nextStep: '下一步',
skip: '跳过', skip: '跳过',
modify: '修改', modify: '修改',
language: '语言', language: '语言',
@ -83,6 +87,11 @@ export default {
month: '月', month: '月',
putaway: '上 架', putaway: '上 架',
soldOut: '下 架', soldOut: '下 架',
exportMap: '导出地图' exportMap: '导出地图',
preview: '预览',
notBeUse: '该功能暂时未开启',
fastCreate: '快速创建',
duration: '时长',
isTry: '是否试用'
}; };

View File

@ -10,6 +10,9 @@ import tip from './tip';
import system from './system'; import system from './system';
import orderAuthor from './orderAuthor'; import orderAuthor from './orderAuthor';
import publish from './publish'; import publish from './publish';
import permission from './permission';
import replay from './replay';
import planMonitor from './planMonitor';
export default { export default {
...cnLocale, ...cnLocale,
@ -23,5 +26,8 @@ export default {
tip, tip,
system, system,
orderAuthor, orderAuthor,
publish publish,
permission,
replay,
planMonitor
}; };

View File

@ -0,0 +1,19 @@
export default {
permissionPack: '权限打包',
setSuccess: '设置成功',
isSureSetBelonger: '是否确定设置{name}为权限所属人?',
setBelonger: '设置归属人',
lessonName: '课程名称',
mapName: '地图名称',
mapProductName: '产品名称',
permissionType: '权限类型',
permissionStatus: '权限状态',
permissionUseType: '公用/专用',
permissionTotal: '权限总数',
permissionRemains: '生于权限',
isForever: '是否永久',
startTime: '开始时间',
endTime: '结束时间',
belonger: '归属人',
userList: '用户列表'
};

View File

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

View File

@ -1,10 +1,47 @@
export default { export default {
name: '名称',
city: '所属城市', city: '所属城市',
skinType: '皮肤类型', skinType: '皮肤类型',
mapName: '地图名称', mapName: '地图名称',
lessonName: '课程名称',
updateMapName: '更新地图名称', updateMapName: '更新地图名称',
updateTime: '更新时间', updateTime: '更新时间',
operationSuccess: '操作成功', operationSuccess: '操作成功',
deleteSuccess: '删除成功' deleteSuccess: '删除成功',
wellDelType: '此操作将删除该类型, 是否继续?',
wellPutawayMap: '此操作将上架此地图, 是否继续?',
wellSoldOutMap: '此操作将下架此地图, 是否继续?',
productName: '产品名称',
productType: '产品类型',
productCode: '产品编码',
lessonIntroduction: '课程简介',
updateSuccess: '更新成功',
wellPutawayTraining: '此操作将上架此实训, 是否继续?',
wellSoldOutTraining: '此操作将下架此实训, 是否继续?',
wellPutawayProduct: '此操作将上架此产品, 是否继续?',
wellSoldOutProduct: '此操作将下架此产品, 是否继续?',
runPlanName: '运行图名称',
runEveryDayTime: '每日运行时间',
userId: '用户Id',
wellDelRunPlanEveryDay: '此操作将删除每日运行图, 是否继续?',
taskName: '任务名称',
createTime: '创建时间',
detail: '详情',
generateRunPlan: '生成每日运行图',
selectTemplateRunPlan: '选择模板运行图',
pleaseSelectTemplate: '请选择模板运行图',
selectMap: '选择地图',
createCommonRunPlan: '创建通用运行图',
createCommonSuccess: '创建通用运行图成功',
wellGenerateEveryRunPlan: '此操作将生成每日运行图, 是否继续?',
wellDelTemplate: '此操作将删除此运行图模板, 是否继续?',
fullMark: '满分',
passScore: '及格分',
examTime: '考试时间',
creator: '创建人',
paperName: '试卷名称',
setSuccess: '设置成功',
wellPutawayPaper: '此操作将此试卷上架, 是否继续?',
wellSoldOutPaper: '此操作将此试卷下架, 是否继续?',
wellDelPaper: '此操作将删除该试卷, 是否继续?'
}; };

View File

@ -0,0 +1,8 @@
export default {
replay: '回放',
mapName: '地图名称',
creatorId: '创建人ID',
createTime: '创建时间',
deleteSuccess: '删除成功',
wellDelReplay: '此操作将删除该回放, 是否继续?'
};

View File

@ -210,5 +210,8 @@ export default {
linkWidthInputPrompt: '请输入有效Link宽度', linkWidthInputPrompt: '请输入有效Link宽度',
sectionWidthInput: '请输入区段宽度', sectionWidthInput: '请输入区段宽度',
sectionWidthInputPrompt: '请输入有效区段宽度', sectionWidthInputPrompt: '请输入有效区段宽度',
selectShowWatermark: '请选择是否水印' selectShowWatermark: '请选择是否水印',
pleaseInputMapName: '请输入地图新名称',
inputTemplateRunPlan: '请选择模板运行图'
}; };

View File

@ -6,13 +6,11 @@ export default {
createDirectory: '创建目录', createDirectory: '创建目录',
editDictionary: '编辑目录', editDictionary: '编辑目录',
deleteSuccess: '删除成功', deleteSuccess: '删除成功',
dleeteTipContext: '此操作将删除该类型, 是否继续?',
createSuccess: '创建成功', createSuccess: '创建成功',
updateSuccess: '更新成功', updateSuccess: '更新成功',
destory: '销 毁', destory: '销 毁',
simulationGroup: '仿真Group', simulationGroup: '仿真Group',
userName: '用户名', userName: '用户名',
mobile: '手机号',
skinCode: '皮肤编号', skinCode: '皮肤编号',
prdType: '产品类型', prdType: '产品类型',
simulationType: '仿真类型', simulationType: '仿真类型',
@ -21,7 +19,7 @@ export default {
isError: '是否错误', isError: '是否错误',
isSuspend: '是否暂停', isSuspend: '是否暂停',
isDrivingAsplanned: '是否按计划行车', isDrivingAsplanned: '是否按计划行车',
delUserSimulationIsContinue: '此操作将删除此用户仿真数据, 是否继续?', wellDelUserSimulation: '此操作将删除此用户仿真数据, 是否继续?',
createDetail: '创建明细', createDetail: '创建明细',
editDetail: '编辑明细', editDetail: '编辑明细',
mapName: '地图名称', mapName: '地图名称',
@ -36,13 +34,12 @@ export default {
examScore: '考试成绩', examScore: '考试成绩',
examResult: '考试结果', examResult: '考试结果',
examName: '试卷名称', examName: '试卷名称',
delExamResultIsContinue: '此操作将删除此考试结果, 是否继续?', wellDelExamResult: '此操作将删除此考试结果, 是否继续?',
editExamDetail: '编辑考试详情', editExamDetail: '编辑考试详情',
subscribeMap: '订阅地图', subscribeMap: '订阅地图',
roles: '角色', roles: '角色',
email: '邮箱',
nickname: '昵称', nickname: '昵称',
delTypeIsContinue: '此操作将删除该类型, 是否继续?', wellDelType: '此操作将删除该类型, 是否继续?',
permission: '权限', permission: '权限',
editUserPermission: '编辑用户权限', editUserPermission: '编辑用户权限',
lessonName: '课程名称', lessonName: '课程名称',

View File

@ -48,12 +48,20 @@ export function JLmapDriving(dom, data, skinCode) {
const renderer = SetRender(dom); const renderer = SetRender(dom);
renderer.domElement.style.position = 'absolute'; renderer.domElement.style.position = 'absolute';
renderer.domElement.style.top = '0'; renderer.domElement.style.top = '0';
var renderercctv = new THREE.WebGLRenderer();
renderercctv.setSize(dom.offsetWidth*0.2, dom.offsetHeight*0.2);
renderercctv.domElement.style.position = 'absolute';
renderercctv.domElement.style.top = '0';
document.getElementById('jlsimulation').appendChild(renderer.domElement); document.getElementById('jlsimulation').appendChild(renderer.domElement);
document.getElementById('jlcctv').appendChild(renderercctv.domElement);
// 定义相机 // 定义相机
let camera = SetCamera(dom); let camera = SetCamera(dom);
// 定义场景(渲染容器) // 定义场景(渲染容器)
const scene = SetScene(); const scene = SetScene();
const speed = 0; const speed = 0;
let drivingcode = null; let drivingcode = null;
@ -80,6 +88,8 @@ export function JLmapDriving(dom, data, skinCode) {
this.atospeed = null; this.atospeed = null;
this.trainnum = null; this.trainnum = null;
this.stime = null; this.stime = null;
this.drivecount = 0;
this.drivedata = null;
this.webwork=new Worker('../../static/workertest/trainworker.js'); this.webwork=new Worker('../../static/workertest/trainworker.js');
// 地图模型数据 // 地图模型数据
@ -91,6 +101,12 @@ export function JLmapDriving(dom, data, skinCode) {
const controls3 = new MouseControls(camera2, 1.6); const controls3 = new MouseControls(camera2, 1.6);
controls3.enabled = true; controls3.enabled = true;
scene.add(controls3.getObject()); scene.add(controls3.getObject());
let cameracctv = new THREE.PerspectiveCamera(70, dom.clientWidth/dom.clientHeight, 1, 20);
cameracctv.position.set( 5, 1,27 );
cameracctv.rotation.y = Math.PI/5*3;
camera2.add(cameracctv);
// 订阅仿真socket // 订阅仿真socket
this.Subscribe = new Jl3dDriving(scope); this.Subscribe = new Jl3dDriving(scope);
// 连接到通信 // 连接到通信
@ -122,7 +138,9 @@ export function JLmapDriving(dom, data, skinCode) {
if (scope.animateswitch == true) { if (scope.animateswitch == true) {
// 根据相机渲染场景 // 根据相机渲染场景
renderer.render(scene, camera2); renderer.render(scene, camera2);
renderercctv.render(scene,cameracctv);
// updatcontrols(); // updatcontrols();
// renderercctv
controls3.update(); controls3.update();
// 检测动画构造器播放动画 // 检测动画构造器播放动画
@ -176,6 +194,10 @@ export function JLmapDriving(dom, data, skinCode) {
this.updatestoptime = function(stime) { this.updatestoptime = function(stime) {
scope.stime = stime; scope.stime = stime;
}; };
this.updatedrivedata = function(drivedata){
scope.drivecount += 1;
scope.drivedata = drivedata;
};
this.updatedrivingcode = function(code) { this.updatedrivingcode = function(code) {
drivingcode = code; drivingcode = code;

View File

@ -93,12 +93,13 @@ export function Jl3dDriving(jlmap3d) {
// //
// //
// } // }
if (data.type == 'Simulation_Driver_Change') { if (data.type == 'Simulation_Driver_Change') {
drivingcode = data.body.code; drivingcode = data.body.code;
jlmap3d.updatedrivingcode( data.body.code); jlmap3d.updatedrivingcode( data.body.code);
} }
if(data.type == 'Simulation_Drive_Data_Routing'){
jlmap3d.updatedrivedata(data.body);
}
if (data.type == 'Simulation_TrainSpeed') { if (data.type == 'Simulation_TrainSpeed') {
if (trainlisttest) { if (trainlisttest) {
@ -167,14 +168,14 @@ export function Jl3dDriving(jlmap3d) {
} else { } else {
syncdata.percent = sectionlist.sections.datalist[data.body[i].sectionCode].lstop/trainlisttest.list[code].len; syncdata.percent = sectionlist.sections.datalist[data.body[i].sectionCode].lstop/trainlisttest.list[code].len;
} }
scope.teststomp.send('/app/topic/simulation/wgu3d', syncdata); //scope.teststomp.send('/app/topic/simulation/wgu3d', syncdata);
} else { } else {
if (data.body[i].directionType == '02') { if (data.body[i].directionType == '02') {
syncdata.percent = trainlisttest.list[code].progress; syncdata.percent = trainlisttest.list[code].progress;
} else { } else {
syncdata.percent = 1 - trainlisttest.list[code].progress; syncdata.percent = 1 - trainlisttest.list[code].progress;
} }
scope.teststomp.send('/app/topic/simulation/wgu3d', syncdata); //scope.teststomp.send('/app/topic/simulation/wgu3d', syncdata);
} }
if (data.body[i].parkRemainTime>0) { if (data.body[i].parkRemainTime>0) {

View File

@ -564,6 +564,7 @@ THREE.FBXLoader = ( function () {
if ( parameters.opacity < 1.0 ) { if ( parameters.opacity < 1.0 ) {
parameters.transparent = true; parameters.transparent = true;
parameters.alphaTest = 0.1;
} }
if ( materialNode.ReflectionFactor ) { if ( materialNode.ReflectionFactor ) {
@ -634,6 +635,7 @@ THREE.FBXLoader = ( function () {
case 'TransparentColor': case 'TransparentColor':
parameters.alphaMap = self.getTexture( textureMap, child.ID ); parameters.alphaMap = self.getTexture( textureMap, child.ID );
parameters.transparent = true; parameters.transparent = true;
parameters.alphaTest = 0.1;
break; break;
case 'AmbientColor': case 'AmbientColor':

View File

@ -2,37 +2,48 @@
* 实训状态数据 * 实训状态数据
*/ */
const scriptRecord = { const scriptRecord = {
namespaced: true, namespaced: true,
state: { state: {
mapLocation: {}, //地图定位, mapLocation: {}, // 地图定位,
simulationPause: true , simulationPause: true,
}, scriptId: ''
getters: {
mapLocation: (state)=>{ },
return state.mapLocation; getters: {
}, mapLocation: (state)=>{
simulationPause:(state)=>{ return state.mapLocation;
return state.simulationPause; },
}, simulationPause: (state)=>{
}, return state.simulationPause;
mutations: { },
setMapLocation: (state, mapLocation) => { scriptId: (state)=>{
return state.scriptId;
}
},
mutations: {
setMapLocation: (state, mapLocation) => {
state.mapLocation = mapLocation; state.mapLocation = mapLocation;
}, },
setSimulationPause: (state, simulationPause) => { setSimulationPause: (state, simulationPause) => {
state.simulationPause = simulationPause; state.simulationPause = simulationPause;
}, },
}, setscriptId: (state, scriptId) => {
actions: { state.scriptId = scriptId;
/** }
},
actions: {
/**
* 设置地图定位 * 设置地图定位
*/ */
updateMapLocation: ({ commit }, mapLocation) => { updateMapLocation: ({ commit }, mapLocation) => {
commit('setMapLocation', mapLocation); commit('setMapLocation', mapLocation);
}, },
updateSimulationPause: ({ commit }, simulationPause) => { updateSimulationPause: ({ commit }, simulationPause) => {
commit('setSimulationPause', simulationPause); commit('setSimulationPause', simulationPause);
}, },
} updateScriptId: ({ commit }, scriptId) => {
commit('setscriptId', scriptId);
}
}
}; };
export default scriptRecord; export default scriptRecord;

View File

@ -88,6 +88,8 @@ function handle(state, data) {
case 'Simulation_Quest_Finish': // 任务结束标志 case 'Simulation_Quest_Finish': // 任务结束标志
state.tipOperateCount++; state.tipOperateCount++;
break; break;
case 'Simulation_Control_Pause': // 暂停中
store.dispatch('scriptRecord/updateSimulationPause', msg);
} }
} }

View File

@ -3,9 +3,9 @@ export function getBaseUrl() {
let BASE_API; let BASE_API;
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
// BASE_API = 'https://joylink.club/jlcloud'; // BASE_API = 'https://joylink.club/jlcloud';
BASE_API = 'https://test.joylink.club/jlcloud'; // BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.3.5:9000'; // 袁琪 // BASE_API = 'http://192.168.3.5:9000'; // 袁琪
// BASE_API = 'http://192.168.3.6:9000'; // 旭强 BASE_API = 'http://192.168.3.6:9000'; // 旭强
// BASE_API = 'http://192.168.3.4:9000' // 琰培 // BASE_API = 'http://192.168.3.4:9000' // 琰培
} else { } else {
BASE_API = process.env.VUE_APP_BASE_API; BASE_API = process.env.VUE_APP_BASE_API;

View File

@ -1,86 +1,93 @@
<template> <template>
<div class="digit" :style="{width: 11*zoom+'px', height: 20*zoom+'px', top: top+'px'}"> <div class="digit" :style="{width: 11*zoom+'px', height: 20*zoom+'px', top: top+'px'}">
<div class="segment on" <div
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowOne), top: zoom+'px', left: zoom*2+'px', right: zoom*2+'px', height: zblod+'px'}"> class="segment on"
</div> :style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowOne), top: zoom+'px', left: zoom*2+'px', right: zoom*2+'px', height: zblod+'px'}"
<div class="segment on" />
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowTwo), top: zoom*2+'px', right: zoom+'px', width: zblod+'px', height: zoom*7.5+'px'}"> <div
</div> class="segment on"
<div class="segment on" :style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowTwo), top: zoom*2+'px', right: zoom+'px', width: zblod+'px', height: zoom*7.5+'px'}"
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowThee), bottom: zoom*2+'px', right: zoom+'px', width: zblod+'px', height: zoom*7.5+'px'}"> />
</div> <div
<div class="segment on " class="segment on"
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowFour), bottom: zoom+'px', right: zoom*2+'px', height: zblod+'px', left: zoom*2+'px' }"> :style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowThee), bottom: zoom*2+'px', right: zoom+'px', width: zblod+'px', height: zoom*7.5+'px'}"
</div> />
<div class="segment on " <div
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowFive), bottom: zoom*2+'px', left: zoom+'px', width: zblod+'px', height: zoom*7.5+'px'}"> class="segment on "
</div> :style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowFour), bottom: zoom+'px', right: zoom*2+'px', height: zblod+'px', left: zoom*2+'px' }"
<div class="segment on " />
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowSix), top: zoom*2+'px', left: zoom+'px',width: zblod+'px', height: zoom*7.5+'px'}"> <div
</div> class="segment on "
<div class="segment " :style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowFive), bottom: zoom*2+'px', left: zoom+'px', width: zblod+'px', height: zoom*7.5+'px'}"
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowSeven), left: zoom*2+'px', right: zoom*2+'px', height: zblod+'px', bottom: zoom*9.5+'px'}"> />
</div> <div
</div> class="segment on "
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowSix), top: zoom*2+'px', left: zoom+'px',width: zblod+'px', height: zoom*7.5+'px'}"
/>
<div
class="segment "
:style="{ background: color, 'border-radius': zoom+'px', opacity: opacity(isShowSeven), left: zoom*2+'px', right: zoom*2+'px', height: zblod+'px', bottom: zoom*9.5+'px'}"
/>
</div>
</template> </template>
<script> <script>
export default { export default {
name: 'digit', name: 'Digit',
props: { props: {
top: { top: {
type: Number, type: Number,
required: true required: true
}, },
zoom: { zoom: {
type: Number, type: Number,
required: true required: true
}, },
number: { number: {
type: Number, type: Number,
required: true required: true
}, },
fine: { fine: {
type: Number, type: Number,
required: true, required: true
}, },
color: { color: {
type: String, type: String,
required: true, required: true
} }
}, },
computed: { computed: {
zblod() { zblod() {
return parseInt(this.fine * this.zoom) return parseInt(this.fine * this.zoom);
}, },
isShowOne() { isShowOne() {
return [2, 3, 5, 6, 7, 8, 9, 0].indexOf(this.number) != -1; return [2, 3, 5, 6, 7, 8, 9, 0].indexOf(this.number) != -1;
}, },
isShowTwo() { isShowTwo() {
return [1, 2, 3, 4, 7, 8, 9, 0].indexOf(this.number) != -1; return [1, 2, 3, 4, 7, 8, 9, 0].indexOf(this.number) != -1;
}, },
isShowThee() { isShowThee() {
return [1, 3, 4, 5, 6, 7, 8, 9, 0].indexOf(this.number) != -1; return [1, 3, 4, 5, 6, 7, 8, 9, 0].indexOf(this.number) != -1;
}, },
isShowFour() { isShowFour() {
return [2, 3, 5, 6, 8, 9, 0].indexOf(this.number) != -1; return [2, 3, 5, 6, 8, 9, 0].indexOf(this.number) != -1;
}, },
isShowFive() { isShowFive() {
return [2, 6, 8, 0].indexOf(this.number) != -1; return [2, 6, 8, 0].indexOf(this.number) != -1;
}, },
isShowSix() { isShowSix() {
return [4, 5, 6, 8, 9, 0].indexOf(this.number) != -1; return [4, 5, 6, 8, 9, 0].indexOf(this.number) != -1;
}, },
isShowSeven() { isShowSeven() {
return [2, 3, 4, 5, 6, 8, 9].indexOf(this.number) != -1; return [2, 3, 4, 5, 6, 8, 9].indexOf(this.number) != -1;
}, }
}, },
methods: { methods: {
opacity(show) { opacity(show) {
return show ? 1 : 0.2; return show ? 1 : 0.2;
} }
} }
} };
</script> </script>
<style rel="stylesheet/scss" lang="scss" scoped> <style rel="stylesheet/scss" lang="scss" scoped>
@ -109,4 +116,4 @@
} }
} }
</style> </style>

View File

@ -1,75 +1,84 @@
<template> <template>
<div class="system-time-box" <div
:style="{background: background, width: width+'px', height: height+'px', 'line-height': height+'px'}"> class="system-time-box"
<template v-for="(item,index) in time"> :style="{background: background, width: width+'px', height: height+'px', 'line-height': height+'px'}"
<digit v-if="Number.isInteger(parseInt(item))" :number="parseInt(item)" :color="color" :fine="fine" >
:zoom="time.length - index > 2? zoom: zoom* 0.6" :top="top"></digit> <template v-for="(item,index) in time">
<separator v-if="!Number.isInteger(parseInt(item))" :color="color" :zoom="zoom" :fine="fine"></separator> <digit
</template> v-if="Number.isInteger(parseInt(item))"
</div> :key="index"
:number="parseInt(item)"
:color="color"
:fine="fine"
:zoom="time.length - index > 2? zoom: zoom* 0.6"
:top="top"
/>
<separator v-if="!Number.isInteger(parseInt(item))" :key="index" :color="color" :zoom="zoom" :fine="fine" />
</template>
</div>
</template> </template>
<script> <script>
import Digit from './digit'; import Digit from './digit';
import Separator from './separator'; import Separator from './separator';
export default { export default {
name: 'SystenTime', name: 'SystenTime',
props: { components: {
background: { Digit,
type: String, Separator
default() { },
return '#000'; props: {
} background: {
}, type: String,
color: { default() {
type: String, return '#000';
default() { }
return '#00FF00' },
} color: {
}, type: String,
time: { default() {
type: String, return '#00FF00';
default() { }
return '12:3456' },
} time: {
}, type: String,
zoom: { default() {
type: Number, return '12:3456';
default() { }
return 4; },
} zoom: {
}, type: Number,
width: { default() {
type: Number, return 4;
default() { }
return 280; },
} width: {
}, type: Number,
height: { default() {
type: Number, return 280;
default() { }
return 80; },
} height: {
}, type: Number,
fine: { default() {
type: Number, return 80;
default() { }
return 1; },
} fine: {
}, type: Number,
top: { default() {
type: Number, return 1;
default() { }
return 1; },
} top: {
} type: Number,
}, default() {
components: { return 1;
Digit, }
Separator }
} }
} };
</script> </script>
<style rel="stylesheet/scss" lang="scss" scoped> <style rel="stylesheet/scss" lang="scss" scoped>
@ -77,4 +86,4 @@
display: inline-block; display: inline-block;
text-align: center; text-align: center;
} }
</style> </style>

View File

@ -1,38 +1,39 @@
<template> <template>
<div class="point" <div
:style="{background: color, width: zblod+'px', height: zblod+'px', top: top+'px', 'border-radius': 0.5*zblod+'px'}"> class="point"
</div> :style="{background: color, width: zblod+'px', height: zblod+'px', top: top+'px', 'border-radius': 0.5*zblod+'px'}"
/>
</template> </template>
<script> <script>
export default { export default {
name: 'point', name: 'Point',
props: { props: {
top: { top: {
type: Number, type: Number,
required: true, required: true
}, },
zoom: { zoom: {
type: Number, type: Number,
required: true, required: true
}, },
fine: { fine: {
type: Number, type: Number,
required: true, required: true
}, },
color: { color: {
type: String, type: String,
required: true, required: true
} }
}, },
computed: { computed: {
zblod() { zblod() {
return parseInt(this.fine * this.zoom) return parseInt(this.fine * this.zoom);
} }
}, },
methods: { methods: {
} }
} };
</script> </script>
<style rel="stylesheet/scss" lang="scss" scoped> <style rel="stylesheet/scss" lang="scss" scoped>
@ -40,4 +41,4 @@
position: relative; position: relative;
display: inline-block; display: inline-block;
} }
</style> </style>

View File

@ -189,11 +189,11 @@ export default {
checkDisabled(role) { checkDisabled(role) {
if (this.$route.query.prdType == '01') { if (this.$route.query.prdType == '01') {
return role !== 'Attendant'; return role !== 'Attendant' && role !== 'no';
} else if (this.$route.query.prdType == '02') { } else if (this.$route.query.prdType == '02') {
return role !== 'Dispatcher'; return role !== 'Dispatcher'&& role !== 'no';
} else if (this.$route.query.prdType == '04') { } else if (this.$route.query.prdType == '04') {
return role !== 'Driver'; return role !== 'Driver' && role !== 'no';
} }
}, },

View File

@ -26,10 +26,10 @@
<menu-replay v-if="isReplay" ref="menuReplay" :offset="offset" :group="group" /> <menu-replay v-if="isReplay" ref="menuReplay" :offset="offset" :group="group" />
<menu-script v-if="isTask" ref="menuScript" :offset="offset" :group="group" /> <menu-script v-if="isScript" ref="menuScript" :offset="offset" :group="group" />
<menu-schema <menu-schema
v-if="isDemon || isPlan || isTask " v-if="isDemon || isPlan || isScript "
ref="menuSchema" ref="menuSchema"
:offset="offset" :offset="offset"
:group="group" :group="group"
@ -40,7 +40,7 @@
@switchMode="switchMode" @switchMode="switchMode"
/> />
<menu-system-time ref="menuSystemTime" :offset="offset" :group="group" /> <menu-system-time ref="menuSystemTime" :offset="offset" :right="right" :group="group" />
</div> </div>
<Jl3d-Simulation v-show="simulationShow" ref="Jl3dSimulation" :panel-show="simulationShow" @showpanel="showpanel" /> <Jl3d-Simulation v-show="simulationShow" ref="Jl3dSimulation" :panel-show="simulationShow" @showpanel="showpanel" />
@ -122,6 +122,7 @@ export default {
timeDemonNum: 0, timeDemonNum: 0,
checkLine: null, checkLine: null,
offset: 15, offset: 15,
right: 0,
mouseNum: 1, mouseNum: 1,
ierval: null, ierval: null,
mouseNumTime: 0, mouseNumTime: 0,
@ -181,7 +182,7 @@ export default {
isReplay() { isReplay() {
return this.mode === 'replay'; return this.mode === 'replay';
}, },
isTask() { isScript() {
return this.mode === 'script'; return this.mode === 'script';
}, },
isPlan() { isPlan() {
@ -246,6 +247,7 @@ export default {
const width = this.size ? this.size.width : this._clientWidth; const width = this.size ? this.size.width : this._clientWidth;
const height = this.size ? this.size.height : this._clientHeight; const height = this.size ? this.size.height : this._clientHeight;
this.right = width /2 - 55;
this.$store.dispatch('config/resize', { width, height }); this.$store.dispatch('config/resize', { width, height });
this.$nextTick(() => { this.$nextTick(() => {
@ -340,13 +342,12 @@ export default {
}, },
// //
async initLoadData() { async initLoadData() {
// const width = document.documentElement.clientWidth;
// const height = document.documentElement.clientHeight + 200;
// this.$store.dispatch('config/resize', { width, height });
this.$store.dispatch('training/reset'); this.$store.dispatch('training/reset');
try { try {
await this.loadSimulationInfo(); if (!this.isReplay) {
await this.loadSimulationInfo();
}
if (this.isReplay) { if (this.isReplay) {
await this.initLoadReplayData(); await this.initLoadReplayData();
@ -356,7 +357,7 @@ export default {
await this.initLoadScreenData(); await this.initLoadScreenData();
} else if (this.isPlan) { } else if (this.isPlan) {
await this.initLoadTestRunData(); await this.initLoadTestRunData();
} else if (this.isTask) { } else if (this.isScript) {
await this.initLoadTaskData(); await this.initLoadTaskData();
} else { } else {
await this.initLoadLessonOrExamData(); await this.initLoadLessonOrExamData();
@ -524,7 +525,7 @@ export default {
await this.$refs.menuScreen.back(); await this.$refs.menuScreen.back();
} else if (this.isPlan) { } else if (this.isPlan) {
await this.$refs.menuPlan.back(); await this.$refs.menuPlan.back();
} else if (this.isTask) { } else if (this.isScript) {
await this.$refs.menuScript.back(); await this.$refs.menuScript.back();
} }
}, },

View File

@ -62,7 +62,7 @@ export default {
startLoading: false, startLoading: false,
speed: '1X', speed: '1X',
level: 1, level: 1,
isPlay: true, isPlay: false,
time: '', time: '',
timeInterval: null, timeInterval: null,
progress: 0, progress: 0,
@ -95,6 +95,11 @@ export default {
return this.isPlay ? '暂停' : '播放'; return this.isPlay ? '暂停' : '播放';
} }
}, },
watch: {
'$store.state.map.mapViewLoadedCount': function() {
this.isPlay = true;
}
},
mounted() { mounted() {
EventBus.$emit('showChat'); EventBus.$emit('showChat');
this.time = (+new Date(this.$route.query.destroyTime) - +new Date(this.$route.query.createTime)) / 1000; this.time = (+new Date(this.$route.query.destroyTime) - +new Date(this.$route.query.createTime)) / 1000;

View File

@ -7,9 +7,9 @@
<el-button-group> <el-button-group>
<el-button v-if="isDemon" size="small" :disabled="viewDisabled" type="success" @click="viewRunQuest">加载剧本 <el-button v-if="isDemon" size="small" :disabled="viewDisabled" type="success" @click="viewRunQuest">加载剧本
</el-button> </el-button>
<el-button v-if="runing" size="small" :disabled="viewDisabled" @click="viewRunPlan">运行图预览</el-button> <el-button v-if="notScript && runing" size="small" :disabled="viewDisabled" @click="viewRunPlan">运行图预览</el-button>
<el-button <el-button
v-if="!runing && !isPlan" v-if="!runing && !isPlan && notScript"
size="small" size="small"
:disabled="viewDisabled" :disabled="viewDisabled"
type="warning" type="warning"
@ -59,11 +59,15 @@ export default {
...mapGetters('runPlan', [ ...mapGetters('runPlan', [
'stations' 'stations'
]), ]),
notScript() {
return this.$route.params.mode !== 'script';
},
isPlan() { isPlan() {
return this.$route.params.mode === 'plan'; return this.$route.params.mode === 'plan';
}, },
isScript() { isScript() {
return this.$route.params.mode === 'script'; // return this.$route.params.mode === 'script';
return false;
}, },
isDemon() { isDemon() {
return this.$route.params.mode === 'demon'; return this.$route.params.mode === 'demon';

View File

@ -13,14 +13,12 @@
</el-button-group> </el-button-group>
</div> </div>
<set-time ref="setTime" @ConfirmSelectBeginTime="start" /> <set-time ref="setTime" @ConfirmSelectBeginTime="start" />
<!-- <tip-script-record ref="tipTaskRecord" :group="group" /> -->
</div> </div>
</template> </template>
<!-- 单人仿真 --> <!-- 单人仿真 -->
<script> <script>
import SetTime from './demon/setTime'; import SetTime from './demon/setTime';
import TipScriptRecord from './tipScriptRecord';
// import { mapGetters } from 'vuex'; // import { mapGetters } from 'vuex';
import { Notification } from 'element-ui'; import { Notification } from 'element-ui';
// import { getGoodsTryUse } from '@/api/management/goods'; // import { getGoodsTryUse } from '@/api/management/goods';
@ -37,7 +35,6 @@ export default {
name: 'MenuTask', name: 'MenuTask',
components: { components: {
SetTime, SetTime,
TipScriptRecord
}, },
props: { props: {
group: { group: {

View File

@ -1,18 +1,22 @@
<template> <template>
<div v-if="isShowSystemTime" class="display-card" :style="{top: offset+'px'}"> <div v-if="isShowSystemTime" class="display-card" :style="{top: offset+'px', right: right+'px'}">
<system-time <template v-if="pause">
v-if="isShowSystemTime" <span class="display-pause">暂停中</span>
class="time" </template>
:time="time" <template v-else>
:zoom="1.3" <system-time
:width="110" class="display-time"
:height="32" :time="time"
:fine="2" :zoom="1.3"
:top="2" :width="110"
/> :height="32"
:fine="2"
:top="2"
/>
</template>
</div> </div>
</template> </template>
<script> <script>
import { prefixIntrger } from '@/utils/date'; import { prefixIntrger } from '@/utils/date';
import SystemTime from '@/views/components/systemTime/index'; import SystemTime from '@/views/components/systemTime/index';
@ -26,6 +30,10 @@ export default {
offset: { offset: {
type: Number, type: Number,
required: true required: true
},
right: {
type: Number,
required: true
} }
}, },
data() { data() {
@ -35,7 +43,14 @@ export default {
}, },
computed: { computed: {
isShowSystemTime() { isShowSystemTime() {
return this.$route.params.mode == 'demon' || this.$route.params.mode == 'dp' || this.$route.params.mode == 'plan' || !this.$route.params.mode; return this.$route.params.mode == 'demon' ||
this.$route.params.mode == 'dp' ||
this.$route.params.mode == 'plan' ||
this.$route.params.mode == 'script' ||
!this.$route.params.mode;
},
pause() {
return this.$store.state.scriptRecord.simulationPause;
} }
}, },
watch: { watch: {
@ -53,34 +68,21 @@ export default {
z-index: 9; z-index: 9;
display: inline; display: inline;
position: absolute; position: absolute;
}
.display-pause {
font-size: 21px;
font-weight: bold;
color: yellow;
}
.display-time{
border: 2px solid white; border: 2px solid white;
border-radius: 4px; border-radius: 4px;
left: calc(50% - 55px); }
}
.display-card .el-row { .display-card .el-row {
line-height: 32px !important; line-height: 32px !important;
} }
.display-score {
background-color: white;
display: -moz-inline-box;
display: inline-block;
text-align: left;
height: 32px;
line-height: 24px;
border-radius: 4px;
padding-left: 2px;
margin-left: 10px;
font-family: "Microsoft" !important;
font-size: 18px !important;
color: #fff;
}
.display-draft {
position: absolute;
float: right;
right: 40px;
bottom: 28px;
}
</style> </style>

View File

@ -19,6 +19,8 @@
<div id="jlsimulation" class="jlmap3ddraw"> <div id="jlsimulation" class="jlmap3ddraw">
<canvas id="canvastexture" /> <canvas id="canvastexture" />
</div> </div>
<div id="jlcctv" class="jlmap3cctv">
</div>
<Drive-Mmi v-if="mmishow" ref="mmiui" /> <Drive-Mmi v-if="mmishow" ref="mmiui" />
@ -124,6 +126,13 @@ export default {
this.stoptimes = newVal; this.stoptimes = newVal;
} }
} }
},
'jlmap3d.drivecount': {
handler: function (newVal, oldVal) {
if (newVal != oldVal) {
this.$refs.mmiui.updatedrivedata(this.jlmap3d.drivedata);
}
}
} }
}, },
beforeDestroy() { beforeDestroy() {
@ -287,6 +296,17 @@ export default {
z-index: -1; z-index: -1;
} }
.jlmap3cctv{
float: left;
left: 0;
top:0;
//left:20%;
width: 20%;
height: 20%;
position:absolute;
z-index: -1;
}
#canvastexture { #canvastexture {
position: absolute; position: absolute;
float: left; float: left;

View File

@ -112,21 +112,37 @@ export default {
nowatpspeed:0, nowatpspeed:0,
nowatospeed:0, nowatospeed:0,
mmimodel:null, mmimodel:null,
nstate:"tiaoting",
nimage:null, nimage:null,
dstate:"info",
dimage:null, dimage:null,
m1state:"rm",
m1image:null, m1image:null,
m2state:"cbtc",
m2image:null, m2image:null,
m3state:"zhefan",
m3image:null, m3image:null,
m4state:"out",
m4image:null, m4image:null,
m5state:"state15",
m5image:null, m5image:null,
m6state:"fache",
m6image:null, m6image:null,
m7state:"aoac",
m7image:null, m7image:null,
m8state:"jinjizhidong",
m8image:null, m8image:null,
m9state:"ato",
m9image:null, m9image:null,
m10state:"jinduan",
m10image:null, m10image:null,
c1state:"qianyin",
c1image:null, c1image:null,
c2state:"rm",
c2image:null, c2image:null,
c3state:"normal",
c3image:null, c3image:null,
c5state:"normal",
c5image:null, c5image:null,
images:null, images:null,
} }
@ -204,6 +220,75 @@ export default {
this.mmimodel.updateato(atospeed); this.mmimodel.updateato(atospeed);
} }
}, },
updatedrivedata(drivedata){
console.log(drivedata);
if(drivedata == "breaker"){
}
if(drivedata == "carwash"){
}
if(drivedata == "aircom"){
}
if(drivedata == "atb"){
}
if(drivedata == "bm"){
}
if(drivedata == "rm"){
if(this.m1state == "start"){
this.m1state = 'rm';
this.m1image = this.images.m1[this.m1state];
}else if(this.m1state == "rm"){
this.m1state = 'am';
this.m1image = this.images.m1[this.m1state];
}else if(this.m1state == "am"){
this.m1state = 'cm';
this.m1image = this.images.m1[this.m1state];
}else if(this.m1state == "cm"){
this.m1state = 'start';
this.m1image = this.images.m1[this.m1state];
}
}
if(drivedata == "cbtc"){
if(this.m2state == "start"){
this.m2state = 'il';
this.m2image = this.images.m2[this.m2state];
}else if(this.m2state == "il"){
this.m2state = 'itc';
this.m2image = this.images.m2[this.m2state];
}else if(this.m2state == "itc"){
this.m2state = 'cbtc';
this.m2image = this.images.m2[this.m2state];
}else if(this.m2state == "cbtc"){
this.m2state = 'start';
this.m2image = this.images.m2[this.m2state];
}
}
//doormode
if(drivedata == "AA"){
this.m7state = 'aoac';
this.m7image = this.images.m7[this.m7state];
}
if(drivedata == "AM"){
this.m7state = 'aomc';
this.m7image = this.images.m7[this.m7state];
}
if(drivedata == "MM"){
this.m7state = 'momc';
this.m7image = this.images.m7[this.m7state];
}
if(drivedata == "elflute"){
}
if(drivedata == "relieve"){
}
},
updatelen(len) { updatelen(len) {
//this.malen = 150+"px"; //this.malen = 150+"px";
if(len>=750){ if(len>=750){

View File

@ -114,7 +114,7 @@ export default {
}, },
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('global.dleeteTipContext'), this.$t('global.tips'), { this.$confirm(this.$t('global.wellDelType'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'

View File

@ -32,7 +32,7 @@ export default {
}, },
mobile: { mobile: {
type: 'text', type: 'text',
label: this.$t('system.mobile') label: this.$t('global.mobile')
}, },
skinCode: { skinCode: {
type: 'select', type: 'select',
@ -68,7 +68,7 @@ export default {
prop: 'creator.name' prop: 'creator.name'
}, },
{ {
title: this.$t('system.mobile'), title: this.$t('global.mobile'),
prop: 'creator.mobile' prop: 'creator.mobile'
}, },
{ {
@ -170,7 +170,7 @@ export default {
return sessionId; return sessionId;
}, },
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('system.delUserSimulationIsContinue'), this.$t('global.tips'), { this.$confirm(this.$t('system.wellDelUserSimulation'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'

View File

@ -55,11 +55,11 @@ export default {
prop: 'nickname' prop: 'nickname'
}, },
{ {
title: this.$t('system.mobile'), title: this.$t('global.mobile'),
prop: 'mobile' prop: 'mobile'
}, },
{ {
title: this.$t('system.email'), title: this.$t('system.global.email'),
prop: 'email' prop: 'email'
}, },
{ {
@ -100,7 +100,7 @@ export default {
// //
handleUserDelete(index, row) { handleUserDelete(index, row) {
this.$confirm(this.$t('system.delTypeIsContinue'), this.$t('global.tips'), { this.$confirm(this.$t('system.wellDelType'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'

View File

@ -75,7 +75,7 @@ export default {
prop: 'userName' prop: 'userName'
}, },
{ {
title: this.$t('system.mobile'), title: this.$t('global.mobile'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
@ -115,7 +115,7 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('system.delExamResultIsContinue'), this.$t('global.tips'), { this.$confirm(this.$t('system.wellDelExamResult'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'

View File

@ -53,7 +53,7 @@ export default {
prop: 'userName' prop: 'userName'
}, },
{ {
title: this.$t('system.mobile'), title: this.$t('global.mobile'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
@ -135,7 +135,7 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('system.delUserSimulationIsContinue'), this.$t('global.tips'), { this.$confirm(this.$t('system.wellDelUserSimulation'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'

View File

@ -48,7 +48,7 @@ export default {
prop: 'userName' prop: 'userName'
}, },
{ {
title: this.$t('system.mobile'), title: this.$t('global.mobile'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
@ -121,7 +121,7 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('system.delExamResultIsContinue'), this.$t('global.tips'), { this.$confirm(this.$t('system.wellDelExamResult'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'

View File

@ -62,12 +62,8 @@
@click="hover('endSectionCode')" @click="hover('endSectionCode')"
>{{ $t('map.activate') }}</el-button> >{{ $t('map.activate') }}</el-button>
</el-form-item> </el-form-item>
<el-form-item :label="$t('map.destinationCode')" prop="remarks"> <el-form-item :label="$t('map.destinationCode')" prop="destinationCode">
<el-input v-model="addModel.destinationCode" style="width: 178px" /> <el-input v-model="addModel.destinationCode" />
<el-button
:type=" field === 'routingDestinationCode' ? 'danger' : 'primary'"
@click="hover('routingDestinationCode')"
>{{ $t('map.activate') }}</el-button>
</el-form-item> </el-form-item>
<el-form-item :label="$t('map.routingDirection')" prop="directionCode"> <el-form-item :label="$t('map.routingDirection')" prop="directionCode">
<el-select v-model="addModel.directionCode" clearable :filterable="true" :placeholder="$t('map.pleaseSelect')"> <el-select v-model="addModel.directionCode" clearable :filterable="true" :placeholder="$t('map.pleaseSelect')">
@ -299,12 +295,11 @@ export default {
this.addModel.startSectionCode = selected.code; this.addModel.startSectionCode = selected.code;
} else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() === 'endSectionCode'.toUpperCase()) { } else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() === 'endSectionCode'.toUpperCase()) {
this.addModel.endSectionCode = selected.code; this.addModel.endSectionCode = selected.code;
this.addModel.destinationCode = selected.destinationCode || '';
} else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() == 'routingSection'.toUpperCase()) { } else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() == 'routingSection'.toUpperCase()) {
this.sectionCode = selected.code; this.sectionCode = selected.code;
} else if (selected._type.toUpperCase() === 'Station'.toUpperCase() && this.field.toUpperCase() == 'routingStation'.toUpperCase()) { } else if (selected._type.toUpperCase() === 'Station'.toUpperCase() && this.field.toUpperCase() == 'routingStation'.toUpperCase()) {
this.stationCode = selected.code; this.stationCode = selected.code;
} else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() == 'routingDestinationCode'.toUpperCase()) {
this.addModel.destinationCode = selected.destinationCode || '';
} }
} }
}, },

View File

@ -98,7 +98,7 @@
</div> </div>
</el-card> </el-card>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" :disabled="isSpeed" @click="back"><span>{{$t('global.previousStep')}}</span></el-button> <el-button type="primary" :disabled="isSpeed" @click="back"><span>{{$t('global.lastStep')}}</span></el-button>
<el-button type="primary" :loading="loading" @click="next"> <el-button type="primary" :loading="loading" @click="next">
<span v-if="isSpeed && disabled">{{$t('global.skip')}}</span> <span v-if="isSpeed && disabled">{{$t('global.skip')}}</span>
<span v-if="isSpeed && !disabled">{{$t('global.create')}}</span> <span v-if="isSpeed && !disabled">{{$t('global.create')}}</span>

View File

@ -8,8 +8,8 @@
</el-radio-group> </el-radio-group>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button> <el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
<el-button type="primary" @click="handleSure"> </el-button> <el-button type="primary" @click="handleSure">{{ $t('global.confirm') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>

View File

@ -2,9 +2,9 @@
<el-dialog :title="title" :visible.sync="show" width="800px" :before-close="doClose" center> <el-dialog :title="title" :visible.sync="show" width="800px" :before-close="doClose" center>
<data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" /> <data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" />
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" :disabled="disabled" @click="draftRule">{{ isAdd? '添加': '修改' }} <el-button type="primary" :disabled="disabled" @click="draftRule">{{ isAdd? $t('global.add'): $t('global.edit') }}
</el-button> </el-button>
<el-button @click="doClose"> </el-button> <el-button @click="doClose">{{ $t('global.cancel') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>

View File

@ -51,7 +51,7 @@
<el-button-group> <el-button-group>
<el-button v-if="!urlInfo.url" type="primary" @click="packForm">打包</el-button> <el-button v-if="!urlInfo.url" type="primary" @click="packForm">打包</el-button>
<el-button v-if="urlInfo.url" type="primary" @click="qrcodeShow">获取二维码</el-button> <el-button v-if="urlInfo.url" type="primary" @click="qrcodeShow">获取二维码</el-button>
<el-button type="primary" @click="turnback">返回</el-button> <el-button type="primary" @click="turnback">{{ $t('global.back') }}</el-button>
</el-button-group> </el-button-group>
</div> </div>
<edit-rule <edit-rule

View File

@ -27,19 +27,19 @@ export default {
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '120px', labelWidth: '140px',
reset: true, reset: true,
queryObject: { queryObject: {
'type': { 'type': {
type: 'select', type: 'select',
label: '权限类型', label: this.$t('permission.permissionType'),
config: { config: {
data: [] data: []
} }
}, },
'status': { 'status': {
type: 'select', type: 'select',
label: '权限状态', label: this.$t('permission.permissionStatus'),
value: '1', value: '1',
config: { config: {
data: [] data: []
@ -47,7 +47,7 @@ export default {
}, },
'canDistribute': { 'canDistribute': {
type: 'select', type: 'select',
label: '公用/专用', label: this.$t('permission.permissionUseType'),
config: { config: {
data: [] data: []
} }
@ -60,26 +60,26 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '权限类型', title: this.$t('permission.permissionType'),
prop: 'type', prop: 'type',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.type, this.PermissionTypeList, ['value', 'label']); }, columnValue: (row) => { return this.$convertField(row.type, this.PermissionTypeList, ['value', 'label']); },
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
title: '地图名称', title: this.$t('permission.mapName'),
prop: 'mapName' prop: 'mapName'
}, },
{ {
title: '地图产品名称', title: this.$t('permission.mapProductName'),
prop: 'mapProductName' prop: 'mapProductName'
}, },
{ {
title: '课程名称', title: this.$t('permission.lessonName'),
prop: 'lessonName' prop: 'lessonName'
}, },
{ {
title: '公用/专用', title: this.$t('permission.permissionUseType'),
prop: 'canDistribute', prop: 'canDistribute',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$ConstSelect.translate(row.canDistribute, 'PermissionUseList'); }, columnValue: (row) => { return this.$ConstSelect.translate(row.canDistribute, 'PermissionUseList'); },
@ -91,7 +91,7 @@ export default {
} }
}, },
{ {
title: '是否永久', title: this.$t('permission.isForever'),
prop: 'forever', prop: 'forever',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$ConstSelect.translate(row.forever, 'Whether'); }, columnValue: (row) => { return this.$ConstSelect.translate(row.forever, 'Whether'); },
@ -103,33 +103,33 @@ export default {
} }
}, },
{ {
title: '权限总数', title: this.$t('permission.permissionTotal'),
prop: 'amount' prop: 'amount'
}, },
{ {
title: '剩余权限数量', title: this.$t('permission.permissionRemains'),
prop: 'remains' prop: 'remains'
}, },
{ {
title: '开始时间', title: this.$t('permission.startTime'),
prop: 'startTime', prop: 'startTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
title: '结束时间', title: this.$t('permission.endTime'),
prop: 'endTime', prop: 'endTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
title: '权限归属人', title: this.$t('permission.belonger'),
prop: 'ownerName', prop: 'ownerName',
isShow: () => { return this.$store.state.user.roles.indexOf(superAdmin) != -1; } isShow: () => { return this.$store.state.user.roles.indexOf(superAdmin) != -1; }
}, },
{ {
title: '权限状态', title: this.$t('permission.permissionStatus'),
prop: 'status', prop: 'status',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.status, this.EffectiveTypeList, ['value', 'label']); }, columnValue: (row) => { return this.$convertField(row.status, this.EffectiveTypeList, ['value', 'label']); },
@ -142,12 +142,12 @@ export default {
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '200', width: '200',
hide: () => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; }, hide: () => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; },
buttons: [ buttons: [
{ {
name: '设置归属人', name: this.$t('permission.setBelonger'),
handleClick: this.handleRoleVest, handleClick: this.handleRoleVest,
type: '' type: ''
} }
@ -155,7 +155,7 @@ export default {
} }
], ],
actions: [ actions: [
{ text: '打包权限', btnCode: 'employee_insert', handler: this.handlePermissionPack } { text: this.$t('permission.permissionPack'), btnCode: 'employee_insert', handler: this.handlePermissionPack }
] ]
} }
}; };

View File

@ -1,107 +1,111 @@
<template> <template>
<el-dialog title="用户列表" :visible.sync="show" top="20px" width="90%" :before-doClose="doClose" <el-dialog
:close-on-click-modal="false"> :title="$t('permission.userList')"
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList"> :visible.sync="show"
</QueryListPage> top="20px"
</el-dialog> width="90%"
:before-do-close="doClose"
:close-on-click-modal="false"
>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</el-dialog>
</template> </template>
<script> <script>
import { getUserList } from '@/api/management/user'; import { getUserList } from '@/api/management/user';
import { putPermissionOwner } from '@/api/management/author'; import { putPermissionOwner } from '@/api/management/author';
import localStore from 'storejs';
export default { export default {
name: 'selectRole', name: 'SelectRole',
data() { data() {
return { return {
show: false, show: false,
roleId: '', roleId: '',
pagerConfig: { pagerConfig: {
pageSize: 'pageSize', pageSize: 'pageSize',
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '80px', labelWidth: '80px',
reset: true, reset: true,
queryObject: { queryObject: {
name: { name: {
type: 'text', type: 'text',
label: '名称' label: this.$t('global.name')
} }
} }
}, },
queryList: { queryList: {
query: getUserList, query: getUserList,
selectCheckShow: false, selectCheckShow: false,
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '名称', title: this.$t('global.name'),
prop: 'name' prop: 'name'
}, },
{ {
title: '昵称', title: this.$t('global.nickName'),
prop: 'nickname' prop: 'nickname'
}, },
{ {
title: '电话', title: this.$t('global.mobile'),
prop: 'mobile' prop: 'mobile'
}, },
{ {
title: '邮箱', title: this.$t('global.email'),
prop: 'email' prop: 'email'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
buttons: [ buttons: [
{ {
name: '选择', name: this.$t('global.select'),
handleClick: this.selectRole, handleClick: this.selectRole,
showControl: (row) => { showControl: (row) => {
return row.id != this.$store.state.user.id; return row.id != this.$store.state.user.id;
} }
}, }
] ]
} }
] ]
}, },
currentModel: {} currentModel: {}
} };
}, },
created() { created() {
}, },
methods: { methods: {
doShow(roleId) { doShow(roleId) {
this.roleId = roleId; this.roleId = roleId;
this.show = true; this.show = true;
}, },
doClose() { doClose() {
this.show = false; this.show = false;
}, },
selectRole(index, row) { selectRole(index, row) {
this.$confirm(`是否确定设置"${row.name}"为权限所属人`, '提示', { this.$confirm(this.$t('permission.isSureSetBelonger').replace('{name}', row.name), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
putPermissionOwner({ id: this.roleId, owner: row }).then(resp => { putPermissionOwner({ id: this.roleId, owner: row }).then(resp => {
this.$message.success('设置成功!'); this.$message.success(this.$t('permission.setSuccess'));
this.show = false; this.show = false;
this.$emit('reloadTable'); this.$emit('reloadTable');
}).catch(error => { }).catch(() => {
this.$messageBox('设置失败!'); this.$messageBox(this.$t('error.setFailed'));
}) });
}).catch(() => { }); }).catch(() => { });
}, },
reloadTable() { reloadTable() {
this.queryList.reload() this.queryList.reload();
} }
} }
} };
</script> </script>

View File

@ -47,8 +47,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="handleCancel"> </el-button> <el-button @click="handleCancel">{{ $t('global.cancel') }}</el-button>
<el-button type="primary" @click="handleOk"> </el-button> <el-button type="primary" @click="handleOk">{{ $t('global.confirm') }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>

View File

@ -67,9 +67,9 @@
<el-input v-model="form.desc" type="textarea" placeholder="请填写试题描述" :disabled="isEdit" /> <el-input v-model="form.desc" type="textarea" placeholder="请填写试题描述" :disabled="isEdit" />
</el-form-item> </el-form-item>
<!-- <el-form-item> <!-- <el-form-item>
<el-button type="primary" @click="updateForm" v-if="isEdit">修改</el-button> <el-button type="primary" @click="updateForm" v-if="isEdit">{{ $t('error.edit') }}</el-button>
<el-button type="primary" @click="submitForm" v-else>下一步</el-button> <el-button type="primary" @click="submitForm" v-else>{{ $t('error.nextStep') }}</el-button>
</el-form-item> --> </el-form-item> -->
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>
</div> </div>

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card> <el-card>
<div v-if="lessonName" slot="header" style="text-align: center;"> <div v-if="lessonName" slot="header" style="text-align: center;">
<b>课程名称 {{ lessonName }}</b> <b>{{ $t('publish.lessonName') }} {{ lessonName }}</b>
</div> </div>
<!-- <turnback-bar :title="turnbackBarTitle"></turnback-bar> --> <!-- <turnback-bar :title="turnbackBarTitle"></turnback-bar> -->
<div class="exam-box" :style="{ height: height +'px' }"> <div class="exam-box" :style="{ height: height +'px' }">
@ -20,11 +20,11 @@
</el-card> </el-card>
<div class="draft"> <div class="draft">
<el-button-group> <el-button-group>
<el-button v-if="isPrevStep" type="primary" @click="prevStep">上一步</el-button> <el-button v-if="isPrevStep" type="primary" @click="prevStep">{{ this.$t('global.lastStep') }}</el-button>
<el-button v-if="isNextStep" type="primary" @click="nextStep">下一步</el-button> <el-button v-if="isNextStep" type="primary" @click="nextStep">{{ this.$t('global.lastStep') }}</el-button>
<el-button v-if="isUpdate" type="warning" @click="update">修改</el-button> <el-button v-if="isUpdate" type="warning" @click="update">{{ $t('global.update') }}</el-button>
<el-button v-if="isCreate" type="primary" @click="create">创建</el-button> <el-button v-if="isCreate" type="primary" @click="create">{{ $t('global.create') }}</el-button>
<el-button type="primary" @click="turnback">返回</el-button> <el-button type="primary" @click="turnback">{{ $t('global.back') }}</el-button>
</el-button-group> </el-button-group>
</div> </div>
</el-scrollbar> </el-scrollbar>

View File

@ -7,17 +7,17 @@
<el-table-column prop="num" label="题数" width="100" /> <el-table-column prop="num" label="题数" width="100" />
<el-table-column prop="point" label="每题分值" width="100" /> <el-table-column prop="point" label="每题分值" width="100" />
<el-table-column prop="chapterIdLong" label="总分" width="100" /> <el-table-column prop="chapterIdLong" label="总分" width="100" />
<el-table-column label="操作" width="100"> <el-table-column :label="$t('global.operate')" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="handleForm(scope)">修改</el-button> <el-button type="text" size="small" @click="handleForm(scope)">{{ $t('global.edit') }}</el-button>
<el-button type="text" size="small" @click="deleteForm(scope)">删除</el-button> <el-button type="text" size="small" @click="deleteForm(scope)">{{ $t('global.delete') }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- <div class="btn-footer"> <!-- <div class="btn-footer">
<el-button @click="regulation">上一步</el-button> <el-button @click="regulation">上一步</el-button>
<el-button type="primary" @click="creatOk">新增</el-button> <el-button type="primary" @click="creatOk">新增</el-button>
</div> --> </div> -->
<edit-rule <edit-rule
ref="addRule" ref="addRule"
:course-id="courseId" :course-id="courseId"

View File

@ -1,7 +1,7 @@
<template> <template>
<el-card> <el-card>
<div v-if="lessonName" slot="header" style="text-align: center;"> <div v-if="lessonName" slot="header" style="text-align: center;">
<b>课程名称 {{ lessonName }}</b> <b>{{ $t('publish.lessonName') }} {{ lessonName }}</b>
</div> </div>
<div :style="{ height: height +'px' }"> <div :style="{ height: height +'px' }">
<el-scrollbar wrap-class="scrollbar-wrapper" style=""> <el-scrollbar wrap-class="scrollbar-wrapper" style="">
@ -44,22 +44,22 @@ export default {
lessonName: '', lessonName: '',
height: '', height: '',
queryForm: { queryForm: {
labelWidth: '120px', labelWidth: '160px',
queryObject: { queryObject: {
'lessonId': { 'lessonId': {
type: this.$route.query.lessonId ? '' : 'select', type: this.$route.query.lessonId ? '' : 'select',
label: '课程', label: this.$t('publish.lessonName'),
config: { config: {
data: [] data: []
} }
}, },
'name': { 'name': {
type: 'text', type: 'text',
label: '试卷名称' label: this.$t('publish.paperName')
}, },
'creatorName': { 'creatorName': {
type: 'text', type: 'text',
label: '创建人' label: this.$t('publish.creator')
} }
}, },
reset: !this.$route.query.lessonId reset: !this.$route.query.lessonId
@ -70,7 +70,7 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '课程名称', title: this.$t('publish.lessonName'),
prop: 'lessonId', prop: 'lessonId',
type: 'tag', type: 'tag',
show: !this.$route.query.lessonId, show: !this.$route.query.lessonId,
@ -78,15 +78,15 @@ export default {
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
title: '试卷名称', title: this.$t('publish.paperName'),
prop: 'name' prop: 'name'
}, },
{ {
title: '创建人', title: this.$t('publish.creator'),
prop: 'creatorName' prop: 'creatorName'
}, },
{ {
title: '是否试用', title: this.$t('global.isTry'),
prop: 'trial', prop: 'trial',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$ConstSelect.translate(row.trial, 'Whether'); }, columnValue: (row) => { return this.$ConstSelect.translate(row.trial, 'Whether'); },
@ -98,28 +98,28 @@ export default {
} }
}, },
{ {
title: '时长', title: this.$t('global.duration'),
prop: 'duration', prop: 'duration',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.durationField(row.duration); }, columnValue: (row) => { return this.durationField(row.duration); },
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
title: '考试时间', title: this.$t('publish.examTime'),
prop: 'startTime', prop: 'startTime',
type: 'formatter', type: 'formatter',
format: 'yyyy-MM-dd hh:ss' format: 'yyyy-MM-dd hh:ss'
}, },
{ {
title: '满分', title: this.$t('publish.fullMark'),
prop: 'fullPoint' prop: 'fullPoint'
}, },
{ {
title: '及格分', title: this.$t('publish.passScore'),
prop: 'passingPoint' prop: 'passingPoint'
}, },
{ {
title: '状态', title: this.$t('global.status'),
prop: 'status', prop: 'status',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.status, this.EffectiveTypeList, ['value', 'label']); }, columnValue: (row) => { return this.$convertField(row.status, this.EffectiveTypeList, ['value', 'label']); },
@ -132,23 +132,23 @@ export default {
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '300', width: '300',
buttons: [ buttons: [
{ {
name: '快速创建', name: this.$t('global.fastCreate'),
type: 'primary', type: 'primary',
handleClick: this.handleDistribute, handleClick: this.handleDistribute,
showControl: (row) => { return row.bizType !== '02'; } showControl: (row) => { return row.bizType !== '02'; }
}, },
{ {
name: '修改', name: this.$t('global.edit'),
type: 'primary', type: 'primary',
showControl: (row) => { return row.creatorId == this.userId; }, showControl: (row) => { return row.creatorId == this.userId; },
handleClick: this.handleUpdate handleClick: this.handleUpdate
}, },
{ {
name: '下架', name: this.$t('global.soldOut'),
type: 'warning', type: 'warning',
handleClick: this.handleEfficacy, handleClick: this.handleEfficacy,
showControl: (row) => { showControl: (row) => {
@ -156,7 +156,7 @@ export default {
} }
}, },
{ {
name: '上架', name: this.$t('global.putaway'),
type: 'primary', type: 'primary',
handleClick: this.handleEffective, handleClick: this.handleEffective,
showControl: (row) => { showControl: (row) => {
@ -164,7 +164,7 @@ export default {
} }
}, },
{ {
name: '删除', name: this.$t('global.delete'),
type: 'danger', type: 'danger',
handleClick: this.deleteList, handleClick: this.deleteList,
showControl: (row) => { return row.creatorId == this.userId; } showControl: (row) => { return row.creatorId == this.userId; }
@ -173,7 +173,7 @@ export default {
} }
], ],
actions: [ actions: [
{ text: '新增', btnCode: 'employee_insert', handler: this.handleNormalAdd } { text: this.$t('global.add'), btnCode: 'employee_insert', handler: this.handleNormalAdd }
] ]
} }
}; };
@ -238,57 +238,57 @@ export default {
}, },
// //
deleteList(index, data) { deleteList(index, data) {
this.$confirm('此操作将删除该试卷, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellDelPaper'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteExam(data).then(res => { deleteExam(data).then(res => {
this.queryList.reload(); this.queryList.reload();
this.$message({ this.$message({
type: 'success', type: 'success',
message: '删除成功!' message: this.$t('publish.setSuccess')
}); });
}).catch(res => { }).catch(res => {
if (res.code == '500009') { if (res.code == '500009') {
this.$message({ type: 'warning', message: '该试卷已被使用,不能删除' }); this.$message({ type: 'warning', message: this.$t('error.paperHasUseNotDel') });
} else { } else {
this.$message({ type: 'error', message: '删除异常,请联系管理员' }); this.$message({ type: 'error', message: this.$t('error.deleteException') });
} }
}); });
}).catch(() => { }); }).catch(() => { });
}, },
handleEfficacy(index, data) { handleEfficacy(index, data) {
this.$confirm('此操作将此试卷下架?', '提示', { this.$confirm(this.$t('publish.wellSoldOutPaper'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
setExamEfficacy(data).then(res => { setExamEfficacy(data).then(res => {
this.queryList.reload(); this.queryList.reload();
this.$message({ this.$message({
type: 'success', type: 'success',
message: '设置成功!' message: this.$t('publish.setSuccess')
}); });
}).catch(res => { }).catch(res => {
this.$message({ type: 'warning', message: '设置失败,' + res.message }); this.$message({ type: 'warning', message: `${this.$t('error.setFailed')}${res.message}` });
}); });
}).catch(() => { }); }).catch(() => { });
}, },
handleEffective(index, data) { handleEffective(index, data) {
this.$confirm('此操作将此试卷上架?', '提示', { this.$confirm(this.$t('publish.wellPutawayPaper'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
setExamEffectivey(data).then(res => { setExamEffectivey(data).then(res => {
this.queryList.reload(); this.queryList.reload();
this.$message({ this.$message({
type: 'success', type: 'success',
message: '设置成功!' message: this.$t('publish.setSuccess')
}); });
}).catch(res => { }).catch(res => {
this.$message({ type: 'warning', message: '设置失败,' + res.message }); this.$message({ type: 'warning', message: `${this.$t('error.setFailed')}${res.message}` });
}); });
}).catch(() => { }); }).catch(() => { });
} }

View File

@ -20,16 +20,16 @@ export default {
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '80px', labelWidth: '140px',
reset: true, reset: true,
queryObject: { queryObject: {
name: { name: {
type: 'text', type: 'text',
label: '产品名称' label: this.$t('publish.productName')
}, },
code: { code: {
type: 'text', type: 'text',
label: 'code' label: this.$t('publish.productCode')
} }
} }
}, },
@ -39,49 +39,45 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '产品名称', title: this.$t('publish.productName'),
prop: 'name' prop: 'name'
}, },
{ {
title: '皮肤类型', title: this.$t('publish.skinType'),
prop: 'skinCode', prop: 'skinCode',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']); }, columnValue: (row) => { return this.$convertField(row.skinCode, this.skinCodeList, ['code', 'name']); },
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
title: '产品code', title: this.$t('publish.productCode'),
prop: 'code' prop: 'code'
}, },
{ {
title: '产品类型', title: this.$t('publish.productType'),
prop: 'prdType', prop: 'prdType',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.prdType, this.prdTypeList, ['code', 'name']); }, columnValue: (row) => { return this.$convertField(row.prdType, this.prdTypeList, ['code', 'name']); },
tagType: (row) => { return 'success'; } tagType: (row) => { return 'success'; }
}, },
// {
// title: '',
// prop: 'remarks'
// },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
buttons: [ buttons: [
// { // {
// name: '', // name: this.$t('global.delete'),
// handleClick: this.handleDelete, // handleClick: this.handleDelete,
// type: 'danger' // type: 'danger'
// }, // },
{ {
name: '上架', name: this.$t('global.putaway'),
handleClick: this.handlePutaway, handleClick: this.handlePutaway,
type: '', type: '',
showControl: (row) => { return row.status != 1; } showControl: (row) => { return row.status != 1; }
}, },
{ {
name: '下架', name: this.$t('global.soldOut'),
handleClick: this.handleSoldOut, handleClick: this.handleSoldOut,
type: 'warning', type: 'warning',
showControl: (row) => { return row.status == 1; } showControl: (row) => { return row.status == 1; }
@ -111,49 +107,49 @@ export default {
}, },
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除此考试结果, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellDelType'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
delTrainingList(row.id).then(response => { delTrainingList(row.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('publish.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
}); });
}).catch(() => { }); }).catch(() => { });
}, },
handlePutaway(index, row) { handlePutaway(index, row) {
this.$confirm('此操作将上架此产品, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellPutawayProduct'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
putMapProductOnLine(row.id).then(response => { putMapProductOnLine(row.id).then(response => {
this.$message.success('操作成功'); this.$message.success(this.$t('publish.operationSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('操作失败'); this.$messageBox(this.$t('error.operationFailure'));
}); });
}).catch(() => { }); }).catch(() => { });
}, },
handleSoldOut(index, row) { handleSoldOut(index, row) {
this.$confirm('此操作将下架此产品, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellSoldOutProduct'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
putMapProductOffLine(row.id).then(response => { putMapProductOffLine(row.id).then(response => {
this.$message.success('操作成功'); this.$message.success(this.$t('publish.operationSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('操作失败'); this.$messageBox(this.$t('error.operationFailure'));
}); });
}).catch(() => { }); }).catch(() => { });
}, },

View File

@ -25,11 +25,11 @@ export default {
queryObject: { queryObject: {
name: { name: {
type: 'text', type: 'text',
label: '名称' label: this.$t('global.name')
}, },
cityCode: { cityCode: {
type: 'select', type: 'select',
label: '所属城市', label: this.$t('publish.city'),
config: { config: {
data: [] data: []
} }
@ -43,39 +43,39 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '名称', title: this.$t('global.name'),
prop: 'name' prop: 'name'
}, },
{ {
title: '所属城市', title: this.$t('publish.city'),
prop: 'cityCode', prop: 'cityCode',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.cityCode, this.cityList, ['code', 'name']); }, columnValue: (row) => { return this.$convertField(row.cityCode, this.cityList, ['code', 'name']); },
tagType: (row) => { return 'success'; } tagType: (row) => { return 'success'; }
}, },
{ {
title: '课程简介', title: this.$t('publish.lessonIntroduction'),
prop: 'remarks' prop: 'remarks'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
buttons: [ buttons: [
{ {
name: '上架', name: this.$t('global.putaway'),
handleClick: this.handlePutaway, handleClick: this.handlePutaway,
type: '', type: '',
showControl: (row) => { return row.status != 1; } showControl: (row) => { return row.status != 1; }
}, },
{ {
name: '下架', name: this.$t('global.soldOut'),
handleClick: this.handleSoldOut, handleClick: this.handleSoldOut,
type: 'warning', type: 'warning',
showControl: (row) => { return row.status == 1; } showControl: (row) => { return row.status == 1; }
}, },
{ {
name: '删除', name: this.$t('global.delete'),
handleClick: this.handleDelete, handleClick: this.handleDelete,
type: 'danger', type: 'danger',
showControl: () => { return this.isShow != -1; } showControl: () => { return this.isShow != -1; }
@ -105,7 +105,7 @@ export default {
this.queryForm.queryObject.cityCode.config.data.push({ value: elem.code, label: elem.name }); this.queryForm.queryObject.cityCode.config.data.push({ value: elem.code, label: elem.name });
}); });
}).catch(() => { }).catch(() => {
this.$messageBox('加载城市列表失败'); this.$messageBox(this.$t('error.loadingCityListFailed'));
}); });
this.skinCodeList = []; this.skinCodeList = [];
@ -119,50 +119,49 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除该类型, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellDelType'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
delPublishLesson(row.id).then(response => { delPublishLesson(row.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('publish.deleteSuccess'));
this.reloadTable(); this.reloadTable();
localStore.remove('mapId'); localStore.remove('mapId');
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
}); });
}).catch(() => { }); }).catch(() => { });
}, },
handlePutaway(index, row) { handlePutaway(index, row) {
this.$confirm('此操作将上架此实训, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellPutawayTraining'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
putLessonOnLine(row.id).then(response => { putLessonOnLine(row.id).then(response => {
this.$message.success('操作成功'); this.$message.success(this.$t('publish.operationSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('操作失败'); this.$messageBox(this.$t('error.operationFailure'));
}); });
}).catch(() => { }); }).catch(() => { });
}, },
handleSoldOut(index, row) { handleSoldOut(index, row) {
this.$confirm('此操作将下架此实训, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellSoldOutTraining'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
putLessonOffLine(row.id).then(response => { putLessonOffLine(row.id).then(response => {
this.$message.success('操作成功'); this.$message.success(this.$t('publish.operationSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('操作失败'); this.$messageBox(this.$t('error.operationFailure'));
}); });
}).catch(() => { }); }).catch(() => { });
}, },

View File

@ -57,7 +57,7 @@ export default {
rules() { rules() {
const baseRules = { const baseRules = {
name: [ name: [
{ required: true, message: '请输入地图的新名称', trigger: 'blur' } { required: true, message: this.$t('rules.pleaseInputMapName'), trigger: 'blur' }
] ]
}; };
@ -94,9 +94,9 @@ export default {
updatePublishMapName(this.formModel).then(response => { updatePublishMapName(this.formModel).then(response => {
this.display = 2; this.display = 2;
this.turnback(); this.turnback();
this.$message.success('更新成功'); this.$message.success(this.$t('publish.updateSuccess'));
}).catch(() => { }).catch(() => {
this.$messageBox('更新失败'); this.$messageBox(this.$t('error.updateFailed'));
}); });
}); });
}, },

View File

@ -27,7 +27,7 @@ export default {
queryObject: { queryObject: {
name: { name: {
type: 'text', type: 'text',
label: this.$t('publish.name') label: this.$t('global.name')
}, },
cityCode: { cityCode: {
type: 'select', type: 'select',
@ -45,7 +45,7 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: this.$t('publish.name'), title: this.$t('global.name'),
prop: 'name' prop: 'name'
}, },
{ {
@ -142,7 +142,7 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除该类型, 是否继续?', this.$t('global.tips'), { this.$confirm(this.$t('publish.wellDelType'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
@ -163,7 +163,7 @@ export default {
}, },
handlePutaway(index, row) { handlePutaway(index, row) {
this.$confirm('此操作将上架此地图, 是否继续?', this.$t('global.tips'), { this.$confirm(this.$t('publish.wellPutawayMap'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
@ -179,7 +179,7 @@ export default {
}, },
handleSoldOut(index, row) { handleSoldOut(index, row) {
this.$confirm('此操作将下架此地图, 是否继续?', this.$t('global.tips'), { this.$confirm(this.$t('publish.wellSoldOutMap'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'

View File

@ -10,8 +10,8 @@
> >
<QueryListPage ref="pageRules" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" /> <QueryListPage ref="pageRules" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<el-row type="flex" justify="center" class="button-group"> <el-row type="flex" justify="center" class="button-group">
<el-button type="primary" :loading="loading" @click="handleConfirm"> </el-button> <el-button type="primary" :loading="loading" @click="handleConfirm">{{ $t('global.select') }}</el-button>
<el-button @click="dialogShow = false"> </el-button> <el-button @click="dialogShow = false">{{ $t('global.cancel') }}</el-button>
</el-row> </el-row>
</el-dialog> </el-dialog>
</template> </template>
@ -38,7 +38,7 @@ export default {
queryObject: { queryObject: {
name: { name: {
type: 'text', type: 'text',
label: '运行图名称' label: this.$t('publish.runPlanName')
} }
} }
}, },
@ -48,11 +48,11 @@ export default {
radioShow: true, radioShow: true,
columns: [ columns: [
{ {
title: '运行图名称', title: this.$t('publish.runPlanName'),
prop: 'name' prop: 'name'
}, },
{ {
title: '皮肤类型', title: this.$t('publish.skinType'),
prop: 'skinCode', prop: 'skinCode',
type: 'tag', type: 'tag',
columnValue: (row) => { columnValue: (row) => {
@ -68,7 +68,7 @@ export default {
}, },
computed: { computed: {
title() { title() {
return '选择模板运行图'; return this.$t('publish.selectTemplateRunPlan');
} }
}, },
methods: { methods: {
@ -98,7 +98,7 @@ export default {
if (choose) { if (choose) {
this.$emit('chooseConfirm', choose); this.$emit('chooseConfirm', choose);
} else { } else {
this.$messageBox(`请选择模板运行图`); this.$messageBox(this.$t('publish.pleaseSelectTemplate'));
} }
} }
}, },

View File

@ -7,18 +7,18 @@
<el-card class="forms"> <el-card class="forms">
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{height:height -120 + 'px'}" style="padding-top: 40px"> <el-scrollbar wrap-class="scrollbar-wrapper" :style="{height:height -120 + 'px'}" style="padding-top: 40px">
<el-form ref="form" :model="model" :rules="rules" label-width="140px" size="small"> <el-form ref="form" :model="model" :rules="rules" label-width="140px" size="small">
<el-form-item label="选择地图:" prop="mapId"> <el-form-item :label="`${$t('publish.selectMap')}:`" prop="mapId">
<el-select v-model="model.mapId" filterable> <el-select v-model="model.mapId" filterable>
<el-option v-for="item in mapList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in mapList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="运行图名称:" prop="planId"> <el-form-item :label="`${$t('publish.runPlanName')}:`" prop="planId">
<el-row> <el-row>
<el-col :span="19"> <el-col :span="19">
<el-input v-model="model.planName" :readonly="true" /> <el-input v-model="model.planName" :readonly="true" />
</el-col> </el-col>
<el-col :span="4" :offset="1"> <el-col :span="4" :offset="1">
<el-button @click="handleChoose">选择 </el-button> <el-button @click="handleChoose">{{ $t('global.select') }} </el-button>
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item>
@ -27,8 +27,8 @@
</el-card> </el-card>
<div class="draft"> <div class="draft">
<el-button-group> <el-button-group>
<el-button v-if="isAdd" type="primary" @click="create">创建</el-button> <el-button v-if="isAdd" type="primary" @click="create">{{ $t('global.create') }}</el-button>
<el-button type="primary" @click="turnback">返回</el-button> <el-button type="primary" @click="turnback">{{ $t('global.back') }}</el-button>
</el-button-group> </el-button-group>
</div> </div>
<choose-template-plan ref="choose" @chooseConfirm="chooseConfirm" /> <choose-template-plan ref="choose" @chooseConfirm="chooseConfirm" />
@ -64,7 +64,7 @@ export default {
}, },
computed: { computed: {
title() { title() {
return '创建通用运行图'; return this.$t('publish.createCommonRunPlan');
}, },
isAdd() { isAdd() {
return this.$route.params.mode.toUpperCase() == 'add'.toUpperCase(); return this.$route.params.mode.toUpperCase() == 'add'.toUpperCase();
@ -72,10 +72,10 @@ export default {
rules() { rules() {
const rules = { const rules = {
mapId: [ mapId: [
{ required: true, message: '请选择地图', trigger: 'blur' } { required: true, message: this.$t('rules.mapInput'), trigger: 'blur' }
], ],
planId: [ planId: [
{ required: true, message: '请选择模板运行图', trigger: 'change' } { required: true, message: this.$t('rules.inputTemplateRunPlan'), trigger: 'change' }
] ]
}; };
@ -118,10 +118,10 @@ export default {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
if (valid) { if (valid) {
createRunPlanCommon(this.buildModel()).then(response => { createRunPlanCommon(this.buildModel()).then(response => {
this.$message.success('创建通用运行图成功'); this.$message.success(this.$t('publish.createCommonSuccess'));
this.$router.go(-1); this.$router.go(-1);
}).catch(() => { }).catch(() => {
this.$messageBox('创建通用运行图失败'); this.$messageBox(this.$t('error.createCommonRunPlanFailed'));
}); });
} }
}); });

View File

@ -24,11 +24,11 @@ export default {
queryObject: { queryObject: {
mapName: { mapName: {
type: 'text', type: 'text',
label: '地图名称' label: this.$t('publish.mapName')
}, },
runPlanName: { runPlanName: {
type: 'text', type: 'text',
label: '运行图名称' label: this.$t('publish.runPlanName')
} }
} }
}, },
@ -38,26 +38,26 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '地图名称', title: this.$t('publish.mapName'),
prop: 'mapName' prop: 'mapName'
}, },
{ {
title: '运行图名称', title: this.$t('publish.runPlanName'),
prop: 'runPlanName' prop: 'runPlanName'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '350', width: '350',
hide: () => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; }, hide: () => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; },
buttons: [ buttons: [
// { // {
// name: '', // name: this.$t('global.delete'),
// handleClick: this.handleDelete, // handleClick: this.handleDelete,
// type: 'danger', // type: 'danger',
// }, // },
{ {
name: '预览', name: this.$t('global.preview'),
handleClick: this.handleView, handleClick: this.handleView,
type: '' type: ''
} }
@ -65,7 +65,7 @@ export default {
} }
], ],
actions: [ actions: [
{ text: '创建', btnCode: 'employee_insert', handler: this.handleCreateCommonPlan } { text: this.$t('global.add'), btnCode: 'employee_insert', handler: this.handleCreateCommonPlan }
] ]
}, },
@ -82,9 +82,9 @@ export default {
}, },
// //
// handleDelete(index, row) { // handleDelete(index, row) {
// this.$confirm(', ?', '', { // this.$confirm(', ?', this.$t('global.tips'), {
// confirmButtonText: '', // confirmButtonText: this.$t('global.confirm'),
// cancelButtonText: '', // cancelButtonText: this.$t('global.cancel'),
// type: 'warning' // type: 'warning'
// }).then(() => { // }).then(() => {

View File

@ -25,11 +25,11 @@ export default {
queryObject: { queryObject: {
name: { name: {
type: 'text', type: 'text',
label: '运行图名称' label: this.$t('publish.runPlanName')
}, },
skinCode: { skinCode: {
type: 'select', type: 'select',
label: '皮肤类型', label: this.$t('publish.skinType'),
config: { config: {
data: [] data: []
} }
@ -42,11 +42,11 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '运行图名称', title: this.$t('publish.runPlanName'),
prop: 'name' prop: 'name'
}, },
{ {
title: '皮肤类型', title: this.$t('publish.skinType'),
prop: 'skinCode', prop: 'skinCode',
type: 'tag', type: 'tag',
columnValue: (row) => { columnValue: (row) => {
@ -55,26 +55,26 @@ export default {
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
title: '每日运行时间', title: this.$t('publish.runEveryDayTime'),
prop: 'runDate' prop: 'runDate'
}, },
{ {
title: '用户Id', title: this.$t('publish.userId'),
prop: 'creatorId' prop: 'creatorId'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
hide: (row) => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; }, hide: (row) => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; },
buttons: [ buttons: [
{ {
name: '删除', name: this.$t('global.delete'),
handleClick: this.handleDelete, handleClick: this.handleDelete,
type: 'danger' type: 'danger'
}, },
{ {
name: '预览', name: this.$t('global.preview'),
handleClick: this.handleView, handleClick: this.handleView,
type: '' type: ''
} }
@ -100,17 +100,17 @@ export default {
}); });
}, },
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除每日运行图, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellDelRunPlanEveryDay'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteRunPlanEveryDay(row.id).then(response => { deleteRunPlanEveryDay(row.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('publish.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
}); });
}).catch(() => { }); }).catch(() => { });
}, },

View File

@ -25,11 +25,11 @@ export default {
queryObject: { queryObject: {
name: { name: {
type: 'text', type: 'text',
label: '运行图名称' label: this.$t('publish.runPlanName')
}, },
skinCode: { skinCode: {
type: 'select', type: 'select',
label: '皮肤类型', label: this.$t('publish.skinType'),
config: { config: {
data: [] data: []
} }
@ -42,11 +42,11 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '运行图名称', title: this.$t('publish.runPlanName'),
prop: 'name' prop: 'name'
}, },
{ {
title: '皮肤类型', title: this.$t('publish.skinType'),
prop: 'skinCode', prop: 'skinCode',
type: 'tag', type: 'tag',
columnValue: (row) => { columnValue: (row) => {
@ -55,27 +55,27 @@ export default {
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
title: '创建时间', title: this.$t('publish.createTime'),
prop: 'createTime' prop: 'createTime'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '350', width: '350',
hide: () => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; }, hide: () => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; },
buttons: [ buttons: [
{ {
name: '删除', name: this.$t('global.delete'),
handleClick: this.handleDelete, handleClick: this.handleDelete,
type: 'danger' type: 'danger'
}, },
{ {
name: '生成每日运行图', name: this.$t('publish.generateRunPlan'),
handleClick: this.handleGenerateEveryDay, handleClick: this.handleGenerateEveryDay,
type: '' type: ''
}, },
{ {
name: '预览', name: this.$t('global.preview'),
handleClick: this.handleView, handleClick: this.handleView,
type: '' type: ''
} }
@ -102,37 +102,37 @@ export default {
}, },
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除此运行图模板, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellDelTemplate'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteRunPlanTemplate(row.id).then(response => { deleteRunPlanTemplate(row.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('publish.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(error => { }).catch(error => {
this.reloadTable(); this.reloadTable();
if (error.code == 500) { if (error.code == 500) {
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
} else if (error.code == 500009) { } else if (error.code == 500009) {
this.$messageBox('该模板已被加载计划使用,无法删除'); this.$messageBox(this.$t('error.templateHasBeUse'));
} }
}); });
}).catch(() => { }); }).catch(() => { });
}, },
// //
handleGenerateEveryDay(index, row) { handleGenerateEveryDay(index, row) {
this.$confirm('此操作将生成每日运行图, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellGenerateEveryRunPlan'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
generateCommonRunPlanEveryDay(row.id).then(response => { generateCommonRunPlanEveryDay(row.id).then(response => {
this.reloadTable(); this.reloadTable();
this.$message.success('生成通用每日运行图成功。'); this.$message.success(this.$t('publish.createCommonSuccess'));
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('生成通用每日运行图失败!'); this.$messageBox(this.$t('error.operationFailure'));
}); });
}).catch(() => { }); }).catch(() => { });
}, },

View File

@ -24,7 +24,7 @@ export default {
queryObject: { queryObject: {
skinCode: { skinCode: {
type: 'select', type: 'select',
label: '皮肤类型', label: this.$t('publish.skinType'),
config: { config: {
data: [] data: []
} }
@ -37,11 +37,11 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '任务名称', title: this.$t('publish.taskName'),
prop: 'name' prop: 'name'
}, },
{ {
title: '皮肤类型', title: this.$t('publish.skinType'),
prop: 'skinCode', prop: 'skinCode',
type: 'tag', type: 'tag',
columnValue: (row) => { columnValue: (row) => {
@ -50,22 +50,22 @@ export default {
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
title: '创建时间', title: this.$t('publish.createTime'),
prop: 'createTime' prop: 'createTime'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '350', width: '350',
hide: () => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; }, hide: () => { return this.$store.state.user.roles.indexOf(superAdmin) < 0; },
buttons: [ buttons: [
{ {
name: '删除', name: this.$t('global.delete'),
handleClick: this.handleDelete, handleClick: this.handleDelete,
type: 'danger' type: 'danger'
}, },
{ {
name: '查看详情', name: this.$t('publish.detail'),
handleClick: this.handleDetail, handleClick: this.handleDetail,
type: '' type: ''
} }
@ -92,20 +92,20 @@ export default {
}, },
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除此仿真脚本, 是否继续?', '提示', { this.$confirm(this.$t('publish.wellDelTemplate'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteQuest(row.id).then(response => { deleteQuest(row.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('publish.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(error => { }).catch(error => {
this.reloadTable(); this.reloadTable();
if (error.code == 500) { if (error.code == 500) {
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
} else if (error.code == 500009) { } else if (error.code == 500009) {
this.$messageBox('该模板已被加载计划使用,无法删除'); this.$messageBox(this.$t('error.templateHasBeUse'));
} }
}); });
}).catch(() => { }); }).catch(() => { });
@ -113,8 +113,7 @@ export default {
// //
handleDetail(index, row) { handleDetail(index, row) {
console.log(index, row); this.$messageBox(this.$t('global.notBeUse'));
this.$messageBox('该功能暂时未开启');
}, },
reloadTable() { reloadTable() {

View File

@ -21,11 +21,11 @@ export default {
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '80px', labelWidth: '120px',
queryObject: { queryObject: {
mapName: { mapName: {
type: 'text', type: 'text',
label: '地图名称' label: this.$t('replay.mapName')
} }
} }
}, },
@ -35,19 +35,19 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '地图名称', title: this.$t('replay.mapName'),
prop: 'mapName' prop: 'mapName'
}, },
{ {
title: '创建人ID', title: this.$t('replay.creatorId'),
prop: 'creatorId' prop: 'creatorId'
}, },
{ {
title: '创建时间', title: this.$t('replay.createTime'),
prop: 'createTime' prop: 'createTime'
}, },
{ {
title: '状态', title: this.$t('global.status'),
prop: 'status', prop: 'status',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.status, this.EffectiveTypeList, ['value', 'label']); }, columnValue: (row) => { return this.$convertField(row.status, this.EffectiveTypeList, ['value', 'label']); },
@ -60,17 +60,17 @@ export default {
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
buttons: [ buttons: [
{ {
name: '回放', name: this.$t('replay.replay'),
handleClick: this.rePlay, handleClick: this.rePlay,
type: '', type: '',
showControl: (row) => { return row.status == '1'; } showControl: (row) => { return row.status == '1'; }
}, },
{ {
name: '删除', name: this.$t('global.delete'),
handleClick: this.delete, handleClick: this.delete,
type: 'danger', type: 'danger',
showControl: (row) => { return this.role; } showControl: (row) => { return this.role; }
@ -112,17 +112,17 @@ export default {
}); });
}, },
delete(index, data) { delete(index, data) {
this.$confirm('此操作将删除该回放, 是否继续?', '提示', { this.$confirm(this.$t('replay.wellDelReplay'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
delSimulationRecord(data.id).then(response => { delSimulationRecord(data.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('replay.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailedv'));
}); });
}).catch(() => { }); }).catch(() => { });
} }

View File

@ -82,6 +82,7 @@ export default {
// debugger; // debugger;
// this.$store // this.$store
localStore.set("script_mapId", id); localStore.set("script_mapId", id);
this.$store.dispatch('scriptRecord/updateScriptId',id);
this.getQuestPageList(id); this.getQuestPageList(id);
}, },
async getQuestPageList(id){ async getQuestPageList(id){

View File

@ -1,6 +1,8 @@
<template> <template>
<div class="script-parent"> <div class="script-parent">
<div class="script-card" /> <div class="script-card">
<tip-script-record ref="tipTaskRecord" :group="group"/>
</div>
<div class="script-display"> <div class="script-display">
<display ref="display" :size="size" /> <display ref="display" :size="size" />
</div> </div>
@ -10,19 +12,22 @@
<script> <script>
import WindowResizeHandler from '@/mixin/WindowResizeHandler'; import WindowResizeHandler from '@/mixin/WindowResizeHandler';
import Display from '@/views/display/index'; import Display from '@/views/display/index';
import TipScriptRecord from './tipScriptRecord';
export default { export default {
name: 'ScriptDisplay', name: 'ScriptDisplay',
components: { components: {
Display Display,
TipScriptRecord
}, },
mixins: [WindowResizeHandler], mixins: [WindowResizeHandler],
data() { data() {
return { return {
size: { size: {
width: document.documentElement.clientWidth - 600, width: document.documentElement.clientWidth - 970,
height: document.documentElement.clientHeight height: document.documentElement.clientHeight
} },
group:this.$route.query.group,
}; };
}, },
computed: { computed: {
@ -31,7 +36,7 @@ export default {
}, },
methods: { methods: {
resizeHandler() { resizeHandler() {
this.size = { width: this._clientWidth - 600, height: this._clientHeight}; this.size = { width: this._clientWidth - 970, height: this._clientHeight};
}, },
loadInitData() { loadInitData() {
} }
@ -44,7 +49,7 @@ export default {
display: flex; display: flex;
flex-flow: row; flex-flow: row;
.script-card { .script-card {
width: 800px; width: 970px;
} }
} }
</style> </style>

View File

@ -15,12 +15,10 @@
</el-button-group> </el-button-group>
</div> </div>
</div> </div>
</div>
</div>
</template> </template>
<script> <script>
import Vue from 'vue'; import Vue from 'vue';
import GetAction from './scriptRecord/getAction'; import GetAction from '../scriptRecord/getAction';
import {saveScriptScenes, saveScriptData, dumpScriptData, updateMapLocation, scriptPause, executeScript} from '@/api/simulation'; import {saveScriptScenes, saveScriptData, dumpScriptData, updateMapLocation, scriptPause, executeScript} from '@/api/simulation';
export default { export default {
@ -153,7 +151,7 @@ import {saveScriptScenes, saveScriptData, dumpScriptData, updateMapLocation, scr
}).then(() => { }).then(() => {
dumpScriptData(group).then(resp => { dumpScriptData(group).then(resp => {
// this.isSaveStage = true; // this.isSaveStage = true;
this.$parent.resetBeginTime(); this.$parent.$refs['display'].$refs['menuScript'].resetBeginTime();
this.$refs["getAction"].loadInitData(); this.$refs["getAction"].loadInitData();
this.initAutoSaveScript(); this.initAutoSaveScript();
this.$message.success('清除数据成功'); this.$message.success('清除数据成功');

View File

@ -18,6 +18,7 @@
</template> </template>
<script> <script>
// import localStore from 'storejs';
import { UrlConfig } from '@/router/index'; import { UrlConfig } from '@/router/index';
import {listPublishMap} from '@/api/jmap/map'; import {listPublishMap} from '@/api/jmap/map';
import WindowResizeHandler from '@/mixin/WindowResizeHandler'; import WindowResizeHandler from '@/mixin/WindowResizeHandler';
@ -31,7 +32,7 @@
loading:false, loading:false,
mapList: [], mapList: [],
taskStatusList: [], taskStatusList: [],
disabled:null, disabled:true,
formModel: { formModel: {
name: '', name: '',
mapId: '', mapId: '',
@ -77,6 +78,11 @@
// return '' // return ''
// } // }
}, },
watch:{
'$store.state.scriptRecord.scriptId': function (val) {
this.formModel.mapId=val;
}
},
mounted() { mounted() {
this.loadInitData(); this.loadInitData();
}, },
@ -88,6 +94,7 @@
this.mapList = []; this.mapList = [];
listPublishMap().then(response => { listPublishMap().then(response => {
this.mapList = response.data.map(elem => { return { value: elem.id, label: elem.name } }); this.mapList = response.data.map(elem => { return { value: elem.id, label: elem.name } });
this.formModel.mapId=this.$store.state.scriptRecord.scriptId|| this.mapList[0].value;
}) })
}, },
doCreate() { doCreate() {

View File

@ -8,40 +8,52 @@
<el-option v-for="actionType in actionTypeList" :key="actionType.label" :label="actionType.label" :value="actionType.value"></el-option> <el-option v-for="actionType in actionTypeList" :key="actionType.label" :label="actionType.label" :value="actionType.value"></el-option>
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item :label="memberName" class="conditionVO" prop="actionVO.memberId"> <el-form-item label="讲述者" class="conditionVO" prop="actionVO.memberId">
<el-select v-model="modalData.actionVO.memberId" placeholder="请选择主体角色" :disabled="isPause&&isNotModify"> <el-select v-model="modalData.actionVO.memberId" placeholder="请选择讲述者" :disabled="isPause&&isNotModify">
<el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option> <el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="接收者" class="conditionVO" prop="actionVO.targetId" v-if="isConversitionAdd"> <el-form-item label="接收者" class="conditionVO" prop="actionVO.targetId">
<el-select v-model="modalData.actionVO.targetId" placeholder="请选择目标角色" :disabled="isPause&&isNotModify"> <el-select v-model="modalData.actionVO.targetId" placeholder="请选择接收者" :disabled="isPause&&isNotModify">
<el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option> <el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="内容" class="conditionVO" prop="actionVO.reply" v-if="isConversitionAdd"> <el-form-item label="内容" class="conditionVO" prop="actionVO.reply">
<el-input v-model="modalData.actionVO.reply" type="textarea" class="textareaStyle" rows="3" :disabled="isPause&&isNotModify"></el-input> <el-input v-model="modalData.actionVO.reply" type="textarea" class="textareaStyle" rows="3" :disabled="isPause&&isNotModify"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="设备指令" class="conditionVO" prop="actionVO.deviceCommand" v-if="isCommandAdd">
<el-select v-model="modalData.actionVO.deviceCommand " placeholder="请选择设备指令" @change="changeCommand" class="inputStyle" :disabled="isPause&&isModify">
<el-option v-for="deviceCommand in deviceCommandList" :key="deviceCommand.deviceCommand" :label="deviceCommand.label" :value="deviceCommand.deviceCommand"></el-option>
</el-select>
</el-form-item>
<el-form-item label="起始站台" class="conditionVO" v-if="isJinLu" prop="param.startStation">
<el-select v-model="modalData.param.startStation " placeholder="请选择起始站台" class="inputStyle" :disabled="isPause&&isNotModify">
<el-option v-for="station in stationList" :key="station.code" :label="station.name" :value="station.code"></el-option>
</el-select>
</el-form-item>
<el-form-item label="终点站台" class="conditionVO" v-if="isJinLu" prop="param.endStation">
<el-select v-model="modalData.param.endStation " placeholder="请选择终点站台" class="inputStyle" :disabled="isPause&&isNotModify">
<el-option v-for="station in stationList" :key="station.code" :label="station.name" :value="station.code"></el-option>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="addScriptActionInfo('modalData')" :disabled="isPause&&isNotModify" :loading="modifying">{{buttonName}}</el-button> <el-button type="primary" @click="addScriptActionInfo('modalData')" :disabled="isPause&&isNotModify" :loading="modifying">{{buttonName}}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-card> </el-card>
<el-card class="commandCard">
<div class="addCommand">添加指令</div>
<el-form :model="commandData" ref="commandData" :rules="commandRules" label-width="100px" class="actionInfo" label-position="right">
<el-form-item label="执行者" class="conditionVO" prop="action.memberId">
<el-select v-model="commandData.action.memberId" placeholder="请选择执行者" :disabled="isPause" @change="changeRole">
<el-option v-for="member in memberList" :key="member.id" :label="member.role+(member.name==undefined?'':member.name)" :value="member.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="执行指令" class="conditionVO" prop="action.deviceCommand">
<el-select v-model="commandData.action.deviceCommand " placeholder="请选择执行指令" @change="changeCommand" class="inputStyle" :disabled="isPause">
<el-option v-for="deviceCommand in deviceCommandList" :key="deviceCommand.deviceCommand" :label="deviceCommand.label" :value="deviceCommand.deviceCommand"></el-option>
</el-select>
</el-form-item>
<el-form-item label="起始站台" class="conditionVO" v-if="isJinLu" prop="param.startStation">
<el-select v-model="commandData.param.startStation " placeholder="请选择起始站台" class="inputStyle" :disabled="isPause">
<el-option v-for="station in stationList" :key="station.code" :label="station.name" :value="station.code"></el-option>
</el-select>
</el-form-item>
<el-form-item label="终点站台" class="conditionVO" v-if="isJinLu" prop="param.endStation">
<el-select v-model="commandData.param.endStation " placeholder="请选择终点站台" class="inputStyle" :disabled="isPause">
<el-option v-for="station in stationList" :key="station.code" :label="station.name" :value="station.code"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addCommandAction('commandData')" :disabled="isPause" :loading="adding">添加指令</el-button>
</el-form-item>
</el-form>
</el-card>
</div> </div>
</template> </template>
<script> <script>
@ -84,6 +96,8 @@
'$store.state.scriptRecord.simulationPause': function(val){ '$store.state.scriptRecord.simulationPause': function(val){
this.isPause=!(this.$store.state.scriptRecord.simulationPause); this.isPause=!(this.$store.state.scriptRecord.simulationPause);
this.$parent.$parent.$parent.setIsParse(this.isPause); this.$parent.$parent.$parent.setIsParse(this.isPause);
this.$refs['modalData'].clearValidate();
this.$refs['commandData'].clearValidate();
}, },
}, },
data() { data() {
@ -94,26 +108,31 @@
targetId:"", targetId:"",
reply:"", reply:"",
type:"Conversation", type:"Conversation",
}
},
commandData:{
action:{
memberId:"",
deviceCommand:"", deviceCommand:"",
commandParamList:[] commandParamList:[],
type:"Command",
}, },
param:{ param:{
startStation:"", startStation:"",
endStation:"", endStation:"",
} }
}, },
deviceTypeReadOnly:false,
isPause:false, isPause:false,
isNotModify:true, isNotModify:true,
modifying:false, modifying:false,
memberName:"讲述者", adding:false,
isConversitionAdd:true,
isCommandAdd:false,
actionTypeList:DeviceTypeDic.ConstSelect.actionType, actionTypeList:DeviceTypeDic.ConstSelect.actionType,
isJinLu:false, isJinLu:false,
stationList:[], stationList:[],
memberList:[], memberList:[],
deviceCommandList:[], deviceCommandList:[],
orginMemberList:[],
rules:{ rules:{
actionVO:{ actionVO:{
memberId:[ memberId:[
@ -126,6 +145,16 @@
{ required: true, message: '请选择目标角色', trigger: 'change' } { required: true, message: '请选择目标角色', trigger: 'change' }
] ]
}, },
},
commandRules:{
action:{
memberId:[
{ required: true, message: '请选择主体角色', trigger: 'change' }
],
deviceCommand:[
{ required: true, message: '请选择执行指令', trigger: 'change' }
]
},
param:{ param:{
startStation:[ startStation:[
{ required: true, message: '请选择起始站台', trigger: 'change' } { required: true, message: '请选择起始站台', trigger: 'change' }
@ -144,6 +173,7 @@
initData(){ initData(){
getScriptMemberData(this.group).then(resp => { getScriptMemberData(this.group).then(resp => {
let roleTypeList=ConstConfig.ConstSelect.roleType; let roleTypeList=ConstConfig.ConstSelect.roleType;
this.orginMemberList=resp.data;
let lastData=JSON.stringify(resp.data); let lastData=JSON.stringify(resp.data);
roleTypeList.forEach(function(element){ roleTypeList.forEach(function(element){
let rolename=element.value; let rolename=element.value;
@ -151,12 +181,21 @@
}); });
lastData=JSON.parse(lastData); lastData=JSON.parse(lastData);
this.memberList=lastData; this.memberList=lastData;
getAvailableDeviceCommand().then(response=>{ this.getDeviceCode();
this.deviceCommandList=response.data;
this.getDeviceCode();
});
}).catch(error => {}) }).catch(error => {})
}, },
changeRole(index){
let role=this.orginMemberList.find(elem=>{return elem.id==index}).role;
let data={role:role};
getAvailableDeviceCommand(data).then(response=>{
this.deviceCommandList=response.data;
if(response.data.length<=0)
{
this.commandData.action.deviceCommand="";
this.isJinLu=false;
}
});
},
getDeviceCode(){ getDeviceCode(){
let params = {deviceType:"StationStand"}; let params = {deviceType:"StationStand"};
let group=this.group; let group=this.group;
@ -166,15 +205,37 @@
this.stationList=resultData; this.stationList=resultData;
}) })
}, },
addCommandAction(formName){
this.$refs[formName].validate((valid) => {
if (valid) {
let group=this.group;
this.commandData.action.type="Command";
if(this.commandData.action.deviceCommand=="Train_Manual_Route_Blocking_Drive")
{this.commandData.action.commandParamList=[this.commandData.param.startStation,this.commandData.param.endStation];}
let data=this.commandData.action;
let obj=this;
this.adding=true;
addScriptAction(group,data).then(response=>{
this.adding=false;
this.$message.success('添加指令成功');
this.$emit('create',true);
this.initCommandActionData();
}).catch(error => {
this.adding=false;
this.$messageBox(`添加指令失败: ${error.message}`);
});
}
else {
console.log('error submit!!');
return false;
}
});
},
addScriptActionInfo(formName){ addScriptActionInfo(formName){
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
let group=this.group; let group=this.group;
if(this.modalData.actionVO.deviceCommand==""){ this.modalData.actionVO.type="Conversation";
delete this.modalData.actionVO.deviceCommand;
}
if(this.modalData.actionVO.deviceCommand=="Train_Manual_Route_Blocking_Drive")
{this.modalData.actionVO.commandParamList=[this.modalData.param.startStation,this.modalData.param.endStation];}
let data=this.modalData.actionVO; let data=this.modalData.actionVO;
let obj=this; let obj=this;
this.modifying=true; this.modifying=true;
@ -182,13 +243,12 @@
{ {
addScriptAction(group,data).then(response=>{ addScriptAction(group,data).then(response=>{
this.modifying=false; this.modifying=false;
this.$message.success('添加动作成功'); this.$message.success('添加对话成功');
this.$emit('create'); this.$emit('create',true);
// this.resetDisabled();
this.initActionData(); this.initActionData();
}).catch(error => { }).catch(error => {
this.modifying=false; this.modifying=false;
this.$messageBox(`添加动作失败: ${error.message}`); this.$messageBox(`添加对话失败: ${error.message}`);
}); });
} }
else else
@ -196,17 +256,15 @@
let actionId=this.modalData.actionVO.id; let actionId=this.modalData.actionVO.id;
modifyScriptAction(group,actionId,data).then(response=>{ modifyScriptAction(group,actionId,data).then(response=>{
this.modifying=false; this.modifying=false;
this.isNotModify=true; this.isNotModify=true;
this.$parent.$parent.$parent.setDisabled(this.isNotModify); this.$parent.$parent.$parent.setDisabled(this.isNotModify);
this.$emit('modifyButtonName'); this.$emit('modifyButtonName');
this.$message.success('修改动作成功'); this.$message.success('修改对话成功');
this.$emit('create'); this.$emit('create',false);
// this.resetDisabled();
this.initActionData(); this.initActionData();
}).catch(error => { }).catch(error => {
this.modifying=false; this.modifying=false;
this.$messageBox(`修改动作失败: ${error.message}`); this.$messageBox(`修改对话失败: ${error.message}`);
}); });
} }
} }
@ -220,73 +278,38 @@
if(this.$refs['modalData']) if(this.$refs['modalData'])
{ {
this.$refs['modalData'].resetFields(); this.$refs['modalData'].resetFields();
// this.$nextTick(function(){ this.modalData.actionVO.type="Conversation";
this.memberName="讲述者"; this.modalData.actionVO.memberId="";
this.deviceTypeReadOnly=false; this.modalData.actionVO.targetId="";
this.modalData.actionVO.type="Conversation"; this.modalData.actionVO.reply="";
this.modalData.actionVO.memberId="";
this.modalData.actionVO.targetId="";
// this.modalData.actionVO.deviceCommand="";
this.modalData.actionVO.reply="";
this.modalData.param.startStation="";
this.isConversitionAdd=true;
this.isCommandAdd=false;
this.isJinLu=false;
this.modalData.param.endStation="";
// });
} }
}, },
clearValidate(){ clearValidate(){
if(this.$refs['modalData']) if(this.$refs['commandData'])
{ {
this.$refs['modalData'].clearValidate(); this.$refs['commandData'].clearValidate();
} }
}, },
initActionData(){ initActionData(){
this.resetDisabled(); this.resetDisabled();
}, },
changeType(index){ initCommandActionData(){
switch(index) if(this.$refs['commandData'])
{ {
case "Conversation":{ this.$refs['commandData'].resetFields();
this.memberName="讲述者"; this.commandData.action.memberId="";
this.isConversitionAdd=true; this.commandData.param.startStation="";
this.isCommandAdd=false; this.isJinLu=false;
this.isJinLu=false; this.commandData.param.endStation="";
this.clearValidate();
break;
}
case "Command":{
this.memberName="执行者";
this.isConversitionAdd=false;
this.isCommandAdd=true;
//
if(this.modalData.actionVO.deviceCommand=="Train_Manual_Route_Blocking_Drive")
{
this.isJinLu=true;
}
else
{
this.isJinLu=false;
}
this.clearValidate();
break;
}
default:{
this.clearValidate();
break;
}
} }
}, },
changeCommand(index){ changeCommand(index){
this.modalData.actionVO.deviceCommand
switch(index) switch(index)
{ {
case "Train_Manual_Route_Blocking_Drive":{ case "Train_Manual_Route_Blocking_Drive":{
this.isJinLu=true; this.isJinLu=true;
this.getDeviceCode(); this.getDeviceCode();
this.clearValidate(); this.clearValidate();
break; break;
} }
default:{ default:{
@ -307,30 +330,26 @@
this.modalData.actionVO.id=data.id; this.modalData.actionVO.id=data.id;
this.modalData.actionVO.memberId=data.memberId; this.modalData.actionVO.memberId=data.memberId;
this.modalData.actionVO.type=data.type; this.modalData.actionVO.type=data.type;
this.deviceTypeReadOnly=true;
// this.modalData.actionVO.time=data.time;
if(data.type=="Conversation") if(data.type=="Conversation")
{ {
this.isJinLu=false; this.isJinLu=false;
this.modalData.actionVO.targetId=data.targetId; this.modalData.actionVO.targetId=data.targetId;
this.isConversitionAdd=true;
this.isCommandAdd=false;
this.modalData.actionVO.reply=data.reply; this.modalData.actionVO.reply=data.reply;
} }
else if(data.type=="Command") // else if(data.type=="Command")
{ // {
this.isJinLu=false; // this.isJinLu=false;
this.isConversitionAdd=false; // this.isConversitionAdd=false;
this.isCommandAdd=true; // // this.isCommandAdd=true;
this.modalData.actionVO.reply=""; // this.modalData.actionVO.reply="";
this.modalData.actionVO.deviceCommand=data.deviceCommand; // this.modalData.actionVO.deviceCommand=data.deviceCommand;
if(this.modalData.actionVO.deviceCommand=="Train_Manual_Route_Blocking_Drive") // if(this.modalData.actionVO.deviceCommand=="Train_Manual_Route_Blocking_Drive")
{ // {
this.isJinLu=true; // this.isJinLu=true;
this.modalData.param.startStation=data.commandParamList[0]; // this.modalData.param.startStation=data.commandParamList[0];
this.modalData.param.endStation=data.commandParamList[1]; // this.modalData.param.endStation=data.commandParamList[1];
} // }
} // }
} }
} }
} }
@ -369,4 +388,13 @@
font-size:15px; font-size:15px;
padding: 20px 10px; padding: 20px 10px;
} }
.commandCard{
margin-left: 20px;
padding-bottom: 20px;
margin-top: 10px;
}
.addCommand{
font-size:15px;
padding: 20px 10px;
}
</style> </style>

View File

@ -1,10 +1,12 @@
<template> <template>
<div class="actionPaneInner"> <div class="actionPaneInner">
<div class="actionList"> <div class="actionList">
<span class="titleStyle">剧本动作</span> <span class="titleStyle">剧本编制</span>
</div> </div>
<div class="tab-pane-big"> <div class="tab-pane-big">
<add-action ref="addBehavior" :group="group" @create="create" :buttonName="buttonName" :operateType="operateType" @modifyButtonName="modifyButtonName" class="addScript"></add-action> <el-scrollbar wrapClass="scrollbar-wrapper" ref="elScrollbar" class="elScrollbar">
<add-action ref="addBehavior" :group="group" @create="create" :buttonName="buttonName" :operateType="operateType" @modifyButtonName="modifyButtonName" class="addScript"></add-action>
</el-scrollbar>
<!-- <div class="vertialLine"></div> --> <!-- <div class="vertialLine"></div> -->
<div class="block actionListTable"> <div class="block actionListTable">
<el-scrollbar wrapClass="scrollbar-wrapper" ref="elActionScrollbar"> <el-scrollbar wrapClass="scrollbar-wrapper" ref="elActionScrollbar">
@ -51,7 +53,7 @@
behaviorName:"", behaviorName:"",
memberName:"", memberName:"",
operateType:"add", operateType:"add",
buttonName:"添加动作", buttonName:"添加对话",
} }
}, },
components: { components: {
@ -60,10 +62,19 @@
mounted(){ mounted(){
this.loadInitData(); this.loadInitData();
}, },
watch:{
actionInfoList: function(val){
this.$nextTick(function(){
var div = this.$refs['elActionScrollbar'].$refs['wrap'];
div.scrollTop=this.$refs['elActionScrollbar'].wrap.scrollHeight;
});
}
},
methods:{ methods:{
loadInitData() { loadInitData() {
let group=this.$route.query.group; let group=this.$route.query.group;
getAvailableDeviceCommand().then(response=>{ let data={role:"Driver"};
getAvailableDeviceCommand(data).then(response=>{
this.deviceCommandList=response.data; this.deviceCommandList=response.data;
this.loadOtherData(this.$route.query); this.loadOtherData(this.$route.query);
}); });
@ -135,22 +146,16 @@
reloadTable(){ reloadTable(){
this.loadInitData(); this.loadInitData();
}, },
create(){ create(data){
this.reloadTable(); this.reloadTable();
this.$nextTick(function(){
debugger;
var div = this.$refs['elActionScrollbar'].$refs['wrap'];
div.scrollTop=this.$refs['elActionScrollbar'].wrap.scrollHeight;
});
}, },
modifyAction(row){ modifyAction(row){
this.operateType="modify"; this.operateType="modify";
this.buttonName="修改动作" this.buttonName="修改对话"
this.$refs.addBehavior.doShow(row); this.$refs.addBehavior.doShow(row);
}, },
modifyButtonName(){ modifyButtonName(){
this.buttonName="添加动作", this.buttonName="添加对话",
this.operateType="add" this.operateType="add"
} }
} }
@ -166,7 +171,6 @@
float:left; float:left;
width:450px; width:450px;
display: inline-block; display: inline-block;
position: fixed;
} }
.actionListTable{ .actionListTable{
font-size: 15px; font-size: 15px;
@ -218,4 +222,8 @@
width: 470px; width: 470px;
margin-top:10px; margin-top:10px;
} }
.elScrollbar{
width: 450px;
position: absolute;
}
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

Before

Width:  |  Height:  |  Size: 394 KiB

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB