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

This commit is contained in:
fan 2020-01-20 18:40:03 +08:00
commit 69d624465f
37 changed files with 1348 additions and 104 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,27 +0,0 @@
import Group from 'zrender/src/container/Group';
import createPathSvg from './components/pathsvg';
export default class AirConditioner extends Group {
constructor(device) {
super();
this.model = device.model;
this.zlevel = device.model.zlevel;
this.z = device.model.z;
this._type = device.model._type;
this.code = device.model.code;
this.create();
}
create() {
this.grouper = new Group({
id: this.model.code,
position: [this.model.point.x, this.model.point.y]
});
this.path = createPathSvg(this.model);
this.add(this.grouper);
this.grouper.add(this.path);
}
setModel(dx, dy) {
this.model.point.x += dx;
this.model.point.y += dy;
}
}

View File

@ -0,0 +1,27 @@
import Group from 'zrender/src/container/Group';
import createPathSvg from '../components/pathsvg';
export default class airConditioner extends Group {
constructor(device) {
super();
this.model = device.model;
this.zlevel = device.model.zlevel;
this.z = device.model.z;
this._type = device.model._type;
this.code = device.model.code;
this.create();
}
create() {
this.grouper = new Group({
id: this.model.code,
position: [this.model.point.x, this.model.point.y]
});
this.path = createPathSvg(this.model);
this.add(this.grouper);
this.grouper.add(this.path);
}
setModel(dx, dy) {
this.model.point.x += dx;
this.model.point.y += dy;
}
}

View File

@ -31,7 +31,7 @@ export default class chiller extends Group {
},
style: {
stroke:this.model.color,
lineWidth:1
lineWidth:2
}
});
this.circle1 = new Circle({
@ -81,7 +81,7 @@ export default class chiller extends Group {
},
style: {
stroke:this.model.color,
lineWidth:1
lineWidth:2
}
});
@ -104,7 +104,7 @@ export default class chiller extends Group {
},
style: {
stroke:this.model.color,
lineWidth:1
lineWidth:2
}
});
@ -127,7 +127,7 @@ export default class chiller extends Group {
},
style: {
stroke:this.model.color,
lineWidth:1
lineWidth:2
}
});

View File

