From ead85633109bcb3cc8d8b3c6804c280dd6ee1e5d Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 06 一月 2026 11:38:51 +0800
Subject: [PATCH] 省人民维护

---
 /dev/null                                        |    0 
 src/views/project/donationdetails/index.vue      |  360 +++++++++++++++++++++++++++++++-------------
 vue.config.js                                    |    4 
 opo-srm.zip                                      |    0 
 src/views/project/components/orgselect/index.vue |  114 +++++++++----
 5 files changed, 332 insertions(+), 146 deletions(-)

diff --git a/OPO.zip b/OPO.zip
deleted file mode 100644
index cbc4b0d..0000000
--- a/OPO.zip
+++ /dev/null
Binary files differ
diff --git "a/opo \0502\051.zip" "b/opo \0502\051.zip"
deleted file mode 100644
index ad5c91c..0000000
--- "a/opo \0502\051.zip"
+++ /dev/null
Binary files differ
diff --git a/OPO-srm .zip b/opo-srm.zip
similarity index 81%
rename from OPO-srm .zip
rename to opo-srm.zip
index b4e27f6..61f1e99 100644
--- a/OPO-srm .zip
+++ b/opo-srm.zip
Binary files differ
diff --git a/src/views/project/components/orgselect/index.vue b/src/views/project/components/orgselect/index.vue
index be20106..7471f43 100644
--- a/src/views/project/components/orgselect/index.vue
+++ b/src/views/project/components/orgselect/index.vue
@@ -14,6 +14,7 @@
       @focus="focusEvents.func"
       @change="change"
       @blur="changeBlur"
+      @visible-change="handleVisibleChange"
       value-key="organizationid"
       allow-create
       reserve-keyword
@@ -22,8 +23,8 @@
       ref="selecter"
     >
       <el-option
-        v-for="(spec, index) in dataList"
-        :key="index"
+        v-for="(spec, index) in displayList"
+        :key="spec.organizationid"
         :label="spec.organizationname"
         :value="spec.organizationid"
       >
@@ -101,8 +102,10 @@
     return {
       pageData: { pageNum: 1, pageSize: 100 },
       isLoading: false,
-      // dataList: [],
-      tempList: [],
+      // 涓変釜鐙珛鐨勬暟鎹簮锛岄伩鍏嶇浉浜掓薄鏌�
+      originalList: [], // 瀹屾暣鐨勫師濮嬫暟鎹簮
+      tempList: [],     // 涓棿缂撳瓨鏁版嵁
+      displayList: [],  // 鐢ㄤ簬娓叉煋鏄剧ず鐨勫垪琛�
       myValue: this.multiple ? [] : "",
       focusEvents: {
         func: () => {},
@@ -145,15 +148,17 @@
       let userType = { userType: "1" };
       if (this.orgType == 4) {
         let arr = this.$store.state.user.organization;
-        this.dataList.push(...arr);
+        this.originalList.push(...arr);
         if (this.isAll) {
           let all = {
             organizationid: "",
             organizationname: "鍏ㄩ儴"
           };
-          this.dataList.unshift(all);
+          this.originalList.unshift(all);
         }
-        this.tempList = this.dataList.map(item => item);
+        // 鍒濆鍖栦笁涓垪琛ㄤ负鐩稿悓鏁版嵁
+        this.tempList = [...this.originalList];
+        this.displayList = [...this.originalList];
         this.focusEvents.loaded = true;
         this.isLoading = false;
         return;
@@ -161,57 +166,64 @@
 
       listOrganization(searchData)
         .then(response => {
-          this.dataList.push(...response.rows);
+          this.originalList.push(...response.rows);
           if (this.isAll) {
             let all = {
               organizationid: "",
               organizationname: "鍏ㄩ儴"
             };
-            this.dataList.unshift(all);
+            this.originalList.unshift(all);
           }
-          this.tempList = this.dataList.map(item => item);
+          // 鍒濆鍖栦笁涓垪琛ㄤ负鐩稿悓鏁版嵁
+          this.tempList = [...this.originalList];
+          this.displayList = [...this.originalList];
           this.focusEvents.loaded = true;
         })
         .catch(error => {
-          // 鏆傛棤澶勭悊
+          console.error("鑾峰彇鏈烘瀯鍒楄〃澶辫触:", error);
         })
         .finally(() => {
           this.isLoading = false;
         });
     },
 
-    getOptionByValue(key) {
-      let outValue = null;
-      this.dataList.forEach(e => {
-        if (e.organizationid == key) {
-          outValue = e;
-        }
-      });
-
-      return outValue;
-    },
-
+    /**
+     * 鑷畾涔夌瓫閫夋柟娉� - 淇鎼滅储鏃犳晥闂
+     * @param {string} val - 鎼滅储鍏抽敭璇�
+     */
     filterMethod(val) {
-      this.myValue = val;
       if (val) {
-        this.dataList = this.tempList.filter(item => {
-          if (
-            (item.PYM &&
-              !!~item.PYM.toUpperCase().indexOf(val.toUpperCase())) ||
-            (item.WBM &&
-              !!~item.WBM.toUpperCase().indexOf(val.toUpperCase())) ||
+        // 瀵逛复鏃跺垪琛ㄨ繘琛岀瓫閫夛紝涓嶄慨鏀瑰師濮嬫暟鎹�
+        this.displayList = this.tempList.filter(item => {
+          return (
+            (item.PYM && item.PYM.toUpperCase().includes(val.toUpperCase())) ||
+            (item.WBM && item.WBM.toUpperCase().includes(val.toUpperCase())) ||
             (item.organizationname &&
-              !!~item.organizationname.toUpperCase().indexOf(val.toUpperCase()))
-          ) {
-            return true;
-          } else {
-            return false;
-          }
+             item.organizationname.toUpperCase().includes(val.toUpperCase()))
+          );
         });
       } else {
-        this.dataList = this.tempList.map(item => item);
+        // 鎼滅储璇嶄负绌烘椂鏄剧ず瀹屾暣鍒楄〃
+        this.displayList = [...this.tempList];
       }
     },
+
+    /**
+     * 澶勭悊涓嬫媺妗嗘樉绀�/闅愯棌浜嬩欢 - 淇鏁版嵁鎭㈠闂
+     * @param {boolean} visible - 鏄惁鍙
+     */
+    handleVisibleChange(visible) {
+      if (!visible) {
+        // 涓嬫媺妗嗗叧闂椂閲嶇疆鏄剧ず鍒楄〃涓哄畬鏁存暟鎹�
+        this.displayList = [...this.originalList];
+        this.tempList = [...this.originalList];
+      }
+    },
+
+    getOptionByValue(key) {
+      return this.originalList.find(item => item.organizationid == key) || null;
+    },
+
     focus() {
       this.$refs.selecter.focus();
     },
@@ -227,9 +239,10 @@
         this.$emit("change", data);
       });
     },
