Compare commits

..

No commits in common. "f588a5a0dc5019896be7cc61be90765c0b44e588" and "ac23f91ea1fb5def8472bee6a60f8c95ced0e5a5" have entirely different histories.

3 changed files with 432 additions and 504 deletions

View File

@ -1,518 +1,477 @@
<template> <template>
<div class="container"> <div class="container">
<div <div class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
class="searchBox" <div class="searchBox_add">
:style="{ height: localHeight + 'px', paddingTop: top + 'px' }" <div class="emptyCommunity" @click="addCommunity"> {{ communityVal }} </div>
> <!-- <div class="MyCommunity" v-if="false">
<div class="searchBox_add">
<div class="emptyCommunity" @click="addCommunity">
{{ communityVal }}
</div>
<!-- <div class="MyCommunity" v-if="false">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community/community_mycommunity.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community/community_mycommunity.png"
mode="aspectFill"></image> mode="aspectFill"></image>
<span>惠生活</span> <span>惠生活</span>
<u-icon name="arrow-down" color="#999999" size="28"></u-icon> <u-icon name="arrow-down" color="#999999" size="28"></u-icon>
</div> --> </div> -->
</div> </div>
</div> </div>
<div class="swiperBox1"> <div class="swiperBox1">
<swiper @animationfinish="swipers" autoplay circular> <swiper @animationfinish="swipers" autoplay circular>
<swiper-item <swiper-item v-for="(item, index) in bannerList" :key="index" @click="headerServerClick(item)">
v-for="(item, index) in bannerList" <image :src="item.ad_picture" mode="aspectFill" />
:key="index" </swiper-item>
@click="headerServerClick(item)" </swiper>
>
<image :src="item.ad_picture" mode="aspectFill" />
</swiper-item>
</swiper>
<view class="dot"> <view class="dot">
<view <view :class="['dotItem', currentIdx == index ? 'active' : '']" v-for="(item, index) in bannerList"
:class="['dotItem', currentIdx == index ? 'active' : '']" :key="index">
v-for="(item, index) in bannerList" </view>
:key="index" </view>
>
</view>
</view>
<!-- <div class="dot"> <!-- <div class="dot">
<div class="dotItem"></div> <div class="dotItem"></div>
<div class="dotItem active"></div> <div class="dotItem active"></div>
</div> --> </div> -->
</div> </div>
<div class="swiperBox2"> <div class="swiperBox2">
<swiper @animationfinish="swipers" autoplay circular> <swiper @animationfinish="swipers" autoplay circular>
<swiper-item <swiper-item v-for="(item, index) in streamerList" :key="index" @click="headerServerClick(item)">
v-for="(item, index) in streamerList" <image :src="item.ad_picture" mode="aspectFill" />
:key="index" </swiper-item>
@click="headerServerClick(item)" </swiper>
> </div>
<image :src="item.ad_picture" mode="aspectFill" />
</swiper-item>
</swiper>
</div>
<!-- <div class="funcList"> <!-- <div class="funcList">
<div class="funcItem" v-for="item in functionList" @click="jump(item.mini_program_url)"> <div class="funcItem" v-for="item in functionList" @click="jump(item.mini_program_url)">
<image :src="item.nav_icon"></image> <image :src="item.nav_icon"></image>
{{ item.nav_name }} {{ item.nav_name }}
</div> </div>
</div> --> </div> -->
<view class="funcList"> <view class="funcList">
<u-grid :col="rowNum" :border="false"> <u-grid :col="rowNum" :border="false">
<u-grid-item <u-grid-item v-for="(item, index) in functionList" @click="jump(item.mini_program_url)" :key="index">
v-for="(item, index) in functionList" <image class="grid_Pic" :src="item.nav_icon" mode=""></image>
@click="jump(item.mini_program_url)" <text>{{ item.nav_name }}</text>
:key="index" </u-grid-item>
> </u-grid>
<image class="grid_Pic" :src="item.nav_icon" mode=""></image> </view>
<text>{{ item.nav_name }}</text>
</u-grid-item>
</u-grid>
</view>
<div <div v-for="(item, index) in tileList" :key="index" :class="['ads', index == 0 ? 'ads_first' : '']"
v-for="(item, index) in tileList" @click="headerServerClick(item)">
:key="index" <image :src="item.ad_picture" mode="aspectFill" />
:class="['ads', index == 0 ? 'ads_first' : '']" </div>
@click="headerServerClick(item)"
>
<image :src="item.ad_picture" mode="aspectFill" />
</div>
<div class="tabs"> <div class="tabs">
<div <div v-for="(item, index) in categoryList" :key="index"
v-for="(item, index) in categoryList" :class="['tabItem', selectedTab === index ? 'active2' : '']" @click="selectTab(index, item)">
:key="index" {{ item.category_name }}
:class="['tabItem', selectedTab === index ? 'active2' : '']" </div>
@click="selectTab(index, item)" </div>
>
{{ item.category_name }}
</div>
</div>
<div class="newsList"> <div class="newsList">
<div <div class="newsItem" v-for="item in infoList" @click="detail(item)" :key="item.id">
class="newsItem" <div class="newsItem_left">
v-for="item in infoList" <div class="newsItem_left_tit">{{ item.title }}</div>
@click="detail(item)" <div class="newsItem_left_sub">{{ item.author }}</div>
:key="item.id" </div>
> <div class="newsItem_right">
<div class="newsItem_left"> <image :src="item.list_image" mode="aspectFill" />
<div class="newsItem_left_tit">{{ item.title }}</div> </div>
<div class="newsItem_left_sub">{{ item.author }}</div> </div>
</div> </div>
<div class="newsItem_right">
<image :src="item.list_image" mode="aspectFill" />
</div>
</div>
</div>
<div class="tips">下拉加载后续10条共计30条</div> <div class="tips">下拉加载后续10条共计30条</div>
<div class="bigAds" v-if="ads1Show"> <div class="bigAds" v-if="ads1Show">
<div class="bigAdsCon"> <div class="bigAdsCon">
<div class="bigAdsCon_img"> <div class="bigAdsCon_img">
<swiper @animationfinish="swipers" autoplay circular> <swiper @animationfinish="swipers" autoplay circular>
<swiper-item <swiper-item v-for="(item, index) in largePopList" :key="index"
v-for="(item, index) in largePopList" @click="headerServerClick(item)">
:key="index" <image :src="item.ad_picture" mode="aspectFill" />
@click="headerServerClick(item)" </swiper-item>
> </swiper>
<image :src="item.ad_picture" mode="aspectFill" /> </div>
</swiper-item> <div class="close" @click="closeAds">
</swiper> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_close.png">
</div> </image>
<div class="close" @click="closeAds"> </div>
<image </div>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_close.png" </div>
>
</image>
</div>
</div>
</div>
<div class="bigAds" v-if="ads2Show"> <div class="bigAds" v-if="ads2Show">
<div class="bigAdsCon2"> <div class="bigAdsCon2">
<div class="bigAdsCon2_img"> <div class="bigAdsCon2_img">
<swiper <swiper :current="currentSwiperIndex" @change="onSwiperChange" @animationfinish="swipers" autoplay
:current="currentSwiperIndex" circular>
@change="onSwiperChange" <swiper-item v-for="(item, index) in popList" :key="index">
@animationfinish="swipers" <image :src="item.ad_picture" mode="aspectFill" />
autoplay </swiper-item>
circular </swiper>
> </div>
<swiper-item v-for="(item, index) in popList" :key="index"> <div class="AdsBtnList">
<image :src="item.ad_picture" mode="aspectFill" /> <div class="AdsBtnItem1" @click="closeAds2">取消</div>
</swiper-item> <div class="AdsBtnItem2" @click="onDetailClick">了解详情</div>
</swiper> </div>
</div> </div>
<div class="AdsBtnList"> </div>
<div class="AdsBtnItem1" @click="closeAds2">取消</div> <nav-footer :current="1" />
<div class="AdsBtnItem2" @click="onDetailClick">了解详情</div> </div>
</div>
</div>
</div>
<nav-footer :current="1" />
</div>
</template> </template>
<script> <script>
import { import {
request, request,
picUrl, picUrl,
uniqueByField, uniqueByField,
menuButtonInfo, menuButtonInfo,
NavgateTo, NavgateTo
} from "../../../utils"; } from '../../../utils';
import {
apiArr
} from '../../../api/v2Community';
import { apiArr } from "../../../api/v2Community";
export default { export default {
data() { data() {
return { return {
communityVal: "添加我的房产", communityVal: '添加我的房产',
picUrl, picUrl,
top: "", top: "",
localHeight: "", localHeight: "",
queryPage: { queryPage: {
page_num: 1, page_num: 1,
page_size: 10, page_size: 10,
}, },
communityList: [], communityList: [],
flag: false, flag: false,
functionList: [], functionList: [],
ads1Show: false, ads1Show: false,
ads2Show: false, ads2Show: false,
bannerList: [], //广 bannerList: [], //广
currentIdx: 0, currentIdx: 0,
streamerList: [], //广 streamerList: [], //广
tileList: [], //广 tileList: [], //广
largePopList: [], //广 largePopList: [], //广
popList: [], //广 popList: [], //广
categoryList: [], categoryList: [],
infoList: [], infoList: [],
selectedTab: 0, selectedTab: 0,
currentAdIndex: 0, currentAdIndex: 0,
rowNum: 0, rowNum: 0,
colNum: 0, colNum: 0,
page_size: 10, page_size:10,
page_num: 1, page_num:1,
flag: false, flag:false
}; }
}, },
async onLoad(options) { async onLoad(options) {
const meun = menuButtonInfo(); const meun = menuButtonInfo();
this.top = meun.top; this.top = meun.top;
// this.top = meun.height + meun.top; // this.top = meun.height + meun.top;
this.localHeight = meun.height; this.localHeight = meun.height;
// this.getCommunityList() // this.getCommunityList()
if (!uni.getStorageSync("changeCommData").id) { if (!uni.getStorageSync('changeCommData').id) {
uni.setStorageSync("changeCommData", { name: "森呼吸二期", id: 14 }); uni.setStorageSync("changeCommData", { name: "森呼吸二期", id: 14 })
} }
this.communityVal = uni.getStorageSync("changeCommData").name; this.communityVal = uni.getStorageSync('changeCommData').name
this.getfunctionNum(); this.getfunctionNum()
this.getAdvertising(); this.getAdvertising()
this.getCategoryList(); this.getCategoryList()
}, },
// //
onPullDownRefresh() { onPullDownRefresh() {
this.communityVal = uni.getStorageSync("changeCommData").name; this.communityVal = uni.getStorageSync('changeCommData').name
this.bannerList = []; this.bannerList = []
this.currentIdx = 0; this.currentIdx = 0
this.streamerList = []; //广 this.streamerList = [] //广
this.tileList = []; //广 this.tileList = [] //广
this.largePopList = []; //广 this.largePopList = [] //广
this.popList = []; //广 this.popList = [] //广
this.categoryList = []; this.categoryList = []
this.infoList = []; this.infoList = []
this.selectedTab = 0; this.selectedTab = 0
this.currentAdIndex = 0; this.currentAdIndex = 0
this.getfunctionNum(); this.getfunctionNum()
this.getAdvertising(); this.getAdvertising()
this.getCategoryList(); this.getCategoryList()
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
},
//
onReachBottom() {
if (this.flag) {
this.page_num++;
this.getCategoryList();
}
},
methods: { },
// desc() { //
// NavgateTo("../communityDetail/index") onReachBottom() {
// }, if(this.flag){
apply() { this.page_num++
NavgateTo("../applyOwer/index"); this.getCategoryList()
}, }
closeAds() { },
this.ads1Show = false;
},
closeAds2() {
this.ads2Show = false;
},
jump(e) {
if (!e) {
this.NotOpen();
return;
}
NavgateTo(e);
},
addCommunity() {
NavgateTo("/packages/community/myCommunity/index");
},
swipers(event) { methods: {
// // desc() {
this.currentIdx = event.detail.current; // NavgateTo("../communityDetail/index")
}, // },
apply() {
NavgateTo("../applyOwer/index")
},
closeAds() {
this.ads1Show = false
},
closeAds2() {
this.ads2Show = false
},
jump(e) {
if (!e) {
this.NotOpen();
return;
}
NavgateTo(e)
},
async getfunctionNum() { addCommunity() {
const res = await request( NavgateTo("/packages/community/myCommunity/index")
apiArr.commInfo, },
"POST",
{},
{
slice: false,
}
);
this.rowNum = res.nav_row_num_comm;
this.colNum = res.nav_row_total_comm;
return await this.getfunctionList();
},
async getfunctionList() { swipers(event) {
const res = await request(apiArr.navPage, "POST", { //
community_id: Number(uni.getStorageSync("changeCommData").id), this.currentIdx = event.detail.current;
page_num: 1, },
page_size: 50,
});
console.log(res, "xx");
// rowNum colNum async getfunctionNum() {
const totalItems = this.rowNum * this.colNum; const res = await request(apiArr.commInfo, "POST", {}, {
// 使 slice totalItems slice: false
this.functionList = res.rows.slice(0, totalItems).map((item) => { });
return { this.rowNum = res.nav_row_num_comm
...item, this.colNum = res.nav_row_total_comm
nav_icon: picUrl + item.nav_icon, return await this.getfunctionList()
}; },
});
console.log("functionList", this.functionList); async getfunctionList() {
}, const res = await request(apiArr.navPage, "POST", {
community_id: Number(uni.getStorageSync('changeCommData').id),
page_num: 1,
page_size: 50
});
console.log(res, 'xx');
async getAdvertising() { // rowNum colNum
const res = await request(apiArr.advPage, "POST", { const totalItems = this.rowNum * this.colNum;
community_id: Number(uni.getStorageSync("changeCommData").id), // 使 slice totalItems
ad_position: 1, this.functionList = res.rows.slice(0, totalItems).map(item => {
page_num: 1, return {
page_size: 50, ...item,
}); nav_icon: picUrl + item.nav_icon
this.bannerList = res.rows.map((item) => { };
return { });
...item,
ad_picture: picUrl + item.ad_picture,
};
});
const res2 = await request(apiArr.advPage, "POST", { console.log('functionList', this.functionList);
community_id: Number(uni.getStorageSync("changeCommData").id), },
ad_position: 2,
page_num: 1,
page_size: 50,
});
this.streamerList = res2.rows.map((item) => {
return {
...item,
ad_picture: picUrl + item.ad_picture,
};
});
const res3 = await request(apiArr.advPage, "POST", { async getAdvertising() {
community_id: Number(uni.getStorageSync("changeCommData").id), const res = await request(apiArr.advPage, "POST", {
ad_position: 3, community_id: Number(uni.getStorageSync('changeCommData').id),
page_num: 1, ad_position: 1,
page_size: 50, page_num: 1,
}); page_size: 50
this.tileList = res3.rows.map((item) => { })
return { this.bannerList = res.rows.map(item => {
...item, return {
ad_picture: picUrl + item.ad_picture, ...item,
}; ad_picture: picUrl + item.ad_picture
}); };
});
const res4 = await request(apiArr.advPage, "POST", { const res2 = await request(apiArr.advPage, "POST", {
community_id: Number(uni.getStorageSync("changeCommData").id), community_id: Number(uni.getStorageSync('changeCommData').id),
ad_position: 4, ad_position: 2,
page_num: 1, page_num: 1,
page_size: 50, page_size: 50
}); })
this.largePopList = res4.rows.map((item) => { this.streamerList = res2.rows.map(item => {
return { return {
...item, ...item,
ad_picture: picUrl + item.ad_picture, ad_picture: picUrl + item.ad_picture
}; };
}); });
this.ads1Show = res4.rows.length !== 0 ? true : false;
const res5 = await request(apiArr.advPage, "POST", { const res3 = await request(apiArr.advPage, "POST", {
community_id: Number(uni.getStorageSync("changeCommData").id), community_id: Number(uni.getStorageSync('changeCommData').id),
ad_position: 5, ad_position: 3,
page_num: 1, page_num: 1,
page_size: 50, page_size: 50
}); })
this.popList = res5.rows.map((item) => { this.tileList = res3.rows.map(item => {
return { return {
...item, ...item,
ad_picture: picUrl + item.ad_picture, ad_picture: picUrl + item.ad_picture
}; };
}); });
this.ads2Show = res5.rows.length !== 0 ? true : false;
},
headerServerClick(e) { const res4 = await request(apiArr.advPage, "POST", {
console.log("当前点击内容", e); community_id: Number(uni.getStorageSync('changeCommData').id),
if (!e.link_url) { ad_position: 4,
this.NotOpen(); page_num: 1,
return; page_size: 50
} })
if (e.link_url) { this.largePopList = res4.rows.map(item => {
// #ifdef APP-PLUS return {
uni.navigateTo({ ...item,
url: "/pages/webview/webview?url=" + encodeURIComponent(e.link_url), ad_picture: picUrl + item.ad_picture
}); };
// #endif });
this.ads1Show = res4.rows.length !== 0 ? true : false;
// #ifdef H5 const res5 = await request(apiArr.advPage, "POST", {
window.open(e.link_url, "_blank"); community_id: Number(uni.getStorageSync('changeCommData').id),
// #endif ad_position: 5,
page_num: 1,
page_size: 50
})
this.popList = res5.rows.map(item => {
return {
...item,
ad_picture: picUrl + item.ad_picture
};
});
this.ads2Show = res5.rows.length !== 0 ? true : false;
},
// #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU headerServerClick(e) {
if (e.appid) { console.log('当前点击内容', e);
uni.navigateToMiniProgram({ if (!e.link_url) {
appId: e.appid, this.NotOpen();
path: e.link_url, return
// }
extraData: { if (e.link_url) {
data1: "test", // #ifdef APP-PLUS
}, uni.navigateTo({
success(res) { url: '/pages/webview/webview?url=' + encodeURIComponent(e.link_url)
console.log("打开成功", res); });
}, // #endif
});
} else {
NavgateTo(e.link_url);
// NavgateTo('/packages/localLife/index/index')
}
// 使web-view
// uni.showModal({
// title: '',
// content: ': ' + e.link_url,
// confirmText: '',
// success(res) {
// if (res.confirm) {
// uni.setClipboardData({
// data: e.link_url,
// success() {
// uni.showToast({
// title: '',
// icon: 'success'
// });
// }
// });
// }
// }
// });
// #endif
}
},
onSwiperChange(e) {
this.currentAdIndex = e.detail.current;
},
onDetailClick() {
// 广
const currentAd = this.popList[this.currentAdIndex];
if (currentAd) {
this.headerServerClick(currentAd);
} else if (this.popList.length > 0) {
// 使
this.headerServerClick(this.popList[0]);
}
},
NotOpen() { // #ifdef H5
uni.showModal({ window.open(e.link_url, '_blank');
title: "提示", // #endif
content: "此功能暂未开通!",
showCancel: false,
complete: (res) => {
if (res.cancel) {
}
},
});
},
async getCategoryList() { // #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU
const res = await request(apiArr.categoryPage, "POST", { if (e.appid) {
community_id: Number(uni.getStorageSync("changeCommData").id), uni.navigateToMiniProgram({
category_code: "", appId: e.appid,
category_name: "", path: e.link_url,
page_num: 1, //
page_size: 30, extraData: {
}); 'data1': 'test'
this.categoryList = res.rows; },
this.selectTab(0, res.rows[0]); success(res) {
}, console.log('打开成功', res)
}
})
} else {
NavgateTo(e.link_url)
// NavgateTo('/packages/localLife/index/index')
}
// 使web-view
// uni.showModal({
// title: '',
// content: ': ' + e.link_url,
// confirmText: '',
// success(res) {
// if (res.confirm) {
// uni.setClipboardData({
// data: e.link_url,
// success() {
// uni.showToast({
// title: '',
// icon: 'success'
// });
// }
// });
// }
// }
// });
// #endif
}
},
onSwiperChange(e) {
this.currentAdIndex = e.detail.current;
},
onDetailClick() {
// 广
const currentAd = this.popList[this.currentAdIndex];
if (currentAd) {
this.headerServerClick(currentAd);
} else if (this.popList.length > 0) {
// 使
this.headerServerClick(this.popList[0]);
}
},
async selectTab(index, item) { NotOpen() {
this.selectedTab = index; uni.showModal({
console.log("选中的tab:", index); title: '提示',
const res = await request(apiArr.infoPage, "POST", { content: '此功能暂未开通!',
community_id: Number(uni.getStorageSync("changeCommData").id), showCancel: false,
announcement_category_id: item.id, complete: (res) => {
title: "", if (res.cancel) {
category_name: "",
page_num: this.page_num,
page_size: this.page_size,
});
if (res.rows && res.rows.length == this.page_size) {
this.flag = true;
} else {
this.flag = false;
}
res.rows = res.rows.map((item) => {
return {
...item,
list_image: picUrl + item.list_image,
};
});
this.infoList.splice(0, this.infoList.length);
this.infoList = this.infoList.concat(res.rows); }
}, }
})
},
detail(e) { async getCategoryList() {
console.log(e); const res = await request(apiArr.categoryPage, "POST", {
NavgateTo("../noticeDesc/index?id=" + e.id); community_id: Number(uni.getStorageSync('changeCommData').id),
}, category_code: "",
}, category_name: "",
}; page_num: 1,
page_size: 30
})
this.categoryList = res.rows
this.selectTab(0, res.rows[0])
},
async selectTab(index, item) {
this.selectedTab = index;
console.log('选中的tab:', index);
const res = await request(apiArr.infoPage, "POST", {
community_id: Number(uni.getStorageSync('changeCommData').id),
announcement_category_id: item.id,
title: '',
category_name: '',
page_num: this.page_num,
page_size: this.page_size,
})
if(res.rows && res.rows.length == this.page_size){
this.flag= true
}else{
this.flag= false
}
res.rows = res.rows.map(item => {
return {
...item,
list_image: picUrl + item.list_image,
};
});
this.infoList = this.infoList.concat(res.rows)
},
detail(e) {
console.log(e);
NavgateTo('../noticeDesc/index?id=' + e.id)
},
},
}
</script> </script>
<style> <style>

