From c8e9849cb5f24848df0174c13bfbbff37bb08a5a Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 21 七月 2026 15:45:30 +0800
Subject: [PATCH] 维护
---
src/views/business/affirm/affirmInfo.vue | 542 ++++++++++++++++++++++++++++++-----------------------
1 files changed, 309 insertions(+), 233 deletions(-)
diff --git a/src/views/business/affirm/affirmInfo.vue b/src/views/business/affirm/affirmInfo.vue
index abd3036..08f5204 100644
--- a/src/views/business/affirm/affirmInfo.vue
+++ b/src/views/business/affirm/affirmInfo.vue
@@ -6,7 +6,7 @@
<!-- 鍩虹淇℃伅 -->
<div slot="header" class="clearfix">
<span class="detail-title">鎹愮尞纭淇℃伅</span>
- <el-button
+ <!-- <el-button
type="primary"
style="float: right;margin-left: 20px;"
@click="handleSave"
@@ -21,7 +21,7 @@
:loading="saveLoading"
>
纭瀹屾垚
- </el-button>
+ </el-button> -->
</div>
<el-form :model="form" ref="form" label-width="120px">
@@ -36,27 +36,14 @@
<el-input v-model="form.coordinatedusernamet" />
</el-form-item>
</el-col>
- <el-col :span="8">
+ <!-- <el-col :span="8">
<el-form-item label="涓氬姟浜哄憳" prop="responsibleusername">
<el-input v-model="form.responsibleusername" />
</el-form-item>
- </el-col>
+ </el-col> -->
</el-row>
- <el-row :gutter="20">
- <!-- <el-col :span="8">
- <el-form-item label="纭鐘舵��" prop="relativeconfirmationsign">
- <el-select
- v-model="form.relativeconfirmationsign"
- style="width: 100%"
-
- >
- <el-option label="鏈‘璁�" value="0" />
- <el-option label="瀹跺睘纭" value="1" />
- <el-option label="涓嶅悓鎰忔崘鐚�" value="2" />
- </el-select>
- </el-form-item>
- </el-col> -->
+ <!-- <el-row :gutter="20">
<el-col :span="8">
<el-form-item label="绛惧瓧鏃堕棿" prop="signdate">
<el-date-picker
@@ -66,79 +53,44 @@
/>
</el-form-item>
</el-col>
- <!-- <el-col :span="8">
- <el-form-item label="琛�鍨�" prop="bloodtype">
- <el-input v-model="form.bloodtype" />
- </el-form-item>
- </el-col> -->
- </el-row>
-
- <!-- <el-row :gutter="20">
- <el-col :span="8">
- <el-form-item label="璇佷欢鍙风爜" prop="idcardno">
- <el-input v-model="form.idcardno" />
- </el-form-item>
- </el-col>
</el-row> -->
<!-- 浜插睘淇℃伅 -->
- <!-- 浜插睘淇℃伅 -->
<el-divider content-position="left">浜插睘纭淇℃伅</el-divider>
- <el-row :gutter="20">
- <el-col :span="6">
- <el-form-item label="浜插睘濮撳悕" prop="relativeconfirmationsignname">
- <el-input
- v-model="form.relativeconfirmationsignname"
- placeholder="璇疯緭鍏ヤ翰灞炲鍚�"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="涓庢崘璧犺�呭叧绯�" prop="signfamilyrelations">
- <el-select
- v-model="form.signfamilyrelations"
- placeholder="璇烽�夋嫨涓庢崘璧犺�呭叧绯�"
- >
- <el-option
- v-for="dict in dict.type.sys_FamilyRelation || []"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="浜插睘韬唤璇�" prop="relativeidcardno">
- <el-input
- v-model="form.relativeidcardno"
- placeholder="璇疯緭鍏ヤ翰灞炶瘉浠跺彿鐮�"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="浜插睘鐢佃瘽" prop="relativephone">
- <el-input
- v-model="form.relativephone"
- placeholder="璇疯緭鍏ヤ翰灞炶仈绯荤數璇�"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row style="margin-bottom: 10px;">
+ <el-alert
+ title="绗竴鏉℃暟鎹负涓昏浜插睘锛岄渶濉啓瀹屾暣鐨勫鍚嶃�佸叧绯汇�佽韩浠借瘉鍜岀數璇濅俊鎭�"
+ type="info"
+ show-icon
+ :closable="false"
+ style="margin-bottom: 15px;"
+ >
+ </el-alert>
+ <el-row style="margin-top: 15px;">
<el-button
+ style="float: right; margin-bottom: 5px;"
type="primary"
size="mini"
icon="el-icon-plus"
- @click="openOtherFamilyDialog()"
+ @click="openFamilyDialog(false)"
>
娣诲姞鍏朵粬瀹跺睘
</el-button>
</el-row>
- <el-table :data="otherFamilyList" size="small" border>
- <el-table-column label="濮撳悕" prop="name" />
- <el-table-column label="涓庢崘璧犺�呭叧绯�" prop="relation">
+ <el-table :data="familyMemberList" size="small" border>
+ <el-table-column label="搴忓彿" width="60" align="center">
+ <template slot-scope="scope">
+ {{ scope.$index + 1 }}
+ </template>
+ </el-table-column>
+ <el-table-column label="濮撳悕" prop="name" min-width="120">
+ <template slot-scope="scope">
+ <span :class="{ 'main-family': scope.$index === 0 }">{{
+ scope.row.name
+ }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="涓庢崘璧犺�呭叧绯�" prop="relation" min-width="140">
<template slot-scope="scope">
<dict-tag
:options="dict.type.sys_FamilyRelation"
@@ -146,28 +98,51 @@
/>
</template>
</el-table-column>
- <el-table-column label="鑱旂郴鐢佃瘽" prop="phone" />
-
- <el-table-column label="鎿嶄綔" width="120" align="center">
+ <el-table-column label="韬唤璇佸彿" prop="idcard" min-width="180">
+ <template slot-scope="scope">
+ <span v-if="scope.$index === 0">{{ scope.row.idcard }}</span>
+ <span v-else style="color: #909399;">-</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鑱旂郴鐢佃瘽" prop="phone" min-width="130">
+ <template slot-scope="scope">
+ <span v-if="scope.$index === 0">{{ scope.row.phone }}</span>
+ <span v-else style="color: #909399;">-</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="绫诲瀷" width="70" align="center">
+ <template slot-scope="scope">
+ <el-tag v-if="scope.$index === 0" type="warning" size="small"
+ >涓昏</el-tag
+ >
+ <el-tag v-else type="info" size="small">鍏朵粬</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" width="150" align="center">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
- @click="editOtherFamily(scope.$index)"
+ @click="editFamilyMember(scope.$index)"
>
缂栬緫
</el-button>
<el-button
+ v-if="scope.$index > 0"
size="mini"
type="text"
style="color:red"
- @click="deleteOtherFamily(scope.$index)"
+ @click="deleteFamilyMember(scope.$index)"
>
鍒犻櫎
</el-button>
+ <span v-else style="color: #909399; font-size: 12px;"
+ >涓嶅彲鍒犻櫎</span
+ >
</template>
</el-table-column>
</el-table>
+
<el-row>
<el-form-item label-width="100px" label="鎹愮尞鍐冲畾">
<el-checkbox-group v-model="organdecision">
@@ -198,13 +173,14 @@
</el-form>
</el-card>
+ <!-- 娣诲姞杩欓噷锛氬簳閮ㄥ眳涓寜閽� -->
+
<!-- 闄勪欢淇℃伅 - 鎸夌被鍨嬪垎绫� -->
<el-card class="attachment-card">
<div slot="header" class="clearfix">
<span class="detail-title">鐩稿叧闄勪欢涓婁紶</span>
</div>
- <!-- 闄勪欢绫诲瀷閫夐」鍗� -->
<el-tabs v-model="activeAttachmentType" type="card">
<el-tab-pane
v-for="type in attachmentTypes"
@@ -227,7 +203,6 @@
</el-tooltip>
</div>
- <!-- 褰撳墠绫诲瀷鐨勯檮浠跺垪琛� -->
<div class="attachment-list">
<el-table
:data="getAttachmentsByType(type.value)"
@@ -245,7 +220,7 @@
</template>
</el-table-column>
- <el-table-column label="鏂囦欢绫诲瀷" width="100" align="center">
+ <el-table-column label="鏂囦欢绫诲瀷" width="90" align="center">
<template slot-scope="scope">
<el-tag size="small">{{
getFileType(scope.row.fileName)
@@ -253,19 +228,19 @@
</template>
</el-table-column>
- <el-table-column label="鏂囦欢澶у皬" width="100" align="center">
+ <el-table-column label="鏂囦欢澶у皬" width="90" align="center">
<template slot-scope="scope">
<span>{{ formatFileSize(scope.row.fileSize) }}</span>
</template>
</el-table-column>
- <el-table-column label="涓婁紶鏃堕棿" width="160" align="center">
+ <el-table-column label="涓婁紶鏃堕棿" width="155" align="center">
<template slot-scope="scope">
<span>{{ formatDateTime(scope.row.uploadTime) }}</span>
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" width="150" align="center">
+ <el-table-column label="鎿嶄綔" width="145" align="center">
<template slot-scope="scope">
<el-button
size="mini"
@@ -285,7 +260,6 @@
</el-table-column>
</el-table>
- <!-- 绌虹姸鎬佹彁绀� -->
<div
v-if="getAttachmentsByType(type.value).length === 0"
class="empty-attachment"
@@ -300,19 +274,46 @@
</el-tab-pane>
</el-tabs>
</el-card>
- <!-- 鍏朵粬瀹跺睘寮圭獥 -->
+ <!-- 搴曢儴鎿嶄綔鎸夐挳 -->
+ <div style="text-align: center; margin: 30px 0;">
+ <el-button
+ type="primary"
+ @click="handleSave"
+ :loading="saveLoading"
+ style="margin-right: 20px; min-width: 140px;"
+ >
+ 淇濆瓨纭淇℃伅
+ </el-button>
+ <el-button
+ type="success"
+ @click="accomplish"
+ :loading="saveLoading"
+ style="min-width: 140px;"
+ >
+ 纭瀹屾垚
+ </el-button>
+ </div>
+ <!-- 瀹跺睘寮圭獥 -->
<el-dialog
- :title="isEditOtherFamily ? '缂栬緫鍏朵粬瀹跺睘' : '娣诲姞鍏朵粬瀹跺睘'"
- :visible.sync="otherFamilyDialogVisible"
- width="400px"
+ :title="familyDialogTitle"
+ :visible.sync="familyDialogVisible"
+ width="420px"
+ :close-on-click-modal="false"
>
- <el-form :model="currentOtherFamily" label-width="100px">
+ <el-form :model="currentFamilyMember" label-width="110px">
<el-form-item label="濮撳悕" prop="name">
- <el-input v-model="currentOtherFamily.name" />
+ <el-input
+ v-model="currentFamilyMember.name"
+ placeholder="璇疯緭鍏ュ鍚�"
+ />
</el-form-item>
- <el-form-item label="鍏崇郴" prop="relation">
- <el-select v-model="currentOtherFamily.relation" style="width:100%">
+ <el-form-item label="涓庢崘璧犺�呭叧绯�" prop="relation">
+ <el-select
+ v-model="currentFamilyMember.relation"
+ style="width:100%"
+ placeholder="璇烽�夋嫨鍏崇郴"
+ >
<el-option
v-for="dict in dict.type.sys_FamilyRelation"
:key="dict.value"
@@ -322,21 +323,36 @@
</el-select>
</el-form-item>
- <el-form-item label="鐢佃瘽" prop="phone">
- <el-input v-model="currentOtherFamily.phone" />
- </el-form-item>
+ <template v-if="currentFamilyMember.isMain">
+ <el-form-item label="韬唤璇佸彿" prop="idcard">
+ <el-input
+ v-model="currentFamilyMember.idcard"
+ placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�"
+ maxlength="18"
+ />
+ </el-form-item>
+
+ <el-form-item label="鑱旂郴鐢佃瘽" prop="phone">
+ <el-input
+ v-model="currentFamilyMember.phone"
+ placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
+ maxlength="11"
+ />
+ </el-form-item>
+ </template>
</el-form>
<span slot="footer">
- <el-button @click="otherFamilyDialogVisible = false">鍙栨秷</el-button>
- <el-button type="primary" @click="saveOtherFamily">纭畾</el-button>
+ <el-button @click="familyDialogVisible = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="saveFamilyMember">纭畾</el-button>
</span>
</el-dialog>
+
<!-- 涓婁紶瀵硅瘽妗� -->
<el-dialog
:title="`涓婁紶${getCurrentTypeLabel}闄勪欢`"
:visible.sync="uploadDialogVisible"
- width="500px"
+ width="480px"
:close-on-click-modal="false"
>
<el-upload
@@ -399,10 +415,7 @@
data() {
return {
caseId: null,
-
- // 鏄惁缂栬緫妯″紡
isEdit: false,
- // 琛ㄥ崟鏁版嵁
form: {
id: undefined,
infoid: undefined,
@@ -422,29 +435,28 @@
relativeidcardno: "",
relativephone: "",
relativeRemark: "",
- assessannex: "", // JSON瀛楃涓插瓨鍌ㄦ墍鏈夐檮浠�
- otherFamilyMembers: "" // 鉁� 鏂板
+ assessannex: "",
+ otherFamilyMembers: ""
},
+ // 缁熶竴浜插睘鍒楄〃锛堢涓�鏉′负涓昏浜插睘锛屽叾浣欎负鍏朵粬浜插睘锛�
+ familyMemberList: [],
+ // 褰撳墠缂栬緫鐨勫灞烇紙寮圭獥鐢級
+ currentFamilyMember: {
+ name: "",
+ relation: "",
+ phone: "",
+ idcard: "",
+ isMain: false
+ },
+ isEditFamilyMember: false,
+ editFamilyMemberIndex: -1,
+ familyDialogVisible: false,
+ familyDialogTitle: "娣诲姞瀹跺睘",
+
uploadAction: process.env.VUE_APP_BASE_API + "/common/upload",
headers: {
Authorization: "Bearer " + getToken()
},
- // 鍏朵粬瀹跺睘琛ㄦ牸鏁版嵁
- otherFamilyList: [],
-
- // 褰撳墠缂栬緫鐨勫叾浠栧灞烇紙寮圭獥鐢級
- currentOtherFamily: {
- name: "",
- relation: "",
- phone: ""
- },
-
- // 鏄惁缂栬緫妯″紡锛堝叾浠栧灞烇級
- isEditOtherFamily: false,
- editOtherFamilyIndex: -1,
-
- // 鍏朵粬瀹跺睘寮圭獥
- otherFamilyDialogVisible: false,
organdecision: [],
organdecisionOther: "",
organselection: [
@@ -457,22 +469,17 @@
"鐪艰鑶�",
"鍏朵粬"
],
- // 鍔犺浇鐘舵��
loading: false,
saveLoading: false,
infoid: null,
- // 闄勪欢鐩稿叧鏁版嵁
activeAttachmentType: "1",
attachmentLoading: false,
uploadDialogVisible: false,
uploadLoading: false,
tempFileList: [],
currentUploadType: "",
- // 棰勮鐩稿叧
previewVisible: false,
currentPreviewFile: null,
-
- // 闄勪欢绫诲瀷瀹氫箟
attachmentTypes: [
{ value: "1", label: "浜轰綋鍣ㄥ畼娼滃湪鎹愮尞鑰呯櫥璁拌〃" },
{ value: "2", label: "浜轰綋鍣ㄥ畼鎹愮尞浜插睘纭鐧昏琛�" },
@@ -481,10 +488,8 @@
{ value: "5", label: "鑴戞浜″垽瀹氱煡鎯呭悓鎰忎功" },
{ value: "6", label: "蹇冩浜″垽瀹氱煡鎯呭悓鎰忎功" }
],
-
- // 闄勪欢鏁版嵁缁撴瀯 - 鎸夌被鍨嬪垎寮�瀛樺偍
attachmentData: {
- "1": [], // 绫诲瀷1鐨勯檮浠跺垪琛�
+ "1": [],
"2": [],
"3": [],
"4": [],
@@ -510,12 +515,10 @@
}
},
methods: {
- // 鑾峰彇璇︽儏
async getDetail(infoid) {
this.loading = true;
try {
const response = await relativesList({ infoid });
-
if (response.code === 200) {
this.handleDetailData(response);
} else {
@@ -529,11 +532,8 @@
}
},
- // 澶勭悊璇︽儏鏁版嵁
handleDetailData(response) {
let detailData = null;
-
- // 鏍规嵁鎺ュ彛瀹為檯杩斿洖鐨勬暟鎹粨鏋勮繘琛岃皟鏁�
if (response.data) {
if (Array.isArray(response.data)) {
detailData = response.data[0] || {};
@@ -547,22 +547,11 @@
} else {
detailData = response;
}
- // 澶勭悊鍏朵粬瀹跺睘鏁版嵁
- if (detailData.otherFamilyMembers) {
- try {
- this.otherFamilyList =
- typeof detailData.otherFamilyMembers === "string"
- ? JSON.parse(detailData.otherFamilyMembers)
- : detailData.otherFamilyMembers || [];
- } catch (e) {
- this.otherFamilyList = [];
- }
- }
- // 鏄犲皠瀛楁鍒拌〃鍗�
+
this.form = {
...this.form,
id: detailData.id || this.$route.query.id,
- infoid: detailData.infoid || infoid,
+ infoid: detailData.infoid || this.infoid,
caseNo: detailData.caseNo || "",
name: detailData.name || "",
sex: detailData.sex || "",
@@ -583,19 +572,44 @@
assessannex: detailData.assessannex || ""
};
- // 澶勭悊鎹愮尞鍐冲畾鏁版嵁
+ // 鍒濆鍖栧灞炲垪琛�
+ this.familyMemberList = [];
+ if (detailData.relativeconfirmationsignname) {
+ this.familyMemberList.push({
+ name: detailData.relativeconfirmationsignname,
+ relation: detailData.signfamilyrelations || "",
+ phone: detailData.relativephone || "",
+ idcard: detailData.relativeidcardno || ""
+ });
+ }
+ if (detailData.otherFamilyMembers) {
+ try {
+ const otherMembers =
+ typeof detailData.otherFamilyMembers === "string"
+ ? JSON.parse(detailData.otherFamilyMembers)
+ : detailData.otherFamilyMembers || [];
+ otherMembers.forEach(member => {
+ this.familyMemberList.push({
+ name: member.name,
+ relation: member.relation,
+ phone: member.phone || "",
+ idcard: member.idcard || ""
+ });
+ });
+ } catch (e) {
+ console.warn("瑙f瀽鍏朵粬瀹跺睘鏁版嵁澶辫触:", e);
+ }
+ }
+
if (detailData.organdecision) {
this.organdecision = Array.isArray(detailData.organdecision)
? detailData.organdecision
: detailData.organdecision.split(",");
}
- console.log(this.organdecision, "this.organdecision");
- // 澶勭悊闄勪欢鏁版嵁 - 浠巃ssessannex瀛楁瑙f瀽JSON骞舵寜绫诲瀷鍒嗙被
this.processAssessannexData();
},
- // 澶勭悊assessannex瀛楁鏁版嵁骞舵寜绫诲瀷鍒嗙被
processAssessannexData() {
if (this.form.assessannex) {
try {
@@ -603,16 +617,12 @@
typeof this.form.assessannex === "string"
? JSON.parse(this.form.assessannex)
: this.form.assessannex;
-
- // 娓呯┖鐜版湁鏁版嵁
Object.keys(this.attachmentData).forEach(key => {
this.attachmentData[key] = [];
});
-
- // 鎸夌被鍨嬪垎绫诲瓨鍌�
if (Array.isArray(annexData)) {
annexData.forEach(attachment => {
- const type = attachment.type || "1"; // 榛樿鍒扮涓�绉嶇被鍨�
+ const type = attachment.type || "1";
if (this.attachmentData[type]) {
this.attachmentData[type].push(attachment);
}
@@ -624,12 +634,10 @@
}
},
- // 鏍规嵁绫诲瀷鑾峰彇闄勪欢鍒楄〃
getAttachmentsByType(type) {
return this.attachmentData[type] || [];
},
- // 鎵撳紑涓婁紶瀵硅瘽妗�
openUploadDialog(type) {
this.currentUploadType = type;
this.tempFileList = [];
@@ -641,7 +649,6 @@
});
},
- // 涓婁紶鍓嶆牎楠孾7](@ref)
beforeUpload(file) {
const allowedTypes = [
"application/pdf",
@@ -650,10 +657,7 @@
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document"
];
-
- const maxSize = 10 * 1024 * 1024; // 10MB
-
- // 鏍¢獙鏂囦欢绫诲瀷
+ const maxSize = 10 * 1024 * 1024;
const isTypeOk =
allowedTypes.includes(file.type) ||
file.name.endsWith(".pdf") ||
@@ -662,29 +666,23 @@
file.name.endsWith(".png") ||
file.name.endsWith(".doc") ||
file.name.endsWith(".docx");
-
if (!isTypeOk) {
this.$message.error(
"鏂囦欢鏍煎紡涓嶆敮鎸侊紝璇蜂笂浼爌df銆乯pg銆乸ng銆乨oc鎴杁ocx鏍煎紡鏂囦欢"
);
return false;
}
-
- // 鏍¢獙鏂囦欢澶у皬
if (file.size > maxSize) {
this.$message.error("鏂囦欢澶у皬涓嶈兘瓒呰繃10MB");
return false;
}
-
return true;
},
- // 鏂囦欢閫夋嫨鍙樺寲
handleFileChange(file, fileList) {
this.tempFileList = fileList;
},
- // 绉婚櫎涓存椂鏂囦欢
handleTempRemove(file, fileList) {
this.tempFileList = fileList;
},
@@ -694,7 +692,6 @@
this.$message.error(response.msg || "涓婁紶澶辫触");
return;
}
-
const newAttachment = {
id: Date.now(),
fileName: file.name,
@@ -705,10 +702,8 @@
uploadTime: this.getCurrentTime(),
uploader: "褰撳墠鐢ㄦ埛"
};
-
this.attachmentData[this.currentUploadType].push(newAttachment);
this.updateAssessannexField();
-
this.$message.success("涓婁紶鎴愬姛");
this.uploadLoading = false;
this.uploadDialogVisible = false;
@@ -720,12 +715,10 @@
this.$message.warning("璇峰厛閫夋嫨瑕佷笂浼犵殑鏂囦欢");
return;
}
-
this.uploadLoading = true;
- this.$refs.uploadRef.submit(); // 鉁� 鍙皟鐢ㄤ竴娆�
+ this.$refs.uploadRef.submit();
},
- // 鍒犻櫎闄勪欢
handleRemoveAttachment(type, index) {
this.$confirm("纭畾瑕佸垹闄よ繖涓檮浠跺悧锛�", "鎻愮ず", {
confirmButtonText: "纭畾",
@@ -736,69 +729,157 @@
if (this.attachmentData[type] && this.attachmentData[type][index]) {
this.attachmentData[type].splice(index, 1);
this.$message.success("闄勪欢鍒犻櫎鎴愬姛");
- this.updateAssessannexField(); // 鏇存柊瀛樺偍瀛楁
+ this.updateAssessannexField();
}
})
.catch(() => {});
},
- openOtherFamilyDialog(index) {
- this.isEditOtherFamily = typeof index === "number";
- this.editOtherFamilyIndex = index || -1;
- this.currentOtherFamily = this.isEditOtherFamily
- ? { ...this.otherFamilyList[index] }
- : { name: "", relation: "", phone: "" };
+ // 瀹跺睘鎿嶄綔鏂规硶
+ openFamilyDialog(isMain) {
+ this.isEditFamilyMember = false;
+ this.editFamilyMemberIndex = -1;
+ this.familyDialogTitle = "娣诲姞鍏朵粬瀹跺睘";
- this.otherFamilyDialogVisible = true;
+ // 濡傛灉杩樻病鏈変换浣曞灞烇紝鍒欐坊鍔犱富瑕佷翰灞�
+ if (this.familyMemberList.length === 0) {
+ this.currentFamilyMember = {
+ name: "",
+ relation: "",
+ phone: "",
+ idcard: "",
+ isMain: true
+ };
+ this.familyDialogTitle = "娣诲姞涓昏浜插睘";
+ } else {
+ this.currentFamilyMember = {
+ name: "",
+ relation: "",
+ phone: "",
+ idcard: "",
+ isMain: false
+ };
+ }
+
+ this.familyDialogVisible = true;
},
- editOtherFamily(index) {
- this.openOtherFamilyDialog(index);
+
+ editFamilyMember(index) {
+ this.isEditFamilyMember = true;
+ this.editFamilyMemberIndex = index;
+ const member = this.familyMemberList[index];
+ this.currentFamilyMember = {
+ name: member.name,
+ relation: member.relation,
+ phone: member.phone || "",
+ idcard: member.idcard || "",
+ isMain: index === 0
+ };
+ this.familyDialogTitle = index === 0 ? "缂栬緫涓昏浜插睘" : "缂栬緫鍏朵粬瀹跺睘";
+ this.familyDialogVisible = true;
},
- deleteOtherFamily(index) {
- this.$confirm("纭鍒犻櫎璇ュ灞烇紵", "鎻愮ず", { type: "warning" }).then(
- () => {
- this.otherFamilyList.splice(index, 1);
- this.updateOtherFamilyField();
- }
- );
+
+ deleteFamilyMember(index) {
+ if (index === 0) {
+ this.$message.warning("涓昏浜插睘涓嶅彲鍒犻櫎");
+ return;
+ }
+ this.$confirm("纭鍒犻櫎璇ュ灞烇紵", "鎻愮ず", { type: "warning" })
+ .then(() => {
+ this.familyMemberList.splice(index, 1);
+ this.updateFamilyMemberField();
+ })
+ .catch(() => {});
},
- saveOtherFamily() {
- if (
- !this.currentOtherFamily.name ||
- !this.currentOtherFamily.relation ||
- !this.currentOtherFamily.phone
- ) {
- this.$message.warning("璇峰~鍐欏畬鏁翠俊鎭�");
+
+ saveFamilyMember() {
+ if (!this.currentFamilyMember.name) {
+ this.$message.warning("璇疯緭鍏ュ鍚�");
+ return;
+ }
+ if (!this.currentFamilyMember.relation) {
+ this.$message.warning("璇烽�夋嫨涓庢崘璧犺�呭叧绯�");
return;
}
- if (this.isEditOtherFamily) {
- this.otherFamilyList.splice(this.editOtherFamilyIndex, 1, {
- ...this.currentOtherFamily
- });
- } else {
- this.otherFamilyList.push({ ...this.currentOtherFamily });
+ // 濡傛灉鏄富瑕佷翰灞烇紝楠岃瘉韬唤璇佸拰鐢佃瘽
+ if (this.currentFamilyMember.isMain) {
+ if (!this.currentFamilyMember.idcard) {
+ this.$message.warning("璇疯緭鍏ヤ富瑕佷翰灞炵殑韬唤璇佸彿");
+ return;
+ }
+ if (
+ !/^(\d{15}|\d{18}|\d{17}(\d|X|x))$/.test(
+ this.currentFamilyMember.idcard
+ )
+ ) {
+ this.$message.warning("璇疯緭鍏ユ纭殑韬唤璇佸彿");
+ return;
+ }
+ if (!this.currentFamilyMember.phone) {
+ this.$message.warning("璇疯緭鍏ヤ富瑕佷翰灞炵殑鑱旂郴鐢佃瘽");
+ return;
+ }
+ if (!/^1[3-9]\d{9}$/.test(this.currentFamilyMember.phone)) {
+ this.$message.warning("璇疯緭鍏ユ纭殑鎵嬫満鍙�");
+ return;
+ }
}
- this.updateOtherFamilyField();
- this.otherFamilyDialogVisible = false;
+ const memberData = {
+ name: this.currentFamilyMember.name,
+ relation: this.currentFamilyMember.relation,
+ phone: this.currentFamilyMember.isMain
+ ? this.currentFamilyMember.phone
+ : "",
+ idcard: this.currentFamilyMember.isMain
+ ? this.currentFamilyMember.idcard
+ : ""
+ };
+
+ if (this.isEditFamilyMember) {
+ this.familyMemberList.splice(this.editFamilyMemberIndex, 1, memberData);
+ } else {
+ this.familyMemberList.push(memberData);
+ }
+
+ this.updateFamilyMemberField();
+ this.familyDialogVisible = false;
+ this.$message.success(this.isEditFamilyMember ? "缂栬緫鎴愬姛" : "娣诲姞鎴愬姛");
},
- updateOtherFamilyField() {
- this.form.otherFamilyMembers = JSON.stringify(this.otherFamilyList);
+
+ updateFamilyMemberField() {
+ if (this.familyMemberList.length > 0) {
+ const mainMember = this.familyMemberList[0];
+ this.form.relativeconfirmationsignname = mainMember.name;
+ this.form.signfamilyrelations = mainMember.relation;
+ this.form.relativeidcardno = mainMember.idcard || "";
+ this.form.relativephone = mainMember.phone || "";
+
+ const otherMembers = this.familyMemberList.slice(1).map(member => ({
+ name: member.name,
+ relation: member.relation,
+ phone: member.phone || "",
+ idcard: member.idcard || ""
+ }));
+ this.form.otherFamilyMembers = JSON.stringify(otherMembers);
+ } else {
+ this.form.relativeconfirmationsignname = "";
+ this.form.signfamilyrelations = "";
+ this.form.relativeidcardno = "";
+ this.form.relativephone = "";
+ this.form.otherFamilyMembers = "[]";
+ }
},
- // 鏇存柊assessannex瀛樺偍瀛楁
+
updateAssessannexField() {
- // 灏嗘墍鏈夌被鍨嬬殑闄勪欢鍚堝苟涓轰竴涓暟缁�
const allAttachments = [];
Object.values(this.attachmentData).forEach(attachments => {
allAttachments.push(...attachments);
});
-
- // 鏇存柊鍒拌〃鍗曞瓧娈�
this.form.assessannex = JSON.stringify(allAttachments);
},
- // 鏂囦欢棰勮
handlePreview(file) {
this.currentPreviewFile = {
fileName: file.fileName,
@@ -808,11 +889,9 @@
this.previewVisible = true;
},
- // 鏂囦欢涓嬭浇
handleDownload(file) {
const fileUrl = file.fileUrl;
const fileName = file.fileName;
-
if (fileUrl) {
const link = document.createElement("a");
link.href = fileUrl;
@@ -827,21 +906,18 @@
}
},
- // 鑾峰彇鏂囦欢绫诲瀷
getFileType(fileName) {
if (!fileName) return "other";
const extension = this.getFileExtension(fileName);
const imageTypes = ["jpg", "jpeg", "png"];
const pdfTypes = ["pdf"];
const officeTypes = ["doc", "docx"];
-
if (imageTypes.includes(extension)) return "image";
if (pdfTypes.includes(extension)) return "pdf";
if (officeTypes.includes(extension)) return "office";
return "other";
},
- // 鑾峰彇鏂囦欢鎵╁睍鍚�
getFileExtension(filename) {
return filename
.split(".")
@@ -849,7 +925,6 @@
.toLowerCase();
},
- // 鏂囦欢澶у皬鏍煎紡鍖�
formatFileSize(size) {
if (!size) return "0 B";
const k = 1024;
@@ -858,26 +933,22 @@
return parseFloat((size / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
},
- // 鏃ユ湡鏃堕棿鏍煎紡鍖�
formatDateTime(dateTime) {
if (!dateTime) return "";
try {
const date = new Date(dateTime);
if (isNaN(date.getTime())) return dateTime;
-
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, "0");
const day = String(date.getDate()).padStart(2, "0");
const hours = String(date.getHours()).padStart(2, "0");
const minutes = String(date.getMinutes()).padStart(2, "0");
-
return `${year}-${month}-${day} ${hours}:${minutes}`;
} catch (error) {
return dateTime;
}
},
- // 鑾峰彇褰撳墠鏃堕棿
getCurrentTime() {
const now = new Date();
return `${now.getFullYear()}-${(now.getMonth() + 1)
@@ -896,6 +967,7 @@
.toString()
.padStart(2, "0")}`;
},
+
accomplish() {
this.$confirm("鏄惁瀹屾垚璇ユ渚嬫崘鐚‘璁ゆ楠わ紵", "鎻愰啋", {
confirmButtonText: "纭畾",
@@ -906,28 +978,27 @@
this.form.state = 3;
this.handleSave();
})
-
.catch(() => {});
},
- // 淇濆瓨纭淇℃伅
async handleSave() {
try {
await this.$refs.form.validate();
this.saveLoading = true;
- this.updateOtherFamilyField();
+ this.updateFamilyMemberField();
this.updateAssessannexField();
+
const saveData = {
...this.form,
infoid: this.infoid,
organdecision: this.organdecision.join(","),
organdecisionOther: this.organdecisionOther
- // assessannex瀛楁宸插湪updateAssessannexField涓洿鏂�
};
if (saveData.state == 1 || !saveData.state) {
saveData.state = 2;
}
+
let response = null;
if (saveData.id) {
response = await relativesEdit(saveData);
@@ -961,6 +1032,11 @@
.detail-card {
margin-bottom: 20px;
+}
+
+.main-family {
+ font-weight: bold;
+ color: #e6a23c;
}
.attachment-card {
@@ -998,7 +1074,7 @@
.empty-attachment {
text-align: center;
- padding: 40px 0;
+ padding: 30px 0;
color: #909399;
}
--
Gitblit v1.9.3