From a5cba9ab040f6f97558046885dce3017f9bab7e9 Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期二, 11 八月 2026 14:12:29 +0800
Subject: [PATCH] 提交
---
src/views/followvisit/Continue/ContinueFordetails.vue | 1566 ++++++++++++++++++++++++++-------------------------------
1 files changed, 704 insertions(+), 862 deletions(-)
diff --git a/src/views/followvisit/Continue/ContinueFordetails.vue b/src/views/followvisit/Continue/ContinueFordetails.vue
index d20c246..827db3c 100644
--- a/src/views/followvisit/Continue/ContinueFordetails.vue
+++ b/src/views/followvisit/Continue/ContinueFordetails.vue
@@ -3,9 +3,7 @@
<div class="ContinuityCarePage" id="app-container">
<!-- 绗竴閮ㄥ垎锛氭偅鑰呭熀纭�淇℃伅 -->
<div class="patient-info-section">
- <div class="headline">
- <div>鎮h�呭熀纭�淇℃伅</div>
- </div>
+ <div class="headline"><div>鎮h�呭熀纭�淇℃伅</div></div>
<div class="patient-info-form">
<el-form
ref="patientForm"
@@ -21,7 +19,7 @@
placeholder="璇疯緭鍏ユ偅鑰呭鍚�"
maxlength="30"
clearable
- ></el-input>
+ />
</el-form-item>
</el-col>
<el-col :span="8">
@@ -31,8 +29,8 @@
placeholder="璇烽�夋嫨"
clearable
>
- <el-option label="鐢�" :value="1"></el-option>
- <el-option label="濂�" :value="2"></el-option>
+ <el-option label="鐢�" :value="1" />
+ <el-option label="濂�" :value="2" />
</el-select>
</el-form-item>
</el-col>
@@ -43,11 +41,10 @@
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">
@@ -56,7 +53,7 @@
placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
maxlength="20"
clearable
- ></el-input>
+ />
</el-form-item>
</el-col>
<el-col :span="8">
@@ -66,7 +63,7 @@
placeholder="璇疯緭鍏ヤ綇闄㈠彿"
maxlength="50"
clearable
- ></el-input>
+ />
</el-form-item>
</el-col>
<el-col :span="8">
@@ -77,12 +74,10 @@
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">
@@ -91,7 +86,7 @@
placeholder="璇疯緭鍏ヨ瘖鏂悕绉�"
maxlength="100"
clearable
- ></el-input>
+ />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -101,11 +96,10 @@
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">
@@ -114,11 +108,10 @@
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">
@@ -127,7 +120,7 @@
placeholder="璇疯緭鍏ヤ翰灞炲鍚�"
maxlength="30"
clearable
- ></el-input>
+ />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -137,31 +130,29 @@
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"
+ <span class="label">寤剁画娆℃暟锛�</span
+ ><span class="value"
>{{ continuitySummary.continueCount }} 娆�</span
>
</div>
<div class="summary-item">
- <span class="label">鏈�鏂版湇鍔★細</span>
- <span class="value">{{
+ <span class="label">鏈�鏂版湇鍔★細</span
+ ><span class="value">{{
formatDisplayTime(continuitySummary.continueTimeNow)
}}</span>
</div>
<div class="summary-item">
- <span class="label">涓嬫鏈嶅姟锛�</span>
- <span class="value">{{
+ <span class="label">涓嬫鏈嶅姟锛�</span
+ ><span class="value">{{
formatDisplayTime(continuitySummary.continueTimeNext)
}}</span>
</div>
@@ -169,31 +160,27 @@
</el-form-item>
</el-col>
</el-row>
-
- <!-- 鎿嶄綔鎸夐挳 -->
<el-form-item>
<el-button
type="primary"
@click="savePatientInfo"
:loading="savingPatientInfo"
+ >淇濆瓨鎮h�呬俊鎭�</el-button
>
- 淇濆瓨鎮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="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> 褰撳墠鏈嶅姟闅忚鍐呭锛堝彧璇伙級
+ <i class="el-icon-document" /> 褰撳墠鏈嶅姟闅忚鍐呭锛堝彧璇伙級
<el-button
type="text"
size="small"
@@ -203,7 +190,6 @@
{{ showQuestionSelector ? "闅愯棌闂閫夊彇" : "閫夊彇寤剁画闂" }}
</el-button>
</div>
-
<!-- 闂閫夊彇闈㈡澘 -->
<div v-if="showQuestionSelector" class="question-selector-panel">
<div class="selector-header">
@@ -212,14 +198,13 @@
type="primary"
size="small"
@click="confirmQuestionSelection"
+ >纭閫夊彇</el-button
>
- 纭閫夊彇
- </el-button>
</div>
<div class="question-list">
<el-checkbox-group v-model="selectedQuestionIds">
<div
- v-for="(question, index) in availableQuestions"
+ v-for="(question, idx) in availableQuestions"
:key="question.id"
class="question-item"
>
@@ -239,7 +224,7 @@
<el-tabs v-model="activeName" type="border-card">
<el-tab-pane name="wj">
<span slot="label"
- ><i class="el-icon-notebook-1"></i> 闂嵎闅忚缁撴灉</span
+ ><i class="el-icon-notebook-1" /> 闂嵎闅忚缁撴灉</span
>
<div class="CONTENT">
<div class="title">{{ taskname ? taskname : "闂嵎" }}</div>
@@ -252,7 +237,6 @@
<!-- 鍗曢�� -->
<div
:class="getTopicClass(item)"
- :key="index"
v-if="item.scriptType == 1 && !item.astrict"
>
<div class="dev-text">
@@ -264,10 +248,10 @@
<el-radio-group v-model="item.scriptResult" disabled>
<el-radio
v-for="(
- items, indexs
+ items, idx
) in item.svyTaskTemplateTargetoptions"
:class="getOptionClass(items)"
- :key="indexs"
+ :key="idx"
:label="items.optioncontent"
>{{ items.optioncontent }}</el-radio
>
@@ -283,11 +267,10 @@
placeholder="璇疯緭鍏ュ叿浣撲俊鎭�"
v-model="item.answerps"
readonly
- ></el-input>
+ />
</div>
<div v-show="item.prompt">
- <el-alert :title="item.prompt" type="warning">
- </el-alert>
+ <el-alert :title="item.prompt" type="warning" />
</div>
</div>
<!-- 澶氶�� -->
@@ -297,7 +280,6 @@
? 'scriptTopic-isabnormal'
: 'scriptTopic-dev'
"
- :key="index"
v-if="item.scriptType == 2 && !item.astrict"
>
<div class="dev-text">
@@ -313,31 +295,30 @@
<el-checkbox
:class="items.isabnormal ? 'red-star' : ''"
v-for="(
- items, indexs
+ items, idx
) in item.svyTaskTemplateTargetoptions"
- :key="indexs"
+ :key="idx"
:label="items.optioncontent"
+ >{{ items.optioncontent }}</el-checkbox
>
- {{ 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>
+ <el-alert :title="item.prompt" type="warning" />
</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>
+ }}</span
+ ><span v-if="item.valueType == 3"
+ >(鍙兘杈撳叆鏁板瓧)</span
+ >
</div>
<div class="dev-xx" v-if="item.valueType == 3">
<el-input
@@ -345,8 +326,7 @@
placeholder="璇疯緭鍏ョ瓟妗�"
v-model="item.scriptResult"
readonly
- >
- </el-input>
+ />
</div>
<div class="dev-xx" v-else>
<el-input
@@ -355,8 +335,7 @@
placeholder="璇疯緭鍏ョ瓟妗�"
v-model="item.scriptResult"
readonly
- >
- </el-input>
+ />
</div>
</div>
</div>
@@ -376,8 +355,8 @@
<div class="dev-xx">
<el-radio-group v-model="item.matchedtext" disabled>
<el-radio
- v-for="(items, index) in item.scriptResult"
- :key="index"
+ v-for="(items, idx) in item.scriptResult"
+ :key="idx"
:label="items"
:class="items.isabnormal ? 'red-star' : ''"
>{{ items }}</el-radio
@@ -385,16 +364,17 @@
</el-radio-group>
</div>
<div v-show="item.prompt">
- <el-alert :title="item.prompt" type="warning">
- </el-alert>
+ <el-alert :title="item.prompt" type="warning" />
</div>
</div>
- <div class="scriptTopic-dev" :key="index" v-else>
+ <div class="scriptTopic-dev" v-else>
<div class="dev-text">
{{ index + 1 }}. [闂瓟]<span>{{
item.scriptContent
- }}</span>
- <span v-if="item.valueType == 3">(鍙兘杈撳叆鏁板瓧)</span>
+ }}</span
+ ><span v-if="item.valueType == 3"
+ >(鍙兘杈撳叆鏁板瓧)</span
+ >
</div>
<div class="dev-xx" v-if="item.valueType == 3">
<el-input
@@ -402,8 +382,7 @@
placeholder="璇疯緭鍏ョ瓟妗�"
v-model="item.scriptResult"
readonly
- >
- </el-input>
+ />
</div>
<div class="dev-xx" v-else>
<el-input
@@ -412,8 +391,7 @@
placeholder="璇疯緭鍏ョ瓟妗�"
v-model="item.scriptResult"
readonly
- >
- </el-input>
+ />
</div>
</div>
</div>
@@ -422,33 +400,33 @@
</el-tab-pane>
<el-tab-pane name="yy">
<span slot="label"
- ><i class="el-icon-headset"></i> 璇煶闅忚璇︽儏</span
+ ><i class="el-icon-headset" /> 璇煶闅忚璇︽儏</span
>
<div class="borderdiv">
<div class="title">{{ taskname ? taskname : "闂嵎" }}</div>
<div class="voice-audio">
- 瀹屾暣璇煶锛�
- <mini-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 v-for="item in voiceDatatop" :key="item.id">
<div class="leftside">
- <i class="el-icon-phone-outline"></i
- ><span>{{ item.questiontext }}</span>
+ <i class="el-icon-phone-outline" /><span>{{
+ item.questiontext
+ }}</span>
</div>
<div class="offside">
- <i class="el-icon-user"></i>
+ <i class="el-icon-user" />
<div class="offside-value">
<el-input
type="textarea"
:autosize="{ minRows: 1 }"
v-model="item.asrtext"
readonly
- ></el-input>
+ />
<div>
<mini-audio
:audio-source="
@@ -456,7 +434,7 @@
? item.questionvoice
: '@assets/order/example.mp3'
"
- ></mini-audio>
+ />
</div>
</div>
</div>
@@ -469,10 +447,9 @@
</div>
<!-- 鍙冲崐閮ㄥ垎锛氬巻娆″欢缁姢鐞嗘湇鍔� -->
- <!-- 鍙冲崐閮ㄥ垎锛氬巻娆″欢缁姢鐞嗘湇鍔� -->
<div class="continuity-history">
<div class="sub-headline">
- <i class="el-icon-time"></i> 鍘嗘寤剁画鎶ょ悊鏈嶅姟
+ <i class="el-icon-time" /> 鍘嗘寤剁画鎶ょ悊鏈嶅姟
<el-button
type="primary"
size="small"
@@ -501,9 +478,7 @@
: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">
@@ -513,12 +488,17 @@
size="small"
icon="el-icon-plus"
@click="addContinuityProblem(index)"
+ >鏂板闂锛堜粠宸叉湁閫夋嫨锛�</el-button
>
- 鏂板闂
- </el-button>
+ <el-button
+ type="text"
+ size="small"
+ icon="el-icon-edit"
+ @click="addCustomProblem(index)"
+ >鑷畾涔夐棶棰�</el-button
+ >
</div>
-
- <!-- 宸查�夊彇鐨勯棶棰樺垪琛� -->
+ <!-- 闂鍒楄〃 -->
<div
v-if="
item.form.continuityProblems &&
@@ -539,7 +519,7 @@
>
<el-select
v-model="problem.questionId"
- placeholder="閫夋嫨闂"
+ placeholder="閫夋嫨宸叉湁闂"
size="small"
style="width: 300px; margin: 0 10px"
@change="
@@ -549,6 +529,7 @@
$event
)
"
+ :disabled="problem.isCustom"
>
<el-option
v-for="q in availableQuestions"
@@ -562,7 +543,6 @@
>
</el-option>
</el-select>
- <!-- 淇锛氫紶閫掓纭殑绱㈠紩 -->
<el-button
type="danger"
icon="el-icon-delete"
@@ -571,34 +551,146 @@
@click="
removeContinuityProblem(index, problemIndex)
"
- >
- </el-button>
+ />
</div>
- <!-- 闂嵎寮忛棶棰樺睍绀哄尯鍩� -->
+ <!-- ========== 鑷畾涔夐棶棰樼紪杈戝尯 ========== -->
<div
- v-if="problem.questionId"
+ v-if="problem.isCustom"
+ class="custom-editor"
+ >
+ <el-form-item
+ label="棰樼洰鍐呭"
+ style="margin-bottom: 10px"
+ >
+ <el-input
+ v-model="problem.customText"
+ placeholder="璇疯緭鍏ラ棶棰樺唴瀹�"
+ size="small"
+ clearable
+ />
+ </el-form-item>
+ <el-form-item
+ label="棰樺瀷"
+ style="margin-bottom: 10px"
+ >
+ <el-radio-group
+ v-model="problem.customType"
+ size="small"
+ >
+ <el-radio-button :label="1"
+ >鍗曢�夐</el-radio-button
+ >
+ <el-radio-button :label="2"
+ >澶氶�夐</el-radio-button
+ >
+ <el-radio-button :label="4"
+ >闂瓟棰�</el-radio-button
+ >
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item
+ v-if="
+ problem.customType === 1 ||
+ problem.customType === 2
+ "
+ label="閫夐」"
+ style="margin-bottom: 10px"
+ >
+ <div
+ v-for="(opt, idx) in problem.customOptions"
+ :key="idx"
+ class="option-row"
+ >
+ <el-input
+ v-model="opt.optioncontent"
+ placeholder="璇疯緭鍏ラ�夐」鍐呭"
+ size="small"
+ style="width: 200px; margin-right: 10px"
+ />
+ <el-button
+ type="danger"
+ size="mini"
+ icon="el-icon-delete"
+ @click="
+ removeCustomOption(
+ index,
+ problemIndex,
+ idx
+ )
+ "
+ />
+ </div>
+ <el-button
+ type="primary"
+ size="mini"
+ @click="
+ addCustomOption(index, problemIndex)
+ "
+ >娣诲姞閫夐」</el-button
+ >
+ </el-form-item>
+ <el-form-item label="绛旀">
+ <!-- 鍗曢�� -->
+ <el-radio-group
+ v-if="problem.customType === 1"
+ v-model="problem.customAnswer"
+ >
+ <el-radio
+ v-for="opt in problem.customOptions"
+ :key="opt.optioncontent"
+ :label="opt.optioncontent"
+ >
+ {{ opt.optioncontent }}
+ </el-radio>
+ </el-radio-group>
+ <!-- 澶氶�� -->
+ <el-checkbox-group
+ v-else-if="problem.customType === 2"
+ v-model="problem.customAnswer"
+ >
+ <el-checkbox
+ v-for="opt in problem.customOptions"
+ :key="opt.optioncontent"
+ :label="opt.optioncontent"
+ >
+ {{ opt.optioncontent }}
+ </el-checkbox>
+ </el-checkbox-group>
+ <!-- 闂瓟 -->
+ <el-input
+ v-else-if="problem.customType === 4"
+ v-model="problem.customAnswer"
+ placeholder="璇疯緭鍏ョ瓟妗�"
+ size="small"
+ style="width: 300px"
+ />
+ <span v-else style="color: #999"
+ >璇峰厛閫夋嫨棰樺瀷</span
+ >
+ </el-form-item>
+ </div>
+
+ <!-- ========== 闈炶嚜瀹氫箟锛氬睍绀哄凡鏈夐棶棰� ========== -->
+ <div
+ v-else-if="
+ problem.questionId &&
+ getQuestionOriginalData(problem.questionId)
+ "
class="question-display-area"
>
- <!-- 鏍规嵁闂绫诲瀷鍔ㄦ�佹覆鏌� -->
- <div
- v-if="
- getQuestionOriginalData(problem.questionId)
- "
- class="question-render"
- >
- <!-- 鍗曢�夌被鍨� -->
+ <div class="question-item-render">
+ <!-- 鍗曢�� -->
<div
v-if="
getQuestionOriginalData(
problem.questionId
).scriptType == 1
"
- class="question-item-render"
>
<div class="question-text">
- <strong>[鍗曢�塢</strong>
- <span>{{
+ <strong>[鍗曢�塢</strong
+ ><span>{{
getQuestionOriginalData(
problem.questionId
).scriptContent
@@ -609,44 +701,39 @@
v-model="problem.selectedOption"
>
<el-radio
- v-for="option in getQuestionOriginalData(
+ v-for="opt in getQuestionOriginalData(
problem.questionId
).svyTaskTemplateTargetoptions"
- :key="option.optioncontent"
- :label="option.optioncontent"
- :class="getOptionClass(option)"
+ :key="opt.optioncontent"
+ :label="opt.optioncontent"
+ :class="getOptionClass(opt)"
+ >{{ opt.optioncontent }}</el-radio
>
- {{ 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>{{
+ <strong>[澶氶�塢</strong
+ ><span>{{
getQuestionOriginalData(
problem.questionId
).scriptContent
@@ -657,38 +744,35 @@
v-model="problem.selectedOptions"
>
<el-checkbox
- v-for="option in getQuestionOriginalData(
+ v-for="opt in getQuestionOriginalData(
problem.questionId
).svyTaskTemplateTargetoptions"
- :key="option.optioncontent"
- :label="option.optioncontent"
+ :key="opt.optioncontent"
+ :label="opt.optioncontent"
:class="
- option.isabnormal ? 'red-star' : ''
+ opt.isabnormal ? 'red-star' : ''
"
+ >{{ opt.optioncontent }}</el-checkbox
>
- {{ 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>{{
+ <strong>[闂瓟]</strong
+ ><span>{{
getQuestionOriginalData(
problem.questionId
).scriptContent
- }}</span>
- <span
+ }}</span
+ ><span
v-if="
getQuestionOriginalData(
problem.questionId
@@ -708,7 +792,7 @@
placeholder="璇疯緭鍏ョ瓟妗�"
v-model="problem.answer"
style="width: 200px"
- ></el-input>
+ />
<el-input
v-else
type="textarea"
@@ -716,16 +800,13 @@
placeholder="璇疯緭鍏ョ瓟妗�"
v-model="problem.answer"
style="width: 100%"
- ></el-input>
+ />
</div>
</div>
</div>
- <div v-else class="no-question-data">
- 闂鏁版嵁鍔犺浇涓�...
- </div>
</div>
- <!-- 鍘熸湁鐨勯棶棰樻弿杩扮瓑瀛楁 -->
+ <!-- 闂鐘舵�佸拰瑙e喅鏃ユ湡 -->
<div class="problem-detail">
<div class="detail-row">
<span class="detail-label">褰撳墠鐘舵�侊細</span>
@@ -735,31 +816,26 @@
size="small"
style="width: 120px; margin-right: 20px"
>
- <el-option
- label="鏈鐞�"
- value="pending"
- ></el-option>
+ <el-option label="鏈鐞�" value="pending" />
<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'"
+ class="detail-label"
style="margin-left: 20px"
+ >瑙e喅鏃ユ湡锛�</span
>
- 瑙e喅鏃ユ湡锛�
- </span>
<el-date-picker
v-if="problem.status === 'resolved'"
v-model="problem.resolvedDate"
@@ -767,29 +843,19 @@
placeholder="閫夋嫨瑙e喅鏃ユ湡"
value-format="yyyy-MM-dd"
size="small"
- style="width: 150px; margin-left: 10px"
- ></el-date-picker>
+ style="width: 150px"
+ />
</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 v-else class="empty-problems">
+ 鏆傛棤寤剁画闂锛岃鐐瑰嚮涓婃柟鎸夐挳娣诲姞
+ </div>
</div>
</el-form-item>
- <!-- 寤剁画鎬ф姢鐞嗚褰� -->
<el-form-item label="鎶ょ悊璁板綍" prop="careRecord">
<el-input
type="textarea"
@@ -797,10 +863,8 @@
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">
@@ -808,7 +872,7 @@
v-model="item.form.dutyNurse"
placeholder="璇疯緭鍏ヨ矗浠绘姢澹�"
clearable
- ></el-input>
+ />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -819,23 +883,11 @@
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-option label="鐢佃瘽鍥炶" value="phone" />
+ <el-option label="涓婇棬鍥炶" value="home" />
+ <el-option label="闂ㄨ瘖鍥炶" value="clinic" />
+ <el-option label="寰俊鍥炶" value="wechat" />
+ <el-option label="鍏朵粬" value="other" />
</el-select>
</el-form-item>
</el-col>
@@ -852,14 +904,15 @@
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) }}
+ {{
+ calculateDaysLeft(item.form.nextServiceTime)
+ }}
澶�
</div>
</el-form-item>
@@ -872,26 +925,20 @@
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>
- <el-button @click="resetContinuityTab(index)">
- 閲嶇疆
- </el-button>
+ <el-button @click="resetContinuityTab(index)"
+ >閲嶇疆</el-button
+ >
</el-form-item>
</el-form>
</div>
@@ -903,6 +950,7 @@
</div>
</div>
</template>
+
<script>
import {
getsearchrResults,
@@ -920,7 +968,6 @@
dicts: ["sys_yujing"],
data() {
return {
- // 璺敱鍙傛暟
taskid: "",
id: "",
sendname: "",
@@ -928,7 +975,6 @@
Voicetype: 0,
serviceType: "",
- // 闅忚鍐呭鐩稿叧
activeName: "wj",
taskname: "",
voice: "",
@@ -936,10 +982,10 @@
voiceDatatop: [],
form: {},
userform: {},
- // 鏂板锛氶棶棰橀�夋嫨鐩稿叧
+
showQuestionSelector: false,
selectedQuestionIds: [],
- // 鎮h�呭熀纭�淇℃伅琛ㄥ崟
+
patientForm: {
name: "",
sex: "",
@@ -970,12 +1016,10 @@
},
savingPatientInfo: false,
- // 寤剁画鎶ょ悊鐩稿叧
activeContinuityTab: "continuity-0",
continuityTabs: [],
continuityTabIndex: 0,
continuityRules: {
- // 绉婚櫎continuityProblems鐨勯獙璇佽鍒�
careRecord: [
{ required: true, message: "璇疯緭鍏ユ姢鐞嗚褰�", trigger: "blur" },
],
@@ -988,15 +1032,10 @@
serviceTime: [
{ required: true, message: "璇烽�夋嫨鏈嶅姟鏃堕棿", trigger: "change" },
],
- nextServiceTime: [
- { required: true, message: "璇烽�夋嫨涓嬫鏈嶅姟鏃堕棿", trigger: "change" },
- ],
},
- // 鍙�夌殑寤剁画闂锛堜粠宸︿晶闂嵎涓彁鍙栵級
availableQuestions: [],
- // 寤剁画鎶ょ悊姹囨�讳俊鎭�
continuitySummary: {
continueCount: 0,
continueTimeNow: "",
@@ -1004,7 +1043,6 @@
continueContent: "",
},
- // 鍏朵粬
logsheetlist: [],
};
},
@@ -1015,34 +1053,21 @@
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";
- }
+ 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";
- }
+ if (items.isabnormal == 1) return "red-star";
+ else if (items.isabnormal == 2) return "yellow-star";
return "";
},
- // 鑾峰彇闂嵎鏁版嵁
+ // ---- 闂嵎鏁版嵁鍔犺浇 ----
getsearchrResults(id) {
getsearchrResults({
taskid: this.taskid,
@@ -1052,7 +1077,6 @@
}).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) {
@@ -1065,18 +1089,18 @@
});
this.taskname = res.data.taskName;
this.overdata();
- // 鎻愬彇鍙�夌殑寤剁画闂
this.extractAvailableQuestions();
+ // 鍔犺浇鍘嗗彶寤剁画鎶ょ悊锛堟鏃� availableQuestions 宸插氨缁級
+ this.loadContinuityHistory();
}
});
},
overdata() {
this.tableDatatop.forEach((item, index) => {
- var obj = item.svyTaskTemplateTargetoptions.find(
+ const obj = item.svyTaskTemplateTargetoptions.find(
(items) => items.optioncontent == item.scriptResult
);
if (obj) {
- console.log(obj, "obj");
if (obj.isabnormal) {
this.tableDatatop[index].isabnormal = obj.isabnormal;
}
@@ -1084,7 +1108,6 @@
}
});
},
- // 鎻愬彇鍙�夌殑寤剁画闂
extractAvailableQuestions() {
this.availableQuestions = this.tableDatatop
.filter(
@@ -1096,136 +1119,29 @@
text: item.scriptContent,
originalIndex: index,
}));
- }, // 鍒囨崲闂閫夋嫨闈㈡澘鏄剧ず
+ },
+
+ // ---- 闂閫夊彇 ----
toggleQuestionSelection() {
this.showQuestionSelector = !this.showQuestionSelector;
- if (this.showQuestionSelector) {
- // 閲嶇疆閫夋嫨
- this.selectedQuestionIds = [];
- }
+ 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
- );
-
+ ].form.continuityProblems.some((p) => p.questionId === questionId);
if (!exists) {
this.continuityTabs[activeTabIndex].form.continuityProblems.push({
questionId: questionId,
@@ -1233,35 +1149,31 @@
description: "",
resolvedDate: "",
createTime: new Date().toISOString(),
+ isCustom: false,
+ customText: "",
+ customType: null,
+ customOptions: [],
+ customAnswer: "",
+ selectedOption: "",
+ selectedOptions: [],
+ answer: "",
+ showAppendInput: false,
+ appendInput: "",
});
}
});
-
- // 鍏抽棴閫夋嫨闈㈡澘
this.showQuestionSelector = false;
this.selectedQuestionIds = [];
-
- this.$modal.msgSuccess(
- `宸叉坊鍔� ${this.selectedQuestionIds.length} 涓欢缁棶棰榒
- );
+ this.$modal.msgSuccess("宸叉坊鍔犻�変腑鐨勫欢缁棶棰�");
},
- // 绉婚櫎寤剁画闂
- removeContinuityProblem(tabIndex, problemIndex) {
- this.continuityTabs[tabIndex].form.continuityProblems.splice(
- problemIndex,
- 1
- );
- },
-
- // 鑾峰彇璇煶鏁版嵁
+ // ---- 璇煶鏁版嵁 ----
getPersonVoices(id) {
- let obj = {
+ const 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;
@@ -1276,27 +1188,22 @@
item.scriptResult = [];
}
});
-
- // 鎻愬彇鍙�夌殑寤剁画闂
this.extractAvailableQuestions();
+ this.loadContinuityHistory();
}
});
},
- // 鑾峰彇鍩虹淇℃伅
+ // ---- 鎮h�呬俊鎭� ----
getuserinfo() {
- const queryParams = {
- pid: Number(this.patid),
- allhosp: "0",
- };
-
- messagelistpatient(queryParams).then((response) => {
- if (response.rows[0]) {
- this.userform = response.rows[0];
- this.initPatientForm();
+ messagelistpatient({ pid: Number(this.patid), allhosp: "0" }).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) {
@@ -1305,8 +1212,6 @@
}
});
},
-
- // 鍒濆鍖栨偅鑰呰〃鍗�
initPatientForm() {
if (this.userform) {
this.patientForm.name = this.userform.name || "";
@@ -1316,7 +1221,6 @@
this.patientForm.address = this.userform.placeOfResidence || "";
this.patientForm.hospitalNumber = this.userform.medicalRecordNo || "";
}
-
if (this.form) {
this.patientForm.dischargeDate =
this.formatTime(this.form.endtime) || "";
@@ -1325,59 +1229,116 @@
}
},
- // 鑾峰彇鎮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();
+ 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.getuserinfo();
+ }
+ if (this.Voicetype) {
+ this.getPersonVoices();
+ } else {
+ this.getsearchrResults();
+ }
}
-
- 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,
- }));
+ this.continuityTabs = historyData.map((item, index) => {
+ const problems = (item.continuityProblems || []).map((problem) => {
+ // 澶勭悊鑷畾涔夐棶棰樺洖鏄�
+ const isCustom =
+ problem.questionId === "__CUSTOM__" ||
+ problem.isCustom === true;
+ if (isCustom) {
+ problem.isCustom = true;
+ problem.questionId = "__CUSTOM__";
+ if (!problem.customText && problem.description) {
+ const match =
+ problem.description.match(/鑷畾涔夐棶棰榌锛�:]\s*(.*)/);
+ if (match) problem.customText = match[1];
+ }
+ if (!problem.customText) problem.customText = "锛堣嚜瀹氫箟闂锛�";
+ // 纭繚閫夐」鏁扮粍瀛樺湪
+ if (!Array.isArray(problem.customOptions))
+ problem.customOptions = [];
+ if (!problem.customType) problem.customType = 1; // 榛樿鍗曢��
+ if (problem.customAnswer === undefined)
+ problem.customAnswer = "";
+ } else if (
+ problem.customText &&
+ this.availableQuestions.length > 0
+ ) {
+ // 鏈夎嚜瀹氫箟鏂囨湰浣嗘湭鏍囪锛屼笖涓嶅湪宸叉湁鍒楄〃涓紝瑙嗕负鑷畾涔�
+ const exists = this.availableQuestions.some(
+ (q) => q.id === problem.questionId
+ );
+ if (!exists) {
+ problem.isCustom = true;
+ problem.questionId = "__CUSTOM__";
+ if (!problem.customText && problem.description) {
+ const match =
+ problem.description.match(/鑷畾涔夐棶棰榌锛�:]\s*(.*)/);
+ if (match) problem.customText = match[1];
+ }
+ if (!problem.customText)
+ problem.customText = "锛堣嚜瀹氫箟闂锛�";
+ if (!Array.isArray(problem.customOptions))
+ problem.customOptions = [];
+ if (!problem.customType) problem.customType = 1;
+ if (problem.customAnswer === undefined)
+ problem.customAnswer = "";
+ }
+ }
+ // 纭繚瀛楁瀹屾暣
+ if (!problem.hasOwnProperty("selectedOption"))
+ problem.selectedOption = "";
+ if (!problem.hasOwnProperty("selectedOptions"))
+ problem.selectedOptions = [];
+ if (!problem.hasOwnProperty("answer")) problem.answer = "";
+ if (!problem.hasOwnProperty("showAppendInput"))
+ problem.showAppendInput = false;
+ if (!problem.hasOwnProperty("appendInput"))
+ problem.appendInput = "";
+ if (!problem.hasOwnProperty("status")) problem.status = "pending";
+ if (!problem.hasOwnProperty("description"))
+ problem.description = "";
+ if (!problem.hasOwnProperty("resolvedDate"))
+ problem.resolvedDate = "";
+ if (!problem.hasOwnProperty("createTime"))
+ problem.createTime = new Date().toISOString();
+ return problem;
+ });
+
+ return {
+ name: `continuity-${index}`,
+ title: `寤剁画鎶ょ悊${index + 1}`,
+ form: {
+ continuityProblems: problems,
+ 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);
@@ -1385,26 +1346,9 @@
}
},
- // 鏇存柊寤剁画鎶ょ悊姹囨�讳俊鎭�
- 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 || "";
- }
- },
-
- // 娣诲姞寤剁画鎶ょ悊鏍囩椤�
+ // ---- 寤剁画鎶ょ悊 Tab 绠$悊 ----
addContinuityTab() {
- console.log(this.continuityTabs.length);
- if (this.continuityTabs.length) {
- this.continuityTabIndex = this.continuityTabs.length;
- }
- const newIndex = this.continuityTabIndex + 1;
+ const newIndex = this.continuityTabs.length + 1;
const newTab = {
name: `continuity-${newIndex}`,
title: `寤剁画鎶ょ悊${newIndex}`,
@@ -1418,153 +1362,234 @@
},
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) {
+ const tabs = this.continuityTabs;
tabs.forEach((tab, index) => {
if (tab.name === targetName) {
const nextTab = tabs[index + 1] || tabs[index - 1];
- if (nextTab) {
- activeName = nextTab.name;
- }
+ if (nextTab) activeName = nextTab.name;
}
});
}
-
this.activeContinuityTab = activeName;
- this.continuityTabs = tabs.filter((tab) => tab.name !== targetName);
+ this.continuityTabs = this.continuityTabs.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;
+ // ---- 寤剁画闂绠$悊锛堝凡鏈夐棶棰橈級 ----
+ addContinuityProblem(tabIndex) {
+ this.continuityTabs[tabIndex].form.continuityProblems.push({
+ questionId: "",
+ status: "pending",
+ description: "",
+ resolvedDate: "",
+ createTime: new Date().toISOString(),
+ isCustom: false,
+ customText: "",
+ customType: null,
+ customOptions: [],
+ customAnswer: "",
+ selectedOption: "",
+ selectedOptions: [],
+ answer: "",
+ showAppendInput: false,
+ appendInput: "",
+ });
+ },
+ 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.isCustom = false;
+ problem.customText = "";
+ problem.customType = null;
+ problem.customOptions = [];
+ problem.customAnswer = "";
+ // 鑷姩濉厖鎻忚堪
+ 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 || "";
+ }
+ }
+ } else {
+ // 鏈�夋嫨闂
+ problem.description = "";
+ problem.selectedOption = "";
+ problem.selectedOptions = [];
+ problem.answer = "";
+ problem.showAppendInput = false;
+ problem.appendInput = "";
+ }
},
- // 淇濆瓨寤剁画鎶ょ悊鏍囩椤�
+ // ---- 鑷畾涔夐棶棰樼浉鍏� ----
+ addCustomProblem(tabIndex) {
+ this.continuityTabs[tabIndex].form.continuityProblems.push({
+ questionId: "__CUSTOM__",
+ isCustom: true,
+ customText: "",
+ customType: 1, // 榛樿鍗曢��
+ customOptions: [{ optioncontent: "" }],
+ customAnswer: "",
+ status: "pending",
+ description: "",
+ resolvedDate: "",
+ createTime: new Date().toISOString(),
+ selectedOption: "",
+ selectedOptions: [],
+ answer: "",
+ showAppendInput: false,
+ appendInput: "",
+ });
+ },
+ addCustomOption(tabIndex, problemIndex) {
+ const problem =
+ this.continuityTabs[tabIndex].form.continuityProblems[problemIndex];
+ problem.customOptions.push({ optioncontent: "" });
+ },
+ removeCustomOption(tabIndex, problemIndex, optionIndex) {
+ const problem =
+ this.continuityTabs[tabIndex].form.continuityProblems[problemIndex];
+ problem.customOptions.splice(optionIndex, 1);
+ },
+
+ // ---- 杈呭姪鏂规硶 ----
+ getQuestionOriginalData(questionId) {
+ if (!questionId) return null;
+ const found = this.availableQuestions.find((q) => q.id === questionId);
+ if (found && this.tableDatatop[found.originalIndex]) {
+ return this.tableDatatop[found.originalIndex];
+ }
+ return null;
+ },
+ truncateText(text, length) {
+ if (!text) return "";
+ return text.length > length ? text.substring(0, length) + "..." : text;
+ },
+
+ // ---- 淇濆瓨寤剁画鎶ょ悊 ----
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}涓欢缁棶棰樻湭閫夋嫨`);
+ problems.forEach((problem, pIdx) => {
+ if (problem.isCustom) {
+ // 鑷畾涔夐棶棰樻牎楠�
+ if (!problem.customText || !problem.customText.trim()) {
+ hasError = true;
+ this.$modal.msgError(`绗�${pIdx + 1}涓嚜瀹氫箟闂鍐呭涓虹┖`);
+ }
+ if (
+ (problem.customType === 1 || problem.customType === 2) &&
+ problem.customOptions.some((opt) => !opt.optioncontent.trim())
+ ) {
+ hasError = true;
+ this.$modal.msgError(`绗�${pIdx + 1}涓嚜瀹氫箟闂瀛樺湪绌洪�夐」`);
+ }
+ if (problem.customType === 1 && !problem.customAnswer) {
+ hasError = true;
+ this.$modal.msgError(
+ `绗�${pIdx + 1}涓嚜瀹氫箟闂锛堝崟閫夛級鏈�夋嫨绛旀`
+ );
+ }
+ if (
+ problem.customType === 2 &&
+ (!problem.customAnswer || problem.customAnswer.length === 0)
+ ) {
+ hasError = true;
+ this.$modal.msgError(
+ `绗�${pIdx + 1}涓嚜瀹氫箟闂锛堝閫夛級鏈�夋嫨绛旀`
+ );
+ }
+ if (problem.customType === 4 && !problem.customAnswer) {
+ hasError = true;
+ this.$modal.msgError(
+ `绗�${pIdx + 1}涓嚜瀹氫箟闂锛堥棶绛旓級鏈~鍐欑瓟妗坄
+ );
+ }
+ } else {
+ // 宸叉湁闂鏍¢獙
+ if (!problem.questionId) {
+ hasError = true;
+ this.$modal.msgError(`绗�${pIdx + 1}涓欢缁棶棰樻湭閫夋嫨`);
+ }
}
});
-
- if (hasError) {
- return false;
- }
+ if (hasError) return;
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;
-
+ let latestTime = "",
+ nextTime = "";
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.serviceTime &&
+ (!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;
- }
+ if (
+ tab.form.nextServiceTime &&
+ (!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,
@@ -1574,29 +1599,12 @@
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;
- });
+ vm.continuityTabs.forEach((tab) => (tab.saving = false));
} else {
vm.$modal.msgError("淇濆瓨澶辫触");
}
@@ -1604,13 +1612,9 @@
.catch((error) => {
console.error("淇濆瓨澶辫触:", error);
vm.$modal.msgError("淇濆瓨澶辫触");
- vm.continuityTabs.forEach((tab) => {
- tab.saving = false;
- });
+ vm.continuityTabs.forEach((tab) => (tab.saving = false));
});
},
-
- // 閲嶇疆寤剁画鎶ょ悊鏍囩椤�
resetContinuityTab(index) {
this.continuityTabs[index].form = {
continuityProblems: [],
@@ -1623,13 +1627,11 @@
this.$refs[`continuityForm${index}`][0].clearValidate();
},
- // 淇濆瓨鎮h�呬俊鎭�
+ // ---- 鎮h�呬俊鎭繚瀛� ----
savePatientInfo() {
this.$refs.patientForm.validate((valid) => {
if (valid) {
this.savingPatientInfo = true;
-
- // 鏇存柊userform鏁版嵁
const updatedUserform = {
...this.userform,
name: this.patientForm.name,
@@ -1639,7 +1641,6 @@
placeOfResidence: this.patientForm.address,
medicalRecordNo: this.patientForm.hospitalNumber,
};
-
alterpatient(updatedUserform)
.then((res) => {
if (res.code == 200) {
@@ -1657,47 +1658,56 @@
});
} 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";
+ calculateDaysLeft(nextServiceTime) {
+ if (!nextServiceTime) return 0;
+ const diff = new Date(nextServiceTime) - new Date();
+ const days = Math.ceil(diff / (1000 * 60 * 60 * 24));
+ return days > 0 ? days : 0;
+ },
+ 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 || "";
}
+ },
+ 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;
@@ -1709,7 +1719,6 @@
color: #333;
font-weight: 600;
}
-
.sub-headline {
font-size: 16px;
height: 36px;
@@ -1721,14 +1730,11 @@
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;
@@ -1736,43 +1742,35 @@
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;
@@ -1783,7 +1781,6 @@
}
}
}
-
.continuity-history {
flex: 1;
min-width: 0;
@@ -1792,41 +1789,28 @@
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;
-
+ min-height: 0;
.el-tabs__content {
flex: 1;
overflow-y: auto;
+ min-height: 0; // 鍏抽敭锛氶厤鍚� flex
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;
- }
+ .el-form .time-tip {
+ margin-top: 5px;
+ font-size: 12px;
+ color: #67c23a;
+ font-style: italic;
}
}
}
@@ -1834,7 +1818,6 @@
}
}
}
-
.patient-info-section {
margin: 0 10px 20px 10px;
padding: 20px;
@@ -1842,40 +1825,31 @@
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;
- }
+ .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;
@@ -1884,7 +1858,6 @@
color: #333;
}
}
-
.preview-left {
margin: 10px;
padding: 20px;
@@ -1894,11 +1867,9 @@
overflow-y: auto;
background: #fff;
flex: 1;
-
.topic-dev {
margin-bottom: 20px;
font-size: 16px;
-
.dev-text {
margin-bottom: 10px;
font-weight: 500;
@@ -1906,7 +1877,6 @@
}
}
}
-
.scriptTopic-dev {
padding: 15px;
border-radius: 4px;
@@ -1914,7 +1884,6 @@
border: 1px solid #e4e7ed;
margin-bottom: 15px;
}
-
.scriptTopic-isabnormal {
padding: 15px;
border-radius: 4px;
@@ -1923,7 +1892,6 @@
color: #f56c6c;
margin-bottom: 15px;
}
-
.scriptTopic-warning {
padding: 15px;
border-radius: 4px;
@@ -1932,14 +1900,10 @@
color: #e6a23c;
margin-bottom: 15px;
}
-
-.red-star {
- ::v-deep.el-radio__label {
- position: relative;
- padding-right: 10px;
- }
-
- ::v-deep.el-radio__label::after {
+.red-star ::v-deep.el-radio__label {
+ position: relative;
+ padding-right: 10px;
+ &::after {
content: "*";
color: #f56c6c;
position: absolute;
@@ -1947,14 +1911,10 @@
top: 0;
}
}
-
-.yellow-star {
- ::v-deep.el-radio__label {
- position: relative;
- padding-right: 10px;
- }
-
- ::v-deep.el-radio__label::after {
+.yellow-star ::v-deep.el-radio__label {
+ position: relative;
+ padding-right: 10px;
+ &::after {
content: "*";
color: #e6a23c;
position: absolute;
@@ -1963,20 +1923,17 @@
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;
@@ -1986,14 +1943,11 @@
background: #f5f7fa;
border-radius: 4px;
}
-
.preview-left {
flex: 1;
margin: 0;
-
.leftside {
margin: 15px 0;
-
span {
display: inline-block;
padding: 8px 12px;
@@ -2004,12 +1958,10 @@
margin-left: 10px;
}
}
-
.offside {
display: flex;
flex-direction: row-reverse;
margin: 15px 0;
-
.offside-value {
padding: 8px 12px;
background: #67c23a;
@@ -2021,48 +1973,37 @@
}
}
}
-
-/* 鍝嶅簲寮忚璁� */
@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;
- }
+ .patient-info-form .el-row {
+ flex-direction: column;
}
-
+ .patient-info-form .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;
@@ -2070,18 +2011,15 @@
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;
@@ -2089,22 +2027,18 @@
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;
@@ -2113,8 +2047,6 @@
}
}
}
-
-/* 寤剁画闂琛ㄥ崟 */
.continuity-problems-form {
.problems-header {
display: flex;
@@ -2123,131 +2055,112 @@
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;
+ .problems-list-container {
+ // max-height: 680px;
+ // 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;
}
-
- .problem-content {
- .problem-meta {
+ }
+ }
+ .problem-item {
+ margin-bottom: 20px;
+ padding: 15px;
+ background: #f8f9fa;
+ border-radius: 8px;
+ border: 1px solid #e4e7ed;
+ .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;
+ }
+ }
+ .custom-editor {
+ padding: 10px 0;
+ .option-row {
+ display: flex;
+ align-items: center;
+ margin-bottom: 6px;
+ }
+ }
+ .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;
- padding-bottom: 10px;
- border-bottom: 1px dashed #e4e7ed;
-
- .problem-index {
- font-weight: 500;
- color: #409eff;
- min-width: 80px;
+ &:last-child {
+ margin-bottom: 0;
}
- }
-
- .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;
- }
+ .detail-label {
+ font-weight: 500;
+ color: #666;
+ min-width: 80px;
+ white-space: nowrap;
}
}
}
}
}
-
.empty-problems {
text-align: center;
padding: 30px 0;
background: #fafafa;
border-radius: 8px;
border: 1px dashed #e4e7ed;
+ color: #999;
}
}
-/* 寤剁画闂鍒楄〃瀹瑰櫒 - 娣诲姞婊氬姩 */
-.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;
@@ -2255,132 +2168,61 @@
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;
- }
+ .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;
- }
+ .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;
- }
- }
- }
- }
- }
+ .continuity-problems-form
+ .problems-list
+ .problem-item
+ .problem-content
+ .problem-meta {
+ flex-direction: column;
+ align-items: flex-start;
+ .el-select {
+ width: 100% !important;
+ margin: 10px 0;
}
}
}
-/* 婊氬姩鏉$編鍖� */
.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;
}
--
Gitblit v1.9.3