chore: sync release updates

This commit is contained in:
wushumin
2026-05-22 15:47:23 +08:00
parent be64b8e5b7
commit baef2fb64c
23 changed files with 879 additions and 131 deletions

View File

@@ -2,7 +2,7 @@
import { computed, ref } from "vue";
import { onLoad, onShow } from "@dcloudio/uni-app";
import { adminApi, type AdminFileAsset, type AdminOrderDetail } from "../../api/admin";
import { showErrorToast } from "../../utils/feedback";
import { showErrorToast, showInfoToast } from "../../utils/feedback";
const loading = ref(false);
const pageReady = ref(false);
@@ -40,6 +40,16 @@ function openReportDetail() {
uni.navigateTo({ url: `/pages/report/detail?id=${reportId}` });
}
function copyOrderNo() {
const orderNo = detail.value?.order_info.order_no || "";
if (!orderNo) return;
uni.setClipboardData({
data: orderNo,
success: () => showInfoToast("订单号已复制"),
fail: () => showInfoToast("复制失败,请重试"),
});
}
function formatMoney(value?: number) {
const amount = Number(value || 0);
return `¥${amount.toFixed(2)}`;
@@ -105,7 +115,15 @@ onShow(() => {
<template v-else-if="detail">
<view class="hero">
<view class="eyebrow">订单详情</view>
<view class="title">{{ pageTitle }}</view>
<view class="order-title-row">
<view class="title order-title">{{ pageTitle }}</view>
<button class="copy-order-button" aria-label="复制订单号" hover-class="copy-order-button--active" @click.stop="copyOrderNo">
<view class="copy-order-button__icon">
<view class="copy-order-button__sheet copy-order-button__sheet--back"></view>
<view class="copy-order-button__sheet copy-order-button__sheet--front"></view>
</view>
</button>
</view>
<view class="subtitle">{{ detail.order_info.appraisal_no }}</view>
</view>
@@ -261,6 +279,65 @@ onShow(() => {
</template>
<style scoped lang="scss">
.order-title-row {
display: flex;
align-items: flex-start;
gap: 14rpx;
margin-top: 18rpx;
}
.order-title {
flex: 1;
min-width: 0;
margin-top: 0;
overflow-wrap: anywhere;
word-break: break-all;
}
.copy-order-button {
position: relative;
flex: 0 0 auto;
width: 60rpx;
height: 60rpx;
margin-top: 2rpx;
border: 1px solid var(--work-border);
border-radius: var(--work-radius-sm);
background: #ffffff;
}
.copy-order-button--active {
background: var(--work-card-muted);
}
.copy-order-button__icon {
position: absolute;
left: 50%;
top: 50%;
width: 36rpx;
height: 40rpx;
transform: translate(-50%, -50%);
}
.copy-order-button__sheet {
position: absolute;
width: 26rpx;
height: 30rpx;
border: 3rpx solid var(--work-text);
border-radius: 5rpx;
background: #ffffff;
}
.copy-order-button__sheet--back {
left: 1rpx;
top: 1rpx;
border-color: var(--work-text-soft);
}
.copy-order-button__sheet--front {
right: 1rpx;
bottom: 1rpx;
}
.timeline {
display: grid;
gap: 16rpx;