@ -0,0 +1,88 @@
import Group from 'zrender/src/container/Group';
import Polygon from 'zrender/src/graphic/shape/Polygon';
import Polyline from 'zrender/src/graphic/shape/Polyline';
import Circle from 'zrender/src/graphic/shape/Circle';
export default class smookProofFd extends Group {
constructor(device) {
super();
this.model = device.model;
this._type = device.model._type;
this._code = device.model.code;
this.zlevel = device.model.zlevel;
this.z = device.model.zlevel;
this.create();
}
create() {
this.grouper = new Group({
id: this.model.code,
position: [this.model.point.x, this.model.point.y]
});
this.polygon1 = new Polygon({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
points:[
[0, 0],
[this.model.width, 0],
[this.model.width, this.model.width / 2],
[0, this.model.width / 2]
]
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.circle = new Circle({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
cx:this.model.width / 2,
cy:this.model.width / 4,
r:this.model.width / 4
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.polyline1 = new Polyline({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
points:[
[0, 0],
[this.model.width, this.model.width / 2]
]
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.polyline2 = new Polyline({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
points:[
[this.model.width, 0],
[0, this.model.width / 2]
]
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.grouper.add(this.polygon1);
this.grouper.add(this.circle);
this.grouper.add(this.polyline1);
this.grouper.add(this.polyline2);
this.add(this.grouper);
}
setModel(dx, dy) {
this.model.point.x += dx;
this.model.point.y += dy;
}
}

View File

@ -26,7 +26,7 @@ export default class frozenPump extends Group {
},
style: {
stroke: this.model.color,
lineWidth:1
lineWidth:2
}
});
this.triangle = new Polygon({

View File

@ -0,0 +1,104 @@
import Group from 'zrender/src/container/Group';
import Polygon from 'zrender/src/graphic/shape/Polygon';
import Polyline from 'zrender/src/graphic/shape/Polyline';
import Ellipse from 'zrender/src/graphic/shape/Ellipse';
export default class smookProofFd extends Group {
constructor(device) {
super();
this.model = device.model;
this._type = device.model._type;
this._code = device.model.code;
this.zlevel = device.model.zlevel;
this.z = device.model.zlevel;
this.create();
}
create() {
this.grouper = new Group({
id: this.model.code,
position: [this.model.point.x, this.model.point.y]
});
this.ellipse = new Ellipse({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
cx:this.model.width / 2,
cy:this.model.width * 0.4,
rx:this.model.width / 2,
ry:this.model.width * 0.4
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.polyline1 = new Polyline({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
points:[
[this.model.width / 2, this.model.width * 0.8],
[this.model.width / 2, this.model.width * 1.2]
]
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.polyline2 = new Polyline({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
points:[
[0, this.model.width * 1.2],
[this.model.width, this.model.width * 2.8]
]
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.polyline3 = new Polyline({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
points:[
[this.model.width, this.model.width * 1.2],
[0, this.model.width * 2.8]
]
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.polygon1 = new Polygon({
zlevel: this.model.zlevel,
z: this.model.z,
shape:{
points:[
[0, this.model.width * 1.2],
[this.model.width, this.model.width * 1.2],
[this.model.width, this.model.width * 2.8],
[0, this.model.width * 2.8]
]
},
style: {
stroke:this.model.color,
lineWidth:2
}
});
this.grouper.add(this.ellipse);
this.grouper.add(this.polyline1);
this.grouper.add(this.polygon1);
this.grouper.add(this.polyline2);
this.grouper.add(this.polyline3);
this.add(this.grouper);
}
setModel(dx, dy) {
this.model.point.x += dx;
this.model.point.y += dy;
}
}

View File

@ -1,7 +1,7 @@
import Group from 'zrender/src/container/Group';
import createPathSvg from './components/pathsvg';
import createPathSvg from '../components/pathsvg';
export default class VolumeControlDamper extends Group {
export default class volumeControlDamper extends Group {
constructor(device) {
super();
this.model = device.model;

View File

@ -23,8 +23,8 @@ import BrakeMachine from './brakeMachine';
import EntranceGuard from './entranceGuard/index';
import SemiAutomaticTicketMachine from './semiAutomaticTicketMachine';
import TicketMachine from './ticketMachine';
import AirConditioner from './airConditioner';
import VolumeControlDamper from './volumeControlDamper';
import AirConditioner from './bas/airConditioner';
import VolumeControlDamper from './bas/volumeControlDamper';
const iscsShape = {};
iscsShape[deviceType.ManualAlarmButton] = ManualAlarmButton;

View File

@ -443,9 +443,7 @@ export default {
start: true,
code: this.selected.code,
operation: OperationEvent.StationStand.detail.menu.operation,
param: {
standCode: this.selected.code
}
param: {}
};
this.$store.dispatch('training/nextNew', step).then(({ valid, response }) => {
if (valid) {

View File

@ -106,6 +106,8 @@ export default {
$route(val) {
if (val.path === '/orderauthor/rules/manage') {
this.$refs.keMenu.activeIndex = val.path;
} else if (val.path === '/design/home') {
this.$refs.keMenu.activeIndex = val.path;
}
}
},

View File

@ -940,15 +940,15 @@ export const asyncRouter = [
path: '/iscs',
component: Layout,
meta: {
i18n: 'router.iscsSystem',
roles: [admin]
i18n: 'router.iscsSystem'
},
children: [
{
path:'design',
component: IscsDesign,
meta: {
i18n: 'router.iscsDraw'
i18n: 'router.iscsDraw',
roles: [admin]
},
children: [
{
@ -962,7 +962,8 @@ export const asyncRouter = [
path: 'system',
component: IscsSystem,
meta: {
i18n: 'router.iscsSystem'
i18n: 'router.iscsSystem',
roles: [admin, user]
},
children: [
{

View File

@ -28,7 +28,6 @@ function hasPermission(roles, route, parentsRoles) {
setHonePagePath(route, roles);
if (route.meta && route.meta.roles) {
// 如果存在本级路由则使用自己的roles过滤
if (getSessionStorage('project').startsWith('design')) {
const result = roles.filter(role => route.meta.roles.indexOf(role) >= 0) || [];
return result.length && route.meta.roles.indexOf(userTrainingPlatform) < 0;
@ -107,6 +106,11 @@ const permission = {
}
const accessedRouters = filterAsyncRouter(asyncRouter, roles);
accessedRouters.forEach(route => {
if (route.children && route.children.length == 0) {
route.hidden = true;
}
});
commit('SET_ROUTERS', accessedRouters);
resolve();
});

View File

@ -5,7 +5,7 @@
<el-input v-model="form.code" :disabled="true" />
</el-form-item>
<el-form-item label="图形宽度" prop="width">
<el-input-number v-model="form.width" :min="40" />
<el-input-number v-model="form.width" :min="20" />
</el-form-item>
<el-form-item label="X轴坐标" prop="x">
<el-input-number v-model="form.x" controls-position="right" :min="1" />
@ -33,7 +33,7 @@ export default {
buttonText: '立即创建',
form:{
code:'',
width: 40,
width: 20,
x: 10,
y: 10
},
@ -103,7 +103,7 @@ export default {
this.showDeleteButton = false;
this.form = {
code:'',
width: 40,
width: 20,
x: 10,
y: 10
};

View File

@ -0,0 +1,10 @@
<template>
<div>
站台层
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
站厅层
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
售检票
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,208 @@
<template>
<div class="control-bas-box">
<div class="title-name">会展中心站大系统模式表</div>
<div class="control-bas">
<el-table :data="tableData" :header-row-style="tableTitleStyle" :cell-style="rowStyle" :span-method="objectSpanMethod" style="float: left;">
<el-table-column label="日期" width="300">
<template slot="header">
<div class="title-0">全年运行工况</div>
<div class="title-0">运行模式号</div>
<div class="title-0">模式状态</div>
<div class="title-0">火灾指示灯:</div>
</template>
<template slot-scope="scope">
<div class="table-0-top">
<div class="left">
{{ scope.row.date }}
</div>
<div class="right">
<div>空调机</div>
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="province" width="120">
<template slot="header">
<div style="width: 100%">模式</div>
<div style="width: 100%">编号</div>
</template>
</el-table-column>
<el-table-column label="大系统模式表">
<el-table-column label="新风机">
<el-table-column prop="province" label="FAF-1" width="120" />
<el-table-column prop="city" label="FAF-2" width="120" />
</el-table-column>
<el-table-column label="组合式空调器">
<el-table-column prop="province" label="AHU-1" width="120" />
<el-table-column prop="city" label="AHU-2" width="120" />
</el-table-column>
<el-table-column label="回排风机">
<el-table-column prop="province" label="RAF/SEF-1" width="120" />
<el-table-column prop="city" label="RAF/SEF-2" width="120" />
</el-table-column>
<el-table-column label="风机1">
<el-table-column prop="province" label="MD-1" width="120" />
<el-table-column prop="province" label="MD-2" width="120" />
<el-table-column prop="province" label="MD-3" width="120" />
<el-table-column prop="province" label="MD-4" width="120" />
<el-table-column prop="province" label="MD-5" width="120" />
<el-table-column prop="province" label="MD-6" width="120" />
<el-table-column prop="province" label="MD-7" width="120" />
<el-table-column prop="province" label="MD-8" width="120" />
<el-table-column prop="province" label="MD-9" width="120" />
<el-table-column prop="province" label="MD-10" width="120" />
<el-table-column prop="province" label="MD-11" width="120" />
<el-table-column prop="province" label="MD-12" width="120" />
<el-table-column prop="province" label="MD-13" width="120" />
</el-table-column>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
export default {
data() {
return {
tableTitleStyle: 'text-align: center; height: 35px; padding: 0;background: #45607B;',
rowStyle: 'text-align: center;height: 35px; padding: 0; background: #45607B;',
tableData: [{
date: '2016-05-03',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-02',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-04',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-01',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-08',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-06',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}, {
date: '2016-05-07',
name: '王小虎',
province: '上海',
city: '普陀区',
address: '上海市普陀区金沙江路 1518 弄',
zip: 200333
}]
};
},
methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) { //
if (rowIndex % 4 === 0) {
return {
rowspan: 4,
colspan: 1
};
} else {
return {
rowspan: 0,
colspan: 0
};
}
}
}
}
};
</script>
<style lang="scss" scoped>
.control-bas-box{
width: 100%;
.table-0{
width: 300px;
float: left;
}
.table-0-top{
height: 140px;
.left{
float: left;
}
.right{
float: right;
width: 60%;
}
}
}
.control-bas{
margin: 30px;
padding: 0;
overflow: auto;
box-sizing: border-box;
border: 1px solid #fff;
}
.table-title-box{
text-align: center;
}
.title-name{
width: 100%;
text-align: center;
font-size: 26px;
margin-top: 30px;
color: #56E5DE;
}
.title-0{
width: 100%;
line-height: 20px;
text-align: left;
padding: 0;
}
/deep/{
.el-table--border{
background: #45607B;
width: 100%;
border: none;
}
.el-table th, .el-table tr{
background: #45607B;
color: #fff;
}
.el-table::before{
background: #45607B;
}
.el-table--border::after, .el-table--group::after{
background: #45607B;
}
.el-table thead.is-group th{
background: #45607B;
text-align: center;
}
.el-table--scrollable-x .el-table__body-wrapper{
height: 400px;
}
.el-table .cell{
padding: 0;
}
}
</style>

View File

@ -1,5 +1,6 @@
<template>
<div>
<div style="position: absolute; left: 48%; top: 15%;font-size: 20px;color: #9EEBEF;">语音广播</div>
<div class="area-selection">
<el-row><div style="margin-top: 10px;margin-bottom: 5px; color: #9EEBEF;">特定区域</div></el-row>
<el-row><div class="area-selection-button">全线</div></el-row>
@ -11,25 +12,118 @@
<el-row><div class="area-selection-button">全换乘通道</div></el-row>
</div>
<div class="broadcast-form">
<div v-for="item in verticalHeader">
<el-row>
<el-col><div>{{ item.name }}</div></el-col>
<div v-for="it in stationList">
<div v-if="item.type===header">
<div v-for="item in verticalHeader" :style="{width: tableWidth+'px'}" class="iscs-pa-table">
<div class="left-header">{{ item.name }}</div>
<div style="position: relative; left: 5%;">
<div v-for="it in stationList" class="table-grid">
<div v-if="item.type==='header'" class="pa-table-header">
<div>{{ it }}</div>
</div>
<div v-else>
<div />
<div class="pa-table-content">
<div class="pa-table-content-inside" />
</div>
<div style="display: inline-block;margin-left: 5px;height: 18px;line-height: 18px;transform: translateY(-25%);color: #192780;">0</div>
</div>
</div>
</div>
</div>
</div>
<div class="broadcast-mode">
<el-row>
<el-col :span="12"><div style="height: 40px;text-align: center; background: #000088;color: #fff;line-height: 40px">实时广播</div></el-col>
<el-col :span="12"><div class="broadcast-mode-button">广播</div></el-col>
</el-row>
</div>
<div class="broadcast-operations">
<el-row>
<el-col :span="12"><div style="height: 80px;text-align: center; background: #000088;color: #fff;padding-top: 30px">预备<br>广播</div></el-col>
<el-col :span="12">
<div class="broadcast-mode-button">
<div class="pa-check-box" />
<div style="position: relative; left: 5px;display: inline-block;">普通预录</div>
</div>
<br>
<div class="broadcast-mode-button">
<div class="pa-check-box" style="background: #CDCDCD;" />
<div style="position: relative; left: 5px;display: inline-block; color: #f00;">紧急预录</div>
</div>
</el-col>
</el-row>
<el-row style="padding-bottom: 10px">
<el-col :span="12">
<div class="broadcast-mode-button">广播内容</div>
</el-col>
<el-col :span="12">
<div class="broadcast-mode-button">广播停止</div>
</el-col>
</el-row>
</div>
<div class="background-music">
<el-row>
<el-col :span="12"><div style="height: 40px;text-align: center; background: #000088;color: #fff;line-height: 40px">背景音乐</div></el-col>
</el-row>
<el-row style="padding-bottom: 10px">
<el-col :span="12"><div class="broadcast-mode-button">播放音乐</div></el-col>
<el-col :span="12"><div class="broadcast-mode-button">停止音乐</div></el-col>
</el-row>
</div>
<div class="pa-grey-box" />
<div class="pa-statements">
<el-row style="margin-bottom: 10px" :gutter="10">
<el-col :span="3"><div style="background: #CCCCCC;color: #000; text-align: center">1</div></el-col>
<el-col :span="9"><div>没有占用</div></el-col>
<el-col :span="3"><div style="background: #887711;color: #000; text-align: center">7</div></el-col>
<el-col :span="9"><div>总调话筒口播</div></el-col>
</el-row>
<el-row style="margin-bottom: 10px" :gutter="10">
<el-col :span="3"><div style="background: #FF0000;color: #000; text-align: center">2</div></el-col>
<el-col :span="9"><div>车站消防广播</div></el-col>
<el-col :span="3"><div style="background: #006600;color: #000; text-align: center">8</div></el-col>
<el-col :span="9"><div>行调话筒口播</div></el-col>
</el-row>
<el-row style="margin-bottom: 10px" :gutter="10">
<el-col :span="3"><div style="background: #880000;color: #000; text-align: center">3</div></el-col>
<el-col :span="9"><div>联动消防广播</div></el-col>
<el-col :span="3"><div style="background: #778877;color: #000; text-align: center">9</div></el-col>
<el-col :span="9"><div>中心普通语录</div></el-col>
</el-row>
<el-row style="margin-bottom: 10px" :gutter="10">
<el-col :span="3"><div style="background: #0000FF;color: #000; text-align: center">5</div></el-col>
<el-col :span="9"><div>环调话筒广播</div></el-col>
<el-col :span="3"><div style="background: #555454;color: #000; text-align: center">11</div></el-col>
<el-col :span="9"><div>车站普通语录</div></el-col>
</el-row>
<el-row style="margin-bottom: 10px" :gutter="10">
<el-col :span="3"><div style="background: #554488;color: #000; text-align: center">6</div></el-col>
<el-col :span="9"><div>中心紧急语录</div></el-col>
<el-col :span="3"><div style="background: #556688;color: #000; text-align: center">12</div></el-col>
<el-col :span="9"><div>ATS预录</div></el-col>
</el-row>
<el-row style="margin-bottom: 10px" :gutter="10">
<el-col :span="3"><div style="background: #44CC55;color: #000; text-align: center">6</div></el-col>
<el-col :span="9"><div>车站话筒口播</div></el-col>
<el-col :span="3"><div style="background: #887711;color: #000; text-align: center">12</div></el-col>
<el-col :span="9"><div>故障</div></el-col>
</el-row>
<el-row style="margin-bottom: 10px" :gutter="10">
<el-col :span="3"><div style="background: #FF00FF;color: #000; text-align: center">7</div></el-col>
<el-col :span="9"><div>车站紧急语录</div></el-col>
<el-col :span="3"><div style="background: #115577;color: #000; text-align: center">13</div></el-col>
<el-col :span="9"><div>设备通讯失败</div></el-col>
</el-row>
<el-row style="margin-bottom: 10px" :gutter="10">
<el-col :span="3"><div><img style="width: 15px;" :src="musicIcon"></div></el-col>
<el-col :span="9"><div>背景音乐</div></el-col>
<el-col :span="3"><div style="background: #FFFFFF;width: 22px;height: 13px;"><div class="pa-check-box-small" /></div></el-col>
<el-col :span="9"><div>被选择</div></el-col>
</el-row>
</div>
</div>
</template>
<script>
import MusicIcon from '@/assets/iscs_icon/music_icon.png';
export default {
name: 'HomeScreen',
data() {
@ -43,8 +137,14 @@ export default {
{name: '办公区', type: 'checkBox'},
{name: '换乘通道', type: 'checkBox'}
],
musicIcon: MusicIcon,
stationList: ['会展中心站', '世纪大道站', '交通大学站', '市图书馆站', '中心医院站', '未来路站', '火车站', '人民广场站', '体育中心站']
};
},
computed: {
tableWidth() {
return this.stationList.length * 120 + 80;
}
}
};
</script>
@ -80,9 +180,160 @@ export default {
border-right: 3px solid #fff;
border-bottom: 3px solid #fff;
width: 80%;
height: 40%;
top: 200px;
position: absolute;
left: 7%;
overflow-x: auto;
padding-top: 20px;
}
.table-grid{
width: 120px;
display: inline-block;
padding-left: 10px;
margin-bottom: 10px;
font-size: 14px;
}
.left-header{
width: 120px;
height: 30px;
display: inline-block;
padding-left: 20px;
font-size: 14px;
text-align: left;
color: #A2E8EB;
position:fixed;
left: 7.15%;
background: #45607B;
z-index: 10;
}
.pa-table-header{
background: #cccccc;
border-top: 2px solid #fff;
border-left: 2px solid #fff;
border-right: 2px solid #898888;
border-bottom: 2px solid #898888;
}
.pa-table-content{
margin:0 auto;
height: 18px;
width: 18px;
background: #D4D4D4;
display: inline-block;
border-top: 2px solid #fff;
border-left: 2px solid #fff;
border-right: 2px solid #898888;
border-bottom: 2px solid #898888;
}
.pa-table-content-inside{
height: 10px;
width: 10px;
margin: auto;
background:#CCCCCC;
position: relative;
top: 50%;
transform: translateY(-50%);
border-top: 2px solid #fff;
border-left: 2px solid #fff;
border-right: 2px solid #898888;
border-bottom: 2px solid #898888;
}
.pa-grey-box{
position: absolute;
left: 4%;
top: 64%;
width: 81%;
height: 30%;
background: #DDDDDD;
border-top: 3px solid #898888;
border-left: 3px solid #898888;
border-right: 3px solid #fff;
border-bottom: 3px solid #fff;
}
.pa-statements{
position: absolute;
left: 86%;
top: 64%;
width: 13%;
height: 30%;
font-size: 12px;
color: #fff;
}
.broadcast-mode{
position: absolute;
left: 88%;
top: 25%;
border-top: 3px solid #898888;
border-left: 3px solid #898888;
border-right: 3px solid #fff;
border-bottom: 3px solid #fff;
width: 11%;
font-size: 12px;
}
.broadcast-mode-button{
height: 30px;
text-align: center;
background: #CCCCCC;
position: relative;
top: 5px;
width: 85%;
left: 5%;
line-height: 28px;
border-top: 2px solid #fff;
border-left: 2px solid #fff;
border-right: 2px solid #898888;
border-bottom: 2px solid #898888;
}
.broadcast-operations{
position: absolute;
left: 88%;
top: 32%;
border-top: 3px solid #898888;
border-left: 3px solid #898888;
border-right: 3px solid #fff;
border-bottom: 3px solid #fff;
width: 11%;
font-size: 12px;
background: #778899;
}
.pa-check-box{
position: relative;
display: inline-block;
left: 3px;
width: 12px;
height: 12px;
background: #2EFF74;
border-top: 2px solid #898888;
border-left: 2px solid #898888;
border-right: 2px solid #fff;
border-bottom: 2px solid #fff;
}
.pa-check-box-small{
position: relative;
left: 6px;
top: 2px;
width: 10px;
height:9px;
background: #27FF27;
border-top: 1px solid #FFF;
border-left: 1px solid #FFF;
border-right: 1px solid #898888;
border-bottom: 1px solid #898888;
}
.background-music{
position: absolute;
left: 88%;
top: 48%;
border-top: 3px solid #898888;
border-left: 3px solid #898888;
border-right: 3px solid #fff;
border-bottom: 3px solid #fff;
width: 11%;
font-size: 12px;
background: #778899;
}
::-webkit-scrollbar {
width: 2px;
height: 6px;
}
</style>

View File

@ -0,0 +1,10 @@
<template>
<div>
中心设备状态
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
车站控制
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
车站设备状态
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
车站时序
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
车站时序编辑
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
防淹门
</div>
</template>
<script>
export default {
};
</script>

View File

@ -1,5 +1,5 @@
<template>
<div style="height: 100%; width: 100%;">
<div style="height: 100%; width: 100%;overflow-y: auto;">
<standFAS v-if="mode == 'standFAS'" />
<stationHallFAS v-else-if="mode == 'stationHallFAS'" />
<systemFAS v-else-if="mode == 'systemFAS'" />
@ -9,6 +9,20 @@
<time-preview v-else-if="mode === 'TimePreview'" />
<station-network v-else-if="mode === 'StationNetwork'" />
<emergency-release v-else-if="mode === 'EmergencyRelease'" />
<controlBAS v-else-if="mode === 'controlBAS'" />
<mainScreenPA v-else-if="mode === 'mainScreenPA'" />
<radioListeningPA v-else-if="mode === 'radioListeningPA'" />
<timePreviewPA v-else-if="mode === 'timePreviewPA'" />
<controlCCTV v-else-if="mode === 'controlCCTV'" />
<timeCCTV v-else-if="mode === 'timeCCTV'" />
<timeEditCCTV v-else-if="mode === 'timeEditCCTV'" />
<statusCCTV v-else-if="mode === 'statusCCTV'" />
<centerStatusCCTV v-else-if="mode === 'centerStatusCCTV'" />
<PSD v-else-if="mode === 'PSD'" />
<AFC v-else-if="mode === 'AFC'" />
<stationHallACS v-else-if="mode === 'stationHallACS'" />
<standACS v-else-if="mode === 'standACS'" />
<doorFG v-else-if="mode === 'doorFG'" />
</div>
</template>
@ -22,6 +36,20 @@ import LcdControl from './pis/lcdControl';
import TimePreview from './pis/timePreview';
import StationNetwork from './pis/stationNetwork';
import EmergencyRelease from './pis/emergencyRelease';
import controlBAS from './bas/controlBAS';
import mainScreenPA from './pa/mainScreenPA';
import radioListeningPA from './pa/radioListeningPA';
import timePreviewPA from './pa/timePreviewPA';
import controlCCTV from './cctv/controlCCTV';
import timeCCTV from './cctv/timeCCTV';
import timeEditCCTV from './cctv/timeEditCCTV';
import statusCCTV from './cctv/statusCCTV';
import centerStatusCCTV from './cctv/centerStatusCCTV';
import PSD from './psd/psd';
import AFC from './afc/afc';
import stationHallACS from './acs/stationHallACS';
import standACS from './acs/standACS';
import doorFG from './fg/doorFG';
export default {
components: {
@ -33,7 +61,21 @@ export default {
LcdControl,
TimePreview,
StationNetwork,
EmergencyRelease
EmergencyRelease,
controlBAS,
mainScreenPA,
radioListeningPA,
timePreviewPA,
controlCCTV,
timeCCTV,
timeEditCCTV,
statusCCTV,
centerStatusCCTV,
PSD,
AFC,
stationHallACS,
standACS,
doorFG
},
data() {
return {
@ -44,6 +86,9 @@ export default {
'$route': function(val) {
this.mode = this.$route.params.mode;
}
},
mounted() {
this.mode = this.$route.params.mode;
}
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
主画面
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
广播监听
</div>
</template>
<script>
export default {
};
</script>

View File

@ -0,0 +1,10 @@
<template>
<div>
计时一览
</div>
</template>
<script>
export default {
};
</script>

View File

@ -1,6 +1,6 @@
<template>
<div>
紧急发布一览
LCD屏控制
</div>
</template>
<script>

View File

@ -1,10 +1,341 @@
<template>
<div>
紧急发布一览
<div class="main_screen">
<div class="main_screen_header">
<div class="screen_header_text">乘客信息</div>
</div>
<div class="main_screen_content">
<div class="screen_left">
<div class="screen_left_tab">特定区域</div>
<div class="sceen_left_content">
<div class="screen_operate_name">全线</div>
<div class="screen_operate_name">全站厅(LCD)</div>
<div class="screen_operate_name">全上行站台</div>
<div class="screen_operate_name">全下行站台</div>
<div class="screen_operate_name">全出入口</div>
<div class="screen_operate_name">全物业</div>
<div class="screen_operate_name">全天桥</div>
<div class="screen_operate_name">出入口(LED)</div>
</div>
</div>
<div class="screen_main_content">
<div class="screen_main_content_inner">
<div class="screen_left_text_group">
<div class="each_data_info">车站</div>
<div class="each_data_info">站厅LCD</div>
<div class="each_data_info">上行站台</div>
<div class="each_data_info">下行站台</div>
<div class="each_data_info">出站口</div>
<div class="each_data_info">天桥1</div>
<div class="each_data_info">天桥2</div>
<div class="each_data_info">物业</div>
<div class="each_data_info">LED</div>
</div>
<div class="screen_right_group">
<div class="screen_right_group_in">
<div v-for="station in stationList" :key="station.name" class="each_station_info">
<div class="each_data_info">
<div class="screen_station_name">{{ station.stationName }}</div>
</div>
<div v-if="station.chidren&&station.chidren.length>0">
<div v-for="(child,index) in station.chidren" :key="station.name+index" class="each_data_info">
<div v-if="child.status=='default'" class="data_button_info button_default" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="screen_right">
<div class="each_operate">
<div class="each_operate_text">操作</div>
<div class="each_operate_button">信息发布<br>窗口</div>
</div>
<div class="each_operate">
<div class="each_operate_text">信息清除</div>
<div class="each_operate_button">清除<br>普通信息</div>
</div>
</div>
</div>
<div class="main_screen_footer">
<textarea id="screen_footer_text" name="" cols="30" rows="10" />
<div class="footer_button_group">
<div class="each_footer_button">
<div class="each_footer_button_icon screen_status_green" />
<div class="each_footer_button_text">正常</div>
</div>
<div class="each_footer_button">
<div class="each_footer_button_icon screen_status_red" />
<div class="each_footer_button_text">故障</div>
</div>
<div class="each_footer_button">
<div class="each_footer_button_icon screen_status_blue" />
<div class="each_footer_button_text">通信故障</div>
</div>
<div class="each_footer_button">
<div class="each_footer_button_icon screen_status_active" />
<div class="each_footer_button_text">选定</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name:'MainScreen',
data() {
return {
stationList:[
{
stationName:'会展中心站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
},
{
stationName:'世纪大道站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
},
{
stationName:'交通大学站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
},
{
stationName:'市图书馆站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
},
{
stationName:'中心医院站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
},
{
stationName:'未来路站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
},
{
stationName:'火车站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
},
{
stationName:'人民广场站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
},
{
stationName:'体育中心站',
chidren:[
{status:'none'}, {status:'default'},
{status:'default'}, {status:'default'},
{status:'none'}, {status:'none'},
{status:'none'}, {status:'default'}
]
}
]
};
}
};
</script>
<style lang="scss" scoped>
.screen_header_text{margin-top: 20px;text-align: center;color: #9af1ec;font-size: 18px;padding-right: 100px;padding-bottom: 10px;}
.main_screen{padding-left: 50px;width: 100%;}
.main_screen_header{}
.screen_main_content_inner{width: 100%;height: 500px;border-top: 2px solid #8c8a89;overflow-y: auto;display:flex;border-left: 2px solid #8c8a89;border-right: 2px solid #fff;border-bottom: 2px solid #fff;}
.main_screen_content{display:inline-block;width: 100%;padding-left:100px;padding-right:200px;position: relative;height:500px;}
.screen_left{display: inline-block;padding-bottom: 10px;padding-top: 10px;width: 100px;border: 2px #ccc solid;
border-top: 2px solid #8c8a89;border-left: 2px solid #8c8a89;border-right: 2px solid #fff;border-bottom: 2px solid #fff;position:absolute;left:0;}
.screen_left_tab{
font-size: 12px;
text-align: center;
color: #86e4d6;
}
.sceen_left_content{}
.screen_right{display: inline-block;position:absolute;right:0;top:0;width: 200px;}
.each_operate{width: 92px;padding: 10px;border-top: 2px solid #8c8a89;border-left: 2px solid #8c8a89;border-right: 2px solid #fff;border-bottom: 2px solid #fff;margin-top: 30px;margin-left: 30px;}
.each_operate_text{text-align: center;font-size: 12px;color: #a9f4f6;}
.each_operate_button{text-align: center;font-size: 12px;margin-top: 5px;background: #CCCCCC;display: inline-block;border-top: 2px solid #fff;border-left: 2px solid #fff;border-right: 2px solid #565656;border-bottom: 2px solid #565656;padding: 2px 8px;line-height: 140%;}
.footer_button_group{position: absolute;right: 0;top: 0;width: 160px;}
.main_screen_footer{margin-left: 120px;padding-right:160px;position: relative;margin-top:10px;}
#screen_footer_text{
width:100%;
resize:none;
height: 190px;
border-top: 2px solid #8c8a89;
border-left: 2px solid #8c8a89;
border-right: 2px solid #fff;
border-bottom: 2px solid #fff;
}
.each_footer_button{margin-left:20px;margin-top: 10px;}
.each_footer_button_icon{width: 14px;height: 14px;display: inline-block;}
.each_footer_button_text{font-size: 13px;color: #fff;margin-left: 5px;display: inline-block;vertical-align: top;margin-top: 1px;}
.screen_main_content{padding-left: 20px;padding-right: 20px;}
.screen_status_red{background:#ff0000;}
.screen_status_green{background:#00ff00;}
.screen_status_blue{background:#00aaff}
.screen_status_active{border-top: 2px solid #f1f1f1;border-left: 2px solid #d0d8dd;border-right: 2px solid #959da0;border-bottom: 2px solid #90999d;}
.screen_status_active:after{
content:'';
border-top: 2px solid #a6a2a6;
border-left: 2px solid #a5aca5;
border-right: 2px solid #ececec;
border-bottom: 2px solid #e4e4e4;
background: #00ff00;
min-width: 10px;
height: 10px;
display: inline-block;
vertical-align: top;
}
.screen_status_active::after{content:'';border-top: 2px solid #a6a2a6;border-left: 2px solid #a5aca5;border-right: 2px solid #ececec;border-bottom: 2px solid #e4e4e4;background: #00ff00;min-width: 10px;height: 10px;display: inline-block;vertical-align: top;}
.screen_left_text_group{width:180px;padding: 0px 10px 10px 10px;font-size: 14px;color: #9de4e8;display: inline-block;}
.each_data_info{margin-top:10px;height:20px;}
.screen_right_group{display: inline-block;vertical-align: top;font-size:0;overflow-x: auto;min-height:100%;}
.each_station_info{width:130px;display: inline-block;vertical-align:top;padding-right: 10px;}
.screen_station_name,.screen_operate_name{
padding: 2px 0px;
font-size: 12px;
background: #cccccc;
text-align: center;
border-top: 2px solid #f9f9f9;
border-left: 2px solid #f6f8f8;
border-right: 2px solid #9e9e9e;
border-bottom: 2px solid #636667;
}
.screen_station_name{
width: 120px;
}
.screen_operate_name{
width: 84px;
margin-left: 5px;
margin-top: 10px;
}
.data_button_info{
width: 14px;
height: 14px;
display: inline-block;
margin-left: 52px;
position: relative;
}
.button_default{
border-top: 2px solid #f1f1f1;border-left: 2px solid #d0d8dd;border-right: 2px solid #959da0;border-bottom: 2px solid #90999d;
}
.button_default:before{
content:'';
border-top: 2px solid #f1f1f1;border-left: 2px solid #d0d8dd;border-right: 2px solid #959da0;border-bottom: 2px solid #90999d;
min-width: 10px;
height: 10px;
display: inline-block;
vertical-align: top;
background: #cccccc;
}
.button_default::before{
content:'';
border-top: 2px solid #f1f1f1;border-left: 2px solid #d0d8dd;border-right: 2px solid #959da0;border-bottom: 2px solid #90999d;
min-width: 10px;
height: 10px;
display: inline-block;
vertical-align: top;
background: #cccccc;
}
.button_default:after{
content:'';
border-top: 2px solid #f4f4f4;border-left: 2px solid #efefef;border-right: 2px solid #727272;border-bottom: 2px solid #7f7f7f;
min-width: 10px;
height: 10px;
display: inline-block;
vertical-align: top;
background: #c9c9c9;
position: absolute;
left: 0;
top: 0;
}
.button_default::after{
content:'';
border-top: 2px solid #f4f4f4;border-left: 2px solid #efefef;border-right: 2px solid #727272;border-bottom: 2px solid #7f7f7f;
min-width: 10px;
height: 10px;
display: inline-block;
vertical-align: top;
background: #c9c9c9;
position: absolute;
left: 0;
top: 0;
}
.screen_right_group_in{
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row nowrap;
}
// safariqq360
//
.screen_right_group::-webkit-scrollbar {
height: 6px;
// height: 110px;
background-color: transparent;
}
/*定义滚动条轨道 内阴影+圆角*/
.screen_right_group::-webkit-scrollbar-track {
// box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
border-radius: 10px;
background-color: #FFFFFF;;
}
/*定义滑块 内阴影+圆角*/
.screen_right_group::-webkit-scrollbar-thumb {
border-radius: 10px;
// box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #eaeaea;
}
/*滑块效果*/
.screen_right_group::-webkit-scrollbar-thumb:hover {
border-radius: 5px;
// box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
background: rgba(0,0,0,0.4);
}
/*IE滚动条颜色*/
html {
scrollbar-face-color:#bfbfbf;/*滚动条颜色*/
scrollbar-highlight-color:#000;
scrollbar-3dlight-color:#000;
scrollbar-darkshadow-color:#000;
scrollbar-Shadow-color:#adadad;/*滑块边色*/
scrollbar-arrow-color:rgba(0,0,0,0.4);/*箭头颜色*/
scrollbar-track-color:#eeeeee;/*背景颜色*/
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<div>
紧急发布一览
车站网络
</div>
</template>
<script>

View File

@ -1,6 +1,6 @@
<template>
<div>
紧急发布一览
计时一览
</div>
</template>
<script>

View File

@ -0,0 +1,10 @@
<template>
<div>
屏蔽门
</div>
</template>
<script>
export default {
};
</script>

View File

@ -11,13 +11,11 @@
<script>
import TopNav from './nav.vue';
// import bottom from './bottom.vue';
// import ConfigContent from './config/index';
export default {
components: {
TopNav
// bottom,
// ConfigContent
// bottom
},
data() {
return {
@ -31,13 +29,14 @@ export default {
<style lang="scss" scoped>
.iscs-system-box{
position: relative;
// position: relative;
height: 100%;
overflow-y: auto;
}
.content-box{
width: 100%;
height: 100%;
padding: 95px 0 0;
padding: 34px 0 0;
background: #45607B;
}
</style>

View File

@ -4,7 +4,7 @@
<div v-for="(item, index) in navList" :key="index" class="nav-list-box" :class="{'active': selectIndex == index}" @click="selectTab(item, index)">{{ item.name }}</div>
</div>
<div class="nav-button-box">
<div v-for="(item, index) in navList[selectIndex].children" :key="index" class="nav-list-box" :class="{'active': selectChildIndex == index}" @click="selectChildren(item, index)">{{ item.name }}</div>
<div v-for="(item, index) in navList[selectIndex].children" v-show="show(item)" :key="index" class="nav-list-box" :class="{'active': selectChildIndex == index}" @click="selectChildren(item, index)">{{ item.name }}</div>
</div>
<div class="nav-button-box station-box1">
<div v-for="(item, index) in stationList" :key="index" class="station-box">
@ -13,6 +13,17 @@
<div class="station-name">{{ item.name }}</div>
</div>
</div>
<div class="select-box">
<el-select v-model="currentSystem" placeholder="请选择" size="mini">
<el-option
v-for="item in systemList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div class="back-box" @click="back">返回主页面</div>
</div>
</template>
@ -21,31 +32,46 @@ export default {
data() {
return {
selectIndex: 0,
selectChildIndex: 0,
selectStationIndex: 0,
selectChildIndex: -1,
selectStationIndex: -1,
currentSystem: 'center',
systemList: [
{
label: '中心',
value: 'center'
},
{
label: '车站',
value: 'local'
}
],
navList: [
{
name: '火灾报警',
children: [
{
name: '站台报警',
type: 'standFAS'
type: 'standFAS',
showType: ['center', 'local']
},
{
name: '站厅报警',
type: 'stationHallFAS'
type: 'stationHallFAS',
showType: ['center', 'local']
},
{
name: '系统状态',
type: 'systemFAS'
type: 'systemFAS',
showType: ['center', 'local']
}
]
}, {
name: '机电', //
children: [
{
name: '机电',
type: 'BAS'
name: '控制模式',
type: 'controlBAS',
showType: ['center', 'local']
}
]
}, {
@ -53,15 +79,18 @@ export default {
children: [
{
name: '主画面',
type: 'PA'
type: 'mainScreenPA',
showType: ['center', 'local']
},
{
name: '广播监听',
type: 'PA'
type: 'radioListeningPA',
showType: ['center']
},
{
name: '计时一览',
type: 'PA'
type: 'timePreviewPA',
showType: ['center', 'local']
}
]
}, {
@ -69,23 +98,28 @@ export default {
children: [
{
name: '主画面',
type: 'MainScreen'
type: 'MainScreen',
showType: ['center', 'local']
},
{
name: 'LCD屏控制',
type: 'LCDcontrol'
type: 'LCDcontrol',
showType: ['center', 'local']
},
{
name: '计时一览',
type: 'TimePreview'
type: 'TimePreview',
showType: ['center', 'local']
},
{
name: '车站网络',
type: 'StationNetwork'
type: 'StationNetwork',
showType: ['center', 'local']
},
{
name: '紧急发布一览',
type: 'EmergencyRelease'
type: 'EmergencyRelease',
showType: ['center', 'local']
}
]
}, {
@ -93,23 +127,28 @@ export default {
children: [
{
name: '车站控制',
type: 'CCTV'
type: 'controlCCTV',
showType: ['center', 'local']
},
{
name: '车站时序',
type: 'CCTV'
type: 'timeCCTV',
showType: ['center', 'local']
},
{
name: '车站时序编辑',
type: 'CCTV'
type: 'timeEditCCTV',
showType: ['center', 'local']
},
{
name: '车站设备状态',
type: 'CCTV'
type: 'statusCCTV',
showType: ['center', 'local']
},
{
name: '中心设备状态',
type: 'CCTV'
type: 'centerStatusCCTV',
showType: ['center', 'local']
}
]
}, {
@ -117,7 +156,8 @@ export default {
children: [
{
name: '屏蔽门',
type: 'PSD'
type: 'PSD',
showType: ['center', 'local']
}
]
}, {
@ -125,7 +165,8 @@ export default {
children: [
{
name: '售检票',
type: 'AFC'
type: 'AFC',
showType: ['center', 'local']
}
]
}, {
@ -133,23 +174,27 @@ export default {
children: [
{
name: '站厅层',
type: 'ACS'
type: 'stationHallACS',
showType: ['center', 'local']
},
{
name: '站台层',
type: 'ACS'
type: 'standACS',
showType: ['center', 'local']
}
]
},
{
name: '防淹门', //
children: [
{
name: '防淹门',
type: 'doorFG',
showType: ['center', 'local']
}
]
}
// {
// name: '', //
// children: [
// {
// name: '',
// type: 'standFAS'
// }
// ]
// }, {
// name: '', //
// children: [
// {
@ -199,7 +244,26 @@ export default {
]
};
},
mounted() {
this.navList.forEach((nav, navIndex)=>{
if (nav.children && nav.children.length > 0) {
nav.children.forEach((child, childIndex)=>{
if (child.type && child.type === this.$route.params.mode) {
this.selectIndex = navIndex;
this.selectChildIndex = childIndex;
}
});
}
});
},
methods: {
show(item) {
let flag = false;
if (item.showType.indexOf(this.currentSystem) >= 0) {
flag = true;
}
return flag;
},
selectTab(item, index) { //
if (this.selectIndex != index) {
this.selectIndex = index;
@ -214,8 +278,10 @@ export default {
this.$router.push({ path: `/iscs/system/config/${item.type}` });
},
selectStation(item, index) { //
console.log(item);
this.selectStationIndex = index;
},
back() {
this.$router.push({ path: `/design/home` });
}
}
};
@ -292,6 +358,22 @@ export default {
background: #A1D9DC;
}
}
.select-box{
display: table;
position: absolute;
right: 120px;
top: 10px;
width: 80px;
}
.back-box{
display: table;
position: absolute;
right: 20px;
top: 15px;
cursor: pointer;
&:hover{
color: #3161cc;
}
}
}
</style>

View File

@ -304,6 +304,7 @@ export default {
return;
}
this.tableToExcel(res.data);
this.$messageBox(this.$t('tip.dataValidationFailed'));
},
tableToExcel(data) {
const filterVal = ['index'];