From 3873d3c350c8c1edd7bfdc8afe08c9e78f56d968 Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期四, 22 十月 2026 23:24:20 +0800
Subject: [PATCH] 调整费用申请模式
---
src/views/project/register/index.vue | 351 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 351 insertions(+), 0 deletions(-)
diff --git a/src/views/project/register/index.vue b/src/views/project/register/index.vue
new file mode 100644
index 0000000..cfac46a
--- /dev/null
+++ b/src/views/project/register/index.vue
@@ -0,0 +1,351 @@
+<template>
+ <div class="app-container">
+ <!-- 鏌ヨ鏉′欢锛氭寜閽揣璺熸潯浠朵箣鍚庯紙涓庢渚嬭瘎浼伴〉椋庢牸涓�鑷达級 -->
+ <el-form
+ class="opo-query-form"
+ :model="queryParams"
+ ref="queryForm"
+ :inline="true"
+ v-show="showSearch"
+ label-width="82px"
+ >
+ <el-row>
+ <el-col :span="6">
+ <el-form-item label="鎹愮尞鑰�" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ placeholder="璇疯緭鍏ユ崘鐚�呭鍚�"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="璇佷欢鍙风爜" prop="idcardno">
+ <el-input
+ v-model="queryParams.idcardno"
+ placeholder="璇疯緭鍏ヨ瘉浠跺彿鐮�"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="鍣ㄥ畼绫诲埆" prop="organno">
+ <el-select
+ v-model="queryParams.organno"
+ placeholder="璇烽�夋嫨鍣ㄥ畼绫诲埆"
+ clearable
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="dict in dict.type.sys_Organ"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="鑾峰彇鐘舵��" prop="organstate">
+ <el-select
+ v-model="queryParams.organstate"
+ placeholder="璇烽�夋嫨鑾峰彇鐘舵��"
+ clearable
+ size="small"
+ style="width: 100%"
+ >
+ <el-option
+ v-for="dict in dict.type.sys_organstate"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="6">
+ <el-form-item label="鍣ㄥ畼缂栧彿" prop="organnumber">
+ <el-input
+ v-model="queryParams.organnumber"
+ placeholder="璇疯緭鍏ュ櫒瀹樼紪鍙�"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="绉绘鏈烘瀯" prop="transplanthospitalname">
+ <el-input
+ v-model="queryParams.transplanthospitalname"
+ placeholder="璇疯緭鍏ョЩ妞嶆満鏋勫悕绉�"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label="绉绘浜�" prop="acceptname">
+ <el-input
+ v-model="queryParams.acceptname"
+ placeholder="璇疯緭鍏ョЩ妞嶄汉濮撳悕"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item label-width="10px">
+ <el-button type="primary" icon="el-icon-search" size="small" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="small" @click="resetQuery">閲嶇疆</el-button>
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="small"
+ :loading="exportLoading"
+ @click="handleExport"
+ v-hasPermi="['project:register:export']"
+ >瀵煎嚭</el-button>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row class="mb8">
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+ </el-form>
+
+ <el-table v-loading="loading" :data="registerList" :border="true">
+ <el-table-column label="鎹愮尞鑰呯紪鍙�" align="center" prop="donorno" width="200" show-overflow-tooltip />
+ <el-table-column label="濮撳悕" align="center" prop="name" width="90" show-overflow-tooltip />
+ <el-table-column label="鎬у埆" align="center" prop="sex" width="70">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
+ </template>
+ </el-table-column>
+ <el-table-column label="骞撮緞" align="center" width="80">
+ <template slot-scope="scope">
+ <span v-if="scope.row.age">{{ scope.row.age }}{{ scope.row.ageunit }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍣ㄥ畼绫诲埆" align="center" prop="organname" width="90" show-overflow-tooltip />
+ <el-table-column label="鍣ㄥ畼缂栧彿" align="center" prop="organnumber" width="130" show-overflow-tooltip />
+ <el-table-column label="鑾峰彇鐘舵��" align="center" prop="organstate" width="100">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.sys_organstate" :value="scope.row.organstate" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鑾峰彇鏃堕棿" align="center" prop="organgettime" width="150">
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.organgettime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鑾峰彇鏈烘瀯" align="center" prop="gainhospitalname" min-width="180" show-overflow-tooltip />
+ <el-table-column label="绉绘鏈烘瀯" align="center" prop="transplanthospitalname" min-width="180" show-overflow-tooltip />
+ <el-table-column label="绉绘鍖荤敓" align="center" prop="transplantdoct" width="100" show-overflow-tooltip />
+ <el-table-column label="绉绘鏃堕棿" align="center" prop="transplanttime" width="150">
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.transplanttime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" align="center" width="90" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleDetail(scope.row)"
+ v-hasPermi="['project:register:query']"
+ >璇︽儏</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="鍣ㄥ畼鍘诲璇︽儏" :visible.sync="open" width="900px" append-to-body>
+ <div v-loading="detailLoading" class="register-detail">
+ <el-divider content-position="left">鎹愮尞鑰呬俊鎭�</el-divider>
+ <el-descriptions :column="3" size="small" border>
+ <el-descriptions-item label="濮撳悕">{{ detail.name }}</el-descriptions-item>
+ <el-descriptions-item label="鎬у埆">{{ dictLabel("sys_user_sex", detail.sex) }}</el-descriptions-item>
+ <el-descriptions-item label="骞撮緞">
+ <span v-if="detail.age">{{ detail.age }}{{ detail.ageunit }}</span>
+ </el-descriptions-item>
+ <el-descriptions-item label="璇佷欢鍙风爜">{{ detail.idcardno }}</el-descriptions-item>
+ <el-descriptions-item label="鍑虹敓鏃ユ湡">{{ parseTime(detail.birthday, "{y}-{m}-{d}") }}</el-descriptions-item>
+ <el-descriptions-item label="鑱旂郴鐢佃瘽">{{ detail.phone }}</el-descriptions-item>
+ <el-descriptions-item label="鐜颁綇鍦板潃" :span="3">{{ detail.residenceaddress }}</el-descriptions-item>
+ <el-descriptions-item label="鎹愮尞鑰呯紪鍙�">{{ detail.donorno }}</el-descriptions-item>
+ </el-descriptions>
+
+ <el-divider content-position="left">鍣ㄥ畼淇℃伅</el-divider>
+ <el-descriptions :column="3" size="small" border>
+ <el-descriptions-item label="鍣ㄥ畼绫诲埆">{{ detail.organname }}</el-descriptions-item>
+ <el-descriptions-item label="鍣ㄥ畼缂栧彿">{{ detail.organnumber }}</el-descriptions-item>
+ <el-descriptions-item label="鑾峰彇鐘舵��">
+ {{ dictLabel("sys_organstate", detail.organstate) }}
+ </el-descriptions-item>
+ <el-descriptions-item label="鑾峰彇鏃堕棿">{{ parseTime(detail.organgettime) }}</el-descriptions-item>
+ <el-descriptions-item label="鑾峰彇鍖荤敓" :span="2">{{ detail.organgetdoct }}</el-descriptions-item>
+ <el-descriptions-item label="鑾峰彇鏈烘瀯" :span="2">{{ detail.gainhospitalname }}</el-descriptions-item>
+ <el-descriptions-item label="绉绘鏈烘瀯" :span="2">{{ detail.transplanthospitalname }}</el-descriptions-item>
+ <el-descriptions-item label="绉绘鍖荤敓">{{ detail.transplantdoct }}</el-descriptions-item>
+ <el-descriptions-item label="绉绘鏃堕棿" :span="2">{{ parseTime(detail.transplanttime) }}</el-descriptions-item>
+ </el-descriptions>
+
+ <el-divider content-position="left">鐢宠涓庡鏍�</el-divider>
+ <el-descriptions :column="3" size="small" border>
+ <el-descriptions-item label="鐢宠浜�">{{ detail.applicantusername }}</el-descriptions-item>
+ <el-descriptions-item label="鐢宠鏃堕棿" :span="2">{{ parseTime(detail.applicanttime) }}</el-descriptions-item>
+ <el-descriptions-item label="瀹℃牳浜�">{{ detail.checkusername }}</el-descriptions-item>
+ <el-descriptions-item label="瀹℃牳鏃堕棿" :span="2">{{ parseTime(detail.checktime) }}</el-descriptions-item>
+ <el-descriptions-item label="瀹℃牳鎰忚" :span="3">{{ detail.checksuggestion }}</el-descriptions-item>
+ </el-descriptions>
+
+ <el-divider content-position="left">绉绘浜轰俊鎭�</el-divider>
+ <el-descriptions :column="3" size="small" border>
+ <el-descriptions-item label="濮撳悕">{{ detail.acceptname }}</el-descriptions-item>
+ <el-descriptions-item label="鎬у埆">{{ dictLabel("sys_user_sex", detail.acceptsex) }}</el-descriptions-item>
+ <el-descriptions-item label="骞撮緞">
+ <span v-if="detail.acceptage">{{ detail.acceptage }}{{ detail.acceptageunit }}</span>
+ </el-descriptions-item>
+ <el-descriptions-item label="璇佷欢鍙风爜">{{ detail.acceptidcard }}</el-descriptions-item>
+ <el-descriptions-item label="鑱旂郴鐢佃瘽" :span="2">{{ detail.acceptphone }}</el-descriptions-item>
+ <el-descriptions-item label="鐜颁綇鍦板潃" :span="3">{{ detail.acceptresidenceaddress }}</el-descriptions-item>
+ </el-descriptions>
+ </div>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="open = false">鍏� 闂�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { listRegister, getRegister, exportRegister } from "@/api/project/register";
+
+export default {
+ name: "Register",
+ dicts: ["sys_Organ", "sys_organstate", "sys_user_sex", "sys_AgeUnit"],
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 璇︽儏鍔犺浇
+ detailLoading: false,
+ // 瀵煎嚭閬僵灞�
+ exportLoading: false,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 鍣ㄥ畼鍘诲鍒楄〃
+ registerList: [],
+ // 璇︽儏寮圭獥
+ open: false,
+ detail: {},
+ // 鏌ヨ鍙傛暟锛堝潎闇�涓庡悗绔� queryList / Mapper 鏀寔鐨勬潯浠朵竴鑷达級
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ name: null,
+ idcardno: null,
+ organno: null,
+ organstate: null,
+ organnumber: null,
+ transplanthospitalname: null,
+ acceptname: null
+ }
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ鍣ㄥ畼鍘诲鍒楄〃 */
+ getList() {
+ this.loading = true;
+ listRegister(this.queryParams).then(response => {
+ this.registerList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ /** 璇︽儏鎸夐挳鎿嶄綔 */
+ handleDetail(row) {
+ this.detail = {};
+ this.open = true;
+ this.detailLoading = true;
+ getRegister(row.id).then(response => {
+ this.detail = response.data || {};
+ this.detailLoading = false;
+ }).catch(() => {
+ this.detailLoading = false;
+ });
+ },
+ /** 瀛楀吀缈昏瘧锛堟ā鏉块噷鐢紝閬垮厤澶氫釜 dict-tag 宓屽锛� */
+ dictLabel(type, value) {
+ const list = this.dict.type[type] || [];
+ const item = list.find(d => String(d.value) === String(value));
+ return item ? item.label : value;
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.$modal
+ .confirm("鏄惁纭瀵煎嚭鍣ㄥ畼鍘诲鏁版嵁锛�")
+ .then(() => {
+ this.exportLoading = true;
+ return exportRegister(this.queryParams);
+ })
+ .then(response => {
+ this.$download.name(response.msg);
+ this.exportLoading = false;
+ })
+ .catch(() => {
+ this.exportLoading = false;
+ });
+ }
+ }
+};
+</script>
+
+<style scoped>
+.register-detail >>> .el-divider--horizontal {
+ margin: 12px 0 14px;
+}
+.register-detail >>> .el-divider__text {
+ color: var(--opo-primary, #0e768f);
+ font-size: var(--opo-font-size-sm, 14px);
+}
+.register-detail >>> .el-descriptions-item__label {
+ color: var(--opo-text-secondary, #6b7280);
+ width: 90px;
+}
+</style>
--
Gitblit v1.9.3