From c4599aa279fd2f90b741608392e056fbae2282d5 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期四, 20 八月 2026 17:16:54 +0800
Subject: [PATCH] 各表单布局调整
---
src/views/business/course/components/OrganAllocationStage.vue | 426 +++++------------------------------------------------
1 files changed, 42 insertions(+), 384 deletions(-)
diff --git a/src/views/business/course/components/OrganAllocationStage.vue b/src/views/business/course/components/OrganAllocationStage.vue
index 4046433..384a886 100644
--- a/src/views/business/course/components/OrganAllocationStage.vue
+++ b/src/views/business/course/components/OrganAllocationStage.vue
@@ -6,44 +6,11 @@
<span class="detail-title">鍣ㄥ畼鍒嗛厤鍩烘湰淇℃伅</span>
</div>
- <el-form :model="form" ref="form" :rules="rules" label-width="120px">
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鍒嗛厤鐘舵��" prop="allocationStatus">
- <el-select
- v-model="form.allocationStatus"
- placeholder="璇烽�夋嫨鍒嗛厤鐘舵��"
- >
- <el-option
- v-for="dict in dict.type.organ_allocation_status || []"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍒嗛厤鏃堕棿" prop="allocationTime">
- <el-date-picker
- v-model="form.allocationTime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- style="width: 100%"
- :disabled="form.allocationStatus == '1'"
- />
- </el-form-item>
- </el-col>
- </el-row>
-
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="璐熻矗浜�" prop="registrationName">
- <el-input v-model="form.registrationName" />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
+ <el-descriptions title="鍩烘湰淇℃伅" :column="descriptionColumn" border size="small">
+ <el-descriptions-item label="鍒嗛厤鐘舵��">{{ selectDictLabel(dict.type.organ_allocation_status, form.allocationStatus) }}</el-descriptions-item>
+ <el-descriptions-item label="鍒嗛厤鏃堕棿">{{ form.allocationTime || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="璐熻矗浜�">{{ form.registrationName || '-' }}</el-descriptions-item>
+ </el-descriptions>
</el-card>
<!-- 鍣ㄥ畼鍒嗛厤璁板綍閮ㄥ垎 -->
@@ -58,49 +25,24 @@
</div>
</div>
- <el-form
- ref="allocationForm"
- :rules="allocationRules"
- :model="allocationData"
- label-position="right"
- >
- <el-row>
- <el-col>
- <el-form-item label-width="100px" label="鍒嗛厤鍣ㄥ畼">
- <el-checkbox-group
- v-model="selectedOrgans"
- @change="handleOrganSelectionChange"
- >
- <el-checkbox
- v-for="dict in dict.type.sys_Organ || []"
- :key="dict.value"
- :label="dict.value"
- :disabled="form.allocationStatus == '1'"
- >
- {{ dict.label }}
- </el-checkbox>
- </el-checkbox-group>
- <el-input
- v-if="showOtherInput"
- v-model="otherOrganInput"
- placeholder="璇疯緭鍏ュ叾浠栧櫒瀹樺悕绉�"
- style="margin-top: 10px; width: 300px;"
- :disabled="form.allocationStatus == '1'"
- />
- </el-form-item>
- </el-col>
- </el-row>
+ <el-descriptions title="鍒嗛厤鍣ㄥ畼" :column="1" border size="small" style="margin-bottom: 16px;">
+ <el-descriptions-item label="鍒嗛厤鍣ㄥ畼">
+ <template v-if="selectedOrgans && selectedOrgans.length">
+ <span v-for="(v, i) in selectedOrgans" :key="v">
+ {{ v === 'C01' && otherOrganInput ? '鍏朵粬(' + otherOrganInput + ')' : getOrganLabel(v) }}<span v-if="i < selectedOrgans.length - 1">銆�</span>
+ </span>
+ </template>
+ <template v-else>-</template>
+ </el-descriptions-item>
+ </el-descriptions>
- <el-row>
- <el-col>
- <el-form-item>
- <el-table
- :data="displayOrgans"
- v-loading="loading"
- border
- style="width: 100%"
- :row-class-name="getOrganRowClassName"
- >
+ <el-table
+ :data="displayOrgans"
+ v-loading="loading"
+ border
+ style="width: 100%"
+ :row-class-name="getOrganRowClassName"
+ >
<el-table-column
label="搴忓彿"
type="index"
@@ -133,127 +75,36 @@
align="center"
width="120"
prop="organname"
- >
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.organname"
- placeholder="鍣ㄥ畼鍚嶇О"
- :disabled="true"
- />
- </template>
- </el-table-column>
-
- <!-- <el-table-column
- label="鍒嗛厤绯荤粺缂栧彿"
- align="center"
- width="150"
- prop="caseno"
- >
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.caseno"
- placeholder="鍒嗛厤绯荤粺缂栧彿"
- :disabled="
- form.allocationStatus == '1' ||
- scope.row.allocationstatus == '3'
- "
- />
- </template>
- </el-table-column> -->
+ show-overflow-tooltip
+ />
<el-table-column
label="鍒嗛厤寮�濮嬫椂闂�"
align="center"
width="180"
prop="applicanttime"
- >
- <template slot-scope="scope">
- <el-date-picker
- clearable
- size="small"
- style="width: 100%"
- v-model="scope.row.applicanttime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="閫夋嫨寮�濮嬫帴鏀舵椂闂�"
- :disabled="
- form.allocationStatus == '1' ||
- scope.row.allocationstatus == '3'
- "
- />
- </template>
- </el-table-column>
+ />
<el-table-column
label="鍒嗛厤鎺ユ敹鏃堕棿"
align="center"
width="180"
prop="organgettime"
- >
- <template slot-scope="scope">
- <el-date-picker
- clearable
- size="small"
- style="width: 100%"
- v-model="scope.row.organgettime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="閫夋嫨鍒嗛厤鎺ユ敹鏃堕棿"
- :disabled="
- form.allocationStatus == '1' ||
- scope.row.allocationstatus == '3'
- "
- />
- </template>
- </el-table-column>
+ />
<el-table-column
label="鍙椾綋濮撴皬"
align="center"
width="120"
prop="name"
- >
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.name"
- placeholder="鍙椾綋濮撴皬"
- :disabled="
- form.allocationStatus == '1' ||
- scope.row.allocationstatus == '3'
- "
- />
- </template>
- </el-table-column>
+ />
<el-table-column
label="绉绘鍖婚櫌"
align="center"
width="200"
prop="transplanthospitalname"
- >
- <template slot-scope="scope">
- <el-autocomplete
- v-model="scope.row.transplanthospitalname"
- :fetch-suggestions="queryHospitalSearch"
- placeholder="璇烽�夋嫨鎴栬緭鍏ョЩ妞嶅尰闄�"
- style="width: 100%"
- clearable
- ></el-autocomplete>
- </template>
- <!-- <template slot-scope="scope">
- <el-select
- v-model="scope.row.transplanthospitalname"
- placeholder="璇烽�夋嫨绉绘鍖婚櫌"
- style="width: 100%"
- >
- <el-option
- v-for="dict in dict.type.Geta_hospital"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- ></el-option>
- </el-select>
- </template> -->
- </el-table-column>
+ show-overflow-tooltip
+ />
<!-- 淇敼template涓殑璇存槑鍒� -->
<el-table-column
@@ -264,16 +115,7 @@
>
<template slot-scope="scope">
<div v-if="scope.row.allocationstatus != '3'">
- <el-input
- type="textarea"
- clearable
- v-model="scope.row.reallocationreason"
- placeholder="璇疯緭鍏ヨ鏄�"
- :disabled="
- form.allocationStatus == '1' ||
- scope.row.allocationstatus == '3'
- "
- />
+ <span>{{ scope.row.reallocationreason || '-' }}</span>
</div>
<div v-else>
<!-- 閲嶅垎閰嶈褰曪細鏄剧ず璇︾粏鏌ョ湅鎸夐挳 -->
@@ -311,102 +153,11 @@
</template>
</el-table-column>
- <el-table-column
- label="鎿嶄綔"
- align="center"
- width="120"
- class-name="small-padding fixed-width"
- v-if="form.allocationStatus !== '1'"
- fixed="right"
- >
- <template slot-scope="scope">
- <el-button
- size="mini"
- type="text"
- icon="el-icon-copy-document"
- @click="handleRedistribution(scope.row)"
- :disabled="scope.row.allocationstatus == '3'"
- style="color: #e6a23c;"
- >
- {{
- scope.row.allocationstatus == "3"
- ? "宸查噸鍒嗛厤"
- : "閲嶅垎閰�"
- }}
- </el-button>
- <el-button
- v-if="scope.row.allocationstatus != '3'"
- size="mini"
- type="text"
- icon="el-icon-delete"
- @click="handleInvalidate(scope.row)"
- :disabled="
- scope.row.allocationstatus == '3' ||
- scope.row.allocationstatus == '2'
- "
- style="color: #f56c6c;"
- >
- {{
- scope.row.allocationstatus == "2" ? "宸蹭綔搴�" : "浣滃簾"
- }}
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-form-item>
- </el-col>
- </el-row>
+ </el-table>
- <!-- 鍒嗛厤缁熻淇℃伅 -->
- <!-- <div
- class="allocation-stats"
- v-if="
- allocationData.serviceDonateorganList &&
- allocationData.serviceDonateorganList.length > 0
- "
- >
- <el-row :gutter="20">
- <el-col :span="6">
- <div class="stat-item">
- <span class="stat-label">宸插垎閰嶅櫒瀹�:</span>
- <span class="stat-value"
- >{{ allocationData.serviceDonateorganList.length }} 涓�</span
- >
- </div>
- </el-col>
- <el-col :span="6">
- <div class="stat-item">
- <span class="stat-label">寰呭鏍�:</span>
- <span class="stat-value">{{ pendingReviewCount }} 涓�</span>
- </div>
- </el-col>
- <el-col :span="6">
- <div class="stat-item">
- <span class="stat-label">娑夊強鍖婚櫌:</span>
- <span class="stat-value">{{ uniqueHospitals }} 瀹�</span>
- </div>
- </el-col>
- <el-col :span="6">
- <div class="stat-item">
- <span class="stat-label">閲嶅垎閰�:</span>
- <span class="stat-value">{{ redistributedCount }} 涓�</span>
- </div>
- </el-col>
- </el-row>
- </div> -->
-
- <div
- v-if="
- !allocationData.serviceDonateorganList ||
- allocationData.serviceDonateorganList.length == 0
- "
- class="empty-allocation"
- >
- <el-empty description="鏆傛棤鍒嗛厤璁板綍" :image-size="80">
- <span>璇峰厛閫夋嫨瑕佸垎閰嶇殑鍣ㄥ畼</span>
- </el-empty>
- </div>
- </el-form>
+ <div v-if="!displayOrgans.length" class="empty-allocation">
+ <el-empty description="鏆傛棤鍒嗛厤璁板綍" :image-size="80" />
+ </div>
</el-card>
<!-- 闄勪欢绠$悊閮ㄥ垎浼樺寲 -->
@@ -414,23 +165,7 @@
<div class="attachment-header">
<i class="el-icon-paperclip"></i>
<span class="attachment-title">鐩稿叧闄勪欢</span>
- <span class="attachment-tip"
- >鏀寔涓婁紶鍣ㄥ畼鍒嗛厤鐩稿叧鏂囦欢 (鏈�澶歿{ attachmentLimit }}涓�)</span
- >
</div>
-
- <!-- 浣跨敤 UploadAttachment 缁勪欢 -->
- <UploadAttachment
- ref="uploadAttachment"
- :file-list="attachmentFileList"
- :limit="attachmentLimit"
- :accept="attachmentAccept"
- :multiple="true"
- @change="handleAttachmentChange"
- @upload-success="handleUploadSuccess"
- @upload-error="handleUploadError"
- @remove="handleAttachmentRemove"
- />
<!-- 闄勪欢鍒楄〃灞曠ず -->
<div class="attachment-list" v-if="attachments && attachments.length > 0">
@@ -462,7 +197,7 @@
<span>{{ formatFileSize(scope.row.fileSize) }}</span>
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" width="280" fixed="right">
+ <el-table-column label="鎿嶄綔" width="180" fixed="right">
<template slot-scope="scope">
<el-button
size="mini"
@@ -479,92 +214,15 @@
>
涓嬭浇
</el-button>
- <el-button
- size="mini"
- type="danger"
- @click="handleRemoveAttachment(scope.$index)"
- >
- 鍒犻櫎
- </el-button>
</template>
</el-table-column>
</el-table>
</div>
- </el-card>
- <div style="text-align: center; margin: 30px 0;">
- <el-button type="primary" @click="handleSave" :loading="saveLoading">
- 淇濆瓨
- </el-button>
- <el-button
- type="success"
- @click="handleConfirmAllocation"
- :disabled="form.allocationStatus == '1'"
- :loading="confirmLoading"
- >
- 纭鍒嗛厤
- </el-button>
- </div>
- <!-- 閲嶅垎閰嶅璇濇 -->
- <el-dialog
- title="鍣ㄥ畼閲嶅垎閰�"
- :visible.sync="redistributionDialogVisible"
- width="500px"
- @close="handleRedistributionDialogClose"
- >
- <el-form
- :model="redistributionForm"
- :rules="redistributionRules"
- ref="redistributionFormRef"
- label-width="100px"
- >
- <el-form-item label="鍘熷櫒瀹樹俊鎭�">
- <el-input v-model="redistributionForm.organname" readonly />
- </el-form-item>
- <el-form-item label="閲嶅垎閰嶅師鍥�" prop="reason" required>
- <el-input
- type="textarea"
- :rows="4"
- v-model="redistributionForm.reason"
- placeholder="璇疯緭鍏ラ噸鍒嗛厤鍘熷洜"
- />
- </el-form-item>
- <el-form-item label="閲嶅垎閰嶆椂闂�" prop="redistributionTime" required>
- <el-date-picker
- v-model="redistributionForm.redistributionTime"
- type="datetime"
- placeholder="璇烽�夋嫨閲嶅垎閰嶆椂闂�"
- value-format="yyyy-MM-dd HH:mm:ss"
- style="width: 100%"
- />
- </el-form-item>
- <el-form-item label="閲嶅垎閰嶉檮浠�">
- <UploadAttachment
- ref="redistributionAttachmentUpload"
- :file-list="redistributionAttachmentList"
- :limit="5"
- :accept="attachmentAccept"
- :multiple="true"
- @change="handleRedistributionChange"
- @upload-success="handleRedistributionUploadSuccess"
- @upload-error="handleRedistributionUploadError"
- @remove="handleRedistributionAttachmentRemove"
- />
- <div style="margin-top: 5px; font-size: 12px; color: #999;">
- 鏀寔涓婁紶閲嶅垎閰嶇浉鍏虫枃浠� (鏈�澶�5涓�)
- </div>
- </el-form-item>
- </el-form>
- <div slot="footer">
- <el-button @click="redistributionDialogVisible = false">鍙栨秷</el-button>
- <el-button
- type="primary"
- @click="handleRedistributionConfirm"
- :loading="redistributionLoading"
- >
- 纭閲嶅垎閰�
- </el-button>
+
+ <div v-else class="empty-attachment">
+ <el-empty description="鏆傛棤闄勪欢" :image-size="80" />
</div>
- </el-dialog>
+ </el-card>
<!-- 鍦╰emplate涓坊鍔犻噸鍒嗛厤璇︽儏寮圭獥 -->
<el-dialog
title="閲嶅垎閰嶈鎯�"
@@ -574,7 +232,7 @@
<div v-loading="redistributionDetailLoading">
<div v-if="currentRedistributionDetail" style="padding: 20px;">
<!-- 鍩烘湰淇℃伅 -->
- <el-descriptions title="閲嶅垎閰嶄俊鎭�" :column="2" border>
+ <el-descriptions title="閲嶅垎閰嶄俊鎭�" :column="descriptionColumn" border size="small">
<el-descriptions-item label="鍣ㄥ畼鍚嶇О">
{{ currentRedistributionDetail.organname || "-" }}
</el-descriptions-item>
@@ -709,20 +367,20 @@
allocationedit,
donateorganBaseinfoInfo
} from "@/api/businessApi";
-import UploadAttachment from "@/components/UploadAttachment";
import FilePreviewDialog from "@/components/FilePreviewDialog";
import OrgSelecter from "@/views/project/components/orgselect";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import dayjs from "dayjs";
+import readonlyDescriptionsMixin from "./readonlyDescriptionsMixin";
export default {
name: "OrganAllocationDetail",
components: {
- UploadAttachment,
OrgSelecter,
FilePreviewDialog,
CaseBasicInfo
},
+ mixins: [readonlyDescriptionsMixin],
dicts: [
"sys_BloodType",
"sys_DonationCategory",
--
Gitblit v1.9.3