+
     defaultInit(defaultItem, defaultItemName) {
       if (defaultItem && defaultItemName) {
-        let list = this.dataList.filter(
+        let list = this.originalList.filter(
           r =>
             r.organizationid == defaultItem &&
             r.organizationname == defaultItemName
@@ -239,10 +252,11 @@
             organizationname: defaultItemName,
             organizationid: defaultItem
           };
-          this.dataList.push(data);
+          this.originalList.push(data);
+          this.tempList = [...this.originalList];
+          this.displayList = [...this.originalList];
         }
       }
-      this.tempList = this.dataList.map(item => item);
     }
   },
   computed: {},
@@ -254,6 +268,18 @@
     myValue(newVal) {
       this.$emit("input", newVal);
       this.$emit("change", newVal);
+    },
+    // 鐩戝惉props涓殑dataList鍙樺寲
+    dataList: {
+      handler(newList) {
+        if (newList && newList.length > 0) {
+          this.originalList = [...newList];
+          this.tempList = [...newList];
+          this.displayList = [...newList];
+        }
+      },
+      immediate: true,
+      deep: true
     }
   }
 };
@@ -265,4 +291,14 @@
   position: relative;
   width: 90%;
 }
+
+// 浼樺寲鎼滅储妗嗘牱寮�
+::v-deep.selectclass .el-select__input {
+  min-width: 80px;
+}
+
+// 纭繚閫夐」鍒楄〃姝e父鏄剧ず
+::v-deep.selectclass .el-select-dropdown {
+  z-index: 9999 !important;
+}
 </style>
diff --git a/src/views/project/donationdetails/index.vue b/src/views/project/donationdetails/index.vue
index 4b030f6..7c004c2 100644
--- a/src/views/project/donationdetails/index.vue
+++ b/src/views/project/donationdetails/index.vue
@@ -1,9 +1,20 @@
 <template>
   <div class="particularsdiv">
-    <div class="left-course">
+    <div class="left-course" :class="{ 'left-collapsed': isLeftCollapsed }">
       <div class="postfilx">
