From f16e28c7f0645d4cd5092e90ceba9638b160949d Mon Sep 17 00:00:00 2001
From: Jafeng <2998840497@qq.com>
Date: Wed, 28 Jan 2026 19:09:20 +0800
Subject: [PATCH 1/6] =?UTF-8?q?feat:=E8=AE=A4=E8=AF=81=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E6=8E=A5=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/case/case.vue | 42 ++++++++++++++++++++++++++++++++++++++----
1 file changed, 38 insertions(+), 4 deletions(-)
diff --git a/pages/case/case.vue b/pages/case/case.vue
index 2ca2d57..4802e5b 100644
--- a/pages/case/case.vue
+++ b/pages/case/case.vue
@@ -163,11 +163,12 @@ const tabs = computed(() => {
const isBatchMode = ref(false);
const selectedItems = ref([]); // Stores patient phone or unique ID
-// 新增流程所需状态(后续接接口替换)
+// 新增流程所需状态(认证相关)
const managedArchiveCountAllTeams = ref(0); // 在管档案数(所有团队)
-const isVerified = ref(true); // 是否已认证
+const verifyStatus = ref(''); // unverified | verifying | verified | failed
+const isVerified = ref(false); // 是否已认证
const hasVerifyFailedHistory = ref(false); // 是否有历史认证失败
-const verifyFailedReason = ref('资料不完整,请补充营业执照/资质证明后重新提交。');
+const verifyFailedReason = ref('');
const DETAIL_STORAGE_KEY = 'ykt_case_archive_detail';
const CURRENT_TEAM_STORAGE_KEY = 'ykt_case_current_team';
@@ -220,6 +221,29 @@ function getTeamId() {
return String(currentTeam.value?.teamId || '') || '';
}
+function applyVerifyStatus(status, reason) {
+ verifyStatus.value = status || '';
+ isVerified.value = verifyStatus.value === 'verified';
+ hasVerifyFailedHistory.value = verifyStatus.value === 'failed';
+ verifyFailedReason.value = hasVerifyFailedHistory.value ? (reason || '') : '';
+}
+
+async function refreshVerifyStatus() {
+ const corpId = String(account.value?.corpId || doctorInfo.value?.corpId || getCorpId() || '');
+ const weChatOpenId = String(account.value?.openid || account.value?.openId || '');
+ const id = String(doctorInfo.value?._id || doctorInfo.value?.id || '');
+ if (!corpId || !weChatOpenId || !id) {
+ applyVerifyStatus(String(doctorInfo.value?.verifyStatus || ''), '');
+ return;
+ }
+ const res = await api('getMemberVerifyStatus', { corpId, weChatOpenId, id });
+ if (res && res.success) {
+ applyVerifyStatus(String(res.data?.verifyStatus || ''), String(res.data?.reason || ''));
+ return;
+ }
+ applyVerifyStatus(String(doctorInfo.value?.verifyStatus || ''), '');
+}
+
function sortGroupList(list) {
const { orderList, corpList, restList } = (Array.isArray(list) ? list : []).reduce(
(p, c) => {
@@ -574,6 +598,10 @@ const handleCreate = () => {
// 未认证 + 达到10上限:提示去认证
if (!isVerified.value && managedArchiveCountAllTeams.value >= 10) {
+ if (verifyStatus.value === 'verifying') {
+ toast('信息认证中,请耐心等待!');
+ return;
+ }
uni.showModal({
title: '提示',
content: '当前管理档案数已达上限 10 个,完成认证即可升级至 100 个。',
@@ -603,6 +631,10 @@ const handleCreate = () => {
// 新增流程:认证分支
const startVerifyFlow = () => {
+ if (verifyStatus.value === 'verifying') {
+ toast('信息认证中,请耐心等待!');
+ return;
+ }
// 有历史失败记录 -> 展示失败原因 & 重新认证
if (hasVerifyFailedHistory.value) {
uni.showModal({
@@ -625,7 +657,7 @@ const startVerifyFlow = () => {
// ===== 预留入口(后续对接真实页面/接口) =====
const openVerifyEntry = () => {
- uni.showToast({ title: '认证功能待接入', icon: 'none' });
+ uni.navigateTo({ url: '/pages/work/profile?type=cert' });
};
const openAddCustomerServiceEntry = () => {
@@ -717,6 +749,7 @@ onLoad(async () => {
await loadGroups();
await reload(true);
}
+ await refreshVerifyStatus();
});
onShow(async () => {
@@ -737,6 +770,7 @@ onShow(async () => {
} else {
await loadGroups();
}
+ await refreshVerifyStatus();
});
From 7da14980a499c76e9d887d9a9c65a6d64bd5cc95 Mon Sep 17 00:00:00 2001
From: Jafeng <2998840497@qq.com>
Date: Wed, 28 Jan 2026 20:01:28 +0800
Subject: [PATCH 2/6] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E6=98=BE=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../archive-detail/health-profile-tab.vue | 98 ++++----
.../archive-detail/service-info-tab.vue | 118 ++++-----
.../form-cell/form-diagnosis-picker.vue | 19 +-
.../form-cell/form-positive-find.vue | 29 ++-
components/form-template/form-cell/index.vue | 1 +
pages/case/archive-detail.vue | 224 +++++++++---------
pages/case/visit-record-detail.vue | 48 ++--
pages/case/visit-record-view.vue | 60 ++---
pages/library/diagnosis-list.vue | 34 +--
pages/others/edit-positive-find.vue | 36 +--
10 files changed, 333 insertions(+), 334 deletions(-)
diff --git a/components/archive-detail/health-profile-tab.vue b/components/archive-detail/health-profile-tab.vue
index 0a65209..ba41576 100644
--- a/components/archive-detail/health-profile-tab.vue
+++ b/components/archive-detail/health-profile-tab.vue
@@ -381,57 +381,57 @@ watch(
diff --git a/components/archive-detail/service-info-tab.vue b/components/archive-detail/service-info-tab.vue
index e928aae..7f8cf87 100644
--- a/components/archive-detail/service-info-tab.vue
+++ b/components/archive-detail/service-info-tab.vue
@@ -420,16 +420,16 @@ watch(
-
diff --git a/components/form-template/form-cell/form-positive-find.vue b/components/form-template/form-cell/form-positive-find.vue
index 7576ef1..4b25961 100644
--- a/components/form-template/form-cell/form-positive-find.vue
+++ b/components/form-template/form-cell/form-positive-find.vue
@@ -101,8 +101,8 @@ function remove(idx) {
-
diff --git a/components/form-template/form-cell/index.vue b/components/form-template/form-cell/index.vue
index da38666..1dc13bf 100644
--- a/components/form-template/form-cell/index.vue
+++ b/components/form-template/form-cell/index.vue
@@ -13,6 +13,7 @@
:disableChange="disableChange"
@change="change"
/>
+
{
.page {
min-height: 100vh;
background: #f5f6f8;
- padding-bottom: calc(80px + env(safe-area-inset-bottom));
+ padding-bottom: calc(160rpx + env(safe-area-inset-bottom));
}
.card {
@@ -772,69 +772,69 @@ const saveAddGroup = async () => {
.header {
display: flex;
align-items: flex-start;
- padding: 14px 14px 10px;
- border-bottom: 1px solid #f2f2f2;
+ padding: 28rpx 28rpx 20rpx;
+ border-bottom: 2rpx solid #f2f2f2;
}
.avatar {
- width: 56px;
- height: 56px;
- border-radius: 6px;
- border: 1px solid #e8e8e8;
+ width: 112rpx;
+ height: 112rpx;
+ border-radius: 12rpx;
+ border: 2rpx solid #e8e8e8;
background: #fafafa;
overflow: hidden;
flex-shrink: 0;
}
.avatar-img {
- width: 56px;
- height: 56px;
+ width: 112rpx;
+ height: 112rpx;
}
.header-main {
flex: 1;
min-width: 0;
- padding: 0 10px;
+ padding: 0 20rpx;
}
.name-row {
display: flex;
align-items: center;
- gap: 8px;
- padding-top: 2px;
+ gap: 16rpx;
+ padding-top: 4rpx;
}
.name {
- font-size: 18px;
+ font-size: 36rpx;
font-weight: 600;
color: #1f1f1f;
- max-width: 220px;
+ max-width: 440rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.meta {
- font-size: 13px;
+ font-size: 26rpx;
color: #666;
}
.sub-line {
- margin-top: 6px;
- font-size: 12px;
+ margin-top: 12rpx;
+ font-size: 24rpx;
color: #666;
}
.id-rows {
- margin-top: 6px;
+ margin-top: 12rpx;
}
.id-row {
display: flex;
align-items: center;
- font-size: 12px;
+ font-size: 24rpx;
color: #666;
- line-height: 18px;
+ line-height: 36rpx;
}
.id-label {
@@ -849,58 +849,58 @@ const saveAddGroup = async () => {
}
.create-row {
- margin-top: 6px;
+ margin-top: 12rpx;
}
.create-text {
- font-size: 12px;
+ font-size: 24rpx;
color: #999;
}
.header-right {
- width: 28px;
- height: 28px;
+ width: 56rpx;
+ height: 56rpx;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
- margin-top: 6px;
+ margin-top: 12rpx;
}
.cells {
background: #fff;
- padding: 0 14px;
+ padding: 0 28rpx;
}
.border-bottom {
- border-bottom: 1px solid #f2f2f2;
+ border-bottom: 2rpx solid #f2f2f2;
}
.info-row {
display: flex;
align-items: center;
justify-content: space-between;
- padding: 16px 0;
- min-height: 24px;
+ padding: 32rpx 0;
+ min-height: 48rpx;
}
.info-block {
- padding: 16px 0;
+ padding: 32rpx 0;
}
.block-header {
display: flex;
align-items: center;
justify-content: space-between;
- margin-bottom: 8px;
+ margin-bottom: 16rpx;
}
.block-content {
- min-height: 20px;
+ min-height: 40rpx;
}
.input-label {
- font-size: 15px;
+ font-size: 30rpx;
color: #666;
}
@@ -912,15 +912,15 @@ const saveAddGroup = async () => {
.phone-area {
display: flex;
align-items: center;
- margin-right: 12px;
+ margin-right: 24rpx;
}
.mr-4 {
- margin-right: 4px;
+ margin-right: 8rpx;
}
.phone-text {
- font-size: 16px;
+ font-size: 32rpx;
color: #4f6ef7;
font-weight: 500;
}
@@ -929,17 +929,17 @@ const saveAddGroup = async () => {
display: flex;
align-items: center;
justify-content: center;
- width: 24px;
- height: 24px;
+ width: 48rpx;
+ height: 48rpx;
}
.placeholder {
- font-size: 14px;
+ font-size: 28rpx;
color: #999;
}
.note-content {
- font-size: 14px;
+ font-size: 28rpx;
color: #333;
line-height: 1.5;
word-break: break-all;
@@ -948,16 +948,16 @@ const saveAddGroup = async () => {
.tags-wrap {
display: flex;
flex-wrap: wrap;
- gap: 8px;
+ gap: 16rpx;
}
.tag-item {
- height: 24px;
- line-height: 22px;
- padding: 0 10px;
- border: 1px solid #4f6ef7;
- border-radius: 12px;
- font-size: 12px;
+ height: 48rpx;
+ line-height: 44rpx;
+ padding: 0 20rpx;
+ border: 2rpx solid #4f6ef7;
+ border-radius: 24rpx;
+ font-size: 24rpx;
color: #4f6ef7;
box-sizing: border-box;
}
@@ -968,11 +968,11 @@ const saveAddGroup = async () => {
}
.tabs {
- margin-top: 10px;
+ margin-top: 20rpx;
background: #fff;
display: flex;
- border-top: 1px solid #f2f2f2;
- border-bottom: 1px solid #f2f2f2;
+ border-top: 2rpx solid #f2f2f2;
+ border-bottom: 2rpx solid #f2f2f2;
position: sticky;
top: 0;
z-index: 30;
@@ -981,9 +981,9 @@ const saveAddGroup = async () => {
.tab {
flex: 1;
text-align: center;
- height: 44px;
- line-height: 44px;
- font-size: 14px;
+ height: 88rpx;
+ line-height: 88rpx;
+ font-size: 28rpx;
color: #333;
position: relative;
}
@@ -998,11 +998,11 @@ const saveAddGroup = async () => {
position: absolute;
left: 50%;
bottom: 0;
- width: 32px;
- height: 3px;
+ width: 64rpx;
+ height: 6rpx;
background: #4f6ef7;
transform: translateX(-50%);
- border-radius: 2px;
+ border-radius: 4rpx;
}
.content {
@@ -1017,14 +1017,14 @@ const saveAddGroup = async () => {
}
.empty-img {
- width: 160px;
- height: 160px;
+ width: 320rpx;
+ height: 320rpx;
opacity: 0.9;
}
.empty-text {
- margin-top: 10px;
- font-size: 13px;
+ margin-top: 20rpx;
+ font-size: 26rpx;
color: #9aa0a6;
}
@@ -1034,21 +1034,21 @@ const saveAddGroup = async () => {
right: 0;
bottom: 0;
background: #fff;
- padding: 12px 14px calc(12px + env(safe-area-inset-bottom));
- box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.06);
+ padding: 24rpx 28rpx calc(24rpx + env(safe-area-inset-bottom));
+ box-shadow: 0 -8rpx 24rpx rgba(0, 0, 0, 0.06);
}
.bind-btn {
width: 100%;
- height: 44px;
+ height: 88rpx;
background: #4f6ef7;
color: #fff;
- border-radius: 6px;
+ border-radius: 12rpx;
display: flex;
align-items: center;
justify-content: center;
- gap: 8px;
- font-size: 15px;
+ gap: 16rpx;
+ font-size: 30rpx;
}
.bind-text {
@@ -1057,52 +1057,52 @@ const saveAddGroup = async () => {
/* ===== 弹窗样式(居中) ===== */
.modal {
- width: 320px;
+ width: 640rpx;
background: #fff;
- border-radius: 8px;
+ border-radius: 16rpx;
overflow: hidden;
}
.modal-title {
- font-size: 16px;
+ font-size: 32rpx;
font-weight: 600;
text-align: center;
- padding: 14px 12px;
+ padding: 28rpx 24rpx;
color: #333;
- border-bottom: 1px solid #f0f0f0;
+ border-bottom: 2rpx solid #f0f0f0;
}
.modal-body {
- padding: 14px 14px 8px;
+ padding: 28rpx 28rpx 16rpx;
}
.modal-input {
width: 100%;
- height: 40px;
- border: 1px solid #e6e6e6;
- border-radius: 4px;
- padding: 0 10px;
- font-size: 14px;
+ height: 80rpx;
+ border: 2rpx solid #e6e6e6;
+ border-radius: 8rpx;
+ padding: 0 20rpx;
+ font-size: 28rpx;
box-sizing: border-box;
}
.modal-actions {
display: flex;
- gap: 12px;
- padding: 12px 14px 14px;
+ gap: 24rpx;
+ padding: 24rpx 28rpx 28rpx;
}
.modal-btn {
flex: 1;
- height: 40px;
- line-height: 40px;
+ height: 80rpx;
+ line-height: 80rpx;
text-align: center;
- border-radius: 4px;
- font-size: 14px;
+ border-radius: 8rpx;
+ font-size: 28rpx;
}
.modal-btn.cancel {
- border: 1px solid #4f6ef7;
+ border: 2rpx solid #4f6ef7;
color: #4f6ef7;
background: #fff;
}
@@ -1115,69 +1115,69 @@ const saveAddGroup = async () => {
/* ===== 底部弹层样式 ===== */
.sheet {
background: #fff;
- border-top-left-radius: 10px;
- border-top-right-radius: 10px;
+ border-top-left-radius: 20rpx;
+ border-top-right-radius: 20rpx;
overflow: hidden;
}
.sheet-header {
- height: 48px;
+ height: 96rpx;
display: flex;
align-items: center;
- padding: 0 14px;
- border-bottom: 1px solid #f0f0f0;
+ padding: 0 28rpx;
+ border-bottom: 2rpx solid #f0f0f0;
}
.sheet-title {
flex: 1;
text-align: center;
- font-size: 16px;
+ font-size: 32rpx;
font-weight: 600;
color: #333;
}
.sheet-close {
- width: 24px;
- height: 24px;
+ width: 48rpx;
+ height: 48rpx;
display: flex;
align-items: center;
justify-content: center;
}
.sheet-header-left {
- width: 24px;
+ width: 48rpx;
}
.sheet-link {
- min-width: 60px;
+ min-width: 120rpx;
text-align: right;
- font-size: 14px;
+ font-size: 28rpx;
color: #4f6ef7;
}
.sheet-body {
- padding: 14px;
+ padding: 28rpx;
}
.notes-textarea {
width: 100%;
- height: 140px;
- border: 1px solid #e6e6e6;
- border-radius: 4px;
- padding: 10px;
- font-size: 14px;
+ height: 280rpx;
+ border: 2rpx solid #e6e6e6;
+ border-radius: 8rpx;
+ padding: 20rpx;
+ font-size: 28rpx;
box-sizing: border-box;
}
.counter {
text-align: right;
- margin-top: 8px;
- font-size: 12px;
+ margin-top: 16rpx;
+ font-size: 24rpx;
color: #999;
}
.group-list {
- padding: 8px 14px 14px;
+ padding: 16rpx 28rpx 28rpx;
max-height: 55vh;
overflow: auto;
}
@@ -1185,26 +1185,26 @@ const saveAddGroup = async () => {
.group-item {
display: flex;
align-items: center;
- padding: 12px 0;
+ padding: 24rpx 0;
}
.group-name {
- margin-left: 10px;
- font-size: 14px;
+ margin-left: 20rpx;
+ font-size: 28rpx;
color: #333;
}
.sheet-footer {
- padding: 12px 14px calc(12px + env(safe-area-inset-bottom));
+ padding: 24rpx 28rpx calc(24rpx + env(safe-area-inset-bottom));
}
.primary-btn {
width: 100%;
- height: 44px;
+ height: 88rpx;
background: #4f6ef7;
color: #fff;
- border-radius: 4px;
- font-size: 15px;
- line-height: 44px;
+ border-radius: 8rpx;
+ font-size: 30rpx;
+ line-height: 88rpx;
}
diff --git a/pages/case/visit-record-detail.vue b/pages/case/visit-record-detail.vue
index 529c736..98f8769 100644
--- a/pages/case/visit-record-detail.vue
+++ b/pages/case/visit-record-detail.vue
@@ -28,7 +28,7 @@
-
+
暂无诊断数据
-
+
-
+