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