This commit is contained in:
sunzhenyu 2021-04-02 15:49:32 +08:00
commit a9745eb709
161 changed files with 8469 additions and 3844 deletions

View File

@ -204,18 +204,10 @@ export function getClassListPage(params) {
params
});
}
/** 分页获取自己创建的班级 */
export function getClassListPageSelf(params) {
/** 查询班级列表不分页 */
export function getClassListUnPage() {
return request({
url: `/api/company/paged/cls/self`,
method: 'get',
params
});
}
/** 查询个人创建的班级列表 */
export function getClassListUnPageSelf() {
return request({
url: `/api/company/list/cls/self`,
url: `/api/company/list/cls`,
method: 'get'
});
}
@ -235,21 +227,6 @@ export function createStudent(orgId, data) {
data
});
}
/** 获取班级关联课程 */
export function getClassAssociatedLessons(orgId) {
return request({
url: `/api/company/orgLesson/${orgId}/list`,
method: 'get'
});
}
/** 关联课程班级 */
export function setClassAssociatedLessons(orgId, data) {
return request({
url: `/api/company/orgLesson/${orgId}/update`,
method: 'put',
data
});
}
/** 创建修改 规则 */
export function createRule(data) {
return request({
@ -302,3 +279,25 @@ export function userRuleGetScore(orgId, schoolYear, term) {
method: 'get'
});
}
/** 将规则应用到班级 */
export function applyRuleToClass(ruleId, data) {
return request({
url: `/api/company/orgScoringRule/${ruleId}/apply`,
method: 'post',
data
});
}
/** 查询规则能够应用到的组织 */
export function getCanApplyToList(ruleId) {
return request({
url: `/api/company/orgScoringRule/${ruleId}/canApplyTo`,
method: 'get'
});
}
/** 查询组织树结构 */
export function getOrgTreeById(orgId) {
return request({
url: `api/company/orgTree/${orgId}`,
method: 'get'
});
}

View File

@ -103,18 +103,19 @@ export function getExamClassList(lessonId) {
});
}
/** 获取自己发布的课程列表 */
export function getLessonListSelf(params) {
export function getLessonProjectList(params) {
return request({
url: '/api/lesson/paged/self',
url: '/api/lesson/paged/byLoginProject',
method: 'get',
params
});
}
/** 获取自己发布课程列表不分页 */
export function getLessonListsSelfNoPage() {
export function getLessonProjectListNoPage(params) {
return request({
url: '/api/lesson/unPaged/self',
method: 'get'
url: '/api/lesson/list/byLoginProject',
method: 'get',
params
});
}
/** 获取班级关联的自己发布的课程 */

View File

@ -271,3 +271,10 @@ export function getSectionListByMapId(id) {
method: 'get'
});
}
/** 查询地图下集中站下的区段 */
export function getSectionListByCenStationCode(id, stationCode) {
return request({
url: `/api/map/${id}/deviceStation/${stationCode}/sections`,
method: 'get'
});
}

View File

@ -150,3 +150,11 @@ export function sendCommandTrain(group, data) {
data
});
}
/** 根据地图id和产品类型查询实训类型及数量 */
export function getTrainingTypeAndNumByMapIdAndPrdType(params) {
return request({
url: `/api/v1/training/trainingTypeAndQuantity`,
method: 'get',
params
});
}

View File

