diff --git a/pages/workbench/index.vue b/pages/workbench/index.vue
index 52788ec..42b2170 100644
--- a/pages/workbench/index.vue
+++ b/pages/workbench/index.vue
@@ -30,7 +30,7 @@
-
+
{{`${doctorInfo.store.store.name}(${doctorInfo.DoctorInfo.depart['name']})`}}
@@ -397,6 +397,9 @@ export default {
systemList: [],
see_rate: "",
acceptingPatientList: [], // 正在接诊的患者列表
+ refreshTimer: null,
+ refreshIntervalMs: 10000,
+ isReceptionRefreshing: false,
};
},
watch: {
@@ -421,6 +424,7 @@ export default {
},
onUnload() {
+ this.stopRefreshTimer();
if (this.__doctorImRoomUpdateHandler) {
uni.$off('doctor-im-room-update', this.__doctorImRoomUpdateHandler);
this.__doctorImRoomUpdateHandler = null;
@@ -433,6 +437,7 @@ export default {
uni.$off('doctor-im-room-update', this.__doctorImRoomUpdateHandler);
uni.$on('doctor-im-room-update', this.__doctorImRoomUpdateHandler);
this.refreshWorkbenchData();
+ this.startRefreshTimer();
},
onPullDownRefresh() {
this.refreshWorkbenchData().finally(() => {
@@ -440,6 +445,7 @@ export default {
});
},
onHide() {
+ this.stopRefreshTimer();
if (this.__doctorImRoomUpdateHandler) {
uni.$off('doctor-im-room-update', this.__doctorImRoomUpdateHandler);
}
@@ -454,6 +460,31 @@ export default {
this.getAcceptingPatientList()
]);
},
+ refreshReceptionData() {
+ if (this.isReceptionRefreshing) {
+ return Promise.resolve();
+ }
+ this.isReceptionRefreshing = true;
+ return Promise.all([
+ this.getInfo(),
+ this.getList(),
+ this.getAcceptingPatientList()
+ ]).finally(() => {
+ this.isReceptionRefreshing = false;
+ });
+ },
+ startRefreshTimer() {
+ this.stopRefreshTimer();
+ this.refreshTimer = setInterval(() => {
+ this.refreshReceptionData();
+ }, this.refreshIntervalMs);
+ },
+ stopRefreshTimer() {
+ if (this.refreshTimer) {
+ clearInterval(this.refreshTimer);
+ this.refreshTimer = null;
+ }
+ },
call () {
uni.makePhoneCall({
phoneNumber: '18157126670',
diff --git a/subPackages/sub_clinic_admin/order/index.vue b/subPackages/sub_clinic_admin/order/index.vue
index 2a80067..910f613 100644
--- a/subPackages/sub_clinic_admin/order/index.vue
+++ b/subPackages/sub_clinic_admin/order/index.vue
@@ -2,44 +2,47 @@
-
-
-
-
- {{ dateStart || '开始日期' }}
-
- 至
-
- {{ dateEnd || '结束日期' }}
-
+
+
@@ -607,4 +610,69 @@ $color-text-muted: #86909C;
padding: 120rpx 0;
font-size: 28rpx;
}
+
+
+/* ================= 核心:完美吸顶方案 ================= */
+/* 原生 sticky 结合 Vue 计算出的精确导航栏高度(top),严丝合缝拦截在导航栏正下方 */
+.native-sticky-header {
+ position: -webkit-sticky;
+ position: sticky;
+ z-index: 100; /* 高层级,保证滑动时覆盖在下方的卡片上 */
+ background-color: $color-bg-base; /* 必须有底色用于防穿透遮挡 */
+}
+
+.header-solid-bg {
+ /* 使用 padding 将内容向内挤,防止滑动过程的透明间隙穿透问题 */
+ padding: 16rpx 24rpx 16rpx;
+}
+
+/* 筛选项 UI 美化 */
+.quick-filter {
+ background: #fff;
+ padding: 16rpx 20rpx;
+ border-radius: 20rpx;
+ box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.04);
+}
+.filter-row {
+ display: flex;
+ align-items: center;
+ gap: 16rpx;
+ margin-bottom: 24rpx;
+ &:last-child { margin-bottom: 0; }
+}
+.date-row {
+ margin-bottom: 0;
+ justify-content: space-between;
+}
+.filter-label {
+ font-size: 28rpx;
+ color: $color-text-body;
+ min-width: 130rpx;
+}
+.filter-input, .filter-picker {
+ flex: 1;
+ font-size: 26rpx;
+ padding: 14rpx 20rpx;
+ background: #F7F8FA;
+ border-radius: 12rpx;
+ color: $color-text-main;
+}
+.date-picker { text-align: center; }
+.sep { color: $color-text-muted; font-size: 24rpx; }
+
+/* 重新设计的紧凑型查询按钮 */
+.btn-query {
+ flex-shrink: 0;
+ background: $theme-primary;
+ color: #fff;
+ padding: 0 32rpx;
+ height: 60rpx;
+ line-height: 60rpx;
+ border-radius: 30rpx; /* 胶囊圆角 */
+ font-size: 26rpx;
+ font-weight: 500;
+ box-shadow: 0 4rpx 12rpx rgba(106, 205, 187, 0.3);
+ transition: opacity 0.2s;
+ &:active { opacity: 0.8; }
+}
\ No newline at end of file