初始化上传医疗项目到 medical-mall

This commit is contained in:
2026-04-10 09:03:21 +08:00
parent ca8794ea3a
commit ce124e7119
421 changed files with 15139 additions and 2363 deletions

View File

@@ -1,4 +1,4 @@
<!-- 商家端 - 财务管理页面 -->
<!-- 机构端 - 结算中心页面 -->
<template>
<view class="finance-page">
<!-- #ifdef MP-WEIXIN -->
@@ -10,11 +10,11 @@
</view>
<!-- #endif -->
<view class="balance-card">
<text class="balance-label">账户余额(元)</text>
<text class="balance-label">可结算/补贴金额(元)</text>
<text class="balance-value">¥{{ balance }}</text>
<view class="balance-actions">
<view class="action-btn withdraw" @click="withdraw">提现</view>
<view class="action-btn detail" @click="viewDetail">明细</view>
<view class="action-btn withdraw" @click="withdraw">申请结算/补贴</view>
<view class="action-btn detail" @click="viewDetail">收支明细</view>
</view>
</view>
@@ -29,13 +29,13 @@
</view>
<view class="stat-item">
<text class="stat-value">{{ stats.pendingWithdraw }}</text>
<text class="stat-label">待提现</text>
<text class="stat-label">待结算</text>
</view>
</view>
<view class="tabs">
<view class="tab" :class="{ active: currentTab === 'record' }" @click="switchTab('record')">收支记录</view>
<view class="tab" :class="{ active: currentTab === 'withdraw' }" @click="switchTab('withdraw')">提现记录</view>
<view class="tab" :class="{ active: currentTab === 'withdraw' }" @click="switchTab('withdraw')">结算/补贴记录</view>
</view>
<scroll-view class="records-list" scroll-y :refresher-enabled="true" :refresher-triggered="refreshing" @refresherrefresh="onRefresh">
@@ -56,20 +56,20 @@
<view v-if="showWithdrawModal" class="modal-mask" @click="closeWithdrawModal">
<view class="modal-content" @click.stop>
<view class="modal-header"><text class="modal-title">提现</text><text class="modal-close" @click="closeWithdrawModal">×</text></view>
<view class="modal-header"><text class="modal-title">结算补贴申请</text><text class="modal-close" @click="closeWithdrawModal">×</text></view>
<view class="modal-body">
<view class="form-item">
<text class="label">可提现金额</text>
<text class="label">可结算金额</text>
<text class="value">¥{{ balance }}</text>
</view>
<view class="form-item">
<text class="label">提现金额</text>
<input class="input" type="digit" v-model="withdrawAmount" placeholder="请输入提现金额"/>
<text class="label">结算金额</text>
<input class="input" type="digit" v-model="withdrawAmount" placeholder="请输入结算金额"/>
</view>
</view>
<view class="modal-footer">
<view class="modal-btn cancel" @click="closeWithdrawModal">取消</view>
<view class="modal-btn confirm" @click="confirmWithdraw">确认提现</view>
<view class="modal-btn confirm" @click="confirmWithdraw">确认结算</view>
</view>
</view>
</view>
@@ -206,7 +206,7 @@
return
}
uni.showToast({ title: '提现申请已提交', icon: 'success' })
uni.showToast({ title: '结算申请已提交', icon: 'success' })
this.closeWithdrawModal()
},
@@ -225,27 +225,31 @@
<style>
.finance-page { background-color: #f5f5f5; min-height: 100vh; }
.balance-card { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 50rpx 30rpx; color: #fff; text-align: center; }
.balance-card { background: linear-gradient(135deg, rgb(66, 121, 240) 0%, #5856D6 100%); padding: 50rpx 30rpx; color: #fff; text-align: center; }
.balance-label { font-size: 26rpx; opacity: 0.9; display: block; margin-bottom: 20rpx; }
.balance-value { font-size: 60rpx; font-weight: bold; display: block; margin-bottom: 40rpx; }
.balance-actions { display: flex; justify-content: center; gap: 30rpx; }
.balance-actions { display: flex; flex-direction: row; justify-content: center; gap: 30rpx; }
.action-btn { padding: 16rpx 60rpx; border-radius: 40rpx; font-size: 28rpx; }
.action-btn.withdraw { background-color: #fff; color: #667eea; }
.action-btn.withdraw { background-color: #fff; color: rgb(66, 121, 240); }
.action-btn.detail { background-color: rgba(255,255,255,0.2); color: #fff; }
.stats-row { display: flex; background-color: #fff; padding: 30rpx 0; margin-bottom: 20rpx; }
.stats-row { display: flex;
flex-direction: row;
background-color: #fff; padding: 30rpx 0; margin-bottom: 20rpx; }
.stat-item { flex: 1; text-align: center; border-right: 1rpx solid #f5f5f5; }
.stat-item:last-child { border-right: none; }
.stat-value { font-size: 32rpx; font-weight: bold; color: #333; display: block; }
.stat-label { font-size: 24rpx; color: #999; }
.tabs { display: flex; background-color: #fff; padding: 0 20rpx; }
.tabs { display: flex;
flex-direction: row;
background-color: #fff; padding: 0 20rpx; }
.tab { flex: 1; text-align: center; padding: 24rpx 0; font-size: 28rpx; color: #666; position: relative; }
.tab.active { color: #007AFF; font-weight: bold; }
.tab.active::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 40rpx; height: 4rpx; background-color: #007AFF; border-radius: 2rpx; }
.tab.active { color: rgb(66, 121, 240); font-weight: bold; }
.tab.active::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 40rpx; height: 4rpx; background-color: rgb(66, 121, 240); border-radius: 2rpx; }
.records-list { padding: 20rpx; height: calc(100vh - 500rpx); }
.loading-container, .empty-container { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 100rpx 0; }
.empty-icon { font-size: 100rpx; margin-bottom: 20rpx; }
.empty-text, .loading-text { font-size: 28rpx; color: #999; }
.record-card { display: flex; justify-content: space-between; align-items: center; background-color: #fff; border-radius: 16rpx; padding: 24rpx; margin-bottom: 16rpx; }
.record-card { display: flex; flex-direction: row; justify-content: space-between; align-items: center; background-color: #fff; border-radius: 16rpx; padding: 24rpx; margin-bottom: 16rpx; }
.record-info { flex: 1; }
.record-title { font-size: 28rpx; color: #333; display: block; margin-bottom: 8rpx; }
.record-time { font-size: 22rpx; color: #999; }
@@ -254,7 +258,7 @@
.record-amount.negative { color: #F44336; }
.modal-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; }
.modal-content { width: 80%; background-color: #fff; border-radius: 16rpx; }
.modal-header { display: flex; justify-content: space-between; align-items: center; padding: 30rpx; border-bottom: 1rpx solid #f5f5f5; }
.modal-header { display: flex; flex-direction: row; justify-content: space-between; align-items: center; padding: 30rpx; border-bottom: 1rpx solid #f5f5f5; }
.modal-title { font-size: 32rpx; font-weight: bold; color: #333; }
.modal-close { font-size: 44rpx; color: #999; }
.modal-body { padding: 30rpx; }
@@ -262,8 +266,8 @@
.form-item .label { font-size: 26rpx; color: #999; display: block; margin-bottom: 10rpx; }
.form-item .value { font-size: 28rpx; color: #333; }
.input { height: 72rpx; border: 1rpx solid #e5e5e5; border-radius: 8rpx; padding: 0 20rpx; font-size: 28rpx; }
.modal-footer { display: flex; border-top: 1rpx solid #f5f5f5; }
.modal-footer { display: flex; flex-direction: row; border-top: 1rpx solid #f5f5f5; }
.modal-btn { flex: 1; height: 88rpx; line-height: 88rpx; text-align: center; font-size: 28rpx; }
.modal-btn.cancel { color: #666; border-right: 1rpx solid #f5f5f5; }
.modal-btn.confirm { color: #007AFF; font-weight: bold; }
.modal-btn.confirm { color: rgb(66, 121, 240); font-weight: bold; }
</style>