From 6e7f546cc37ed57e7e2eda4fdfc32fa2b3e0160c Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 20 十月 2026 17:41:10 +0800
Subject: [PATCH] 测试完成

---
 src/views/patient/propaganda/QuestionnaireTask.vue |  386 ++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 325 insertions(+), 61 deletions(-)

diff --git a/src/views/patient/propaganda/QuestionnaireTask.vue b/src/views/patient/propaganda/QuestionnaireTask.vue
index 763a462..4235af7 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>
 
                 <!-- 绉戝鍏宠仈 -->
@@ -264,6 +330,35 @@
                         </el-option>
                       </el-select> </el-form-item
                   ></el-col>
+                </el-row>
+
+                <!-- 缂欎簯鍘夸汉姘戝尰闄細瓒呮椂鏈畬鎴愭槸鍚﹀啀娆¢殢璁� / 鍐嶆闅忚鍏宠仈浠诲姟 -->
+                <el-row v-if="form.appltype == 1 && orgname == '缂欎簯鍘夸汉姘戝尰闄�'">
+                  <el-col :span="12">
+                    <el-form-item label="瓒呮椂鏈畬鎴愭槸鍚﹀啀娆¢殢璁�">
+                      <el-radio-group v-model="form.nexttaskflag">
+                        <el-radio label="1">鏄�</el-radio>
+                        <el-radio label="0">鍚�</el-radio>
+                      </el-radio-group>
+                    </el-form-item>
+                  </el-col>
+                  <el-col :span="12">
+                    <el-form-item label="鍐嶆闅忚鍏宠仈浠诲姟">
+                      <el-input
+                        style="width: 300px"
+                        :disabled="true"
+                        v-model="nexttaskname"
+                        placeholder="璇风偣鍑诲彸渚ч�夋嫨浠诲姟"
+                      />
+                      <el-button
+                        style="margin-left: 10px"
+                        type="primary"
+                        icon="el-icon-edit"
+                        circle
+                        @click="openNextTaskDialog"
+                      ></el-button>
+                    </el-form-item>
+                  </el-col>
                 </el-row>
 
                 <!-- 鐥呭尯鍏宠仈 -->
@@ -313,7 +408,7 @@
                       </div>
                       <el-tag
                         v-for="tag in diagglist"
-                        @close="removediagg(tag.icd10code)"
+                        @close="removediagg(tag)"
                         type="warning"
                         closable
                         :disable-transitions="false"
@@ -647,7 +742,7 @@
                         </div>
                         <el-tag
                           v-for="tag in diagglist"
-                          @close="removediagg(tag.icd10code)"
+                          @close="removediagg(tag)"
                           type="warning"
                           closable
                           :disable-transitions="false"
@@ -861,6 +956,30 @@
                   </el-table>
                 </el-row>
               </div>
+            </div>
+          </div>
+          <div class="examine-jic">
+            <div class="headline">
+              <div>浜屾闅忚浠诲姟閰嶇疆</div>
+            </div>
+            <div class="jic-value">
+              <el-form label-width="125px">
+                <el-form-item label="浜屾闅忚浠诲姟">
+                  <el-input
+                    style="width: 300px"
+                    :disabled="true"
+                    v-model="nexttaskname"
+                    placeholder="璇风偣鍑诲彸渚ч�夋嫨浠诲姟"
+                  />
+                  <el-button
+                    style="margin-left: 10px"
+                    type="primary"
+                    icon="el-icon-edit"
+                    circle
+                    @click="openNextTaskDialog"
+                  ></el-button>
+                </el-form-item>
+              </el-form>
             </div>
           </div>
         </div>
@@ -1264,6 +1383,68 @@
         </div>
       </div>
     </el-drawer>
+    <!-- 閫夋嫨鍐嶆闅忚鍏宠仈浠诲姟 -->
+    <el-dialog
+      title="閫夋嫨浠诲姟"
+      :visible.sync="nextTaskDialogVisible"
+      width="60%"
+      :close-on-click-modal="false"
+    >
+      <el-form :inline="true" size="small">
+        <el-form-item label="浠诲姟鍚嶇О">
+          <el-input
+            v-model="nextTaskQuery.taskName"
+            placeholder="璇疯緭鍏ヤ换鍔″悕绉�"
+            @keyup.enter.native="handleNextTaskQuery"
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            @click="handleNextTaskQuery"
+            >鎼滅储</el-button
+          >
+          <el-button icon="el-icon-refresh" @click="resetNextTaskQuery"
+            >閲嶇疆</el-button
+          >
+        </el-form-item>
+      </el-form>
+      <el-table :data="nextTaskList" border v-loading="nextTaskLoading">
+        <el-table-column
+          label="浠诲姟鍚嶇О"
+          prop="taskName"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="浠诲姟鎻忚堪"
+          prop="taskDesc"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="鏈嶅姟椤圭洰"
+          prop="templatename"
+          show-overflow-tooltip
+        />
+        <el-table-column label="鎿嶄綔" width="100" align="center">
+          <template slot-scope="scope">
+            <el-button type="text" @click="selectNextTask(scope.row)"
+              >閫夋嫨</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="nextTaskTotal > 0"
+        :total="nextTaskTotal"
+        :page.sync="nextTaskQuery.pageNum"
+        :limit.sync="nextTaskQuery.pageSize"
+        @pagination="getNextTaskList"
+      />
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="nextTaskDialogVisible = false">鍙� 娑�</el-button>
+      </span>
+    </el-dialog>
     <Optional-Form
       ref="child"
       :dialogVisiblepatient="dialogVisiblepatientjb"
