From bcb9976e7680ce67fadb6fec7ab5fca36552cdbc Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 28 一月 2026 17:10:49 +0800
Subject: [PATCH] 青岛维护
---
src/views/business/assess/assessInfo.vue | 682 +++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 494 insertions(+), 188 deletions(-)
diff --git a/src/views/business/assess/assessInfo.vue b/src/views/business/assess/assessInfo.vue
index e36ab2d..330cff8 100644
--- a/src/views/business/assess/assessInfo.vue
+++ b/src/views/business/assess/assessInfo.vue
@@ -13,7 +13,7 @@
</div>
<el-descriptions :column="2" border>
- <el-descriptions-item label="妗堜緥缂栧彿">{{
+ <el-descriptions-item label="浣忛櫌鍙�">{{
assessmentData.caseNo
}}</el-descriptions-item>
<el-descriptions-item label="娼滃湪鎹愮尞鑰呭鍚�">{{
@@ -76,13 +76,131 @@
褰撳墠瑙掕壊锛歿{ currentDepartment }}璇勪及浜哄憳
</span>
</div>
-
+ <el-row>
+ <el-form-item label-width="100px" label="璇勪及鍣ㄥ畼">
+ <el-checkbox-group v-model="organdecision">
+ <el-checkbox
+ v-for="item in organselection"
+ :key="item"
+ :label="item"
+ >{{ item }}
+ </el-checkbox>
+ </el-checkbox-group>
+ <el-input
+ v-if="organdecision.includes('鍏朵粬')"
+ v-model="assessmentData.organdecisionOther"
+ placeholder="璇疯緭鍏ュ叾浠栨崘鐚喅瀹氱殑鍏蜂綋鍐呭"
+ style="margin-top: 10px; width: 300px;"
+ ></el-input>
+ </el-form-item>
+ </el-row>
<el-table
:data="organAssessmentList"
v-loading="assessmentLoading"
style="width: 100%"
:row-class-name="getRowClassName"
+ :expand-row-keys="expandedRowKeys"
+ @expand-change="handleExpandChange"
+ row-key="organType"
>
+ <el-table-column type="expand" width="60">
+ <template slot-scope="scope">
+ <div class="organ-expand-content" v-if="scope.row.expanded">
+ <el-tabs
+ v-model="scope.row.activeAssessmentTab"
+ type="card"
+ class="organ-detail-tabs"
+ >
+ <!-- 鍔ㄦ�佺敓鎴愯瘎浼癟ab -->
+ <el-tab-pane
+ v-for="(assessment, index) in scope.row.assessments"
+ :key="index"
+ :label="`绗�${index + 1}娆¤瘎浼癭"
+ :name="`assessment_${index}`"
+ >
+ <organ-assessment-form
+ :organ-data="scope.row"
+ :assessment-data="assessment"
+ :assessment-index="index"
+ :readonly="!canAssessOrgan(scope.row)"
+ @save="handleSaveOrganAssessment"
+ @add-assessment="handleAddAssessment"
+ />
+ </el-tab-pane>
+
+ <!-- 娣诲姞璇勪及鎸夐挳 -->
+ <el-tab-pane name="add" v-if="canAssessOrgan(scope.row)">
+ <template slot="label">
+ <el-button
+ type="text"
+ icon="el-icon-plus"
+ @click.stop="handleAddNewAssessment(scope.row)"
+ size="mini"
+ >
+ 鏂板璇勪及
+ </el-button>
+ </template>
+ <div class="add-assessment-prompt">
+ <el-empty description="鐐瑰嚮涓婃柟鎸夐挳娣诲姞鏂扮殑璇勪及"></el-empty>
+ </div>
+ </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.department
+ }}</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-card header="鎵�鏈夎瘎浼伴檮浠�" style="margin-top: 20px;">
+ <el-table
+ :data="getAllAttachments(scope.row)"
+ size="small"
+ empty-text="鏆傛棤闄勪欢"
+ >
+ <el-table-column label="闄勪欢鍚嶇О" prop="fileName" />
+ <el-table-column label="璇勪及闃舵" width="120">
+ <template slot-scope="{ row }">
+ 绗瑊{ row.assessmentIndex + 1 }}娆¤瘎浼�
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="涓婁紶鏃堕棿"
+ prop="uploadTime"
+ width="180"
+ />
+ <el-table-column label="鎿嶄綔" width="120">
+ <template slot-scope="{ row }">
+ <el-button
+ type="text"
+ @click="handlePreviewAttachment(row)"
+ >棰勮</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-card>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </template>
+ </el-table-column>
+
<el-table-column
label="鍣ㄥ畼绫诲瀷"
align="center"
@@ -96,50 +214,47 @@
/>
</template>
</el-table-column>
+
<el-table-column
label="璇勪及绉戝"
align="center"
prop="department"
width="120"
/>
+
+ <el-table-column label="璇勪及浜哄憳" align="center" prop="assessor" />
+
+ <!-- 鍔ㄦ�佹樉绀鸿瘎浼扮姸鎬佸垪 -->
<el-table-column
- label="璇勪及浜哄憳"
+ v-for="(assessment, index) in getMaxAssessmentCount()"
+ :key="index"
+ :label="`绗�${index + 1}娆¤瘎浼癭"
align="center"
- prop="assessor"
- width="100"
- />
- <el-table-column label="璇勪及鐘舵��" align="center" width="100">
+ width="120"
+ >
<template slot-scope="scope">
<el-tag
- :type="scope.row.assessmentStatus === '1' ? 'success' : 'warning'"
+ v-if="scope.row.assessments[index]"
+ :type="getAssessmentTagType(scope.row.assessments[index].status)"
size="small"
>
- {{ scope.row.assessmentStatus === "1" ? "宸茶瘎浼�" : "寰呰瘎浼�" }}
+ {{ getAssessmentStatusText(scope.row.assessments[index].status) }}
+ </el-tag>
+ <el-tag v-else type="info" size="small">鏈瘎浼�</el-tag>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="鏁翠綋鐘舵��" align="center" width="100">
+ <template slot-scope="scope">
+ <el-tag
+ :type="scope.row.assessmentStatus === '1' ? 'success' : 'primary'"
+ size="small"
+ >
+ {{ scope.row.assessmentStatus === "1" ? "宸插畬鎴�" : "璇勪及涓�" }}
</el-tag>
</template>
</el-table-column>
- <el-table-column label="鍔熻兘鐘舵��" align="center" width="100">
- <template slot-scope="scope">
- <el-tag
- :type="getFunctionStatusType(scope.row.functionStatus)"
- size="small"
- >
- {{ getFunctionStatusText(scope.row.functionStatus) }}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column
- label="璇勪及鎰忚"
- align="center"
- prop="assessmentOpinion"
- min-width="150"
- show-overflow-tooltip
- />
- <el-table-column label="璇勪及鏃堕棿" align="center" width="120">
- <template slot-scope="scope">
- <span>{{ scope.row.assessmentTime || "-" }}</span>
- </template>
- </el-table-column>
+
<el-table-column
label="鎿嶄綔"
align="center"
@@ -151,94 +266,61 @@
v-if="canAssessOrgan(scope.row)"
size="mini"
type="text"
- @click="handleOrganAssess(scope.row)"
- >{{
- scope.row.assessmentStatus === "1" ? "鏌ョ湅/淇敼" : "璇勪及"
- }}</el-button
+ @click="handleToggleExpand(scope.row)"
>
+ {{
+ expandedRowKeys.includes(scope.row.organType) ? "鏀惰捣" : "璇︽儏"
+ }}
+ </el-button>
<el-button v-else size="mini" type="text" disabled
>鏃犳潈闄�</el-button
- >
- <el-button
- v-if="isCoordinator"
- size="mini"
- type="text"
- @click="handleViewOrganDetail(scope.row)"
- >璇︽儏</el-button
>
</template>
</el-table-column>
</el-table>
-
- <!-- 鍣ㄥ畼璇勪及璇︽儏 -->
- <el-collapse v-model="activeOrgans" accordion class="organ-detail-collapse">
- <el-collapse-item
- v-for="organ in organAssessmentList"
- :key="organ.organType"
- :name="organ.organType"
- :title="getOrganTitle(organ)"
- >
- <div class="organ-detail-header">
- <span class="organ-name">{{ getOrganName(organ.organType) }}璇勪及璇︽儏</span>
- <span class="attachment-count" v-if="organ.attachments && organ.attachments.length > 0">
- 闄勪欢鏁伴噺: {{ organ.attachments.length }}
- </span>
- </div>
- <organ-assessment-form
- :organ-data="organ"
- :readonly="!canAssessOrgan(organ)"
- @save="handleSaveOrganAssessment"
- />
- </el-collapse-item>
- </el-collapse>
</el-card>
- <!-- 闄勪欢棰勮寮圭獥 -->
- <attachment-preview
+ <!-- 鏂囦欢棰勮寮圭獥 -->
+ <FilePreviewDialog
:visible="attachmentVisible"
- :attachment-list="attachmentList"
+ :file="currentPreviewFile"
@close="attachmentVisible = false"
/>
</div>
</template>
<script>
-// import { getAssessment, updateOrganAssessment, completeAssessment } from "@/api/case/assessment";
import {
getAssessment,
updateOrganAssessment,
completeAssessment
} from "./mockAssessmentApi";
-
+import FilePreviewDialog from "@/components/FilePreviewDialog";
import OrganAssessmentForm from "./components/OrganAssessmentForm.vue";
-import AttachmentPreview from "./components/AttachmentPreview.vue";
export default {
name: "AssessmentDetail",
- components: { OrganAssessmentForm, AttachmentPreview },
+ components: { OrganAssessmentForm, FilePreviewDialog },
data() {
return {
- // 璇勪及ID
assessmentId: undefined,
- // 璇勪及鏁版嵁
assessmentData: {},
- // 鍣ㄥ畼璇勪及鍒楄〃
organAssessmentList: [],
- // 闄勪欢鍒楄〃
attachmentList: [],
- // 鍔犺浇鐘舵��
assessmentLoading: false,
- // 褰撳墠鐢ㄦ埛淇℃伅
+ organdecision: [],
+ // 灞曞紑琛岀浉鍏�
+ expandedRowKeys: [],
+ currentPreviewFile: null,
+ attachmentVisible: false,
+
currentUser: {
id: "001",
name: "寮犲尰鐢�",
- department: "蹇冭剰澶栫",
- role: "department" // coordinator: 鍗忚皟鍛�, department: 绉戝浜哄憳
+ department: "鍗忚皟鍛�",
+ role: "coordinator"
},
- // 灞曞紑鐨勫櫒瀹�
- activeOrgans: [],
- // 闄勪欢棰勮鍙鎬�
- attachmentVisible: false,
+ //department锛氬績鑴忋�乧oordinator锛氬崗璋冨憳
// 瀛楀吀閫夐」
genderOptions: [
{ value: "0", label: "鐢�" },
@@ -263,46 +345,69 @@
{ value: "intestine", label: "鑲犻亾" },
{ value: "cornea", label: "瑙掕啘" },
{ value: "skin", label: "鐨偆" }
+ ],
+ organselection: [
+ "鑲濊剰",
+ "鍙岃偩",
+ "宸﹁偩",
+ "鍙宠偩",
+ "蹇冭剰",
+ "鑲鸿剰",
+ "鑳拌吅",
+ "灏忚偁",
+ "鍙岀溂缁勭粐",
+ "閬椾綋",
+ "鍏朵粬"
]
};
},
computed: {
- // 鏄惁鏄崗璋冨憳
isCoordinator() {
return this.currentUser.role === "coordinator";
},
- // 褰撳墠绉戝
currentDepartment() {
return this.currentUser.department;
},
- // 鎵�鏈夊櫒瀹樻槸鍚﹂兘宸茶瘎浼�
allOrgansAssessed() {
return this.organAssessmentList.every(
- organ => organ.assessmentStatus === "1"
+ organ =>
+ organ.assessments &&
+ organ.assessments.length > 0 &&
+ organ.assessments.every(
+ assessment => assessment.status === "assessed"
+ )
);
}
},
created() {
this.assessmentId = this.$route.query.id;
this.getAssessmentDetail();
-
},
methods: {
- // 鑾峰彇璇勪及璇︽儏 - 浣跨敤Mock鏁版嵁
+ // 鑾峰彇榛樿璇勪及鏁版嵁缁撴瀯
+ getDefaultAssessment() {
+ return {
+ status: "pending",
+ assessmentTime: "",
+ assessor: "",
+ functionStatus: "",
+ assessmentOpinion: "",
+ attachments: [],
+ clinicalData: {},
+ labResults: {}
+ };
+ },
+
+ // 鑾峰彇璇勪及璇︽儏
getAssessmentDetail() {
this.assessmentLoading = true;
getAssessment(this.assessmentId)
.then(response => {
if (response.code === 200) {
this.assessmentData = response.data.caseInfo;
- this.organAssessmentList = response.data.organAssessments || [];
-
- // 纭繚姣忎釜鍣ㄥ畼璇勪及鏁版嵁閮芥湁attachments鏁扮粍
- this.organAssessmentList.forEach(organ => {
- if (!organ.attachments) {
- organ.attachments = [];
- }
- });
+ this.organAssessmentList = this.transformOrganData(
+ response.data.organAssessments || []
+ );
}
this.assessmentLoading = false;
})
@@ -312,11 +417,249 @@
});
},
- // 鏂板鏂规硶锛氳幏鍙栧櫒瀹樺悕绉�
+ // 杞崲鍣ㄥ畼鏁版嵁鏍煎紡锛屾敮鎸佸娆¤瘎浼�
+ transformOrganData(organList) {
+ return organList.map(organ => {
+ const organName = this.getOrganName(organ.organType);
+
+ // 杞崲涓哄娆¤瘎浼扮殑鏁版嵁缁撴瀯
+ const assessments = [];
+ if (organ.firstAssessment) {
+ assessments.push({ ...organ.firstAssessment, index: 0 });
+ }
+ if (organ.secondAssessment) {
+ assessments.push({ ...organ.secondAssessment, index: 1 });
+ }
+ // 鍙互缁х画娣诲姞鏇村璇勪及...
+
+ // 璁剧疆鍣ㄥ畼鍚嶇О鍜岃瘎浼版暟鎹�
+ organ.organName = organName;
+ organ.assessments = assessments;
+ organ.activeAssessmentTab =
+ assessments.length > 0 ? "assessment_0" : "summary";
+ organ.expanded = false;
+
+ // 璁$畻鏁翠綋璇勪及鐘舵��
+ organ.assessmentStatus = this.calculateOverallStatus(organ);
+
+ return organ;
+ });
+ },
+
+ // 璁$畻鏈�澶ц瘎浼版鏁帮紙鐢ㄤ簬琛ㄥご鏄剧ず锛�
+ getMaxAssessmentCount() {
+ const maxCount = Math.max(
+ ...this.organAssessmentList.map(organ =>
+ organ.assessments ? organ.assessments.length : 0
+ )
+ );
+ return Math.max(maxCount, 2); // 鑷冲皯鏄剧ず2鍒�
+ },
+
+ // 璁$畻鏁翠綋璇勪及鐘舵��
+ calculateOverallStatus(organ) {
+ if (!organ.assessments || organ.assessments.length === 0) return "0";
+
+ const allAssessed = organ.assessments.every(
+ assessment => assessment.status === "assessed"
+ );
+ const someAssessed = organ.assessments.some(
+ assessment => assessment.status === "assessed"
+ );
+
+ if (allAssessed) return "1";
+ if (someAssessed) return "2";
+ return "0";
+ },
+
+ // 鍒囨崲灞曞紑琛�
+ handleToggleExpand(row) {
+ const key = row.organType;
+ const index = this.expandedRowKeys.indexOf(key);
+
+ if (index > -1) {
+ this.expandedRowKeys.splice(index, 1);
+ row.expanded = false;
+ } else {
+ this.expandedRowKeys = [key];
+ this.organAssessmentList.forEach(item => {
+ item.expanded = item.organType === key;
+ });
+ }
+ },
+
+ // 灞曞紑琛屽彉鍖�
+ handleExpandChange(row, expandedRows) {
+ this.expandedRowKeys = expandedRows.map(item => item.organType);
+ this.organAssessmentList.forEach(item => {
+ item.expanded = this.expandedRowKeys.includes(item.organType);
+ });
+ },
+
+ // 娣诲姞鏂拌瘎浼�
+ handleAddNewAssessment(organ) {
+ const newAssessment = {
+ ...this.getDefaultAssessment(),
+ index: organ.assessments.length
+ };
+
+ organ.assessments.push(newAssessment);
+ organ.activeAssessmentTab = `assessment_${organ.assessments.length - 1}`;
+
+ // 鏇存柊鏁翠綋鐘舵��
+ organ.assessmentStatus = this.calculateOverallStatus(organ);
+
+ this.$message.success("宸叉坊鍔犳柊鐨勮瘎浼�");
+ },
+
+ // 澶勭悊娣诲姞璇勪及浜嬩欢
+ handleAddAssessment(data) {
+ const { organData, currentIndex } = data;
+ this.handleAddNewAssessment(organData);
+ },
+
+ // 淇濆瓨璇勪及
+ handleSaveOrganAssessment(saveData) {
+ const { organData, assessmentData, assessmentIndex } = saveData;
+
+ const organToUpdate = {
+ ...organData,
+ assessments: organData.assessments.map((assessment, index) =>
+ index === assessmentIndex
+ ? {
+ ...assessmentData,
+ status: "assessed",
+ assessmentTime: new Date().toISOString(),
+ assessor: this.currentUser.name
+ }
+ : assessment
+ )
+ };
+
+ // 鏇存柊鏁翠綋鐘舵��
+ organToUpdate.assessmentStatus = this.calculateOverallStatus(
+ organToUpdate
+ );
+
+ updateOrganAssessment(organToUpdate)
+ .then(response => {
+ if (response.code === 200) {
+ this.$message.success(`绗�${assessmentIndex + 1}娆¤瘎浼颁繚瀛樻垚鍔焋);
+ this.getAssessmentDetail();
+
+ // 鏇存柊褰撳墠灞曞紑琛岀殑鏁版嵁
+ const index = this.organAssessmentList.findIndex(
+ item => item.organType === organData.organType
+ );
+ if (index !== -1) {
+ this.organAssessmentList.splice(index, 1, organToUpdate);
+ }
+ }
+ })
+ .catch(error => {
+ console.error("淇濆瓨璇勪及澶辫触:", error);
+ this.$message.error("淇濆瓨澶辫触");
+ });
+ },
+
+ // 鑾峰彇鏈�鏂拌瘎浼版椂闂�
+ getLatestAssessmentTime(organ) {
+ if (!organ.assessments || organ.assessments.length === 0) return null;
+
+ const assessed = organ.assessments.filter(a => a.assessmentTime);
+ if (assessed.length === 0) return null;
+
+ return assessed.sort(
+ (a, b) => new Date(b.assessmentTime) - new Date(a.assessmentTime)
+ )[0].assessmentTime;
+ },
+
+ // 鑾峰彇鎵�鏈夐檮浠�
+ getAllAttachments(organ) {
+ const attachments = [];
+
+ if (organ.assessments) {
+ organ.assessments.forEach((assessment, index) => {
+ if (assessment.attachments) {
+ assessment.attachments.forEach(att => {
+ attachments.push({
+ ...att,
+ assessmentIndex: index,
+ assessmentNumber: index + 1
+ });
+ });
+ }
+ });
+ }
+
+ return attachments;
+ },
+
+ // 棰勮闄勪欢
+ handlePreviewAttachment(attachment) {
+ this.currentPreviewFile = {
+ fileName: attachment.fileName,
+ fileUrl: attachment.path || attachment.fileUrl,
+ fileType: this.getFileType(attachment.fileName)
+ };
+ this.attachmentVisible = true;
+ },
+
+ // 鑾峰彇鏂囦欢绫诲瀷
+ getFileType(fileName) {
+ if (!fileName) return "other";
+
+ const extension = fileName
+ .split(".")
+ .pop()
+ .toLowerCase();
+ const imageTypes = ["jpg", "jpeg", "png", "gif", "bmp", "webp"];
+ const pdfTypes = ["pdf"];
+ const officeTypes = ["doc", "docx", "xls", "xlsx", "ppt", "pptx"];
+
+ if (imageTypes.includes(extension)) return "image";
+ if (pdfTypes.includes(extension)) return "pdf";
+ if (officeTypes.includes(extension)) return "office";
+ return "other";
+ },
+
+ // 鑾峰彇璇勪及鐘舵�佹爣绛剧被鍨�
+ getAssessmentTagType(status) {
+ const typeMap = {
+ pending: "warning",
+ assessing: "primary",
+ assessed: "success"
+ };
+ return typeMap[status] || "info";
+ },
+
+ // 鑾峰彇璇勪及鐘舵�佹枃鏈�
+ getAssessmentStatusText(status) {
+ const textMap = {
+ pending: "寰呰瘎浼�",
+ assessing: "璇勪及涓�",
+ assessed: "宸茶瘎浼�"
+ };
+ return textMap[status] || "鏈煡";
+ },
+
+ // 鑾峰彇鍣ㄥ畼鍚嶇О
getOrganName(organType) {
const organ = this.organTypeOptions.find(opt => opt.value === organType);
return organ ? organ.label : organType;
},
+
+ // 妫�鏌ヨ瘎浼版潈闄�
+ canAssessOrgan(organ) {
+ if (this.isCoordinator) return true;
+ return organ.department === this.currentDepartment;
+ },
+
+ // 鑾峰彇琛岀被鍚�
+ getRowClassName({ row }) {
+ return this.canAssessOrgan(row) ? "assessable-row" : "non-assessable-row";
+ },
+
// 鐘舵�佽繃婊ゅ櫒
statusFilter(status) {
const statusMap = {
@@ -327,6 +670,7 @@
};
return statusMap[status] || "info";
},
+
statusTextFilter(status) {
const statusMap = {
"0": "寰呰瘎浼�",
@@ -336,69 +680,11 @@
};
return statusMap[status] || "鏈煡";
},
- // 鑾峰彇鍔熻兘鐘舵�佺被鍨�
- getFunctionStatusType(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] || "鏈煡";
- },
- // 妫�鏌ユ槸鍚︽湁鏉冮檺璇勪及璇ュ櫒瀹�
- canAssessOrgan(organ) {
- if (this.isCoordinator) return true;
- return organ.department === this.currentDepartment;
- },
- // 鑾峰彇琛岀被鍚�
- getRowClassName({ row }) {
- return this.canAssessOrgan(row) ? "assessable-row" : "non-assessable-row";
- },
- // 淇敼鏂规硶锛氭洿鏂板櫒瀹樻爣棰樻樉绀�
- getOrganTitle(organ) {
- const organName = this.getOrganName(organ.organType);
- const attachmentCount = organ.attachments ? organ.attachments.length : 0;
- return `${organName}璇勪及璇︽儏锛�${organ.department}锛�${attachmentCount > 0 ? ` 路 ${attachmentCount}涓檮浠禶 : ''}`;
- },
- // 鍣ㄥ畼璇勪及
- handleOrganAssess(organ) {
- this.activeOrgans = [organ.organType];
- },
- // 鏌ョ湅鍣ㄥ畼璇︽儏
- handleViewOrganDetail(organ) {
- this.activeOrgans = [organ.organType];
- },
- // 淇濆瓨鍣ㄥ畼璇勪及 - 浣跨敤Mock API
- handleSaveOrganAssessment(organData) {
- updateOrganAssessment(organData)
- .then(response => {
- if (response.code === 200) {
- this.$message.success("璇勪及淇濆瓨鎴愬姛");
- // 鍒锋柊鏁版嵁
- this.getAssessmentDetail();
- }
- })
- .catch(error => {
- console.error("淇濆瓨璇勪及澶辫触:", error);
- this.$message.error("淇濆瓨澶辫触");
- });
- },
- // 鏌ョ湅闄勪欢棰勮
+
handleAttachmentPreview() {
this.attachmentVisible = true;
},
- // 瀹屾垚璇勪及 - 浣跨敤Mock API
+
handleCompleteAssessment() {
this.$confirm("纭瀹屾垚鎵�鏈夊櫒瀹樿瘎浼板悧锛熷畬鎴愬悗灏嗘棤娉曚慨鏀�", "纭鎿嶄綔", {
confirmButtonText: "纭畾",
@@ -435,31 +721,40 @@
margin-bottom: 20px;
}
-.organ-detail-collapse {
- margin-top: 20px;
-}
-.organ-detail-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 15px;
- padding-bottom: 10px;
- border-bottom: 1px solid #ebeef5;
-}
-
-.organ-name {
- font-size: 16px;
- font-weight: bold;
- color: #303133;
-}
-
-.attachment-count {
- font-size: 14px;
- color: #409EFF;
- background-color: #ecf5ff;
- padding: 4px 8px;
+/* 灞曞紑琛屾牱寮� */
+.organ-expand-content {
+ padding: 20px;
+ background: #fafafa;
border-radius: 4px;
+ margin: 10px 0;
}
+
+.organ-detail-tabs {
+ background: white;
+ border-radius: 4px;
+ padding: 20px;
+}
+
+.add-assessment-prompt {
+ text-align: center;
+ padding: 40px 0;
+}
+
+.assessment-summary {
+ padding: 10px;
+}
+
+/* 鍝嶅簲寮忚璁� */
+@media (max-width: 768px) {
+ .assessment-detail {
+ padding: 10px;
+ }
+
+ .organ-expand-content {
+ padding: 10px;
+ }
+}
+
::v-deep .assessable-row {
background-color: #f0f9ff;
}
@@ -468,6 +763,24 @@
background-color: #fafafa;
}
+.jstitle {
+ float: right;
+ font-size: 18px !important;
+ font-weight: 600;
+ color: #2645f7;
+ font-size: 12px;
+}
+
+/* 琛ㄦ牸灞曞紑鍥炬爣鏍峰紡 */
+::v-deep .el-table__expand-icon {
+ cursor: pointer;
+}
+
+::v-deep .el-table__expanded-cell {
+ padding: 0 !important;
+}
+
+/* 纭繚鎻忚堪鍒楄〃鏍囩瀹藉害涓�鑷� */
::v-deep .el-descriptions__label {
width: 120px;
background-color: #f5f7fa;
@@ -476,12 +789,5 @@
.fixed-width .el-button {
margin: 0 2px;
-}
-.jstitle {
- float: right;
- font-size: 18px !important;
- font-weight: 600;
- color: #2645f7;
- font-size: 12px;
}
</style>
--
Gitblit v1.9.3