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

This commit is contained in:
fan 2019-08-19 19:43:02 +08:00
commit 241d530132
94 changed files with 3510 additions and 3338 deletions

View File

@ -53,24 +53,13 @@ export function getTrainingTree() {
} }
/** 获取章节基本信息*/ /** 获取章节基本信息*/
export function getTrainingDetail(args) { export function getTrainingDetail(trainingId) {
return request({ return request({
url: `/api/training/${args.id}`, url: `/api/training/${trainingId}`,
method: 'get' method: 'get'
}); });
} }
/** 获取实训详细内容*/
export function getTrainingMapDetail(args) {
return request({
url: `/api/training/${args.id}/map`,
method: 'get',
params: {
group: args.group
}
});
}
/** 添加实训*/ /** 添加实训*/
export function addTraining(data) { export function addTraining(data) {
return request({ return request({

View File

@ -435,3 +435,19 @@ export function saveTaskScript(group, data) {
data data
}); });
} }
/** 暂停剧本编制的仿真 */
export function scriptPause(group) {
return request({
url: `/api/simulation/${group}/scriptWrite/pause`,
method: 'post'
});
}
/** 恢复仿真运行并执行刚编辑的剧本动作 */
export function executeScript(group) {
return request({
url: `/api/simulation/${group}/scriptWrite/execute`,
method: 'post'
});
}

View File

@ -3,6 +3,7 @@ export default {
createSimulationFailed: 'Failure to create simulation', createSimulationFailed: 'Failure to create simulation',
loadMapDataFailed: 'Failed to load map data', loadMapDataFailed: 'Failed to load map data',
getMapStepsFailed: 'Failed to get map step data', getMapStepsFailed: 'Failed to get map step data',
getMapDetailFailed: 'Failed to get map detail',
resetFailed: 'Reset failure', resetFailed: 'Reset failure',
startTrainingFailed: 'Failure to start training', startTrainingFailed: 'Failure to start training',
saveBackgroundFailed: 'Failed to save background', saveBackgroundFailed: 'Failed to save background',
@ -39,5 +40,10 @@ export default {
codeHasExist: 'Coding already exists', codeHasExist: 'Coding already exists',
formartError: 'The format is incorrect, only characters/numbers/_', formartError: 'The format is incorrect, only characters/numbers/_',
createDictionaryFailed: 'Failed to create dictionary', createDictionaryFailed: 'Failed to create dictionary',
updateDictionaryFailed: 'Failed to update dictionary' updateDictionaryFailed: 'Failed to update dictionary',
createDetailFailed: 'Failed to create details',
updateDetailFailed: 'Failed to update details',
addFailed: 'Failure to add',
updateFailed: 'Failure to update'
}; };

View File

@ -78,6 +78,7 @@ export default {
trainingHasStart: "(name)'s room has begun", trainingHasStart: "(name)'s room has begun",
trainingNotStart: "(name)'s room hasn't started yet", trainingNotStart: "(name)'s room hasn't started yet",
inputRoomNumber: 'Please enter the room number.', inputRoomNumber: 'Please enter the room number.',
chooseRoom: 'Choose Room' chooseRoom: 'Choose Room',
month: 'month'
}; };

View File

