From 51461f369f0b0ad1da96346afee5637302f1525b Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 18 八月 2026 16:38:47 +0800
Subject: [PATCH] 提交

---
 src/views/patient/propaganda/QuestionnaireTask.vue |  170 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 125 insertions(+), 45 deletions(-)

diff --git a/src/views/patient/propaganda/QuestionnaireTask.vue b/src/views/patient/propaganda/QuestionnaireTask.vue
index 763a462..43ed363 100644
--- a/src/views/patient/propaganda/QuestionnaireTask.vue
+++ b/src/views/patient/propaganda/QuestionnaireTask.vue
@@ -214,32 +214,98 @@
 
                 <!-- 鑽搧鍏宠仈 -->
                 <el-row v-if="form.appltype == 6">
-                  <el-col :span="20">
-                    <el-form-item label="鍏宠仈鑽搧" prop="region">
-                      <el-select
-                        v-model="medicalCodes"
-                        @remove-tag="removeMedical"
-                        style="width: 400px"
-                        size="medium"
-                        multiple
-                        filterable
-                        remote
-                        reserve-keyword
-                        :remote-method="remoteSearchMedical"
-                        placeholder="璇疯緭鍏ヨ嵂鍝佸悕绉版悳绱�"
-                        loading-text="鎼滅储涓�..."
-                      >
-                        <el-option
-                          v-for="item in medicalOptions"
-                          :key="item.id"
-                          :label="
-                            item.itemName + ' (' + item.manufacturerName + ')'
-                          "
-                          :value="item.itemCode"
-                        />
-                      </el-select>
-                    </el-form-item>
-                  </el-col>
+                  <el-form-item label="鍏宠仈鑽搧" prop="region">
+                    <el-select
+                      v-model="medicalCodes"
+                      @remove-tag="removeMedical"
+                      style="width: 400px"
+                      size="medium"
+                      multiple
+                      filterable
+                      remote
+                      reserve-keyword
+                      :remote-method="remoteSearchMedical"
+                      placeholder="璇疯緭鍏ヨ嵂鍝佸悕绉版悳绱�"
+                      loading-text="鎼滅储涓�..."
+                    >
+                      <el-option
+                        v-for="item in medicalOptions"
+                        :key="item.itemCode"
+                        :label="
+                          item.itemName + ' (' + item.manufacturerName + ')'
+                        "
+                        :value="item.itemCode"
+                      />
+                    </el-select>
+                  </el-form-item>
+                  <div
+                    style="
+                      margin-bottom: 20px;
+                      padding: 8px 12px;
+                      background-color: #f0f9ff;
+                      border-left: 4px solid #409eff;
+                    "
+                  >
+                    <p style="margin: 0; color: #606266; font-size: 13px">
+                      <i
+                        class="el-icon-info"
+                        style="color: #409eff; margin-right: 6px"
+                      ></i>
+                      閽堝鍚屼竴鑽搧鍦ㄥ绉戝/鐥呭尯涓嬪瓨鍦ㄧ殑鎯呭喌锛屽彲閫夋嫨鎬ч厤缃浐瀹氱瀹�/鐥呭尯
+                    </p>
+                  </div>
+                  <el-row :gutter="20" style="margin-top: 20px">
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈绉戝" prop="diseaseDept">
+                        <el-select
+                          v-model="diseaseDept"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨绉戝锛堝彲閫夛級"
+                          value-key="deptCode"
+                          @change="handleDiseaseDeptChange"
+                        >
+                          <el-option
+                            v-for="item in belongDepts"
+                            :key="item.deptCode"
+                            :label="item.deptName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseDept" class="selected-info">
+                          宸查�夋嫨: {{ diseaseDept.deptName }} ({{
+                            diseaseDept.deptCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                      <el-form-item label="鍏宠仈鐥呭尯" prop="diseaseWard">
+                        <el-select
+                          v-model="diseaseWard"
+                          style="width: 100%"
+                          clearable
+                          filterable
+                          placeholder="璇烽�夋嫨鐥呭尯锛堝彲閫夛級"
+                          value-key="districtCode"
+                          @change="handleDiseaseWardChange"
+                        >
+                          <el-option
+                            v-for="item in belongWards"
+                            :key="item.districtCode"
+                            :label="item.districtName"
+                            :value="item"
+                          ></el-option>
+                        </el-select>
+                        <div v-if="diseaseWard" class="selected-info">
+                          宸查�夋嫨: {{ diseaseWard.districtName }} ({{
+                            diseaseWard.districtCode
+                          }})
+                        </div>
+                      </el-form-item>
+                    </el-col>
+                  </el-row>
                 </el-row>
 
                 <!-- 绉戝鍏宠仈 -->
@@ -1280,6 +1346,7 @@
   getTaskpatientQC,
   taskoperhospgetsondel,
   taskdiaghospgetsondel,
+  taskmedicaldel,
   getillnesslist,
   getbaseopera,
   Externallist,
@@ -1296,6 +1363,7 @@
   getQtemplateclassify,
   taskdepthospgetsondel,
   taskdepthospgetsonlist,
+  taskmedicallist,
   taskdiaggetlist,
   rwztaskdepthospgetsonlist,
   rwztaskdiaggetlist,
@@ -1813,21 +1881,6 @@
               districtCode: this.form.leavehospitaldistrictcode,
               districtName: this.form.leavehospitaldistrictname,
             };
-            // 鑽搧鍏宠仈鍥炴樉
-            if (this.form.medicalCode) {
-              this.medicalCodes = this.form.medicalCode
-                .split(",")
-                .filter(Boolean);
-              // 鍔犺浇宸查�夎嵂鍝佺殑閫夐」鍒楄〃锛堢敤浜庡睍绀� label锛�
-              const codes = this.form.medicalCode;
-              listMedication({
-                itemCode: codes,
-                pageNum: 1,
-                pageSize: 200,
-              }).then((res) => {
-                this.medicalOptions = res.rows || [];
-              });
-            }
             this.overallCase = this.form.patTaskRelevances.concat();
             this.checkList = this.form.preachform
               ? this.form.preachform.split(",")
@@ -2057,6 +2110,8 @@
     listDept() {
       this.leavehospitaldistrictcodes = [];
       this.deptcodesWards = [];
+      this.medicalCodes = [];
+      this.medicalOptions = [];
       // this.queryParamsdept.taskId = this.form.taskid;
       this.queryParamsdept.taskId = this.form.taskid;
 
@@ -2101,6 +2156,22 @@
                 this.hosplist.push(item);
                 this.leavehospitaldistrictcodes.push(item.deptCode);
               }
+            });
+          }
+        });
+        // 鑾峰彇鍏宠仈鑽搧
+        taskmedicallist(this.queryParamsdept).then((res) => {
+          if (res.code == 200) {
+            let arr = res.rows || [];
+            arr.forEach((item) => {
+              const code = item.itemCode || item.medicalCode;
+              this.medicalCodes.push(code);
+              this.medicalOptions.push({
+                ...item,
+                itemCode: code,
+                itemName: item.itemName || item.medicalName,
+                manufacturerName: item.manufacturerName || item.medicalCompany
+              });
             });
           }
         });