View File

@ -115,7 +115,7 @@
} }
.content-section { .content-section {
/* margin-bottom: 30rpx; */ margin-bottom: 30rpx;
} }
.section-text{ .section-text{
@ -142,7 +142,7 @@
gap: 20rpx; gap: 20rpx;
padding: 20rpx; padding: 20rpx;
background-color: #fff; background-color: #fff;
/* margin-bottom: 20rpx; */ margin-bottom: 20rpx;
} }
.category-item { .category-item {
@ -155,7 +155,6 @@
width: 80rpx; width: 80rpx;
height: 80rpx; height: 80rpx;
margin-bottom: 12rpx; margin-bottom: 12rpx;
border-radius: 10rpx;
} }
.category-name { .category-name {

View File

@ -44,7 +44,7 @@
> >
<view id="top" style="height: 1px; opacity: 0"></view> <view id="top" style="height: 1px; opacity: 0"></view>
<image <image
src="http://localhost:8080/guanggao4.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"
class="content-img" class="content-img"
></image> ></image>
<view <view
@ -94,67 +94,37 @@ export default {
localHeight: "", localHeight: "",
currentLocation: "衡水市桃城区", currentLocation: "衡水市桃城区",
categories: [ categories: [
{ { id: "category1", name: "家电维修" },
id: "category1", { id: "category2", name: "数码维修" },
name: "家电维修", { id: "category3", name: "家电清洗" },
}, { id: "category4", name: "洗衣洗鞋" },
{ { id: "category5", name: "精细擦窗" },
id: "category2", { id: "category6", name: "家庭保姆" },
name: "数码维修", { id: "category7", name: "管道疏通" },
}, { id: "category8", name: "家庭保洁" },
{ { id: "category9", name: "整理收纳" },
id: "category3", { id: "category10", name: "母婴服务" },
name: "家电清洗",
},
{
id: "category4",
name: "洗衣洗鞋",
},
{
id: "category5",
name: "精细擦窗",
},
{
id: "category6",
name: "家庭保姆",
},
{
id: "category7",
name: "管道疏通",
},
{
id: "category8",
name: "家庭保洁",
},
{
id: "category9",
name: "整理收纳",
},
{
id: "category10",
name: "母婴服务",
},
], ],
serviceCategories: [ serviceCategories: [
{ {
name: "家电维修", name: "家电维修",
icon: "http://localhost:8080/guanggao1.png", icon: "",
}, },
{ {
name: "数码维修", name: "数码维修",
icon: "http://localhost:8080/guanggao1.png", icon: "",
}, },
{ {
name: "电器清洗", name: "电器清洗",
icon: "http://localhost:8080/guanggao1.png", icon: "",
}, },
{ {
name: "洗衣洗鞋", name: "洗衣洗鞋",
icon: "http://localhost:8080/guanggao1.png", icon: "",
}, },
{ {
name: "精细擦窗", name: "精细擦窗",
icon: "http://localhost:8080/guanggao1.png", icon: "",
}, },
], ],
currentIndex: 0, currentIndex: 0,