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