@@ -2199,9 +2270,14 @@
         }
       );
     },
-    // 鍒犻櫎宸查�夎嵂鍝�
+    // 鍒犻櫎宸查�夎嵂鍝侊紙鍗曠嫭鎺ュ彛锛�
     removeMedical(code) {
-      this.medicalCodes = this.medicalCodes.filter((c) => c !== code);
+      taskmedicaldel({ medicalCode: code, taskId: this.form.taskid }).then((res) => {
+        if (res.code == 200) {
+          this.medicalCodes = this.medicalCodes.filter((c) => c !== code);
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        }
+      });
     },
 
     // ---------- 鎮h�呴�夋嫨 ----------
@@ -2761,8 +2837,12 @@
         this.form.icd10name = this.diagglist
           .map((item) => item.icdname)
           .join(",");
-        // 鐤剧梾/鎵嬫湳鍏宠仈鐨勭瀹�/鐥呭尯鏍¢獙
-        if (this.form.appltype == 3 || this.form.appltype == 4) {
+        // 鐤剧梾/鎵嬫湳/鑽搧鍏宠仈鐨勭瀹�/鐥呭尯鏍¢獙
+        if (
+          this.form.appltype == 3 ||
+          this.form.appltype == 4 ||
+          this.form.appltype == 6
+        ) {
           const hasDept = this.diseaseDept?.deptCode;
           const hasWard = this.diseaseWard?.districtCode;
           if (!hasDept && !hasWard) {

--
Gitblit v1.9.3