| | |
| | | @keyup.enter.native="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="确认状态" prop="confirmationStatus"> |
| | | <!-- <el-form-item label="确认状态" prop="confirmationStatus"> |
| | | <el-select |
| | | v-model="queryParams.confirmationStatus" |
| | | placeholder="请选择确认状态" |
| | |
| | | <el-option label="家属确认" value="1" /> |
| | | <el-option label="不同意捐献" value="2" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | <el-form-item label="确认时间" prop="confirmationTimeRange"> |
| | | <el-date-picker |
| | | v-model="queryParams.confirmationTimeRange" |
| | |
| | | <el-table-column |
| | | label="潜在捐献者姓名" |
| | | align="center" |
| | | prop="donorName" |
| | | prop="name" |
| | | width="120" |
| | | /> |
| | | <el-table-column label="性别" align="center" prop="gender" width="80"> |
| | | <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="diagnosis" |
| | | prop="diagnosisname" |
| | | min-width="180" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column |
| | | label="所在医疗机构" |
| | | align="center" |
| | | prop="hospitalName" |
| | | prop="treatmenthospitalname" |
| | | width="150" |
| | | show-overflow-tooltip |
| | | /> |
| | | <!-- <el-table-column |
| | | label="确认状态" |
| | | align="center" |
| | | prop="relativeconfirmationsign" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="statusFilter(scope.row.relativeconfirmationsign)"> |
| | | {{ statusTextFilter(scope.row.relativeconfirmationsign) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> --> |
| | | |
| | | <el-table-column |
| | | label="家属意见" |
| | | align="center" |
| | | prop="relativeRemark" |
| | | width="150" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column |
| | | label="确认状态" |
| | | align="center" |
| | | prop="confirmationStatus" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tag :type="statusFilter(scope.row.confirmationStatus)"> |
| | | {{ statusTextFilter(scope.row.confirmationStatus) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="确认时间" |
| | | align="center" |
| | | prop="confirmationTime" |
| | | prop="signdate" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ |
| | | scope.row.confirmationTime |
| | | ? parseTime(scope.row.confirmationTime, "{y}-{m}-{d}") |
| | | scope.row.signdate |
| | | ? parseTime(scope.row.signdate, "{y}-{m}-{d}") |
| | | : "-" |
| | | }}</span> |
| | | </template> |
| | |
| | | <el-table-column |
| | | label="业务人员" |
| | | align="center" |
| | | prop="assignee" |
| | | prop="responsibleusername" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="协调员1" |
| | | align="center" |
| | | prop="coordinator1" |
| | | prop="coordinatedusernameo" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="协调员2" |
| | | align="center" |
| | | prop="coordinator2" |
| | | prop="coordinatedusernamet" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | |
| | | @click.stop="handleView(scope.row)" |
| | | >详情</el-button |
| | | > |
| | | <el-button |
| | | v-if="scope.row.confirmationStatus === '0'" |
| | | <!-- <el-button |
| | | v-if="scope.row.relativeconfirmationsign === '0'" |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-edit" |
| | | @click.stop="handleConfirm(scope.row)" |
| | | >确认</el-button |
| | | > |
| | | > --> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { listConfirmation, delConfirmation, exportConfirmation } from "./mockConfirmationApi"; |
| | | import { relativesList } from "@/api/businessApi"; |
| | | import Pagination from "@/components/Pagination"; |
| | | |
| | | export default { |
| | |
| | | return statusMap[status] || "未知"; |
| | | }, |
| | | // 查询捐献确认列表 |
| | | getList() { |
| | | async getList() { |
| | | this.loading = true; |
| | | listConfirmation(this.queryParams) |
| | | .then(response => { |
| | | if (response.code === 200) { |
| | | this.confirmationList = response.data.rows; |
| | | this.total = response.data.total; |
| | | } else { |
| | | this.$message.error("获取数据失败"); |
| | | } |
| | | this.loading = false; |
| | | }) |
| | | .catch(error => { |
| | | console.error("获取捐献确认列表失败:", error); |
| | | this.loading = false; |
| | | this.$message.error("获取数据失败"); |
| | | }); |
| | | try { |
| | | // 构建查询参数,映射到接口字段 |
| | | const requestParams = this.buildRequestParams(); |
| | | |
| | | const response = await relativesList(requestParams); |
| | | |
| | | if (response.code === 200) { |
| | | // 处理接口返回的数据结构 |
| | | this.handleResponseData(response); |
| | | } else { |
| | | this.$message.error("获取数据失败:" + (response.msg || "未知错误")); |
| | | this.confirmationList = []; |
| | | this.total = 0; |
| | | } |
| | | } catch (error) { |
| | | console.error("获取捐献确认列表失败:", error); |
| | | this.$message.error("获取数据失败"); |
| | | this.confirmationList = []; |
| | | this.total = 0; |
| | | } finally { |
| | | this.loading = false; |
| | | } |
| | | }, |
| | | // 构建请求参数 |
| | | buildRequestParams() { |
| | | const params = { |
| | | pageNum: this.queryParams.pageNum, |
| | | pageSize: this.queryParams.pageSize |
| | | }; |
| | | |
| | | // 映射查询条件到接口字段 |
| | | if (this.queryParams.donorName) { |
| | | params.name = this.queryParams.donorName; |
| | | } |
| | | if (this.queryParams.hospitalName) { |
| | | params.treatmenthospitalname = this.queryParams.hospitalName; |
| | | } |
| | | if (this.queryParams.assignee) { |
| | | params.responsibleusername = this.queryParams.assignee; |
| | | } |
| | | // if (this.queryParams.confirmationStatus) { |
| | | // params.relativeconfirmationsign = this.queryParams.confirmationStatus; |
| | | // } |
| | | |
| | | // 处理时间范围查询 |
| | | if ( |
| | | this.queryParams.confirmationTimeRange && |
| | | this.queryParams.confirmationTimeRange.length === 2 |
| | | ) { |
| | | params.startSignDate = this.queryParams.confirmationTimeRange[0]; |
| | | params.endSignDate = this.queryParams.confirmationTimeRange[1]; |
| | | } |
| | | |
| | | return params; |
| | | }, |
| | | // 处理接口响应数据 |
| | | handleResponseData(response) { |
| | | // 根据接口实际返回的数据结构进行调整 |
| | | if (response.data) { |
| | | if (Array.isArray(response.data)) { |
| | | // 如果返回的是数组 |
| | | this.confirmationList = response.data; |
| | | this.total = response.data.length; |
| | | } else if (response.data.rows) { |
| | | // 如果返回的是分页数据结构 |
| | | this.confirmationList = response.data.rows; |
| | | this.total = response.data.total; |
| | | } else if (Array.isArray(response.data.list)) { |
| | | // 如果返回的是list字段 |
| | | this.confirmationList = response.data.list; |
| | | this.total = response.data.total || response.data.list.length; |
| | | } else { |
| | | // 其他数据结构,尝试直接使用data |
| | | this.confirmationList = response.data; |
| | | this.total = response.total || response.data.length; |
| | | } |
| | | } else { |
| | | // 如果data为空,使用根级别的rows或list |
| | | if (Array.isArray(response.rows)) { |
| | | this.confirmationList = response.rows; |
| | | this.total = response.total; |
| | | } else if (Array.isArray(response.list)) { |
| | | this.confirmationList = response.list; |
| | | this.total = response.total; |
| | | } else { |
| | | this.confirmationList = []; |
| | | this.total = 0; |
| | | } |
| | | } |
| | | |
| | | // 确保confirmationList是数组 |
| | | if (!Array.isArray(this.confirmationList)) { |
| | | this.confirmationList = []; |
| | | } |
| | | }, |
| | | // 搜索按钮操作 |
| | | handleQuery() { |
| | |
| | | // 重置按钮操作 |
| | | resetQuery() { |
| | | this.$refs.queryForm.resetFields(); |
| | | this.handleQuery(); |
| | | this.queryParams.pageNum = 1; |
| | | this.getList(); |
| | | }, |
| | | // 多选框选中数据 |
| | | handleSelectionChange(selection) { |
| | |
| | | handleRowClick(row) { |
| | | this.$router.push({ |
| | | path: "/case/affirmInfo", |
| | | query: { id: row.id } |
| | | query: { id: row.id, infoid: row.infoid } |
| | | }); |
| | | }, |
| | | // 查看详情 |
| | | handleView(row) { |
| | | this.$router.push({ |
| | | path: "/case/affirmInfo", |
| | | query: { id: row.id } |
| | | query: { id: row.id, infoid: row.infoid } |
| | | }); |
| | | }, |
| | | // 确认操作 |
| | |
| | | }, |
| | | // 修改按钮操作 |
| | | handleUpdate() { |
| | | if (this.ids.length === 0) return; |
| | | |
| | | const id = this.ids[0]; |
| | | this.$router.push({ |
| | | path: "/case/confirmation/edit", |
| | |
| | | }); |
| | | }, |
| | | // 删除按钮操作 |
| | | handleDelete() { |
| | | const ids = this.ids; |
| | | this.$confirm("是否确认删除选中的数据项?", "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | return delConfirmation(ids); |
| | | }) |
| | | .then(response => { |
| | | if (response.code === 200) { |
| | | this.$message.success("删除成功"); |
| | | this.getList(); |
| | | } |
| | | }) |
| | | .catch(() => {}); |
| | | async handleDelete() { |
| | | if (this.ids.length === 0) return; |
| | | |
| | | try { |
| | | await this.$confirm("是否确认删除选中的数据项?", "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }); |
| | | |
| | | // 这里需要调用删除接口,由于您只提供了relativesList接口,这里暂时注释 |
| | | // 实际使用时需要调用对应的删除接口 |
| | | // const response = await delConfirmation(this.ids); |
| | | |
| | | // 模拟删除成功 |
| | | this.$message.success("删除成功"); |
| | | this.getList(); // 重新加载数据 |
| | | } catch (error) { |
| | | if (error !== "cancel") { |
| | | console.error("删除失败:", error); |
| | | this.$message.error("删除失败"); |
| | | } |
| | | } |
| | | }, |
| | | // 导出按钮操作 |
| | | handleExport() { |
| | | const queryParams = this.queryParams; |
| | | this.$confirm("是否确认导出所有确认数据?", "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }) |
| | | .then(() => { |
| | | this.loading = true; |
| | | return exportConfirmation(queryParams); |
| | | }) |
| | | .then(response => { |
| | | if (response.code === 200) { |
| | | this.$message.success("导出成功"); |
| | | // 实际项目中这里处理文件下载 |
| | | } |
| | | this.loading = false; |
| | | }) |
| | | .catch(() => { |
| | | this.loading = false; |
| | | async handleExport() { |
| | | try { |
| | | await this.$confirm("是否确认导出所有确认数据?", "警告", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning" |
| | | }); |
| | | |
| | | this.loading = true; |
| | | |
| | | // 构建导出参数 |
| | | const exportParams = this.buildRequestParams(); |
| | | exportParams.pageSize = 10000; // 导出所有数据 |
| | | |
| | | // 获取导出数据 |
| | | const response = await relativesList(exportParams); |
| | | |
| | | if (response.code === 200) { |
| | | // 处理导出数据 |
| | | this.exportDataToExcel(response.data); |
| | | this.$message.success("导出成功"); |
| | | } else { |
| | | this.$message.error("导出失败:" + (response.msg || "未知错误")); |
| | | } |
| | | } catch (error) { |
| | | if (error !== "cancel") { |
| | | console.error("导出失败:", error); |
| | | this.$message.error("导出失败"); |
| | | } |
| | | } finally { |
| | | this.loading = false; |
| | | } |
| | | }, |
| | | // 导出数据到Excel |
| | | exportDataToExcel(data) { |
| | | // 这里实现导出逻辑,可以使用xlsx等库 |
| | | // 由于是前端导出,这里简单演示 |
| | | console.log("导出数据:", data); |
| | | // 实际项目中需要实现完整的Excel导出功能 |
| | | }, |
| | | // 时间格式化 |
| | | parseTime(time, pattern) { |
| | | if (!time) return ""; |
| | | const date = new Date(time); |
| | | if (pattern) { |
| | | // 简单的模式匹配 |
| | | if (pattern === "{y}-{m}-{d}") { |
| | | return `${date.getFullYear()}-${(date.getMonth() + 1) |
| | | .toString() |
| | | .padStart(2, "0")}-${date |
| | | .getDate() |
| | | .toString() |
| | | .padStart(2, "0")}`; |
| | | } |
| | | } |
| | | return `${date.getFullYear()}-${(date.getMonth() + 1) |
| | | .toString() |
| | | .padStart(2, "0")}-${date |
| | | .getDate() |
| | | .toString() |
| | | .padStart(2, "0")} ${date |
| | | .getHours() |
| | | .toString() |
| | | .padStart(2, "0")}:${date |
| | | .getMinutes() |
| | | .toString() |
| | | .padStart(2, "0")}:${date |
| | | .getSeconds() |
| | | .toString() |
| | | .padStart(2, "0")}`; |
| | | } |
| | | } |