app修改 #171

Merged
hnu202326010125 merged 1 commits from luoyuehang_branch into develop 1 week ago

@ -16,12 +16,12 @@
</div>
<div class="form-group">
<label for="studentId">学号</label>
<label for="studentId">姓名</label>
<input
type="text"
id="studentId"
v-model="loginForm.studentId"
placeholder="请输入学号"
placeholder="请输入姓名"
@keyup.enter="handleLogin"
/>
</div>
@ -280,7 +280,7 @@ const showConfirmPassword = ref(false)
//
const validateLogin = () => {
if (!loginForm.studentId.trim()) {
alert('请输入学号')
alert('请输入姓名')
return false
}
if (!loginForm.password) {

@ -19,7 +19,6 @@
<div class="area-card">
<div class="area-info">
<div class="area-name">岳麓片区</div>
<div class="area-details">5所学校 · 12台制水机</div>
</div>
<div class="area-divider"></div>
<button class="view-btn" @click="viewYueluArea"></button>

@ -53,7 +53,7 @@
<button class="action-btn detail" @click="viewDeviceDetail(device.id)">
详情
</button>
<button class="action-btn inspect" @click="viewWaterSupplier(device.id)">
<button class="action-btn inspect" @click="viewRelatedWaterSuppliers(device)">
查看供水机
</button>
</div>
@ -77,6 +77,7 @@
import { ref, onMounted, computed } from 'vue'
import { useRouter } from 'vue-router'
import { deviceService } from '@/services/deviceService'
import api from '@/services/api'
import { useAuthStore } from '@/stores/auth'
const router = useRouter()
@ -131,7 +132,44 @@ const fetchWaterMakers = async () => {
}
}
//
//
const fetchRelatedWaterSuppliers = async (makerId) => {
try {
loading.value = true
//
const response = await api.get(`/api/web/device/maker/${makerId}/suppliers`)
if (response.data.code === 200) {
const relatedSuppliers = response.data.data || []
//
if (relatedSuppliers.length === 0) {
alert('该制水机暂未关联供水机')
return
}
// ID
const supplierIds = relatedSuppliers.map(supplier => supplier.deviceId)
router.push({
path: '/inspection/water-supplier',
query: {
makerId: makerId,
relatedSuppliers: JSON.stringify(supplierIds),
fromMaker: true //
}
})
} else {
error.value = response.data.message
}
} catch (err) {
console.error('获取关联供水机失败:', err)
alert('获取关联供水机失败,请稍后重试')
} finally {
loading.value = false
}
}
//
const goBack = () => {
router.back()
}
@ -156,9 +194,9 @@ const viewDeviceDetail = (deviceId) => {
router.push(`/inspection/water-maker/${deviceId}`)
}
const viewWaterSupplier = (deviceId) => {
// ID
router.push(`/inspection/water-supplier?makerId=${deviceId}`)
//
const viewRelatedWaterSuppliers = (device) => {
fetchRelatedWaterSuppliers(device.id)
}
//

@ -1,11 +1,13 @@
<template>
<div class="water-supplier-list">
<!-- 顶部标题栏 -->
<!-- 顶部标题栏 - 添加返回按钮和制水机名称显示 -->
<div class="header">
<div class="header-left">
<span class="back-btn" @click="goBack"></span>
</div>
<div class="header-title">设备巡检</div>
<div class="header-title">
{{ fromMaker ? `制水机#${makerId}的供水机` : '设备巡检' }}
</div>
<div class="header-right">
<span class="nav-text">供水机</span>
</div>
@ -28,7 +30,9 @@
<!-- 正常状态 -->
<div v-else class="device-list">
<div v-for="device in deviceList" :key="device.id" class="device-item">
<div v-for="device in filteredDeviceList" :key="device.id" class="device-item">
<div class="device-info">
<div class="device-name">{{ device.name }}</div>
<div class="device-location">{{ device.location }}</div>
@ -48,6 +52,11 @@
</button>
</div>
</div>
<!-- 没有供水机时的提示 -->
<div v-if="fromMaker && filteredDeviceList.length === 0" class="empty-tip">
该制水机暂未关联任何供水机
</div>
</div>
</div>
@ -62,19 +71,26 @@
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { useRouter } from 'vue-router'
import { ref, onMounted, computed } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { deviceService } from '@/services/deviceService'
import { useAuthStore } from '@/stores/auth'
const router = useRouter()
const route = useRoute()
const authStore = useAuthStore()
//
const deviceList = ref([])
const filteredDeviceList = ref([])
const loading = ref(true)
const error = ref(null)
//
const makerId = ref(route.query.makerId || '')
const relatedSuppliers = ref([])
const fromMaker = ref(route.query.fromMaker === 'true')
//
const fetchWaterSuppliers = async () => {
try {
@ -94,6 +110,21 @@ const fetchWaterSuppliers = async () => {
storageCapacity: device.storageCapacity || 0,
areaId: device.areaId
}))
//
if (fromMaker.value && route.query.relatedSuppliers) {
try {
relatedSuppliers.value = JSON.parse(route.query.relatedSuppliers)
filteredDeviceList.value = deviceList.value.filter(device =>
relatedSuppliers.value.includes(device.id)
)
} catch (e) {
console.error('解析关联供水机参数失败:', e)
filteredDeviceList.value = deviceList.value
}
} else {
filteredDeviceList.value = deviceList.value
}
} else {
error.value = response.message
}
@ -412,4 +443,21 @@ onMounted(() => {
color: #999;
margin-top: 4px;
}
.related-tip {
background: #e6f7ff;
border: 1px solid #91d5ff;
border-radius: 4px;
padding: 10px 16px;
margin-bottom: 16px;
color: #1890ff;
font-size: 14px;
}
.empty-tip {
text-align: center;
padding: 40px;
color: #999;
font-size: 16px;
}
</style>

Loading…
Cancel
Save