fix(user-center): complete certification and order flows
Fix modal scroll ownership and certification modal styling, store evidence as Media Library attachments, reconcile missed provider callbacks, validate currencies, and complete digital fulfillment only after durable entitlement delivery.
This commit is contained in:
1 parent
b945c6e835
commit
815e83bac0
26 files changed
+613
-148
No files matched your search
@@ -22,9 +22,9 @@
|
||||
<n-descriptions-item label="身份简介">{{ detail.request.application?.desc || '-' }}</n-descriptions-item>
|
||||
<n-descriptions-item label="申请说明">{{ detail.request.application?.msg || '-' }}</n-descriptions-item>
|
||||
</n-descriptions>
|
||||
<div v-if="detail.request.application?.img?.length" class="aksrt-verify-drawer__proofs">
|
||||
<a v-for="image in detail.request.application.img" :key="image" :href="image" target="_blank" rel="noopener noreferrer">
|
||||
<img :src="image" alt="认证证明材料" />
|
||||
<div v-if="detail.request.application?.evidence?.length" class="aksrt-verify-drawer__proofs">
|
||||
<a v-for="item in detail.request.application.evidence" :key="item.id" :href="item.url" target="_blank" rel="noopener noreferrer">
|
||||
<img :src="item.thumbnail_url || item.url" alt="认证证明材料" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -522,8 +522,15 @@
|
||||
}
|
||||
|
||||
/* Order detail modal content */
|
||||
html.aksrt-modal-open {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.aksrt-order-detail-dialog {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: min(520px, 100%);
|
||||
max-height: min(85vh, 760px);
|
||||
border-radius: 20px;
|
||||
overflow: hidden;
|
||||
background: var(--surface-1, #fff);
|
||||
@@ -557,8 +564,12 @@
|
||||
}
|
||||
|
||||
.aksrt-order-detail-dialog .aksrt-modal__body {
|
||||
min-height: 0;
|
||||
padding: 8px 18px 16px;
|
||||
gap: 14px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
overscroll-behavior: contain;
|
||||
}
|
||||
|
||||
/* Hero: status + amount */
|
||||
@@ -1413,6 +1424,10 @@ html.dark .aksrt-order-detail-dialog .aksrt-modal__footer {
|
||||
border: 1px solid color-mix(in srgb, var(--color-line, #e5e7eb) 70%, transparent);
|
||||
}
|
||||
|
||||
.aksrt-modal__dialog.aksrt-order-detail-dialog {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.aksrt-modal__header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
.uc-auth-card--verified .uc-auth-card__art { background: linear-gradient(150deg, #20a77d, #3287df); }
|
||||
|
||||
.uc-auth-modal { z-index: 620; }
|
||||
.uc-auth-modal .aksrt-modal__dialog { width: min(620px, calc(100vw - 28px)); max-height: min(760px, calc(100vh - 40px)); overflow: auto; }
|
||||
.uc-auth-modal__dialog { width: min(620px, calc(100vw - 28px)); max-width: 620px; max-height: min(760px, calc(100vh - 40px)); overflow: auto; background: var(--surface-1, #fff); }
|
||||
.uc-auth-modal__header > div { display: flex; align-items: center; gap: 10px; }
|
||||
.uc-auth-modal__header > div > span { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 11px; background: var(--color-primary-soft); color: var(--color-primary); }
|
||||
.uc-auth-modal__body { padding: 22px; }
|
||||
@@ -433,5 +433,5 @@
|
||||
.uc-auth-card__art { font-size: 34px; }
|
||||
.uc-auth-card__content { padding: 20px 17px; }
|
||||
.uc-auth-card__content h2 { font-size: 20px; }
|
||||
.uc-auth-modal .aksrt-modal__dialog { position: fixed; inset: auto 0 0; width: 100%; max-height: 88vh; margin: 0; border-radius: 18px 18px 0 0; }
|
||||
.uc-auth-modal__dialog { position: fixed; inset: auto 0 0; width: 100%; max-width: none; max-height: 88vh; margin: 0; border-radius: 18px 18px 0 0; }
|
||||
}
|
||||
@@ -262,10 +262,16 @@
|
||||
}
|
||||
if (message) message.textContent = '';
|
||||
fetch(ajaxUrl, { method: 'POST', body: new FormData(form), credentials: 'same-origin' })
|
||||
.then(function(response) { return response.json(); })
|
||||
.then(function(response) {
|
||||
if (!response || response.error) throw new Error((response && response.msg) || '提交失败');
|
||||
showToast(response.msg || '提交成功');
|
||||
return response.json().then(function(payload) {
|
||||
if (!response.ok || !payload || !payload.success) {
|
||||
throw new Error((payload && payload.data && payload.data.message) || '提交失败');
|
||||
}
|
||||
return payload.data || {};
|
||||
});
|
||||
})
|
||||
.then(function(data) {
|
||||
showToast(data.message || '提交成功');
|
||||
window.setTimeout(function() { window.location.assign(tabUrls.auth || '?tab=auth'); }, 500);
|
||||
})
|
||||
.catch(function(error) {
|
||||
|
||||
Reference in new issue
Block a user