有两个下拉菜单,分别是所属站点下拉菜单、所属库房下拉菜单,库房是存在站点下面的,我想把这两个下拉菜单关联,选择站点菜单时,,库房下拉菜单只会出现该站点下的库房信息,数据由后端java提供,后端采用springboot,前端采用vue或elementUi 教我怎么写
时间: 2023-10-08 16:08:37 浏览: 84
基于vue、element ui 的轻量级、前后端分离、拥有完整sku和下单流程的完全开源商城后台所属前端界面
首先,在后端Java中需要提供一个接口,用于根据所选的站点获取该站点下的库房信息。可以在Controller层中编写以下代码:
```java
@GetMapping("/warehouses")
public List<Warehouse> getWarehousesBySite(@RequestParam("siteId") Long siteId) {
return warehouseService.getWarehousesBySite(siteId);
}
```
其中,Warehouse是库房的实体类,warehouseService是库房的Service层,getWarehousesBySite方法用于根据站点id获取该站点下的库房信息。
在前端Vue或ElementUI中,可以在所属站点下拉菜单中添加一个监听事件,当所选的站点发生改变时,调用后端提供的接口获取该站点下的库房信息,并更新所属库房下拉菜单。
```vue
<template>
<div>
<el-select v-model="siteId" @change="getWarehouses">
<el-option v-for="site in sites" :key="site.id" :label="site.name" :value="site.id"></el-option>
</el-select>
<el-select v-model="warehouseId">
<el-option v-for="warehouse in warehouses" :key="warehouse.id" :label="warehouse.name" :value="warehouse.id"></el-option>
</el-select>
</div>
</template>
<script>
export default {
data() {
return {
sites: [], // 站点列表
siteId: '', // 所选站点id
warehouses: [], // 库房列表
warehouseId: '' // 所选库房id
}
},
methods: {
// 获取站点列表
getSites() {
// 发送请求获取站点列表
},
// 获取库房列表
getWarehouses() {
// 发送请求获取所选站点下的库房列表
}
},
mounted() {
this.getSites()
}
}
</script>
```
在getSites方法中,发送请求获取站点列表,将站点信息保存在sites数组中,在所属站点下拉菜单中依次显示。
在getWarehouses方法中,发送请求获取所选站点下的库房列表,将库房信息保存在warehouses数组中,在所属库房下拉菜单中依次显示。
需要注意的是,在发送请求时需要带上所选站点的id,可以使用axios等库来发送请求。
此外,为了提高用户体验,可以在所属站点下拉菜单中添加一个loading动画,当获取到所属库房信息后再隐藏该动画。可以使用ElementUI中的el-loading组件来实现。
阅读全文