集中站分隔调整&线路管理配置调整

This commit is contained in:
fan 2020-04-15 14:13:08 +08:00
parent 7f9953323a
commit a1869a531f
22 changed files with 433 additions and 43 deletions

View File

@ -625,6 +625,7 @@ export default {
buttonMainName: 'Button main name:',
buttonViceName: 'Button vice name:',
automaticRouteCode: 'Automatic route code:',
cycleCode: 'Automatic reentry code:'
cycleCode: 'Automatic reentry code:',
rightCentralStationName: 'Right central station name:',
leftCentralStationName: 'Left central station name:'
};

View File

@ -324,5 +324,7 @@ export default {
selectBelongProject: 'Please select belongs to project',
selectSaidLampType: 'Please select type of said status',
enterSaidLampName: 'Please enter said status name',
selectFunctionType: 'Please select type of function'
selectFunctionType: 'Please select type of function',
enterNameOfTheCentralStationOnTheRight: 'Please enter the name of the central station on the right',
enterNameOfTheCentralStationOnTheLeft: 'Please enter the name of the central station on the left'
};

View File

@ -620,6 +620,7 @@ export default {
buttonMainName: '按钮主名称:',
buttonViceName: '按钮副名称:',
automaticRouteCode: '自动进路code:',
cycleCode: '自动折返code'
cycleCode: '自动折返code',
rightCentralStationName: '右侧集中站名称:',
leftCentralStationName: '左侧集中站名称:'
};

View File

@ -326,5 +326,7 @@ export default {
selectBelongProject: '请选择所属项目',
selectSaidLampType: '请选择表示状态类型',
enterSaidLampName: '请输入表示状态名称',
selectFunctionType: '请选择功能类型'
selectFunctionType: '请选择功能类型',
enterNameOfTheCentralStationOnTheRight: '请输入右侧集中站名称',
enterNameOfTheCentralStationOnTheLeft: '请输入左侧集中站名称'
};

View File

