| | |
| | | <template> |
| | | <div class="Questionnairemanagement"> |
| | | <!-- 左侧栏 --> |
| | | <!-- <div class="sidecolumn"> |
| | | <div class="sidecolumn-top"> |
| | | <div class="top-wj">患者范围</div> |
| | | </div> |
| | | <div class="follow-up-statistics"> |
| | | <!-- 搜索表单区域 --> |
| | | <div class="search-section"> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="98px"> |
| | | <el-form-item label="统计类型" prop="userName"> |
| | | <el-select v-model="queryParams.statisticaltype" placeholder="请选择统计类型"> |
| | | <el-option v-for="item in Statisticallist" :key="item.value" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | <el-select |
| | | style="margin-left: 10px" |
| | | v-if="queryParams.statisticaltype == 1" |
| | | v-model="queryParams.leavehospitaldistrictcodes" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | | placeholder="请选择病区" |
| | | > |
| | | <el-option v-for="item in flatArrayhospit" :key="item.value" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | <el-select |
| | | v-else-if="queryParams.statisticaltype == 2" |
| | | v-model="queryParams.deptcodes" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | | placeholder="请选择科室" |
| | | > |
| | | <el-option v-for="item in flatArraydept" :key="item.value" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <div class="bottom-fl"> |
| | | <el-tabs |
| | | tab-position="right" |
| | | v-model="activeName" |
| | | @tab-click="handleClick" |
| | | > |
| | | <el-tab-pane label="全部" name="first"></el-tab-pane> |
| | | <el-tab-pane label="住院" name="bhospitalized"></el-tab-pane> |
| | | <el-tab-pane label="在院" name="Inhospital"></el-tab-pane> |
| | | <el-tab-pane label="门诊" name="outpatient"></el-tab-pane> |
| | | <el-tab-pane label="体检" name="physical"></el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </div> --> |
| | | <!-- 右侧数据 --> |
| | | <div class="leftvlue"> |
| | | <!-- <div class="leftvlue-top"> |
| | | <el-tabs v-model="topactiveName" @tab-click="tophandleClick"> |
| | | <el-tab-pane name="Local"> |
| | | <span class="mulsz" slot="label">按出院病区统计 </span> |
| | | </el-tab-pane> |
| | | <el-tab-pane name="sharing"> |
| | | <span class="mulsz" slot="label">按出院科室统计 </span> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> --> |
| | | <div class="leftvlue-bg"> |
| | | <el-row :gutter="20"> |
| | | <!--标签数据--> |
| | | <el-col :span="24" :xs="24"> |
| | | <el-form |
| | | :model="queryParams" |
| | | ref="queryForm" |
| | | size="small" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-width="98px" |
| | | > |
| | | <!-- <el-form-item label="医院" prop="userName"> |
| | | <el-select v-model="queryParams.value1" placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | <el-form-item label="统计类型" prop="userName"> |
| | | <el-select |
| | | v-model="queryParams.statisticaltype" |
| | | placeholder="请选择统计类型" |
| | | > |
| | | <el-option |
| | | v-for="item in Statisticallist" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <el-select |
| | | style="margin-left: 10px" |
| | | v-if="queryParams.statisticaltype == 1" |
| | | v-model="queryParams.leavehospitaldistrictcodes" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | | placeholder="请选择病区" |
| | | > |
| | | <el-option |
| | | v-for="item in flatArrayhospit" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <el-select |
| | | v-else-if="queryParams.statisticaltype == 2" |
| | | v-model="queryParams.deptcodes" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | | placeholder="请选择科室" |
| | | > |
| | | <el-option |
| | | v-for="item in flatArraydept" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="服务类型" prop="userName"> |
| | | <el-select v-model="queryParams.serviceType" multiple placeholder="请选择"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="统计类型" prop="userName"> |
| | | <el-select |
| | | v-model="queryParams.serviceType" |
| | | multiple |
| | | placeholder="请选择" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label-width="200" |
| | | label="应随访时间范围" |
| | | prop="userName" |
| | | > |
| | | <el-date-picker |
| | | v-model="queryParams.dateRange" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label-width="200" label="应随访时间范围" prop="userName"> |
| | | <el-date-picker |
| | | v-model="queryParams.dateRange" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | type="daterange" |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | :default-time="['00:00:00', '23:59:59']" |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | icon="el-icon-search" |
| | | size="medium" |
| | | @click="handleQuery" |
| | | >搜索</el-button |
| | | > |
| | | <el-button |
| | | icon="el-icon-refresh" |
| | | size="medium" |
| | | @click="resetQuery" |
| | | >重置</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">搜索</el-button> |
| | | <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">重置</el-button> |
| | | </el-form-item> |
| | | |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="el-icon-plus" |
| | | size="medium" |
| | | @click="addladeltag" |
| | | v-hasPermi="['system:user:add']" |
| | | >新增</el-button |
| | | > |
| | | </el-col> |
| | | |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="danger" |
| | | plain |
| | | icon="el-icon-delete" |
| | | size="medium" |
| | | :disabled="multiple" |
| | | @click="handleDelete" |
| | | v-hasPermi="['system:user:remove']" |
| | | >删除</el-button |
| | | > |
| | | </el-col> |
| | | <el-col :span="1.5"> |
| | | <div class="documentf"> |
| | | <div class="document"> |
| | | <el-button |
| | | type="warning" |
| | | plain |
| | | icon="el-icon-download" |
| | | size="medium" |
| | | @click="handleExport" |
| | | v-hasPermi="['system:user:export']" |
| | | >导出</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | |
| | | <!-- <el-col :span="1.5"> </el-col> --> |
| | | </el-row> |
| | | <!-- <right-toolbar |
| | | :showSearch.sync="showSearch" |
| | | @queryTable="getList" |
| | | :columns="columns" |
| | | ></right-toolbar> --> |
| | | <el-table |
| | | v-loading="loading" |
| | | :data="userList" |
| | | :border="true" |
| | | @selection-change="handleSelectionChange" |
| | | > |
| | | <el-table-column |
| | | label="出院病区" |
| | | align="center" |
| | | sortable |
| | | key="leavehospitaldistrictname" |
| | | prop="leavehospitaldistrictname" |
| | | width="150" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="科室" |
| | | align="center" |
| | | key="deptname" |
| | | prop="deptname" |
| | | :show-overflow-tooltip="true" |
| | | /> |
| | | <el-table-column |
| | | label="出院人次" |
| | | align="center" |
| | | key="dischargeCount" |
| | | prop="dischargeCount" |
| | | > |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | label="无需随访人次" |
| | | align="center" |
| | | width="100" |
| | | key="nonFollowUp" |
| | | prop="nonFollowUp" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="应随访人次" |
| | | align="center" |
| | | width="100" |
| | | key="followUpNeeded" |
| | | prop="followUpNeeded" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column align="center" label="首次出院随访"> |
| | | <el-table-column |
| | | label="应随访" |
| | | align="center" |
| | | key="needFollowUp" |
| | | prop="needFollowUp" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="待随访" |
| | | align="center" |
| | | key="pendingFollowUp" |
| | | prop="pendingFollowUp" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访成功" |
| | | align="center" |
| | | key="followUpSuccess" |
| | | prop="followUpSuccess" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访失败" |
| | | align="center" |
| | | key="followUpFail" |
| | | prop="followUpFail" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访率" |
| | | align="center" |
| | | width="120" |
| | | key="followUpRate" |
| | | prop="followUpRate" |
| | | > |
| | | <!-- <template slot-scope="scope"> |
| | | <span |
| | | >{{ |
| | | (Number(scope.row.followUpRate) * 100).toFixed(2) |
| | | }}%</span |
| | | > |
| | | </template> --> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="人工" |
| | | align="center" |
| | | key="manual" |
| | | prop="manual" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="短信" |
| | | align="center" |
| | | key="sms" |
| | | prop="sms" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="微信" |
| | | align="center" |
| | | key="weChat" |
| | | prop="weChat" |
| | | > |
| | | </el-table-column> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="再次出院随访"> |
| | | <el-table-column |
| | | label="应随访" |
| | | align="center" |
| | | key="needFollowUpAgain" |
| | | prop="needFollowUpAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="待随访" |
| | | align="center" |
| | | key="pendingFollowUpAgain" |
| | | prop="pendingFollowUpAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访成功" |
| | | align="center" |
| | | key="followUpSuccessAgain" |
| | | prop="followUpSuccessAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访失败" |
| | | align="center" |
| | | key="followUpFailAgain" |
| | | prop="followUpFailAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="随访率" |
| | | align="center" |
| | | width="120" |
| | | key="followUpRateAgain" |
| | | prop="followUpRateAgain" |
| | | > |
| | | <!-- <template slot-scope="scope"> |
| | | <span |
| | | >{{ |
| | | (Number(scope.row.FollowUpRateAgain) * 100).toFixed(2) |
| | | }}%</span |
| | | > |
| | | </template> --> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="人工" |
| | | align="center" |
| | | key="manualAgain" |
| | | prop="manualAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="短信" |
| | | align="center" |
| | | key="smsAgain" |
| | | prop="smsAgain" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="微信" |
| | | align="center" |
| | | key="weChatAgain" |
| | | prop="weChatAgain" |
| | | > |
| | | </el-table-column> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <!-- <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> --> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <el-button type="warning" plain icon="el-icon-download" size="medium" @click="handleExport">导出</el-button> |
| | | <el-button type="primary" plain icon="el-icon-data-line" size="medium" @click="showChartDialog">统计趋势图</el-button> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <!-- Tab切换区域 --> |
| | | <div class="tab-section"> |
| | | <el-tabs v-model="activeTab" @tab-click="handleTabClick"> |
| | | <el-tab-pane label="首次随访" name="first"> |
| | | <FirstFollowUp |
| | | ref="firstFollowUp" |
| | | :query-params="queryParams" |
| | | :flat-array-hospit="flatArrayhospit" |
| | | :flat-array-dept="flatArraydept" |
| | | :options="options" |
| | | :orgname="orgname" |
| | | @view-details="viewDetails" |
| | | @see-details="Seedetails" |
| | | /> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="再次随访" name="second"> |
| | | <SecondFollowUp |
| | | ref="secondFollowUp" |
| | | :query-params="queryParams" |
| | | :flat-array-hospit="flatArrayhospit" |
| | | :flat-array-dept="flatArraydept" |
| | | :options="options" |
| | | :orgname="orgname" |
| | | @view-details="viewDetails" |
| | | /> |
| | | </el-tab-pane> |
| | | |
| | | <el-tab-pane label="延续护理统计" name="continued" v-if="orgname == '省立同德翠苑院区'"> |
| | | <ContinuedCare |
| | | ref="continuedCare" |
| | | :query-params="queryParams" |
| | | :flat-array-hospit="flatArrayhospit" |
| | | :flat-array-dept="flatArraydept" |
| | | :options="options" |
| | | :orgname="orgname" |
| | | @view-details="viewDetails" |
| | | /> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | |
| | | <!-- 弹窗区域 --> |
| | | <ChartDialog |
| | | :visible="chartDialogVisible" |
| | | :data="chartData" |
| | | :active-tab="activeTab" |
| | | @close="chartDialogVisible = false" |
| | | /> |
| | | |
| | | <DetailDialog |
| | | :visible="infotitleVisible" |
| | | :title="infotitle" |
| | | :data="infotitlelist" |
| | | :search-name="searchName" |
| | | @close="infotitleVisible = false" |
| | | @search="handleSearch" |
| | | @details-go="SeedetailsgGo" |
| | | /> |
| | | |
| | | <TimelyRateDialog |
| | | :visible="SeedetailsVisible" |
| | | :loading="Seedloading" |
| | | :data="logsheetlist" |
| | | :total="patienttotal" |
| | | :query-params="patientqueryParams" |
| | | @close="SeedetailsVisible = false" |
| | | @search="Seedetailstion" |
| | | @details-go="SeedetailsgGo" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | toamendtag, |
| | | addapitag, |
| | | deletetag, |
| | | changetagcategory, |
| | | } from "@/api/system/label"; |
| | | import store from "@/store"; |
| | | import { getSfStatistics, deptTreeSelect } from "@/api/system/user"; |
| | | import FirstFollowUp from './components/FirstFollowUp.vue' |
| | | import SecondFollowUp from './components/SecondFollowUp.vue' |
| | | import ContinuedCare from './components/ContinuedCare.vue' |
| | | import ChartDialog from './components/ChartDialog.vue' |
| | | import DetailDialog from './components/DetailDialog.vue' |
| | | import TimelyRateDialog from './components/TimelyRateDialog.vue' |
| | | |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | const shortcuts = [ |
| | | { |
| | | text: "今天", |
| | | onClick(picker) { |
| | | picker.$emit("pick", new Date()); |
| | | }, |
| | | }, |
| | | { |
| | | text: "昨天", |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() - 3600 * 1000 * 24); |
| | | picker.$emit("pick", date); |
| | | }, |
| | | }, |
| | | { |
| | | text: "一周前", |
| | | onClick(picker) { |
| | | const date = new Date(); |
| | | date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); |
| | | picker.$emit("pick", date); |
| | | }, |
| | | }, |
| | | ]; |
| | | |
| | | export default { |
| | | name: "Percentage", |
| | | dicts: ["sys_normal_disable", "sys_user_sex"], |
| | | components: { Treeselect }, |
| | | name: 'FollowUpStatistics', |
| | | components: { |
| | | FirstFollowUp, |
| | | SecondFollowUp, |
| | | ContinuedCare, |
| | | ChartDialog, |
| | | DetailDialog, |
| | | TimelyRateDialog |
| | | }, |
| | | data() { |
| | | return { |
| | | topactiveName: "Local", //顶部选择 |
| | | activeName: "first", //侧边选择 |
| | | // 遮罩层 |
| | | loading: false, |
| | | // 选中数组 |
| | | ids: [], |
| | | // 非单个禁用 |
| | | single: true, |
| | | // 非多个禁用 |
| | | multiple: true, |
| | | // 显示搜索条件 |
| | | showSearch: true, |
| | | idds: "", //分类id |
| | | // 总条数 |
| | | total: 0, |
| | | flatArrayhospit: [], |
| | | flatArraydept: [], |
| | | |
| | | activeTab: 'first', |
| | | orgname: localStorage.getItem('orgname') || '', |
| | | Statisticallist: [ |
| | | { |
| | | label: "病区统计", |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: "科室统计", |
| | | value: 2, |
| | | }, |
| | | { label: '病区统计', value: 1 }, |
| | | { label: '科室统计', value: 2 } |
| | | ], |
| | | amendtag: false, //是否修改类别 |
| | | lstamendtag: false, //是否修改标签 |
| | | scavisible: false, //删除弹框 |
| | | deleteVisible: false, //分类删除弹框 |
| | | deletefenl: "高血压", //删除项 |
| | | //修改添加标签弹框数据 |
| | | tagform: { |
| | | isupload: "", |
| | | tagname: "", |
| | | tagcategoryid: "", |
| | | tagdescription: "", |
| | | }, |
| | | classifyform: { |
| | | categoryname: "", |
| | | }, |
| | | // 标签表格数据 |
| | | userList: [], |
| | | // 弹出层标题 |
| | | title: "", |
| | | // 是否显示弹出层 |
| | | open: false, |
| | | // 日期范围 |
| | | dateRange: [], |
| | | // 岗位选项 |
| | | postOptions: [], |
| | | // 角色选项 |
| | | roleOptions: [], |
| | | // 表单参数 |
| | | form: {}, |
| | | forms: { |
| | | name: "", |
| | | }, |
| | | numberlb: 22, |
| | | dialogFormVisible: false, //添加、修改类别弹框 |
| | | lstamendtagVisible: false, //添加、修改标签弹框 |
| | | goQRCodeVisible: false, //二维码弹框 |
| | | sidecolumnval: "", //类别搜索 |
| | | propss: { multiple: true }, |
| | | |
| | | options: [ |
| | | { |
| | | value: 1, |
| | | label: "监测评估", |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: "出院随访", |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: "门诊随访", |
| | | }, |
| | | { |
| | | value: 4, |
| | | label: "宣教关怀", |
| | | }, |
| | | { |
| | | value: 5, |
| | | label: "复诊管理", |
| | | }, |
| | | |
| | | { |
| | | value: 7, |
| | | label: "患者报告", |
| | | }, |
| | | |
| | | { |
| | | value: 9, |
| | | label: "体检随访", |
| | | }, |
| | | |
| | | { |
| | | value: 11, |
| | | label: "影像随访", |
| | | }, |
| | | { |
| | | value: 12, |
| | | label: "心电随访", |
| | | }, |
| | | { |
| | | value: 13, |
| | | label: "专病随访", |
| | | }, |
| | | ], |
| | | pickerOptions: { |
| | | disabledDate(time) { |
| | | return time.getTime() < Date.now() - 3600 * 1000 * 24; |
| | | }, |
| | | shortcuts: shortcuts, |
| | | }, |
| | | pickerOptionsa: { |
| | | disabledDate(time) { |
| | | return time.getTime() > Date.now(); |
| | | }, |
| | | shortcuts: shortcuts, |
| | | }, |
| | | // 查询标签列表参数 |
| | | options: this.$store.getters.tasktypes, |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | serviceType: [2], |
| | | dateRange: [], |
| | | statisticaltype: 1, |
| | | leavehospitaldistrictcodes: ['all'], |
| | | deptcodes: [] |
| | | }, |
| | | // 列信息 |
| | | columns: [ |
| | | { key: 0, label: `标签编号`, visible: true }, |
| | | { key: 1, label: `标签名称`, visible: true }, |
| | | { key: 2, label: `标签昵称`, visible: true }, |
| | | { key: 3, label: `部门`, visible: true }, |
| | | { key: 4, label: `手机号码`, visible: true }, |
| | | { key: 5, label: `状态`, visible: true }, |
| | | { key: 6, label: `创建时间`, visible: true }, |
| | | ], |
| | | }; |
| | | }, |
| | | watch: {}, |
| | | created() { |
| | | this.getList(); |
| | | this.getDeptTree(); |
| | | }, |
| | | flatArrayhospit: [], |
| | | flatArraydept: [], |
| | | allDeptCodes: [], |
| | | allWardCodes: [], |
| | | showSearch: true, |
| | | |
| | | // 弹窗相关状态 |
| | | chartDialogVisible: false, |
| | | chartData: [], |
| | | infotitleVisible: false, |
| | | SeedetailsVisible: false, |
| | | searchName: '', |
| | | infotitle: '', |
| | | infotitlelist: [], |
| | | patienttotal: 0, |
| | | logsheetlist: [], |
| | | Seedloading: false, |
| | | patientqueryParams: { |
| | | pn: 1, |
| | | ps: 10 |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | this.getDeptTree() |
| | | }, |
| | | methods: { |
| | | /** 查询标签列表 */ |
| | | getList() { |
| | | getSfStatistics(this.queryParams).then((response) => { |
| | | console.log(response); |
| | | // this.total = response.total; |
| | | this.userList = response.data; |
| | | }); |
| | | }, |
| | | /** 修改标签 */ |
| | | handleUpdate(row) { |
| | | console.log(row, "修改标签"); |
| | | this.lstamendtagVisible = true; |
| | | this.lstamendtag = true; |
| | | this.tagform = { |
| | | isupload: row.isupload, |
| | | tagname: row.tagname, |
| | | tagcategoryid: row.tagcategoryid, |
| | | tagdescription: row.tagdescription, |
| | | tagid: row.tagid, |
| | | }; |
| | | }, |
| | | // 获取科室树 |
| | | getDeptTree() { |
| | | // 科室列表 |
| | | this.flatArraydept = store.getters.belongDepts.map((dept) => { |
| | | this.flatArraydept = this.$store.getters.belongDepts.map((dept) => { |
| | | return { |
| | | label: dept.deptName, |
| | | value: dept.deptCode, |
| | | }; |
| | | }); |
| | | this.flatArrayhospit = store.getters.belongWards.map((dept) => { |
| | | return { |
| | | label: dept.districtName, |
| | | value: dept.districtCode, |
| | | }; |
| | | }); |
| | | // deptTreeSelect().then((response) => { |
| | | // this.deptOptions = response.data; |
| | | // console.log(this.deptOptions, " this.deptOptions"); |
| | | // this.flatArray = this.flattenArray(response.data); |
| | | // }); |
| | | }, |
| | | flattenArray(multiArray) { |
| | | let result = []; |
| | | |
| | | // 递归函数,用于将多级数组转换为一维数组,只包含最底层的元素 |
| | | function flatten(element) { |
| | | // 如果当前元素有子元素,继续递归 |
| | | if (element.children && element.children.length > 0) { |
| | | element.children.forEach((child) => flatten(child)); |
| | | } else { |
| | | // 克隆元素以避免修改原始数据 |
| | | let item = JSON.parse(JSON.stringify(element)); |
| | | result.push(item); // 将最底层的元素添加到结果数组 |
| | | value: dept.deptCode |
| | | } |
| | | } |
| | | }) |
| | | this.allDeptCodes = this.$store.getters.belongDepts.map((dept) => dept.deptCode) |
| | | |
| | | // 从顶层元素开始递归 |
| | | multiArray.forEach((element) => flatten(element)); |
| | | return result; // 返回只包含最底层元素的一维数组 |
| | | }, |
| | | addladeltag() { |
| | | this.lstamendtagVisible = true; |
| | | this.lstamendtag = false; |
| | | this.tagform = { |
| | | isupload: "", |
| | | tagname: "", |
| | | tagcategoryid: "", |
| | | tagdescription: "", |
| | | tagid: "", |
| | | }; |
| | | }, |
| | | // 添加/修改标签 |
| | | Maintenancetag() { |
| | | if (this.lstamendtag) { |
| | | toamendtag(this.addDateRange(this.tagform)).then((response) => { |
| | | console.log(response); |
| | | this.getList(); |
| | | }); |
| | | } else { |
| | | addapitag(this.addDateRange(this.tagform)).then((response) => { |
| | | console.log(response); |
| | | this.getList(); |
| | | }); |
| | | } |
| | | this.tagform = { |
| | | isupload: "", |
| | | tagname: "", |
| | | tagcategoryid: "", |
| | | tagdescription: "", |
| | | tagid: "", |
| | | }; |
| | | }, |
| | | routerErr(row) { |
| | | console.log(row, "跳转异常"); |
| | | this.$router.push({ |
| | | path: "/followvisit/discharge", |
| | | query: { |
| | | errtype: 1, |
| | | leavehospitaldistrictcode: row.leavehospitaldistrictcode, |
| | | }, |
| | | }); |
| | | // 病区列表 |
| | | this.flatArrayhospit = this.$store.getters.belongWards.map((ward) => { |
| | | return { |
| | | label: ward.districtName, |
| | | value: ward.districtCode |
| | | } |
| | | }) |
| | | this.allWardCodes = this.$store.getters.belongWards.map((ward) => ward.districtCode) |
| | | |
| | | this.flatArraydept.push({ label: '全部', value: 'all' }) |
| | | this.flatArrayhospit.push({ label: '全部', value: 'all' }) |
| | | }, |
| | | |
| | | // 表单重置 |
| | | reset() { |
| | | this.form = { |
| | | userId: undefined, |
| | | deptId: undefined, |
| | | userName: undefined, |
| | | nickName: undefined, |
| | | password: undefined, |
| | | phonenumber: undefined, |
| | | email: undefined, |
| | | sex: undefined, |
| | | status: "0", |
| | | remark: undefined, |
| | | postIds: [], |
| | | roleIds: [], |
| | | }; |
| | | this.resetForm("form"); |
| | | handleTabClick(tab) { |
| | | this.activeTab = tab.name |
| | | this.loadCurrentTabData() |
| | | }, |
| | | // 标签状态修改 |
| | | handleStatusChange(row) { |
| | | console.log(row.isupload); |
| | | let text = row.isupload === "0" ? "启用" : "停用"; |
| | | this.$modal |
| | | .confirm('确认要"' + text + '""' + row.tagname + '"标签吗?') |
| | | .then(function () { |
| | | return changetagcategory(row.tagid, row.isupload); |
| | | }) |
| | | .then(() => { |
| | | this.$modal.msgSuccess(text + "成功"); |
| | | }) |
| | | .catch(function () { |
| | | row.isupload = row.isupload === "0" ? "1" : "0"; |
| | | }); |
| | | |
| | | loadCurrentTabData() { |
| | | switch (this.activeTab) { |
| | | case 'first': |
| | | this.$refs.firstFollowUp.loadData() |
| | | break |
| | | case 'second': |
| | | this.$refs.secondFollowUp.loadData() |
| | | break |
| | | case 'continued': |
| | | this.$refs.continuedCare.loadData() |
| | | break |
| | | } |
| | | }, |
| | | /** 搜索按钮操作 */ |
| | | |
| | | handleQuery() { |
| | | this.queryParams.pageNum = 1; |
| | | console.log(); |
| | | this.queryParams.startTime = this.parseTime(this.queryParams.dateRange[0]) |
| | | this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1]) |
| | | |
| | | if (this.queryParams.statisticaltype == 1) { |
| | | this.queryParams.deptcodes = []; |
| | | this.queryParams.deptcodes = [] |
| | | } else if (this.queryParams.statisticaltype == 2) { |
| | | this.queryParams.leavehospitaldistrictcodes = []; |
| | | this.queryParams.leavehospitaldistrictcodes = [] |
| | | } |
| | | console.log(this.queryParams.dateRange); |
| | | |
| | | this.queryParams.startTime = this.parseTime( |
| | | this.queryParams.dateRange[0] |
| | | ); |
| | | this.queryParams.endTime = this.parseTime(this.queryParams.dateRange[1]); |
| | | this.getList(); |
| | | this.loadCurrentTabData() |
| | | }, |
| | | /** 重置按钮操作 */ |
| | | |
| | | resetQuery() { |
| | | this.queryParams.dateRange = []; |
| | | this.queryParams.leavehospitaldistrictcodes = []; |
| | | this.handleQuery(); |
| | | }, |
| | | // 多选框选中数据 |
| | | handleSelectionChange(selection) { |
| | | this.ids = selection.map((item) => item.tagid); |
| | | this.single = selection.length != 1; |
| | | this.multiple = !selection.length; |
| | | this.queryParams.dateRange = [] |
| | | this.queryParams.leavehospitaldistrictcodes = [] |
| | | this.handleQuery() |
| | | }, |
| | | |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |
| | | console.log(row, "删除弹窗"); |
| | | const tagids = row.tagid || this.ids; |
| | | console.log(tagids); |
| | | const tagname = row.tagname; |
| | | this.$modal |
| | | .confirm( |
| | | tagname |
| | | ? '是否确认删除标签名称为"' + tagname + '"的数据项?' |
| | | : "是否确认删除选中的数据项?" |
| | | ) |
| | | .then(function () { |
| | | return deletetag(tagids); |
| | | }) |
| | | .then(() => { |
| | | this.getList(); |
| | | this.$modal.msgSuccess("删除成功"); |
| | | }) |
| | | .catch(() => {}); |
| | | async handleExport() { |
| | | switch (this.activeTab) { |
| | | case 'first': |
| | | await this.$refs.firstFollowUp.exportTable() |
| | | break |
| | | case 'second': |
| | | await this.$refs.secondFollowUp.exportTable() |
| | | break |
| | | case 'continued': |
| | | await this.$refs.continuedCare.exportTable() |
| | | break |
| | | } |
| | | }, |
| | | /** 导出按钮操作 */ |
| | | handleExport() { |
| | | this.download( |
| | | "smartor/serviceSubtask/getSfStatisticsExport", |
| | | { |
| | | ...this.queryParams, |
| | | }, |
| | | `user_${new Date().getTime()}.xlsx` |
| | | ); |
| | | |
| | | showChartDialog() { |
| | | this.chartData = this.getCurrentTabData() |
| | | this.chartDialogVisible = true |
| | | }, |
| | | }, |
| | | }; |
| | | |
| | | getCurrentTabData() { |
| | | switch (this.activeTab) { |
| | | case 'first': |
| | | return this.$refs.firstFollowUp.tableData |
| | | case 'second': |
| | | return this.$refs.secondFollowUp.tableData |
| | | case 'continued': |
| | | return this.$refs.continuedCare.tableData |
| | | default: |
| | | return [] |
| | | } |
| | | }, |
| | | |
| | | viewDetails(row, title) { |
| | | this.infotitle = title |
| | | this.infotitlelist = row |
| | | this.infotitleVisible = true |
| | | }, |
| | | |
| | | Seedetails(row) { |
| | | this.SeedetailsVisible = true |
| | | this.Seedloading = true |
| | | |
| | | this.$refs.firstFollowUp.selectTimelyRate(row, this.queryParams.dateRange) |
| | | .then(response => { |
| | | this.logsheetlist = response.data.detail |
| | | this.patienttotal = response.data.total |
| | | this.Seedloading = false |
| | | }) |
| | | }, |
| | | |
| | | Seedetailstion() { |
| | | this.$refs.firstFollowUp.selectTimelyRate(this.patientqueryParams) |
| | | .then(response => { |
| | | this.logsheetlist = response.data.detail |
| | | this.patienttotal = response.data.total |
| | | }) |
| | | }, |
| | | |
| | | SeedetailsgGo(row) { |
| | | this.SeedetailsVisible = false |
| | | let type = '' |
| | | if (row.preachformson && row.preachformson.includes('3')) { |
| | | type = 1 |
| | | } |
| | | setTimeout(() => { |
| | | this.$router.push({ |
| | | path: '/followvisit/record/detailpage/', |
| | | query: { |
| | | taskid: row.taskid, |
| | | patid: row.patid, |
| | | id: row.id, |
| | | Voicetype: type |
| | | } |
| | | }) |
| | | }, 300) |
| | | }, |
| | | |
| | | handleSearch() { |
| | | // 搜索逻辑 |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .sidecolumn { |
| | | width: 180px; |
| | | min-height: 100vh; |
| | | text-align: center; |
| | | // display: flex; |
| | | margin-top: 20px; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #edf1f7; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | .sidecolumn-top { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | .top-wj { |
| | | font-size: 20px; |
| | | } |
| | | .top-tj { |
| | | font-size: 18px; |
| | | |
| | | color: rgb(0, 89, 255); |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | .center-ss { |
| | | margin-top: 30px; |
| | | .input-with-select { |
| | | height: 40px !important; |
| | | } |
| | | } |
| | | .bottom-fl { |
| | | margin-top: 30px; |
| | | display: center !important; |
| | | } |
| | | } |
| | | .qrcode-dialo { |
| | | text-align: center; |
| | | // display: flex; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | background: #edf1f7; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | .qrcode-text { |
| | | font-size: 20px; |
| | | span { |
| | | margin-left: 20px; |
| | | } |
| | | } |
| | | .qrcode-img { |
| | | width: 300px; |
| | | height: 400px; |
| | | } |
| | | } |
| | | ::v-deep.el-tabs--left, |
| | | .el-tabs--right { |
| | | overflow: hidden; |
| | | align-items: center; |
| | | display: flex; |
| | | } |
| | | ::v-deep.el-input--medium .el-input__inner { |
| | | height: 40px !important; |
| | | } |
| | | ::v-deep.el-tabs--right .el-tabs__active-bar.is-right { |
| | | height: 40px; |
| | | width: 5px; |
| | | left: 0; |
| | | } |
| | | ::v-deep.el-tabs--right .el-tabs__item.is-right { |
| | | display: block; |
| | | text-align: left; |
| | | font-size: 20px; |
| | | } |
| | | |
| | | .leftvlue { |
| | | // display: flex; |
| | | // flex: 1; |
| | | // width: 80%; |
| | | // margin-top: 20px; |
| | | margin: 20px; |
| | | padding: 30px; |
| | | .follow-up-statistics { |
| | | padding: 20px; |
| | | background: #ffff; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | | 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | .mulsz { |
| | | font-size: 20px; |
| | | box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), 0 0 6px 0 rgba(0, 0, 0, 0.04); |
| | | |
| | | .search-section { |
| | | margin-bottom: 20px; |
| | | } |
| | | } |
| | | .document { |
| | | width: 100px; |
| | | height: 50px; |
| | | } |
| | | .documentf { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | .button-text { |
| | | color: rgb(70, 204, 238); |
| | | } |
| | | .button-textck { |
| | | color: rgb(39, 167, 67); |
| | | } |
| | | .button-textxg { |
| | | color: rgb(35, 81, 233); |
| | | } |
| | | .button-textsc { |
| | | color: rgb(235, 23, 23); |
| | | |
| | | .tab-section { |
| | | ::v-deep .el-tabs__header { |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | ::v-deep .el-tabs__item { |
| | | font-size: 16px; |
| | | padding: 0 20px; |
| | | height: 40px; |
| | | line-height: 40px; |
| | | } |
| | | |
| | | ::v-deep .el-tabs__active-bar { |
| | | height: 3px; |
| | | } |
| | | } |
| | | } |
| | | </style> |