@ -1,37 +1,13 @@
import request from '@/utils/request';
/** 创建对应课程考题 */
export function setCourseList(data) {
export function createExam(data) {
return request({
url: `/api/exam`,
method: 'post',
data: data
});
}
/** 贵州装备 创建对应课程考题 */
export function setCourseListGzb(data) {
return request({
url: `/api/exam/project/GZB`,
method: 'post',
data: data
});
}
/** 获取对应课程下类型 */
export function getCourseTypeList(data) {
return request({
url: `/api/exam/${data.lessonId}/trainingTypes`,
method: 'get'
});
}
/** 获取考试课程详情 */
export function getCourseLessonDetail(data) {
return request({
url: `/api/exam/${data.lessonId}/list`,
method: 'get'
});
}
/** 获取试卷详情 */
export function getExamLessonDetail(examId) {
@ -74,17 +50,6 @@ export function setExamEffectivey(data) {
});
}
/** 查询课程下类型题数 */
export function getLessonTypeNum(data) {
return request({
url: `/api/exam/trainingNum/${data.lessonId}/${data.trainingType}`,
method: 'get',
params: {
operateType: data.operateType
}
});
}
/** 更新考试规则*/
export function updateExamRules(data) {
return request({
@ -93,19 +58,35 @@ export function updateExamRules(data) {
data: data
});
}
/** 查询本项目下自己创建的考试列表 */
export function getExamListSelf(params) {
/** 查询本项目下的考试列表 */
export function getExamListProject(params) {
return request({
url: `/api/exam/paged/org/self`,
url: `/api/exam/paged/loginProject`,
method: 'get',
params
});
}
/** 查询本项目下的考试列表不分页 */
export function getExamListProjectUnpage(params) {
return request({
url: `/api/exam/list/loginProject`,
methods: 'get',
params
});
}
/** 查询班级关联的自己创建的试卷 */
export function getExanListSelfByClassId(params) {
export function getExamListSelfByClassId(params) {
return request({
url: `/api/exam/list/org/self`,
method: 'get',
params
});
}
/** 根据地图ID和prdType查询试卷列表 */
export function getExamListByMapIdAndPrdType(mapId, prdType) {
return request({
url: `/api/exam/list/${mapId}`,
method: 'get',
params: { prdType: prdType }
});
}

View File

@ -87,14 +87,6 @@ export function getRpListByMapId(mapId) {
});
}
/** 获取地图原始站间运行等级 */
export function getMapStationRun(mapId) {
return request({
url: `/api/runPlan/draft/${mapId}/stationRunLevel`,
method: 'get'
});
}
/** 分页获取用户站间运行等级 */
export function getMapStationRunUser(mapId) {
return request({
@ -147,14 +139,6 @@ export function checkServiceNumberExist({ planId, serviceNumber }) {
});
}
// /** 查询交路列表*/
// export function getRoutingList(planId) {
// return request({
// url: `/api/runPlan/draft/${planId}/routingList`,
// method: 'get'
// });
// }
/** 查询用户交路数据 (新版)*/
export function listUserRoutingData(mapId) {
return request({
@ -165,9 +149,9 @@ export function listUserRoutingData(mapId) {
}
/** 根据交路查询交路区段列表*/
export function querySectionListByRouting({ planId, routingCode }) {
export function querySectionListByRouting(routingCode) {
return request({
url: `/api/runPlan/draft/${planId}/${routingCode}/routingSectionList`,
url: `/api/runPlan/draft/${routingCode}/routingSectionList`,
method: 'get'
});
}
@ -258,15 +242,6 @@ export function updatePlanTrip(data) {
/** 根据车次号查询交路 */
export function getRoutingBySDTNumber(params) {
// 旧版
// return request({
// url: `/api/runPlan/draft/${params.planId}/routing`,
// method: 'get',
// params: {
// SDTNumber: params.SDTNumber
// }
// });
// 新版
return request({
url: `/api/runPlan/draft/${params.planId}/userRouting`,
method: 'get',

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -141,6 +141,7 @@
<el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required">
<template v-if="item.remote">
<el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]"
:placeholder="item.placeholder"
:disabled="item.disabled"
@ -160,6 +161,7 @@
</template>
<template v-else-if="item.allowCreate">
<el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]"
:placeholder="item.placeholder"
:disabled="item.disabled"
@ -179,6 +181,7 @@
</template>
<template v-else-if="item.multiple">
<el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]"
:placeholder="item.placeholder"
:disabled="item.disabled"
@ -196,6 +199,7 @@
</template>
<template v-else-if="item.change">
<el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]"
filterable
:clearable="!!item.clearable"
@ -216,6 +220,7 @@
</template>
<template v-else>
<el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]"
filterable
:no-data-text="item.noDataText?item.noDataText:'无数据'"
@ -239,6 +244,7 @@
<template v-else-if="checkFieldType(item, 'datetime') || checkFieldType(item, 'date') || checkFieldType(item, 'daterange') || checkFieldType(item, 'datetimerange')">
<el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required" style="width: 100%;">
<el-date-picker
:ref="'select_'+item.prop"
v-model="formModel[item.prop]"
align="right"
:type="item.type"
@ -253,6 +259,7 @@
<template v-else-if="checkFieldType(item, 'time')">
<el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required">
<el-time-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]"
:placeholder="item.placeholder"
:disabled="item.disabled"
@ -263,6 +270,7 @@
<template v-else-if="checkFieldType(item, 'timePicker')">
<el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required">
<el-time-picker
:ref="'select_'+item.prop"
v-model="formModel[item.prop]"
:placeholder="item.placeholder"
:disabled="item.disabled"
@ -410,6 +418,30 @@ export default {
if (item.deviceChange) {
item.deviceChange(data);
}
},
allSelectBlur() {
const that = this;
const list = ['datetime', 'date', 'daterange', 'datetimerange', 'time', 'timePicker'];
this.form.items.forEach(each=>{
if (each.hasOwnProperty('show')) {
if ((list.includes(each.type) || this.checkFieldType(each, 'select')) && each.show) {
// that.$refs['select_' + each.prop][0].blur();
if (this.checkFieldType(each, 'select')) {
that.$refs['select_' + each.prop][0].blur();
} else {
that.$refs['select_' + each.prop][0].hidePicker();
}
}
} else {
if (list.includes(each.type) || this.checkFieldType(each, 'select')) {
if (this.checkFieldType(each, 'select')) {
that.$refs['select_' + each.prop][0].blur();
} else {
that.$refs['select_' + each.prop][0].hidePicker();
}
}
}
});
}
}
};

View File

@ -87,7 +87,7 @@ export default {
bankManage: '题库列表',
practiceManage:'实操列表',
sceneManage:'场景列表',
companyManage: '单位管理',
companyManage: '组织管理',
authorApply: '授权申请',
AuthorList: '授权列表',
questionsRuleManage: '出题规则管理',

View File

@ -336,13 +336,13 @@ deviceRender[deviceType.IscsImage] = {
deviceRender[deviceType.OrdinaryDoor] = {
_type: deviceType.OrdinaryDoor,
zlevel: 1,
z: 4
z: 5
};
// 福州门禁
deviceRender[deviceType.FuzhouDoor] = {
_type: deviceType.FuzhouDoor,
zlevel: 1,
z: 4
z: 5
};
// 福州通讯图符
deviceRender[deviceType.CommunicationButcher] = {

View File

@ -18,7 +18,7 @@ class Iscs {
this.methods = opts.methods;
// 鼠标事件
this.events = { __Pan: 'pan', Selected: 'selected', Contextmenu: 'contextmenu', Keyboard: 'keyboard', dblclick: 'dblclick'};
this.events = { __Pan: 'pan', Selected: 'selected', Contextmenu: 'contextmenu', Keyboard: 'keyboard', dblclick: 'dblclick', click:'click'};
// 设备数据
this.iscsDevice = {};
@ -280,6 +280,9 @@ class Iscs {
case this.events.dblclick:
this.$mouseController.on(this.events.dblclick, cb, context);
break;
case this.events.click:
this.$mouseController.on(this.events.click, cb, context);
break;
case this.events.Contextmenu:
this.$mouseController.on(this.events.Contextmenu, cb, context);
break;
@ -303,6 +306,9 @@ class Iscs {
case this.events.dblclick:
this.$mouseController.off(this.events.dblclick, cb);
break;
case this.events.click:
this.$mouseController.off(this.events.click, cb);
break;
case this.events.Contextmenu:
this.$mouseController.off(this.events.Contextmenu, cb);
break;

View File

@ -138,8 +138,12 @@ class MouseController extends Eventful {
}
click(e) {
var em = this.checkEvent(e);
if (em.deviceType == 'IscsButton') {
this.trigger(this.events.click, em);
} else {
this.trigger(this.events.Selected, em);
}
}
moveEvent(e) {
const newEm = new EventModel(e);
const trainDetails = store.state.map.trainDetails;

View File

@ -53,13 +53,13 @@ export default class Button extends Group {
y: textRect.y - model.verticalPadding,
image: buttonImg,
width: textRect.width + 2 * model.levelPadding,
height: textRect.height + 2 * model.verticalPadding
height: textRect.height + 2 * model.verticalPadding,
}
});
this.grouper.add(this.imageButton);
this.on('mousedown', (e) => { this.imageButton && this.imageButton.setStyle({image: buttonActive}); });
this.on('mouseup', (e) => { this.imageButton && this.imageButton.setStyle({image: buttonImg}); });
} else if (Vue.prototype.$iscs.lineCode == '02') {
} else if (['02','09'].includes(Vue.prototype.$iscs.lineCode)) {
this.textButtonRect = new Rect({
zlevel: model.zlevel,
z: model.z,
@ -68,7 +68,8 @@ export default class Button extends Group {
x: textRect.x - model.levelPadding,
y: textRect.y - model.verticalPadding,
width: textRect.width + 2 * model.levelPadding,
height: textRect.height + 2 * model.verticalPadding
height: textRect.height + 2 * model.verticalPadding,
fill: model.fillColor||'rgba(0,0,0,0)'
},
style: {
lineWidth: 0,
@ -121,7 +122,8 @@ export default class Button extends Group {
x: textRect.x - model.levelPadding + 6,
y: textRect.y - model.verticalPadding + 6,
width: textRect.width + 2 * model.levelPadding - 12,
height: textRect.height + 2 * model.verticalPadding - 12
height: textRect.height + 2 * model.verticalPadding - 12,
fill: model.fillColor||'rgba(0,0,0,0)'
},
style: {
lineWidth: 2,
@ -149,8 +151,8 @@ export default class Button extends Group {
}
this.grouper.add(this.buttonText);
this.add(this.grouper);
this.on('mouseout', (e) => { this.buttonText && this.buttonText.setStyle({textFill: model.textColor || '#FFF'}); });
this.on('mouseover', (e) => { this.buttonText && this.buttonText.setStyle({textFill: model.textColorActive || '#000'}); });
this.on('mouseout', (e) => { this.buttonText && this.buttonText.setStyle({textFill: model.textColor||'#FFF', fill: model.fillColor||'rgba(0,0,0,0)'}); });
this.on('mouseover', (e) => { this.buttonText && this.buttonText.setStyle({textFill: model.textColorActive||'#000',fill: model.fillColorActive||'rgba(0,0,0,0)'}); });
}
setState(model) {
this.textButtonRect.setStyle('fill', model.backgroundColor);

View File

@ -63,17 +63,19 @@ export default class line extends Group {
stroke: this.model.fillColor
}
});
if (fillColor) {
this.iscsLine.setStyle('fill', fillColor);
}
// if (fillColor) {
// this.iscsLine.setStyle('fill', fillColor);
// }
if (model.isGradual) {
if (!model.isFillGradual) {
if (fillColor) {
this.iscsLine.setStyle('fill', fillColor);
}
} else {
// if (!model.isFillGradual) {
// if (fillColor) {
// this.iscsLine.setStyle('fill', fillColor);
// }
// } else {
this.iscsLine.setStyle('stroke', fillColor);
}
// }
} else {
this.iscsLine.setStyle('fill', fillColor||'rgba(0,0,0,0)');
}
if (model.classify == 'dashed') {
this.iscsLine.setStyle('lineDash', [8, 6]);
@ -101,7 +103,7 @@ export default class line extends Group {
},
style: {
lineWidth: 0,
fill: model.fillColor
fill: model.fillColor||'rgba(0,0,0,0)'
}
});
this.grouper.add(this.arrows);
@ -129,7 +131,7 @@ export default class line extends Group {
},
style: {
lineWidth: 0,
fill: model.fillColor
fill: model.fillColor||'rgba(0,0,0,0)'
}
});
this.grouper.add(this.arrows);

View File

@ -9,6 +9,7 @@ export default class OrdinaryDoor extends Group {
this.model = device.model;
this.zlevel = device.model.zlevel;
this.z = device.model.z;
this.z2 = device.model.z2;
this._type = device.model._type;
this._code = device.model.code;
this.create();
@ -21,6 +22,7 @@ export default class OrdinaryDoor extends Group {
this.sector1 = new Sector({
zlevel: this.zlevel,
z: this.z,
z2: this.z2||0,
shape: {
cx: 0,
cy: this.model.r,
@ -56,6 +58,7 @@ export default class OrdinaryDoor extends Group {
this.sector2 = new Sector({
zlevel: this.zlevel,
z: this.z,
z2: this.z2,
shape: {
cx: this.model.r * 2,
cy: this.model.r,
@ -75,6 +78,7 @@ export default class OrdinaryDoor extends Group {
this.maskLine = new Line({
zlevel: this.zlevel,
z: this.z,
z2: this.z2,
shape: {
x1: 1,
y1: this.model.r,
@ -92,6 +96,7 @@ export default class OrdinaryDoor extends Group {
this.bottomRect = new Rect({
zlevel: this.zlevel,
z: this.z,
z2: this.z2,
shape: {
x: 0,
y: this.model.r,

View File

@ -47,6 +47,39 @@ import iscsSensor from '@/assets/iscs_picture/iscs-sensor.png';
import iscsDangwei from '@/assets/iscs_picture/iscs-dangwei.png';
import iscsDibian from '@/assets/iscs_picture/iscs-dibian.png';
import iscsPt1 from '@/assets/iscs_picture/iscs-pt1.png';
import checkNormal from '@/assets/iscs_picture/check_normal.png';
import checkArrowLeft from '@/assets/iscs_picture/check_arrow_left.png';
import checkArrowRight from '@/assets/iscs_picture/check_arrow_right.png';
import checkArrowDouble from '@/assets/iscs_picture/check_arrow_double.png';
import checkFlowCumulative from '@/assets/iscs_picture/check_flow_cumulative.png';
import checkSell from '@/assets/iscs_picture/check_sell.png';
import checkSell2 from '@/assets/iscs_picture/check_sell2.png';
import bgShowRoom from '@/assets/iscs_picture/bg-showroom.jpg';
import bgStand from '@/assets/iscs_picture/bg-stand.jpg';
import bgFasPlatformA from '@/assets/iscs_picture/fas_platform_a_bg.png';
import bgFasPlatformB from '@/assets/iscs_picture/fas_platform_b_bg.png';
import basAnnulus from '@/assets/iscs_picture/bas_annulus.png';
import basEnvironmental from '@/assets/iscs_picture/bas_environmental.png';
import basLowPressure from '@/assets/iscs_picture/bas_low_pressure.png';
import basInterface from '@/assets/iscs_picture/bas_interface.png';
import basEntity from '@/assets/iscs_picture/bas_entity.png';
import smokeDetectorRed from '@/assets/iscs_picture/smokeDetector_red.png';
import smokeDetectorBlue from '@/assets/iscs_picture/smokeDetector_blue.png';
import smokeDetectorGreen from '@/assets/iscs_picture/smokeDetector_green.png';
import fireDamperRed from '@/assets/iscs_picture/fireDamper_red.png';
import fireDamperBlue from '@/assets/iscs_picture/fireDamper_blue.png';
import fireDamperGreen from '@/assets/iscs_picture/fireDamper_green.png';
import alarmLampRed from '@/assets/iscs_picture/alarmLamp_red.png';
import alarmLampBlue from '@/assets/iscs_picture/alarmLamp_blue.png';
import alarmLampGreen from '@/assets/iscs_picture/alarmLamp_green.png';
import bgStationA from '@/assets/iscs_picture/bg-station-A.png'
import bgStationB from '@/assets/iscs_picture/bg-station-B.png'
import bgStationC from '@/assets/iscs_picture/bg-station-C.png'
import bgStationD from '@/assets/iscs_picture/bg-station-D.png'
import bgStationE from '@/assets/iscs_picture/bg-station-E.png'
import bgStationF from '@/assets/iscs_picture/bg-station-F.png'
import bgDoorStationA from '@/assets/iscs_picture/bg-door-station-A.png';
import bgDoorStandA from '@/assets/iscs_picture/bg-door-stand-A.png';
const pictureObj = {
'psdLeft': psdLeft,
@ -93,7 +126,40 @@ const pictureObj = {
iscsSensor,
iscsDangwei,
iscsDibian,
iscsPt1
iscsPt1,
checkNormal,
checkArrowLeft,
checkArrowRight,
checkArrowDouble,
checkFlowCumulative,
checkSell,
checkSell2,
bgShowRoom,
bgStand,
basAnnulus,
basEnvironmental,
basLowPressure,
basInterface,
basEntity,
bgFasPlatformA,
bgFasPlatformB,
smokeDetectorRed,
smokeDetectorBlue,
smokeDetectorGreen,
fireDamperRed,
fireDamperBlue,
fireDamperGreen,
alarmLampRed,
alarmLampBlue,
alarmLampGreen,
bgStationA,
bgStationB,
bgStationC,
bgStationD,
bgStationE,
bgStationF,
bgDoorStationA,
bgDoorStandA
};
export default class Picture extends Group {
constructor(device) {

View File

@ -36,6 +36,11 @@ export function deviceFactory(type, elem) {
export function parser(data) {
var iscsDevice = {};
if (data) {
Object.values(data).forEach(list => {
if (list instanceof Array) {
list.sort((a, b) => parseInt(a.code.split('_')[1]) - parseInt(b.code.split('_')[1]));
}
})
zrUtil.each(data.manualAlarmButtonList || [], elem => {
iscsDevice[elem.code] = deviceFactory(deviceType.ManualAlarmButton, elem);
}, this);
@ -204,7 +209,7 @@ export function parser(data) {
zrUtil.each(data.ordinaryDoorList || [], elem => {
iscsDevice[elem.code] = deviceFactory(deviceType.OrdinaryDoor, elem);
});
zrUtil.each(data.fuzhoudoorList || [], elem => {
zrUtil.each(data.fuzhouDoorList || [], elem => {
iscsDevice[elem.code] = deviceFactory(deviceType.FuzhouDoor, elem);
});
zrUtil.each(data.communicationButcherList || [], elem => {

View File

@ -409,10 +409,10 @@ export default class ELines extends Group {
}
setCrossBlock() {
this.centerSquare && this.centerSquare.setStyle({fill:this.model.style.Section.cross.centerSquare.blockColor});
this.crossSection && this.crossSection.setStyle({fill:this.model.style.Section.cross.centerSquare.blockColor});
}
setCrossUnBlock() {
this.centerSquare && this.centerSquare.setStyle({fill:this.model.style.Section.cross.centerSquare.defaultColor});
this.crossSection && this.crossSection.setStyle({fill:this.model.style.Section.cross.centerSquare.defaultColor});
}
setCrossSpeedUpperLimit(speedLimit) {
this.crossSpeedText && this.crossSpeedText.setStyle({text:speedLimit, textFill: 'red' });

View File

@ -7,8 +7,8 @@ const defaultConfig = {
/** 间隔高度*/
multiple: 3,
/** 偏移时间*/
translation: 60 * 60 * 2,
}
translation: 60 * 60 * 2
};
class EqualDistanceParser {
constructor() {
@ -27,7 +27,7 @@ class EqualDistanceParser {
importData(sheet, data) {
if (this.config &&
this.config.importData) {
this.config.importData(sheet, data)
this.config.importData(sheet, data);
} else {
console.info('no import data function');
}
@ -74,6 +74,9 @@ class EqualDistanceParser {
/** 计算折返点车次坐标点集合*/
if (!train.backup && train.reentry && service.tripNumberDataList[j + 1] && service.tripNumberDataList[j + 1].stationTimeList) {
const currentTimeList = service.tripNumberDataList[j].stationTimeList;
const nextTimeList = service.tripNumberDataList[j + 1].stationTimeList;
if (currentTimeList[currentTimeList.length - 1].secondTime != nextTimeList[0].secondTime) {
lastPoint = train.stationTimeList[idx];
nextPoint = service.tripNumberDataList[j + 1].stationTimeList[0];
// ${train.directionCode}
@ -81,6 +84,7 @@ class EqualDistanceParser {
opt.data.push([lastPoint.secondTime, this.getCoordYByElem(stations, kmRangeMap, lastPoint, pointdata.directionCode, true), lastPoint.stationCode, aa, '折返轨']);
opt.data.push([nextPoint.secondTime, this.getCoordYByElem(stations, kmRangeMap, lastPoint, pointdata.directionCode, true), lastPoint.stationCode, aa, '折返轨']);
}
}
/** 如果是备用车,按车次添加线*/
if (train.backup) {
@ -261,7 +265,7 @@ class EqualDistanceParser {
}
getTranslation() {
return this.config.translation
return this.config.translation;
}
getEdge() {

View File

@ -11,8 +11,8 @@ const defaultConfig = {
/** 间隔高度*/
multiple: 1,
/** 偏移时间*/
translation: 0,
}
translation: 0
};
class EqualRatioParser {
constructor() {
@ -28,7 +28,7 @@ class EqualRatioParser {
importData(sheet, data) {
if (this.config &&
this.config.importData) {
this.config.importData(sheet, data)
this.config.importData(sheet, data);
} else {
console.info('no import data function');
}
@ -81,6 +81,9 @@ class EqualRatioParser {
/** 计算折返点车次坐标点集合*/
if (!train.backup && train.reentry && service.tripNumberDataList[j + 1] && service.tripNumberDataList[j + 1].stationTimeList) {
const currentTimeList = service.tripNumberDataList[j].stationTimeList;
const nextTimeList = service.tripNumberDataList[j + 1].stationTimeList;
if (currentTimeList[currentTimeList.length - 1].secondTime != nextTimeList[0].secondTime) {
lastPoint = train.stationTimeList[train.stationTimeList.length - 1];
nextPoint = service.tripNumberDataList[j + 1].stationTimeList[0];
num = this.computedReentryNumber(train.tripNumber);
@ -88,6 +91,7 @@ class EqualRatioParser {
opt.data.push([lastPoint.secondTime, this.getCoordYByElem(stations, kmRangeMap, lastPoint, pointdata.directionCode, true, num), lastPoint.stationCode, aa]);
opt.data.push([nextPoint.secondTime, this.getCoordYByElem(stations, kmRangeMap, nextPoint, pointdata.directionCode, true, num), nextPoint.stationCode, aa]);
}
}
/** 如果是备用车,按车次添加线*/
if (train.backup) {
@ -275,7 +279,7 @@ class EqualRatioParser {
}
getTranslation() {
return this.config.translation
return this.config.translation;
}
getEdge() {

View File

@ -43,7 +43,7 @@ export default {
return this.$store.state.user.companyAdmin;
},
isSameProject() {
return this.$store.state.user.companyProject === (getSessionStorage('project').toUpperCase());
return this.$store.state.user.companyProjectList.includes(getSessionStorage('project').toUpperCase());
}
},
mounted() {

View File

@ -145,7 +145,6 @@ const PreTheoryImport = () => import('@/views/competitionManage/bankList/preImpo
const PlanScheduleWicket = () => import('@/views/newMap/displayNew/demon/planSchedule');
const MessageBoard = () => import('@/views/messageBoard/index');
const BoardManage = () => import('@/views/messageBoard/manage');
const DraftLessonManage = () => import('@/views/teach/draftLessonManage');
const OrganizationManage = () => import('@/views/organization/index');
const OrgClassManage = () => import('@/views/organization/classManage/index');
const OrgDraftLessonManage = () => import('@/views/organization/draftLessonManage/index');
@ -159,10 +158,12 @@ const StudentManage = () => import('@/views/organization/classManage/studentMana
const GradeList = () => import('@/views/organization/examManage/gradeList');
const CreateRule = () => import('@/views/organization/ruleManage/createRule');
const TotalGrade = () => import('@/views/organization/ruleManage/totalGrade');
const InfoLessonDetail = () => import('@/views/organization/lessonManage/lessonDetail');
const RunPlanViewWindow = () => import('@/views/newMap/displayNew/demon/runPlanViewWindow');
const SecondaryHome = () => import('@/views/trainingPlatform/secondaryHome');
const Demo = () => import('@/views/demo');
const DemoTraining = () => import('@/views/newMap/displayNew/demoTraining');
const OrgDetail = () => import('@/views/system/companyManage/orgDetail');
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
// import { getSessionStorage } from '@/utils/auth';
@ -567,6 +568,11 @@ export const publicAsyncRoute = [
path: 'totalGrade',
component: TotalGrade,
hidden: true
},
{
path: 'lessonDetail',
component: InfoLessonDetail,
hidden: true
}
]
}
@ -709,11 +715,6 @@ export const asyncRouter = [
component: TeachDetail,
hidden: true
},
{ // 草稿课程
path: 'draftTeach/:subSystem',
component: DraftLessonManage,
hidden: true
},
{ // 运行图设计
path: 'runPlan/:mapId',
component: PlanMonitorDetail,
@ -965,6 +966,11 @@ export const asyncRouter = [
i18n: 'router.companyManage'
}
},
{
path: 'companyManage/orgDetail',
component: OrgDetail,
hidden: true
},
{
path: 'boardManage',
component: BoardManage,

View File

@ -208,6 +208,14 @@ export const UrlConfig = {
}
};
import CMD from './cmdPlugin/CommandEnum';
export function getOperateTypeMap(trainingType) {
const map = {};
let val;
for (val in CMD[trainingType]) {
map[CMD[trainingType][val].value] = CMD[trainingType][val].label;
}
return map;
}
export function getTrainingOperateTypeMap() {
const trainingOperateTypeMap = {
Switch: [],

View File

@ -9,7 +9,6 @@ const exam = {
totalTime: 0, // 考试总时间
timeInterval: null, // 计时器
ruleList: [], // 考试规则列表
courseDetail: {}, // 课程详情
courseList: [] // 课程列表
},
getters: {
@ -53,9 +52,6 @@ const exam = {
setRuleList: (state, ruleList) => {
state.ruleList = ruleList;
},
setCourseDetail: (state, courseDetail) => {
state.courseDetail = courseDetail;
},
setCourse: (state, courseList) => {
state.courseList = courseList;
},
@ -95,9 +91,6 @@ const exam = {
setRuleList({ commit }, ruleList) {
commit('setRuleList', ruleList);
},
setCourseDetail({ commit }, courseDetail) {
commit('setCourseDetail', courseDetail);
},
setCourse({ commit }, course) {
commit('setCourse', course);
},

View File

@ -59,7 +59,7 @@ const runPlan = {
trainList.forEach((train, j) => {
state.initialPlanData[service.serviceNumber].trainMap[`${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, right:train.right,
directionCode: train.directionCode, reentry: train.reentry, stationTimeList: train.stationTimeList, endSecondTime:train.endSecondTime,
startSecondTime: train.startSecondTime };
startSecondTime: train.startSecondTime, startSectionCode:train.startSectionCode, endSectionCode:train.endSectionCode };
});
});
}
@ -76,7 +76,7 @@ const runPlan = {
state.editData[service.serviceNumber].trainMap[`${train.tripNumber}`] =
{ oldIndex: j, tripNumber: train.tripNumber, directionCode: train.directionCode, right:train.right,
reentry: train.reentry, stationTimeList: train.stationTimeList, endSecondTime:train.endSecondTime,
startSecondTime: train.startSecondTime};
startSecondTime: train.startSecondTime, startSectionCode:train.startSectionCode, endSectionCode:train.endSectionCode };
});
});
}
@ -93,7 +93,7 @@ const runPlan = {
trainList.forEach((train, j) => {
state.draftEditData[service.serviceNumber].trainMap[`${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, right:train.right,
directionCode: train.directionCode, reentry: train.reentry, stationTimeList: train.stationTimeList, endSecondTime:train.endSecondTime,
startSecondTime: train.startSecondTime};
startSecondTime: train.startSecondTime, startSectionCode:train.startSectionCode, endSectionCode:train.endSectionCode };
});
});
}

View File

@ -20,7 +20,8 @@ const user = {
companyId: '',
companyAdmin: false,
companyName: '',
companyProject: ''
companyProjectList: [],
baseUrl:''
},
mutations: {
@ -60,8 +61,8 @@ const user = {
SET_COMPANYNAME: (state, companyName) => {
state.companyName = companyName;
},
SET_COMPANYPROJECT: (state, companyProject) => {
state.companyProject = companyProject;
SET_COMPANYPROJECTLIST: (state, companyProjectList) => {
state.companyProjectList = companyProjectList;
},
CLEAR_AUTO_PARAMS: () => {
Cookies.remove('UserDesignName');
@ -77,6 +78,9 @@ const user = {
},
Disconnect: ()=>{
disconnect();
},
setBaseUrl: (state, baseUrl) => {
state.baseUrl = baseUrl;
}
},
@ -135,7 +139,7 @@ const user = {
commit('SET_COMPANYID', user.companyId);
commit('SET_COMPANYADMIN', user.companyAdmin);
commit('SET_COMPANYNAME', user.companyName);
commit('SET_COMPANYPROJECT', user.projectCode);
commit('SET_COMPANYPROJECTLIST', user.projectCodes);
resolve(user);
}).catch(error => {
reject(error);
@ -204,6 +208,9 @@ const user = {
disconnect({commit}, params) {
commit('Disconnect', params);
removeToken();
},
setBaseUrl ({commit}, baseUrl) {
commit('setBaseUrl', baseUrl);
}
}
};

View File

@ -3,11 +3,11 @@ export const requestAnimationFrame = window.requestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function (callback) { callback.timter = window.setTimeout(callback, 1000 / 60); };
function (callback) { callback.timer = window.setTimeout(callback, 1000 / 60); };
export const cancelRequestAnimFrame = window.cancelAnimationFrame ||
window.webkitCancelRequestAnimationFrame ||
window.mozCancelRequestAnimationFrame ||
window.oCancelRequestAnimationFrame ||
window.msCancelRequestAnimationFrame ||
function (callback) { window.clearTimeout(callback); };
function (callback) { window.clearTimeout(callback.timer); };

View File

@ -2,7 +2,6 @@ export function getBaseUrl() {
let BASE_API;
if (process.env.NODE_ENV === 'development') {
// BASE_API = 'https://joylink.club/jlcloud';
// BASE_API = 'https://api.joylink.club/jlcloud';
BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.8.107:9000'; // 袁琪
// BASE_API = 'http://192.168.8.169:9000'; // 旭强

View File

@ -24,6 +24,12 @@ service.interceptors.request.use(config => {
if (getToken()) {
config.headers['X-Token'] = getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
}
// 用于/demo/index 文件中baseUrl 判断(后端要求不管本地还是正式,都要可以访问实训/临时使用)
if (store.state.user.baseUrl) {
config.baseURL = store.state.user.baseUrl;
}
if (config.time) {
config.timeout = config.time; // 让每个请求携带自定义token 请根据实际情况自行修改
}

View File

@ -99,6 +99,7 @@ import md5 from 'js-md5';
import QrcodeVue from 'qrcode.vue';
import { getLoginWmurl, checkLoginStatus } from '@/api/login';
import { LoginParams } from '@/utils/login';
// import {setSessionStorage } from '@/utils/auth';
export default {
components: { QrcodeVue },
data() {
@ -121,17 +122,30 @@ export default {
tipsMsg: '',
pwdDisplay: true,
trainingList: [
// {
// title: '(TA1601)',
// id: '613144'
// },
// {
// title: '(W0304)',
// id: '612112'
// },
// {
// title: '(S0304-S0301)',
// id: '610065'
// }
{
title: '区段封锁(TA1601)',
id: '613144'
title: '站台扣车(车站五05-下行站台)',
id: '4991355'
},
{
title: '道岔封锁(W0304)',
id: '612112'
title: '道岔封锁(W0904)',
id: '4993548'
},
{
title: '进路选排(S0304-S0301)',
id: '610065'
title: '进路选排(S0916-S0901)',
id: '4991607'
}
],
loginForm: {
@ -167,7 +181,7 @@ export default {
this.loading = false;
} else {
this.show = false;
this.src = 'http://localhost:9527/cbtc/trainingPlatform';
this.src = 'https://test.joylink.club/cbtc/trainingPlatform';
this.$nextTick(_ => {
if (result.type == 'DEMO_RESULT' && result.hasOwnProperty('score')) {
this.$confirm(`得分:${result.score}`, '结果', {
@ -188,12 +202,17 @@ export default {
},
destroyed() {
window.removeEventListener('message');
this.$store.dispatch('setBaseUrl', '');
},
methods: {
doClick(el) {
if (this.token && this.userId) {
// &noPreLogout=true
this.src = `http://localhost:9527/cbtc/demoTraining/teach?lessonId=195&mapId=59&lineCode=02&prdType=01&trainingId=${el.id}&token=${this.token}`;
// window.location.origin +
// setSessionStorage('project', 'DEFAULT');
// lessonId=101&mapId=49&prdType=01
// lessonId=195&mapId=59&lineCode=02&prdType=01
this.src = `https://test.joylink.club/cbtc/demoTraining/teach?lessonId=101&mapId=49&lineCode=02&prdType=01&trainingId=${el.id}&token=${this.token}&project=DEFAULT`;
this.loading = true;
setTimeout(()=>{
this.show = true;
@ -209,6 +228,8 @@ export default {
},
loginRefresh() {
// this.loadingCode = true;
// this.$store.dispatch('setBaseUrl', 'https://api.joylink.club/jlcloud');
this.$store.dispatch('setBaseUrl', 'https://test.joylink.club/jlcloud');
const self = this;
const params = LoginParams['LianKeTang'];
params.project = 'DEFAULT';
@ -253,6 +274,7 @@ export default {
//
self.clearTimer(self.checkLogin);
this.$store.dispatch('GetInfo', getToken()).then(res => {
// setSessionStorage('project', 'DEFAULT');
this.loginLoading = false;
this.dialogVisible = false;
this.token = getToken();
@ -280,6 +302,8 @@ export default {
// secret: "joylink"
this.$refs.loginForm.validate(valid => {
if (valid) {
// this.$store.dispatch('setBaseUrl', 'https://api.joylink.club/jlcloud');
this.$store.dispatch('setBaseUrl', 'https://test.joylink.club/jlcloud');
const model = Object.assign({}, this.loginForm);
model.password = md5(model.password);
model.type = 'class';
@ -289,6 +313,7 @@ export default {
this.$store.dispatch('Login', model).then(() => {
this.$store.dispatch('SetAccount', model.username);
this.$store.dispatch('GetInfo', getToken()).then(res => {
// setSessionStorage('project', 'DEFAULT');
this.loginLoading = false;
this.dialogVisible = false;
this.token = getToken();
@ -345,6 +370,7 @@ export default {
}
},
quit() {
this.$store.dispatch('setBaseUrl', '');
this.$store.dispatch('LogOut').then(() => {
location.reload(); // vue-router bug
});

View File

@ -161,6 +161,7 @@ export default {
this.loadInitData();
},
async enterIntegratedSimulation() {
this.disabled = true;
const data = { mapId: this.courseModel.mapId, prdType: this.currentPrdType };
createSimulationNew(data).then(resp => {
const query = { lineCode: this.courseModel.lineCode, group: resp.data, mapId: this.courseModel.mapId};

View File

@ -1,16 +1,16 @@
<template>
<div class="joylink-card">
<div class="examDetailName">
{{ $t('exam.courseName') + ': '+ courseModel.name }}
试卷列表
</div>
<div id="examDetail">
<el-tabs
v-model="activeName"
class="examDetailActive"
>
<el-tab-pane :label="this.$t('exam.itemList')" name="first" class="examDetailPane">
<div v-if="courseModel.treeList.length != 0" style="height:100%;overflow:auto;">
<el-table :data="courseModel.treeList" border style="width: 100%;">
<!--<el-tabs-->
<!--v-model="activeName"-->
<!--class="examDetailActive"-->
<!--&gt;-->
<!--<el-tab-pane :label="this.$t('exam.itemList')" name="first" class="examDetailPane">-->
<div style="height:100%;overflow:auto;">
<el-table :data="tableData" border style="width: 100%;">
<el-table-column label="试卷名称">
<template slot-scope="scope">
<span :style="{color: scope.row.trial||valid ?'green':'black'}">{{ scope.row.name }}</span>
@ -34,50 +34,38 @@
</el-table-column>
</el-table>
</div>
<div v-else class="noList">
{{ $t('global.temporarilyNoData') }}
</div>
</el-tab-pane>
<el-tab-pane :label="this.$t('exam.permissionsDetails')" name="second" class="examDetailPane">
<limit-list ref="limitList" :course-model="courseModel" style="height:100%;overflow:auto;" @initLoadPage="loadInitPage" />
</el-tab-pane>
</el-tabs>
<!--</el-tab-pane>-->
<!--<el-tab-pane :label="this.$t('exam.permissionsDetails')" name="second" class="examDetailPane">-->
<!--<limit-list ref="limitList" :course-model="courseModel" style="height:100%;overflow:auto;" @initLoadPage="loadInitPage" />-->
<!--</el-tab-pane>-->
<!--</el-tabs>-->
</div>
<div class="btn-buy">
<!-- <el-button v-if="!isLocal" :disabled="disabled" type="success" @click="buy">{{ $t('exam.buy') }}</el-button> -->
<el-button v-if="hasPermssion && !isLocal" :disabled="disabled" type="primary" @click="distribute">{{ $t('exam.distributePermission') }}</el-button>
<el-button v-if=" isAdmin&& !$route.query.noPreLogout && !courseModel.systemFault" :disabled="disabled" type="primary" @click="checkCourse">{{ $t('exam.viewCoursePapers') }}</el-button>
<el-button v-if="!$route.query.noPreLogout" type="primary" :disabled="disabled" @click="backLessonList">{{ $t('exam.returnCourseList') }}</el-button>
<!--<el-button v-if="hasPermssion && !isLocal" :disabled="disabled" type="primary" @click="distribute">{{ $t('exam.distributePermission') }}</el-button>-->
<!--<el-button v-if="!$route.query.noPreLogout" type="primary" :disabled="disabled" @click="backLessonList">{{ $t('exam.returnCourseList') }}</el-button>-->
<el-button v-if="$route.query.noPreLogout" type="primary" :disabled="disabled" @click="quit">退出</el-button>
</div>
</div>
</template>
<script>
import { getCourseLessonDetail } from '@/api/management/exam';
import { PermissionType } from '@/scripts/ConstDic';
import { getExamListByMapIdAndPrdType } from '@/api/management/exam';
// import { PermissionType } from '@/scripts/ConstDic';
import { UrlConfig } from '@/scripts/ConstDic';
import LimitList from '@/views/components/limits/index';
// import LimitList from '@/views/components/limits/index';
import { getSessionStorage } from '@/utils/auth';
import localStore from 'storejs';
import { superAdmin, admin } from '@/router/index';
export default {
name: 'ExamDetailView',
components: {
LimitList
},
// components: {
// LimitList
// },
data() {
return {
disabled: false,
courseModel: {
id: '',
name: this.$t('rules.lessonInput'),
price: 0,
remarks: '',
detail: [],
pmsList: [],
treeList: []
},
tableData: [],
EffectiveTypeList: [],
activeName: 'first',
expandList: [],
@ -88,19 +76,6 @@ export default {
isGzbShow() {
return getSessionStorage('project').startsWith('gzb');
},
hasPermssion() {
let isShow = false;
if (this.courseModel.pmsList && this.courseModel.pmsList.length) {
let count = 0;
this.courseModel.pmsList.forEach(element => {
count += element.remains;
});
if (count > 0) {
isShow = true;
}
}
return this.$store.state.user.companyId || isShow;
},
isLocal() { //
return process.env.VUE_APP_PRO === 'local';
},
@ -121,30 +96,16 @@ export default {
},
methods: {
loadInitPage() {
getCourseLessonDetail({lessonId: this.$route.query.lessonId}).then(resp =>{
if (resp.data) {
this.courseModel = {
id: resp.data.id,
name: resp.data.name,
pmsList: resp.data.permissionList || [],
prdType: resp.data.prdType,
mapId: resp.data.mapId,
PermissionType: PermissionType.EXAM,
treeList: resp.data.examDefinitionList,
systemFault: resp.data.systemFault
};
if (this.hasPermssion || resp.data.available) {
this.valid = true;
getExamListByMapIdAndPrdType(this.$route.query.mapId, this.$route.query.prdType).then(resp =>{
if (resp.data && resp.data.length) {
this.tableData = resp.data;
}
}
this.getExpandList(this.courseModel.id);
}).catch(()=>{
this.$alert('获取考试信息失败!', '提示', {
confirmButtonText: '确定',
type: 'error',
center: true,
callback: action => {
this.backLessonList();
}
});
});
@ -159,15 +120,6 @@ export default {
// }, 100);
this.$messageBox(this.$t('global.buyingTips'));
},
checkCourse() {
this.loading = true;
const path = `${this.$route.path.match(/(\/.*)\/course/)[1]}${UrlConfig.examRuleManage}`;
this.$router.push({
path: path,
query: { lessonId: this.courseModel.id },
noPreLogout: this.$route.query.noPreLogout
});
},
distribute() { //
this.disabled = true;
if (this.$refs) {
@ -176,36 +128,12 @@ export default {
}
this.disabled = false;
},
backLessonList() {
this.disabled = true;
setTimeout(() => {
localStore.remove('examDetail' + this.$route.params.subSystem);
this.$router.push({ path: `${UrlConfig.trainingPlatform.examHome}/${this.$route.params.subSystem}`});
}, 100);
},
clickEvent(obj) {
const path = `${this.$route.path.match(/(\/.*)\/course/)[1]}${UrlConfig.examDetail}`;
if ((this.valid || obj.trial) && path.includes('device')) {
this.$router.replace({ path: `${path}/${obj.id}`, query: { subSystem: this.$route.params.subSystem, mapId: this.courseModel.mapId, noPreLogout: this.$route.query.noPreLogout }});
} else if (this.valid || obj.trial) {
this.$router.push({ path: `${path}/${obj.id}`, query: { subSystem: this.$route.params.subSystem, mapId: this.courseModel.mapId, noPreLogout: this.$route.query.noPreLogout }});
if (path.includes('device')) {
this.$router.replace({ path: `${path}/${obj.id}`, query: { subSystem: this.$route.params.subSystem, mapId: obj.mapId, prdType: obj.prdType, noPreLogout: this.$route.query.noPreLogout }});
} else {
this.confirmToBuy();
}
},
confirmToBuy() {
this.$confirm(this.$t('tip.accessCourseNo'), this.$t('tip.hint'), {
confirmButtonText: this.$t('tip.confirm'),
cancelButtonText: this.$t('tip.cancel')
}).then(() => {
this.buy();
}).catch(() => { });
},
getExpandList(id) {
let expand = getSessionStorage('trainingExamExpandList' + id);
expand = expand ? (expand + '').split(',') : '';
if (expand instanceof Array) {
this.expandList = expand;
this.$router.push({ path: `${path}/${obj.id}`, query: { subSystem: this.$route.params.subSystem, mapId: obj.mapId, noPreLogout: this.$route.query.noPreLogout }});
}
},
quit() {

View File

@ -216,9 +216,9 @@ export default {
this.disabled = true;
setTimeout(() => {
if (this.$route.query.subSystem) {
this.$router.push({ path: `${UrlConfig.trainingPlatform.course}/${this.$route.query.subSystem}`, query: {lessonId: this.examDetails.lessonId}});
this.$router.push({ path: `${UrlConfig.trainingPlatform.examHome}/${this.$route.query.subSystem}`, query: {lessonId: this.examDetails.lessonId}});
} else {
this.$router.replace({ path: '/device/course', query: {lessonId: this.examDetails.lessonId, noPreLogout: this.$route.query.noPreLogout}});
this.$router.replace({ path: '/device/course', query: {mapId: this.$route.query.mapId, prdType: this.$route.query.prdType, noPreLogout: this.$route.query.noPreLogout}});
}
}, 100);
},

View File

@ -6,21 +6,29 @@
</div>
</el-card>
<el-card v-loading="loading">
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="name" :label="this.$t('exam.courseName')" />
<el-row style="padding: 10px;display: flex;align-items: center;justify-content: flex-end;">
<div style="font-size: 14px;color: #000;">试卷名称</div>
<el-input v-model="inputName" size="small" style="width: 200px;margin-right: 50px;margin-left: 10px;" placeholder="请输入筛选的名称" @change="changeInput" />
<el-button size="small" type="primary" @click="goToFilter">查找</el-button>
</el-row>
<el-table ref="filterTable" :data="filterTableData" border style="width: 100%" height="calc(100vh - 150px)">
<el-table-column prop="name" label="试卷名称" />
<el-table-column v-if="isGzbShow" prop="classNames" label="所属班级">
<template slot-scope="scope">
<el-tag v-for="(item, index) in scope.row.classNames" :key="index" type="success">{{ item }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="remarks" show-overflow-tooltip :label="this.$t('exam.courseDescription')" />
<el-table-column prop="duration" label="考试时长(分钟)">
<template slot-scope="scope">
<span>{{ Number(scope.row.duration) / 60 }}</span>
</template>
</el-table-column>
<el-table-column prop="fullPoint" label="总分" />
<el-table-column prop="remarks" show-overflow-tooltip label="试卷说明" />
<el-table-column :label="this.$t('global.operate')">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="goLesson(scope.row)">
{{ $t('exam.enterTheExam') }}
</el-button>
<el-button v-if="project.endsWith('gzb') && isTeacher && userId === scope.row.creatorId" size="mini" type="danger" @click="handleDelete(scope.row)">
删除课程
<el-button size="mini" type="primary" @click="goExamDetail(scope.row)">
考试详情
</el-button>
</template>
</el-table-column>
@ -32,7 +40,6 @@
<script>
import { getSubSystemDetail } from '@/api/trainingPlatform';
import { UrlConfig } from '@/scripts/ConstDic';
import { forceDeleteLesson } from '@/api/jmap/lesson';
import { getSessionStorage } from '@/utils/auth';
import { lessonCreater } from '@/router/index';
import localStore from 'storejs';
@ -42,10 +49,12 @@ export default {
data() {
return {
tableData: [],
filterTableData: [],
loading: false,
project: '',
isTeacher: false,
userId: ''
userId: '',
inputName: ''
};
},
computed: {
@ -69,10 +78,12 @@ export default {
if (this.$route.params.subSystem) {
getSubSystemDetail(this.$route.params.subSystem).then(resp =>{
if (resp.data) {
this.tableData = resp.data.lessonList;
this.tableData = resp.data.examList;
} else {
this.tableData = [];
}
this.inputName = localStore.get(this.$route.path) || '';
this.goToFilter();
}).catch((error)=>{
if (error.code == 30001) {
const url = localStore.get('orignalTrainingPlatformRoute' + this.$store.state.user.id + this.project);
@ -85,24 +96,28 @@ export default {
});
}
},
goLesson(row) {
localStore.set('examDetail' + this.$route.params.subSystem, `${UrlConfig.trainingPlatform.course}/${this.$route.params.subSystem}?lessonId=${row.id}`);
this.$router.push({ path: `${UrlConfig.trainingPlatform.course}/${this.$route.params.subSystem}`, query: {lessonId: row.id}});
goExamDetail(row) {
const path = `${this.$route.path.match(/(\/.*)\/examHome/)[1]}${UrlConfig.examDetail}`;
if (path.includes('device')) {
this.$router.replace({ path: `${path}/${row.id}`, query: { subSystem: this.$route.params.subSystem, mapId: row.mapId, noPreLogout: this.$route.query.noPreLogout }});
} else {
this.$router.push({ path: `${path}/${row.id}`, query: { subSystem: this.$route.params.subSystem, mapId: row.mapId, noPreLogout: this.$route.query.noPreLogout }});
}
},
handleDelete(row) {
this.$confirm('此操作将删除课程及所有对应的试卷,且无法恢复,是否继续?', this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'),
type: 'warning'
}).then(() => {
forceDeleteLesson(row.id).then(response => {
this.$message.success(this.$t('publish.deleteSuccess'));
this.loadInitPage();
}).catch((error) => {
this.loadInitPage();
this.$messageBox(this.$t('error.deleteFailed') + ':' + error.message);
changeInput(val) {
localStore.set(this.$route.path, val);
},
goToFilter() {
if (!this.inputName) {
this.filterTableData = [...this.tableData];
} else {
this.filterTableData = [];
this.tableData.forEach(item => {
if (item.name.includes(this.inputName)) {
this.filterTableData.push(item);
}
});
}).catch(() => { });
}
}
}
};

View File

@ -34,8 +34,8 @@
/>
</el-select>
</el-form-item>
<el-form-item v-if="form.mean === 'PRERESET'" label="关联区段">
<el-select v-model="form.sectionCode" placeholder="请选择">
<el-form-item v-if="form.mean === 'PRERESET'" label="关联区段" prop="sectionCode">
<el-select v-model="form.sectionCode" filterable placeholder="请选择">
<el-option
v-for="item in sectionList"
:key="item.code"
@ -54,7 +54,7 @@
</template>
<script>
import {getSectionListByStationCode, getSectionListByMapId } from '@/api/jmap/map';
import {getSectionListByCenStationCode, getSectionListByMapId } from '@/api/jmap/map';
export default {
name: 'ButtonDraft',
components: {
@ -94,6 +94,9 @@ export default {
],
buttonWidth: [
{ required: true, message: this.$t('ibp.enterTheButtonWidth'), trigger: 'blur' }
],
sectionCode: [
{ required: true, message: '请选择关联区段', trigger: 'blur' }
]
},
sectionList: []
@ -121,7 +124,7 @@ export default {
},
mounted() {
if (this.$route.query.stationCode) {
getSectionListByStationCode(this.$route.query.mapId, this.$route.query.stationCode).then(resp => {
getSectionListByCenStationCode(this.$route.query.mapId, this.$route.query.stationCode).then(resp => {
this.sectionList = resp.data;
console.log(resp.data);
}).catch(() => {

View File

@ -33,7 +33,7 @@
<script>
import { DeviceMenu } from '@/scripts/ConstDic';
import { removeSessionStorage } from '@/utils/auth';
import { getPublishMapListOnline, getStationListNeedAttendant } from '@/api/jmap/map';
import { getPublishMapListOnline, getStationListNeedAttendant, getPublishMapInfo } from '@/api/jmap/map';
export default {
name: 'UserMapList',
@ -58,7 +58,7 @@ export default {
mapPublishList: [],
pageTreeMap: {
'01': [],
'114': [
'49': [
{
// 线 线 线 线
name: '电力监控系统',
@ -279,6 +279,12 @@ export default {
mode: 'afc02',
id: 'afcOne02',
type: 'interface'
},
{
name: '站台层',
mode: 'afc02',
id: 'afcTwo02',
type: 'interface'
}
]
}
@ -321,10 +327,28 @@ export default {
type: 'interface'
},
{
name: '站厅层公共区段',
name: '站厅层C端',
mode: 'fas02',
id: 'stationHallFour',
type: 'interface'
},
{
name: '站厅层D端',
mode: 'fas02',
id: 'stationHallFive',
type: 'interface'
},
{
name: '站厅层E端',
mode: 'fas02',
id: 'stationHallSix',
type: 'interface'
},
{
name: '站厅层F端',
mode: 'fas02',
id: 'stationHallSeven',
type: 'interface'
}
]
},
@ -928,7 +952,9 @@ export default {
case 'system' :
break;
case 'interface':
this.$router.push({ path: `/iscs/design/edit`, query: {mode: obj.mode, system: data.parent.data.id, part: obj.id, mapId: this.mapId} });
getPublishMapInfo(this.mapId).then(resp => {
this.$router.push({ path: `/iscs/design/edit`, query: {mode: obj.mode, system: data.parent.data.id, part: obj.id, mapId: this.mapId, lineCode: resp.data.lineCode} });
});
break;
}
},

View File

@ -22,12 +22,12 @@
<el-form-item label="选中文字颜色:" prop="textColorActive">
<el-color-picker v-model="form.textColorActive" size="small" />
</el-form-item>
<!-- <el-form-item label="背景颜色:" prop="textColor">
<el-form-item label="背景颜色:" prop="textColor">
<el-color-picker v-model="form.fillColor" size="small" />
</el-form-item>
<el-form-item label="选中背景颜色:" prop="textColor">
<el-color-picker v-model="form.fillColorActive" size="small" />
</el-form-item> -->
</el-form-item>
<el-form-item label="文字大小:" prop="fontSize">
<el-input-number v-model="form.fontSize" size="small" controls-position="right" :min="1" />
</el-form-item>
@ -90,9 +90,9 @@ export default {
context: '',
function: '',
textColor: '',
// fillColor: '#D1C2C2',
// fillColorActive: '#847b7b',
textColorActive: '#000'
textColorActive: '#000',
fillColor: 'rgba(0,0,0,0)',
fillColorActive: 'rgba(0,0,0,0)'
},
rules: {
context: [
@ -127,6 +127,8 @@ export default {
this.form.fontSize = model.fontSize;
this.form.textColor = model.textColor || '#fff';
this.form.textColorActive = model.textColorActive || '#000';
this.form.fillColor = model.fillColor;
this.form.fillColorActive = model.fillColorActive;
}
}
},
@ -134,6 +136,8 @@ export default {
if (this.$route.query.lineCode == '02') {
this.functionList = [
{label: '操作按钮', value: 'OperatingButton'},
{label: '门禁站台层', value: 'goToStand'},
{label: '门禁站厅层', value: 'goToStation'},
{label: '元素显隐', value: 'ElementShow'},
{label: '返回', value: 'GoBack'}
];
@ -169,7 +173,9 @@ export default {
function: this.form.function,
fontSize: this.form.fontSize,
textColor: this.form.textColor,
textColorActive: this.form.textColorActive
textColorActive: this.form.textColorActive,
fillColor: this.form.fillColor,
fillColorActive: this.form.fillColorActive
};
this.$emit('createDataModel', rectModel);
this.initPage();
@ -190,7 +196,9 @@ export default {
verticalPadding: this.form.verticalPadding,
context: this.form.context,
function: this.form.function,
fontSize: this.form.fontSize
fontSize: this.form.fontSize,
fillColor: this.form.fillColor,
fillColorActive: this.form.fillColorActive
};
this.$emit('deleteDataModel', rectModel);
},
@ -209,7 +217,9 @@ export default {
context: '',
function: '',
textColor: '',
textColorActive: '#000'
textColorActive: '#000',
fillColor: '',
fillColorActive: ''
};
}
}

View File

@ -5,7 +5,7 @@
<el-input-number v-model="form.z2" controls-position="right" :min="0" size="small" />
</el-form-item>
<el-form-item label="线段宽度:" prop="lineWidth">
<el-input-number v-model="form.lineWidth" controls-position="right" :min="0" :max="50" size="small" />
<el-input-number v-model="form.lineWidth" controls-position="right" :min="0" :max="1000" size="small" />
</el-form-item>
<el-form-item label="类型:" prop="type">
<el-select v-model="form.classify" placeholder="请选择类型" size="small">
@ -13,9 +13,9 @@
<el-option label="虚线:" value="dashed" />
</el-select>
</el-form-item>
<el-form-item label="是否线段颜色渐变:">
<el-checkbox v-model="form.isFillGradual" size="small" />
</el-form-item>
<!--<el-form-item label="是否线段颜色渐变:">-->
<!--<el-checkbox v-model="form.isFillGradual" size="small" />-->
<!--</el-form-item>-->
<el-form-item label="是否渐变:">
<el-checkbox v-model="form.isGradual" size="small" />
</el-form-item>
@ -140,7 +140,7 @@ export default {
classify:'solid',
code: '',
z2: 0,
isFillGradual: false,
// isFillGradual: false,
lineWidth: '',
fillColor: '#fff',
fillBackground: '',
@ -182,7 +182,7 @@ export default {
this.isUpdate = true;
this.form.code = model.code;
this.form.z2 = model.z2 || 0;
this.form.isFillGradual = model.isFillGradual || false;
// this.form.isFillGradual = model.isFillGradual || false;
this.form.lineWidth = model.lineWidth;
this.form.fillColor = model.fillColor;
this.form.fillBackground = model.fillBackground || '';
@ -216,7 +216,7 @@ export default {
code: this.isUpdate ? this.form.code : getUID('IscsLine', this.iscs.iscsLineList),
_type: 'IscsLine',
z2: this.form.z2,
isFillGradual: this.form.isFillGradual,
// isFillGradual: this.form.isFillGradual,
lineWidth: this.form.lineWidth,
fillColor: this.form.fillColor,
fillBackground: this.form.fillBackground,
@ -267,7 +267,7 @@ export default {
this.form = {
code: '',
lineWidth: '',
isFillGradual: false,
// isFillGradual: false,
fillColor: '#fff',
fillBackground: '',
arrowShow: 'none',

View File

@ -60,8 +60,8 @@ export default {
{ name: '车尾', value: 'psdRight' },
{ name: '车厢', value: 'psdSystem' },
{ name: '人防门', value: 'envPersonDoor'},
{ name: '色FIRE', value: 's'},
{ name: '色FIRE', value: 'a'},
{ name: '报警按钮蓝', value: 's'},
{ name: '报警按钮红', value: 'a'},
{ name: 'APF', value: 'APF'},
{ name: '手动阀', value: 'hand'},
{ name: '蓝色-阀门', value: 'fmBlue'},
@ -100,7 +100,40 @@ export default {
{ name: '烟杆传感器', value: 'iscsSensor' },
{ name: '抵挡图', value: 'iscsDangwei' },
{ name: '地变图', value: 'iscsDibian' },
{ name: 'PT1', value: 'iscsPt1' }
{ name: 'PT1', value: 'iscsPt1' },
{ name: '受检左侧箭头', value: 'checkArrowLeft' },
{ name: '受检右侧箭头', value: 'checkArrowRight' },
{ name: '受检两侧箭头', value: 'checkArrowDouble' },
{ name: '受检流量累计', value: 'checkFlowCumulative' },
{ name: '受检正常', value: 'checkNormal' },
{ name: '受检售票', value: 'checkSell' },
{ name: '受检售票2', value: 'checkSell2' },
{ name: '站厅背景', value: 'bgShowRoom' },
{ name: '站台背景', value: 'bgStand' },
{ name: '站台A端背景', value: 'bgFasPlatformA' },
{ name: '站台B端背景', value: 'bgFasPlatformB' },
{ name: '环空电控', value: 'basAnnulus' },
{ name: '环控机控', value: 'basEnvironmental' },
{ name: '智能低压', value: 'basLowPressure' },
{ name: '接口机', value: 'basInterface' },
{ name: '实体机', value: 'basEntity' },
{ name: '烟感探测器红', value: 'smokeDetectorRed' },
{ name: '烟感探测器绿', value: 'smokeDetectorGreen' },
{ name: '烟感探测器蓝', value: 'smokeDetectorBlue' },
{ name: '防火阀红', value: 'fireDamperRed' },
{ name: '防火阀绿', value: 'fireDamperGreen' },
{ name: '防火阀蓝', value: 'fireDamperBlue' },
{ name: '温感器红', value: 'alarmLampRed' },
{ name: '温感器绿', value: 'alarmLampGreen' },
{ name: '温感器蓝', value: 'alarmLampBlue' },
{ name: '站厅A', value: 'bgStationA' },
{ name: '站厅B', value: 'bgStationB' },
{ name: '站厅C', value: 'bgStationC' },
{ name: '站厅D', value: 'bgStationD' },
{ name: '站厅E', value: 'bgStationE' },
{ name: '站厅F', value: 'bgStationF' },
{ name: '门禁站厅A', value: 'bgDoorStationA' },
{ name: '门禁站台A', value: 'bgDoorStandA' }
],
rules: {

View File

@ -75,7 +75,7 @@
<template v-for="(item, i) in addModel.columnWidthList">
<el-table-column :key="i" :label="'列'+(i + 1)" :prop="'column'+ (i + 1)" width="140px">
<template slot-scope="scope">
<el-input v-model="addModel.tableData[scope.$index]['column'+ (i + 1)]" size="small" />
<el-input v-model="addModel.tableData[scope.$index]['column'+ (i + 1)]" size="small" type="textarea" :rows="1" />
<div style="display:flex;justify-content:space-around;align-items: center;">
<div>背景</div>
<el-color-picker v-model="addModel.tableData[scope.$index]['bg'+(i+1)]" size="small" show-alpha />

View File

@ -1,11 +1,11 @@
<template>
<div style="overflow-y: scroll;height: calc(100% - 46px); width: 100%;">
<el-form ref="form" :rules="rules" :model="form" label-width="120px" style="width: 100%;padding: 10px 50px;">
<el-form-item label="code:" prop="code">
<!-- <el-form-item label="code:" prop="code">
<el-select v-model="form.code">
<el-option v-for="(item, index) in iscsTextList" :key="index" :label="item.code" :value="item.code" disabled />
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="文字内容:" prop="context">
<el-input v-model="form.context" type="textarea" size="small" />
</el-form-item>
@ -79,9 +79,9 @@ export default {
verticalPadding: 0
},
rules: {
code: [
{ required: true, message: '请输入文字编号', trigger: 'blur' }
],
// code: [
// { required: true, message: '', trigger: 'blur' }
// ],
context: [
{ required: true, message: '请输入文字内容', trigger: 'blur' }
],

View File

@ -1,6 +1,9 @@
<template>
<div style="overflow-y: scroll;height: calc(100% - 46px); width: 100%;">
<el-form ref="form" :rules="rules" :model="form" label-width="80px" style="width: 100%;padding: 10px 50px;">
<el-form-item label="图层:" prop="z2">
<el-input-number v-model="form.z2" controls-position="right" :min="0" size="small" />
</el-form-item>
<el-form-item label="宽度:" prop="width">
<el-input-number v-model="form.width" controls-position="right" :min="1" size="small" />
</el-form-item>
@ -33,6 +36,7 @@ export default {
data() {
return {
form:{
z2: '0',
code: '',
width: 100,
height: 40,
@ -59,6 +63,7 @@ export default {
this.showDeleteButton = true;
this.isUpdate = true;
this.form.code = model.code;
this.form.z2 = model.z2;
this.form.x = model.point.x;
this.form.y = model.point.y;
this.form.height = model.height;
@ -79,6 +84,7 @@ export default {
},
code: this.isUpdate ? this.form.code : getUID('AfcDoorUnite', this.iscs.arcDoorUniteList),
_type: 'AfcDoorUnite',
z2: this.form.z2,
rotationAngle: this.form.rotationAngle,
width: this.form.width,
height: this.form.height
@ -96,6 +102,7 @@ export default {
x: this.form.x,
y: this.form.y
},
z2: this.form.z2,
code: this.form.code,
_type: 'AfcDoorUnite',
rotationAngle: this.form.rotationAngle,
@ -110,6 +117,7 @@ export default {
this.showDeleteButton = false;
this.form = {
code: '',
z2: '0',
width: 100,
height: 40,
rotationAngle: 0,

View File

@ -25,6 +25,14 @@
@createDataModel="createDataModel"
@deleteDataModel="deleteDataModel"
/>
</el-tab-pane>
<el-tab-pane label="圆形" name="IscsCircle">
<iscs-circle
ref="iscsCircle"
style="width: 100%;height: 100%;"
@createDataModel="createDataModel"
@deleteDataModel="deleteDataModel"
/>
</el-tab-pane>
<el-tab-pane label="线段" name="IscsLine">
<iscs-line
@ -73,6 +81,14 @@
@createDataModel="createDataModel"
@deleteDataModel="deleteDataModel"
/>
</el-tab-pane>
<el-tab-pane label="图片" name="IscsPicture">
<iscs-picture
ref="iscsPicture"
style="width: 100%;height: 100%;"
@createDataModel="createDataModel"
@deleteDataModel="deleteDataModel"
/>
</el-tab-pane>
</el-tabs>
</el-card>
@ -87,8 +103,10 @@ import IscsRect from '../icscComponents/rect';
import IscsButton from '../icscComponents/button';
import OrdinaryDoor from '../iscsCommonElem/ordinaryDoor';
import FuzhouDoor from '../iscsCommonElem/fuzhouDoor';
import IscsPicture from '../icscComponents/picture';
import CommunicationButcher from '../iscsCommonElem/communicationButcher';
import AfcDoorUnite from './afcDoorUnite';
import IscsCircle from '../icscComponents/circle';
export default {
name: 'IscsOperate',
@ -99,8 +117,10 @@ export default {
IscsButton,
OrdinaryDoor,
FuzhouDoor,
IscsPicture,
CommunicationButcher,
AfcDoorUnite
AfcDoorUnite,
IscsCircle
},
mixins: [
],

View File

@ -1,7 +1,10 @@
<template>
<div style="overflow-y: scroll;height: calc(100% - 46px); width: 100%;">
<el-form ref="form" :rules="rules" :model="form" label-width="80px" style="width: 100%;padding: 10px 50px;">
<el-form-item label="门宽:" prop="height">
<el-form-item label="图层:" prop="z2">
<el-input-number v-model="form.z2" controls-position="right" :min="1" size="small" />
</el-form-item>
<el-form-item label="门宽:" prop="width">
<el-input-number v-model="form.width" controls-position="right" :min="1" size="small" />
</el-form-item>
<el-form-item label="X轴坐标:">
@ -28,6 +31,7 @@ export default {
return {
form:{
code: '',
z2: 0,
width: 20,
x: 10,
y: 10
@ -51,6 +55,7 @@ export default {
this.showDeleteButton = true;
this.isUpdate = true;
this.form.code = model.code;
this.form.z2 = model.z2;
this.form.x = model.point.x;
this.form.y = model.point.y;
this.form.width = model.width;
@ -69,6 +74,7 @@ export default {
},
code: this.isUpdate ? this.form.code : getUID('FuzhouDoor', this.iscs.fuzhouDoorList),
_type: 'FuzhouDoor',
z2: this.form.z2,
width: this.form.width
};
this.$emit('createDataModel', model);
@ -86,6 +92,7 @@ export default {
},
code: this.form.code,
_type: 'FuzhouDoor',
z2: this.form.z2,
width: this.form.width
};
this.$emit('deleteDataModel', model);
@ -97,6 +104,7 @@ export default {
this.form = {
code: '',
width: 20,
z2: 0,
x: 10,
y: 10
};

View File

@ -1,6 +1,9 @@
<template>
<div style="overflow-y: scroll;height: calc(100% - 46px); width: 100%;">
<el-form ref="form" :rules="rules" :model="form" label-width="80px" style="width: 100%;padding: 10px 50px;">
<el-form-item label="图层:" prop="z2">
<el-input-number v-model="form.z2" controls-position="right" size="small" />
</el-form-item>
<el-form-item label="类型:" prop="width">
<el-select v-model="form.doorType" placeholder="请选择">
<el-option
@ -41,6 +44,7 @@ export default {
return {
form:{
code: '',
z2: '',
doorType: '1',
r: 1,
rotationAngle: 0,
@ -72,6 +76,7 @@ export default {
this.showDeleteButton = true;
this.isUpdate = true;
this.form.code = model.code;
this.form.z2 = model.z2;
this.form.x = model.point.x;
this.form.y = model.point.y;
this.form.r = model.r;
@ -90,6 +95,7 @@ export default {
x: this.form.x,
y: this.form.y
},
z2: this.form.z2,
code: this.isUpdate ? this.form.code : getUID('OrdinaryDoor', this.iscs.ordinaryDoorList),
_type: 'OrdinaryDoor',
rotationAngle: this.form.rotationAngle,
@ -109,6 +115,7 @@ export default {
x: this.form.x,
y: this.form.y
},
z2: this.form.z2,
code: this.form.code,
_type: 'OrdinaryDoor',
rotationAngle: this.form.rotationAngle,
@ -123,6 +130,7 @@ export default {
this.showDeleteButton = false;
this.form = {
code: '',
z2: '',
doorType: '1',
r: 1,
rotationAngle: 0,

View File

@ -90,6 +90,7 @@ export default {
this.$store.dispatch('iscs/setIscsData', iscsData);
if (this.$route.query.group) {
this.$iscs.on('dblclick', this.onDblclick, this);
this.$iscs.on('click', this.onlclick, this);
}
},
onDblclick(em) {
@ -97,10 +98,30 @@ export default {
if (em.deviceType == 'IscsGroup') {
this.$iscs.iscsDevice[em.deviceModel.code].instance.hide();
this.$refs.valve.doShow(em.deviceModel);
} else if (em.deviceType == 'IscsButton') {
} else if (em.deviceType == 'IscsButton' && em.deviceModel.function != 'goToStand' && em.deviceModel.function != 'goToStation') {
this.$refs.protectReset.doShow(em.deviceModel);
}
},
onlclick(em) {
//
const query = {
stationName: this.$route.query.stationName,
stationId: this.$route.query.stationId,
group: this.$route.query.group,
mapId: this.$route.query.mapId,
lineCode:'02',
noPreLogout:this.$route.query.noPreLogout
};
let type = '';
if (em.deviceType == 'IscsButton' && em.deviceModel.function == 'goToStand') {
type = 'afcTwo02';
} else if (em.deviceType == 'IscsButton' && em.deviceModel.function == 'goToStation') {
type = 'afcOne02';
}
this.$router.replace({ path: `/displayIscs/system/stationConfig/${type}`, query: query });
},
//
handleViewLoaded() {
this.loading = false;
@ -126,7 +147,7 @@ export default {
}
},
setIscs(data, oldData) {
this.$iscs.setIscs(oldData, data, this.$route.query.mapId);
this.$iscs.setIscs(oldData, data, this.$route.query.lineCode);
},
//
handleModel(model) {

View File

@ -158,6 +158,8 @@ export default {
const data = JSON.parse(resp.data.graphData);
this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate);
document.querySelector('.Substation').scrollTop = 0;
} else {
this.loading = false;
}
});
}

View File

@ -0,0 +1,127 @@
<template>
<div v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.6)" style="width:100%;height:100%;">
<div class="fasIndex" :style="{'background':bacground}">
<div class="fasIndex_header">{{ title }}</div>
<div>
<iscsSystem ref="iscsPlate" />
</div>
<!-- <div class="psdSystem_footer">
<div class="prevButton">{{}}</div>
<div class="nextButton">{{}}</div>
</div> -->
</div>
</div>
</template>
<script>
import iscsSystem from '../canvas/iscsCanvas';
import {getIscsData} from '@/api/iscs';
export default {
name:'Fas',
components:{
iscsSystem
},
data() {
return {
title:'',
bacground:'rgba(66,90,116,1)',
loading:false,
width:window.innerWidth,
scaleRate:window.innerWidth / 2200,
height: 1000
};
},
computed:{
stationName() {
return this.$route.query.stationName;
},
stationId() {
return this.$route.query.stationId;
}
// height() {
// return 970;
// }
},
watch:{
$route() {
this.mode = this.$route.params.mode;
this.getInitData();
}
},
created() {
this.mode = this.$route.params.mode;
},
mounted() {
this.getInitData();
},
methods:{
getInitData() {
const params = {
// lineCode: this.$route.query.lineCode,
mapId: this.$route.query.mapId,
system: 'fas',
totalSystem :'fas02',
userInterface : this.mode
};
if (this.mode == 'gas') {
this.title = this.stationName + ' 气体灭火系统';
this.scaleRate = window.innerWidth / 1920;
this.height = 930;
} else if (this.mode == 'sensing') {
this.title = '';
this.scaleRate = window.innerWidth / 1920;
this.height = 800;
} else if (this.mode == 'section') {
this.title = this.stationName + ' 火灾报警系统 区间层';
this.scaleRate = window.innerWidth / 1920;
this.height = 900;
} else if (this.mode == 'linkage') {
this.title = this.stationName + ' 火灾报警系统 FAS联动';
this.scaleRate = window.innerWidth / 1920;
this.height = 900;
} else if (this.mode == 'stationHall') {
this.title = '';
params.userInterface = 'stationHallOne';
params.system = 'stationHall';
this.scaleRate = window.innerWidth / 1920;
this.height = 850;
} else if (this.mode == 'platform') {
params.userInterface = 'platformOne';
params.system = 'platform';
this.scaleRate = window.innerWidth / 1920;
this.height = 850;
}
this.loading = true;
this.$refs.iscsPlate.show({}, this.width, this.height, this.scaleRate);
getIscsData(params).then(resp=>{
if (resp.data) {
this.loading = false;
const data = JSON.parse(resp.data.graphData);
this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate);
document.querySelector('.fasIndex').scrollTop = 0;
} else {
this.loading = false;
}
});
}
}
};
</script>
<style lang="scss" scoped>
.fasIndex_header{
text-align: center;
margin-top: 15px;
color: #d8e9a5;
font-size: 25px;
}
.fasIndex{
display: inline-block;
width:100%;
height:100%;
overflow-x: hidden;
overflow-y: auto;
vertical-align: top;
}
.SubstationIn{
display: inline-block;
}
</style>

View File

@ -3,8 +3,11 @@
<psd-system v-if="mode=='psdSystem'" />
<substation v-else-if="mode=='substation'" />
<schedule v-else-if="mode=='schedule'" />
<normal v-else-if="mode=='environmentThree'" />
<normal v-else-if="mode=='environmentFour'" />
<normal v-else-if="mode.includes('environment')" />
<fas v-else-if="fasList.includes(mode)" />
<signal-system v-else-if="mode === 'signal'" />
<!-- environmentThree -->
<!-- <normal v-else-if="mode=='environmentFour'" />
<normal v-else-if="mode=='environmentFive'" />
<normal v-else-if="mode=='environmentSix'" />
<normal v-else-if="mode=='environmentSeven'" />
@ -13,8 +16,10 @@
<normal v-else-if="mode=='environmentTen'" />
<normal v-else-if="mode=='environmentThirteen'" />
<normal v-else-if="mode=='environmentEleven'" />
<normal v-else-if="mode=='environmentTwelve'" />
<big-screen v-else-if="mode === 'signal'" />
<normal v-else-if="mode=='environmentTwelve'" /> -->
<!-- <big-screen v-else-if="mode === 'signal'" /> -->
<!-- <big-screen v-else-if="mode === 'signal'" /> -->
<ticket-or-entrance v-else-if="mode === 'autoTicket'||mode === 'afcTwo02'||mode === 'afcOne02'" />
<!-- -->
</div>
</template>
@ -23,7 +28,11 @@ import PsdSystem from './psdSystem/index.vue';
import Substation from './powerMonitor/substation.vue';
import Normal from './environment/index.vue';
import Schedule from './schedule';
import BigScreen from '@/views/designPlatform/bigScreen';
import Fas from './fas/index.vue';
import SignalSystem from './signalSystem/index.vue';
// import BigScreen from '@/views/designPlatform/bigScreen';
import TicketOrEntrance from './ticketOrEntrance/index';
// import BigScreen from '@/views/designPlatform/bigScreen';
import { getSimulationInfoNew } from '@/api/simulation';
import { getByGroupStationList } from '@/api/jmap/map';
import { loadRunPlanData } from '@/utils/loaddata';
@ -33,12 +42,16 @@ export default {
PsdSystem,
Substation,
Normal,
BigScreen
// BigScreen,
SignalSystem,
Fas,
TicketOrEntrance
},
data() {
return {
mode: 'index',
deviceList: []
deviceList: [],
fasList:['sensing', 'gas', 'section', 'linkage', 'stationHall', 'platform']
};
},
computed: {

View File

@ -114,6 +114,8 @@ export default {
const data = JSON.parse(resp.data.graphData);
this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate);
document.querySelector('.Substation').scrollTop = 0;
} else {
this.loading = false;
}
});
}

View File

@ -48,6 +48,8 @@ export default {
if (resp.data) {
const data = JSON.parse(resp.data.graphData);
this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate);
} else {
this.loading = false;
}
});
}

View File

@ -0,0 +1,104 @@
<template>
<div v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.6)" style="width:100%;height:100%;">
<div class="fasIndex" :style="{'background':bacground}">
<div class="fasIndex_header">{{ title }}</div>
<div>
<iscsSystem ref="iscsPlate" />
</div>
<!-- <div class="psdSystem_footer">
<div class="prevButton">{{}}</div>
<div class="nextButton">{{}}</div>
</div> -->
</div>
</div>
</template>
<script>
import iscsSystem from '../canvas/iscsCanvas';
import {getIscsData} from '@/api/iscs';
export default {
name:'Fas',
components:{
iscsSystem
},
data() {
return {
title:'',
bacground:'rgba(66,90,116,1)',
loading:false,
width:window.innerWidth,
scaleRate:window.innerWidth / 2200,
height: 1000
};
},
computed:{
stationName() {
return this.$route.query.stationName;
},
stationId() {
return this.$route.query.stationId;
}
// height() {
// return 970;
// }
},
watch:{
$route() {
this.mode = this.$route.params.mode;
this.getInitData();
}
},
created() {
this.mode = this.$route.params.mode;
},
mounted() {
this.getInitData();
},
methods:{
getInitData() {
const params = {
// lineCode: this.$route.query.lineCode,
mapId: this.$route.query.mapId,
system: 'signalSystem',
totalSystem :'signalSystem02',
userInterface : this.mode
};
if (this.mode == 'signal') {
this.title = this.stationName + ' 信号系统';
this.scaleRate = window.innerWidth / 1920;
this.height = 900;
}
this.loading = true;
this.$refs.iscsPlate.show({}, this.width, this.height, this.scaleRate);
getIscsData(params).then(resp=>{
if (resp.data) {
this.loading = false;
const data = JSON.parse(resp.data.graphData);
this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate);
document.querySelector('.fasIndex').scrollTop = 0;
} else {
this.loading = false;
}
});
}
}
};
</script>
<style lang="scss" scoped>
.fasIndex_header{
text-align: center;
margin-top: 15px;
color: #d8e9a5;
font-size: 25px;
}
.fasIndex{
display: inline-block;
width:100%;
height:100%;
overflow-x: hidden;
overflow-y: auto;
vertical-align: top;
}
.SubstationIn{
display: inline-block;
}
</style>

View File

@ -0,0 +1,113 @@
<template>
<div v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.6)" style="width:100%;height:100%;">
<div class="fasIndex" :style="{'background':bacground}">
<div class="fasIndex_header">{{ title }}</div>
<div>
<iscsSystem ref="iscsPlate" />
</div>
</div>
</div>
</template>
<script>
import iscsSystem from '../canvas/iscsCanvas';
import {getIscsData} from '@/api/iscs';
export default {
name:'TicketOrEntrance',
components:{
iscsSystem
},
data() {
return {
title:'',
bacground:'rgba(66,90,116,1)',
loading:false,
width:window.innerWidth,
scaleRate:window.innerWidth / 2200,
height: 1000
};
},
computed:{
stationName() {
return this.$route.query.stationName;
},
stationId() {
return this.$route.query.stationId;
}
// height() {
// return 970;
// }
},
watch:{
$route() {
this.mode = this.$route.params.mode;
this.getInitData();
}
},
created() {
this.mode = this.$route.params.mode;
},
mounted() {
this.getInitData();
},
methods:{
getInitData() {
const params = {
// lineCode: this.$route.query.lineCode,
mapId: this.$route.query.mapId,
system: 'afc',
totalSystem :'afc02',
userInterface : this.mode
};
if (this.mode == 'autoTicket') {
this.title = this.stationName + ' 自动售检票系统';
this.scaleRate = window.innerWidth / 1920;
this.height = 800;
} else if (this.mode == 'afcTwo02') {
params.userInterface = 'afcTwo02';
params.system = 'entranceGuard';
this.title = this.stationName + ' 门禁系统 站台层';
this.scaleRate = window.innerWidth / 1920;
this.height = 800;
} else if (this.mode == 'afcOne02') {
params.userInterface = 'afcOne02';
params.system = 'entranceGuard';
this.title = this.stationName + ' 门禁系统 站厅层';
this.scaleRate = window.innerWidth / 1920;
this.height = 800;
}
this.loading = true;
this.$refs.iscsPlate.show({}, this.width, this.height, this.scaleRate);
getIscsData(params).then(resp=>{
if (resp.data) {
this.loading = false;
const data = JSON.parse(resp.data.graphData);
this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate);
document.querySelector('.fasIndex').scrollTop = 0;
} else {
this.loading = false;
}
});
}
}
};
</script>
<style lang="scss" scoped>
.fasIndex_header{
text-align: center;
margin-top: 15px;
color: #d8e9a5;
font-size: 25px;
}
.fasIndex{
display: inline-block;
width:100%;
height:100%;
overflow-x: hidden;
overflow-y: auto;
vertical-align: top;
}
.SubstationIn{
display: inline-block;
}
</style>

View File

@ -249,8 +249,8 @@ export default {
},
{
name: '门禁系统',
mode: 'entranceGuard',
id: 'entranceGuard',
mode: 'afcOne02',
id: 'afcOne02',
type: 'interface'
}
]},
@ -443,6 +443,7 @@ export default {
stationId: this.selectStation,
group: this.group,
mapId: this.$route.query.mapId,
lineCode:'02',
noPreLogout:this.$route.query.noPreLogout
};
if (isReplace) {

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
<template>
<div>
<div :id="iscsId" v-loading="loading" :style="{ width: canvasWidth +'px', height: canvasHeight +'px',background:'#45607B' }" class="iscs-canvas" />
<div :id="iscsId" v-loading="loading" :style="{ width: canvasWidth +'px', height: canvasHeight +'px',background:'#425a74' }" class="iscs-canvas" />
<el-button v-if="showBackButton" class="iscs-button" type="primary" @click="back">{{ $t('global.back') }}</el-button>
</div>
</template>
@ -126,8 +126,9 @@ export default {
// this.setIscs(parserData, data);
// this.$store.dispatch('iscs/setIscsData', data);
getIscsData(params).then(resp => {
// resp.data = {graphData: require('./data.json')}
if (resp.data) {
const data = JSON.parse(resp.data.graphData);
const data = resp.data.graphData instanceof Object ? resp.data.graphData : JSON.parse(resp.data.graphData);
const parserData = parser(data, {width: this.canvasWidth, height: this.canvasHeight});
this.setIscs(parserData, data);
this.$store.dispatch('iscs/setIscsData', data);
@ -179,7 +180,8 @@ export default {
} else if (this.selected._type != 'CheckBox') {
this.copyModel = this.copyModelInfo(this.selected, 10);
const type1 = this.selected._type.charAt(0).toLowerCase() + this.selected._type.slice(1);
this.copyModel.code = getUID(this.selected._type, this.iscs[type1 + 'List'] || []);
const list = this.iscs[type1 + 'List'] || [];
this.copyModel.code = getUID(this.selected._type, list);
} else {
this.copyModel = {};
}

File diff suppressed because it is too large Load Diff

View File

@ -65,14 +65,14 @@ export default {
config: {
data: []
}
},
generateType: {
type: 'select',
label: this.$t('lesson.automaticOrManual'),
config: {
data: [{ value: '02', label: this.$t('lesson.automatic') }, { value: '01', label: this.$t('lesson.manual') }]
}
}
// generateType: {
// type: 'select',
// label: this.$t('lesson.automaticOrManual'),
// config: {
// data: [{ value: '02', label: this.$t('lesson.automatic') }, { value: '01', label: this.$t('lesson.manual') }]
// }
// }
}
},
queryList: {

View File

@ -12,16 +12,6 @@
<el-form-item :label="$t('lesson.publishCourseName')" prop="name">
<el-input v-model="editModel.name" :disabled="!hasRelease" />
</el-form-item>
<el-form-item v-if="showClassSelect" label="课程所属班级:" prop="classIdList">
<el-select v-model="editModel.classIdList" multiple placeholder="请选择">
<el-option
v-for="item in calssList"
:key="item.departmentId"
:label="item.departmentName"
:value="item.departmentId"
/>
</el-select>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
@ -33,7 +23,6 @@
<script>
import { adminPublishLesson, releaseOrCancel } from '@/api/designPlatform';
import { getCompanyDeptInfo } from '@/api/company';
export default {
name: 'LessonPublish',
data() {
@ -47,8 +36,7 @@ export default {
name: '',
mapId: '',
prdType: '',
cityCode: '',
classIdList: []
cityCode: ''
}
};
},
@ -66,18 +54,12 @@ export default {
],
name: [
{ required: true, message: this.$t('rules.pleaseEnterMapName'), trigger: 'change' }
],
classIdList: [
{ required: true, message: '请选择课程归属班级', trigger: 'change' }
]
};
},
hasRelease() {
return this.$store.state.user.roles.includes('04') ||
this.$store.state.user.roles.includes('05') || this.$store.state.user.roles.includes('03');
},
showClassSelect() {
return this.$store.state.user.companyId && this.$store.state.user.companyAdmin;
}
},
methods: {
@ -87,17 +69,9 @@ export default {
name: model.name,
mapId: this.$route.query.mapId || this.$route.params.mapId,
prdType: model.prdType,
cityCode: model.cityCode,
classIdList: []
cityCode: model.cityCode
};
this.dialogShow = true;
if (this.showClassSelect) {
getCompanyDeptInfo(this.$store.state.user.companyId).then(resp => {
this.calssList = resp.data;
}).catch(() =>{
this.$message.error('获取班级数据失败!');
});
}
},
doClose() {
this.$refs.form.resetFields();
@ -129,7 +103,6 @@ export default {
this.loading = false;
}
});
}
}
};

View File

@ -29,7 +29,7 @@ export default {
'$route': function() {
},
'$store.state.map.mapViewLoadedCount': function (val) {
window.parent.postMessage(Object.assign({}, {type: 'DEMO_MAP_LOADED'}), 'http://localhost:9527/cbtc/demo');
window.parent.postMessage(Object.assign({}, {type: 'DEMO_MAP_LOADED'}), 'https://test.joylink.club/cbtc/demo');
}
},
async mounted() {
@ -58,7 +58,7 @@ export default {
}
},
exitSimulation(result = {}) {
window.parent.postMessage(Object.assign(result, {type: 'DEMO_RESULT'}), 'http://localhost:9527/cbtc/demo');
window.parent.postMessage(Object.assign(result, {type: 'DEMO_RESULT'}), 'https://test.joylink.club/cbtc/demo');
}
}
};

View File

@ -155,13 +155,16 @@ export default {
EventBus.$on('quitScene', () => {
this.practiceDisabled = false;
});
if (this.project) {
getPostByProjectCode(ProjectCode[this.project]).then(resp => {
if (resp.data) {
this.messageBoard = true;
}
}).catch(() => {
this.$message.error('获取留言板信息失败');
// this.$message.error('');
console.log('获取留言板信息失败');
});
}
},
methods:{
menuClick() {

View File

@ -7,18 +7,16 @@
</div>
<div class="display-draft" :style="{bottom: offsetBottom + 'px'}">
<el-button-group>
<el-button type="primary" class="back" @click="back">{{ $t('display.backBtn') }}</el-button>
<el-button type="danger" :disabled="!isDisable || dataError" @click="end">{{ $t('display.endBtn') }}</el-button>
<el-button type="success" :disabled="isDisable || dataError" :loading="startLoading" @click="start">{{ $t('display.startBtn') }}</el-button>
<el-button type="danger" :disabled="!isDisable || dataError" @click="end">{{ $t('display.endBtn') }}</el-button>
<el-button type="primary" class="back" @click="back">{{ $t('display.backBtn') }}</el-button>
</el-button-group>
</div>
<tip-exam-list :offset-bottom="offsetBottom" />
<!-- @refresh="refresh" -->
</div>
</template>
<script>
// import { getTrainingDetailNew } from '@/api/jmap/training';
import TipExamList from './tipExamList';
import { Notification } from 'element-ui';
import { startTrainingNew } from '@/api/jmap/training';

Some files were not shown because too many files have changed in this diff Show More