From 3573a134c7c7d4d99f605420f9afb2f80e9b8967 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期六, 22 十一月 2025 14:59:46 +0800
Subject: [PATCH] 宣教更新

---
 src/views/patient/propaganda/Missioncreation.vue |  527 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 403 insertions(+), 124 deletions(-)

diff --git a/src/views/patient/propaganda/Missioncreation.vue b/src/views/patient/propaganda/Missioncreation.vue
index 880ee5f..cfd57e0 100644
--- a/src/views/patient/propaganda/Missioncreation.vue
+++ b/src/views/patient/propaganda/Missioncreation.vue
@@ -82,48 +82,17 @@
                     placeholder="璇疯緭鍏ヤ换鍔℃弿杩�"
                   />
                 </el-form-item>
-                <el-row>
-                  <el-col :span="20"
-                    ><el-form-item label="閫傜敤绉戝" prop="region">
-                      <el-select
-                        v-model="form.deptcode"
-                        style="width: 400px"
-                        size="medium"
-                        filterable
-                        placeholder="璇烽�夋嫨绉戝"
-                      >
-                        <el-option
-                          class="ruleFormaa"
-                          v-for="item in belongDepts"
-                          :key="item.deptCode"
-                          :label="item.deptName"
-                          :value="item.deptCode"
-                        >
-                        </el-option>
-                      </el-select> </el-form-item
-                  ></el-col>
-                </el-row>
-                <el-row>
-                  <el-col :span="20"
-                    ><el-form-item label="閫傜敤鐥呭尯" prop="region">
-                      <el-select
-                        v-model="form.leavehospitaldistrictcode"
-                        style="width: 400px"
-                        size="medium"
-                        filterable
-                        placeholder="璇烽�夋嫨鐥呭尯"
-                      >
-                        <el-option
-                          class="ruleFormaa"
-                          v-for="item in belongWards"
-                          :key="item.districtCode"
-                          :label="item.districtName"
-                          :value="item.districtCode"
-                        >
-                        </el-option>
-                      </el-select> </el-form-item
-                  ></el-col>
-                </el-row>
+                <el-form-item label="鏈嶅姟褰㈠紡">
+                  <SortCheckbox
+                    v-model="checkList"
+                    :options="checkboxlist"
+                    :initialselectedOrder="selectedOrder"
+                    value-key="value"
+                    label-key="label"
+                    @change="checkSelectionChange"
+                  />
+                </el-form-item>
+
                 <el-form-item label="鎵ц鍛ㄦ湡" prop="longTask">
                   <el-radio-group v-model="form.longTask">
                     <el-radio :label="0">鑷畾涔夊懆鏈�</el-radio>
@@ -253,27 +222,116 @@
                       /> </el-form-item
                   ></el-col>
                 </el-row>
-                <!-- <el-form-item label="鏈嶅姟褰㈠紡">
-                  <el-checkbox-group v-model="checkList">
-                    <el-checkbox
-                      v-for="(item, index) in checkboxlist"
-                      :key="index"
-                      :label="item.value"
-                    >
-                      {{ item.label }}</el-checkbox
-                    >
-                  </el-checkbox-group>
-                </el-form-item> -->
-                <el-form-item label="鏈嶅姟褰㈠紡">
-                  <SortCheckbox
-                    v-model="checkList"
-                    :options="checkboxlist"
-                    :initialselectedOrder="selectedOrder"
-                    value-key="value"
-                    label-key="label"
-                    @change="checkSelectionChange"
-                  />
+
+                <el-form-item label="浠诲姟鍏宠仈" prop="longTask">
+                  <el-radio-group v-model="form.appltype">
+                    <el-radio label="1">绉戝鍏宠仈</el-radio>
+                    <el-radio label="2">鐥呭尯鍏宠仈</el-radio>
+                    <el-radio label="3">鐤剧梾鍏宠仈</el-radio>
+                    <el-radio label="4">鎵嬫湳鍏宠仈</el-radio>
+                  </el-radio-group>
                 </el-form-item>
