From 6623e51d0b1edb191ca50201c0130cb5ed1beda8 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期五, 08 五月 2026 14:03:02 +0800
Subject: [PATCH] 青岛推送
---
src/views/business/allocation/allocationInfo.vue | 238 ++++++++++++++++++++++------------------------------------
1 files changed, 91 insertions(+), 147 deletions(-)
diff --git a/src/views/business/allocation/allocationInfo.vue b/src/views/business/allocation/allocationInfo.vue
index fa02806..cfa9d2d 100644
--- a/src/views/business/allocation/allocationInfo.vue
+++ b/src/views/business/allocation/allocationInfo.vue
@@ -1,5 +1,6 @@
<template>
<div class="organ-allocation-detail">
+ <case-basic-info :case-id="caseId" :show-attachment="true" />
<!-- 鍩烘湰淇℃伅閮ㄥ垎 -->
<el-card class="detail-card">
<div slot="header" class="clearfix">
@@ -11,7 +12,7 @@
<el-button
type="success"
@click="handleConfirmAllocation"
- :disabled="form.allocationStatus === '1'"
+ :disabled="form.allocationStatus == '1'"
:loading="confirmLoading"
>
纭鍒嗛厤
@@ -21,85 +22,19 @@
<el-form :model="form" ref="form" :rules="rules" label-width="120px">
<el-row :gutter="20">
- <el-col :span="8">
- <el-form-item label="浣忛櫌鍙�" prop="donorno">
- <el-input v-model="form.donorno" readonly />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="妗堜緥缂栧彿" prop="caseNo">
- <el-input v-model="form.caseNo" />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="鎹愮尞鑰呭鍚�" prop="name">
- <el-input v-model="form.name" />
- </el-form-item>
- </el-col>
- </el-row>
-
- <el-row :gutter="20">
- <el-col :span="8">
- <el-form-item label="鎬у埆" prop="sex">
- <el-select v-model="form.sex" style="width: 100%">
- <el-option label="鐢�" value="0" />
- <el-option label="濂�" value="1" />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="骞撮緞" prop="age">
- <el-input v-model="form.age" />
- </el-form-item>
- </el-col>
- <!-- <el-col :span="8">
- <el-form-item label="鎹愮尞绫诲埆" prop="donationcategory">
- <el-select v-model="form.donationcategory" style="width: 100%">
- <el-option
- v-for="dict in dict.type.sys_DonationCategory || []"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- </el-form-item>
- </el-col> -->
- </el-row>
-
- <el-row :gutter="20">
- <el-col :span="8">
- <el-form-item label="琛�鍨�" prop="bloodtype">
- <el-select v-model="form.bloodtype" style="width: 100%">
- <el-option
- v-for="dict in dict.type.sys_BloodType || []"
- :key="dict.value"
- :label="dict.label"
- :value="dict.value"
- />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="璇佷欢鍙风爜" prop="idcardno">
- <el-input v-model="form.idcardno" />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="璁板綍鐘舵��" prop="recordstate">
- <el-input v-model="form.recordstate" />
- </el-form-item>
- </el-col>
- </el-row>
-
- <el-row :gutter="20">
<el-col :span="12">
- <el-form-item label="鐤剧梾璇婃柇" prop="diagnosisname">
- <el-input
- type="textarea"
- :rows="2"
- v-model="form.diagnosisname"
- placeholder="璇疯緭鍏ョ柧鐥呰瘖鏂俊鎭�"
- />
+ <el-form-item label="鍒嗛厤鐘舵��" prop="allocationStatus">
+ <el-select
+ v-model="form.allocationStatus"
+ placeholder="璇烽�夋嫨鍒嗛厤鐘舵��"
+ >
+ <el-option
+ v-for="dict in dict.type.organ_allocation_status || []"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
</el-form-item>
</el-col>
<el-col :span="12">
@@ -109,26 +44,7 @@
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%"
- :disabled="form.allocationStatus === '1'"
- />
- </el-form-item>
- </el-col>
- </el-row>
-
- <el-row :gutter="20">
- <el-col :span="12">
- <el-form-item label="鎵�鍦ㄥ尰鐤楁満鏋�" prop="treatmenthospitalname">
- <el-input
- v-model="form.treatmenthospitalname"
- placeholder="璇疯緭鍏ュ尰鐤楁満鏋勫悕绉�"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍖荤枟鏈烘瀯缂栫爜" prop="treatmenthospitalno">
- <el-input
- v-model="form.treatmenthospitalno"
- placeholder="璇疯緭鍏ュ尰鐤楁満鏋勭紪鐮�"
+ :disabled="form.allocationStatus == '1'"
/>
</el-form-item>
</el-col>
@@ -137,7 +53,7 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="鐧昏浜�" prop="registrationName">
- <el-input v-model="form.registrationName" readonly />
+ <el-input v-model="form.registrationName" />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -147,7 +63,6 @@
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 100%"
- readonly
/>
</el-form-item>
</el-col>
@@ -162,17 +77,17 @@
<div style="float: right;">
<el-tag
:type="
- form.allocationStatus === '1'
+ form.allocationStatus == '1'
? 'success'
- : form.allocationStatus === '2'
+ : form.allocationStatus == '2'
? 'danger'
: 'warning'
"
>
{{
- form.allocationStatus === "1"
+ form.allocationStatus == "1"
? "宸插垎閰�"
- : form.allocationStatus === "2"
+ : form.allocationStatus == "2"
? "浣滃簾"
: "鏈垎閰�"
}}
@@ -197,7 +112,7 @@
v-for="dict in dict.type.sys_Organ || []"
:key="dict.value"
:label="dict.value"
- :disabled="form.allocationStatus === '1'"
+ :disabled="form.allocationStatus == '1'"
>
{{ dict.label }}
</el-checkbox>
@@ -247,7 +162,7 @@
<el-input
v-model="scope.row.caseno"
placeholder="鍒嗛厤绯荤粺缂栧彿"
- :disabled="form.allocationStatus === '1'"
+ :disabled="form.allocationStatus == '1'"
/>
</template>
</el-table-column>
@@ -267,7 +182,7 @@
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="閫夋嫨鍒嗛厤鎺ユ敹鏃堕棿"
- :disabled="form.allocationStatus === '1'"
+ :disabled="form.allocationStatus == '1'"
/>
</template>
</el-table-column>
@@ -282,7 +197,7 @@
<el-input
v-model="scope.row.name"
placeholder="鍙椾綋濮撴皬"
- :disabled="form.allocationStatus === '1'"
+ :disabled="form.allocationStatus == '1'"
/>
</template>
</el-table-column>
@@ -318,7 +233,7 @@
clearable
v-model="scope.row.reallocationreason"
placeholder="璇疯緭鍏ヨ鏄�"
- :disabled="form.allocationStatus === '1'"
+ :disabled="form.allocationStatus == '1'"
/>
</template>
</el-table-column>
@@ -382,17 +297,17 @@
<span class="stat-value">
<el-tag
:type="
- form.allocationStatus === '1'
+ form.allocationStatus == '1'
? 'success'
- : form.allocationStatus === '2'
+ : form.allocationStatus == '2'
? 'danger'
: 'warning'
"
>
{{
- form.allocationStatus === "1"
+ form.allocationStatus == "1"
? "宸插垎閰�"
- : form.allocationStatus === "2"
+ : form.allocationStatus == "2"
? "浣滃簾"
: "鏈垎閰�"
}}
@@ -410,14 +325,14 @@
</div>
</el-form>
- <div class="dialog-footer" v-if="form.allocationStatus !== '1'">
+ <!-- <div class="dialog-footer" v-if="form.allocationStatus !== '1'">
<el-button
type="primary"
@click="handleSaveAllocation"
:loading="saveLoading"
:disabled="
!allocationData.serviceDonateorganList ||
- allocationData.serviceDonateorganList.length === 0
+ allocationData.serviceDonateorganList.length == 0
"
>
淇濆瓨鍒嗛厤璁板綍
@@ -430,7 +345,7 @@
>
纭瀹屾垚鍒嗛厤
</el-button>
- </div>
+ </div> -->
</el-card>
<!-- 闄勪欢绠$悊閮ㄥ垎浼樺寲 -->
@@ -543,8 +458,6 @@
</div>
</el-dialog>
-
-
<!-- 闄勪欢棰勮瀵硅瘽妗� -->
<FilePreviewDialog
:visible="filePreviewVisible"
@@ -559,12 +472,13 @@
import {
allocationList,
allocationadd,
- allocationedit
+ allocationedit,
+ donateorganBaseinfoInfo
} from "@/api/businessApi";
import UploadAttachment from "@/components/UploadAttachment";
import FilePreviewDialog from "@/components/FilePreviewDialog";
import OrgSelecter from "@/views/project/components/orgselect";
-
+import CaseBasicInfo from "@/components/CaseBasicInfo";
import dayjs from "dayjs";
export default {
@@ -572,16 +486,20 @@
components: {
UploadAttachment,
OrgSelecter,
- FilePreviewDialog
+ FilePreviewDialog,
+ CaseBasicInfo
},
dicts: [
"sys_BloodType",
"sys_DonationCategory",
"sys_RecordState",
- "sys_Organ"
+ "sys_Organ",
+ "organ_allocation_status"
],
data() {
return {
+ caseId: null,
+
// 琛ㄥ崟鏁版嵁
form: {
id: undefined,
@@ -721,12 +639,13 @@
}
},
created() {
+ this.caseId = this.$route.query.infoid;
this.initData();
},
methods: {
// 鏍规嵁瀛楀吀value鑾峰彇label
getOrganLabel(organValue) {
- const dictItem = this.organDict.find(item => item.value === organValue);
+ const dictItem = this.organDict.find(item => item.value == organValue);
return dictItem ? dictItem.label : organValue;
},
@@ -749,7 +668,7 @@
.substring(0, 19);
if (infoid) {
- this.getDetail(infoid);
+ this.getDetail(infoid, id);
} else {
this.generateDonorNo();
}
@@ -762,20 +681,35 @@
this.form.donorno = "D" + timestamp.slice(-8);
this.form.caseNo = "CASE" + timestamp.slice(-6);
},
+
+ // 瑙f瀽 filePatch 瀛楁
+ parseFilePatch(filePatch) {
+ if (!filePatch) {
+ this.form.attachments = [];
+ return;
+ }
+
+ try {
+ this.form.attachments = JSON.parse(filePatch);
+ } catch (error) {
+ console.error("瑙f瀽 filePatch 瀛楁澶辫触:", error);
+ this.form.attachments = [];
+ }
+ },
// 鑾峰彇璇︽儏
- async getDetail(infoid) {
+ async getDetail(infoid, id) {
this.loading = true;
+ donateorganBaseinfoInfo(id);
try {
const response = await allocationList({ infoid });
- if (
- response.code === 200 &&
- response.data &&
- response.data.length > 0
- ) {
+ if (response.code == 200 && response.data && response.data.length > 0) {
const data = response.data[0];
+ data.allocationStatus = JSON.stringify(data.allocationStatus);
// 濉厖琛ㄥ崟鏁版嵁
Object.assign(this.form, data);
+ // 杞崲闄勪欢涓洪泦鍚�
+ this.parseFilePatch(this.form.fileName);
// 鍒濆鍖栭檮浠�
if (this.form.attachments) {
@@ -804,7 +738,7 @@
if (item.organname) {
const dictItem = this.organDict.find(
org =>
- org.label === item.organname ||
+ org.label == item.organname ||
(item.organname && item.organname.includes(org.label))
);
return dictItem ? dictItem.value : null;
@@ -944,7 +878,7 @@
let organName = this.getOrganLabel(organValue);
// 濡傛灉鏄�"鍏朵粬"鍣ㄥ畼涓旀湁杈撳叆鍊�
- if (organValue === "C01" && this.otherOrganInput) {
+ if (organValue == "C01" && this.otherOrganInput) {
organName = `鍏朵粬(${this.otherOrganInput})`;
}
@@ -965,7 +899,7 @@
// 鍖婚櫌閫夋嫨鍙樺寲
handleHospitalChange(row, hospitalNo) {
const hospital = this.hospitalList.find(
- item => item.hospitalNo === hospitalNo
+ item => item.hospitalNo == hospitalNo
);
if (hospital) {
row.transplantHospitalName = hospital.hospitalName;
@@ -1003,6 +937,13 @@
}
return "";
},
+ // 鏋勫缓 filePatch 瀛楁
+ buildFilePatch() {
+ if (!this.attachments || this.attachments.length == 0) {
+ return "";
+ }
+ return JSON.stringify(this.attachments);
+ },
// 淇濆瓨鍩烘湰淇℃伅
async handleSave() {
this.$refs.form.validate(async valid => {
@@ -1015,22 +956,25 @@
try {
const saveData = {
...this.form,
- attachments: this.attachments,
serviceDonateorganList:
this.allocationData.serviceDonateorganList || []
};
- console.log(this.form.recordstate);
+ saveData.fileName = this.buildFilePatch();
+ saveData.serviceDonateorganList.forEach(item => {
+ item.baseid = this.form.id;
+ item.infoid = this.form.infoid;
+ });
this.form.recordstate = 1;
const apiMethod = this.form.id ? allocationedit : allocationadd;
const response = await apiMethod(saveData);
- if (response.code === 200) {
+ if (response.code == 200) {
this.$message.success("淇濆瓨鎴愬姛");
- if (!this.form.id && response.data && response.data.id) {
- this.form.id = response.data.id;
- this.$router.replace({
- query: { ...this.$route.query, id: this.form.id }
- });
+ if (!this.form.id && response.data) {
+ this.form.id = response.data;
+ // this.$router.replace({
+ // query: { ...this.$route.query, id: this.form.id }
+ // });
}
} else {
this.$message.error("淇濆瓨澶辫触锛�" + (response.msg || "鏈煡閿欒"));
@@ -1061,7 +1005,7 @@
const response = await allocationedit(saveData);
- if (response.code === 200) {
+ if (response.code == 200) {
this.$message.success("鍒嗛厤璁板綍淇濆瓨鎴愬姛");
} else {
this.$message.error(
@@ -1105,7 +1049,7 @@
const response = await allocationedit(saveData);
- if (response.code === 200) {
+ if (response.code == 200) {
this.$message.success("鍣ㄥ畼鍒嗛厤宸插畬鎴�");
} else {
this.$message.error(
@@ -1136,7 +1080,7 @@
handleAttachmentRemove(file) {
if (file.url) {
const index = this.attachments.findIndex(
- item => item.path === file.url || item.fileUrl === file.url
+ item => item.path == file.url || item.fileUrl == file.url
);
if (index > -1) {
this.attachments.splice(index, 1);
@@ -1147,7 +1091,7 @@
/** 涓婁紶鎴愬姛澶勭悊 */
handleUploadSuccess({ file, fileList, response }) {
- if (response.code === 200) {
+ if (response.code == 200) {
const attachmentObj = {
fileName: file.name,
path: response.fileUrl || file.url,
@@ -1276,7 +1220,7 @@
/** 鏍煎紡鍖栨枃浠跺ぇ灏� */
formatFileSize(bytes) {
- if (!bytes || bytes === 0) return "0 B";
+ if (!bytes || bytes == 0) return "0 B";
const k = 1024;
const sizes = ["B", "KB", "MB", "GB"];
const i = Math.floor(Math.log(bytes) / Math.log(k));
--
Gitblit v1.9.3