21
This commit is contained in:
parent
32d1b68daf
commit
7653c5fe2d
|
|
@ -44,28 +44,30 @@
|
|||
<view class="frame-card" v-for="frame in frameList" :key="frame.id">
|
||||
<text class="frame-name">{{ frame.name }}</text>
|
||||
|
||||
<!-- 端口行 -->
|
||||
<view class="port-row" v-for="(row, rowIdx) in frame.odfPortsList" :key="rowIdx">
|
||||
<text class="row-name">{{ row.name }}</text>
|
||||
<scroll-view class="port-scroll" scroll-x>
|
||||
<view class="port-list">
|
||||
<view
|
||||
class="port-item"
|
||||
v-for="port in row.rowList"
|
||||
:key="port.id"
|
||||
@click="openPortEdit(port)"
|
||||
>
|
||||
<!-- 端口行(整框一起横向滚动) -->
|
||||
<scroll-view class="port-scroll" scroll-x>
|
||||
<view class="port-rows-wrapper">
|
||||
<view class="port-row" v-for="(row, rowIdx) in frame.odfPortsList" :key="rowIdx">
|
||||
<text class="row-name">{{ row.name }}</text>
|
||||
<view class="port-list">
|
||||
<view
|
||||
class="port-circle"
|
||||
:class="port.status === 1 ? 'port-green' : 'port-red'"
|
||||
class="port-item"
|
||||
v-for="port in row.rowList"
|
||||
:key="port.id"
|
||||
@click="openPortEdit(port)"
|
||||
>
|
||||
<text class="port-tips">{{ port.tips }}</text>
|
||||
<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>
|
||||
<text class="port-name">{{ port.name }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -267,6 +269,16 @@ onLoad((options) => {
|
|||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.port-scroll {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.port-rows-wrapper {
|
||||
display: inline-block;
|
||||
min-width: 100%;
|
||||
}
|
||||
|
||||
.port-row {
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
|
@ -277,11 +289,6 @@ onLoad((options) => {
|
|||
margin-bottom: 12rpx;
|
||||
}
|
||||
|
||||
.port-scroll {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.port-list {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,12 @@
|
|||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 搜索入口栏 -->
|
||||
<view class="search-bar" @click="goSearch">
|
||||
<image class="search-icon" src="/static/images/ic_search.png" mode="aspectFit" />
|
||||
<text class="search-placeholder">请输入要搜索的备注内容</text>
|
||||
</view>
|
||||
|
||||
<!-- 机架列表 -->
|
||||
<view class="rack-list">
|
||||
<view
|
||||
|
|
@ -76,6 +82,12 @@ function goCheckin() {
|
|||
})
|
||||
}
|
||||
|
||||
function goSearch() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/search/index?roomId=' + roomIdRef.value
|
||||
})
|
||||
}
|
||||
|
||||
function goDetail(item) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/rack-detail/index?rackId=' + item.id + '&rackName=' + encodeURIComponent(item.rackName) + '&roomName=' + encodeURIComponent(roomName.value)
|
||||
|
|
@ -155,6 +167,27 @@ onReachBottom(() => {
|
|||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.search-bar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 16rpx 24rpx;
|
||||
padding: 0 24rpx;
|
||||
height: 72rpx;
|
||||
background-color: rgba(255, 255, 255, 0.9);
|
||||
border-radius: 36rpx;
|
||||
}
|
||||
|
||||
.search-icon {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
|
||||
.search-placeholder {
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.nav-title {
|
||||
font-size: 34rpx;
|
||||
font-weight: 600;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
mode="aspectFit"
|
||||
@click="goBack"
|
||||
/>
|
||||
<text class="nav-title">搜索</text>
|
||||
<text class="nav-title">{{ roomIdRef ? '机房搜索' : '搜索' }}</text>
|
||||
<view class="nav-icon-placeholder" />
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -33,8 +33,8 @@
|
|||
|
||||
<!-- 搜索结果 -->
|
||||
<view class="result-area" v-if="searched">
|
||||
<!-- 机房区域 -->
|
||||
<view class="section" v-if="rooms.length > 0">
|
||||
<!-- 机房区域(仅全局搜索时显示) -->
|
||||
<view class="section" v-if="!roomIdRef && rooms.length > 0">
|
||||
<text class="section-title">机房</text>
|
||||
<view
|
||||
class="room-card"
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
import { onReachBottom } from '@dcloudio/uni-app'
|
||||
import { onLoad, onReachBottom } from '@dcloudio/uni-app'
|
||||
import { searchPorts } from '@/services/search'
|
||||
|
||||
const statusBarHeight = uni.getSystemInfoSync().statusBarHeight || 0
|
||||
|
|
@ -123,6 +123,7 @@ const pageNum = ref(1)
|
|||
const pageSize = 20
|
||||
const totalPage = ref(0)
|
||||
const loading = ref(false)
|
||||
const roomIdRef = ref('')
|
||||
|
||||
async function doSearch() {
|
||||
const key = keyword.value.trim()
|
||||
|
|
@ -130,7 +131,7 @@ async function doSearch() {
|
|||
pageNum.value = 1
|
||||
loading.value = true
|
||||
try {
|
||||
const res = await searchPorts(key, 1, pageSize)
|
||||
const res = await searchPorts(key, 1, pageSize, roomIdRef.value || undefined)
|
||||
if (res.code === 200 && res.data) {
|
||||
rooms.value = res.data.rooms || []
|
||||
const portsData = res.data.ports || {}
|
||||
|
|
@ -149,7 +150,7 @@ async function loadMore() {
|
|||
loading.value = true
|
||||
pageNum.value++
|
||||
try {
|
||||
const res = await searchPorts(keyword.value.trim(), pageNum.value, pageSize)
|
||||
const res = await searchPorts(keyword.value.trim(), pageNum.value, pageSize, roomIdRef.value || undefined)
|
||||
if (res.code === 200 && res.data) {
|
||||
const portsData = res.data.ports || {}
|
||||
ports.value = [...ports.value, ...(portsData.result || [])]
|
||||
|
|
@ -179,6 +180,12 @@ function goPortDetail(item) {
|
|||
onReachBottom(() => {
|
||||
loadMore()
|
||||
})
|
||||
|
||||
onLoad((options) => {
|
||||
if (options.roomId) {
|
||||
roomIdRef.value = options.roomId
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import { get } from './api'
|
||||
|
||||
export const searchPorts = (key, pageNum, pageSize) =>
|
||||
get('/business/OdfPorts/search2', { key, pageNum, pageSize })
|
||||
export const searchPorts = (key, pageNum, pageSize, roomId) => {
|
||||
const params = { key, pageNum, pageSize }
|
||||
if (roomId) params.roomId = roomId
|
||||
return get('/business/OdfPorts/search2', params)
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -248,7 +248,12 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
|||
{
|
||||
return SUCCESS(new List<OdfPortsQuDto>());
|
||||
}
|
||||
var room = await _OdfRoomsService.AsQueryable().Where(it => it.Remarks.Contains(key) || it.RoomAddress.Contains(key) || it.RoomName.Contains(key)).Select((it) => new
|
||||
var roomQuery = _OdfRoomsService.AsQueryable().Where(it => it.Remarks.Contains(key) || it.RoomAddress.Contains(key) || it.RoomName.Contains(key));
|
||||
if (dto.RoomId.HasValue)
|
||||
{
|
||||
roomQuery = roomQuery.Where(it => it.Id == dto.RoomId.Value);
|
||||
}
|
||||
var room = await roomQuery.Select((it) => new
|
||||
{
|
||||
RoomId = it.Id,
|
||||
it.RoomName,
|
||||
|
|
@ -257,7 +262,12 @@ namespace ZR.Admin.WebApi.Controllers.Business
|
|||
it.DeptName
|
||||
}).ToListAsync();
|
||||
var predicate = Expressionable.Create<OdfPorts>();
|
||||
var list = _OdfPortsService.AsQueryable().Where(it => it.Name.Contains(key) || it.Remarks.Contains(key) || it.HistoryRemarks.Contains(key) || it.OpticalAttenuation.Contains(key)).ToPage<OdfPorts, OdfPortsQuDto>(dto);
|
||||
var portsQuery = _OdfPortsService.AsQueryable().Where(it => it.Name.Contains(key) || it.Remarks.Contains(key) || it.HistoryRemarks.Contains(key) || it.OpticalAttenuation.Contains(key));
|
||||
if (dto.RoomId.HasValue)
|
||||
{
|
||||
portsQuery = portsQuery.Where(it => it.RoomId == dto.RoomId.Value);
|
||||
}
|
||||
var list = portsQuery.ToPage<OdfPorts, OdfPortsQuDto>(dto);
|
||||
var roomId = list.Result.Select(it => it.RoomId).Distinct();
|
||||
var roomList = await _OdfRoomsService.AsQueryable().Where(it => roomId.Contains(it.Id)).ToListAsync();
|
||||
list.Result.ForEach(it =>
|
||||
|
|
|
|||
|
|
@ -85,6 +85,7 @@ namespace ZR.Model.Business.Dto
|
|||
public class OdfPortsSearchDto : PagerInfo
|
||||
{
|
||||
public string Key { get; set; }
|
||||
public int? RoomId { get; set; }
|
||||
}
|
||||
public class OdfPortsMDto
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user