+                <el-row v-if="form.appltype == 1">
+                  <el-col :span="20"
+                    ><el-form-item label="閫傜敤绉戝" prop="region">
+                      <el-select
+                        v-model="deptcodesWards"
+                        @remove-tag="removetag"
+                        style="width: 400px"
+                        size="medium"
+                        multiple
+                        filterable
+                        placeholder="璇烽�夋嫨绉戝"
+                      >
+                        <el-option
+                          class="ruleFormaa"
+                          v-for="item in belongDepts"
+                          :label="item.deptName"
+                          :value="item.deptCode"
+                        >
+                        </el-option>
+                      </el-select> </el-form-item
+                  ></el-col>
+                </el-row>
+                <el-row v-if="form.appltype == 2">
+                  <el-col :span="20"
+                    ><el-form-item label="閫傜敤鐥呭尯" prop="region">
+                      <el-select
+                        v-model="leavehospitaldistrictcodes"
+                        style="width: 400px"
+                        @remove-tag="removehpsp"
+                        size="medium"
+                        multiple
+                        filterable
+                        placeholder="璇烽�夋嫨鐥呭尯"
+                      >
+                        <el-option
+                          class="ruleFormaa"
+                          v-for="item in belongWards"
+                          :label="item.districtName"
+                          :value="item.districtCode"
+                        >
+                        </el-option>
+                      </el-select> </el-form-item
+                  ></el-col>
+                </el-row>
+                <el-row v-if="form.appltype == 3">
+                  <div class="xinz-infs">
+                    <el-form-item>
+                      <template #label>
+                        <el-tooltip
+                          class="item"
+                          effect="light"
+                          content="閫夋嫨濂介�傜敤鐤剧梾鍚庯紝鍙互鏂逛究鎮ㄩ�氳繃鐤剧梾璇婃柇鏌ユ壘鍒板搴旂殑鐥呬汉!"
+                          placement="top-start"
+                        >
+                          <i class="el-icon-warning-outline"></i>
+                        </el-tooltip>
+                      </template>
+                      <div style="margin-bottom: 10px">
+                        <el-button
+                          type="warning"
+                          @click="$refs.child.handleAddpatient()"
+                          >娣诲姞鐤剧梾璇婃柇</el-button
+                        >
+                      </div>
+                      <el-tag
+                        v-for="tag in diagglist"
+                        @close="removediagg(tag.icd10code)"
+                        type="warning"
+                        closable
+                        :disable-transitions="false"
+                      >
+                        {{ tag.icdname }}
+                      </el-tag>
+                      <!-- <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> -->
+                    </el-form-item>
+                  </div>
+                </el-row>
+                <el-row v-if="form.appltype == 4">
+                  <el-col :span="20"
+                    ><el-form-item label="閫傜敤鎵嬫湳" prop="region">
+                      <el-select
+                        v-model="operationcodes"
+                        style="width: 400px"
+                        @remove-tag="removeopera"
+                        size="medium"
+                        :remote-method="remoteopcode"
+                        multiple
+                        filterable
+                        remote
+                        placeholder="璇烽�夋嫨鎵嬫湳"
+                      >
+                        <el-option
+                          class="ruleFormaa"
+                          v-for="item in baseoperaList"
+                          :label="item.opdesc"
+                          :value="item.opcode"
+                        >
+                        </el-option>
+                      </el-select> </el-form-item
+                  ></el-col>
+                </el-row>
               </el-form>
             </div>
           </div>
@@ -341,45 +399,6 @@
             <div class="examine-jic">
               <div class="jic-value">
                 <el-row :gutter="20">
