<template>
|
<div class="app-container">
|
<!-- 搜索筛选区域 -->
|
<el-card class="filter-card">
|
<el-form
|
:model="queryParams"
|
ref="queryForm"
|
:inline="true"
|
label-width="80px"
|
>
|
<el-form-item label="案例编号" prop="caseNo">
|
<el-input
|
v-model="queryParams.caseNo"
|
placeholder="请输入案例编号"
|
clearable
|
style="width: 200px"
|
@keyup.enter.native="handleQuery"
|
/>
|
</el-form-item>
|
<el-form-item label="患者姓名" prop="patName">
|
<el-input
|
v-model="queryParams.patName"
|
placeholder="请输入患者姓名"
|
clearable
|
style="width: 200px"
|
@keyup.enter.native="handleQuery"
|
/>
|
</el-form-item>
|
<el-form-item label="转运状态" prop="transitStatus">
|
<el-select
|
v-model="queryParams.transitStatus"
|
placeholder="转运状态"
|
clearable
|
style="width: 200px"
|
>
|
<el-option label="全部" value="" />
|
<el-option label="待转运" :value="1" />
|
<el-option label="转运中" :value="2" />
|
<el-option label="转运完成" :value="3" />
|
<el-option label="转运取消" :value="4" />
|
<el-option label="暂存" :value="5" />
|
</el-select>
|
</el-form-item>
|
<el-form-item label="创建时间">
|
<el-date-picker
|
v-model="dateRange"
|
style="width: 240px"
|
value-format="yyyy-MM-dd"
|
type="daterange"
|
range-separator="-"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
></el-date-picker>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" icon="el-icon-search" @click="handleQuery"
|
>搜索</el-button
|
>
|
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
</el-form-item>
|
</el-form>
|
</el-card>
|
|
<!-- 统计卡片 -->
|
<el-row :gutter="20" class="stats-row">
|
<el-col :span="8">
|
<el-card class="stats-card total">
|
<div class="stat-content">
|
<div class="stat-icon">📦</div>
|
<div class="stat-info">
|
<div class="stat-count">{{ stats.totalTransports }}</div>
|
<div class="stat-label">总转运单</div>
|
</div>
|
</div>
|
</el-card>
|
</el-col>
|
<el-col :span="8">
|
<el-card class="stats-card pending">
|
<div class="stat-content">
|
<div class="stat-icon">⏳</div>
|
<div class="stat-info">
|
<div class="stat-count">{{ stats.pendingTransports }}</div>
|
<div class="stat-label">待出发</div>
|
</div>
|
</div>
|
</el-card>
|
</el-col>
|
<el-col :span="8">
|
<el-card class="stats-card completed">
|
<div class="stat-content">
|
<div class="stat-icon">✅</div>
|
<div class="stat-info">
|
<div class="stat-count">{{ stats.completedTransports }}</div>
|
<div class="stat-label">已完成</div>
|
</div>
|
</div>
|
</el-card>
|
</el-col>
|
</el-row>
|
|
<!-- 操作按钮区域 -->
|
<el-row :gutter="10" class="mb8">
|
<el-col :span="1.5">
|
<el-button type="primary" plain icon="el-icon-plus" @click="handleAdd"
|
>新建转运单</el-button
|
>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button
|
type="success"
|
plain
|
icon="el-icon-edit"
|
:disabled="single"
|
@click="handleUpdate"
|
>修改</el-button
|
>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button
|
type="danger"
|
plain
|
icon="el-icon-delete"
|
:disabled="multiple"
|
@click="handleDelete"
|
>删除</el-button
|
>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button
|
type="warning"
|
plain
|
icon="el-icon-download"
|
@click="handleExport"
|
>导出</el-button
|
>
|
</el-col>
|
<right-toolbar
|
:showSearch.sync="showSearch"
|
@queryTable="getList"
|
></right-toolbar>
|
</el-row>
|
|
<!-- 数据表格 - 直接使用后端返回的数据结构 -->
|
<el-table
|
v-loading="loading"
|
:data="transportList"
|
@selection-change="handleSelectionChange"
|
>
|
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column label="序号" type="index" width="60" align="center" />
|
<el-table-column
|
label="转运单号"
|
align="center"
|
prop="reportId"
|
width="140"
|
/>
|
<el-table-column
|
label="案例编号"
|
align="center"
|
prop="caseNo"
|
width="140"
|
/>
|
<el-table-column label="患者信息" align="center" width="260">
|
<template slot-scope="scope">
|
<div class="donor-info">
|
<div class="donor-name">{{ scope.row.patName }}</div>
|
<div class="donor-details">
|
<dict-tag
|
:options="dict.type.sys_user_sex"
|
:value="parseInt(scope.row.sex)"
|
/>
|
| {{ scope.row.age }}岁
|
</div>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="疾病诊断"
|
align="center"
|
prop="diagnosisname"
|
min-width="200"
|
show-overflow-tooltip
|
/>
|
<el-table-column
|
label="治疗医院"
|
align="center"
|
prop="treatmentHospitalName"
|
width="150"
|
/>
|
<el-table-column
|
label="计划转运时间"
|
align="center"
|
prop="transportStartTime"
|
width="160"
|
/>
|
<el-table-column
|
label="负责协调员"
|
align="center"
|
prop="contactPerson"
|
width="100"
|
/>
|
<el-table-column
|
label="转运状态"
|
align="center"
|
prop="transitStatus"
|
width="100"
|
>
|
<template slot-scope="scope">
|
<el-tag :type="getStatusTagType(scope.row.transitStatus)">
|
{{ getStatusText(scope.row.transitStatus) }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="创建时间"
|
align="center"
|
prop="createTime"
|
width="160"
|
/>
|
<el-table-column
|
label="操作"
|
align="center"
|
fixed="right"
|
class-name="small-padding fixed-width"
|
width="220"
|
>
|
<template slot-scope="scope">
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-view"
|
@click="handleDetail(scope.row)"
|
>详情</el-button
|
>
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-edit"
|
@click="handleUpdate(scope.row)"
|
>编辑</el-button
|
>
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-video-play"
|
@click="handleStartTransport(scope.row)"
|
v-if="scope.row.transitStatus === 1"
|
>开始转运</el-button
|
>
|
<el-button
|
size="mini"
|
type="text"
|
icon="el-icon-check"
|
@click="handleCompleteTransport(scope.row)"
|
v-if="scope.row.transitStatus === 2"
|
>完成转运</el-button
|
>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<!-- 分页 -->
|
<pagination
|
v-show="total > 0"
|
:total="total"
|
:page.sync="queryParams.pageNum"
|
:limit.sync="queryParams.pageSize"
|
@pagination="getList"
|
/>
|
|
<!-- 转运单详情弹框 -->
|
<el-dialog
|
:title="detailTitle"
|
:visible.sync="detailOpen"
|
width="1000px"
|
append-to-body
|
:close-on-click-modal="false"
|
>
|
<transport-detail
|
:transportData="currentTransport"
|
@close="detailOpen = false"
|
/>
|
</el-dialog>
|
|
<!-- 案例选择对话框 -->
|
<el-dialog
|
title="选择转运案例"
|
:visible.sync="selectCaseOpen"
|
width="900px"
|
append-to-body
|
:close-on-click-modal="false"
|
>
|
<div class="case-select-container">
|
<el-card class="search-card">
|
<el-form :model="caseQueryParams" inline>
|
<el-form-item label="案例编号">
|
<el-input
|
v-model="caseQueryParams.caseNo"
|
placeholder="请输入案例编号"
|
clearable
|
style="width: 180px"
|
/>
|
</el-form-item>
|
<el-form-item label="患者姓名">
|
<el-input
|
v-model="caseQueryParams.patName"
|
placeholder="请输入患者姓名"
|
clearable
|
style="width: 150px"
|
/>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" icon="el-icon-search" @click="searchCaseList"
|
>搜索</el-button
|
>
|
<el-button icon="el-icon-refresh" @click="resetCaseSearch"
|
>重置</el-button
|
>
|
</el-form-item>
|
</el-form>
|
</el-card>
|
|
<el-card>
|
<el-table
|
v-loading="caseLoading"
|
:data="availableCaseList"
|
@row-click="handleCaseSelect"
|
highlight-current-row
|
style="width: 100%"
|
>
|
<el-table-column label="案例编号" prop="caseNo" width="150" align="center" />
|
<el-table-column label="患者姓名" prop="name" width="120" align="center" />
|
<el-table-column label="性别" width="80" align="center">
|
<template slot-scope="scope">
|
<dict-tag
|
:options="dict.type.sys_user_sex"
|
:value="scope.row.sex"
|
/>
|
</template>
|
</el-table-column>
|
<el-table-column label="年龄" prop="age" width="80" align="center" />
|
<el-table-column label="血型" width="80" align="center">
|
<template slot-scope="scope">
|
<dict-tag
|
:options="dict.type.sys_BloodType"
|
:value="scope.row.bloodType"
|
/>
|
</template>
|
</el-table-column>
|
<el-table-column label="疾病诊断" prop="diagnosisname" min-width="200" show-overflow-tooltip />
|
<el-table-column label="治疗医院" prop="treatmenthospitalname" width="150" />
|
<el-table-column label="是否已转运" width="100" align="center">
|
<template slot-scope="scope">
|
<el-tag
|
:type="hasTransport(scope.row) ? 'danger' : 'success'"
|
size="small"
|
>
|
{{ hasTransport(scope.row) ? '已转运' : '可转运' }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" width="80" align="center">
|
<template slot-scope="scope">
|
<el-button
|
type="text"
|
size="mini"
|
@click="selectCase(scope.row)"
|
:disabled="hasTransport(scope.row)"
|
>
|
选择
|
</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<!-- 分页 -->
|
<pagination
|
v-show="caseTotal > 0"
|
:total="caseTotal"
|
:page.sync="caseQueryParams.pageNum"
|
:limit.sync="caseQueryParams.pageSize"
|
@pagination="searchCaseList"
|
/>
|
</el-card>
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="selectCaseOpen = false">取消</el-button>
|
</div>
|
</el-dialog>
|
|
<!-- 新增:修改弹框 -->
|
<transport-edit
|
:edit-open="editOpen"
|
:transport-data="currentTransport"
|
:is-edit="isEditing"
|
:selected-case="selectedCase"
|
@update:edit-open="editOpen = $event"
|
@close="handleEditClose"
|
@save-success="handleSaveSuccess"
|
/>
|
<!-- 操作确认弹框 -->
|
<el-dialog
|
:title="actionTitle"
|
:visible.sync="actionOpen"
|
width="500px"
|
append-to-body
|
>
|
<div class="action-confirm">
|
<p>
|
确定要{{ actionText }}转运单 "{{
|
currentTransport.reportId || currentTransport.id
|
}}" 吗?
|
</p>
|
</div>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="actionOpen = false">取 消</el-button>
|
<el-button type="primary" @click="confirmAction">确 定</el-button>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import {
|
transportList,
|
transportAdd,
|
transportEdit,
|
transportDelete,
|
transportInfo,
|
donateList
|
} from "@/api/businessApi/index";
|
import TransportDetail from "./transportDetail";
|
import TransportEdit from "./TransportEdit";
|
|
export default {
|
name: "TransportList",
|
components: { TransportDetail, TransportEdit },
|
dicts: ["sys_user_sex", "sys_BloodType"],
|
data() {
|
return {
|
|
// 遮罩层
|
loading: false,
|
// 选中数组
|
ids: [],
|
// 非单个禁用
|
single: true,
|
// 非多个禁用
|
multiple: true,
|
// 显示搜索条件
|
showSearch: true,
|
// 总条数
|
total: 0,
|
// 转运单表格数据
|
transportList: [],
|
// 详情弹框是否显示
|
detailOpen: false,
|
// 案例选择弹框是否显示
|
selectCaseOpen: false,
|
// 操作确认弹框是否显示
|
actionOpen: false,
|
// 新增:修改弹框相关数据
|
editOpen: false,
|
isEditing: false,
|
// 详情弹框标题
|
detailTitle: "",
|
// 操作确认标题
|
actionTitle: "",
|
// 操作文本
|
actionText: "",
|
// 当前操作的转运单
|
currentTransport: {},
|
// 日期范围
|
dateRange: [],
|
// 统计数据
|
stats: {
|
totalTransports: 0,
|
pendingTransports: 0,
|
completedTransports: 0
|
},
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
caseNo: undefined,
|
patName: undefined,
|
transitStatus: undefined,
|
searchValue: undefined,
|
params: {}
|
},
|
// 案例选择相关
|
caseLoading: false,
|
availableCaseList: [],
|
caseTotal: 0,
|
selectedCase: null,
|
caseQueryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
caseNo: undefined,
|
patName: undefined,
|
// 只查询已同意且需要转运的案例
|
// reportStatus: "3", // 已同意
|
isTransport: "2" // 需要转运
|
}
|
};
|
},
|
created() {
|
this.getList();
|
this.checkAutoCreate();
|
},
|
methods: {
|
/** 查询转运单列表 */
|
async getList() {
|
this.loading = true;
|
|
try {
|
const requestParams = {
|
pageNum: this.queryParams.pageNum,
|
pageSize: this.queryParams.pageSize,
|
caseNo: this.queryParams.caseNo,
|
patName: this.queryParams.patName,
|
transitStatus: this.queryParams.transitStatus,
|
searchValue: this.queryParams.searchValue
|
};
|
|
if (this.dateRange && this.dateRange.length === 2) {
|
requestParams.transportStartTime = this.dateRange.join(",");
|
}
|
|
const response = await transportList(requestParams);
|
|
if (response.code === 200) {
|
this.transportList = response.rows || response.data || [];
|
this.total = response.total || 0;
|
this.updateStats();
|
} else {
|
this.$modal.msgError(response.msg || "获取转运单列表失败");
|
}
|
} catch (error) {
|
console.error("获取转运单列表失败:", error);
|
this.$modal.msgError("网络请求失败,请稍后重试");
|
} finally {
|
this.loading = false;
|
}
|
},
|
checkAutoCreate() {
|
const query = this.$route.query;
|
if (query.autoCreate === 'true') {
|
// 自动打开案例选择弹框
|
this.selectCaseOpen = true;
|
this.resetCaseSearch();
|
|
// 如果有特定的案例编号,可以预先搜索
|
if (query.caseNo) {
|
this.caseQueryParams.caseNo = query.caseNo;
|
this.searchCaseList();
|
}
|
}
|
},
|
/** 搜索可用案例 */
|
async searchCaseList() {
|
this.caseLoading = true;
|
try {
|
const response = await donateList(this.caseQueryParams);
|
if (response.code === 200) {
|
this.availableCaseList = response.rows || response.data || [];
|
this.caseTotal = response.total || 0;
|
} else {
|
this.$modal.msgError(response.msg || "获取案例列表失败");
|
}
|
} catch (error) {
|
console.error("获取案例列表失败:", error);
|
this.$modal.msgError("获取案例列表失败");
|
} finally {
|
this.caseLoading = false;
|
}
|
},
|
|
/** 重置案例搜索 */
|
resetCaseSearch() {
|
this.caseQueryParams = {
|
pageNum: 1,
|
pageSize: 10,
|
caseNo: undefined,
|
patName: undefined,
|
// reportStatus: "3",
|
isTransport: "2"
|
};
|
this.searchCaseList();
|
},
|
|
/** 判断案例是否已有转运单 */
|
hasTransport(caseData) {
|
// 检查案例是否有转运信息
|
if (caseData.serviceTransport &&
|
Array.isArray(caseData.serviceTransport) &&
|
caseData.serviceTransport.length > 0) {
|
return true;
|
}
|
return false;
|
},
|
|
/** 选择案例 */
|
selectCase(caseData) {
|
if (this.hasTransport(caseData)) {
|
this.$message.warning("该案例已有转运单,请选择其他案例");
|
return;
|
}
|
|
this.selectedCase = caseData;
|
this.selectCaseOpen = false;
|
|
// 打开转运单编辑页面,并传入选中的案例
|
this.currentTransport = this.convertCaseToTransport(caseData);
|
this.isEditing = false;
|
this.editOpen = true;
|
},
|
|
/** 将案例信息转换为转运单格式 */
|
convertCaseToTransport(caseData) {
|
return {
|
caseNo: caseData.caseNo,
|
patName: caseData.name,
|
sex: caseData.sex,
|
age: caseData.age,
|
diagnosisname: caseData.diagnosisname,
|
treatmentHospitalName: caseData.treatmenthospitalname,
|
treatmentDeptName: caseData.treatmentdeptname,
|
// 其他字段可以根据需要从案例中获取
|
transportStartPlace: caseData.treatmenthospitalname || '',
|
contactPerson: caseData.coordinatorName || '',
|
transitStatus: 1, // 默认待转运
|
// 清空其他字段
|
id: undefined,
|
reportId: undefined,
|
transportStartTime: undefined,
|
doctor: undefined,
|
doctorPhone: undefined,
|
nurse: undefined,
|
nursePhone: undefined,
|
driver: undefined,
|
driverPhone: undefined,
|
icuDoctor: undefined,
|
icuDoctorPhone: undefined,
|
annexfilesList: [],
|
remark: undefined
|
};
|
},
|
|
/** 获取状态标签类型 */
|
getStatusTagType(transitStatus) {
|
const statusMap = {
|
1: "warning", // 待转运
|
2: "primary", // 转运中
|
3: "success", // 转运完成
|
4: "danger", // 转运取消
|
5: "info" // 暂存
|
};
|
return statusMap[transitStatus] || "info";
|
},
|
|
/** 获取状态文本 */
|
getStatusText(transitStatus) {
|
const statusMap = {
|
1: "待转运",
|
2: "转运中",
|
3: "转运完成",
|
4: "转运取消",
|
5: "暂存"
|
};
|
return statusMap[transitStatus] || "未知状态";
|
},
|
|
// 更新统计数据
|
updateStats() {
|
this.stats.totalTransports = this.transportList.length;
|
this.stats.pendingTransports = this.transportList.filter(
|
item => item.transitStatus === 1
|
).length;
|
this.stats.completedTransports = this.transportList.filter(
|
item => item.transitStatus === 3
|
).length;
|
},
|
|
// 多选框选中数据
|
handleSelectionChange(selection) {
|
this.ids = selection.map(item => item.reportId || item.id);
|
this.single = selection.length !== 1;
|
this.multiple = !selection.length;
|
},
|
|
/** 搜索按钮操作 */
|
handleQuery() {
|
this.queryParams.pageNum = 1;
|
this.getList();
|
},
|
|
/** 重置按钮操作 */
|
resetQuery() {
|
this.dateRange = [];
|
this.queryParams = {
|
pageNum: 1,
|
pageSize: 10,
|
caseNo: undefined,
|
patName: undefined,
|
transitStatus: undefined,
|
searchValue: undefined
|
};
|
this.getList();
|
},
|
|
/** 详情按钮操作 */
|
handleDetail(row) {
|
this.currentTransport = row;
|
this.detailTitle = `转运单详情 - ${row.reportId || row.id}`;
|
this.detailOpen = true;
|
},
|
|
/** 修改按钮操作 */
|
handleUpdate(row) {
|
this.currentTransport = row || {};
|
this.isEditing = true;
|
this.selectedCase = null; // 编辑时不传入案例信息
|
this.editOpen = true;
|
},
|
|
/** 新建转运单 */
|
handleAdd() {
|
// 打开案例选择弹框
|
this.selectCaseOpen = true;
|
this.selectedCase = null;
|
this.currentTransport = {};
|
this.resetCaseSearch(); // 重置并搜索案例
|
},
|
|
/** 修改弹框关闭处理 */
|
handleEditClose() {
|
this.editOpen = false;
|
this.currentTransport = {};
|
this.selectedCase = null;
|
},
|
|
/** 保存成功处理 */
|
handleSaveSuccess() {
|
this.getList(); // 重新加载列表
|
},
|
|
/** 开始转运操作 */
|
async handleStartTransport(row) {
|
this.currentTransport = row;
|
this.actionTitle = "开始转运";
|
this.actionText = "开始";
|
this.actionOpen = true;
|
},
|
|
/** 完成转运操作 */
|
async handleCompleteTransport(row) {
|
this.currentTransport = row;
|
this.actionTitle = "完成转运";
|
this.actionText = "完成";
|
this.actionOpen = true;
|
},
|
|
/** 确认操作 */
|
async confirmAction() {
|
try {
|
let requestData = {
|
id: this.currentTransport.id || this.currentTransport.reportId
|
};
|
|
if (this.actionText === "开始") {
|
requestData.transitStatus = 2; // 设置为转运中
|
} else if (this.actionText === "完成") {
|
requestData.transitStatus = 3; // 设置为转运完成
|
}
|
|
const response = await transportEdit(requestData);
|
|
if (response.code === 200) {
|
this.$modal.msgSuccess(`${this.actionText}转运成功`);
|
this.getList();
|
} else {
|
this.$modal.msgError(response.msg || `${this.actionText}转运失败`);
|
}
|
} catch (error) {
|
console.error(`${this.actionText}转运失败:`, error);
|
this.$modal.msgError("操作失败,请稍后重试");
|
}
|
this.actionOpen = false;
|
},
|
|
/** 删除按钮操作 */
|
async handleDelete(row) {
|
const ids = row.reportId || row.id || this.ids;
|
|
try {
|
await this.$modal.confirm(
|
'是否确认删除转运单编号为"' + ids + '"的数据项?'
|
);
|
|
const response = await transportDelete(ids);
|
|
if (response.code === 200) {
|
this.$modal.msgSuccess("删除成功");
|
this.getList();
|
} else {
|
this.$modal.msgError(response.msg || "删除失败");
|
}
|
} catch (error) {
|
if (error !== "cancel") {
|
console.error("删除失败:", error);
|
this.$modal.msgError("删除失败,请稍后重试");
|
}
|
}
|
},
|
|
/** 导出按钮操作 */
|
handleExport() {
|
this.download(
|
"system/transport/export",
|
{
|
...this.queryParams
|
},
|
`transport_${new Date().getTime()}.xlsx`
|
);
|
},
|
|
// 点击行选择案例
|
handleCaseSelect(row) {
|
this.selectCase(row);
|
}
|
}
|
};
|
</script>
|
|
<style scoped>
|
.case-select-container {
|
max-height: 600px;
|
overflow: auto;
|
}
|
|
.search-card {
|
margin-bottom: 20px;
|
}
|
.filter-card {
|
margin-bottom: 20px;
|
}
|
|
.stats-row {
|
margin-bottom: 20px;
|
}
|
|
.stats-card {
|
border-radius: 8px;
|
transition: all 0.3s ease;
|
}
|
|
.stats-card:hover {
|
transform: translateY(-2px);
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
}
|
|
.stats-card.total {
|
border-left: 4px solid #409eff;
|
}
|
|
.stats-card.pending {
|
border-left: 4px solid #e6a23c;
|
}
|
|
.stats-card.completed {
|
border-left: 4px solid #67c23a;
|
}
|
|
.stat-content {
|
display: flex;
|
align-items: center;
|
padding: 10px;
|
}
|
|
.stat-icon {
|
font-size: 40px;
|
margin-right: 15px;
|
}
|
|
.stat-info {
|
flex: 1;
|
}
|
|
.stat-count {
|
font-size: 28px;
|
font-weight: bold;
|
color: #303133;
|
margin-bottom: 5px;
|
}
|
|
.stat-label {
|
font-size: 14px;
|
color: #909399;
|
}
|
|
.donor-info {
|
text-align: center;
|
display: flex;
|
justify-content: center
|
}
|
|
.donor-name {
|
font-weight: 500;
|
margin-bottom: 4px;
|
}
|
|
.donor-details {
|
margin-left: 5px;
|
font-size: 16px;
|
color: #093ca4;
|
display: flex;
|
}
|
|
.mb8 {
|
margin-bottom: 8px;
|
}
|
|
.action-confirm {
|
text-align: center;
|
font-size: 16px;
|
padding: 20px 0;
|
}
|
</style>
|