From 21051d356bb8589ad088abb52492fd2a1909ed9e Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期六, 14 三月 2026 10:39:09 +0800
Subject: [PATCH] 测试完成
---
dist.zip | 0
src/store/modules/user.js | 18
vue.config.js | 2
src/utils/sipService.js | 4
src/views/followvisit/Continue/ContinueFordetails.vue | 2389 +++++++++++++++++++++++++
src/views/login-sy.vue | 16
src/views/followvisit/Continue/index.vue | 2094 ++++++++++++++++++++++
src/views/login.vue | 111
src/main.js | 8
src/views/followvisit/record/detailpage/index.vue | 786 ++++++-
src/views/sfstatistics/percentage/index.vue | 40
src/views/patient/patient/hospital.vue | 3
src/views/patient/patient/behospitalized.vue | 9
src/components/CallButton/index.vue | 2
src/api/AiCentre/EChartsdata.js | 1
src/views/followvisit/discharge/index.vue | 58
16 files changed, 5,280 insertions(+), 261 deletions(-)
diff --git a/shiyi.zip b/dist.zip
similarity index 63%
rename from shiyi.zip
rename to dist.zip
index fa8a243..3c26eda 100644
--- a/shiyi.zip
+++ b/dist.zip
Binary files differ
diff --git a/src/api/AiCentre/EChartsdata.js b/src/api/AiCentre/EChartsdata.js
index d6ebdb0..18c600d 100644
--- a/src/api/AiCentre/EChartsdata.js
+++ b/src/api/AiCentre/EChartsdata.js
@@ -65,6 +65,7 @@
return request({
url: "/smartor/organization/list",
method: "get",
+ params: data,
});
}
// 鍙戦�佺煭淇�
diff --git a/src/components/CallButton/index.vue b/src/components/CallButton/index.vue
index 76a2b82..8e45ab5 100644
--- a/src/components/CallButton/index.vue
+++ b/src/components/CallButton/index.vue
@@ -200,7 +200,7 @@
this.sipConfig.sipUri = `${this.randomNum}@192.168.10.124`;
} else if (orgName == "榫欐硥甯備汉姘戝尰闄�") {
this.sipConfig.sipUri = `${this.randomNum}@10.10.0.220`;
- } else if (orgName == "鏉窞甯傜涓�浜烘皯鍖婚櫌婀栨花闄㈠尯"||orgName == "鏉窞甯傜涓�浜烘皯鍖婚櫌鍚村北闄㈠尯") {
+ } else if (orgName == "绗竴浜烘皯鍖婚櫌婀栨花闄㈠尯"||orgName == "绗竴浜烘皯鍖婚櫌鍚村北闄㈠尯") {
this.sipConfig.sipUri = `${this.randomNum}@192.169.129.198`;
}
} catch (error) {
diff --git a/src/main.js b/src/main.js
index ebc84a8..06edb6c 100644
--- a/src/main.js
+++ b/src/main.js
@@ -92,6 +92,14 @@
Vue.filter(key, filters[key]);
}
import moment from "moment"
+// 1. 鍦╩ain.js涓坊鍔犻敊璇洃鍚�
+window.addEventListener('unhandledrejection', (event) => {
+ if (event.reason && event.reason.message &&
+ event.reason.message.includes('Loading chunk')) {
+ // 閲嶆柊鍔犺浇椤甸潰
+ window.location.reload();
+ }
+});
Vue.prototype.$moment = moment;
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index bf1e9b3..4d12013 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -209,13 +209,13 @@
localStorage.setItem("YongHuID", "1512710152715767808");
localStorage.setItem("YongHuXM", "LDRMYY");
} else if (orgid == "1" && campusid == 1) {
- localStorage.setItem("orgname", "鏉窞甯傜涓�浜烘皯鍖婚櫌婀栨花闄㈠尯");
+ localStorage.setItem("orgname", "绗竴浜烘皯鍖婚櫌婀栨花闄㈠尯");
localStorage.setItem("ZuHuID", "");
localStorage.setItem("deptCode", "");
localStorage.setItem("YongHuID", "");
localStorage.setItem("YongHuXM", "");
} else if (orgid == "1" && campusid == 2) {
- localStorage.setItem("orgname", "鏉窞甯傜涓�浜烘皯鍖婚櫌鍚村北闄㈠尯");
+ localStorage.setItem("orgname", "绗竴浜烘皯鍖婚櫌鍚村北闄㈠尯");
localStorage.setItem("ZuHuID", "");
localStorage.setItem("deptCode", "");
localStorage.setItem("YongHuID", "");
@@ -223,6 +223,12 @@
} else if (orgid == "47246116333112211A1001") {
localStorage.setItem("orgname", "缂欎簯鍘夸汉姘戝尰闄�");
localStorage.setItem("ZuHuID", "1429338802177000010");
+ localStorage.setItem("deptCode", "");
+ localStorage.setItem("YongHuID", "");
+ localStorage.setItem("YongHuXM", "");
+ } else if (orgid == "47226079133110211G1001") {
+ localStorage.setItem("orgname", "涓芥按甯傚骞间繚鍋ラ櫌");
+ localStorage.setItem("ZuHuID", "1429338802177000014");
localStorage.setItem("deptCode", "");
localStorage.setItem("YongHuID", "");
localStorage.setItem("YongHuXM", "");
@@ -256,6 +262,14 @@
commit("SET_nickNAME", user.nickName);
commit("SET_Id", user.userId);
commit("SET_hisUserId", user.hisUserId);
+
+ // if (user.userName == "admin") {
+ // commit("SET_leaveldeptcodes", []);
+ // commit("SET_leavehospitaldistrictcodes", []);
+ // } else {
+ // commit("SET_leavehospitaldistrictcodes", user.belongWards);
+ // commit("SET_leaveldeptcodes", user.belongDepts);
+ // }
commit("SET_leavehospitaldistrictcodes", user.belongWards);
commit("SET_leaveldeptcodes", user.belongDepts);
commit("SET_AVATAR", avatar);
diff --git a/src/utils/sipService.js b/src/utils/sipService.js
index 4fc4f96..5641a20 100644
--- a/src/utils/sipService.js
+++ b/src/utils/sipService.js
@@ -11,11 +11,11 @@
wsUrl: "wss://10.10.0.220:7443",
domain: "10.10.0.220",
},
- 鏉窞甯傜涓�浜烘皯鍖婚櫌婀栨花闄㈠尯: {
+ 绗竴浜烘皯鍖婚櫌婀栨花闄㈠尯: {
wsUrl: "wss://192.169.129.198:7443",
domain: "192.169.129.198",
},
- 鏉窞甯傜涓�浜烘皯鍖婚櫌鍚村北闄㈠尯: {
+ 绗竴浜烘皯鍖婚櫌鍚村北闄㈠尯: {
wsUrl: "wss://192.169.129.198:7443",
domain: "192.169.129.198",
},
diff --git a/src/views/followvisit/Continue/ContinueFordetails.vue b/src/views/followvisit/Continue/ContinueFordetails.vue
new file mode 100644
index 0000000..c07bcef
--- /dev/null
+++ b/src/views/followvisit/Continue/ContinueFordetails.vue
@@ -0,0 +1,2389 @@
+<template>
+ <!-- 寤剁画鎶ょ悊椤甸潰 -->
+ <div class="ContinuityCarePage" id="app-container">
+ <!-- 绗竴閮ㄥ垎锛氭偅鑰呭熀纭�淇℃伅 -->
+ <div class="patient-info-section">
+ <div class="headline">
+ <div>鎮h�呭熀纭�淇℃伅</div>
+ </div>
+ <div class="patient-info-form">
+ <el-form
+ ref="patientForm"
+ :model="patientForm"
+ :rules="patientRules"
+ label-width="120px"
+ >
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="鎮h�呭鍚�" prop="name">
+ <el-input
+ v-model="patientForm.name"
+ placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+ maxlength="30"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鎬у埆" prop="sex">
+ <el-select
+ v-model="patientForm.sex"
+ placeholder="璇烽�夋嫨"
+ clearable
+ >
+ <el-option label="鐢�" :value="1"></el-option>
+ <el-option label="濂�" :value="2"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="骞撮緞" prop="age">
+ <el-input
+ v-model="patientForm.age"
+ placeholder="璇疯緭鍏ュ勾榫�"
+ maxlength="3"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="鑱旂郴鐢佃瘽" prop="telcode">
+ <el-input
+ v-model="patientForm.telcode"
+ placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
+ maxlength="20"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="浣忛櫌鍙�" prop="hospitalNumber">
+ <el-input
+ v-model="patientForm.hospitalNumber"
+ placeholder="璇疯緭鍏ヤ綇闄㈠彿"
+ maxlength="50"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鍑洪櫌鏃ユ湡" prop="dischargeDate">
+ <el-date-picker
+ v-model="patientForm.dischargeDate"
+ type="date"
+ placeholder="閫夋嫨鍑洪櫌鏃ユ湡"
+ value-format="yyyy-MM-dd"
+ style="width: 100%"
+ >
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="璇婃柇鍚嶇О" prop="diagnosis">
+ <el-input
+ v-model="patientForm.diagnosis"
+ placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
+ maxlength="100"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璐d换鎶ゅ+" prop="nurseName">
+ <el-input
+ v-model="patientForm.nurseName"
+ placeholder="璇疯緭鍏ヨ矗浠绘姢澹�"
+ maxlength="50"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="24">
+ <el-form-item label="灞呬綇鍦板潃" prop="address">
+ <el-input
+ v-model="patientForm.address"
+ placeholder="璇疯緭鍏ヨ缁嗗眳浣忓湴鍧�"
+ maxlength="200"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="浜插睘濮撳悕" prop="relativeName">
+ <el-input
+ v-model="patientForm.relativeName"
+ placeholder="璇疯緭鍏ヤ翰灞炲鍚�"
+ maxlength="30"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜插睘鐢佃瘽" prop="relativeTel">
+ <el-input
+ v-model="patientForm.relativeTel"
+ placeholder="璇疯緭鍏ヤ翰灞炵數璇�"
+ maxlength="20"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <!-- 寤剁画鎶ょ悊姹囨�讳俊鎭� -->
+ <el-row :gutter="20" v-if="continuitySummary.continueCount > 0">
+ <el-col :span="24">
+ <el-form-item label="寤剁画鎶ょ悊姹囨��">
+ <div class="continuity-summary">
+ <div class="summary-item">
+ <span class="label">寤剁画娆℃暟锛�</span>
+ <span class="value"
+ >{{ continuitySummary.continueCount }} 娆�</span
+ >
+ </div>
+ <div class="summary-item">
+ <span class="label">鏈�鏂版湇鍔★細</span>
+ <span class="value">{{
+ formatDisplayTime(continuitySummary.continueTimeNow)
+ }}</span>
+ </div>
+ <div class="summary-item">
+ <span class="label">涓嬫鏈嶅姟锛�</span>
+ <span class="value">{{
+ formatDisplayTime(continuitySummary.continueTimeNext)
+ }}</span>
+ </div>
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <!-- 鎿嶄綔鎸夐挳 -->
+ <el-form-item>
+ <el-button
+ type="primary"
+ @click="savePatientInfo"
+ :loading="savingPatientInfo"
+ >
+ 淇濆瓨鎮h�呬俊鎭�
+ </el-button>
+ <el-button @click="resetPatientInfo">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ </div>
+ <!-- 绗簩閮ㄥ垎锛氭湇鍔″熀纭�淇℃伅 -->
+ <div class="basic-info-section">
+ <div class="headline">
+ <div>鏈嶅姟鍩虹淇℃伅</div>
+ </div>
+ <div class="basic-info-container">
+ <!-- 宸﹀崐閮ㄥ垎锛氬綋鍓嶆湇鍔¢殢璁垮唴瀹癸紙鍙锛� -->
+ <div class="followup-content readonly-content">
+ <div class="sub-headline">
+ <i class="el-icon-document"></i> 褰撳墠鏈嶅姟闅忚鍐呭锛堝彧璇伙級
+ <el-button
+ type="text"
+ size="small"
+ @click="toggleQuestionSelection"
+ style="margin-left: 10px"
+ >
+ {{ showQuestionSelector ? "闅愯棌闂閫夊彇" : "閫夊彇寤剁画闂" }}
+ </el-button>
+ </div>
+
+ <!-- 闂閫夊彇闈㈡澘 -->
+ <div v-if="showQuestionSelector" class="question-selector-panel">
+ <div class="selector-header">
+ <span>璇烽�夋嫨寤剁画闂锛堝彲澶氶�夛級锛�</span>
+ <el-button
+ type="primary"
+ size="small"
+ @click="confirmQuestionSelection"
+ >
+ 纭閫夊彇
+ </el-button>
+ </div>
+ <div class="question-list">
+ <el-checkbox-group v-model="selectedQuestionIds">
+ <div
+ v-for="(question, index) in availableQuestions"
+ :key="question.id"
+ class="question-item"
+ >
+ <el-checkbox :label="question.id">
+ <div class="question-content">
+ <span class="question-index"
+ >{{ question.index + 1 }}.</span
+ >
+ <span class="question-text">{{ question.text }}</span>
+ </div>
+ </el-checkbox>
+ </div>
+ </el-checkbox-group>
+ </div>
+ </div>
+ <div class="content-container">
+ <el-tabs v-model="activeName" type="border-card">
+ <el-tab-pane name="wj">
+ <span slot="label"
+ ><i class="el-icon-notebook-1"></i> 闂嵎闅忚缁撴灉</span
+ >
+ <div class="CONTENT">
+ <div class="title">{{ taskname ? taskname : "闂嵎" }}</div>
+ <div class="preview-left" v-if="!Voicetype">
+ <div
+ class="topic-dev"
+ v-for="(item, index) in tableDatatop"
+ :key="item.id"
+ >
+ <!-- 鍗曢�� -->
+ <div
+ :class="getTopicClass(item)"
+ :key="index"
+ v-if="item.scriptType == 1 && !item.astrict"
+ >
+ <div class="dev-text">
+ {{ index + 1 }}銆乕鍗曢�塢<span>{{
+ item.scriptContent
+ }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-radio-group v-model="item.scriptResult" disabled>
+ <el-radio
+ v-for="(
+ items, indexs
+ ) in item.svyTaskTemplateTargetoptions"
+ :class="getOptionClass(items)"
+ :key="indexs"
+ :label="items.optioncontent"
+ >{{ items.optioncontent }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ <div
+ v-if="item.showAppendInput || item.answerps"
+ class="append-input-container"
+ >
+ <el-input
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ュ叿浣撲俊鎭�"
+ v-model="item.answerps"
+ readonly
+ ></el-input>
+ </div>
+ <div v-show="item.prompt">
+ <el-alert :title="item.prompt" type="warning">
+ </el-alert>
+ </div>
+ </div>
+ <!-- 澶氶�� -->
+ <div
+ :class="
+ item.isabnormal
+ ? 'scriptTopic-isabnormal'
+ : 'scriptTopic-dev'
+ "
+ :key="index"
+ v-if="item.scriptType == 2 && !item.astrict"
+ >
+ <div class="dev-text">
+ {{ index + 1 }}銆乕澶氶�塢<span>{{
+ item.scriptContent
+ }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-checkbox-group
+ v-model="item.scriptResult"
+ disabled
+ >
+ <el-checkbox
+ :class="items.isabnormal ? 'red-star' : ''"
+ v-for="(
+ items, indexs
+ ) in item.svyTaskTemplateTargetoptions"
+ :key="indexs"
+ :label="items.optioncontent"
+ >
+ {{ items.optioncontent }}
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+ <div v-show="item.prompt && item.scriptResult[0]">
+ <el-alert :title="item.prompt" type="warning">
+ </el-alert>
+ </div>
+ </div>
+ <!-- 濉┖ -->
+ <div
+ class="scriptTopic-dev"
+ :key="index"
+ v-if="item.scriptType == 4 && !item.astrict"
+ >
+ <div class="dev-text">
+ {{ index + 1 }}銆乕闂瓟]<span>{{
+ item.scriptContent
+ }}</span>
+ <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
+ </div>
+ <div class="dev-xx" v-if="item.valueType == 3">
+ <el-input
+ type="text"
+ placeholder="璇疯緭鍏ョ瓟妗�"
+ v-model="item.scriptResult"
+ readonly
+ >
+ </el-input>
+ </div>
+ <div class="dev-xx" v-else>
+ <el-input
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ョ瓟妗�"
+ v-model="item.scriptResult"
+ readonly
+ >
+ </el-input>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="preview-left" v-else>
+ <div
+ class="topic-dev"
+ v-for="(item, index) in tableDatatop"
+ :key="item.id"
+ >
+ <div v-if="item.targetvalue">
+ <div class="dev-text">
+ {{ index + 1 }}銆乕鍗曢�塢<span>{{
+ item.questiontext
+ }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-radio-group v-model="item.matchedtext" disabled>
+ <el-radio
+ v-for="(items, index) in item.scriptResult"
+ :key="index"
+ :label="items"
+ :class="items.isabnormal ? 'red-star' : ''"
+ >{{ items }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ <div v-show="item.prompt">
+ <el-alert :title="item.prompt" type="warning">
+ </el-alert>
+ </div>
+ </div>
+ <div class="scriptTopic-dev" :key="index" v-else>
+ <div class="dev-text">
+ {{ index + 1 }}銆乕闂瓟]<span>{{
+ item.scriptContent
+ }}</span>
+ <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
+ </div>
+ <div class="dev-xx" v-if="item.valueType == 3">
+ <el-input
+ type="text"
+ placeholder="璇疯緭鍏ョ瓟妗�"
+ v-model="item.scriptResult"
+ readonly
+ >
+ </el-input>
+ </div>
+ <div class="dev-xx" v-else>
+ <el-input
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ョ瓟妗�"
+ v-model="item.scriptResult"
+ readonly
+ >
+ </el-input>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </el-tab-pane>
+ <el-tab-pane name="yy">
+ <span slot="label"
+ ><i class="el-icon-headset"></i> 璇煶闅忚璇︽儏</span
+ >
+ <div class="borderdiv">
+ <div class="title">{{ taskname ? taskname : "闂嵎" }}</div>
+ <div class="voice-audio">
+ 瀹屾暣璇煶锛�
+ <mini-audio
+ :audio-source="
+ voice ? voice : '@assets/order/example.mp3'
+ "
+ ></mini-audio>
+ </div>
+ <div class="preview-left">
+ <div v-for="item in voiceDatatop">
+ <div class="leftside">
+ <i class="el-icon-phone-outline"></i
+ ><span>{{ item.questiontext }}</span>
+ </div>
+ <div class="offside">
+ <i class="el-icon-user"></i>
+ <div class="offside-value">
+ <el-input
+ type="textarea"
+ :autosize="{ minRows: 1 }"
+ v-model="item.asrtext"
+ readonly
+ ></el-input>
+ <div>
+ <mini-audio
+ :audio-source="
+ item.questionvoice
+ ? item.questionvoice
+ : '@assets/order/example.mp3'
+ "
+ ></mini-audio>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+
+ <!-- 鍙冲崐閮ㄥ垎锛氬巻娆″欢缁姢鐞嗘湇鍔� -->
+ <!-- 鍙冲崐閮ㄥ垎锛氬巻娆″欢缁姢鐞嗘湇鍔� -->
+ <div class="continuity-history">
+ <div class="sub-headline">
+ <i class="el-icon-time"></i> 鍘嗘寤剁画鎶ょ悊鏈嶅姟
+ <el-button
+ type="primary"
+ size="small"
+ icon="el-icon-plus"
+ @click="addContinuityTab"
+ style="margin-left: 10px"
+ >鏂板寤剁画鎶ょ悊</el-button
+ >
+ </div>
+ <div class="history-content">
+ <el-tabs
+ v-model="activeContinuityTab"
+ type="card"
+ closable
+ @tab-remove="removeContinuityTab"
+ @tab-click="handleTabClick"
+ >
+ <el-tab-pane
+ v-for="(item, index) in continuityTabs"
+ :key="item.name"
+ :label="item.title"
+ :name="item.name"
+ >
+ <div class="continuity-form">
+ <el-form
+ :ref="'continuityForm' + index"
+ :model="item.form"
+ :rules="continuityRules"
+ label-width="120px"
+ >
+ <!-- 寤剁画闂琛ㄥ崟 -->
+ <el-form-item label="寤剁画闂" prop="continuityProblems">
+ <div class="continuity-problems-form">
+ <div class="problems-header">
+ <span>宸查�夊彇鐨勫欢缁棶棰橈細</span>
+ <el-button
+ type="text"
+ size="small"
+ icon="el-icon-plus"
+ @click="addContinuityProblem(index)"
+ >
+ 鏂板闂
+ </el-button>
+ </div>
+
+ <!-- 宸查�夊彇鐨勯棶棰樺垪琛� -->
+ <div
+ v-if="
+ item.form.continuityProblems &&
+ item.form.continuityProblems.length > 0
+ "
+ class="problems-list-container"
+ >
+ <div
+ v-for="(problem, problemIndex) in item.form
+ .continuityProblems"
+ :key="problemIndex"
+ class="problem-item"
+ >
+ <div class="problem-content">
+ <div class="problem-meta">
+ <span class="problem-index"
+ >闂 {{ problemIndex + 1 }}</span
+ >
+ <el-select
+ v-model="problem.questionId"
+ placeholder="閫夋嫨闂"
+ size="small"
+ style="width: 300px; margin: 0 10px"
+ @change="
+ handleProblemChange(
+ index,
+ problemIndex,
+ $event
+ )
+ "
+ >
+ <el-option
+ v-for="q in availableQuestions"
+ :key="q.id"
+ :label="q.text"
+ :value="q.id"
+ >
+ <span
+ >{{ q.index + 1 }}.
+ {{ truncateText(q.text, 40) }}</span
+ >
+ </el-option>
+ </el-select>
+ <!-- 淇锛氫紶閫掓纭殑绱㈠紩 -->
+ <el-button
+ type="danger"
+ icon="el-icon-delete"
+ size="mini"
+ circle
+ @click="
+ removeContinuityProblem(index, problemIndex)
+ "
+ >
+ </el-button>
+ </div>
+
+ <!-- 闂嵎寮忛棶棰樺睍绀哄尯鍩� -->
+ <div
+ v-if="problem.questionId"
+ class="question-display-area"
+ >
+ <!-- 鏍规嵁闂绫诲瀷鍔ㄦ�佹覆鏌� -->
+ <div
+ v-if="
+ getQuestionOriginalData(problem.questionId)
+ "
+ class="question-render"
+ >
+ <!-- 鍗曢�夌被鍨� -->
+ <div
+ v-if="
+ getQuestionOriginalData(
+ problem.questionId
+ ).scriptType == 1
+ "
+ class="question-item-render"
+ >
+ <div class="question-text">
+ <strong>[鍗曢�塢</strong>
+ <span>{{
+ getQuestionOriginalData(
+ problem.questionId
+ ).scriptContent
+ }}</span>
+ </div>
+ <div class="question-options">
+ <el-radio-group
+ v-model="problem.selectedOption"
+ >
+ <el-radio
+ v-for="option in getQuestionOriginalData(
+ problem.questionId
+ ).svyTaskTemplateTargetoptions"
+ :key="option.optioncontent"
+ :label="option.optioncontent"
+ :class="getOptionClass(option)"
+ >
+ {{ option.optioncontent }}
+ </el-radio>
+ </el-radio-group>
+ </div>
+ <!-- 闄勫姞杈撳叆妗� -->
+ <div
+ v-if="problem.showAppendInput"
+ class="append-input"
+ style="margin-top: 10px"
+ >
+ <el-input
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ュ叿浣撲俊鎭�"
+ v-model="problem.appendInput"
+ ></el-input>
+ </div>
+ </div>
+
+ <!-- 澶氶�夌被鍨� -->
+ <div
+ v-else-if="
+ getQuestionOriginalData(
+ problem.questionId
+ ).scriptType == 2
+ "
+ class="question-item-render"
+ >
+ <div class="question-text">
+ <strong>[澶氶�塢</strong>
+ <span>{{
+ getQuestionOriginalData(
+ problem.questionId
+ ).scriptContent
+ }}</span>
+ </div>
+ <div class="question-options">
+ <el-checkbox-group
+ v-model="problem.selectedOptions"
+ >
+ <el-checkbox
+ v-for="option in getQuestionOriginalData(
+ problem.questionId
+ ).svyTaskTemplateTargetoptions"
+ :key="option.optioncontent"
+ :label="option.optioncontent"
+ :class="
+ option.isabnormal ? 'red-star' : ''
+ "
+ >
+ {{ option.optioncontent }}
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+ </div>
+
+ <!-- 濉┖/闂瓟绫诲瀷 -->
+ <div
+ v-else-if="
+ getQuestionOriginalData(
+ problem.questionId
+ ).scriptType == 4
+ "
+ class="question-item-render"
+ >
+ <div class="question-text">
+ <strong>[闂瓟]</strong>
+ <span>{{
+ getQuestionOriginalData(
+ problem.questionId
+ ).scriptContent
+ }}</span>
+ <span
+ v-if="
+ getQuestionOriginalData(
+ problem.questionId
+ ).valueType == 3
+ "
+ >(鍙兘杈撳叆鏁板瓧)</span
+ >
+ </div>
+ <div class="question-options">
+ <el-input
+ v-if="
+ getQuestionOriginalData(
+ problem.questionId
+ ).valueType == 3
+ "
+ type="text"
+ placeholder="璇疯緭鍏ョ瓟妗�"
+ v-model="problem.answer"
+ style="width: 200px"
+ ></el-input>
+ <el-input
+ v-else
+ type="textarea"
+ :rows="2"
+ placeholder="璇疯緭鍏ョ瓟妗�"
+ v-model="problem.answer"
+ style="width: 100%"
+ ></el-input>
+ </div>
+ </div>
+ </div>
+ <div v-else class="no-question-data">
+ 闂鏁版嵁鍔犺浇涓�...
+ </div>
+ </div>
+
+ <!-- 鍘熸湁鐨勯棶棰樻弿杩扮瓑瀛楁 -->
+ <div class="problem-detail">
+ <div class="detail-row">
+ <span class="detail-label">褰撳墠鐘舵�侊細</span>
+ <el-select
+ v-model="problem.status"
+ placeholder="閫夋嫨鐘舵��"
+ size="small"
+ style="width: 120px; margin-right: 20px"
+ >
+ <el-option
+ label="鏈鐞�"
+ value="pending"
+ ></el-option>
+ <el-option
+ label="澶勭悊涓�"
+ value="processing"
+ ></el-option>
+ <el-option
+ label="宸茶В鍐�"
+ value="resolved"
+ ></el-option>
+ <el-option
+ label="鎸佺画鍏虫敞"
+ value="watching"
+ ></el-option>
+ </el-select>
+
+ <span
+ class="detail-label"
+ v-if="problem.status === 'resolved'"
+ style="margin-left: 20px"
+ >
+ 瑙e喅鏃ユ湡锛�
+ </span>
+ <el-date-picker
+ v-if="problem.status === 'resolved'"
+ v-model="problem.resolvedDate"
+ type="date"
+ placeholder="閫夋嫨瑙e喅鏃ユ湡"
+ value-format="yyyy-MM-dd"
+ size="small"
+ style="width: 150px; margin-left: 10px"
+ ></el-date-picker>
+ </div>
+
+ <!-- <div class="detail-row">
+ <span class="detail-label">闂鎻忚堪锛�</span>
+ <el-input
+ type="textarea"
+ :rows="2"
+ v-model="problem.description"
+ placeholder="璇疯缁嗘弿杩拌寤剁画闂锛堝彲璁板綍璇勪及缁撴灉銆佸鐞嗗缓璁瓑锛�"
+ size="small"
+ style="flex: 1"
+ ></el-input>
+ </div> -->
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </el-form-item>
+
+ <!-- 寤剁画鎬ф姢鐞嗚褰� -->
+ <el-form-item label="鎶ょ悊璁板綍" prop="careRecord">
+ <el-input
+ type="textarea"
+ :rows="4"
+ v-model="item.form.careRecord"
+ placeholder="璇疯緭鍏ュ欢缁�ф姢鐞嗚褰�"
+ clearable
+ ></el-input>
+ </el-form-item>
+
+ <!-- 璐d换鎶ゅ+銆佸洖璁垮舰寮忋�佹湇鍔℃椂闂� -->
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="璐d换鎶ゅ+" prop="dutyNurse">
+ <el-input
+ v-model="item.form.dutyNurse"
+ placeholder="璇疯緭鍏ヨ矗浠绘姢澹�"
+ clearable
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍥炶褰㈠紡" prop="visitType">
+ <el-select
+ v-model="item.form.visitType"
+ placeholder="璇烽�夋嫨鍥炶褰㈠紡"
+ style="width: 100%"
+ clearable
+ >
+ <el-option
+ label="鐢佃瘽鍥炶"
+ value="phone"
+ ></el-option>
+ <el-option
+ label="涓婇棬鍥炶"
+ value="home"
+ ></el-option>
+ <el-option
+ label="闂ㄨ瘖鍥炶"
+ value="clinic"
+ ></el-option>
+ <el-option
+ label="寰俊鍥炶"
+ value="wechat"
+ ></el-option>
+ <el-option label="鍏朵粬" value="other"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item
+ label="涓嬫鏈嶅姟鏃堕棿"
+ prop="nextServiceTime"
+ >
+ <el-date-picker
+ v-model="item.form.nextServiceTime"
+ type="datetime"
+ placeholder="閫夋嫨涓嬫寤剁画鏈嶅姟鏃堕棿"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ style="width: 100%"
+ >
+ </el-date-picker>
+ <div
+ class="time-tip"
+ v-if="item.form.nextServiceTime"
+ >
+ 璺濅笅娆℃湇鍔¤繕鏈�
+ {{ calculateDaysLeft(item.form.nextServiceTime) }}
+ 澶�
+ </div>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏈嶅姟鏃堕棿" prop="serviceTime">
+ <el-date-picker
+ v-model="item.form.serviceTime"
+ type="datetime"
+ placeholder="閫夋嫨鏈嶅姟鏃堕棿"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ style="width: 100%"
+ >
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <!-- 涓嬫寤剁画鏈嶅姟鏃堕棿 -->
+
+ <!-- 鎿嶄綔鎸夐挳 -->
+ <el-form-item>
+ <el-button
+ type="primary"
+ @click="saveContinuityTab(index)"
+ :loading="item.saving"
+ >
+ 淇濆瓨
+ </el-button>
+ <el-button @click="resetContinuityTab(index)">
+ 閲嶇疆
+ </el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import {
+ getsearchrResults,
+ getPersonVoices,
+ getTaskservelist,
+ Editsingletaskson,
+} from "@/api/AiCentre/index";
+import {
+ messagelistpatient,
+ alterpatient,
+ listcontactinformation,
+} from "@/api/patient/homepage";
+
+export default {
+ dicts: ["sys_yujing"],
+ data() {
+ return {
+ // 璺敱鍙傛暟
+ taskid: "",
+ id: "",
+ sendname: "",
+ patid: "",
+ Voicetype: 0,
+ serviceType: "",
+
+ // 闅忚鍐呭鐩稿叧
+ activeName: "wj",
+ taskname: "",
+ voice: "",
+ tableDatatop: [],
+ voiceDatatop: [],
+ form: {},
+ userform: {},
+ // 鏂板锛氶棶棰橀�夋嫨鐩稿叧
+ showQuestionSelector: false,
+ selectedQuestionIds: [],
+ // 鎮h�呭熀纭�淇℃伅琛ㄥ崟
+ patientForm: {
+ name: "",
+ sex: "",
+ age: "",
+ telcode: "",
+ hospitalNumber: "",
+ dischargeDate: "",
+ diagnosis: "",
+ nurseName: "",
+ address: "",
+ relativeName: "",
+ relativeTel: "",
+ },
+ patientRules: {
+ name: [{ required: true, message: "璇疯緭鍏ユ偅鑰呭鍚�", trigger: "blur" }],
+ age: [
+ { required: true, message: "璇疯緭鍏ュ勾榫�", trigger: "blur" },
+ { pattern: /^\d+$/, message: "骞撮緞蹇呴』涓烘暟瀛�", trigger: "blur" },
+ ],
+ telcode: [
+ { required: true, message: "璇疯緭鍏ヨ仈绯荤數璇�", trigger: "blur" },
+ {
+ pattern: /^1[3-9]\d{9}$/,
+ message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+ trigger: "blur",
+ },
+ ],
+ },
+ savingPatientInfo: false,
+
+ // 寤剁画鎶ょ悊鐩稿叧
+ activeContinuityTab: "continuity-0",
+ continuityTabs: [],
+ continuityTabIndex: 0,
+ continuityRules: {
+ // 绉婚櫎continuityProblems鐨勯獙璇佽鍒�
+ careRecord: [
+ { required: true, message: "璇疯緭鍏ユ姢鐞嗚褰�", trigger: "blur" },
+ ],
+ dutyNurse: [
+ { required: true, message: "璇疯緭鍏ヨ矗浠绘姢澹�", trigger: "blur" },
+ ],
+ visitType: [
+ { required: true, message: "璇烽�夋嫨鍥炶褰㈠紡", trigger: "change" },
+ ],
+ serviceTime: [
+ { required: true, message: "璇烽�夋嫨鏈嶅姟鏃堕棿", trigger: "change" },
+ ],
+ nextServiceTime: [
+ { required: true, message: "璇烽�夋嫨涓嬫鏈嶅姟鏃堕棿", trigger: "change" },
+ ],
+ },
+
+ // 鍙�夌殑寤剁画闂锛堜粠宸︿晶闂嵎涓彁鍙栵級
+ availableQuestions: [],
+
+ // 寤剁画鎶ょ悊姹囨�讳俊鎭�
+ continuitySummary: {
+ continueCount: 0,
+ continueTimeNow: "",
+ continueTimeNext: "",
+ continueContent: "",
+ },
+
+ // 鍏朵粬
+ logsheetlist: [],
+ };
+ },
+ created() {
+ this.taskid = this.$route.query.taskid;
+ this.id = this.$route.query.id;
+ this.sendname = this.$route.query.sendname;
+ this.patid = this.$route.query.patid;
+ this.Voicetype = this.$route.query.Voicetype || 0;
+ this.serviceType = this.$route.query.serviceType;
+
+ this.getTaskservelist(this.id);
+ },
+ methods: {
+ // 鑾峰彇涓婚鏍峰紡绫�
+ getTopicClass(item) {
+ console.log(item.isabnormal, "getTopicClass");
+
+ if (item.isabnormal == 1) {
+ return "scriptTopic-isabnormal";
+ } else if (item.isabnormal == 2) {
+ return "scriptTopic-warning";
+ } else {
+ return "scriptTopic-dev";
+ }
+ },
+
+ // 鑾峰彇閫夐」鏍峰紡绫�
+ getOptionClass(items) {
+ if (items.isabnormal == 1) {
+ return "red-star";
+ } else if (items.isabnormal == 2) {
+ return "yellow-star";
+ }
+ return "";
+ },
+
+ // 鑾峰彇闂嵎鏁版嵁
+ getsearchrResults(id) {
+ getsearchrResults({
+ taskid: this.taskid,
+ patid: this.patid,
+ subId: id ? id : this.id,
+ isFinish: false,
+ }).then((res) => {
+ if (res.code === 200) {
+ this.tableDatatop = res.data.scriptResult;
+
+ this.tableDatatop.forEach((item) => {
+ if (item.scriptType == 2) item.scriptResult = [];
+ if (item.scriptResultId && item.scriptType != 2) {
+ item.isoption = 3;
+ item.scriptResult = item.scriptResult;
+ } else if (item.scriptResultId && item.scriptType == 2) {
+ item.scriptResult = item.scriptResult.split("&");
+ item.isoption = 3;
+ }
+ });
+ this.taskname = res.data.taskName;
+ this.overdata();
+ // 鎻愬彇鍙�夌殑寤剁画闂
+ this.extractAvailableQuestions();
+ }
+ });
+ },
+ overdata() {
+ this.tableDatatop.forEach((item, index) => {
+ var obj = item.svyTaskTemplateTargetoptions.find(
+ (items) => items.optioncontent == item.scriptResult
+ );
+ if (obj) {
+ console.log(obj, "obj");
+ if (obj.isabnormal) {
+ this.tableDatatop[index].isabnormal = obj.isabnormal;
+ }
+ this.$forceUpdate();
+ }
+ });
+ },
+ // 鎻愬彇鍙�夌殑寤剁画闂
+ extractAvailableQuestions() {
+ this.availableQuestions = this.tableDatatop
+ .filter(
+ (item) => item.scriptContent && item.scriptContent.trim() !== ""
+ )
+ .map((item, index) => ({
+ id: `question-${index}`,
+ index: index,
+ text: item.scriptContent,
+ originalIndex: index,
+ }));
+ }, // 鍒囨崲闂閫夋嫨闈㈡澘鏄剧ず
+ toggleQuestionSelection() {
+ this.showQuestionSelector = !this.showQuestionSelector;
+ if (this.showQuestionSelector) {
+ // 閲嶇疆閫夋嫨
+ this.selectedQuestionIds = [];
+ }
+ },
+ // 娣诲姞寤剁画闂
+ addContinuityProblem(tabIndex) {
+ this.continuityTabs[tabIndex].form.continuityProblems.push({
+ questionId: "",
+ status: "pending",
+ description: "",
+ resolvedDate: "",
+ createTime: new Date().toISOString(),
+ // 鏂板瀛楁锛岀敤浜庨棶鍗峰紡浜や簰
+ selectedOption: "", // 鍗曢�夌瓟妗�
+ selectedOptions: [], // 澶氶�夌瓟妗�
+ answer: "", // 濉┖绛旀
+ showAppendInput: false, // 鏄惁鏄剧ず闄勫姞杈撳叆妗�
+ appendInput: "", // 闄勫姞杈撳叆鍐呭
+ });
+ },
+ // 鏍规嵁闂ID鑾峰彇鍘熷闂鏁版嵁
+ getQuestionOriginalData(questionId) {
+ if (!questionId) return null;
+ const originalIndex = this.availableQuestions.find(
+ (q) => q.id === questionId
+ )?.originalIndex;
+ if (originalIndex !== undefined && this.tableDatatop[originalIndex]) {
+ return this.tableDatatop[originalIndex];
+ }
+ return null;
+ },
+ // 绉婚櫎寤剁画闂
+ removeContinuityProblem(tabIndex, problemIndex) {
+ this.continuityTabs[tabIndex].form.continuityProblems.splice(
+ problemIndex,
+ 1
+ );
+ },
+
+ // 澶勭悊闂閫夋嫨鍙樻洿
+ handleProblemChange(tabIndex, problemIndex, questionId) {
+ const problem =
+ this.continuityTabs[tabIndex].form.continuityProblems[problemIndex];
+
+ if (!questionId) {
+ problem.description = "";
+ // 娓呯┖绛旀瀛楁
+ problem.selectedOption = "";
+ problem.selectedOptions = [];
+ problem.answer = "";
+ problem.showAppendInput = false;
+ problem.appendInput = "";
+ return;
+ }
+
+ // 鑷姩濉厖闂鎻忚堪
+ const question = this.availableQuestions.find((q) => q.id === questionId);
+ if (question) {
+ problem.description = `闂锛�${question.text}`;
+ }
+
+ // 鏍规嵁闂绫诲瀷鍒濆鍖栫瓟妗堝瓧娈�
+ const originalData = this.getQuestionOriginalData(questionId);
+ if (originalData) {
+ // 鍒濆鍖栧崟閫夌瓟妗�
+ if (originalData.scriptType === 1) {
+ problem.selectedOption = originalData.scriptResult || "";
+ // 妫�鏌ユ槸鍚﹂渶瑕佹樉绀洪檮鍔犺緭鍏ユ
+ problem.showAppendInput = originalData.showAppendInput || false;
+ problem.appendInput = originalData.answerps || "";
+ }
+ // 鍒濆鍖栧閫夌瓟妗�
+ else if (originalData.scriptType === 2) {
+ problem.selectedOptions = Array.isArray(originalData.scriptResult)
+ ? [...originalData.scriptResult]
+ : originalData.scriptResult
+ ? originalData.scriptResult.split("&")
+ : [];
+ }
+ // 鍒濆鍖栧~绌虹瓟妗�
+ else if (originalData.scriptType === 4) {
+ problem.answer = originalData.scriptResult || "";
+ }
+ }
+ },
+
+ // 鏍规嵁闂ID鑾峰彇闂鏂囨湰
+ getQuestionText(questionId) {
+ if (!questionId) return "鏈�夋嫨闂";
+ const question = this.availableQuestions.find((q) => q.id === questionId);
+ return question
+ ? `${question.index + 1}. ${question.text}`
+ : "闂宸插垹闄�";
+ },
+
+ // 鎴柇鏂囨湰
+ truncateText(text, length) {
+ if (!text) return "";
+ return text.length > length ? text.substring(0, length) + "..." : text;
+ },
+ // 纭闂閫夋嫨
+ confirmQuestionSelection() {
+ if (this.selectedQuestionIds.length === 0) {
+ this.$modal.msgWarning("璇疯嚦灏戦�夋嫨涓�涓欢缁棶棰�");
+ return;
+ }
+
+ // 鑾峰彇褰撳墠婵�娲荤殑鏍囩椤电储寮�
+ const activeTabIndex = this.continuityTabs.findIndex(
+ (tab) => tab.name === this.activeContinuityTab
+ );
+
+ if (activeTabIndex === -1) {
+ this.$modal.msgError("鏈壘鍒版縺娲荤殑寤剁画鎶ょ悊鏍囩椤�");
+ return;
+ }
+
+ // 娣诲姞閫変腑鐨勯棶棰樺埌褰撳墠鏍囩椤�
+ this.selectedQuestionIds.forEach((questionId) => {
+ // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓闂
+ const exists = this.continuityTabs[
+ activeTabIndex
+ ].form.continuityProblems.some(
+ (problem) => problem.questionId === questionId
+ );
+
+ if (!exists) {
+ this.continuityTabs[activeTabIndex].form.continuityProblems.push({
+ questionId: questionId,
+ status: "pending",
+ description: "",
+ resolvedDate: "",
+ createTime: new Date().toISOString(),
+ });
+ }
+ });
+
+ // 鍏抽棴閫夋嫨闈㈡澘
+ this.showQuestionSelector = false;
+ this.selectedQuestionIds = [];
+
+ this.$modal.msgSuccess(
+ `宸叉坊鍔� ${this.selectedQuestionIds.length} 涓欢缁棶棰榒
+ );
+ },
+
+ // 绉婚櫎寤剁画闂
+ removeContinuityProblem(tabIndex, problemIndex) {
+ this.continuityTabs[tabIndex].form.continuityProblems.splice(
+ problemIndex,
+ 1
+ );
+ },
+
+ // 鑾峰彇璇煶鏁版嵁
+ getPersonVoices(id) {
+ let obj = {
+ taskid: this.taskid,
+ patid: this.patid,
+ subId: id ? id : this.id,
+ };
+
+ getPersonVoices(obj).then((res) => {
+ if (res.code == 200) {
+ this.voiceDatatop = res.data.serviceSubtaskDetails;
+ this.voice = res.data.voice;
+ this.activeName = "yy";
+ this.taskname = res.data.taskName;
+ this.tableDatatop = res.data.filteredDetails;
+ this.tableDatatop.forEach((item) => {
+ if (item.targetvalue) {
+ item.scriptResult = item.targetvalue.split("&");
+ } else {
+ item.scriptResult = [];
+ }
+ });
+
+ // 鎻愬彇鍙�夌殑寤剁画闂
+ this.extractAvailableQuestions();
+ }
+ });
+ },
+
+ // 鑾峰彇鍩虹淇℃伅
+ getuserinfo() {
+ const queryParams = {
+ pid: Number(this.patid),
+ allhosp: "0",
+ };
+
+ messagelistpatient(queryParams).then((response) => {
+ if (response.rows[0]) {
+ this.userform = response.rows[0];
+ this.initPatientForm();
+ }
+ });
+
+ listcontactinformation({ patid: this.patid }).then((response) => {
+ this.tableData = response.rows;
+ if (this.tableData.length) {
+ this.patientForm.relativeName = this.tableData[0].relation || "";
+ this.patientForm.relativeTel = this.tableData[0].contactway || "";
+ }
+ });
+ },
+
+ // 鍒濆鍖栨偅鑰呰〃鍗�
+ initPatientForm() {
+ if (this.userform) {
+ this.patientForm.name = this.userform.name || "";
+ this.patientForm.sex = this.userform.sex || "";
+ this.patientForm.age = this.userform.age || "";
+ this.patientForm.telcode = this.userform.telcode || "";
+ this.patientForm.address = this.userform.placeOfResidence || "";
+ this.patientForm.hospitalNumber = this.userform.medicalRecordNo || "";
+ }
+
+ if (this.form) {
+ this.patientForm.dischargeDate =
+ this.formatTime(this.form.endtime) || "";
+ this.patientForm.diagnosis = this.form.leavediagname || "";
+ this.patientForm.nurseName = this.form.nurseName || "";
+ }
+ },
+
+ // 鑾峰彇鎮h�呰褰�
+ getTaskservelist(id) {
+ getTaskservelist({
+ patid: this.patid,
+ subId: id,
+ pageSize: 100,
+ }).then((res) => {
+ if (res.code == 200) {
+ this.form = res.rows[0].serviceSubtaskList.find(
+ (item) => item.id == this.id
+ );
+ this.logsheetlist = res.rows[0].serviceSubtaskList;
+
+ // 鍒濆鍖栨偅鑰呬俊鎭�
+ this.initPatientForm();
+
+ // 鍔犺浇鍘嗗彶寤剁画鎶ょ悊鏁版嵁
+ this.loadContinuityHistory();
+ this.getuserinfo();
+ }
+
+ if (this.Voicetype) {
+ this.getPersonVoices();
+ } else {
+ this.getsearchrResults();
+ }
+ });
+ },
+
+ // 鍔犺浇鍘嗗彶寤剁画鎶ょ悊鏁版嵁
+ loadContinuityHistory() {
+ if (this.form && this.form.continueContent) {
+ try {
+ const historyData = JSON.parse(this.form.continueContent);
+ this.continuityTabs = historyData.map((item, index) => ({
+ name: `continuity-${index}`,
+ title: `寤剁画鎶ょ悊${index + 1}`,
+ form: {
+ continuityProblems: item.continuityProblems || [],
+ careRecord: item.careRecord || "",
+ dutyNurse: item.dutyNurse || "",
+ visitType: item.visitType || "",
+ serviceTime: item.serviceTime || "",
+ nextServiceTime: item.nextServiceTime || "",
+ },
+ saving: false,
+ }));
+
+ if (this.continuityTabs.length > 0) {
+ this.activeContinuityTab = this.continuityTabs[0].name;
+ }
+
+ // 鏇存柊姹囨�讳俊鎭�
+ this.updateContinuitySummary();
+ } catch (error) {
+ console.error("瑙f瀽寤剁画鎶ょ悊鍘嗗彶鏁版嵁澶辫触:", error);
+ }
+ }
+ },
+
+ // 鏇存柊寤剁画鎶ょ悊姹囨�讳俊鎭�
+ updateContinuitySummary() {
+ if (this.form) {
+ this.continuitySummary.continueCount = this.form.continueCount || 0;
+ this.continuitySummary.continueTimeNow =
+ this.form.continueTimeNow || "";
+ this.continuitySummary.continueTimeNext =
+ this.form.continueTimeNext || "";
+ this.continuitySummary.continueContent =
+ this.form.continueContent || "";
+ }
+ },
+
+ // 娣诲姞寤剁画鎶ょ悊鏍囩椤�
+ addContinuityTab() {
+ console.log(this.continuityTabs.length);
+ if (this.continuityTabs.length) {
+ this.continuityTabIndex = this.continuityTabs.length;
+ }
+ const newIndex = this.continuityTabIndex + 1;
+ const newTab = {
+ name: `continuity-${newIndex}`,
+ title: `寤剁画鎶ょ悊${newIndex}`,
+ form: {
+ continuityProblems: [],
+ careRecord: "",
+ dutyNurse: "",
+ visitType: "",
+ serviceTime: "",
+ nextServiceTime: "",
+ },
+ saving: false,
+ };
+
+ this.continuityTabs.push(newTab);
+ this.continuityTabIndex = newIndex;
+ this.activeContinuityTab = newTab.name;
+ },
+
+ // 绉婚櫎寤剁画鎶ょ悊鏍囩椤�
+ removeContinuityTab(targetName) {
+ const tabs = this.continuityTabs;
+ let activeName = this.activeContinuityTab;
+
+ if (activeName === targetName) {
+ tabs.forEach((tab, index) => {
+ if (tab.name === targetName) {
+ const nextTab = tabs[index + 1] || tabs[index - 1];
+ if (nextTab) {
+ activeName = nextTab.name;
+ }
+ }
+ });
+ }
+
+ this.activeContinuityTab = activeName;
+ this.continuityTabs = tabs.filter((tab) => tab.name !== targetName);
+ },
+
+ // 澶勭悊鏍囩椤电偣鍑�
+ handleTabClick(tab) {
+ this.activeContinuityTab = tab.name;
+ },
+
+ // 璁$畻璺濈涓嬫鏈嶅姟杩樻湁澶氬皯澶�
+ calculateDaysLeft(nextServiceTime) {
+ if (!nextServiceTime) return 0;
+
+ const nextTime = new Date(nextServiceTime);
+ const now = new Date();
+ const diffTime = nextTime - now;
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
+
+ return diffDays > 0 ? diffDays : 0;
+ },
+
+ // 淇濆瓨寤剁画鎶ょ悊鏍囩椤�
+ saveContinuityTab(index) {
+ const formRef = this.$refs[`continuityForm${index}`];
+ if (!formRef) return;
+
+ // 楠岃瘉鍩烘湰琛ㄥ崟
+ formRef[0].validate((valid) => {
+ if (valid) {
+ // 楠岃瘉寤剁画闂鏄惁瀹屾暣
+ const problems = this.continuityTabs[index].form.continuityProblems;
+ let hasError = false;
+
+ problems.forEach((problem, problemIndex) => {
+ if (!problem.questionId) {
+ hasError = true;
+ this.$modal.msgError(`绗�${problemIndex + 1}涓欢缁棶棰樻湭閫夋嫨`);
+ }
+ });
+
+ if (hasError) {
+ return false;
+ }
+
+ this.continuityTabs[index].saving = true;
+
+ // 鏇存柊姹囨�讳俊鎭�
+ this.updateContinuitySummaryFromTabs();
+
+ // 璋冪敤淇濆瓨API
+ this.saveContinuityData();
+ } else {
+ this.$modal.msgError("璇峰~鍐欏畬鏁翠俊鎭�");
+ return false;
+ }
+ });
+ },
+
+ // 鏇存柊寤剁画鎶ょ悊姹囨�讳俊鎭�
+ updateContinuitySummaryFromTabs() {
+ if (this.continuityTabs.length === 0) return;
+
+ // 鎵惧埌鏈�鏂扮殑鏈嶅姟鏃堕棿
+ let latestTime = "";
+ let nextTime = "";
+ let totalProblems = 0;
+
+ this.continuityTabs.forEach((tab) => {
+ if (tab.form.serviceTime) {
+ if (
+ !latestTime ||
+ new Date(tab.form.serviceTime) > new Date(latestTime)
+ ) {
+ latestTime = tab.form.serviceTime;
+ }
+ }
+ if (tab.form.nextServiceTime) {
+ if (
+ !nextTime ||
+ new Date(tab.form.nextServiceTime) < new Date(nextTime)
+ ) {
+ nextTime = tab.form.nextServiceTime;
+ }
+ }
+
+ // 缁熻闂鏁伴噺
+ totalProblems += tab.form.continuityProblems.length;
+ });
+
+ this.continuitySummary.continueCount = this.continuityTabs.length;
+ this.continuitySummary.continueTimeNow = latestTime;
+ this.continuitySummary.continueTimeNext = nextTime;
+
+ // 鏋勫缓瀹屾暣鐨勫欢缁姢鐞嗘暟鎹�
+ const continuityData = this.continuityTabs.map((tab) => ({
+ ...tab.form,
+ tabTitle: tab.title,
+ tabName: tab.name,
+ }));
+
+ this.continuitySummary.continueContent = JSON.stringify(continuityData);
+ this.continuitySummary.totalProblems = totalProblems;
+ },
+
+ // 淇濆瓨寤剁画鎶ょ悊鏁版嵁
+ saveContinuityData() {
+ const vm = this;
+
+ // 楠岃瘉姣忎釜闂鐨剄uestionId鏄惁宸查�夋嫨
+ let hasEmptyQuestion = false;
+ this.continuityTabs.forEach((tab, tabIndex) => {
+ tab.form.continuityProblems.forEach((problem, problemIndex) => {
+ if (!problem.questionId) {
+ hasEmptyQuestion = true;
+ vm.$modal.msgError(
+ `绗�${tabIndex + 1}涓爣绛鹃〉鐨勭${problemIndex + 1}涓棶棰樻湭閫夋嫨`
+ );
+ }
+ });
+ });
+
+ if (hasEmptyQuestion) {
+ return;
+ }
+
+ const formData = {
+ id: vm.id,
+ patid: vm.patid,
+ taskid: vm.taskid,
+ continueFlag: 2,
+ continueCount: vm.continuitySummary.continueCount,
+ continueTimeNow: vm.continuitySummary.continueTimeNow,
+ continueTimeNext: vm.continuitySummary.continueTimeNext,
+ continueContent: vm.continuitySummary.continueContent,
+ // 鍙互娣诲姞闂嵎绛旀鐨勬暣鍚�
+ // questionnaireAnswers: vm.continuityTabs.map((tab) => ({
+ // tabName: tab.name,
+ // problems: tab.form.continuityProblems.map((problem) => ({
+ // questionId: problem.questionId,
+ // answer:
+ // problem.selectedOption ||
+ // problem.selectedOptions ||
+ // problem.answer,
+ // status: problem.status,
+ // description: problem.description,
+ // })),
+ // })),
+ };
+
+ Editsingletaskson(formData)
+ .then((res) => {
+ if (res.code === 200) {
+ vm.$modal.msgSuccess("寤剁画鎶ょ悊璁板綍淇濆瓨鎴愬姛");
+ // 閲嶇疆淇濆瓨鐘舵��
+ vm.continuityTabs.forEach((tab) => {
+ tab.saving = false;
+ });
+ } else {
+ vm.$modal.msgError("淇濆瓨澶辫触");
+ }
+ })
+ .catch((error) => {
+ console.error("淇濆瓨澶辫触:", error);
+ vm.$modal.msgError("淇濆瓨澶辫触");
+ vm.continuityTabs.forEach((tab) => {
+ tab.saving = false;
+ });
+ });
+ },
+
+ // 閲嶇疆寤剁画鎶ょ悊鏍囩椤�
+ resetContinuityTab(index) {
+ this.continuityTabs[index].form = {
+ continuityProblems: [],
+ careRecord: "",
+ dutyNurse: "",
+ visitType: "",
+ serviceTime: "",
+ nextServiceTime: "",
+ };
+ this.$refs[`continuityForm${index}`][0].clearValidate();
+ },
+
+ // 淇濆瓨鎮h�呬俊鎭�
+ savePatientInfo() {
+ this.$refs.patientForm.validate((valid) => {
+ if (valid) {
+ this.savingPatientInfo = true;
+
+ // 鏇存柊userform鏁版嵁
+ const updatedUserform = {
+ ...this.userform,
+ name: this.patientForm.name,
+ sex: this.patientForm.sex,
+ age: this.patientForm.age,
+ telcode: this.patientForm.telcode,
+ placeOfResidence: this.patientForm.address,
+ medicalRecordNo: this.patientForm.hospitalNumber,
+ };
+
+ alterpatient(updatedUserform)
+ .then((res) => {
+ if (res.code == 200) {
+ this.$modal.msgSuccess("鎮h�呬俊鎭繚瀛樻垚鍔�");
+ this.userform = updatedUserform;
+ } else {
+ this.$modal.msgError("鎮h�呬俊鎭慨鏀瑰け璐�");
+ }
+ this.savingPatientInfo = false;
+ })
+ .catch((error) => {
+ console.error("淇濆瓨澶辫触:", error);
+ this.$modal.msgError("淇濆瓨澶辫触");
+ this.savingPatientInfo = false;
+ });
+ } else {
+ this.$modal.msgError("璇峰~鍐欏畬鏁翠俊鎭�");
+ return false;
+ }
+ });
+ },
+
+ // 閲嶇疆鎮h�呬俊鎭�
+ resetPatientInfo() {
+ this.initPatientForm();
+ this.$refs.patientForm.clearValidate();
+ },
+
+ // 鏃堕棿鏍煎紡鍖�
+ formatTime(time) {
+ if (!time) return "";
+ return time.split(" ")[0];
+ },
+
+ // 鏍煎紡鍖栨樉绀烘椂闂�
+ formatDisplayTime(time) {
+ if (!time) return "鏈缃�";
+ return time.replace(" ", " ");
+ },
+
+ // 寮傚父鍒楁覆鏌�
+ tableRowClassName({ row }) {
+ if (row.id == this.id) {
+ return "warning-row";
+ }
+ return "";
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+.ContinuityCarePage {
+ margin: 10px;
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+}
+
+.headline {
+ font-size: 20px;
+ height: 40px;
+ border-left: 5px solid #41a1be;
+ padding-left: 10px;
+ margin-bottom: 20px;
+ display: flex;
+ align-items: center;
+ color: #333;
+ font-weight: 600;
+}
+
+.sub-headline {
+ font-size: 16px;
+ height: 36px;
+ padding-left: 8px;
+ margin-bottom: 15px;
+ display: flex;
+ align-items: center;
+ color: #409eff;
+ font-weight: 500;
+ border-bottom: 2px solid #e4e7ed;
+ padding-bottom: 8px;
+
+ i {
+ margin-right: 8px;
+ font-size: 18px;
+ }
+}
+
+/* 绗竴閮ㄥ垎锛氭湇鍔″熀纭�淇℃伅 */
+.basic-info-section {
+ margin: 0 10px;
+ padding: 20px;
+ background: #fff;
+ border: 1px solid #dcdfe6;
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ border-radius: 4px;
+
+ .basic-info-container {
+ display: flex;
+ gap: 20px;
+ min-height: 1000px;
+
+ @media screen and (max-width: 1200px) {
+ flex-direction: column;
+ }
+ }
+
+ .followup-content {
+ flex: 1;
+ min-width: 0;
+
+ &.readonly-content {
+ background: #f8f9fa;
+ border-radius: 8px;
+ padding: 15px;
+ border: 1px solid #e4e7ed;
+ }
+
+ .content-container {
+ height: calc(1000px - 60px);
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+
+ ::v-deep .el-tabs {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+
+ .el-tabs__content {
+ flex: 1;
+ overflow: hidden;
+
+ .el-tab-pane {
+ height: 100%;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ }
+ }
+ }
+ }
+ }
+
+ .continuity-history {
+ flex: 1;
+ min-width: 0;
+ background: #fff;
+ border-radius: 8px;
+ padding: 15px;
+ border: 1px solid #e4e7ed;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
+
+ .history-content {
+ height: calc(1000px - 60px);
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+
+ ::v-deep .el-tabs {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+
+ .el-tabs__content {
+ flex: 1;
+ overflow-y: auto;
+ padding: 15px 0;
+
+ .continuity-form {
+ padding: 0 10px;
+
+ .el-form {
+ .selected-problems {
+ margin-top: 10px;
+ padding: 10px;
+ background: #f5f7fa;
+ border-radius: 4px;
+ border: 1px solid #e4e7ed;
+ }
+
+ .time-tip {
+ margin-top: 5px;
+ font-size: 12px;
+ color: #67c23a;
+ font-style: italic;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+.patient-info-section {
+ margin: 0 10px 20px 10px;
+ padding: 20px;
+ background: #fff;
+ border: 1px solid #dcdfe6;
+ box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ border-radius: 4px;
+
+ .patient-info-form {
+ .continuity-summary {
+ padding: 15px;
+ background: #ddf0f8;
+ border-radius: 8px;
+ border: 1px solid #b3e0f2;
+
+ .summary-item {
+ display: inline-block;
+ margin-right: 30px;
+ margin-bottom: 8px;
+
+ .label {
+ font-weight: 500;
+ color: #333;
+ }
+
+ .value {
+ color: #409eff;
+ font-weight: 500;
+ }
+ }
+ }
+ }
+}
+
+/* 鍏变韩鏍峰紡 */
+.CONTENT {
+ padding: 10px;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+
+ .title {
+ font-size: 18px;
+ font-weight: bold;
+ margin-bottom: 20px;
+ text-align: center;
+ color: #333;
+ }
+}
+
+.preview-left {
+ margin: 10px;
+ padding: 20px;
+ border: 1px solid #dcdfe6;
+ border-radius: 4px;
+ max-height: 800px;
+ overflow-y: auto;
+ background: #fff;
+ flex: 1;
+
+ .topic-dev {
+ margin-bottom: 20px;
+ font-size: 16px;
+
+ .dev-text {
+ margin-bottom: 10px;
+ font-weight: 500;
+ color: #333;
+ }
+ }
+}
+
+.scriptTopic-dev {
+ padding: 15px;
+ border-radius: 4px;
+ background: #fafafa;
+ border: 1px solid #e4e7ed;
+ margin-bottom: 15px;
+}
+
+.scriptTopic-isabnormal {
+ padding: 15px;
+ border-radius: 4px;
+ background: #fff5f5;
+ border: 1px solid #f56c6c;
+ color: #f56c6c;
+ margin-bottom: 15px;
+}
+
+.scriptTopic-warning {
+ padding: 15px;
+ border-radius: 4px;
+ background: #fff9e6;
+ border: 1px solid #e6a23c;
+ color: #e6a23c;
+ margin-bottom: 15px;
+}
+
+.red-star {
+ ::v-deep.el-radio__label {
+ position: relative;
+ padding-right: 10px;
+ }
+
+ ::v-deep.el-radio__label::after {
+ content: "*";
+ color: #f56c6c;
+ position: absolute;
+ right: -5px;
+ top: 0;
+ }
+}
+
+.yellow-star {
+ ::v-deep.el-radio__label {
+ position: relative;
+ padding-right: 10px;
+ }
+
+ ::v-deep.el-radio__label::after {
+ content: "*";
+ color: #e6a23c;
+ position: absolute;
+ right: -5px;
+ top: 0;
+ font-weight: bold;
+ }
+}
+
+.borderdiv {
+ height: 100%;
+ padding: 10px;
+ display: flex;
+ flex-direction: column;
+
+ .title {
+ font-size: 18px;
+ font-weight: bold;
+ margin-bottom: 20px;
+ text-align: center;
+ }
+
+ .voice-audio {
+ display: flex;
+ align-items: center;
+ color: #59a0f0;
+ margin-bottom: 20px;
+ padding: 10px;
+ background: #f5f7fa;
+ border-radius: 4px;
+ }
+
+ .preview-left {
+ flex: 1;
+ margin: 0;
+
+ .leftside {
+ margin: 15px 0;
+
+ span {
+ display: inline-block;
+ padding: 8px 12px;
+ background: #409eff;
+ color: #fff;
+ border-radius: 8px;
+ max-width: 80%;
+ margin-left: 10px;
+ }
+ }
+
+ .offside {
+ display: flex;
+ flex-direction: row-reverse;
+ margin: 15px 0;
+
+ .offside-value {
+ padding: 8px 12px;
+ background: #67c23a;
+ color: #fff;
+ border-radius: 8px;
+ max-width: 80%;
+ margin-right: 10px;
+ }
+ }
+ }
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+ .ContinuityCarePage {
+ margin: 5px;
+ gap: 10px;
+ }
+
+ .basic-info-section,
+ .patient-info-section {
+ margin: 0 5px;
+ padding: 10px;
+ }
+
+ .basic-info-container {
+ gap: 10px !important;
+ }
+
+ .patient-info-form {
+ .el-row {
+ flex-direction: column;
+ }
+
+ .el-col {
+ width: 100% !important;
+ margin-bottom: 10px;
+ }
+ }
+
+ .preview-left {
+ margin: 5px;
+ padding: 10px;
+ }
+}
+/* 闂閫夋嫨鍣ㄩ潰鏉� */
+.question-selector-panel {
+ margin-bottom: 20px;
+ padding: 15px;
+ background: #f8f9fa;
+ border: 1px solid #e4e7ed;
+ border-radius: 8px;
+
+ .selector-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 15px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #e4e7ed;
+
+ span {
+ font-weight: 500;
+ color: #333;
+ }
+ }
+
+ .question-list {
+ max-height: 200px;
+ overflow-y: auto;
+ padding-right: 10px;
+
+ .question-item {
+ margin-bottom: 10px;
+ padding: 8px 12px;
+ background: #fff;
+ border-radius: 6px;
+ border: 1px solid #e4e7ed;
+ transition: all 0.3s;
+
+ &:hover {
+ border-color: #409eff;
+ background: #f0f7ff;
+ }
+
+ .question-content {
+ display: flex;
+ align-items: flex-start;
+
+ .question-index {
+ font-weight: 600;
+ color: #409eff;
+ min-width: 30px;
+ }
+
+ .question-text {
+ flex: 1;
+ line-height: 1.5;
+ }
+ }
+ }
+ }
+}
+
+/* 寤剁画闂琛ㄥ崟 */
+.continuity-problems-form {
+ .problems-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 15px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #e4e7ed;
+
+ span {
+ font-weight: 500;
+ color: #333;
+ }
+ }
+
+ .problems-list {
+ .problem-item {
+ margin-bottom: 20px;
+ padding: 15px;
+ background: #f8f9fa;
+ border-radius: 8px;
+ border: 1px solid #e4e7ed;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+
+ .problem-content {
+ .problem-meta {
+ display: flex;
+ align-items: center;
+ margin-bottom: 15px;
+ padding-bottom: 10px;
+ border-bottom: 1px dashed #e4e7ed;
+
+ .problem-index {
+ font-weight: 500;
+ color: #409eff;
+ min-width: 80px;
+ }
+ }
+
+ .problem-detail {
+ .detail-row {
+ display: flex;
+ align-items: flex-start;
+ margin-bottom: 10px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+
+ .detail-label {
+ font-weight: 500;
+ color: #666;
+ min-width: 100px;
+ line-height: 32px;
+ }
+
+ .detail-value {
+ flex: 1;
+ line-height: 1.5;
+ color: #333;
+ padding: 5px 0;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .empty-problems {
+ text-align: center;
+ padding: 30px 0;
+ background: #fafafa;
+ border-radius: 8px;
+ border: 1px dashed #e4e7ed;
+ }
+}
+/* 寤剁画闂鍒楄〃瀹瑰櫒 - 娣诲姞婊氬姩 */
+.problems-list-container {
+ max-height: 400px; /* 鎺у埗鏈�澶ч珮搴� */
+ overflow-y: auto;
+ padding-right: 10px;
+ margin-bottom: 15px;
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-track {
+ background: #f1f1f1;
+ border-radius: 3px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #c1c1c1;
+ border-radius: 3px;
+
+ &:hover {
+ background: #a8a8a8;
+ }
+ }
+}
+
+/* 闂嵎寮忛棶棰樺睍绀� */
+.question-display-area {
+ margin: 15px 0;
+ padding: 15px;
+ background: #fff;
+ border-radius: 8px;
+ border: 1px solid #e4e7ed;
+
+ .question-item-render {
+ .question-text {
+ margin-bottom: 15px;
+ font-size: 14px;
+ line-height: 1.5;
+ color: #333;
+
+ strong {
+ color: #409eff;
+ margin-right: 5px;
+ }
+
+ span {
+ color: #666;
+ }
+ }
+
+ .question-options {
+ margin-left: 20px;
+
+ .el-radio,
+ .el-checkbox {
+ display: block;
+ margin-bottom: 8px;
+ margin-right: 20px;
+ }
+ }
+
+ .append-input {
+ margin-left: 20px;
+ margin-top: 10px;
+ }
+ }
+
+ .no-question-data {
+ text-align: center;
+ color: #999;
+ padding: 20px;
+ font-style: italic;
+ }
+}
+
+/* 璋冩暣闂璇︽儏甯冨眬 */
+.problem-detail {
+ margin-top: 5px;
+ padding-top: 5px;
+ padding-bottom: 20px;
+ margin-bottom: 10px;
+ border-bottom: 1px dashed #6e9af4;
+
+ .detail-row {
+ display: flex;
+ align-items: center;
+ margin-bottom: 15px;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+
+ .detail-label {
+ font-weight: 500;
+ color: #666;
+ min-width: 80px;
+ white-space: nowrap;
+ }
+ }
+}
+
+/* 鍝嶅簲寮忚皟鏁� */
+@media (max-width: 768px) {
+ .problems-list-container {
+ max-height: 300px;
+ }
+
+ .problem-detail {
+ .detail-row {
+ flex-direction: column;
+ align-items: flex-start;
+
+ .detail-label {
+ margin-bottom: 5px;
+ min-width: auto;
+ }
+
+ .el-select,
+ .el-date-picker {
+ width: 100% !important;
+ margin: 5px 0 !important;
+ }
+ }
+ }
+}
+/* 鍝嶅簲寮忚皟鏁� */
+@media (max-width: 768px) {
+ .question-selector-panel {
+ padding: 10px;
+
+ .question-list {
+ .question-item {
+ padding: 6px 8px;
+ }
+ }
+ }
+
+ .continuity-problems-form {
+ .problems-list {
+ .problem-item {
+ padding: 10px;
+
+ .problem-content {
+ .problem-meta {
+ flex-direction: column;
+ align-items: flex-start;
+
+ .el-select {
+ width: 100% !important;
+ margin: 10px 0;
+ }
+ }
+
+ .problem-detail {
+ .detail-row {
+ flex-direction: column;
+ align-items: flex-start;
+
+ .detail-label {
+ margin-bottom: 5px;
+ min-width: auto;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+/* 婊氬姩鏉$編鍖� */
+.preview-left,
+.history-content .el-tabs__content,
+.content-container .el-tabs__content {
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-track {
+ background: #f1f1f1;
+ border-radius: 3px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #c1c1c1;
+ border-radius: 3px;
+
+ &:hover {
+ background: #a8a8a8;
+ }
+ }
+}
+</style>
diff --git a/src/views/followvisit/Continue/index.vue b/src/views/followvisit/Continue/index.vue
new file mode 100644
index 0000000..3148049
--- /dev/null
+++ b/src/views/followvisit/Continue/index.vue
@@ -0,0 +1,2094 @@
+<template>
+ <div class="app-container">
+ <!-- <div class="leftvlue" style="margin-bottom: 20px">
+ <el-row :gutter="10">
+ <el-col :span="2.5" v-for="(item, index) in cardlist" :key="index">
+ <el-card
+ shadow="hover"
+ :body-style="item.router ? ' cursor: pointer' : 'cursor: default'"
+ >
+ <div style="padding: 8px" @click="$router.push(item.router)">
+ <span>{{ item.name }}</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ item.value ? item.value : 0 }}
+ </div>
+ </div>
+ </el-card>
+ </el-col>
+ <el-col :span="2.5">
+ <div class="ysfleftvlue">
+ <el-card shadow="hover">
+ <div style="padding: 8px">
+ <span>琛ㄥ崟宸插彂閫�</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ yfsvalue }}
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-col>
+ <el-col :span="2.5">
+ <div class="errleftvlue">
+ <el-card shadow="hover">
+ <div style="padding: 8px">
+ <span>寮傚父</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ ycvalue }}
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-col>
+ <el-col :span="2.5" v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'">
+ <div class="jgleftvlue">
+ <el-card shadow="hover ">
+ <div style="padding: 8px">
+ <span>璀﹀憡</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ jgvalue }}
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-col>
+ </el-row>
+ </div> -->
+ <el-row :gutter="20">
+ <!--鐢ㄦ埛鏁版嵁-->
+ <el-form
+ :model="topqueryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
+ <el-form-item label="浠诲姟鍚嶇О">
+ <el-input
+ v-model="topqueryParams.taskName"
+ placeholder="璇烽�夋嫨浠诲姟鍚嶇О"
+ ></el-input>
+ </el-form-item>
+
+ <el-form-item label="鍑洪櫌鏃堕棿">
+ <el-date-picker
+ v-model="dateRange"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="搴旈殢璁挎椂闂�">
+ <el-date-picker
+ v-model="dateRangefs"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ ></el-date-picker>
+ </el-form-item>
+
+ <el-form-item label="鎮h�呭鍚�" prop="sendname">
+ <el-input
+ v-model="topqueryParams.sendname"
+ placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="璇婃柇鍚嶇О" prop="leavediagname">
+ <el-input
+ v-model="topqueryParams.leavediagname"
+ placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="闅忚浜哄憳" prop="updateBy">
+ <el-input
+ v-model="topqueryParams.updateBy"
+ placeholder="璇疯緭鍏ラ殢璁夸汉鍛�"
+ ></el-input>
+ </el-form-item>
+ <!-- <el-form-item label="涓绘不鍖荤敓" prop="drname">
+ <el-input
+ v-model="topqueryParams.drname"
+ placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+ ></el-input>
+ </el-form-item> -->
+ <!-- <el-form-item label="缁忕鍖荤敓" prop="managementDoctor">
+ <el-input
+ v-model="topqueryParams.managementDoctor"
+ placeholder="璇疯緭鍏ヤ富娌诲尰鐢�"
+ ></el-input>
+ </el-form-item> -->
+ <!-- <el-form-item label="鏃ユ湡闄愬埗" prop="status">
+ <el-select v-model="endOut" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in endOuts"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item> -->
+ <el-form-item label="鎮h�呰寖鍥�" prop="status">
+ <el-cascader
+ v-model="topqueryParams.scopetype"
+ placeholder="榛樿鍏ㄩ儴"
+ :options="sourcetype"
+ :props="{ expandTrigger: 'hover' }"
+ @change="handleChange"
+ ></el-cascader>
+ </el-form-item>
+
+ <el-form-item label="浠诲姟鐘舵��" prop="status">
+ <el-select v-model="topqueryParams.sendstate" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in topicoptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <!-- <el-form-item label="鎺掑簭鏂瑰紡" prop="status">
+ <el-select v-model="topqueryParams.sort" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in topicoptionssort"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item> -->
+
+ <el-form-item>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleQuery(1)"
+ >鎼滅储</el-button
+ >
+ <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
+ >閲嶇疆</el-button
+ >
+ </el-form-item>
+ </el-form>
+ <el-divider></el-divider>
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <div class="documentf">
+ <div class="document">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-warning-outline"
+ size="medium"
+ @click="toleadExport(1)"
+ >鎵ц澶辫触</el-button
+ >
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="1.5">
+ <div class="documentf">
+ <div class="document">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-warning"
+ size="medium"
+ @click="toleadExport(2)"
+ >缁撴灉寮傚父</el-button
+ >
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ <el-table
+ v-loading="loading"
+ ref="userform"
+ :data="userList"
+ :row-class-name="tableRowClassName"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column
+ label="浠诲姟鍚嶇О"
+ fixed
+ width="150"
+ show-overflow-tooltip
+ align="center"
+ key="taskName"
+ prop="taskName"
+ />
+ <!-- <el-table-column label="搴忓彿" fixed align="center" key="id" prop="id" /> -->
+ <el-table-column
+ label="濮撳悕"
+ width="100"
+ align="center"
+ key="sendname"
+ prop="sendname"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="
+ gettoken360(scope.row.sfzh, scope.row.drcode, scope.row.drname)
+ "
+ ><span class="button-textsc">{{
+ scope.row.sendname
+ }}</span></el-button
+ >
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="璇婃柇鍚嶇О"
+ align="center"
+ key="leavediagname"
+ prop="leavediagname"
+ width="120"
+ :show-overflow-tooltip="true"
+ >
+ </el-table-column>
+ <el-table-column
+ label="寤剁画鎶ょ悊娆℃暟"
+ align="center"
+ key="continueCount"
+ prop="continueCount"
+ width="120"
+ :show-overflow-tooltip="true"
+ >
+ </el-table-column>
+ <el-table-column
+ label="鏈�鏂板欢缁姢鐞嗘椂闂�"
+ sortable
+ align="center"
+ prop="finishtime"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.continueTimeNext) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="涓嬫寤剁画鎶ょ悊鏃堕棿"
+ sortable
+ align="center"
+ prop="finishtime"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.continueTimeNow) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="浠诲姟鐘舵��"
+ align="center"
+ key="sendstate"
+ prop="sendstate"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="scope.row.remark"
+ placement="top-start"
+ >
+ <div v-if="scope.row.sendstate == 1">
+ <el-tag type="primary" :disable-transitions="false"
+ >琛ㄥ崟宸查鍙�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 2">
+ <el-tag type="primary" :disable-transitions="false"
+ >寰呴殢璁�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 3">
+ <el-tag type="success" :disable-transitions="false"
+ >琛ㄥ崟宸插彂閫�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 4">
+ <el-tag type="info" :disable-transitions="false">涓嶆墽琛�</el-tag>
+ </div>
+ <div v-if="scope.row.sendstate == 5">
+ <el-tag type="danger" :disable-transitions="false"
+ >鍙戦�佸け璐�</el-tag
+ >
+ </div>
+ <div v-if="scope.row.sendstate == 6">
+ <el-tag type="success" :disable-transitions="false"
+ >宸插畬鎴�</el-tag
+ >
+ </div>
+ </el-tooltip>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column
+ label="浠诲姟寮傚父璇存槑"
+ width="120"
+ align="center"
+ key="remark"
+ prop="remark" -->
+ />
+
+ <el-table-column
+ label="澶勭悊鎰忚"
+ align="center"
+ key="suggest"
+ prop="suggest"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <dict-tag
+ :options="dict.type.sys_suggest"
+ :value="scope.row.suggest"
+ />
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="棣栨闅忚瀹屾垚鏃堕棿"
+ sortable
+ align="center"
+ prop="finishtime"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.finishtime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍑洪櫌鏃ユ湡"
+ width="200"
+ align="center"
+ key="endtime"
+ prop="endtime"
+ >
+ <template slot-scope="scope">
+ <span>{{ formatTime(scope.row.endtime) }}</span>
+ </template></el-table-column
+ >
+ <el-table-column
+ label="搴旈殢璁挎棩鏈�"
+ width="200"
+ align="center"
+ key="longSendTime"
+ prop="longSendTime"
+ >
+ <template slot-scope="scope">
+ <span>{{ formatTime(scope.row.longSendTime) }}</span>
+ </template></el-table-column
+ >
+ <el-table-column
+ label="涓绘不鍖荤敓"
+ width="120"
+ align="center"
+ key="drname"
+ prop="drname"
+ />
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="闅忚浜哄憳"
+ align="center"
+ key="updateBy"
+ prop="updateBy"
+ width="120"
+ />
+ <el-table-column
+ v-if="orgname != '涓芥按甯備腑鍖婚櫌'"
+ label="缁忕鍖荤敓"
+ align="center"
+ key="managementDoctor"
+ prop="managementDoctor"
+ width="120"
+ />
+ <el-table-column
+ label="鍑洪櫌澶╂暟"
+ width="120"
+ align="center"
+ key="endDay"
+ prop="endDay"
+ >
+ <template slot-scope="scope">
+ <span>{{ scope.row.endDay ? scope.row.endDay + "澶�" : "" }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="韬唤璇佸彿鐮�"
+ width="200"
+ align="center"
+ key="sfzh"
+ prop="sfzh"
+ />
+ <el-table-column
+ label="鑱旂郴鐢佃瘽"
+ width="200"
+ align="center"
+ key="phone"
+ prop="phone"
+ />
+ <el-table-column
+ label="璐d换鎶ゅ+"
+ width="120"
+ align="center"
+ key="nurseName"
+ prop="nurseName"
+ />
+
+ <el-table-column
+ label="绉戝"
+ align="center"
+ key="deptname"
+ prop="deptname"
+ width="120"
+ >
+ </el-table-column>
+ <el-table-column
+ label="鐥呭尯"
+ align="center"
+ key="leavehospitaldistrictname"
+ prop="leavehospitaldistrictname"
+ width="120"
+ >
+ </el-table-column>
+
+ <el-table-column
+ label="鍑洪櫌闅忚妯℃澘鍚嶇О"
+ align="center"
+ key="templatename"
+ prop="templatename"
+ width="200"
+ />
+ <el-table-column
+ label="浠诲姟鎵ц鏂瑰紡"
+ align="center"
+ key="preachform"
+ prop="preachform"
+ width="160"
+ :show-overflow-tooltip="true"
+ >
+ <template slot-scope="scope">
+ <span v-for="item in scope.row.preachform">{{ item }}銆� </span>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column
+ label="浠诲姟鍙戦�佹祦绋�"
+ align="center"
+ key="serviceSubtaskRecordList"
+ prop="serviceSubtaskRecordList"
+ width="160"
+ :show-overflow-tooltip="true"
+ >
+ <template slot-scope="scope">
+ <span v-for="item in scope.row.serviceSubtaskRecordList"
+ >{{ item.remark }}銆�
+ </span>
+ </template>
+ </el-table-column> -->
+ <el-table-column
+ label="浠诲姟缁撴灉璇存槑"
+ width="220"
+ align="center"
+ key="remark"
+ prop="remark"
+ >
+ <template slot-scope="scope" v-if="scope.row.remark">
+ <el-tooltip
+ :content="scope.row.remark"
+ placement="top"
+ effect="dark"
+ >
+ <el-tag
+ type="warning"
+ v-if="scope.row.sendstate != 5 && scope.row.sendstate != 4"
+ >{{ scope.row.remark }}</el-tag
+ >
+ <el-tag type="warning" v-else>{{ scope.row.remark }}</el-tag>
+ </el-tooltip>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ fixed="right"
+ width="120"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <el-button size="medium" type="text" @click="Seedetails(scope.row)"
+ ><span class="button-zx"
+ ><i class="el-icon-s-order"></i>鏌ョ湅璇︽儏</span
+ ></el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="topqueryParams.pageNum"
+ :limit.sync="topqueryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-row>
+ <!-- 婊℃剰搴﹀脊妗� -->
+ <el-dialog
+ title="闅忚婊℃剰搴﹁瘎鍒�"
+ :visible.sync="scoreDialogVisible"
+ width="80%"
+ :close-on-click-modal="false"
+ >
+ <el-table :data="selectedRows" border style="width: 100%">
+ <el-table-column
+ label="濮撳悕"
+ width="100"
+ align="center"
+ prop="sendname"
+ />
+ <el-table-column
+ label="浠诲姟鍚嶇О"
+ width="180"
+ align="center"
+ prop="taskName"
+ />
+ <!-- 鏂板璇勫垎鍒� -->
+ <el-table-column
+ label="鐪熷疄鎬�(20)"
+ align="center"
+ key="authenticity"
+ prop="authenticity"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.authenticity"
+ :min="0"
+ :max="20"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="涓�鍛ㄥ唴瀹屾垚(20)"
+ align="center"
+ key="weekFinish"
+ prop="weekFinish"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.weekFinish"
+ :min="0"
+ :max="20"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="瑙勮寖鎬�(10)"
+ align="center"
+ key="standard"
+ prop="standard"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.standard"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍙婃椂鎬�(10)"
+ align="center"
+ key="timeliness"
+ prop="timeliness"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.timeliness"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="瀹f暀鎯呭喌(10)"
+ align="center"
+ key="library"
+ prop="library"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.library"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鐜婊℃剰搴�(10)"
+ align="center"
+ key="environment"
+ prop="environment"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.environment"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鍖荤敓婊℃剰搴�(10)"
+ align="center"
+ key="doctorSatisfaction"
+ prop="doctorSatisfaction"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.doctorSatisfaction"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎶ゅ+婊℃剰搴�(10)"
+ align="center"
+ key="nurseSatisfaction"
+ prop="nurseSatisfaction"
+ width="150"
+ >
+ <template slot-scope="scope">
+ <el-input-number
+ v-model="scope.row.nurseSatisfaction"
+ :min="0"
+ :max="10"
+ :step="1"
+ size="small"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎬诲垎"
+ align="center"
+ key="total"
+ prop="total"
+ fixed="right"
+ >
+ <template slot-scope="scope">
+ <span>{{ calculateTotal(scope.row) }}</span>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="scoreDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="saveScores">淇濆瓨</el-button>
+ </div>
+ </el-dialog>
+ <!-- 娣诲姞鎴栦慨鏀瑰奖鍍忛殢璁垮璇濇 -->
+ <el-dialog
+ :title="amendtag ? '淇敼鎮h�呬俊鎭�' : '鏂板鎮h��'"
+ :visible.sync="Labelchange"
+ width="900px"
+ >
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+ <el-row>
+ <el-col :span="8">
+ <el-form-item label="濮撳悕" width="100" prop="name">
+ <el-input
+ v-model="form.name"
+ placeholder="璇疯緭鍏ュ鍚�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="鎬у埆" width="100" prop="sex">
+ <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+ <el-option
+ v-for="dict in sextype"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="骞撮緞" prop="age">
+ <el-input
+ v-model="form.age"
+ placeholder="璇疯緭鍏ュ勾榫�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="8">
+ <el-form-item label="杩囨护鍖荤敓" width="100" prop="filterDrname">
+ <el-input
+ v-model="form.filterDrname"
+ placeholder="璇疯緭鍏ュ尰鐢熷鍚�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="杩囨护鍘熷洜">
+ <el-input
+ v-model="form.notrequiredreason"
+ type="textarea"
+ placeholder="璇疯緭鍏ヨ繃婊ゅ師鍥�"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ <!-- 淇敼鍙戦�佹椂闂村璇濇 -->
+ <el-dialog
+ title="鍙戦�佹椂闂磋缃�"
+ :visible.sync="modificationVisible"
+ width="45%"
+ >
+ <div style="margin-bottom: 20px; color: red">
+ 缁熶竴淇敼褰撳ぉ鏈彂閫佺殑浠诲姟鏃堕棿
+ </div>
+
+ <el-form
+ :model="ruleForm"
+ :rules="rules"
+ ref="ruleForm"
+ label-width="120px"
+ class="demo-ruleForm"
+ >
+ <el-form-item label="鍙戦�佹棩鏈�">
+ <el-date-picker
+ v-model="ruleForm.value1"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ >
+ </el-date-picker>
+ </el-form-item>
+
+ <el-form-item label="鏃堕棿娈�" prop="type">
+ <el-checkbox-group v-model="ruleForm.type">
+ <el-checkbox label="涓婂崍" name="type"></el-checkbox>
+ <el-checkbox label="涓嬪崍" name="type"></el-checkbox>
+ <el-checkbox label="鏅氫笂" name="type"></el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+ <el-form-item label="涓婂崍鏃堕棿鍖洪棿" required>
+ <el-time-picker
+ is-range
+ v-model="ruleForm.value2"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ placeholder="閫夋嫨鏃堕棿鑼冨洿"
+ >
+ </el-time-picker>
+ </el-form-item>
+ <el-form-item label="涓嬪崍鏃堕棿鍖洪棿" required>
+ <el-time-picker
+ is-range
+ v-model="ruleForm.value3"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ placeholder="閫夋嫨鏃堕棿鑼冨洿"
+ >
+ </el-time-picker>
+ </el-form-item>
+ <el-form-item label="鏅氫笂鏃堕棿鍖洪棿" required>
+ <el-time-picker
+ is-range
+ v-model="ruleForm.value4"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ placeholder="閫夋嫨鏃堕棿鑼冨洿"
+ >
+ </el-time-picker>
+ </el-form-item>
+ </el-form>
+
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="modificationVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="modificationVisible = false"
+ >纭� 瀹�</el-button
+ >
+ </span>
+ </el-dialog>
+ <!-- 鍐嶆闅忚 -->
+ <el-dialog title="鎮h�呭啀娆¢殢璁�" :visible.sync="dialogFormVisible">
+ <el-form ref="zcform" :rules="zcrules" :model="zcform" label-width="80px">
+ <el-form-item label="浠诲姟鍚嶇О">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.taskName"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鎮h�呭悕绉�">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.sendname"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="骞撮緞">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.age"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="绉戝">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.deptname"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鐥呭尯">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.leavehospitaldistrictname"
+ ></el-input>
+ </el-form-item>
+
+ <el-form-item label="闅忚鏂瑰紡" prop="resource">
+ <el-radio-group v-model="zcform.resource">
+ <el-radio label="1">鏈梾鍖洪殢璁�</el-radio>
+ <el-radio label="2">闅忚涓績闅忚</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <!-- <el-form-item label="鍗冲埢鍙戦��">
+ <el-switch v-model="zcform.delivery"></el-switch>
+ </el-form-item> -->
+ <el-form-item label="鍑洪櫌鏃堕棿">
+ <el-input
+ style="width: 400px"
+ disabled
+ v-model="zcform.endtime"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="闅忚瀹屾垚鏃堕棿" prop="date1">
+ <el-date-picker
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ v-model="zcform.date1"
+ style="width: 100%"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item label="闅忚璁板綍">
+ <el-input type="textarea" v-model="zcform.remark"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="setupsubtask">纭鍒涘缓鏈嶅姟</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ delUser,
+ addUser,
+ updateUser,
+ resetUserPwd,
+ changeUserStatus,
+} from "@/api/system/user";
+import {
+ getTaskservelist,
+ buidegetTasklist,
+ addserviceSubtask,
+ query360PatInfo,
+ addsatisfaction,
+} from "@/api/AiCentre/index";
+import { alterpatient, particularpatient } from "@/api/patient/homepage";
+import Treeselect from "@riophae/vue-treeselect";
+import store from "@/store";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+ name: "Discharge",
+ dicts: ["sys_normal_disable", "sys_user_sex", "sys_yujing", "sys_suggest"],
+ components: { Treeselect },
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ dialogFormVisible: false,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+ userList: null,
+ // 寮瑰嚭灞傛爣棰�
+ title: "鏂板褰卞儚闅忚",
+ // 鏄惁鏄剧ず淇敼銆佹坊鍔犲脊鍑哄眰
+ addalteropen: false,
+ // 淇敼鍙戦�佹椂闂村璇濇
+ modificationVisible: false,
+ // 閮ㄩ棬鍚嶇О
+ deptName: undefined,
+ // 榛樿瀵嗙爜
+ initPassword: undefined,
+ // 鏃ユ湡鑼冨洿
+ dateRange: [],
+ dateRangefs: [],
+ // 宀椾綅閫夐」
+ postOptions: [],
+ ruleForm: {
+ type: [],
+ },
+ zcform: {},
+ dynamicTags: ["閫夐」涓�", "閫夐」浜�", "閫夐」涓�"], //閫夐」
+ inputVisible: false,
+ Labelchange: false,
+ ycvalue: "",
+ jgvalue: "",
+ yfsvalue: "",
+ inputValue: "",
+ preachform: "",
+ previewVisible: false, //褰卞儚闅忚棰勮寮规
+ radio: "",
+ radios: [],
+ previewtype: 2, //棰勮褰卞儚闅忚绫诲瀷
+ total: 0, // 鎬绘潯鏁�
+ // 婊℃剰搴﹁皟鏌ユ暟鎹�
+ scoreDialogVisible: false,
+ selectedRows: [],
+
+ value: [],
+ list: [],
+
+ sourcetype: [
+ {
+ value: 1,
+ label: "绉戝",
+ children: [],
+ },
+ {
+ value: 2,
+ label: "鐥呭尯",
+ children: [],
+ },
+ {
+ value: 3,
+ label: "鍏ㄩ儴",
+ },
+ ],
+ loading: false,
+ cardlist: [
+ {
+ name: "鍑洪櫌鏈嶅姟鎬婚噺",
+ value: 0,
+ },
+ // {
+ // name: "鎮h�呰繃婊�",
+ // value: 0,
+ // },
+ {
+ name: "闇�闅忚",
+ value: 0,
+ },
+ {
+ name: "鍙戦�佸け璐�",
+ value: 0,
+ },
+ {
+ name: "寰呴殢璁�",
+ value: 0,
+ },
+ // {
+ // name: "宸插彂閫�",
+ // value: 0,
+ // },
+
+ // {
+ // name: "琛ㄥ崟宸插彂閫�",
+ // value: 0,
+ // },
+ ],
+ zcrules: {
+ date1: [
+ { required: true, message: "璇烽�夋嫨闅忚鏂瑰紡", trigger: "change" },
+ ],
+ resource: [
+ { required: true, message: "璇烽�夋嫨闅忚鏃堕棿", trigger: "blur" },
+ ],
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {
+ phonenumber: "",
+ totagid: "",
+ types: "",
+ nickName: "",
+ qystatus: "",
+ btstatus: "",
+ },
+ // endOut: 1,
+ endOut: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 0 : 1, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+ endOuts: [
+ {
+ value: 0,
+ label: "鎴鑷冲綋鏃ユ湇鍔�",
+ },
+ {
+ value: 1,
+ label: "鍏ㄩ儴鏈嶅姟",
+ },
+ ],
+ topicoptionssort: [
+ {
+ value: 0,
+ label: "鍑洪櫌鏃堕棿(姝e簭)",
+ },
+ {
+ value: 1,
+ label: "鍑洪櫌鏃堕棿(鍊掑簭)",
+ },
+ {
+ value: 2,
+ label: "鍙戦�佹椂闂�(姝e簭)",
+ },
+ {
+ value: 3,
+ label: "鍙戦�佹椂闂�(鍊掑簭)",
+ },
+ {
+ value: 7,
+ label: "搴旈殢璁挎棩鏈�(姝e簭)",
+ },
+ {
+ value: 8,
+ label: "搴旈殢璁挎棩鏈�(鍊掑簭)",
+ },
+ ],
+ // 鏌ヨ鍙傛暟
+ topqueryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ sort: localStorage.getItem("orgname") == "涓芥按甯備腑鍖婚櫌" ? 8 : 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭) 7搴旈殢璁挎棩鏈�(鍊掑簭) 搴旈殢璁挎棩鏈�(姝e簭)
+ searchscope: 3,
+ continueFlag: 2,
+ visitCount: 1,
+ scopetype: [],
+ leaveldeptcodes: [],
+ leavehospitaldistrictcodes: [],
+ },
+ orgname: "",
+ propss: { multiple: true },
+ options: [],
+
+ topicoptions: [
+ {
+ value: null,
+ label: "鍏ㄩ儴",
+ },
+ {
+ value: 1,
+ label: "琛ㄥ崟宸查鍙�",
+ },
+ {
+ value: 2,
+ label: "寰呴殢璁�",
+ },
+ {
+ value: 3,
+ label: "琛ㄥ崟宸插彂閫�",
+ },
+ {
+ value: 4,
+ label: "涓嶆墽琛�",
+ },
+ {
+ value: 5,
+ label: "鍙戦�佸け璐�",
+ },
+ {
+ value: 6,
+ label: "宸插畬鎴�",
+ },
+ ],
+ sextype: [
+ {
+ value: 1,
+ label: "鐢�",
+ },
+ {
+ value: 2,
+ label: "濂�",
+ },
+ ],
+ topicoptionsyj: [
+ {
+ value: 1,
+ label: "寮傚父",
+ },
+ {
+ value: 2,
+ label: "璀﹀憡",
+ },
+ {
+ value: 0,
+ label: "姝e父",
+ },
+ ],
+ url: "http://9.208.2.190:8090/smartor/serviceExternal/query360PatInfo",
+ postData: {
+ XiaoXiTou: {
+ FaSongFCSJC: "ZJHES",
+ FaSongJGID: localStorage.getItem("orgid"),
+ FaSongJGMC: localStorage.getItem("orgname"),
+ FaSongSJ: "2025-01-09聽17:29:36",
+ FaSongXTJC: "SUIFANGXT",
+ FaSongXTMC: "闅忚绯荤粺",
+ XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171",
+ XiaoXiLX: "SC_LC_360STCX",
+ XiaoXiMC: "360聽瑙嗗浘鏌ヨ",
+ ZuHuID: localStorage.getItem("ZuHuID"),
+ ZuHuMC: localStorage.getItem("orgname"),
+ },
+ YeWuXX: {
+ BingRenXX: {
+ ZhengJianHM: "",
+ ZhengJianLXDM: "01",
+ ZhengJianLXMC: "灞呮皯韬唤璇�",
+ ZuZhiJGID: localStorage.getItem("orgid"),
+ ZuZhiJGMC: localStorage.getItem("orgname"),
+ },
+ YongHuXX: {
+ XiTongID: "SUIFANGXT",
+ XiTongMC: "闅忚绯荤粺",
+ YongHuID: localStorage.getItem("YongHuID"),
+ YongHuXM: localStorage.getItem("YongHuXM"),
+ ZuZhiJGID: localStorage.getItem("orgid"),
+ ZuZhiJGMC: localStorage.getItem("orgname"),
+ idp: "lyra",
+ },
+ },
+ },
+ amendtag: false,
+ errtype: "",
+ leavehospitaldistrictcode: "",
+ serviceState: [],
+ checkboxlist: [],
+ // 琛ㄥ崟鏍¢獙
+ rules: {},
+ };
+ },
+ watch: {},
+ created() {
+ this.serviceState = store.getters.serviceState;
+ this.checkboxlist = store.getters.checkboxlist;
+ this.errtype = this.$route.query.errtype;
+ this.orgname = localStorage.getItem("orgname");
+ this.leavehospitaldistrictcode =
+ this.$route.query.leavehospitaldistrictcode;
+ this.sourcetype[0].children = store.getters.belongDepts.map((dept) => {
+ return {
+ label: dept.deptName,
+ value: dept.deptCode,
+ };
+ });
+ this.sourcetype[1].children = store.getters.belongWards.map((dept) => {
+ return {
+ label: dept.districtName,
+ value: dept.districtCode,
+ };
+ });
+ if (this.errtype) {
+ this.toleadExport(2);
+ } else {
+ this.getList(1);
+ }
+ this.getConfigKey("sys.user.initPassword").then((response) => {
+ this.initPassword = response.msg;
+ });
+ },
+ activated() {
+ this.getList(1);
+ },
+ methods: {
+ /** 鏌ヨ闅忚鏈嶅姟鍒楄〃 */
+ getList(refresh) {
+ // 榛樿鍏ㄩ儴
+ if (this.topqueryParams.searchscope == 3) {
+ this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+ (obj) => obj.deptCode
+ );
+ this.topqueryParams.leavehospitaldistrictcodes =
+ store.getters.belongWards.map((obj) => obj.districtCode);
+ }
+ if (this.endOut == 0) {
+ this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
+ this.getEndOfDay()
+ );
+ } else {
+ // this.topqueryParams.endSendDateTime = null;
+ }
+ // 鎺ュ彈寮傚父璺宠浆
+ if (this.errtype) {
+ this.topqueryParams.leavehospitaldistrictcodes.push(
+ this.leavehospitaldistrictcode
+ );
+ console.log(this.topqueryParams.leavehospitaldistrictcodes, "11");
+ }
+ this.loading = true;
+ if (
+ this.topqueryParams.leavehospitaldistrictcodes[0] &&
+ this.topqueryParams.leaveldeptcodes[0]
+ ) {
+ this.topqueryParams.deptOrDistrict = 2;
+ } else {
+ this.topqueryParams.deptOrDistrict = 1;
+ }
+ getTaskservelist(this.topqueryParams).then((response) => {
+ this.userList = response.rows[0].serviceSubtaskList;
+ this.total = response.total;
+ if (refresh) {
+ this.cardlist[0].value =
+ Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
+ // this.cardlist[1].value = response.rows[0].wzx;
+ this.cardlist[1].value = response.rows[0].ysf;
+ this.ycvalue = response.rows[0].yc;
+ this.jgvalue = response.rows[0].jg;
+ this.cardlist[2].value = response.rows[0].fssb;
+ this.cardlist[3].value = response.rows[0].dsf;
+ // this.cardlist[4].value = response.rows[0].yfs2;
+ this.yfsvalue = response.rows[0].yfs;
+ }
+ this.loading = false;
+ this.userList.forEach((item) => {
+ let idArray = null;
+ if (item.endtime) {
+ item.endDay = this.daysBetween(item.endtime);
+ }
+
+ if (item.preachform) {
+ if (item.endtime) {
+ item.preachformson = item.preachform;
+ idArray = item.preachform.split(",");
+ }
+
+ item.preachform = idArray.map((value) => {
+ // 鏌ユ壘id瀵瑰簲鐨勫璞�
+ const item = this.checkboxlist.find(
+ (item) => item.value == value
+ );
+ // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+ return item ? item.label : null;
+ });
+ }
+ });
+ this.total = response.total;
+ });
+ },
+ // 鏃堕棿
+ getEndOfDay() {
+ const date = new Date(); // 鍒涘缓涓�涓〃绀哄綋鍓嶆椂闂寸殑Date瀵硅薄
+ date.setHours(23, 59, 59, 0); // 灏嗘椂闂磋缃负23:59:59.000
+ return date;
+ },
+ formatDateToYYYYMMDDHHMMSS(date) {
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, "0"); // 鏈堜唤琛ラ浂
+ const day = String(date.getDate()).padStart(2, "0"); // 鏃ユ湡琛ラ浂
+ const hours = String(date.getHours()).padStart(2, "0");
+ const minutes = String(date.getMinutes()).padStart(2, "0");
+ const seconds = String(date.getSeconds()).padStart(2, "0");
+
+ return `${year}-${month}-${day}`;
+ },
+ affiliation() {
+ this.topqueryParams.managementDoctorCode = store.getters.hisUserId;
+ this.getList(1);
+ },
+ onthatday() {
+ this.topqueryParams.startSendDateTime = this.getCurrentDate();
+ this.topqueryParams.endSendDateTime = this.getCurrentDate();
+ this.getList(1);
+ },
+ getCurrentDate() {
+ const now = new Date();
+ return now.toISOString().slice(0, 10); // 鎴彇鍓�10涓瓧绗︼紝鍗� YYYY-MM-DD
+ },
+ buidegetTasklist(type) {
+ if (this.topqueryParams.searchscope == 3) {
+ this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+ (obj) => obj.deptCode
+ );
+ this.topqueryParams.leavehospitaldistrictcodes =
+ store.getters.belongWards.map((obj) => obj.districtCode);
+ }
+ // 鎺ュ彈寮傚父璺宠浆
+ if (this.errtype) {
+ this.topqueryParams.leavehospitaldistrictcodes.push(
+ this.leavehospitaldistrictcode
+ );
+ }
+ let obj = {
+ pageNum: 1,
+ pageSize: 10,
+ leavehospitaldistrictcodes:
+ this.topqueryParams.leavehospitaldistrictcodes,
+ sendstates: [2, 3],
+ leaveldeptcodes: this.topqueryParams.leaveldeptcodes,
+ };
+ buidegetTasklist(obj).then((response) => {
+ this.userList = response.rows[0].serviceSubtaskList;
+ this.total = response.total;
+ if (refresh) {
+ this.cardlist[0].value =
+ Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
+ this.cardlist[1].value = response.rows[0].wzx;
+ this.cardlist[2].value = response.rows[0].ysf;
+ this.ycvalue = response.rows[0].yc;
+ this.jgvalue = response.rows[0].jg;
+ this.cardlist[3].value = response.rows[0].fssb;
+ this.cardlist[4].value = response.rows[0].dsf;
+ // this.cardlist[5].value = response.rows[0].yfs2;
+ this.yfsvalue = response.rows[0].yfs;
+ }
+ this.loading = false;
+ this.userList.forEach((item) => {
+ let idArray = null;
+ if (item.endtime) {
+ item.endDay = this.daysBetween(item.endtime);
+ }
+
+ if (item.preachform) {
+ if (item.endtime) {
+ item.preachformson = item.preachform;
+ idArray = item.preachform.split(",");
+ }
+
+ item.preachform = idArray.map((value) => {
+ // 鏌ユ壘id瀵瑰簲鐨勫璞�
+ const item = this.checkboxlist.find(
+ (item) => item.value == value
+ );
+ // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+ return item ? item.label : null;
+ });
+ }
+ });
+ this.total = response.total;
+ });
+ },
+ // 鏌ョ湅闂ㄨ瘖闅忚璇︽儏
+ Referencequestion(row) {
+ this.previewVisible = true;
+ },
+ // 娣诲姞寮规鎼滅储
+ remoteMethod(query) {
+ if (query !== "") {
+ this.loading = true;
+ setTimeout(() => {
+ this.loading = false;
+ this.options = this.list.filter((item) => {
+ return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
+ });
+ }, 200);
+ } else {
+ this.options = [];
+ }
+ },
+ // 褰卞儚闅忚鐘舵�佷慨鏀�
+ handleStatusChange(row) {
+ let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+ this.$modal
+ .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵')
+ .then(function () {
+ return changeUserStatus(row.userId, row.status);
+ })
+ .then(() => {
+ this.$modal.msgSuccess(text + "鎴愬姛");
+ })
+ .catch(function () {
+ row.status = row.status === "0" ? "1" : "0";
+ });
+ },
+
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ userId: undefined,
+ deptId: undefined,
+ userName: undefined,
+ nickName: undefined,
+ password: undefined,
+ phonenumber: undefined,
+ email: undefined,
+ sex: undefined,
+ status: "0",
+ remark: undefined,
+ postIds: [],
+ roleIds: [],
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery(refresh) {
+ if (this.topqueryParams.searchscope == 3) {
+ this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
+ (obj) => obj.deptCode
+ );
+ this.topqueryParams.leavehospitaldistrictcodes =
+ store.getters.belongWards.map((obj) => obj.districtCode);
+ }
+ this.topqueryParams.pageNum = 1;
+ this.topqueryParams.startOutHospTime = this.dateRange[0];
+ this.topqueryParams.endOutHospTime = this.dateRange[1];
+ this.topqueryParams.startSendDateTime = this.dateRangefs[0];
+ this.topqueryParams.endSendDateTime = this.dateRangefs[1];
+ this.getList(refresh);
+ },
+ // 鎮h�呰寖鍥村鐞�
+ handleChange(value) {
+ let type = value[0];
+ let code = value.slice(-1)[0];
+ this.topqueryParams.leavehospitaldistrictcodes = [];
+ this.topqueryParams.leaveldeptcodes = [];
+ if (type == 1) {
+ this.topqueryParams.leaveldeptcodes.push(code);
+ this.topqueryParams.leavehospitaldistrictcodes = [];
+ this.topqueryParams.searchscope = 1;
+ } else if (type == 2) {
+ this.topqueryParams.leavehospitaldistrictcodes.push(code);
+ this.topqueryParams.leaveldeptcodes = [];
+ this.topqueryParams.searchscope = 2;
+ } else {
+ this.topqueryParams.searchscope = 3;
+ }
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.dateRange = [];
+ this.dateRangefs = [];
+ this.topqueryParams = {
+ pageNum: 1,
+ pageSize: 10,
+ sort: 2, //0 鍑洪櫌鏃堕棿(姝e簭) 1 鍑洪櫌鏃堕棿(鍊掑簭) 2 鍙戦�佹椂闂�(姝e簭) 3 鍙戦�佹椂闂�(鍊掑簭)
+ searchscope: 3,
+ continueFlag: 2,
+ visitCount: 1,
+ scopetype: [],
+ leaveldeptcodes: [],
+ leavehospitaldistrictcodes: [],
+ };
+ this.handleQuery(1);
+ },
+ handleSelectionChange(rows) {
+ this.selectedRows = rows.map((row) => {
+ // 鍒濆鍖栬瘎鍒嗗瓧娈�
+ return {
+ ...row,
+ authenticity: row.authenticity || 0,
+ weekFinish: row.weekFinish || 0,
+ standard: row.standard || 0,
+ timeliness: row.timeliness || 0,
+ library: row.library || 0,
+ environment: row.environment || 0,
+ doctorSatisfaction: row.doctorSatisfaction || 0,
+ nurseSatisfaction: row.nurseSatisfaction || 0,
+ };
+ });
+
+ if (this.selectedRows.length > 0) {
+ this.multiple = false;
+ } else {
+ this.multiple = true;
+ }
+ },
+
+ // 璁$畻鎬诲垎
+ calculateTotal(row) {
+ return (
+ (row.authenticity || 0) +
+ (row.weekFinish || 0) +
+ (row.standard || 0) +
+ (row.timeliness || 0) +
+ (row.library || 0) +
+ (row.environment || 0) +
+ (row.doctorSatisfaction || 0) +
+ (row.nurseSatisfaction || 0)
+ );
+ },
+
+ // 淇濆瓨璇勫垎
+ saveScores() {
+ this.selectedRows.forEach((item) => {
+ item.createBy = null;
+ item.patName = item.sendname;
+ item.hospitaldistrictname = item.leavehospitaldistrictname;
+ });
+ addsatisfaction(this.selectedRows).then((res) => {
+ if (res.code == 200) {
+ this.$message.success("璇勫垎淇濆瓨鎴愬姛");
+ this.scoreDialogVisible = false;
+ this.selectedRows = [];
+ this.$refs.userform.clearSelection();
+ } else {
+ this.$modal.msgWarning("璇勫垎淇濆瓨澶辫触");
+ this.scoreDialogVisible = false;
+ this.selectedRows = [];
+ this.$refs.userform.clearSelection();
+ }
+ });
+ // 杩欓噷鍙互娣诲姞淇濆瓨閫昏緫锛屽璋冪敤API淇濆瓨璇勫垎
+ },
+ //鍒犻櫎閫夐」
+ handleClose(tag) {
+ this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
+ },
+ //瑙﹀彂鏂板杈撳叆
+ showInput() {
+ this.inputVisible = true;
+ this.$nextTick((_) => {
+ this.$refs.saveTagInput.$refs.input.focus();
+ });
+ },
+ //鑾峰彇澶卞幓鐒︾偣瑙﹀彂
+ handleInputConfirm() {
+ let inputValue = this.inputValue;
+ if (inputValue) {
+ this.dynamicTags.push(inputValue);
+ }
+ this.inputVisible = false;
+ this.inputValue = "";
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.$router.push({
+ path: "/followvisit/QuestionnaireTask",
+ query: {
+ type: 2,
+ serviceType: 2,
+ },
+ });
+ },
+ //鎮h��360璺宠浆
+ gettoken360(sfzh, drcode, drname) {
+ // this.$modal.msgWarning("360鍔熻兘鏆傛湭寮�閫�");
+
+ this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh;
+
+ query360PatInfo(this.postData).then((res) => {
+ if (res.data.url) {
+ window.open(res.data.url, "_blank");
+ // this.linkUrl = res.data.url;
+ } else {
+ this.$modal.msgWarning("360鏌ヨ鏃犵粨鏋�");
+ }
+ });
+ },
+
+ /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
+ handleResetPwd(row) {
+ this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ closeOnClickModal: false,
+ inputPattern: /^.{5,20}$/,
+ inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ })
+ .then(({ value }) => {
+ resetUserPwd(row.userId, value).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
+ });
+ })
+ .catch(() => {});
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.Labelchange = false;
+ this.reset();
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm: function () {
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ this.form.isoperation = 2;
+ this.form.notrequiredFlag = 1;
+ alterpatient(this.form)
+ .then((response) => {
+ console.log(response);
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgSuccess("鎮h�呰繃婊ゆ垚鍔�");
+ });
+
+ this.reset();
+ this.Labelchange = false;
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const userIds = row.userId || this.ids;
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+ .then(function () {
+ return delUser(userIds);
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ // 鍏ㄩ儴鍋滄
+ AllStop() {
+ this.$modal
+ .confirm("鏄惁鍋滄鍏ㄩ儴浠诲姟锛�")
+ .then(function () {
+ return console.log("鍋滄鎴愬姛");
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgWarning("鍋滄鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ // 鍏ㄩ儴寮�濮�
+ AllStarted() {
+ this.$modal
+ .confirm("鏄惁寮�鍚叏閮ㄤ换鍔★紵")
+ .then(function () {
+ return console.log("寮�鍚垚鍔�");
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgSuccess("寮�鍚垚鍔�");
+ })
+ .catch(() => {});
+ },
+ // 浠诲姟閲嶇疆
+ TaskReset() {
+ this.$modal
+ .confirm("鏄惁閲嶇疆閫変腑鐨勪换鍔¢」锛�")
+ .then(function () {
+ return console.log("閫変腑鎴愬姛");
+ })
+ .then(() => {
+ this.getList(1);
+ this.$modal.msgSuccess("閲嶇疆鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ // 璁剧疆鍙戦�佹椂闂�
+ Sendtimesetting() {
+ this.modificationVisible = true;
+ },
+ // 璺宠浆璇︽儏椤�
+ Seedetails(row) {
+ let type = "";
+ console.log(row, "rwo");
+ if (row.type == 1) {
+ type = 1;
+ }
+ this.$router.push({
+ path: "/followvisit/ContinueFordetails/",
+ query: {
+ taskid: row.taskid,
+ patid: row.patid,
+ id: row.id,
+ Voicetype: type,
+ visitCount: this.topqueryParams.visitCount,
+ },
+ });
+ },
+ // 鍐嶆闅忚
+ followupvisit(row) {
+ this.zcform = row;
+ this.zcform.endtime = this.formatTime(this.zcform.endtime);
+ this.dialogFormVisible = true;
+ },
+ onSubmit() {},
+ // 鏆傚仠鏈嶅姟
+ handlestop(row) {
+ let objson = row;
+ this.$modal
+ .confirm(
+ '鏄惁纭鏆傚仠浠诲姟鍚嶇О涓�"' +
+ row.taskName +
+ '鎮h�呭悕绉颁负"' +
+ row.sendname +
+ '"鐨勬暟鎹」锛�'
+ )
+ .then(() => {
+ getTaskservelist({
+ patid: row.patid,
+ taskid: row.taskid,
+ }).then((res) => {
+ if (res.code == 200) {
+ objson.sendstate = 4;
+ objson.remark = "鏈嶅姟鏆傚仠";
+ Editsingletaskson(objson).then((res) => {
+ if (res.code) {
+ this.$modal.msgSuccess("璁板綍鎴愬姛");
+ this.getList(1);
+ }
+ });
+ }
+ });
+ })
+ .catch(() => {});
+ },
+ // 鎮h�呰繃婊よЕ鍙�
+ handleUpdate(row) {
+ particularpatient(row.patid).then((response) => {
+ this.form = response.data;
+ this.form.filterDrname = store.getters.nickName;
+ });
+ this.amendtag = true;
+ this.Labelchange = true;
+ },
+ // 渚挎嵎鎸夐挳
+ toleadExport(too) {
+ if (too == 1) {
+ this.topqueryParams.sendstate = 4;
+ this.topqueryParams.excep = null;
+ } else if (too == 2) {
+ this.topqueryParams.excep = 1;
+ }
+ this.handleQuery();
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.topqueryParams.pageNum = null;
+ this.topqueryParams.pageSize = null;
+ this.download(
+ "smartor/serviceSubtask/patItemExport",
+ {
+ ...this.topqueryParams,
+ },
+ `user_${new Date().getTime()}.xlsx`
+ );
+ },
+ // 寮傚父鍒楁覆鏌�
+ tableRowClassName({ row, rowIndex }) {
+ if (row.excep == 1) {
+ return "warning-row";
+ } else if (row.excep == 2) {
+ return "remind-row";
+ }
+ return "";
+ },
+ // 鍒涘缓鍐嶆闅忚鏈嶅姟
+ setupsubtask() {
+ this.$refs["zcform"].validate((valid) => {
+ if (valid) {
+ this.zcform.remark =
+ this.zcform.remark + "銆�" + this.getCurrentTime() + "銆�";
+ let form = structuredClone(this.zcform);
+ form.longSendTime = this.formatTime(form.date1);
+ form.finishtime = "";
+ if (form.resource) {
+ if (form.resource == 2) {
+ form.serviceType = 13;
+ }
+ } else {
+ this.$modal.msgError("鏈�夋嫨闅忚鏂瑰紡");
+ }
+ form.id = null;
+ form.sendstate = 2;
+ form.preachform = form.preachformson;
+ form.longTask = 0;
+ addserviceSubtask(form).then((res) => {
+ if (res.code == 200) {
+ this.$modal.msgSuccess("鍒涘缓鎴愬姛");
+ } else {
+ this.$modal.msgError("鍒涘缓澶辫触");
+ }
+ this.dialogFormVisible = false;
+ });
+ }
+ });
+ },
+ getCurrentTime() {
+ const now = new Date();
+ const year = now.getFullYear();
+ const month = String(now.getMonth() + 1).padStart(2, "0");
+ const day = String(now.getDate()).padStart(2, "0");
+ const hours = String(now.getHours()).padStart(2, "0");
+ const minutes = String(now.getMinutes()).padStart(2, "0");
+ const seconds = String(now.getSeconds()).padStart(2, "0");
+
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-button--primary.is-plain {
+ color: #ffffff;
+ background: #409eff;
+ border-color: #4fabe9;
+}
+
+.document {
+ // width: 100px;
+ height: 50px;
+}
+::v-deep.el-table .warning-row {
+ background: #eec4c4;
+}
+::v-deep.el-table .remind-row {
+ background: #fcf5aa;
+}
+
+.documentf {
+ display: flex;
+ justify-content: flex-end;
+}
+
+.download {
+ text-align: center;
+
+ .el-upload__tip {
+ font-size: 23px;
+ }
+
+ .el-upload__text {
+ font-size: 23px;
+ }
+}
+
+.uploading {
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #ffffff;
+ 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);
+}
+
+.el-tag + .el-tag {
+ margin-left: 10px;
+}
+
+.button-new-tag {
+ margin-left: 10px;
+ height: 32px;
+ line-height: 30px;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+.input-new-tag {
+ width: 90px;
+ margin-left: 10px;
+ vertical-align: bottom;
+}
+
+.drexamine {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 30px;
+ background: #daeaf5;
+
+ img {
+ width: 100px;
+ height: 100px;
+ }
+}
+
+.qrcode-dialo {
+ // text-align: center;
+ // display: flex;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ 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);
+
+ .topic-dev {
+ margin-bottom: 25px;
+ font-size: 20px !important;
+
+ .dev-text {
+ margin-bottom: 10px;
+ }
+ }
+}
+::v-deep.leftvlue .el-card__body {
+ background: #f2f8ff;
+ color: #324a9b;
+}
+::v-deep.leftvlue .el-card__body:hover {
+ background: #3664d9;
+ color: #fff;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.errleftvlue .el-card__body {
+ background: #fdd0d7;
+}
+::v-deep.errleftvlue .el-card__body:hover {
+ background: #f88d96;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+::v-deep.jgleftvlue .el-card__body:hover {
+ background: #f7f075;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+
+::v-deep.ysfleftvlue .el-card__body {
+ background: #d0fdd8;
+}
+::v-deep.ysfleftvlue .el-card__body:hover {
+ background: #0abc54;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
+.button-bb {
+ font-weight: 500;
+ background-color: #2ba05c;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
+.button-xq {
+ font-weight: 500;
+ background-color: #409eff;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
+.button-sc {
+ font-weight: 500;
+ background-color: #b3a21f;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
+.button-zx {
+ background: #324a9b;
+ padding: 5px;
+ border-radius: 1px;
+ color: #ffffff;
+}
+
+::v-deep.el-radio-group {
+ span {
+ font-size: 24px;
+ }
+}
+.purple-button {
+ background-color: #7e22ce;
+ border-color: #7e22ce;
+ color: #fff;
+}
+
+.purple-button:hover,
+.purple-button:focus {
+ background-color: #9333ea;
+ border-color: #9333ea;
+}
+
+.purple-button:active {
+ background-color: #6b21a8;
+ border-color: #6b21a8;
+}
+.button-textxga {
+ color: #de7897;
+}
+.purple-button.is-disabled {
+ background-color: #d8b4fe;
+ border-color: #d8b4fe;
+ opacity: 1; /* 淇濇寔绂佺敤鐘舵�侀�忔槑搴� */
+}
+// 閫夐」瀛椾綋鏀惧ぇ
+// ::v-deep.el-checkbox-group {
+// span {
+// font-size: 24px;
+// }
+// }
+</style>
diff --git a/src/views/followvisit/discharge/index.vue b/src/views/followvisit/discharge/index.vue
index 7a274c7..593b275 100644
--- a/src/views/followvisit/discharge/index.vue
+++ b/src/views/followvisit/discharge/index.vue
@@ -60,6 +60,25 @@
</el-card>
</div>
</el-col>
+ <el-col :span="2.5" v-if="orgname == '鐪佺珛鍚屽痉缈犺嫅闄㈠尯'">
+ <div class="jgleftvlue">
+ <el-card shadow="hover ">
+ <div style="padding: 8px">
+ <span>璀﹀憡</span>
+ <div
+ style="
+ text-align: center;
+ font-size: 18px;
+ margin-top: 10px;
+ font-weight: 600;
+ "
+ >
+ {{ jgvalue }}
+ </div>
+ </div>
+ </el-card>
+ </div>
+ </el-col>
</el-row>
</div>
<el-row :gutter="20">
@@ -274,7 +293,7 @@
</div>
</div>
</el-col>
- <el-col :span="1.5">
+ <el-col :span="1.5" v-if="orgname == '鏅畞鐣叉棌鑷不鍘夸汉姘戝尰闄�'">
<div class="documentf">
<div class="document">
<el-tooltip
@@ -1107,6 +1126,7 @@
inputVisible: false,
Labelchange: false,
ycvalue: "",
+ jgvalue: "",
yfsvalue: "",
inputValue: "",
preachform: "",
@@ -1287,7 +1307,7 @@
value: 1,
label: "寮傚父",
},
- {
+ {
value: 2,
label: "璀﹀憡",
},
@@ -1414,6 +1434,7 @@
// this.cardlist[1].value = response.rows[0].wzx;
this.cardlist[1].value = response.rows[0].ysf;
this.ycvalue = response.rows[0].yc;
+ this.jgvalue = response.rows[0].jg;
this.cardlist[2].value = response.rows[0].fssb;
this.cardlist[3].value = response.rows[0].dsf;
// this.cardlist[4].value = response.rows[0].yfs2;
@@ -1499,17 +1520,16 @@
buidegetTasklist(obj).then((response) => {
this.userList = response.rows[0].serviceSubtaskList;
this.total = response.total;
- if (refresh) {
- this.cardlist[0].value =
- Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
- this.cardlist[1].value = response.rows[0].wzx;
- this.cardlist[2].value = response.rows[0].ysf;
- this.ycvalue = response.rows[0].yc;
- this.cardlist[3].value = response.rows[0].fssb;
- this.cardlist[4].value = response.rows[0].dsf;
- // this.cardlist[5].value = response.rows[0].yfs2;
- this.yfsvalue = response.rows[0].yfs;
- }
+ this.cardlist[0].value =
+ Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
+ this.cardlist[1].value = response.rows[0].wzx;
+ this.cardlist[2].value = response.rows[0].ysf;
+ this.ycvalue = response.rows[0].yc;
+ this.jgvalue = response.rows[0].jg;
+ this.cardlist[3].value = response.rows[0].fssb;
+ this.cardlist[4].value = response.rows[0].dsf;
+ // this.cardlist[5].value = response.rows[0].yfs2;
+ this.yfsvalue = response.rows[0].yfs;
this.loading = false;
this.userList.forEach((item) => {
let idArray = null;
@@ -1847,9 +1867,9 @@
Seedetails(row) {
let type = "";
console.log(row, "rwo");
- if (row.type == 1) {
- type = 1;
- }
+ if (row.type == 1) {
+ type = 1;
+ }
this.$router.push({
path: "/followvisit/record/detailpage/",
query: {
@@ -1915,7 +1935,7 @@
} else if (too == 2) {
this.topqueryParams.excep = 1;
}
- this.handleQuery();
+ this.handleQuery(1);
},
/** 瀵煎嚭鎸夐挳鎿嶄綔 */
handleExport() {
@@ -2095,6 +2115,10 @@
background: #f88d96;
cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
}
+::v-deep.jgleftvlue .el-card__body:hover {
+ background: #f7f075;
+ cursor: pointer; /* 榧犳爣鎮诞鏃跺彉涓烘墜褰� */
+}
::v-deep.ysfleftvlue .el-card__body {
background: #d0fdd8;
diff --git a/src/views/followvisit/record/detailpage/index.vue b/src/views/followvisit/record/detailpage/index.vue
index 933b61d..d30067d 100644
--- a/src/views/followvisit/record/detailpage/index.vue
+++ b/src/views/followvisit/record/detailpage/index.vue
@@ -549,76 +549,96 @@
<!-- 浜哄伐澶勭悊 -->
<div class="manual-action">
<div class="Followuserinfos">
- <div>
+ <!-- 椤堕儴鎿嶄綔鍖哄煙 -->
+ <div class="section-header">
+ <h3><i class="el-icon-s-operation"></i> 浜哄伐澶勭悊</h3>
+ <div class="header-actions">
+ <!-- 鍩虹鎿嶄綔鎸夐挳缁� -->
+ <div class="action-group basic-actions">
+ <el-button
+ type="primary"
+ plain
+ @click="Editsingletasksonyic('')"
+ >
+ 淇濆瓨鍩虹淇℃伅
+ </el-button>
+
+ <!-- 鏂板锛氬欢缁姢鐞嗘寜閽� -->
+ <el-button
+ type="success"
+ plain
+ @click="handleContinuationCare"
+ v-if="showContinuationCareBtn"
+ >
+ 寤剁画鎶ょ悊
+ </el-button>
+
+ <el-button
+ type="primary"
+ round
+ @click="sendAgain"
+ v-if="form.isVisitAgain != 2"
+ >
+ 鍐嶆闅忚
+ </el-button>
+ </div>
+
+ <!-- 寮傚父鐘舵�侀�夋嫨鍣� -->
+ <div class="action-group tag-selector">
+ <el-select
+ v-model="selectedTag"
+ placeholder="璇烽�夋嫨寮傚父鐘舵��"
+ clearable
+ style="width: 150px; margin-right: 10px"
+ >
+ <el-option
+ v-for="item in tagOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ <span style="display: flex; align-items: center">
+ <span
+ class="color-indicator"
+ :style="{ backgroundColor: item.color }"
+ ></span>
+ <span>{{ item.label }}</span>
+ </span>
+ </el-option>
+ </el-select>
+
+ <!-- 褰撳墠閫夋嫨鐨勯鑹叉寚绀哄櫒 -->
+ <div
+ v-if="selectedTag"
+ class="color-indicator selected-indicator"
+ :style="{ backgroundColor: getSelectedTagColor() }"
+ ></div>
+
+ <!-- 鏍囪璇存槑鎻愮ず -->
+ <el-tooltip
+ v-if="selectedTag"
+ effect="light"
+ :content="getSelectedDescription()"
+ placement="top"
+ >
+ <i class="el-icon-info tag-info-icon"></i>
+ </el-tooltip>
+ </div>
+ </div>
+ </div>
+
+ <!-- 琛ㄥ崟鍖哄煙 -->
+ <div class="form-content">
<el-form
ref="userform"
:model="form"
:rules="userrules"
- label-width="120px"
+ label-width="100px"
>
- <div class="headline">
- <div>浜哄伐澶勭悊</div>
- <div style="margin: 0 30px">
- <el-button
- type="primary"
- plain
- @click="Editsingletasksonyic('')"
- >淇濆瓨鍩虹淇℃伅</el-button
- >
- </div>
- <div>
- <el-button
- type="primary"
- round
- v-if="this.form.isVisitAgain != 2"
- @click="sendAgain()"
- >鍐嶆闅忚</el-button
- >
- </div>
- <div class="tag-selector-container">
- <el-select
- v-model="selectedTag"
- placeholder="璇烽�夋嫨寮傚父鐘舵��"
- clearable
- style="width: 150px; margin-right: 10px"
- >
- <el-option
- v-for="item in tagOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- <span style="display: flex; align-items: center">
- <span
- class="color-indicator"
- :style="{ backgroundColor: item.color }"
- ></span>
- <span>{{ item.label }}</span>
- </span>
- </el-option>
- </el-select>
-
- <!-- 褰撳墠閫夋嫨鐨勯鑹叉寚绀哄櫒 -->
- <div
- v-if="selectedTag"
- class="color-indicator selected-indicator"
- :style="{ backgroundColor: getSelectedTagColor() }"
- ></div>
-
- <!-- 鏍囪璇存槑鎻愮ず -->
- <el-tooltip
- v-if="selectedTag"
- effect="light"
- :content="getSelectedDescription()"
- placement="top"
- >
- <i class="el-icon-info tag-info-icon"></i>
- </el-tooltip>
- </div>
- </div>
+ <!-- 鑱旂郴淇℃伅琛� -->
<el-row>
- <el-col :span="14"
- ><el-form-item label="鑱旂郴鐢佃瘽">
+ <el-col :span="14">
+ <el-form-item label="鑱旂郴鐢佃瘽">
<el-input
placeholder="鑱旂郴鐢佃瘽缂哄け"
v-model="userform.telcode"
@@ -629,12 +649,15 @@
@click="handleCall(userform.telcode, 'tel')"
:disabled="!isValidPhone(userform.telcode)"
></el-button>
- </el-input> </el-form-item
- ></el-col>
+ </el-input>
+ </el-form-item>
+ </el-col>
</el-row>
+
+ <!-- 鑱旂郴浜轰俊鎭 -->
<el-row>
- <el-col :span="14"
- ><el-form-item label="鑱旂郴浜虹數璇�">
+ <el-col :span="14">
+ <el-form-item label="鑱旂郴浜虹數璇�">
<el-input
placeholder="鑱旂郴浜虹數璇濈己澶�"
v-model="userform.relativetelcode"
@@ -646,17 +669,21 @@
handleCall(userform.relativetelcode, 'relative')
"
:disabled="!isValidPhone(userform.relativetelcode)"
- ></el-button
- ></el-input> </el-form-item
- ></el-col>
- <el-col :span="10"
- ><el-form-item label="鑱旂郴浜哄叧绯�">
+ ></el-button>
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="9">
+ <el-form-item label="鍏崇郴">
<el-input
placeholder="鑱旂郴浜哄叧绯荤己澶�"
v-model="userform.relation"
- ></el-input> </el-form-item
- ></el-col>
+ ></el-input>
+ </el-form-item>
+ </el-col>
</el-row>
+
+ <!-- 閫氳瘽鎺у埗鍖哄煙 -->
<div class="call-controls">
<CallButton
ref="callButton"
@@ -708,13 +735,15 @@
/>
</div>
</div>
- <el-form-item label="闅忚鍐呭" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
- <el-input type="textarea" v-model="form.remark"></el-input>
- </el-form-item>
- <el-form-item label="闅忚璁板綍" v-else>
+
+ <!-- 闅忚鍐呭/璁板綍 -->
+ <el-form-item
+ :label="orgname == '涓芥按甯備腑鍖婚櫌' ? '闅忚鍐呭' : '闅忚璁板綍'"
+ >
<el-input type="textarea" v-model="form.remark"></el-input>
</el-form-item>
+ <!-- 闅忚鎯呭喌 -->
<el-form-item label="闅忚鎯呭喌" v-if="orgname == '涓芥按甯備腑鍖婚櫌'">
<el-radio-group v-model="form.taskSituation">
<el-radio
@@ -722,121 +751,136 @@
:label="city.value"
:value="city.value"
:key="city.value"
- >{{ city.label }}</el-radio
>
+ {{ city.label }}
+ </el-radio>
</el-radio-group>
</el-form-item>
+
+ <!-- 澶勭悊鎰忚 -->
<el-form-item label="澶勭悊鎰忚">
- <div>
+ <div class="opinion-buttons">
<el-button
plain
type="warning"
@click="Editsingletaskson('1')"
- >鏆備笉澶勭悊</el-button
>
+ 鏆備笉澶勭悊
+ </el-button>
<el-button
plain
type="success"
@click="Editsingletaskson('2')"
- >鐥呮儏绋冲畾</el-button
>
+ 鐥呮儏绋冲畾
+ </el-button>
<el-button
plain
type="primary"
@click="Editsingletaskson('3')"
- >閫氱煡灏辫瘖</el-button
>
- <el-button plain type="info" @click="Editsingletaskson('5')"
- >涓績闅忚</el-button
- >
- <el-button type="primary" round @click="sendAgainmsg"
- >鐭俊鍙戦��</el-button
- >
+ 閫氱煡灏辫瘖
+ </el-button>
+ <el-button plain type="info" @click="Editsingletaskson('5')">
+ 浜哄伐闅忚
+ </el-button>
+ <el-button type="primary" round @click="sendAgainmsg">
+ 鐭俊鍙戦��
+ </el-button>
</div>
</el-form-item>
</el-form>
+ </div>
- <div class="detailed">
- <h3>鎮h�呮。妗堜俊鎭�</h3>
- <el-form ref="userform" :model="userform" label-width="100px">
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鎮h�呭鍚�" prop="name">
- <el-input
- v-model="userform.name"
- placeholder="璇疯緭鍏ュ鍚�"
- maxlength="30"
- ></el-input> </el-form-item
- ></el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="12"
- ><el-form-item label="鎬у埆" prop="telcode">
- <el-select v-model="userform.sex" placeholder="璇烽�夋嫨">
- <el-option label="鐢�" :value="1"> </el-option>
- <el-option label="濂�" :value="2"> </el-option>
- </el-select> </el-form-item
- ></el-col>
- <el-col :span="12">
- <el-form-item label="骞撮緞" prop="name">
- <el-input
- v-model="userform.age"
- placeholder="璇疯緭鍏ュ鍚�"
- maxlength="20"
- ></el-input> </el-form-item
- ></el-col>
- </el-row>
+ <!-- 鎮h�呮。妗堜俊鎭� -->
+ <div class="detailed">
+ <h3>鎮h�呮。妗堜俊鎭�</h3>
+ <el-form ref="userform" :model="userform" label-width="100px">
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鎮h�呭鍚�" prop="name">
+ <el-input
+ v-model="userform.name"
+ placeholder="璇疯緭鍏ュ鍚�"
+ maxlength="30"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鎬у埆" prop="sex">
+ <el-select v-model="userform.sex" placeholder="璇烽�夋嫨">
+ <el-option label="鐢�" :value="1"> </el-option>
+ <el-option label="濂�" :value="2"> </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="骞撮緞" prop="age">
+ <el-input
+ v-model="userform.age"
+ placeholder="璇疯緭鍏ュ勾榫�"
+ maxlength="20"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
- <el-row :gutter="20">
- <el-col :span="12"
- ><el-form-item label="鑱旂郴鏂瑰紡" prop="telcode">
- <el-input
- v-model="userform.telcode"
- placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
- maxlength="20"
- /> </el-form-item
- ></el-col>
- <el-col :span="12">
- <el-form-item label="浜插睘鑱旂郴鏂瑰紡" prop="name">
- <el-input
- v-model="userform.relativetelcode"
- placeholder="璇疯緭鍏ュ鍚�"
- maxlength="20"
- ></el-input> </el-form-item
- ></el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="璇婃柇鍚嶇О" prop="name">
- <el-input
- v-model="form.leavediagname"
- placeholder="璇疯緭鍏ヨ瘖鏂�"
- maxlength="50"
- ></el-input> </el-form-item
- ></el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item label="鍑虹敓鍦�" prop="birthplace">
- <el-input
- v-model="userform.birthplace"
- placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅"
- maxlength="50"
- /> </el-form-item
- ></el-col>
- </el-row>
- <el-row :gutter="20">
- <el-col :span="24"
- ><el-form-item label="灞呬綇鍦�" prop="placeOfResidence">
- <el-input
- v-model="userform.placeOfResidence"
- placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅"
- maxlength="50"
- /> </el-form-item
- ></el-col>
- </el-row>
- </el-form>
- </div>
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鑱旂郴鏂瑰紡" prop="telcode">
+ <el-input
+ v-model="userform.telcode"
+ placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
+ maxlength="20"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜插睘鑱旂郴鏂瑰紡" prop="relativetelcode">
+ <el-input
+ v-model="userform.relativetelcode"
+ placeholder="璇疯緭鍏ヤ翰灞炶仈绯绘柟寮�"
+ maxlength="20"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="24">
+ <el-form-item label="璇婃柇鍚嶇О" prop="leavediagname">
+ <el-input
+ v-model="form.leavediagname"
+ placeholder="璇疯緭鍏ヨ瘖鏂�"
+ maxlength="50"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="24">
+ <el-form-item label="鍑虹敓鍦�" prop="birthplace">
+ <el-input
+ v-model="userform.birthplace"
+ placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅"
+ maxlength="50"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="24">
+ <el-form-item label="灞呬綇鍦�" prop="placeOfResidence">
+ <el-input
+ v-model="userform.placeOfResidence"
+ placeholder="鍥姐�佺渷銆佸湴甯傘�佸尯鍘裤�佽閬撶瓑璇︾粏淇℃伅"
+ maxlength="50"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
</div>
</div>
</div>
@@ -1165,6 +1209,9 @@
isEndingCall: false,
CaldialogVisible: false,
currentCall: null, // 褰撳墠閫氳瘽瀵硅薄
+ // 鏂板鍔熻兘鏁版嵁
+ showPatientInfo: true,
+ showContinuationCareBtn: false, // 鎺у埗寤剁画鎶ょ悊鎸夐挳鏄剧ず
// 璺敱鐩戝惉鐩稿叧
routeWatcher: null,
lastRoutePath: this.$route.path,
@@ -1439,6 +1486,10 @@
this.visitCount = this.$route.query.visitCount;
this.serviceType = this.$route.query.serviceType;
this.orgname = localStorage.getItem("orgname");
+ if (this.orgname == "鐪佺珛鍚屽痉缈犺嫅闄㈠尯") {
+ this.showContinuationCareBtn = true;
+ }
+
if (this.orgname == "缂欎簯鍘夸腑鍖诲尰闄�") {
this.options = [
{
@@ -1498,6 +1549,8 @@
methods: {
// 鑾峰彇涓婚鏍峰紡绫�
getTopicClass(item) {
+ console.log(item.isabnormal, "getTopicClass");
+
// 鏍规嵁鐘舵�佸�艰繑鍥炲搴旂殑鏍峰紡绫�
if (item.isabnormal == 1) {
return "scriptTopic-isabnormal"; // 寮傚父 - 绾㈣壊
@@ -1736,6 +1789,7 @@
scriptid: item.id,
excep: excep,
questiontext: item.scriptContent,
+ categoryid: item.categoryid,
answerps: item.answerps || null, // 娣诲姞闄勫姞淇℃伅
};
if (item.scriptType == 2 && item.scriptResult[0]) {
@@ -2496,6 +2550,34 @@
// 鍒锋柊鏁版嵁
this.getTaskservelist();
},
+ // 寤剁画鎶ょ悊
+ handleContinuationCare() {
+ if (this.form.continueFlag != 2) {
+ this.$modal.confirm("鏄惁涓烘湰娆℃湇鍔″垱寤哄欢缁姢鐞嗭紵").then(() => {
+ this.$router.push({
+ path: "/followvisit/ContinueFordetails/",
+ query: {
+ taskid: this.taskid,
+ patid: this.patid,
+ id: this.id,
+ Voicetype: this.Voicetype,
+ visitCount: this.visitCount,
+ },
+ });
+ });
+ } else {
+ this.$router.push({
+ path: "/followvisit/ContinueFordetails/",
+ query: {
+ taskid: this.taskid,
+ patid: this.patid,
+ id: this.id,
+ Voicetype: this.Voicetype,
+ visitCount: this.visitCount,
+ },
+ });
+ }
+ },
},
// deactivated() {
// console.log(11);
@@ -2826,7 +2908,7 @@
padding: 30px;
border: 1px solid #dcdfe6;
box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04);
- max-height: 618px;
+ max-height: 716px;
/* 璁剧疆鏈�澶ч珮搴� */
overflow-y: auto;
/* 鍐呭瓒呰繃楂樺害鏃舵樉绀烘粴鍔ㄦ潯 */
@@ -3234,4 +3316,366 @@
margin-bottom: 20px;
}
}
+/* 浜哄伐澶勭悊閮ㄥ垎鏍峰紡 */
+.manual-action {
+ flex: 1;
+ min-width: 0;
+ height: 100%;
+ overflow: hidden;
+
+ .Followuserinfos {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ padding: 20px;
+ background: #fff;
+ border-radius: 8px;
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ height: 100%;
+ overflow-y: auto;
+ }
+}
+
+/* 澶撮儴鍖哄煙 */
+.section-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-bottom: 15px;
+ border-bottom: 2px solid #f0f0f0;
+ margin-bottom: 20px;
+ flex-wrap: wrap;
+ gap: 15px;
+
+ h3 {
+ margin: 0;
+ color: #409eff;
+ font-size: 18px;
+ font-weight: 600;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+
+ i {
+ font-size: 20px;
+ }
+ }
+
+ .header-actions {
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ gap: 15px;
+
+ .action-group {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ }
+ }
+}
+
+/* 鍩虹鎿嶄綔鎸夐挳 */
+.basic-actions {
+ .el-button {
+ min-width: 100px;
+ }
+}
+
+/* 寮傚父鐘舵�侀�夋嫨鍣� */
+.tag-selector {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+
+ .current-tag {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 6px 12px;
+ background: #f8f9fa;
+ border: 1px solid;
+ border-radius: 4px;
+ font-size: 12px;
+ transition: all 0.3s;
+
+ &:hover {
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+ }
+ }
+}
+
+.color-indicator {
+ width: 16px;
+ height: 16px;
+ border-radius: 3px;
+ margin-right: 8px;
+ display: inline-block;
+}
+
+.selected-indicator {
+ margin-left: 10px;
+ width: 20px;
+ height: 20px;
+}
+
+.tag-info-icon {
+ margin-left: 10px;
+ color: #909399;
+ cursor: pointer;
+ font-size: 16px;
+}
+
+/* 琛ㄥ崟鍖哄煙 */
+.form-content {
+ background: #f8f9fa;
+ border-radius: 8px;
+ padding: 20px;
+ margin-bottom: 20px;
+
+ .el-form {
+ .el-row {
+ margin: 0 -10px;
+ }
+
+ .el-col {
+ padding: 0 10px;
+ }
+ }
+}
+
+/* 閫氳瘽鎺у埗鍖哄煙 */
+.call-controls {
+ margin: 15px 0;
+
+ .hangup-container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 10px;
+ margin: 15px 0;
+ }
+
+ .hangup-btn {
+ width: 120px;
+ height: 40px;
+ font-size: 14px;
+ border-radius: 20px;
+ box-shadow: 0 2px 8px rgba(244, 67, 54, 0.3);
+ transition: all 0.3s ease;
+ }
+
+ .hangup-btn:hover:not(:disabled) {
+ transform: translateY(-2px);
+ box-shadow: 0 4px 12px rgba(244, 67, 54, 0.4);
+ }
+
+ .call-timer {
+ font-size: 12px;
+ color: #666;
+ background: #f5f5f5;
+ padding: 4px 12px;
+ border-radius: 12px;
+ font-family: "Courier New", monospace;
+ }
+
+ .call-status-container {
+ margin: 10px 0;
+ }
+
+ .status-alert {
+ border-radius: 8px;
+ transition: all 0.3s ease;
+ }
+
+ .status-alert.status-calling {
+ border-left: 4px solid #e6a23c;
+ }
+
+ .status-alert.status-connected {
+ border-left: 4px solid #67c23a;
+ animation: pulse 2s infinite;
+ }
+
+ .status-alert.status-ended {
+ border-left: 4px solid #909399;
+ }
+
+ .sip-registering {
+ margin: 10px 0;
+ }
+
+ .registering-alert {
+ border-radius: 8px;
+ background-color: #f4f4f5;
+ border-left: 4px solid #909399;
+ }
+}
+
+/* 澶勭悊鎰忚鎸夐挳缁� */
+.opinion-buttons {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+ align-items: center;
+
+ .el-button {
+ flex: 1;
+ min-width: 120px;
+ }
+}
+
+/* 鎮h�呮。妗堜俊鎭� */
+.detailed {
+ width: 100%;
+ border-radius: 8px;
+ padding: 20px;
+ margin-bottom: 20px;
+ background-color: #ddf0f8;
+ border: 1px solid #b3e0f2;
+
+ h3 {
+ margin: 0 0 20px 0;
+ color: #333;
+ font-size: 16px;
+ font-weight: 500;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+
+ &:before {
+ content: "";
+ display: block;
+ width: 4px;
+ height: 16px;
+ background: #409eff;
+ border-radius: 2px;
+ }
+ }
+
+ .el-form {
+ .el-row {
+ margin: 0 -10px;
+ }
+
+ .el-col {
+ padding: 0 10px;
+ margin-bottom: 15px;
+ }
+ }
+}
+
+/* 鍔ㄧ敾鏁堟灉 */
+@keyframes pulse {
+ 0% {
+ opacity: 1;
+ }
+ 50% {
+ opacity: 0.7;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media screen and (max-width: 1200px) {
+ .section-header {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 15px;
+ }
+
+ .header-actions {
+ width: 100%;
+ justify-content: space-between;
+ }
+
+ .opinion-buttons {
+ .el-button {
+ min-width: calc(50% - 8px);
+ }
+ }
+}
+
+@media screen and (max-width: 768px) {
+ .Followuserinfos {
+ padding: 15px;
+ }
+
+ .form-content,
+ .detailed {
+ padding: 15px;
+ }
+
+ .header-actions {
+ flex-direction: column;
+ align-items: stretch;
+
+ .action-group {
+ flex-direction: column;
+ align-items: stretch;
+
+ .el-select {
+ width: 100%;
+ margin-right: 0;
+ }
+ }
+ }
+
+ .opinion-buttons {
+ flex-direction: column;
+
+ .el-button {
+ width: 100%;
+ }
+ }
+
+ .detailed {
+ .el-form {
+ .el-col {
+ width: 100%;
+ }
+ }
+ }
+}
+
+/* 婊氬姩鏉$編鍖� */
+.Followuserinfos {
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-track {
+ background: #f1f1f1;
+ border-radius: 3px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #c1c1c1;
+ border-radius: 3px;
+
+ &:hover {
+ background: #a8a8a8;
+ }
+ }
+}
+
+/* 鎸夐挳鍥炬爣浼樺寲 */
+.el-icon-phone {
+ transition: all 0.3s;
+}
+
+.el-button[disabled] .el-icon-phone {
+ color: #c0c4cc;
+}
+
+.el-button:not([disabled]) .el-icon-phone {
+ color: #409eff;
+}
+
+.el-button:not([disabled]):hover .el-icon-phone {
+ color: #66b1ff;
+ transform: scale(1.1);
+}
</style>
diff --git a/src/views/login-ls.vue b/src/views/login-sy.vue
similarity index 95%
rename from src/views/login-ls.vue
rename to src/views/login-sy.vue
index 1260bd7..9de6d08 100644
--- a/src/views/login-ls.vue
+++ b/src/views/login-sy.vue
@@ -37,10 +37,10 @@
</el-input>
</el-form-item>
<!-- 涓�===================姘� -->
- <el-form-item prop="orgid">
+ <el-form-item prop="medicalCode">
<el-select
style="width: 100%"
- v-model="loginForm.orgid"
+ v-model="loginForm.medicalCode"
placeholder="璇烽�夋嫨闄㈠尯"
>
<el-option
@@ -165,10 +165,11 @@
});
},
getorganization() {
- getorganization().then((res) => {
+ getorganization({ pageSize: 30 }).then((res) => {
if (res.code == 200) {
this.options = res.rows.map((item) => ({
- value: item.orgid,
+ value: item.medicalCode,
+ // value: item.medicalCode,
label: item.organizationName,
}));
}
@@ -205,14 +206,19 @@
}
// 鍔ㄦ�佽缃� campusid 鍙傛暟
- const selectedOrg = this.options.find(item => item.value === this.loginForm.orgid);
+ const selectedOrg = this.options.find(item => item.value === this.loginForm.medicalCode);
+ console.log(selectedOrg);
+
if (selectedOrg) {
if (selectedOrg.label.includes('婀栨花')) {
this.loginForm.campusid = 1;
+ this.loginForm.orgid = 1;
} else if (selectedOrg.label.includes('鍚村北')) {
this.loginForm.campusid = 2;
+ this.loginForm.orgid = 1;
} else {
this.loginForm.campusid = 1; // 榛樿鍊兼垨鍏朵粬澶勭悊
+ this.loginForm.orgid = 1;
}
}
diff --git a/src/views/login.vue b/src/views/login.vue
index 0515b81..323aebe 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -37,10 +37,10 @@
</el-input>
</el-form-item>
<!-- 涓�===================姘� -->
- <el-form-item prop="medicalCode">
+ <el-form-item prop="orgid">
<el-select
style="width: 100%"
- v-model="loginForm.medicalCode"
+ v-model="loginForm.orgid"
placeholder="璇烽�夋嫨闄㈠尯"
>
<el-option
@@ -118,8 +118,7 @@
code: "",
orgid: "H41010500003",
},
- options: [
- ],
+ options: [],
loginRules: {
username: [
{ required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" },
@@ -165,11 +164,10 @@
});
},
getorganization() {
- getorganization().then((res) => {
+ getorganization({ pageSize: 30 }).then((res) => {
if (res.code == 200) {
this.options = res.rows.map((item) => ({
- value: item.medicalCode,
- // value: item.medicalCode,
+ value: item.orgid,
label: item.organizationName,
}));
}
@@ -187,61 +185,58 @@
};
},
handleLogin() {
- this.$refs.loginForm.validate((valid) => {
- if (valid) {
- this.loading = true;
+ this.$refs.loginForm.validate((valid) => {
+ if (valid) {
+ this.loading = true;
- if (this.loginForm.rememberMe) {
- Cookies.set("username", this.loginForm.username, { expires: 30 });
- Cookies.set("password", encrypt(this.loginForm.password), {
- expires: 30,
- });
- Cookies.set("rememberMe", this.loginForm.rememberMe, {
- expires: 30,
- });
- } else {
- Cookies.remove("username");
- Cookies.remove("password");
- Cookies.remove("rememberMe");
- }
-
- // 鍔ㄦ�佽缃� campusid 鍙傛暟
- const selectedOrg = this.options.find(item => item.value === this.loginForm.medicalCode);
- console.log(selectedOrg);
-
- if (selectedOrg) {
- if (selectedOrg.label.includes('婀栨花')) {
- this.loginForm.campusid = 1;
- this.loginForm.orgid = 1;
- } else if (selectedOrg.label.includes('鍚村北')) {
- this.loginForm.campusid = 2;
- this.loginForm.orgid = 1;
- } else {
- this.loginForm.campusid = 1; // 榛樿鍊兼垨鍏朵粬澶勭悊
- this.loginForm.orgid = 1;
- }
- }
-
- this.$store
- .dispatch("Login", this.loginForm)
- .then((res) => {
- if (this.loginForm.username == "admin") {
- this.$router.push({ path: "/index" }).catch(() => {});
+ if (this.loginForm.rememberMe) {
+ Cookies.set("username", this.loginForm.username, { expires: 30 });
+ Cookies.set("password", encrypt(this.loginForm.password), {
+ expires: 30,
+ });
+ Cookies.set("rememberMe", this.loginForm.rememberMe, {
+ expires: 30,
+ });
} else {
- this.$router
- .push({ path: "/followvisit/discharge" })
- .catch(() => {});
+ Cookies.remove("username");
+ Cookies.remove("password");
+ Cookies.remove("rememberMe");
}
- })
- .catch(() => {
- this.loading = false;
- if (this.captchaEnabled) {
- this.getCode();
+
+ // 鍔ㄦ�佽缃� campusid 鍙傛暟
+ const selectedOrg = this.options.find(
+ (item) => item.value === this.loginForm.orgid
+ );
+ if (selectedOrg) {
+ if (selectedOrg.label.includes("婀栨花")) {
+ this.loginForm.campusid = 1;
+ } else if (selectedOrg.label.includes("鍚村北")) {
+ this.loginForm.campusid = 2;
+ } else {
+ this.loginForm.campusid = 1; // 榛樿鍊兼垨鍏朵粬澶勭悊
+ }
}
- });
- }
- });
-}
+
+ this.$store
+ .dispatch("Login", this.loginForm)
+ .then((res) => {
+ if (this.loginForm.username == "admin") {
+ this.$router.push({ path: "/index" }).catch(() => {});
+ } else {
+ this.$router
+ .push({ path: "/followvisit/discharge" })
+ .catch(() => {});
+ }
+ })
+ .catch(() => {
+ this.loading = false;
+ if (this.captchaEnabled) {
+ this.getCode();
+ }
+ });
+ }
+ });
+ },
},
};
</script>
diff --git a/src/views/patient/patient/behospitalized.vue b/src/views/patient/patient/behospitalized.vue
index a368496..96760c4 100644
--- a/src/views/patient/patient/behospitalized.vue
+++ b/src/views/patient/patient/behospitalized.vue
@@ -637,6 +637,9 @@
this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
(obj) => obj.deptCode
);
+ this.queryParams.leavehospitaldistrictcodes = store.getters.belongWards.map(
+ (obj) => obj.districtCode
+ );
this.getList();
// this.listDept();
this.gettabList();
@@ -776,8 +779,8 @@
leavehospitaldistrictcodes: [],
};
this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
- (obj) => obj.deptCode
- );
+ (obj) => obj.deptCode
+ );
this.handleQuery();
},
// 澶氶�夋閫変腑鏁版嵁
@@ -948,6 +951,6 @@
}
}
.button-textsc {
- color: #3664D9;
+ color: #3664d9;
}
</style>
diff --git a/src/views/patient/patient/hospital.vue b/src/views/patient/patient/hospital.vue
index 6961289..1db8cc4 100644
--- a/src/views/patient/patient/hospital.vue
+++ b/src/views/patient/patient/hospital.vue
@@ -630,6 +630,9 @@
this.queryParams.leaveldeptcodes = store.getters.belongDepts.map(
(obj) => obj.deptCode
);
+ this.queryParams.leavehospitaldistrictcodes = store.getters.belongWards.map(
+ (obj) => obj.districtCode
+ );
this.getList();
// this.listDept();
this.gettabList();
diff --git a/src/views/sfstatistics/percentage/index.vue b/src/views/sfstatistics/percentage/index.vue
index 745f8f0..b7a5a1b 100644
--- a/src/views/sfstatistics/percentage/index.vue
+++ b/src/views/sfstatistics/percentage/index.vue
@@ -1168,6 +1168,20 @@
</template>
</el-table-column>
<el-table-column
+ label="浠诲姟鎵ц鏂瑰紡"
+ align="center"
+ key="preachform"
+ prop="preachform"
+ width="160"
+ :show-overflow-tooltip="true"
+ >
+ <template slot-scope="scope">
+ <span v-for="item in scope.row.preachform"
+ >{{ item }}銆�
+ </span>
+ </template>
+ </el-table-column>
+ <el-table-column
prop="visitTime"
align="center"
label="搴旈殢璁挎椂闂�"
@@ -1420,6 +1434,7 @@
allDeptCodes: [],
// 瀛樺偍鎵�鏈夌梾鍖轰唬鐮�
allWardCodes: [],
+ checkboxlist: [],
// 琛ㄥ崟鍙傛暟
form: {},
forms: {
@@ -1469,6 +1484,7 @@
created() {
this.getDeptTree();
this.getList();
+ this.checkboxlist = store.getters.checkboxlist;
this.orgname = localStorage.getItem("orgname");
},
@@ -1487,12 +1503,14 @@
? this.allDeptCodes
: this.queryParams.deptcodes,
};
-
+ this.loading = true;
// 绉婚櫎鍙兘瀛樺湪鐨�"all"鍊�
delete params.leavehospitaldistrictcodes.all;
delete params.deptcodes.all;
getSfStatistics(params).then((response) => {
console.log(response);
+ this.loading = false;
+
// this.total = response.total;
this.userList = this.customSort(response.data);
});
@@ -1851,7 +1869,25 @@
this.infotitleVisible = true;
this.infotitle = title;
this.infotitlelist = row; // 鍋囪row灏辨槸闇�瑕佸睍绀虹殑璇︾粏鏁扮粍
+ console.log(this.infotitlelist, "this.infotitlelist");
+ this.infotitlelist.forEach((item) => {
+ let idArray = null;
+
+ if (item.preachform) {
+ if (item.endtime) {
+ item.preachformson = item.preachform;
+ idArray = item.preachform.split(",");
+ }
+
+ item.preachform = idArray.map((value) => {
+ // 鏌ユ壘id瀵瑰簲鐨勫璞�
+ const item = this.checkboxlist.find((item) => item.value == value);
+ // 濡傛灉鎵惧埌瀵瑰簲鐨刬d锛岃繑鍥瀕abel鍊硷紝鍚﹀垯杩斿洖null
+ return item ? item.label : null;
+ });
+ }
+ });
// 鍒濆鍖栧姞杞�
this.loadIndex = 0;
this.currentDisplayList = [];
@@ -1865,6 +1901,8 @@
// 妯℃嫙寮傛鍔犺浇锛屽疄闄呭彲鑳芥槸鐩存帴鍒囩墖鏈湴鏁版嵁
setTimeout(() => {
+ console.log(this.infotitlelist, "this.infotitlelist");
+
const nextChunk = this.infotitlelist.slice(
this.loadIndex,
this.loadIndex + this.pageSize
diff --git a/vue.config.js b/vue.config.js
index 24e835b..7ce923e 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -36,7 +36,7 @@
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `https://www.health-y.cn/lssf`,
- // target: `http://192.168.100.10:8098`,
+ // target: `http://192.168.100.10:8096`,
// target: `http://192.168.100.10:8094`,//鐪佺珛鍚屽痉
// target: `http://192.168.100.10:8095`,//鏂板崕
target:`http://localhost:8095`,
--
Gitblit v1.9.3