-                  <!--鐢ㄦ埛鏁版嵁-->
-                  <!-- <el-form
-                    :model="topqueryParams"
-                    ref="queryForm"
-                    size="small"
-                    :inline="true"
-                    v-show="showSearch"
-                    label-width="98px"
-                  >
-                    <el-form-item label="鎮h�呭悕绉�">
-                      <el-input v-model="topqueryParams.name"></el-input>
-                    </el-form-item>
-
-                    <el-form-item label="灏辫瘖绉戝">
-                      <el-input v-model="topqueryParams.deptName"></el-input>
-                    </el-form-item>
-                    <el-form-item>
-                      <el-button
-                        type="primary"
-                        icon="el-icon-search"
-                        size="medium"
-                        @click="handleQuery"
-                        >鎼滅储</el-button
-                      >
-                      <el-button
-                        icon="el-icon-refresh"
-                        size="medium"
-                        @click="resetQuery"
-                        >閲嶇疆</el-button
-                      >
-                      <el-button
-                        icon="el-icon-upload2"
-                        size="medium"
-                        type="warning"
-                        >褰撳墠鎮h�呬竴閿彂閫�</el-button
-                      >
-                    </el-form-item>
-                  </el-form> -->
-                  <!-- <el-divider></el-divider> -->
                   <el-row :gutter="10" class="mb8">
                     <el-col :span="1.5">
                       <el-select
@@ -402,7 +421,7 @@
                         icon="el-icon-plus"
                         size="medium"
                         :disabled="!patientqueryParams.allhosp"
-                        @click="handleAddpatient"
+                        @click="handleQuery"
                         >鏂板</el-button
                       >
                     </el-col>
@@ -485,6 +504,18 @@
               <el-form-item label="鎮h�咃細">
                 <el-input
                   v-model="patientqueryParams.name"
+                  @keyup.enter.native="handleQuery"
+                ></el-input>
+              </el-form-item>
+              <el-form-item label="鎮h�呰瘖鏂細">
+                <el-input
+                  v-model="patientqueryParams.leavediagname"
+                  @keyup.enter.native="handleQuery"
+                ></el-input>
+              </el-form-item>
+              <el-form-item label="涓绘不鍖荤敓锛�">
+                <el-input
+                  v-model="patientqueryParams.drname"
                   @keyup.enter.native="handleQuery"
                 ></el-input>
               </el-form-item>
@@ -733,7 +764,7 @@
                 <el-button
                   icon="el-icon-refresh"
                   size="medium"
-                  @click="resetQuery"
+                  @click="resetQuerymb"
                   >閲嶇疆</el-button
                 >
               </el-form-item>
@@ -760,6 +791,13 @@
         </div>
       </div>
     </el-drawer>
+    <Optional-Form
+      ref="child"
+      :dialogVisiblepatient="dialogVisiblepatientjb"
+      :overallCase="diagglist"
+      @addoption="dialogVisiblepatientjb = false"
+      @kkoption="dialogVisiblepatientjb = true"
+    />
   </div>
 </template>
 
@@ -770,19 +808,34 @@
 import store from "@/store";
 import {
   getTaskpatientQC,
-  getlibrarylist,
-  getFollowuplist,
+  taskoperhospgetsondel,
+  taskdiaghospgetsondel,
+  getillnesslist,
+  getbaseopera,
+  Externallist,
   getQtemplatelist,
+  getQtemplateobj,
+  taskgetQtemplateobj,
   TaskQuestioncomit,
-  getTaskInfo,
-  gethetaskinfo,
-  delhetaskinfo,
+  deleteTaskQuestioncomit,
+  Questionnairetaskgetson,
+  getTaskQuestioncomit,
+  depthospgetson,
+  getillness,
   Editsingletask,
+  getQtemplateclassify,
+  taskdepthospgetsondel,
+  taskdepthospgetsonlist,
+  taskdiaggetlist,
+  taskopergetlist,
+  getTaskInfo,
   getheLibraryAssort,
+  getlibrarylist,
 } from "@/api/AiCentre/index";
 import { listDept } from "@/api/system/dept";
 import { getToken } from "@/utils/auth";
 import SFtable from "@/components/SFtable"; //琛ㄦ牸缁勪欢
