Commit 2c67707a by anxin

fix: 优化消息页面状态loading及详情页按钮处理

1 parent 9e4b3e50
{ {
"name": "CvaYap-app",
"lockfileVersion": 3,
"requires": true, "requires": true,
"lockfileVersion": 1, "packages": {
"": {
"dependencies": { "dependencies": {
"@intlify/core-base": { "dayjs": "^1.11.18",
"echarts": "^5.6.0",
"pinyin-pro": "^3.26.0",
"tslib": "^2.8.1",
"vue-i18n": "^11.1.3",
"zrender": "^5.6.1"
}
},
"node_modules/@intlify/core-base": {
"version": "11.1.3", "version": "11.1.3",
"resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.1.3.tgz", "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.1.3.tgz",
"integrity": "sha512-cMuHunYO7LE80azTitcvEbs1KJmtd6g7I5pxlApV3Jo547zdO3h31/0uXpqHc+Y3RKt1wo2y68RGSx77Z1klyA==", "integrity": "sha512-cMuHunYO7LE80azTitcvEbs1KJmtd6g7I5pxlApV3Jo547zdO3h31/0uXpqHc+Y3RKt1wo2y68RGSx77Z1klyA==",
"requires": { "dependencies": {
"@intlify/message-compiler": "11.1.3", "@intlify/message-compiler": "11.1.3",
"@intlify/shared": "11.1.3" "@intlify/shared": "11.1.3"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
} }
}, },
"@intlify/message-compiler": { "node_modules/@intlify/message-compiler": {
"version": "11.1.3", "version": "11.1.3",
"resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.1.3.tgz", "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.1.3.tgz",
"integrity": "sha512-7rbqqpo2f5+tIcwZTAG/Ooy9C8NDVwfDkvSeDPWUPQW+Dyzfw2o9H103N5lKBxO7wxX9dgCDjQ8Umz73uYw3hw==", "integrity": "sha512-7rbqqpo2f5+tIcwZTAG/Ooy9C8NDVwfDkvSeDPWUPQW+Dyzfw2o9H103N5lKBxO7wxX9dgCDjQ8Umz73uYw3hw==",
"requires": { "dependencies": {
"@intlify/shared": "11.1.3", "@intlify/shared": "11.1.3",
"source-map-js": "^1.0.2" "source-map-js": "^1.0.2"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
} }
}, },
"@intlify/shared": { "node_modules/@intlify/shared": {
"version": "11.1.3", "version": "11.1.3",
"resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-11.1.3.tgz", "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-11.1.3.tgz",
"integrity": "sha512-pTFBgqa/99JRA2H1qfyqv97MKWJrYngXBA/I0elZcYxvJgcCw3mApAoPW3mJ7vx3j+Ti0FyKUFZ4hWxdjKaxvA==" "integrity": "sha512-pTFBgqa/99JRA2H1qfyqv97MKWJrYngXBA/I0elZcYxvJgcCw3mApAoPW3mJ7vx3j+Ti0FyKUFZ4hWxdjKaxvA==",
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
}, },
"@vue/devtools-api": { "node_modules/@vue/devtools-api": {
"version": "6.6.4", "version": "6.6.4",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
}, },
"dayjs": { "node_modules/dayjs": {
"version": "1.11.18", "version": "1.11.18",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.18.tgz", "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.18.tgz",
"integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==" "integrity": "sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA=="
}, },
"echarts": { "node_modules/echarts": {
"version": "5.6.0", "version": "5.6.0",
"requires": { "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
"dependencies": {
"tslib": "2.3.0", "tslib": "2.3.0",
"zrender": "5.6.1" "zrender": "5.6.1"
}
}, },
"dependencies": { "node_modules/echarts/node_modules/tslib": {
"tslib": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}
}
}, },
"pinyin-pro": { "node_modules/pinyin-pro": {
"version": "3.26.0" "version": "3.26.0",
"integrity": "sha512-HcBZZb0pvm0/JkPhZHWA5Hqp2cWHXrrW/WrV+OtaYYM+kf35ffvZppIUuGmyuQ7gDr1JDJKMkbEE+GN0wfMoGg=="
}, },
"source-map-js": { "node_modules/source-map-js": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"engines": {
"node": ">=0.10.0"
}
}, },
"tslib": { "node_modules/tslib": {
"version": "2.8.1" "version": "2.8.1",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
}, },
"vue-i18n": { "node_modules/vue-i18n": {
"version": "11.1.3", "version": "11.1.3",
"requires": { "integrity": "sha512-Pcylh9z9S5+CJAqgbRZ3EKxFIBIrtY5YUppU722GIT65+Nukm0TCqiQegZnNLCZkXGthxe0cpqj0AoM51H+6Gw==",
"deprecated": "This version is NOT deprecated. Previous deprecation was a mistake.",
"dependencies": {
"@intlify/core-base": "11.1.3", "@intlify/core-base": "11.1.3",
"@intlify/shared": "11.1.3", "@intlify/shared": "11.1.3",
"@vue/devtools-api": "^6.5.0" "@vue/devtools-api": "^6.5.0"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
},
"peerDependencies": {
"vue": "^3.0.0"
} }
}, },
"zrender": { "node_modules/zrender": {
"version": "5.6.1", "version": "5.6.1",
"requires": { "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
"dependencies": {
"tslib": "2.3.0" "tslib": "2.3.0"
}
}, },
"dependencies": { "node_modules/zrender/node_modules/tslib": {
"tslib": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
} }
} }
}
}
} }
...@@ -39,6 +39,17 @@ ...@@ -39,6 +39,17 @@
<view style="height: 230rpx; background-color: #ffffff"></view> <view style="height: 230rpx; background-color: #ffffff"></view>
<view class="h-c-container"> <view class="h-c-container">
<view class="rank"> <view class="rank">
<!-- 骨架屏 loading -->
<view v-if="isLoading" class="skeleton-list">
<view v-for="i in 7" :key="i" class="skeleton-item">
<view class="skeleton-icon"></view>
<view class="skeleton-content">
<view class="skeleton-line skeleton-short"></view>
<view class="skeleton-line skeleton-long"></view>
</view>
</view>
</view>
<template v-else>
<MessageList ref="messageListRef" @itemClick="handleMessageClick" @selectionChange="handleSelectionChange" <MessageList ref="messageListRef" @itemClick="handleMessageClick" @selectionChange="handleSelectionChange"
@editModeChange="handleEditModeChange" @falseAlarm="handleFalseAlarm" @confirm="handleConfirm" @editModeChange="handleEditModeChange" @falseAlarm="handleFalseAlarm" @confirm="handleConfirm"
v-if="!isShowEmptyFlag" :messages="messageList"> v-if="!isShowEmptyFlag" :messages="messageList">
...@@ -49,6 +60,7 @@ ...@@ -49,6 +60,7 @@
t("maintenance.monitor.project.empty.text") t("maintenance.monitor.project.empty.text")
}}</text> }}</text>
</view> </view>
</template>
<!-- <ChartsNvue style="height: 580px;flex:none" ref="rankingRef" /> --> <!-- <ChartsNvue style="height: 580px;flex:none" ref="rankingRef" /> -->
</view> </view>
<uv-load-more v-if="messageList.length > pageSize" :status="loadMoreStatus" :loading-text="loadingText" <uv-load-more v-if="messageList.length > pageSize" :status="loadMoreStatus" :loading-text="loadingText"
...@@ -122,6 +134,8 @@ ...@@ -122,6 +134,8 @@
const messageList = ref([]); const messageList = ref([]);
// 是否显示空数据 // 是否显示空数据
const isShowEmptyFlag = ref(false); const isShowEmptyFlag = ref(false);
// 是否正在加载
const isLoading = ref(true);
const scrollTop = ref(0); const scrollTop = ref(0);
// 保存滚动位置的键 // 保存滚动位置的键
...@@ -290,6 +304,7 @@ onMounted(() => { ...@@ -290,6 +304,7 @@ onMounted(() => {
messageList.value = []; messageList.value = [];
isEditMode.value = false; isEditMode.value = false;
messageListRef.value && messageListRef.value.toggleEditMode('force'); messageListRef.value && messageListRef.value.toggleEditMode('force');
isLoading.value = true;
} }
loadMoreStatus.value = "loading"; loadMoreStatus.value = "loading";
...@@ -318,6 +333,9 @@ onMounted(() => { ...@@ -318,6 +333,9 @@ onMounted(() => {
undefined, undefined,
startTime: params.value.startDate, startTime: params.value.startDate,
endTime: params.value.endDate, endTime: params.value.endDate,
// mock
// startTime: '2025-01-01',
// endTime: '2025-12-31',
pageNum: pageNum.value, pageNum: pageNum.value,
pageSize: pageSize.value, pageSize: pageSize.value,
}; };
...@@ -409,6 +427,8 @@ onMounted(() => { ...@@ -409,6 +427,8 @@ onMounted(() => {
// }, 1000); // }, 1000);
} catch (error) { } catch (error) {
uni.stopPullDownRefresh() uni.stopPullDownRefresh()
} finally {
isLoading.value = false;
} }
}; };
...@@ -645,4 +665,56 @@ onShow(() => { ...@@ -645,4 +665,56 @@ onShow(() => {
border-radius: 16rpx; border-radius: 16rpx;
flex: 1; flex: 1;
} }
.skeleton-list {
padding: 0;
}
.skeleton-item {
display: flex;
padding: 32rpx 0;
border-bottom: 2rpx solid #eef0f3;
align-items: center;
gap: 26rpx;
&:last-child {
border-bottom: none;
}
}
@keyframes skeleton-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.4; }
}
.skeleton-icon {
width: 96rpx;
height: 96rpx;
border-radius: 50%;
flex-shrink: 0;
background-color: #ebebeb;
animation: skeleton-pulse 1.4s ease-in-out infinite;
}
.skeleton-content {
flex: 1;
}
.skeleton-line {
height: 28rpx;
border-radius: 8rpx;
margin-bottom: 18rpx;
background-color: #ebebeb;
animation: skeleton-pulse 1.4s ease-in-out infinite;
&:last-child {
margin-bottom: 0;
}
}
.skeleton-short {
width: 40%;
}
.skeleton-long {
width: 70%;
}
</style> </style>
...@@ -90,14 +90,14 @@ ...@@ -90,14 +90,14 @@
<!-- 底部按钮 --> <!-- 底部按钮 -->
<view class="action-buttons" v-if="isResolveFlag == 1"> <view class="action-buttons" v-if="isResolveFlag == 1">
<view class="btn btn-ignore" @click="handleIgnore"> <!-- <view class="btn btn-ignore" @click="handleIgnore">
<image <image
src="/static/message/undo.png" src="/static/message/undo.png"
mode="aspectFit" mode="aspectFit"
class="btn-icon" class="btn-icon"
></image> ></image>
<text class="btn-text">{{ t('maintenance.monitor.project.ignore') }}</text> <text class="btn-text">{{ t('maintenance.monitor.project.ignore') }}</text>
</view> </view> -->
<view <view
class="btn btn-false" class="btn btn-false"
@click="handleOpenAlarmHandlePop('FALSE_ALARM')" @click="handleOpenAlarmHandlePop('FALSE_ALARM')"
...@@ -424,6 +424,7 @@ const handleIgnore = () => { ...@@ -424,6 +424,7 @@ const handleIgnore = () => {
justify-content: space-between; justify-content: space-between;
padding: 30rpx 8rpx; padding: 30rpx 8rpx;
margin-top: auto; margin-top: auto;
gap: 24rpx;
.btn { .btn {
display: flex; display: flex;
...@@ -432,6 +433,7 @@ const handleIgnore = () => { ...@@ -432,6 +433,7 @@ const handleIgnore = () => {
font-weight: 400; font-weight: 400;
font-size: 28rpx; font-size: 28rpx;
color: #4e515e; color: #4e515e;
height: 76rpx;
&.btn-ignore { &.btn-ignore {
flex-direction: column; flex-direction: column;
...@@ -448,7 +450,6 @@ const handleIgnore = () => { ...@@ -448,7 +450,6 @@ const handleIgnore = () => {
&.btn-false { &.btn-false {
flex: 1; flex: 1;
margin: 0 20rpx 0 54rpx;
background: rgba(209, 218, 227, 0.4); background: rgba(209, 218, 227, 0.4);
border-radius: 48rpx 48rpx 48rpx 48rpx; border-radius: 48rpx 48rpx 48rpx 48rpx;
font-weight: 400; font-weight: 400;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!