修复已知bug
This commit is contained in:
@@ -17,19 +17,20 @@
|
||||
getPushCID()
|
||||
// #endif
|
||||
|
||||
// 自动登录:检查本地是否已有 token,有则直接跳转首页
|
||||
// 首页已是入口页:已登录用户不做跳转,直接留首页
|
||||
// 仅对未登录用户按需跳转到引导页或登录页
|
||||
const token = uni.getStorageSync('token')
|
||||
const hasShowGuide = uni.getStorageSync('hasShowGuide')
|
||||
if (token) {
|
||||
// 已有登录凭证,直接进入首页
|
||||
console.log('检测到已登录,跳转首页')
|
||||
uni.reLaunch({ url: '/pages/index/index' })
|
||||
} else if (hasShowGuide) {
|
||||
// 已看过引导页但没有 token,直接跳转登录页
|
||||
if (!token && !hasShowGuide) {
|
||||
// 首次使用:跳转引导页
|
||||
console.log('首次启动,跳转引导页')
|
||||
uni.reLaunch({ url: '/pages/navigation/navigation' })
|
||||
} else if (!token && hasShowGuide) {
|
||||
// 已看过引导但未登录:跳转登录页
|
||||
console.log('已看过引导页,跳转登录页')
|
||||
uni.reLaunch({ url: '/pageSubPack/loginSub/pwd-login' })
|
||||
}
|
||||
// 否则停留在引导页(navigation)
|
||||
// 有 token:已在首页,不做跳转
|
||||
})
|
||||
onShow(() =>{
|
||||
console.log('App Show')
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"appid" : "__UNI__29C3D60",
|
||||
"description" : "智慧社区居民端面向小区业主使用,支持注册、验证码、账号密码多种登录方式,提供密码找回功能,账号使用安全便捷。支持多小区切换,首页设有轮播 banner、社区公告,集成远程开门、生活缴费、在线报修、访客邀请、社区活动常用服务。全服务板块统一涵盖门禁开门、线上缴费、报修申报、访客预约、投诉反馈、问卷调研、活动报名、社区公示、一键联系物业功能。个人中心可管理房屋、住户、车位、车辆信息,支持更换手机号、修改密码、消息通知设置、版本更新及账号退出,一站式满足业主居家生活、社区服务、房产车辆管理需求,实现社区生活数字化、便捷化。",
|
||||
"versionName" : "1.0.1",
|
||||
"versionCode" : 111,
|
||||
"versionCode" : 114,
|
||||
"transformPx" : false,
|
||||
"uniCloud" : {
|
||||
"provider" : "aliyun",
|
||||
@@ -110,7 +110,7 @@
|
||||
},
|
||||
"share" : {
|
||||
"weixin" : {
|
||||
"appid" : "wx2255a0821859ef43",
|
||||
"appid" : "wx84b02b2ec80715f4",
|
||||
"UniversalLinks" : "https://verification.ckdzkj.com/uni-universallinks/__UNI__29C3D60/"
|
||||
}
|
||||
},
|
||||
@@ -172,7 +172,7 @@
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
"navigateToMiniProgramAppIdList" : [ "00004951" ],
|
||||
"navigateToMiniProgramAppIdList" : [ "wxc0189436c58b59cd" ],
|
||||
"requiredPrivateInfos" : [ "chooseLocation", "getLocation" ],
|
||||
"permission" : {
|
||||
"scope.camera" : {
|
||||
|
||||
@@ -259,3 +259,13 @@ export const checkAppUpdate = (data) => {
|
||||
export const postUpdateLog = (data) => {
|
||||
return post(`/api/app/updateLog`, data)
|
||||
}
|
||||
|
||||
// ===========巡检记录========
|
||||
// 列表
|
||||
export const getInspectionList = (data) =>{
|
||||
return get('/api/resident/inspection/list',data)
|
||||
}
|
||||
// 详情
|
||||
export const inspectionDetails = (data) =>{
|
||||
return get(`/api/resident/inspection/${data.id}`,data)
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// 服务器地址(与 request.js 保持一致)
|
||||
const baseUrl = 'http://192.168.1.222:8080';
|
||||
const baseUrl = 'https://wuyeapi.ckdzkj.com';
|
||||
|
||||
/**
|
||||
* 图片上传 Hook
|
||||
|
||||
@@ -1,124 +1,240 @@
|
||||
<template>
|
||||
<view class="page">
|
||||
<view class="status-bar" :style="{ height: statusBarHeight + 'px' }"></view>
|
||||
<uni-nav-bar title="巡检详情" backgroundColor="transparent" :border="false" left-icon="left"
|
||||
@click-left="goBack" />
|
||||
<scroll-view scroll-y class="scroll">
|
||||
<!-- 第一块信息卡片 -->
|
||||
<view class="card">
|
||||
<view class="row-title">
|
||||
<text>幸福苑小区1号楼1单元电梯间</text>
|
||||
<text class="status">已巡检</text>
|
||||
</view>
|
||||
<view class="text-item">巡检项目:设备巡检</view>
|
||||
<view class="text-item">巡检时间:07:00:00 –09:00:00</view>
|
||||
<view class="text-item">巡检小区:幸福苑小区</view>
|
||||
<view class="text-item">巡检路线:常规巡检路线1</view>
|
||||
<view class="text-item">巡检点:安全出口1号;巡检点2;巡检点3</view>
|
||||
<!-- 加载中 -->
|
||||
<view class="loading-wrap" v-if="loading">
|
||||
<uni-load-more status="loading" :content-text="{ contentdown: '上拉加载更多', contentrefresh: '加载中...', contentnomore: '没有更多了' }" />
|
||||
</view>
|
||||
|
||||
<!-- 第二块巡检结果卡片 -->
|
||||
<template v-if="!loading && detail">
|
||||
<!-- 第一块:基本信息 -->
|
||||
<view class="card">
|
||||
<view class="row-title">
|
||||
<text>{{ detail.locationName }}</text>
|
||||
<text class="status">{{ detail.status }}</text>
|
||||
</view>
|
||||
<view class="text-item">巡检项目:{{ detail.inspectionType }}</view>
|
||||
<view class="text-item">巡检时间:{{ detail.taskTime }}</view>
|
||||
<view class="text-item">巡检小区:{{ detail.villageName }}</view>
|
||||
<view class="text-item">巡检路线:{{ detail.routeName }}</view>
|
||||
<view class="text-item">巡检点:{{ detail.pointNames }}</view>
|
||||
</view>
|
||||
|
||||
<!-- 第二块:巡检结果 -->
|
||||
<view class="card">
|
||||
<view class="card-subtitle">巡检结果</view>
|
||||
<view class="text-item">巡检人:李祥龙</view>
|
||||
<view class="text-item">手机号码:13013001300</view>
|
||||
<view class="text-item">巡检时间:2026-10-25 08:10:10</view>
|
||||
<view class="text-item">巡检人:{{ detail.inspectorName }}</view>
|
||||
<view class="text-item">手机号码:{{ detail.phoneNumber }}</view>
|
||||
<view class="text-item">巡检时间:{{ detail.inspectTime }}</view>
|
||||
<view class="text-item">巡检结果:</view>
|
||||
<view class="result-desc">
|
||||
<text>1.设备正常,无任何异动和意向</text>
|
||||
<text>2.电力系统正常、无故障提示</text>
|
||||
<text>3.设备使用正常,无异常提示</text>
|
||||
<text v-for="(r, idx) in detail.results" :key="idx">{{ idx + 1 }}.{{ r }}</text>
|
||||
</view>
|
||||
<view class="text-item">巡检照片:</view>
|
||||
<!-- 图片区域 flex自动换行 -->
|
||||
<view class="img-wrap">
|
||||
<view
|
||||
class="img-box"
|
||||
v-for="(img, idx) in imgList"
|
||||
:key="idx"
|
||||
>
|
||||
<image
|
||||
class="img"
|
||||
:src="img"
|
||||
mode="aspectFill"
|
||||
></image>
|
||||
<view class="img-box" v-for="(img, idx) in detail.photos" :key="idx" @click="previewImage(img)">
|
||||
<image class="img" :src="img" mode="aspectFill"></image>
|
||||
</view>
|
||||
<view class="empty-img-tip" v-if="!detail.photos || detail.photos.length === 0">暂无照片</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 第三块:巡检明细列表 -->
|
||||
<view class="card" v-for="(sub, idx) in detail.details" :key="sub.id">
|
||||
<view class="card-subtitle">{{ sub.pointName }}</view>
|
||||
<view class="text-item">巡检时间:{{ sub.checkTime }}</view>
|
||||
<view class="text-item">巡检结果:{{ sub.checkResult }}</view>
|
||||
<view class="text-item" v-if="sub.remark">备注:{{ sub.remark }}</view>
|
||||
<view class="text-item" v-if="sub.photos">巡检照片:</view>
|
||||
<view class="img-wrap" v-if="sub.photos">
|
||||
<view class="img-box" v-for="(img, i) in sub.photos.split(',')" :key="i" @click="previewImage(img)">
|
||||
<image class="img" :src="img" mode="aspectFill"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<!-- 加载失败 -->
|
||||
<view class="error-wrap" v-if="!loading && !detail">
|
||||
<text class="empty-text">数据加载失败</text>
|
||||
<view class="retry-btn" @click="fetchDetail">点击重试</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
import { ref } from 'vue'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { inspectionDetails } from '../api/apiSub.js'
|
||||
|
||||
// 图片列表,空图片占位,真实环境替换成接口图片地址
|
||||
const imgList = ref([
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
''
|
||||
])
|
||||
const statusBarHeight = ref(uni.getSystemInfoSync().statusBarHeight || 0)
|
||||
const loading = ref(false)
|
||||
const detail = ref(null)
|
||||
let recordId = ''
|
||||
|
||||
onLoad((options) => {
|
||||
if (options.id) {
|
||||
recordId = options.id
|
||||
fetchDetail()
|
||||
}
|
||||
})
|
||||
|
||||
const fetchDetail = async () => {
|
||||
if (!recordId) return
|
||||
loading.value = true
|
||||
detail.value = null
|
||||
try {
|
||||
const res = await inspectionDetails({ id: recordId })
|
||||
if (res.code === 200) {
|
||||
detail.value = res.data
|
||||
} else {
|
||||
uni.showToast({ title: res.msg || '获取详情失败', icon: 'none' })
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('获取巡检详情失败', err)
|
||||
uni.showToast({ title: '网络异常,请重试', icon: 'none' })
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const goBack = () => {
|
||||
uni.navigateBack()
|
||||
}
|
||||
|
||||
const previewImage = (url) => {
|
||||
if (!url) return
|
||||
// 收集当前所有可预览图片
|
||||
const allPhotos = []
|
||||
if (detail.value.photos) allPhotos.push(...detail.value.photos)
|
||||
if (detail.value.details) {
|
||||
detail.value.details.forEach(d => {
|
||||
if (d.photos) allPhotos.push(...d.photos.split(','))
|
||||
})
|
||||
}
|
||||
uni.previewImage({
|
||||
current: url,
|
||||
urls: allPhotos
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
page {
|
||||
page {
|
||||
background-color: #f7f8fa;
|
||||
}
|
||||
.page {
|
||||
padding: 24rpx;
|
||||
}
|
||||
.scroll {
|
||||
}
|
||||
|
||||
.status-bar {
|
||||
width: 100%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.page {
|
||||
height: 100vh;
|
||||
}
|
||||
.card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.scroll {
|
||||
flex: 1;
|
||||
padding: 24rpx;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.card {
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
padding: 36rpx;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.row-title {
|
||||
}
|
||||
|
||||
.row-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 32rpx;
|
||||
color: #222;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.status {
|
||||
}
|
||||
|
||||
.status {
|
||||
font-size: 24rpx;
|
||||
color: #555;
|
||||
}
|
||||
.card-subtitle {
|
||||
}
|
||||
|
||||
.card-subtitle {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #222;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
.text-item {
|
||||
}
|
||||
|
||||
.text-item {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
line-height: 2;
|
||||
}
|
||||
.result-desc {
|
||||
}
|
||||
|
||||
.result-desc {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
line-height: 1.8;
|
||||
margin: 12rpx 0;
|
||||
}
|
||||
/* 图片容器 flex-wrap换行 */
|
||||
.img-wrap {
|
||||
}
|
||||
|
||||
/* 图片容器 flex-wrap换行 */
|
||||
.img-wrap {
|
||||
margin-top: 16rpx;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 16rpx;
|
||||
}
|
||||
.img-box {
|
||||
}
|
||||
|
||||
.img-box {
|
||||
width: 140rpx;
|
||||
height: 140rpx;
|
||||
background-color: #d8d9db;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
.img {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.empty-img-tip {
|
||||
font-size: 26rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.loading-wrap {
|
||||
padding-top: 200rpx;
|
||||
}
|
||||
|
||||
.error-wrap {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding-top: 200rpx;
|
||||
}
|
||||
|
||||
.empty-text {
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.retry-btn {
|
||||
margin-top: 24rpx;
|
||||
padding: 12rpx 48rpx;
|
||||
border: 2rpx solid #2F77FD;
|
||||
border-radius: 8rpx;
|
||||
color: #2F77FD;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="contentStyle">
|
||||
<view class="status-bar"></view>
|
||||
<view class="status-bar" :style="{ height: statusBarHeight + 'px' }"></view>
|
||||
<uni-nav-bar title="巡检记录" backgroundColor="transparent" :border="false" left-icon="left" @click-left="goBack" />
|
||||
<view class="content-wrap">
|
||||
<!-- 时间选择器 -->
|
||||
@@ -19,17 +19,22 @@
|
||||
</view>
|
||||
<!-- 巡检列表 -->
|
||||
<scroll-view scroll-y class="scroll-view">
|
||||
<view class="list-container" @click="goToInspectionDetail">
|
||||
<view class="card-item" v-for="(item, index) in listData" :key="index">
|
||||
<view class="list-container" v-if="listData.length > 0">
|
||||
<view class="card-item" v-for="(item, index) in listData" :key="index" @click="goToInspectionDetail(item)">
|
||||
<view class="card-head">
|
||||
<text class="address">{{ item.address }}</text>
|
||||
<text class="address">{{ item.locationName }}</text>
|
||||
<text class="status">{{ item.status }}</text>
|
||||
</view>
|
||||
<view class="tag-label">{{ item.type }}</view>
|
||||
<view class="text-row">巡检时间:{{ item.time }}</view>
|
||||
<view class="text-row">巡检人:{{ item.inspector }}</view>
|
||||
<view class="tag-label">{{ item.inspectionType }}</view>
|
||||
<view class="text-row">巡检时间:{{ item.executeDate }}</view>
|
||||
<view class="text-row">巡检人:{{ item.inspectorName }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 暂无数据 -->
|
||||
<view class="empty-wrap" v-if="!loading && listData.length === 0">
|
||||
<uni-icons type="info" size="30" color="#ccc"></uni-icons>
|
||||
<text class="empty-text">暂无数据</text>
|
||||
</view>
|
||||
</scroll-view>
|
||||
|
||||
</view>
|
||||
@@ -37,51 +42,117 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref
|
||||
} from 'vue';
|
||||
import {ref} from 'vue'
|
||||
import {onLoad,onReachBottom,onPullDownRefresh} from '@dcloudio/uni-app'
|
||||
import {getInspectionList} from '../api/apiSub.js'
|
||||
import moment from 'moment' // 新增
|
||||
|
||||
// ---------- 基础状态 ----------
|
||||
const datetime = ref('')
|
||||
const showDate = ref('选择日期')
|
||||
const listData = ref([
|
||||
{
|
||||
address: '幸福苑小区1号楼1单元电梯间',
|
||||
status: '已巡检',
|
||||
type: '设备巡检',
|
||||
time: '07:00:00 –09:00:00',
|
||||
inspector: '李祥龙'
|
||||
},
|
||||
{
|
||||
address: '幸福苑小区1号楼1单元电梯间',
|
||||
status: '已巡检',
|
||||
type: '设备巡检',
|
||||
time: '07:00:00 –09:00:00',
|
||||
inspector: '李祥龙'
|
||||
const listData = ref([])
|
||||
const statusBarHeight = ref(uni.getSystemInfoSync().statusBarHeight || 0)
|
||||
|
||||
// ---------- 分页状态 ----------
|
||||
const pageNum = ref(1)
|
||||
const pageSize = ref(10)
|
||||
const total = ref(0)
|
||||
const loading = ref(false)
|
||||
const noMore = ref(false)
|
||||
|
||||
// ---------- 初始化 ----------
|
||||
onLoad(() => {
|
||||
// 使用 moment 格式化今天
|
||||
const today = moment().format('YYYY-MM-DD')
|
||||
datetime.value = today
|
||||
showDate.value = moment().format('MM-DD') // 显示 MM-DD
|
||||
fetchList(true)
|
||||
})
|
||||
|
||||
// ---------- 获取列表 ----------
|
||||
const fetchList = async (reset = false) => {
|
||||
if (loading.value) return
|
||||
if (!reset && noMore.value) return
|
||||
|
||||
loading.value = true
|
||||
try {
|
||||
const params = {
|
||||
date: datetime.value, // 已经是 YYYY-MM-DD
|
||||
pageNum: reset ? 1 : pageNum.value,
|
||||
pageSize: pageSize.value
|
||||
}
|
||||
const res = await getInspectionList(params)
|
||||
if (res.code === 200) {
|
||||
const rows = res.rows
|
||||
total.value = res.total || 0
|
||||
if (reset) {
|
||||
listData.value = rows
|
||||
pageNum.value = 1
|
||||
noMore.value = rows.length < pageSize.value
|
||||
} else {
|
||||
listData.value = [...listData.value, ...rows]
|
||||
noMore.value = rows.length < pageSize.value || listData.value.length >= total.value
|
||||
}
|
||||
if (!reset && rows.length > 0) {
|
||||
pageNum.value += 1
|
||||
}
|
||||
} else {
|
||||
uni.showToast({ title: res.msg || '获取列表失败', icon: 'none' })
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('获取巡检列表失败', err)
|
||||
uni.showToast({ title: '网络异常,请重试', icon: 'none' })
|
||||
} finally {
|
||||
loading.value = false
|
||||
uni.stopPullDownRefresh()
|
||||
}
|
||||
}
|
||||
])
|
||||
|
||||
|
||||
// ---------- 日期变更(使用 moment) ----------
|
||||
const handleChangeTime = (e) => {
|
||||
if (e) {
|
||||
// e 格式为 YYYY-MM-DD,只取 MM-DD
|
||||
showDate.value = e.slice(5)
|
||||
// e 格式为 YYYY-MM-DD,用 moment 解析并格式化为 MM-DD
|
||||
showDate.value = moment(e).format('MM-DD')
|
||||
datetime.value = e
|
||||
} else {
|
||||
// 用户清空日期,可根据业务设置默认值或置空
|
||||
showDate.value = '选择日期'
|
||||
datetime.value = ''
|
||||
// 如果希望清空时不请求,可 return,否则也重置列表
|
||||
}
|
||||
// 重置分页并刷新
|
||||
pageNum.value = 1
|
||||
noMore.value = false
|
||||
fetchList(true)
|
||||
}
|
||||
// 返回
|
||||
|
||||
// ---------- 上拉加载更多 ----------
|
||||
onReachBottom(() => {
|
||||
if (!noMore.value && !loading.value) {
|
||||
fetchList(false)
|
||||
}
|
||||
})
|
||||
|
||||
// ---------- 下拉刷新 ----------
|
||||
onPullDownRefresh(() => {
|
||||
pageNum.value = 1
|
||||
noMore.value = false
|
||||
fetchList(true)
|
||||
})
|
||||
|
||||
// ---------- 返回 ----------
|
||||
const goBack = () => {
|
||||
uni.switchTab({
|
||||
url: '/pages/serviceIndex/serviceIndex'
|
||||
})
|
||||
}
|
||||
// 跳转详情
|
||||
const goToInspectionDetail = () =>{
|
||||
|
||||
// ---------- 跳转详情 ----------
|
||||
const goToInspectionDetail = (item) => {
|
||||
uni.navigateTo({
|
||||
url: `/pageSubPack/inspection-revenue/inspection-details`
|
||||
url: `/pageSubPack/inspection-revenue/inspection-details?id=${item.id}`
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@@ -99,8 +170,8 @@
|
||||
}
|
||||
|
||||
.status-bar {
|
||||
height: 46px;
|
||||
width: 100%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.timebox {
|
||||
@@ -214,4 +285,22 @@
|
||||
color: #333;
|
||||
line-height: 2;
|
||||
}
|
||||
|
||||
// 暂无数据
|
||||
.empty-wrap {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding-top: 200rpx;
|
||||
}
|
||||
.empty-img {
|
||||
width: 240rpx;
|
||||
height: 240rpx;
|
||||
}
|
||||
.empty-text {
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -208,7 +208,7 @@ const doLogin = () => {
|
||||
},2000);
|
||||
})
|
||||
}else{
|
||||
uni.showToast({ title: res.msg, icon: 'error' });
|
||||
uni.showToast({ title: res.msg, icon: 'none' });
|
||||
}
|
||||
|
||||
}).catch(err => {
|
||||
@@ -216,7 +216,7 @@ const doLogin = () => {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: err.msg || '网络异常',
|
||||
icon: 'error'
|
||||
icon: 'none'
|
||||
});
|
||||
})
|
||||
};
|
||||
|
||||
@@ -224,13 +224,13 @@
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '验证码发送失败',
|
||||
icon: 'error'
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.msg || '网络异常',
|
||||
icon: 'error'
|
||||
icon: 'none'
|
||||
});
|
||||
})
|
||||
|
||||
@@ -309,14 +309,14 @@
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '注册失败',
|
||||
icon: 'error'
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
}).catch((err) => {
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: err.msg || '网络异常',
|
||||
icon: 'error'
|
||||
icon: 'none'
|
||||
});
|
||||
})
|
||||
};
|
||||
|
||||
@@ -539,12 +539,12 @@
|
||||
getHouseAuthSendSmsCode(params).then(res => {
|
||||
if (res.code === 200) {
|
||||
uni.showToast({
|
||||
title: `发送成功!`,
|
||||
icon: 'error'
|
||||
title: '发送成功',
|
||||
icon: 'success'
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: `${res.msg}`,
|
||||
title: res.msg,
|
||||
icon: 'error'
|
||||
});
|
||||
}
|
||||
@@ -739,7 +739,6 @@
|
||||
uni.showToast({
|
||||
title: err.msg || '提交失败',
|
||||
icon: 'none',
|
||||
duration: 2500
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -758,16 +757,16 @@
|
||||
}, 1500);
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: `${res.msg}`,
|
||||
icon: 'error'
|
||||
title: res.msg,
|
||||
icon: 'none'
|
||||
});
|
||||
}
|
||||
|
||||
}).catch(err => {
|
||||
console.log(err);
|
||||
uni.showToast({
|
||||
title: `${err}`,
|
||||
icon: 'error'
|
||||
title: err.msg,
|
||||
icon: 'none'
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
@@ -70,12 +70,12 @@
|
||||
title: '注销账号',
|
||||
type: 'arrow'
|
||||
},
|
||||
{
|
||||
title: '升级版本',
|
||||
type: 'text',
|
||||
value: '当前版本 1.0.0',
|
||||
valueClass: 'item-version'
|
||||
}
|
||||
// {
|
||||
// title: '升级版本',
|
||||
// type: 'text',
|
||||
// value: '当前版本 1.0.0',
|
||||
// valueClass: 'item-version'
|
||||
// }
|
||||
])
|
||||
|
||||
// 格式化字节大小
|
||||
|
||||
@@ -55,7 +55,6 @@
|
||||
<view style="border-bottom: 2rpx solid #ededed;margin:10rpx 0rpx;"></view> -->
|
||||
<view class="arrears-row" v-if="outstandingPayment==true">
|
||||
<text class="arrears-text">当前欠费金额¥{{ arrearsAmount }}元</text>
|
||||
<text class="auto-fill-btn" @click="handleAutoFill">点击自动填入</text>
|
||||
</view>
|
||||
<!-- <view class="arrears-row" v-if="outstandingPayment==false">
|
||||
<text class="arrears-text">暂未查询到欠费</text>
|
||||
@@ -76,7 +75,7 @@
|
||||
|
||||
<!-- 提示文案 -->
|
||||
<view class="desc">
|
||||
成功缴纳{{ switchStatus(paymentItem.type) || '' }}费用 ¥{{ payNum || payAmount }}元
|
||||
成功缴纳{{ switchStatus(paymentItem.type) || '' }}费用 ¥{{ arrearsAmount || payAmount }}元
|
||||
</view>
|
||||
|
||||
|
||||
@@ -123,7 +122,6 @@
|
||||
const currentStep = ref(1)
|
||||
const payAmount = ref('0.00')
|
||||
const arrearsAmount = ref('0.00')
|
||||
const payNum = ref('')
|
||||
|
||||
// 页面加载时初始化数据
|
||||
onLoad(() => {
|
||||
@@ -165,13 +163,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
// 自动填充欠费金额
|
||||
const handleAutoFill = () => {
|
||||
payNum.value = arrearsAmount.value
|
||||
uni.vibrateShort({
|
||||
type: 'light'
|
||||
})
|
||||
}
|
||||
|
||||
// 返回
|
||||
const goBack = () => {
|
||||
@@ -189,6 +180,7 @@
|
||||
// })
|
||||
// return
|
||||
// }
|
||||
const amount = arrearsAmount.value
|
||||
|
||||
try {
|
||||
uni.showLoading({ title: '加载中...' })
|
||||
@@ -200,7 +192,8 @@
|
||||
const res = await getBankMiniProgramParams({
|
||||
acct: uni.getStorageSync('userId'),
|
||||
orderType: '20',
|
||||
orderAmount: String(Math.round(Number(payNum.value) * 100)),
|
||||
orderAmount: String(Math.round(Number(amount) * 100)),
|
||||
// orderAmount: String(Math.round(Number(arrearsAmount.value) * 100)),
|
||||
deviceCode: paymentItem.deviceCode || '',
|
||||
deviceType: mappedDeviceType,
|
||||
billId: paymentItem.billId || '',
|
||||
@@ -215,7 +208,7 @@
|
||||
return
|
||||
}
|
||||
console.log('resres返回数据', res)
|
||||
console.log('resres', res.data)
|
||||
// console.log('resres', res.data)
|
||||
|
||||
const { appId, path, extraData } = res.data
|
||||
console.log('navigateToMiniProgram参数:', { appId, path, extraData })
|
||||
@@ -228,19 +221,19 @@
|
||||
}
|
||||
|
||||
// 解析 extraData(后端返回可能是字符串或对象)
|
||||
// ' let extraDataObj = extraData
|
||||
// if (typeof extraData === 'string') {
|
||||
// try {
|
||||
// extraDataObj = JSON.parse(extraData)
|
||||
// } catch (e) {
|
||||
// console.error('extraData JSON解析失败,使用空对象', e)
|
||||
// extraDataObj = {}
|
||||
// }
|
||||
// }
|
||||
// if (!extraDataObj || typeof extraDataObj !== 'object') {
|
||||
// extraDataObj = {}
|
||||
// }'
|
||||
|
||||
/* let extraDataObj = extraData
|
||||
if (typeof extraData === 'string') {
|
||||
try {
|
||||
extraDataObj = JSON.parse(extraData)
|
||||
} catch (e) {
|
||||
console.error('extraData JSON解析失败,使用空对象', e)
|
||||
extraDataObj = {}
|
||||
}
|
||||
}
|
||||
if (!extraDataObj || typeof extraDataObj !== 'object') {
|
||||
extraDataObj = {}
|
||||
}
|
||||
console.log('解析-----extraDataObj', extraDataObj) */
|
||||
// #ifdef APP-PLUS
|
||||
// 原生App:通过微信SDK拉起小程序
|
||||
plus.share.getServices((services) => {
|
||||
@@ -253,12 +246,17 @@
|
||||
uni.showToast({ title: '当前微信版本太低,不支持拉起小程序', icon: 'none' })
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
weixin.launchMiniProgram({
|
||||
id: appId,
|
||||
id: 'gh_4ba5e4fdaa83',
|
||||
// appId:'00004951',
|
||||
type: 1, // 0=正式版 1=测试版 2=预览版
|
||||
path: path || '',
|
||||
path: path,
|
||||
// extMsg: JSON.stringify({ extraData: extraData })
|
||||
extraData: extraData
|
||||
}, (res) => {
|
||||
console.log('ress-------------',res)
|
||||
if (res.retCode === 'SUCCESS') {
|
||||
console.log('成功拉起日照银行小程序(App)', res.retCode)
|
||||
} else {
|
||||
@@ -273,22 +271,22 @@
|
||||
})
|
||||
// #endif
|
||||
|
||||
// #ifdef MP-WEIXIN
|
||||
// 微信小程序:直接navigateToMiniProgram
|
||||
uni.navigateToMiniProgram({
|
||||
appId: appId,
|
||||
path: path || '',
|
||||
extraData: extraData,
|
||||
envVersion: 'develop',
|
||||
success: () => {
|
||||
console.log('成功拉起日照银行小程序(微信)')
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('拉起日照银行小程序失败(微信)', JSON.stringify(err))
|
||||
uni.showToast({ title: err.errMsg || err.msg || '拉起支付小程序失败', icon: 'none' })
|
||||
}
|
||||
})
|
||||
// #endif
|
||||
// // #ifdef MP-WEIXIN
|
||||
// // 微信小程序:直接navigateToMiniProgram
|
||||
// uni.navigateToMiniProgram({
|
||||
// appId: appId,
|
||||
// path: path || '',
|
||||
// extraData: extraData,
|
||||
// envVersion: 'develop',
|
||||
// success: () => {
|
||||
// console.log('成功拉起日照银行小程序(微信)')
|
||||
// },
|
||||
// fail: (err) => {
|
||||
// console.error('拉起日照银行小程序失败(微信)', JSON.stringify(err))
|
||||
// uni.showToast({ title: err.errMsg || err.msg || '拉起支付小程序失败', icon: 'none' })
|
||||
// }
|
||||
// })
|
||||
// // #endif
|
||||
} catch (err) {
|
||||
uni.hideLoading()
|
||||
console.error('获取支付参数异常', err)
|
||||
@@ -304,7 +302,7 @@
|
||||
userId: userId,
|
||||
channel: 'resident',
|
||||
title: '缴费成功',
|
||||
content: `您已成功缴纳${switchStatus(paymentItem.type) || ''}费用 ¥${payNum.value || payAmount.value}元`
|
||||
content: `您已成功缴纳${switchStatus(paymentItem.type) || ''}费用 ¥${arrearsAmount.value || payAmount.value}元`
|
||||
}).catch(err => {
|
||||
console.log('推送发送失败', err)
|
||||
})
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
{
|
||||
"pages": [{
|
||||
"path": "pages/index/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "首页",
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarBackgroundColor": "#F8F8F8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/navigation/navigation",
|
||||
"style": {
|
||||
"navigationBarTitleText": "引导页",
|
||||
@@ -8,14 +16,6 @@
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/index/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "首页",
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarBackgroundColor": "#F8F8F8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/serviceIndex/serviceIndex",
|
||||
"style": {
|
||||
|
||||
@@ -16,17 +16,14 @@
|
||||
<view class="location-area">
|
||||
<!-- 定位图标 -->
|
||||
<view class="location-icon">
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/adress.png" style="height: 100%;width: 100%;"></image>
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/adress.png"
|
||||
style="height: 100%;width: 100%;"></image>
|
||||
</view>
|
||||
<!-- 小区名称和下拉箭头 -->
|
||||
<view class="community-selector">
|
||||
<text class="community-name">{{ currentCommunity }}</text>
|
||||
<u-icon
|
||||
name="arrow-down-fill"
|
||||
size="16"
|
||||
:color="isDropdownOpen ? '#2979ff' : '#222222'"
|
||||
:class="['dropdown-arrow', { 'rotate': isDropdownOpen }]"
|
||||
></u-icon>
|
||||
<u-icon name="arrow-down-fill" size="16" :color="isDropdownOpen ? '#2979ff' : '#222222'"
|
||||
:class="['dropdown-arrow', { 'rotate': isDropdownOpen }]"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -45,10 +42,11 @@
|
||||
</view>
|
||||
<!-- 公告 -->
|
||||
<view class="noticeClass" @click="getNoticeMore">
|
||||
<uni-notice-bar show-icon :text="noticeText" type="line"
|
||||
show-get-more scrollable color="#000" background-color="#fff" moreColor="#000">
|
||||
<uni-notice-bar show-icon :text="noticeText" type="line" :key="noticeKey" show-get-more scrollable
|
||||
color="#000" background-color="#fff" moreColor="#000">
|
||||
<template #noticebarIcon>
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/notice.png" style="width: 38px;height: 38px;"></image>
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/notice.png"
|
||||
style="width: 38px;height: 38px;"></image>
|
||||
</template>
|
||||
</uni-notice-bar>
|
||||
</view>
|
||||
@@ -58,7 +56,8 @@
|
||||
<up-col span="3">
|
||||
<view class="demo-layout bg-purple openClass" @click="openDoorClick">
|
||||
<view class="iconClass">
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/openDoor.png" class="iconClass-img"></image>
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/openDoor.png" class="iconClass-img">
|
||||
</image>
|
||||
</view>
|
||||
<view class="title-dome-calss">一键开门</view>
|
||||
</view>
|
||||
@@ -66,7 +65,8 @@
|
||||
<up-col span="3">
|
||||
<view class="demo-layout bg-purple-light openClass" @click="payMentClick">
|
||||
<view class="iconClass">
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/lifePay.png" class="iconClass-img"></image>
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/lifePay.png" class="iconClass-img">
|
||||
</image>
|
||||
</view>
|
||||
<view class="title-dome-calss">生活缴费</view>
|
||||
</view>
|
||||
@@ -74,7 +74,8 @@
|
||||
<up-col span="3">
|
||||
<view class="demo-layout bg-purple openClass" @click="onlineRepairClick">
|
||||
<view class="iconClass">
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/repair.png" class="iconClass-img"></image>
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/repair.png" class="iconClass-img">
|
||||
</image>
|
||||
</view>
|
||||
<view class="title-dome-calss">在线报修</view>
|
||||
</view>
|
||||
@@ -82,7 +83,8 @@
|
||||
<up-col span="3">
|
||||
<view class="demo-layout bg-purple-light openClass" @click="visitorClick">
|
||||
<view class="iconClass">
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/visitorInvite.png" class="iconClass-img"></image>
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/visitorInvite.png"
|
||||
class="iconClass-img"></image>
|
||||
</view>
|
||||
<view class="title-dome-calss">访客邀请</view>
|
||||
</view>
|
||||
@@ -95,7 +97,8 @@
|
||||
<up-row justify="space-between" customStyle="margin-bottom: 10px">
|
||||
<up-col span="3">
|
||||
<view class="demo-layout bg-purple iconRightClass">
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/ad1.png" mode="" style="width: 100%;height: 100%;"></image>
|
||||
<image src="https://wuyeadmin.bugtc.com/images/home/ad1.png" mode=""
|
||||
style="width: 100%;height: 100%;"></image>
|
||||
</view>
|
||||
</up-col>
|
||||
<up-col span="8">
|
||||
@@ -120,7 +123,8 @@
|
||||
</view>
|
||||
<!-- 活动列表内容(去掉内层 scroll-view,由外层统一滚动) -->
|
||||
<view class="activity-list">
|
||||
<view class="eventListCard" v-for="(activity, index) in activityList" :key="activity.id" @click="moreClick">
|
||||
<view class="eventListCard" v-for="(activity, index) in activityList" :key="activity.id"
|
||||
@click="goToActivityDetail(activity)">
|
||||
<view class="u-demo-block__content ">
|
||||
<up-row justify="space-between" customStyle="margin-bottom: 10px">
|
||||
<up-col span="4">
|
||||
@@ -128,13 +132,16 @@
|
||||
<view class="status-tag">
|
||||
{{ activity.statusText }}
|
||||
</view>
|
||||
<image :src="activity.coverImage" style="width: 100%;height: 100%;border-radius: 16rpx;" mode="aspectFill"></image>
|
||||
<image :src="activity.coverImage"
|
||||
style="width: 100%;height: 100%;border-radius: 16rpx;" mode="aspectFill">
|
||||
</image>
|
||||
</view>
|
||||
</up-col>
|
||||
<up-col span="8">
|
||||
<view class="demo-layout bg-purple activity-info">
|
||||
<view class="activity-title">{{activity.title}}</view>
|
||||
<view class="activity-time">{{formatDate(activity.startTime)}}-{{formatDate(activity.endTime)}}</view>
|
||||
<view class="activity-time">
|
||||
{{formatDate(activity.startTime)}}-{{formatDate(activity.endTime)}}</view>
|
||||
<view class="activity-organizer">
|
||||
<text>{{activity.createName}}</text>
|
||||
</view>
|
||||
@@ -168,44 +175,60 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, nextTick } from 'vue'
|
||||
import {onLoad,onUnload,onShow} from '@dcloudio/uni-app'
|
||||
import moment from 'moment'
|
||||
import {getNoticeLatest,getCurrentVillage,getActivitylatest,getBannarList,getReloadUserInfo} from "/pageSubPack/api/api.js"
|
||||
import {
|
||||
ref,
|
||||
nextTick
|
||||
} from 'vue'
|
||||
import {
|
||||
onLoad,
|
||||
onUnload,
|
||||
onShow
|
||||
} from '@dcloudio/uni-app'
|
||||
import moment from 'moment'
|
||||
import {
|
||||
getNoticeLatest,
|
||||
getCurrentVillage,
|
||||
getActivitylatest,
|
||||
getBannarList,
|
||||
getReloadUserInfo
|
||||
} from "/pageSubPack/api/api.js"
|
||||
|
||||
|
||||
// 列表数据状态
|
||||
const isDropdownOpen = ref(false)
|
||||
const scrollTop = ref(0)
|
||||
const activityList = ref([]) // 活动列表数据
|
||||
const currentCommunity = ref('请绑定房屋')
|
||||
const currentVillageId = ref('')
|
||||
const statusBarHeight = ref(0)
|
||||
const bannerList = ref([])
|
||||
const bannerRawData = ref([]) // 保留原始数据(含link)
|
||||
const bannerSwiperKey = ref(0)
|
||||
const noticeText = ref('暂无公告')
|
||||
const noticeId = ref('')
|
||||
const lastUserId = ref('') // 用于检测是否切换账号
|
||||
// 列表数据状态
|
||||
const isDropdownOpen = ref(false)
|
||||
const scrollTop = ref(0)
|
||||
const activityList = ref([]) // 活动列表数据
|
||||
const currentCommunity = ref('请绑定房屋')
|
||||
const currentVillageId = ref('')
|
||||
const statusBarHeight = ref(0)
|
||||
const bannerList = ref([])
|
||||
const bannerRawData = ref([]) // 保留原始数据(含link)
|
||||
const bannerSwiperKey = ref(0)
|
||||
const noticeText = ref('暂无公告')
|
||||
const noticeKey = ref(0)
|
||||
const noticeId = ref('')
|
||||
const lastUserId = ref('') // 用于检测是否切换账号
|
||||
|
||||
// =======方法=======
|
||||
// 格式化时间
|
||||
const formatDate = (date) => {
|
||||
// =======方法=======
|
||||
// 格式化时间
|
||||
const formatDate = (date) => {
|
||||
if (!date) return ''
|
||||
return moment(date).format('YYYY-MM-DD HH:mm')
|
||||
}
|
||||
// 公告跳转
|
||||
const getNoticeMore = () =>{
|
||||
uni.setStorageSync('sourcePage',"index")
|
||||
}
|
||||
// 公告跳转
|
||||
const getNoticeMore = () => {
|
||||
uni.setStorageSync('sourcePage', "index")
|
||||
uni.navigateTo({
|
||||
url:"/pageSubPack/notice-list/noticeList"
|
||||
url: "/pageSubPack/notice-list/noticeList"
|
||||
})
|
||||
}
|
||||
// 获取bannar列表
|
||||
const getbannarData = async () =>{
|
||||
try{
|
||||
const res = await getBannarList({villageId:uni.getStorageSync('currentVillageId')})
|
||||
if(res.code === 200){
|
||||
}
|
||||
// 获取bannar列表
|
||||
const getbannarData = async () => {
|
||||
try {
|
||||
const res = await getBannarList({
|
||||
villageId: uni.getStorageSync('currentVillageId')
|
||||
})
|
||||
if (res.code === 200) {
|
||||
bannerRawData.value = res.data || []
|
||||
const newList = (res.data || []).map(item => item.url)
|
||||
// 只有 banner 数据真正变化时才更新,避免 swiper 反复重建
|
||||
@@ -214,63 +237,72 @@ const getbannarData = async () =>{
|
||||
await nextTick()
|
||||
bannerSwiperKey.value++
|
||||
}
|
||||
}else{
|
||||
uni.showToast({title:'获取失败',icon:'error'})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '获取失败',
|
||||
icon: 'error'
|
||||
})
|
||||
}
|
||||
}catch (err){
|
||||
} catch (err) {
|
||||
const msg = err?.msg || (typeof err === 'string' ? err : '获取失败')
|
||||
uni.showToast({title: msg,icon:'error'})
|
||||
uni.showToast({
|
||||
title: msg,
|
||||
icon: 'error'
|
||||
})
|
||||
}
|
||||
}
|
||||
// banner点击跳转
|
||||
const bannerClick = (index) => {
|
||||
}
|
||||
// banner点击跳转
|
||||
const bannerClick = (index) => {
|
||||
const item = bannerRawData.value[index]
|
||||
if (item && item.link) {
|
||||
uni.navigateTo({ url: item.link })
|
||||
uni.navigateTo({
|
||||
url: item.link
|
||||
})
|
||||
}
|
||||
}
|
||||
// 接收选择小区返回的参数
|
||||
const slelctHomeData = (data) =>{
|
||||
}
|
||||
// 接收选择小区返回的参数
|
||||
const slelctHomeData = (data) => {
|
||||
// console.log('收到B页面返回的数据:', data)
|
||||
if(data.name){
|
||||
if (data.name) {
|
||||
currentCommunity.value = data.name
|
||||
}
|
||||
if(data.villageId){
|
||||
if (data.villageId) {
|
||||
currentVillageId.value = data.villageId
|
||||
}
|
||||
getCurrentCommunityData()
|
||||
getNoticeData()
|
||||
noticeKey.value++
|
||||
getNewActivityList()
|
||||
}
|
||||
// 获取当前认证小区的方法
|
||||
const getCurrentCommunityData = () => {
|
||||
getCurrentVillage().then(res =>{
|
||||
if(res.code === 200 && res.data && res.data.villageId){
|
||||
}
|
||||
// 获取当前认证小区的方法
|
||||
const getCurrentCommunityData = () => {
|
||||
getCurrentVillage().then(res => {
|
||||
if (res.code === 200 && res.data && res.data.villageId) {
|
||||
currentCommunity.value = res.data.villageName || '未命名小区'
|
||||
currentVillageId.value = res.data.villageId
|
||||
uni.setStorageSync('currentVillageId',res.data.villageId)
|
||||
}else{
|
||||
uni.setStorageSync('currentVillageId', res.data.villageId)
|
||||
} else {
|
||||
currentCommunity.value = '请绑定房屋'
|
||||
currentVillageId.value = ''
|
||||
}
|
||||
}).catch(err =>{
|
||||
}).catch(err => {
|
||||
uni.showToast({
|
||||
title: err.msg || '网络异常',
|
||||
icon: 'error'
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 获取首页最新小区公告
|
||||
const getNoticeData = async() =>{
|
||||
try{
|
||||
// 获取首页最新小区公告
|
||||
const getNoticeData = async () => {
|
||||
try {
|
||||
const res = await getNoticeLatest()
|
||||
if (res.code === 200) {
|
||||
if(res.data){
|
||||
if (res.data) {
|
||||
noticeText.value = res.data.noticeTitle || ''
|
||||
noticeId.value = res.data.noticeId || ''
|
||||
}else{
|
||||
} else {
|
||||
noticeText.value = '暂无公告'
|
||||
noticeId.value = ''
|
||||
}
|
||||
@@ -293,8 +325,8 @@ const getNoticeData = async() =>{
|
||||
}
|
||||
}
|
||||
|
||||
// 刷新所有数据(提取公共方法)
|
||||
const refreshAllData = async () => {
|
||||
// 刷新所有数据(提取公共方法)
|
||||
const refreshAllData = async () => {
|
||||
const token = uni.getStorageSync('token') || '';
|
||||
const needReload = uni.getStorageSync('needReloadUserInfo');
|
||||
// 只有从绑定房屋返回首页时,才重新加载用户信息获取最新小区ID
|
||||
@@ -316,12 +348,13 @@ const refreshAllData = async () => {
|
||||
}
|
||||
getCurrentCommunityData();
|
||||
getNoticeData()
|
||||
noticeKey.value++
|
||||
getNewActivityList()
|
||||
getbannarData()
|
||||
}
|
||||
}
|
||||
|
||||
// 切换账号时重置页面数据
|
||||
const resetPageData = () => {
|
||||
// 切换账号时重置页面数据
|
||||
const resetPageData = () => {
|
||||
currentCommunity.value = '请先绑定房屋'
|
||||
currentVillageId.value = ''
|
||||
activityList.value = []
|
||||
@@ -329,9 +362,9 @@ const resetPageData = () => {
|
||||
bannerRawData.value = []
|
||||
noticeText.value = '暂无公告'
|
||||
noticeId.value = ''
|
||||
}
|
||||
}
|
||||
|
||||
onShow(() => {
|
||||
onShow(() => {
|
||||
const currentUserId = uni.getStorageSync('userId') || ''
|
||||
// 检测到切换账号:重置数据并重新加载
|
||||
if (lastUserId.value && lastUserId.value !== currentUserId) {
|
||||
@@ -342,9 +375,9 @@ onShow(() => {
|
||||
refreshAllData()
|
||||
}
|
||||
lastUserId.value = currentUserId
|
||||
})
|
||||
})
|
||||
|
||||
onLoad(() => {
|
||||
onLoad(() => {
|
||||
const info = uni.getSystemInfoSync()
|
||||
statusBarHeight.value = info.statusBarHeight || 0
|
||||
|
||||
@@ -355,33 +388,33 @@ onLoad(() => {
|
||||
lastUserId.value = uni.getStorageSync('userId') || ''
|
||||
|
||||
// 数据刷新统一放到 onShow,避免 onLoad + onShow 首次重复请求
|
||||
})
|
||||
})
|
||||
|
||||
// 页面销毁时移除监听(防止内存泄漏)
|
||||
onUnload(() => {
|
||||
// 页面销毁时移除监听(防止内存泄漏)
|
||||
onUnload(() => {
|
||||
uni.$off('confirm', slelctHomeData)
|
||||
})
|
||||
})
|
||||
|
||||
// 方法逻辑
|
||||
const openDoorClick = () =>{
|
||||
uni.setStorageSync('sourcePage',"index")
|
||||
// 方法逻辑
|
||||
const openDoorClick = () => {
|
||||
uni.setStorageSync('sourcePage', "index")
|
||||
uni.navigateTo({
|
||||
url:"/pageSubPack/notice-list/oneClickOpen"
|
||||
url: "/pageSubPack/notice-list/oneClickOpen"
|
||||
})
|
||||
}
|
||||
// 生活缴费
|
||||
const payMentClick =() =>{
|
||||
uni.setStorageSync('sourcePage',"index")
|
||||
}
|
||||
// 生活缴费
|
||||
const payMentClick = () => {
|
||||
uni.setStorageSync('sourcePage', "index")
|
||||
uni.navigateTo({
|
||||
url:"/pageSubPack/payment-list/paymentIndex"
|
||||
url: "/pageSubPack/payment-list/paymentIndex"
|
||||
})
|
||||
}
|
||||
// 点击小区选择
|
||||
const navigateToPage = () => {
|
||||
}
|
||||
// 点击小区选择
|
||||
const navigateToPage = () => {
|
||||
// const token = uni.getStorageSync('token') || '';
|
||||
const cachedVillageId = uni.getStorageSync('currentVillageId');
|
||||
// 未登录 或 未绑定小区 → 去我的页面认证
|
||||
if ( !cachedVillageId || cachedVillageId === '0' || cachedVillageId === 0) {
|
||||
if (!cachedVillageId || cachedVillageId === '0' || cachedVillageId === 0) {
|
||||
currentCommunity.value = '请先绑定房屋';
|
||||
uni.setStorageSync('currentCommunity', '请先绑定房屋');
|
||||
uni.showToast({
|
||||
@@ -400,19 +433,21 @@ const navigateToPage = () => {
|
||||
url: `/pageSubPack/notice-list/selectHome?villageId=${cachedVillageId}`
|
||||
});
|
||||
}
|
||||
};
|
||||
// 获取首页最新活动
|
||||
const getNewActivityList = async() =>{
|
||||
try{
|
||||
let params = {villageId:uni.getStorageSync('currentVillageId')}
|
||||
};
|
||||
// 获取首页最新活动
|
||||
const getNewActivityList = async () => {
|
||||
try {
|
||||
let params = {
|
||||
villageId: uni.getStorageSync('currentVillageId')
|
||||
}
|
||||
const res = await getActivitylatest(params)
|
||||
if(res.code === 200){
|
||||
if(res.data){
|
||||
if (res.code === 200) {
|
||||
if (res.data) {
|
||||
activityList.value = res.data || []
|
||||
}else{
|
||||
} else {
|
||||
activityList.value = []
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
activityList.value = []
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
@@ -421,42 +456,46 @@ const getNewActivityList = async() =>{
|
||||
})
|
||||
}
|
||||
|
||||
}catch (err){
|
||||
} catch (err) {
|
||||
uni.showToast({
|
||||
title: err.msg || '网络异常',
|
||||
icon: 'error',
|
||||
duration: 1000
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const onlineRepairClick = () =>{
|
||||
uni.setStorageSync('sourcePage',"index")
|
||||
const onlineRepairClick = () => {
|
||||
uni.setStorageSync('sourcePage', "index")
|
||||
uni.navigateTo({
|
||||
url:'/pageSubPack/online-repair/onlineRepair'
|
||||
url: '/pageSubPack/online-repair/onlineRepair'
|
||||
})
|
||||
}
|
||||
// 访客邀请
|
||||
const visitorClick = () =>{
|
||||
uni.setStorageSync('sourcePage',"index")
|
||||
}
|
||||
// 访客邀请
|
||||
const visitorClick = () => {
|
||||
uni.setStorageSync('sourcePage', "index")
|
||||
uni.navigateTo({
|
||||
url:"/pageSubPack/visitor/visitor-list"
|
||||
url: "/pageSubPack/visitor/visitor-list"
|
||||
})
|
||||
}
|
||||
// 活动列表的查看更多
|
||||
const moreClick = () =>{
|
||||
uni.setStorageSync('sourcePage',"index")
|
||||
}
|
||||
// 跳转到活动详情页
|
||||
const goToActivityDetail = (activity) => {
|
||||
uni.navigateTo({
|
||||
url:"/pageSubPack/activity-list/activityList"
|
||||
url: `/pageSubPack/activity-list/activityListDetails?id=${activity.id}&title=${activity.title}&applied=${activity.applied || ''}&statusText=${activity.statusText || ''}`
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// 活动列表的查看更多
|
||||
const moreClick = () => {
|
||||
uni.setStorageSync('sourcePage', "index")
|
||||
uni.navigateTo({
|
||||
url: "/pageSubPack/activity-list/activityList"
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.content-class{
|
||||
.content-class {
|
||||
background-color: #f9f9f9;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
@@ -465,24 +504,28 @@ const moreClick = () =>{
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
/* 固定头部 */
|
||||
.header-fixed {
|
||||
position: relative;
|
||||
flex-shrink: 0;
|
||||
.nar-top{
|
||||
|
||||
.nar-top {
|
||||
height: 400rpx;
|
||||
width: 100%;
|
||||
background: repeating-linear-gradient(to right, #EDF4FA , #C0E4FB);
|
||||
background: repeating-linear-gradient(to right, #EDF4FA, #C0E4FB);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 滚动区域 */
|
||||
.main-scroll {
|
||||
flex: 1;
|
||||
@@ -491,15 +534,18 @@ const moreClick = () =>{
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.scroll-bottom-space {
|
||||
height: 40rpx;
|
||||
}
|
||||
|
||||
.status_bar {
|
||||
width: 100%;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* 导航栏 */
|
||||
.nav-bar {
|
||||
height: 44px;
|
||||
@@ -508,11 +554,13 @@ const moreClick = () =>{
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.nav-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
.header-container{
|
||||
|
||||
.header-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
@@ -522,6 +570,7 @@ const moreClick = () =>{
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
// 左侧区域
|
||||
.location-area {
|
||||
display: flex;
|
||||
@@ -529,17 +578,20 @@ const moreClick = () =>{
|
||||
position: relative;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
|
||||
.location-icon {
|
||||
width: 45rpx;
|
||||
height: 45rpx;
|
||||
margin-right: 12rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.community-selector {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
max-width: 300rpx;
|
||||
cursor: pointer;
|
||||
|
||||
.community-name {
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
@@ -551,84 +603,100 @@ const moreClick = () =>{
|
||||
}
|
||||
}
|
||||
}
|
||||
.bannarClass{
|
||||
|
||||
.bannarClass {
|
||||
position: relative;
|
||||
padding: 20rpx 40rpx;
|
||||
// margin-bottom: 20rpx;
|
||||
height: 300rpx;
|
||||
::v-deep .u-swiper{
|
||||
|
||||
::v-deep .u-swiper {
|
||||
height: 300rpx !important;
|
||||
}
|
||||
::v-deep .u-swiper__wrapper{
|
||||
|
||||
::v-deep .u-swiper__wrapper {
|
||||
height: 300rpx !important;
|
||||
}
|
||||
::v-deep .u-swiper__wrapper__item__wrapper__image{
|
||||
|
||||
::v-deep .u-swiper__wrapper__item__wrapper__image {
|
||||
height: 300rpx !important;
|
||||
}
|
||||
::v-deep .banner-img{
|
||||
|
||||
::v-deep .banner-img {
|
||||
height: 300rpx !important;
|
||||
width: 100%;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
}
|
||||
.noticeClass{
|
||||
|
||||
.noticeClass {
|
||||
padding: 0rpx 36rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
// 修改通知栏样式
|
||||
::v-deep .uni-noticebar__content-wrapper--scrollable{
|
||||
::v-deep .uni-noticebar__content-wrapper--scrollable {
|
||||
margin-right: 20px;
|
||||
}
|
||||
::v-deep .uni-noticebar{
|
||||
|
||||
::v-deep .uni-noticebar {
|
||||
padding: 4px 12px;
|
||||
}
|
||||
|
||||
.notice-bar::after {
|
||||
color: #3E8EFF;
|
||||
}
|
||||
.bg-card-open{
|
||||
|
||||
.bg-card-open {
|
||||
padding: 20rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 8rpx;
|
||||
margin: 0 18px 20rpx;
|
||||
}
|
||||
.openClass{
|
||||
|
||||
.openClass {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin-top: 20rpx;
|
||||
.iconClass{
|
||||
|
||||
.iconClass {
|
||||
width: 88rpx;
|
||||
height: 88rpx;
|
||||
border-radius: 10rpx;
|
||||
// opacity: 0.4;
|
||||
|
||||
}
|
||||
.iconClass-img{
|
||||
|
||||
.iconClass-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 8px
|
||||
}
|
||||
.title-dome-calss{
|
||||
|
||||
.title-dome-calss {
|
||||
margin-top: 10rpx;
|
||||
font-size: 28rpx;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
.adCardClass{
|
||||
|
||||
.adCardClass {
|
||||
// width: 100%;
|
||||
height: 200rpx;
|
||||
margin: 0 30rpx 20rpx;
|
||||
background-color: #3E8EFF;
|
||||
// margin-top: 30rpx;
|
||||
border-radius: 28rpx;
|
||||
.titleLeft{
|
||||
|
||||
.titleLeft {
|
||||
text-align: left;
|
||||
line-height: 2;
|
||||
// margin-top: 32rpx;
|
||||
// margin-left: 30rpx;
|
||||
}
|
||||
.iconRightClass{
|
||||
|
||||
.iconRightClass {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
border-radius: 50%;
|
||||
@@ -636,34 +704,40 @@ const moreClick = () =>{
|
||||
margin: 36rpx;
|
||||
}
|
||||
}
|
||||
.activity-card{
|
||||
}
|
||||
.uni-card{
|
||||
|
||||
.activity-card {}
|
||||
|
||||
.uni-card {
|
||||
margin: 0 18px 20rpx !important;
|
||||
}
|
||||
.eventListClass{
|
||||
|
||||
.eventListClass {
|
||||
margin: 10rpx 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.activity-name{
|
||||
|
||||
.activity-name {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #222;
|
||||
|
||||
}
|
||||
.eventListCard{
|
||||
|
||||
.eventListCard {
|
||||
// min-height:200rpx ;
|
||||
position: relative;
|
||||
margin: 30rpx 0rpx;
|
||||
|
||||
// overflow: hidden;
|
||||
.activity-img{
|
||||
.activity-img {
|
||||
width: 170rpx;
|
||||
height: 230rpx;
|
||||
position: relative;
|
||||
// background-color: #333333;
|
||||
}
|
||||
|
||||
.status-tag {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
@@ -675,10 +749,11 @@ const moreClick = () =>{
|
||||
font-weight: 500;
|
||||
width: 80rpx;
|
||||
height: 20rpx;
|
||||
background: repeating-linear-gradient(to right, #FD7373 , #FB3F3F);
|
||||
background: repeating-linear-gradient(to right, #FD7373, #FB3F3F);
|
||||
z-index: 5;
|
||||
}
|
||||
.activity-title{
|
||||
|
||||
.activity-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
@@ -686,21 +761,23 @@ const moreClick = () =>{
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.activity-time{
|
||||
.activity-time {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 22rpx;
|
||||
color: #999999;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.activity-organizer{
|
||||
|
||||
.activity-organizer {
|
||||
font-size: 28rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #999999;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.activity-enrollment{
|
||||
|
||||
.activity-enrollment {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 28rpx;
|
||||
@@ -708,6 +785,7 @@ const moreClick = () =>{
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
|
||||
.empty-state {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -722,11 +800,10 @@ const moreClick = () =>{
|
||||
margin-top: 20rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.look-more-title{
|
||||
|
||||
.look-more-title {
|
||||
color: #3E8EFF;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<view class="guide-page">
|
||||
<view class="guide-page" v-if="showContent">
|
||||
<view class="status-bar"></view>
|
||||
<!-- 引导内容滑动容器 -->
|
||||
<swiper
|
||||
@@ -73,12 +73,26 @@
|
||||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
|
||||
// 守卫:已登录或已看过引导页的用户不展示引导页,直接跳转
|
||||
const hasShowGuide = uni.getStorageSync('hasShowGuide')
|
||||
const tokenSave = uni.getStorageSync('token')
|
||||
|
||||
if (hasShowGuide || tokenSave) {
|
||||
if (tokenSave) {
|
||||
uni.reLaunch({ url: '/pages/index/index' })
|
||||
} else if (hasShowGuide) {
|
||||
uni.reLaunch({ url: '/pageSubPack/loginSub/pwd-login' })
|
||||
}
|
||||
}
|
||||
|
||||
// ========== 响应式数据 ==========
|
||||
// 当前引导步骤(0/1/2)
|
||||
const currentStep = ref(0);
|
||||
const mode = ref("default")
|
||||
// 防重复跳转锁
|
||||
const isNavigating = ref(false)
|
||||
// 控制是否展示引导内容(已登录用户不展示,避免闪烁)
|
||||
const showContent = ref(!hasShowGuide && !tokenSave)
|
||||
|
||||
// ========== 方法 ==========
|
||||
// 滑动swiper切换步骤
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<view class="container">
|
||||
<!-- 顶部 Banner 轮播 -->
|
||||
<view class="banner-box" style="overflow-y: hidden;">
|
||||
<image class="banner-img" src="http://47.104.199.163:9090/images/propertyImgs/serviceImg2.png" @tap="bannnerClick"/>
|
||||
<image class="banner-img" src="https://wuye.ckdzkj.com/images/propertyImgs/serviceImg2.png" @tap="bannnerClick"/>
|
||||
</view>
|
||||
|
||||
<!-- 常用功能区 -->
|
||||
@@ -60,78 +60,78 @@
|
||||
|
||||
const commonFuncList = ref([{
|
||||
name: "一键开门",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-door.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-door.png",
|
||||
path: "/pageSubPack/notice-list/oneClickOpen"
|
||||
},
|
||||
{
|
||||
name: "生活缴费",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-pay.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-pay.png",
|
||||
path: "/pageSubPack/payment-list/paymentIndex"
|
||||
},
|
||||
{
|
||||
name: "在线报修",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-repair.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-repair.png",
|
||||
path: "/pageSubPack/online-repair/onlineRepair"
|
||||
},
|
||||
{
|
||||
name: "访客邀请",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-visitor.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-visitor.png",
|
||||
path: "/pageSubPack/visitor/visitor-list"
|
||||
}
|
||||
])
|
||||
const communityFuncList = ref([{
|
||||
name: "一键开门",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-door.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-door.png",
|
||||
path: "/pageSubPack/notice-list/oneClickOpen"
|
||||
},
|
||||
{
|
||||
name: "生活缴费",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-pay.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-pay.png",
|
||||
path: "/pageSubPack/payment-list/paymentIndex"
|
||||
},
|
||||
{
|
||||
name: "在线报修",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-repair.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-repair.png",
|
||||
path: "/pageSubPack/online-repair/onlineRepair"
|
||||
},
|
||||
{
|
||||
name: "访客邀请",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-visitor.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-visitor.png",
|
||||
path: "/pageSubPack/visitor/visitor-list"
|
||||
},
|
||||
{
|
||||
name: "投诉意见",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-complaint.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-complaint.png",
|
||||
path: "/pageSubPack/service-list/complaintsSuggestionsIndex"
|
||||
},
|
||||
{
|
||||
name: "问卷调查",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-survey.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-survey.png",
|
||||
path: "/pageSubPack/service-list/questionnaireSurveyIndex"
|
||||
},
|
||||
{
|
||||
name: "社区活动",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-activity.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-activity.png",
|
||||
path: "/pageSubPack/activity-list/activityList"
|
||||
},
|
||||
{
|
||||
name: "公告公示",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-notice.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-notice.png",
|
||||
path: "/pageSubPack/notice-list/noticeList"
|
||||
},
|
||||
{
|
||||
name: "联系物业",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-contact.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-contact.png",
|
||||
path: "/pageSubPack/service-list/contactProperty"
|
||||
},
|
||||
{
|
||||
name: "巡检记录",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-contact.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-inspection.png",
|
||||
path: "/pageSubPack/inspection-revenue/inspection"
|
||||
},
|
||||
{
|
||||
name: "公区收益",
|
||||
icon: "http://47.104.199.163:9090/images/propertyImgs/icon-contact.png",
|
||||
icon: "https://wuye.ckdzkj.com/images/propertyImgs/icon-revenue.png",
|
||||
path: "/pageSubPack/inspection-revenue/public-revenue"
|
||||
}
|
||||
])
|
||||
|
||||
Reference in New Issue
Block a user