|  |  |  | 
|---|
|  |  |  | @keyup.enter.native="handleQuery" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="门诊号" prop="outhospno"> | 
|---|
|  |  |  | <el-form-item label="诊断" width="100" prop="name"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="queryParams.diagname" | 
|---|
|  |  |  | placeholder="请输入诊断" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | style="width: 200px" | 
|---|
|  |  |  | @keyup.enter.native="handleQuery" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="科室" width="100" prop="name"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="queryParams.deptname" | 
|---|
|  |  |  | placeholder="请输入科室名称" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | style="width: 200px" | 
|---|
|  |  |  | @keyup.enter.native="handleQuery" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="医生" width="100" prop="name"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="queryParams.drname" | 
|---|
|  |  |  | placeholder="请输入医生姓名" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | style="width: 200px" | 
|---|
|  |  |  | @keyup.enter.native="handleQuery" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="病案号" prop="outhospno"> | 
|---|
|  |  |  | <el-input | 
|---|
|  |  |  | v-model="queryParams.outhospno" | 
|---|
|  |  |  | placeholder="请输入门诊号" | 
|---|
|  |  |  | placeholder="请输入病案号" | 
|---|
|  |  |  | clearable | 
|---|
|  |  |  | style="width: 250px" | 
|---|
|  |  |  | @keyup.enter.native="handleQuery" | 
|---|
|  |  |  | 
|---|
|  |  |  | @change="handleChange" | 
|---|
|  |  |  | ></el-cascader> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-form-item label="就诊日期"> | 
|---|
|  |  |  | <el-date-picker | 
|---|
|  |  |  | v-model="dateRange" | 
|---|
|  |  |  | style="width: 240px" | 
|---|
|  |  |  | value-format="yyyy-MM-dd" | 
|---|
|  |  |  | type="daterange" | 
|---|
|  |  |  | range-separator="-" | 
|---|
|  |  |  | start-placeholder="开始日期" | 
|---|
|  |  |  | end-placeholder="结束日期" | 
|---|
|  |  |  | ></el-date-picker> | 
|---|
|  |  |  | <!-- <el-date-picker | 
|---|
|  |  |  | v-model="dateRange" | 
|---|
|  |  |  | type="datetimerange" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | start-placeholder="开始日期" | 
|---|
|  |  |  | end-placeholder="结束日期" | 
|---|
|  |  |  | :default-time="['12:00:00']" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-date-picker> --> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  | <el-row> | 
|---|
|  |  |  | <!-- <el-form-item label=" 就诊日期 " prop="admitdate"> | 
|---|
|  |  |  | <el-date-picker | 
|---|
|  |  |  | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-date-picker> | 
|---|
|  |  |  | </el-form-item> --> | 
|---|
|  |  |  | <el-form-item label="就诊日期"> | 
|---|
|  |  |  | <!-- <el-date-picker | 
|---|
|  |  |  | v-model="dateRange" | 
|---|
|  |  |  | style="width: 240px" | 
|---|
|  |  |  | value-format="yyyy-MM-dd" | 
|---|
|  |  |  | type="daterange" | 
|---|
|  |  |  | range-separator="-" | 
|---|
|  |  |  | start-placeholder="开始日期" | 
|---|
|  |  |  | end-placeholder="结束日期" | 
|---|
|  |  |  | ></el-date-picker> --> | 
|---|
|  |  |  | <el-date-picker | 
|---|
|  |  |  | v-model="dateRange" | 
|---|
|  |  |  | type="datetimerange" | 
|---|
|  |  |  | value-format="yyyy-MM-dd HH:mm:ss" | 
|---|
|  |  |  | start-placeholder="开始日期" | 
|---|
|  |  |  | end-placeholder="结束日期" | 
|---|
|  |  |  | :default-time="['12:00:00']" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </el-date-picker> | 
|---|
|  |  |  | </el-form-item> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-form-item> | 
|---|
|  |  |  | <el-button | 
|---|
|  |  |  | type="primary" | 
|---|
|  |  |  | 
|---|
|  |  |  | @click="handleDelete" | 
|---|
|  |  |  | v-hasPermi="['system:user:remove']" | 
|---|
|  |  |  | >删除</el-button | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </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="19"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <span>{{ formatTime(scope.row.admitdate) }}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- <el-table-column | 
|---|
|  |  |  | label="病案号" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | key="patno" | 
|---|
|  |  |  | prop="patno" | 
|---|
|  |  |  | /> --> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="门诊号" | 
|---|
|  |  |  | label="病案号" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | key="outhospno" | 
|---|
|  |  |  | prop="outhospno" | 
|---|
|  |  |  | 
|---|
|  |  |  | size="medium" | 
|---|
|  |  |  | type="text" | 
|---|
|  |  |  | @click=" | 
|---|
|  |  |  | $router.push({ | 
|---|
|  |  |  | path: '/patient/indexls/', | 
|---|
|  |  |  | query: { sfzh: scope.row.idcardno }, | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | gettoken360( | 
|---|
|  |  |  | scope.row.idcardno, | 
|---|
|  |  |  | scope.row.drcode, | 
|---|
|  |  |  | scope.row.drname | 
|---|
|  |  |  | ) | 
|---|
|  |  |  | " | 
|---|
|  |  |  | ><span class="button-textsc">{{ | 
|---|
|  |  |  | scope.row.patname | 
|---|
|  |  |  | 
|---|
|  |  |  | prop="drname" | 
|---|
|  |  |  | width="120" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="是否存在任务" | 
|---|
|  |  |  | align="center" | 
|---|
|  |  |  | key="serverState" | 
|---|
|  |  |  | prop="serverState" | 
|---|
|  |  |  | width="100" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <span | 
|---|
|  |  |  | :style="{ | 
|---|
|  |  |  | color: scope.row.serverState == 1 ? 'green' : 'gray', | 
|---|
|  |  |  | }" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | {{ scope.row.serverState == 1 ? "是" : "无" }} | 
|---|
|  |  |  | </span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column | 
|---|
|  |  |  | label="操作" | 
|---|
|  |  |  | fixed="right" | 
|---|
|  |  |  | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </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="admitdate" | 
|---|
|  |  |  | prop="admitdate" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <template slot-scope="scope"> | 
|---|
|  |  |  | <span>{{ formatTime(scope.row.admitdate) }}</span> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </el-table-column> | 
|---|
|  |  |  | <el-table-column prop="outhospno" 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" | 
|---|
|  |  |  | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </el-upload> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- 导入检查 --> | 
|---|
|  |  |  | <div class="uploading" v-else-if="dractive == 2"> | 
|---|
|  |  |  | <el-table :data="uploadingData" style="width: 100%"> | 
|---|
|  |  |  | 
|---|
|  |  |  | import { getToken } from "@/utils/auth"; | 
|---|
|  |  |  | import Treeselect from "@riophae/vue-treeselect"; | 
|---|
|  |  |  | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; | 
|---|
|  |  |  | import { query360PatInfo, getTasklist, addSubtask } from "@/api/AiCentre/index"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import store from "@/store"; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | 
|---|
|  |  |  | Labelchange: false, //修改新增弹窗 | 
|---|
|  |  |  | propss: { multiple: true }, | 
|---|
|  |  |  | optionstag: [], //标签列表 | 
|---|
|  |  |  | batchTaskVisible: false, // 弹窗可见性 | 
|---|
|  |  |  | selectedPatients: [], // 选中的患者列表 | 
|---|
|  |  |  | taskList: [], // 任务列表 | 
|---|
|  |  |  | selectedTask: null, // 选中的任务列表 | 
|---|
|  |  |  | batchLoading: false, // 批量提交加载状态 | 
|---|
|  |  |  | deptcode: "", | 
|---|
|  |  |  | Patientrange: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | name: "全部", | 
|---|
|  |  |  | 
|---|
|  |  |  | id: 1, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | postData: { | 
|---|
|  |  |  | XiaoXiTou: { | 
|---|
|  |  |  | FaSongFCSJC: "ZJHES", | 
|---|
|  |  |  | FaSongJGID: localStorage.getItem("orgid"), | 
|---|
|  |  |  | FaSongJGMC: localStorage.getItem("orgname"), | 
|---|
|  |  |  | FaSongSJ: "2025-01-09 17:29:36", | 
|---|
|  |  |  | FaSongXTJC: "SUIFANGXT", | 
|---|
|  |  |  | FaSongXTMC: "随访系统", | 
|---|
|  |  |  | XiaoXiID: "5FA92AFB-9833-4608-87C7-F56A654AC171", | 
|---|
|  |  |  | XiaoXiLX: "SC_LC_360STCX", | 
|---|
|  |  |  | XiaoXiMC: "360 视图查询", | 
|---|
|  |  |  | ZuHuID: localStorage.getItem("ZuHuID"), | 
|---|
|  |  |  | ZuHuMC: localStorage.getItem("orgname"), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | YeWuXX: { | 
|---|
|  |  |  | BingRenXX: { | 
|---|
|  |  |  | ZhengJianHM: "", | 
|---|
|  |  |  | ZhengJianLXDM: "01", | 
|---|
|  |  |  | ZhengJianLXMC: "居民身份证", | 
|---|
|  |  |  | ZuZhiJGID: localStorage.getItem("orgid"), | 
|---|
|  |  |  | ZuZhiJGMC: localStorage.getItem("orgname"), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | YongHuXX: { | 
|---|
|  |  |  | XiTongID: "SUIFANGXT", | 
|---|
|  |  |  | XiTongMC: "随访系统", | 
|---|
|  |  |  | YongHuID: "1400466972205912064", | 
|---|
|  |  |  | YongHuXM: "JNRMYY", | 
|---|
|  |  |  | ZuZhiJGID: localStorage.getItem("orgid"), | 
|---|
|  |  |  | ZuZhiJGMC: localStorage.getItem("orgname"), | 
|---|
|  |  |  | idp: "lyra", | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | defaultProps: { | 
|---|
|  |  |  | children: "children", | 
|---|
|  |  |  | label: "label", | 
|---|
|  |  |  | 
|---|
|  |  |  | queryParams: { | 
|---|
|  |  |  | pageNum: 1, | 
|---|
|  |  |  | pageSize: 10, | 
|---|
|  |  |  | searchscope: 2, | 
|---|
|  |  |  | searchscope: 3, | 
|---|
|  |  |  | scopetype: [], | 
|---|
|  |  |  | leaveldeptcodes: [], | 
|---|
|  |  |  | leavehospitaldistrictcodes: [], | 
|---|
|  |  |  | 
|---|
|  |  |  | this.queryParams.leavehospitaldistrictcodes = | 
|---|
|  |  |  | store.getters.belongWards.map((obj) => obj.districtCode); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.queryParams.beginTime = this.dateRange[0]; | 
|---|
|  |  |  | this.queryParams.endTime = this.dateRange[1]; | 
|---|
|  |  |  | if (this.dateRange) { | 
|---|
|  |  |  | this.queryParams.beginTime = this.dateRange[0]; | 
|---|
|  |  |  | this.queryParams.endTime = this.dateRange[1]; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.queryParams.beginTime = ""; | 
|---|
|  |  |  | this.queryParams.endTime = ""; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | listPatouthosp(this.queryParams).then((response) => { | 
|---|
|  |  |  | this.userList = response.rows; | 
|---|
|  |  |  | this.total = response.total; | 
|---|
|  |  |  | 
|---|
|  |  |  | this.loading = false; | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //患者360跳转 | 
|---|
|  |  |  | gettoken360(sfzh,drcode,drname) { | 
|---|
|  |  |  | this.$modal.msgWarning('360功能暂未开通'); | 
|---|
|  |  |  | return; // 阻止后续代码执行 | 
|---|
|  |  |  | this.postData.YeWuXX.BingRenXX.ZhengJianHM = sfzh; | 
|---|
|  |  |  | if (this.postData.XiaoXiTou.ZuHuMC == "丽水市中医院") { | 
|---|
|  |  |  | this.postData.YeWuXX.YongHuXX.YongHuID = "1400398571877961728"; | 
|---|
|  |  |  | this.postData.YeWuXX.YongHuXX.YongHuXM = "LSZYY"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | query360PatInfo(this.postData).then((res) => { | 
|---|
|  |  |  | if (res.data.url) { | 
|---|
|  |  |  | window.open(res.data.url, "_blank"); | 
|---|
|  |  |  | // this.linkUrl = res.data.url; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.$modal.msgWarning("360查询无结果"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 筛选节点 | 
|---|
|  |  |  | filterNode(value, data) { | 
|---|
|  |  |  | if (!value) return true; | 
|---|
|  |  |  | 
|---|
|  |  |  | resetQuery() { | 
|---|
|  |  |  | this.dateRange = []; | 
|---|
|  |  |  | this.resetForm("queryForm"); | 
|---|
|  |  |  | (this.queryParams = { | 
|---|
|  |  |  | this.queryParams = { | 
|---|
|  |  |  | pageNum: 1, | 
|---|
|  |  |  | pageSize: 10, | 
|---|
|  |  |  | }), | 
|---|
|  |  |  | this.handleQuery(); | 
|---|
|  |  |  | searchscope: 3, | 
|---|
|  |  |  | scopetype: [], | 
|---|
|  |  |  | leaveldeptcodes: [], | 
|---|
|  |  |  | leavehospitaldistrictcodes: [], | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | this.handleQuery(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 多选框选中数据 | 
|---|
|  |  |  | handleSelectionChange(selection) { | 
|---|
|  |  |  | 
|---|
|  |  |  | this.upload.open = false; | 
|---|
|  |  |  | this.dractive = 1; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | /** 批量添加任务按钮点击 */ | 
|---|
|  |  |  | handleBatchAddTask() { | 
|---|
|  |  |  | // 校验是否选中患者 | 
|---|
|  |  |  | if (this.ids.length === 0) { | 
|---|
|  |  |  | this.$modal.msgWarning("请至少选中1名患者"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 检查选中的患者中是否有已有任务的 | 
|---|
|  |  |  | const hasTaskPatients = this.userList.filter( | 
|---|
|  |  |  | (item) => this.ids.includes(item.patid) && item.serverState == 1 | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (hasTaskPatients.length > 0) { | 
|---|
|  |  |  | const patientNames = hasTaskPatients.map((p) => p.patname).join("、"); | 
|---|
|  |  |  | this.$modal.msgError( | 
|---|
|  |  |  | `选中的患者 ${patientNames} 已有任务,无法重复添加` | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 校验是否同一科室 | 
|---|
|  |  |  | if (patientDepts.size > 1) { | 
|---|
|  |  |  | this.$modal.msgError("选中的患者不属于同一科室,无法批量添加任务"); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取选中患者列表 | 
|---|
|  |  |  | 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: 10, | 
|---|
|  |  |  | serviceType: 3, | 
|---|
|  |  |  | type: 2, | 
|---|
|  |  |  | deptcode: deptcode, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | getTasklist(topqueryParams).then((response) => { | 
|---|
|  |  |  | this.taskList = response.rows; | 
|---|
|  |  |  | 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 = []; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 遍历选中的患者,逐个调用接口 | 
|---|
|  |  |  | for (const patient of this.selectedPatients) { | 
|---|
|  |  |  | const params = { | 
|---|
|  |  |  | taskid: this.selectedTask.taskid, | 
|---|
|  |  |  | taskName: this.selectedTask.taskName, | 
|---|
|  |  |  | serviceType: this.selectedTask.serviceType, | 
|---|
|  |  |  | sendstate:2, | 
|---|
|  |  |  | ...patient, | 
|---|
|  |  |  | age: "", | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | await addSubtask(params); | 
|---|
|  |  |  | successPatients.push(patient.patname); | 
|---|
|  |  |  | } catch (error) { | 
|---|
|  |  |  | failedPatients.push(patient.patname); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 显示处理结果 | 
|---|
|  |  |  | let message = `成功为 ${successPatients.length} 名患者添加任务`; | 
|---|
|  |  |  | if (failedPatients.length > 0) { | 
|---|
|  |  |  | message += `,${failedPatients.length} 名患者添加失败`; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.$modal.msgSuccess(message); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.batchTaskVisible = false; | 
|---|
|  |  |  | this.getList(); // 刷新患者列表 | 
|---|
|  |  |  | } catch (error) { | 
|---|
|  |  |  | this.$modal.msgError("批量添加任务过程中出错"); | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | this.batchLoading = false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** 批量添加患者任务接口 */ | 
|---|
|  |  |  | batchAddPatientTask(params) {}, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .button-textsc { | 
|---|
|  |  |  | color: #28cfe6; | 
|---|
|  |  |  | color: #3664D9; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .batch-patient-section, | 
|---|
|  |  |  | .batch-task-section { | 
|---|
|  |  |  | padding: 15px; | 
|---|
|  |  |  | border: 1px solid #ebeef5; | 
|---|
|  |  |  | border-radius: 4px; | 
|---|
|  |  |  | margin-bottom: 15px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .el-table--enable-row-hover .el-table__body tr:hover > td { | 
|---|
|  |  |  | background-color: #f5f7fa; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .el-table__body tr.current-row > td { | 
|---|
|  |  |  | background-color: #e6f7ff; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* 禁用状态下按钮样式 */ | 
|---|
|  |  |  | .el-button.is-disabled { | 
|---|
|  |  |  | cursor: not-allowed; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .batch-patient-section h4, | 
|---|
|  |  |  | .batch-task-section h4 { | 
|---|
|  |  |  | margin-top: 0; | 
|---|
|  |  |  | margin-bottom: 15px; | 
|---|
|  |  |  | color: #303133; | 
|---|
|  |  |  | font-size: 16px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* 表格样式优化 */ | 
|---|
|  |  |  | .el-table { | 
|---|
|  |  |  | margin-bottom: 10px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* 弹窗底部按钮间距 */ | 
|---|
|  |  |  | .dialog-footer { | 
|---|
|  |  |  | text-align: right; | 
|---|
|  |  |  | padding: 10px 20px 20px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|