2025-07-22 11:21:01 +08:00
|
|
|
<template>
|
|
|
|
|
<view class="con-body">
|
|
|
|
|
<view class="con-bg">
|
|
|
|
|
<!-- 头部 -->
|
|
|
|
|
<customHeader ref="customHeaderRef" :title="'业务中心'"
|
|
|
|
|
:leftFlag="false" :rightFlag="false"
|
|
|
|
|
></customHeader>
|
|
|
|
|
<!-- 高度来避免头部遮挡 -->
|
|
|
|
|
<view class="top-height"></view>
|
|
|
|
|
|
2025-08-04 16:19:03 +08:00
|
|
|
<!-- 搜索 @confirm="handleSearch" -->
|
2025-07-22 11:21:01 +08:00
|
|
|
<view class="search">
|
|
|
|
|
<uni-search-bar class="custom-search" radius="28"
|
|
|
|
|
placeholder="请输入您想查询的内容或服务"
|
|
|
|
|
clearButton="auto" cancelButton="none"
|
|
|
|
|
bgColor="#6FA2F8" textColor="#ffffff"
|
2025-08-04 16:19:03 +08:00
|
|
|
@focus="handleFocus"
|
2025-07-22 11:21:01 +08:00
|
|
|
/>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 下拉刷新 -->
|
|
|
|
|
<mescroll-uni ref="mescrollRef" @init="mescrollInit"
|
|
|
|
|
:down="downOption" @down="downCallback"
|
|
|
|
|
:fixed="false" class="scroll-h"
|
|
|
|
|
>
|
|
|
|
|
<!-- 首页日常服务 -->
|
|
|
|
|
<view class="white-bg">
|
|
|
|
|
<view class="w-b-title">
|
|
|
|
|
首页日常服务
|
2025-08-01 18:12:36 +08:00
|
|
|
<view type="primary" @click="handleJump('/pages/business/editDaily')" class="btn-edit">编 辑</view>
|
2025-07-22 11:21:01 +08:00
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
2025-08-01 18:12:36 +08:00
|
|
|
<!-- 业务列表 -->
|
|
|
|
|
<view class="white-bg" v-for="(item,index) in list" :key="index">
|
|
|
|
|
<view class="w-b-title" @click="handleExpand(item)">{{ item.bizName }}
|
|
|
|
|
<text>{{item.expandFlag?'展开':'收起'}}<i :class="{iconfont:true,'icon-up':!item.expandFlag,'icon-down':item.expandFlag}"></i></text>
|
2025-07-22 11:21:01 +08:00
|
|
|
</view>
|
2025-08-01 18:12:36 +08:00
|
|
|
<block v-if="!item.expandFlag">
|
|
|
|
|
<view class="logo-list" v-if="item.children&&item.children.length>0">
|
|
|
|
|
<block v-for="(item2,index2) in item.children">
|
2025-08-13 18:15:04 +08:00
|
|
|
<view class="l-l-item"
|
|
|
|
|
@click="handleJump(item2.bizUrl)">
|
|
|
|
|
<img :src="'static/images/business/'+item2.icon+'.png'" />
|
2025-08-01 18:12:36 +08:00
|
|
|
<text class="font-gray">{{ item2.bizName }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</block>
|
2025-07-22 11:21:01 +08:00
|
|
|
</view>
|
2025-08-01 18:12:36 +08:00
|
|
|
</block>
|
2025-07-22 11:21:01 +08:00
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<!-- 底部加高度来避免tabbar遮挡 -->
|
|
|
|
|
<view class="bottom-height"></view>
|
|
|
|
|
</mescroll-uni>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { ref,onMounted } from 'vue'
|
2025-08-01 18:12:36 +08:00
|
|
|
import { onLoad } from '@dcloudio/uni-app';
|
2025-07-22 11:21:01 +08:00
|
|
|
import customHeader from '@/components/customHeader.vue'
|
|
|
|
|
import MescrollUni from 'mescroll-uni/mescroll-uni.vue';
|
|
|
|
|
import { getNavBarPaddingTop} from '@/utils/system.js'
|
2025-08-01 18:12:36 +08:00
|
|
|
import { businessList } from '@/api/business.js';
|
2025-08-13 18:15:04 +08:00
|
|
|
import {showLoading,hideLoading} from '@/utils/message.js'
|
|
|
|
|
import { initTree } from '@/utils/common.js'
|
2025-08-01 18:12:36 +08:00
|
|
|
|
|
|
|
|
onLoad(async(opt) => {
|
|
|
|
|
uni.setStorageSync('page_cache',true);
|
2025-08-13 18:15:04 +08:00
|
|
|
try {
|
|
|
|
|
showLoading("加载中...")
|
|
|
|
|
getList();
|
|
|
|
|
hideLoading();
|
|
|
|
|
} catch (error) {
|
|
|
|
|
hideLoading();
|
|
|
|
|
}
|
2025-08-01 18:12:36 +08:00
|
|
|
})
|
2025-07-22 11:21:01 +08:00
|
|
|
|
|
|
|
|
// 获取导航栏高度用于内容区域padding
|
|
|
|
|
const navBarPaddingTop = ref(0);
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
navBarPaddingTop.value = getNavBarPaddingTop()*2;
|
|
|
|
|
})
|
|
|
|
|
|
2025-08-01 18:12:36 +08:00
|
|
|
// 查询列表
|
|
|
|
|
let list = ref([]);
|
|
|
|
|
let getList = async()=>{
|
2025-08-13 18:15:04 +08:00
|
|
|
|
|
|
|
|
let res = await businessList({});//查询所有业务
|
|
|
|
|
let arr = res || [];
|
|
|
|
|
let bizList = initTree(arr,0,'bizId');//递归获取数组处理
|
|
|
|
|
bizList.forEach(item => {
|
2025-08-01 18:12:36 +08:00
|
|
|
item.expandFlag = false;
|
|
|
|
|
});
|
2025-08-13 18:15:04 +08:00
|
|
|
list.value = bizList;
|
2025-08-01 18:12:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 右侧展开
|
|
|
|
|
let handleExpand = (item)=>{
|
|
|
|
|
item.expandFlag = !item.expandFlag;
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-04 16:19:03 +08:00
|
|
|
// 获取input 焦点跳转
|
|
|
|
|
let handleFocus=()=>{
|
|
|
|
|
uni.navigateTo({url:'/pages/search/search?type=2'})
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-22 11:21:01 +08:00
|
|
|
// 查询搜索跳转
|
|
|
|
|
let handleSearch = ()=>{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 下拉刷新
|
|
|
|
|
const mescrollRef = ref(null);
|
|
|
|
|
const mescrollInit = (mescroll) => {
|
|
|
|
|
mescrollRef.value = mescroll;
|
|
|
|
|
};
|
|
|
|
|
const downOption = ref({
|
|
|
|
|
auto: true,
|
|
|
|
|
textInOffset: '下拉刷新',
|
|
|
|
|
textOutOffset: '释放更新',
|
|
|
|
|
textLoading: '刷新中...'
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 下拉刷新
|
|
|
|
|
const downCallback = async (mescroll) => {
|
|
|
|
|
try {
|
2025-08-13 18:15:04 +08:00
|
|
|
getList();
|
|
|
|
|
// setTimeout(async ()=>{
|
|
|
|
|
// // mescroll.resetUpScroll();
|
|
|
|
|
// },500);
|
2025-07-22 11:21:01 +08:00
|
|
|
} catch (error) {
|
|
|
|
|
mescroll.endErr();
|
|
|
|
|
} finally {
|
|
|
|
|
setTimeout(async ()=>{
|
|
|
|
|
mescroll.endSuccess();
|
|
|
|
|
},500);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 跳转
|
|
|
|
|
let handleJump=(url)=>{
|
|
|
|
|
if(url){
|
|
|
|
|
uni.navigateTo({ url })
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scope>
|
|
|
|
|
.scroll-h{
|
|
|
|
|
/* #ifdef APP-PLUS */
|
|
|
|
|
height: calc(100vh - 120px) !important;
|
|
|
|
|
/* #endif */
|
|
|
|
|
/* #ifndef APP-PLUS */
|
|
|
|
|
height: calc(100vh - 140px) !important;
|
|
|
|
|
/* #endif */
|
|
|
|
|
}
|
|
|
|
|
:deep(.mescroll-upwarp){
|
|
|
|
|
display:none
|
|
|
|
|
}
|
|
|
|
|
</style>
|