@ -596,6 +596,16 @@ class SkinCode extends defaultStyle {
defaultColor: '#9F9C9C', // 默认颜色
warningColor: '#FFFF00' // 告警颜色
};
this[deviceType.SplitStation] = {
lineLength: 15, // 箭头线长度
lineWidth: 2, // 线宽
height: 35, // 分隔整体高度
strokeColor: '#00FF00', // 线颜色
triangleFillColor: '#00FF00', // 三角填充颜色
textFill: '#FFFFFF', // 文字颜色
verticalDistance: 10, // 箭头三角垂直高度
horizontalDistance: 7// 箭头三角水平高度
};
this[deviceType.Train] = {
trainBody: {
trainBodyLineWidth: 1, // 车身line宽

View File

@ -230,4 +230,9 @@ deviceRender[deviceType.Axle] = {
_type:deviceType.Axle,
zlevel: 1
};
/** SplitStation 集中站分隔 */
deviceRender[deviceType.SplitStation] = {
_type: deviceType.SplitStation,
zlevel: 1
};
export default deviceRender;

View File

@ -39,7 +39,8 @@ const deviceType = {
LampFilament: 'LampFilament',
ReturnModeGroup: 'ReturnModeGroup',
ControlSwitch: 'ControlSwitch',
Axle: 'Axle'
Axle: 'Axle',
SplitStation:'SplitStation'
};
export default deviceType;

View File

@ -1,23 +1,26 @@
import Group from 'zrender/src/container/Group';
import Line from 'zrender/src/graphic/shape/Line';
import Polygon from 'zrender/src/graphic/shape/Polygon';
// import Text from 'zrender/src/graphic/Text';
import Text from 'zrender/src/graphic/Text';
export default class SplitStation extends Group {
constructor(model) {
constructor(model, style) {
super();
this.z = model.z;
this.z = 10;
this._code = model.code;
this._type = model._type;
this.zlevel = model.zlevel;
this.model = model;
this.style = model.style;
this.style = style;
this.create();
}
create() {
const model = this.model;
const style = this.style;
this.line1 = new Line({
if (!style.SplitStation) {
return;
}
this.verticalLine = new Line({
zlevel: this.zlevel,
z: this.z,
shape: {
@ -35,14 +38,100 @@ export default class SplitStation extends Group {
zlevel: this.zlevel,
z: this.z,
shape: {
points: [[model.position.x, model.position.y + style.SplitStation.height / 2 - style.SplitStation.verticalDistance / 2]]
points: [
[model.position.x, model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance / 2],
[model.position.x - style.SplitStation.horizontalDistance, model.position.y + style.SplitStation.height],
[model.position.x - style.SplitStation.horizontalDistance, model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance]
]
},
style: {
fill: style.SplitStation.triangleFillColor
}
});
this.triangleRight = new Polygon({
});
zlevel: this.zlevel,
z: this.z,
shape: {
points: [
[model.position.x, model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance / 2],
[model.position.x + style.SplitStation.horizontalDistance, model.position.y + style.SplitStation.height],
[model.position.x + style.SplitStation.horizontalDistance, model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance]
]
},
style: {
fill: style.SplitStation.triangleFillColor
}
});
this.leftLine = new Line({
zlevel: this.zlevel,
z: this.z,
shape: {
x1: model.position.x - style.SplitStation.horizontalDistance,
y1: model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance / 2,
x2: model.position.x - style.SplitStation.horizontalDistance - style.SplitStation.lineLength,
y2: model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance / 2
},
style: {
lineWidth: style.SplitStation.lineWidth,
stroke: style.SplitStation.strokeColor
}
});
this.rightLine = new Line({
zlevel: this.zlevel,
z: this.z,
shape: {
x1: model.position.x + style.SplitStation.horizontalDistance,
y1: model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance / 2,
x2: model.position.x + style.SplitStation.horizontalDistance + style.SplitStation.lineLength,
y2: model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance / 2
},
style: {
lineWidth: style.SplitStation.lineWidth,
stroke: style.SplitStation.strokeColor
}
});
this.leftText = new Text({
zlevel: this.zlevel,
z: this.z,
style: {
x: model.x,
y: model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance / 2,
fontWeight: style.textStyle.fontWeight,
fontSize: style.SplitStation.fontSize,
fontFamily: style.fontFamily,
text: model.leftStationName,
textFill: style.SplitStation.textFill,
textAlign: style.textStyle.textAlign,
textVerticalAlign: style.textStyle.textVerticalAlign
}
});
this.rightText = new Text({
zlevel: this.zlevel,
z: this.z,
style: {
x: model.position.x + style.SplitStation.horizontalDistance + style.SplitStation.lineLength,
y: model.position.y + style.SplitStation.height - style.SplitStation.verticalDistance / 2,
fontWeight: style.textStyle.fontWeight,
fontSize: style.SplitStation.fontSize,
fontFamily: style.fontFamily,
text: model.rightStationName,
textFill: style.SplitStation.textFill,
textAlign: style.textStyle.textAlign,
textVerticalAlign: style.textStyle.textVerticalAlign
}
});
const leftTextWidth = this.leftText.getBoundingRect().width;
const rightTextWidth = this.rightText.getBoundingRect().width;
this.leftText.setStyle('x', model.position.x - style.SplitStation.horizontalDistance - style.SplitStation.lineLength - leftTextWidth / 2);
this.rightText.setStyle('x', model.position.x + style.SplitStation.horizontalDistance + style.SplitStation.lineLength + rightTextWidth / 2);
this.add(this.verticalLine);
this.add(this.triangleLeft);
this.add(this.triangleRight);
this.add(this.leftLine);
this.add(this.rightLine);
this.add(this.leftText);
this.add(this.rightText);
}
setShowMode() {}
setShowStation() {}
}

View File

@ -22,6 +22,7 @@ import OutFrame from './OutFrame/index.js';
import CheckBox from './checkBox/checkBox.js';
import AutomaticRoute from './AutomacticRoute/index.js';
import SaidLamp from './SaidLamp/index.js';
import SplitStation from './SplitStation/index';
/** 图库*/
const mapShape = {};
@ -64,6 +65,7 @@ mapShape[deviceType.ModeStatusGroup] = SaidLamp;
mapShape[deviceType.FaultStatusGroup] = SaidLamp;
mapShape[deviceType.ReturnModeGroup] = SaidLamp;
mapShape[deviceType.Axle] = SaidLamp;
mapShape[deviceType.SplitStation] = SplitStation;
function shapefactory(device, jmap) {
const type = device._type;

View File

@ -25,7 +25,7 @@
</el-row>
</el-form>
</div>
<el-table :data="tempData" border style="width: 100%" size="mini" highlight-current-row height="200">
<el-table :data="tempData" border style="width: 100%; height: 200px" size="mini" highlight-current-row>
<el-table-column prop="order" :width="110" :label="this.$t('menu.serialNumber2')" />
<el-table-column prop="date" :width="160" :label="this.$t('menu.time')" />
<el-table-column prop="context" :width="180" :label="this.$t('menu.implementationProcess')" />

View File

@ -7,7 +7,7 @@
</div>
</div>
<div class="content-box" :class="{'is-active': unfold}">
<el-table ref="table" :data="tempData" border :cell-style="tableStyle" style="width: 100%;background: #000;border: none;outline: none;" size="mini" height="120" highlight-current-row :show-header="false" @row-click="clickEvent">
<el-table ref="table" :data="tempData" border :cell-style="tableStyle" style="width: 100%;background: #000;border: none;outline: none; height: 120px;" size="mini" highlight-current-row :show-header="false" @row-click="clickEvent">
<el-table-column prop="station" style="margin-left:10px" />
<el-table-column prop="operation" style="margin-left:10px" />
</el-table>

View File

@ -3,7 +3,7 @@
:before-close="doClose" :showClose="true" :zIndex="2000" :modal="false" :close-on-click-modal="false"
v-dialogDrag>
<span class="control-label">{{`${requestInfo}请求如下区域的控制模式`}}</span>
<el-table ref="multipleTable" :data="tableData" border row-key="code" style="width: 100%" height="250" center
<el-table ref="multipleTable" :data="tableData" border row-key="code" style="width: 100%; height: 250px" center
size="mini" highlight-current-row>
<el-table-column prop="operate" label="操作区域">
<template slot-scope="scope">

View File

@ -78,7 +78,7 @@
交路
</el-row>
<el-row>
<el-table :data="model.route" border :height="180">
<el-table :data="model.route" border style="height: 180px;">
<el-table-column prop="date" label="日期" width="180" />
<el-table-column prop="name" label="姓名" width="180" />
<el-table-column prop="address" label="地址" />
@ -89,7 +89,7 @@
详情
</el-row>
<el-row>
<el-table :data="model.detail" border :height="180">
<el-table :data="model.detail" border style="height: 180px">
<el-table-column prop="date" label="日期" width="180" />
<el-table-column prop="name" label="姓名" width="180" />
<el-table-column prop="address" label="地址" />

View File

@ -15,7 +15,7 @@
</el-row>
<el-row>
<el-col :span="17">
<el-table :data="serviceData" border style="width: 100%" height="160">
<el-table :data="serviceData" border style="width: 100%; height: 160px">
<el-table-column prop="startStationCode" label="起点站" />
<el-table-column prop="startStationStandCode" label="起点站台" />
<el-table-column prop="endStationCode" label="终点站" />
@ -67,7 +67,7 @@
<el-col :offset="10">线路详细信息</el-col>
</el-row>
<el-row>
<el-table :data="tripData" border style="width: 100%" height="200">
<el-table :data="tripData" border style="width: 100%; height: 200px;">
<el-table-column prop="arriveTime" label="到站时间" />
<el-table-column prop="stationCode" label="车站" />
<el-table-column prop="stationStandCode" label="站台" />

View File

@ -155,7 +155,7 @@
交路
</el-row>
<el-row>
<el-table :data="model.route" border :height="140">
<el-table :data="model.route" border style="height: 140px">
<el-table-column prop="beginStationCode" label="起始站">
<template slot-scope="scope">
{{ formatName(scope.row.beginStationCode) }}
@ -176,7 +176,7 @@
详情
</el-row>
<el-row>
<el-table :data="model.detail" border :height="140">
<el-table :data="model.detail" border style="height: 140px;">
<el-table-column prop="stationCode" label="站台" :width="160">
<template slot-scope="scope">
{{ formatName(scope.row.stationCode) }}

View File

@ -135,7 +135,9 @@ export function parser(data, skinCode, showConfig) {
zrUtil.each(data.outerFrameList || [], elem => { // 矩形框列表
mapDevice[elem.code] = createDevice(deviceType.OutFrame, elem, propConvert, showConfig);
}, this);
zrUtil.each(data.splitStationList || [], elem => {
mapDevice[elem.code] = createDevice(deviceType.SplitStation, elem, propConvert, showConfig);
}, this);
zrUtil.each(data.indicatorLightList || [], elem => {
switch (elem.type) {
case 'AtsControl':
@ -295,6 +297,7 @@ export function updateMapData(state, model) {
case deviceType.ReturnModeGroup: updateForList(model, state, 'indicatorLightList'); break;
case deviceType.ControlSwitch: updateForList(model, state, 'indicatorLightList'); break;
case deviceType.Axle: updateForList(model, state, 'indicatorLightList'); break;
case deviceType.SplitStation: updateForList(model, state, 'splitStationList'); break;
}
}
}

View File

@ -373,6 +373,13 @@ const map = {
return [];
}
},
splitStationList: (state) => {
if (state.map) {
return state.map.splitStationList || [];
} else {
return [];
}
},
automaticRouteButtonList: (state) => {
if (state.map) {
return state.map.automaticRouteButtonList || [];

View File

@ -2,9 +2,9 @@ export function getBaseUrl() {
let BASE_API;
if (process.env.NODE_ENV === 'development') {
// BASE_API = 'https://joylink.club/jlcloud';
// BASE_API = 'https://test.joylink.club/jlcloud';
BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.3.5:9000'; // 袁琪
BASE_API = 'http://192.168.3.6:9000'; // 旭强
// BASE_API = 'http://192.168.3.6:9000'; // 旭强
// BASE_API = 'http://192.168.3.41:9000'; // 张赛
// BASE_API = 'http://192.168.3.82:9000'; // 杜康
// BASE_API = 'http://192.168.3.41:9000'; // 张赛

View File

@ -111,8 +111,7 @@ export default {
position: {
x: 0,
y: 0
},
deviceStationCode: ''
}
},
addModel: {
code: '',
@ -122,8 +121,7 @@ export default {
position: {
x: 0,
y: 0
},
deviceStationCode: ''
}
},
rules: {
code: [

View File

@ -164,6 +164,14 @@
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane label="站间分隔" class="tab_pane_box" name="SplitStation">
<split-station
ref="SplitStation"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
</el-tabs>
</div>
</div>
@ -189,6 +197,7 @@ import LcControlDraft from './lcControl';
import ImageControlDraft from './ImageControl';
import CheckboxDraft from './checkboxDraft';
import ControlLamp from './controlLamp';
import SplitStation from './splitStation';
import { ViewMode } from '@/scripts/ConstDic';
@ -213,7 +222,8 @@ export default {
LcControlDraft,
ImageControlDraft,
CheckboxDraft,
ControlLamp
ControlLamp,
SplitStation
},
props: {
selected: {

View File

@ -0,0 +1,234 @@
<template>
<el-tabs v-model="activeName" class="card" @tab-click="handleClick">
<el-tab-pane class="view-control" :label="$t('map.property')" name="first">
<div style="height: calc(100% - 46px);">
<el-scrollbar wrap-class="scrollbar-wrapper">
<config-list ref="dataform" :form="form" :form-model="editModel" :rules="createRules" />
</el-scrollbar>
</div>
<div class="button_box">
<el-button-group class="map-draft-group">
<el-button type="primary" size="small" @click="edit">{{ $t('map.updateObj') }}</el-button>
<el-button type="danger" size="small" @click="deleteObj">{{ $t('map.deleteObj') }}</el-button>
</el-button-group>
</div>
</el-tab-pane>
<el-tab-pane class="view-control" :label="$t('map.newConstruction')" name="second">
<div style="height: calc(100% - 46px);">
<el-scrollbar wrap-class="scrollbar-wrapper">
<config-data ref="make" :form="formMake" :form-model="addModel" :rules="createRules" />
</el-scrollbar>
</div>
<div class="button_box">
<el-button-group class="map-draft-group">
<el-button type="primary" size="small" @click="create">{{ $t('map.create') }}</el-button>
</el-button-group>
</div>
</el-tab-pane>
</el-tabs>
</template>
<script>
import { mapGetters } from 'vuex';
import { getUID } from '@/jmapNew/utils/Uid';
import ConfigList from './config/list';
import ConfigData from './config/data';
import { deepAssign } from '@/utils/index';
export default {
name: 'SplitStation',
components: {
ConfigList,
ConfigData
},
props: {
selected: {
type: Object,
default: function () {
return null;
}
}
},
data () {
return {
activeName: 'first',
editModel: {
code: '',
type: 'SplitStation',
rightStationName: '',
leftStationName: '',
position: {
x: 0,
y: 0
}
},
addModel: {
code: '',
type: 'SplitStation',
rightStationName: '',
leftStationName: '',
position: {
x: 0,
y: 0
}
}
};
},
computed: {
...mapGetters('map', [
'splitStationList'
]),
form() {
const form = {
labelWidth: '150px',
items: {
code: {
name: '',
item: []
},
draw: {
name: this.$t('map.drawData'),
item: [
{ prop: 'code', label: `${this.$t('map.code')}`, type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.splitStationList},
{ prop: 'rightStationName', label: this.$t('map.rightCentralStationName'), type: 'input'},
{ prop: 'leftStationName', label: this.$t('map.leftCentralStationName'), type: 'input'},
{ prop: 'position', label: this.$t('map.textPoints'), type: 'coordinate', width: '140px', children: [
{ prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '20px' },
{ prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '20px' }
] }
]
}
}
};
return form;
},
formMake() {
const form = {
labelWidth: '150px',
items: [
{ prop: 'rightStationName', label: this.$t('map.rightCentralStationName'), type: 'input'},
{ prop: 'leftStationName', label: this.$t('map.leftCentralStationName'), type: 'input'},
{ prop: 'position', label: this.$t('map.textPoints'), type: 'coordinate', width: '140px', children: [
{ prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '25px' },
{ prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '25px' }
] }
]
};
return form;
},
createRules: function () {
return {
rightStationName: [
{ required: true, message: '请输入右侧集中站名称', trigger: 'blur' }
],
leftStationName: [
{ required: true, message: '请输入左侧集中站名称', trigger: 'blur' }
],
'position.x': [
{ required: true, message: this.$t('rules.trainPositionX'), trigger: 'blur' }
],
'position.y': [
{ required: true, message: this.$t('rules.trainPositionY'), trigger: 'blur' }
]
};
}
},
watch: {
selected(val) {
this.deviceSelect(val);
}
},
methods: {
deviceSelect(selected) {
this.$refs.dataform.resetFields();
this.$refs.make.resetFields();
if (selected) {
this.activeName = 'first';
this.editModel = deepAssign(this.editModel, selected);
this.editModel.type = selected._type;
}
},
//
create() {
this.$refs.make.validate((valid) => {
if (valid) {
const uid = getUID(this.addModel.type, this.splitStationList); // uid
const models = [];
const model = {
_type: this.addModel.type,
type: this.addModel.type,
code: uid,
rightStationName: this.addModel.rightStationName,
leftStationName: this.addModel.leftStationName,
position: {
x: this.addModel.position.x,
y: this.addModel.position.y
}
};
models.push(model);
this.$emit('updateMapModel', models);
this.$refs.make.resetForm();
}
});
},
//
edit() {
this.$refs['dataform'].validate((valid) => {
if (valid) {
const data = Object.assign({_type: this.editModel.type}, this.editModel);
this.$emit('updateMapModel', [data]);
}
});
},
//
deleteObj() {
const selected = this.$store.getters['map/getDeviceByCode'](this.editModel.code);
if (selected && this.controlLampTypeList.includes(selected._type)) {
this.$confirm(this.$t('tip.confirmDeletion'), this.$t('tip.hint'), {
confirmButtonText: this.$t('tip.confirm'),
cancelButtonText: this.$t('tip.cancel'),
type: 'warning'
}).then(() => {
this.$emit('updateMapModel', {...selected, _dispose: true});
this.$refs.dataform.resetFields();
}).catch(() => {
this.$message.info(this.$t('tip.cancelledDelete'));
});
}
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
.view-control{
height: 100%;
}
.card {
height: 100%;
}
.coordinate {
overflow: hidden;
.title {
text-align: right;
font-size: 14px;
color: #606266;
line-height: 40px;
padding: 0 12px 0 0;
-webkit-box-sizing: border-box;
box-sizing: border-box;
line-height: 28px;
width: 160px;
font-weight: bold;
display: block;
float: left;
}
}
.map-draft-group {
color: #3E44BE;
}
</style>

View File

@ -6,13 +6,23 @@
<el-table-column prop="configKey" label="key" />
<el-table-column prop="configValue" label="value">
<template slot-scope="scope">
<div v-if="!scope.row.boolean">
<div v-if="!scope.row.focus" style="width: 100%;cursor: pointer;" @click="scope.row.focus = true">{{ scope.row.configValue }}</div>
<el-input v-if="scope.row.focus" v-model="scope.row.configValue" style="width: 100%" @blur="scope.row.focus = false" />
<div v-if="scope.row.type === 'input'">
<div v-if="!scope.row.focus" style="width: 100%;cursor: pointer;" @click="changeFocus(scope.row, '1')">{{ scope.row.configValue }}</div>
<el-input v-if="scope.row.focus" v-model="scope.row.configValue" size="mini" style="width: 100%" @blur="changeFocus(scope.row, '0')" />
</div>
<div v-if="scope.row.boolean">
<div v-else-if="scope.row.type === 'boolean'">
<el-checkbox v-model="scope.row.configValue">{{ scope.row.configValue }}</el-checkbox>
</div>
<div v-else-if="scope.row.type === 'select'">
<el-select v-model="scope.row.configValue" size="mini" style="width: 80px;">
<el-option
v-for="item in scope.row.options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
</template>
</el-table-column>
<!-- <el-table-column prop="description" label="描述" /> -->
@ -61,7 +71,11 @@ export default {
id: '',
tableData: [],
focus: false,
icloudList: ['lockFirst', 'switchSingleHandle']
booleanList: ['lockFirst', 'switchSingleHandle'],
selectList: ['upDirection'],
optionsMap: {
upDirection: [{label: 'right', value: 'right'}, {label: 'left', value: 'left'}]
}
};
},
computed: {
@ -75,6 +89,13 @@ export default {
this.getList();
}
},
changeFocus(row, flag) {
if (flag === '0') {
this.$set(row, 'focus', false);
} else {
this.$set(row, 'focus', true);
}
},
async getList() {
try {
const res = await getRealLineConfigList(this.id);
@ -83,17 +104,21 @@ export default {
this.tableData = [];
keys.forEach(key => {
// let value = '';
let boolean = false;
if (this.icloudList.indexOf(key) >= 0) {
// value = JSON.stringify(res.data[key]);
boolean = true;
let type = 'input';
let options = [];
if (this.booleanList.indexOf(key) >= 0) {
type = 'boolean';
} else if (this.selectList.indexOf(key) >= 0) {
type = 'select';
options = this.optionsMap[key];
} else {
// value = res.data[key];
type = 'input';
}
const param = {
configKey: key,
configValue: res.data[key],
boolean: boolean
type: type,
options: options
};
this.tableData.push(param);
});