+import OptionalForm from "@/components/OptionalForm";
 import SortCheckbox from "@/components/SortCheckbox"; //琛ㄦ牸缁勪欢
 
 export default {
@@ -798,6 +851,7 @@
       libName: "",
       overallCase: [], //閫夋嫨鎮h�呮��
       allpids: [],
+      diagglist: [],
       libId: null, //妯℃澘搴撴ā鏉縤d
       Editprogress: 1, //缂栬緫杩涘害
       drawermb: false, //閫夋嫨妯℃澘寮圭獥
@@ -805,15 +859,20 @@
       loading: false, // 閬僵灞�
       patientloading: false, // 閬僵灞�
       dialogVisiblepatient: false, //娣诲姞鎮h�呭脊妗�
+      dialogVisiblepatientjb: false, //娣诲姞鐤剧梾寮规
       radio: 1,
       checkboxlist: [],
       selectedOrder: [],
+      baseoperaList: [],
       // 绉戝/鐥呭尯
-      belongWards: [],
       belongWards: [],
       tableLabel: [],
       questionList: [],
       uploadingData: [],
+      deptcodesWards: [], //绉戝鏁版嵁
+      leavehospitaldistrictcodes: [], //鐥呭尯鏁版嵁
+      operationcodes: [], //鎵嬫湳鏁版嵁
+      illnesscodes: [], //鐤剧梾鏁版嵁
       htmlRichText: "<p>Hello, <strong>world</strong>!</p>",
       // 鎮h�呰〃鍗�
       tableLabelhz: [
@@ -900,6 +959,8 @@
       patientqueryParams: {
         pageNum: 1, //
         pageSize: 10,
+        leavehospitaldistrictcodes: [],
+        leaveldeptcodes: [],
       },
       topicoptions: [{ children: [{ children: [] }] }],
       showSearch: true, //
@@ -965,6 +1026,8 @@
       ],
       tasktopic: null, //鏂板绫诲瀷
       SelectPatientslist: [],
+      belongDepts: [],
+
       form: {
         patTaskRelevances: [],
         sendType: 1,
@@ -1021,7 +1084,7 @@
       quote: false,
     };
   },
-  components: { SFtable, SortCheckbox },
+  components: { SFtable, OptionalForm, SortCheckbox },
 
   created() {
     this.id = this.$route.query.id;
@@ -1145,12 +1208,19 @@
       }
     },
     // 淇濆瓨
