From c441e5f3cb734b5db5e893536f267b13814796f5 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 11 三月 2026 10:12:06 +0800
Subject: [PATCH] 青岛推送
---
src/views/business/ethicalReview/index.vue | 305 ++++++++++++++++++++++++++++----------------------
1 files changed, 172 insertions(+), 133 deletions(-)
diff --git a/src/views/business/ethicalReview/index.vue b/src/views/business/ethicalReview/index.vue
index 6c6eee7..e0cb1be 100644
--- a/src/views/business/ethicalReview/index.vue
+++ b/src/views/business/ethicalReview/index.vue
@@ -8,37 +8,47 @@
:inline="true"
label-width="100px"
>
- <el-form-item label="浣忛櫌鍙�" prop="hospitalNo">
+ <el-form-item label="浣忛櫌鍙�" prop="inpatientno">
<el-input
- v-model="queryParams.hospitalNo"
+ v-model="queryParams.inpatientno"
placeholder="璇疯緭鍏ヤ綇闄㈠彿"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
- <el-form-item label="鎹愮尞鑰呭鍚�" prop="donorName">
+ <el-form-item label="鎹愮尞鑰呭鍚�" prop="name">
<el-input
- v-model="queryParams.donorName"
+ v-model="queryParams.name"
placeholder="璇疯緭鍏ユ崘鐚�呭鍚�"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
- <el-form-item label="浼︾悊缁撹" prop="ethicsConclusion">
+ <el-form-item label="妗堜緥缂栧彿" prop="caseNo">
+ <el-input
+ v-model="queryParams.caseNo"
+ placeholder="璇疯緭鍏ユ渚嬬紪鍙�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="浼︾悊鐘舵��" prop="status">
<el-select
- v-model="queryParams.ethicsConclusion"
- placeholder="璇烽�夋嫨浼︾悊缁撹"
+ v-model="queryParams.status"
+ placeholder="璇烽�夋嫨浼︾悊鐘舵��"
clearable
style="width: 200px"
>
- <el-option label="瀹℃煡涓�" value="reviewing" />
- <el-option label="鍚屾剰" value="approved" />
- <el-option label="淇敼鍚庡悓鎰�" value="approved_with_modifications" />
- <el-option label="淇敼鍚庨噸瀹�" value="re-review" />
- <el-option label="涓嶅悓鎰�" value="disapproved" />
- <el-option label="缁堟瀹℃煡" value="terminated" />
+ <el-option label="鍏ㄩ儴" value="" />
+ <el-option
+ v-for="dict in dict.type.sys_ethical"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
</el-select>
</el-form-item>
<el-form-item label="瀹℃煡鏃堕棿鑼冨洿" prop="reviewTimeRange">
@@ -76,13 +86,6 @@
>淇敼</el-button
>
<el-button
- type="danger"
- icon="el-icon-delete"
- :disabled="multiple"
- @click="handleDelete"
- >鍒犻櫎</el-button
- >
- <el-button
type="warning"
icon="el-icon-download"
@click="handleExport"
@@ -91,7 +94,7 @@
<el-button
type="info"
icon="el-icon-check"
- :disabled="multiple"
+ :disabled="single"
@click="handleEndReview"
>缁撴潫瀹℃煡</el-button
>
@@ -113,90 +116,115 @@
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
- label="浣忛櫌鍙�"
+ label="妗堜緥缂栧彿"
align="center"
- prop="hospitalNo"
+ prop="caseNo"
width="120"
/>
<el-table-column
- label="鎹愮尞鑰呭鍚�"
+ label="鎹愮尞鑰呯紪鍙�"
align="center"
- prop="donorName"
+ prop="donorno"
width="120"
/>
- <el-table-column label="鎬у埆" align="center" prop="gender" width="80">
+ <el-table-column
+ label="濮撳悕"
+ align="center"
+ prop="name"
+ width="100"
+ />
+ <el-table-column
+ label="浣忛櫌鍙�"
+ align="center"
+ prop="inpatientno"
+ width="120"
+ />
+ <el-table-column label="鎬у埆" align="center" prop="sex" width="80">
<template slot-scope="scope">
<dict-tag
:options="dict.type.sys_user_sex"
- :value="parseInt(scope.row.gender)"
+ :value="scope.row.sex"
/>
</template>
</el-table-column>
<el-table-column label="骞撮緞" align="center" prop="age" width="80" />
<el-table-column
+ label="琛�鍨�"
+ align="center"
+ prop="bloodtype"
+ width="80"
+ />
+ <el-table-column
+ label="璇佷欢鍙风爜"
+ align="center"
+ prop="idcardno"
+ width="180"
+ />
+ <el-table-column
label="鐤剧梾璇婃柇"
align="center"
- prop="diagnosis"
+ prop="diagnosisname"
min-width="180"
show-overflow-tooltip
/>
<el-table-column
- label="浼︾悊缁撹"
+ label="鍖荤枟鏈烘瀯"
align="center"
- prop="ethicsConclusion"
- width="120"
- >
- <template slot-scope="scope">
- <el-tag :type="conclusionFilter(scope.row.ethicsConclusion)">
- {{ conclusionTextFilter(scope.row.ethicsConclusion) }}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column
- label="浼︾悊鎰忚"
- align="center"
- prop="ethicsOpinion"
- min-width="200"
+ prop="treatmenthospitalname"
+ min-width="150"
show-overflow-tooltip
/>
<el-table-column
- label="瀹℃煡鏃堕棿"
+ label="浼︾悊鐘舵��"
align="center"
- prop="reviewTime"
- width="160"
+ prop="status"
+ width="100"
>
<template slot-scope="scope">
- <span>{{
- scope.row.reviewTime
- ? parseTime(scope.row.reviewTime, "{y}-{m}-{d} {h}:{i}")
- : "-"
- }}</span>
+ <dict-tag
+ :options="dict.type.sys_ethical"
+ :value="scope.row.status"
+ />
</template>
</el-table-column>
<el-table-column
- label="鐧昏鏃堕棿"
+ label="涓撳缁撹"
align="center"
- prop="registrationTime"
- width="160"
- >
- <template slot-scope="scope">
- <span>{{
- scope.row.registrationTime
- ? parseTime(scope.row.registrationTime, "{y}-{m}-{d} {h}:{i}")
- : "-"
- }}</span>
- </template>
- </el-table-column>
+ prop="expertConclusion"
+ width="120"
+ />
<el-table-column
- label="鐧昏浜�"
+ label="涓撳鎰忚"
align="center"
- prop="registrant"
+ prop="expertOpinion"
+ min-width="150"
+ show-overflow-tooltip
+ />
+ <el-table-column
+ label="涓撳濮撳悕"
+ align="center"
+ prop="expertName"
width="100"
/>
<el-table-column
+ label="缁撹鏃堕棿"
+ align="center"
+ prop="expertTime"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{
+ scope.row.expertTime
+ ? parseTime(scope.row.expertTime, "{y}-{m}-{d} {h}:{i}")
+ : "-"
+ }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
label="鎿嶄綔"
align="center"
- width="260"
+ width="180"
+ fixed="right"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
@@ -219,16 +247,8 @@
type="text"
icon="el-icon-check"
@click="handleEndReview(scope.row)"
- :disabled="scope.row.ethicsConclusion === 'terminated'"
+ :disabled="scope.row.status === '2'"
>缁撴潫</el-button
- >
- <el-button
- size="mini"
- type="text"
- icon="el-icon-delete"
- style="color: #F56C6C"
- @click="handleDelete(scope.row)"
- >鍒犻櫎</el-button
>
</template>
</el-table-column>
@@ -247,19 +267,21 @@
</template>
<script>
-import { listEthicsReview, delEthicsReview, exportEthicsReview, endEthicsReview } from "./ethicsReview";
+import { reviewinitiateBaseInfoList, ethicalreviewedit, } from "@/api/businessApi";
import Pagination from "@/components/Pagination";
export default {
name: "EthicsReviewList",
components: { Pagination },
- dicts: ["sys_user_sex"],
+ dicts: ["sys_user_sex", "sys_ethical"],
data() {
return {
// 閬僵灞�
loading: true,
// 閫変腑鏁扮粍
ids: [],
+ // 閫変腑鐨勮鏁版嵁
+ selectedRows: [],
// 闈炲崟涓鐢�
single: true,
// 闈炲涓鐢�
@@ -272,9 +294,10 @@
queryParams: {
pageNum: 1,
pageSize: 10,
- hospitalNo: undefined,
- donorName: undefined,
- ethicsConclusion: undefined,
+ inpatientno: undefined,
+ name: undefined,
+ caseNo: undefined,
+ status: undefined,
reviewTimeRange: []
}
};
@@ -283,39 +306,31 @@
this.getList();
},
methods: {
- // 浼︾悊缁撹杩囨护鍣�
- conclusionFilter(conclusion) {
- const conclusionMap = {
- "reviewing": "warning", // 瀹℃煡涓�
- "approved": "success", // 鍚屾剰
- "approved_with_modifications": "primary", // 淇敼鍚庡悓鎰�
- "re-review": "info", // 淇敼鍚庨噸瀹�
- "disapproved": "danger", // 涓嶅悓鎰�
- "terminated": "info" // 缁堟瀹℃煡
- };
- return conclusionMap[conclusion] || "info";
- },
- conclusionTextFilter(conclusion) {
- const conclusionMap = {
- "reviewing": "瀹℃煡涓�",
- "approved": "鍚屾剰",
- "approved_with_modifications": "淇敼鍚庡悓鎰�",
- "re-review": "淇敼鍚庨噸瀹�",
- "disapproved": "涓嶅悓鎰�",
- "terminated": "缁堟瀹℃煡"
- };
- return conclusionMap[conclusion] || "鏈煡";
- },
// 鏌ヨ浼︾悊瀹℃煡鍒楄〃
getList() {
this.loading = true;
- listEthicsReview(this.queryParams)
+
+ // 澶勭悊鏌ヨ鍙傛暟
+ const params = {
+ ...this.queryParams
+ };
+
+ // 绉婚櫎鍒嗛〉鍙傛暟浠ュ鐨勯澶栧弬鏁�
+ delete params.reviewTimeRange;
+
+ // 濡傛灉鏈夋椂闂磋寖鍥村弬鏁�
+ if (this.queryParams.reviewTimeRange && this.queryParams.reviewTimeRange.length === 2) {
+ params.expertTimeStart = this.queryParams.reviewTimeRange[0] + ' 00:00:00';
+ params.expertTimeEnd = this.queryParams.reviewTimeRange[1] + ' 23:59:59';
+ }
+
+ reviewinitiateBaseInfoList(params)
.then(response => {
if (response.code === 200) {
- this.ethicsReviewList = response.data.rows;
- this.total = response.data.total;
+ this.ethicsReviewList = response.data || [];
+ this.total = response.total || 0;
} else {
- this.$message.error("鑾峰彇鏁版嵁澶辫触");
+ this.$message.error(response.msg || "鑾峰彇鏁版嵁澶辫触");
}
this.loading = false;
})
@@ -337,7 +352,8 @@
},
// 澶氶�夋閫変腑鏁版嵁
handleSelectionChange(selection) {
- this.ids = selection.map(item => item.id);
+ this.ids = selection.map(item => item.infoid);
+ this.selectedRows = selection;
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
@@ -345,7 +361,7 @@
handleView(row) {
this.$router.push({
path: "/case/ethicalReviewInfo",
- query: { id: row.id }
+ query: { id: row.infoid }
});
},
// 鏂板鎸夐挳鎿嶄綔
@@ -354,53 +370,62 @@
},
// 淇敼鎸夐挳鎿嶄綔
handleUpdate(row) {
- const id = row.id || this.ids[0];
+ const id = row.infoid || this.ids[0];
this.$router.push({
path: "/case/ethicalReviewInfo",
query: { id: id }
});
},
- // 鍒犻櫎鎸夐挳鎿嶄綔
- handleDelete(row) {
- const ids = row.id ? [row.id] : this.ids;
- this.$confirm("鏄惁纭鍒犻櫎閫変腑鐨勬暟鎹」锛�", "璀﹀憡", {
- confirmButtonText: "纭畾",
- cancelButtonText: "鍙栨秷",
- type: "warning"
- })
- .then(() => {
- return delEthicsReview(ids);
- })
- .then(response => {
- if (response.code === 200) {
- this.$message.success("鍒犻櫎鎴愬姛");
- this.getList();
- }
- })
- .catch(() => {});
- },
// 缁撴潫瀹℃煡鎿嶄綔
handleEndReview(row) {
- const ids = row.id ? [row.id] : this.ids;
+ const selectedRow = row || (this.selectedRows.length === 1 ? this.selectedRows[0] : null);
+ if (!selectedRow) {
+ this.$message.warning("璇烽�夋嫨涓�鏉¤褰�");
+ return;
+ }
+
this.$confirm("鏄惁纭缁撴潫閫変腑鐨勫鏌ラ」鐩紵", "鎻愮ず", {
confirmButtonText: "纭畾",
cancelButtonText: "鍙栨秷",
type: "warning"
})
.then(() => {
- return endEthicsReview(ids);
+ // 璋冪敤淇敼鎺ュ彛锛屽皢鐘舵�佹敼涓虹粨鏉燂紙status: '2'锛�
+ const updateData = {
+ infoid: selectedRow.infoid,
+ status: '2',
+ // 鍙互淇濈暀鍘熸湁鏁版嵁
+ expertName: selectedRow.expertName,
+ expertConclusion: selectedRow.expertConclusion,
+ expertOpinion: selectedRow.expertOpinion,
+ expertTime: selectedRow.expertTime
+ };
+
+ return ethicalreviewedit(updateData);
})
.then(response => {
if (response.code === 200) {
this.$message.success("瀹℃煡宸茬粨鏉�");
this.getList();
+ } else {
+ this.$message.error(response.msg || "鎿嶄綔澶辫触");
}
})
.catch(() => {});
},
// 瀵煎嚭鎸夐挳鎿嶄綔
handleExport() {
- const queryParams = this.queryParams;
+ const queryParams = { ...this.queryParams };
+ delete queryParams.pageNum;
+ delete queryParams.pageSize;
+
+ // 澶勭悊鏃堕棿鑼冨洿鍙傛暟
+ if (queryParams.reviewTimeRange && queryParams.reviewTimeRange.length === 2) {
+ queryParams.expertTimeStart = queryParams.reviewTimeRange[0] + ' 00:00:00';
+ queryParams.expertTimeEnd = queryParams.reviewTimeRange[1] + ' 23:59:59';
+ }
+ delete queryParams.reviewTimeRange;
+
this.$confirm("鏄惁纭瀵煎嚭鎵�鏈変鸡鐞嗗鏌ユ暟鎹紵", "璀﹀憡", {
confirmButtonText: "纭畾",
cancelButtonText: "鍙栨秷",
@@ -408,11 +433,25 @@
})
.then(() => {
this.loading = true;
- return exportEthicsReview(queryParams);
+ // return ethicalreviewexport(queryParams);
})
.then(response => {
if (response.code === 200) {
this.$message.success("瀵煎嚭鎴愬姛");
+ // 澶勭悊瀵煎嚭鏂囦欢涓嬭浇
+ if (response.data) {
+ const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' });
+ const downloadElement = document.createElement('a');
+ const href = window.URL.createObjectURL(blob);
+ downloadElement.href = href;
+ downloadElement.download = '浼︾悊瀹℃煡鍒楄〃.xlsx';
+ document.body.appendChild(downloadElement);
+ downloadElement.click();
+ document.body.removeChild(downloadElement);
+ window.URL.revokeObjectURL(href);
+ }
+ } else {
+ this.$message.error(response.msg || "瀵煎嚭澶辫触");
}
this.loading = false;
})
--
Gitblit v1.9.3