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/components/OrganAssessmentForm.vue | 257 ++++++++++++++++++++++++++++++++++++---------------
1 files changed, 181 insertions(+), 76 deletions(-)
diff --git a/src/views/business/assess/components/OrganAssessmentForm.vue b/src/views/business/assess/components/OrganAssessmentForm.vue
index 2ef0c11..a3be60e 100644
--- a/src/views/business/assess/components/OrganAssessmentForm.vue
+++ b/src/views/business/assess/components/OrganAssessmentForm.vue
@@ -1,8 +1,8 @@
<template>
<div class="organ-assessment-form">
- <el-form :model="assessmentData" label-width="120px">
+ <el-form :model="formData" label-width="120px">
<el-form-item label="鍔熻兘鐘舵��">
- <el-select v-model="assessmentData.functionStatus">
+ <el-select v-model="formData.functionStatus">
<el-option label="姝e父" value="1" />
<el-option label="杞诲害寮傚父" value="2" />
<el-option label="閲嶅害寮傚父" value="3" />
@@ -13,7 +13,7 @@
<el-form-item label="璇勪及鎰忚">
<el-input
type="textarea"
- v-model="assessmentData.assessmentOpinion"
+ v-model="formData.assessmentOpinion"
:rows="4"
placeholder="璇疯緭鍏ヨ瘎浼版剰瑙�"
/>
@@ -46,16 +46,13 @@
<!-- 闄勪欢鍒楄〃 -->
<div
class="attachment-list"
- v-if="
- assessmentData.attachments &&
- assessmentData.attachments.length > 0
- "
+ v-if="formData.attachments && formData.attachments.length > 0"
>
<div class="list-title">
- 宸蹭笂浼犻檮浠� ({{ assessmentData.attachments.length }})
+ 宸蹭笂浼犻檮浠� ({{ formData.attachments.length }})
</div>
<el-table
- :data="assessmentData.attachments"
+ :data="formData.attachments"
style="width: 100%"
size="small"
>
@@ -121,14 +118,15 @@
</el-form-item>
<el-form-item v-if="!readonly">
- <el-button type="primary" @click="handleSave">淇濆瓨璇勪及</el-button>
+ <el-button type="primary" @click="handleSave">璇勪及瀹屾垚</el-button>
<el-button @click="handleCancel">鍙栨秷</el-button>
<el-button
- type="success"
- @click="handleAddAssessment"
- icon="el-icon-plus"
+ type="danger"
+ size="small"
+ @click="handleDelete"
+ icon="el-icon-delete"
>
- 鏂板璇勪及璁板綍
+ 鍒犻櫎姝よ瘎浼�
</el-button>
</el-form-item>
</el-form>
@@ -159,14 +157,6 @@
type: Object,
default: () => ({})
},
- assessmentData: {
- type: Object,
- default: () => ({
- functionStatus: "",
- assessmentOpinion: "",
- attachments: []
- })
- },
assessmentIndex: {
type: Number,
default: 0
@@ -174,73 +164,184 @@
readonly: {
type: Boolean,
default: false
+ },
+ // 娣诲姞鐢ㄦ埛淇℃伅props
+ currentUser: {
+ type: Object,
+ default: () => ({
+ name: "璇勪及鍛�"
+ })
}
},
data() {
return {
+ // 琛ㄥ崟鏁版嵁
+ formData: {
+ functionStatus: "",
+ assessmentOpinion: "",
+ attachments: []
+ },
// 棰勮鐩稿叧
previewVisible: false,
currentPreviewFile: null,
-
// 闄勪欢鐩稿叧閰嶇疆
attachmentLimit: 10,
attachmentAccept:
".pdf,.jpg,.jpeg,.png,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt",
- attachmentFileList: []
+ attachmentFileList: [],
+ // 鍘熷璇勪及鏁版嵁
+ currentAssessment: null
};
},
watch: {
organData: {
- handler(newVal, oldVal) {
- // 鍙湁褰撻檮浠舵暟鎹湡姝e彂鐢熷彉鍖栨椂鎵嶅垵濮嬪寲
- if (
- !oldVal ||
- !oldVal.attachments ||
- JSON.stringify(newVal.attachments) !==
- JSON.stringify(oldVal.attachments)
- ) {
- this.initAttachmentList();
- }
+ handler() {
+ this.initData();
},
- immediate: true,
+ deep: true,
+ immediate: true
+ },
+ // 娣卞害鐩戝惉琛ㄥ崟鏁版嵁鍙樺寲
+ formData: {
+ handler(newVal) {
+ this.$emit("update-assessment", {
+ organData: this.organData,
+ assessmentData: newVal,
+ assessmentIndex: this.assessmentIndex
+ });
+ },
deep: true
}
},
+ created() {
+ this.initData();
+ },
methods: {
- /** 鍒濆鍖栭檮浠跺垪琛� */
- initAttachmentList() {
- if (this.organData.attachments && this.organData.attachments.length > 0) {
- this.assessmentData.attachments = [...this.organData.attachments];
- this.attachmentFileList = this.organData.attachments.map(item => ({
- uid: item.id || Math.random(),
- name: item.fileName,
- url: item.path || item.fileUrl,
- status: "success"
- }));
- } else {
- this.assessmentData.attachments = [];
+ // 鍒濆鍖栨暟鎹�
+ initData() {
+ if (!this.organData || !this.organData.assesscontent) {
+ this.formData = {
+ functionStatus: "",
+ assessmentOpinion: "",
+ attachments: []
+ };
this.attachmentFileList = [];
+ return;
+ }
+
+ try {
+ const assessData =
+ typeof this.organData.assesscontent === "string"
+ ? JSON.parse(this.organData.assesscontent)
+ : this.organData.assesscontent;
+
+ if (
+ Array.isArray(assessData) &&
+ assessData.length > this.assessmentIndex
+ ) {
+ this.currentAssessment = assessData[this.assessmentIndex];
+
+ // 娣辨嫹璐濇暟鎹紝閬垮厤淇敼鍘熷鏁版嵁
+ const assessmentCopy = JSON.parse(
+ JSON.stringify(this.currentAssessment)
+ );
+
+ this.formData = {
+ functionStatus: assessmentCopy.functionStatus || "",
+ assessmentOpinion: assessmentCopy.assessmentOpinion || "",
+ attachments: Array.isArray(assessmentCopy.attachments)
+ ? [...assessmentCopy.attachments]
+ : []
+ };
+
+ // 鍒濆鍖栭檮浠舵枃浠跺垪琛�
+ this.attachmentFileList = this.formData.attachments.map(item => ({
+ uid: item.id || Math.random(),
+ name: item.fileName,
+ fileSize: item.fileSize,
+ url: item.path || item.fileUrl,
+ uploadTime: item.uploadTime,
+ status: "success"
+ }));
+ } else {
+ console.log("璇勪及绱㈠紩瓒呭嚭鑼冨洿鎴栨暟鎹负绌�");
+ this.resetForm();
+ }
+ } catch (error) {
+ console.error("鍒濆鍖栨暟鎹け璐�:", error);
+ this.resetForm();
}
},
- handleSave() {
- const saveData = {
- organData: this.organData,
- assessmentData: this.assessmentData,
- assessmentIndex: this.assessmentIndex
+
+ // 閲嶇疆琛ㄥ崟
+ resetForm() {
+ this.formData = {
+ functionStatus: "",
+ assessmentOpinion: "",
+ attachments: []
};
- this.$emit("save", saveData);
+ this.attachmentFileList = [];
+ },
+
+ // 淇濆瓨璇勪及
+ handleSave() {
+ // 楠岃瘉蹇呰瀛楁
+ if (!this.formData.functionStatus) {
+ this.$message.warning("璇烽�夋嫨鍔熻兘鐘舵��");
+ return;
+ }
+
+ if (!this.formData.assessmentOpinion) {
+ this.$message.warning("璇疯緭鍏ヨ瘎浼版剰瑙�");
+ return;
+ }
+
+ // 鍑嗗淇濆瓨鐨勬暟鎹�
+ const saveData = {
+ functionStatus: this.formData.functionStatus,
+ assessmentOpinion: this.formData.assessmentOpinion,
+ attachments: Array.isArray(this.formData.attachments)
+ ? [...this.formData.attachments]
+ : []
+ };
+
+ // 娣诲姞璇勪及鑰呭拰璇勪及鏃堕棿
+ const assessmentData = {
+ ...saveData,
+ assessor: this.currentUser.name,
+ assessmentTime: new Date().toISOString()
+ };
+
+ console.log("鍙戦�佷繚瀛樿姹�:", assessmentData);
+
+ this.$emit("save-assessment", {
+ organData: this.organData,
+ assessmentData: assessmentData,
+ assessmentIndex: this.assessmentIndex
+ });
},
handleCancel() {
this.$emit("cancel");
},
- handleAddAssessment() {
- this.$emit("add-assessment", {
- organData: this.organData,
- currentIndex: this.assessmentIndex
- });
+ handleDelete() {
+ this.$confirm("纭鍒犻櫎姝よ瘎浼拌褰曞悧锛�", "纭鍒犻櫎", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ this.$emit("delete-assessment", {
+ organData: this.organData,
+ assessmentIndex: this.assessmentIndex
+ });
+ })
+ .catch(() => {
+ this.$message.info("宸插彇娑堝垹闄�");
+ });
},
+
/** 闄勪欢鍙樺寲澶勭悊 */
handleAttachmentChange(fileList) {
this.attachmentFileList = fileList;
@@ -249,47 +350,51 @@
/** 闄勪欢绉婚櫎澶勭悊 */
handleAttachmentRemove(file) {
if (file.url) {
- const index = this.assessmentData.attachments.findIndex(
+ const index = this.formData.attachments.findIndex(
item => item.path === file.url || item.fileUrl === file.url
);
if (index > -1) {
- this.assessmentData.attachments.splice(index, 1);
+ this.formData.attachments.splice(index, 1);
+ this.$message.success("闄勪欢鍒犻櫎鎴愬姛");
}
}
},
/** 鎵嬪姩鍒犻櫎闄勪欢 */
handleRemoveAttachment(index) {
- this.assessmentData.attachments.splice(index, 1);
+ this.formData.attachments.splice(index, 1);
this.attachmentFileList.splice(index, 1);
this.$message.success("闄勪欢鍒犻櫎鎴愬姛");
},
/** 涓婁紶鎴愬姛澶勭悊 */
handleUploadSuccess({ file, fileList, response }) {
- console.log(response);
+ console.log(response,'response');
- if (response.code == 200) {
- console.log(1);
+ if (response.code === 200) {
+ console.log(response, "涓婁紶鏁版嵁");
const attachmentObj = {
- // id:
- // response.data.fileId ||
- // Math.random()
- // .toString(36)
- // .substr(2),
fileName: file.name,
- path: response.data.fileUrl || file.url,
- fileUrl: response.data.fileUrl || file.url,
+ path: response.fileUrl || file.url,
+ fileUrl: response.fileUrl || file.url,
fileType: this.getFileExtension(file.name),
fileSize: file.size,
- uploadTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
- assessmentType: this.assessmentType,
- organType: this.organData.organType
+ uploadTime: dayjs().format("YYYY-MM-DD HH:mm:ss")
};
- console.log(2,attachmentObj);
- this.assessmentData.attachments.push(attachmentObj);
+ console.log("娣诲姞涓婁紶鐨勯檮浠�:", attachmentObj);
+
+ // 纭繚 attachments 鏄暟缁�
+ if (!Array.isArray(this.formData.attachments)) {
+ this.formData.attachments = [];
+ }
+
+ this.formData.attachments.push(attachmentObj);
+
+ // 鏇存柊鏂囦欢鍒楄〃
+ this.attachmentFileList = fileList;
+
this.$message.success("鏂囦欢涓婁紶鎴愬姛");
}
},
--
Gitblit v1.9.3