From 45680b99ccdfb0d323088c57c237e0bc714a8e0b Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期五, 13 三月 2026 09:21:32 +0800
Subject: [PATCH] 青岛opo维护
---
src/views/business/assess/assessInfo.vue | 1091 +++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 829 insertions(+), 262 deletions(-)
diff --git a/src/views/business/assess/assessInfo.vue b/src/views/business/assess/assessInfo.vue
index e1d7ddf..36cdba3 100644
--- a/src/views/business/assess/assessInfo.vue
+++ b/src/views/business/assess/assessInfo.vue
@@ -76,19 +76,19 @@
<el-form>
<el-form-item label-width="100px" label="鎹愮尞鍐冲畾">
<el-checkbox-group
- v-model="organdecision"
+ v-model="organdecisionValues"
@change="handleOrganDecisionChange"
:disabled="!isEdit"
>
<el-checkbox
- v-for="item in organselection"
- :key="item"
- :label="item"
- >{{ item }}
+ v-for="dict in dict.type.sys_Organ"
+ :key="dict.value"
+ :label="dict.value"
+ >{{ dict.label }}
</el-checkbox>
</el-checkbox-group>
<el-input
- v-if="organdecision.includes('鍏朵粬')"
+ v-if="showOtherInput"
v-model="organdecisionOther"
placeholder="璇疯緭鍏ュ叾浠栨崘鐚喅瀹氱殑鍏蜂綋鍐呭"
style="margin-top: 10px; width: 300px;"
@@ -113,23 +113,26 @@
<template slot-scope="scope">
<div class="organ-expand-content" v-if="scope.row.expanded">
<el-tabs
- v-model="scope.row.activeAssessmentTab"
+ v-model="scope.row.activeTab"
type="card"
class="organ-detail-tabs"
+ @tab-click="handleTabClick(scope.row, $event)"
>
<!-- 鍔ㄦ�佺敓鎴愯瘎浼癟ab -->
<el-tab-pane
- v-for="(assessment, index) in scope.row.assessments"
- :key="index"
+ v-for="(assessment, index) in getOrganAssessments(scope.row)"
+ :key="`${scope.row.organno}_${index}`"
:label="`绗�${index + 1}娆¤瘎浼癭"
- :name="`assessment_${index}`"
+ :name="index"
>
<organ-assessment-form
:organ-data="scope.row"
- :assessment-data="assessment"
:assessment-index="index"
:readonly="!canAssessOrgan(scope.row)"
- @add-assessment="handleAddAssessment"
+ :current-user="currentUser"
+ @update-assessment="handleUpdateAssessment"
+ @delete-assessment="handleDeleteAssessment"
+ @save-assessment="handleSaveAssessment"
/>
</el-tab-pane>
@@ -154,86 +157,163 @@
</el-tab-pane>
<!-- 璇勪及姹囨�籘ab -->
- <el-tab-pane label="璇勪及姹囨��" name="summary">
- <div class="assessment-summary">
- <el-descriptions title="璇勪及缁撴灉姹囨��" :column="2" border>
- <el-descriptions-item label="鍣ㄥ畼绫诲瀷">{{
- scope.row.organname
- }}</el-descriptions-item>
- <el-descriptions-item label="鑾峰彇鏈烘瀯">{{
- scope.row.gainhospitalname
- }}</el-descriptions-item>
- <el-descriptions-item label="璇勪及娆℃暟" :span="2">
- <el-tag type="info"
- >{{ scope.row.assessments.length }}娆�</el-tag
- >
- </el-descriptions-item>
- <el-descriptions-item label="鏈�鏂拌瘎浼版椂闂�" :span="2">
- {{ getLatestAssessmentTime(scope.row) || "-" }}
- </el-descriptions-item>
- </el-descriptions>
+ <el-tab-pane label="璇勪及姹囨��" name="summary">
+ <div class="assessment-summary">
+ <!-- 鍩烘湰淇℃伅姹囨�� -->
+ <el-descriptions title="鍩烘湰淇℃伅姹囨��" :column="2" border>
+ <el-descriptions-item label="鍣ㄥ畼绫诲瀷">
+ <span class="summary-item">{{ getOrganLabel(scope.row.organno) }}</span>
+ </el-descriptions-item>
+ <el-descriptions-item label="鑾峰彇鏈烘瀯">
+ <span class="summary-item">{{ scope.row.gainhospitalname }}</span>
+ </el-descriptions-item>
+ <el-descriptions-item label="璇勪及娆℃暟" :span="2">
+ <el-tag type="info" size="medium">
+ {{ getAssessmentCount(scope.row) }}娆�
+ </el-tag>
+ </el-descriptions-item>
+ <el-descriptions-item label="鏈�鏂拌瘎浼版椂闂�" :span="2">
+ <span class="highlight-text">{{ getLatestAssessmentTime(scope.row) || "-" }}</span>
+ </el-descriptions-item>
+ </el-descriptions>
- <!-- 璇勪及璇︽儏姹囨�� -->
- <el-card header="璇勪及璇︽儏" style="margin-top: 20px;">
- <el-descriptions :column="1" border>
- <el-descriptions-item label="鑾峰彇鍓嶆椿妫�">
- <el-tag
- :type="
- scope.row.isbiopsybefore === '1'
- ? 'success'
- : 'info'
- "
- >
- {{ scope.row.isbiopsybefore === "1" ? "鏄�" : "鍚�" }}
- </el-tag>
- </el-descriptions-item>
- <el-descriptions-item label="鑾峰彇鍚庢椿妫�">
- <el-tag
- :type="
- scope.row.isbiopsyafter === '1'
- ? 'success'
- : 'info'
- "
- >
- {{ scope.row.isbiopsyafter === "1" ? "鏄�" : "鍚�" }}
- </el-tag>
- </el-descriptions-item>
- <el-descriptions-item label="杈圭紭鍣ㄥ畼">
- <el-tag
- :type="
- scope.row.ismarginalorgan === '1'
- ? 'warning'
- : 'info'
- "
- >
- {{
- scope.row.ismarginalorgan === "1" ? "鏄�" : "鍚�"
- }}
- </el-tag>
- </el-descriptions-item>
- <el-descriptions-item label="鐥呭師鑿岄槼鎬�">
- <el-tag
- :type="
- scope.row.ispathogenpositive === '1'
- ? 'danger'
- : 'info'
- "
- >
- {{
- scope.row.ispathogenpositive === "1" ? "鏄�" : "鍚�"
- }}
- </el-tag>
- </el-descriptions-item>
- </el-descriptions>
- </el-card>
- </div>
- </el-tab-pane>
+ <!-- 璇勪及璇︽儏姹囨�� -->
+ <el-card header="璇勪及璇︽儏鍒楄〃" style="margin-top: 20px;" class="assessment-detail-card">
+ <div v-if="getOrganAssessments(scope.row).length === 0" class="no-assessment">
+ <el-empty description="鏆傛棤璇勪及璁板綍"></el-empty>
+ </div>
+
+ <div v-else>
+ <!-- 姣忔璇勪及璇︽儏 -->
+ <div v-for="(assessment, index) in getOrganAssessments(scope.row)"
+ :key="index"
+ class="assessment-item">
+ <el-card shadow="hover" class="assessment-card">
+ <div slot="header" class="clearfix">
+ <span class="assessment-title">绗瑊{ index + 1 }}娆¤瘎浼�</span>
+ <el-tag
+ :type="getAssessmentTagType(assessment.status)"
+ size="small"
+ class="status-tag"
+ >
+ {{ getAssessmentStatusText(assessment.status) }}
+ </el-tag>
+ </div>
+
+ <el-descriptions :column="2" border class="detail-descriptions">
+ <el-descriptions-item label="璇勪及鏃堕棿" :span="2">
+ <span class="time-text">{{ assessment.assessmentTime || "-" }}</span>
+ </el-descriptions-item>
+
+ <el-descriptions-item label="璇勪及浜�">
+ <el-tag type="info" size="small">
+ {{ assessment.assessor || "鏈~鍐�" }}
+ </el-tag>
+ </el-descriptions-item>
+
+ <el-descriptions-item label="鍔熻兘鐘舵��">
+ <el-tag
+ :type="getFunctionStatusTagType(assessment.functionStatus)"
+ size="small"
+ >
+ {{ getFunctionStatusText(assessment.functionStatus) }}
+ </el-tag>
+ </el-descriptions-item>
+
+ <el-descriptions-item label="璇勪及鎰忚" :span="2">
+ <div class="opinion-content">
+ {{ assessment.assessmentOpinion || "鏆傛棤璇勪及鎰忚" }}
+ </div>
+ </el-descriptions-item>
+
+ <el-descriptions-item label="闄勪欢鏁伴噺" :span="2" v-if="assessment.attachments && assessment.attachments.length > 0">
+ <el-tag type="success" size="small">
+ {{ assessment.attachments.length }}涓�
+ </el-tag>
+ <el-button
+ type="text"
+ size="mini"
+ @click="showAttachmentList(assessment.attachments, index + 1)"
+ style="margin-left: 10px;"
+ >
+ 鏌ョ湅闄勪欢鍒楄〃
+ </el-button>
+ </el-descriptions-item>
+ </el-descriptions>
+ </el-card>
+ </div>
+ </div>
+ </el-card>
+
+ <!-- 鍣ㄥ畼鍩烘湰淇℃伅鍗$墖 -->
+ <el-card header="鍣ㄥ畼淇℃伅" style="margin-top: 20px;" class="organ-info-card">
+ <el-descriptions :column="2" border>
+ <el-descriptions-item label="鑾峰彇鍓嶆椿妫�">
+ <el-tag
+ :type="
+ scope.row.isbiopsybefore === '1'
+ ? 'success'
+ : 'info'
+ "
+ size="small"
+ >
+ {{ scope.row.isbiopsybefore === "1" ? "鏄�" : "鍚�" }}
+ </el-tag>
+ </el-descriptions-item>
+ <el-descriptions-item label="鑾峰彇鍚庢椿妫�">
+ <el-tag
+ :type="
+ scope.row.isbiopsyafter === '1'
+ ? 'success'
+ : 'info'
+ "
+ size="small"
+ >
+ {{ scope.row.isbiopsyafter === "1" ? "鏄�" : "鍚�" }}
+ </el-tag>
+ </el-descriptions-item>
+ <el-descriptions-item label="杈圭紭鍣ㄥ畼">
+ <el-tag
+ :type="
+ scope.row.ismarginalorgan === '1'
+ ? 'warning'
+ : 'info'
+ "
+ size="small"
+ >
+ {{
+ scope.row.ismarginalorgan === "1" ? "鏄�" : "鍚�"
+ }}
+ </el-tag>
+ </el-descriptions-item>
+ <el-descriptions-item label="鐥呭師鑿岄槼鎬�">
+ <el-tag
+ :type="
+ scope.row.ispathogenpositive === '1'
+ ? 'danger'
+ : 'info'
+ "
+ size="small"
+ >
+ {{
+ scope.row.ispathogenpositive === "1" ? "鏄�" : "鍚�"
+ }}
+ </el-tag>
+ </el-descriptions-item>
+ </el-descriptions>
+ </el-card>
+ </div>
+</el-tab-pane>
</el-tabs>
</div>
</template>
</el-table-column>
- <el-table-column label="鍣ㄥ畼绫诲瀷" align="center" prop="organname" />
+ <el-table-column label="鍣ㄥ畼绫诲瀷" align="center" prop="organname">
+ <template slot-scope="scope">
+ {{ getOrganLabel(scope.row.organno) }}
+ </template>
+ </el-table-column>
<el-table-column label="鍣ㄥ畼缂栧彿" align="center" prop="organnumber" />
@@ -246,19 +326,27 @@
<!-- 鍔ㄦ�佹樉绀鸿瘎浼扮姸鎬佸垪 -->
<el-table-column
- v-for="(assessment, index) in getMaxAssessmentCount()"
+ v-for="index in getMaxAssessmentCount()"
:key="index"
- :label="`绗�${index + 1}娆¤瘎浼癭"
+ :label="`绗�${index}娆¤瘎浼癭"
align="center"
width="120"
>
<template slot-scope="scope">
<el-tag
- v-if="scope.row.assessments[index]"
- :type="getAssessmentTagType(scope.row.assessments[index].status)"
+ v-if="getOrganAssessments(scope.row)[index - 1]"
+ :type="
+ getAssessmentTagType(
+ getOrganAssessments(scope.row)[index - 1].status
+ )
+ "
size="small"
>
- {{ getAssessmentStatusText(scope.row.assessments[index].status) }}
+ {{
+ getAssessmentStatusText(
+ getOrganAssessments(scope.row)[index - 1].status
+ )
+ }}
</el-tag>
<el-tag v-else type="info" size="small">鏈瘎浼�</el-tag>
</template>
@@ -318,7 +406,9 @@
<!-- 鏁翠綋淇濆瓨鎸夐挳 -->
<div class="footer-actions" v-if="isEdit">
- <el-button type="primary" @click="handleSaveAll" :loading="saveLoading">淇濆瓨璇勪及琛�</el-button>
+ <el-button type="primary" @click="handleSaveAll" :loading="saveLoading"
+ >淇濆瓨璇勪及琛�</el-button
+ >
<el-button @click="handleCancel">鍙栨秷</el-button>
</div>
@@ -363,42 +453,44 @@
currentPreviewFile: null,
attachmentVisible: false,
// 鎹愮尞鍐冲畾鐩稿叧
- organdecision: [],
+ organdecisionValues: [], // 瀛樺偍瀛楀吀value
organdecisionOther: "",
- organselection: [
- "鑲濊剰",
- "鍙岃偩",
- "宸﹁偩",
- "鍙宠偩",
- "蹇冭剰",
- "鑲鸿剰",
- "鑳拌吅",
- "灏忚偁",
- "鍙岀溂缁勭粐",
- "閬椾綋",
- "鍏朵粬"
- ],
+ // 璁板綍鎹愮尞鍐冲畾鍙樺寲鍓嶇殑鍊�
+ prevOrgandecisionValues: [],
// 鍣ㄥ畼绫诲瀷鏄犲皠鍏崇郴
organDecisionMapping: {
- 鑲濊剰: ["鑲濊剰"],
- 鍙岃偩: ["宸﹁偩", "鍙宠偩"],
- 宸﹁偩: ["宸﹁偩"],
- 鍙宠偩: ["鍙宠偩"],
- 蹇冭剰: ["蹇冭剰"],
- 鑲鸿剰: ["鑲鸿剰"],
- 鑳拌吅: ["鑳拌吅"],
- 灏忚偁: ["灏忚偁"],
- 鍙岀溂缁勭粐: ["瑙掕啘"],
- 閬椾綋: ["鐨偆", "楠ㄩ", "鍏朵粬缁勭粐"],
- 鍏朵粬: [] // 鍏朵粬绫诲瀷涓嶆槧灏勫叿浣撳櫒瀹�
+ C38: ["C38"], // 蹇冭剰 -> 蹇冭剰
+ C22: ["C22"], // 鍏ㄨ倽 -> 鍏ㄨ倽
+ C22L: ["C22L"], // 宸﹀崐鑲� -> 宸﹀崐鑲�
+ C22L0: ["C22L0"], // 宸﹀鍙� -> 宸﹀鍙�
+ C22R: ["C22R"], // 鍙冲崐鑲� -> 鍙冲崐鑲�
+ C22R0: ["C22R0"], // 鍙充笁鍙� -> 鍙充笁鍙�
+ C64: ["C64L", "C64R"], // 鍙岃偩 -> 宸﹁偩, 鍙宠偩
+ C64L: ["C64L"], // 宸﹁偩 -> 宸﹁偩
+ C64R: ["C64R"], // 鍙宠偩 -> 鍙宠偩
+ C34: ["C34L", "C34R"], // 鍏ㄨ偤 -> 宸﹁偤, 鍙宠偤
+ C34L: ["C34L"], // 宸﹁偤 -> 宸﹁偤
+ C34R: ["C34R"], // 鍙宠偤 -> 鍙宠偤
+ C17: ["C17"], // 灏忚偁 -> 灏忚偁
+ C25: ["C25"], // 鑳拌吅 -> 鑳拌吅
+ C00: [], // 閬椾綋 -> 涓嶆槧灏勫叿浣撳櫒瀹橈紙閬椾綋鏄暣浣擄級
+ C69L: ["C69L"], // 宸︾溂瑙掕啘 -> 宸︾溂瑙掕啘
+ C69R: ["C69R"], // 鍙崇溂瑙掕啘 -> 鍙崇溂瑙掕啘
+ C01: [] // 鍏朵粬 -> 涓嶆槧灏勫叿浣撳櫒瀹�
},
// 鐢ㄦ埛淇℃伅
currentUser: {
id: "001",
name: "寮犲尰鐢�",
department: "蹇冭剰绉�",
- role: "doctor" // coordinator, doctor
- }
+ role: "coordinator"
+ },
+ // 璁板綍琚垹闄ょ殑鍣ㄥ畼璇勪及
+ deletedOrganAssessments: [],
+ // 鐢ㄤ簬杩借釜tab婵�娲荤姸鎬�
+ activeTabMap: new Map(),
+ // 鍒锋柊key
+ refreshKey: 0
};
},
computed: {
@@ -410,37 +502,46 @@
},
// 鏍规嵁鎹愮尞鍐冲畾杩囨护鍚庣殑鍣ㄥ畼鍒楄〃
filteredOrganAssessmentList() {
- if (!this.organdecision || this.organdecision.length === 0) {
+ if (!this.organdecisionValues || this.organdecisionValues.length === 0) {
return [];
}
- // 鑾峰彇鎵�鏈夐�変腑鐨勫櫒瀹樼被鍨�
const selectedOrgans = new Set();
- this.organdecision.forEach(decision => {
+ this.organdecisionValues.forEach(decision => {
const organs = this.organDecisionMapping[decision] || [];
organs.forEach(organ => selectedOrgans.add(organ));
});
- // 杩囨护鍣ㄥ畼璇勪及鍒楄〃
- return this.organAssessmentList.filter(organ =>
- selectedOrgans.has(organ.organname)
+ return this.organAssessmentList.filter(
+ organ =>
+ selectedOrgans.has(organ.organno) &&
+ organ.delFlag !== "1" &&
+ !this.deletedOrganAssessments.includes(organ.organno)
);
},
// 妫�鏌ユ墍鏈夎繃婊ゅ悗鐨勫櫒瀹樻槸鍚﹂兘宸茶瘎浼�
allOrgansAssessed() {
- return this.filteredOrganAssessmentList.every(
- organ =>
- organ.assessments &&
- organ.assessments.length > 0 &&
- organ.assessments.every(
- assessment => assessment.status === "assessed"
- )
- );
+ return this.filteredOrganAssessmentList.every(organ => {
+ const assessments = this.getOrganAssessments(organ);
+ return (
+ assessments &&
+ assessments.length > 0 &&
+ assessments.every(assessment => assessment.status === "assessed")
+ );
+ });
+ },
+ // 鑾峰彇鍣ㄥ畼瀛楀吀
+ organDict() {
+ return this.dict.type.sys_Organ || [];
+ },
+ // 鍒ゆ柇鏄惁闇�瑕佹樉绀哄叾浠栬緭鍏ユ
+ showOtherInput() {
+ return this.organdecisionValues.includes("C01");
}
},
watch: {
// 鐩戝惉鎹愮尞鍐冲畾鍙樺寲锛岀敤浜庡鏉傞�昏緫澶勭悊
- organdecision: {
+ organdecisionValues: {
handler(newVal, oldVal) {
this.handleComplexDecisionChange(newVal, oldVal);
},
@@ -454,13 +555,124 @@
this.getAssessmentDetail();
},
methods: {
+ // 鏍规嵁瀛楀吀value鑾峰彇label
+ getOrganLabel(organValue) {
+ const dictItem = this.organDict.find(item => item.value === organValue);
+ return dictItem ? dictItem.label : organValue;
+ },
+
+ // Tab鐐瑰嚮浜嬩欢
+ handleTabClick(organ, tab) {
+ if (tab.name !== "add") {
+ this.activeTabMap.set(organ.organno, tab.name);
+ }
+ },
+// 鑾峰彇鍔熻兘鐘舵�佹爣绛剧被鍨�
+ getFunctionStatusTagType(status) {
+ const typeMap = {
+ "1": "success", // 姝e父
+ "2": "warning", // 杞诲害寮傚父
+ "3": "danger", // 閲嶅害寮傚父
+ "4": "info" // 鏃犳硶璇勪及
+ };
+ return typeMap[status] || "info";
+ },
+
+ // 鑾峰彇鍔熻兘鐘舵�佹枃鏈�
+ getFunctionStatusText(status) {
+ const textMap = {
+ "1": "姝e父",
+ "2": "杞诲害寮傚父",
+ "3": "閲嶅害寮傚父",
+ "4": "鏃犳硶璇勪及"
+ };
+ return textMap[status] || "鏈瘎浼�";
+ },
+
+ // 鏄剧ず闄勪欢鍒楄〃
+ showAttachmentList(attachments, assessmentNumber) {
+ if (!attachments || attachments.length === 0) {
+ this.$message.info(`绗�${assessmentNumber}娆¤瘎浼版殏鏃犻檮浠禶);
+ return;
+ }
+
+ this.$alert(
+ `<div>
+ <h4>绗�${assessmentNumber}娆¤瘎浼伴檮浠跺垪琛�</h4>
+ <ul style="list-style: none; padding-left: 0;">
+ ${attachments.map((item, index) => `
+ <li style="margin: 5px 0; padding: 5px; background: #f5f7fa; border-radius: 4px;">
+ <i class="el-icon-document"></i>
+ <span style="margin-left: 8px;">${item.fileName}</span>
+ <el-button
+ type="text"
+ size="mini"
+ onclick="window.open('${item.path || item.fileUrl}')"
+ style="margin-left: 10px;"
+ >
+ 涓嬭浇
+ </el-button>
+ </li>
+ `).join('')}
+ </ul>
+ </div>`,
+ '闄勪欢鍒楄〃',
+ {
+ dangerouslyUseHTMLString: true,
+ showConfirmButton: false,
+ showCancelButton: true,
+ cancelButtonText: '鍏抽棴'
+ }
+ );
+ },
+ // 鑾峰彇鍣ㄥ畼鐨勮瘎浼板垪琛�
+ getOrganAssessments(organ) {
+ if (!organ.assesscontent) return [];
+ try {
+ const assessData =
+ typeof organ.assesscontent === "string"
+ ? JSON.parse(organ.assesscontent)
+ : organ.assesscontent;
+
+ if (Array.isArray(assessData)) {
+ return assessData.filter(item => item.delFlag !== "1");
+ }
+ return [];
+ } catch (error) {
+ console.warn("瑙f瀽璇勪及鍐呭澶辫触:", error);
+ return [];
+ }
+ },
+
+ // 鑾峰彇璇勪及鏁伴噺
+ getAssessmentCount(organ) {
+ return this.getOrganAssessments(organ).length;
+ },
+
+ // 澶勭悊璇勪及鏇存柊
+ handleUpdateAssessment(data) {
+ const { organData, assessmentData, assessmentIndex } = data;
+ const assessments = this.getOrganAssessments(organData);
+
+ if (assessments[assessmentIndex]) {
+ // 鍒涘缓鏂扮殑璇勪及鏁扮粍
+ const newAssessments = [...assessments];
+ newAssessments[assessmentIndex] = {
+ ...assessments[assessmentIndex],
+ ...assessmentData
+ };
+
+ // 鏇存柊 assesscontent
+ this.$set(organData, "assesscontent", JSON.stringify(newAssessments));
+ this.$forceUpdate();
+ }
+ },
+
// 鏁翠綋淇濆瓨鏂规硶
async handleSaveAll() {
this.saveLoading = true;
try {
- // 1. 鍑嗗涓昏瘎浼拌〃鏁版嵁
const saveData = {
- // 鏍规嵁 id 鏄惁瀛樺湪鍐冲畾鏄洿鏂拌繕鏄柊澧�
id: this.assessmentData.id || undefined,
infoid: this.infoid,
caseNo: this.assessmentData.caseNo,
@@ -473,49 +685,49 @@
idcardno: this.assessmentData.idcardno,
diagnosisname: this.assessmentData.diagnosisname,
coordinatorName: this.assessmentData.coordinatorName,
- assessTime: this.assessmentData.assessTime || new Date().toISOString(),
+ assessTime:
+ this.assessmentData.assessTime || new Date().toISOString(),
assessState: this.assessmentData.assessState,
assessannex: this.assessmentData.assessannex,
- // 鎹愮尞鍐冲畾淇℃伅
- organdecision: this.organdecision.join(','),
+ organdecision: this.organdecisionValues.join(","),
organdecisionOther: this.organdecisionOther,
- // 鍣ㄥ畼璇勪及鍒楄〃
- serviceMedicalevaluationorgans: this.organAssessmentList.map(organ => ({
- id: organ.id,
- infoid: organ.infoid,
- donorno: organ.donorno,
- organno: organ.organno,
- organname: organ.organname,
- organnumber: organ.organnumber,
- gainhospitalno: organ.gainhospitalno,
- gainhospitalname: organ.gainhospitalname,
- isbiopsybefore: organ.isbiopsybefore,
- isbiopsyafter: organ.isbiopsyafter,
- ismarginalorgan: organ.ismarginalorgan,
- ispathogenpositive: organ.ispathogenpositive,
- ispnf: organ.ispnf,
- isdgf: organ.isdgf,
- // 灏� assessments 鏁扮粍搴忓垪鍖栧埌 assesscontent 瀛楁
- assesscontent: JSON.stringify(organ.assessments)
- }))
+ serviceMedicalevaluationorganList: this.organAssessmentList.map(
+ organ => ({
+ id: organ.id,
+ infoid: organ.infoid,
+ donorno: organ.donorno,
+ organno: organ.organno,
+ organname: this.getOrganLabel(organ.organno),
+ organnumber: organ.organnumber,
+ gainhospitalno: organ.gainhospitalno,
+ gainhospitalname: organ.gainhospitalname,
+ isbiopsybefore: organ.isbiopsybefore,
+ isbiopsyafter: organ.isbiopsyafter,
+ ismarginalorgan: organ.ismarginalorgan,
+ ispathogenpositive: organ.ispathogenpositive,
+ ispnf: organ.ispnf,
+ isdgf: organ.isdgf,
+ delFlag: organ.delFlag || "0",
+ assesscontent: organ.assesscontent || "[]"
+ })
+ )
};
- // 2. 鏍规嵁 id 鍒ゆ柇璋冪敤鍝釜 API
const saveMethod = this.assessmentData.id ? assessedit : assessAdd;
const response = await saveMethod(saveData);
if (response.code === 200) {
- this.$message.success('璇勪及琛ㄤ繚瀛樻垚鍔燂紒');
- // 淇濆瓨鎴愬姛鍚庯紝鏇存柊鏈湴鐨� assessmentData.id锛堝浜庢柊澧炴儏鍐碉級
+ this.$message.success("璇勪及琛ㄤ繚瀛樻垚鍔燂紒");
if (!this.assessmentData.id && response.data && response.data.id) {
this.assessmentData.id = response.data.id;
}
+ this.refreshKey += 1; // 瑙﹀彂閲嶆柊娓叉煋
} else {
- this.$message.error('淇濆瓨澶辫触锛�' + (response.msg || '鏈煡閿欒'));
+ this.$message.error("淇濆瓨澶辫触锛�" + (response.msg || "鏈煡閿欒"));
}
} catch (error) {
- console.error('淇濆瓨璇勪及琛ㄥけ璐�:', error);
- this.$message.error('淇濆瓨澶辫触锛岃閲嶈瘯');
+ console.error("淇濆瓨璇勪及琛ㄥけ璐�:", error);
+ this.$message.error("淇濆瓨澶辫触锛岃閲嶈瘯");
} finally {
this.saveLoading = false;
}
@@ -527,12 +739,21 @@
},
// 鎹愮尞鍐冲畾鍙樻洿澶勭悊
- handleOrganDecisionChange(newDecision) {
- // 鑷姩澶勭悊鐩稿叧閫昏緫
+ async handleOrganDecisionChange(newDecision) {
+ const oldDecision = [...this.prevOrgandecisionValues];
this.autoHandleDecisionChange(newDecision);
- // 寮哄埗閲嶆柊娓叉煋
+
+ const removedDecisions = oldDecision.filter(
+ item => !newDecision.includes(item)
+ );
+
+ for (const decision of removedDecisions) {
+ await this.handleRemovedDecision(decision);
+ }
+
+ this.prevOrgandecisionValues = [...newDecision];
this.$forceUpdate();
- // 濡傛灉浠庢湁閫夋嫨鍙樹负鏃犻�夋嫨锛屾竻绌哄睍寮�鐘舵��
+
if (newDecision.length === 0) {
this.expandedRowKeys = [];
}
@@ -545,25 +766,36 @@
// 鑷姩澶勭悊鍐冲畾鍙樻洿閫昏緫
autoHandleDecisionChange(newDecision) {
- // 濡傛灉閫夋嫨浜�"鍙岃偩"锛岃嚜鍔ㄥ彇娑堝崟鐙殑"宸﹁偩"鍜�"鍙宠偩"閫夋嫨
- if (newDecision.includes("鍙岃偩")) {
- this.organdecision = newDecision.filter(
- item => item !== "宸﹁偩" && item !== "鍙宠偩"
+ // 濡傛灉閫夋嫨浜�"鍙岃偩"(value: C64)锛岃嚜鍔ㄥ彇娑堝崟鐙殑"宸﹁偩"(value: C64L)鍜�"鍙宠偩"(value: C64R)閫夋嫨
+ if (newDecision.includes("C64")) {
+ this.organdecisionValues = newDecision.filter(
+ item => item !== "C64L" && item !== "C64R"
);
}
// 濡傛灉閫夋嫨浜�"宸﹁偩"鎴�"鍙宠偩"锛屽彇娑�"鍙岃偩"閫夋嫨
- else if (newDecision.includes("宸﹁偩") || newDecision.includes("鍙宠偩")) {
- this.organdecision = newDecision.filter(item => item !== "鍙岃偩");
+ else if (newDecision.includes("C64L") || newDecision.includes("C64R")) {
+ this.organdecisionValues = newDecision.filter(item => item !== "C64");
}
- // 澶勭悊浜掓枼閫昏緫
+ // 濡傛灉閫夋嫨浜�"鍏ㄨ偤"(value: C34)锛岃嚜鍔ㄥ彇娑堝崟鐙殑"宸﹁偤"(value: C34L)鍜�"鍙宠偤"(value: C34R)閫夋嫨
+ if (newDecision.includes("C34")) {
+ this.organdecisionValues = newDecision.filter(
+ item => item !== "C34L" && item !== "C34R"
+ );
+ }
+ // 濡傛灉閫夋嫨浜�"宸﹁偤"鎴�"鍙宠偤"锛屽彇娑�"鍏ㄨ偤"閫夋嫨
+ else if (newDecision.includes("C34L") || newDecision.includes("C34R")) {
+ this.organdecisionValues = newDecision.filter(item => item !== "C34");
+ }
+
+ // 澶勭悊鍏朵粬浜掓枼閫昏緫
this.handleExclusiveDecisions();
},
// 澶勭悊浜掓枼鐨勬崘鐚喅瀹�
handleExclusiveDecisions() {
- // 閬椾綋鎹愮尞涓庡叾浠栧櫒瀹樻崘鐚簰鏂ワ紙鏍规嵁涓氬姟闇�姹傝皟鏁达級
- if (this.organdecision.includes("閬椾綋")) {
+ // 閬椾綋鎹愮尞(value: 10)涓庡叾浠栧櫒瀹樻崘鐚簰鏂ワ紙鏍规嵁涓氬姟闇�姹傝皟鏁达級
+ if (this.organdecisionValues.includes("10")) {
// 鍙互璁剧疆鍙繚鐣欓仐浣撴崘鐚紝鎴栬�呮牴鎹笟鍔¢渶姹傚鐞�
}
},
@@ -596,52 +828,91 @@
const organsToCreate = this.organDecisionMapping[decision];
if (organsToCreate && organsToCreate.length > 0) {
- organsToCreate.forEach(organName => {
- this.ensureOrganExists(organName);
+ organsToCreate.forEach(organValue => {
+ this.ensureOrganExists(organValue);
});
// 鏄剧ず鍒涘缓鎻愮ず
if (organsToCreate.length > 0) {
this.$message.success(
- `宸蹭负銆�${decision}銆戝垱寤�${organsToCreate.length}涓瘎浼伴」`
+ `宸蹭负銆�${this.getOrganLabel(decision)}銆戝垱寤�${
+ organsToCreate.length
+ }涓瘎浼伴」`
);
}
} else {
- console.warn(`鎹愮尞鍐冲畾銆�${decision}銆戞病鏈夐厤缃櫒瀹樻槧灏勫叧绯籤);
+ console.warn(
+ `鎹愮尞鍐冲畾銆�${this.getOrganLabel(decision)}銆戞病鏈夐厤缃櫒瀹樻槧灏勫叧绯籤
+ );
}
},
// 澶勭悊绉婚櫎鐨勬崘鐚喅瀹�
- handleRemovedDecision(decision) {
- // 鏍规嵁涓氬姟闇�姹傛坊鍔犳竻鐞嗛�昏緫
+ async handleRemovedDecision(decision) {
const relatedOrgans = this.organDecisionMapping[decision] || [];
- relatedOrgans.forEach(organ => {
- // 鍙互鍦ㄨ繖閲屾坊鍔犳竻鐞嗙浉鍏冲櫒瀹樿瘎浼扮殑閫昏緫
- });
+
+ for (const organValue of relatedOrgans) {
+ const organIndex = this.organAssessmentList.findIndex(
+ organ => organ.organno === organValue && organ.delFlag !== "1"
+ );
+
+ if (organIndex !== -1) {
+ const organ = this.organAssessmentList[organIndex];
+ const organLabel = this.getOrganLabel(organValue);
+
+ try {
+ await this.$confirm(
+ `鎹愮尞鍐冲畾"${this.getOrganLabel(
+ decision
+ )}"宸插彇娑堬紝鏄惁鍒犻櫎瀵瑰簲鐨�${organLabel}璇勪及璁板綍锛焋,
+ "纭鍒犻櫎",
+ {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ }
+ );
+
+ this.$set(this.organAssessmentList[organIndex], "delFlag", "1");
+ this.deletedOrganAssessments.push(organValue);
+
+ const keyIndex = this.expandedRowKeys.indexOf(organValue);
+ if (keyIndex > -1) {
+ this.expandedRowKeys.splice(keyIndex, 1);
+ }
+
+ this.$message.success(`${organLabel}璇勪及璁板綍宸叉爣璁板垹闄);
+ } catch (cancelError) {
+ if (!this.organdecisionValues.includes(decision)) {
+ this.organdecisionValues.push(decision);
+ }
+ this.$message.info(`宸插彇娑堝垹闄�${organLabel}璇勪及璁板綍`);
+ }
+ }
+ }
},
- // 纭繚鍣ㄥ畼瀛樺湪锛堝甫閲嶅妫�鏌ワ級
- ensureOrganExists(organName) {
- // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍚屽悕鍣ㄥ畼璇勪及椤�
+ // 纭繚鍣ㄥ畼瀛樺湪
+ ensureOrganExists(organValue) {
const exists = this.organAssessmentList.some(
- organ => organ.organname === organName
+ organ => organ.organno === organValue && organ.delFlag !== "1"
);
if (!exists) {
- // 鍒涘缓鏂扮殑鍣ㄥ畼璇勪及椤�
const newOrgan = {
- id: `organ_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
- organno: `ORG${Date.now()}`,
- organname: organName,
+ id: null,
+ organno: organValue,
+ organname: this.getOrganLabel(organValue),
gainhospitalname: "寰呭垎閰嶆満鏋�",
isbiopsybefore: "0",
isbiopsyafter: "0",
ismarginalorgan: "0",
ispathogenpositive: "0",
- assessments: [this.getDefaultAssessment(0)],
- activeAssessmentTab: "assessment_0",
+ assesscontent: JSON.stringify([this.getDefaultAssessment(0)]),
+ activeTab: 0,
expanded: false,
- createTime: new Date().toISOString()
+ createTime: new Date().toISOString(),
+ delFlag: "0"
};
this.organAssessmentList = [...this.organAssessmentList, newOrgan];
@@ -673,7 +944,6 @@
handleResponseData(response) {
let detailData = null;
- // 鏍规嵁鎺ュ彛瀹為檯杩斿洖鐨勬暟鎹粨鏋勮繘琛岃皟鏁�
if (response.data) {
if (Array.isArray(response.data)) {
detailData = response.data[0] || {};
@@ -688,7 +958,6 @@
detailData = response;
}
- // 鏄犲皠瀛楁鍒拌瘎浼版暟鎹�
this.assessmentData = {
id: detailData.id || this.assessmentId,
infoid: detailData.infoid || this.infoid,
@@ -706,15 +975,16 @@
assessannex: detailData.assessannex || ""
};
- // 澶勭悊鎹愮尞鍐冲畾鏁版嵁
if (detailData.organdecision) {
- this.organdecision = Array.isArray(detailData.organdecision)
+ const decisionArray = Array.isArray(detailData.organdecision)
? detailData.organdecision
- : (detailData.organdecision || "").split(",");
+ : (detailData.organdecision || "").split(",").filter(item => item);
+
+ this.organdecisionValues = decisionArray;
+ this.prevOrgandecisionValues = [...decisionArray];
this.organdecisionOther = detailData.organdecisionOther || "";
}
- // 澶勭悊鍣ㄥ畼璇勪及鏁版嵁
this.processOrganAssessmentData(detailData);
},
@@ -722,46 +992,43 @@
processOrganAssessmentData(detailData) {
let organList = [];
- // 浠庢帴鍙f暟鎹腑鑾峰彇鍣ㄥ畼璇勪及鍒楄〃
- if (detailData.serviceMedicalevaluationorgans) {
- if (Array.isArray(detailData.serviceMedicalevaluationorgans)) {
- organList = detailData.serviceMedicalevaluationorgans;
+ if (detailData.serviceMedicalevaluationorganList) {
+ if (Array.isArray(detailData.serviceMedicalevaluationorganList)) {
+ organList = detailData.serviceMedicalevaluationorganList;
}
}
- // 杞崲鍣ㄥ畼鏁版嵁鏍煎紡锛屾敮鎸佸娆¤瘎浼�
this.organAssessmentList = organList.map(organ => {
- const assessments = [];
+ const organno = organ.organno;
- // 瑙f瀽assesscontent瀛楁涓殑澶氭璇勪及鏁版嵁
- if (organ.assesscontent) {
+ // 濡傛灉 assesscontent 鏄瓧绗︿覆锛岀‘淇濆畠鏄湁鏁堢殑 JSON
+ if (organ.assesscontent && typeof organ.assesscontent === "string") {
try {
- const assessData = typeof organ.assesscontent === "string"
- ? JSON.parse(organ.assesscontent)
- : organ.assesscontent;
-
- if (Array.isArray(assessData)) {
- assessments.push(
- ...assessData.map((item, index) => ({
- ...item,
- index: index,
- status: item.status || "assessed"
- }))
- );
- }
+ JSON.parse(organ.assesscontent);
} catch (error) {
- console.warn("瑙f瀽璇勪及鍐呭澶辫触:", error);
- assessments.push(this.getDefaultAssessment(0));
+ console.warn(
+ "鏃犳晥鐨� assesscontent锛岄噸缃负绌烘暟缁�:",
+ organ.assesscontent
+ );
+ organ.assesscontent = "[]";
}
- } else {
- assessments.push(this.getDefaultAssessment(0));
+ } else if (!organ.assesscontent) {
+ organ.assesscontent = "[]";
}
+
+ const assessments = this.getOrganAssessments(organ);
+ const activeTab = this.activeTabMap.has(organno)
+ ? this.activeTabMap.get(organno)
+ : assessments.length > 0
+ ? 0
+ : "summary";
return {
...organ,
- assessments: assessments,
- activeAssessmentTab: assessments.length > 0 ? "assessment_0" : "summary",
- expanded: false
+ organname: this.getOrganLabel(organ.organno) || organ.organname,
+ activeTab: activeTab,
+ expanded: false,
+ delFlag: organ.delFlag || "0"
};
});
},
@@ -777,30 +1044,37 @@
assessmentOpinion: "",
clinicalData: {},
labResults: {},
- createTime: new Date().toISOString()
+ createTime: new Date().toISOString(),
+ delFlag: "0"
};
},
// 璁$畻鏈�澶ц瘎浼版鏁�
getMaxAssessmentCount() {
const maxCount = Math.max(
- ...this.organAssessmentList.map(organ =>
- organ.assessments ? organ.assessments.length : 0
- )
+ ...this.organAssessmentList
+ .filter(organ => organ.delFlag !== "1")
+ .map(organ => this.getAssessmentCount(organ))
);
return Math.max(maxCount, 1);
},
// 鑾峰彇鍣ㄥ畼鏁翠綋鐘舵��
getOrganOverallStatus(organ) {
- if (!organ.assessments || organ.assessments.length === 0) {
+ const assessments = this.getOrganAssessments(organ);
+ if (assessments.length === 0) {
return "pending";
}
- const allAssessed = organ.assessments.every(
+ const validAssessments = assessments.filter(a => a.delFlag !== "1");
+ if (validAssessments.length === 0) {
+ return "pending";
+ }
+
+ const allAssessed = validAssessments.every(
assessment => assessment.status === "assessed"
);
- const someAssessed = organ.assessments.some(
+ const someAssessed = validAssessments.some(
assessment => assessment.status === "assessed"
);
@@ -845,28 +1119,130 @@
// 娣诲姞鏂拌瘎浼�
handleAddNewAssessment(organ) {
+ const assessments = this.getOrganAssessments(organ);
const newAssessment = {
- ...this.getDefaultAssessment(organ.assessments.length),
+ ...this.getDefaultAssessment(assessments.length),
assessor: this.currentUser.name
};
- organ.assessments.push(newAssessment);
- organ.activeAssessmentTab = `assessment_${organ.assessments.length - 1}`;
+ const newAssessments = [...assessments, newAssessment];
+ this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
+
+ organ.activeTab = assessments.length;
+ this.activeTabMap.set(organ.organno, assessments.length);
this.$message.success("宸叉坊鍔犳柊鐨勮瘎浼�");
},
- // 澶勭悊娣诲姞璇勪及浜嬩欢
- handleAddAssessment(data) {
- const { organData } = data;
- this.handleAddNewAssessment(organData);
+ // 澶勭悊鍒犻櫎璇勪及浜嬩欢
+ handleDeleteAssessment(data) {
+ const { organData, assessmentIndex } = data;
+ this.deleteOrganAssessment(organData, assessmentIndex);
+ },
+ // 澶勭悊璇勪及淇濆瓨
+ handleSaveAssessment(data) {
+ const { organData, assessmentData, assessmentIndex } = data;
+ const assessments = this.getOrganAssessments(organData);
+
+ console.log("淇濆瓨璇勪及鏁版嵁:", data);
+
+ if (assessments[assessmentIndex]) {
+ // 鍒涘缓鏂扮殑璇勪及鏁扮粍
+ const newAssessments = [...assessments];
+ newAssessments[assessmentIndex] = {
+ ...assessments[assessmentIndex],
+ ...assessmentData,
+ status: "assessed", // 鏍囪涓哄凡璇勪及
+ assessmentTime: new Date().toISOString(), // 璁剧疆璇勪及鏃堕棿
+ delFlag: "0" // 纭繚鍒犻櫎鏍囧織
+ };
+
+ // 鏇存柊 assesscontent
+ this.$set(organData, "assesscontent", JSON.stringify(newAssessments));
+
+ // 寮哄埗閲嶆柊娓叉煋
+ this.$forceUpdate();
+
+ this.$message.success("璇勪及淇濆瓨鎴愬姛");
+
+ // 妫�鏌ユ槸鍚﹂渶瑕佽嚜鍔ㄥ垏鎹㈠埌涓嬩竴涓瘎浼�
+ this.checkAndSwitchTab(organData, assessmentIndex);
+ }
+ },
+
+ // 妫�鏌ュ苟鑷姩鍒囨崲tab
+ checkAndSwitchTab(organData, currentIndex) {
+ const assessments = this.getOrganAssessments(organData);
+ if (currentIndex < assessments.length - 1) {
+ // 濡傛灉杩樻湁涓嬩竴涓瘎浼帮紝鑷姩鍒囨崲鍒颁笅涓�涓�
+ organData.activeTab = currentIndex + 1;
+ this.activeTabMap.set(organData.organno, currentIndex + 1);
+ } else {
+ // 濡傛灉娌℃湁涓嬩竴涓瘎浼帮紝鍒囨崲鍒版眹鎬婚〉
+ organData.activeTab = "summary";
+ this.activeTabMap.set(organData.organno, "summary");
+ }
+ },
+
+ // 鍒犻櫎鍣ㄥ畼璇勪及
+ async deleteOrganAssessment(organ, assessmentIndex) {
+ try {
+ await this.$confirm(
+ `纭鍒犻櫎绗�${assessmentIndex + 1}娆¤瘎浼拌褰曞悧锛焋,
+ "纭鍒犻櫎",
+ {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ }
+ );
+
+ const assessments = this.getOrganAssessments(organ);
+ if (assessments[assessmentIndex]) {
+ // 鏍囪涓哄垹闄�
+ assessments[assessmentIndex].delFlag = "1";
+
+ // 杩囨护鎺夊凡鍒犻櫎鐨勮瘎浼�
+ const newAssessments = assessments.filter(
+ item => item.delFlag !== "1"
+ );
+
+ // 閲嶆柊璁$畻璇勪及绱㈠紩
+ newAssessments.forEach((assessment, index) => {
+ assessment.index = index;
+ });
+
+ // 鏇存柊 assesscontent
+ this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
+
+ // 澶勭悊tab鍒囨崲
+ if (newAssessments.length === 0) {
+ organ.activeTab = "summary";
+ this.activeTabMap.set(organ.organno, "summary");
+ } else if (organ.activeTab === assessmentIndex) {
+ const newIndex = Math.max(0, assessmentIndex - 1);
+ organ.activeTab = newIndex;
+ this.activeTabMap.set(organ.organno, newIndex);
+ } else if (organ.activeTab === "summary") {
+ this.activeTabMap.set(organ.organno, "summary");
+ }
+
+ this.$message.success("璇勪及璁板綍宸插垹闄�");
+ this.$forceUpdate();
+ }
+ } catch (cancelError) {
+ this.$message.info("宸插彇娑堝垹闄�");
+ }
},
// 鑾峰彇鏈�鏂拌瘎浼版椂闂�
getLatestAssessmentTime(organ) {
- if (!organ.assessments || organ.assessments.length === 0) return null;
+ const assessments = this.getOrganAssessments(organ);
+ if (assessments.length === 0) return null;
- const assessed = organ.assessments.filter(a => a.assessmentTime);
+ const assessed = assessments.filter(
+ a => a.assessmentTime && a.delFlag !== "1"
+ );
if (assessed.length === 0) return null;
return assessed.sort(
@@ -896,8 +1272,6 @@
// 妫�鏌ヨ瘎浼版潈闄�
canAssessOrgan(organ) {
- console.log(organ,'organ');
-
if (this.isCoordinator) return true;
if (!this.isEdit) return false;
return (
@@ -934,9 +1308,10 @@
handleAttachmentPreview() {
if (this.assessmentData.assessannex) {
try {
- const annexData = typeof this.assessmentData.assessannex === "string"
- ? JSON.parse(this.assessmentData.assessannex)
- : this.assessmentData.assessannex;
+ const annexData =
+ typeof this.assessmentData.assessannex === "string"
+ ? JSON.parse(this.assessmentData.assessannex)
+ : this.assessmentData.assessannex;
if (Array.isArray(annexData) && annexData.length > 0) {
this.currentPreviewFile = annexData[0];
@@ -965,7 +1340,6 @@
}
);
- // 鏇存柊璇勪及鐘舵�佷负宸插畬鎴�
const updateData = {
...this.assessmentData,
assessState: "3",
@@ -1082,17 +1456,210 @@
.fixed-width .el-button {
margin: 0 2px;
}
-
-/* 鎹愮尞鍐冲畾鏍峰紡浼樺寲 */
-.organ-decision-info {
- margin: 10px 0;
+/* 姹囨�婚〉闈㈡牱寮� */
+.assessment-summary {
padding: 10px;
- background-color: #f8f9fa;
- border-radius: 4px;
- border-left: 4px solid #409eff;
}
-.decision-tag {
- margin: 2px 5px;
+.summary-item {
+ font-weight: 500;
+ color: #303133;
+}
+
+.highlight-text {
+ color: #409EFF;
+ font-weight: 500;
+}
+
+.assessment-detail-card {
+ border: 1px solid #e6ebf5;
+}
+
+.organ-info-card {
+ border: 1px solid #e6ebf5;
+ background-color: #fafafa;
+}
+
+.no-assessment {
+ text-align: center;
+ padding: 40px 0;
+ color: #909399;
+}
+
+.assessment-item {
+ margin-bottom: 20px;
+}
+
+.assessment-item:last-child {
+ margin-bottom: 0;
+}
+
+.assessment-card {
+ border: 1px solid #dcdfe6;
+ border-radius: 8px;
+ transition: all 0.3s;
+}
+
+.assessment-card:hover {
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ border-color: #409EFF;
+}
+
+.assessment-title {
+ font-size: 16px;
+ font-weight: 600;
+ color: #303133;
+}
+
+.status-tag {
+ float: right;
+ margin-right: 0;
+}
+
+.time-text {
+ color: #67C23A;
+ font-weight: 500;
+}
+
+.opinion-content {
+ padding: 8px 12px;
+ background: #f5f7fa;
+ border-radius: 4px;
+ line-height: 1.5;
+ color: #606266;
+ white-space: pre-wrap;
+ word-break: break-word;
+}
+
+.detail-descriptions {
+ background: #fff;
+}
+
+/* 浼樺寲琛ㄦ牸鏍峰紡 */
+::v-deep .el-table {
+ color: #303133;
+ font-size: 14px;
+}
+
+::v-deep .el-table th {
+ background-color: #f5f7fa;
+ color: #303133;
+ font-weight: 600;
+ padding: 12px 0;
+}
+
+::v-deep .el-table tr {
+ background-color: #fff;
+}
+
+::v-deep .el-table tr:hover {
+ background-color: #f5f7fa;
+}
+
+::v-deep .el-table .cell {
+ padding: 12px 10px;
+ line-height: 1.5;
+}
+
+::v-deep .el-table--striped .el-table__body tr.el-table__row--striped td {
+ background-color: #fafafa;
+}
+
+::v-deep .el-table--enable-row-hover .el-table__body tr:hover>td {
+ background-color: #ecf5ff;
+}
+
+/* 鍙瘎浼拌鏍峰紡 */
+::v-deep .assessable-row {
+ background-color: #f0f9ff !important;
+}
+
+::v-deep .assessable-row:hover {
+ background-color: #d9ecff !important;
+}
+
+::v-deep .non-assessable-row {
+ background-color: #fafafa !important;
+}
+
+/* 鎻忚堪鍒楄〃鏍峰紡浼樺寲 */
+::v-deep .el-descriptions__label {
+ width: 120px;
+ background-color: #f5f7fa;
+ font-weight: 600;
+ color: #303133;
+}
+
+::v-deep .el-descriptions__content {
+ background-color: #fff;
+ color: #606266;
+}
+
+::v-deep .el-descriptions__body {
+ background-color: #fff;
+}
+
+/* 鍗$墖鏍峰紡浼樺寲 */
+::v-deep .el-card__header {
+ background-color: #f5f7fa;
+ border-bottom: 1px solid #e6ebf5;
+ padding: 12px 20px;
+ font-weight: 600;
+ color: #303133;
+}
+
+::v-deep .el-card__body {
+ padding: 20px;
+}
+
+/* 鏍囩鏍峰紡浼樺寲 */
+::v-deep .el-tag {
+ font-weight: 500;
+ border-radius: 12px;
+ padding: 0 10px;
+ height: 24px;
+ line-height: 22px;
+}
+
+/* 鎸夐挳鏍峰紡浼樺寲 */
+::v-deep .el-button--mini {
+ padding: 7px 12px;
+ font-size: 12px;
+ border-radius: 4px;
+}
+
+/* Tab鏍峰紡浼樺寲 */
+::v-deep .el-tabs__item {
+ font-weight: 500;
+ color: #606266;
+}
+
+::v-deep .el-tabs__item.is-active {
+ color: #409EFF;
+ font-weight: 600;
+}
+
+::v-deep .el-tabs__nav-wrap::after {
+ background-color: #e4e7ed;
+}
+
+::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
+ background-color: #fff;
+ border-bottom-color: #fff;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+ .assessment-summary {
+ padding: 5px;
+ }
+
+ ::v-deep .el-table .cell {
+ padding: 8px 5px;
+ }
+
+ .assessment-card {
+ margin-bottom: 10px;
+ }
}
</style>
--
Gitblit v1.9.3