@ -1,329 +1,309 @@
export default { export default {
pleaseSelect: '请选择', drawData: 'The drawing data',
sketchMap: '草稿地图列表', mapData: 'Map data',
newConstruction: '新建', pleaseSelect: 'please choose',
importMap: '导入地图', sketchMap: 'Draft map list',
createNewMap: '新建地图', newConstruction: 'create',
normalCreate: '正常创建', importMap: 'Import the map',
saveMapAs: '地图另存为', createNewMap: 'A new map',
create: '创建', normalCreate: 'The normal to create',
dataVerification: '数据校验', saveMapAs: 'Save the map as',
logicalView: '逻辑视图', create: 'establish',
physicalView: '物理视图', dataVerification: 'data verification',
mixedView: '混合视图', logicalView: 'logical view',
normal: '正常', physicalView: 'Physical view',
add: '添加', mixedView: 'The mixed view',
are: '是', normal: 'normal',
deny: '否', add: 'add',
are: 'yes',
deny: 'no',
drawMap: 'draw',
advanced: 'advanced',
viewLayer: 'The view layer',
layerDisplay: 'The layer display',
viewShows: 'View shows',
contentShows: 'content show',
save: '保存', save: 'save',
updata: '更新', updata: 'update',
updateObj: '修改', updateObj: 'modification',
updateObjAxis: '更新坐标', updateObjAxis: 'Update the coordinate',
saveAs: '另存为', saveAs: 'save as',
publish: '发布', publish: 'publish',
deleteObj: '删除', deleteObj: 'delete',
remove: '移除', remove: 'remove',
lastStep: '上一步', lastStep: 'last step',
confirm: '确 定', confirm: 'confirm',
cancel: '取 消', cancel: 'cancel',
cancelledDelete: '已取消删除',
confirmDeletion: '是否确认删除?',
hint: '提示',
link: 'link', link: 'link',
section: '区段', section: 'section',
switch: '道岔', switch: 'switch',
signal: '信号机', signal: 'signal',
zcZoneControl: 'zc区域控制', zcZoneControl: 'zc zone control',
temporaryLimit: '全线临时限速', temporaryLimit: 'temporary speed restriction',
lcControl: 'Lc控制', lcControl: 'Lc control',
image: '图片', image: 'image',
station: '车站', station: 'station',
controlMode: '控制模式', controlMode: 'control mode',
platform: '站台', platform: 'platform',
counter: '计数器', counter: 'counter',
delayUnlock: '延迟解锁', delayUnlock: 'Delay to unlock',
train: '列车', train: 'train',
trainWindow: '车次窗', trainWindow: 'train window',
line: '线条', line: 'line',
text: '文字', text: 'text',
mapName: '地图名称:', mapName: 'Name of the map:',
skinName: '皮肤风格:', skinName: 'Skin style:',
selectCity: '所属城市:', selectCity: 'city:',
offsetXColon: 'X偏移:', offsetXColon: 'X Offset:',
offsetYColon: 'Y偏移:', offsetYColon: 'Y Offset:',
scalingColon: '缩放比例:', scalingColon: 'scaling:',
operationUnusual: '操作异常:', operationUnusual: 'abnormal operation:',
offsetX: 'X偏移', offsetX: 'X Offset',
offsetY: 'Y偏移', offsetY: 'Y Offset',
scaling: '缩放比例', scaling: 'scaling',
statusSignalName: '状态信号名称:', statusSignalName: 'Status signal name:',
stateSignalsPlotCoordinates: '状态信号画图坐标:', stateSignalsPlotCoordinates: 'State signals plot coordinates:',
equipmentStation: '所属设备集中站:', equipmentStation: 'Equipment centralization station:',
lineCoding: '线条编码:', lineCoding: 'Line coding:',
lineType: '线条类型:', lineType: 'Line type:',
lineWidth: '线条宽度:', lineWidth: 'Line width:',
segmentCoordinates: '区段显示坐标:', segmentCoordinates: 'Segment display coordinates:',
publishMapCreation: '从发布地图创建', publishMapCreation: 'Create from the publish map',
pleaseEnterMapName: '请输入地图名称', failedLoadListPublishedMaps: 'Failed to load the list of published maps',
pleaseChooseSkinCode: '请选择皮肤风格', creatingSuccessful: 'Created successfully!',
pleaseSelectMapSource: '请选择地图来源', mapUpdateSuccessful: 'Map update successful!',
pleaseSelectAssociatedCity: '请选择关联城市', createFailure: 'Create a failure',
pleaseSelectAssociatedSkin: '请选择关联皮肤', importSuccessful: 'Import successful!',
pleaseEnteMapLinkWidth: '请输入地图Link宽度', importFailure: 'Import failure',
pleaseEnterMapSectionWidth: '请输入地图区段宽度', updateSuccessfully: 'update successfully',
updateFailed: 'Update failed',
failedLoadCityList: 'Failed to load city list',
successfullyDelete: 'successfully delete',
failDelete: 'fail to delete',
dataValidationFailed: 'Publishing failed, data validation failed',
releaseSuccess: 'Release success!',
abnormalOperation: 'abnormal operation',
datQuestion: 'Data in question',
dataList: 'Data list',
saveFailed: 'Save failed',
failedLoadListPublishedMaps: '加载已发布地图列表失败', mapEditor: 'map editor',
creatingSuccessful: '创建成功!', mapPublished: 'Map published as',
mapUpdateSuccessful: '更新地图成功!', publishingAssociatedCity: 'Publishing associated city:',
createFailure: '创建失败', publishMapName: 'Publish map name:',
importSuccessful: '导入成功!',
importFailure: '导入失败',
updateSuccessfully: '更新成功',
updateFailed: '更新失败',
failedLoadCityList: '加载城市列表失败',
successfullyDelete: '删除成功',
failDelete: '删除失败',
dataValidationFailed: '发布失败,数据校验不通过',
releaseSuccess: '发布成功!',
abnormalOperation: '操作异常',
datQuestion: '有问题数据',
dataList: '数据列表',
saveFailed: '另存失败',
mapEditor: '地图编辑', editRoute: 'Edit route',
mapPublished: '地图发布为', editRouting: 'Edit/road',
publishingAssociatedCity: '发布关联城市:', editAutoRouting: 'Edit automatic signal',
publishMapName: '发布地图名称:', setSwitch: 'Linkage switch',
pathUnit: 'The path to the unit',
jlmap3d: '3d editing',
editRoute: '编辑进路', automaticSignalList: 'Automatic signal list',
editRouting: '编辑交路', automaticSignalCode: 'Automatic signal coding',
editAutoRouting: '编辑自动信号', signalCodeName: 'Signal name',
setSwitch: '联动道岔', signalCode: 'Signal code',
pathUnit: '路径单元', sectionData: 'Section data',
jlmap3d: '三维化编辑', preview: 'preview',
operation: 'operation',
compile: 'compile',
empty: 'empty',
reset: 'reset',
sectionName: 'name of the section',
sectionList: 'Section lists',
automaticSignal: 'automatic signal',
automaticSignalList: '自动信号列表', signalID: 'Signal ID:',
automaticSignalCode: '自动信号编码', activate: 'activate',
signalCodeName: '信号机名称',
signalCode: '信号机code',
sectionData: '区段数据',
preview: '预览',
operation: '操作',
compile: '编辑',
delete: '删除',
empty: '清空',
reset: '重置',
sectionName: '区段名称',
sectionList: '区段列表',
automaticSignal: '自动信号',
signalID: '信号机ID:', pleaseSelectSignal: 'Please select the signal',
activate: '激活', triggerSegmentData: 'Select approach to automatically trigger segment data',
segmentData: '进路自动触发区段数据:', automaticSignalSuccessful: 'Automatic signal creation successful!',
failedCreateSignal: 'Failed to create automatic signal',
automaticSignalUpdateSucceeded: 'Automatic signal update successful!',
automaticSignalUpdateFailed: 'Automatic signal update failed',
pleaseSelectSignal: '请选择信号机', stationName: 'The station name:',
triggerSegmentData: '请选择进路自动触发区段数据',
automaticSignalSuccessful: '创建自动信号成功!',
failedCreateSignal: '创建自动信号失败',
automaticSignalUpdateSucceeded: '更新自动信号成功!',
automaticSignalUpdateFailed: '更新自动信号失败',
stationName: '车站名称:', property: 'attribute',
counterCoding: 'Counter coding:',
counterName: 'Counter name:',
belongsStation: 'Belongs to the station:',
counterType: 'Counter type:',
countMax: 'Counter maximum:',
pointX: 'coordinates x:',
pointY: 'coordinates y:',
meter: 'meter',
property: '属性', code: 'code:',
counterCoding: '计数器编码:', imageName: 'Image name:',
counterName: '计数器名称:', imageWidth: 'Image width:',
belongsStation: '所属车站:', imageHeight: 'Picture height:',
counterType: '计数器类型:', imagePoint: 'Image coordinates:',
countMax: '计数器最大值:', imageZindex: 'Image level:',
pointX: '坐标 x:', imageSelect: 'Pictures to choose:',
pointY: '坐标 y:', rotateAngle: 'Rotation Angle:',
meter: '米',
code: '编码:', areaSolution: 'Area so the solution',
imageName: '图片名称:', alwaysSolution: 'People always solution',
imageWidth: '图片宽度:',
imageHeight: '图片高度:',
imagePoint: '图片坐标:',
imageZindex: '图片层级:',
imageSelect: '图片选择:',
rotateAngle: '旋转角度:',
areaSolution: '区故解', pleaseSelectMap: 'Please select map',
alwaysSolution: '总人解', selectCounterType: 'Select the counter type',
selectStation: 'Please select station',
pleaseSelectDevice: 'Please re-select the device',
pleaseSelectCountName: 'Please enter a counter name',
pleaseCounterValue: 'please enter counter maximum',
pleaseEnterXCoordinate: 'Please enter the x coordinate',
pleaseEnterYCoordinate: 'Please enter the y coordinate',
pleaseEnterDelayTime: 'Please enter delay time',
pleaseEnterFontColor: 'Please enter the font color',
pleaseEnterFontFormat: 'Please enter the font format',
pleaseEnterImageWidth: 'Please enter image width',
pleaseEnterImageHeight: 'Please enter image width',
pleaseSelectMap: '请选择地图', delayUnlockingCode: 'Delay unlocking code:',
selectCounterType: '请选择计数器类型', delayTime: 'Delay time:',
selectStation: '请选择车站', font: 'font:',
pleaseSelectDevice: '请重新选择设备', color: 'color:',
pleaseSelectCountName: '请输入计数器名称',
pleaseCounterValue: '请输入计数器最大值',
pleaseEnterXCoordinate: '请输入x坐标',
pleaseEnterYCoordinate: '请输入y坐标',
pleaseEnterDelayTime: '请输入延时时间',
pleaseEnterFontColor: '请输入字体颜色',
pleaseEnterFontFormat: '请输入字体格式',
pleaseEnterImageWidth: '请输入图片宽度',
pleaseEnterImageHeight: '请输入图片高度',
delayUnlockingCode: '延时解锁编码:', upside: 'In the upper',
delayTime: '延时时间:', hypomere: 'The period of',
font: '字体:',
color: '颜色:',
upside: '上段', linkType: 'The Link type',
hypomere: '下段', linkCode: 'The Link code:',
linkName: 'The Link name:',
linkDisplayLength: 'Link display length:',
linkActualLength: 'Actual Link length:',
linkColor: 'The Link colors:',
linkLeftFdCode: 'Left forward Link:',
linkLeftSdCode: 'Left lateral Link:',
linkRightFdCode: 'Right forward Link:',
linkRightSdCode: 'Right lateral Link:',
linkLp: 'Link Start point coordinates:',
linkRp: 'Link End point coordinates:',
linkType: 'Link类型', rulesChange: 'The rules change',
linkCode: 'Link编码:', splitMerge: 'Split/merge',
linkName: 'Link名称:', linkSet: 'The Link set',
linkDisplayLength: 'Link显示长度:', selectLink: 'Select the Link',
linkActualLength: 'Link实际长度:', splitOffset: 'Split offset:',
linkColor: 'Link颜色:', split: 'Split',
linkLeftFdCode: '左侧正向Link:', merge: 'merge',
linkLeftSdCode: '左侧侧向Link:', logicBlock: 'Logical extents',
linkRightFdCode: '右侧正向Link:', aux: 'The first',
linkRightSdCode: '右侧侧向Link:', sectionLine: 'Section of the line',
linkLp: 'Link 起点坐标:', sectionPolyline: 'Section polyline',
linkRp: 'Link 终点坐标:', switchSection: 'The switch section',
trainDirection: 'Direction of train:',
deleteSwitchSection: 'One key to delete the switch section',
createSwitchSection: 'One key creates the turnout section',
sectionLogicalNumber: 'Number of logical extents',
sectionLsectioncode: 'Left section name:',
sectionRsectioncode: 'Right section name:',
associatedSection: 'Associated physical section:',
blockCoding: 'Block coding:',
sectionType: 'Section type:',
sectionNameColon: 'The name of the section:',
sectionNameOffset: 'Extentname offset:',
leftKilometerMark: 'Left kilometer mark (meter):',
rightKilometerMark: 'Right kilometer mark (meter):',
sectionColon: 'interval:',
displayExtentName: 'Whether to display the extent name:',
displayAxleCounter: 'Whether to display axis gauge:',
displayLogicalExtents: 'Whether to display logical extents:',
displayLogicalWxtentNames: 'Whether to display logical extent names:',
isStandTrack: 'Platform rail:',
standTrackName: 'Platform track name:',
standTrackNamePosition: 'Platform track name offset:',
relStandCode: 'The platform code:',
isReentryTrack: 'Whether to return to orbit:',
reentryTrackName: 'Name of reentrant rail:',
reentryTrackNamePosition: 'Backtrack name offset:',
isTransferTrack: 'Conversion rail:',
transferTrackName: 'Transfer rail name:',
transferTrackNamePosition: 'Conversion rail name offset:',
destinationCode: 'Destination code:',
destinationCodePoint: 'Destination code coordinates:',
destinationCodeShow: 'Whether to display destination code:',
leftStopPointOffset: 'Left stop point offset:',
rightStopPointOffset: 'Right stop point offset:',
isSwitchSection: 'Whether switch section:',
relSwitchCode: 'Relate turnout Code:',
logicSectionNameSort: 'Logical extent sort:',
fromSmallToLarge: 'From small to big',
fromLargeToSmall: 'From big to small',
relevanceLinkCode: 'The associated Link:',
sepTypeLeft: 'The left delimiter type:',
sectionOffsetLeft: 'Left Link offset:',
sepTypeRight: 'Right separator type:',
sectionOffsetRight: 'Right Link offset:',
isSegmentation: 'Whether or not split:',
segmentationPosition: 'The default setting:',
isCurve: 'Whether the curve:',
physicalSegmentName: 'Physical segment name:',
rulesChange: '规则修改', directionType: 'Form the direction:',
sectionNameC: '区段名称:', leftOrRight: 'About the position:',
splitMerge: '拆分/合并', positionType: 'Upper and lower position:',
linkSet: 'Link集合',
selectLink: '选择Link',
splitOffset: '拆分偏移量:',
split: '拆分',
merge: '合并',
logicBlock: '逻辑区段',
aux: '第',
sectionLine: '段折线',
sectionPolyline: '区段折线',
switchSection: '道岔区段',
trainDirection: '列车所在方向:',
deleteSwitchSection: '一键删除道岔区段',
createSwitchSection: '一键创建道岔区段',
sectionLogicalNumber: '逻辑区段数量',
sectionLsectioncode: '左侧区段名称:',
sectionRsectioncode: '右侧区段名称:',
associatedSection: '关联物理区段:',
blockCoding: '区段编码:',
sectionType: '区段类型:',
sectionNameColon: '区段名称:',
sectionNameOffset: '区段名称偏移量:',
leftKilometerMark: '左侧公里标(米):',
rightKilometerMark: '右侧公里标(米):',
sectionColon: '区间:',
displayExtentName: '是否显示区段名称:',
displayAxleCounter: '是否显示计轴:',
displayLogicalExtents: '是否显示逻辑区段:',
displayLogicalWxtentNames: '是否显示逻辑区段名称:',
isStandTrack: '是否站台轨:',
standTrackName: '站台轨名称:',
standTrackNamePosition: '站台轨名称偏移量:',
relStandCode: '站台编码:',
isReentryTrack: '是否折返轨:',
reentryTrackName: '折返轨名称:',
reentryTrackNamePosition: '折返轨名称偏移量:',
isTransferTrack: '是否转换轨:',
transferTrackName: '转换轨名称:',
transferTrackNamePosition: '转换轨名称偏移量:',
destinationCode: '目的地码:',
destinationCodePoint: '目的地码坐标:',
destinationCodeShow: '是否显示目的地码:',
leftStopPointOffset: '左向停车点偏移量:',
rightStopPointOffset: '右向停车点偏移量:',
isSwitchSection: '是否道岔区段:',
relSwitchCode: '关联道岔Code:',
logicSectionNameSort: '逻辑区段排序:',
fromSmallToLarge: '从小到大',
fromLargeToSmall: '从大到小',
relevanceLinkCode: '关联的Link:',
sepTypeLeft: '左侧分隔符类型:',
sectionOffsetLeft: '左侧Link偏移量:',
sepTypeRight: '右侧分隔符类型:',
sectionOffsetRight: '右侧Link偏移量:',
isSegmentation: '是否分割:',
segmentationPosition: '默认背景:',
isCurve: '是否曲线:',
sectionPoints: '区段显示坐标:',
trainPosType: '列车所在方向:',
physicalSegmentName: '物理区段名称:',
directionType: '形式方向:', signalFilamentAlarm: 'Filament alarm',
leftOrRight: '左右位置:', signalCodeColon: 'Signal code:',
positionType: '上下位置:', signalNameColon: 'Signal name:',
signalUniqueName: 'Unique name of signal:',
signalDisplayName: 'signal name is displayed:',
lampPostType: 'lamp type:',
lampPositionType: 'Lamp type:',
signalUseType: 'Use the type:',
potLampType: 'Light type:',
signalDirectionType: 'The direction of the type:',
signalPositionType: 'Signal position type:',
signalOffset: 'The offset:',
signalPositionX: 'Signal x:',
signalPositionY: 'Signal y:',
signalNamePositionX: 'Signal name offset x:',
signalNamePositionY: 'Signal name offset y:',
signalButtonShow: 'Display button:',
signalButtonPositionX: 'button x:',
signalButtonPositionY: 'button y:',
signalGuideShow: 'Whether the boot semaphore is displayed:',
signalGuidePositionX: 'Guiding signal x:',
signalGuidePositionY: 'Guiding signal y:',
signalFilamentAlarm: '灯丝报警', concentrateStationCode: 'Interlocking station coding:',
signalCodeColon: '信号机编码:', stationCode: 'The station code:',
signalNameColon: '信号机名称:', zcCode: 'Zc region:',
signalUniqueName: '信号机唯一名称:', centralized: 'Centralized station or not:',
signalDisplayName: '是否显示信号机名称:', stationRunPlanName: 'True name:',
lampPostType: '灯柱类型:', stationVisible: 'Whether or not shown:',
lampPositionType: '灯位类型:', stationNameFont: 'The font:',
signalUseType: '用途类型:', stationNameFontColor: 'Station font color:',
potLampType: '点灯类型:', stationKmPostShow: 'Whether to display the name of the kilometer marker:',
signalDirectionType: '方向类型:', stationKmRange: 'Kilometer mark distance:',
signalPositionType: '信号机位置类型:', stationKmPost: 'Kilometer mark name:',
signalOffset: '偏移量:', stationKmPostFont: 'Kilometer mark font:',
signalPositionX: '信号机x:', stationKmPostFontColor: 'Font color of kilometer mark:',
signalPositionY: '信号机y:', stationPositionX: 'X coordinate:',
signalRotate: '旋转角度:', stationPositionY: 'Y coordinate:',
signalNamePositionX: '信号机名字偏移量 x:',
signalNamePositionY: '信号机名字偏移量 y:',
signalButtonShow: '是否显示按钮:',
signalButtonPositionX: '按钮x:',
signalButtonPositionY: '按钮y:',
signalGuideShow: '是否显示引导信号灯:',
signalGuidePositionX: '引导信号x:',
signalGuidePositionY: '引导信号y:',
concentrateStationCode: '所属联锁站编码:', stationControlCode: 'Control mode coding:',
stationCode: '车站编码:', stationControlName: 'Control mode name:',
zcCode: '所属zc区域编码:', zokContent: 'Central content:',
centralized: '是否集中站:', zakContent: 'Stand accused of content:',
stationNameColon: '车站名称:', jjzkContent: 'Emergency station control/general alarm content:',
stationRunPlanName: '真实名称:', zzkContent: 'Station control content:',
stationVisible: '是否显示:', stationControlZok: 'central',
stationNameFont: '车站字体:',
stationNameFontColor: '车站字体颜色:',
stationKmPostShow: '是否显示公里标名称:',
stationKmRange: '公里标距离:',
stationKmPost: '公里标名称:',
stationKmPostFont: '公里标字体:',
stationKmPostFontColor: '公里标字体颜色:',
stationPositionX: 'x坐标:',
stationPositionY: 'y坐标:',
stationControlCode: '控制模式编码:',
stationControlName: '控制模式名称:',
zokContent: '中控内容:',
zakContent: '站控内容:',
jjzkContent: '紧急站控/总报警内容:',
zzkContent: '站中控内容:',
stationControlPositionX: '坐标 x:',
stationControlPositionY: '坐标 y:',
stationControlZok: '中控',
skinDesignation: 'SkinName', skinDesignation: 'SkinName',
skinCoding: 'SkinCoding', skinCoding: 'SkinCoding',
coordinatesOrigin: 'CoordinatesOrigin', coordinatesOrigin: 'CoordinatesOrigin',
skinDeleteConfirmation: 'This will permanently remove the skin. Do you want to continue?',
addMapSkin: 'AddMapSkin', addMapSkin: 'AddMapSkin',
updateMapSkin: 'UpdateMapSkin', updateMapSkin: 'UpdateMapSkin',
maxScaling: '(The maximum scale is 8 steps)',
skinCodingInput: 'Please enter skin code',
skinDesignationInput: 'Please enter skin name',
coordinatesOriginInput: 'Please enter the origin coordinates',
scalingInput: 'Please enter the scale',
scalingInputPrompt: 'Please enter a valid scale',
skinCodingExist: 'Map skin codes already exist',
stationKilometerMark: 'StationKilometerMark', stationKilometerMark: 'StationKilometerMark',
arrivalTime: 'ArrivalTime', arrivalTime: 'ArrivalTime',
operationGraphPublished: 'The operation diagram is published as', operationGraphPublished: 'The operation diagram is published as',
@ -332,10 +312,8 @@ export default {
importOperationGraph: 'ImportOperationGraph', importOperationGraph: 'ImportOperationGraph',
publishOperationGraph: 'PublishOperationGraph', publishOperationGraph: 'PublishOperationGraph',
deleteOperationGraph: 'DeleteOperationGraph', deleteOperationGraph: 'DeleteOperationGraph',
underImport: 'UnderImport...',
mapList: 'MapList', mapList: 'MapList',
import: 'Import', import: 'Import',
selectImportFiles: 'Select the file you want to import',
createNewOperationGraph: 'CreateNewOperationGraph', createNewOperationGraph: 'CreateNewOperationGraph',
setOperatingSpeed: 'SetOperatingSpeed', setOperatingSpeed: 'SetOperatingSpeed',
speedClass1: 'SpeedLevel 1', speedClass1: 'SpeedLevel 1',
@ -348,29 +326,17 @@ export default {
stopTime: 'StopTime', stopTime: 'StopTime',
entranceStation: 'EntranceStation', entranceStation: 'EntranceStation',
exportStation: 'ExportStation', exportStation: 'ExportStation',
speedLevelEnter1: 'Please enter speed level 1',
speedLevelEnter2: 'Please enter speed level 2',
speedLevelEnter3: 'Please enter speed level 3',
speedLevelEnter4: 'Please enter speed level 4',
nameEnter: 'Please enter name',
drivingDirectionSelect: 'Please choose your driving direction',
timeBetweenDeparturesEnter: 'Please enter the interval',
stopTimeEnter: 'Please enter the docking time',
entranceStationSelect: 'Please select the entrance',
exportStationSelect: 'Please select the exit gate',
validityCheck: 'ValidityCheck', validityCheck: 'ValidityCheck',
setupOperationGraph: 'SetupOperationGraph', setupOperationGraph: 'SetupOperationGraph',
selectOperationGraphDataRange: 'SelectOperationGraphDataRange', selectOperationGraphDataRange: 'SelectOperationGraphDataRange',
to: 'to', to: 'to',
selectionTimeRange: 'Please select time range', selectionTimeRange: 'Please select time range',
selectDataRange: 'Please select the data range range',
pointSystem1: 'OnePointSystem', pointSystem1: 'OnePointSystem',
pointSystem2: 'TwoPointSystem', pointSystem2: 'TwoPointSystem',
pointSystem5: 'FivePointSystem', pointSystem5: 'FivePointSystem',
skinType: 'SkinType', skinType: 'SkinType',
turnoverTime: 'TurnoverTime', turnoverTime: 'TurnoverTime',
productList: 'ProductList', productList: 'ProductList',
deleteTypeHint: 'This action deletes the type. Do you want to continue?',
belongsToMapName: 'BelongsToMapName', belongsToMapName: 'BelongsToMapName',
productType: 'ProductType', productType: 'ProductType',
productCode: 'ProductCode', productCode: 'ProductCode',
@ -379,164 +345,148 @@ export default {
associateTrainingTypes: 'AssociateTrainingTypes', associateTrainingTypes: 'AssociateTrainingTypes',
createTrainingCategories: 'CreateTrainingCategories', createTrainingCategories: 'CreateTrainingCategories',
editTrainingCategories: 'EditTrainingCategories', editTrainingCategories: 'EditTrainingCategories',
productCodeEnter: 'Please enter the product code',
productNameEnter: 'Please enter product name',
productDescriptionEnter: 'Please enter product description',
trainingTypeSelect: 'Please select the associated training type',
linkWidth: 'LinkWidth', linkWidth: 'LinkWidth',
maxLinkWidth: '(Link width is at most 20)', maxLinkWidth: '(Link width is at most 20)',
sectionWidth: 'SectionWidth', sectionWidth: 'SectionWidth',
maxSectionWidth: '(Section width is maximum 30)', maxSectionWidth: '(Section width is maximum 30)',
showWatermarkOrNot: 'ShowWatermarkOrNot', showWatermarkOrNot: 'ShowWatermarkOrNot',
linkWidthInput: 'Please enter Link width', stationstandName: 'Select station name:',
linkWidthInputPrompt: 'Please enter a valid Link width', stationstandDirection: 'Direction of the platform:',
sectionWidthInput: 'Please enter section width', stationstandHasDoor: 'Whether to display screen door:',
sectionWidthInputPrompt: 'Please enter a valid segment width', stationstandNameColon: 'Name of the platform:',
selectShowWatermark: 'Select whether or not to watermark', stationstandTopBottom: 'Up-and-down direction:',
stationstandName: '选择车站名称:', stationstandShowName: 'Show name or not:',
stationstandDirection: '站台方向:', stationstandWidth: 'width w:',
stationstandHasDoor: '是否显示屏蔽门:', stationstandHeight: 'highly h:',
stationstandNameColon: '站台名称:',
stationstandTopBottom: '上下行方向:',
stationstandShowName: '是否显示名称:',
stationstandWidth: '宽度 w:',
stationstandHeight: '高度 h:',
stationstandPositionX: '坐标 x:',
stationstandPositionY: '坐标 y:',
switchCode: '道岔编码:', switchCode: 'Switch coding:',
switchName: '道岔名称:', switchName: 'The name of the switch:',
switchNameC: '道岔名称', switchNameC: 'The name of the switch',
switchShowName: '是否显示道岔名称:', switchShowName: 'Whether the switch name is displayed:',
switchPositionX: '道岔名称x偏移量:', switchPositionX: 'Switch name x offset:',
switchPositionY: '道岔名称y偏移量:', switchPositionY: 'Switch name y offset:',
turnTime: '道岔转换时间:', turnTime: 'The switch changes time:',
timeoutShow: '是否显示道岔倒计时时间:', timeoutShow: 'Whether to display switch countdown time:',
sectionACode: '关联的A Section Code:', sectionACode: 'Associated with A Section Code:',
sectionBCode: '关联的B Section Code:', sectionBCode: 'Associated with B Section Code:',
sectionCCode: '关联的C Section Code:', sectionCCode: 'Associated with C Section Code:',
switchTpX: '时间x坐标偏移量:', switchTpX: 'Time x offset:',
switchTpY: '时间y坐标偏移量:', switchTpY: 'Time y offset:',
textCode: '文字编码:', textCode: 'Literal encoding:',
textContent: '文本内容:', textContent: 'The text content:',
textFont: '字体格式:', textFont: 'Font format:',
textFontColor: '字体颜色:', textFontColor: 'The font color:',
trainCode: '列车编号:', trainCode: 'Train number:',
groupNumber: '车组号:', groupNumber: 'The number of:',
modelCode: '车类型:', modelCode: 'Car type:',
trainmodelCreate: '新建车类型', trainmodelCreate: 'New car type',
trainmodelUpdate: '更新列车模型', trainmodelUpdate: 'Update train model',
trainTypeName: '列车类型名称:', trainTypeName: 'Train type name:',
trainLength: '列车长度:', trainLength: 'The length of the train:',
trainSafeDistance: '安全距离:', trainSafeDistance: 'A safe distance from:',
trainMaxSafeDistance: '最大安全距离:', trainMaxSafeDistance: 'Maximum safe distance:',
averageVelocity: '平均速度:', averageVelocity: 'The average velocity:',
averageDeceleration: '平均减速度:', averageDeceleration: 'Mean deceleration:',
defaultVelocity: '默认速度:', defaultVelocity: 'The default rate:',
maxVelocity: '最大速度:', maxVelocity: 'Maximum speed:',
trainWindowCode: '车次窗编码:', trainWindowCode: 'Number window code:',
trainWindowWidth: '车次窗宽度:', trainWindowWidth: 'Train window width:',
trainWindowHeight: '车次窗高度:', trainWindowHeight: 'Number window height:',
trainWindowSectionCode: '关联区段:', trainWindowSectionCode: 'Related sections:',
deleteTrainWindow: '一键删除车次窗', deleteTrainWindow: 'Delete the number window with one click',
createTrainWindow: '一键创建车次窗', createTrainWindow: 'Create a train window with one click',
zcCodeColon: '编码:', showZc: 'Whether or not visible:',
showZc: '是否可见:',
pathUnitList: '路径单元列表', pathUnitList: 'Path unit list',
startSectionCode: '始端停车点', startSectionCode: 'Starting stop',
endSectionCode: '终端停车点', endSectionCode: 'Terminal stop',
pathUnitCode: '路径单元code', pathUnitCode: 'Path unit code',
pathUnitMapName: '所属地图名称', pathUnitMapName: 'Map name',
orderNum: '优先级', orderNum: 'priority',
pathName: '进路名称', pathName: 'In the name of the',
affiliationStationCode: '所属车站名称', startingSignalName: 'Name of starting signal',
startingSignalName: '始端信号机名称', endingSignalName: 'Name of terminal signal',
endingSignalName: '终端信号机名称',
routeID: '进路ID', routeID: 'Route ID',
routeName: '进路名称:', routeName: 'In the name of the:',
routeMapId: '所属地图名称', routeStationName: 'Station name',
routeStationName: '所属车站名称',
routeStartSignalCode: '始端信号机名称',
routeEndSignalCode: '终端信号机名称',
startSectionCodeColon: '始端停车点:', startSectionCodeColon: 'Starting stop:',
endSectionCodeColon: '终端停车点:', endSectionCodeColon: 'Terminal stop:',
routePreview: '进路预览', routePreview: 'In the preview',
accessType: '进路性质类型', accessType: 'Access property type',
automaticAccessType: '自动进路类型', automaticAccessType: 'Automatic access type',
nearSectionCode: '接近区段名称', nearSectionCode: 'Close to segment name',
continueProtectSwitchData: '延续保护道岔数据', continueProtectSwitchData: 'Continue to protect switch data',
accessSideTurnoutData: '进路侧防道岔数据', accessSideTurnoutData: 'Access side turnout data',
turnBackRailName: '折返轨名称', turnBackRailName: 'Name of reentrant rail',
routeSegmentData: '进路自动触发区段数据', routeSegmentData: 'The approach automatically triggers the segment data',
routeProtectsData: '进路延续保护区段数据', routeProtectsData: 'Path continuation protects segment data',
accessPhysical: '进路物理区段数据', accessPhysical: 'Access physical segment data',
routeAccessScreenData: '进路屏蔽门数据', routeAccessScreenData: 'Access screen door data',
routeAccessTurnoutData: '进路道岔数据', routeAccessTurnoutData: 'access switch data ',
hostileApproachData: '敌对进路数据', hostileApproachData: 'hostileApproachData ',
relation: '关系', professor: 'relation',
associatedRoute: '关联进路:', associatedRoute: 'associatedRoute:',
associatedHostileRecord: '关联敌对记录', associatedHostileRecord: 'Associated hostile record',
routeArc: '是否自动追踪/联锁自动触发:', routeArc: 'Whether automatic tracking/interlock triggers automatically:',
routeFlt: '是否车队/联锁自动进路:', routeFlt: 'Whether convoy/interlock automatic approach:',
delayUnlockingTime: '延时解锁时间:', delayUnlockingTime: 'Delay unlocking time:',
accessTypeColon: '进路性质类型:', accessTypeColon: 'Access property type:',
automaticAccessTypeColon: '自动进路类型:', automaticAccessTypeColon: 'Automatic access type:',
startSignalId: '始端信号机ID:', startSignalId: 'Initial signal ID:',
endSignalId: '终端信号机ID:', endSignalId: 'Terminal signal machine ID:',
switchType: '道岔类型', switchType: 'Switch type',
switchId: '道岔ID', switchId: 'Switch ID',
accessSwitchList: '进路道岔数据:', accessSwitchList: 'Access turnout data:',
accessStandList: '进路屏蔽门数据:', accessStandList: 'Access screen door data:',
accessSectionList: '进路物理区段数据:', accessSectionList: 'Access physical segment data:',
turnBackSectionCode: '折返轨ID:', turnBackSectionCode: 'Turn back track ID:',
routeFlankProtectionList: '侧防道岔数据:', routeFlankProtectionList: 'Side turnout data:',
routeOverlapSwitchList: '延续保护道岔数据:', routeOverlapSwitchList: 'Continue to protect switch data:',
routeOverlapSectionList: '进路延续保护区段数据:', routeOverlapSectionList: 'Path continuation protects segment data:',
routeTriggerSectionList: '进路自动触发区段数据:', routeTriggerSectionList: 'The approach automatically triggers the segment data:',
nearSectionCodeColon: '接近区段ID:', nearSectionCodeColon: 'Close to extent ID:',
thenList: '交路列表', thenList: 'Then list',
startStation: '起始站', startStation: 'Originating station',
endStation: '终到站', endStation: 'Into standing',
routingCode: '交路code', routingCode: 'Routing code',
routingName: '交路名称', routingName: 'Pay the road name',
startStationCodeColon: '起始站:', startStationCodeColon: 'Originating station:',
startStationCode: '起始站台', startStationCode: 'The starting platform',
endStationCode: '终到站台', endStationCode: 'Into the platform',
routingDirection: '方向', routingDirection: 'The direction of',
remarks: '描述', remarks: 'describe',
remarksColon: '描述:', remarksColon: 'describe:',
trafficSegmentData: '交路区段数据:', trafficSegmentData: 'Traffic segment data:',
startSectionColon: '起始区段:', startSectionColon: 'The starting blocks:',
endStationColon: '终到站:', endStationColon: 'Into standing:',
endSectionColon: '终到区段:', endSectionColon: 'Into sections:',
stationCodeClomn: '车站编码', stationCodeClomn: 'The station code',
blockCodingClomn: '区段编码', blockCodingClomn: 'Block coding',
routing: '交路', routing: 'Pay the way',
linkageSwitchList: '联动道岔列表', linkageSwitchList: 'Linkage switch list',
switchACode: '道岔1编号', switchACode: 'Switch number 1',
switchBCode: '道岔2编号', switchBCode: 'Switch number 2',
switchACodeNum: '道岔ID 1:', switchACodeNum: 'Switch ID 1:',
switchBCodeNum: '道岔ID 2:' switchBCodeNum: 'Switch ID 2:'
}; };

View File

@ -1,123 +1,88 @@
export default { export default {
name: 'Name', name: 'Name',
productType: 'ProductType', productType: 'Product type',
map: 'Map', map: 'Map',
state: 'State', state: 'State',
commodityName: 'CommodityName', commodityName: 'Commodity name',
mapName: 'MapName', mapName: 'Map name',
courseName: 'CourseName', courseName: 'Course name',
price: 'Price', price: 'Price',
describtion: 'Describtion', describtion: 'Describtion',
creationTime: 'CreationTime', creationTime: 'Creation time',
setupFailure: 'SetupFailure', setupFailure: 'Setup failure',
setupEffective: 'SetupEffective', setupEffective: 'Setup effective',
organizationOrEnterprise: 'Organization/Enterprise', organizationOrEnterprise: 'Organization/Enterprise',
userName: 'UserName', userName: 'UserName',
permissionType: 'PermissionType', permissionType: 'Permission type',
permissionNumber: 'PermissionNumber', permissionNumber: 'Permission number',
permanenceOrNot: 'PermanenceOrNot', permanenceOrNot: 'Permanence or not',
startDate: 'StartDate', startDate: 'StartDate',
purchaseMonths: 'PurchaseMonths', purchaseMonths: 'Purchase months',
totalPrice: 'TotalPrice', totalPrice: 'Total price',
paymentMethod: 'PaymentMethod', paymentMethod: 'Payment method',
creationDate: 'CreationDate', creationDate: 'Creation date',
orderType: 'OrderType', orderType: 'Order type',
contractNumber: 'ContractNumber', contractNumber: 'Contract number',
businessType: 'BusinessType', businessType: 'Business type',
paymentStatus: 'PaymentStatus', paymentStatus: 'Payment status',
salesman: 'Salesman', salesman: 'Salesman',
obtainQrCode: 'ObtainQrCode', obtainQrCode: 'Obtain QrCode',
userMobile: 'UserMobile', userMobile: 'User mobile',
mapProductName: 'MapProductName', mapProductName: 'Map product name',
publicOrPrivate: 'Public/Private', publicOrPrivate: 'Public/Private',
totalPermissions: 'TotalPermissions', totalPermissions: 'Total permissions',
residualPermissionNumber: 'ResidualPermissionNumber', residualPermissionNumber: 'Residual permissionNumber',
authorityStatus: 'AuthorityStatus', authorityStatus: 'Authority status',
startTime: 'StartTime', startTime: 'StartTime',
endTime: 'EndTime', endTime: 'EndTime',
courseAuthorityStatus: 'CourseAuthorityStatus', courseAuthorityStatus: 'Course authority status',
source: 'Source', source: 'Source',
founderPhone: 'FounderPhone', founderPhone: 'Founder phone',
founder: 'Founder', founder: 'Founder',
privilegePackaging: 'PrivilegePackaging', privilegePackaging: 'Privilege packaging',
packaging: 'Packaging', packaging: 'Packaging',
unpacking: 'Unpacking', unpacking: 'Unpacking',
authorityDetails: 'AuthorityDetails', authorityDetails: 'Authority details',
renew: 'Renew', renew: 'Renew',
productName: 'ProductName', productName: 'Product name',
updateProductTip: 'Will this operation modify the commodity status?',
deleteProductTip: 'This operation will delete the item. Do you want to continue?',
recovery: 'Recovery', recovery: 'Recovery',
permissionPack: 'PermissionPack', permissionPack: 'Permission pack',
privilegeTransferQRCode: 'PrivilegeTransferQRCode', privilegeTransferQRCode: 'Privilege transfer QRCode',
getQRCodeFailure: 'Failed to obtain the package authority qr code', generatingQRCode: 'Generating QRCode',
recoveryPrivilegeTip: 'This action will reclaim permissions. Do you want to continue?', transferQRCode: 'Transfer QRCode',
unpackingTip: 'This operation will be unpacked. Do you want to continue?',
generatingQRCode: 'GeneratingQRCode',
transferQRCode: 'TransferQRCode',
today: 'Today', today: 'Today',
yesterday: 'Yesterday', yesterday: 'Yesterday',
aWeekAgo: 'AWeekAgo', addOrder: 'AddOrder',
updateOrder: 'UpdateOrder', aWeekAgo: 'A week ago',
renewOrder: 'RenewOrder', updateOrder: 'Update order',
unknownRouter: 'UnknownRouter', renewOrder: 'Renew order',
increasePurchaseTime: 'IncreasePurchaseTime', unknownRouter: 'Unknown router',
choosePurchaseTime: 'ChoosePurchaseTime', increasePurchaseTime: 'Increase purchase time',
increasePermissionNumber: 'IncreasePermissionNumber', choosePurchaseTime: 'Choose purchase time',
choosePermissionNumber: 'ChoosePermissionNumber', increasePermissionNumber: 'Increase permission number',
choosePermissionNumber: 'Choose permission number',
itemPricing: 'itemPricing', itemPricing: 'itemPricing',
organizationInput: 'Please enter the name of the organization or business', addUserPermissions: 'Add user permissions',
productSelect: 'Please select products', publicAuthority: 'Public authority',
itemPricingInput: 'Please enter unit price', privateAuthority: 'Private authority',
orderTypeSelect: 'Please select the order type',
contractNumberInput: 'Please enter the contract number',
contractNumberLimit: 'The length is between 1 and 25 characters',
salesmanInput: 'Please select a salesperson',
foreverRadio: 'Please select a',
amountInput: 'Please enter the number of permissions to purchase',
amountInputError: 'Please enter the number of valid permissions',
totalPriceInput: 'Please enter the total price',
totalPriceInputError1: 'Please enter the price in two decimal places',
totalPriceInputError2: 'Please enter valid total price',
monthAmountInput: 'Please enter purchase month',
monthAmountInputError: 'Please enter valid months of purchase',
startTimePick: 'Please select a start date',
bizTypeSelect: 'Select a business type',
payWaysSelect: 'Please select payment method',
payStatusSelect: 'Please select payment status',
addOrganizationPrefix: 'Whether to add "',
addOrganizationSuffix: '" Organization/enterprise entry information?',
publicAuthority: 'PublicAuthority',
privateAuthority: 'PrivateAuthority',
optionPrivilegeTransfer: 'Option privilege transfer', optionPrivilegeTransfer: 'Option privilege transfer',
trainingList: 'TrainingList', trainingList: 'Training list',
selectPermissionsPackage: 'Select package authority', selectPermissionsPackage: 'Select package authority',
addRecords: 'AddRecords', addRecords: 'Add records',
totalNumber: 'TotalNumber', totalNumber: 'Total number',
permissionToDistributeQRCode: 'Permission to distribute qr code', permissionToDistributeQRCode: 'Permission to distribute qr code',
packagingFailed: 'Authority distribution packaging failed',
selectPackagingRecord: 'Please select the packaging record',
editPermissionRules: 'Edit permission rules', editPermissionRules: 'Edit permission rules',
addGoods: 'AddGoods', addGoods: 'Add goods',
updateGoods: 'UpdateGoods', updateGoods: 'Update goods',
lesson: 'Lesson', lesson: 'Lesson',
whetherTrial: 'WhetherTrial', whetherTrial: 'WhetherTrial',
unitOfTime: 'UnitOfTime', unitOfTime: 'Unit of time',
trialTime: 'TrialTime', trialTime: 'Trial time',
goodsNameInput: 'Please enter product name', distributionUser: 'Distribution user',
productTypeInput: 'Please select product type', orderNumber: 'Order Number',
mapInput: 'Please select map', select: 'Select',
productInput: 'Please select product', sourcesOfInformation: 'Sources of information',
lessonInput: 'Please select courses', distributePermission: 'Distribute permission',
trialTimeInput: 'Please enter trial duration', orderCreation: 'Order creation',
unitOfTimeRadio: 'Please select a time unit', chooseGoods: 'Choose goods'
goodsDescribtionInput: 'Please enter product description',
addUserPermissions: 'Add user permissions',
userNameInput: 'Please enter user name',
permissionTypeInput: 'Please select the permission type',
distributionUser: 'DistributionUser',
orderNumber: 'OrderNumber',
sourcesOfInformation: 'SourcesOfInformation',
distributePermission: 'DistributePermission',
orderCreation: 'OrderCreation'
}; };

View File

@ -1,152 +1,216 @@
export default { export default {
pleaseSelect: '请选择', pleaseSelect: 'Please select',
selectEquipment: '请选择设备', selectEquipment: 'Please select equipment',
deviceTypeNotNull: '设备类型码不能为空', deviceTypeNotNull: 'The device type code cannot be empty',
operationTypeNotNull: '操作码不能为空', operationTypeNotNull: 'The opcode cannot be empty',
tipsNotNull: '提示信息不能为空', tipsNotNull: 'The prompt message cannot be empty',
pleaseSelectEncoding: '请选择唯一编码', pleaseSelectEncoding: 'Please select a unique encoding',
pleaseEnterStatusSignal: '请输入状态信号名称', pleaseEnterStatusSignal: 'Please enter the name of the status signal',
pleaseEnterXCoordinate: '请输入x坐标', pleaseEnterXCoordinate: 'Please enter the x coordinate',
pleaseEnterYCoordinate: '请输入y坐标', pleaseEnterYCoordinate: 'Please enter the y coordinate',
pleaseSelectLine: '请选择Line', pleaseSelectLine: 'Please select a Line',
pleaseSelectLineType: '请选择Line类型', pleaseSelectLineType: 'Select type Line',
pleaseSelectLineWidth: '请输入线条宽度', pleaseSelectLineWidth: 'Please enter line width',
linkXCoordinate: '请输入Link x坐标', linkXCoordinate: 'Please enter the Link x coordinate',
linkYCoordinate: '请输入Link y坐标', linkYCoordinate: 'Please enter the Link y coordinate',
linkEnterLength: '请输入显示长度', linkEnterLength: 'Please enter display length',
linkEnterDisplayLength: '请输入真实长度', linkEnterDisplayLength: 'Please enter the true length',
linkSelectBase: '请选择基础Link', linkSelectBase: 'Select the base Link',
linkEnterLeft: '请输入左侧正向Link', linkEnterLeft: 'Please enter the left forward Link',
linkEnterRight: '请输入右侧正向Link', linkEnterRight: 'Please enter the forward Link on the right',
linkSelectName: '请输入Link名称', linkSelectName: 'Enter the Link name',
linkSelectDisplayLength: '请输入Link实际长度', linkSelectDisplayLength: 'Please enter the actual length of the Link',
lengthShow: '显示长度:', lengthShow: 'According to the length of the:',
lengthFact: '真实长度:', lengthFact: 'The real length:',
color: '颜色:', color: 'color:',
pointX: '坐标 x:', pointX: 'Coordinates x:',
pointY: '坐标 y:', pointY: 'Coordinates y:',
direct: '方向:', direct: 'The direction of:',
basisLink: '基础Link:', basisLink: 'Based on the Link:',
pleaseSelectSectionName: '请选择区段名称', pleaseSelectSectionName: 'Select the section name',
pleaseFillOffset: '请填写偏移量', pleaseFillOffset: 'Please fill in the offset',
pleaseFillValue: '请填写数值', pleaseFillValue: 'Please fill in the value',
pleaseSelectLeftSectionName: '请选择左侧区段名称', pleaseSelectLeftSectionName: 'Please select the left section name',
pleaseSelectRightSectionName: '请选择右侧区段名称', pleaseSelectRightSectionName: 'Select the right section name',
pleaseEnterYValue: '请输入坐标Y值', pleaseEnterYValue: 'Please enter the coordinate Y value',
pleaseEnterSectionType: '请输入区段类型', pleaseEnterSectionType: 'Please enter the section type',
pleaseEnterSectionName: '请输入区段名称', pleaseEnterSectionName: 'Please enter a section name',
pleaseSelectAssociatedPlatform: '请选择关联站台', pleaseSelectAssociatedPlatform: 'Please select the associated platform',
pleaseEnterLeftStopPointOffset: '请输入左向停车点偏移量', pleaseEnterLeftStopPointOffset: 'Please enter left stop point offset',
rightStopPointOffset: '请输入右向停车点偏移量', rightStopPointOffset: 'Please enter an offset to the right stop point',
destinationCode: '请输入目的地码', destinationCode: 'Please enter destination code',
destinationCodePointX: '请输入目的地码坐标X', destinationCodePointX: 'Please enter destination code coordinate X',
destinationCodePointY: '请输入目的地码坐标Y', destinationCodePointY: 'Please enter destination code coordinate Y',
sectionNamePointX: '请输入区段名称坐标X', sectionNamePointX: 'Please enter the section name coordinate X',
sectionNamePointY: '请输入区段名称坐标Y', sectionNamePointY: 'Please enter the section name coordinate Y',
logicSectionNameSort: '请选择逻辑区段名称排序', logicSectionNameSort: 'Select logical extent name sort',
sectionOffsetLeft: '请输入左侧Link偏移量', sectionOffsetLeft: 'Please enter the left Link offset',
sectionSepTypeLeft: '请选择左侧分隔符', sectionSepTypeLeft: 'Please select the left separator',
sectionOffsetRight: '请输入右侧Link偏移量', sectionOffsetRight: 'Please enter the right Link offset',
sectionSepTypeRight: '请选择右侧分隔符', sectionSepTypeRight: 'Select the right separator',
selectPhysicalExtentName: '请选择物理区段名称', selectPhysicalExtentName: 'Select the physical extent name',
pleaseEnterSemaphoreName: '请输入信号灯名称', pleaseEnterSemaphoreName: 'Please enter a semaphore name',
pleaseEnterSignalName: '请输入信号机唯一名称', pleaseEnterSignalName: 'Please enter a unique name for the signal',
pleaseEnterSignalOffset: '请输入偏移量', pleaseEnterSignalOffset: 'Please enter an offset',
pleaseEnterSignalStation: '请输入设备集中站', pleaseEnterSignalStation: 'Please enter device central station',
pleaseEnterSignalPositionX: '请输入信号机x', pleaseEnterSignalPositionX: 'Please input signal x',
pleaseEnterSignalPositionY: '请输入信号机y', pleaseEnterSignalPositionY: 'Please input signal y',
signalButtonPositionX: '请输入按钮x', signalButtonPositionX: 'Please enter button x',
signalButtonPositionY: '请输入按钮y', signalButtonPositionY: 'Please enter button y',
signalGuidePositionX: '请输入引导信号x', signalGuidePositionX: 'Please enter the boot signal x',
signalGuidePositionY: '请输入引导信号y', signalGuidePositionY: 'Please enter the boot signal y',
stationName: '请输入车站名称', stationName: 'Please enter station name',
stationKmRange: '请输入公里标距离', stationKmRange: 'Please enter kilometer mark distance',
stationKmPost: '请输入公里标名称', stationKmPost: 'Please enter the name of the kilometer mark',
stationPositionX: '请输入x坐标',
stationPositionY: '请输入y坐标',
stationControlStationName: '请选择车站名称', stationControlStationName: 'Please select the station name',
stationControlStationCode: '请选择所属车站', stationControlStationCode: 'Please select your station',
stationControlZokContent: '请输入中控内容', stationControlZokContent: 'Please enter the content of central control',
stationControlZakContent: '请输入站控内容', stationControlZakContent: 'Please enter the content of station control',
stationControlJjzkContent: '请输入紧急站控内容', stationControlJjzkContent: 'Please enter emergency station control',
stationControlZzkContent: '请输入站中控内容', stationControlZzkContent: 'Please input the content of station central control',
stationControlPositionX: '请输入坐标x', stationControlPositionX: 'Please enter coordinate x',
stationControlPositionY: '请输入坐标y', stationControlPositionY: 'Please enter coordinate y',
pleaseReSelectDevice: '请重新选择设备', pleaseReSelectDevice: 'Please re-select the device',
stationCode: '请选择关联车站', stationCode: 'Please select the associated station',
stationstandCountName: '请输入计数器名称', stationstandCountName: 'Please enter a counter name',
doorLocationType: '请选择站台方向', doorLocationType: 'Please choose the platform direction',
deviceStationCode: '请选择所属设备集中站', deviceStationCode: 'Please select your own centralized station',
stationstandDirection: '请选择上下行方向', stationstandDirection: 'Please choose the upstream and downstream direction',
stationstandWidth: '请输入车站宽度', stationstandWidth: 'Please enter station width',
stationstandHeight: '请输入车站高度', stationstandHeight: 'Please enter station height',
stationstandPositionX: '请输入x坐标',
stationstandPositionY: '请输入y坐标',
switchName: '请输入道岔名称', switchName: 'Please enter the switch name',
switchNamePointX: '请输入道岔名称坐标x', switchNamePointX: 'Please enter switch name coordinate x',
switchNamePointY: '请输入道岔名称坐标y', switchNamePointY: 'Please enter switch name coordinate y',
switchStationCode: '请输入设备集中站', switchStationCode: 'Please enter device central station',
switchTurnTime: '请输入道岔转换时间', switchTurnTime: 'Please enter switch time',
switchTpX: '请输入时间坐标x', switchTpX: 'Please enter the time coordinate x',
switchTpY: '请输入时间坐标y', switchTpY: 'Please enter the time coordinate y',
selectText: '请选择Text', selectText: 'Please select the Text',
pleaseEnterContent: '请输入内容', pleaseEnterContent: 'Please enter content',
textFont: '请选择文字格式', textFont: 'Please select the text format',
textFontColor: '请选择文字颜色', textFontColor: 'Please select the text color',
pleaseEnterGroupNumber: '请输入车组号', pleaseEnterGroupNumber: 'Please enter the group number',
selectTrainType: '请选择车类型', selectTrainType: 'Please select car type',
trainPositionX: '请输入x坐标位置', trainPositionX: 'Please enter the x position',
trainPositionY: '请输入y坐标位置', trainPositionY: 'Please enter the y position',
pleaseEnterTrainNumber: '请填写车组号', pleaseEnterTrainNumber: 'Please fill in the group number',
trainCode: '列车模型Code不能为空', trainCode: 'The train model Code cannot be empty',
pleaseEnterTrainTypeName: '请输入列车类型名称', pleaseEnterTrainTypeName: 'Please enter train type name',
trainLength: '请输入列车长度', trainLength: 'Please enter train length',
safeDistance: '请输入安全距离', safeDistance: 'Please enter a safe distance',
maxSafeDistance: '请输入最大安全距离', maxSafeDistance: 'Please enter the maximum safe distance',
averageVelocity: '请输入平均速度', averageVelocity: 'Please enter average speed',
averageDeceleration: '请输入平均减速度', averageDeceleration: 'Please enter average deceleration',
defaultVelocity: '请输入默认速度', defaultVelocity: 'Please enter the default speed',
maxVelocity: '请输入最大速度', maxVelocity: 'Please enter the maximum speed',
trainWindowWidth: '请输入车次窗宽度', trainWindowWidth: 'Please enter the number window width',
trainWindowHeight: '请输入车次窗高度', trainWindowHeight: 'Please enter the number window height',
trainWindowSectionCode: '请输入关联区段', trainWindowSectionCode: 'Please enter the association section',
visible: '请选择是否可见', visible: 'Please select whether it is visible',
pleaseSelectStartSignal: '请选择开始信号机', pleaseSelectStartSignal: 'Please select start signal',
pleaseSelectEndSignal: '请选择结束信号机', pleaseSelectEndSignal: 'Please select end signal',
pleaseEnterPathName: '请输入进路名称', pleaseEnterPathName: 'Please enter the path name',
proximitySection: '请选择接近区段', proximitySection: 'Please select the proximity section',
accessPropertyType: '请选择进路性质类型', accessPropertyType: 'Please select the access property type',
autoAccessType: '请选择自动进路类型', autoAccessType: 'Please select auto - access type',
physicalSegmentData: '请选择进路物理区段数据', physicalSegmentData: 'Select access physical segment data',
routingName: '请输入交路名称', routingName: 'Please enter the traffic name',
startStationCode: '请选择起始车站', startStationCode: 'Please select the starting station',
startSectionCode: '请选择起始区段', startSectionCode: 'Select the start section',
endStationCode: '请选择终到车站', endStationCode: 'Please choose the terminal',
endSectionCode: '请选择终到区段', endSectionCode: 'Please select end to section',
selectTurnoutID: '请选择道岔ID', selectTurnoutID: 'Please select the turnout ID',
switchesCannot: '道岔不能为同一个', switchesCannot: 'Switches cannot be identical',
pleaseInputName: 'Please enter name',
pleaseSelectStatus: 'Please select state',
pleaseInputCode: 'Please enter code',
strLength1To25: 'The length is between 1 and 25 characters',
strLengthNotExceed50: 'No more than 50 characters',
pleaseEnterMapName: 'Please enter a map name',
pleaseChooseSkinCode: 'Please choose skin style',
pleaseSelectMapSource: 'Please select the map source',
pleaseSelectAssociatedCity: 'Please select the associated city',
pleaseSelectAssociatedSkin: 'Please select associated skin',
pleaseEnteMapLinkWidth: 'Please enter map Link width',
pleaseEnterMapSectionWidth: 'Please enter map section width',
organizationInput: 'Please enter the name of the organization or business',
productSelect: 'Please select products',
itemPricingInput: 'Please enter unit price',
orderTypeSelect: 'Please select the order type',
contractNumberInput: 'Please enter the contract number',
salesmanInput: 'Please select a salesperson',
authorAmountInput: 'Please enter the number of permissions to purchase',
authorAmountInputError: 'Please enter the number of valid permissions',
totalPriceInput: 'Please enter the total price',
totalPriceInputError1: 'Please enter the price in two decimal places',
totalPriceInputError2: 'Please enter valid total price',
monthAmountInput: 'Please enter purchase month',
monthAmountInputError: 'Please enter valid months of purchase',
startTimePick: 'Please select a start date',
bizTypeSelect: 'Select a business type',
payWaysSelect: 'Please select payment method',
payStatusSelect: 'Please select payment status',
goodsNameInput: 'Please enter product name',
productTypeInput: 'Please select product type',
mapInput: 'Please select map',
productInput: 'Please select product',
lessonInput: 'Please select courses',
trialTimeInput: 'Please enter trial duration',
unitOfTimeRadio: 'Please select a time unit',
goodsDescribtionInput: 'Please enter product description',
userNameInput: 'Please enter user name',
permissionTypeInput: 'Please select the permission type',
timeInput: 'Please enter the time',
chooseUser: 'Please select the user',
pleaseInputLessonName: 'Please enter the course name',
pleaseSelectTraining: 'Please select training',
maxScaling: '(The maximum scale is 8 steps)',
skinCodingInput: 'Please enter skin code',
skinDesignationInput: 'Please enter skin name',
coordinatesOriginInput: 'Please enter the origin coordinates',
scalingInput: 'Please enter the scale',
scalingInputPrompt: 'Please enter a valid scale',
selectImportFiles: 'Select the file you want to import',
speedLevelEnter1: 'Please enter speed level 1',
speedLevelEnter2: 'Please enter speed level 2',
speedLevelEnter3: 'Please enter speed level 3',
speedLevelEnter4: 'Please enter speed level 4',
drivingDirectionSelect: 'Please choose your driving direction',
timeBetweenDeparturesEnter: 'Please enter the interval',
stopTimeEnter: 'Please enter the docking time',
entranceStationSelect: 'Please select the entrance',
exportStationSelect: 'Please select the exit gate',
selectDataRange: 'Please select the data range range',
productCodeEnter: 'Please enter the product code',
productNameEnter: 'Please enter product name',
productDescriptionEnter: 'Please enter product description',
trainingTypeSelect: 'Please select the associated training type',
linkWidthInput: 'Please enter Link width',
linkWidthInputPrompt: 'Please enter a valid Link width',
sectionWidthInput: 'Please enter section width',
sectionWidthInputPrompt: 'Please enter a valid segment width',
selectShowWatermark: 'Select whether or not to watermark'
pleaseInputName: '请输入名称',
pleaseSelectStatus: '请选择状态',
pleaseInputCode: '请输入编码',
strLength1To25: '长度在 1 到 25 个字符',
strLengthNotExceed50: '不能超过 50 个字符'
}; };

View File

@ -1,8 +1,8 @@
export default { export default {
code: 'code', code: 'Code',
name: 'name', name: 'Name',
status: 'status', status: 'Status',
remarks: 'remarks', remarks: 'Remarks',
createDirectory: 'Create dictionary', createDirectory: 'Create dictionary',
editDictionary: 'Edit dictionary', editDictionary: 'Edit dictionary',
deleteSuccess: 'Successful deletion', deleteSuccess: 'Successful deletion',
@ -10,7 +10,45 @@ export default {
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',
phoneNumber: 'Cell-phone number' mobile: 'Cell-phone Number',
skinCode: 'Skin Code',
prdType: 'Product Type',
simulationType: 'Simulation Type',
simulationGroupId: 'Simulation Member ID',
productName: 'Product Name',
isError: 'Is Error',
isSuspend: 'Is Suspend',
isDrivingAsplanned: 'Whether to drive as planned',
delUserSimulationIsContinue: 'This operation will delete the user simulation data. Do you want to continue?',
createDetail: 'Create details',
editDetail: 'Editorial details',
mapName: 'Map Name',
trainingName: 'Training Name',
trainingUseTime: 'Training Time',
minute: 'Minute',
second: 'Second',
createSimulationTitle: 'Create Simulation Information',
addSuccess: 'Added Successfully',
pleaseInputNames: 'Please enter your nickname/name/cell phone number',
examUser: 'Examination Users',
examScore: 'Examination Score',
examResult: 'Examination Results',
examName: 'Paper Name',
delExamResultIsContinue: 'This operation will delete the test result. Do you want to continue?',
editExamDetail: 'Edit exam details',
subscribeMap: 'Subscribe',
roles: 'Roles',
email: 'Email',
nickname: 'Nickname',
delTypeIsContinue: 'This operation will delete the type. Do you want to continue?',
permission: 'Permission',
editUserPermission: 'Edit User Rights',
lessonName: 'Lesson Name',
selectTraining: 'Selection Training',
createUserTraining: 'Creating User Training',
editTrainingDetail: 'Editor Training Details',
trainingTime: 'Training duration'
}; };

View File

@ -41,6 +41,8 @@ export default {
recoveryPrivilegesFailed: '回收权限失败', recoveryPrivilegesFailed: '回收权限失败',
unpackingSuccessful: '解包成功', unpackingSuccessful: '解包成功',
unpackingFailed: '解包失败', unpackingFailed: '解包失败',
pleaseEnterNameQuery: '请输入名称查询',
routeSameID: '相同ID的数据已存在',
skinDeleteSuccessfully: '删除皮肤成功', skinDeleteSuccessfully: '删除皮肤成功',
skinDeleteFailed: '删除皮肤失败', skinDeleteFailed: '删除皮肤失败',
@ -57,9 +59,6 @@ export default {
deleteProductSuccessfully: '删除产品成功', deleteProductSuccessfully: '删除产品成功',
deleteProductFailed: '删除产品失败', deleteProductFailed: '删除产品失败',
cannotDeleteProduct: '产品已被使用无法删除', cannotDeleteProduct: '产品已被使用无法删除',
pleaseEnterNameQuery: '请输入名称查询',
routeSameID: '相同ID的数据已存在',
pathCreationSuccessful: '创建交路成功!', pathCreationSuccessful: '创建交路成功!',
createRoutingFailed: '创建交路失败', createRoutingFailed: '创建交路失败',
pathUpdataSuccessful: '更新交路成功!', pathUpdataSuccessful: '更新交路成功!',
@ -74,5 +73,21 @@ export default {
requestFailed: '请求失败', requestFailed: '请求失败',
dataQuestion: '有问题数据', dataQuestion: '有问题数据',
dataList: '数据列表' dataList: '数据列表',
updateProductTip: 'Will this operation modify the commodity status?',
deleteProductTip: 'This operation will delete the item. Do you want to continue?',
getQRCodeFailure: 'Failed to obtain the package authority qr code',
recoveryPrivilegeTip: 'This action will reclaim permissions. Do you want to continue?',
unpackingTip: 'This operation will be unpacked. Do you want to continue?',
updatePrivilegeTip: 'This action will modify the permission status. Do you want to continue?',
addOrganizationPrefix: 'Whether to add "',
addOrganizationSuffix: '" Organization/enterprise entry information?',
packagingFailed: 'Authority distribution packaging failed',
selectPackagingRecord: 'Please select the packaging record',
skinDeleteConfirmation: 'This will permanently remove the skin. Do you want to continue?',
skinCodingExist: 'Map skin codes already exist',
underImport: 'UnderImport...',
deleteTypeHint: 'This action deletes the type. Do you want to continue?'
}; };

View File

@ -2,7 +2,8 @@ export default {
refreshFailed: '刷新失败', refreshFailed: '刷新失败',
createSimulationFailed: '创建仿真失败', createSimulationFailed: '创建仿真失败',
loadMapDataFailed: '加载地图数据失败', loadMapDataFailed: '加载地图数据失败',
getMapStepsFailed: '获取地图步骤数据', getMapStepsFailed: '获取地图步骤数据失败',
getMapDetailFailed: '获取地图详细信息失败',
resetFailed: '重置失败', resetFailed: '重置失败',
startTrainingFailed: '开始实训失败', startTrainingFailed: '开始实训失败',
saveBackgroundFailed: '保存背景失败', saveBackgroundFailed: '保存背景失败',
@ -39,6 +40,10 @@ export default {
codeHasExist: '编码已存在', codeHasExist: '编码已存在',
formartError: '格式不正确,只能是字符/数字/_', formartError: '格式不正确,只能是字符/数字/_',
createDictionaryFailed: '创建字典失败', createDictionaryFailed: '创建字典失败',
updateDictionaryFailed: '更新字典失败' updateDictionaryFailed: '更新字典失败',
createDetailFailed: '创建明细失败',
updateDetailFailed: '更新明细失败',
addFailed: '添加失败',
updateFailed: '更新失败'
}; };

View File

@ -79,5 +79,6 @@ export default {
trainingHasStart: '{{name}}的房间已开始', trainingHasStart: '{{name}}的房间已开始',
trainingNotStart: '{{name}}的房间未开始', trainingNotStart: '{{name}}的房间未开始',
inputRoomNumber: '请输入房间号', inputRoomNumber: '请输入房间号',
chooseRoom: '选择房间' chooseRoom: '选择房间',
month: '月'
}; };

View File

@ -35,9 +35,6 @@ export default {
lastStep: '上一步', lastStep: '上一步',
confirm: '确 定', confirm: '确 定',
cancel: '取 消', cancel: '取 消',
cancelledDelete: '已取消删除',
confirmDeletion: '是否确认删除?',
hint: '提示',
link: 'link', link: 'link',
section: '区段', section: '区段',
@ -63,7 +60,7 @@ export default {
offsetXColon: 'X偏移:', offsetXColon: 'X偏移:',
offsetYColon: 'Y偏移:', offsetYColon: 'Y偏移:',
scalingColon: '缩放比例:', scalingColon: '缩放比例:',
operationUnusual: '操作异常', operationUnusual: '操作异常:',
offsetX: 'X偏移', offsetX: 'X偏移',
offsetY: 'Y偏移', offsetY: 'Y偏移',
scaling: '缩放比例', scaling: '缩放比例',
@ -78,14 +75,6 @@ export default {
publishMapCreation: '从发布地图创建', publishMapCreation: '从发布地图创建',
pleaseEnterMapName: '请输入地图名称',
pleaseChooseSkinCode: '请选择皮肤风格',
pleaseSelectMapSource: '请选择地图来源',
pleaseSelectAssociatedCity: '请选择关联城市',
pleaseSelectAssociatedSkin: '请选择关联皮肤',
pleaseEnteMapLinkWidth: '请输入地图Link宽度',
pleaseEnterMapSectionWidth: '请输入地图区段宽度',
failedLoadListPublishedMaps: '加载已发布地图列表失败', failedLoadListPublishedMaps: '加载已发布地图列表失败',
creatingSuccessful: '创建成功!', creatingSuccessful: '创建成功!',
mapUpdateSuccessful: '更新地图成功!', mapUpdateSuccessful: '更新地图成功!',
@ -124,7 +113,6 @@ export default {
preview: '预览', preview: '预览',
operation: '操作', operation: '操作',
compile: '编辑', compile: '编辑',
delete: '删除',
empty: '清空', empty: '清空',
reset: '重置', reset: '重置',
sectionName: '区段名称', sectionName: '区段名称',
@ -133,7 +121,6 @@ export default {
signalID: '信号机ID:', signalID: '信号机ID:',
activate: '激活', activate: '激活',
segmentData: '进路自动触发区段数据:',
pleaseSelectSignal: '请选择信号机', pleaseSelectSignal: '请选择信号机',
triggerSegmentData: '请选择进路自动触发区段数据', triggerSegmentData: '请选择进路自动触发区段数据',
@ -202,7 +189,6 @@ export default {
linkRp: 'Link 终点坐标:', linkRp: 'Link 终点坐标:',
rulesChange: '规则修改', rulesChange: '规则修改',
sectionNameC: '区段名称:',
splitMerge: '拆分/合并', splitMerge: '拆分/合并',
linkSet: 'Link集合', linkSet: 'Link集合',
selectLink: '选择Link', selectLink: '选择Link',
@ -260,8 +246,6 @@ export default {
isSegmentation: '是否分割:', isSegmentation: '是否分割:',
segmentationPosition: '分割坐标:', segmentationPosition: '分割坐标:',
isCurve: '是否曲线:', isCurve: '是否曲线:',
sectionPoints: '区段显示坐标:',
trainPosType: '列车所在方向:',
physicalSegmentName: '物理区段名称:', physicalSegmentName: '物理区段名称:',
directionType: '形式方向:', directionType: '形式方向:',
@ -282,7 +266,6 @@ export default {
signalOffset: '偏移量:', signalOffset: '偏移量:',
signalPositionX: '信号机x:', signalPositionX: '信号机x:',
signalPositionY: '信号机y:', signalPositionY: '信号机y:',
signalRotate: '旋转角度:',
signalNamePositionX: '信号机名字偏移量 x:', signalNamePositionX: '信号机名字偏移量 x:',
signalNamePositionY: '信号机名字偏移量 y:', signalNamePositionY: '信号机名字偏移量 y:',
signalButtonShow: '是否显示按钮:', signalButtonShow: '是否显示按钮:',
@ -296,7 +279,6 @@ export default {
stationCode: '车站编码:', stationCode: '车站编码:',
zcCode: '所属zc区域编码:', zcCode: '所属zc区域编码:',
centralized: '是否集中站:', centralized: '是否集中站:',
stationNameColon: '车站名称:',
stationRunPlanName: '真实名称:', stationRunPlanName: '真实名称:',
stationVisible: '是否显示:', stationVisible: '是否显示:',
stationNameFont: '车站字体:', stationNameFont: '车站字体:',
@ -315,8 +297,6 @@ export default {
zakContent: '站控内容:', zakContent: '站控内容:',
jjzkContent: '紧急站控/总报警内容:', jjzkContent: '紧急站控/总报警内容:',
zzkContent: '站中控内容:', zzkContent: '站中控内容:',
stationControlPositionX: '坐标 x:',
stationControlPositionY: '坐标 y:',
stationControlZok: '中控', stationControlZok: '中控',
stationstandName: '选择车站名称:', stationstandName: '选择车站名称:',
@ -327,8 +307,6 @@ export default {
stationstandShowName: '是否显示名称:', stationstandShowName: '是否显示名称:',
stationstandWidth: '宽度 w:', stationstandWidth: '宽度 w:',
stationstandHeight: '高度 h:', stationstandHeight: '高度 h:',
stationstandPositionX: '坐标 x:',
stationstandPositionY: '坐标 y:',
switchCode: '道岔编码:', switchCode: '道岔编码:',
switchName: '道岔名称:', switchName: '道岔名称:',
@ -372,7 +350,6 @@ export default {
deleteTrainWindow: '一键删除车次窗', deleteTrainWindow: '一键删除车次窗',
createTrainWindow: '一键创建车次窗', createTrainWindow: '一键创建车次窗',
zcCodeColon: '编码:',
showZc: '是否可见:', showZc: '是否可见:',
pathUnitList: '路径单元列表', pathUnitList: '路径单元列表',
@ -382,16 +359,12 @@ export default {
pathUnitMapName: '所属地图名称', pathUnitMapName: '所属地图名称',
orderNum: '优先级', orderNum: '优先级',
pathName: '进路名称', pathName: '进路名称',
affiliationStationCode: '所属车站名称',
startingSignalName: '始端信号机名称', startingSignalName: '始端信号机名称',
endingSignalName: '终端信号机名称', endingSignalName: '终端信号机名称',
routeID: '进路ID', routeID: '进路ID',
routeName: '进路名称:', routeName: '进路名称:',
routeMapId: '所属地图名称',
routeStationName: '所属车站名称', routeStationName: '所属车站名称',
routeStartSignalCode: '始端信号机名称',
routeEndSignalCode: '终端信号机名称',
startSectionCodeColon: '始端停车点:', startSectionCodeColon: '始端停车点:',
endSectionCodeColon: '终端停车点:', endSectionCodeColon: '终端停车点:',
@ -442,16 +415,8 @@ export default {
skinDesignation: '皮肤名称', skinDesignation: '皮肤名称',
skinCoding: '皮肤编码', skinCoding: '皮肤编码',
coordinatesOrigin: '坐标原点', coordinatesOrigin: '坐标原点',
skinDeleteConfirmation: '此操作将永久删除该皮肤, 是否继续?',
addMapSkin: '添加地图皮肤', addMapSkin: '添加地图皮肤',
updateMapSkin: '更新地图皮肤', updateMapSkin: '更新地图皮肤',
maxScaling: '(缩放比例最大为8级)',
skinCodingInput: '请输入皮肤编码',
skinDesignationInput: '请输入皮肤名称',
coordinatesOriginInput: '请输入原点坐标',
scalingInput: '请输入缩放比例',
scalingInputPrompt: '请输入有效的缩放比例',
skinCodingExist: '地图皮肤编码已存在',
stationKilometerMark: '车站公里标', stationKilometerMark: '车站公里标',
arrivalTime: '到站时间', arrivalTime: '到站时间',
operationGraphPublished: '运行图发布为', operationGraphPublished: '运行图发布为',
@ -460,10 +425,8 @@ export default {
importOperationGraph: '导入运行图', importOperationGraph: '导入运行图',
publishOperationGraph: '发布运行图', publishOperationGraph: '发布运行图',
deleteOperationGraph: '删除运行图', deleteOperationGraph: '删除运行图',
underImport: '正在导入中...',
mapList: '地图列表', mapList: '地图列表',
import: '导入', import: '导入',
selectImportFiles: '请选择需要导入的文件',
createNewOperationGraph: '新建运行图', createNewOperationGraph: '新建运行图',
setOperatingSpeed: '设置运行速度', setOperatingSpeed: '设置运行速度',
speedClass1: '速度等级1', speedClass1: '速度等级1',
@ -476,29 +439,17 @@ export default {
stopTime: '停靠时间', stopTime: '停靠时间',
entranceStation: '入口车站', entranceStation: '入口车站',
exportStation: '出口车站', exportStation: '出口车站',
speedLevelEnter1: '请输入速度等级1',
speedLevelEnter2: '请输入速度等级2',
speedLevelEnter3: '请输入速度等级3',
speedLevelEnter4: '请输入速度等级4',
nameEnter: '请输入名称',
drivingDirectionSelect: '请选择行驶方向',
timeBetweenDeparturesEnter: '请输入发车间隔时间',
stopTimeEnter: '请输入停靠时间',
entranceStationSelect: '请选择入站口',
exportStationSelect: '请选择出站口',
validityCheck: '有效性检查', validityCheck: '有效性检查',
setupOperationGraph: '设置运行图', setupOperationGraph: '设置运行图',
selectOperationGraphDataRange: '选取运行图数据范围', selectOperationGraphDataRange: '选取运行图数据范围',
to: '至', to: '至',
selectionTimeRange: '选择时间范围', selectionTimeRange: '选择时间范围',
selectDataRange: '请选择数据范围区间',
pointSystem1: '1分制', pointSystem1: '1分制',
pointSystem2: '2分制', pointSystem2: '2分制',
pointSystem5: '5分制', pointSystem5: '5分制',
skinType: '皮肤风格', skinType: '皮肤风格',
turnoverTime: '更新时间', turnoverTime: '更新时间',
productList: '产品列表', productList: '产品列表',
deleteTypeHint: '此操作将删除该类型, 是否继续?',
belongsToMapName: '所属地图名称', belongsToMapName: '所属地图名称',
productType: '产品类型', productType: '产品类型',
productCode: '产品编码', productCode: '产品编码',
@ -507,20 +458,11 @@ export default {
associateTrainingTypes: '关联实训类型', associateTrainingTypes: '关联实训类型',
createTrainingCategories: '创建实训类目', createTrainingCategories: '创建实训类目',
editTrainingCategories: '编辑实训类目', editTrainingCategories: '编辑实训类目',
productCodeEnter: '请输入产品编码',
productNameEnter: '请输入产品名称',
productDescriptionEnter: '请输入产品说明',
trainingTypeSelect: '请选择关联实训类型',
linkWidth: 'link宽度', linkWidth: 'link宽度',
maxLinkWidth: '(Link宽度最大为20)', maxLinkWidth: '(Link宽度最大为20)',
sectionWidth: '区段宽度', sectionWidth: '区段宽度',
maxSectionWidth: '(区段宽度最大为30)', maxSectionWidth: '(区段宽度最大为30)',
showWatermarkOrNot: '是否显示水印', showWatermarkOrNot: '是否显示水印',
linkWidthInput: '请输入Link宽度',
linkWidthInputPrompt: '请输入有效Link宽度',
sectionWidthInput: '请输入区段宽度',
sectionWidthInputPrompt: '请输入有效区段宽度',
selectShowWatermark: '请选择是否水印',
routingCode: '交路code', routingCode: '交路code',
routingName: '交路名称', routingName: '交路名称',
startStationCodeColon: '起始站:', startStationCodeColon: '起始站:',

View File

@ -45,15 +45,9 @@ export default {
authorityDetails: '权限详情', authorityDetails: '权限详情',
renew: '续费', renew: '续费',
productName: '产品名称', productName: '产品名称',
updateProductTip: '此操作将修改商品状态?',
deleteProductTip: '此操作将删除该商品, 是否继续?',
recovery: '回收', recovery: '回收',
permissionPack: '权限包', permissionPack: '权限包',
privilegeTransferQRCode: '权限转赠二维码', privilegeTransferQRCode: '权限转赠二维码',
getQRCodeFailure: '获取打包权限二维码失败',
recoveryPrivilegeTip: '此操作将回收权限, 是否继续?',
unpackingTip: '此操作将解包, 是否继续?',
updatePrivilegeTip: '此操作将修改权限状态?',
generatingQRCode: '生成二维码', generatingQRCode: '生成二维码',
transferQRCode: '转赠二维码', transferQRCode: '转赠二维码',
today: '今天', today: '今天',
@ -68,27 +62,7 @@ export default {
increasePermissionNumber: '增加权限数量', increasePermissionNumber: '增加权限数量',
choosePermissionNumber: '选择权限数量', choosePermissionNumber: '选择权限数量',
itemPricing: '商品单价', itemPricing: '商品单价',
organizationInput: '请输入组织或者企业名称', addUserPermissions: '添加用户权限',
productSelect: '请选择商品',
itemPricingInput: '请输入商品单价',
orderTypeSelect: '请选择订单类型',
contractNumberInput: '请输入合同编号',
contractNumberLimit: '长度在 1 到 25 个字符',
salesmanInput: '请选择销售人员',
foreverRadio: '请选择',
amountInput: '请输入购买的权限个数',
amountInputError: '请输入有效权限个数',
totalPriceInput: '请输入总价格',
totalPriceInputError1: '请输入的价格在两位小数',
totalPriceInputError2: '请输入有效总价格',
monthAmountInput: '请输入购买月数',
monthAmountInputError: '请输入有效购买月数',
startTimePick: '请选择开始日期',
bizTypeSelect: '请选择业务类型',
payWaysSelect: '请选择支付方式',
payStatusSelect: '请选择支付状态',
addOrganizationPrefix: '是否添加 "',
addOrganizationSuffix: '" 组织/企业条目信息?',
publicAuthority: '公用权限', publicAuthority: '公用权限',
privateAuthority: '专用权限', privateAuthority: '专用权限',
optionPrivilegeTransfer: '选择权限转赠', optionPrivilegeTransfer: '选择权限转赠',
@ -97,8 +71,6 @@ export default {
addRecords: '添加记录', addRecords: '添加记录',
totalNumber: '总数', totalNumber: '总数',
permissionToDistributeQRCode: '权限分发二维码', permissionToDistributeQRCode: '权限分发二维码',
packagingFailed: '权限分发打包失败',
selectPackagingRecord: '请选择打包记录',
editPermissionRules: '编辑权限规则', editPermissionRules: '编辑权限规则',
addGoods: '添加商品', addGoods: '添加商品',
updateGoods: '修改商品', updateGoods: '修改商品',
@ -106,20 +78,11 @@ export default {
whetherTrial: '是否试用', whetherTrial: '是否试用',
unitOfTime: '时间单位', unitOfTime: '时间单位',
trialTime: '试用时长', trialTime: '试用时长',
goodsNameInput: '请输入商品名称',
productTypeInput: '请选择产品类型',
mapInput: '请选择地图',
productInput: '请选择产品',
lessonInput: '请选择课程',
trialTimeInput: '请输入试用时长',
unitOfTimeRadio: '请选择时间单位',
goodsDescribtionInput: '请输入商品描述',
addUserPermissions: '添加用户权限',
userNameInput: '请输入用户名称',
permissionTypeInput: '请选择权限类型',
distributionUser: '分发用户', distributionUser: '分发用户',
orderNumber: '订单号', orderNumber: '订单号',
sourcesOfInformation: '信息来源', sourcesOfInformation: '信息来源',
distributePermission: '权限分发', distributePermission: '权限分发',
orderCreation: '订单创建' orderCreation: '订单创建',
select: '选择',
chooseGoods: '选择商品'
}; };

View File

@ -70,8 +70,6 @@ export default {
stationName: '请输入车站名称', stationName: '请输入车站名称',
stationKmRange: '请输入公里标距离', stationKmRange: '请输入公里标距离',
stationKmPost: '请输入公里标名称', stationKmPost: '请输入公里标名称',
stationPositionX: '请输入x坐标',
stationPositionY: '请输入y坐标',
stationControlStationName: '请选择车站名称', stationControlStationName: '请选择车站名称',
stationControlStationCode: '请选择所属车站', stationControlStationCode: '请选择所属车站',
@ -90,8 +88,6 @@ export default {
stationstandDirection: '请选择上下行方向', stationstandDirection: '请选择上下行方向',
stationstandWidth: '请输入车站宽度', stationstandWidth: '请输入车站宽度',
stationstandHeight: '请输入车站高度', stationstandHeight: '请输入车站高度',
stationstandPositionX: '请输入x坐标',
stationstandPositionY: '请输入y坐标',
switchName: '请输入道岔名称', switchName: '请输入道岔名称',
switchNamePointX: '请输入道岔名称坐标x', switchNamePointX: '请输入道岔名称坐标x',
@ -148,5 +144,71 @@ export default {
pleaseSelectStatus: '请选择状态', pleaseSelectStatus: '请选择状态',
pleaseInputCode: '请输入编码', pleaseInputCode: '请输入编码',
strLength1To25: '长度在 1 到 25 个字符', strLength1To25: '长度在 1 到 25 个字符',
strLengthNotExceed50: '不能超过 50 个字符' strLengthNotExceed50: '不能超过 50 个字符',
pleaseEnterMapName: '请输入地图名称',
pleaseChooseSkinCode: '请选择皮肤风格',
pleaseSelectMapSource: '请选择地图来源',
pleaseSelectAssociatedCity: '请选择关联城市',
pleaseSelectAssociatedSkin: '请选择关联皮肤',
pleaseEnteMapLinkWidth: '请输入地图Link宽度',
pleaseEnterMapSectionWidth: '请输入地图区段宽度',
organizationInput: '请输入组织或者企业名称',
productSelect: '请选择商品',
itemPricingInput: '请输入商品单价',
orderTypeSelect: '请选择订单类型',
contractNumberInput: '请输入合同编号',
salesmanInput: '请选择销售人员',
authorAmountInput: '请输入购买的权限个数',
authorAmountInputError: '请输入有效权限个数',
totalPriceInput: '请输入总价格',
totalPriceInputError1: '请输入的价格在两位小数',
totalPriceInputError2: '请输入有效总价格',
monthAmountInput: '请输入购买月数',
monthAmountInputError: '请输入有效购买月数',
startTimePick: '请选择开始日期',
bizTypeSelect: '请选择业务类型',
payWaysSelect: '请选择支付方式',
payStatusSelect: '请选择支付状态',
goodsNameInput: '请输入商品名称',
productTypeInput: '请选择产品类型',
mapInput: '请选择地图',
productInput: '请选择产品',
lessonInput: '请选择课程',
trialTimeInput: '请输入试用时长',
unitOfTimeRadio: '请选择时间单位',
goodsDescribtionInput: '请输入商品描述',
userNameInput: '请输入用户名称',
permissionTypeInput: '请选择权限类型',
timeInput: '请输入时长',
chooseUser: '请选择用户',
pleaseInputLessonName: '请输入课程名称',
pleaseSelectTraining: '请选择实训',
maxScaling: '(缩放比例最大为8级)',
skinCodingInput: '请输入皮肤编码',
skinDesignationInput: '请输入皮肤名称',
coordinatesOriginInput: '请输入原点坐标',
scalingInput: '请输入缩放比例',
scalingInputPrompt: '请输入有效的缩放比例',
selectImportFiles: '请选择需要导入的文件',
speedLevelEnter1: '请输入速度等级1',
speedLevelEnter2: '请输入速度等级2',
speedLevelEnter3: '请输入速度等级3',
speedLevelEnter4: '请输入速度等级4',
drivingDirectionSelect: '请选择行驶方向',
timeBetweenDeparturesEnter: '请输入发车间隔时间',
stopTimeEnter: '请输入停靠时间',
entranceStationSelect: '请选择入站口',
exportStationSelect: '请选择出站口',
selectDataRange: '请选择数据范围区间',
productCodeEnter: '请输入产品编码',
productNameEnter: '请输入产品名称',
productDescriptionEnter: '请输入产品说明',
trainingTypeSelect: '请选择关联实训类型',
linkWidthInput: '请输入Link宽度',
linkWidthInputPrompt: '请输入有效Link宽度',
sectionWidthInput: '请输入区段宽度',
sectionWidthInputPrompt: '请输入有效区段宽度',
selectShowWatermark: '请选择是否水印'
}; };

View File

@ -11,6 +11,44 @@ export default {
updateSuccess: '更新成功', updateSuccess: '更新成功',
destory: '销 毁', destory: '销 毁',
simulationGroup: '仿真Group', simulationGroup: '仿真Group',
username: '用户名', userName: '用户名',
phoneNumber: '手机号' mobile: '手机号',
skinCode: '皮肤编号',
prdType: '产品类型',
simulationType: '仿真类型',
simulationGroupId: '仿真成员ID',
productName: '产品名称',
isError: '是否错误',
isSuspend: '是否暂停',
isDrivingAsplanned: '是否按计划行车',
delUserSimulationIsContinue: '此操作将删除此用户仿真数据, 是否继续?',
createDetail: '创建明细',
editDetail: '编辑明细',
mapName: '地图名称',
trainingName: '实训名称',
trainingUseTime: '实训用时',
minute: '分',
second: '秒',
createSimulationTitle: '创建仿真信息',
addSuccess: '添加成功',
pleaseInputNames: '请输入昵称/名字/手机号',
examUser: '考试用户',
examScore: '考试成绩',
examResult: '考试结果',
examName: '试卷名称',
delExamResultIsContinue: '此操作将删除此考试结果, 是否继续?',
editExamDetail: '编辑考试详情',
subscribeMap: '订阅地图',
roles: '角色',
email: '邮箱',
nickname: '昵称',
delTypeIsContinue: '此操作将删除该类型, 是否继续?',
permission: '权限',
editUserPermission: '编辑用户权限',
lessonName: '课程名称',
selectTraining: '选择实训',
createUserTraining: '创建用户实训',
editTrainingDetail: '编辑实训详情',
trainingTime: '实训时长'
}; };

View File

@ -73,5 +73,22 @@ export default {
requestFailed: '请求失败', requestFailed: '请求失败',
dataQuestion: '有问题数据', dataQuestion: '有问题数据',
dataList: '数据列表' dataList: '数据列表',
updateProductTip: '此操作将修改商品状态?',
deleteProductTip: '此操作将删除该商品, 是否继续?',
getQRCodeFailure: '获取打包权限二维码失败',
recoveryPrivilegeTip: '此操作将回收权限, 是否继续?',
unpackingTip: '此操作将解包, 是否继续?',
updatePrivilegeTip: '此操作将修改权限状态,是否继续?',
addOrganizationPrefix: '是否添加 "',
addOrganizationSuffix: '" 组织/企业条目信息?',
packagingFailed: '权限分发打包失败',
selectPackagingRecord: '请选择打包记录',
skinDeleteConfirmation: '此操作将永久删除该皮肤, 是否继续?',
skinCodingExist: '地图皮肤编码已存在',
underImport: '正在导入中...',
deleteTypeHint: '此操作将删除该类型, 是否继续?'
}; };

View File

@ -374,6 +374,10 @@ class SkinCode extends defaultStyle {
type: '03', type: '03',
serviceNumber: '---', serviceNumber: '---',
nameFormat: 'groupNumber:serviceNumber' nameFormat: 'groupNumber:serviceNumber'
},
{
type: '03',
nameFormat: 'serviceNumber:trainNumber'
} }
], // 特殊列车类型需设置显示格式 ], // 特殊列车类型需设置显示格式
lrPadding: 4, // 两边间隔 lrPadding: 4, // 两边间隔
@ -435,6 +439,10 @@ class SkinCode extends defaultStyle {
useSelfText: true // 使用配置项的字体大小 useSelfText: true // 使用配置项的字体大小
}, },
trainStatusStyle: { trainStatusStyle: {
trainTypeStatus: [
{type: '03', serviceNumberColor: '#FFF000', groupNumberColor: '#FFF000'},
{type: '02', trainNumberColor: '#FFF000', groupNumberColor: '#FFF000'}
], // 列车类型对应的识别号样式
defaultDestinationColor: '#FFFFFF', // 默认目的地状态显示颜色 defaultDestinationColor: '#FFFFFF', // 默认目的地状态显示颜色
destinationStatusSetText: 'trainWindowBorder', // 目的地状态设置的对应哪个颜色 destinationStatusSetText: 'trainWindowBorder', // 目的地状态设置的对应哪个颜色
destinationStatus: [ destinationStatus: [

View File

@ -248,7 +248,7 @@ class Jlmap {
}); });
// 状态后处理 // 状态后处理
this.postHandle(list); this.postHandle(list || []);
if (this.methods.stateUpdate instanceof Function) { this.methods.stateUpdate(list); } if (this.methods.stateUpdate instanceof Function) { this.methods.stateUpdate(list); }
} }

View File

@ -174,12 +174,20 @@ export default class TrainBody extends Group {
this.trainBodyBox && this.trainBodyBox.setStyle('fill', color); this.trainBodyBox && this.trainBodyBox.setStyle('fill', color);
} }
setTextTrainServerColor(color) { setTextTrainServerColor(color) {
this.textTrainServer.setStyle('textFill', color); this.textTrainServer&&this.textTrainServer.setStyle('textFill', color);
this.textTrainServer.setStyle('textStroke', color); this.textTrainServer&&this.textTrainServer.setStyle('textStroke', color);
} }
setTextTrainTargetColor(color) { setTextTrainTargetColor(color) {
this.textTrainTarget.setStyle('textFill', color); this.textTrainTarget&&this.textTrainTarget.setStyle('textFill', color);
this.textTrainTarget.setStyle('textStroke', color); this.textTrainTarget&&this.textTrainTarget.setStyle('textStroke', color);
}
setTextTrainNumberColor(color) {
this.textTrainNumber&&this.textTrainNumber.setStyle('textFill', color);
this.textTrainNumber&&this.textTrainNumber.setStyle('textStroke', color);
}
setTextTrainTargetNumberColor(color) {
this.textTrainTargetNumber&&this.textTrainTargetNumber.setStyle('textFill', color);
this.textTrainTargetNumber&&this.textTrainTargetNumber.setStyle('textStroke', color);
} }
setHShow(isShow) { setHShow(isShow) {
if (this.textH) { if (this.textH) {

View File

@ -282,7 +282,18 @@ export default class Train extends Group {
}); });
} }
} }
setTrainTypeStatus(type) {
if (this.style.Train.trainStatusStyle.trainTypeStatus) {
this.style.Train.trainStatusStyle.trainTypeStatus.some((item) => {
if ( type === item.type) {
item.serviceNumberColor && this.trainB && this.trainB.setTextTrainServerColor(item.serviceNumberColor);
item.trainNumberColor && this.trainB && this.trainB.setTextTrainNumberColor(item.trainNumberColor);
item.trainTargetColor && this.trainB && this.trainB.setTextTrainTargetColor(item.trainTargetColor);
item.groupNumberColor && this.trainB && this.trainB.setTextTrainTargetNumberColor(item.groupNumberColor);
}
});
}
}
// 设置状态 // 设置状态
setState(model) { setState(model) {
this.model = model; this.model = model;
@ -296,6 +307,7 @@ export default class Train extends Group {
this.setDoorStatus(model.doorStatus); // 设置车门状态类型 this.setDoorStatus(model.doorStatus); // 设置车门状态类型
this.setCommunicationStatus(model.communicationStatus); // 设置通信状态类型 this.setCommunicationStatus(model.communicationStatus); // 设置通信状态类型
this.setAlarmStatus(model.alarmStatus); // 设置报警状态 this.setAlarmStatus(model.alarmStatus); // 设置报警状态
this.setTrainTypeStatus(model.type); // 根据列车类型设置列车识别号样式
} }
} }
// 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度 // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度

View File

@ -4,26 +4,35 @@
const scriptRecord = { const scriptRecord = {
namespaced: true, namespaced: true,
state: { state: {
mapLocation: {}, //地图定位 mapLocation: {}, //地图定位,
simulationPause: true ,
}, },
getters: { getters: {
mapLocation:(state)=>{ mapLocation: (state)=>{
return state.mapLocation; return state.mapLocation;
} },
simulationPause:(state)=>{
return state.simulationPause;
},
}, },
mutations: { mutations: {
setMapLocation:(state, mapLocation) => { setMapLocation: (state, mapLocation) => {
state.mapLocation = mapLocation; state.mapLocation = mapLocation;
}, },
setSimulationPause: (state, simulationPause) => {
state.simulationPause = simulationPause;
},
}, },
actions: { actions: {
/** /**
* 设置地图定位 * 设置地图定位
*/ */
updateMapLocation:({ commit }, mapLocation) => { updateMapLocation: ({ commit }, mapLocation) => {
commit('setMapLocation', mapLocation); commit('setMapLocation', mapLocation);
}, },
updateSimulationPause: ({ commit }, simulationPause) => {
commit('setSimulationPause', simulationPause);
},
} }
}; };
export default scriptRecord; export default scriptRecord;

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

@ -111,7 +111,7 @@ export default {
width: '250', width: '250',
buttons: [ buttons: [
{ {
name: '加载任务', name: '加载剧本',
type: 'primary', type: 'primary',
handleClick: this.handleLoad handleClick: this.handleLoad
} }

View File

@ -70,7 +70,7 @@ import MenuScript from '@/views/display/menuScript';
import WindowResizeHandler from '@/mixin/WindowResizeHandler'; import WindowResizeHandler from '@/mixin/WindowResizeHandler';
import AddQuest from './demon/addQuest'; import AddQuest from './demon/addQuest';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { getTrainingStepsDetail } from '@/api/jmap/training'; import { getTrainingDetail, getTrainingStepsDetail } from '@/api/jmap/training';
import { setGoodsTryUse } from '@/api/management/goods'; import { setGoodsTryUse } from '@/api/management/goods';
import { getProductDetail } from '@/api/management/mapprd'; import { getProductDetail } from '@/api/management/mapprd';
import { runDiagramQuit, loadScript, getSimulationInfo } from '@/api/simulation'; import { runDiagramQuit, loadScript, getSimulationInfo } from '@/api/simulation';
@ -169,6 +169,9 @@ export default {
}, },
isDrive() { isDrive() {
return this.$route.query.prdType == '04'; return this.$route.query.prdType == '04';
},
trainingId() {
return this.$route.query.trainingId;
} }
}, },
watch: { watch: {
@ -178,6 +181,14 @@ export default {
'$store.state.map.mapViewLoadedCount': function (val) { '$store.state.map.mapViewLoadedCount': function (val) {
this.mapBoxP = document.getElementById(this.canvasId).children[0]; this.mapBoxP = document.getElementById(this.canvasId).children[0];
this.mapBox = document.getElementsByTagName('canvas'); this.mapBox = document.getElementsByTagName('canvas');
if (this.trainingId) {
getTrainingStepsDetail(this.trainingId, { group: this.group }).then(resp => {
this.trainingObj = resp.data;
this.$store.dispatch('training/setTrainingData', this.trainingObj);
});
}
}, },
'$store.state.socket.permissionOver': function () { '$store.state.socket.permissionOver': function () {
this.$alert('用户权限已被收回', '提示', { this.$alert('用户权限已被收回', '提示', {
@ -304,6 +315,7 @@ export default {
async loadSimulationInfo() { async loadSimulationInfo() {
const resp = await getSimulationInfo(this.group); const resp = await getSimulationInfo(this.group);
if (resp && resp.code == 200) { if (resp && resp.code == 200) {
this.$store.dispatch('scriptRecord/updateSimulationPause',resp.data.pause);
this.questId = Number(resp.data.questId) || 0; this.questId = Number(resp.data.questId) || 0;
} }
}, },
@ -343,18 +355,17 @@ export default {
this.$store.dispatch('training/end', null); this.$store.dispatch('training/end', null);
this.$store.dispatch('training/changeOperateMode', { mode: OperateMode.NORMAL }); // this.$store.dispatch('training/changeOperateMode', { mode: OperateMode.NORMAL }); //
const trainingId = this.$route.query.trainingId; if (parseInt(this.trainingId)) {
if (parseInt(trainingId)) {
// //
// //
const resp = await getTrainingStepsDetail(trainingId, { group: this.group }); const resp = await getTrainingDetail(this.trainingId);
if (resp && resp.code == 200) { if (resp && resp.code == 200) {
const stepdData = this.trainingObj = resp.data; const detail = resp.data;
const rest = await getProductDetail(stepdData.prdCode); const rest = await getProductDetail(detail.prdCode);
if (rest && rest.code == 200) { if (rest && rest.code == 200) {
await this.$store.dispatch('training/setPrdType', rest.data.prdType); const data = rest.data;
await this.loadMapData(resp.data.skinCode); await this.$store.dispatch('training/setPrdType', data.prdType);
await this.$store.dispatch('training/setTrainingData', stepdData); await this.loadMapData(detail.skinCode);
} }
} else { } else {
this.$messageBox(`获取实训步骤数据失败`); this.$messageBox(`获取实训步骤数据失败`);

View File

@ -65,7 +65,7 @@ export default {
if (opt && opt.hasOwnProperty('color') && opt.hasOwnProperty('message')) { if (opt && opt.hasOwnProperty('color') && opt.hasOwnProperty('message')) {
const h = this.$createElement; const h = this.$createElement;
this.$notify({ this.$notify({
title: '提示', title: this.$t('global.tips'),
message: h('i', { style: 'color:' + opt.color }, '请点击开始考试操作') message: h('i', { style: 'color:' + opt.color }, '请点击开始考试操作')
}); });
} }

View File

@ -101,6 +101,9 @@ export default {
selectBeginTime() { selectBeginTime() {
this.$refs.setTime.doShow(); this.$refs.setTime.doShow();
}, },
resetBeginTime(){
this.isDisable = false;
},
start(model) { start(model) {
this.isDisable = true; this.isDisable = true;
runDiagramStart(model, this.group).then(res => { runDiagramStart(model, this.group).then(res => {

View File

@ -2,43 +2,40 @@
<div> <div>
<el-form :model="modalData" ref="modalData" :rules="rules" label-width="100px" class="actionInfo" label-position="right"> <el-form :model="modalData" ref="modalData" :rules="rules" label-width="100px" class="actionInfo" label-position="right">
<el-form-item label="主体角色" class="conditionVO" prop="actionVO.memberId"> <el-form-item label="主体角色" class="conditionVO" prop="actionVO.memberId">
<el-select v-model="modalData.actionVO.memberId" placeholder="请选择主体角色"> <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"> <el-form-item label="动作类型" class="conditionVO" prop="actionVO.type" >
<el-input-number v-model="modalData.actionVO.time " class="inputStyle" :min="0"></el-input-number> <el-select v-model="modalData.actionVO.type " placeholder="请选择动作类型" @change="changeType" :disabled="deviceTypeReadOnly||isPause">
</el-form-item> -->
<el-form-item label="动作类型" class="conditionVO" prop="actionVO.type">
<el-select v-model="modalData.actionVO.type " placeholder="请选择动作类型" @change="changeType">
<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="目标角色" class="conditionVO" prop="actionVO.targetId" v-if="isConversitionAdd"> <el-form-item label="目标角色" class="conditionVO" prop="actionVO.targetId" v-if="isConversitionAdd">
<el-select v-model="modalData.actionVO.targetId" placeholder="请选择目标角色"> <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" v-if="isConversitionAdd">
<el-input v-model="modalData.actionVO.reply" type="textarea" class="textareaStyle" rows="3"></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.type" v-if="isCommandAdd"> <el-form-item label="设备指令" class="conditionVO" prop="actionVO.deviceCommand" v-if="isCommandAdd">
<el-select v-model="modalData.actionVO.deviceCommand " placeholder="请选择设备指令" @change="changeCommand" class="inputStyle"> <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-option v-for="deviceCommand in deviceCommandList" :key="deviceCommand.deviceCommand" :label="deviceCommand.label" :value="deviceCommand.deviceCommand"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="起始站台" class="conditionVO" v-if="isJinLu" prop="param.startStation"> <el-form-item label="起始站台" class="conditionVO" v-if="isJinLu" prop="param.startStation">
<el-select v-model="modalData.param.startStation " placeholder="请选择起始站台" class="inputStyle"> <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-option v-for="station in stationList" :key="station.code" :label="station.name" :value="station.code"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="终点站台" class="conditionVO" v-if="isJinLu" prop="param.endStation"> <el-form-item label="终点站台" class="conditionVO" v-if="isJinLu" prop="param.endStation">
<el-select v-model="modalData.param.endStation " placeholder="请选择终点站台" class="inputStyle"> <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-option v-for="station in stationList" :key="station.code" :label="station.name" :value="station.code"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="addScriptActionInfo('modalData')">{{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>
</div> </div>
@ -74,7 +71,16 @@
{ {
this.initData(); this.initData();
} }
} },
'$store.state.map.mapViewLoadedCount': function (val) {
Vue.prototype.$jlmap.setOptions(this.$store.state.scriptRecord.mapLocation);
this.isPause=!(this.$store.state.scriptRecord.simulationPause);
this.$parent.$parent.$parent.setIsParse(this.isPause);
},
'$store.state.scriptRecord.simulationPause': function(val){
this.isPause=!(this.$store.state.scriptRecord.simulationPause);
this.$parent.$parent.$parent.setIsParse(this.isPause);
},
}, },
data() { data() {
return { return {
@ -82,7 +88,6 @@
actionVO:{ actionVO:{
memberId:"", memberId:"",
targetId:"", targetId:"",
// time:0,
reply:"", reply:"",
type:"Conversation", type:"Conversation",
deviceCommand:"", deviceCommand:"",
@ -93,6 +98,10 @@
endStation:"", endStation:"",
} }
}, },
deviceTypeReadOnly:false,
isPause:false,
isNotModify:true,
modifying:false,
isConversitionAdd:true, isConversitionAdd:true,
isCommandAdd:false, isCommandAdd:false,
actionTypeList:DeviceTypeDic.ConstSelect.actionType, actionTypeList:DeviceTypeDic.ConstSelect.actionType,
@ -163,15 +172,17 @@
{this.modalData.actionVO.commandParamList=[this.modalData.param.startStation,this.modalData.param.endStation];} {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;
if(this.$props.operateType=="add") if(this.$props.operateType=="add")
{ {
addScriptAction(group,data).then(response=>{ addScriptAction(group,data).then(response=>{
this.initActionData(); this.modifying=false;
this.$message.success('添加动作成功'); this.$message.success('添加动作成功');
this.$emit('create'); this.$emit('create');
this.resetDisabled(); // this.resetDisabled();
this.initActionData();
}).catch(error => { }).catch(error => {
this.modifying=false;
this.$messageBox(`添加动作失败: ${error.message}`); this.$messageBox(`添加动作失败: ${error.message}`);
}); });
} }
@ -179,12 +190,17 @@
{ {
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.initActionData(); this.modifying=false;
this.isNotModify=true;
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');
this.resetDisabled(); // this.resetDisabled();
this.initActionData();
}).catch(error => { }).catch(error => {
this.modifying=false;
this.$messageBox(`修改动作失败: ${error.message}`); this.$messageBox(`修改动作失败: ${error.message}`);
}); });
} }
@ -199,6 +215,19 @@
if(this.$refs['modalData']) if(this.$refs['modalData'])
{ {
this.$refs['modalData'].resetFields(); this.$refs['modalData'].resetFields();
// this.$nextTick(function(){
this.deviceTypeReadOnly=false;
// this.modalData.actionVO.type="Conversation";
// 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(){
@ -208,18 +237,7 @@
} }
}, },
initActionData(){ initActionData(){
// debugger; this.resetDisabled();
this.modalData.actionVO.memberId="";
this.modalData.actionVO.targetId="";
this.modalData.actionVO.type="Conversation";
// this.modalData.actionVO.time=0;
this.modalData.actionVO.reply="";
this.modalData.param.startStation="";
this.isConversitionAdd=true;
this.isCommandAdd=false;
this.isJinLu=false;
this.modalData.actionVO.deviceCommand=null;
this.modalData.param.endStation="";
}, },
changeType(index){ changeType(index){
switch(index) switch(index)
@ -254,6 +272,7 @@
}, },
changeCommand(index){ changeCommand(index){
this.modalData.actionVO.deviceCommand
switch(index) switch(index)
{ {
case "Train_Manual_Route_Blocking_Drive":{ case "Train_Manual_Route_Blocking_Drive":{
@ -273,14 +292,18 @@
doShow(data){ doShow(data){
if(data) if(data)
{ {
// debugger; this.clearValidate();
this.isNotModify=false;
this.$parent.$parent.$parent.setDisabled(this.isNotModify);
this.initData(); this.initData();
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; // this.modalData.actionVO.time=data.time;
if(data.type=="Conversation") if(data.type=="Conversation")
{ {
this.isJinLu=false;
this.modalData.actionVO.targetId=data.targetId; this.modalData.actionVO.targetId=data.targetId;
this.isConversitionAdd=true; this.isConversitionAdd=true;
this.isCommandAdd=false; this.isCommandAdd=false;
@ -288,6 +311,7 @@
} }
else if(data.type=="Command") else if(data.type=="Command")
{ {
this.isJinLu=false;
this.isConversitionAdd=false; this.isConversitionAdd=false;
this.isCommandAdd=true; this.isCommandAdd=true;
this.modalData.actionVO.reply=""; this.modalData.actionVO.reply="";
@ -312,10 +336,10 @@
font-size: 15px; font-size: 15px;
} }
.actionInfo{ .actionInfo{
margin-top:20px; margin-top:10px;
margin-left: 5px; margin-left: 5px;
font-size: 15px; font-size: 15px;
width:98%; // width:98%;
} }
.inputStyle{ .inputStyle{
width:300px; width:300px;

View File

@ -6,43 +6,24 @@
<div class="tab-pane-big"> <div class="tab-pane-big">
<el-scrollbar wrapClass="scrollbar-wrapper" ref="elActionScrollbar"> <el-scrollbar wrapClass="scrollbar-wrapper" ref="elActionScrollbar">
<add-action ref="addBehavior" :group="group" @create="create" :buttonName="buttonName" :operateType="operateType" @modifyButtonName="modifyButtonName" class="addScript"></add-action> <add-action ref="addBehavior" :group="group" @create="create" :buttonName="buttonName" :operateType="operateType" @modifyButtonName="modifyButtonName" class="addScript"></add-action>
<div class="vertialLine"></div>
<div class="block actionListTable"> <div class="block actionListTable">
<el-timeline :reverse="reverse"> <el-timeline :reverse="reverse">
<el-timeline-item v-for="(actionInfo,index) in actionInfoList" :key="index"> <el-timeline-item v-for="(actionInfo,index) in actionInfoList" :key="index">
<el-card> <el-card>
<div class="actionTable"> <div class="actionTable">
<span class="detail" v-html="actionInfo.detail"> <span class="detail" v-html="actionInfo.detail">
<!-- <span class="actionColor"></span> -->
</span> </span>
<span class="otherInfo">{{actionInfo.otherInfo}}</span> <span class="otherInfo">{{actionInfo.otherInfo}}</span>
</div> </div>
<div class="btnGroup"> <div class="btnGroup">
<el-button type="primary" size="mini" style="margin-left:10px;" @click="modifyAction(actionInfo.row)">修改</el-button> <el-button type="primary" size="mini" style="margin-left:10px;" @click="modifyAction(actionInfo.row)" :disabled="actionInfo.disabled">修改</el-button>
<el-button type="danger" size="mini" @click="deleteAction(actionInfo.id)">删除</el-button> <!-- <el-button type="danger" size="mini" @click="deleteAction(actionInfo.id)">删除</el-button> -->
</div> </div>
</el-card> </el-card>
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
</div> </div>
<!-- <el-table
v-loading="loading"
:data="actionList" border class="actionListTable">
<el-table-column prop="reply" label="内容" width="200">
</el-table-column>
<el-table-column prop="time" label="完成时间" width="200">
</el-table-column>
<el-table-column prop="type" label="动作类型" width="200">
</el-table-column>
<el-table-column label="操作" width="200">
<template slot-scope="scope">
<el-row>
<el-button type="primary" size="mini" @click="modifyAction(scope.row)">修改</el-button>
<el-button type="primary" size="mini" @click="deleteAction(scope.row)">删除</el-button>
</el-row>
</template>
</el-table-column>
</el-table> -->
</el-scrollbar> </el-scrollbar>
</div> </div>
</div> </div>
@ -77,13 +58,11 @@
AddAction, AddAction,
}, },
mounted(){ mounted(){
this.loadInitData(this.$route.query); this.loadInitData();
// this.memberName=this.$store.state.scriptRecord.memberName;
// this.behaviorName=this.$store.state.scriptRecord.behaviorName;
}, },
methods:{ methods:{
loadInitData(obj) { loadInitData() {
let group=obj.group; let group=this.$route.query.group;
getAvailableDeviceCommand().then(response=>{ getAvailableDeviceCommand().then(response=>{
this.deviceCommandList=response.data; this.deviceCommandList=response.data;
this.loadOtherData(this.$route.query); this.loadOtherData(this.$route.query);
@ -101,7 +80,6 @@
}); });
memberVOList=JSON.parse(memberVOList); memberVOList=JSON.parse(memberVOList);
let actionList=response.data.actionVOList; let actionList=response.data.actionVOList;
// actionList=actionList.reverse();
actionList.forEach(element => { actionList.forEach(element => {
let member=memberVOList.find(elem=>{return elem.id==element.memberId}); let member=memberVOList.find(elem=>{return elem.id==element.memberId});
let memberName=member.name==undefined?"":" - "+member.name; let memberName=member.name==undefined?"":" - "+member.name;
@ -111,7 +89,7 @@
{ {
let target=memberVOList.find(elem=>{return elem.id==element.targetId}); let target=memberVOList.find(elem=>{return elem.id==element.targetId});
let targetName=target.name==undefined?"":" - "+target.name; let targetName=target.name==undefined?"":" - "+target.name;
this.actionInfoList.push({id:element.id,detail:"<span style='color:#409EFF'>"+member.role+memberName+"</span>"+" 对 "+"<span style='color:#409EFF'>"+target.role+targetName+"</span>",otherInfo:element.reply,row:element}); this.actionInfoList.push({id:element.id,detail:"<span style='color:#409EFF'>"+member.role+memberName+"</span>"+" 对 "+"<span style='color:#409EFF'>"+target.role+targetName+"</span>",otherInfo:element.reply,row:element,disabled:false});
break; break;
} }
case "Command": case "Command":
@ -121,12 +99,12 @@
{ {
case 'Train_Manual_Route_Blocking_Drive': case 'Train_Manual_Route_Blocking_Drive':
{ {
this.actionInfoList.push({id:element.id,detail:"<span style='color:#409EFF'>"+member.role+memberName+"</span>执行指令 ",otherInfo:deviceCommand.label,row:element}); this.actionInfoList.push({id:element.id,detail:"<span style='color:#409EFF'>"+member.role+memberName+"</span>执行指令 ",otherInfo:deviceCommand.label,row:element,disabled:true});
break; break;
} }
case 'Train_Manual_Limit_Drive': case 'Train_Manual_Limit_Drive':
{ {
this.actionInfoList.push({id:element.id,detail:"<span style='color:#409EFF'>"+member.role+memberName+"</span>执行指令 : ",otherInfo:deviceCommand.label,row:element}); this.actionInfoList.push({id:element.id,detail:"<span style='color:#409EFF'>"+member.role+memberName+"</span>执行指令 : ",otherInfo:deviceCommand.label,row:element,disabled:true});
break; break;
} }
default: default:
@ -137,7 +115,6 @@
} }
} }
}); });
// this.actionList=response.data.actionVOList;
if(response.data.mapLocation) if(response.data.mapLocation)
{ {
let mapLocation={"offsetX":response.data.mapLocation.x,"offsetY":response.data.mapLocation.y,"scaleRate":response.data.mapLocation.scale}; let mapLocation={"offsetX":response.data.mapLocation.x,"offsetY":response.data.mapLocation.y,"scaleRate":response.data.mapLocation.scale};
@ -156,7 +133,7 @@
}); });
}, },
reloadTable(){ reloadTable(){
this.loadInitData(this.$route.query); this.loadInitData();
}, },
create(){ create(){
this.reloadTable(); this.reloadTable();
@ -215,5 +192,11 @@
vertical-align: top; vertical-align: top;
display: inline-block; display: inline-block;
} }
.vertialLine{
height: 380px;
margin-left: 440px;
border-right: 1px #dadada solid;
position: fixed;
width: 0px;
}
</style> </style>

View File

@ -140,10 +140,8 @@ export default {
} }
}); });
if (obj) { if (obj) {
const that = this; getTrainingDetail(obj.trainingId ).then(res => {
const data = { id: obj.trainingId }; this.courseModel = {
getTrainingDetail(data).then(res => {
that.courseModel = {
id: res.data.id, id: res.data.id,
name: res.data.name, name: res.data.name,
maxDuration: res.data.maxDuration, maxDuration: res.data.maxDuration,
@ -152,7 +150,7 @@ export default {
updateTime: res.data.updateTime updateTime: res.data.updateTime
}; };
}).catch(error => { }).catch(error => {
that.$message.error('获取试题息失败:' + error.message); this.$message.error('获取试题息失败:' + error.message);
}); });
} }

View File

@ -13,9 +13,14 @@
<div> <div>
<get-action ref="getAction" :group="group"></get-action> <get-action ref="getAction" :group="group"></get-action>
</div> </div>
<!-- <el-button-group class="button-group1"> -->
<!-- </el-button-group> -->
<el-button-group class="button-group"> <el-button-group class="button-group">
<el-button type="danger" @click="dumpScenesData">重置剧本</el-button> <el-button type="primary" @click="pauseScript" v-if="isPause" :disabled="executeDisabled">暂停</el-button>
<el-button type="primary" @click="executePlayScript" v-else :disabled="executeDisabled">恢复并执行</el-button>
<el-button type="primary" @click="saveMaplocation">{{$t('scriptRecord.saveMaplocation')}}</el-button> <el-button type="primary" @click="saveMaplocation">{{$t('scriptRecord.saveMaplocation')}}</el-button>
<el-button type="danger" @click="dumpScenesData">重置剧本</el-button>
<el-button type="primary" @click="saveScenesStage">{{$t('scriptRecord.saveBackground')}}</el-button> <el-button type="primary" @click="saveScenesStage">{{$t('scriptRecord.saveBackground')}}</el-button>
<el-button type="success" @click="saveScenesData" :loading="isSavingScript" >{{$t('scriptRecord.saveData')}}</el-button> <el-button type="success" @click="saveScenesData" :loading="isSavingScript" >{{$t('scriptRecord.saveData')}}</el-button>
<!-- 暂停 --> <!-- 暂停 -->
@ -29,7 +34,7 @@
import Vue from 'vue'; import Vue from 'vue';
import GetAction from './scriptRecord/getAction'; import GetAction from './scriptRecord/getAction';
import { launchFullscreen, exitFullscreen } from '@/utils/screen'; import { launchFullscreen, exitFullscreen } from '@/utils/screen';
import {saveScriptScenes, saveScriptData, dumpScriptData,updateMapLocation} from '@/api/simulation'; import {saveScriptScenes, saveScriptData, dumpScriptData,updateMapLocation,scriptPause,executeScript} from '@/api/simulation';
export default { export default {
name: 'TipScriptRecord', name: 'TipScriptRecord',
@ -50,14 +55,11 @@
mapLocation:{}, mapLocation:{},
autoSaveScript: null, autoSaveScript: null,
isSavingScript:false, isSavingScript:false,
isPause:false,
executeDisabled:false,
// isSaveStage: true, // isSaveStage: true,
} }
}, },
watch: {
'$store.state.map.mapViewLoadedCount': function (val) {
Vue.prototype.$jlmap.setOptions(this.$store.state.scriptRecord.mapLocation);
}
},
created() { created() {
}, },
mounted(){ mounted(){
@ -83,6 +85,13 @@
this.isShrink = true; this.isShrink = true;
} }
}, },
setIsParse(isPause){
this.isPause=isPause;
},
setDisabled(data)
{
this.executeDisabled=!data;
},
initAutoSaveScript() { initAutoSaveScript() {
const timeout = 1000 * 20; const timeout = 1000 * 20;
this.clearAutoSave(this.autoSaveScript); this.clearAutoSave(this.autoSaveScript);
@ -94,13 +103,25 @@
this.autoSaveScript = null; this.autoSaveScript = null;
} }
}, },
// getActions(row){ pauseScript(){
// this.displayType="action"; scriptPause(this.group).then(resp => {
// this.behaviorId=row.id; // this.isSaveStage = false;
// this.$store.dispatch('scriptRecord/updateBehaviorName',row.description); this.$store.dispatch('scriptRecord/updateSimulationPause',true);
// }, // this.$message.success('');
}).catch(error => {
this.$messageBox('暂停失败!');
});
},
executePlayScript(){
executeScript(this.group).then(resp => {
// this.isSaveStage = false;
this.$store.dispatch('scriptRecord/updateSimulationPause',false);
// this.$message.success('');
}).catch(error => {
this.$messageBox('恢复失败!');
});
},
saveScenesStage() { saveScenesStage() {
saveScriptScenes(this.group).then(resp => { saveScriptScenes(this.group).then(resp => {
// this.isSaveStage = false; // this.isSaveStage = false;
this.$message.success('保存背景成功'); this.$message.success('保存背景成功');
@ -125,6 +146,7 @@
}) })
}, },
dumpScenesData() { dumpScenesData() {
this.clearAutoSave();
let group=this.group; let group=this.group;
this.$confirm('此操作将会清除已保存的编制数据, 是否继续?', '提示', { this.$confirm('此操作将会清除已保存的编制数据, 是否继续?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
@ -133,11 +155,16 @@
}).then(() => { }).then(() => {
dumpScriptData(group).then(resp => { dumpScriptData(group).then(resp => {
// this.isSaveStage = true; // this.isSaveStage = true;
this.$parent.resetBeginTime();
this.$refs["getAction"].loadInitData();
this.initAutoSaveScript();
this.$message.success('清除数据成功'); this.$message.success('清除数据成功');
}).catch(error => { }).catch(error => {
this.$messageBox('清除数据失败!'); this.$messageBox('清除数据失败!');
}) })
}).catch(error => { }) }).catch(error => {
this.initAutoSaveScript();
})
}, },
saveMaplocation() saveMaplocation()
{ {
@ -205,6 +232,11 @@
margin-left: 20px; margin-left: 20px;
float:right; float:right;
} }
.button-group1{
margin-top:15px;
margin-left: 20px;
float:left;
}
.actionInfo{ .actionInfo{
margin-top:30px; margin-top:30px;
} }

View File

@ -78,9 +78,9 @@ export default {
this.height = this._clientHeight; this.height = this._clientHeight;
}, },
initLoadPage() { initLoadPage() {
const data = { id: this.$route.query.trainingId }; const trainingId = this.$route.query.trainingId;
if (parseInt(data.id)) { if (parseInt(trainingId)) {
getTrainingDetail(data).then(res => { getTrainingDetail(trainingId).then(res => {
this.courseModel = { this.courseModel = {
id: res.data.id, id: res.data.id,
name: res.data.name, name: res.data.name,

View File

@ -210,7 +210,7 @@ export default {
this.operateModel.id = node.data.id; this.operateModel.id = node.data.id;
this.operateModel.name = node.data.name; this.operateModel.name = node.data.name;
getTrainingDetail({ id: node.data.id }).then(response => { getTrainingDetail(node.data.id).then(response => {
this.operateModel.minDuration = response.data.minDuration; this.operateModel.minDuration = response.data.minDuration;
this.operateModel.maxDuration = response.data.maxDuration; this.operateModel.maxDuration = response.data.maxDuration;
this.operateModel.operateType = response.data.operateType; this.operateModel.operateType = response.data.operateType;

View File

@ -47,7 +47,6 @@ export default {
}, },
$route() { $route() {
this.resizeHandler(); this.resizeHandler();
this.$;
} }
}, },
mounted() { mounted() {

View File

@ -15,7 +15,7 @@
import MapSystemDraft from '@/views/mapsystem/index'; import MapSystemDraft from '@/views/mapsystem/index';
import StepManage from './stepmanage/index'; import StepManage from './stepmanage/index';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { getTrainingStepsDetail } from '@/api/jmap/training'; import { getTrainingDetail, getTrainingStepsDetail } from '@/api/jmap/training';
import { getProductDetail } from '@/api/management/mapprd'; import { getProductDetail } from '@/api/management/mapprd';
import { TrainingMode, OperateMode } from '@/scripts/ConstDic'; import { TrainingMode, OperateMode } from '@/scripts/ConstDic';
import { loadMapData } from '@/utils/loaddata'; import { loadMapData } from '@/utils/loaddata';
@ -38,11 +38,27 @@ export default {
...mapGetters('map', [ ...mapGetters('map', [
'mapData', 'mapData',
'mapDeviceStatus' 'mapDeviceStatus'
]) ]),
group() {
return this.$route.query.group;
},
trainingId() {
return this.$route.params.trainingId;
}
}, },
watch: { watch: {
$route(newVal) { $route(newVal) {
this.initLoadData(); this.initLoadData();
},
'$store.state.map.mapViewLoadedCount': function() {
if (this.trainingId) {
getTrainingStepsDetail(this.trainingId, { group: this.group }).then(response => {
this.$store.dispatch('training/setTrainingData', response.data);
}).catch(() => {
this.$messageBox(this.$t('error.getMapStepsFailed'));
this.endViewLoading();
});
}
} }
}, },
mounted() { mounted() {
@ -66,27 +82,24 @@ export default {
this.$store.dispatch('training/reset'); this.$store.dispatch('training/reset');
this.$store.dispatch('training/changeOperateMode', { mode: OperateMode.NORMAL }); // this.$store.dispatch('training/changeOperateMode', { mode: OperateMode.NORMAL }); //
const trainingId = this.$route.params.trainingId; if (parseInt(this.trainingId)) {
const group = this.$route.query.group; this.trainingObj = { id: this.trainingId, name: this.$route.params.trainingName };
if (parseInt(trainingId)) {
this.trainingObj = { id: trainingId, name: this.$route.params.trainingName };
// //
// //
// //
getTrainingDetail(this.trainingId).then(resp => {
getTrainingStepsDetail(trainingId, { group }).then(response => { const detail = resp.data;
const stepdData = response.data; getProductDetail(detail.prdCode).then(rest => {
getProductDetail(stepdData.prdCode).then(res => { const data = rest.data;
loadMapData(stepdData.skinCode).then(() => { loadMapData(detail.skinCode).then(() => {
this.$store.dispatch('training/setPrdType', res.data.prdType); this.$store.dispatch('training/setPrdType', data.prdType);
this.$store.dispatch('training/setTrainingData', stepdData);
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('error.loadMapDataFailed')); this.$messageBox(this.$t('error.loadMapDataFailed'));
this.endViewLoading(); this.endViewLoading();
}); });
}); });
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('error.getMapStepsFailed')); this.$messageBox(this.$t('error.getMapDetailFailed'));
this.endViewLoading(); this.endViewLoading();
}); });
} else { } else {

View File

@ -40,12 +40,12 @@ export default {
const form = { const form = {
labelWidth: '60px', labelWidth: '60px',
items: [ items: [
{ prop: 'code', label: '编码', type: 'text', required: true, disabled: !isAdd }, { prop: 'code', label: this.$t('system.code'), type: 'text', required: true, disabled: !isAdd },
{ prop: 'name', label: '名称', type: 'text', required: true }, { prop: 'name', label: this.$t('system.name'), type: 'text', required: true },
{ {
prop: 'status', label: '状态', type: 'select', required: true, options: this.$ConstSelect.Status prop: 'status', label: this.$t('system.status'), type: 'select', required: true, options: this.$ConstSelect.Status
}, },
{ prop: 'remarks', label: '备注', type: 'textarea', required: false } { prop: 'remarks', label: this.$t('system.remarks'), type: 'textarea', required: false }
] ]
}; };
return form; return form;
@ -53,21 +53,21 @@ export default {
rules() { rules() {
const crules = { const crules = {
name: [ name: [
{ required: true, message: '请输入名称', trigger: 'blur' }, { required: true, message: this.$t('rules.pleaseInputName'), trigger: 'blur' },
{ min: 1, max: 25, message: '长度在 1 到 25 个字符', trigger: 'blur' } { min: 1, max: 25, message: this.$t('rules.strLength1To25'), trigger: 'blur' }
], ],
status: [ status: [
{ required: true, message: '请选择状态', trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelectStatus'), trigger: 'change' }
], ],
remarks: [ remarks: [
{ max: 50, message: '不能超过 50 个字符', trigger: 'blur' } { max: 50, message: this.$t('rules.strLengthNotExceed50'), trigger: 'blur' }
] ]
}; };
if (this.type === 'ADD') { if (this.type === 'ADD') {
return Object.assign(crules, { return Object.assign(crules, {
code: [ code: [
{ required: true, message: '请输入编码', trigger: 'blur' }, { required: true, message: this.$t('rules.pleaseInputCode'), trigger: 'blur' },
{ min: 1, max: 25, message: '长度在 1 到 25 个字符', trigger: 'blur' }, { min: 1, max: 25, message: this.$t('rules.strLength1To25'), trigger: 'blur' },
{ validator: this.validateCode, trigger: 'blur' } { validator: this.validateCode, trigger: 'blur' }
] ]
}); });
@ -77,25 +77,25 @@ export default {
}, },
title() { title() {
if (this.type === 'ADD') { if (this.type === 'ADD') {
return '创建明细'; return this.$t('system.createDetail');
} else { } else {
return '编辑明细'; return this.$t('system.editDetail');
} }
} }
}, },
methods: { methods: {
validateCode(rule, value, callback) { validateCode(rule, value, callback) {
if (!validateCharCode(value)) { if (!validateCharCode(value)) {
return callback(new Error('格式不正确,只能是字符/数字/_')); return callback(new Error(this.$t('error.formartError')));
} else { } else {
checkDicDetailCodeExist(this.dicId, value).then(response => { checkDicDetailCodeExist(this.dicId, value).then(response => {
if (response.data) { if (response.data) {
return callback(new Error('编码已存在')); return callback(new Error(this.$t('error.codeHasExist')));
} else { } else {
return callback(); return callback();
} }
}).catch(() => { }).catch(() => {
return callback(new Error('服务异常')); return callback(new Error(this.$t('error.serviceException')));
}); });
} }
}, },
@ -121,21 +121,21 @@ export default {
create() { create() {
const self = this; const self = this;
create(this.dicId, this.formModel).then(response => { create(this.dicId, this.formModel).then(response => {
self.$message.success('创建字典目录成功'); self.$message.success(this.$t('system.createSuccess'));
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {
self.$message.error('创建字典目录失败:' + error.message); self.$message.error(`${this.$t('error.createDetailFailed')}:${error.message}`);
}); });
}, },
update() { update() {
const self = this; const self = this;
update(this.dicId, this.formModel).then(response => { update(this.dicId, this.formModel).then(response => {
self.$message.success('更新字典目录成功'); self.$message.success(this.$t('system.updateSuccess'));
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {
self.$message.error('更新字典目录失败:' + error.message); self.$message.error(`${this.$t('error.updateDetailFailed')}:${error.message}`);
}); });
}, },
handleClose(done) { handleClose(done) {

View File

@ -19,7 +19,7 @@ export default {
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '100px', labelWidth: '130px',
reset: true, reset: true,
queryObject: { queryObject: {
group: { group: {
@ -28,29 +28,29 @@ export default {
}, },
userName: { userName: {
type: 'text', type: 'text',
label: this.$t('system.username') label: this.$t('system.userName')
}, },
mobile: { mobile: {
type: 'text', type: 'text',
label: this.$t('system.phoneNumber') label: this.$t('system.mobile')
}, },
skinCode: { skinCode: {
type: 'select', type: 'select',
label: '皮肤编号', label: this.$t('system.skinCode'),
config: { config: {
data: this.$ConstSelect.skinCode data: this.$ConstSelect.skinCode
} }
}, },
prdType: { prdType: {
type: 'select', type: 'select',
label: '产品类型', label: this.$t('system.prdType'),
config: { config: {
data: [] data: []
} }
}, },
type: { type: {
type: 'select', type: 'select',
label: '仿真类型', label: this.$t('system.simulationType'),
config: { config: {
data: this.$ConstSelect.SimulationType data: this.$ConstSelect.SimulationType
} }
@ -64,11 +64,11 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '用户名称', title: this.$t('system.userName'),
prop: 'creator.name' prop: 'creator.name'
}, },
{ {
title: '用户电话', title: this.$t('system.mobile'),
prop: 'creator.mobile' prop: 'creator.mobile'
}, },
{ {
@ -76,7 +76,7 @@ export default {
prop: 'group' prop: 'group'
}, },
{ {
title: '是否错误', title: this.$t('system.isError'),
prop: 'error', prop: 'error',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$ConstSelect.translate(row.error, 'Whether'); }, columnValue: (row) => { return this.$ConstSelect.translate(row.error, 'Whether'); },
@ -88,11 +88,11 @@ export default {
} }
}, },
{ {
title: '产品', title: this.$t('system.productName'),
prop: 'mapPrdVO.name' prop: 'mapPrdVO.name'
}, },
{ {
title: '是否暂停', title: this.$t('system.isSuspend'),
prop: 'pause', prop: 'pause',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$ConstSelect.translate(row.pause, 'Whether'); }, columnValue: (row) => { return this.$ConstSelect.translate(row.pause, 'Whether'); },
@ -104,7 +104,7 @@ export default {
} }
}, },
{ {
title: '是否按计划行车', title: this.$t('system.isDrivingAsplanned'),
prop: 'runAsPlan', prop: 'runAsPlan',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$ConstSelect.translate(row.runAsPlan, 'Whether'); }, columnValue: (row) => { return this.$ConstSelect.translate(row.runAsPlan, 'Whether'); },
@ -116,21 +116,21 @@ export default {
} }
}, },
{ {
title: '皮肤编号', title: this.$t('system.skinCode'),
prop: 'skinCode', prop: 'skinCode',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.skinCode, this.$ConstSelect.skinCode, ['value', 'label']); }, columnValue: (row) => { return this.$convertField(row.skinCode, this.$ConstSelect.skinCode, ['value', 'label']); },
tagType: (row) => { return 'success'; } tagType: (row) => { return 'success'; }
}, },
{ {
title: '仿真类型', title: this.$t('system.simulationType'),
prop: 'type', prop: 'type',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.type, this.$ConstSelect.SimulationType, ['value', 'label']); }, columnValue: (row) => { return this.$convertField(row.type, this.$ConstSelect.SimulationType, ['value', 'label']); },
tagType: (row) => { return 'success'; } tagType: (row) => { return 'success'; }
}, },
{ {
title: '仿真成员ID', title: this.$t('system.simulationGroupId'),
prop: 'sessionList', prop: 'sessionList',
type: 'basicText', type: 'basicText',
columnValue: (row) => { return this.listJoiningTogether(row.sessionList); } columnValue: (row) => { return this.listJoiningTogether(row.sessionList); }
@ -170,17 +170,17 @@ export default {
return sessionId; return sessionId;
}, },
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除此用户仿真数据, 是否继续?', '提示', { this.$confirm(this.$t('system.delUserSimulationIsContinue'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteExistingSimulation(row.group).then(response => { deleteExistingSimulation(row.group).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('system.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
}); });
}); });
}, },

View File

@ -1,9 +1,9 @@
<template> <template>
<el-dialog :title="'编辑用户权限'" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" center> <el-dialog :title="$t('system.editUserPermission')" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" 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" @click="doSave"> </el-button> <el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false">{{ $t('global.cancel') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -31,11 +31,11 @@ export default {
const form = { const form = {
labelWidth: '60px', labelWidth: '60px',
items: [ items: [
{ prop: 'name', label: '名称', type: 'text', required: true, disabled: true }, { prop: 'name', label: this.$t('system.name'), type: 'text', required: true, disabled: true },
// { prop: 'nickname', label: '', type: 'text', required: true }, // { prop: 'nickname', label: '', type: 'text', required: true },
// { prop: 'mobile', label: '', type: 'text', required: true }, // { prop: 'mobile', label: '', type: 'text', required: true },
// { prop: 'email', label: '', type: 'text' }, // { prop: 'email', label: '', type: 'text' },
{ prop: 'roles', label: '权限', type: 'select', required: true, options: this.$ConstSelect.roleList, multiple: true } { prop: 'roles', label: this.$t('system.permission'), type: 'select', required: true, options: this.$ConstSelect.roleList, multiple: true }
] ]
}; };
return form; return form;
@ -43,11 +43,11 @@ export default {
rules() { rules() {
const crules = { const crules = {
name: [ name: [
{ required: true, message: '请输入名称', trigger: 'blur' }, { required: true, message: this.$t('rules.pleaseInputName'), trigger: 'blur' },
{ min: 1, max: 25, message: '长度在 1 到 25 个字符', trigger: 'blur' } { min: 1, max: 25, message: this.$t('rules.strLength1To25'), trigger: 'blur' }
], ],
status: [ status: [
{ required: true, message: '请选择状态', trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelectStatus'), trigger: 'change' }
] ]
}; };
return crules; return crules;
@ -76,11 +76,11 @@ export default {
update() { update() {
const self = this; const self = this;
putRoles(this.formModel).then(response => { putRoles(this.formModel).then(response => {
self.$message.success('修改成功'); self.$message.success(this.$t('system.updateSuccess'));
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {
self.$message.error('修改失败:' + error.message); self.$message.error(`${this.$t('error.updateFailed')}: ${error.message}`);
}); });
}, },
handleClose(done) { handleClose(done) {

View File

@ -29,11 +29,11 @@ export default {
queryObject: { queryObject: {
name: { name: {
type: 'text', type: 'text',
label: '名称' label: this.$t('system.name')
}, },
roles: { roles: {
type: 'select', type: 'select',
label: '角色', label: this.$t('system.roles'),
config: { config: {
data: this.$ConstSelect.roleList data: this.$ConstSelect.roleList
} }
@ -47,23 +47,23 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '名称', title: this.$t('system.name'),
prop: 'name' prop: 'name'
}, },
{ {
title: '昵称', title: this.$t('system.nickname'),
prop: 'nickname' prop: 'nickname'
}, },
{ {
title: '电话', title: this.$t('system.mobile'),
prop: 'mobile' prop: 'mobile'
}, },
{ {
title: '邮箱', title: this.$t('system.email'),
prop: 'email' prop: 'email'
}, },
{ {
title: '角色', title: this.$t('system.roles'),
prop: 'roles', prop: 'roles',
type: 'tagMore', type: 'tagMore',
columnValue: (row) => { return this.$convertField(row.roles, this.$ConstSelect.roleList, ['value', 'label'], true); }, columnValue: (row) => { return this.$convertField(row.roles, this.$ConstSelect.roleList, ['value', 'label'], true); },
@ -71,15 +71,15 @@ export default {
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
buttons: [ buttons: [
{ {
name: '编辑', name: this.$t('global.edit'),
handleClick: this.handleUserEdit handleClick: this.handleUserEdit
}, },
{ {
name: '订阅地图', name: this.$t('system.subscribeMap'),
handleClick: this.handleMapCorrelation, handleClick: this.handleMapCorrelation,
type: 'danger' type: 'danger'
} }
@ -100,9 +100,9 @@ export default {
// //
handleUserDelete(index, row) { handleUserDelete(index, row) {
this.$confirm('此操作将删除该类型, 是否继续?', '提示', { this.$confirm(this.$t('system.delTypeIsContinue'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
// delPublishMap(row.id).then(response => { // delPublishMap(row.id).then(response => {

View File

@ -2,8 +2,8 @@
<el-dialog :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" center> <el-dialog :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" 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" @click="doSave"> </el-button> <el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false">{{ $t('global.cancel') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -34,12 +34,12 @@ export default {
computed: { computed: {
form() { form() {
const form = { const form = {
labelWidth: '100px', labelWidth: '160px',
items: [ items: [
{ prop: 'userName', label: '用户名称', type: 'text', required: false, disabled: true }, { prop: 'userName', label: this.$t('system.userName'), type: 'text', required: false, disabled: true },
{ prop: 'examName', label: '试卷名称', type: 'text', required: true, disabled: true }, { prop: 'examName', label: this.$t('system.examName'), type: 'text', required: true, disabled: true },
{ prop: 'score', label: '考试分数', type: 'text', required: true }, { prop: 'score', label: this.$t('system.examScore'), type: 'text', required: true },
{ prop: 'result', label: '考试结果', type: 'select', required: true, options: this.$ConstSelect.examResultList } { prop: 'result', label: this.$t('system.examResult'), type: 'select', required: true, options: this.$ConstSelect.examResultList }
] ]
}; };
return form; return form;
@ -47,16 +47,16 @@ export default {
rules() { rules() {
const crules = { const crules = {
score: [ score: [
{ required: true, message: '请输入名称', trigger: 'blur' } { required: true, message: this.$t('rules.pleaseInputName'), trigger: 'blur' }
], ],
result: [ result: [
{ required: true, message: '请选择状态', trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelectStatus'), trigger: 'change' }
] ]
}; };
return crules; return crules;
}, },
title() { title() {
return '编辑考试详情'; return this.$t('system.editExamDetail');
} }
}, },
methods: { methods: {
@ -79,11 +79,11 @@ export default {
update() { update() {
const self = this; const self = this;
updateExam(this.formModel).then(response => { updateExam(this.formModel).then(response => {
self.$message.success('修改成功!'); self.$message.success(this.$t('system.updateSuccess'));
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {
self.$message.error('修改失败!' + error.message); self.$message.error(`${this.$t('error.updateFailed')}: ${error.message}`);
}); });
}, },
handleClose(done) { handleClose(done) {

View File

@ -22,20 +22,20 @@ export default {
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '80px', labelWidth: '150px',
reset: true, reset: true,
queryObject: { queryObject: {
examName: { examName: {
type: 'text', type: 'text',
label: '试卷名称' label: this.$t('system.examName')
}, },
userName: { userName: {
type: 'text', type: 'text',
label: '考试用户' label: this.$t('system.examUser')
}, },
result: { result: {
type: 'select', type: 'select',
label: '考试结果', label: this.$t('system.examResult'),
config: { config: {
data: this.$ConstSelect.examResultList data: this.$ConstSelect.examResultList
} }
@ -49,11 +49,11 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '试卷名称', title: this.$t('system.examName'),
prop: 'examName' prop: 'examName'
}, },
{ {
title: '考试结果', title: this.$t('system.examResult'),
prop: 'result', prop: 'result',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.result, this.$ConstSelect.examResultList, ['value', 'label']); }, columnValue: (row) => { return this.$convertField(row.result, this.$ConstSelect.examResultList, ['value', 'label']); },
@ -67,28 +67,28 @@ export default {
} }
}, },
{ {
title: '考试成绩', title: this.$t('system.examScore'),
prop: 'score' prop: 'score'
}, },
{ {
title: '考试用户', title: this.$t('system.examUser'),
prop: 'userName' prop: 'userName'
}, },
{ {
title: '用户手机号', title: this.$t('system.mobile'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
buttons: [ buttons: [
{ {
name: '编辑', name: this.$t('global.edit'),
handleClick: this.edit handleClick: this.edit
}, },
{ {
name: '删除', name: this.$t('global.delete'),
handleClick: this.handleDelete, handleClick: this.handleDelete,
type: 'danger' type: 'danger'
} }
@ -115,17 +115,17 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除此考试结果, 是否继续?', '提示', { this.$confirm(this.$t('system.delExamResultIsContinue'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
delPublishExam(row.id).then(response => { delPublishExam(row.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('system.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
}); });
}); });
}, },

View File

@ -2,8 +2,8 @@
<el-dialog :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" center> <el-dialog :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" 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" @click="doSave"> </el-button> <el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="handleClose"> </el-button> <el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -41,12 +41,12 @@ export default {
computed: { computed: {
form() { form() {
const form = { const form = {
labelWidth: '100px', labelWidth: '120px',
items: [ items: [
{ prop: 'mapId', label: '地图名称', type: 'select', required: true, options: this.LessonList, change: true, onChange: this.mapChange }, { prop: 'mapId', label: this.$t('system.mapName'), type: 'select', required: true, options: this.LessonList, change: true, onChange: this.mapChange, placeholder: this.$t('rules.mapInput') },
{ prop: 'mapPrdCode', label: '产品名称', type: 'select', required: true, options: this.mapPrdList, placeholder: '请选择产品' }, { prop: 'mapPrdCode', label: this.$t('system.productName'), type: 'select', required: true, options: this.mapPrdList, placeholder: this.$t('rules.productInput') },
{ prop: 'userName', label: '用户名称', type: 'complete', required: false, querySearchAsync: this.querySearchAsync, handleSelect: this.prdSelect, placeholder: '请输入昵称/名字/手机号' }, { prop: 'userName', label: this.$t('system.userName'), type: 'complete', required: false, querySearchAsync: this.querySearchAsync, handleSelect: this.prdSelect, placeholder: this.$t('system.pleaseInputNames') },
{ prop: 'duration', label: '实训时长', type: 'text', rightWidth: true, required: true, message: 's' } { prop: 'duration', label: this.$t('system.trainingUseTime'), type: 'text', rightWidth: true, required: true, message: 's' }
] ]
}; };
return form; return form;
@ -54,22 +54,22 @@ export default {
rules() { rules() {
const crules = { const crules = {
mapId: [ mapId: [
{ required: true, message: '请选择地图', trigger: 'change' } { required: true, message: this.$t('rules.mapInput'), trigger: 'change' }
], ],
userName: [ userName: [
{ required: true, message: '请选择用户', trigger: 'change' } { required: true, message: this.$t('rules.chooseUser'), trigger: 'change' }
], ],
mapPrdCode: [ mapPrdCode: [
{ required: true, message: '请选择产品', trigger: 'change' } { required: true, message: this.$t('rules.productInput'), trigger: 'change' }
], ],
duration: [ duration: [
{ required: true, message: '请输入时长', trigger: 'blur' } { required: true, message: this.$t('rules.timeInput'), trigger: 'blur' }
] ]
}; };
return crules; return crules;
}, },
title() { title() {
return '创建仿真信息'; return this.$t('system.createSimulationTitle');
} }
}, },
mounted() { mounted() {
@ -113,7 +113,7 @@ export default {
}); });
cb(results); cb(results);
} catch (error) { } catch (error) {
console.error(error, '查询用户list'); console.error(error);
cb(results); cb(results);
} }
} else { } else {
@ -148,13 +148,6 @@ export default {
}, },
show(data) { show(data) {
this.dialogVisible = true; this.dialogVisible = true;
// this.formModel = {
// mapId: '',
// mapPrdCode: '',
// userId: '',
// userName: '',
// duration: '',
// };
}, },
doSave() { doSave() {
const self = this; const self = this;
@ -172,14 +165,14 @@ export default {
}; };
if (params.userId) { if (params.userId) {
postSimulationStats(params).then(response => { postSimulationStats(params).then(response => {
self.$message.success('新增成功!'); self.$message.success(this.$t('system.addSuccess'));
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {
self.$message.error('新增失败!' + error.message); self.$message.error(this.$t('error.addFailed') + error.message);
}); });
} else { } else {
this.$message.error('请选择用户'); this.$message.error(this.$t('rules.chooseUser'));
} }
}, },
handleClose(done) { handleClose(done) {

View File

@ -29,16 +29,16 @@ export default {
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '80px', labelWidth: '120px',
reset: true, reset: true,
queryObject: { queryObject: {
trainingName: { trainingName: {
type: 'text', type: 'text',
label: '实训名称' label: this.$t('system.trainingName')
}, },
userName: { userName: {
type: 'text', type: 'text',
label: '用户名' label: this.$t('system.userName')
} }
} }
@ -49,41 +49,41 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '用户名称', title: this.$t('system.userName'),
prop: 'userName' prop: 'userName'
}, },
{ {
title: '用户手机号', title: this.$t('system.mobile'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
title: '地图名称', title: this.$t('system.mapName'),
prop: 'mapName' prop: 'mapName'
}, },
{ {
title: '实训用时', title: this.$t('system.trainingUseTime'),
prop: 'duration', prop: 'duration',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.computation(row.duration); }, columnValue: (row) => { return this.computation(row.duration); },
tagType: (row) => { return 'success'; } tagType: (row) => { return 'success'; }
}, },
{ {
title: '产品名称', title: this.$t('system.productName'),
prop: 'mapPrdName' prop: 'mapPrdName'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
hide: (row) => { return !row.fake; }, hide: (row) => { return !row.fake; },
buttons: [ buttons: [
{ {
name: '编辑', name: this.$t('global.edit'),
handleClick: this.edit, handleClick: this.edit,
showControl: (row) => { return row.fake; } showControl: (row) => { return row.fake; }
}, },
{ {
name: '删除', name: this.$t('global.delete'),
handleClick: this.handleDelete, handleClick: this.handleDelete,
type: 'danger', type: 'danger',
showControl: (row) => { return row.fake; } showControl: (row) => { return row.fake; }
@ -92,7 +92,7 @@ export default {
} }
], ],
actions: [ actions: [
{ text: '新增', handler: this.createTraining } { text: this.$t('global.add'), handler: this.createTraining }
] ]
}, },
currentModel: {} currentModel: {}
@ -121,9 +121,9 @@ export default {
const f = parseInt(fieldValue / 60); const f = parseInt(fieldValue / 60);
const s = fieldValue % 60; const s = fieldValue % 60;
if (f > 0) { if (f > 0) {
return `${f}${s}`; return `${f} ${this.$t('system.minute')} ${s} ${this.$t('system.second')}`;
} else { } else {
return `${s}`; return `${s} ${this.$t('system.second')}`;
} }
} }
}, },
@ -135,17 +135,17 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除此用户仿真数据, 是否继续?', '提示', { this.$confirm(this.$t('system.delUserSimulationIsContinue'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteSimulationStats(row.id).then(response => { deleteSimulationStats(row.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('system.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
}); });
}); });
}, },

View File

@ -3,8 +3,8 @@
<el-dialog :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" center> <el-dialog :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" 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" @click="doSave"> </el-button> <el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="handleClose"> </el-button> <el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
<add-training ref="addTraining" @selectTrain="selectTrain" /> <add-training ref="addTraining" @selectTrain="selectTrain" />
@ -48,12 +48,12 @@ export default {
form() { form() {
this.type === 'ADD'; this.type === 'ADD';
const form = { const form = {
labelWidth: '100px', labelWidth: '150px',
items: [ items: [
{ prop: 'lessonId', label: '课程名称', type: 'select', required: true, options: this.LessonList }, { prop: 'lessonId', label: this.$t('system.lessonName'), type: 'select', required: true, options: this.LessonList },
{ prop: 'trainingName', label: '实训名称', type: 'text', required: true, rightWidth: true, disabled: true, buttontip: '选择实训', buttonClick: this.buttonClick, placeholder: '请选择实训' }, { prop: 'trainingName', label: this.$t('system.trainingName'), type: 'text', required: true, rightWidth: true, disabled: true, buttontip: this.$t('system.selectTraining'), buttonClick: this.buttonClick, placeholder: this.$t('rules.pleaseSelectTraining') },
{ prop: 'userName', label: '用户名称', type: 'complete', required: false, querySearchAsync: this.querySearchAsync, handleSelect: this.prdSelect, placeholder: '请输入昵称/名字/手机号' }, { prop: 'userName', label: this.$t('system.userName'), type: 'complete', required: false, querySearchAsync: this.querySearchAsync, handleSelect: this.prdSelect, placeholder: this.$t('system.pleaseInputNames') },
{ prop: 'duration', label: '实训时长', type: 'text', required: true, rightWidth: true, message: 's' } { prop: 'duration', label: this.$t('system.trainingTime'), type: 'text', required: true, rightWidth: true, message: 's' }
] ]
}; };
return form; return form;
@ -61,22 +61,22 @@ export default {
rules() { rules() {
const crules = { const crules = {
lessonId: [ lessonId: [
{ required: true, message: '请输入教学名称', trigger: 'change' } { required: true, message: this.$t('rules.pleaseInputLessonName'), trigger: 'change' }
], ],
trainingName: [ trainingName: [
{ required: true, message: '请选择实训', trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelectTraining'), trigger: 'change' }
], ],
userName: [ userName: [
{ required: true, message: '请输入用户名称', trigger: 'change' } { required: true, message: this.$t('rules.userNameInput'), trigger: 'change' }
], ],
duration: [ duration: [
{ required: true, message: '请输入时长', trigger: 'blur' } { required: true, message: this.$t('rules.timeInput'), trigger: 'blur' }
] ]
}; };
return crules; return crules;
}, },
title() { title() {
return '创建用户实训'; return this.$t('system.createUserTraining');
} }
}, },
mounted() { mounted() {
@ -139,14 +139,6 @@ export default {
}, },
show(data) { show(data) {
this.dialogVisible = true; this.dialogVisible = true;
// this.formModel = {
// lessonId: '',
// trainingId: '',
// trainingName: '',
// userId: '',
// userName: '',
// duration: '',
// };
}, },
doSave() { doSave() {
const self = this; const self = this;
@ -158,14 +150,14 @@ export default {
const self = this; const self = this;
if (this.formModel.userId) { if (this.formModel.userId) {
addUserTraining(this.formModel).then(response => { addUserTraining(this.formModel).then(response => {
self.$message.success('创建成功!'); self.$message.success(this.$t('system.addSuccess'));
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {
self.$message.error('创建失败!' + error.message); self.$message.error(this.$t('error.addFailed') + error.message);
}); });
} else { } else {
self.$message.error('请选择用户'); self.$message.error(this.$t('rules.chooseUser'));
} }
}, },
handleClose(done) { handleClose(done) {

View File

@ -17,8 +17,8 @@
</el-tree> </el-tree>
</el-scrollbar> </el-scrollbar>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" :disabled="disabled" @click="doSave"> </el-button> <el-button type="primary" :disabled="disabled" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="handleClose"> </el-button> <el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -34,7 +34,7 @@ export default {
data() { data() {
return { return {
dialogVisibles: false, dialogVisibles: false,
title: '选择实训', title: this.$t('system.selectTraining'),
treeData: [{ treeData: [{
children: [], children: [],
name: '' name: ''

View File

@ -2,8 +2,8 @@
<el-dialog :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" center> <el-dialog :title="title" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" 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" @click="doSave"> </el-button> <el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="handleClose"> </el-button> <el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -37,10 +37,10 @@ export default {
const form = { const form = {
labelWidth: '100px', labelWidth: '100px',
items: [ items: [
{ prop: 'lessonName', label: '教学名称', type: 'text', required: false, disabled: true }, { prop: 'lessonName', label: this.$t('system.lessonName'), type: 'text', required: false, disabled: true },
{ prop: 'trainingName', label: '实训名称', type: 'text', required: true, disabled: true }, { prop: 'trainingName', label: this.$t('system.trainingName'), type: 'text', required: true, disabled: true },
{ prop: 'userName', label: '用户名称', type: 'text', required: true, disabled: true }, { prop: 'userName', label: this.$t('system.userName'), type: 'text', required: true, disabled: true },
{ prop: 'duration', label: '实训时长', type: 'text', required: true, rightWidth: true, message: 's' } { prop: 'duration', label: this.$t('system.trainingTime'), type: 'text', required: true, rightWidth: true, message: 's' }
] ]
}; };
return form; return form;
@ -48,13 +48,13 @@ export default {
rules() { rules() {
const crules = { const crules = {
duration: [ duration: [
{ required: true, message: '请输入时长', trigger: 'blur' } { required: true, message: this.$t('rules.timeInput'), trigger: 'blur' }
] ]
}; };
return crules; return crules;
}, },
title() { title() {
return '编辑实训详情'; return this.$t('system.editTrainingDetail');
} }
}, },
methods: { methods: {
@ -67,7 +67,6 @@ export default {
userName: data.userName, userName: data.userName,
trainingName: data.trainingName, trainingName: data.trainingName,
duration: data.duration duration: data.duration
// trainingCount: data.trainingCount
}; };
} }
}, },
@ -84,11 +83,11 @@ export default {
duration: this.formModel.duration duration: this.formModel.duration
}; };
putUserTraining(param).then(response => { putUserTraining(param).then(response => {
self.$message.success('修改成功!'); self.$message.success(this.$t('system.updateSuccess'));
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {
self.$message.error('修改失败!' + error.message); self.$message.error(`${this.$t('error.updateFailed')}: ${error.message}`);
}); });
}, },
handleClose(done) { handleClose(done) {

View File

@ -24,16 +24,16 @@ export default {
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '80px', labelWidth: '120px',
reset: true, reset: true,
queryObject: { queryObject: {
trainingName: { trainingName: {
type: 'text', type: 'text',
label: '实训名称' label: this.$t('system.trainingName')
}, },
userName: { userName: {
type: 'text', type: 'text',
label: '用户名' label: this.$t('system.userName')
} }
} }
@ -44,40 +44,40 @@ export default {
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: '用户名称', title: this.$t('system.userName'),
prop: 'userName' prop: 'userName'
}, },
{ {
title: '用户手机号', title: this.$t('system.mobile'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
title: '课程名称', title: this.$t('system.lessonName'),
prop: 'lessonName' prop: 'lessonName'
}, },
{ {
title: '实训用时', title: this.$t('system.trainingUseTime'),
prop: 'duration', prop: 'duration',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.computation(row.duration); }, columnValue: (row) => { return this.computation(row.duration); },
tagType: (row) => { return 'success'; } tagType: (row) => { return 'success'; }
}, },
{ {
title: '实训名称', title: this.$t('system.trainingName'),
prop: 'trainingName' prop: 'trainingName'
}, },
{ {
type: 'button', type: 'button',
title: '操作', title: this.$t('global.operate'),
width: '250', width: '250',
buttons: [ buttons: [
{ {
name: '编辑', name: this.$t('global.edit'),
handleClick: this.edit, handleClick: this.edit,
showControl: (row) => { return row.fake != '0'; } showControl: (row) => { return row.fake != '0'; }
}, },
{ {
name: '删除', name: this.$t('global.delete'),
handleClick: this.handleDelete, handleClick: this.handleDelete,
type: 'danger', type: 'danger',
showControl: (row) => { return row.fake != '0'; } showControl: (row) => { return row.fake != '0'; }
@ -86,7 +86,7 @@ export default {
} }
], ],
actions: [ actions: [
{ text: '新增', handler: this.createTraining } { text: this.$t('global.add'), handler: this.createTraining }
] ]
}, },
currentModel: {} currentModel: {}
@ -107,9 +107,9 @@ export default {
const f = parseInt(fieldValue / 60); const f = parseInt(fieldValue / 60);
const s = fieldValue % 60; const s = fieldValue % 60;
if (f > 0) { if (f > 0) {
return `${f}${s}`; return `${f} ${this.$t('system.minute')} ${s} ${this.$t('system.second')}`;
} else { } else {
return `${s}`; return `${s} ${this.$t('system.second')}`;
} }
} }
}, },
@ -121,17 +121,17 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm('此操作将删除此考试结果, 是否继续?', '提示', { this.$confirm(this.$t('system.delExamResultIsContinue'), this.$t('global.tips'), {
confirmButtonText: '确定', confirmButtonText: this.$t('global.confirm'),
cancelButtonText: '取消', cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteUserTraining(row.id).then(response => { deleteUserTraining(row.id).then(response => {
this.$message.success('删除成功'); this.$message.success(this.$t('system.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox('删除失败'); this.$messageBox(this.$t('error.deleteFailed'));
}); });
}); });
}, },

View File

@ -89,7 +89,7 @@ export default {
handleClick: this.editObj handleClick: this.editObj
}, },
{ {
name: this.$t('map.delete'), name: this.$t('map.deleteObj'),
handleClick: this.deleteObj, handleClick: this.deleteObj,
type: 'danger' type: 'danger'
} }

View File

@ -15,7 +15,7 @@
<el-button :type="field === 'signalCode' ? 'danger' : 'primary'" @click="hover('signalCode')">{{ $t('map.activate') }} <el-button :type="field === 'signalCode' ? 'danger' : 'primary'" @click="hover('signalCode')">{{ $t('map.activate') }}
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item :label="$t('map.segmentData')" prop="autoSignalClearList"> <el-form-item :label="$t('map.routeTriggerSectionList')" prop="autoSignalClearList">
<el-select v-model="addModel.autoSignalClearList" multiple clearable :filterable="true"> <el-select v-model="addModel.autoSignalClearList" multiple clearable :filterable="true">
<el-option <el-option
v-for="item in sectionList" v-for="item in sectionList"

View File

@ -47,7 +47,7 @@ export default {
}, },
stationCode: { stationCode: {
type: 'select', type: 'select',
label: this.$t('map.affiliationStationCode'), label: this.$t('map.routeStationName'),
config: { config: {
data: [] data: []
} }
@ -83,7 +83,7 @@ export default {
prop: 'name' prop: 'name'
}, },
{ {
title: this.$t('map.routeMapId'), title: this.$t('map.pathUnitMapName'),
prop: 'mapId' prop: 'mapId'
}, },
{ {
@ -91,11 +91,11 @@ export default {
prop: 'stationCode' prop: 'stationCode'
}, },
{ {
title: this.$t('map.routeStartSignalCode'), title: this.$t('map.startingSignalName'),
prop: 'startSignalCode' prop: 'startSignalCode'
}, },
{ {
title: this.$t('map.routeEndSignalCode'), title: this.$t('map.endingSignalName'),
prop: 'endSignalCode' prop: 'endSignalCode'
}, },
{ {

View File

@ -53,7 +53,7 @@ export default {
}, },
stationCode: { stationCode: {
type: 'select', type: 'select',
label: this.$t('map.affiliationStationCode'), label: this.$t('map.routeStationName'),
config: { config: {
data: [] data: []
} }
@ -93,7 +93,7 @@ export default {
prop: 'mapId' prop: 'mapId'
}, },
{ {
title: this.$t('map.affiliationStationCode'), title: this.$t('map.routeStationName'),
prop: 'stationCode' prop: 'stationCode'
}, },
{ {

View File

@ -116,7 +116,7 @@ export default {
handleClick: this.editObj handleClick: this.editObj
}, },
{ {
name: this.$t('map.delete'), name: this.$t('map.deleteObj'),
handleClick: this.deleteObj, handleClick: this.deleteObj,
type: 'danger' type: 'danger'
} }

View File

@ -110,7 +110,7 @@ export default {
labelWidth: '150px', labelWidth: '150px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.code'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.resourceList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.code'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.resourceList, change: true, deviceChange: this.deviceChange },
{ prop: 'name', label: this.$t('map.imageName'), type: 'input' }, { prop: 'name', label: this.$t('map.imageName'), type: 'input' },
@ -125,7 +125,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [] item: []
} }
} }
@ -252,7 +252,7 @@ export default {
const selected = this.$store.getters['map/getDeviceByCode'](this.editModel.code); const selected = this.$store.getters['map/getDeviceByCode'](this.editModel.code);
if (selected && selected._type.toUpperCase() === 'ImageControl'.toUpperCase()) { if (selected && selected._type.toUpperCase() === 'ImageControl'.toUpperCase()) {
const _that = this; const _that = this;
this.$confirm(this.$t('map.confirmDeletion'), this.$t('map.hint'), { this.$confirm(this.$t('tip.confirmDeletion'), this.$t('tip.hint'), {
confirmButtonText: this.$t('map.confirm'), confirmButtonText: this.$t('map.confirm'),
cancelButtonText: this.$t('map.cancel'), cancelButtonText: this.$t('map.cancel'),
type: 'warning' type: 'warning'
@ -260,7 +260,7 @@ export default {
_that.$emit('delMapModel', selected); _that.$emit('delMapModel', selected);
_that.deviceSelect(); _that.deviceSelect();
}).catch(() => { }).catch(() => {
_that.$message.info(this.$t('map.cancelledDelete')); _that.$message.info(this.$t('tip.cancelledDelete'));
}); });
} }
} }

View File

@ -136,7 +136,7 @@ export default {
labelWidth: '120px', labelWidth: '120px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.counterCoding'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.counterList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.counterCoding'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.counterList, change: true, deviceChange: this.deviceChange },
{ prop: 'name', label: this.$t('map.counterName'), type: 'input' }, { prop: 'name', label: this.$t('map.counterName'), type: 'input' },
@ -147,7 +147,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.belongsStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList } { prop: 'stationCode', label: this.$t('map.belongsStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList }
] ]
@ -250,7 +250,7 @@ export default {
const selected = this.$store.getters['map/getDeviceByCode'](this.editModel.code); const selected = this.$store.getters['map/getDeviceByCode'](this.editModel.code);
if (selected && selected._type.toUpperCase() === 'Counter'.toUpperCase()) { if (selected && selected._type.toUpperCase() === 'Counter'.toUpperCase()) {
const _that = this; const _that = this;
this.$confirm(this.$t('map.confirmDeletion'), this.$t('map.hint'), { this.$confirm(this.$t('tip.confirmDeletion'), this.$t('tip.hint'), {
confirmButtonText: this.$t('map.confirm'), confirmButtonText: this.$t('map.confirm'),
cancelButtonText: this.$t('map.cancel'), cancelButtonText: this.$t('map.cancel'),
type: 'warning' type: 'warning'
@ -258,7 +258,7 @@ export default {
_that.$emit('delMapModel', selected); _that.$emit('delMapModel', selected);
_that.deviceSelect(); _that.deviceSelect();
}).catch(() => { }).catch(() => {
_that.$message.info(this.$t('map.cancelledDelete')); _that.$message.info(this.$t('tip.cancelledDelete'));
}); });
} }
} }

View File

@ -118,7 +118,7 @@ export default {
labelWidth: '120px', labelWidth: '120px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.delayUnlockingCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.delayShowList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.delayUnlockingCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.delayShowList, change: true, deviceChange: this.deviceChange },
{ prop: 'unlockTime', label: this.$t('map.delayTime'), type: 'number', min: 0, max: 1000, placeholder: 's' }, { prop: 'unlockTime', label: this.$t('map.delayTime'), type: 'number', min: 0, max: 1000, placeholder: 's' },
@ -129,7 +129,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.belongsStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList } { prop: 'stationCode', label: this.$t('map.belongsStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList }
] ]
@ -231,7 +231,7 @@ export default {
const selected = this.$store.getters['map/getDeviceByCode'](this.editModel.code); const selected = this.$store.getters['map/getDeviceByCode'](this.editModel.code);
if (selected && selected._type.toUpperCase() === 'DelayUnlock'.toUpperCase()) { if (selected && selected._type.toUpperCase() === 'DelayUnlock'.toUpperCase()) {
const _that = this; const _that = this;
this.$confirm(this.$t('map.confirmDeletion'), this.$t('map.hint'), { this.$confirm(this.$t('tip.confirmDeletion'), this.$t('tip.hint'), {
confirmButtonText: this.$t('map.confirm'), confirmButtonText: this.$t('map.confirm'),
cancelButtonText: this.$t('map.cancel'), cancelButtonText: this.$t('map.cancel'),
type: 'warning' type: 'warning'
@ -239,7 +239,7 @@ export default {
_that.$emit('delMapModel', selected); _that.$emit('delMapModel', selected);
_that.deviceSelect(); _that.deviceSelect();
}).catch(() => { }).catch(() => {
_that.$message.info(this.$t('map.cancelledDelete')); _that.$message.info(this.$t('tip.cancelledDelete'));
}); });
} }
} }

View File

@ -128,7 +128,7 @@ export default {
labelWidth: '150px', labelWidth: '150px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.code'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.lcList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.code'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.lcList, change: true, deviceChange: this.deviceChange },
{ prop: 'name', label: this.$t('map.statusSignalName'), type: 'input' }, { prop: 'name', label: this.$t('map.statusSignalName'), type: 'input' },
@ -139,7 +139,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
] ]
} }

View File

@ -94,7 +94,7 @@ export default {
labelWidth: '150px', labelWidth: '150px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.code'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.tempSpeedLimitList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.code'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.tempSpeedLimitList, change: true, deviceChange: this.deviceChange },
{ prop: 'name', label: this.$t('map.statusSignalName'), type: 'input' }, { prop: 'name', label: this.$t('map.statusSignalName'), type: 'input' },
@ -105,7 +105,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [] item: []
} }
} }

View File

@ -151,7 +151,7 @@ export default {
labelWidth: '120px', labelWidth: '120px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.lineCoding'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.lineList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.lineCoding'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.lineList, change: true, deviceChange: this.deviceChange },
{ prop: 'type', label: this.$t('map.lineType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.LineTypeList }, { prop: 'type', label: this.$t('map.lineType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.LineTypeList },
@ -160,7 +160,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
] ]
} }

View File

@ -158,7 +158,7 @@ export default {
labelWidth: '130px', labelWidth: '130px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.linkCode'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.linkList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.linkCode'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.linkList, change: true, deviceChange: this.deviceChange },
{ prop: 'name', label: this.$t('map.linkName'), type: 'input' }, { prop: 'name', label: this.$t('map.linkName'), type: 'input' },
@ -179,7 +179,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'lengthFact', label: this.$t('map.linkActualLength'), type: 'number', min: 0, placeholder: this.$t('tip.meter') } { prop: 'lengthFact', label: this.$t('map.linkActualLength'), type: 'number', min: 0, placeholder: this.$t('tip.meter') }
] ]

View File

@ -32,7 +32,7 @@
<el-tab-pane class="view-control" :label="$t('map.splitMerge')" name="three"> <el-tab-pane class="view-control" :label="$t('map.splitMerge')" name="three">
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: cardHeight+60+'px' }"> <el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: cardHeight+60+'px' }">
<el-form ref="oprt" :model="addModel" label-width="130px" size="mini" :rules="addRules"> <el-form ref="oprt" :model="addModel" label-width="130px" size="mini" :rules="addRules">
<el-form-item :label="$t('map.sectionNameC')" prop="code"> <el-form-item :label="$t('map.sectionNameColon')" prop="code">
<el-select v-model="addModel.code" filterable> <el-select v-model="addModel.code" filterable>
<el-option <el-option
v-for="item in PhysicalSectionList" v-for="item in PhysicalSectionList"
@ -285,7 +285,7 @@ export default {
labelWidth: '160px', labelWidth: '160px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', mode: true, optionLabel: 'name&&code', optionValue: 'code', disabled: this.isStationCodeDisabled, options: this.stationList }, { prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', mode: true, optionLabel: 'name&&code', optionValue: 'code', disabled: this.isStationCodeDisabled, options: this.stationList },
{ prop: 'parentCode', label: this.$t('map.associatedSection'), type: 'select', mode: true, optionLabel: 'code&&name', optionValue: 'code', disabled: true, options: this.sectionList, isHidden: !this.isParentCode }, { prop: 'parentCode', label: this.$t('map.associatedSection'), type: 'select', mode: true, optionLabel: 'code&&name', optionValue: 'code', disabled: true, options: this.sectionList, isHidden: !this.isParentCode },
@ -341,11 +341,11 @@ export default {
{ prop: 'segmentationPosition.y', firstLevel: 'segmentationPosition', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '20px', disabled: true } { prop: 'segmentationPosition.y', firstLevel: 'segmentationPosition', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '20px', disabled: true }
] }, ] },
{ prop: 'isCurve', label: this.$t('map.isCurve'), type: 'checkbox', isHidden: !this.isSectionType }, { prop: 'isCurve', label: this.$t('map.isCurve'), type: 'checkbox', isHidden: !this.isSectionType },
{ prop: 'points', label: this.$t('map.sectionPoints'), type: 'points', width: '140px', isHidden: !this.isPointsShow, pointDisabled: this.pointDisabledName, addPoint: this.addPoint, delPoint: this.delPoint } { prop: 'points', label: this.$t('map.segmentCoordinates'), type: 'points', width: '140px', isHidden: !this.isPointsShow, pointDisabled: this.pointDisabledName, addPoint: this.addPoint, delPoint: this.delPoint }
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'offsetLeft', label: this.$t('map.sectionOffsetLeft'), type: 'number', min: 0, placeholder: '米', isHidden: !this.isSectionType }, { prop: 'offsetLeft', label: this.$t('map.sectionOffsetLeft'), type: 'number', min: 0, placeholder: '米', isHidden: !this.isSectionType },
{ prop: 'offsetRight', label: this.$t('map.sectionOffsetRight'), type: 'number', min: 0, placeholder: '米', isHidden: !this.isSectionType }, { prop: 'offsetRight', label: this.$t('map.sectionOffsetRight'), type: 'number', min: 0, placeholder: '米', isHidden: !this.isSectionType },
@ -353,7 +353,7 @@ export default {
{ prop: 'kmRangeLeft', label: this.$t('map.leftKilometerMark'), type: 'number', min: 0 }, { prop: 'kmRangeLeft', label: this.$t('map.leftKilometerMark'), type: 'number', min: 0 },
{ prop: 'kmRangeRight', label: this.$t('map.rightKilometerMark'), type: 'number', min: 0 }, { prop: 'kmRangeRight', label: this.$t('map.rightKilometerMark'), type: 'number', min: 0 },
{ prop: 'type', label: this.$t('map.sectionType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.SectionTypeList }, { prop: 'type', label: this.$t('map.sectionType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.SectionTypeList },
{ prop: 'trainPosType', label: this.$t('map.trainPosType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.TrainPositionTypeList, isHidden: !this.isSectionType } { prop: 'trainPosType', label: this.$t('map.trainDirection'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.TrainPositionTypeList, isHidden: !this.isSectionType }
] ]
} }
} }

View File

@ -198,7 +198,7 @@ export default {
labelWidth: '150px', labelWidth: '150px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList }, { prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList },
{ prop: 'code', label: this.$t('map.signalCodeColon'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.signalList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.signalCodeColon'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.signalList, change: true, deviceChange: this.deviceChange },
@ -210,7 +210,7 @@ export default {
{ prop: 'positionType', label: this.$t('map.signalPositionType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.SignalPositionTypeList }, { prop: 'positionType', label: this.$t('map.signalPositionType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.SignalPositionTypeList },
{ prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: this.$t('map.signalPositionX'), type: 'number', placeholder: 'px' }, { prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: this.$t('map.signalPositionX'), type: 'number', placeholder: 'px' },
{ prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: this.$t('map.signalPositionY'), type: 'number', placeholder: 'px' }, { prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: this.$t('map.signalPositionY'), type: 'number', placeholder: 'px' },
{ prop: 'rotate', label: this.$t('map.signalRotate'), type: 'number', min: -90, max: 90, placeholder: this.$t('tip.angle') }, { prop: 'rotate', label: this.$t('map.rotateAngle'), type: 'number', min: -90, max: 90, placeholder: this.$t('tip.angle') },
{ prop: 'namePosition.x', firstLevel: 'namePosition', secondLevel: 'x', label: this.$t('map.signalNamePositionX'), type: 'number', placeholder: 'px' }, { prop: 'namePosition.x', firstLevel: 'namePosition', secondLevel: 'x', label: this.$t('map.signalNamePositionX'), type: 'number', placeholder: 'px' },
{ prop: 'namePosition.y', firstLevel: 'namePosition', secondLevel: 'x', label: this.$t('map.signalNamePositionY'), type: 'number', placeholder: 'px' }, { prop: 'namePosition.y', firstLevel: 'namePosition', secondLevel: 'x', label: this.$t('map.signalNamePositionY'), type: 'number', placeholder: 'px' },
{ prop: 'buttonShow', label: this.$t('map.signalButtonShow'), type: 'checkbox' }, { prop: 'buttonShow', label: this.$t('map.signalButtonShow'), type: 'checkbox' },
@ -222,7 +222,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'uniqueName', label: this.$t('map.signalUniqueName'), type: 'input' }, { prop: 'uniqueName', label: this.$t('map.signalUniqueName'), type: 'input' },
{ prop: 'useType', label: this.$t('map.signalUseType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.SignalUseTypeList }, { prop: 'useType', label: this.$t('map.signalUseType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.SignalUseTypeList },

View File

@ -102,11 +102,11 @@ export default {
labelWidth: '150px', labelWidth: '150px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'concentrateStationCode', label: this.$t('map.concentrateStationCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.stationList }, { prop: 'concentrateStationCode', label: this.$t('map.concentrateStationCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.stationList },
{ prop: 'code', label: this.$t('map.stationCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.stationList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.stationCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.stationList, change: true, deviceChange: this.deviceChange },
{ prop: 'name', label: this.$t('map.stationNameColon'), type: 'input' }, { prop: 'name', label: this.$t('map.stationName'), type: 'input' },
{ prop: 'visible', label: this.$t('map.stationVisible'), type: 'checkbox' }, { prop: 'visible', label: this.$t('map.stationVisible'), type: 'checkbox' },
{ prop: 'nameFont', label: this.$t('map.stationNameFont'), type: 'font', placeholder: this.$t('tip.stationFont') }, { prop: 'nameFont', label: this.$t('map.stationNameFont'), type: 'font', placeholder: this.$t('tip.stationFont') },
{ prop: 'nameFontColor', label: this.$t('map.stationNameFontColor'), type: 'color' }, { prop: 'nameFontColor', label: this.$t('map.stationNameFontColor'), type: 'color' },
@ -120,7 +120,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'zcCode', label: this.$t('map.zcCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.zcList }, { prop: 'zcCode', label: this.$t('map.zcCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.zcList },
{ prop: 'centralized', label: this.$t('map.centralized'), type: 'checkbox' }, { prop: 'centralized', label: this.$t('map.centralized'), type: 'checkbox' },
@ -146,10 +146,10 @@ export default {
{ required: true, message: this.$t('rules.stationKmPost'), trigger: 'blur' } { required: true, message: this.$t('rules.stationKmPost'), trigger: 'blur' }
], ],
'position.x': [ 'position.x': [
{ required: true, message: this.$t('rules.stationPositionX'), trigger: 'blur' } { required: true, message: this.$t('rules.pleaseEnterXCoordinate'), trigger: 'blur' }
], ],
'position.y': [ 'position.y': [
{ required: true, message: this.$t('rules.stationPositionY'), trigger: 'blur' } { required: true, message: this.$t('rules.pleaseEnterYCoordinate'), trigger: 'blur' }
] ]
}; };
// //

View File

@ -13,7 +13,7 @@
<el-tab-pane class="view-control" :label="$t('map.operation')" name="second"> <el-tab-pane class="view-control" :label="$t('map.operation')" name="second">
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: cardHeight +'px' }"> <el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: cardHeight +'px' }">
<el-form ref="make" :model="addModel" label-width="120px" size="mini" :rules="makeRules"> <el-form ref="make" :model="addModel" label-width="120px" size="mini" :rules="makeRules">
<el-form-item :label="$t('map.stationNameColon')" prop="stationCode"> <el-form-item :label="$t('map.stationName')" prop="stationCode">
<el-select v-model="addModel.stationCode" filterable> <el-select v-model="addModel.stationCode" filterable>
<el-option <el-option
v-for="item in stationList" v-for="item in stationList"
@ -93,7 +93,7 @@ export default {
labelWidth: '160px', labelWidth: '160px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList }, { prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList },
{ prop: 'code', label: this.$t('map.stationControlCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.stationControlList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.stationControlCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.stationControlList, change: true, deviceChange: this.deviceChange },
@ -102,12 +102,12 @@ export default {
{ prop: 'zakContent', label: this.$t('map.zakContent'), type: 'input' }, { prop: 'zakContent', label: this.$t('map.zakContent'), type: 'input' },
{ prop: 'jjzkContent', label: this.$t('map.jjzkContent'), type: 'input' }, { prop: 'jjzkContent', label: this.$t('map.jjzkContent'), type: 'input' },
{ prop: 'zzkContent', label: this.$t('map.zzkContent'), type: 'input' }, { prop: 'zzkContent', label: this.$t('map.zzkContent'), type: 'input' },
{ prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: this.$t('map.stationControlPositionX'), type: 'number', placeholder: 'px' }, { prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: this.$t('map.pointX'), type: 'number', placeholder: 'px' },
{ prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: this.$t('map.stationControlPositionY'), type: 'number', placeholder: 'px' } { prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: this.$t('map.pointY'), type: 'number', placeholder: 'px' }
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'zcCode', label: this.$t('map.zcCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.zcList } { prop: 'zcCode', label: this.$t('map.zcCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.zcList }
] ]

View File

@ -123,7 +123,7 @@ export default {
labelWidth: '130px', labelWidth: '130px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'deviceStationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.stationList }, { prop: 'deviceStationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.stationList },
{ prop: 'code', label: this.$t('map.relStandCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.stationStandList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.relStandCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.stationStandList, change: true, deviceChange: this.deviceChange },
@ -135,12 +135,12 @@ export default {
{ prop: 'hasDoor', label: this.$t('map.stationstandHasDoor'), type: 'checkbox' }, { prop: 'hasDoor', label: this.$t('map.stationstandHasDoor'), type: 'checkbox' },
{ prop: 'width', label: this.$t('map.stationstandWidth'), type: 'number', min: 0, max: 2000, placeholder: 'px' }, { prop: 'width', label: this.$t('map.stationstandWidth'), type: 'number', min: 0, max: 2000, placeholder: 'px' },
{ prop: 'height', label: this.$t('map.stationstandHeight'), type: 'number', min: 0, max: 2000, placeholder: 'px' }, { prop: 'height', label: this.$t('map.stationstandHeight'), type: 'number', min: 0, max: 2000, placeholder: 'px' },
{ prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: this.$t('map.stationstandPositionX'), type: 'number', placeholder: 'px' }, { prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: this.$t('map.pointX'), type: 'number', placeholder: 'px' },
{ prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: this.$t('map.stationstandPositionY'), type: 'number', placeholder: 'px' } { prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: this.$t('map.pointY'), type: 'number', placeholder: 'px' }
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.belongsStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList } { prop: 'stationCode', label: this.$t('map.belongsStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList }
] ]

View File

@ -98,7 +98,7 @@ export default {
labelWidth: '170px', labelWidth: '170px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList }, { prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList },
{ prop: 'code', label: this.$t('map.switchCode'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.switchList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.switchCode'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.switchList, change: true, deviceChange: this.deviceChange },
@ -112,7 +112,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'turnTime', label: this.$t('map.turnTime'), type: 'number', min: 0, max: 1000, placeholder: 's' }, { prop: 'turnTime', label: this.$t('map.turnTime'), type: 'number', min: 0, max: 1000, placeholder: 's' },
{ prop: 'sectionACode', label: this.$t('map.sectionACode'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.sectionList }, { prop: 'sectionACode', label: this.$t('map.sectionACode'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.sectionList },

View File

@ -117,7 +117,7 @@ export default {
labelWidth: '130px', labelWidth: '130px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.textCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.textList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.textCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.textList, change: true, deviceChange: this.deviceChange },
{ prop: 'content', label: this.$t('map.textContent'), type: 'fontContent', content: 'content', prepend: 'prepend', placeholder: this.$t('map.pleaseSelect') }, { prop: 'content', label: this.$t('map.textContent'), type: 'fontContent', content: 'content', prepend: 'prepend', placeholder: this.$t('map.pleaseSelect') },
@ -128,7 +128,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
] ]
} }

View File

@ -127,7 +127,7 @@ export default {
labelWidth: '120px', labelWidth: '120px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.trainWindowCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.trainWindowList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.trainWindowCode'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.trainWindowList, change: true, deviceChange: this.deviceChange },
{ prop: 'width', label: this.$t('map.trainWindowWidth'), type: 'number', min: 0, placeholder: 'px' }, { prop: 'width', label: this.$t('map.trainWindowWidth'), type: 'number', min: 0, placeholder: 'px' },
@ -137,7 +137,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'sectionCode', label: this.$t('map.trainWindowSectionCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.filterSectionList } { prop: 'sectionCode', label: this.$t('map.trainWindowSectionCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.filterSectionList }
] ]

View File

@ -99,9 +99,9 @@ export default {
labelWidth: '150px', labelWidth: '150px',
items: { items: {
draw: { draw: {
name: '绘图数据', name: this.$t('map.drawData'),
item: [ item: [
{ prop: 'code', label: this.$t('map.zcCodeColon'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.zcList, change: true, deviceChange: this.deviceChange }, { prop: 'code', label: this.$t('map.code'), type: 'select', optionLabel: 'code', optionValue: 'code', options: this.zcList, change: true, deviceChange: this.deviceChange },
{ prop: 'name', label: this.$t('map.statusSignalName'), type: 'input' }, { prop: 'name', label: this.$t('map.statusSignalName'), type: 'input' },
{ prop: 'visible', label: this.$t('map.showZc'), type: 'checkboxx' }, { prop: 'visible', label: this.$t('map.showZc'), type: 'checkboxx' },
{ prop: 'position', label: this.$t('map.stateSignalsPlotCoordinates'), type: 'coordinate', width: '140px', children: [ { prop: 'position', label: this.$t('map.stateSignalsPlotCoordinates'), type: 'coordinate', width: '140px', children: [
@ -111,7 +111,7 @@ export default {
] ]
}, },
map: { map: {
name: '地图数据', name: this.$t('map.mapData'),
item: [] item: []
} }
} }

View File

@ -107,18 +107,18 @@ export default {
}, },
newRules: { newRules: {
name: [ name: [
{ required: true, message: this.$t('map.pleaseEnterMapName'), trigger: 'blur' } { required: true, message: this.$t('rules.pleaseEnterMapName'), trigger: 'blur' }
], ],
skinCode: [ skinCode: [
{ required: true, message: this.$t('map.pleaseChooseSkinCode'), trigger: 'change' } { required: true, message: this.$t('rules.pleaseChooseSkinCode'), trigger: 'change' }
] ]
}, },
pullRules: { pullRules: {
id: [ id: [
{ required: true, message: this.$t('map.pleaseSelectMapSource'), trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelectMapSource'), trigger: 'change' }
], ],
name: [ name: [
{ required: true, message: this.$t('map.pleaseEnterMapName'), trigger: 'change' } { required: true, message: this.$t('rules.pleaseEnterMapName'), trigger: 'change' }
] ]
} }
}; };

View File

@ -112,23 +112,23 @@ export default {
editRules() { editRules() {
return { return {
name: [ name: [
{ required: true, message: this.$t('map.pleaseEnterMapName'), trigger: 'blur' } { required: true, message: this.$t('rules.pleaseEnterMapName'), trigger: 'blur' }
], ],
skinCode: [ skinCode: [
{ required: true, message: this.$t('map.pleaseSelectAssociatedSkin'), trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelectAssociatedSkin'), trigger: 'change' }
], ],
cityCode: [ cityCode: [
{ required: true, message: this.$t('map.pleaseSelectAssociatedCity'), trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelectAssociatedCity'), trigger: 'change' }
] ]
}; };
}, },
updtRules() { updtRules() {
return { return {
linkWidth: [ linkWidth: [
{ required: true, message: this.$t('map.pleaseEnteMapLinkWidth'), trigger: 'blur' } { required: true, message: this.$t('rules.pleaseEnteMapLinkWidth'), trigger: 'blur' }
], ],
zoneWidth: [ zoneWidth: [
{ required: true, message: this.$t('map.pleaseEnterMapSectionWidth'), trigger: 'blur' } { required: true, message: this.$t('rules.pleaseEnterMapSectionWidth'), trigger: 'blur' }
] ]
}; };
} }

View File

@ -138,7 +138,7 @@ export default {
deleteObj() { deleteObj() {
this.doClose(); this.doClose();
const _that = this; const _that = this;
this.$confirm(this.$t('map.confirmDeletion'), this.$t('map.hint'), { this.$confirm(this.$t('tip.confirmDeletion'), this.$t('tip.hint'), {
confirmButtonText: this.$t('map.confirm'), confirmButtonText: this.$t('map.confirm'),
cancelButtonText: this.$t('map.cancel'), cancelButtonText: this.$t('map.cancel'),
type: 'warning' type: 'warning'

View File

@ -127,16 +127,16 @@ export default {
baseRules() { baseRules() {
return { return {
code: [ code: [
{ required: true, message: this.$t('map.productCodeEnter'), trigger: 'change' } { required: true, message: this.$t('rules.productCodeEnter'), trigger: 'change' }
], ],
name: [ name: [
{ required: true, message: this.$t('map.productNameEnter'), trigger: 'change' } { required: true, message: this.$t('rules.productNameEnter'), trigger: 'change' }
], ],
remarks: [ remarks: [
{ required: true, message: this.$t('map.productDescriptionEnter'), trigger: 'change' } { required: true, message: this.$t('rules.productDescriptionEnter'), trigger: 'change' }
], ],
trainTypes: [ trainTypes: [
{ required: true, message: this.$t('map.trainingTypeSelect'), trigger: 'change' } { required: true, message: this.$t('rules.trainingTypeSelect'), trigger: 'change' }
] ]
}; };
} }

View File

@ -130,7 +130,7 @@ export default {
// //
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('map.deleteTypeHint'), this.$t('tip.hint'), { this.$confirm(this.$t('tip.deleteTypeHint'), this.$t('tip.hint'), {
confirmButtonText: this.$t('tip.confirm'), confirmButtonText: this.$t('tip.confirm'),
cancelButtonText: this.$t('tip.cancel'), cancelButtonText: this.$t('tip.cancel'),
type: 'warning' type: 'warning'

View File

@ -36,7 +36,7 @@
rules() { rules() {
return { return {
timeArea: [ timeArea: [
{ required: true, message: this.$t('map.selectDataRange'), trigger: 'change' } { required: true, message: this.$t('rules.selectDataRange'), trigger: 'change' }
] ]
} }
} }

View File

@ -163,29 +163,29 @@ export default {
levelRules() { levelRules() {
return { return {
level1: [ level1: [
{ required: true, message: this.$t('map.speedLevelEnter1'), trigger: 'change' } { required: true, message: this.$t('rules.speedLevelEnter1'), trigger: 'change' }
], ],
level2: [ level2: [
{ required: true, message: this.$t('map.speedLevelEnter2'), trigger: 'change' } { required: true, message: this.$t('rules.speedLevelEnter2'), trigger: 'change' }
], ],
level3: [ level3: [
{ required: true, message: this.$t('map.speedLevelEnter3'), trigger: 'change' } { required: true, message: this.$t('rules.speedLevelEnter3'), trigger: 'change' }
], ],
level4: [ level4: [
{ required: true, message: this.$t('map.speedLevelEnter4'), trigger: 'change' } { required: true, message: this.$t('rules.speedLevelEnter4'), trigger: 'change' }
] ]
}; };
}, },
chartRules() { chartRules() {
return { return {
name: [ name: [
{ required: true, message: this.$t('map.nameEnter'), trigger: 'blur' } { required: true, message: this.$t('rules.pleaseInputName'), trigger: 'blur' }
], ],
direct: [ direct: [
{ required: true, message: this.$t('map.drivingDirectionSelect'), trigger: 'change' } { required: true, message: this.$t('rules.drivingDirectionSelect'), trigger: 'change' }
], ],
timeInterval: [ timeInterval: [
{ required: true, message: this.$t('map.timeBetweenDeparturesEnter'), trigger: 'blur' } { required: true, message: this.$t('rules.timeBetweenDeparturesEnter'), trigger: 'blur' }
], ],
startTime: [ startTime: [
{ required: true, message: this.$t('global.enterStartTime'), trigger: 'blur' } { required: true, message: this.$t('global.enterStartTime'), trigger: 'blur' }
@ -194,13 +194,13 @@ export default {
{ required: true, message: this.$t('global.enterEndTime'), trigger: 'blur' } { required: true, message: this.$t('global.enterEndTime'), trigger: 'blur' }
], ],
parkingTime: [ parkingTime: [
{ required: true, message: this.$t('map.stopTimeEnter'), trigger: 'blur' } { required: true, message: this.$t('rules.stopTimeEnter'), trigger: 'blur' }
], ],
entrance: [ entrance: [
{ required: true, message: this.$t('map.entranceStationSelect'), trigger: 'change' } { required: true, message: this.$t('rules.entranceStationSelect'), trigger: 'change' }
], ],
exit: [ exit: [
{ required: true, message: this.$t('map.exportStationSelect'), trigger: 'change' } { required: true, message: this.$t('rules.exportStationSelect'), trigger: 'change' }
] ]
}; };
} }

View File

@ -36,7 +36,7 @@ export default {
rules() { rules() {
return { return {
filename: [ filename: [
{ required: true, message: this.$t('map.selectImportFiles'), trigger: 'change' } { required: true, message: this.$t('rules.selectImportFiles'), trigger: 'change' }
] ]
}; };
} }
@ -57,7 +57,7 @@ export default {
if (file) { if (file) {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
text: this.$t('map.underImport'), text: this.$t('tip.underImport'),
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });

View File

@ -129,7 +129,7 @@ export default {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
visible: true, visible: true,
text: this.$t('map.underImport'), text: this.$t('tip.underImport'),
spinner: 'el-icon-loading', spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)' background: 'rgba(0, 0, 0, 0.7)'
}); });

View File

@ -71,7 +71,7 @@ export default {
{ prop: 'code', label: this.$t('map.skinCoding'), type: 'text', required: false, disabled: this.isDisabled }, { prop: 'code', label: this.$t('map.skinCoding'), type: 'text', required: false, disabled: this.isDisabled },
{ prop: 'name', label: this.$t('map.skinDesignation'), type: 'text', required: false }, { prop: 'name', label: this.$t('map.skinDesignation'), type: 'text', required: false },
{ prop: 'origin', label: this.$t('map.coordinatesOrigin'), type: 'point', required: false }, { prop: 'origin', label: this.$t('map.coordinatesOrigin'), type: 'point', required: false },
{ prop: 'scaling', label: this.$t('map.scaling'), type: 'number', required: false, message: this.$t('map.maxScaling') } { prop: 'scaling', label: this.$t('map.scaling'), type: 'number', required: false, message: this.$t('rules.maxScaling') }
] ]
}; };
return form; return form;
@ -80,22 +80,22 @@ export default {
rules() { rules() {
const baseRules = { const baseRules = {
code: [ code: [
{ required: true, message: this.$t('map.skinCodingInput'), trigger: 'blur' } { required: true, message: this.$t('rules.skinCodingInput'), trigger: 'blur' }
], ],
name: [ name: [
{ required: true, message: this.$t('map.skinDesignationInput'), trigger: 'blur' } { required: true, message: this.$t('rules.skinDesignationInput'), trigger: 'blur' }
], ],
origin: [ origin: [
{ required: true, message: this.$t('map.coordinatesOriginInput'), trigger: 'blur' } { required: true, message: this.$t('rules.coordinatesOriginInput'), trigger: 'blur' }
], ],
scaling: [ scaling: [
{ required: true, message: this.$t('map.scalingInput'), trigger: 'blur' }, { required: true, message: this.$t('rules.scalingInput'), trigger: 'blur' },
{ {
validator(rule, value, callback) { validator(rule, value, callback) {
if (Number(value) >= 1 && Number(value) <= 8) { if (Number(value) >= 1 && Number(value) <= 8) {
callback(); callback();
} else { } else {
callback(new Error(this.$t('map.scalingInputPrompt'))); callback(new Error(this.$t('rules.scalingInputPrompt')));
} }
}, },
trigger: 'blur' trigger: 'blur'
@ -151,7 +151,7 @@ export default {
this.$messageBox(this.$t('tip.creatingFailed')); this.$messageBox(this.$t('tip.creatingFailed'));
}); });
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('map.skinCodingExist')); this.$messageBox(this.$t('tip.skinCodingExist'));
}); });
}); });
}, },

View File

@ -103,7 +103,7 @@ export default {
this.$router.push(`${UrlConfig.map.skinCodeDraft}/edit/${row.id}`); this.$router.push(`${UrlConfig.map.skinCodeDraft}/edit/${row.id}`);
}, },
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('map.skinDeleteConfirmation'), this.$t('tip.hint'), { this.$confirm(this.$t('tip.skinDeleteConfirmation'), this.$t('tip.hint'), {
confirmButtonText: this.$t('tip.confirm'), confirmButtonText: this.$t('tip.confirm'),
cancelButtonText: this.$t('tip.cancel'), cancelButtonText: this.$t('tip.cancel'),
type: 'warning' type: 'warning'

View File

@ -74,7 +74,7 @@ export default {
{ prop: 'code', label: this.$t('map.skinCoding'), type: 'text', required: false, disabled: this.isDisabled }, { prop: 'code', label: this.$t('map.skinCoding'), type: 'text', required: false, disabled: this.isDisabled },
{ prop: 'name', label: this.$t('map.skinDesignation'), type: 'text', required: false }, { prop: 'name', label: this.$t('map.skinDesignation'), type: 'text', required: false },
{ prop: 'origin', label: this.$t('map.coordinatesOrigin'), type: 'point', required: false }, { prop: 'origin', label: this.$t('map.coordinatesOrigin'), type: 'point', required: false },
{ prop: 'scaling', label: this.$t('map.scaling'), type: 'number', required: false, message: this.$t('map.maxScaling') }, { prop: 'scaling', label: this.$t('map.scaling'), type: 'number', required: false, message: this.$t('rules.maxScaling') },
{ prop: 'linkWidth', label: this.$t('map.linkWidth'), type: 'number', required: false, message: this.$t('map.maxLinkWidth') }, { prop: 'linkWidth', label: this.$t('map.linkWidth'), type: 'number', required: false, message: this.$t('map.maxLinkWidth') },
{ prop: 'zoneWidth', label: this.$t('map.sectionWidth'), type: 'number', required: false, message: this.$t('map.maxSectionWidth') }, { prop: 'zoneWidth', label: this.$t('map.sectionWidth'), type: 'number', required: false, message: this.$t('map.maxSectionWidth') },
{ prop: 'watermarkShow', label: this.$t('map.showWatermarkOrNot'), type: 'radio', required: false, options: this.$ConstSelect.Whether } { prop: 'watermarkShow', label: this.$t('map.showWatermarkOrNot'), type: 'radio', required: false, options: this.$ConstSelect.Whether }
@ -86,55 +86,55 @@ export default {
rules() { rules() {
const baseRules = { const baseRules = {
code: [ code: [
{ required: true, message: this.$t('map.skinCodingInput'), trigger: 'blur' } { required: true, message: this.$t('rules.skinCodingInput'), trigger: 'blur' }
], ],
name: [ name: [
{ required: true, message: this.$t('map.skinDesignationInput'), trigger: 'blur' } { required: true, message: this.$t('rules.skinDesignationInput'), trigger: 'blur' }
], ],
origin: [ origin: [
{ required: true, message: this.$t('map.coordinatesOriginInput'), trigger: 'blur' } { required: true, message: this.$t('rules.coordinatesOriginInput'), trigger: 'blur' }
], ],
scaling: [ scaling: [
{ required: true, message: this.$t('map.scalingInput'), trigger: 'blur' }, { required: true, message: this.$t('rules.scalingInput'), trigger: 'blur' },
{ {
validator(rule, value, callback) { validator(rule, value, callback) {
if (Number(value) >= 1 && Number(value) <= 8) { if (Number(value) >= 1 && Number(value) <= 8) {
callback(); callback();
} else { } else {
callback(new Error(this.$t('map.scalingInputPrompt'))); callback(new Error(this.$t('rules.scalingInputPrompt')));
} }
}, },
trigger: 'blur' trigger: 'blur'
} }
], ],
linkWidth: [ linkWidth: [
{ required: true, message: this.$t('map.linkWidthInput'), trigger: 'blur' }, { required: true, message: this.$t('rules.linkWidthInput'), trigger: 'blur' },
{ {
validator(rule, value, callback) { validator(rule, value, callback) {
if (Number.isInteger(Number(value)) && Number(value) >= 5 && Number(value) <= 20) { if (Number.isInteger(Number(value)) && Number(value) >= 5 && Number(value) <= 20) {
callback(); callback();
} else { } else {
callback(new Error(this.$t('map.linkWidthInputPrompt'))); callback(new Error(this.$t('rules.linkWidthInputPrompt')));
} }
}, },
trigger: 'blur' trigger: 'blur'
} }
], ],
zoneWidth: [ zoneWidth: [
{ required: true, message: this.$t('map.sectionWidthInput'), trigger: 'blur' }, { required: true, message: this.$t('rules.sectionWidthInput'), trigger: 'blur' },
{ {
validator(rule, value, callback) { validator(rule, value, callback) {
if (Number.isInteger(Number(value)) && Number(value) >= 5 && Number(value) <= 30) { if (Number.isInteger(Number(value)) && Number(value) >= 5 && Number(value) <= 30) {
callback(); callback();
} else { } else {
callback(new Error(this.$t('map.sectionWidthInputPrompt'))); callback(new Error(this.$t('rules.sectionWidthInputPrompt')));
} }
}, },
trigger: 'blur' trigger: 'blur'
} }
], ],
watermarkShow: [ watermarkShow: [
{ required: true, message: this.$t('map.selectShowWatermark'), trigger: 'change' } { required: true, message: this.$t('rules.selectShowWatermark'), trigger: 'change' }
] ]
}; };
@ -189,7 +189,7 @@ export default {
this.$messageBox(this.$t('tip.creatingFailed')); this.$messageBox(this.$t('tip.creatingFailed'));
}); });
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('map.skinCodingExist')); this.$messageBox(this.$t('tip.skinCodingExist'));
}); });
}); });
}, },

View File

@ -120,7 +120,7 @@ export default {
this.$router.push(`${UrlConfig.map.skinCodeDraft}/edit/${row.id}`); this.$router.push(`${UrlConfig.map.skinCodeDraft}/edit/${row.id}`);
}, },
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('map.skinDeleteConfirmation'), this.$t('tip.hint'), { this.$confirm(this.$t('tip.skinDeleteConfirmation'), this.$t('tip.hint'), {
confirmButtonText: this.$t('tip.confirm'), confirmButtonText: this.$t('tip.confirm'),
cancelButtonText: this.$t('tip.cancel'), cancelButtonText: this.$t('tip.cancel'),
type: 'warning' type: 'warning'

View File

@ -11,8 +11,8 @@
</el-card> </el-card>
<div class="draft"> <div class="draft">
<el-button-group> <el-button-group>
<el-button type="primary" @click="create">{{$t('global.create')}}</el-button> <el-button type="primary" @click="create">{{ $t('global.create') }}</el-button>
<el-button type="primary" @click="turnback">{{$t('global.return')}}</el-button> <el-button type="primary" @click="turnback">{{ $t('global.return') }}</el-button>
</el-button-group> </el-button-group>
</div> </div>
</div> </div>
@ -63,28 +63,28 @@ export default {
}, },
rules() { rules() {
const _this = this; const _this = this;
const baseRules = { const baseRules = {
userId: [ userId: [
{ required: true, message: this.$t('orderAuthor.userNameInput'), trigger: 'blur' } { required: true, message: this.$t('rules.userNameInput'), trigger: 'blur' }
], ],
lessonId: [ lessonId: [
{ required: true, message: this.$t('orderAuthor.lessonInput'), trigger: 'change' } { required: true, message: this.$t('rules.lessonInput'), trigger: 'change' }
], ],
type: [ type: [
{ required: true, message: this.$t('orderAuthor.permissionTypeInput'), trigger: 'change' } { required: true, message: this.$t('rules.permissionTypeInput'), trigger: 'change' }
], ],
forever: [ forever: [
{ required: true, message: this.$t('orderAuthor.foreverRadio'), trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelect'), trigger: 'change' }
], ],
total: [ total: [
{ required: true, message: this.$t('orderAuthor.amountInput'), trigger: 'change' }, { required: true, message: this.$t('rules.authorAmountInput'), trigger: 'change' },
{ {
validator(rule, value, callback) { validator(rule, value, callback) {
if (Number.isInteger(Number(value)) && Number(value) >= 0) { if (Number.isInteger(Number(value)) && Number(value) >= 0) {
callback(); callback();
} else { } else {
callback(new Error(_this.$t('orderAuthor.amountInputError'))); callback(new Error(_this.$t('rules.authorAmountInputError')));
} }
}, },
trigger: 'blur' trigger: 'blur'

View File

@ -1,244 +1,241 @@
<template> <template>
<div> <div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList"> <QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</QueryListPage> <author-detail ref="authorDetail" />
<author-detail ref="authorDetail"></author-detail> </div>
</div>
</template> </template>
<script> <script>
import { getLessonPermissonPageList, setLessonPermisson, getDistribute } from '@/api/management/author'; import { getLessonPermissonPageList, setLessonPermisson, getDistribute } from '@/api/management/author';
import { UrlConfig } from '@/router/index'; import { UrlConfig } from '@/router/index';
import authorDetail from './detail'; import authorDetail from './detail';
export default { export default {
name: 'author', name: 'Author',
components: { components: {
authorDetail authorDetail
}, },
data() { data() {
return { return {
param: '', param: '',
WhetherTypeList: [], WhetherTypeList: [],
EffectiveTypeList: [], EffectiveTypeList: [],
PermissionTypeList: [], PermissionTypeList: [],
pagerConfig: { pagerConfig: {
pageSize: 'pageSize', pageSize: 'pageSize',
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '120px', labelWidth: '120px',
reset: true, reset: true,
queryObject: { queryObject: {
'userMobile': { 'userMobile': {
type: 'text', type: 'text',
label: this.$t('orderAuthor.userMobile') label: this.$t('orderAuthor.userMobile')
}, },
'userName': { 'userName': {
type: 'text', type: 'text',
label: this.$t('orderAuthor.userName') label: this.$t('orderAuthor.userName')
}, },
'type': { 'type': {
type: 'select', type: 'select',
label: this.$t('orderAuthor.permissionType'), label: this.$t('orderAuthor.permissionType'),
config: { config: {
data: [] data: []
} }
} }
} }
}, },
queryList: { queryList: {
query: this.queryFunction, query: this.queryFunction,
selectCheckShow: false, selectCheckShow: false,
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: this.$t('orderAuthor.userName'), title: this.$t('orderAuthor.userName'),
prop: 'userName' prop: 'userName'
}, },
{ {
title: this.$t('orderAuthor.userMobile'), title: this.$t('orderAuthor.userMobile'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
title: this.$t('orderAuthor.mapName'), title: this.$t('orderAuthor.mapName'),
prop: 'mapName', prop: 'mapName'
}, },
{ {
title: this.$t('orderAuthor.mapProductName'), title: this.$t('orderAuthor.mapProductName'),
prop: 'mapProductName', prop: 'mapProductName'
}, },
{ {
title: this.$t('orderAuthor.courseName'), title: this.$t('orderAuthor.courseName'),
prop: 'lessonName', prop: 'lessonName'
}, },
{ {
title: this.$t('orderAuthor.permissionType'), title: this.$t('orderAuthor.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: this.$t('orderAuthor.permanenceOrNot'), title: this.$t('orderAuthor.permanenceOrNot'),
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'); },
tagType: (row) => { tagType: (row) => {
switch (row.forever) { switch (row.forever) {
case true: return 'success'; case true: return 'success';
case false: return 'danger'; case false: return 'danger';
} }
} }
}, },
{ {
title: this.$t('orderAuthor.publicOrPrivate'), title: this.$t('orderAuthor.publicOrPrivate'),
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'); },
tagType: (row) => { tagType: (row) => {
switch (row.canDistribute) { switch (row.canDistribute) {
case true: return 'success'; case true: return 'success';
case false: return 'danger'; case false: return 'danger';
} }
} }
}, },
{ {
title: this.$t('orderAuthor.totalPermissions'), title: this.$t('orderAuthor.totalPermissions'),
prop: 'amount' prop: 'amount'
}, },
{ {
title: this.$t('orderAuthor.residualPermissionNumber'), title: this.$t('orderAuthor.residualPermissionNumber'),
prop: 'remains' prop: 'remains'
}, },
{ {
title: this.$t('orderAuthor.startTime'), title: this.$t('orderAuthor.startTime'),
prop: 'startTime', prop: 'startTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
title: this.$t('orderAuthor.endTime'), title: this.$t('orderAuthor.endTime'),
prop: 'endTime', prop: 'endTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
title: this.$t('orderAuthor.courseAuthorityStatus'), title: this.$t('orderAuthor.courseAuthorityStatus'),
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']); },
tagType: (row) => { tagType: (row) => {
switch (row.status) { switch (row.status) {
case '1': return 'success'; case '1': return 'success';
default: return 'danger'; default: return 'danger';
} }
} }
}, },
{ {
type: 'button', type: 'button',
title: this.$t('global.operate'), title: this.$t('global.operate'),
width: '250', width: '250',
buttons: [ buttons: [
{ {
name: this.$t('orderAuthor.setupFailure'), name: this.$t('orderAuthor.setupFailure'),
type: 'warning', type: 'warning',
handleClick: this.handleSetFailure, handleClick: this.handleSetFailure,
showControl: (row) => { showControl: (row) => {
return row.status === '1'; return row.status === '1';
} }
}, },
{ {
name: this.$t('orderAuthor.setupEffective'), name: this.$t('orderAuthor.setupEffective'),
type: 'primary', type: 'primary',
handleClick: this.handleSetFailure, handleClick: this.handleSetFailure,
showControl: (row) => { showControl: (row) => {
return row.status === '0'; return row.status === '0';
} }
}, },
{ {
name: this.$t('orderAuthor.renew'), name: this.$t('orderAuthor.renew'),
type: "warning", type: 'warning',
handleClick: this.handleRenewAdd, handleClick: this.handleRenewAdd,
showControl: (row) => { showControl: (row) => {
return row.origin === '01' && (row.forever || (row.endTime && Date.parse(new Date(row.endTime.replace(/\-/g, "\/"))) > Date.parse(new Date()))) return row.origin === '01' && (row.forever || (row.endTime && Date.parse(new Date(row.endTime.replace(/\-/g, '\/'))) > Date.parse(new Date())));
} }
}, },
{ {
name: this.$t('orderAuthor.source'), name: this.$t('orderAuthor.source'),
type: '', type: '',
handleClick: this.handleSource, handleClick: this.handleSource
}, }
] ]
} }
], ],
actions: [ actions: [
] ]
} }
} };
}, },
mounted() { mounted() {
this.loadInitData(); this.loadInitData();
}, },
methods: { methods: {
loadInitData() { loadInitData() {
this.$Dictionary.effectiveType().then(list => { this.$Dictionary.effectiveType().then(list => {
this.$convertList(list, this.EffectiveTypeList, elem => { this.$convertList(list, this.EffectiveTypeList, elem => {
return true; return true;
}); });
}); });
this.$Dictionary.permissionType().then(list => { this.$Dictionary.permissionType().then(list => {
list.forEach(elem => { list.forEach(elem => {
this.queryForm.queryObject.type.config.data.push({ value: elem.code, label: elem.name }); this.queryForm.queryObject.type.config.data.push({ value: elem.code, label: elem.name });
}); });
this.$convertList(list, this.PermissionTypeList, elem => { this.$convertList(list, this.PermissionTypeList, elem => {
return true; return true;
}); });
}); });
}, },
formatterDate(row, porpInfo) { formatterDate(row, porpInfo) {
if (row.hasOwnProperty(porpInfo.property)) { return row[porpInfo.property];
} },
return row[porpInfo.property]; queryFunction(params) {
}, return getLessonPermissonPageList(params);
queryFunction(params) { },
return getLessonPermissonPageList(params); handleSetFailure(index, row) {
}, this.$confirm(this.$t('tip.updatePrivilegeTip'), this.$t('global.tips'), {
handleSetFailure(index, row) { confirmButtonText: this.$t('global.confirm'),
this.$confirm(this.$t('orderAuthor.updatePrivilegeTip'), this.$t('tip.hint'), { cancelButtonText: this.$t('global.cancel'),
confirmButtonText: this.$t('tip.confirm'), type: 'warning'
cancelButtonText: this.$t('tip.cancel'), }).then(() => {
type: 'warning' setLessonPermisson({ id: row.id, status: row.status == 1 ? '0' : '1' }).then(res => {
}).then(() => { this.$message.success(this.$t('tip.setupSuccessfully'));
setLessonPermisson({ id: row.id, status: row.status == 1 ? '0' : '1' }).then(res => { this.reloadTable();
this.$message.success(this.$t('tip.setupSuccessfully')); }).catch(() => {
this.reloadTable(); this.$messageBox(this.$t('tip.setupFailed'));
}).catch(error => { });
this.$messageBox(this.$t('tip.setupFailed')); }).catch(() => { });
}) },
}).catch(() => { }) handleRenewAdd(index, row) {
}, this.$router.push({ path: `${UrlConfig.orderauthor.authorDraft}/renew/${row.id}` });
handleRenewAdd(index, row) { },
this.$router.push({ path: `${UrlConfig.orderauthor.authorDraft}/renew/${row.id}` }); handlePermissionAdd() {
}, this.$router.push({ path: `${UrlConfig.orderauthor.authorDraft}/add/0` });
handlePermissionAdd() { },
this.$router.push({ path: `${UrlConfig.orderauthor.authorDraft}/add/0` }); reloadTable() {
}, if (this.queryList && this.queryList.reload) {
reloadTable() { this.queryList.reload();
if (this.queryList && this.queryList.reload) { }
this.queryList.reload() },
} async handleSource(index, row) {
}, try {
async handleSource(index, row) { const res = await getDistribute(row.distributeId);
try { this.$refs.authorDetail.show(res.data);
let res = await getDistribute(row.distributeId); } catch (error) {
this.$refs.authorDetail.show(res.data); this.$messageBox(this.$t('tip.requestFailed'));
} catch (error) { }
this.$messageBox(this.$t('tip.requestFailed')); }
} }
} };
}
}
</script> </script>

View File

@ -126,48 +126,48 @@ export default {
rules() { rules() {
const baseRules = { const baseRules = {
name: [ name: [
{ required: true, message: this.$t('orderAuthor.goodsNameInput'), trigger: 'blur' } { required: true, message: this.$t('rules.goodsNameInput'), trigger: 'blur' }
], ],
productType: [ productType: [
{ required: true, message: this.$t('orderAuthor.productTypeInput'), trigger: 'change' } { required: true, message: this.$t('rules.productTypeInput'), trigger: 'change' }
], ],
mapId: [ mapId: [
{ required: true, message: this.$t('orderAuthor.mapInput'), trigger: 'change' } { required: true, message: this.$t('rules.mapInput'), trigger: 'change' }
], ],
mapProductCode: [ mapProductCode: [
{ required: true, message: this.$t('orderAuthor.productInput'), trigger: 'change' } { required: true, message: this.$t('rules.productInput'), trigger: 'change' }
], ],
lessonId: [ lessonId: [
{ required: true, message: this.$t('orderAuthor.lessonInput'), trigger: 'change' } { required: true, message: this.$t('rules.lessonInput'), trigger: 'change' }
], ],
forever: [ forever: [
{ required: true, message: this.$t('orderAuthor.foreverRadio'), trigger: 'change' } { required: true, message: this.$t('rules.pleaseSelect'), trigger: 'change' }
], ],
tryUseTime: [ tryUseTime: [
{ required: true, message: this.$t('orderAuthor.trialTimeInput'), trigger: 'change' } { required: true, message: this.$t('rules.trialTimeInput'), trigger: 'change' }
], ],
tryUseTimeUnit: [ tryUseTimeUnit: [
{ required: true, message: this.$t('orderAuthor.unitOfTimeRadio'), trigger: 'change' } { required: true, message: this.$t('rules.unitOfTimeRadio'), trigger: 'change' }
], ],
price: [ price: [
{ required: true, message: this.$t('orderAuthor.totalPriceInput'), trigger: 'change' }, { required: true, message: this.$t('rules.totalPriceInput'), trigger: 'change' },
{ {
validator(rule, value, callback) { validator(rule, value, callback) {
if (Number(value) >= 0) { if (Number(value) >= 0) {
if (String(value).split('.')[1] && String(value).split('.')[1].length > 2) { if (String(value).split('.')[1] && String(value).split('.')[1].length > 2) {
callback(new Error(this.$t('orderAuthor.totalPriceInputError1'))); callback(new Error(this.$t('rules.totalPriceInputError1')));
} else { } else {
callback(); callback();
} }
} else { } else {
callback(new Error(this.$t('orderAuthor.totalPriceInputError2'))); callback(new Error(this.$t('rules.totalPriceInputError2')));
} }
}, },
trigger: 'blur' trigger: 'blur'
} }
], ],
remarks: [ remarks: [
{ required: true, message: this.$t('orderAuthor.goodsDescribtionInput'), trigger: 'blur' } { required: true, message: this.$t('rules.goodsDescribtionInput'), trigger: 'blur' }
] ]
}; };

View File

@ -1,221 +1,220 @@
<template> <template>
<div> <div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList"> <QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</QueryListPage> </div>
</div>
</template> </template>
<script> <script>
import { getCommodityList, delCommodity, setCommodityStatus } from '@/api/management/goods'; import { getCommodityList, delCommodity, setCommodityStatus } from '@/api/management/goods';
import { UrlConfig } from '@/router/index'; import { UrlConfig } from '@/router/index';
import { listPublishMap } from '@/api/jmap/map'; import { listPublishMap } from '@/api/jmap/map';
export default { export default {
name: 'Dictionary', name: 'Dictionary',
data() { data() {
return { return {
productTypeList: [], productTypeList: [],
EffectiveTypeList: [], EffectiveTypeList: [],
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: this.$t('orderAuthor.name') label: this.$t('orderAuthor.name')
}, },
productType: { productType: {
type: 'select', type: 'select',
label: this.$t('orderAuthor.productType'), label: this.$t('orderAuthor.productType'),
config: { config: {
data: [] data: []
} }
}, },
mapId: { mapId: {
type: 'select', type: 'select',
label: this.$t('orderAuthor.map'), label: this.$t('orderAuthor.map'),
config: { config: {
data: [] data: []
} }
}, },
status: { status: {
type: 'select', type: 'select',
label: this.$t('orderAuthor.state'), label: this.$t('orderAuthor.state'),
config: { config: {
data: this.$ConstSelect.Status data: this.$ConstSelect.Status
} }
} }
} }
}, },
queryList: { queryList: {
query: getCommodityList, query: getCommodityList,
selectCheckShow: false, selectCheckShow: false,
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: this.$t('orderAuthor.commodityName'), title: this.$t('orderAuthor.commodityName'),
prop: 'name' prop: 'name'
}, },
{ {
title: this.$t('orderAuthor.productType'), title: this.$t('orderAuthor.productType'),
prop: 'productType', prop: 'productType',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.productType, this.productTypeList, ['value', 'label']) }, columnValue: (row) => { return this.$convertField(row.productType, this.productTypeList, ['value', 'label']); },
tagType: (row) => { return 'success' } tagType: (row) => { return 'success'; }
}, },
{ {
title: this.$t('orderAuthor.mapName'), title: this.$t('orderAuthor.mapName'),
prop: 'mapName', prop: 'mapName'
}, },
{ {
title: this.$t('orderAuthor.productName'), title: this.$t('orderAuthor.productName'),
prop: 'prdName', prop: 'prdName'
}, },
{ {
title: this.$t('orderAuthor.courseName'), title: this.$t('orderAuthor.courseName'),
prop: 'lessonName', prop: 'lessonName'
}, },
{ {
title: this.$t('orderAuthor.price'), title: this.$t('orderAuthor.price'),
prop: 'price' prop: 'price'
}, },
{ {
title: this.$t('orderAuthor.state'), title: this.$t('orderAuthor.state'),
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']); },
tagType: (row) => { tagType: (row) => {
switch (row.status) { switch (row.status) {
case '1': return 'success'; case '1': return 'success';
default: return 'danger'; default: return 'danger';
} }
} }
}, },
{ {
title: this.$t('orderAuthor.describtion'), title: this.$t('orderAuthor.describtion'),
prop: 'remarks' prop: 'remarks'
}, },
{ {
title: this.$t('orderAuthor.creationTime'), title: this.$t('orderAuthor.creationTime'),
prop: 'createTime' prop: 'createTime'
}, },
{ {
type: 'button', type: 'button',
title: this.$t('global.operate'), title: this.$t('global.operate'),
width: '250', width: this.$i18n.locale == 'en' ? '300': '250',
buttons: [ buttons: [
{ {
name: this.$t('global.edit'), name: this.$t('global.edit'),
type: 'primary', type: 'primary',
handleClick: this.handleEdit handleClick: this.handleEdit
}, },
{ {
name: this.$t('orderAuthor.setupFailure'), name: this.$t('orderAuthor.setupFailure'),
handleClick: this.handleEfficacy, handleClick: this.handleEfficacy,
type: 'warning', type: 'warning',
showControl: (row) => { showControl: (row) => {
return row.status == '1'; return row.status == '1';
} }
}, },
{ {
name: this.$t('orderAuthor.setupEffective'), name: this.$t('orderAuthor.setupEffective'),
type: 'primary', type: 'primary',
handleClick: this.handleEfficacy, handleClick: this.handleEfficacy,
showControl: (row) => { showControl: (row) => {
return row.status == '0'; return row.status == '0';
} }
}, },
{ {
name: this.$t('global.delete'), name: this.$t('global.delete'),
type: 'danger', type: 'danger',
handleClick: this.handleDelete, handleClick: this.handleDelete
}, }
] ]
} }
], ],
actions: [ actions: [
{ text: this.$t('global.add'), handler: this.handleAdd }, { text: this.$t('global.add'), handler: this.handleAdd }
] ]
}, },
currentModel: {} currentModel: {}
} };
}, },
mounted() { mounted() {
this.loadInitData(); this.loadInitData();
}, },
methods: { methods: {
async loadInitData() { async loadInitData() {
this.$Dictionary.effectiveType().then(list => { this.$Dictionary.effectiveType().then(list => {
this.$convertList(list, this.EffectiveTypeList, elem => { this.$convertList(list, this.EffectiveTypeList, elem => {
return true; return true;
}); });
}); });
// //
this.$Dictionary.productType().then(list => { this.$Dictionary.productType().then(list => {
list.forEach(elem => { list.forEach(elem => {
this.queryForm.queryObject.productType.config.data.push({ value: elem.code, label: elem.name }); this.queryForm.queryObject.productType.config.data.push({ value: elem.code, label: elem.name });
}); });
this.$convertList(list, this.productTypeList, elem => { this.$convertList(list, this.productTypeList, elem => {
return true; return true;
}); });
}); });
try { try {
// //
let res = await listPublishMap(); const res = await listPublishMap();
res.data.forEach(elem => { res.data.forEach(elem => {
this.queryForm.queryObject.mapId.config.data.push({ value: elem.id, label: elem.name }); this.queryForm.queryObject.mapId.config.data.push({ value: elem.id, label: elem.name });
}); });
} catch (error) { } catch (error) {
console.error(error, '获取发布地图'); console.error(error, '获取发布地图');
} }
}, },
handleEdit(index, row) { handleEdit(index, row) {
this.$router.push({ path: `${UrlConfig.orderauthor.commodityDraft}/edit/${row.id}` }); this.$router.push({ path: `${UrlConfig.orderauthor.commodityDraft}/edit/${row.id}` });
}, },
handleAdd() { handleAdd() {
this.$router.push({ path: `${UrlConfig.orderauthor.commodityDraft}/add/0` }); this.$router.push({ path: `${UrlConfig.orderauthor.commodityDraft}/add/0` });
}, },
// //
handleEfficacy(index, row) { handleEfficacy(index, row) {
this.$confirm(this.$t('orderAuthor.updateProductTip'), this.$t('tip.hint'), { this.$confirm(this.$t('tip.updateProductTip'), this.$t('global.tips'), {
confirmButtonText: this.$t('tip.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('tip.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
setCommodityStatus(row.id).then(res => { setCommodityStatus(row.id).then(res => {
this.$message.success(this.$t('tip.operationSuccessfully')); this.$message.success(this.$t('tip.operationSuccessfully'));
this.reloadTable() this.reloadTable();
}).catch(err => { }).catch(() => {
this.$messageBox(this.$t('tip.operationFailed')); this.$messageBox(this.$t('tip.operationFailed'));
this.reloadTable() this.reloadTable();
}) });
}).catch(() => { }) }).catch(() => { });
}, },
handleDelete(index, row) { handleDelete(index, row) {
this.$confirm(this.$t('orderAuthor.deleteProductTip'), this.$t('tip.hint'), { this.$confirm(this.$t('tip.deleteProductTip'), this.$t('global.tips'), {
confirmButtonText: this.$t('tip.confirm'), confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('tip.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
delCommodity(row.id).then(response => { delCommodity(row.id).then(response => {
this.$message.success(this.$t('tip.successfullyDelete')); this.$message.success(this.$t('tip.successfullyDelete'));
this.reloadTable() this.reloadTable();
}).catch(error => { }).catch(() => {
this.reloadTable(); this.reloadTable();
this.$messageBox(this.$t('tip.failDelete')) this.$messageBox(this.$t('tip.failDelete'));
}) });
}).catch(() => { }) }).catch(() => { });
}, },
reloadTable() { reloadTable() {
this.queryList.reload() this.queryList.reload();
} }
} }
} };
</script> </script>

View File

@ -1,189 +1,195 @@
<template> <template>
<el-dialog :title="this.$t('orderAuthor.trainingList')" :visible.sync="show" top="20px" width="90%" :before-doClose="doClose" <el-dialog
:close-on-click-modal="false"> :title="this.$t('orderAuthor.trainingList')"
<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 { putMapProductOnLine, putMapProductOffLine } from '@/api/jmap/mapdraft'; import { getCommodityList } from '@/api/management/goods';
import { getCommodityList, delCommodity, setCommodityStatus } from '@/api/management/goods'; import { listPublishMap } from '@/api/jmap/map';
import { getProductList } from '@/api/management/mapprd';
import { pageQueryTraining } from '@/api/jmap/training';
import { getSkinCodeList } from '@/api/management/mapskin'
import localStore from 'storejs';
import { listPublishMap } from '@/api/jmap/map';
export default { export default {
name: 'addGoods', name: 'AddGoods',
props: { props: {
trainings: { trainings: {
type: Array, type: Array,
}, default() {
detail: { return [];
type: Object, }
} },
}, detail: {
data() { type: Object,
return { default() {
show: false, return null;
productTypeList: [], }
EffectiveTypeList: [], }
pagerConfig: { },
pageSize: 'pageSize', data() {
pageIndex: 'pageNum' return {
}, show: false,
queryForm: { productTypeList: [],
labelWidth: '80px', EffectiveTypeList: [],
reset: true, pagerConfig: {
queryObject: { pageSize: 'pageSize',
name: { pageIndex: 'pageNum'
type: 'text', },
label: this.$t('orderAuthor.name') queryForm: {
}, labelWidth: '80px',
productType: { reset: true,
type: 'select', queryObject: {
label: this.$t('orderAuthor.productType'), name: {
config: { type: 'text',
data: [] label: this.$t('orderAuthor.name')
} },
}, productType: {
mapId: { type: 'select',
type: 'select', label: this.$t('orderAuthor.productType'),
label: this.$t('orderAuthor.map'), config: {
config: { data: []
data: [] }
} },
}, mapId: {
status: { type: 'select',
type: 'select', label: this.$t('orderAuthor.map'),
label: this.$t('orderAuthor.state'), config: {
config: { data: []
data: this.$ConstSelect.Status }
} },
} status: {
} type: 'select',
}, label: this.$t('orderAuthor.state'),
queryList: { config: {
query: getCommodityList, data: this.$ConstSelect.Status
selectCheckShow: false, }
indexShow: true, }
columns: [ }
{ },
title: this.$t('orderAuthor.commodityName'), queryList: {
prop: 'name' query: getCommodityList,
}, selectCheckShow: false,
{ indexShow: true,
title: this.$t('orderAuthor.productType'), columns: [
prop: 'productType', {
type: 'tag', title: this.$t('orderAuthor.commodityName'),
columnValue: (row) => { return this.$convertField(row.productType, this.productTypeList, ['value', 'label']) }, prop: 'name'
tagType: (row) => { return 'success' } },
}, {
{ title: this.$t('orderAuthor.productType'),
title: this.$t('orderAuthor.mapName'), prop: 'productType',
prop: 'mapName', type: 'tag',
}, columnValue: (row) => { return this.$convertField(row.productType, this.productTypeList, ['value', 'label']); },
{ tagType: (row) => { return 'success'; }
title: this.$t('orderAuthor.productName'), },
prop: 'prdName', {
}, title: this.$t('orderAuthor.mapName'),
{ prop: 'mapName'
title: this.$t('orderAuthor.courseName'), },
prop: 'lessonName', {
}, title: this.$t('orderAuthor.productName'),
{ prop: 'prdName'
title: this.$t('orderAuthor.price'), },
prop: 'price' {
}, title: this.$t('orderAuthor.courseName'),
{ prop: 'lessonName'
title: this.$t('orderAuthor.state'), },
prop: 'status', {
type: 'tag', title: this.$t('orderAuthor.price'),
columnValue: (row) => { return this.$convertField(row.status, this.EffectiveTypeList, ['value', 'label']) }, prop: 'price'
tagType: (row) => { },
switch (row.status) { {
case '1': return 'success'; title: this.$t('orderAuthor.state'),
default: return 'danger'; prop: 'status',
} type: 'tag',
} columnValue: (row) => { return this.$convertField(row.status, this.EffectiveTypeList, ['value', 'label']); },
}, tagType: (row) => {
{ switch (row.status) {
title: this.$t('orderAuthor.describtion'), case '1': return 'success';
prop: 'remarks' default: return 'danger';
}, }
{ }
title: this.$t('orderAuthor.creationTime'), },
prop: 'createTime' {
}, title: this.$t('orderAuthor.describtion'),
{ prop: 'remarks'
type: 'button', },
title: this.$t('global.operate'), {
width: '250', title: this.$t('orderAuthor.creationTime'),
buttons: [ prop: 'createTime'
{ },
name: '选择', {
type: 'primary', type: 'button',
handleClick: this.handleAdd title: this.$t('global.operate'),
}, width: '250',
] buttons: [
} {
], name: this.$t('orderAuthor.select'),
actions: [ type: 'primary',
] handleClick: this.handleAdd
}, }
]
}
],
actions: [
]
},
currentModel: {} currentModel: {}
} };
}, },
created() { created() {
this.loadInitData(); this.loadInitData();
}, },
methods: { methods: {
doShow() { doShow() {
this.show = true; this.show = true;
this.reloadTable(); this.reloadTable();
}, },
doClose() { doClose() {
this.show = false; this.show = false;
}, },
async loadInitData() { async loadInitData() {
this.$Dictionary.effectiveType().then(list => { this.$Dictionary.effectiveType().then(list => {
this.$convertList(list, this.EffectiveTypeList, elem => { this.$convertList(list, this.EffectiveTypeList, elem => {
return true; return true;
}); });
}); });
// //
this.$Dictionary.productType().then(list => { this.$Dictionary.productType().then(list => {
list.forEach(elem => { list.forEach(elem => {
this.queryForm.queryObject.productType.config.data.push({ value: elem.code, label: elem.name }); this.queryForm.queryObject.productType.config.data.push({ value: elem.code, label: elem.name });
}); });
this.$convertList(list, this.productTypeList, elem => { this.$convertList(list, this.productTypeList, elem => {
return true; return true;
}); });
}); });
try { try {
// //
let res = await listPublishMap(); const res = await listPublishMap();
res.data.forEach(elem => { res.data.forEach(elem => {
this.queryForm.queryObject.mapId.config.data.push({ value: elem.id, label: elem.name }); this.queryForm.queryObject.mapId.config.data.push({ value: elem.id, label: elem.name });
}); });
} catch (error) { } catch (error) {
console.error(error, '获取发布地图'); console.error(error, '获取发布地图');
} }
}, },
handleAdd(index, row) { handleAdd(index, row) {
this.$emit('selectGoods', row); this.$emit('selectGoods', row);
this.doClose(); this.doClose();
}, },
reloadTable() { reloadTable() {
if (this.queryList && this.queryList.reload) { if (this.queryList && this.queryList.reload) {
this.queryList.reload(); this.queryList.reload();
} }
}, }
} }
} };
</script> </script>

View File

@ -1,54 +1,62 @@
<template> <template>
<el-dialog :title="title" :visible.sync="show" width="360px" :before-close="doClose" :zIndex="2000" :modal="false" <el-dialog
:close-on-click-modal="false" v-dialogDrag> v-dialogDrag
<div style="text-align:center"> :title="title"
<el-radio-group v-model="formModel.canDistribute"> :visible.sync="show"
<el-radio :label="true">{{$t('orderAuthor.publicAuthority')}}</el-radio> width="360px"
<el-radio :label="false">{{$t('orderAuthor.privateAuthority')}}</el-radio> :before-close="doClose"
</el-radio-group> :z-index="2000"
</div> :modal="false"
<span slot="footer" class="dialog-footer"> :close-on-click-modal="false"
<el-button @click="handleClose">{{$t('global.cancel')}}</el-button> >
<el-button type="primary" @click="handleSure">{{$t('global.confirm')}}</el-button> <div style="text-align:center">
</span> <el-radio-group v-model="formModel.canDistribute">
</el-dialog> <el-radio :label="true">{{ $t('orderAuthor.publicAuthority') }}</el-radio>
<el-radio :label="false">{{ $t('orderAuthor.privateAuthority') }}</el-radio>
</el-radio-group>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose">{{ $t('global.cancel') }}</el-button>
<el-button type="primary" @click="handleSure">{{ $t('global.confirm') }}</el-button>
</span>
</el-dialog>
</template> </template>
<script> <script>
export default { export default {
name: 'CanTransfer', name: 'CanTransfer',
data() { data() {
return { return {
dialogShow: false, dialogShow: false,
formModel: { formModel: {
canDistribute: true, canDistribute: true
}, },
data: {}, data: {}
} };
}, },
computed: { computed: {
show() { show() {
return this.dialogShow; return this.dialogShow;
}, },
title() { return this.$t('orderAuthor.optionPrivilegeTransfer'); } title() { return this.$t('orderAuthor.optionPrivilegeTransfer'); }
}, },
methods: { methods: {
doShow(data) { doShow(data) {
this.dialogShow = true; this.dialogShow = true;
this.formModel.canDistribute = true; this.formModel.canDistribute = true;
this.data = data; this.data = data;
}, },
doClose() { doClose() {
this.dialogShow = false; this.dialogShow = false;
}, },
handleSure() { handleSure() {
this.doClose(); this.doClose();
Object.assign(this.data, this.formModel); Object.assign(this.data, this.formModel);
this.$emit('distribute', this.data); this.$emit('distribute', this.data);
}, },
handleClose() { handleClose() {
this.doClose(); this.doClose();
} }
} }
} };
</script> </script>

File diff suppressed because it is too large Load Diff

View File

@ -1,312 +1,310 @@
<template> <template>
<div> <div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList"> <QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</QueryListPage> <can-distribute ref="canDistribute" @distribute="distribute" />
<can-distribute ref="canDistribute" @distribute="distribute"></can-distribute> <qr-code ref="qrCode" />
<qr-code ref="qrCode"></qr-code> </div>
</div>
</template> </template>
<script> <script>
import { getOrderPageList, giveOrder } from '@/api/management/order'; import { getOrderPageList } from '@/api/management/order';
import { getSellerList } from '@/api/management/user'; import { getSellerList } from '@/api/management/user';
import { getOrganizationList } from '@/api/management/organization'; import { getOrganizationList } from '@/api/management/organization';
import { giveLessons } from '@/api/management/distribute'; import { giveLessons } from '@/api/management/distribute';
import { OperatorModel } from '@/scripts/ConstDic'; import { OperatorModel } from '@/scripts/ConstDic';
import { UrlConfig } from '@/router/index'; import { UrlConfig } from '@/router/index';
import QrCode from '@/components/QrCode'; import QrCode from '@/components/QrCode';
import CanDistribute from './canDistribute'; import CanDistribute from './canDistribute';
export default { export default {
name: 'List', name: 'List',
components: { components: {
QrCode, QrCode,
CanDistribute CanDistribute
}, },
data() { data() {
return { return {
SellerList: [], SellerList: [],
BizTypeList: [], BizTypeList: [],
OrderTypeList: [], OrderTypeList: [],
PayTypeList: [], PayTypeList: [],
PayStatusList: [], PayStatusList: [],
// OrganizationList: [], // OrganizationList: [],
WhetherTypeList: [], WhetherTypeList: [],
EffectiveTypeList: [], EffectiveTypeList: [],
PermissionTypeList: [], PermissionTypeList: [],
pagerConfig: { pagerConfig: {
pageSize: 'pageSize', pageSize: 'pageSize',
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '180px', labelWidth: '180px',
reset: true, reset: true,
queryObject: { queryObject: {
'organizationId': { 'organizationId': {
type: 'select', type: 'select',
label: this.$t('orderAuthor.organizationOrEnterprise'), label: this.$t('orderAuthor.organizationOrEnterprise'),
config: { config: {
data: [] data: []
} }
}, },
'userName': { 'userName': {
type: 'text', type: 'text',
label: this.$t('orderAuthor.userName'), label: this.$t('orderAuthor.userName')
}, },
'permissionType': { 'permissionType': {
type: 'select', type: 'select',
label: this.$t('orderAuthor.permissionType'), label: this.$t('orderAuthor.permissionType'),
config: { config: {
data: [] data: []
} }
} }
} }
}, },
queryList: { queryList: {
query: this.queryFunction, query: this.queryFunction,
selectCheckShow: false, selectCheckShow: false,
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: this.$t('orderAuthor.organizationOrEnterprise'), title: this.$t('orderAuthor.organizationOrEnterprise'),
prop: 'organizationName', prop: 'organizationName',
type: 'tag', type: 'tag',
columnValue: (row) => { return row.organizationName }, columnValue: (row) => { return row.organizationName; },
tagType: (row) => { return '' } tagType: (row) => { return ''; }
}, },
{ {
title: this.$t('orderAuthor.userName'), title: this.$t('orderAuthor.userName'),
prop: 'userName' prop: 'userName'
}, },
{ {
title: this.$t('orderAuthor.commodityName'), title: this.$t('orderAuthor.commodityName'),
prop: 'goodsName', prop: 'goodsName'
}, },
{ {
title: this.$t('orderAuthor.permissionType'), title: this.$t('orderAuthor.permissionType'),
prop: 'permissionType', prop: 'permissionType',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.permissionType, this.PermissionTypeList, ['value', 'label']) }, columnValue: (row) => { return this.$convertField(row.permissionType, this.PermissionTypeList, ['value', 'label']); },
tagType: (row) => { return '' } tagType: (row) => { return ''; }
}, },
{ {
title: this.$t('orderAuthor.permissionNumber'), title: this.$t('orderAuthor.permissionNumber'),
prop: 'amount' prop: 'amount'
}, },
{ {
title: this.$t('orderAuthor.permanenceOrNot'), title: this.$t('orderAuthor.permanenceOrNot'),
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'); },
tagType: (row) => { tagType: (row) => {
return row.forever ? 'success' : 'danger'; return row.forever ? 'success' : 'danger';
} }
}, },
{ {
title: this.$t('orderAuthor.startDate'), title: this.$t('orderAuthor.startDate'),
prop: 'startTime', prop: 'startTime',
type: 'formatter', type: 'formatter',
format: 'yyyy-MM-dd' format: 'yyyy-MM-dd'
}, },
{ {
title: this.$t('orderAuthor.purchaseMonths'), title: this.$t('orderAuthor.purchaseMonths'),
prop: 'monthAmount' prop: 'monthAmount'
}, },
{ {
title: this.$t('orderAuthor.totalPrice'), title: this.$t('orderAuthor.totalPrice'),
prop: 'totalPrice' prop: 'totalPrice'
}, },
{ {
title: this.$t('orderAuthor.paymentMethod'), title: this.$t('orderAuthor.paymentMethod'),
prop: 'payWays', prop: 'payWays',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.payWays, this.PayTypeList, ['value', 'label']) }, columnValue: (row) => { return this.$convertField(row.payWays, this.PayTypeList, ['value', 'label']); },
tagType: (row) => { return 'success' } tagType: (row) => { return 'success'; }
}, },
{ {
title: this.$t('orderAuthor.creationDate'), title: this.$t('orderAuthor.creationDate'),
prop: 'createTime' prop: 'createTime'
}, },
{ {
title: this.$t('orderAuthor.orderType'), title: this.$t('orderAuthor.orderType'),
prop: 'orderType', prop: 'orderType',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.orderType, this.OrderTypeList, ['value', 'label']) }, columnValue: (row) => { return this.$convertField(row.orderType, this.OrderTypeList, ['value', 'label']); },
tagType: (row) => { return 'success' } tagType: (row) => { return 'success'; }
}, },
{ {
title: this.$t('orderAuthor.contractNumber'), title: this.$t('orderAuthor.contractNumber'),
prop: 'contractNo' prop: 'contractNo'
}, },
{ {
title: this.$t('orderAuthor.businessType'), title: this.$t('orderAuthor.businessType'),
prop: 'bizType', prop: 'bizType',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.bizType, this.BizTypeList, ['value', 'label']) }, columnValue: (row) => { return this.$convertField(row.bizType, this.BizTypeList, ['value', 'label']); },
tagType: (row) => { return 'success' } tagType: (row) => { return 'success'; }
}, },
{ {
title: this.$t('orderAuthor.paymentStatus'), title: this.$t('orderAuthor.paymentStatus'),
prop: 'payStatus', prop: 'payStatus',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.payStatus, this.PayStatusList, ['value', 'label']) }, columnValue: (row) => { return this.$convertField(row.payStatus, this.PayStatusList, ['value', 'label']); },
tagType: (row) => { tagType: (row) => {
switch (row.payStatus) { switch (row.payStatus) {
case '01': return 'danger'; case '01': return 'danger';
case '02': return 'success'; case '02': return 'success';
case '03': return 'info'; case '03': return 'info';
} }
} }
}, },
{ {
title: this.$t('orderAuthor.salesman'), title: this.$t('orderAuthor.salesman'),
prop: 'sellerName', prop: 'sellerName',
type: 'tag', type: 'tag',
columnValue: (row) => { return row.sellerName }, columnValue: (row) => { return row.sellerName; },
tagType: (row) => { return 'success' } tagType: (row) => { return 'success'; }
}, },
{ {
type: 'button', type: 'button',
title: this.$t('global.operate'), title: this.$t('global.operate'),
width: '260', width: '260',
buttons: [ buttons: [
{ {
name: this.$t('global.edit'), name: this.$t('global.edit'),
handleClick: this.handleEdit handleClick: this.handleEdit
}, },
{ {
name: this.$t('orderAuthor.obtainQrCode'), name: this.$t('orderAuthor.obtainQrCode'),
type: "warning", type: 'warning',
handleClick: this.handleCanDistribute, handleClick: this.handleCanDistribute,
showControl: (row) => { return row.bizType !== '02' && row.orderType !== '01' && row.qrCodeGenerated } showControl: (row) => { return row.bizType !== '02' && row.orderType !== '01' && row.qrCodeGenerated; }
}, },
{ {
name: this.$t('orderAuthor.generatingQRCode'), name: this.$t('orderAuthor.generatingQRCode'),
type: "warning", type: 'warning',
handleClick: this.handleCanDistribute, handleClick: this.handleCanDistribute,
showControl: (row) => { return row.bizType !== '02' && row.orderType !== '01' && !row.qrCodeGenerated } showControl: (row) => { return row.bizType !== '02' && row.orderType !== '01' && !row.qrCodeGenerated; }
}, }
] ]
}, }
], ],
actions: [ actions: [
{ text: this.$t('global.add'), btnCode: 'employee_insert', handler: this.handleNormalAdd }, { text: this.$t('global.add'), btnCode: 'employee_insert', handler: this.handleNormalAdd }
] ]
} }
} };
}, },
created() { created() {
this.loadInitData(); this.loadInitData();
}, },
methods: { methods: {
loadInitData() { loadInitData() {
this.queryForm.queryObject.organizationId.config.data.length = 0; this.queryForm.queryObject.organizationId.config.data.length = 0;
getOrganizationList().then(response => { getOrganizationList().then(response => {
// this.OrganizationList = response.data; // this.OrganizationList = response.data;
response.data.forEach(elem => { response.data.forEach(elem => {
this.queryForm.queryObject.organizationId.config.data.push({ value: elem.id, label: elem.name }); this.queryForm.queryObject.organizationId.config.data.push({ value: elem.id, label: elem.name });
}); });
}); });
getSellerList().then(response => { getSellerList().then(response => {
this.SellerList = response.data; this.SellerList = response.data;
}) });
this.$Dictionary.bizType().then(list => { this.$Dictionary.bizType().then(list => {
this.$convertList(list, this.BizTypeList, elem => { this.$convertList(list, this.BizTypeList, elem => {
return true; return true;
}); });
}) });
this.$Dictionary.orderType().then(list => {
this.$convertList(list, this.OrderTypeList, elem => {
return true;
});
});
this.$Dictionary.orderType().then(list => { this.$Dictionary.payType().then(list => {
this.$convertList(list, this.OrderTypeList, elem => { this.$convertList(list, this.PayTypeList, elem => {
return true; return true;
}); });
}) });
this.$Dictionary.payType().then(list => { this.$Dictionary.payStatus().then(list => {
this.$convertList(list, this.PayTypeList, elem => { this.$convertList(list, this.PayStatusList, elem => {
return true; return true;
}); });
}) });
this.$Dictionary.payStatus().then(list => { this.$Dictionary.effectiveType().then(list => {
this.$convertList(list, this.PayStatusList, elem => { this.$convertList(list, this.EffectiveTypeList, elem => {
return true; return true;
}); });
}) });
this.$Dictionary.effectiveType().then(list => { this.$Dictionary.permissionType().then(list => {
this.$convertList(list, this.EffectiveTypeList, elem => { list.forEach(elem => {
return true; this.queryForm.queryObject.permissionType.config.data.push({ value: elem.code, label: elem.name });
}); });
}) this.$convertList(list, this.PermissionTypeList, elem => {
return true;
});
});
},
queryFunction(params) {
return getOrderPageList(params);
},
handleNormalAdd() {
this.$router.push({ path: `${UrlConfig.orderauthor.orderDraft}/add/0` });
},
handleEdit(index, data) {
this.$alert('功能待开发', this.$t('tip.hint'), {
confirmButtonText: this.$t('tip.confirm'),
callback: action => {
}
});
},
handleCanDistribute(index, data) {
if (data.qrCodeGenerated) {
data.canDistribute = true;
this.distribute(data);
} else {
this.$refs.canDistribute.doShow(data);
}
},
distribute(data) {
const model = {
amount: data.amount,
forever: data.forever,
orderCode: data.code,
startTime: data.startTime + ' 00:00:00',
monthAmount: data.monthAmount,
canDistribute: data.canDistribute,
operator: OperatorModel.TRANSFER,
mapId: data.mapId,
lessonId: data.lessonId || '',
mapProductCode: data.mapProductCode || '',
permissionType: data.permissionType,
organizationId: data.organizationId
};
this.$Dictionary.permissionType().then(list => { giveLessons(model).then(response => {
list.forEach(elem => { this.reloadTable();
this.queryForm.queryObject.permissionType.config.data.push({ value: elem.code, label: elem.name }); if (data.qrCodeGenerated) {
}); this.$refs.qrCode.doShow({
this.$convertList(list, this.PermissionTypeList, elem => { url: response.data,
return true; title: this.$t('orderAuthor.transferQRCode')
}); });
}) }
},
queryFunction(params) {
return getOrderPageList(params);
},
handleNormalAdd() {
this.$router.push({ path: `${UrlConfig.orderauthor.orderDraft}/add/0` })
},
handleEdit(index, data) {
this.$alert('功能待开发', this.$t('tip.hint'), {
confirmButtonText: this.$t('tip.confirm'),
callback: action => {
}
});
},
handleCanDistribute(index, data) {
if (data.qrCodeGenerated) {
data.canDistribute = true;
this.distribute(data);
} else {
this.$refs.canDistribute.doShow(data);
}
},
distribute(data) {
let model = {
amount: data.amount,
forever: data.forever,
orderCode: data.code,
startTime: data.startTime + " 00:00:00",
monthAmount: data.monthAmount,
canDistribute: data.canDistribute,
operator: OperatorModel.TRANSFER,
mapId: data.mapId,
lessonId: data.lessonId || '',
mapProductCode: data.mapProductCode || '',
permissionType: data.permissionType,
organizationId: data.organizationId
}
giveLessons(model).then(response => { }).catch(() => {
this.reloadTable(); this.$messageBox(this.$t('error.transferredQRCodeFailed'));
if (data.qrCodeGenerated) { });
this.$refs.qrCode.doShow({ },
url: response.data, reloadTable() {
title: this.$t('orderAuthor.transferQRCode') if (this.queryList && this.queryList.reload) {
}); this.queryList.reload();
} }
}
}).catch(error => { }
this.$messageBox(this.$t('error.transferredQRCodeFailed')); };
});
},
reloadTable() {
if (this.queryList && this.queryList.reload) {
this.queryList.reload()
}
}
}
}
</script> </script>

View File

@ -1,174 +1,169 @@
<template> <template>
<div> <div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList"> <QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</QueryListPage> <div class="draft">
<div class="draft"> <el-button-group>
<el-button-group> <el-button type="primary" @click="turnback">{{ $t('global.return') }}</el-button>
<el-button type="primary" @click="turnback">{{$t('global.return')}}</el-button> </el-button-group>
</el-button-group>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import { superAdmin } from '@/router'; import { getPermissionPackageDetail } from '@/api/management/distribute';
import { listPackagePermission, restorePackagePermission, getPermissionPackageDetail } from '@/api/management/distribute';
import { UrlConfig } from '@/router/index';
export default { export default {
name: 'TrainsferDetail', name: 'TrainsferDetail',
data() { data() {
return { return {
show: false, show: false,
height: 0, height: 0,
WhetherTypeList: [], WhetherTypeList: [],
EffectiveTypeList: [], EffectiveTypeList: [],
PermissionTypeList: [], PermissionTypeList: [],
pagerConfig: { pagerConfig: {
pageSize: 'pageSize', pageSize: 'pageSize',
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '120px', labelWidth: '120px',
reset: true, reset: true,
queryObject: { queryObject: {
'permissionType': { 'permissionType': {
type: 'select', type: 'select',
label: this.$t('orderAuthor.permissionType'), label: this.$t('orderAuthor.permissionType'),
config: { config: {
data: [] data: []
} }
} }
} }
}, },
queryList: { queryList: {
query: this.queryFunction, query: this.queryFunction,
selectCheckShow: false, selectCheckShow: false,
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: this.$t('orderAuthor.organizationOrEnterprise'), title: this.$t('orderAuthor.organizationOrEnterprise'),
prop: 'organizationName' prop: 'organizationName'
}, },
{ {
title: this.$t('orderAuthor.userName'), title: this.$t('orderAuthor.userName'),
prop: 'userName' prop: 'userName'
}, },
{ {
title: this.$t('orderAuthor.userMobile'), title: this.$t('orderAuthor.userMobile'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
title: this.$t('orderAuthor.mapName'), title: this.$t('orderAuthor.mapName'),
prop: 'mapName', prop: 'mapName'
}, },
{ {
title: this.$t('orderAuthor.mapProductName'), title: this.$t('orderAuthor.mapProductName'),
prop: 'mapProductName', prop: 'mapProductName'
}, },
{ {
title: this.$t('orderAuthor.courseName'), title: this.$t('orderAuthor.courseName'),
prop: 'lessonName', prop: 'lessonName'
}, },
{ {
title: this.$t('orderAuthor.permissionType'), title: this.$t('orderAuthor.permissionType'),
prop: 'permissionType', prop: 'permissionType',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.permissionType, this.PermissionTypeList, ['value', 'label']) }, columnValue: (row) => { return this.$convertField(row.permissionType, this.PermissionTypeList, ['value', 'label']); },
tagType: (row) => { return '' } tagType: (row) => { return ''; }
}, },
{ {
title: this.$t('orderAuthor.publicOrPrivate'), title: this.$t('orderAuthor.publicOrPrivate'),
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'); },
tagType: (row) => { tagType: (row) => {
switch (row.canDistribute) { switch (row.canDistribute) {
case true: return 'success'; case true: return 'success';
case false: return 'danger'; case false: return 'danger';
} }
} }
}, },
{ {
title: this.$t('orderAuthor.permanenceOrNot'), title: this.$t('orderAuthor.permanenceOrNot'),
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'); },
tagType: (row) => { tagType: (row) => {
switch (row.forever) { switch (row.forever) {
case true: return 'success'; case true: return 'success';
case false: return 'danger'; case false: return 'danger';
} }
} }
}, },
{ {
title: this.$t('orderAuthor.startTime'), title: this.$t('orderAuthor.startTime'),
prop: 'startTime', prop: 'startTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
title: this.$t('orderAuthor.endTime'), title: this.$t('orderAuthor.endTime'),
prop: 'endTime', prop: 'endTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
title: this.$t('orderAuthor.courseAuthorityStatus'), title: this.$t('orderAuthor.courseAuthorityStatus'),
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']); },
tagType: (row) => { tagType: (row) => {
switch (row.status) { switch (row.status) {
case '1': return 'success'; case '1': return 'success';
default: return 'danger'; default: return 'danger';
} }
} }
} }
] ]
} }
} };
}, },
mounted() { mounted() {
this.loadInitData(); this.loadInitData();
}, },
methods: { methods: {
loadInitData() { loadInitData() {
this.$Dictionary.effectiveType().then(list => { this.$Dictionary.effectiveType().then(list => {
this.$convertList(list, this.EffectiveTypeList, elem => { this.$convertList(list, this.EffectiveTypeList, elem => {
return true; return true;
}); });
}); });
this.$Dictionary.permissionType().then(list => { this.$Dictionary.permissionType().then(list => {
list.forEach(elem => { list.forEach(elem => {
this.queryForm.queryObject.permissionType.config.data.push({ value: elem.code, label: elem.name }); this.queryForm.queryObject.permissionType.config.data.push({ value: elem.code, label: elem.name });
}); });
this.$convertList(list, this.PermissionTypeList, elem => { this.$convertList(list, this.PermissionTypeList, elem => {
return true; return true;
}); });
}); });
}, },
formatterDate(row, porpInfo) { formatterDate(row, porpInfo) {
if (row.hasOwnProperty(porpInfo.property)) { return row[porpInfo.property];
} },
return row[porpInfo.property]; queryFunction(params) {
}, // if (params.permissionType) {
queryFunction(params) { return getPermissionPackageDetail(this.$route.params.permissionId, params);
// if (params.permissionType) { // }
return getPermissionPackageDetail(this.$route.params.permissionId, params) },
// } reloadTable() {
}, if (this.queryList && this.queryList.reload) {
reloadTable() { this.queryList.reload();
if (this.queryList && this.queryList.reload) { }
this.queryList.reload() },
} turnback() {
}, this.$router.go(-1);
turnback() { }
this.$router.go(-1) }
} };
}
}
</script> </script>
<style rel="stylesheet/scss" lang="scss" scoped> <style rel="stylesheet/scss" lang="scss" scoped>
.draft { .draft {

View File

@ -1,208 +1,221 @@
<template> <template>
<el-dialog :title="title" :visible.sync="show" top="20px" width="90%" :before-close="doClose" <el-dialog
:close-on-click-modal="false"> :title="title"
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList"> :visible.sync="show"
</QueryListPage> top="20px"
</el-dialog> width="90%"
:before-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 { listCanPackagePermission } from '@/api/management/distribute'; import { listCanPackagePermission } from '@/api/management/distribute';
import { UrlConfig } from '@/router/index';
export default { export default {
name: 'author', name: 'Author',
props: { props: {
ruleList: { ruleList: {
type: Array type: Array,
}, default() {
EffectiveTypeList: { return [];
type: Array, }
}, },
PermissionTypeList: { effectiveTypeList: {
type: Array type: Array,
}, default() {
}, return [];
data() { }
return { },
show: false, permissionTypeList: {
param: '', type: Array,
pagerConfig: { default() {
pageSize: 'pageSize', return [];
pageIndex: 'pageNum' }
}, }
queryForm: { },
labelWidth: '100px', data() {
reset: true, return {
queryObject: { show: false,
'permissionType': { param: '',
type: 'select', pagerConfig: {
label: this.$t('orderAuthor.permissionType'), pageSize: 'pageSize',
config: { pageIndex: 'pageNum'
data: [] },
} queryForm: {
}, labelWidth: '100px',
'canDistribute': { reset: true,
type: 'select', queryObject: {
label: this.$t('orderAuthor.publicOrPrivate'), 'permissionType': {
config: { type: 'select',
data: [] label: this.$t('orderAuthor.permissionType'),
} config: {
} data: []
} }
}, },
queryList: { 'canDistribute': {
query: this.queryFunction, type: 'select',
selectCheckShow: false, label: this.$t('orderAuthor.publicOrPrivate'),
indexShow: true, config: {
columns: [ data: []
{ }
title: this.$t('orderAuthor.organizationOrEnterprise'), }
prop: 'organizationName' }
}, },
{ queryList: {
title: this.$t('orderAuthor.userName'), query: this.queryFunction,
prop: 'userName' selectCheckShow: false,
}, indexShow: true,
{ columns: [
title: this.$t('orderAuthor.userMobile'), {
prop: 'userMobile' title: this.$t('orderAuthor.organizationOrEnterprise'),
}, prop: 'organizationName'
{ },
title: this.$t('orderAuthor.mapName'), {
prop: 'mapName', title: this.$t('orderAuthor.userName'),
}, prop: 'userName'
{ },
title: this.$t('orderAuthor.mapProductName'), {
prop: 'mapProductName', title: this.$t('orderAuthor.userMobile'),
}, prop: 'userMobile'
{ },
title: this.$t('orderAuthor.courseName'), {
prop: 'lessonName', title: this.$t('orderAuthor.mapName'),
}, prop: 'mapName'
{ },
title: this.$t('orderAuthor.permissionType'), {
prop: 'permissionType', title: this.$t('orderAuthor.mapProductName'),
type: 'tag', prop: 'mapProductName'
columnValue: (row) => { return this.$convertField(row.permissionType, this.PermissionTypeList, ['value', 'label']) }, },
tagType: (row) => { return '' } {
}, title: this.$t('orderAuthor.courseName'),
{ prop: 'lessonName'
title: this.$t('orderAuthor.publicOrPrivate'), },
prop: 'canDistribute', {
type: 'tag', title: this.$t('orderAuthor.permissionType'),
columnValue: (row) => { return this.$ConstSelect.translate(row.canDistribute, 'PermissionUseList') }, prop: 'permissionType',
tagType: (row) => { type: 'tag',
switch (row.canDistribute) { columnValue: (row) => { return this.$convertField(row.permissionType, this.PermissionTypeList, ['value', 'label']); },
case true: return 'success'; tagType: (row) => { return ''; }
case false: return 'danger'; },
} {
} title: this.$t('orderAuthor.publicOrPrivate'),
}, prop: 'canDistribute',
{ type: 'tag',
title: this.$t('orderAuthor.permanenceOrNot'), columnValue: (row) => { return this.$ConstSelect.translate(row.canDistribute, 'PermissionUseList'); },
prop: 'forever', tagType: (row) => {
type: 'tag', switch (row.canDistribute) {
columnValue: (row) => { return this.$ConstSelect.translate(row.forever, 'Whether') }, case true: return 'success';
tagType: (row) => { case false: return 'danger';
switch (row.forever) { }
case true: return 'success'; }
case false: return 'danger'; },
} {
} title: this.$t('orderAuthor.permanenceOrNot'),
}, prop: 'forever',
// { type: 'tag',
// title: '', columnValue: (row) => { return this.$ConstSelect.translate(row.forever, 'Whether'); },
// prop: 'amount' tagType: (row) => {
// }, switch (row.forever) {
// { case true: return 'success';
// title: '', case false: return 'danger';
// prop: 'remains' }
// }, }
{ },
title: this.$t('orderAuthor.startTime'), // {
prop: 'startTime', // title: '',
type: 'formatter', // prop: 'amount'
formatter: this.formatterDate // },
// {
// title: '',
// prop: 'remains'
// },
{
title: this.$t('orderAuthor.startTime'),
prop: 'startTime',
type: 'formatter',
formatter: this.formatterDate
}, },
{ {
title: this.$t('orderAuthor.endTime'), title: this.$t('orderAuthor.endTime'),
prop: 'endTime', prop: 'endTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
type: 'button', type: 'button',
title: this.$t('global.operate'), title: this.$t('global.operate'),
width: '120', width: '120',
buttons: [ buttons: [
{ {
name: this.$t('global.add'), name: this.$t('global.add'),
handleClick: this.handlePut, handleClick: this.handlePut,
type: '', type: '',
showControl: (row) => { return !row.isPut && row.permissionType } showControl: (row) => { return !row.isPut && row.permissionType; }
}, },
{ {
name: this.$t('global.delete'), name: this.$t('global.delete'),
handleClick: this.handlePop, handleClick: this.handlePop,
type: 'warning', type: 'warning',
showControl: (row) => { return row.isPut && row.permissionType } showControl: (row) => { return row.isPut && row.permissionType; }
}, }
] ]
} }
] ]
} }
} };
}, },
watch: { computed: {
PermissionTypeList: function (list) { title() {
if (list && list.length) { return this.$t('orderAuthor.editPermissionRules');
this.queryForm.queryObject.permissionType.config.data = list; }
} },
} watch: {
}, PermissionTypeList: function (list) {
computed: { if (list && list.length) {
title() { this.queryForm.queryObject.permissionType.config.data = list;
return this.$t('orderAuthor.editPermissionRules'); }
} }
}, },
mounted() { mounted() {
this.queryForm.queryObject.canDistribute.config.data = this.$ConstSelect.PermissionUseList; this.queryForm.queryObject.canDistribute.config.data = this.$ConstSelect.PermissionUseList;
}, },
methods: { methods: {
formatterDate(row, porpInfo) { formatterDate(row, porpInfo) {
return String(row[porpInfo.property] || '').split(' ')[0]; return String(row[porpInfo.property] || '').split(' ')[0];
}, },
async queryFunction(params) { async queryFunction(params) {
let resp = await listCanPackagePermission(params); const resp = await listCanPackagePermission(params);
this.ruleList.forEach(elem => { this.ruleList.forEach(elem => {
resp.data.list.forEach(item => { resp.data.list.forEach(item => {
if (item.id == elem.id) { if (item.id == elem.id) {
item.isPut = true; item.isPut = true;
} }
}) });
}); });
return resp; return resp;
}, },
reloadTable() { reloadTable() {
if (this.queryList && this.queryList.reload) { if (this.queryList && this.queryList.reload) {
this.queryList.reload() this.queryList.reload();
} }
}, },
doShow() { doShow() {
this.show = true this.show = true;
}, },
doClose() { doClose() {
this.show = false; this.show = false;
}, },
handlePut(index, row) { handlePut(index, row) {
this.$emit('addRuleForm', index, row); this.$emit('addRuleForm', index, row);
}, },
handlePop(index, row) { handlePop(index, row) {
this.$emit('deleteForm', index, row); this.$emit('deleteForm', index, row);
} }
} }
} };
</script> </script>

View File

@ -7,7 +7,7 @@
<el-step icon="el-icon-setting" /> <el-step icon="el-icon-setting" />
</el-steps> </el-steps>
<el-card class="forms pack-rule"> <el-card class="forms pack-rule">
<el-button class="addList" size="small" @click="dialogSelect">{{$t('orderAuthor.addRecords')}}</el-button> <el-button class="addList" size="small" @click="dialogSelect">{{ $t('orderAuthor.addRecords') }}</el-button>
<el-table <el-table
:data="ruleList" :data="ruleList"
border border
@ -28,7 +28,7 @@
<el-table-column prop="remains" :label="this.$t('orderAuthor.residualPermissionNumber')" width="80" /> <el-table-column prop="remains" :label="this.$t('orderAuthor.residualPermissionNumber')" width="80" />
<el-table-column :label="this.$t('global.operate')" width="60"> <el-table-column :label="this.$t('global.operate')" width="60">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="deleteForm(scope.$index, scope.row)">{{$t('global.delete')}} <el-button type="text" size="small" @click="deleteForm(scope.$index, scope.row)">{{ $t('global.delete') }}
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -36,9 +36,9 @@
</el-card> </el-card>
<div class="draft"> <div class="draft">
<el-button-group> <el-button-group>
<el-button v-if="!urlInfo.url" type="primary" @click="packForm">{{$t('orderAuthor.packaging')}}</el-button> <el-button v-if="!urlInfo.url" type="primary" @click="packForm">{{ $t('orderAuthor.packaging') }}</el-button>
<el-button v-if="urlInfo.url" type="primary" @click="QrCodeShow">{{$t('orderAuthor.obtainQrCode')}}</el-button> <el-button v-if="urlInfo.url" type="primary" @click="QrCodeShow">{{ $t('orderAuthor.obtainQrCode') }}</el-button>
<el-button type="primary" @click="turnback">{{$t('global.return')}}</el-button> <el-button type="primary" @click="turnback">{{ $t('global.return') }}</el-button>
</el-button-group> </el-button-group>
</div> </div>
<choose-permission <choose-permission
@ -168,10 +168,10 @@ export default {
}; };
this.qrCodeShow(); this.qrCodeShow();
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('orderAuthor.packagingFailed')); this.$messageBox(this.$t('tip.packagingFailed'));
}); });
} else { } else {
this.$messageBox(this.$t('orderAuthor.selectPackagingRecord')); this.$messageBox(this.$t('tip.selectPackagingRecord'));
} }
}, },
qrCodeShow() { qrCodeShow() {

View File

@ -1,264 +1,261 @@
<template> <template>
<div> <div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList"> <QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</QueryListPage> <qr-code ref="qrCode" />
<qr-code ref="qrCode"></qr-code> </div>
</div>
</template> </template>
<script> <script>
import { superAdmin } from '@/router'; import { superAdmin } from '@/router';
import { listPackagePermission, restorePackagePermission, getPackageQrCode, permissionDistributeUnPackage } from '@/api/management/distribute'; import { listPackagePermission, restorePackagePermission, getPackageQrCode, permissionDistributeUnPackage } from '@/api/management/distribute';
import { UrlConfig } from '@/router/index'; import { UrlConfig } from '@/router/index';
import QrCode from "@/components/QrCode"; import QrCode from '@/components/QrCode';
export default { export default {
name: 'author', name: 'Author',
components: { components: {
QrCode QrCode
}, },
data() { data() {
return { return {
EffectiveTypeList: [], EffectiveTypeList: [],
PermissionTypeList: [], PermissionTypeList: [],
pagerConfig: { pagerConfig: {
pageSize: 'pageSize', pageSize: 'pageSize',
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
queryForm: { queryForm: {
labelWidth: '120px', labelWidth: '120px',
reset: true, reset: true,
queryObject: { queryObject: {
'userMobile': { 'userMobile': {
type: 'text', type: 'text',
label: this.$t('orderAuthor.founderPhone') label: this.$t('orderAuthor.founderPhone')
}, },
'userName': { 'userName': {
type: 'text', type: 'text',
label: this.$t('orderAuthor.founder') label: this.$t('orderAuthor.founder')
}, },
'permissionType': { 'permissionType': {
type: 'select', type: 'select',
label: this.$t('orderAuthor.permissionType'), label: this.$t('orderAuthor.permissionType'),
config: { config: {
data: [] data: []
} }
}, },
'status': { 'status': {
type: 'select', type: 'select',
label: this.$t('orderAuthor.authorityStatus'), label: this.$t('orderAuthor.authorityStatus'),
value: '1', value: '1',
config: { config: {
data: [] data: []
} }
} }
} }
}, },
queryList: { queryList: {
query: this.queryFunction, query: this.queryFunction,
selectCheckShow: false, selectCheckShow: false,
indexShow: true, indexShow: true,
columns: [ columns: [
{ {
title: this.$t('orderAuthor.organizationOrEnterprise'), title: this.$t('orderAuthor.organizationOrEnterprise'),
prop: 'organizationName' prop: 'organizationName'
}, },
{ {
title: this.$t('orderAuthor.founder'), title: this.$t('orderAuthor.founder'),
prop: 'userName' prop: 'userName'
}, },
{ {
title: this.$t('orderAuthor.founderPhone'), title: this.$t('orderAuthor.founderPhone'),
prop: 'userMobile' prop: 'userMobile'
}, },
{ {
title: this.$t('orderAuthor.mapName'), title: this.$t('orderAuthor.mapName'),
prop: 'mapName', prop: 'mapName'
}, },
{ {
title: this.$t('orderAuthor.mapProductName'), title: this.$t('orderAuthor.mapProductName'),
prop: 'mapProductName', prop: 'mapProductName'
}, },
{ {
title: this.$t('orderAuthor.courseName'), title: this.$t('orderAuthor.courseName'),
prop: 'lessonName', prop: 'lessonName'
}, },
{ {
title: this.$t('orderAuthor.permissionType'), title: this.$t('orderAuthor.permissionType'),
prop: 'permissionType', prop: 'permissionType',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.permissionType, this.PermissionTypeList, ['value', 'label']) }, columnValue: (row) => { return this.$convertField(row.permissionType, this.PermissionTypeList, ['value', 'label']); },
tagType: (row) => { return '' } tagType: (row) => { return ''; }
}, },
{ {
title: this.$t('orderAuthor.publicOrPrivate'), title: this.$t('orderAuthor.publicOrPrivate'),
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'); },
tagType: (row) => { tagType: (row) => {
switch (row.canDistribute) { switch (row.canDistribute) {
case true: return 'success'; case true: return 'success';
case false: return 'danger'; case false: return 'danger';
} }
} }
}, },
{ {
title: this.$t('orderAuthor.permanenceOrNot'), title: this.$t('orderAuthor.permanenceOrNot'),
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'); },
tagType: (row) => { tagType: (row) => {
switch (row.forever) { switch (row.forever) {
case true: return 'success'; case true: return 'success';
case false: return 'danger'; case false: return 'danger';
} }
} }
}, },
{ {
title: this.$t('orderAuthor.startTime'), title: this.$t('orderAuthor.startTime'),
prop: 'startTime', prop: 'startTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
title: this.$t('orderAuthor.endTime'), title: this.$t('orderAuthor.endTime'),
prop: 'endTime', prop: 'endTime',
type: 'formatter', type: 'formatter',
formatter: this.formatterDate formatter: this.formatterDate
}, },
{ {
title: this.$t('orderAuthor.authorityStatus'), title: this.$t('orderAuthor.authorityStatus'),
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']); },
tagType: (row) => { tagType: (row) => {
switch (row.status) { switch (row.status) {
case '1': return 'success'; case '1': return 'success';
default: return 'danger'; default: return 'danger';
} }
} }
}, },
{ {
type: 'button', type: 'button',
title: this.$t('global.operate'), title: this.$t('global.operate'),
width: '300', width: this.$i18n.locale == 'en' ? '370': '300',
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: this.$t('orderAuthor.obtainQrCode'), name: this.$t('orderAuthor.obtainQrCode'),
handleClick: this.handleRtCodeShow, handleClick: this.handleRtCodeShow,
type: '', type: '',
showControl: (row) => { return true } showControl: (row) => { return true; }
}, },
{ {
name: this.$t('orderAuthor.authorityDetails'), name: this.$t('orderAuthor.authorityDetails'),
handleClick: this.handlePermissionDetail, handleClick: this.handlePermissionDetail,
type: '', type: '',
showControl: (row) => { return row.status == '1' && (row.source == '02' || row.source == '04') } showControl: (row) => { return row.status == '1' && (row.source == '02' || row.source == '04'); }
}, },
{ {
name: this.$t('orderAuthor.recovery'), name: this.$t('orderAuthor.recovery'),
handleClick: this.handleRestore, handleClick: this.handleRestore,
type: 'danger', type: 'danger',
showControl: (row) => { return row.status == '1' && row.source == '04' } showControl: (row) => { return row.status == '1' && row.source == '04'; }
}, },
{ {
name: this.$t('orderAuthor.unpacking'), name: this.$t('orderAuthor.unpacking'),
handleClick: this.handleUnPackage, handleClick: this.handleUnPackage,
type: 'danger', type: 'danger',
showControl: (row) => { return row.status == '1' && row.source == '02' } showControl: (row) => { return row.status == '1' && row.source == '02'; }
} }
] ]
} }
], ],
actions: [ actions: [
{ text: this.$t('orderAuthor.privilegePackaging'), btnCode: 'employee_insert', handler: this.handlePackage }, { text: this.$t('orderAuthor.privilegePackaging'), btnCode: 'employee_insert', handler: this.handlePackage }
] ]
} }
} };
}, },
mounted() { mounted() {
this.loadInitData(); this.loadInitData();
}, },
methods: { methods: {
loadInitData() { loadInitData() {
this.$Dictionary.effectiveType().then(list => { this.$Dictionary.effectiveType().then(list => {
list.forEach(elem => { list.forEach(elem => {
this.queryForm.queryObject.status.config.data.push({ value: elem.code, label: elem.name }); this.queryForm.queryObject.status.config.data.push({ value: elem.code, label: elem.name });
}) });
this.$convertList(list, this.EffectiveTypeList, elem => { this.$convertList(list, this.EffectiveTypeList, elem => {
return true; return true;
}); });
}); });
this.$Dictionary.permissionType().then(list => { this.$Dictionary.permissionType().then(list => {
list.forEach(elem => { list.forEach(elem => {
this.queryForm.queryObject.permissionType.config.data.push({ value: elem.code, label: elem.name }); this.queryForm.queryObject.permissionType.config.data.push({ value: elem.code, label: elem.name });
}); });
this.$convertList(list, this.PermissionTypeList, elem => { this.$convertList(list, this.PermissionTypeList, elem => {
return true; return true;
}); });
this.PermissionTypeList.push({ value: undefined, label: this.$t('orderAuthor.permissionPack') }); this.PermissionTypeList.push({ value: undefined, label: this.$t('orderAuthor.permissionPack') });
}); });
}, },
formatterDate(row, porpInfo) { formatterDate(row, porpInfo) {
if (row.hasOwnProperty(porpInfo.property)) { return row[porpInfo.property];
} },
return row[porpInfo.property]; queryFunction(params) {
}, return listPackagePermission(params);
queryFunction(params) { },
return listPackagePermission(params); reloadTable() {
}, if (this.queryList && this.queryList.reload) {
reloadTable() { this.queryList.reload();
if (this.queryList && this.queryList.reload) { }
this.queryList.reload() },
} handlePermissionDetail(index, row) {
}, this.$router.push({ path: `${UrlConfig.orderauthor.transferDetail}/${row.id}` });
handlePermissionDetail(index, row) { },
this.$router.push({ path: `${UrlConfig.orderauthor.transferDetail}/${row.id}` }) handleRtCodeShow(index, row) {
}, getPackageQrCode({ id: row.id }).then(resp => {
handleRtCodeShow(index, row) { this.$refs.qrCode.doShow({
getPackageQrCode({ id: row.id }).then(resp => { url: resp.data,
this.$refs.qrCode.doShow({ title: this.$t('orderAuthor.privilegeTransferQRCode')
url: resp.data, });
title: this.$t('orderAuthor.privilegeTransferQRCode') }).catch(() => {
}); this.$messageBox(this.$t('tip.getQRCodeFailure'));
}).catch(error => { });
this.$messageBox(this.$t('orderAuthor.getQRCodeFailure')); },
}) handleRestore(index, row) {
}, this.$confirm(this.$t('tip.recoveryPrivilegeTip'), this.$t('global.tips'), {
handleRestore(index, row) { confirmButtonText: this.$t('global.confirm'),
this.$confirm(this.$t('orderAuthor.recoveryPrivilegeTip'), this.$t('tip.hint'), { cancelButtonText: this.$t('global.cancel'),
confirmButtonText: this.$t('tip.confirm'), type: 'warning'
cancelButtonText: this.$t('tip.cancel'), }).then(() => {
type: 'warning' restorePackagePermission(row.id).then(resp => {
}).then(() => { this.reloadTable();
restorePackagePermission(row.id).then(resp => { this.$message.success(this.$t('tip.recoveryPrivilegesSuccessful'));
this.reloadTable(); }).catch(() => {
this.$message.success(this.$t('tip.recoveryPrivilegesSuccessful')); this.$messageBox(this.$t('tip.recoveryPrivilegesFailed'));
}).catch(error => { });
this.$messageBox(this.$t('tip.recoveryPrivilegesFailed')); }).catch(() => { });
}) },
}).catch(() => { }); handleUnPackage(index, row) {
}, this.$confirm(this.$t('tip.unpackingTip'), this.$t('global.tips'), {
handleUnPackage(index, row) { confirmButtonText: this.$t('global.confirm'),
this.$confirm(this.$t('orderAuthor.unpackingTip'), this.$t('tip.hint'), { cancelButtonText: this.$t('global.cancel'),
confirmButtonText: this.$t('tip.confirm'), type: 'warning'
cancelButtonText: this.$t('tip.cancel'), }).then(() => {
type: 'warning' permissionDistributeUnPackage(row.id).then(resp => {
}).then(() => { this.reloadTable();
permissionDistributeUnPackage(row.id).then(resp => { this.$message.success(this.$t('tip.unpackingSuccessful'));
this.reloadTable(); }).catch(() => {
this.$message.success(this.$t('tip.unpackingSuccessful')); this.$messageBox(this.$t('tip.unpackingFailed'));
}).catch(error => { });
this.$messageBox(this.$t('tip.unpackingFailed')); }).catch(() => { });
}) },
}).catch(() => { }); handlePackage() {
}, this.$router.push({ path: `${UrlConfig.orderauthor.trainferPackage}` });
handlePackage() { }
this.$router.push({ path: `${UrlConfig.orderauthor.trainferPackage}` }) }
} };
}
}
</script> </script>

View File

@ -67,9 +67,9 @@ export default {
this.height = this._clientHeight - 50; this.height = this._clientHeight - 50;
}, },
initLoadPage() { initLoadPage() {
const data = { id: this.$route.params.trainingId }; const trainingId = this.$route.params.trainingId;
if (parseInt(data.id)) { if (parseInt(trainingId)) {
getTrainingDetail(data) getTrainingDetail(trainingId)
.then(res => { .then(res => {
this.courseModel = { this.courseModel = {
id: res.data.id, id: res.data.id,