This commit is contained in:
zhouyanli
2026-07-04 15:52:06 +08:00
4 changed files with 157 additions and 153 deletions

View File

@@ -1,153 +1,153 @@
{ {
"name" : "花开管家", "name": "花开管家",
"appid" : "__UNI__5F224F3", "appid": "__UNI__5F224F3",
"description" : "智慧社区管家端,专为小区物业管理人员打造,支持多小区灵活切换管理。集成账号密码、手机号密码双重登录模式,内置忘记密码找回功能,保障账号安全。涵盖消息通知、日常巡检、故障报修、一键开门、工单流转、投诉处理等核心办公功能,物业人员可在线完成巡检打卡、问题上报、工单派发跟进、投诉对接处理等日常工作,同时支持查看个人上报记录、巡检历史,便捷修改账号信息与登录密码。高效简化社区物业办公流程,提升小区服务与管理效率,打造便捷智能的社区管理服务平台。", "description": "智慧社区管家端,专为小区物业管理人员打造,支持多小区灵活切换管理。集成账号密码、手机号密码双重登录模式,内置忘记密码找回功能,保障账号安全。涵盖消息通知、日常巡检、故障报修、一键开门、工单流转、投诉处理等核心办公功能,物业人员可在线完成巡检打卡、问题上报、工单派发跟进、投诉对接处理等日常工作,同时支持查看个人上报记录、巡检历史,便捷修改账号信息与登录密码。高效简化社区物业办公流程,提升小区服务与管理效率,打造便捷智能的社区管理服务平台。",
"versionName" : "1.0.0", "versionName": "1.0.0",
"versionCode" : "100", "versionCode": "100",
"transformPx" : false, "transformPx": false,
"app-plus" : { "app-plus": {
"usingComponents" : true, "usingComponents": true,
"nvueStyleCompiler" : "uni-app", "nvueStyleCompiler": "uni-app",
"compilerVersion" : 3, "compilerVersion": 3,
"splashscreen" : { "splashscreen": {
"alwaysShowBeforeRender" : true, "alwaysShowBeforeRender": true,
"waiting" : true, "waiting": true,
"autoclose" : true, "autoclose": true,
"delay" : 0, "delay": 0,
"useOriginalMsgbox" : true "useOriginalMsgbox": true
},
"modules": {
"Geolocation": {},
"Camera": {},
"Push": {},
"Bluetooth": {}
},
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
"ios": {
"dSYMs": false,
"privacyDescription": {
"NSPhotoLibraryUsageDescription": "需要访问手机相册,选取本地巡检记录照片、业主报修故障图、水电表二维码用于上传工单与巡检台账,仅读取当前业务所需图片,不会获取相册内其他无关照片。",
"NSPhotoLibraryAddUsageDescription": "需要相册写入权限,保存巡检凭证、报修工单至手机相册,方便线下核对查看,图片仅本地存储,不会上传至无关服务器。",
"NSCameraUsageDescription": "本应用需要使用相机,用于管家现场巡检拍摄点位记录、处理业主报修拍摄故障照片,扫描水电表二维码抄表,拍摄影像仅用于小区物业工单与巡检业务存档,不会私自留存、对外分享。",
"NSLocationWhenInUseUsageDescription": "需要获取位置信息",
"NSLocationAlwaysAndWhenInUseUsageDescription": "需要获取位置信息",
"NSBluetoothPeripheralUsageDescription": "需要蓝牙权限连接小区智能门禁,实现蓝牙一键开门通行,仅用于小区门禁解锁业务,不采集蓝牙设备信息。",
"NSBluetoothAlwaysUsageDescription": "本应用需要蓝牙权限,用于扫描、连接小区蓝牙门禁设备实现一键开门,仅和本小区门禁硬件建立通信,不会扫描、连接无关蓝牙设备。"
}, },
"modules" : { "urltypes": [
"Geolocation" : {}, {
"Camera" : {}, "urlschemes": ["unionpaycashier"]
"Push" : {}, }
"Bluetooth" : {} ],
"idfa": false
},
"sdkConfigs": {
"push": {
"unipush": {
"version": "2",
"offline": false,
"oppo": {},
"vivo": {},
"mi": {},
"meizu": {},
"honor": {},
"fcm": {}
}
}, },
"distribute" : { "geolocation": {
"android" : { "system": {
"permissions" : [ "__platform__": ["ios", "android"]
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", }
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
"ios" : {
"dSYMs" : false,
"privacyDescription" : {
"NSPhotoLibraryUsageDescription" : "需要访问手机相册,选取本地巡检记录照片、业主报修故障图、水电表二维码用于上传工单与巡检台账,仅读取当前业务所需图片,不会获取相册内其他无关照片。",
"NSPhotoLibraryAddUsageDescription" : "需要相册写入权限,保存巡检凭证、报修工单至手机相册,方便线下核对查看,图片仅本地存储,不会上传至无关服务器。",
"NSCameraUsageDescription" : "本应用需要使用相机,用于管家现场巡检拍摄点位记录、处理业主报修拍摄故障照片,扫描水电表二维码抄表,拍摄影像仅用于小区物业工单与巡检业务存档,不会私自留存、对外分享。",
"NSLocationWhenInUseUsageDescription" : "需要获取位置信息",
"NSLocationAlwaysAndWhenInUseUsageDescription" : "需要获取位置信息",
"NSBluetoothPeripheralUsageDescription" : "需要蓝牙权限连接小区智能门禁,实现蓝牙一键开门通行,仅用于小区门禁解锁业务,不采集蓝牙设备信息。",
"NSBluetoothAlwaysUsageDescription" : "本应用需要蓝牙权限,用于扫描、连接小区蓝牙门禁设备实现一键开门,仅和本小区门禁硬件建立通信,不会扫描、连接无关蓝牙设备。"
},
"urltypes" : [
{
"urlschemes" : [ "unionpaycashier" ]
}
],
"idfa" : false
},
"sdkConfigs" : {
"push" : {
"unipush" : {
"version" : "2",
"offline" : false,
"oppo" : {},
"vivo" : {},
"mi" : {},
"meizu" : {},
"honor" : {},
"fcm" : {}
}
},
"geolocation" : {
"system" : {
"__platform__" : [ "ios", "android" ]
}
}
},
"icons" : {
"android" : {
"hdpi" : "unpackage/res/icons/72x72.png",
"xhdpi" : "unpackage/res/icons/96x96.png",
"xxhdpi" : "unpackage/res/icons/144x144.png",
"xxxhdpi" : "unpackage/res/icons/192x192.png"
},
"ios" : {
"appstore" : "unpackage/res/icons/1024x1024.png",
"ipad" : {
"app" : "unpackage/res/icons/76x76.png",
"app@2x" : "unpackage/res/icons/152x152.png",
"notification" : "unpackage/res/icons/20x20.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"proapp@2x" : "unpackage/res/icons/167x167.png",
"settings" : "unpackage/res/icons/29x29.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"spotlight" : "unpackage/res/icons/40x40.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png"
},
"iphone" : {
"app@2x" : "unpackage/res/icons/120x120.png",
"app@3x" : "unpackage/res/icons/180x180.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"notification@3x" : "unpackage/res/icons/60x60.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"settings@3x" : "unpackage/res/icons/87x87.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png",
"spotlight@3x" : "unpackage/res/icons/120x120.png"
}
}
}
} }
}, },
"quickapp" : {}, "icons": {
"mp-weixin" : { "android": {
"appid" : "wx40625124315d2de1", "hdpi": "unpackage/res/icons/72x72.png",
"usingComponents" : true, "xhdpi": "unpackage/res/icons/96x96.png",
"lazyCodeLoading" : "requiredComponents" "xxhdpi": "unpackage/res/icons/144x144.png",
}, "xxxhdpi": "unpackage/res/icons/192x192.png"
"mp-alipay" : { },
"usingComponents" : true "ios": {
}, "appstore": "unpackage/res/icons/1024x1024.png",
"mp-baidu" : { "ipad": {
"usingComponents" : true "app": "unpackage/res/icons/76x76.png",
}, "app@2x": "unpackage/res/icons/152x152.png",
"mp-toutiao" : { "notification": "unpackage/res/icons/20x20.png",
"usingComponents" : true "notification@2x": "unpackage/res/icons/40x40.png",
}, "proapp@2x": "unpackage/res/icons/167x167.png",
"uniStatistics" : { "settings": "unpackage/res/icons/29x29.png",
"enable" : false "settings@2x": "unpackage/res/icons/58x58.png",
}, "spotlight": "unpackage/res/icons/40x40.png",
"vueVersion" : "3", "spotlight@2x": "unpackage/res/icons/80x80.png"
"locale" : "zh-Hans", },
"fallbackLocale" : "zh-Hans", "iphone": {
"app-harmony" : { "app@2x": "unpackage/res/icons/120x120.png",
"distribute" : { "app@3x": "unpackage/res/icons/180x180.png",
"bundleName" : "com.chengkong.property.butler", "notification@2x": "unpackage/res/icons/40x40.png",
"signingConfigs" : { "notification@3x": "unpackage/res/icons/60x60.png",
"release" : { "settings@2x": "unpackage/res/icons/58x58.png",
"certpath" : "D:/物业app-ios-harmony-证书/new_harmony/新花开物业正式.cer", "settings@3x": "unpackage/res/icons/87x87.png",
"keyAlias" : "wuye_release", "spotlight@2x": "unpackage/res/icons/80x80.png",
"keyPassword" : "0000001A29DE91ED98E83E4AA715BEF3F0939FE80AD47D2CF45EFF04C4566953153352E9CDF554E10C12", "spotlight@3x": "unpackage/res/icons/120x120.png"
"profile" : "D:/物业app-ios-harmony-证书/new_harmony/guanjia_profileRelease.p7b", }
"signAlg" : "SHA256withECDSA",
"storeFile" : "D:/物业app-ios-harmony-证书/new_harmony/huakaiwuye.p12",
"storePassword" : "0000001A67FD9009C459E134A62BF21903B8C48B1FA0F0C7E320F98C0C8F3132692D86D09FB1A54B39DD"
}
}
} }
}
} }
},
"quickapp": {},
"mp-weixin": {
"appid": "wx40625124315d2de1",
"usingComponents": true,
"lazyCodeLoading": "requiredComponents"
},
"mp-alipay": {
"usingComponents": true
},
"mp-baidu": {
"usingComponents": true
},
"mp-toutiao": {
"usingComponents": true
},
"uniStatistics": {
"enable": false
},
"vueVersion": "3",
"locale": "zh-Hans",
"fallbackLocale": "zh-Hans",
"app-harmony": {
"distribute": {
"bundleName": "com.chengkong.property.butler",
"signingConfigs": {
"release": {
"certpath": "D:/物业app-ios-harmony-证书/new_harmony/新花开物业正式.cer",
"keyAlias": "wuye_release",
"keyPassword": "0000001A29DE91ED98E83E4AA715BEF3F0939FE80AD47D2CF45EFF04C4566953153352E9CDF554E10C12",
"profile": "D:/物业app-ios-harmony-证书/new_harmony/guanjia_profileRelease.p7b",
"signAlg": "SHA256withECDSA",
"storeFile": "D:/物业app-ios-harmony-证书/new_harmony/huakaiwuye.p12",
"storePassword": "0000001A67FD9009C459E134A62BF21903B8C48B1FA0F0C7E320F98C0C8F3132692D86D09FB1A54B39DD"
}
}
}
}
} }

View File

@@ -1,10 +1,11 @@
{ {
"dependencies": { "dependencies": {
"clipboard": "^2.0.11", "clipboard": "^2.0.11",
"dayjs": "^1.11.21" "dayjs": "^1.11.21",
"uview-plus": "^3.8.55"
}, },
"devDependencies": { "devDependencies": {
"sass": "^1.101.0", "sass": "^1.63.2",
"sass-loader": "^17.0.0" "sass-loader": "^17.0.0"
} }
} }

View File

@@ -13,7 +13,7 @@
style="flex: 1" style="flex: 1"
scroll-y="true" scroll-y="true"
lower-threshold="160" lower-threshold="160"
v-if="list.length > 0" :scroll-top="scrollTop"
@scrolltolower="scrolltolower" @scrolltolower="scrolltolower"
> >
<view <view
@@ -53,7 +53,7 @@
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
<view class="nodata" v-else> <view class="nodata" v-if="list.length <= 0">
<span>暂无数据</span> <span>暂无数据</span>
</view> </view>
</view> </view>
@@ -62,7 +62,7 @@
</template> </template>
<script setup> <script setup>
import { ref } from 'vue' import { nextTick, ref } from 'vue'
import { onShow } from '@dcloudio/uni-app' import { onShow } from '@dcloudio/uni-app'
import TabsComponents from '@/components/tabs/tabs.vue' import TabsComponents from '@/components/tabs/tabs.vue'
import { getComplainList } from '@/api/complain.js' import { getComplainList } from '@/api/complain.js'
@@ -96,7 +96,6 @@ const switchStatus = value => {
querySearch.value.pageSize = 10 querySearch.value.pageSize = 10
hasMore.value = true hasMore.value = true
isLoading.value = false isLoading.value = false
scrollTop.value = 0
list.value = [] list.value = []
init() init()
} }
@@ -133,6 +132,7 @@ function init() {
} }
onShow(() => { onShow(() => {
scrollTop.value = 0
resetList() resetList()
}) })
function resetList() { function resetList() {
@@ -162,6 +162,7 @@ function scrolltolower() {
<style scoped lang="scss"> <style scoped lang="scss">
.page_padding { .page_padding {
background: #f9f9f9; background: #f9f9f9;
overflow: hidden;
} }
.detailsbox { .detailsbox {
height: 100%; height: 100%;
@@ -171,6 +172,7 @@ function scrolltolower() {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
overflow: hidden; overflow: hidden;
box-sizing: border-box;
.detail_list { .detail_list {
margin-top: 20rpx; margin-top: 20rpx;
display: flex; display: flex;

View File

@@ -58,8 +58,9 @@
<text>{{ ite.inspectorName }}</text> <text>{{ ite.inspectorName }}</text>
</view> </view>
</view> </view>
<div class=""></div>
</scroll-view> </scroll-view>
<view class="nodata" v-else> <view class="nodata" v-if="list.length > 0">
<text>暂无数据</text> <text>暂无数据</text>
</view> </view>
</view> </view>