-        <div class="title">宸ヤ綔杩涚▼</div>
-        <div>
+        <div class="title">
+          宸ヤ綔杩涚▼
+          <el-button
+            class="collapse-btn"
+            @click="toggleLeftCollapse"
+            :icon="
+              isLeftCollapsed ? 'el-icon-arrow-right' : 'el-icon-arrow-left'
+            "
+            size="mini"
+          >
+          </el-button>
+        </div>
+        <div v-show="!isLeftCollapsed">
           <el-steps direction="vertical" :active="workflow">
             <el-step title="娼滃湪鎹愮尞" icon="el-icon-user">
               <template slot="description" v-if="donatebaseinfo.createtime">
@@ -155,7 +166,7 @@
       </div>
     </div>
     <!-- 鍙充晶鏁版嵁 -->
-    <div style="background: #fff; width: 80%;">
+    <div class="right-content" :class="{ 'right-expanded': isLeftCollapsed }">
       <!-- 椤堕儴鏁版嵁 -->
       <div class="boxdiv">
         <div class="top-text">鎹愮尞妗堜緥淇℃伅</div>
@@ -1503,6 +1514,7 @@
                         <org-selecter
                           ref="tranHosSelect"
                           :org-type="'4'"
+                          :filterable="true"
                           :dataList="dataList"
                           v-model="scope.row.transplanthospitalno"
                         />
@@ -2349,7 +2361,7 @@
               </el-form-item>
             </el-col>
           </el-row>
-          <el-row>
+          <el-row v-if="accomplishform.isbodydonation">
             <el-col :span="6">
               <el-form-item align="left" label="閬椾綋鎹愮尞" prop="isbodydonation">
                 <el-radio-group v-model="accomplishform.isbodydonation">
@@ -2746,6 +2758,7 @@
     return {
       infoid: 736,
       drawer: false,
+      isLeftCollapsed: false,
       form: {
         donorno: "",
         reporterno: "",
@@ -3002,9 +3015,9 @@
         ],
         sex: [{ required: true, message: "鎬у埆涓嶈兘涓虹┖", trigger: "blur" }],
         age: [{ required: true, message: "璇疯緭鍏ュ勾榫�", trigger: "blur" }],
-        treatmenthospitalno: [
-          { required: true, message: "璇烽�夋嫨鍖荤枟鏈烘瀯", trigger: "blur" }
-        ],
+        // treatmenthospitalno: [
+        //   { required: true, message: "璇烽�夋嫨鍖荤枟鏈烘瀯", trigger: "blur" }
+        // ],
         bloodtype: [
           { required: true, message: "璇烽�夋嫨ABO琛�鍨�", trigger: "blur" }
         ],
@@ -3039,7 +3052,23 @@
         ]
       },
       // 鍚勭骇鏄庣粏鏁堥獙
-      medicinerules: {},
+      medicinerules: {
+        illnessoverview: [
+          { required: true, message: "璇疯緭鍏ョ梾鎯呮鍐�", trigger: "blur" }
+        ],
+        diagnosisname: [
+          { required: true, message: "璇疯緭鍏ョ柧鐥呰瘖鏂�", trigger: "blur" }
+        ],
+        hospitalassessdoctor: [
+          { required: true, message: "璇疯緭鍏ラ櫌绾ц瘎浼板尰鐢�", trigger: "blur" }
+        ],
+        provincialassessdoctor: [
+          { required: true, message: "璇疯緭鍏ョ渷绾ц瘎浼板尰鐢�", trigger: "blur" }
+        ],
+        coreteamassessdoctor: [
+          { required: true, message: "璇疯緭鍏ユ牳蹇冩垚鍛樿瘎浼板尰鐢�", trigger: "blur" }
+        ],
+      },
       affirmrules: {
         name: [
           { required: true, message: "浜插睘濮撳悕涓嶈兘涓虹┖", trigger: "blur" }
@@ -3438,8 +3467,11 @@
         });
       }
     },
+    // 鍒囨崲渚ц竟闅愯棌
+    toggleLeftCollapse() {
+      this.isLeftCollapsed = !this.isLeftCollapsed;
+    },
     /** 淇濆瓨涓昏〃鎸夐挳 */
