| | |
| | | key="needFollowUp" |
| | | prop="needFollowUp" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.needFollowUpInfo, |
| | | scope.row.leavehospitaldistrictname + '需随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.needFollowUp |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="待随访" |
| | |
| | | key="followUpSuccess" |
| | | prop="followUpSuccess" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.followUpSuccessInfo, |
| | | scope.row.leavehospitaldistrictname + '随访成功列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.followUpSuccess |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访失败" |
| | |
| | | key="manual" |
| | | prop="manual" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.manualInfo, |
| | | scope.row.leavehospitaldistrictname + '人工随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.manual |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="短信" |
| | |
| | | key="sms" |
| | | prop="sms" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.smsInfo, |
| | | scope.row.leavehospitaldistrictname + '短信随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.sms |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="微信" |
| | |
| | | key="weChat" |
| | | prop="weChat" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.weChatInfo, |
| | | scope.row.leavehospitaldistrictname + '微信随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.weChat |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="再次出院随访"> |
| | |
| | | key="needFollowUpAgain" |
| | | prop="needFollowUpAgain" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.needFollowUpAgainInfo, |
| | | scope.row.leavehospitaldistrictname + |
| | | '再次随访需随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.needFollowUpAgain |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="待随访" |
| | |
| | | key="pendingFollowUpAgain" |
| | | prop="pendingFollowUpAgain" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.pendingFollowUpAgainInfo, |
| | | scope.row.leavehospitaldistrictname + |
| | | '再次随访待随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.pendingFollowUpAgain |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访成功" |
| | |
| | | key="followUpSuccessAgain" |
| | | prop="followUpSuccessAgain" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.followUpSuccessAgainInfo, |
| | | scope.row.leavehospitaldistrictname + |
| | | '再次随访随访成功列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.followUpSuccessAgain |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访失败" |
| | |
| | | key="followUpFailAgain" |
| | | prop="followUpFailAgain" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.followUpFailAgainInfo, |
| | | scope.row.leavehospitaldistrictname + |
| | | '再次随访随访失败列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.followUpFailAgain |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访率" |
| | |
| | | key="manualAgain" |
| | | prop="manualAgain" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.manualAgainInfo, |
| | | scope.row.leavehospitaldistrictname + |
| | | '再次随访人工随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.manualAgain |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="短信" |
| | |
| | | key="smsAgain" |
| | | prop="smsAgain" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.smsAgainInfo, |
| | | scope.row.leavehospitaldistrictname + |
| | | '再次随访短信随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.smsAgain |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="微信" |
| | |
| | | key="weChatAgain" |
| | | prop="weChatAgain" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click=" |
| | | viewDetails( |
| | | scope.row.weChatAgainInfo, |
| | | scope.row.leavehospitaldistrictname + |
| | | '再次随访微信随访列表' |
| | | ) |
| | | " |
| | | ><span class="button-zx">{{ |
| | | scope.row.weChatAgain |
| | | }}</span></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> |
| | | <el-table-column |
| | |
| | | width="70%" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <div style="margin-bottom: 16px; display: flex; align-items: center"> |
| | | <span style="margin-right: 10px; font-weight: bold">患者姓名查询:</span> |
| | | <el-input |
| | | v-model="searchName" |
| | | placeholder="请输入患者姓名进行筛选" |
| | | clearable |
| | | style="width: 300px" |
| | | @input="handleSearch" |
| | | @clear="handleSearch" |
| | | > |
| | | </el-input> |
| | | <span |
| | | style="margin-left: 10px; color: rgb(35, 81, 233); font-size: 16px" |
| | | > |
| | | 共 {{ infotitlelist.length }} 条记录 |
| | | </span> |
| | | </div> |
| | | <div class="examine-jic"> |
| | | <div class="jic-value"> |
| | | <el-row :gutter="20"> |
| | | <!-- 选择患者列表 --> |
| | | <el-table :data="infotitlelist" height="660" style="width: 100%"> |
| | | <el-table-column |
| | | prop="sendname" |
| | | align="center" |
| | | label="姓名" |
| | | width="100" |
| | | <div |
| | | class="data-list" |
| | | ref="dataList" |
| | | @scroll="handleScroll" |
| | | v-loading="infotitloading" |
| | | > |
| | | <el-table |
| | | :data="currentDisplayList" |
| | | height="660" |
| | | style="width: 100%" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="taskName" |
| | | align="center" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | label="任务名称" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="sendstate" |
| | | align="center" |
| | | width="200" |
| | | label="任务状态" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.sendstate == 1"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >表单已领取</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 2"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >待随访</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 3"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >表单已发送</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 4"> |
| | | <el-tag type="info" :disable-transitions="false" |
| | | >不执行</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 5"> |
| | | <el-tag type="danger" :disable-transitions="false" |
| | | >发送失败</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 6"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >已完成</el-tag |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="visitTime" |
| | | align="center" |
| | | label="应随访时间" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="finishtime" |
| | | align="center" |
| | | label="随访完成时间" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="出院日期" |
| | | width="200" |
| | | align="center" |
| | | key="endtime" |
| | | prop="endtime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.endtime) }}</span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | label="责任护士" |
| | | width="120" |
| | | align="center" |
| | | key="nurseName" |
| | | prop="nurseName" |
| | | /> |
| | | <el-table-column |
| | | label="主治医生" |
| | | width="120" |
| | | align="center" |
| | | key="drname" |
| | | prop="drname" |
| | | /> |
| | | <el-table-column |
| | | prop="sendname" |
| | | align="center" |
| | | label="姓名" |
| | | width="100" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="taskName" |
| | | align="center" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | label="任务名称" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="sendstate" |
| | | align="center" |
| | | width="200" |
| | | label="任务状态" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div v-if="scope.row.sendstate == 1"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >表单已领取</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 2"> |
| | | <el-tag type="primary" :disable-transitions="false" |
| | | >待随访</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 3"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >表单已发送</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 4"> |
| | | <el-tag type="info" :disable-transitions="false" |
| | | >不执行</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 5"> |
| | | <el-tag type="danger" :disable-transitions="false" |
| | | >发送失败</el-tag |
| | | > |
| | | </div> |
| | | <div v-if="scope.row.sendstate == 6"> |
| | | <el-tag type="success" :disable-transitions="false" |
| | | >已完成</el-tag |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="visitTime" |
| | | align="center" |
| | | label="应随访时间" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="finishtime" |
| | | align="center" |
| | | label="随访完成时间" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="出院日期" |
| | | width="200" |
| | | align="center" |
| | | key="endtime" |
| | | prop="endtime" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ formatTime(scope.row.endtime) }}</span> |
| | | </template></el-table-column |
| | | > |
| | | <el-table-column |
| | | label="责任护士" |
| | | width="120" |
| | | align="center" |
| | | key="nurseName" |
| | | prop="nurseName" |
| | | /> |
| | | <el-table-column |
| | | label="主治医生" |
| | | width="120" |
| | | align="center" |
| | | key="drname" |
| | | prop="drname" |
| | | /> |
| | | |
| | | <el-table-column |
| | | label="结果状态" |
| | | align="center" |
| | | key="excep" |
| | | prop="excep" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_yujing" |
| | | :value="scope.row.excep" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="处理意见" |
| | | align="center" |
| | | key="suggest" |
| | | prop="suggest" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_suggest" |
| | | :value="scope.row.suggest" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="结果状态" |
| | | align="center" |
| | | key="excep" |
| | | prop="excep" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_yujing" |
| | | :value="scope.row.excep" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="处理意见" |
| | | align="center" |
| | | key="suggest" |
| | | prop="suggest" |
| | | width="120" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <dict-tag |
| | | :options="dict.type.sys_suggest" |
| | | :value="scope.row.suggest" |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="templatename" |
| | | align="center" |
| | | label="服务模板" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="remark" |
| | | align="center" |
| | | label="服务记录" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="templatename" |
| | | align="center" |
| | | label="服务模板" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="remark" |
| | | align="center" |
| | | label="服务记录" |
| | | width="200" |
| | | show-overflow-tooltip |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | prop="bankcardno" |
| | | align="center" |
| | | label="呼叫状态" |
| | | width="210" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | fixed="right" |
| | | align="center" |
| | | width="200" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="SeedetailsgGo(scope.row)" |
| | | ><span class="button-zx" |
| | | ><i class="el-icon-s-order"></i>查看</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-table-column |
| | | prop="bankcardno" |
| | | align="center" |
| | | label="呼叫状态" |
| | | width="210" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="操作" |
| | | fixed="right" |
| | | align="center" |
| | | width="200" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-button |
| | | size="medium" |
| | | type="text" |
| | | @click="SeedetailsgGo(scope.row)" |
| | | ><span class="button-zx" |
| | | ><i class="el-icon-s-order"></i>查看</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </el-row> |
| | | <pagination |
| | | v-show="patienttotal > 0 && this.patientqueryParams.allhosp != 6" |
| | |
| | | orgname: "", |
| | | expands: [], |
| | | infotitlelist: [], |
| | | currentDisplayList: [], // 当前显示的数据 |
| | | loadIndex: 0, // 当前已加载的数据索引 |
| | | pageSize: 100, // 每次加载的数据量 |
| | | isLoading: false, // 防止滚动时重复加载 |
| | | // 遮罩层 |
| | | loading: false, |
| | | Seedloading: false, |
| | | chartDialogVisible: false, |
| | | infotitleVisible: false, |
| | | searchName: "", // 搜索关键词 |
| | | infotitloading: false, |
| | | infotitle: "", |
| | | pieChart: null, |
| | |
| | | getSfStatistics(params).then((response) => { |
| | | console.log(response); |
| | | // this.total = response.total; |
| | | this.userList = response.data; |
| | | this.userList = this.customSort(response.data); |
| | | }); |
| | | }, |
| | | // 搜索处理函数 |
| | | handleSearch() { |
| | | if (!this.searchName.trim()) { |
| | | // 如果搜索框为空,显示所有数据 |
| | | this.currentDisplayList = [...this.infotitlelist]; |
| | | } else { |
| | | // 根据患者姓名进行筛选(不区分大小写) |
| | | const keyword = this.searchName.toLowerCase(); |
| | | this.currentDisplayList = this.infotitlelist.filter((item) => { |
| | | return item.sendname && item.sendname.toLowerCase().includes(keyword); |
| | | }); |
| | | } |
| | | }, |
| | | customSort(data) { |
| | | // 定义您期望的病区顺序(扩展到三十) |
| | | const order = [ |
| | | "二", |
| | | "三", |
| | | "四", |
| | | "五", |
| | | "六", |
| | | "七", |
| | | "八", |
| | | "九", |
| | | "十", |
| | | "十一", |
| | | "十二", |
| | | "十三", |
| | | "十四", |
| | | "十五", |
| | | "十六", |
| | | "十七", |
| | | "十八", |
| | | "十九", |
| | | "二十", |
| | | "二十一", |
| | | "二十二", |
| | | "二十三", |
| | | "二十四", |
| | | "二十五", |
| | | "二十六", |
| | | "二十七", |
| | | "二十八", |
| | | "二十九", |
| | | "三十", |
| | | ]; |
| | | |
| | | return data.sort((a, b) => { |
| | | // 提取病区名称中的中文数字部分[6](@ref) |
| | | const getIndex = (name) => { |
| | | const numStr = name.match( |
| | | /^(二|三|四|五|六|七|八|九|十|十一|十二|十三|十四|十五|十六|十七|十八|十九|二十|二十一|二十二|二十三|二十四|二十五|二十六|二十七|二十八|二十九|三十)/ |
| | | )?.[1]; |
| | | return order.indexOf(numStr); |
| | | }; |
| | | |
| | | const indexA = getIndex(a.leavehospitaldistrictname); |
| | | const indexB = getIndex(b.leavehospitaldistrictname); |
| | | |
| | | // 如果都在定义的顺序中,按定义顺序排;否则,未定义的排在后面[2](@ref) |
| | | if (indexA === -1) return 1; |
| | | if (indexB === -1) return -1; |
| | | return indexA - indexB; |
| | | }); |
| | | }, |
| | | getRowKey(row) { |
| | |
| | | const params = { |
| | | ...this.queryParams, |
| | | // 如果选择了"全部",则传所有病区/科室代码 |
| | | deptcodes: this.queryParams.deptcodes.includes("all") |
| | | ? this.allDeptCodes |
| | | : this.queryParams.deptcodes, |
| | | leavehospitaldistrictcodes: [row.leavehospitaldistrictcode], |
| | | drcode: "1", |
| | | }; |
| | | |
| | | // 移除可能存在的"all"值 |
| | | delete params.leavehospitaldistrictcodes.all; |
| | | delete params.deptcodes.all; |
| | | // 如果该行还没有加载医生数据,则加载 |
| | | if (!row.doctorStats) { |
| | | this.loading = true; |
| | |
| | | viewDetails(row, title) { |
| | | this.infotitleVisible = true; |
| | | this.infotitle = title; |
| | | this.infotitlelist = row; |
| | | this.infotitlelist = row; // 假设row就是需要展示的详细数组 |
| | | |
| | | // 初始化加载 |
| | | this.loadIndex = 0; |
| | | this.currentDisplayList = []; |
| | | this.$nextTick(() => { |
| | | this.loadMoreData(); |
| | | }); |
| | | }, |
| | | loadMoreData() { |
| | | if (this.isLoading) return; |
| | | this.isLoading = true; |
| | | |
| | | // 模拟异步加载,实际可能是直接切片本地数据 |
| | | setTimeout(() => { |
| | | const nextChunk = this.infotitlelist.slice( |
| | | this.loadIndex, |
| | | this.loadIndex + this.pageSize |
| | | ); |
| | | this.currentDisplayList = this.currentDisplayList.concat(nextChunk); |
| | | this.loadIndex += this.pageSize; |
| | | this.isLoading = false; |
| | | }, 200); |
| | | }, |
| | | handleScroll(event) { |
| | | const scrollContainer = event.target; |
| | | // 判断是否滚动到底部 |
| | | const isAtBottom = |
| | | scrollContainer.scrollTop + scrollContainer.clientHeight >= |
| | | scrollContainer.scrollHeight - 10; |
| | | |
| | | if ( |
| | | isAtBottom && |
| | | !this.isLoading && |
| | | this.loadIndex < this.infotitlelist.length |
| | | ) { |
| | | this.loadMoreData(); |
| | | } |
| | | }, |
| | | SeedetailsgGo(row) { |
| | | this.SeedetailsVisible = false; |
| | |
| | | width: 100px; |
| | | height: 50px; |
| | | } |
| | | .data-list { |
| | | max-height: 800px; |
| | | overflow-y: auto; |
| | | } |
| | | .documentf { |
| | | display: flex; |
| | | justify-content: flex-end; |