This commit is contained in:
joylink_cuiweidong 2020-12-01 17:22:39 +08:00
commit eb8f171bdd
23 changed files with 477 additions and 246 deletions

View File

@ -39,3 +39,11 @@ export function getCompanyListPaging(params) {
params
});
}
/** 设定公司管理人员 */
export function setCompanyManager(companyId, data) {
return request({
url: `/api/company/${companyId}/addManager`,
method: 'put',
data
});
}

View File

@ -140,17 +140,19 @@ export function Jl3dTrafficTrain(dom,skinCode,routegroup,viewMap,initCode) {
passerTrain.toptrain.position.x = 0;
passerTrain.toptrain.position.y = 0;
passerTrain.toptrain.position.z = 0;
// passerTrain.downtrain.position.z = 40;
getPublishMapDetail(skinCode).then(netdata => {
scope.switchviews('freeview');
passerHuman.initHumans(scope.modelmanager.man1.mesh,scope.modelmanager.man2.mesh);
passerHuman.init(scope.modelmanager.man1.mesh,scope.modelmanager.man2.mesh,scope.modelmanager.seat.mesh);
scene.add(humanlist);
socktest = new TrainConnect(scope,deviceaction,passerTrain.toptrain,routegroup,passerAi);
store.dispatch('app/animationsClose');
let checkobject = setInterval(function(){
store.dispatch('app/animationsClose');
clearInterval(checkobject);
//进站控制
@ -339,6 +341,7 @@ export function Jl3dTrafficTrain(dom,skinCode,routegroup,viewMap,initCode) {
let trainDataList = getnum(scope.trainList[k].num,6);
// nowTrunk.code = newCode;
scope.nowTrunk.numList = trainDataList;
scope.trainList[k].text = k+"(现有乘客"+scope.trainList[k].num+"人)";
updateTrainNum(trainDataList);
}
// i = scope.trainList.length;

View File

@ -67,6 +67,14 @@ export function ModelManager(){
action:null
};
this.seat = {
code:null,
screenDoorOpenStatus:"01",
animations:null,
mesh:null,
action:null
};
//读取模型
this.loadpromise = function (data,mixers,loadmode){
mode = loadmode;
@ -96,6 +104,9 @@ export function ModelManager(){
if(data[i].type == "cctvSection"){
initlist.push(fbxpromise(data[i],mixers,scope.section));
}
if(data[i].type == "seat"){
initlist.push(fbxpromise(data[i],mixers,scope.seat));
}
}
//promise按顺序加载
return new Promise(function(resolve, reject){

View File

@ -5,14 +5,14 @@ var Staticmodel = [
name: "人物1",
deviceType: "man1",
type: "man1",
url: BASE_ASSET_API + "/MODEL/2020-07-16/1-9933.FBX"
url: BASE_ASSET_API + "/MODEL/2020-11-30/447-44484.fbx"
},
{
id: "2",
name: "人物2",
deviceType: "man2",
type: "man2",
url: BASE_ASSET_API + "/MODEL/2020-07-16/2-87850.FBX"
url: BASE_ASSET_API + "/MODEL/2020-11-30/448-11525.fbx"
},
{
id: "7",
@ -21,6 +21,14 @@ var Staticmodel = [
type: "cctvTrain",
url: BASE_ASSET_API + "/MODEL/2020-11-16/48-14909.FBX"
},
{
id: "8",
name: "seat",
deviceType: "seat",
type: "seat",
url: JL3D_LOCAL_STATIC + "/trafficplan/seatposition.FBX"
},
];

View File

@ -4,7 +4,7 @@ export function PasserHuman() {
let trunkManager = new PasserTrunkManager();
let waitGroup = new THREE.Group();
this.nowTrunk = "";
this.nowTrunk = 0+'';
this.speed = "0";
@ -14,7 +14,7 @@ export function PasserHuman() {
let originanima1 = null;
let originanima2 = null;
//初始化人物模型动画
this.initHumans = function(object1,object2,mixers,deviceaction,scene){
this.init = function(object1,object2,seatmesh,mixers,deviceaction,scene){
originhuman1 = object1;
originhuman1.progress = 1;
// scene.add(originhuman1);
@ -22,38 +22,22 @@ export function PasserHuman() {
let mixer1 = new THREE.AnimationMixer( originhuman1 );
let mixer2 = new THREE.AnimationMixer( originhuman2 );
originanima1 = originhuman1.animations[ 0 ];
originanima2 = originhuman2.animations[ 0 ];
originanima1 = originhuman1.animations;
originanima2 = originhuman2.animations;
originhuman1.remove(originhuman1.children[2]);
for(let i=0;i<220;i++){
let newhuman;
createHumanModel(newhuman,waitGroup,mixers,new THREE.Vector3(0,0,0));
}
for(let i=0;i<seatmesh.children.length;i++){
seatmesh.children[i].position.x = -seatmesh.children[i].position.x;
}
trunkManager.initTrunkSeat(seatmesh);
// console.log(waitGroup);
}
//创建新的进站乘客
// this.newInHuman= function(humanlist,position){
// if(scope.humanWaitIn.length != 0){
// let newhuman;
// createHumanModel(newhuman,humanlist,position,scope.humanWaitIn[0].stage,scope.humanWaitIn[0].direct,scope.humanWaitIn[0].door);
// scope.humanWaitIn.shift();
// }
// }
// //创建新的出站乘客
// this.newOutHuman = function(humanlist,position){
// if(scope.humanWaitOut.length != 0){
// let newhuman;
// createHumanModel(newhuman,humanlist,position,scope.humanWaitOut[0].stage,scope.humanWaitOut[0].direct,scope.humanWaitOut[0].door);
// scope.humanWaitOut.shift();
// }
//
// }
//创建新的乘客
// this.newHumanCreate = function(humanlist,position,stage,direct,door){
// let newhuman;
// createHumanModel(newhuman,humanlist,position,stage,direct,door);
// }
function createHumanModel(newhuman,humanlist,mixers,position,stage,direct,door){
let mantype = Math.floor(Math.random()*(3-1+1))+1;
@ -61,13 +45,14 @@ export function PasserHuman() {
if(mantype == 1){
newhuman = THREE.SkeletonUtils.clone( originhuman1 );
newhuman.animations = [];
newhuman.animations.push(originanima1.clone());
newhuman.animations.push(originanima1[0].clone());
newhuman.animations.push(originanima1[1].clone());
}else{
newhuman = THREE.SkeletonUtils.clone( originhuman2 );
newhuman.animations = [];
newhuman.animations.push(originanima2.clone());
newhuman.animations.push(originanima2[0].clone());
newhuman.animations.push(originanima2[1].clone());
}
let mixer = new THREE.AnimationMixer( newhuman );
newhuman.position.copy(position);
@ -89,8 +74,20 @@ export function PasserHuman() {
}else{
newhuman.door = null;
}
newhuman.seat = null;
newhuman.progress = 1;
newhuman.action = mixer.clipAction( newhuman.animations[ 0 ] );
for(let i=0;i<2;i++){
if(newhuman.animations[i].name == "walk"){
newhuman.action = mixer.clipAction( newhuman.animations[ i ] );
}
if(newhuman.animations[i].name == "SITDOWN"){
newhuman.actionDown = mixer.clipAction( newhuman.animations[ i ] );
newhuman.actionDown.setLoop(THREE.LoopOnce);
newhuman.actionDown.clampWhenFinished = true;
}
}
// newhuman.action = mixer.clipAction( newhuman.animations[ 0 ] );
newhuman.mixer = mixer;
newhuman.runrail = null;
newhuman.speed = 0;
@ -108,7 +105,7 @@ export function PasserHuman() {
// enable当前动画开关
// speed动画速度
// console.log(curve);
model.actionDown.stop();
model.action.play();
model.progress = 0;
model.runrail = curve;
@ -121,6 +118,10 @@ export function PasserHuman() {
//更新模型坐标
humanlist.children[i].progress = 1;
humanlist.children[i].action.stop();
if(humanlist.children[i].seat){
humanlist.children[i].actionDown.play();
}
if(humanlist.children[i].status == 1){
@ -154,8 +155,13 @@ export function PasserHuman() {
this.resetPasser = function(humanlist){
let passerlength = humanlist.children.length;
for(let i=0;i<passerlength;i++){
humanlist.children[0].actionDown.stop();
// humanlist.children[0].action.play();
// humanlist.children[0].action.stop();
humanlist.children[0].seat = null;
waitGroup.add(humanlist.children[0]);
}
trunkManager.reSeats(scope.nowTrunk);
}
this.initTrainRail = function(humanlist,inNum,leaveNum,direct){
@ -165,16 +171,6 @@ export function PasserHuman() {
// console.log(inPasser);
// console.log(outPasser);
// let outPassers = inNum[scope.nowTrunk].num;
for(let i=0;i<inPasser.length;i++){
for(let j=0;j<inPasser[i];j++){
setTimeout(function(){
scope.createInPasser(humanlist,direct);
}, Math.random()*1000*i);
}
}
let created = 0;
for(let i=0;i<outPasser.length;i++){
for(let j=0;j<outPasser[i];j++){
@ -185,16 +181,32 @@ export function PasserHuman() {
}
}
for(let i=0;i<inPasser.length;i++){
for(let j=0;j<inPasser[i];j++){
setTimeout(function(){
scope.createInPasser(humanlist,direct);
}, Math.random()*1000*i);
}
}
}
this.createInPasser = function(humanlist,direct){
waitGroup.children[0].progress = 0;
waitGroup.children[0].status = 0;
waitGroup.children[0].actionDown.stop();
waitGroup.children[0].action.play();
let points = [];
let point1 = trunkManager.getDoorRandomPos(scope.nowTrunk,direct);
let overpoint = trunkManager.getTrunkRandomPos(scope.nowTrunk);
waitGroup.children[0].position.copy(point1);
points.push(point1);
if(direct == 1){
@ -203,7 +215,18 @@ export function PasserHuman() {
points.push(new THREE.Vector3(point1.x,point1.y,point1.z-0.5));
}
points.push(overpoint);
let newPos = trunkManager.getSeatRandomPos(scope.nowTrunk);
if(newPos){
waitGroup.children[0].seat = newPos.seat;
points.push(newPos.pos[0]);
points.push(newPos.pos[1]);
}else{
waitGroup.children[0].seat = null;
let overpoint = trunkManager.getTrunkRandomPos(scope.nowTrunk);
points.push(overpoint);
}
let curve = new THREE.CatmullRomCurve3(points);
@ -217,10 +240,14 @@ export function PasserHuman() {
humanlist.children[created].progress = 0;
humanlist.children[created].status = 1;
humanlist.children[created].actionDown.stop();
humanlist.children[created].action.play();
let points = [];
let point1 = new THREE.Vector3(humanlist.children[created].position.x,humanlist.children[created].position.y,humanlist.children[created].position.z);
if(humanlist.children[created].seat){
trunkManager.reSeat(scope.nowTrunk,humanlist.children[created].seat)
}
let overpoint = trunkManager.getDoorRandomPos(scope.nowTrunk,direct);
points.push(point1);
@ -239,22 +266,52 @@ export function PasserHuman() {
}
this.setNowTrunkPasser = function(humanlist,num,trunknum){
// let array = getnum(num,6);
// console.log(array);
// console.log(trunknum);
if(num){
// for(let i=0;i<array.length;i++){
for(let j=0;j<num;j++){
let pos = trunkManager.getTrunkRandomPos(trunknum);
waitGroup.children[0].zone = trunkManager.trunk[trunknum].name;
waitGroup.children[0].position.x = pos.x;
waitGroup.children[0].position.y = pos.y;
waitGroup.children[0].position.z = pos.z;
// console.log(trunkManager.trunk[trunknum].seats);
if(pos.z<0){
waitGroup.children[0].rotation.y = Math.PI;
for(let j=0;j<num;j++){
if(j<trunkManager.trunk[trunknum].seats.length){
let newPos = trunkManager.getSeatRandomPos(trunknum);
waitGroup.children[0].seat = newPos.seat;
waitGroup.children[0].zone = trunkManager.trunk[trunknum].name;
waitGroup.children[0].position.x = newPos.pos[0].x;
waitGroup.children[0].position.y = newPos.pos[0].y;
if(newPos.pos[0].z<0){
waitGroup.children[0].position.z = newPos.pos[0].z+0.4;
waitGroup.children[0].rotation.y = 0;
}else{
waitGroup.children[0].position.z = newPos.pos[0].z-0.4;
waitGroup.children[0].rotation.y = Math.PI;
}
// console.log(waitGroup.children[0].actionDown);
// waitGroup.children[0].actionDown.play();
waitGroup.children[0].action.stop();
waitGroup.children[0].actionDown.reset();
waitGroup.children[0].actionDown.time = waitGroup.children[0].actionDown._clip.duration;
waitGroup.children[0].actionDown.timeScale = 1;
waitGroup.children[0].actionDown.play();
}else{
waitGroup.children[0].rotation.y = 0;
let pos = trunkManager.getTrunkRandomPos(trunknum);
waitGroup.children[0].seat = null;
waitGroup.children[0].zone = trunkManager.trunk[trunknum].name;
waitGroup.children[0].position.x = pos.x;
waitGroup.children[0].position.y = pos.y;
waitGroup.children[0].position.z = pos.z;
if(pos.z<0){
waitGroup.children[0].rotation.y = Math.PI;
}else{
waitGroup.children[0].rotation.y = 0;
}
}
humanlist.add(waitGroup.children[0]);
}

View File

@ -16,6 +16,7 @@ export function PasserTrunkManager(data) {
new THREE.Vector3(11.6,1.22,1.6),
new THREE.Vector3(16,1.22,1.6)
],
seats:null,
},
{
name:"trunk2",
@ -31,6 +32,7 @@ export function PasserTrunkManager(data) {
new THREE.Vector3(33,1.22,1.6),
new THREE.Vector3(37,1.22,1.6),
],
seats:null,
},
{
name:"trunk3",
@ -46,6 +48,7 @@ export function PasserTrunkManager(data) {
new THREE.Vector3(54,1.22,1.6),
new THREE.Vector3(58,1.22,1.6)
],
seats:null,
},
{
name:"trunk4",
@ -61,6 +64,7 @@ export function PasserTrunkManager(data) {
new THREE.Vector3(75,1.22,1.6),
new THREE.Vector3(79,1.22,1.6)
],
seats:null,
},
{
name:"trunk5",
@ -76,6 +80,7 @@ export function PasserTrunkManager(data) {
new THREE.Vector3(97,1.22,1.6),
new THREE.Vector3(101,1.22,1.6)
],
seats:null,
},
{
name:"trunk6",
@ -91,9 +96,28 @@ export function PasserTrunkManager(data) {
new THREE.Vector3(118.5,1.22,1.6),
new THREE.Vector3(122.5,1.22,1.6),
],
seats:null,
}
];
this.initTrunkSeat = function(seatModel){
for(let i=0;i<seatModel.children.length;i++){
seatModel.children[i].position.x = -seatModel.children[i].position.x;
for(let j=0;j<seatModel.children[i].children.length;j++){
seatModel.children[i].children[j].isDown = false;
}
}
scope.trunk[0].seats = seatModel.getObjectByName("C6").children;
scope.trunk[1].seats = seatModel.getObjectByName("C5").children;
scope.trunk[2].seats = seatModel.getObjectByName("C4").children;
scope.trunk[3].seats = seatModel.getObjectByName("C3").children;
scope.trunk[4].seats = seatModel.getObjectByName("C2").children;
scope.trunk[5].seats = seatModel.getObjectByName("C1").children;
}
var rand = (min,max) => Math.round(Math.random()*(max-min))+min;
this.getDoorRandomPos = function(trunkNum,direct){
@ -108,15 +132,55 @@ export function PasserTrunkManager(data) {
return newPos;
}
this.getSeatRandomPos = function(index){
for(let i=0;i<scope.trunk[index].seats.length;i++){
if(scope.trunk[index].seats[i].isDown == false){
scope.trunk[index].seats[i].isDown = true;
let seatWorldPosition = scope.trunk[index].seats[i].getWorldPosition();
let offset = scope.trunk[index].position.x;
let newPos = {
pos:[new THREE.Vector3(-seatWorldPosition.x+offset,1.22,seatWorldPosition.y)],
seat:i,
};
if(seatWorldPosition.y<0){
newPos.pos.push(new THREE.Vector3(-seatWorldPosition.x+offset,1.22,seatWorldPosition.y+0.4));
}else{
newPos.pos.push(new THREE.Vector3(-seatWorldPosition.x+offset,1.22,seatWorldPosition.y-0.4));
}
return newPos;
}
}
return null;
}
this.getTrunkRandomPos = function(index){
let newPos = new THREE.Vector3(
scope.trunk[index].position.x+RandomNum(-11,11),
1.22,
scope.trunk[index].position.z+RandomNum(-1.28,1.28));
scope.trunk[index].position.z+RandomNum(-1,1));
return newPos;
}
this.reSeat = function(index,seat){
scope.trunk[index].seats[seat].isDown = false;
}
this.reSeats = function(index){
for (let i=0;i<scope.trunk.length;i++){
for(let j=0;j<scope.trunk[i].seats.length;j++){
scope.trunk[i].seats[j].isDown = false;
}
}
}
function RandomNum(Min, Max) {
var Range = Max - Min;
var Rand = Math.random();

View File

@ -7,7 +7,7 @@ const runPlan = {
editData: {}, // 运行图编辑数据
planSizeCount: 0, // 运行图canvas 大小变更标识
planLoadedCount: 0, // 运行图数据更新
planUpdateCount: 0, // 运行图更新标识
// planUpdateCount: 0, // 运行图更新标识
selected: {}, // 选择的对象
width: 800, // 运行图canvas 容器 宽度
height: 600, // 运行图canvas 容器 高度

View File

@ -20,6 +20,7 @@ export default {
data() {
return {
companyList: [],
companyMap: {},
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum'
@ -78,11 +79,14 @@ export default {
return '';
}
},
// {
// title: '',
// prop: 'createUserName',
// width: '100'
// },
{
title: '单位',
prop: 'companyId',
width: '100',
type: 'tag',
columnValue: (row) => { return this.getCompanyName(row.companyId); },
tagType: (row) => { return ''; }
},
{
type: 'button',
title: '操 作',
@ -108,7 +112,7 @@ export default {
actions: [
{ text: '添 加', handler: this.doCreate },
{ text: '导 入', fileType: 'file', handler: this.importQuestionBank },
{ text: '出题规则管理', handler: this.questionsRuleManage},
{ text: '试卷规则管理', handler: this.questionsRuleManage},
{ text: '模板导出', handler: this.exportTemplate}
]
}
@ -124,6 +128,7 @@ export default {
getCompanyList().then(resp => {
resp.data.forEach(item => {
this.queryForm.queryObject.companyId.config.data.push({ value: item.id, label: item.name });
this.companyMap[item.id] = item.name;
});
});
},
@ -131,7 +136,9 @@ export default {
doCreate() {
this.$router.push({path: `${UrlConfig.bank.questionCreate}`});
},
getCompanyName(companyId) {
return this.companyMap[companyId];
},
edit(index, row) {
this.$router.push({path: `${UrlConfig.bank.questionUpdate}/${row.id}`});
},
@ -267,6 +274,7 @@ export default {
param.optionList.push({content:dataList[option4Index][index], correct: dataList[answerIndex][index].includes('D')});
}
}
param.id = questionList.length;
questionList.push(param);
}
});
@ -277,11 +285,6 @@ export default {
}).catch((e) => {
that.$message.error('导入题库失败!');
});
// importQuestionBand(questionList, 'DRTS').then(resp => {
// this.$message.success('!');
// }).catch(()=>{
// this.$message.error('');
// });
}
};
if (that.rABS) {

View File

@ -9,6 +9,7 @@
</div>
<div style="display: inline-block;">
<el-button
v-loading="loading"
size="mini"
type="primary"
@click="doSave"
@ -75,7 +76,6 @@
import { UrlConfig } from '@/scripts/ConstDic';
import { importQuestionBand } from '@/api/race';
import { getCompanyList } from '@/api/company';
export default {
data() {
return {
@ -83,7 +83,8 @@ export default {
tableData: [],
pageSize: 10,
companyId: '',
companyList: []
companyList: [],
loading: false
};
},
computed: {
@ -96,6 +97,7 @@ export default {
},
mounted() {
this.handlePreDataPaging();
this.loading = false;
getCompanyList().then(resp => {
this.companyList = resp.data;
});
@ -166,12 +168,45 @@ export default {
this.handlePreDataPaging();
},
doSave() {
this.loading = true;
let selectNum = 0;
let judgeNum = 0;
let multiNum = 0;
let fillNum = 0;
let answerNum = 0;
this.$store.state.race.preTheoryData.forEach(item => {
switch (item.type) {
case 'select':
selectNum++;
break;
case 'judge':
judgeNum++;
break;
case 'multi':
multiNum++;
break;
case 'fill':
fillNum++;
break;
case 'answer':
answerNum++;
break;
}
});
importQuestionBand(this.$store.state.race.preTheoryData, this.companyId).then(resp => {
this.$store.dispatch('race/setPreTheoryData', []);
this.$message.success('导入题库成功!');
// this.$message.success('!');
this.$alert(`<strong>本次导入:</strong><br><strong>${judgeNum}道判断题;</strong><br><strong>${selectNum}道选择题;</strong><br><strong>${multiNum}道多选题;</strong><br>`, '导入题库成功!', {
dangerouslyUseHTMLString: true,
type: 'success',
center: true
});
this.$router.go(-1);
this.loading = false;
}).catch(()=>{
this.$message.error('导入题库失败!');
this.loading = false;
});
},
doCancel() {

View File

@ -162,8 +162,6 @@ export default {
this.examList = response.data.userExamQuestionsVOs;
this.userExam = response.data;
const list = response.data.userExamQuestionsVOs;
await this.$store.dispatch('exam/setUsedTime', this.userExam.usedTime);
await this.$store.dispatch('exam/setTotalTime', this.userExam.duration);
await this.$store.dispatch('trainingList/setTrainingList', list);
} catch (error) {
//

View File

@ -117,6 +117,7 @@ export default {
data() {
return {
initCode:null,
nowCode:null,
isActive:0,
beforeUnloadTime:'',
gapTime:'',
@ -190,7 +191,7 @@ export default {
unloadHandler(){
this.gapTime=new Date().getTime()-this.beforeUnloadTime;
//
alert("netdata");
// alert("netdata");
if(this.gapTime<=5){
deletePassenger(this.$route.query.group,this.initCode).then(netdata => {
alert(netdata);
@ -199,7 +200,8 @@ export default {
},
init: function (code) {
// let mapdata = this.$store.state.socket.device;
this.value = code;
this.nowCode = code;
this.value = this.nowCode;
const dom = document.getElementById('jl3d');
this.jl3d = new Jl3dTrafficTrain(dom, this.$route.query.mapid, this.$route.query.group, 'normal',code);
},
@ -211,17 +213,7 @@ export default {
updateValue(newcode){
this.value = newcode;
},
switchrender() {
if (this.renderswitch == true) {
this.rendermode = '退出监控';
this.renderswitch = false;
this.jl3d.switchviews('freeview');
} else {
this.rendermode = '监控视角';
this.renderswitch = true;
this.jl3d.switchviews('4views');
}
},
// updateTrainCode(codeData){
// this.jl3d.updateNowTrainCode(codeData);
// },
@ -242,15 +234,13 @@ export default {
},
updateTrainCode(selVal) {
// console.log(selVal);
// this.jl3d.changeTrain(selVal);
this.isActive=0;
this.jl3d.updateNowTrainCode(selVal);
this.jl3d.switchcamera(0+'');
// let oldgroupnum = this.groupnum;
// this.value = selVal;
// this.jl3d.changeTrain(selVal);
this.isActive=0;
this.jl3d.updateNowTrainCode(selVal);
this.jl3d.switchcamera(0+'');
this.value = selVal;
// let oldgroupnum = this.groupnum;
// this.value = selVal;
},
updateTrainNum(dataList){
this.takelist = dataList;
@ -258,7 +248,7 @@ export default {
for(let i = 0;i<this.takelist.length;i++){
this.allPassers = this.allPassers + this.takelist[i].num;
}
this.value = this.nowCode+"(现有乘客"+this.allPassers+"人)";
},
getnum(num,pnum){
let re = [];

View File

@ -62,7 +62,7 @@
</div>
</template>
</div>
<div v-else style="text-align: center;width: 100%;height: 50px;line-height: 50px;font-size: 18px;color: #ccc;">
<div v-else class="empty-text">
<span>暂无留言</span>
</div>
<div style="width: 100%;text-align: center;">
@ -80,7 +80,7 @@
<el-button @click="handleClear">清空</el-button>
<el-button type="danger" @click="commitComment">留言</el-button>
</span>
<el-button size="mini" type="danger" style="position: fixed; right: 100px;top: 80px;width: 90px;" @click="goSlide">我要留言</el-button>
<el-button size="mini" type="danger" style="position: fixed; left: 91%;top: 80px;width: 90px;" @click="goSlide">我要留言</el-button>
<div v-show="imgShow" style="position: fixed;width: 100%;height: 100%;left: 0;top: 0;background: rgba(0,0,0,0.5);cursor: zoom-out;" @click="handelCloseImg">
<img id="targetImg" src="" style="position: fixed;top: 50%;left: 50%;transform: translate(-50%,-50%);min-width: 500px;max-height: 80%;height: auto;">
</div>
@ -100,7 +100,6 @@ export default {
name: 'MessageBoard',
data() {
return {
// dialogVisible: false,
content: '',
postCommentList: [],
pageSize: 10,
@ -201,7 +200,7 @@ export default {
},
avatarUrl(val) {
if (val && val.creatorAvatarPath) {
return 'https://joylink.club/oss/joylink' + val.creatorAvatarPath;
return process.env.VUE_APP_VOICE_API + val.creatorAvatarPath;
} else {
return 'https://joylink.club/oss/wxmicro_assistant/userhead/defaultuser.png';
}
@ -355,6 +354,14 @@ export default {
display: flex;
justify-content: center;
}
.empty-text{
text-align: center;
width: 100%;
height: 50px;
line-height: 50px;
font-size: 18px;
color: #ccc;
}
.head_portrait{
width: 50px;
height: 50px;

View File

@ -246,22 +246,6 @@ export default {
this.runPlanData, this.runSeries, { color: '#FF00DE', width: 2 }
);
const series = [...this.staticSeries, ...this.runSeries, ... this.selectSeries];
// let index = 0;
// this.stations.forEach((station, ii) => {
// if (station.visible) {
// index++;
// series.push({
// type: 'bar',
// barGap: '-100%',
// yAxisIndex: index,
// barWidth: '3000%',
// itemStyle: {
// color: 'red'
// },
// data: [[29030, 50], [29060, 60], [29090, 20], [29120, 60], [29150, 80], [29180, 160], [29210, 50], [29240, 80], [29270, 30]]
// });
// }
// });
this.myChart && this.myChart.setOption({series: series});
},
async loadChartPage() {
@ -402,23 +386,6 @@ export default {
option.dataZoom[0].startValue = option.dataZoom[1].startValue = startValue - offsetTime;
option.dataZoom[0].endValue = option.dataZoom[1].endValue = startValue + offsetTime;
option.series = [...this.staticSeries, ...this.runSeries, ...this.selectSeries];
// let index = 0;
// this.stations.forEach((station, ii) => {
// if (station.visible) {
// index++;
// option.series.push({
// type: 'bar',
// barGap: '-100%',
// yAxisIndex: index,
// barWidth: '3000%',
// itemStyle: {
// color: 'red'
// },
// data: [[29030, 50], [29060, 60], [29090, 20], [29120, 60], [29150, 80], [29180, 160], [29210, 50], [29240, 80], [29270, 30]]
// });
// }
// });
this.myChart = echarts.init(document.getElementById(this.runPlanId));
if (this.myChart) {
this.myChart.setOption(option);
@ -438,9 +405,6 @@ export default {
return this.PlanConvert.computedFormatYAxis(this.stations, params);
},
xAxisLableFormat(value, index) {
// if (value % 60 === 0) {
// return timeFormat(value);
// }
return timeFormat(value);
},
yAxisLableFormat(value, index) {
@ -467,18 +431,6 @@ export default {
if (Object.keys(this.PlanConvert).length) {
option.yAxis[0].min = this.PlanConvert.computedYaxisMinValue(this.stations);
option.yAxis[0].max = this.PlanConvert.computedYaxisMaxValue(this.stations);
// let index = 1;
// this.stations.forEach((station, ii) => {
// if (station.visible) {
// option.yAxis.push({
// type: 'value',
// min: Math.floor(option.yAxis[0].min - this.PlanConvert.getYaxisValueByStation(station, ii)),
// max: Math.floor(option.yAxis[0].max - this.PlanConvert.getYaxisValueByStation(station, ii)),
// show: false,
// yAxisIndex : index++
// });
// }
// });
}
},
axisTooltip(param) {

View File

@ -61,7 +61,7 @@
</template>
<script>
import { querySechedulingNew, generateSchedulingNew, saveSchedulingNew, generateSchedulingAgain } from '@/api/scheduling';
import { querySechedulingNew, generateSchedulingNew, saveSchedulingNew } from '@/api/scheduling';
import { hexColor } from '@/utils/runPlan';
import EditTable from '@/views/components/editTable/index';

View File

@ -2,7 +2,6 @@
<div>
<el-dialog v-dialogDrag title="场景列表" :visible.sync="dialogVisible" width="920px" center>
<el-tabs v-model="activeName" type="card" style="height:650px">
<!-- style="height: 500px;" -->
<el-tab-pane label="主场景列表" name="first">
<el-table :data="mainSceneData" border :span-method="objectSpanMethod" height="600" stripe :cell-style="{padding: '8px 0'}">
<el-table-column type="index" width="50" label="序号" />
@ -17,34 +16,13 @@
</div>
</template>
</el-table-column>
<!-- <el-table-column label="说明" width="240">
<template slot-scope="scope">
<div v-if="scope.row.result">
<template v-for="(each,index) in scope.row.result">
<el-button :key="index" type="primary" size="small" @click="handleExplain(each)">{{ each.name }}</el-button>
</template>
</div>
</template>
</el-table-column> -->
</el-table>
</el-tab-pane>
<!-- <el-tab-pane label="副场景列表" name="second">
<el-table :data="deputySceneData" border stripe>
<el-table-column type="index" width="50" label="序号" />
<el-table-column prop="scene" width="550" label="场景" />
<el-table-column label="操作">
<template slot-scope="scope">
<el-button v-if="scope.row.id" type="text" size="small" @click="handleLoad(scope.row)">方案一</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane> -->
</el-tabs>
</el-dialog>
</div>
</template>
<script>
// import { ScriptMode } from '@/scripts/ConstDic';
import { getDraftScriptByGroupNew } from '@/api/script';
import {loadCompetitionPracticalScene, getCompetitionPracticalScene} from '@/api/competition';
import { EventBus } from '@/scripts/event-bus';
@ -64,7 +42,6 @@ export default {
activeName: 'first',
memberList: [],
selectMapLineCode:'',
// operationType: '',
mainSceneData: [
{type: '车辆故障', scene: '列车救援', result:[]},
{type: '信号系统故障', scene: '道岔故障', result:[]},
@ -79,14 +56,6 @@ export default {
{type: '轨道故障', scene: '计轴故障', result:[]}
// {type: '', scene: '线', result:[]}
]
// deputySceneData: [
// { scene: '' },
// { scene: '()' },
// { scene: '()' },
// { scene: '()' },
// { scene: '' },
// { scene: '()' }
// ]
};
},
mounted() {
@ -116,18 +85,6 @@ export default {
});
}
});
// if (process.env.NODE_ENV ==;= 'development' || process.env.NODE_ENV === 'test') {
// this.mainSceneData = [
// {type: '', scene: ''},
// {type: '', scene: '', id: '12'},
// {type: '', scene: ''},
// {type: '', scene: ''},
// {type: '', scene: '()'},
// {type: '', scene: ''},
// {type: '', scene: ''},
// {type: '', scene: '线'}
// ];
// }
},
methods:{
doShow(param) {
@ -235,8 +192,6 @@ export default {
window.open(href, '_blank');
},
confirm(playerList) {
// this.$store.dispatch('training/setScriptOperationType', this.operationType);
// operationType:ScriptMode[this.operationType]
this.$emit('selectScript', {playerList:playerList, mapLocation:this.mapLocation});
this.doClose();
},

View File

@ -110,7 +110,6 @@ export default {
completed:false, //
fullScore:'', //
userScore:'', //
// actionList:[], //
fullScoreOfCommand:0, //
userScoreOfCommand:0, //
fullScoreOfOperationStatistic:0, //
@ -128,7 +127,6 @@ export default {
this.finalStopInSectionStatistics = data.operationIndexStatisticVO.finalStopInSectionStatistics;
this.finalStoppedRunningStatistics = data.operationIndexStatisticVO.finalStoppedRunningStatistics;
this.commandPublishStatisticVO = data.commandPublishStatisticVO;
// this.actionList = actionList;
this.fullScore = data.fullScore;
this.userScore = data.userScore;
this.fullScoreOfCommand = data.fullScoreOfCommand;

View File

@ -75,7 +75,7 @@ export default {
},
watch: {
'$store.state.map.mapViewLoadedCount': function() {
this.$store.dispatch('exam/countUsedTime');
// this.$store.dispatch('exam/countUsedTime');
this.locateDeviceCode && this.$store.dispatch('exam/setCenter', this.locateDeviceCode); //
},
$route() {
@ -90,7 +90,7 @@ export default {
}
},
// mounted() {
// this.initData();
// this.initDate();
// },
methods: {
tipInfo(opt) {

View File

@ -148,6 +148,7 @@ export default {
}
},
beforeDestroy() {
this.$store.dispatch('exam/stopCountTime');
this.clearScanCommit();
},
methods: {

View File

@ -2,6 +2,7 @@
<div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<edit-company ref="editCompany" @reloadTable="reloadTable" />
<company-manager ref="companyManager" />
<qr-code ref="qrCode" />
</div>
</template>
@ -10,11 +11,13 @@
import { getCompanyListPaging, deleteCompany } from '@/api/company';
import EditCompany from './add';
import QrCode from '@/components/QrCode';
import CompanyManager from './manager';
export default {
name: 'CompanyManage',
components: {
EditCompany,
QrCode
QrCode,
CompanyManager
},
data() {
return {
@ -45,15 +48,23 @@ export default {
title: '单位地址',
prop: 'address'
},
{
title: '单位管理人员',
prop: ''
},
{
type: 'button',
title: this.$t('global.operate'),
width: '250',
width: '370',
buttons: [
{
name: this.$t('global.edit'),
handleClick: this.handleUpdate
},
{
name: '绑定管理人员',
handleClick: this.setManager
},
{
name: '生成二维码',
handleClick: this.handleGenerateQrCode
@ -89,6 +100,9 @@ export default {
handleUpdate(index, row) {
this.$refs.editCompany.doShow(row);
},
setManager(index, row) {
this.$refs.companyManager.doShow(row.id);
},
reloadTable() {
this.queryList.reload();
},

View File

@ -0,0 +1,136 @@
<template>
<el-dialog
title="绑定单位管理人员"
:visible.sync="dialogVisible"
width="80%"
:before-close="handleClose"
>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
</el-dialog>
</template>
<script>
import { getUserList } from '@/api/management/user';
import { getCompanyList, setCompanyManager } from '@/api/company';
export default {
name: 'Manager',
data() {
return {
dialogVisible: false,
companyId: '',
companyMap: {},
pagerConfig: {
pageSize: 'pageSize',
pageIndex: 'pageNum'
},
queryForm: {
labelWidth: '80px',
reset: true,
queryObject: {
name: {
type: 'text',
label: this.$t('system.name')
},
roles: {
type: 'select',
label: this.$t('system.roles'),
config: {
data: this.$ConstSelect.roleList
}
}
}
},
queryList: {
query: getUserList,
beforeQuery: this.addParams,
onSelectionChange: this.handleSelectionChange,
selectAllClick: this.selectAllClick,
selectCheckShow: true,
columns: [
{
title: this.$t('system.name'),
prop: 'name'
},
{
title: this.$t('system.nickname'),
prop: 'nickname'
},
{
title: this.$t('global.mobile'),
prop: 'mobile'
},
{
title: this.$t('global.email'),
prop: 'email'
},
{
title: '单位',
prop: 'companyId',
type: 'tag',
columnValue: (row) => { return this.getCompanyName(row.companyId); },
tagType: (row) => { return 'success'; }
},
{
title: this.$t('system.roles'),
prop: 'roles',
type: 'tagMore',
columnValue: (row) => { return this.$convertField(row.roles, this.$ConstSelect.roleList, ['value', 'label'], true); },
tagType: (row) => { return 'success'; }
}
]
}
};
},
created() {
this.companyMap = {};
getCompanyList().then(resp => {
if (resp && resp.data && resp.data.length) {
resp.data.forEach(item => {
this.companyMap[item.id] = item.name;
});
}
}).catch((error) => {
console.error(error);
});
},
methods: {
doShow(companyId) {
this.dialogVisible = true;
this.companyId = companyId;
},
handleClose() {
this.dialogVisible = false;
this.companyId = '';
},
getCompanyName(companyId) {
return this.companyMap[companyId];
},
reloadTable() {
this.queryList.reload();
},
addParams(params) {
params.companyId = this.companyId;
return params;
},
handleSelectionChange(val) {
},
selectAllClick(val) {
const userIds = [];
val && val.forEach(item => {
userIds.push(item.id);
});
setCompanyManager(this.companyId, userIds).then(resp => {
this.$message.success('绑定单位管理员成功!');
}).catch(error => {
this.$message.error('绑定单位管理员失败!');
console.error(error);
});
}
}
};
</script>
<style scoped>
</style>

View File

@ -10,23 +10,26 @@
<script>
import { putRoles } from '@/api/management/user';
import { getCompanyList } from '@/api/company';
export default {
name: 'DictionaryEdit',
props: {
companyList: {
type: Array,
default() {
return [];
}
}
},
data() {
return {
dialogVisible: false,
formModel: {
id: '',
name: '',
// nickname: '',
// mobile: '',
// email: '',
companyId: '',
roles: []
},
companyList: []
}
};
},
computed: {
@ -35,9 +38,6 @@ export default {
labelWidth: '100px',
items: [
{ prop: 'name', label: this.$t('system.name'), type: 'text', disabled: true },
// { prop: 'nickname', label: '', type: 'text' },
// { prop: 'mobile', label: '', type: 'number' },
// { prop: 'email', label: '', type: 'text' },
{ prop: 'roles', label: this.$t('system.permission'), type: 'select', required: true, options: this.$ConstSelect.roleList, multiple: true },
{ prop: 'companyId', label: '单位', type: 'select', options: this.companyList, clearable: true }
]
@ -53,23 +53,11 @@ export default {
roles: [
{ required: true, message: this.$t('rules.pleaseSelectPermission'), trigger: 'change' }
]
// nickname: [
// { required: true, message: this.$t('rules.pleaseInputNickName'), trigger: 'blur' },
// { min: 1, max: 25, message: this.$t('rules.strLength1To25'), trigger: 'blur' }
// ],
// mobile: [
// { required: true, message: this.$t('rules.pleaseSelectStatus'), trigger: 'blur' }
// ]
};
return crules;
}
},
mounted() {
getCompanyList().then(resp => {
resp.data.forEach(item => {
this.companyList.push({label: item.name, value: parseInt(item.id)});
});
});
},
methods: {
doShow(data) {
@ -78,9 +66,6 @@ export default {
this.formModel = {
id: data.id,
name: data.name,
// nickname: data.nickname,
// mobile: data.mobile,
// email: data.email,
companyId: data.companyId,
roles: data.roles
};

View File

@ -1,7 +1,7 @@
<template>
<div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<dictionary-edit ref="edit" @reloadTable="reloadTable" />
<dictionary-edit ref="edit" :company-list="companyList" @reloadTable="reloadTable" />
<correlation-map ref="correlationMap" />
<create-user ref="createUser" />
</div>
@ -9,6 +9,7 @@
<script>
import { getUserList } from '@/api/management/user';
import { getCompanyList } from '@/api/company';
import DictionaryEdit from './edit';
import CorrelationMap from './correlationMap';
import CreateUser from './createUser';
@ -26,6 +27,8 @@ export default {
pageSize: 'pageSize',
pageIndex: 'pageNum'
},
companyMap: {},
companyList: [],
queryForm: {
labelWidth: '80px',
reset: true,
@ -65,6 +68,13 @@ export default {
title: this.$t('global.email'),
prop: 'email'
},
{
title: '单位',
prop: 'companyId',
type: 'tag',
columnValue: (row) => { return this.getCompanyName(row.companyId); },
tagType: (row) => { return 'success'; }
},
{
title: this.$t('system.roles'),
prop: 'roles',
@ -98,6 +108,18 @@ export default {
};
},
created() {
this.companyMap = {};
this.companyList = [];
getCompanyList().then(resp => {
if (resp && resp.data && resp.data.length) {
resp.data.forEach(item => {
this.companyMap[item.id] = item.name;
this.companyList.push({label: item.name, value: parseInt(item.id)});
});
}
}).catch((error) => {
console.error(error);
});
},
methods: {
//
@ -105,29 +127,13 @@ export default {
this.$refs.edit.doShow(row);
},
//
handleUserDelete(index, row) {
this.$confirm(this.$t('system.wellDelType'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'),
type: 'warning'
}).then(() => {
// delPublishMap(row.id).then(response => {
// this.$message.success('')
// this.reloadTable()
// localStore.remove('mapId')
// }).catch(error => {
// this.reloadTable()
// this.$messageBox('')
// })
});
},
//
handleMapCorrelation(index, row) {
this.$refs.correlationMap.doShow(row);
},
getCompanyName(companyId) {
return this.companyMap[companyId];
},
reloadTable() {
this.queryList.reload();
},

Binary file not shown.