<template>
|
<div>
|
<vol-box
|
v-model="showDetialBox"
|
:lazy="true"
|
:width="width"
|
:padding="15"
|
title="路由配置"
|
:footer="true"
|
>
|
<el-row height="50">
|
<el-col :span="24">
|
<div class="grid-content right-text">
|
<!-- <el-link type="primary" @click="deleteNode">移除节点</el-link> -->
|
<el-link type="primary" @click="addNode">添加节点</el-link>
|
</div>
|
<div class="grid-content right-text"></div>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<div
|
class="grid-content"
|
style="font-weight: bold; font-size: 18px; margin-left: 5%"
|
>
|
<el-form :rules="routeTypeRules" :model="routerType">
|
<el-form-item label="路由类型" label-width="120" prop="type">
|
<el-select
|
v-model="routerType.type"
|
filterable
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="item in routerTypes"
|
:key="item.key"
|
:label="item.value"
|
:value="item.key"
|
>
|
<span style="float: left">{{ item.value }}</span>
|
<span
|
style="float: right; color: #8492a6; font-size: 13px"
|
>{{ item.key }}</span
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
</div>
|
</el-col>
|
</el-row>
|
<div style="overflow-x: auto">
|
<el-row style="margin-top: 3%">
|
<el-col :span="24">
|
<el-steps align-center :active="routers.length">
|
<el-step
|
v-for="(router, index) in routers"
|
:title="getTitle(index)"
|
:key="index"
|
icon=""
|
description="111"
|
style="min-width: 280px"
|
>
|
<template v-slot:description="{}">
|
<div>
|
<el-form
|
:rules="rules"
|
class="demo-ruleForm"
|
:model="router"
|
label-width="110px"
|
style="margin-top: 1%"
|
ref="router"
|
>
|
<el-form-item
|
label="位置编号"
|
placeholder="请选择位置编号"
|
prop="positionCode"
|
>
|
<el-select
|
filterable
|
v-model="router.positionCode"
|
@change="deviceCodeChange"
|
>
|
<el-option
|
v-for="deviceCode in filterDeviceCodes"
|
:key="deviceCode.key"
|
:label="deviceCode.key"
|
:value="deviceCode.key"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item
|
v-show="
|
index == routers.length - 1 &&
|
!router.positionCode.includes('SC')
|
"
|
label="子位置编号"
|
prop="childPositionCode"
|
>
|
<el-select
|
filterable
|
v-model="router.childPositionCode"
|
@change="childDeviceCodeChange"
|
>
|
<el-option
|
v-for="childDeviceCode in filterChildDeviceCodes"
|
:key="childDeviceCode.key"
|
:label="childDeviceCode.key"
|
:value="childDeviceCode.key"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item
|
v-show="
|
router.positionCode.includes('SC') ||
|
router.childPositionCode.includes('SC')
|
"
|
label="堆垛机行"
|
prop="sCRow"
|
>
|
<el-input v-model="router.sCRow"></el-input>
|
</el-form-item>
|
<el-form-item
|
v-show="
|
router.positionCode.includes('SC') ||
|
router.childPositionCode.includes('SC')
|
"
|
label="堆垛机列"
|
prop="sCColumn"
|
>
|
<el-input v-model="router.sCColumn"></el-input>
|
</el-form-item>
|
<el-form-item
|
v-show="
|
router.positionCode.includes('SC') ||
|
router.childPositionCode.includes('SC')
|
"
|
label="堆垛机层"
|
prop="sCLayer"
|
>
|
<el-input v-model="router.sCLayer"></el-input>
|
</el-form-item>
|
</el-form>
|
</div>
|
</template>
|
</el-step>
|
</el-steps>
|
</el-col>
|
</el-row>
|
</div>
|
<template #footer>
|
<div>
|
<el-button plain type="danger" @click="save"
|
><i class="el-icon-check"></i>保 存</el-button
|
>
|
<el-button type="primary" size="mini" @click="showDetialBox = false"
|
><i class="el-icon-close"></i>关闭</el-button
|
>
|
</div>
|
</template>
|
</vol-box>
|
</div>
|
</template>
|
|
<script>
|
import VolBox from "@/components/basic/VolBox.vue";
|
import { el } from "element-plus/es/locale";
|
export default {
|
components: { VolBox },
|
data() {
|
return {
|
width: 1200,
|
active: 0,
|
showDetialBox: false,
|
routerTypes: [],
|
routerType: { type: "" },
|
deviceCodes: [],
|
filterDeviceCodes: [],
|
childDeviceCodes: [],
|
filterChildDeviceCodes: [],
|
routers: [
|
{
|
positionCode: "",
|
childPositionCode: "",
|
sCRow: "",
|
sCColumn: "",
|
sCLayer: "",
|
},
|
{
|
positionCode: "",
|
childPositionCode: "",
|
sCRow: "",
|
sCColumn: "",
|
sCLayer: "",
|
},
|
],
|
rules: {
|
positionCode: [
|
{ required: true, message: "请选择位置编号", trigger: "change" },
|
],
|
},
|
routeTypeRules: {
|
type: [
|
{ required: true, message: "请选择路由类型", trigger: "change" },
|
],
|
},
|
};
|
},
|
methods: {
|
open() {
|
this.routerTypes = [];
|
this.routerType = { type: "" };
|
this.deviceCode = "";
|
this.deviceCodes = [];
|
this.filterDeviceCodes = [];
|
this.childDeviceCodes = [];
|
this.filterChildDeviceCodes = [];
|
this.routers = [
|
{
|
positionCode: "",
|
childPositionCode: "",
|
sCRow: "",
|
sCColumn: "",
|
sCLayer: "",
|
},
|
{
|
positionCode: "",
|
childPositionCode: "",
|
sCRow: "",
|
sCColumn: "",
|
sCLayer: "",
|
},
|
];
|
this.showDetialBox = true;
|
this.getData();
|
},
|
getData() {
|
this.http.post("/api/Router/GetBaseRouterInfo", {}, true).then((x) => {
|
if (!x.status) return this.$message.error(x.message);
|
this.routerTypes = x.data.routerTypes;
|
this.deviceCodes = x.data.deviceCodes;
|
x.data.areaInfos.forEach((v) => {
|
this.deviceCodes.push(v);
|
});
|
this.filterDeviceCodes = this.deviceCodes;
|
this.childDeviceCodes = this.deviceCodes;
|
this.filterChildDeviceCodes = this.deviceCodes;
|
});
|
},
|
addNode() {
|
this.routers.push({
|
positionCode: "",
|
childPositionCode: "",
|
childPosiDeviceCode: "",
|
sCRow: "",
|
sCColumn: "",
|
sCLayer: "",
|
});
|
},
|
deleteNode() {
|
this.routers.splice(this.routers.length - 1, 1);
|
},
|
getTitle(index) {
|
if (index === 0) {
|
return "起点";
|
} else if (index === this.routers.length - 1) {
|
return "终点";
|
} else {
|
return "子节点" + index;
|
}
|
},
|
save() {
|
this.$refs.router.forEach((x) => {
|
console.log(x);
|
x.validate((valid) => {
|
if (!valid) {
|
return false;
|
}
|
});
|
});
|
this.http
|
.post(
|
"/api/Router/AddRouters?routerType=" + this.routerType.type,
|
this.routers,
|
true
|
)
|
.then((x) => {
|
if (!x.status) return this.$message.error(x.message);
|
this.$message.success("操作成功");
|
this.$emit("parentCall", ($vue) => {
|
$vue.refresh();
|
});
|
this.showDetialBox = false;
|
});
|
},
|
deviceCodeChange(value) {
|
var positionCodes = [];
|
this.routers.forEach((x) => {
|
if (x.positionCode && x.positionCode != "") {
|
positionCodes.push(x.positionCode);
|
}
|
});
|
this.filterDeviceCodes = this.deviceCodes.filter(
|
(x) => !positionCodes.includes(x.key)
|
);
|
},
|
childDeviceCodeChange(value) {
|
var positionCodes = [];
|
this.routers.forEach((x) => {
|
if (x.childPositionCode && x.childPositionCode != "") {
|
positionCodes.push(x.childPositionCode);
|
}
|
});
|
this.filterChildDeviceCodes = this.childDeviceCodes.filter(
|
(x) => !positionCodes.includes(x.key)
|
);
|
},
|
},
|
created() {},
|
};
|
</script>
|
|
<style scoped>
|
.el-col {
|
border-radius: 4px;
|
}
|
.grid-content {
|
border-radius: 4px;
|
min-height: 36px;
|
}
|
.content-text {
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
.left-text {
|
display: flex;
|
align-items: center;
|
justify-content: flex-start;
|
}
|
.right-text {
|
display: flex;
|
align-items: center;
|
justify-content: flex-end;
|
}
|
</style>
|
<style>
|
.el-step.is-center .el-step__description {
|
padding-left: 5%;
|
padding-right: 5%;
|
}
|
</style>
|