-    submitForm(formName) {
+    async submitForm(formName) {
       this.form.preachform = this.checkList.join(",");
       // this.formatFn(1);
       if (!this.form.patTaskRelevances[0] && this.form.longTask == 0) {
-        this.$modal.msgError("璇烽�夋嫨鐥呬汉");
-        return;
+        try {
+          // 绛夊緟鐢ㄦ埛纭
+          await this.$modal.confirm("褰撳墠浠诲姟鏈�夋嫨鎮h�呮槸鍚︿繚瀛橈紵");
+          // 鍙湁鐢ㄦ埛鐐瑰嚮鈥滅‘璁も�濆悗锛屼唬鐮佹墠浼氭墽琛屽埌杩欓噷
+        } catch (error) {
+          // 鐢ㄦ埛鐐瑰嚮浜嗏�滃彇娑堚�濓紝鐩存帴涓柇鍑芥暟鎵ц
+          this.$modal.msgWarning("鎿嶄綔宸插彇娑�");
+          return; // 鍏抽敭锛氳繖閲宺eturn鐩存帴閫�鍑哄嚱鏁�
+        }
       }
       if (!this.form.templatename) {
         this.$modal.msgError("鏈�夋嫨妯℃澘");
@@ -1163,6 +1233,36 @@
         this.$modal.msgError("璇烽�夋嫨鏈嶅姟绫诲瀷");
         this.submitLoading = false;
 
+        return;
+      }
+      if (this.form.appltype == 1) {
+        this.leavehospitaldistrictcodes = [];
+        this.operationcodes = [];
+        this.illnesscodes = [];
+      } else if (this.form.appltype == 2) {
+        this.deptcodesWards = [];
+        this.operationcodes = [];
+        this.illnesscodes = [];
+      } else if (this.form.appltype == 3) {
+        this.deptcodesWards = [];
+        this.leavehospitaldistrictcodes = [];
+        this.operationcodes = [];
+      } else if (this.form.appltype == 4) {
+        this.deptcodesWards = [];
+        this.illnesscodes = [];
+        this.leavehospitaldistrictcodes = [];
+      }
+      if (
+        this.deptcodesWards[0] ||
+        this.leavehospitaldistrictcodes[0] ||
+        this.diagglist[0] ||
+        this.operationcodes[0] ||
+        this.form.longTask == 2 ||
+        this.serviceType == 3
+      ) {
+      } else {
+        this.$modal.msgError("璇烽�夋嫨浠诲姟鍏宠仈鏉′欢");
+        this.submitLoading = false;
         return;
       }
       const filteredArray = this.variableList.filter(
@@ -1180,12 +1280,13 @@
       if (!this.form.type) {
         this.form.type = this.$route.query.type;
       }
-      this.form.leaveldeptcodes = store.getters.belongDepts.map(
-        (obj) => obj.deptCode
-      );
-      this.form.leavehospitaldistrictcodes = store.getters.belongWards.map(
-        (obj) => obj.districtCode
-      );
+      this.form.deptcode = this.deptcodesWards.join(",");
+      this.form.leavehospitaldistrictcode =
+        this.leavehospitaldistrictcodes.join(",");
+      this.form.opcode = this.operationcodes.join(",");
+      this.form.icd10code = this.diagglist
+        .map((item) => item.icdcode)
+        .join(",");
       Editsingletask(this.form).then((res) => {
         if (res.code == 200) {
           if (this.form.taskid) {
@@ -1430,9 +1531,54 @@
     },
     getList() {},
     handleQuery() {
+      if (this.patientqueryParams.allhosp == 6) {
+        this.Externallist();
+        console.log();
+
+        return;
+      }
+      if (this.patientqueryParams.searchscope == 1) {
+        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        this.patientqueryParams.leavehospitaldistrictcodes = [];
+      } else if (this.patientqueryParams.searchscope == 2) {
+        this.patientqueryParams.leavehospitaldistrictcodes =
+          store.getters.belongWards.map((obj) => obj.districtCode);
+        this.patientqueryParams.leaveldeptcodes = [];
+      } else {
+        this.patientqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+          (obj) => obj.deptCode
+        );
+        this.patientqueryParams.leavehospitaldistrictcodes =
+          store.getters.belongWards.map((obj) => obj.districtCode);
+      }
+      if (
+        !this.patientqueryParams.leavehospitaldistrictcodes ||
+        !this.patientqueryParams.leavehospitaldistrictcodes[0]
+      )
+        this.patientqueryParams.leavehospitaldistrictcodes = null;
+      if (
+        !this.patientqueryParams.leaveldeptcodes ||
+        !this.patientqueryParams.leaveldeptcodes[0]
+      )
+        this.patientqueryParams.leaveldeptcodes = null;
       this.handleAddpatient();
     },
-    resetQuery() {},
+    resetQuery() {
+      this.patientqueryParams = {
+        pageNum: 1, //
+        pageSize: 10,
+        topica: 1, //0鍏ㄩ儴1绉戝2鐥呭尯
+        leavehospitaldistrictcodes: [],
+        leaveldeptcodes: [],
+      };
+      this.handleQuery();
+    },
+    resetQuerymb() {
+      this.topqueryParams = { svyname: "" };
+      this.handleQuerymb();
+    },
     handleClosehz() {
       this.dialogVisiblepatient = false;
     },
@@ -1510,6 +1656,44 @@
       console.log("褰撳墠閫変腑:", selectedValues);
       console.log("閫変腑椤哄簭:", selectedOrder);
     },
+    getillnesslist() {
+      getillnesslist({
+        pageNum: 1,
+        pageSize: 1000,
+      }).then((res) => {
+        this.donorchargeList = res.rows;
+      });
+      getbaseopera({
+        pageNum: 1,
+        pageSize: 1000,
+      }).then((res) => {
+        this.baseoperaList = res.rows;
+      });
+    },
+    // 鎵嬫湳鏌ヨ
+    remoteopcode(name) {
+      if (name) {
+        getbaseopera({
+          pageNum: 1,
+          pageSize: 1000,
+          opdesc: name,
+        }).then((res) => {
+          this.baseoperaList = res.rows;
+        });
+      }
+    },
+    // 鐤剧梾鏌ヨ
+    remotedonor(name) {
+      if (name) {
+        getbaseopera({
+          pageNum: 1,
+          pageSize: 1000,
+          opdesc: name,
+        }).then((res) => {
+          this.baseoperaList = res.rows;
+        });
+      }
+    },
     // 渚濈収鏂板鏃跺鐞�
     neWaddfn() {
       this.id = null;
@@ -1534,9 +1718,45 @@
     },
     // 鑾峰彇绉戝鍒楄〃
     listDept() {
-      listDept().then((res) => {
-        this.topicoptions = this.handleTree(res.data, "deptId");
-        console.log(this.topicoptions, "topicoptions");
+      this.leavehospitaldistrictcodes = [];
+      this.deptcodesWards = [];
+      this.queryParamsdept.taskId = this.form.taskid;
+      taskdepthospgetsonlist(this.queryParamsdept).then((res) => {
+        if (res.code == 200) {
+          let arr = res.rows;
+          arr.forEach((item) => {
+            if (item.deptType == 1) {
+              this.deptlist.push(item);
+              this.deptcodesWards.push(item.deptCode);
+            } else if (item.deptType == 2) {
+              this.hosplist.push(item);
+              this.leavehospitaldistrictcodes.push(item.deptCode);
+            }
+          });
+        }
+      });
+      taskdiaggetlist(this.queryParamsdept).then((res) => {
+        if (res.code == 200) {
+          let arr = res.rows;
+          arr.forEach((item) => {
+            getillnesslist({
+              icdcode: item.icd10code,
+            }).then((res) => {
+              item.icdname = res.rows[0].icdname;
+              this.diagglist.push(item);
+            });
+            this.illnesscodes.push(item.icd10code);
+          });
+        }
+      });
+      taskopergetlist(this.queryParamsdept).then((res) => {
+        if (res.code == 200) {
+          let arr = res.rows;
+          arr.forEach((item) => {
+            this.operlist.push(item);
+            this.operationcodes.push(item.opcode);
+          });
+        }
       });
     },
     // 鏂板娲鹃�佹偅鑰�
@@ -1642,7 +1862,7 @@
       TaskQuestioncomit(this.Tasktemplate).then((response) => {
         console.log(response);
         this.previewtf = false;
-        this.drawermb =false;
+        this.drawermb = false;
         this.form.templateid = response.data;
         this.form.libtemplateid = this.libId;
         this.form.templatename = this.libName;
@@ -1679,6 +1899,65 @@
         this.checkList = list;
       }
     },
+    // 浠诲姟绉戝鍒犻櫎瑙﹀彂
+    removetag(row) {
+      let result = this.deptlist
+        .filter((item) => item.deptCode == row)
+        .map((item) => item.id);
+
+      if (result.length) {
+        taskdepthospgetsondel(result).then((res) => {
+          if (res.code) {
+            this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+          }
+        });
+      }
+    },
+    // 闄㈠尯鍒犻櫎鍒犻櫎瑙﹀彂
+    removehpsp(row) {
+      let result = this.hosplist
+        .filter((item) => item.deptCode == row)
+        .map((item) => item.id);
+      if (result.length) {
+        taskdepthospgetsondel(result).then((res) => {
+          if (res.code) {
+            this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+          }
+        });
+      }
+    },
+    // 鎵嬫湳鍒犻櫎瑙﹀彂
+    removeopera(row) {
+      let result = this.operlist
+        .filter((item) => item.opcode == row)
+        .map((item) => item.id);
+      if (result.length) {
+        taskoperhospgetsondel(result).then((res) => {
+          if (res.code) {
+            this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+          }
+        });
+      }
+    },
+    // 鐤剧梾鍒犻櫎瑙﹀彂
+    removediagg(row) {
+      console.log(row, "row");
+      console.log(this.diagglist, "this.diagglist");
+
+      let result = this.diagglist
+        .filter((item) => item.icd10code == row)
+        .map((item) => item.id);
+      if (result.length) {
+        taskdiaghospgetsondel(result).then((res) => {
+          if (res.code) {
+            this.diagglist = this.diagglist.filter(
+              (item) => item.icd10code != row
+            );
+            this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+          }
+        });
+      }
+    },
     /** 瀵煎叆鎸夐挳鎿嶄綔 */
     handleImport() {
       this.upload.title = "鐢ㄦ埛瀵煎叆";

--
Gitblit v1.9.3