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 params
}); });
} }
/** 分页获取自己创建的班级 */ /** 查询班级列表不分页 */
export function getClassListPageSelf(params) { export function getClassListUnPage() {
return request({ return request({
url: `/api/company/paged/cls/self`, url: `/api/company/list/cls`,
method: 'get',
params
});
}
/** 查询个人创建的班级列表 */
export function getClassListUnPageSelf() {
return request({
url: `/api/company/list/cls/self`,
method: 'get' method: 'get'
}); });
} }
@ -235,21 +227,6 @@ export function createStudent(orgId, data) {
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) { export function createRule(data) {
return request({ return request({
@ -302,3 +279,25 @@ export function userRuleGetScore(orgId, schoolYear, term) {
method: 'get' 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({ return request({
url: '/api/lesson/paged/self', url: '/api/lesson/paged/byLoginProject',
method: 'get', method: 'get',
params params
}); });
} }
/** 获取自己发布课程列表不分页 */ /** 获取自己发布课程列表不分页 */
export function getLessonListsSelfNoPage() { export function getLessonProjectListNoPage(params) {
return request({ return request({
url: '/api/lesson/unPaged/self', url: '/api/lesson/list/byLoginProject',
method: 'get' method: 'get',
params
}); });
} }
/** 获取班级关联的自己发布的课程 */ /** 获取班级关联的自己发布的课程 */

View File

@ -271,3 +271,10 @@ export function getSectionListByMapId(id) {
method: 'get' 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 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'; import request from '@/utils/request';
/** 创建对应课程考题 */ /** 创建对应课程考题 */
export function setCourseList(data) { export function createExam(data) {
return request({ return request({
url: `/api/exam`, url: `/api/exam`,
method: 'post', method: 'post',
data: data 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) { 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) { export function updateExamRules(data) {
return request({ return request({
@ -93,19 +58,35 @@ export function updateExamRules(data) {
data: data data: data
}); });
} }
/** 查询本项目下自己创建的考试列表 */ /** 查询本项目下的考试列表 */
export function getExamListSelf(params) { export function getExamListProject(params) {
return request({ return request({
url: `/api/exam/paged/org/self`, url: `/api/exam/paged/loginProject`,
method: 'get', method: 'get',
params 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({ return request({
url: `/api/exam/list/org/self`, url: `/api/exam/list/org/self`,
method: 'get', method: 'get',
params 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) { export function getMapStationRunUser(mapId) {
return request({ 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) { export function listUserRoutingData(mapId) {
return request({ return request({
@ -165,9 +149,9 @@ export function listUserRoutingData(mapId) {
} }
/** 根据交路查询交路区段列表*/ /** 根据交路查询交路区段列表*/
export function querySectionListByRouting({ planId, routingCode }) { export function querySectionListByRouting(routingCode) {
return request({ return request({
url: `/api/runPlan/draft/${planId}/${routingCode}/routingSectionList`, url: `/api/runPlan/draft/${routingCode}/routingSectionList`,
method: 'get' method: 'get'
}); });
} }
@ -258,15 +242,6 @@ export function updatePlanTrip(data) {
/** 根据车次号查询交路 */ /** 根据车次号查询交路 */
export function getRoutingBySDTNumber(params) { export function getRoutingBySDTNumber(params) {
// 旧版
// return request({
// url: `/api/runPlan/draft/${params.planId}/routing`,
// method: 'get',
// params: {
// SDTNumber: params.SDTNumber
// }
// });
// 新版
return request({ return request({
url: `/api/runPlan/draft/${params.planId}/userRouting`, url: `/api/runPlan/draft/${params.planId}/userRouting`,
method: 'get', 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"> <el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required">
<template v-if="item.remote"> <template v-if="item.remote">
<el-select <el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]" v-model="formModel[item.prop]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
:disabled="item.disabled" :disabled="item.disabled"
@ -160,6 +161,7 @@
</template> </template>
<template v-else-if="item.allowCreate"> <template v-else-if="item.allowCreate">
<el-select <el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]" v-model="formModel[item.prop]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
:disabled="item.disabled" :disabled="item.disabled"
@ -179,6 +181,7 @@
</template> </template>
<template v-else-if="item.multiple"> <template v-else-if="item.multiple">
<el-select <el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]" v-model="formModel[item.prop]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
:disabled="item.disabled" :disabled="item.disabled"
@ -196,6 +199,7 @@
</template> </template>
<template v-else-if="item.change"> <template v-else-if="item.change">
<el-select <el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]" v-model="formModel[item.prop]"
filterable filterable
:clearable="!!item.clearable" :clearable="!!item.clearable"
@ -216,6 +220,7 @@
</template> </template>
<template v-else> <template v-else>
<el-select <el-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]" v-model="formModel[item.prop]"
filterable filterable
:no-data-text="item.noDataText?item.noDataText:'无数据'" :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')"> <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-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required" style="width: 100%;">
<el-date-picker <el-date-picker
:ref="'select_'+item.prop"
v-model="formModel[item.prop]" v-model="formModel[item.prop]"
align="right" align="right"
:type="item.type" :type="item.type"
@ -253,6 +259,7 @@
<template v-else-if="checkFieldType(item, 'time')"> <template v-else-if="checkFieldType(item, 'time')">
<el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required"> <el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required">
<el-time-select <el-time-select
:ref="'select_'+item.prop"
v-model="formModel[item.prop]" v-model="formModel[item.prop]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
:disabled="item.disabled" :disabled="item.disabled"
@ -263,6 +270,7 @@
<template v-else-if="checkFieldType(item, 'timePicker')"> <template v-else-if="checkFieldType(item, 'timePicker')">
<el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required"> <el-form-item :key="item.prop" :prop="item.prop" :label="item.label" :required="item.required">
<el-time-picker <el-time-picker
:ref="'select_'+item.prop"
v-model="formModel[item.prop]" v-model="formModel[item.prop]"
:placeholder="item.placeholder" :placeholder="item.placeholder"
:disabled="item.disabled" :disabled="item.disabled"
@ -410,6 +418,30 @@ export default {
if (item.deviceChange) { if (item.deviceChange) {
item.deviceChange(data); 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: '题库列表', bankManage: '题库列表',
practiceManage:'实操列表', practiceManage:'实操列表',
sceneManage:'场景列表', sceneManage:'场景列表',
companyManage: '单位管理', companyManage: '组织管理',
authorApply: '授权申请', authorApply: '授权申请',
AuthorList: '授权列表', AuthorList: '授权列表',
questionsRuleManage: '出题规则管理', questionsRuleManage: '出题规则管理',

View File

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

View File

@ -18,7 +18,7 @@ class Iscs {
this.methods = opts.methods; 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 = {}; this.iscsDevice = {};
@ -280,6 +280,9 @@ class Iscs {
case this.events.dblclick: case this.events.dblclick:
this.$mouseController.on(this.events.dblclick, cb, context); this.$mouseController.on(this.events.dblclick, cb, context);
break; break;
case this.events.click:
this.$mouseController.on(this.events.click, cb, context);
break;
case this.events.Contextmenu: case this.events.Contextmenu:
this.$mouseController.on(this.events.Contextmenu, cb, context); this.$mouseController.on(this.events.Contextmenu, cb, context);
break; break;
@ -303,6 +306,9 @@ class Iscs {
case this.events.dblclick: case this.events.dblclick:
this.$mouseController.off(this.events.dblclick, cb); this.$mouseController.off(this.events.dblclick, cb);
break; break;
case this.events.click:
this.$mouseController.off(this.events.click, cb);
break;
case this.events.Contextmenu: case this.events.Contextmenu:
this.$mouseController.off(this.events.Contextmenu, cb); this.$mouseController.off(this.events.Contextmenu, cb);
break; break;

View File

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

View File

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

View File

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

View File

@ -9,6 +9,7 @@ export default class OrdinaryDoor extends Group {
this.model = device.model; this.model = device.model;
this.zlevel = device.model.zlevel; this.zlevel = device.model.zlevel;
this.z = device.model.z; this.z = device.model.z;
this.z2 = device.model.z2;
this._type = device.model._type; this._type = device.model._type;
this._code = device.model.code; this._code = device.model.code;
this.create(); this.create();
@ -21,6 +22,7 @@ export default class OrdinaryDoor extends Group {
this.sector1 = new Sector({ this.sector1 = new Sector({
zlevel: this.zlevel, zlevel: this.zlevel,
z: this.z, z: this.z,
z2: this.z2||0,
shape: { shape: {
cx: 0, cx: 0,
cy: this.model.r, cy: this.model.r,
@ -56,6 +58,7 @@ export default class OrdinaryDoor extends Group {
this.sector2 = new Sector({ this.sector2 = new Sector({
zlevel: this.zlevel, zlevel: this.zlevel,
z: this.z, z: this.z,
z2: this.z2,
shape: { shape: {
cx: this.model.r * 2, cx: this.model.r * 2,
cy: this.model.r, cy: this.model.r,
@ -75,6 +78,7 @@ export default class OrdinaryDoor extends Group {
this.maskLine = new Line({ this.maskLine = new Line({
zlevel: this.zlevel, zlevel: this.zlevel,
z: this.z, z: this.z,
z2: this.z2,
shape: { shape: {
x1: 1, x1: 1,
y1: this.model.r, y1: this.model.r,
@ -92,6 +96,7 @@ export default class OrdinaryDoor extends Group {
this.bottomRect = new Rect({ this.bottomRect = new Rect({
zlevel: this.zlevel, zlevel: this.zlevel,
z: this.z, z: this.z,
z2: this.z2,
shape: { shape: {
x: 0, x: 0,
y: this.model.r, 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 iscsDangwei from '@/assets/iscs_picture/iscs-dangwei.png';
import iscsDibian from '@/assets/iscs_picture/iscs-dibian.png'; import iscsDibian from '@/assets/iscs_picture/iscs-dibian.png';
import iscsPt1 from '@/assets/iscs_picture/iscs-pt1.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 = { const pictureObj = {
'psdLeft': psdLeft, 'psdLeft': psdLeft,
@ -93,7 +126,40 @@ const pictureObj = {
iscsSensor, iscsSensor,
iscsDangwei, iscsDangwei,
iscsDibian, 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 { export default class Picture extends Group {
constructor(device) { constructor(device) {

View File

@ -36,6 +36,11 @@ export function deviceFactory(type, elem) {
export function parser(data) { export function parser(data) {
var iscsDevice = {}; var iscsDevice = {};
if (data) { 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 => { zrUtil.each(data.manualAlarmButtonList || [], elem => {
iscsDevice[elem.code] = deviceFactory(deviceType.ManualAlarmButton, elem); iscsDevice[elem.code] = deviceFactory(deviceType.ManualAlarmButton, elem);
}, this); }, this);
@ -204,7 +209,7 @@ export function parser(data) {
zrUtil.each(data.ordinaryDoorList || [], elem => { zrUtil.each(data.ordinaryDoorList || [], elem => {
iscsDevice[elem.code] = deviceFactory(deviceType.OrdinaryDoor, 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); iscsDevice[elem.code] = deviceFactory(deviceType.FuzhouDoor, elem);
}); });
zrUtil.each(data.communicationButcherList || [], elem => { zrUtil.each(data.communicationButcherList || [], elem => {

View File

@ -409,10 +409,10 @@ export default class ELines extends Group {
} }
setCrossBlock() { 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() { 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) { setCrossSpeedUpperLimit(speedLimit) {
this.crossSpeedText && this.crossSpeedText.setStyle({text:speedLimit, textFill: 'red' }); this.crossSpeedText && this.crossSpeedText.setStyle({text:speedLimit, textFill: 'red' });

View File

@ -7,34 +7,34 @@ const defaultConfig = {
/** 间隔高度*/ /** 间隔高度*/
multiple: 3, multiple: 3,
/** 偏移时间*/ /** 偏移时间*/
translation: 60 * 60 * 2, translation: 60 * 60 * 2
} };
class EqualDistanceParser { class EqualDistanceParser {
constructor() { constructor() {
} }
/** 加载配置*/ /** 加载配置*/
load(config = defaultConfig) { load(config = defaultConfig) {
this.config = config; this.config = config;
this.multiple = config.multiple; this.multiple = config.multiple;
this.translation = config.translation; this.translation = config.translation;
this.edge = config.edge; this.edge = config.edge;
return this; return this;
} }
/** 解析excel数据转换为Json后台数据*/ /** 解析excel数据转换为Json后台数据*/
importData(sheet, data) { importData(sheet, data) {
if (this.config && if (this.config &&
this.config.importData) { this.config.importData) {
this.config.importData(sheet, data) this.config.importData(sheet, data);
} else { } else {
console.info('no import data function'); console.info('no import data function');
} }
} }
/** 将后台数据解析成图表*/ /** 将后台数据解析成图表*/
convertDataToModels(data, stations, kmRangeMap, lineStyle) { convertDataToModels(data, stations, kmRangeMap, lineStyle) {
var models = []; var models = [];
if (data && data.serviceNumberDataList && data.serviceNumberDataList.length) { if (data && data.serviceNumberDataList && data.serviceNumberDataList.length) {
@ -74,12 +74,16 @@ class EqualDistanceParser {
/** 计算折返点车次坐标点集合*/ /** 计算折返点车次坐标点集合*/
if (!train.backup && train.reentry && service.tripNumberDataList[j + 1] && service.tripNumberDataList[j + 1].stationTimeList) { if (!train.backup && train.reentry && service.tripNumberDataList[j + 1] && service.tripNumberDataList[j + 1].stationTimeList) {
lastPoint = train.stationTimeList[idx]; const currentTimeList = service.tripNumberDataList[j].stationTimeList;
nextPoint = service.tripNumberDataList[j + 1].stationTimeList[0]; const nextTimeList = service.tripNumberDataList[j + 1].stationTimeList;
// ${train.directionCode} if (currentTimeList[currentTimeList.length - 1].secondTime != nextTimeList[0].secondTime) {
const aa = `${train.tripNumber}`; lastPoint = train.stationTimeList[idx];
opt.data.push([lastPoint.secondTime, this.getCoordYByElem(stations, kmRangeMap, lastPoint, pointdata.directionCode, true), lastPoint.stationCode, aa, '折返轨']); nextPoint = service.tripNumberDataList[j + 1].stationTimeList[0];
opt.data.push([nextPoint.secondTime, this.getCoordYByElem(stations, kmRangeMap, lastPoint, pointdata.directionCode, true), lastPoint.stationCode, aa, '折返轨']); // ${train.directionCode}
const aa = `${train.tripNumber}`;
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, '折返轨']);
}
} }
/** 如果是备用车,按车次添加线*/ /** 如果是备用车,按车次添加线*/
@ -232,11 +236,11 @@ class EqualDistanceParser {
/** 根据方向计算y折返偏移量*/ /** 根据方向计算y折返偏移量*/
getValueYByDirectionCode(defaultValue, directionCode) { getValueYByDirectionCode(defaultValue, directionCode) {
const sign = this.getReverse() ? -1 : 1; const sign = this.getReverse() ? -1 : 1;
if (directionCode === '1') { if (directionCode === '1') {
defaultValue -= sign*this.getEdge() / 2; defaultValue -= sign * this.getEdge() / 2;
} else if (directionCode === '2') { } else if (directionCode === '2') {
defaultValue += sign*this.getEdge() / 2; defaultValue += sign * this.getEdge() / 2;
} }
return defaultValue; return defaultValue;
@ -256,33 +260,33 @@ class EqualDistanceParser {
return defaultValue; return defaultValue;
} }
getMultiple() { getMultiple() {
return this.config.multiple; return this.config.multiple;
} }
getTranslation() { getTranslation() {
return this.config.translation return this.config.translation;
} }
getEdge(){ getEdge() {
return this.config.edge; return this.config.edge;
} }
getReverse() { getReverse() {
return this.config.reverse; return this.config.reverse;
} }
__createMartPoint(...args) { __createMartPoint(...args) {
return this.config.reverse ? createMartPointReverse(...args): createMartPoint(...args); return this.config.reverse ? createMartPointReverse(...args) : createMartPoint(...args);
} }
__createSeriesModel(...args) { __createSeriesModel(...args) {
return createSeriesModel(...args); return createSeriesModel(...args);
} }
__createMarkLineModels(...args) { __createMarkLineModels(...args) {
return createMarkLineModels(...args); return createMarkLineModels(...args);
} }
} }
export default EqualDistanceParser; export default EqualDistanceParser;

View File

@ -2,40 +2,40 @@ import { createSeriesModel, createMarkLineModels, createMartPoint, createMartPoi
import store from '@/store/index'; import store from '@/store/index';
const defaultConfig = { const defaultConfig = {
/** 最小时间*/ /** 最小时间*/
minTime: 0, minTime: 0,
/** 最大时间*/ /** 最大时间*/
maxTime: 3600 * 24 - 1, maxTime: 3600 * 24 - 1,
/** 边缘高度*/ /** 边缘高度*/
edge: 600, edge: 600,
/** 间隔高度*/ /** 间隔高度*/
multiple: 1, multiple: 1,
/** 偏移时间*/ /** 偏移时间*/
translation: 0, translation: 0
} };
class EqualRatioParser { class EqualRatioParser {
constructor() { constructor() {
} }
/** 加载配置*/ /** 加载配置*/
load(config = defaultConfig) { load(config = defaultConfig) {
this.config = config; this.config = config;
return this; return this;
} }
/** 解析excel数据转换为Json后台数据*/ /** 解析excel数据转换为Json后台数据*/
importData(sheet, data) { importData(sheet, data) {
if (this.config && if (this.config &&
this.config.importData) { this.config.importData) {
this.config.importData(sheet, data) this.config.importData(sheet, data);
} else { } else {
console.info('no import data function'); console.info('no import data function');
} }
} }
/** 将后台数据解析成图表*/ /** 将后台数据解析成图表*/
convertDataToModels(data, stations, kmRangeMap, lineStyle) { convertDataToModels(data, stations, kmRangeMap, lineStyle) {
var models = []; var models = [];
if (data && data.serviceNumberDataList && data.serviceNumberDataList.length) { if (data && data.serviceNumberDataList && data.serviceNumberDataList.length) {
/** 按服务遍历数据*/ /** 按服务遍历数据*/
@ -74,19 +74,23 @@ class EqualRatioParser {
// if (index == 0 && train.stationTimeList[index].stationCode != train.stationTimeList[index + 1].stationCode || // if (index == 0 && train.stationTimeList[index].stationCode != train.stationTimeList[index + 1].stationCode ||
// index == train.stationTimeList.length - 2 && train.stationTimeList[index].secondTime != train.stationTimeList[index + 1].secondTime || // index == train.stationTimeList.length - 2 && train.stationTimeList[index].secondTime != train.stationTimeList[index + 1].secondTime ||
// index > 0 && index < train.stationTimeList.length - 1) { // index > 0 && index < train.stationTimeList.length - 1) {
const aa = `${train.tripNumber}`; const aa = `${train.tripNumber}`;
opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeMap, elem, pointdata.directionCode, false), elem.stationCode, aa]); opt.data.push([elem.secondTime, this.getCoordYByElem(stations, kmRangeMap, elem, pointdata.directionCode, false), elem.stationCode, aa]);
// } // }
}); });
/** 计算折返点车次坐标点集合*/ /** 计算折返点车次坐标点集合*/
if (!train.backup && train.reentry && service.tripNumberDataList[j + 1] && service.tripNumberDataList[j + 1].stationTimeList) { if (!train.backup && train.reentry && service.tripNumberDataList[j + 1] && service.tripNumberDataList[j + 1].stationTimeList) {
lastPoint = train.stationTimeList[train.stationTimeList.length - 1]; const currentTimeList = service.tripNumberDataList[j].stationTimeList;
nextPoint = service.tripNumberDataList[j + 1].stationTimeList[0]; const nextTimeList = service.tripNumberDataList[j + 1].stationTimeList;
num = this.computedReentryNumber(train.tripNumber); if (currentTimeList[currentTimeList.length - 1].secondTime != nextTimeList[0].secondTime) {
const aa = `${train.tripNumber}`; lastPoint = train.stationTimeList[train.stationTimeList.length - 1];
opt.data.push([lastPoint.secondTime, this.getCoordYByElem(stations, kmRangeMap, lastPoint, pointdata.directionCode, true, num), lastPoint.stationCode, aa]); nextPoint = service.tripNumberDataList[j + 1].stationTimeList[0];
opt.data.push([nextPoint.secondTime, this.getCoordYByElem(stations, kmRangeMap, nextPoint, pointdata.directionCode, true, num), nextPoint.stationCode, aa]); num = this.computedReentryNumber(train.tripNumber);
const aa = `${train.tripNumber}`;
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]);
}
} }
/** 如果是备用车,按车次添加线*/ /** 如果是备用车,按车次添加线*/
@ -246,7 +250,7 @@ class EqualRatioParser {
/** 根据方向计算y折返偏移量*/ /** 根据方向计算y折返偏移量*/
getValueYByDirectionCode(defaultValue, directionCode, num) { getValueYByDirectionCode(defaultValue, directionCode, num) {
const sign = this.getReverse() ? -1 : 1; const sign = this.getReverse() ? -1 : 1;
if (directionCode === '1') { if (directionCode === '1') {
defaultValue -= sign * this.getEdge() / 2 * num; defaultValue -= sign * this.getEdge() / 2 * num;
} else if (directionCode === '2') { } else if (directionCode === '2') {
@ -270,33 +274,33 @@ class EqualRatioParser {
return defaultValue; return defaultValue;
} }
getMultiple() { getMultiple() {
return this.config.multiple; return this.config.multiple;
} }
getTranslation() { getTranslation() {
return this.config.translation return this.config.translation;
} }
getEdge(){ getEdge() {
return this.config.edge; return this.config.edge;
} }
getReverse() { getReverse() {
return this.config.reverse; return this.config.reverse;
} }
__createMartPoint(...args) { __createMartPoint(...args) {
return this.config.reverse ? createMartPointReverse(...args): createMartPoint(...args); return this.config.reverse ? createMartPointReverse(...args) : createMartPoint(...args);
} }
__createSeriesModel(...args) { __createSeriesModel(...args) {
return createSeriesModel(...args); return createSeriesModel(...args);
} }
__createMarkLineModels(...args) { __createMarkLineModels(...args) {
return createMarkLineModels(...args); return createMarkLineModels(...args);
} }
} }
export default EqualRatioParser; export default EqualRatioParser;

View File

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

View File

@ -145,7 +145,6 @@ const PreTheoryImport = () => import('@/views/competitionManage/bankList/preImpo
const PlanScheduleWicket = () => import('@/views/newMap/displayNew/demon/planSchedule'); const PlanScheduleWicket = () => import('@/views/newMap/displayNew/demon/planSchedule');
const MessageBoard = () => import('@/views/messageBoard/index'); const MessageBoard = () => import('@/views/messageBoard/index');
const BoardManage = () => import('@/views/messageBoard/manage'); const BoardManage = () => import('@/views/messageBoard/manage');
const DraftLessonManage = () => import('@/views/teach/draftLessonManage');
const OrganizationManage = () => import('@/views/organization/index'); const OrganizationManage = () => import('@/views/organization/index');
const OrgClassManage = () => import('@/views/organization/classManage/index'); const OrgClassManage = () => import('@/views/organization/classManage/index');
const OrgDraftLessonManage = () => import('@/views/organization/draftLessonManage/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 GradeList = () => import('@/views/organization/examManage/gradeList');
const CreateRule = () => import('@/views/organization/ruleManage/createRule'); const CreateRule = () => import('@/views/organization/ruleManage/createRule');
const TotalGrade = () => import('@/views/organization/ruleManage/totalGrade'); const TotalGrade = () => import('@/views/organization/ruleManage/totalGrade');
const InfoLessonDetail = () => import('@/views/organization/lessonManage/lessonDetail');
const RunPlanViewWindow = () => import('@/views/newMap/displayNew/demon/runPlanViewWindow'); const RunPlanViewWindow = () => import('@/views/newMap/displayNew/demon/runPlanViewWindow');
const SecondaryHome = () => import('@/views/trainingPlatform/secondaryHome'); const SecondaryHome = () => import('@/views/trainingPlatform/secondaryHome');
const Demo = () => import('@/views/demo'); const Demo = () => import('@/views/demo');
const DemoTraining = () => import('@/views/newMap/displayNew/demoTraining'); const DemoTraining = () => import('@/views/newMap/displayNew/demoTraining');
const OrgDetail = () => import('@/views/system/companyManage/orgDetail');
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig'; // import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
// import { getSessionStorage } from '@/utils/auth'; // import { getSessionStorage } from '@/utils/auth';
@ -208,16 +209,16 @@ export const userTrainingPlatform = '016'; // 实训系统
// export const refereePlatform = '017'; // 裁判系统 // export const refereePlatform = '017'; // 裁判系统
export const constantRoutes = [ export const constantRoutes = [
{ {
path: '/demo', path: '/demo',
component: Demo, component: Demo,
hidden: true hidden: true
}, },
{ {
path: '/demoTraining/:mode', path: '/demoTraining/:mode',
component: DemoTraining, component: DemoTraining,
hidden: true hidden: true
}, },
// 实训平台登录 // 实训平台登录
{ {
path: '/login', path: '/login',
@ -567,6 +568,11 @@ export const publicAsyncRoute = [
path: 'totalGrade', path: 'totalGrade',
component: TotalGrade, component: TotalGrade,
hidden: true hidden: true
},
{
path: 'lessonDetail',
component: InfoLessonDetail,
hidden: true
} }
] ]
} }
@ -709,11 +715,6 @@ export const asyncRouter = [
component: TeachDetail, component: TeachDetail,
hidden: true hidden: true
}, },
{ // 草稿课程
path: 'draftTeach/:subSystem',
component: DraftLessonManage,
hidden: true
},
{ // 运行图设计 { // 运行图设计
path: 'runPlan/:mapId', path: 'runPlan/:mapId',
component: PlanMonitorDetail, component: PlanMonitorDetail,
@ -965,6 +966,11 @@ export const asyncRouter = [
i18n: 'router.companyManage' i18n: 'router.companyManage'
} }
}, },
{
path: 'companyManage/orgDetail',
component: OrgDetail,
hidden: true
},
{ {
path: 'boardManage', path: 'boardManage',
component: BoardManage, component: BoardManage,

View File

@ -208,6 +208,14 @@ export const UrlConfig = {
} }
}; };
import CMD from './cmdPlugin/CommandEnum'; 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() { export function getTrainingOperateTypeMap() {
const trainingOperateTypeMap = { const trainingOperateTypeMap = {
Switch: [], Switch: [],

View File

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

View File

@ -59,7 +59,7 @@ const runPlan = {
trainList.forEach((train, j) => { trainList.forEach((train, j) => {
state.initialPlanData[service.serviceNumber].trainMap[`${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, right:train.right, 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, 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}`] = state.editData[service.serviceNumber].trainMap[`${train.tripNumber}`] =
{ oldIndex: j, tripNumber: train.tripNumber, directionCode: train.directionCode, right:train.right, { oldIndex: j, tripNumber: train.tripNumber, directionCode: train.directionCode, right:train.right,
reentry: train.reentry, stationTimeList: train.stationTimeList, endSecondTime:train.endSecondTime, 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) => { trainList.forEach((train, j) => {
state.draftEditData[service.serviceNumber].trainMap[`${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, right:train.right, 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, 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: '', companyId: '',
companyAdmin: false, companyAdmin: false,
companyName: '', companyName: '',
companyProject: '' companyProjectList: [],
baseUrl:''
}, },
mutations: { mutations: {
@ -60,8 +61,8 @@ const user = {
SET_COMPANYNAME: (state, companyName) => { SET_COMPANYNAME: (state, companyName) => {
state.companyName = companyName; state.companyName = companyName;
}, },
SET_COMPANYPROJECT: (state, companyProject) => { SET_COMPANYPROJECTLIST: (state, companyProjectList) => {
state.companyProject = companyProject; state.companyProjectList = companyProjectList;
}, },
CLEAR_AUTO_PARAMS: () => { CLEAR_AUTO_PARAMS: () => {
Cookies.remove('UserDesignName'); Cookies.remove('UserDesignName');
@ -77,6 +78,9 @@ const user = {
}, },
Disconnect: ()=>{ Disconnect: ()=>{
disconnect(); disconnect();
},
setBaseUrl: (state, baseUrl) => {
state.baseUrl = baseUrl;
} }
}, },
@ -135,7 +139,7 @@ const user = {
commit('SET_COMPANYID', user.companyId); commit('SET_COMPANYID', user.companyId);
commit('SET_COMPANYADMIN', user.companyAdmin); commit('SET_COMPANYADMIN', user.companyAdmin);
commit('SET_COMPANYNAME', user.companyName); commit('SET_COMPANYNAME', user.companyName);
commit('SET_COMPANYPROJECT', user.projectCode); commit('SET_COMPANYPROJECTLIST', user.projectCodes);
resolve(user); resolve(user);
}).catch(error => { }).catch(error => {
reject(error); reject(error);
@ -204,6 +208,9 @@ const user = {
disconnect({commit}, params) { disconnect({commit}, params) {
commit('Disconnect', params); commit('Disconnect', params);
removeToken(); removeToken();
},
setBaseUrl ({commit}, baseUrl) {
commit('setBaseUrl', baseUrl);
} }
} }
}; };

View File

@ -3,11 +3,11 @@ export const requestAnimationFrame = window.requestAnimationFrame ||
window.mozRequestAnimationFrame || window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame || window.oRequestAnimationFrame ||
window.msRequestAnimationFrame || 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 || export const cancelRequestAnimFrame = window.cancelAnimationFrame ||
window.webkitCancelRequestAnimationFrame || window.webkitCancelRequestAnimationFrame ||
window.mozCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame ||
window.oCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame ||
window.msCancelRequestAnimationFrame || 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; 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://api.joylink.club/jlcloud';
BASE_API = 'https://test.joylink.club/jlcloud'; BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.8.107:9000'; // 袁琪 // BASE_API = 'http://192.168.8.107:9000'; // 袁琪
// BASE_API = 'http://192.168.8.169:9000'; // 旭强 // BASE_API = 'http://192.168.8.169:9000'; // 旭强

View File

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

View File

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

View File

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

View File

@ -1,83 +1,71 @@
<template> <template>
<div class="joylink-card"> <div class="joylink-card">
<div class="examDetailName"> <div class="examDetailName">
{{ $t('exam.courseName') + ': '+ courseModel.name }} 试卷列表
</div> </div>
<div id="examDetail"> <div id="examDetail">
<el-tabs <!--<el-tabs-->
v-model="activeName" <!--v-model="activeName"-->
class="examDetailActive" <!--class="examDetailActive"-->
> <!--&gt;-->
<el-tab-pane :label="this.$t('exam.itemList')" name="first" class="examDetailPane"> <!--<el-tab-pane :label="this.$t('exam.itemList')" name="first" class="examDetailPane">-->
<div v-if="courseModel.treeList.length != 0" style="height:100%;overflow:auto;"> <div style="height:100%;overflow:auto;">
<el-table :data="courseModel.treeList" border style="width: 100%;"> <el-table :data="tableData" border style="width: 100%;">
<el-table-column label="试卷名称"> <el-table-column label="试卷名称">
<template slot-scope="scope"> <template slot-scope="scope">
<span :style="{color: scope.row.trial||valid ?'green':'black'}">{{ scope.row.name }}</span> <span :style="{color: scope.row.trial||valid ?'green':'black'}">{{ scope.row.name }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="isGzbShow" label="班级"> <el-table-column v-if="isGzbShow" label="班级">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-for="item in scope.row.classes" :key="item.id" style="margin-right: 6px;">{{ item.name }}</el-tag> <el-tag v-for="item in scope.row.classes" :key="item.id" style="margin-right: 6px;">{{ item.name }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="duration" label="考试时长"> <el-table-column prop="duration" label="考试时长">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ scope.row.duration / 60 }}分钟</span> <span>{{ scope.row.duration / 60 }}分钟</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="fullPoint" label="试卷总分" /> <el-table-column prop="fullPoint" label="试卷总分" />
<el-table-column label="操作"> <el-table-column label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" @click="clickEvent(scope.row)">查看详情</el-button> <el-button size="mini" @click="clickEvent(scope.row)">查看详情</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div v-else class="noList"> <!--</el-tab-pane>-->
{{ $t('global.temporarilyNoData') }} <!--<el-tab-pane :label="this.$t('exam.permissionsDetails')" name="second" class="examDetailPane">-->
</div> <!--<limit-list ref="limitList" :course-model="courseModel" style="height:100%;overflow:auto;" @initLoadPage="loadInitPage" />-->
</el-tab-pane> <!--</el-tab-pane>-->
<el-tab-pane :label="this.$t('exam.permissionsDetails')" name="second" class="examDetailPane"> <!--</el-tabs>-->
<limit-list ref="limitList" :course-model="courseModel" style="height:100%;overflow:auto;" @initLoadPage="loadInitPage" />
</el-tab-pane>
</el-tabs>
</div> </div>
<div class="btn-buy"> <div class="btn-buy">
<!-- <el-button v-if="!isLocal" :disabled="disabled" type="success" @click="buy">{{ $t('exam.buy') }}</el-button> --> <!-- <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="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="!$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> <el-button v-if="$route.query.noPreLogout" type="primary" :disabled="disabled" @click="quit">退出</el-button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { getCourseLessonDetail } from '@/api/management/exam'; import { getExamListByMapIdAndPrdType } from '@/api/management/exam';
import { PermissionType } from '@/scripts/ConstDic'; // import { PermissionType } from '@/scripts/ConstDic';
import { UrlConfig } 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 { getSessionStorage } from '@/utils/auth';
import localStore from 'storejs'; import localStore from 'storejs';
import { superAdmin, admin } from '@/router/index'; import { superAdmin, admin } from '@/router/index';
export default { export default {
name: 'ExamDetailView', name: 'ExamDetailView',
components: { // components: {
LimitList // LimitList
}, // },
data() { data() {
return { return {
disabled: false, disabled: false,
courseModel: { tableData: [],
id: '',
name: this.$t('rules.lessonInput'),
price: 0,
remarks: '',
detail: [],
pmsList: [],
treeList: []
},
EffectiveTypeList: [], EffectiveTypeList: [],
activeName: 'first', activeName: 'first',
expandList: [], expandList: [],
@ -88,19 +76,6 @@ export default {
isGzbShow() { isGzbShow() {
return getSessionStorage('project').startsWith('gzb'); 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() { // isLocal() { //
return process.env.VUE_APP_PRO === 'local'; return process.env.VUE_APP_PRO === 'local';
}, },
@ -121,30 +96,16 @@ export default {
}, },
methods: { methods: {
loadInitPage() { loadInitPage() {
getCourseLessonDetail({lessonId: this.$route.query.lessonId}).then(resp =>{ getExamListByMapIdAndPrdType(this.$route.query.mapId, this.$route.query.prdType).then(resp =>{
if (resp.data) { if (resp.data && resp.data.length) {
this.courseModel = { this.tableData = resp.data;
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;
}
} }
this.getExpandList(this.courseModel.id);
}).catch(()=>{ }).catch(()=>{
this.$alert('获取考试信息失败!', '提示', { this.$alert('获取考试信息失败!', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
type: 'error', type: 'error',
center: true, center: true,
callback: action => { callback: action => {
this.backLessonList();
} }
}); });
}); });
@ -159,15 +120,6 @@ export default {
// }, 100); // }, 100);
this.$messageBox(this.$t('global.buyingTips')); 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() { // distribute() { //
this.disabled = true; this.disabled = true;
if (this.$refs) { if (this.$refs) {
@ -176,36 +128,12 @@ export default {
} }
this.disabled = false; 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) { clickEvent(obj) {
const path = `${this.$route.path.match(/(\/.*)\/course/)[1]}${UrlConfig.examDetail}`; const path = `${this.$route.path.match(/(\/.*)\/course/)[1]}${UrlConfig.examDetail}`;
if ((this.valid || obj.trial) && path.includes('device')) { if (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 }}); 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 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 }});
} else { } else {
this.confirmToBuy(); this.$router.push({ path: `${path}/${obj.id}`, query: { subSystem: this.$route.params.subSystem, mapId: obj.mapId, noPreLogout: this.$route.query.noPreLogout }});
}
},
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;
} }
}, },
quit() { quit() {

View File

@ -216,9 +216,9 @@ export default {
this.disabled = true; this.disabled = true;
setTimeout(() => { setTimeout(() => {
if (this.$route.query.subSystem) { 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 { } 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); }, 100);
}, },

View File

@ -6,21 +6,29 @@
</div> </div>
</el-card> </el-card>
<el-card v-loading="loading"> <el-card v-loading="loading">
<el-table :data="tableData" border style="width: 100%"> <el-row style="padding: 10px;display: flex;align-items: center;justify-content: flex-end;">
<el-table-column prop="name" :label="this.$t('exam.courseName')" /> <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="所属班级"> <el-table-column v-if="isGzbShow" prop="classNames" label="所属班级">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-for="(item, index) in scope.row.classNames" :key="index" type="success">{{ item }}</el-tag> <el-tag v-for="(item, index) in scope.row.classNames" :key="index" type="success">{{ item }}</el-tag>
</template> </template>
</el-table-column> </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')"> <el-table-column :label="this.$t('global.operate')">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="primary" @click="goLesson(scope.row)"> <el-button size="mini" type="primary" @click="goExamDetail(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> </el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -32,7 +40,6 @@
<script> <script>
import { getSubSystemDetail } from '@/api/trainingPlatform'; import { getSubSystemDetail } from '@/api/trainingPlatform';
import { UrlConfig } from '@/scripts/ConstDic'; import { UrlConfig } from '@/scripts/ConstDic';
import { forceDeleteLesson } from '@/api/jmap/lesson';
import { getSessionStorage } from '@/utils/auth'; import { getSessionStorage } from '@/utils/auth';
import { lessonCreater } from '@/router/index'; import { lessonCreater } from '@/router/index';
import localStore from 'storejs'; import localStore from 'storejs';
@ -42,10 +49,12 @@ export default {
data() { data() {
return { return {
tableData: [], tableData: [],
filterTableData: [],
loading: false, loading: false,
project: '', project: '',
isTeacher: false, isTeacher: false,
userId: '' userId: '',
inputName: ''
}; };
}, },
computed: { computed: {
@ -69,10 +78,12 @@ export default {
if (this.$route.params.subSystem) { if (this.$route.params.subSystem) {
getSubSystemDetail(this.$route.params.subSystem).then(resp =>{ getSubSystemDetail(this.$route.params.subSystem).then(resp =>{
if (resp.data) { if (resp.data) {
this.tableData = resp.data.lessonList; this.tableData = resp.data.examList;
} else { } else {
this.tableData = []; this.tableData = [];
} }
this.inputName = localStore.get(this.$route.path) || '';
this.goToFilter();
}).catch((error)=>{ }).catch((error)=>{
if (error.code == 30001) { if (error.code == 30001) {
const url = localStore.get('orignalTrainingPlatformRoute' + this.$store.state.user.id + this.project); const url = localStore.get('orignalTrainingPlatformRoute' + this.$store.state.user.id + this.project);
@ -85,24 +96,28 @@ export default {
}); });
} }
}, },
goLesson(row) { goExamDetail(row) {
localStore.set('examDetail' + this.$route.params.subSystem, `${UrlConfig.trainingPlatform.course}/${this.$route.params.subSystem}?lessonId=${row.id}`); const path = `${this.$route.path.match(/(\/.*)\/examHome/)[1]}${UrlConfig.examDetail}`;
this.$router.push({ path: `${UrlConfig.trainingPlatform.course}/${this.$route.params.subSystem}`, query: {lessonId: row.id}}); 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) { changeInput(val) {
this.$confirm('此操作将删除课程及所有对应的试卷,且无法恢复,是否继续?', this.$t('global.tips'), { localStore.set(this.$route.path, val);
confirmButtonText: this.$t('global.confirm'), },
cancelButtonText: this.$t('global.cancel'), goToFilter() {
type: 'warning' if (!this.inputName) {
}).then(() => { this.filterTableData = [...this.tableData];
forceDeleteLesson(row.id).then(response => { } else {
this.$message.success(this.$t('publish.deleteSuccess')); this.filterTableData = [];
this.loadInitPage(); this.tableData.forEach(item => {
}).catch((error) => { if (item.name.includes(this.inputName)) {
this.loadInitPage(); this.filterTableData.push(item);
this.$messageBox(this.$t('error.deleteFailed') + ':' + error.message); }
}); });
}).catch(() => { }); }
} }
} }
}; };

View File

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

View File

@ -33,7 +33,7 @@
<script> <script>
import { DeviceMenu } from '@/scripts/ConstDic'; import { DeviceMenu } from '@/scripts/ConstDic';
import { removeSessionStorage } from '@/utils/auth'; import { removeSessionStorage } from '@/utils/auth';
import { getPublishMapListOnline, getStationListNeedAttendant } from '@/api/jmap/map'; import { getPublishMapListOnline, getStationListNeedAttendant, getPublishMapInfo } from '@/api/jmap/map';
export default { export default {
name: 'UserMapList', name: 'UserMapList',
@ -58,7 +58,7 @@ export default {
mapPublishList: [], mapPublishList: [],
pageTreeMap: { pageTreeMap: {
'01': [], '01': [],
'114': [ '49': [
{ {
// 线 线 线 线 // 线 线 线 线
name: '电力监控系统', name: '电力监控系统',
@ -279,6 +279,12 @@ export default {
mode: 'afc02', mode: 'afc02',
id: 'afcOne02', id: 'afcOne02',
type: 'interface' type: 'interface'
},
{
name: '站台层',
mode: 'afc02',
id: 'afcTwo02',
type: 'interface'
} }
] ]
} }
@ -321,10 +327,28 @@ export default {
type: 'interface' type: 'interface'
}, },
{ {
name: '站厅层公共区段', name: '站厅层C端',
mode: 'fas02', mode: 'fas02',
id: 'stationHallFour', id: 'stationHallFour',
type: 'interface' 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' : case 'system' :
break; break;
case 'interface': 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; break;
} }
}, },

View File

@ -22,12 +22,12 @@
<el-form-item label="选中文字颜色:" prop="textColorActive"> <el-form-item label="选中文字颜色:" prop="textColorActive">
<el-color-picker v-model="form.textColorActive" size="small" /> <el-color-picker v-model="form.textColorActive" size="small" />
</el-form-item> </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-color-picker v-model="form.fillColor" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="选中背景颜色:" prop="textColor"> <el-form-item label="选中背景颜色:" prop="textColor">
<el-color-picker v-model="form.fillColorActive" size="small" /> <el-color-picker v-model="form.fillColorActive" size="small" />
</el-form-item> --> </el-form-item>
<el-form-item label="文字大小:" prop="fontSize"> <el-form-item label="文字大小:" prop="fontSize">
<el-input-number v-model="form.fontSize" size="small" controls-position="right" :min="1" /> <el-input-number v-model="form.fontSize" size="small" controls-position="right" :min="1" />
</el-form-item> </el-form-item>
@ -90,9 +90,9 @@ export default {
context: '', context: '',
function: '', function: '',
textColor: '', textColor: '',
// fillColor: '#D1C2C2', textColorActive: '#000',
// fillColorActive: '#847b7b', fillColor: 'rgba(0,0,0,0)',
textColorActive: '#000' fillColorActive: 'rgba(0,0,0,0)'
}, },
rules: { rules: {
context: [ context: [
@ -127,6 +127,8 @@ export default {
this.form.fontSize = model.fontSize; this.form.fontSize = model.fontSize;
this.form.textColor = model.textColor || '#fff'; this.form.textColor = model.textColor || '#fff';
this.form.textColorActive = model.textColorActive || '#000'; 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') { if (this.$route.query.lineCode == '02') {
this.functionList = [ this.functionList = [
{label: '操作按钮', value: 'OperatingButton'}, {label: '操作按钮', value: 'OperatingButton'},
{label: '门禁站台层', value: 'goToStand'},
{label: '门禁站厅层', value: 'goToStation'},
{label: '元素显隐', value: 'ElementShow'}, {label: '元素显隐', value: 'ElementShow'},
{label: '返回', value: 'GoBack'} {label: '返回', value: 'GoBack'}
]; ];
@ -169,7 +173,9 @@ export default {
function: this.form.function, function: this.form.function,
fontSize: this.form.fontSize, fontSize: this.form.fontSize,
textColor: this.form.textColor, 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.$emit('createDataModel', rectModel);
this.initPage(); this.initPage();
@ -190,7 +196,9 @@ export default {
verticalPadding: this.form.verticalPadding, verticalPadding: this.form.verticalPadding,
context: this.form.context, context: this.form.context,
function: this.form.function, function: this.form.function,
fontSize: this.form.fontSize fontSize: this.form.fontSize,
fillColor: this.form.fillColor,
fillColorActive: this.form.fillColorActive
}; };
this.$emit('deleteDataModel', rectModel); this.$emit('deleteDataModel', rectModel);
}, },
@ -209,7 +217,9 @@ export default {
context: '', context: '',
function: '', function: '',
textColor: '', 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-input-number v-model="form.z2" controls-position="right" :min="0" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="线段宽度:" prop="lineWidth"> <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>
<el-form-item label="类型:" prop="type"> <el-form-item label="类型:" prop="type">
<el-select v-model="form.classify" placeholder="请选择类型" size="small"> <el-select v-model="form.classify" placeholder="请选择类型" size="small">
@ -13,9 +13,9 @@
<el-option label="虚线:" value="dashed" /> <el-option label="虚线:" value="dashed" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否线段颜色渐变:"> <!--<el-form-item label="是否线段颜色渐变:">-->
<el-checkbox v-model="form.isFillGradual" size="small" /> <!--<el-checkbox v-model="form.isFillGradual" size="small" />-->
</el-form-item> <!--</el-form-item>-->
<el-form-item label="是否渐变:"> <el-form-item label="是否渐变:">
<el-checkbox v-model="form.isGradual" size="small" /> <el-checkbox v-model="form.isGradual" size="small" />
</el-form-item> </el-form-item>
@ -140,7 +140,7 @@ export default {
classify:'solid', classify:'solid',
code: '', code: '',
z2: 0, z2: 0,
isFillGradual: false, // isFillGradual: false,
lineWidth: '', lineWidth: '',
fillColor: '#fff', fillColor: '#fff',
fillBackground: '', fillBackground: '',
@ -182,7 +182,7 @@ export default {
this.isUpdate = true; this.isUpdate = true;
this.form.code = model.code; this.form.code = model.code;
this.form.z2 = model.z2 || 0; 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.lineWidth = model.lineWidth;
this.form.fillColor = model.fillColor; this.form.fillColor = model.fillColor;
this.form.fillBackground = model.fillBackground || ''; this.form.fillBackground = model.fillBackground || '';
@ -216,7 +216,7 @@ export default {
code: this.isUpdate ? this.form.code : getUID('IscsLine', this.iscs.iscsLineList), code: this.isUpdate ? this.form.code : getUID('IscsLine', this.iscs.iscsLineList),
_type: 'IscsLine', _type: 'IscsLine',
z2: this.form.z2, z2: this.form.z2,
isFillGradual: this.form.isFillGradual, // isFillGradual: this.form.isFillGradual,
lineWidth: this.form.lineWidth, lineWidth: this.form.lineWidth,
fillColor: this.form.fillColor, fillColor: this.form.fillColor,
fillBackground: this.form.fillBackground, fillBackground: this.form.fillBackground,
@ -267,7 +267,7 @@ export default {
this.form = { this.form = {
code: '', code: '',
lineWidth: '', lineWidth: '',
isFillGradual: false, // isFillGradual: false,
fillColor: '#fff', fillColor: '#fff',
fillBackground: '', fillBackground: '',
arrowShow: 'none', arrowShow: 'none',

View File

@ -60,8 +60,8 @@ export default {
{ name: '车尾', value: 'psdRight' }, { name: '车尾', value: 'psdRight' },
{ name: '车厢', value: 'psdSystem' }, { name: '车厢', value: 'psdSystem' },
{ name: '人防门', value: 'envPersonDoor'}, { name: '人防门', value: 'envPersonDoor'},
{ name: '色FIRE', value: 's'}, { name: '报警按钮蓝', value: 's'},
{ name: '色FIRE', value: 'a'}, { name: '报警按钮红', value: 'a'},
{ name: 'APF', value: 'APF'}, { name: 'APF', value: 'APF'},
{ name: '手动阀', value: 'hand'}, { name: '手动阀', value: 'hand'},
{ name: '蓝色-阀门', value: 'fmBlue'}, { name: '蓝色-阀门', value: 'fmBlue'},
@ -100,7 +100,40 @@ export default {
{ name: '烟杆传感器', value: 'iscsSensor' }, { name: '烟杆传感器', value: 'iscsSensor' },
{ name: '抵挡图', value: 'iscsDangwei' }, { name: '抵挡图', value: 'iscsDangwei' },
{ name: '地变图', value: 'iscsDibian' }, { 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: { rules: {

View File

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

View File

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

View File

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

View File

@ -25,6 +25,14 @@
@createDataModel="createDataModel" @createDataModel="createDataModel"
@deleteDataModel="deleteDataModel" @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>
<el-tab-pane label="线段" name="IscsLine"> <el-tab-pane label="线段" name="IscsLine">
<iscs-line <iscs-line
@ -73,6 +81,14 @@
@createDataModel="createDataModel" @createDataModel="createDataModel"
@deleteDataModel="deleteDataModel" @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-tab-pane>
</el-tabs> </el-tabs>
</el-card> </el-card>
@ -87,8 +103,10 @@ import IscsRect from '../icscComponents/rect';
import IscsButton from '../icscComponents/button'; import IscsButton from '../icscComponents/button';
import OrdinaryDoor from '../iscsCommonElem/ordinaryDoor'; import OrdinaryDoor from '../iscsCommonElem/ordinaryDoor';
import FuzhouDoor from '../iscsCommonElem/fuzhouDoor'; import FuzhouDoor from '../iscsCommonElem/fuzhouDoor';
import IscsPicture from '../icscComponents/picture';
import CommunicationButcher from '../iscsCommonElem/communicationButcher'; import CommunicationButcher from '../iscsCommonElem/communicationButcher';
import AfcDoorUnite from './afcDoorUnite'; import AfcDoorUnite from './afcDoorUnite';
import IscsCircle from '../icscComponents/circle';
export default { export default {
name: 'IscsOperate', name: 'IscsOperate',
@ -99,8 +117,10 @@ export default {
IscsButton, IscsButton,
OrdinaryDoor, OrdinaryDoor,
FuzhouDoor, FuzhouDoor,
IscsPicture,
CommunicationButcher, CommunicationButcher,
AfcDoorUnite AfcDoorUnite,
IscsCircle
}, },
mixins: [ mixins: [
], ],

View File

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

View File

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

View File

@ -90,6 +90,7 @@ export default {
this.$store.dispatch('iscs/setIscsData', iscsData); this.$store.dispatch('iscs/setIscsData', iscsData);
if (this.$route.query.group) { if (this.$route.query.group) {
this.$iscs.on('dblclick', this.onDblclick, this); this.$iscs.on('dblclick', this.onDblclick, this);
this.$iscs.on('click', this.onlclick, this);
} }
}, },
onDblclick(em) { onDblclick(em) {
@ -97,10 +98,30 @@ export default {
if (em.deviceType == 'IscsGroup') { if (em.deviceType == 'IscsGroup') {
this.$iscs.iscsDevice[em.deviceModel.code].instance.hide(); this.$iscs.iscsDevice[em.deviceModel.code].instance.hide();
this.$refs.valve.doShow(em.deviceModel); 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); 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() { handleViewLoaded() {
this.loading = false; this.loading = false;
@ -126,7 +147,7 @@ export default {
} }
}, },
setIscs(data, oldData) { setIscs(data, oldData) {
this.$iscs.setIscs(oldData, data, this.$route.query.mapId); this.$iscs.setIscs(oldData, data, this.$route.query.lineCode);
}, },
// //
handleModel(model) { handleModel(model) {

View File

@ -158,7 +158,9 @@ export default {
const data = JSON.parse(resp.data.graphData); const data = JSON.parse(resp.data.graphData);
this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate); this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate);
document.querySelector('.Substation').scrollTop = 0; 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'" /> <psd-system v-if="mode=='psdSystem'" />
<substation v-else-if="mode=='substation'" /> <substation v-else-if="mode=='substation'" />
<schedule v-else-if="mode=='schedule'" /> <schedule v-else-if="mode=='schedule'" />
<normal v-else-if="mode=='environmentThree'" /> <normal v-else-if="mode.includes('environment')" />
<normal v-else-if="mode=='environmentFour'" /> <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=='environmentFive'" />
<normal v-else-if="mode=='environmentSix'" /> <normal v-else-if="mode=='environmentSix'" />
<normal v-else-if="mode=='environmentSeven'" /> <normal v-else-if="mode=='environmentSeven'" />
@ -13,8 +16,10 @@
<normal v-else-if="mode=='environmentTen'" /> <normal v-else-if="mode=='environmentTen'" />
<normal v-else-if="mode=='environmentThirteen'" /> <normal v-else-if="mode=='environmentThirteen'" />
<normal v-else-if="mode=='environmentEleven'" /> <normal v-else-if="mode=='environmentEleven'" />
<normal v-else-if="mode=='environmentTwelve'" /> <normal v-else-if="mode=='environmentTwelve'" /> -->
<big-screen v-else-if="mode === 'signal'" /> <!-- <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> </div>
</template> </template>
@ -23,7 +28,11 @@ import PsdSystem from './psdSystem/index.vue';
import Substation from './powerMonitor/substation.vue'; import Substation from './powerMonitor/substation.vue';
import Normal from './environment/index.vue'; import Normal from './environment/index.vue';
import Schedule from './schedule'; 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 { getSimulationInfoNew } from '@/api/simulation';
import { getByGroupStationList } from '@/api/jmap/map'; import { getByGroupStationList } from '@/api/jmap/map';
import { loadRunPlanData } from '@/utils/loaddata'; import { loadRunPlanData } from '@/utils/loaddata';
@ -33,12 +42,16 @@ export default {
PsdSystem, PsdSystem,
Substation, Substation,
Normal, Normal,
BigScreen // BigScreen,
SignalSystem,
Fas,
TicketOrEntrance
}, },
data() { data() {
return { return {
mode: 'index', mode: 'index',
deviceList: [] deviceList: [],
fasList:['sensing', 'gas', 'section', 'linkage', 'stationHall', 'platform']
}; };
}, },
computed: { computed: {

View File

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

View File

@ -48,7 +48,9 @@ export default {
if (resp.data) { if (resp.data) {
const data = JSON.parse(resp.data.graphData); const data = JSON.parse(resp.data.graphData);
this.$refs.iscsPlate.show(data, this.width, this.height, this.scaleRate); 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: '门禁系统', name: '门禁系统',
mode: 'entranceGuard', mode: 'afcOne02',
id: 'entranceGuard', id: 'afcOne02',
type: 'interface' type: 'interface'
} }
]}, ]},
@ -443,6 +443,7 @@ export default {
stationId: this.selectStation, stationId: this.selectStation,
group: this.group, group: this.group,
mapId: this.$route.query.mapId, mapId: this.$route.query.mapId,
lineCode:'02',
noPreLogout:this.$route.query.noPreLogout noPreLogout:this.$route.query.noPreLogout
}; };
if (isReplace) { if (isReplace) {

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <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> <el-button v-if="showBackButton" class="iscs-button" type="primary" @click="back">{{ $t('global.back') }}</el-button>
</div> </div>
</template> </template>
@ -126,8 +126,9 @@ export default {
// this.setIscs(parserData, data); // this.setIscs(parserData, data);
// this.$store.dispatch('iscs/setIscsData', data); // this.$store.dispatch('iscs/setIscsData', data);
getIscsData(params).then(resp => { getIscsData(params).then(resp => {
// resp.data = {graphData: require('./data.json')}
if (resp.data) { 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}); const parserData = parser(data, {width: this.canvasWidth, height: this.canvasHeight});
this.setIscs(parserData, data); this.setIscs(parserData, data);
this.$store.dispatch('iscs/setIscsData', data); this.$store.dispatch('iscs/setIscsData', data);
@ -179,7 +180,8 @@ export default {
} else if (this.selected._type != 'CheckBox') { } else if (this.selected._type != 'CheckBox') {
this.copyModel = this.copyModelInfo(this.selected, 10); this.copyModel = this.copyModelInfo(this.selected, 10);
const type1 = this.selected._type.charAt(0).toLowerCase() + this.selected._type.slice(1); 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 { } else {
this.copyModel = {}; this.copyModel = {};
} }

File diff suppressed because it is too large Load Diff

View File

@ -65,14 +65,14 @@ export default {
config: { config: {
data: [] 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: { queryList: {

View File

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

View File

@ -29,7 +29,7 @@ export default {
'$route': function() { '$route': function() {
}, },
'$store.state.map.mapViewLoadedCount': function (val) { '$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() { async mounted() {
@ -58,7 +58,7 @@ export default {
} }
}, },
exitSimulation(result = {}) { 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', () => { EventBus.$on('quitScene', () => {
this.practiceDisabled = false; this.practiceDisabled = false;
}); });
getPostByProjectCode(ProjectCode[this.project]).then(resp => { if (this.project) {
if (resp.data) { getPostByProjectCode(ProjectCode[this.project]).then(resp => {
this.messageBoard = true; if (resp.data) {
} this.messageBoard = true;
}).catch(() => { }
this.$message.error('获取留言板信息失败'); }).catch(() => {
}); // this.$message.error('');
console.log('获取留言板信息失败');
});
}
}, },
methods:{ methods:{
menuClick() { menuClick() {

View File

@ -7,18 +7,16 @@
</div> </div>
<div class="display-draft" :style="{bottom: offsetBottom + 'px'}"> <div class="display-draft" :style="{bottom: offsetBottom + 'px'}">
<el-button-group> <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="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> </el-button-group>
</div> </div>
<tip-exam-list :offset-bottom="offsetBottom" /> <tip-exam-list :offset-bottom="offsetBottom" />
<!-- @refresh="refresh" -->
</div> </div>
</template> </template>
<script> <script>
// import { getTrainingDetailNew } from '@/api/jmap/training';
import TipExamList from './tipExamList'; import TipExamList from './tipExamList';
import { Notification } from 'element-ui'; import { Notification } from 'element-ui';
import { startTrainingNew } from '@/api/jmap/training'; import { startTrainingNew } from '@/api/jmap/training';

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