| | |
| | | </el-col> --> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | :disabled="multiple" |
| | | @click="handleBatchAddTask" |
| | | > |
| | | 添加延续护理任务 |
| | | </el-button> |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-delete" |
| | |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- 批量添加任务弹窗 --> |
| | | <el-dialog |
| | | title="批量添加延续护理" |
| | | :visible.sync="batchTaskVisible" |
| | | width="90%" |
| | | append-to-body |
| | | > |
| | | <el-row :gutter="20"> |
| | | <!-- 左侧:选中患者列表 --> |
| | | <el-col :span="12"> |
| | | <div class="batch-patient-section"> |
| | | <h4>选中患者({{ selectedPatients.length }}人)</h4> |
| | | <el-table |
| | | :data="selectedPatients" |
| | | border |
| | | style="width: 100%" |
| | | size="small" |
| | | > |
| | | <el-table-column prop="patname" label="姓名" width="100" /> |
| | | <el-table-column prop="sex" label="性别" width="80"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.sex === 1 ? "男" : "女" }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="出院时间" |
| | | align="center" |
| | | key="endtime" |
| | | prop="endtime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.endtime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="inhospno" label="住院号" /> |
| | | <el-table-column prop="deptname" label="科室" /> |
| | | </el-table> |
| | | </div> |
| | | </el-col> |
| | | |
| | | <!-- 右侧:任务列表 --> |
| | | <el-col :span="12"> |
| | | <div class="batch-task-section"> |
| | | <h4>任务列表(请选择1个任务)</h4> |
| | | <el-table |
| | | :data="taskList" |
| | | border |
| | | style="width: 100%" |
| | | size="small" |
| | | @current-change="handleTaskSelectionChange" |
| | | highlight-current-row |
| | | > |
| | | <el-table-column |
| | | label="任务名称" |
| | | fixed |
| | | align="center" |
| | | key="taskName" |
| | | prop="taskName" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="服务项目" |
| | | align="center" |
| | | key="templatename" |
| | | prop="templatename" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="创建人" |
| | | align="center" |
| | | key="createBy" |
| | | prop="createBy" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="创建时间" |
| | | sortable |
| | | align="center" |
| | | prop="createTime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.createTime) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <template #empty> |
| | | <div class="empty-message"> |
| | | <i class="el-icon-warning"></i> |
| | | <span>患者科室无匹配服务</span> |
| | | </div> |
| | | </template> |
| | | </el-table> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- 底部按钮 --> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button @click="batchTaskVisible = false">取 消</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :loading="batchLoading" |
| | | @click="submitBatchTask" |
| | | >创建任务</el-button |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | <!-- 用户导入对话框 --> |
| | | <el-dialog |
| | | :title="upload.title" |
| | |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import { listDept } from "@/api/system/dept"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | import { query360PatInfo } from "@/api/AiCentre/index"; |
| | | import { query360PatInfo, getTasklist, addSubtask } from "@/api/AiCentre/index"; |
| | | |
| | | import store from "@/store"; |
| | | |
| | |
| | | // 默认密码 |
| | | initPassword: undefined, |
| | | amendtag: false, //是否修改 |
| | | // 批量任务相关数据 |
| | | batchTaskVisible: false, // 弹窗可见性 |
| | | selectedPatients: [], // 选中的患者列表 |
| | | taskList: [], // 任务列表 |
| | | selectedTask: null, // 选中的任务 |
| | | batchLoading: false, // 批量提交加载状态 |
| | | // 日期范围 |
| | | dateRange: [], |
| | | source: [ |
| | |
| | | this.queryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.queryParams.leavehospitaldistrictcodes = store.getters.belongWards.map( |
| | | (obj) => obj.districtCode |
| | | ); |
| | | this.getList(); |
| | | // this.listDept(); |
| | | this.gettabList(); |
| | |
| | | this.$modal.msgWarning("360查询无结果"); |
| | | } |
| | | }); |
| | | }, |
| | | /** 批量添加任务按钮点击 */ |
| | | handleBatchAddTask() { |
| | | // 校验是否选中患者 |
| | | if (this.ids.length === 0) { |
| | | this.$modal.msgWarning("请至少选中1名患者"); |
| | | return; |
| | | } |
| | | |
| | | // 获取选中患者的科室信息 |
| | | const patientDepts = new Set(); |
| | | let deptcode = ""; |
| | | this.ids.forEach((patId) => { |
| | | const patient = this.userList.find((item) => item.patid === patId); |
| | | if (patient) { |
| | | patientDepts.add(patient.deptname); |
| | | deptcode = patient.deptcode; |
| | | } |
| | | }); |
| | | |
| | | // 获取选中患者列表 |
| | | this.selectedPatients = this.userList.filter((item) => |
| | | this.ids.includes(item.patid) |
| | | ); |
| | | |
| | | // 显示弹窗 |
| | | this.batchTaskVisible = true; |
| | | |
| | | // 获取任务列表 |
| | | this.loadTaskList(deptcode); |
| | | }, |
| | | |
| | | /** 加载任务列表 */ |
| | | loadTaskList(deptcode) { |
| | | this.batchLoading = true; |
| | | let topqueryParams = { |
| | | pageNum: 1, |
| | | pageSize: 100, // 设置较大的分页获取更多任务 |
| | | type: 2, // 根据实际情况调整 |
| | | }; |
| | | |
| | | getTasklist(topqueryParams) |
| | | .then((response) => { |
| | | this.taskList = response.rows; |
| | | this.batchLoading = false; |
| | | |
| | | if (this.taskList.length === 0) { |
| | | this.$modal.msgWarning("当前科室无可用任务"); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | this.$modal.msgError("获取任务列表失败:" + error.message); |
| | | this.batchLoading = false; |
| | | }); |
| | | }, |
| | | |
| | | /** 处理任务选择变化 */ |
| | | handleTaskSelectionChange(currentRow) { |
| | | this.selectedTask = currentRow; |
| | | }, |
| | | |
| | | /** 批量提交任务 */ |
| | | async submitBatchTask() { |
| | | // 校验是否选中任务 |
| | | if (!this.selectedTask) { |
| | | this.$modal.msgWarning("请选择1个任务"); |
| | | return; |
| | | } |
| | | |
| | | this.batchLoading = true; |
| | | const successPatients = []; |
| | | const failedPatients = []; |
| | | const errorMessages = []; |
| | | |
| | | try { |
| | | // 遍历选中的患者,逐个调用接口 |
| | | for (const patient of this.selectedPatients) { |
| | | const params = { |
| | | taskid: this.selectedTask.taskid, |
| | | type: this.selectedTask.type, |
| | | taskName: this.selectedTask.taskName, |
| | | serviceType: this.selectedTask.serviceType, |
| | | preachform: this.selectedTask.preachform, |
| | | templateid: this.selectedTask.templateid, |
| | | libtemplateid: this.selectedTask.libtemplateid, |
| | | sendstate: 2, |
| | | ...patient, |
| | | sendname: patient.patname, |
| | | endtime: patient.endtime ? patient.endtime + " 00:00:00" : "", |
| | | leavediagname: patient.leavediagname || patient.diagname || "", |
| | | age: patient.age || "", |
| | | }; |
| | | |
| | | try { |
| | | const response = await addSubtask(params); |
| | | if (response.code === 200) { |
| | | successPatients.push(patient.patname); |
| | | } else { |
| | | failedPatients.push(patient.patname); |
| | | errorMessages.push( |
| | | `${patient.patname}: ${response.msg || "添加失败"}` |
| | | ); |
| | | } |
| | | } catch (error) { |
| | | failedPatients.push(patient.patname); |
| | | errorMessages.push( |
| | | `${patient.patname}: ${error.message || "网络错误"}` |
| | | ); |
| | | } |
| | | } |
| | | |
| | | // 显示处理结果 |
| | | if (failedPatients.length === 0) { |
| | | this.$modal.msgSuccess( |
| | | `成功为 ${successPatients.length} 名患者添加任务` |
| | | ); |
| | | } else { |
| | | this.$modal.msgWarning( |
| | | `成功添加 ${successPatients.length} 人,失败 ${failedPatients.length} 人。` + |
| | | (errorMessages.length > 0 |
| | | ? `失败原因:${errorMessages.join("; ")}` |
| | | : "") |
| | | ); |
| | | } |
| | | |
| | | this.batchTaskVisible = false; |
| | | this.getList(); // 刷新患者列表 |
| | | } catch (error) { |
| | | this.$modal.msgError("批量添加任务过程中出错:" + error.message); |
| | | } finally { |
| | | this.batchLoading = false; |
| | | } |
| | | }, |
| | | |
| | | /** 格式化时间 */ |
| | | formatTime(time) { |
| | | if (!time) return ""; |
| | | return time; |
| | | }, |
| | | /** 查询标签列表 */ |
| | | gettabList() { |
| | |
| | | leavehospitaldistrictcodes: [], |
| | | }; |
| | | this.queryParams.leaveldeptcodes = store.getters.belongDepts.map( |
| | | (obj) => obj.deptCode |
| | | ); |
| | | (obj) => obj.deptCode |
| | | ); |
| | | this.handleQuery(); |
| | | }, |
| | | // 多选框选中数据 |
| | |
| | | } |
| | | } |
| | | .button-textsc { |
| | | color: #3664D9; |
| | | color: #3664d9; |
| | | } |
| | | // 批量任务弹窗样式 |
| | | .batch-patient-section, |
| | | .batch-task-section { |
| | | h4 { |
| | | margin: 0 0 10px 0; |
| | | color: #606266; |
| | | font-size: 16px; |
| | | } |
| | | } |
| | | |
| | | .empty-message { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | padding: 20px; |
| | | color: #909399; |
| | | |
| | | i { |
| | | font-size: 24px; |
| | | margin-bottom: 8px; |
| | | } |
| | | } |
| | | |
| | | .dialog-footer { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | padding-top: 20px; |
| | | border-top: 1px solid #ebeef5; |
| | | } |
| | | |
| | | // 响应式调整 |
| | | @media screen and (max-width: 1200px) { |
| | | .batch-patient-section, |
| | | .batch-task-section { |
| | | margin-bottom: 20px; |
| | | } |
| | | } |
| | | </style> |