实现文件中tab1和tab2的检查区域筛选下拉框内选项是从各自接口内获取的检查区域数据
时间: 2024-11-29 22:35:42 浏览: 0
Tab选项卡 html js
要在文件中的 `tab1` 和 `tab2` 中实现检查区域筛选下拉框,并从各自的接口获取检查区域数据,可以按照以下步骤进行:
1. **定义数据属性**:在 `data` 函数中添加两个数组来存储从接口获取的检查区域数据。
2. **创建方法**:编写异步方法来调用接口并获取数据。
3. **在生命周期钩子中调用方法**:在组件挂载时调用这些方法以初始化数据。
4. **更新模板**:在模板中使用这些数据来填充下拉框。
以下是具体的代码示例:
### 修改后的代码
```html
<template>
<view>
<view class="bg-img"></view>
<view class="container">
<view class="title">待办任务</view>
<view class="task">
<text class="task-title">任务待办</text>
<view class="task-list">
<view class="task-item" v-for="(item, i) in tasks" :key="i" @click="navigate(item.route)">
<u-icon size="30" :name="item.icon"></u-icon>
<text class="icon-title">{{ item.text }}</text>
</view>
</view>
</view>
<view class="task">
<text class="task-title">流程待办</text>
<view class="task-list">
<view class="task-item" v-for="(item, i) in task1" :key="i" @click="navigate(item.route)">
<u-icon size="30" :name="item.icon"></u-icon>
<text class="icon-title">{{ item.text }}</text>
</view>
</view>
</view>
<view class="filter">
<text class="filter-title">检查区域筛选</text>
<picker mode="selector" :range="areasTab1" @change="onAreaChangeTab1">
<view class="filter-item">选择检查区域(Tab1)</view>
</picker>
<picker mode="selector" :range="areasTab2" @change="onAreaChangeTab2">
<view class="filter-item">选择检查区域(Tab2)</view>
</picker>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
tasks: [
{ icon: '/static/images/icon/inspection-task.png', text: '检查任务', route: '/pages/moban/moban' },
{ icon: '/static/images/icon/rectification-task.png', text: '整改任务', route: '/pages/HIA/rectification' },
{ icon: '/static/images/icon/acceptance-task.png', text: '验收任务', route: '/pages/HIA/review' }
],
task1: [
{ icon: '/static/images/icon/my-task-approval.png', text: '我的审批', route: '/pages/todo/approve1' }
],
areasTab1: [],
areasTab2: []
};
},
methods: {
navigate(route) {
uni.navigateTo({
url: route
});
},
onAreaChangeTab1(e) {
const index = e.target.value;
console.log('Selected area (Tab1):', this.areasTab1[index]);
},
onAreaChangeTab2(e) {
const index = e.target.value;
console.log('Selected area (Tab2):', this.areasTab2[index]);
},
async fetchAreasTab1() {
try {
const response = await uni.request({
url: 'https://api.example.com/tab1_areas',
method: 'GET'
});
this.areasTab1 = response.data;
} catch (error) {
console.error('Error fetching areas for Tab1:', error);
}
},
async fetchAreasTab2() {
try {
const response = await uni.request({
url: 'https://api.example.com/tab2_areas',
method: 'GET'
});
this.areasTab2 = response.data;
} catch (error) {
console.error('Error fetching areas for Tab2:', error);
}
}
},
mounted() {
this.fetchAreasTab1();
this.fetchAreasTab2();
}
};
</script>
<style lang="less" scoped>
.container {
padding: 40upx;
.title {
text-align: center;
color: #333333;
font-size: 42upx;
font-weight: 600;
}
.task {
margin-top: 42upx;
.task-title {
font-size: 36upx;
font-weight: bold;
padding-left: 25upx;
border-left: 10upx solid #585ce5;
}
.task-list {
overflow: hidden;
padding: 40upx 0upx;
.task-item {
float: left;
margin-right: 40upx;
font-size: 28upx;
font-weight: bold;
display: flex;
flex-direction: column;
align-items: center;
.icon-title {
margin-top: 15upx;
}
}
}
}
.filter {
margin-top: 42upx;
.filter-title {
font-size: 36upx;
font-weight: bold;
padding-left: 25upx;
border-left: 10upx solid #585ce5;
}
.filter-item {
margin-top: 20upx;
padding: 10upx;
border: 1px solid #ccc;
border-radius: 5upx;
text-align: center;
}
}
}
/deep/ uni-view {
background-color: transparent !important;
}
</style>
```
### 解释
1. **数据属性**:在 `data` 函数中添加了 `areasTab1` 和 `areasTab2` 数组,用于存储从接口获取的检查区域数据。
2. **方法**:添加了 `fetchAreasTab1` 和 `fetchAreasTab2` 方法,分别用于从不同的接口获取检查区域数据。
3. **生命周期钩子**:在 `mounted` 钩子中调用了这两个方法,以在组件挂载时初始化数据。
4. **模板**:在模板中添加了两个 `picker` 组件,分别用于显示 `Tab1` 和 `Tab2` 的检查区域下拉框,并绑定了 `@change` 事件处理函数 `onAreaChangeTab1` 和 `onAreaChangeTab2`。
这样,当组件加载时会自动从指定的接口获取检查区域数据,并将其填充到下拉框中。用户可以选择不同的检查区域进行筛选。
阅读全文