| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="状态" prop="recordstate"> |
| | | <el-select v-model="queryParams.recordstate" placeholder="请选择状态" clearable size="small"> |
| | | <el-select |
| | | v-model="queryParams.recordstate" |
| | | placeholder="请选择状态" |
| | | clearable |
| | | size="small" |
| | | > |
| | | <el-option label="全部" value="" /> |
| | | <el-option label="待审核" value="0" /> |
| | | <el-option label="已审核" value="1" /> |
| | | <el-option label="维护中" value="0" /> |
| | | <el-option label="已完成" value="1" /> |
| | | <el-option label="已终止" value="99" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <!-- 新增搜索字段 --> |
| | | <el-form-item label="上报时间" prop="reportTimeRange"> |
| | | <el-date-picker |
| | | v-model="queryParams.reportTimeRange" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | value-format="yyyy-MM-dd" |
| | | size="small" |
| | | style="width: 240px;" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="首诊医院" prop="treatmenthospitalname"> |
| | | <el-input |
| | | v-model="queryParams.treatmenthospitalname" |
| | | placeholder="请输入首诊医院" |
| | | clearable |
| | | size="small" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="住院号" prop="hospitalNo"> |
| | | <el-input |
| | | v-model="queryParams.hospitalNo" |
| | | placeholder="请输入住院号" |
| | | clearable |
| | | size="small" |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-search" |
| | | size="mini" |
| | | @click="handleQuery" |
| | | >搜索</el-button |
| | | > |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" |
| | | >重置</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-card> |
| | |
| | | <div class="stat-icon">⏳</div> |
| | | <div class="stat-info"> |
| | | <div class="stat-count">{{ stats.pendingCount }}</div> |
| | | <div class="stat-label">待审核</div> |
| | | 维护中 |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | |
| | | <div class="stat-icon">✅</div> |
| | | <div class="stat-info"> |
| | | <div class="stat-count">{{ stats.approvedCount }}</div> |
| | | <div class="stat-label">已审核</div> |
| | | <div class="stat-label">已完成</div> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | |
| | | v-loading="loading" |
| | | :data="donatebaseinfoList" |
| | | border |
| | | :default-sort="{ prop: 'donatetime', order: 'descending' }" |
| | | :default-sort="{ prop: 'reporttime', order: 'descending' }" |
| | | style="width: 100%; margin-top: 20px;" |
| | | > |
| | | <el-table-column label="上报时间" align="center" prop="donatetime" width="110" fixed="left"> |
| | | <el-table-column |
| | | label="上报时间" |
| | | align="center" |
| | | prop="reporttime" |
| | | width="110" |
| | | fixed="left" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.donatetime, "{y}-{m}-{d}") }}</span> |
| | | <span>{{ parseTime(scope.row.reporttime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="进度" align="center" prop="coreteamassessconclusion" width="100" fixed="left"> |
| | | <el-table-column |
| | | label="捐献状态" |
| | | align="center" |
| | | prop="recordstate" |
| | | width="100" |
| | | fixed="left" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="getStatusTag(scope.row.recordstate)"> |
| | | {{ getStatusText(scope.row.recordstate) }} |
| | |
| | | |
| | | <el-table-column label="性别" align="center" prop="sex" width="80"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.sex === 1 ? '男' : '女' }}</span> |
| | | <span>{{ scope.row.sex === "1" ? "男" : "女" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="年龄" align="center" prop="age" width="80" /> |
| | | |
| | | <el-table-column label="证件号码" align="center" prop="idcardno" width="180" /> |
| | | |
| | | <el-table-column label="协调员" align="center" prop="reportername" width="100" /> |
| | | |
| | | <el-table-column label="治疗医院" align="center" prop="treatmenthospitalname" width="150" show-overflow-tooltip /> |
| | | |
| | | <el-table-column label="转为案例时间" align="center" prop="donatetime" width="110"> |
| | | <el-table-column label="血型" align="center" prop="bloodtype" width="80"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.donatetime, "{y}-{m}-{d}") }}</span> |
| | | <dict-tag |
| | | :options="dict.type.sys_BloodType" |
| | | :value="scope.row.bloodtype" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="传染病" |
| | | align="center" |
| | | prop="infectious" |
| | | width="180" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="首诊医院" |
| | | align="center" |
| | | prop="treatmenthospitalname" |
| | | width="150" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="协调员" |
| | | align="center" |
| | | prop="coordinatorName" |
| | | width="100" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="住院号" |
| | | align="center" |
| | | prop="hospitalNo" |
| | | width="120" |
| | | /> |
| | | |
| | | <!-- 第一次医学评估 --> |
| | | <el-table-column label="第一次评估结论" align="center" prop="coreteamassessconclusion" width="120"> |
| | | <el-table-column |
| | | label="评估状态" |
| | | align="center" |
| | | prop="assessState" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_BaseAssessConclusion" |
| | | :value="scope.row.coreteamassessconclusion" |
| | | :value="scope.row.assessState" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="第一次评估时间" align="center" prop="coreteamassesstime" width="110"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.coreteamassesstime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | <el-table-column |
| | | label="评估时间" |
| | | align="center" |
| | | prop="assessTime" |
| | | width="110" |
| | | > |
| | | <!-- <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.assessTime, "{y}-{m}-{d}") }}</span> |
| | | </template> --> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="亲属确认时间" |
| | | align="center" |
| | | prop="signDate" |
| | | width="110" |
| | | > |
| | | <!-- <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.signDate, "{y}-{m}-{d}") }}</span> |
| | | </template> --> |
| | | </el-table-column> |
| | | |
| | | <!-- 第二次医学评估 --> |
| | | <el-table-column label="第二次评估结论" align="center" prop="coreteamassessconclusion" width="120"> |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_BaseAssessConclusion" |
| | | :value="scope.row.coreteamassessconclusion" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="第二次评估时间" align="center" prop="coreteamassesstime" width="110"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.coreteamassesstime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="亲属确认时间" align="center" prop="signdate" width="110"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.signdate, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="伦理审查结论" align="center" prop="expertconclusion" width="120"> |
| | | <el-table-column |
| | | label="伦理审查结论" |
| | | align="center" |
| | | prop="expertConclusion" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_EthicalReview" |
| | | :value="scope.row.expertconclusion" |
| | | :value="scope.row.expertConclusion" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="伦理审查时间" align="center" prop="conclusiontime" width="110"> |
| | | <el-table-column |
| | | label="伦理审查时间" |
| | | align="center" |
| | | prop="expertTime" |
| | | width="110" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.conclusiontime, "{y}-{m}-{d}") }}</span> |
| | | <span>{{ parseTime(scope.row.expertTime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="器官分配数量" align="center" prop="organcount" width="100" /> |
| | | <el-table-column |
| | | label="器官分配数量" |
| | | align="center" |
| | | prop="organCount" |
| | | width="100" |
| | | /> |
| | | |
| | | <el-table-column label="获取见证时间" align="center" prop="operationbegtime" width="110"> |
| | | <el-table-column |
| | | label="获取见证时间" |
| | | align="center" |
| | | prop="operationBegTime" |
| | | width="110" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.operationbegtime, "{y}-{m}-{d}") }}</span> |
| | | <span>{{ |
| | | parseTime(scope.row.operationBegTime, "{y}-{m}-{d}") |
| | | }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="完成登记时间" align="center" prop="completetime" width="110"> |
| | | <el-table-column |
| | | label="完成登记时间" |
| | | align="center" |
| | | prop="completeTime" |
| | | width="110" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ parseTime(scope.row.completetime, "{y}-{m}-{d}") }}</span> |
| | | <span>{{ parseTime(scope.row.completeTime, "{y}-{m}-{d}") }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column label="捐献进度" align="center" prop="workflow" width="120" fixed="right"> |
| | | <!-- 捐献进度列 --> |
| | | <el-table-column |
| | | label="捐献进度" |
| | | align="center" |
| | | prop="recordstate" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div v-if="!scope.row.terminationCase"> |
| | | <div v-if="scope.row.terminationCase == 0"> |
| | | <dict-tag |
| | | :options="dict.type.sys_donornode" |
| | | :value="scope.row.workflow" |
| | | :value="scope.row.recordstate" |
| | | /> |
| | | </div> |
| | | <div v-else> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <!-- <el-table-column label="操作" align="center" width="120" fixed="right"> |
| | | <!-- 操作列:只保留终止和查看详情 --> |
| | | <el-table-column label="操作" align="center" width="200" fixed="right"> |
| | | <template slot-scope="scope"> |
| | | <el-button size="mini" type="text" @click="handleDetail(scope.row)" |
| | | >查看详情</el-button |
| | | > |
| | | <el-button |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-view" |
| | | @click="handleDetail(scope.row)" |
| | | >详情</el-button> |
| | | style="color: #f56c6c;" |
| | | @click="handleTerminate(scope.row)" |
| | | v-if=" |
| | | scope.row.terminationCase === 0 && scope.row.recordstate !== '99' |
| | | " |
| | | >终止</el-button |
| | | > |
| | | <el-button |
| | | v-if="scope.row.recordstate == 0" |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-check" |
| | | @click="handleApprove(scope.row)" |
| | | >审核</el-button> |
| | | style="color: #67c23a;" |
| | | @click="handleRestore(scope.row)" |
| | | v-if="scope.row.terminationCase === 1" |
| | | >恢复</el-button |
| | | > |
| | | </template> |
| | | </el-table-column> --> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <pagination |
| | |
| | | |
| | | <!-- 详情弹框 --> |
| | | <el-dialog |
| | | :title="`捐献者详情 - ${currentRecord.name}`" |
| | | :title="`捐献者详情 - ${currentRecord.name || ''}`" |
| | | :visible.sync="detailVisible" |
| | | width="1000px" |
| | | append-to-body |
| | |
| | | <donor-detail :donorData="currentRecord" @close="detailVisible = false" /> |
| | | </el-dialog> |
| | | |
| | | <!-- 审核弹框 --> |
| | | <el-dialog |
| | | title="捐献者审核" |
| | | :visible.sync="approveVisible" |
| | | width="500px" |
| | | append-to-body |
| | | > |
| | | <el-form ref="approveForm" :model="approveForm" label-width="100px"> |
| | | <el-form-item label="审核结果"> |
| | | <el-radio-group v-model="approveForm.approveResult"> |
| | | <el-radio label="1">通过</el-radio> |
| | | <el-radio label="2">驳回</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="审核意见"> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="approveForm.approveOpinion" |
| | | placeholder="请输入审核意见" |
| | | :rows="4" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer"> |
| | | <el-button @click="approveVisible = false">取消</el-button> |
| | | <el-button type="primary" @click="submitApprove">确定</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- 终止/恢复弹框组件 --> |
| | | <terminate-restore-modal |
| | | :current-record="currentRecord" |
| | | :visible="modalVisible" |
| | | :titles="modalTitles" |
| | | @update:visible="handleModalVisibleChange" |
| | | @operation-success="handleOperationSuccess" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | // 导入模拟数据生成工具 |
| | | import Mock from 'mockjs'; |
| | | import { courselist, terminateDonor } from "@/api/businessApi"; |
| | | import TerminateRestoreModal from "@/components/TerminateRestoreModal"; |
| | | |
| | | export default { |
| | | name: "Donatebaseinfo", |
| | | dicts: ["sys_donornode", "sys_EthicalReview", "sys_BaseAssessConclusion"], |
| | | components: { |
| | | TerminateRestoreModal |
| | | }, |
| | | dicts: ["sys_donornode",'sys_BloodType', "sys_EthicalReview", "sys_BaseAssessConclusion"], |
| | | data() { |
| | | return { |
| | | // 遮罩层 |
| | | loading: false, |
| | | // 显示搜索条件 |
| | | showSearch: true, |
| | |
| | | donatebaseinfoList: [], |
| | | // 详情弹框显示 |
| | | detailVisible: false, |
| | | // 审核弹框显示 |
| | | approveVisible: false, |
| | | // 当前操作记录 |
| | | currentRecord: {}, |
| | | // 统计数据 |
| | |
| | | pageSize: 10, |
| | | name: undefined, |
| | | idcardno: undefined, |
| | | recordstate: undefined |
| | | recordstate: undefined, |
| | | // 新增的搜索字段 |
| | | reportTimeRange: [], |
| | | treatmenthospitalname: undefined, |
| | | hospitalNo: undefined |
| | | }, |
| | | // 审核表单 |
| | | approveForm: { |
| | | approveResult: "1", |
| | | approveOpinion: "" |
| | | // 弹框显示状态 |
| | | modalVisible: { |
| | | terminate: false, |
| | | restore: false |
| | | }, |
| | | // 弹框标题 |
| | | modalTitles: { |
| | | terminate: "终止捐献进程", |
| | | restore: "恢复捐献进程" |
| | | } |
| | | }; |
| | | }, |
| | |
| | | this.getList(); |
| | | }, |
| | | methods: { |
| | | /** 生成模拟数据 */ |
| | | generateMockData() { |
| | | const mockTemplate = { |
| | | 'list|15-30': [{ |
| | | 'id|+1': 1001, |
| | | 'name': '@cname', |
| | | 'sex|1': [1, 2], // 1:男, 2:女 |
| | | 'age|18-65': 1, |
| | | 'idcardno': /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dX]$/, |
| | | 'reportername': '@cname', |
| | | 'treatmenthospitalname': '@ctitle(3, 5)医院', |
| | | 'donatetime': '@datetime("yyyy-MM-dd HH:mm:ss")', |
| | | 'coreteamassessconclusion|1': ['1', '2', '3'], // 评估结论 |
| | | 'coreteamassesstime': '@datetime("yyyy-MM-dd HH:mm:ss")', |
| | | 'signdate': '@datetime("yyyy-MM-dd HH:mm:ss")', |
| | | 'expertconclusion|1': ['1', '2', '3'], // 伦理审查结论 |
| | | 'conclusiontime': '@datetime("yyyy-MM-dd HH:mm:ss")', |
| | | 'organcount|0-5': 1, |
| | | 'operationbegtime': '@datetime("yyyy-MM-dd HH:mm:ss")', |
| | | 'completetime': '@datetime("yyyy-MM-dd HH:mm:ss")', |
| | | 'workflow|1': ['1', '2', '3', '4', '5'], // 工作流状态 |
| | | 'recordstate|1': ['0', '1', '99'], // 0:待审核, 1:已审核, 99:已终止 |
| | | 'terminationCase|1': [true, false] |
| | | }] |
| | | }; |
| | | |
| | | return Mock.mock(mockTemplate).list; |
| | | }, |
| | | |
| | | /** 查询捐献基础列表 */ |
| | | getList() { |
| | | /** 查询捐献基础列表 */ |
| | | async getList() { |
| | | this.loading = true; |
| | | try { |
| | | const response = await courselist(this.queryParams); |
| | | |
| | | // 模拟API调用延迟 |
| | | setTimeout(() => { |
| | | // 生成模拟数据 |
| | | const mockData = this.generateMockData(); |
| | | let realData = []; |
| | | realData = response.data.donatebaseinfoProgressDTOS; |
| | | this.total = response.total; |
| | | this.stats.pendingCount = response.data.terminationCase[0]; |
| | | this.stats.approvedCount = response.data.terminationCase[1]; |
| | | this.stats.terminatedCount = response.data.terminationCase[2]; |
| | | this.stats.totalCount = |
| | | response.total - response.data.terminationCase[2]; |
| | | |
| | | // 应用筛选条件 |
| | | let filteredData = mockData; |
| | | if (this.queryParams.name) { |
| | | filteredData = filteredData.filter(item => |
| | | item.name.includes(this.queryParams.name) |
| | | ); |
| | | this.allTableData = realData; |
| | | let filteredData = this.applyFrontendFilter(realData); |
| | | |
| | | if (!response.total && !response.data) { |
| | | const startIndex = |
| | | (this.queryParams.pageNum - 1) * this.queryParams.pageSize; |
| | | const endIndex = startIndex + this.queryParams.pageSize; |
| | | this.donatebaseinfoList = filteredData.slice(startIndex, endIndex); |
| | | this.total = filteredData.length; |
| | | } else { |
| | | this.donatebaseinfoList = filteredData; |
| | | } |
| | | if (this.queryParams.idcardno) { |
| | | filteredData = filteredData.filter(item => |
| | | item.idcardno.includes(this.queryParams.idcardno) |
| | | ); |
| | | } |
| | | if (this.queryParams.recordstate) { |
| | | filteredData = filteredData.filter(item => |
| | | item.recordstate === this.queryParams.recordstate |
| | | ); |
| | | } |
| | | |
| | | // 分页处理 |
| | | const startIndex = (this.queryParams.pageNum - 1) * this.queryParams.pageSize; |
| | | const endIndex = startIndex + this.queryParams.pageSize; |
| | | this.donatebaseinfoList = filteredData.slice(startIndex, endIndex); |
| | | this.total = filteredData.length; |
| | | |
| | | // 更新统计数据 |
| | | this.updateStats(mockData); |
| | | } catch (error) { |
| | | console.error("获取数据失败:", error); |
| | | this.$message.error("数据加载失败"); |
| | | this.donatebaseinfoList = []; |
| | | this.total = 0; |
| | | } finally { |
| | | this.loading = false; |
| | | }, 500); |
| | | } |
| | | }, |
| | | |
| | | /** 更新统计数据 */ |
| | | updateStats(data) { |
| | | this.stats.totalCount = data.length; |
| | | this.stats.pendingCount = data.filter(item => item.recordstate === '0').length; |
| | | this.stats.approvedCount = data.filter(item => item.recordstate === '1').length; |
| | | this.stats.terminatedCount = data.filter(item => item.recordstate === '99').length; |
| | | /** 应用前端筛选 */ |
| | | applyFrontendFilter(data) { |
| | | let filteredData = data; |
| | | |
| | | if (this.queryParams.name) { |
| | | filteredData = filteredData.filter( |
| | | item => item.name && item.name.includes(this.queryParams.name) |
| | | ); |
| | | } |
| | | |
| | | if (this.queryParams.idcardno) { |
| | | filteredData = filteredData.filter( |
| | | item => |
| | | item.idcardno && item.idcardno.includes(this.queryParams.idcardno) |
| | | ); |
| | | } |
| | | |
| | | if (this.queryParams.recordstate) { |
| | | filteredData = filteredData.filter( |
| | | item => item.recordstate === this.queryParams.recordstate |
| | | ); |
| | | } |
| | | |
| | | if (this.queryParams.treatmenthospitalname) { |
| | | filteredData = filteredData.filter( |
| | | item => |
| | | item.treatmenthospitalname && |
| | | item.treatmenthospitalname.includes( |
| | | this.queryParams.treatmenthospitalname |
| | | ) |
| | | ); |
| | | } |
| | | |
| | | if (this.queryParams.hospitalNo) { |
| | | filteredData = filteredData.filter( |
| | | item => |
| | | item.hospitalNo && |
| | | item.hospitalNo.includes(this.queryParams.hospitalNo) |
| | | ); |
| | | } |
| | | |
| | | if ( |
| | | this.queryParams.reportTimeRange && |
| | | this.queryParams.reportTimeRange.length === 2 |
| | | ) { |
| | | const [startTime, endTime] = this.queryParams.reportTimeRange; |
| | | filteredData = filteredData.filter(item => { |
| | | if (!item.reporttime) return false; |
| | | const reportDate = this.parseTime(item.reporttime, "{y}-{m}-{d}"); |
| | | return reportDate >= startTime && reportDate <= endTime; |
| | | }); |
| | | } |
| | | |
| | | return filteredData; |
| | | }, |
| | | |
| | | /** 获取状态标签样式 */ |
| | | getStatusTag(status) { |
| | | const statusMap = { |
| | | '0': 'warning', // 待审核 |
| | | '1': 'success', // 已审核 |
| | | '99': 'danger' // 已终止 |
| | | "0": "warning", // 维护中 |
| | | "1": "success", // 已完成 |
| | | "99": "danger" // 已终止 |
| | | }; |
| | | return statusMap[status] || 'info'; |
| | | return statusMap[status] || "info"; |
| | | }, |
| | | |
| | | /** 获取状态文本 */ |
| | | getStatusText(status) { |
| | | const textMap = { |
| | | '0': '待审核', |
| | | '1': '已审核', |
| | | '99': '已终止' |
| | | "0": "维护中", |
| | | "1": "已完成", |
| | | "99": "已终止" |
| | | }; |
| | | return textMap[status] || '未知状态'; |
| | | return textMap[status] || "未知状态"; |
| | | }, |
| | | |
| | | /** 时间格式化 */ |
| | | parseTime(time, format) { |
| | | if (!time) return '-'; |
| | | if (!time) return "-"; |
| | | const date = new Date(time); |
| | | const year = date.getFullYear(); |
| | | const month = (date.getMonth() + 1).toString().padStart(2, '0'); |
| | | const day = date.getDate().toString().padStart(2, '0'); |
| | | if (isNaN(date.getTime())) return time; |
| | | |
| | | if (format === '{y}-{m}-{d}') { |
| | | const year = date.getFullYear(); |
| | | const month = (date.getMonth() + 1).toString().padStart(2, "0"); |
| | | const day = date |
| | | .getDate() |
| | | .toString() |
| | | .padStart(2, "0"); |
| | | |
| | | if (format === "{y}-{m}-{d}") { |
| | | return `${year}-${month}-${day}`; |
| | | } |
| | | return time; |
| | |
| | | |
| | | /** 重置按钮操作 */ |
| | | resetQuery() { |
| | | this.queryParams = { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | name: undefined, |
| | | idcardno: undefined, |
| | | recordstate: undefined |
| | | }; |
| | | this.$refs.queryForm.resetFields(); |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | |
| | |
| | | this.detailVisible = true; |
| | | }, |
| | | |
| | | /** 审核操作 */ |
| | | handleApprove(row) { |
| | | /** 终止操作 */ |
| | | handleTerminate(row) { |
| | | this.currentRecord = { ...row }; |
| | | this.approveForm = { |
| | | approveResult: "1", |
| | | approveOpinion: "" |
| | | }; |
| | | this.approveVisible = true; |
| | | this.modalVisible = { ...this.modalVisible, terminate: true }; |
| | | }, |
| | | |
| | | /** 提交审核 */ |
| | | submitApprove() { |
| | | // 模拟审核提交 |
| | | const index = this.donatebaseinfoList.findIndex(item => item.id === this.currentRecord.id); |
| | | if (index !== -1) { |
| | | this.donatebaseinfoList[index].recordstate = this.approveForm.approveResult; |
| | | this.$message.success('审核成功'); |
| | | this.approveVisible = false; |
| | | this.getList(); // 重新加载更新统计 |
| | | } |
| | | /** 恢复操作 */ |
| | | handleRestore(row) { |
| | | this.currentRecord = { ...row }; |
| | | this.modalVisible = { ...this.modalVisible, restore: true }; |
| | | }, |
| | | |
| | | /** 处理弹框显示状态变化 */ |
| | | handleModalVisibleChange(newVisible) { |
| | | this.modalVisible = { ...newVisible }; |
| | | }, |
| | | |
| | | /** 处理操作成功 */ |
| | | handleOperationSuccess({ type, record }) { |
| | | console.log(`${type}操作成功:`, record); |
| | | this.getList(); // 重新加载数据 |
| | | } |
| | | } |
| | | }; |
| | |
| | | } |
| | | |
| | | .stats-card.total { |
| | | border-left: 4px solid #409EFF; |
| | | border-left: 4px solid #409eff; |
| | | } |
| | | |
| | | .stats-card.pending { |
| | | border-left: 4px solid #E6A23C; |
| | | border-left: 4px solid #e6a23c; |
| | | } |
| | | |
| | | .stats-card.approved { |
| | | border-left: 4px solid #67C23A; |
| | | border-left: 4px solid #67c23a; |
| | | } |
| | | |
| | | .stats-card.terminated { |
| | | border-left: 4px solid #F56C6C; |
| | | border-left: 4px solid #f56c6c; |
| | | } |
| | | |
| | | .stat-content { |
| | |
| | | background-color: #f5f7fa; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | /* 操作按钮样式 */ |
| | | ::v-deep .el-button--text { |
| | | padding: 4px 8px; |
| | | } |
| | | </style> |