@@ -1280,6 +1461,7 @@
   getTaskpatientQC,
   taskoperhospgetsondel,
   taskdiaghospgetsondel,
+  taskmedicaldel,
   getillnesslist,
   getbaseopera,
   Externallist,
@@ -1296,12 +1478,15 @@
   getQtemplateclassify,
   taskdepthospgetsondel,
   taskdepthospgetsonlist,
+  taskmedicallist,
   taskdiaggetlist,
   rwztaskdepthospgetsonlist,
   rwztaskdiaggetlist,
   taskopergetlist,
+  getTasklist,
 } from "@/api/AiCentre/index";
 import { listMedication } from "@/api/knowledge/drug";
+import { getIvrtask } from "@/api/smartor/ivrtask";
 import OptionalForm from "@/components/OptionalForm";
 import SFtable from "@/components/SFtable";
 import SortCheckbox from "@/components/SortCheckbox";
@@ -1498,6 +1683,9 @@
       orgname: localStorage.getItem("orgname"),
       form: {
         patTaskRelevances: [],
+        nexttaskflag: "0",
+        nexttaskid: null,
+        nexttaskname: "",
         sendType: 1,
         longTask: 0,
         templatename: "",
@@ -1569,6 +1757,13 @@
       queryParamsdept: {},
       quote: false,
       serviceType: null,
+      // 鍐嶆闅忚鍏宠仈浠诲姟锛堢紮浜戝幙浜烘皯鍖婚櫌锛�
+      nextTaskDialogVisible: false,
+      nextTaskLoading: false,
+      nextTaskList: [],
+      nextTaskTotal: 0,
+      nextTaskQuery: { pageNum: 1, pageSize: 10, taskName: "" },
+      nexttaskname: "",
       // 妯℃澘鎼滅储
       templateOptions: [],
       templateLoading: false,
@@ -1677,6 +1872,7 @@
         this.form.serviceType == 8 ||
         this.form.serviceType == 12 ||
         this.form.serviceType == 13 ||
+        this.form.serviceType == 20 ||
         this.form.serviceType == 9
       ) {
         this.checkboxlist = [
@@ -1733,6 +1929,9 @@
     Getdetails() {
       this.form = {
         patTaskRelevances: [],
+        nexttaskflag: "0",
+        nexttaskid: null,
+        nexttaskname: "",
         sendType: 1,
         sendDay: 5,
         templatename: "",
@@ -1762,6 +1961,15 @@
         Questionnairetaskgetson({ taskid: this.id }).then((res) => {
           if (res.code == 200) {
             this.form = res.data;
+            // 鍥炴樉鍐嶆闅忚鍏宠仈浠诲姟
+            if (this.form.nexttaskflag == null) this.form.nexttaskflag = "0";
+            this.nexttaskname = "";
+            if (this.form.nexttaskid) {
+              getIvrtask(this.form.nexttaskid).then((r) => {
+                this.nexttaskname = (r.data && r.data.taskName) || "";
+                this.form.nexttaskname = (r.data && r.data.taskName) || "";
+              });
+            }
             // 濡傛灉杩斿洖浜� serviceTaskScheduleVO锛岃В鏋愭槑缁嗕腑鐨� content
             if (
               this.form.serviceTaskScheduleVO &&
@@ -1813,21 +2021,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(",")
@@ -1879,6 +2072,10 @@
       this.time2 = "";
       this.time3 = "";
       this.time4 = "";
+      this.form.nexttaskflag = "0";
+      this.form.nexttaskid = null;
+      this.form.nexttaskname = "";
+      this.nexttaskname = "";
       // 閲嶇疆浠诲姟缁�
       this.form.serviceTaskScheduleVO = {
         scheduleStyle: 0,
@@ -2057,6 +2254,8 @@
     listDept() {
       this.leavehospitaldistrictcodes = [];
       this.deptcodesWards = [];
+      this.medicalCodes = [];
+      this.medicalOptions = [];
       // this.queryParamsdept.taskId = this.form.taskid;
       this.queryParamsdept.taskId = this.form.taskid;
 
@@ -2104,6 +2303,22 @@
             });
           }
         });
+        // 鑾峰彇鍏宠仈鑽搧
+        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,
+              });
+            });
+          }
+        });
         taskdiaggetlist(this.queryParamsdept).then((res) => {
           if (res.code == 200) {
             let arr = res.rows;
@@ -2112,7 +2327,7 @@
                 item.icdname = item.icd10name;
                 this.diagglist.push(item);
               } else {
-                getillnesslist({ icdname: item.icd10name }).then((res) => {
+                getillnesslist({ icdcode: item.icd10code }).then((res) => {
                   item.icdname = res.rows[0].icdname;
                   this.diagglist.push(item);
                 });
@@ -2163,25 +2378,26 @@
         });
       }
     },
-    removediagg(row) {
+    removediagg(tag) {
       // 浠诲姟缁勶細鏈湴鍒犻櫎鍗冲彲锛屽悗绔繚瀛樻椂缁熶竴鏇存柊
       if (this.form.appltype == 5) {
-        this.diagglist = this.diagglist.filter((item) => item.icd10code != row);
+        this.diagglist = this.diagglist.filter((item) => item != tag);
         return;
       }
-      // 鏅�氱柧鐥呭叧鑱旓細璋冨悗绔帴鍙i�愭潯鍒犻櫎
-      let result = this.diagglist
-        .filter((item) => item.icd10code == row)
-        .map((item) => item.id);
-      if (result.length) {
-        taskdiaghospgetsondel(result).then((res) => {
+
+      // 鏅�氱柧鐥呭叧鑱旓細鍒ゆ柇鏄惁鏈� id锛堝凡淇濆瓨鐨勮褰曟墠鏈� id锛�
+      if (tag.id) {
+        // id 瀛樺湪锛岃皟鍚庣鎺ュ彛鍒犻櫎
+        taskdiaghospgetsondel([tag.id]).then((res) => {
           if (res.code) {
-            this.diagglist = this.diagglist.filter(
-              (item) => item.icd10code != row
-            );
+            this.diagglist = this.diagglist.filter((item) => item != tag);
             this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
           }
         });
+      } else {
+        // id 涓嶅瓨鍦紙鏈繚瀛樼殑鏂拌褰曪級锛岀洿鎺ユ湰鍦板垹闄�
+        this.diagglist = this.diagglist.filter((item) => item != tag);
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
       }
     },
     remoteopcode(name) {
@@ -2199,9 +2415,53 @@
         }
       );
     },
-    // 鍒犻櫎宸查�夎嵂鍝�
+    // 鍒犻櫎宸查�夎嵂鍝侊紙鍗曠嫭鎺ュ彛锛�
     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("鍒犻櫎鎴愬姛");
+          }
+        }
+      );
+    },
+
+    // ---------- 鍐嶆闅忚鍏宠仈浠诲姟 ----------
+    openNextTaskDialog() {
+      this.nextTaskQuery = { pageNum: 1, pageSize: 10, taskName: "" };
+      this.nextTaskDialogVisible = true;
+      this.getNextTaskList();
+    },
+    getNextTaskList() {
+      this.nextTaskLoading = true;
+      getTasklist({
+        pageNum: this.nextTaskQuery.pageNum,
+        pageSize: this.nextTaskQuery.pageSize,
+        taskName: this.nextTaskQuery.taskName || undefined,
+      })
+        .then((res) => {
+          this.nextTaskList = res.rows || [];
+          this.nextTaskTotal = res.total || 0;
+          this.nextTaskLoading = false;
+        })
+        .catch(() => {
+          this.nextTaskLoading = false;
+        });
+    },
+    handleNextTaskQuery() {
+      this.nextTaskQuery.pageNum = 1;
+      this.getNextTaskList();
+    },
+    resetNextTaskQuery() {
+      this.nextTaskQuery = { pageNum: 1, pageSize: 10, taskName: "" };
+      this.getNextTaskList();
+    },
+    selectNextTask(row) {
+      this.form.nexttaskid = row.taskid;
+      this.form.nexttaskname = row.taskName;
+      this.nexttaskname = row.taskName;
+      this.nextTaskDialogVisible = false;
     },
 
     // ---------- 鎮h�呴�夋嫨 ----------
@@ -2756,13 +3016,17 @@
         this.form.serviceType = this.serviceType;
 
         this.form.icd10code = this.diagglist
-          .map((item) => item.icdcode)
+          .map((item) => item.icd10code || item.icdcode)
           .join(",");
         this.form.icd10name = this.diagglist
-          .map((item) => item.icdname)
+          .map((item) => item.icdname || item.icd10name)
           .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