This commit is contained in:
parent
a578e5b643
commit
c11ba8aebd
|
|
@ -2,5 +2,5 @@
|
||||||
-- 新增光交箱机架类型支持
|
-- 新增光交箱机架类型支持
|
||||||
|
|
||||||
-- SQL Server 语法
|
-- SQL Server 语法
|
||||||
ALTER TABLE odf_racks ADD rack_type INT NOT NULL DEFAULT 0;
|
ALTER TABLE odf_racks ADD RackType INT NOT NULL DEFAULT 0;
|
||||||
-- rack_type: 机架类型,0=ODF机架, 1=光交箱
|
-- rack_type: 机架类型,0=ODF机架, 1=光交箱
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,13 @@
|
||||||
"navigationBarTitleText": ""
|
"navigationBarTitleText": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/optical-box-detail/index",
|
||||||
|
"style": {
|
||||||
|
"navigationStyle": "custom",
|
||||||
|
"navigationBarTitleText": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/search/index",
|
"path": "pages/search/index",
|
||||||
"style": {
|
"style": {
|
||||||
|
|
|
||||||
214
odf-uniapp/pages/optical-box-detail/index.vue
Normal file
214
odf-uniapp/pages/optical-box-detail/index.vue
Normal file
|
|
@ -0,0 +1,214 @@
|
||||||
|
<template>
|
||||||
|
<view class="rack-detail-page">
|
||||||
|
<view class="content">
|
||||||
|
<!-- 顶部导航栏 -->
|
||||||
|
<view class="nav-bar" :style="{ paddingTop: statusBarHeight + 'px' }">
|
||||||
|
<view class="nav-bar-inner">
|
||||||
|
<image class="nav-icon" src="/static/images/ic_back.png" mode="aspectFit" @click="goBack" />
|
||||||
|
<text class="nav-title">{{ rackName }}详情</text>
|
||||||
|
<view class="nav-icon-placeholder" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 机房名称 + 机架类型 -->
|
||||||
|
<view class="room-name-bar">
|
||||||
|
<text class="room-name-text">{{ roomName }}</text>
|
||||||
|
<text class="rack-type-text">类型:光交箱</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 状态图例 -->
|
||||||
|
<view class="legend-bar">
|
||||||
|
<view class="legend-item">
|
||||||
|
<view class="legend-dot legend-dot-green" />
|
||||||
|
<text class="legend-label">已连接</text>
|
||||||
|
</view>
|
||||||
|
<view class="legend-item">
|
||||||
|
<view class="legend-dot legend-dot-red" />
|
||||||
|
<text class="legend-label">已断开</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 加载中 -->
|
||||||
|
<view v-if="loading" class="loading-box">
|
||||||
|
<text class="loading-text">loading...</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- Frame 列表 -->
|
||||||
|
<view v-else class="frame-list">
|
||||||
|
<view class="frame-card" v-for="frame in frameList" :key="frame.id">
|
||||||
|
<text class="frame-name">{{ frame.name }}</text>
|
||||||
|
<scroll-view class="port-scroll" scroll-x>
|
||||||
|
<view class="optical-box-wrapper">
|
||||||
|
<!-- 左栏:光交箱端子 -->
|
||||||
|
<view class="optical-left-col">
|
||||||
|
<view class="optical-col-header">
|
||||||
|
<text class="optical-col-title">光交箱端子</text>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
class="optical-port-row"
|
||||||
|
v-for="(row, rowIdx) in frame.leftPortsList"
|
||||||
|
:key="'left-' + rowIdx"
|
||||||
|
>
|
||||||
|
<text class="optical-row-name">{{ getRowLetter(rowIdx) }}</text>
|
||||||
|
<view class="port-list">
|
||||||
|
<view
|
||||||
|
class="port-item"
|
||||||
|
v-for="port in row.rowList"
|
||||||
|
:key="'lp-' + port.id"
|
||||||
|
@click="openPortEdit(port)"
|
||||||
|
>
|
||||||
|
<view class="port-circle" :class="port.status === 1 ? 'port-green' : 'port-red'">
|
||||||
|
<text class="port-tips">{{ port.tips }}</text>
|
||||||
|
</view>
|
||||||
|
<text class="port-name">{{ port.name }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 中间分隔线 -->
|
||||||
|
<view class="optical-divider" />
|
||||||
|
|
||||||
|
<!-- 右栏:ODF端子 -->
|
||||||
|
<view class="optical-right-col">
|
||||||
|
<view class="optical-col-header">
|
||||||
|
<text class="optical-col-title">ODF端子</text>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
class="optical-port-row"
|
||||||
|
v-for="(row, rowIdx) in frame.rightPortsList"
|
||||||
|
:key="'right-' + rowIdx"
|
||||||
|
>
|
||||||
|
<text class="optical-row-name">{{ rowIdx + 1 }}</text>
|
||||||
|
<view class="port-list">
|
||||||
|
<view
|
||||||
|
class="port-item"
|
||||||
|
v-for="port in row.rowList"
|
||||||
|
:key="'rp-' + port.id"
|
||||||
|
@click="openPortEdit(port)"
|
||||||
|
>
|
||||||
|
<view class="port-circle" :class="port.status === 1 ? 'port-green' : 'port-red'">
|
||||||
|
<text class="port-tips">{{ port.tips }}</text>
|
||||||
|
</view>
|
||||||
|
<text class="port-name">{{ port.name }}</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 端口编辑弹窗 -->
|
||||||
|
<portEditDialog
|
||||||
|
:visible="showPortEdit"
|
||||||
|
:portId="currentPortId"
|
||||||
|
@close="showPortEdit = false"
|
||||||
|
@saved="onPortSaved"
|
||||||
|
/>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue'
|
||||||
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
import { getOpticalBoxDetail } from '@/services/machine'
|
||||||
|
import portEditDialog from '@/components/port-edit-dialog.vue'
|
||||||
|
|
||||||
|
const statusBarHeight = uni.getSystemInfoSync().statusBarHeight || 0
|
||||||
|
const rackId = ref('')
|
||||||
|
const rackName = ref('')
|
||||||
|
const roomName = ref('')
|
||||||
|
const frameList = ref([])
|
||||||
|
const loading = ref(false)
|
||||||
|
const showPortEdit = ref(false)
|
||||||
|
const currentPortId = ref('')
|
||||||
|
let pendingPortId = ''
|
||||||
|
|
||||||
|
function getRowLetter(index) {
|
||||||
|
return String.fromCharCode(65 + index)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function loadDetail() {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
const res = await getOpticalBoxDetail(rackId.value)
|
||||||
|
if (res.code === 200 && res.data) {
|
||||||
|
frameList.value = res.data
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
if (pendingPortId) {
|
||||||
|
currentPortId.value = pendingPortId
|
||||||
|
showPortEdit.value = true
|
||||||
|
pendingPortId = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function goBack() {
|
||||||
|
uni.navigateBack()
|
||||||
|
}
|
||||||
|
|
||||||
|
function openPortEdit(port) {
|
||||||
|
currentPortId.value = port.id
|
||||||
|
showPortEdit.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function onPortSaved() {
|
||||||
|
showPortEdit.value = false
|
||||||
|
loadDetail()
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad((options) => {
|
||||||
|
if (options.rackId) rackId.value = options.rackId
|
||||||
|
if (options.rackName) rackName.value = decodeURIComponent(options.rackName)
|
||||||
|
if (options.roomName) roomName.value = decodeURIComponent(options.roomName)
|
||||||
|
if (options.portId) pendingPortId = options.portId
|
||||||
|
loadDetail()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.rack-detail-page { position: relative; min-height: 100vh; background-color: transparent; }
|
||||||
|
.content { position: relative; z-index: 1; }
|
||||||
|
.nav-bar { width: 100%; }
|
||||||
|
.nav-bar-inner { display: flex; align-items: center; justify-content: space-between; height: 88rpx; padding: 0 24rpx; }
|
||||||
|
.nav-icon { width: 44rpx; height: 44rpx; }
|
||||||
|
.nav-icon-placeholder { width: 44rpx; height: 44rpx; }
|
||||||
|
.nav-title { font-size: 34rpx; font-weight: 600; color: #fff; }
|
||||||
|
.room-name-bar { display: flex; align-items: center; justify-content: space-between; padding: 8rpx 24rpx 0; }
|
||||||
|
.room-name-text { font-size: 30rpx; font-weight: 700; color: #1A73EC; }
|
||||||
|
.rack-type-text { font-size: 26rpx; color: #fff; }
|
||||||
|
.legend-bar { display: flex; align-items: center; padding: 16rpx 24rpx; gap: 32rpx; }
|
||||||
|
.legend-item { display: flex; align-items: center; gap: 8rpx; }
|
||||||
|
.legend-dot { width: 20rpx; height: 20rpx; border-radius: 50%; }
|
||||||
|
.legend-dot-green { background-color: #4CAF50; }
|
||||||
|
.legend-dot-red { background-color: #F44336; }
|
||||||
|
.legend-label { font-size: 24rpx; color: #666; }
|
||||||
|
.loading-box { display: flex; justify-content: center; padding: 60rpx 0; }
|
||||||
|
.loading-text { font-size: 28rpx; color: #999; }
|
||||||
|
.frame-list { padding: 0 24rpx 24rpx; }
|
||||||
|
.frame-card { background-color: #fff; border-radius: 12rpx; padding: 24rpx; margin-bottom: 20rpx; box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06); }
|
||||||
|
.frame-name { font-size: 30rpx; font-weight: 600; color: #333; margin-bottom: 16rpx; }
|
||||||
|
.port-scroll { width: 100%; white-space: nowrap; }
|
||||||
|
.port-list { display: flex; flex-direction: row; gap: 16rpx; }
|
||||||
|
.port-item { display: flex; flex-direction: column; align-items: center; flex-shrink: 0; }
|
||||||
|
.port-circle { width: 80rpx; height: 80rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
|
||||||
|
.port-green { background-color: #4CAF50; }
|
||||||
|
.port-red { background-color: #F44336; }
|
||||||
|
.port-tips { font-size: 20rpx; color: #fff; text-align: center; }
|
||||||
|
.port-name { font-size: 20rpx; color: #333; margin-top: 6rpx; text-align: center; }
|
||||||
|
.optical-box-wrapper { display: inline-flex; flex-direction: row; min-width: 100%; }
|
||||||
|
.optical-left-col { background-color: #FFC0CB; padding: 16rpx; border-radius: 8rpx 0 0 8rpx; }
|
||||||
|
.optical-left-col .optical-port-row { background-color: #FFB6C1; border-radius: 8rpx; padding: 12rpx; margin-bottom: 12rpx; }
|
||||||
|
.optical-right-col { background-color: #E0F7FA; padding: 16rpx; border-radius: 0 8rpx 8rpx 0; }
|
||||||
|
.optical-right-col .optical-port-row { background-color: #B3E5FC; border-radius: 8rpx; padding: 12rpx; margin-bottom: 12rpx; }
|
||||||
|
.optical-divider { width: 4rpx; background-color: #999; flex-shrink: 0; }
|
||||||
|
.optical-col-header { padding: 0 0 12rpx; text-align: center; }
|
||||||
|
.optical-col-title { font-size: 26rpx; font-weight: 600; color: #333; }
|
||||||
|
.optical-port-row { display: flex; flex-direction: row; align-items: center; }
|
||||||
|
.optical-row-name { font-size: 24rpx; color: #666; font-weight: 600; margin-right: 12rpx; flex-shrink: 0; width: 32rpx; text-align: center; }
|
||||||
|
</style>
|
||||||
|
|
@ -89,12 +89,21 @@ function goSearch() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function goDetail(item) {
|
function goDetail(item) {
|
||||||
uni.navigateTo({
|
if (item.rackType === 1) {
|
||||||
url: '/pages/rack-detail/index?rackId=' + item.id
|
// 光交箱跳转到专用页面
|
||||||
+ '&rackName=' + encodeURIComponent(item.rackName)
|
uni.navigateTo({
|
||||||
+ '&roomName=' + encodeURIComponent(roomName.value)
|
url: '/pages/optical-box-detail/index?rackId=' + item.id
|
||||||
+ '&rackType=' + (item.rackType || 0)
|
+ '&rackName=' + encodeURIComponent(item.rackName)
|
||||||
})
|
+ '&roomName=' + encodeURIComponent(roomName.value)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/rack-detail/index?rackId=' + item.id
|
||||||
|
+ '&rackName=' + encodeURIComponent(item.rackName)
|
||||||
|
+ '&roomName=' + encodeURIComponent(roomName.value)
|
||||||
|
+ '&rackType=' + (item.rackType || 0)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onLoad((options) => {
|
onLoad((options) => {
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,6 @@ export const getRoomList = (pageNum, pageSize, deptId) =>
|
||||||
export const getRackList = (pageNum, pageSize, roomId) =>
|
export const getRackList = (pageNum, pageSize, roomId) =>
|
||||||
get('/business/OdfRacks/list', { pageNum, pageSize, roomId })
|
get('/business/OdfRacks/list', { pageNum, pageSize, roomId })
|
||||||
export const getRackDetail = (RackId) => get('/business/OdfPorts/mlist', { RackId })
|
export const getRackDetail = (RackId) => get('/business/OdfPorts/mlist', { RackId })
|
||||||
|
export const getOpticalBoxDetail = (RackId) => get('/business/OdfPorts/mlist/optical', { RackId })
|
||||||
export const getPortDetail = (id) => get(`/business/OdfPorts/${id}`)
|
export const getPortDetail = (id) => get(`/business/OdfPorts/${id}`)
|
||||||
export const savePort = (data) => post('/business/OdfPorts/save', data)
|
export const savePort = (data) => post('/business/OdfPorts/save', data)
|
||||||
|
|
|
||||||
|
|
@ -167,6 +167,76 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
return SUCCESS(list);
|
return SUCCESS(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 查询光交箱端口列表(左右分开)
|
||||||
|
/// </summary>
|
||||||
|
[HttpGet("mlist/optical")]
|
||||||
|
[ActionPermissionFilter(Permission = "odfports:list")]
|
||||||
|
public async Task<IActionResult> GetOpticalBoxPorts([FromQuery] OdfPortsMQueryDto parm)
|
||||||
|
{
|
||||||
|
var frames = await _OdfFramesService.AsQueryable().Where(it => it.RackId == parm.RackId)
|
||||||
|
.Select(it => new { it.Id, it.PortsName }).ToListAsync();
|
||||||
|
|
||||||
|
var result = new List<OdfOpticalBoxFrameDto>();
|
||||||
|
|
||||||
|
foreach (var frame in frames)
|
||||||
|
{
|
||||||
|
var allPorts = await _OdfPortsService.AsQueryable().Where(it => it.FrameId == frame.Id)
|
||||||
|
.Select(it => new OdfPortsMDtoc()
|
||||||
|
{
|
||||||
|
Id = it.Id,
|
||||||
|
Name = it.Name,
|
||||||
|
Status = it.Status,
|
||||||
|
PortNumber = it.PortNumber,
|
||||||
|
RowNumber = it.RowNumber,
|
||||||
|
Tips = it.Remarks,
|
||||||
|
OpticalAttenuation = it.OpticalAttenuation,
|
||||||
|
EquipmentModel = it.EquipmentModel,
|
||||||
|
BusinessType = it.BusinessType,
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
// 通过PortSide区分左右,但OdfPortsMDtoc没有PortSide,需要重新查
|
||||||
|
var allPortsWithSide = await _OdfPortsService.AsQueryable().Where(it => it.FrameId == frame.Id)
|
||||||
|
.Select(it => new { it.Id, it.Name, it.Status, it.PortNumber, it.RowNumber, it.Remarks, it.OpticalAttenuation, it.EquipmentModel, it.BusinessType, it.PortSide })
|
||||||
|
.ToListAsync();
|
||||||
|
|
||||||
|
var leftPorts = allPortsWithSide.Where(it => it.PortSide == 0).ToList();
|
||||||
|
var rightPorts = allPortsWithSide.Where(it => it.PortSide == 1).ToList();
|
||||||
|
|
||||||
|
var dto = new OdfOpticalBoxFrameDto
|
||||||
|
{
|
||||||
|
Id = frame.Id,
|
||||||
|
Name = frame.PortsName
|
||||||
|
};
|
||||||
|
|
||||||
|
// 左侧按行分组
|
||||||
|
leftPorts.GroupBy(it => it.RowNumber).OrderBy(g => g.Key).ToList().ForEach(g =>
|
||||||
|
{
|
||||||
|
var li = g.OrderBy(it => it.PortNumber).Select(it =>
|
||||||
|
{
|
||||||
|
var tips = it.Status == 0 ? it.OpticalAttenuation ?? "" : "";
|
||||||
|
return new OdfPortsMDto { Id = it.Id, Name = it.Name, Status = it.Status, Tips = tips };
|
||||||
|
}).ToList();
|
||||||
|
dto.LeftPortsList.Add(new OdfPortsMDtot() { RowList = li, Name = g.Key.ToString() });
|
||||||
|
});
|
||||||
|
|
||||||
|
// 右侧按行分组
|
||||||
|
rightPorts.GroupBy(it => it.RowNumber).OrderBy(g => g.Key).ToList().ForEach(g =>
|
||||||
|
{
|
||||||
|
var li = g.OrderBy(it => it.PortNumber).Select(it =>
|
||||||
|
{
|
||||||
|
var tips = it.Status == 0 ? it.OpticalAttenuation ?? "" : "";
|
||||||
|
return new OdfPortsMDto { Id = it.Id, Name = it.Name, Status = it.Status, Tips = tips };
|
||||||
|
}).ToList();
|
||||||
|
dto.RightPortsList.Add(new OdfPortsMDtot() { RowList = li, Name = g.Key.ToString() });
|
||||||
|
});
|
||||||
|
|
||||||
|
result.Add(dto);
|
||||||
|
}
|
||||||
|
|
||||||
|
return SUCCESS(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -122,20 +122,23 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
|
|
||||||
if (parm.FramesCount > 0)
|
if (parm.FramesCount > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
//添加机框
|
//添加机框
|
||||||
List<OdfFrames> framesList = new List<OdfFrames>();
|
List<OdfFrames> framesList = new List<OdfFrames>();
|
||||||
var rack = response;
|
var rack = response;
|
||||||
|
|
||||||
|
// 光交箱固定每侧12个端口
|
||||||
|
var portsCount = modal.RackType == 1 ? 12 : parm.PortsCount;
|
||||||
|
|
||||||
for (int i = 0; i < parm.FramesCount; i++)
|
for (int i = 0; i < parm.FramesCount; i++)
|
||||||
{
|
{
|
||||||
var t = await _OdfFramesService.InsertReturnEntityAsync(new OdfFrames()
|
var t = await _OdfFramesService.InsertReturnEntityAsync(new OdfFrames()
|
||||||
{
|
{
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
UpdateAt = DateTime.Now,
|
UpdateAt = DateTime.Now,
|
||||||
PortsCol = parm.PortsCount,
|
PortsCol = portsCount,
|
||||||
PortsCount = parm.PortsCount,
|
PortsCount = portsCount,
|
||||||
DeptId = rack.DeptId,
|
DeptId = rack.DeptId,
|
||||||
PortsRow = parm.PortsCount,
|
PortsRow = portsCount,
|
||||||
PortsName = $"{(i + 1)}框",
|
PortsName = $"{(i + 1)}框",
|
||||||
RackId = rack.Id,
|
RackId = rack.Id,
|
||||||
SequenceNumber = i + 1
|
SequenceNumber = i + 1
|
||||||
|
|
@ -145,22 +148,48 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
//添加机框结束
|
//添加机框结束
|
||||||
if (parm.RowCount > 0)
|
if (parm.RowCount > 0)
|
||||||
{
|
{
|
||||||
//添加行
|
int index = 0;
|
||||||
if (parm.PortsCount > 0)
|
foreach (var frame in framesList)
|
||||||
{
|
{
|
||||||
int index = 0;
|
var ra = rack;
|
||||||
//添加端口
|
if (ra == null) continue;
|
||||||
foreach (var frame in framesList)
|
|
||||||
|
List<OdfPorts> ports = new List<OdfPorts>();
|
||||||
|
|
||||||
|
if (modal.RackType == 1)
|
||||||
{
|
{
|
||||||
var ra = rack;
|
// 光交箱:每行生成24个端口(左12+右12)
|
||||||
if (ra == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
List<OdfPorts> ports = new List<OdfPorts>();
|
|
||||||
for (int row = 0; row < parm.RowCount; row++)
|
for (int row = 0; row < parm.RowCount; row++)
|
||||||
{
|
{
|
||||||
for (int port = 0; port < parm.PortsCount; port++)
|
string rowLetter = ((char)(65 + row)).ToString(); // A, B, C...
|
||||||
|
// 左侧光交箱端子 PortSide=0
|
||||||
|
for (int port = 0; port < 12; port++)
|
||||||
|
{
|
||||||
|
ports.Add(new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
DeptId = rooms.DeptId ?? 0,
|
||||||
|
DeptName = rooms.DeptName,
|
||||||
|
RackId = frame.RackId,
|
||||||
|
RackName = ra.RackName,
|
||||||
|
RoomId = roomId,
|
||||||
|
RoomName = roomName,
|
||||||
|
FrameId = frame.Id,
|
||||||
|
FrameName = frame.PortsName,
|
||||||
|
Name = $"{rowLetter}-{(port + 1)}",
|
||||||
|
RowNumber = row + 1,
|
||||||
|
PortNumber = port + 1,
|
||||||
|
PortSide = 0,
|
||||||
|
OpticalAttenuation = "",
|
||||||
|
HistoryRemarks = "",
|
||||||
|
Remarks = "",
|
||||||
|
OpticalCableOffRemarks = "",
|
||||||
|
Status = parm.DefaultStatus,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 右侧ODF端子 PortSide=1
|
||||||
|
for (int port = 0; port < 12; port++)
|
||||||
{
|
{
|
||||||
ports.Add(new OdfPorts()
|
ports.Add(new OdfPorts()
|
||||||
{
|
{
|
||||||
|
|
@ -176,9 +205,9 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
Name = $"{(row + 1)}-{(port + 1)}",
|
Name = $"{(row + 1)}-{(port + 1)}",
|
||||||
RowNumber = row + 1,
|
RowNumber = row + 1,
|
||||||
PortNumber = port + 1,
|
PortNumber = port + 1,
|
||||||
|
PortSide = 1,
|
||||||
OpticalAttenuation = "",
|
OpticalAttenuation = "",
|
||||||
HistoryRemarks = "",
|
HistoryRemarks = "",
|
||||||
|
|
||||||
Remarks = "",
|
Remarks = "",
|
||||||
OpticalCableOffRemarks = "",
|
OpticalCableOffRemarks = "",
|
||||||
Status = parm.DefaultStatus,
|
Status = parm.DefaultStatus,
|
||||||
|
|
@ -186,16 +215,53 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await _OdfPortsService.AsInsertable(ports).ExecuteReturnEntityAsync(true);
|
}
|
||||||
//如果超过100个机框,则休眠一下,防止服务器死机
|
else
|
||||||
index++;
|
{
|
||||||
if (index > 100)
|
// ODF机架:保持原有逻辑
|
||||||
|
if (portsCount > 0)
|
||||||
{
|
{
|
||||||
Thread.Sleep(50);
|
for (int row = 0; row < parm.RowCount; row++)
|
||||||
index = 0;
|
{
|
||||||
|
for (int port = 0; port < portsCount; port++)
|
||||||
|
{
|
||||||
|
ports.Add(new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
DeptId = rooms.DeptId ?? 0,
|
||||||
|
DeptName = rooms.DeptName,
|
||||||
|
RackId = frame.RackId,
|
||||||
|
RackName = ra.RackName,
|
||||||
|
RoomId = roomId,
|
||||||
|
RoomName = roomName,
|
||||||
|
FrameId = frame.Id,
|
||||||
|
FrameName = frame.PortsName,
|
||||||
|
Name = $"{(row + 1)}-{(port + 1)}",
|
||||||
|
RowNumber = row + 1,
|
||||||
|
PortNumber = port + 1,
|
||||||
|
PortSide = 0,
|
||||||
|
OpticalAttenuation = "",
|
||||||
|
HistoryRemarks = "",
|
||||||
|
Remarks = "",
|
||||||
|
OpticalCableOffRemarks = "",
|
||||||
|
Status = parm.DefaultStatus,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ports.Count > 0)
|
||||||
|
{
|
||||||
|
await _OdfPortsService.AsInsertable(ports).ExecuteReturnEntityAsync(true);
|
||||||
|
}
|
||||||
|
index++;
|
||||||
|
if (index > 100)
|
||||||
|
{
|
||||||
|
Thread.Sleep(50);
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -289,21 +289,20 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
FrameCount = parm.FramesCount,
|
FrameCount = parm.FramesCount,
|
||||||
DeptId = response.DeptId ?? 0,
|
DeptId = response.DeptId ?? 0,
|
||||||
RackName = $"odf-{(i + 1)}",
|
RackName = parm.RackType == 1 ? $"光交箱-{(i + 1)}" : $"odf-{(i + 1)}",
|
||||||
RoomId = roomId,
|
RoomId = roomId,
|
||||||
SequenceNumber = i + 1,
|
SequenceNumber = i + 1,
|
||||||
UpdatedAt = DateTime.Now,
|
UpdatedAt = DateTime.Now,
|
||||||
}); // 直接插入机架
|
RackType = parm.RackType,
|
||||||
|
});
|
||||||
racksList.Add(t);
|
racksList.Add(t);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//机架添加完成
|
// 光交箱固定每侧12个端口
|
||||||
//return Insertable(model).ExecuteReturnEntity();
|
var portsCount = parm.RackType == 1 ? 12 : parm.PortsCount;
|
||||||
|
|
||||||
if (parm.FramesCount > 0)
|
if (parm.FramesCount > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
//添加机框
|
|
||||||
List<OdfFrames> framesList = new List<OdfFrames>();
|
List<OdfFrames> framesList = new List<OdfFrames>();
|
||||||
|
|
||||||
foreach (var rack in racksList)
|
foreach (var rack in racksList)
|
||||||
|
|
@ -314,10 +313,10 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
{
|
{
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
UpdateAt = DateTime.Now,
|
UpdateAt = DateTime.Now,
|
||||||
PortsCol = parm.PortsCount,
|
PortsCol = portsCount,
|
||||||
PortsCount = parm.PortsCount,
|
PortsCount = portsCount,
|
||||||
DeptId = rack.DeptId,
|
DeptId = rack.DeptId,
|
||||||
PortsRow = parm.PortsCount,
|
PortsRow = portsCount,
|
||||||
PortsName = $"{(i + 1)}框",
|
PortsName = $"{(i + 1)}框",
|
||||||
RackId = rack.Id,
|
RackId = rack.Id,
|
||||||
SequenceNumber = i + 1
|
SequenceNumber = i + 1
|
||||||
|
|
@ -326,25 +325,50 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//添加机框结束
|
|
||||||
if (parm.RowCount > 0)
|
if (parm.RowCount > 0)
|
||||||
{
|
{
|
||||||
//添加行
|
int index = 0;
|
||||||
if (parm.PortsCount > 0)
|
foreach (var frame in framesList)
|
||||||
{
|
{
|
||||||
int index = 0;
|
var ra = racksList.Find(it => it.Id == frame.RackId);
|
||||||
//添加端口
|
if (ra == null) continue;
|
||||||
foreach (var frame in framesList)
|
|
||||||
|
List<OdfPorts> ports = new List<OdfPorts>();
|
||||||
|
|
||||||
|
if (parm.RackType == 1)
|
||||||
{
|
{
|
||||||
var ra = racksList.Find(it => it.Id == frame.RackId);
|
// 光交箱:每行生成24个端口(左12+右12)
|
||||||
if (ra == null)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
List<OdfPorts> ports = new List<OdfPorts>();
|
|
||||||
for (int row = 0; row < parm.RowCount; row++)
|
for (int row = 0; row < parm.RowCount; row++)
|
||||||
{
|
{
|
||||||
for (int port = 0; port < parm.PortsCount; port++)
|
string rowLetter = ((char)(65 + row)).ToString();
|
||||||
|
// 左侧光交箱端子
|
||||||
|
for (int port = 0; port < 12; port++)
|
||||||
|
{
|
||||||
|
ports.Add(new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
DeptId = frame.DeptId ?? 0,
|
||||||
|
DeptName = modal.DeptName,
|
||||||
|
RackId = frame.RackId,
|
||||||
|
RackName = ra.RackName,
|
||||||
|
RoomId = roomId,
|
||||||
|
RoomName = roomName,
|
||||||
|
FrameId = frame.Id,
|
||||||
|
FrameName = frame.PortsName,
|
||||||
|
Name = $"{rowLetter}-{(port + 1)}",
|
||||||
|
RowNumber = row + 1,
|
||||||
|
PortNumber = port + 1,
|
||||||
|
PortSide = 0,
|
||||||
|
OpticalAttenuation = "",
|
||||||
|
HistoryRemarks = "",
|
||||||
|
OpticalCableOffRemarks = "",
|
||||||
|
Remarks = "",
|
||||||
|
Status = parm.DefaultStatus,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 右侧ODF端子
|
||||||
|
for (int port = 0; port < 12; port++)
|
||||||
{
|
{
|
||||||
ports.Add(new OdfPorts()
|
ports.Add(new OdfPorts()
|
||||||
{
|
{
|
||||||
|
|
@ -360,6 +384,7 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
Name = $"{(row + 1)}-{(port + 1)}",
|
Name = $"{(row + 1)}-{(port + 1)}",
|
||||||
RowNumber = row + 1,
|
RowNumber = row + 1,
|
||||||
PortNumber = port + 1,
|
PortNumber = port + 1,
|
||||||
|
PortSide = 1,
|
||||||
OpticalAttenuation = "",
|
OpticalAttenuation = "",
|
||||||
HistoryRemarks = "",
|
HistoryRemarks = "",
|
||||||
OpticalCableOffRemarks = "",
|
OpticalCableOffRemarks = "",
|
||||||
|
|
@ -369,20 +394,56 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await _OdfPortsService.AsInsertable(ports).ExecuteReturnEntityAsync(true);
|
}
|
||||||
//如果超过100个机框,则休眠一下,防止服务器死机
|
else
|
||||||
index++;
|
{
|
||||||
if (index > 100)
|
// ODF机架:保持原有逻辑
|
||||||
|
if (portsCount > 0)
|
||||||
{
|
{
|
||||||
Thread.Sleep(50);
|
for (int row = 0; row < parm.RowCount; row++)
|
||||||
index = 0;
|
{
|
||||||
|
for (int port = 0; port < portsCount; port++)
|
||||||
|
{
|
||||||
|
ports.Add(new OdfPorts()
|
||||||
|
{
|
||||||
|
CreatedAt = DateTime.Now,
|
||||||
|
DeptId = frame.DeptId ?? 0,
|
||||||
|
DeptName = modal.DeptName,
|
||||||
|
RackId = frame.RackId,
|
||||||
|
RackName = ra.RackName,
|
||||||
|
RoomId = roomId,
|
||||||
|
RoomName = roomName,
|
||||||
|
FrameId = frame.Id,
|
||||||
|
FrameName = frame.PortsName,
|
||||||
|
Name = $"{(row + 1)}-{(port + 1)}",
|
||||||
|
RowNumber = row + 1,
|
||||||
|
PortNumber = port + 1,
|
||||||
|
PortSide = 0,
|
||||||
|
OpticalAttenuation = "",
|
||||||
|
HistoryRemarks = "",
|
||||||
|
OpticalCableOffRemarks = "",
|
||||||
|
Remarks = "",
|
||||||
|
Status = parm.DefaultStatus,
|
||||||
|
UpdatedAt = DateTime.Now,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ports.Count > 0)
|
||||||
|
{
|
||||||
|
await _OdfPortsService.AsInsertable(ports).ExecuteReturnEntityAsync(true);
|
||||||
|
}
|
||||||
|
index++;
|
||||||
|
if (index > 100)
|
||||||
|
{
|
||||||
|
Thread.Sleep(50);
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -756,4 +756,21 @@ namespace ZR.Model.Business.Dto
|
||||||
[ExcelColumnName("修改时间")]
|
[ExcelColumnName("修改时间")]
|
||||||
public DateTime? UpdatedAt { get; set; }
|
public DateTime? UpdatedAt { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 光交箱机架详情DTO - 每个框包含左右两侧端口
|
||||||
|
/// </summary>
|
||||||
|
public class OdfOpticalBoxFrameDto
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 左侧光交箱端子(PortSide=0)
|
||||||
|
/// </summary>
|
||||||
|
public List<OdfPortsMDtot> LeftPortsList { get; set; } = new List<OdfPortsMDtot>();
|
||||||
|
/// <summary>
|
||||||
|
/// 右侧ODF端子(PortSide=1)
|
||||||
|
/// </summary>
|
||||||
|
public List<OdfPortsMDtot> RightPortsList { get; set; } = new List<OdfPortsMDtot>();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -67,13 +67,12 @@ namespace ZR.Model.Business.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int RowCount { get; set; }
|
public int RowCount { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 端口数量
|
/// 端口数量(ODF机架用,光交箱固定12)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int PortsCount { get; set; }
|
public int PortsCount { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
/// 默认连接状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public int DefaultStatus { get; set; }
|
public int DefaultStatus { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -172,15 +172,16 @@ namespace ZR.Model.Business.Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int RowCount { get; set; }
|
public int RowCount { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 端口数量
|
/// 端口数量(ODF机架用,光交箱固定12)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int PortsCount { get; set; }
|
public int PortsCount { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
/// 默认连接状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public int DefaultStatus { get; set; }
|
public int DefaultStatus { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 机架类型:0=ODF机架, 1=光交箱
|
||||||
|
/// </summary>
|
||||||
|
public int RackType { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -112,5 +112,10 @@ namespace ZR.Model.Business
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string BusinessType { get; set; }
|
public string BusinessType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 端口侧:0=左侧(光交箱端子/默认), 1=右侧(ODF端子)
|
||||||
|
/// </summary>
|
||||||
|
public int PortSide { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -23,6 +23,15 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :lg="12">
|
||||||
|
<el-form-item label="机架类型" prop="rackType">
|
||||||
|
<el-select v-model="form.rackType" :disabled="isView || isEdit" placeholder="请选择机架类型" @change="handleRackTypeChange">
|
||||||
|
<el-option label="ODF机架" :value="0"></el-option>
|
||||||
|
<el-option label="光交箱" :value="1"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
<!-- 高级 -->
|
<!-- 高级 -->
|
||||||
<el-col v-if="isAdd" :lg="24">
|
<el-col v-if="isAdd" :lg="24">
|
||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
|
|
@ -42,12 +51,18 @@
|
||||||
<div class="form-tip">每个机框中有多少行</div>
|
<div class="form-tip">每个机框中有多少行</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="isAdd" :lg="12">
|
<el-col v-if="isAdd && form.rackType !== 1" :lg="12">
|
||||||
<el-form-item label="端口数" prop="portsCount">
|
<el-form-item label="端口数" prop="portsCount">
|
||||||
<el-input v-model.number="form.portsCount" :disabled="isView" placeholder="请输入端口数" />
|
<el-input v-model.number="form.portsCount" :disabled="isView" placeholder="请输入端口数" />
|
||||||
<div class="form-tip">每个机框中每行端口数量</div>
|
<div class="form-tip">每个机框中每行端口数量</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col v-if="isAdd && form.rackType === 1" :lg="12">
|
||||||
|
<el-form-item label="端口数">
|
||||||
|
<el-input :model-value="'每侧12个(固定)'" disabled />
|
||||||
|
<div class="form-tip">光交箱每行左右各12个端口,共24个</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col v-if="isAdd" :lg="12">
|
<el-col v-if="isAdd" :lg="12">
|
||||||
<el-form-item label="默认连接状态" prop="defaultStatus">
|
<el-form-item label="默认连接状态" prop="defaultStatus">
|
||||||
<el-radio-group v-model="form.defaultStatus">
|
<el-radio-group v-model="form.defaultStatus">
|
||||||
|
|
@ -134,6 +149,7 @@ const form = ref({
|
||||||
sequenceNumber: null,
|
sequenceNumber: null,
|
||||||
rackName: null,
|
rackName: null,
|
||||||
frameCount: 9, // 默认固定9框
|
frameCount: 9, // 默认固定9框
|
||||||
|
rackType: 0, // 0=ODF机架, 1=光交箱
|
||||||
createdAt: null,
|
createdAt: null,
|
||||||
updatedAt: null,
|
updatedAt: null,
|
||||||
framesCount: 9,
|
framesCount: 9,
|
||||||
|
|
@ -146,7 +162,16 @@ const form = ref({
|
||||||
const rules = {
|
const rules = {
|
||||||
roomId: [{ required: true, message: '机房不能为空', trigger: 'change', type: 'number' }],
|
roomId: [{ required: true, message: '机房不能为空', trigger: 'change', type: 'number' }],
|
||||||
sequenceNumber: [{ required: true, message: '序号不能为空', trigger: 'blur', type: 'number' }],
|
sequenceNumber: [{ required: true, message: '序号不能为空', trigger: 'blur', type: 'number' }],
|
||||||
rackName: [{ required: true, message: 'ODF名称不能为空', trigger: 'blur' }]
|
rackName: [{ required: true, message: 'ODF名称不能为空', trigger: 'blur' }],
|
||||||
|
rackType: [{ required: true, message: '机架类型不能为空', trigger: 'change', type: 'number' }]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 机架类型切换
|
||||||
|
function handleRackTypeChange(val) {
|
||||||
|
if (val === 1) {
|
||||||
|
// 光交箱固定端口数12
|
||||||
|
form.value.portsCount = 12
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 字典选项
|
// 字典选项
|
||||||
|
|
@ -171,6 +196,7 @@ function resetForm() {
|
||||||
sequenceNumber: null,
|
sequenceNumber: null,
|
||||||
rackName: null,
|
rackName: null,
|
||||||
frameCount: 9, // 默认固定9框
|
frameCount: 9, // 默认固定9框
|
||||||
|
rackType: 0,
|
||||||
createdAt: null,
|
createdAt: null,
|
||||||
updatedAt: null,
|
updatedAt: null,
|
||||||
framesCount: 9,
|
framesCount: 9,
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,14 @@
|
||||||
<span style="color: #909399; font-size: 12px">高级信息</span>
|
<span style="color: #909399; font-size: 12px">高级信息</span>
|
||||||
</el-divider>
|
</el-divider>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col v-if="isAdd" :lg="12">
|
||||||
|
<el-form-item label="机架类型" prop="rackType">
|
||||||
|
<el-select v-model="form.rackType" :disabled="isView" placeholder="请选择机架类型" @change="handleRackTypeChange">
|
||||||
|
<el-option label="ODF机架" :value="0"></el-option>
|
||||||
|
<el-option label="光交箱" :value="1"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col v-if="isAdd" :lg="12">
|
<el-col v-if="isAdd" :lg="12">
|
||||||
<el-form-item label="ODF机架数量" prop="racksCount">
|
<el-form-item label="ODF机架数量" prop="racksCount">
|
||||||
<el-input v-model.number="form.racksCount" :disabled="isView" placeholder="请输入ODF机架数量" />
|
<el-input v-model.number="form.racksCount" :disabled="isView" placeholder="请输入ODF机架数量" />
|
||||||
|
|
@ -67,12 +75,18 @@
|
||||||
<div class="form-tip">每个机框中有多少行</div>
|
<div class="form-tip">每个机框中有多少行</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col v-if="isAdd" :lg="12">
|
<el-col v-if="isAdd && form.rackType !== 1" :lg="12">
|
||||||
<el-form-item label="端口数" prop="portsCount">
|
<el-form-item label="端口数" prop="portsCount">
|
||||||
<el-input v-model.number="form.portsCount" :disabled="isView" placeholder="请输入端口数" />
|
<el-input v-model.number="form.portsCount" :disabled="isView" placeholder="请输入端口数" />
|
||||||
<div class="form-tip">每个机框中每行端口数量</div>
|
<div class="form-tip">每个机框中每行端口数量</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col v-if="isAdd && form.rackType === 1" :lg="12">
|
||||||
|
<el-form-item label="端口数">
|
||||||
|
<el-input :model-value="'每侧12个(固定)'" disabled />
|
||||||
|
<div class="form-tip">光交箱每行左右各12个端口,共24个</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col v-if="isAdd" :lg="12">
|
<el-col v-if="isAdd" :lg="12">
|
||||||
<el-form-item label="默认连接状态" prop="defaultStatus">
|
<el-form-item label="默认连接状态" prop="defaultStatus">
|
||||||
<el-radio-group v-model="form.defaultStatus">
|
<el-radio-group v-model="form.defaultStatus">
|
||||||
|
|
@ -178,7 +192,8 @@ const form = ref({
|
||||||
rowCount: 6,
|
rowCount: 6,
|
||||||
portsCount: 12,
|
portsCount: 12,
|
||||||
defaultStatus: 0,
|
defaultStatus: 0,
|
||||||
orderby: 0
|
orderby: 0,
|
||||||
|
rackType: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
// 表单验证规则
|
// 表单验证规则
|
||||||
|
|
@ -186,6 +201,13 @@ const rules = {
|
||||||
roomName: [{ required: true, message: '机房名称不能为空', trigger: 'blur' }]
|
roomName: [{ required: true, message: '机房名称不能为空', trigger: 'blur' }]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 机架类型切换
|
||||||
|
function handleRackTypeChange(val) {
|
||||||
|
if (val === 1) {
|
||||||
|
form.value.portsCount = 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 获取部门树数据
|
// 获取部门树数据
|
||||||
function getDeptTreeData() {
|
function getDeptTreeData() {
|
||||||
treeselect().then((response) => {
|
treeselect().then((response) => {
|
||||||
|
|
@ -209,7 +231,8 @@ function resetForm() {
|
||||||
framesCount: 9,
|
framesCount: 9,
|
||||||
rowCount: 6,
|
rowCount: 6,
|
||||||
portsCount: 12,
|
portsCount: 12,
|
||||||
defaultStatus: 0
|
defaultStatus: 0,
|
||||||
|
rackType: 0
|
||||||
}
|
}
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
proxy.resetForm('formRef')
|
proxy.resetForm('formRef')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user