-
     submitForm() {
       this.$refs["form"].validate(valid => {
         console.log("鎻愪氦鐨勬暟鎹滑锛�", this.form);
@@ -4416,124 +4448,242 @@
 
 <style lang="scss" scoped>
 .particularsdiv {
-  display: -webkit-box;
+  display: flex;
   background-color: #f5f7fa;
-  height: 100%;
+  height: 100vh;
+  overflow: hidden;
+  transition: all 0.3s ease;
 
+  // 宸︿晶宸ヤ綔杩涚▼鏍�
   .left-course {
     background: #fff;
-    width: 14vw;
+    width: 220px;
+    min-width: 220px;
     text-align: center;
-    margin: 20px 10px;
-    padding: 10px;
-    margin-top: 0;
-    min-height: 888px;
+    margin: 0;
+    padding: 0;
+    height: 100%;
+    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);
+    transition: all 0.3s ease;
+    position: relative;
+    z-index: 100;
+
+    &.left-collapsed {
+      width: 64px; // 鏀逛负鍥哄畾瀹藉害锛岃�屼笉鏄�0
+      min-width: 64px; // 淇濇寔鏈�灏忓搴�
+      transform: translateX(0); // 绉婚櫎骞崇Щ
+
+      // 鎶樺彔鐘舵�佷笅闅愯棌姝ラ鍐呭锛屽彧鏄剧ず鏍囬鍜屾寜閽�
+      .postfilx > div:last-child {
+        opacity: 0;
+        visibility: hidden;
+        pointer-events: none; // 绂佺敤浜や簰
+      }
+
+      .title {
+        padding: 15px 5px; // 璋冩暣鍐呰竟璺濋�傚簲绐勫搴�
+
+        .collapse-btn {
+          margin: 0 auto; // 鎸夐挳灞呬腑
+        }
+      }
+    }
 
     .postfilx {
-      width: 12vw;
-      text-align: center;
-      margin: 20px 10px;
-      padding: 10px;
-      margin-top: 0;
-      // z-index: 999;
-      // position: -webkit-sticky;
-      // position: fixed;
-      // top: 50;
-    }
-
-    .title {
-      background: #22a2c3;
-      margin-bottom: 20px;
-      padding: 10px 0;
-      color: #fff;
-    }
-  }
-}
-
-.upload-demo {
-  text-align: center;
-}
-
-.pdfimg {
-  display: flex; // text-align: center;
-  width: 100%;
-  height: 600px;
-
-  .box-pdf {
-    width: 400px;
-    margin-right: 30px;
-    border: 1px solid #dcdfe6;
-    -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
-      0 0 6px 0 rgba(0, 0, 0, 0.04);
-    box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.1); // <- Add this to fix.
-  }
-
-  .pdftit {
-    width: 200px;
-    padding: 20px;
-    font-size: 18px;
-  }
-
-  .pdftit:hover {
-    background: #c0cef7;
-  }
-
-  .pdfimgmin {
-    width: 60%;
-
-    img {
       width: 100%;
+      height: 100%;
+      padding: 0;
+      margin: 0;
+      display: flex;
+      flex-direction: column;
+
+      .title {
+        background: #22a2c3;
+        margin-bottom: 0;
+        padding: 15px 10px;
+        color: #fff;
+        font-size: 16px;
+        font-weight: 600;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        position: relative;
+        transition: all 0.3s ease;
+        min-height: 54px; // 纭繚鏍囬鍖哄煙鏈夊浐瀹氶珮搴�
+        box-sizing: border-box;
+
+        .collapse-btn {
+          background: rgba(255, 255, 255, 0.2);
+          border: none;
+          color: #fff;
+          width: 32px; // 绋嶅井澧炲ぇ纭繚鍙偣鍑诲尯鍩�
+          height: 32px;
+          padding: 0;
+          border-radius: 4px;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          transition: all 0.3s ease;
+          flex-shrink: 0; // 闃叉鎸夐挳琚帇缂�
+
+          &:hover {
+            background: rgba(255, 255, 255, 0.3);
+            transform: scale(1.1);
+          }
+
+          // 纭繚鍥炬爣灞呬腑鏄剧ず
+          .el-icon {
+            margin: 0;
+          }
+        }
+
+        // 鎶樺彔鐘舵�佷笅璋冩暣鏍囬鏂囧瓧
+
+      }
+
+      // 鎶樺彔鐘舵�佷笅闅愯棌瀹屾暣鏍囬鏂囧瓧
+      &.left-collapsed .title {
+        &:after {
+          opacity: 0;
+        }
+      }
+
+      > div:last-child {
+        flex: 1;
+        overflow-y: auto;
+        padding: 20px 15px;
+        transition: all 0.3s ease;
+      }
     }
   }
-
-  .pdfimgmins {
-    font-size: 28px;
-    width: 60%;
-    text-align: center;
-  }
-}
-
-.Ticket-button {
-  margin-top: 10px;
+.Ticket-button{
   text-align: right;
-  padding-right: 66px;
+  margin-right: 50px;
 }
+  // 鍙充晶鍐呭鍖哄煙
+  .right-content {
+    flex: 1;
+    background: #fff;
+    transition: all 0.3s ease;
+    overflow-y: auto;
+    margin: 0;
 
-.boxdiv {
-  max-width: 85vw;
-  font-size: 18px;
-  padding: 0 30px;
-  padding-bottom: 10px;
-  margin-top: 10px;
+    &.right-expanded {
+      margin-left: 0;
+    }
 
-  .top-text {
-    text-align: center;
-    font-size: 23px;
-    font-weight: 600;
-    margin: 20px 0;
-    margin-bottom: 30px;
+    .boxdiv {
+      width: 100%;
+      max-width: none;
+      font-size: 18px;
+      padding: 0 30px;
+      padding-bottom: 20px;
+      margin-top: 0;
+
+      .top-text {
+        text-align: center;
+        font-size: 23px;
+        font-weight: 600;
+        margin: 20px 0;
+        margin-bottom: 30px;
+        padding-top: 20px;
+      }
+    }
   }
 }
 
-::v-deep .el-step__head.is-finish {
-  color: #22a2c3;
-  border-color: #22a2c3;
+// 姝ラ鏍峰紡浼樺寲
+::v-deep .el-steps {
+  &.el-steps--vertical {
+    height: 100%;
+
+    .el-step {
+      margin-bottom: 15px;
+
+      .el-step__head {
+        &.is-finish {
+          color: #22a2c3;
+          border-color: #22a2c3;
+        }
+      }
+
+      .el-step__title {
+        font-size: 14px;
+        font-weight: 600;
+
+        &.is-finish {
+          color: #22a2c3;
+        }
+      }
+
+      .el-step__description {
+        font-size: 12px;
+        color: #666;
+        line-height: 1.5;
+
+        &.is-finish {
+          color: #22a2c3;
+        }
+
+        p {
+          margin: 4px 0;
+        }
+      }
+    }
+  }
 }
 
-::v-deep .el-step__title.is-finish {
-  color: #22a2c3;
+// 鍝嶅簲寮忚璁�
+@media (max-width: 768px) {
+  .particularsdiv {
+    flex-direction: column;
+
+    .left-course {
+      width: 100%;
+      height: auto;
+      max-height: 300px;
+
+      &.left-collapsed {
+        width: 100%; // 绉诲姩绔繚鎸佸叏瀹�
+        min-width: 100%;
+        height: 60px; // 鍙樉绀烘爣棰樻爮楂樺害
+        max-height: 60px;
+
+        .postfilx > div:last-child {
+          display: none; // 瀹屽叏闅愯棌鍐呭鑰屼笉鏄�忔槑
+        }
+      }
+
+      .postfilx {
+        .title {
+          .collapse-btn {
+            transform: rotate(0deg); // 淇濇寔姝e父鏂瑰悜
+          }
+        }
+      }
+    }
+
+    .right-content {
+      margin-left: 0;
+    }
+  }
 }
 
-::v-deep .el-step__description.is-finish {
-  color: #22a2c3;
+// 婊氬姩鏉℃牱寮忎紭鍖�
+.left-course ::-webkit-scrollbar {
+  width: 4px;
 }
 
-:v-deep .el-select {
-  display: inline-block;
-  position: relative;
-  width: 80%;
+.left-course ::-webkit-scrollbar-track {
+  background: #f1f1f1;
 }
-:v-deep .el-tabs__nav-scroll {
-  overflow: auto;
+
+.left-course ::-webkit-scrollbar-thumb {
+  background: #c1c1c1;
+  border-radius: 2px;
+}
+
+.left-course ::-webkit-scrollbar-thumb:hover {
+  background: #a8a8a8;
 }
 </style>
diff --git a/vue.config.js b/vue.config.js
index 84302f4..51f078a 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -33,8 +33,8 @@
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        // target:`http://localhost:8080`,
-        target:`http://192.168.100.10:8080`,
+        target:`http://localhost:8080`,
+        // target:`http://192.168.100.10:8080`,
         // target:`http://192.168.100.137:8080`,
         // target: `https://slb.hospitalstar.com:9093`,
         changeOrigin: true,

--
Gitblit v1.9.3