123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167 |
- <template>
- <div class="dashboard-container" :class="{'nocopy': $route.meta.nocopy}">
- <div class="block">
- <div class="barBtn">
- <el-radio-group v-model="choice" class="bnts" size="medium" @change="handleRadioChange">
- <el-radio-button :label="0">普通检索</el-radio-button>
- <el-radio-button :label="1">高级检索</el-radio-button>
- <el-radio-button :label="2">专业检索</el-radio-button>
- </el-radio-group>
- </div>
- <div class="bnh" />
- <!-- 普通检索 -->
- <div v-if="choice == 0" class="bnh">
- <el-form :inline="true" class="demo-form-inline">
- <el-form-item label="">
- <el-input v-model="formData0.input" placeholder="输入关键字搜索" class="input-with-select width500"></el-input>
- </el-form-item>
- <el-form-item>
- <el-date-picker
- v-model="formData1.startTime"
- type="date"
- format="yyyy 年 MM 月 dd 日"
- value-format="yyyyMMdd"
- placeholder="出院时间开始"
- :picker-options="pickerOptions"
- :disabled="lock"
- />
- <span class="pind10" />
- <el-date-picker
- v-model="formData1.endTime"
- type="date"
- format="yyyy 年 MM 月 dd 日"
- value-format="yyyyMMdd"
- placeholder="出院时间结束"
- :picker-options="pickerOptions"
- :disabled="lock"
- />
- </el-form-item>
- </el-form>
- <div style="margin: 15px">
- <el-button type="primary" class="long-btn" @click="searchBtn(0)">检索</el-button>
- </div>
- </div>
- <!-- 高级检索 -->
- <div v-if="choice == 1" class="barBtn">
- <el-form ref="form" :model="formData1" label-width="100px">
- <el-form-item v-for="(item, index) in formData1.seniorList" :key="index">
- <!-- 下拉框开始 -->
- <el-select v-if="index != 0" v-model="item.select_type" :class="index != 0 ? 'marginLeft' : ''" class="width100" filterable placeholder="" :disabled="item.lock">
- <!-- fieldList -->
- <el-option label="且" :value="0" />
- <el-option label="或者" :value="1" />
- <el-option label="不包含" :value="2" />
- </el-select>
- <span v-if="index != 0" class="pind10" />
- <el-select v-model="item.key" class="width150" filterable placeholder="请选择" @change="funSelect(index)" :disabled="item.lock">
- <!-- fieldList -->
- <el-option v-for="(item, index) in fieldList" :key="index" :label="item.name" :value="item.id" :disabled="item.lock" />
- </el-select>
- <!-- 下拉框结束 -->
- <span class="pind10" />
- <!-- 中间选择输入框开始 -->
- <span v-if="item.key == 'AAC11N'">
- <el-select v-model="item.value" class="width150" filterable placeholder="请选择" :disabled="item.lock">
- <el-option v-for="(itemo, indexo) in departmentList" :key="indexo" :label="itemo.name" :value="itemo.name" />
- </el-select>
- </span>
- <span v-else>
- <el-input v-model="item.value" class="width150" :disabled="item.lock" placeholder="请输入" />
- </span>
- <!-- 中间选择输入框结束 -->
- <span class="pind10" />
- <!-- 条件下拉开始 -->
- <el-select v-model="item.type" class="width90" :disabled="item.lock" placeholder="">
- <el-option label="精确" value="1" />
- <el-option label="模糊" value="0" />
- </el-select>
- <!-- 条件下拉结束 -->
- <span class="pind10" />
- <!-- 增减重置选项按钮开始 -->
- <span>
- <el-button v-if="index != 0 && !item.lock" :disabled="formData1.seniorList.length == 1" type="primary" icon="el-icon-minus" @click="funDel(index)" />
- <el-button v-if="index == formData1.seniorList.length - 1" type="primary" icon="el-icon-plus" @click="funAdd" />
- <el-button v-if="index === formData1.seniorList.length - 1 && searchNum" @click="onLockResult">结果中检索</el-button>
- </span>
- <!-- 增减重置选项按钮结束 -->
- </el-form-item>
- <el-form-item label="出院时间">
- <el-date-picker
- v-model="formData1.startTime"
- type="date"
- format="yyyy 年 MM 月 dd 日"
- value-format="yyyyMMdd"
- placeholder="开始日期"
- :picker-options="pickerOptions"
- :disabled="lock"
- />
- <span class="pind10" />
- <el-date-picker
- v-model="formData1.endTime"
- type="date"
- format="yyyy 年 MM 月 dd 日"
- value-format="yyyyMMdd"
- placeholder="结束日期"
- :picker-options="pickerOptions"
- :disabled="lock"
- />
- </el-form-item>
- <el-form-item label="住院天数">
- <el-input-number v-model="formData1.AAC04_start" :min="1" :step="1" :controls="false" placeholder="起始天数" style="width: 220px" :disabled="lock"></el-input-number>
- <span class="pind10" />
- <el-input-number v-model="formData1.AAC04_end" :min="1" :step="1" :controls="false" placeholder="终止天数" style="width: 220px" :disabled="lock"></el-input-number>
- </el-form-item>
- <el-form-item label="患者年龄">
- <el-input-number
- v-model="formData1.AAA04_start"
- :min="1"
- :step="1"
- :controls="false"
- :placeholder="formData1.ageType1 ? '起始年龄' : '起始天数'"
- style="width: 220px"
- :disabled="lock"
- ></el-input-number>
- <el-select v-model="formData1.ageType1" :disabled="lock" placeholder="请选择" style="width: 80px">
- <el-option label="年龄" :value="1"></el-option>
- <el-option label="天数" :value="0"></el-option>
- </el-select>
- <span class="pind10" />
- ——
- <span class="pind10" />
- <el-input-number
- v-model="formData1.AAA04_end"
- :min="1"
- :step="1"
- :controls="false"
- :placeholder="formData1.ageType2 ? '终止年龄' : '终止天数'"
- style="width: 220px"
- :disabled="lock"
- ></el-input-number>
- <el-select v-model="formData1.ageType2" :disabled="lock" placeholder="请选择" style="width: 80px">
- <el-option label="年龄" :value="1"></el-option>
- <el-option label="天数" :value="0"></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="住院号码">
- <el-input v-model="formData1.AAA28" placeholder="请输入" style="width: 220px"></el-input>
- </el-form-item>
- </el-form>
- </div>
- <div v-if="choice == 1" class="fBtn" style="position: relative">
- <el-button class="btn11" @click="reset">重置条件</el-button>
- <el-button type="primary" class="long-btn" @click="searchBtn(1)">检索</el-button>
- </div>
- <!-- 专业检索 -->
- <ProfessionSearchVue ref="professionSearch" v-if="choice == 2" @search="handleProfessionSearchFn" @export="handelExport" @reset="handleReset" />
- </div>
- <div class="tableBox">
- <div class="flextab" style="margin: 0; margin-bottom: 30px; display: block">
- <div class="flextabtitle-box">
- <div class="h-title">
- <span class="blue" />
- <span class="text">检索结果</span>
- <span v-if="paginationData.total != 0" class="titleName">
- 找到
- <span class="title-left-span">{{ paginationData.total }}</span>
- 个例条相关结果
- </span>
- </div>
- </div>
- </div>
- <el-radio-group v-model="onClass">
- <el-radio-button label="0">列表</el-radio-button>
- <el-radio-button label="1">详情</el-radio-button>
- </el-radio-group>
- <div class="title-right" v-if="!isWhitelist">
- <el-button v-if="choice == 0" type="primary" icon="el-icon-download" @click="normalDownload('住院病历-普通检索')" style="margin-left: 20px;" class="export-btn">导出数据</el-button>
- <el-button v-if="choice == 1" type="primary" icon="el-icon-download" @click="highDownload('住院病历-高级检索')" style="margin-left: 20px;" class="export-btn">导出数据</el-button>
- <el-button v-if="choice == 2" type="primary" icon="el-icon-download" @click="onExport" style="margin-left: 20px;" class="export-btn">导出数据</el-button>
- </div>
- <div v-if="onClass == '0'" class="conter" style="border: none">
- <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange" @sort-change="handleSortChange">
- <el-table-column type="index" :index="indexAdd" label="序号" width="70px" />
- <el-table-column prop="AAA28" label="住院号码">
- <template slot-scope="scope">
- <span class="blue" @click="funGoto(scope.row.MED_REC_ID ? scope.row.MED_REC_ID : scope.row.ZYH)">
- <template>
- <div>
- {{ scope.row.AAA28 }}
- </div>
- </template>
- </span>
- </template>
- </el-table-column>
- <el-table-column prop="AAA04" label="年龄" />
- <el-table-column prop="AAC11N" label="出院科室" />
- <el-table-column prop="AAB01" label="入院时间" sortable />
- <el-table-column prop="AAC01" label="出院时间" sortable />
- </el-table>
- <!-- 分页控制 -->
- </div>
- <div v-for="(item, index) in tableDataDetails" :key="index">
- <div v-if="onClass == '1'" class="conter" style="padding: 20px;">
- <!-- 普通检索、高级检索 -->
- <div v-if="choice !=2">
- <div v-for="(i, j) in item.EMR_BL_BL01" :key="j">
- <div class="conter-title">
- <span>{{ paginationData.pageSize * (paginationData.currentPage - 1) + (index + 1) }}.{{ j + 1 }}</span>
- 病历名称:
- <span v-for="(k, q) in fieldList" :key="q" class="blue">{{ i.BLLB == k.id ? k.name : '' }}</span>
- </div>
- <div class="conter-case">
- <div v-html="i.HJNR" />
- </div>
- </div>
- <!-- 结账单 -->
- <div v-if="item.FeeDetailed && item.FeeDetailed.length" style="margin-bottom: 20px">
- <span class="conter-title">{{ paginationData.pageSize * (paginationData.currentPage - 1) + (index + 1) }}.{{ item.EMR_BL_BL01.length + 1 }}</span>
- <el-table :data="item.FeeDetailed" stripe style="width: 100%">
- <el-table-column prop="FYMC" label="费用名称">
- <template slot-scope="scope">
- <span v-html="scope.row.FYMC[0]"></span>
- </template>
- </el-table-column>
- <el-table-column prop="JFRQ" label="计费日期"></el-table-column>
- <el-table-column prop="FYSL" label="费用数量"></el-table-column>
- </el-table>
- </div>
- <!-- 医嘱本 -->
- <div v-if="item.YZB && item.YZB.length" style="margin-bottom: 20px">
- <span class="conter-title" v-if="!item.FeeDetailed.length">
- {{ paginationData.pageSize * (paginationData.currentPage - 1) + (index + 1) }}.{{ item.EMR_BL_BL01.length + 1 }}
- </span>
- <span class="conter-title" v-else>{{ paginationData.pageSize * (paginationData.currentPage - 1) + (index + 1) }}.{{ item.EMR_BL_BL01.length + 2 }}</span>
- <el-table :data="item.YZB" stripe style="width: 100%">
- <el-table-column prop="YZMC" label="医嘱名称">
- <template slot-scope="scope">
- <!-- 高级搜索 -->
- <span v-if="choice" v-html="scope.row.YZMC"></span>
- <!-- 普通搜索 -->
- <span v-else v-html="scope.row.YZMC[0]"></span>
- </template>
- </el-table-column>
- <el-table-column prop="BRKS" label="开嘱科室"></el-table-column>
- <el-table-column prop="KZSJ" label="开嘱时间"></el-table-column>
- <el-table-column prop="ZJE" label="医嘱期限"></el-table-column>
- </el-table>
- </div>
- <div class="conter-num" style="margin-top: 10px">
- 病案号:
- <span class="yeleou" @click="funGoto(item.MED_REC_ID)">{{ item.AAA28 }}</span>
- </div>
- <div class="conter-time">出院时间:{{ item.AAC01 }}</div>
- </div>
- <!-- 专业检索 -->
- <div v-if="choice == 2">
- <!-- 患者信息 -->
- <div v-if="item.patient_info">
- <el-descriptions title="患者信息">
- <el-descriptions-item label="住院号码" v-if="item.patient_info.AAA28">
- <span v-html="item.patient_info.AAA28" @click="funGoto(item.patient_info.MED_REC_ID ? item.patient_info.MED_REC_ID : item.patient_info.ZYH)" class="yeleou"></span>
- </el-descriptions-item>
- <el-descriptions-item label="出院科室" v-if="item.patient_info.AAC11N">
- <span v-html="item.patient_info.AAC11N"></span>
- </el-descriptions-item>
- <el-descriptions-item label="出院时间" v-if="item.patient_info.AAC01">
- <span v-html="item.patient_info.AAC01"></span>
- </el-descriptions-item>
- <el-descriptions-item label="姓名" v-if="item.patient_info.AAA01">
- <span v-html="item.patient_info.AAA01"></span>
- </el-descriptions-item>
- <el-descriptions-item label="性别" v-if="item.patient_info.AAA02C">
- <span v-html="item.patient_info.AAA02C"></span>
- </el-descriptions-item>
- <el-descriptions-item label="入院时间" v-if="item.patient_info.AAB01">
- <span v-html="item.patient_info.AAB01"></span>
- </el-descriptions-item>
- <el-descriptions-item label="住院天数" v-if="item.patient_info.AAC04">
- <span v-html="item.patient_info.AAC04"></span>
- </el-descriptions-item>
- <el-descriptions-item label="年龄" v-if="item.patient_info.AAA04 || item.patient_info.AAA40">
- <span v-html="item.patient_info.AAA04 ? item.patient_info.AAA04 : item.patient_info.AAA40 "></span>
- </el-descriptions-item>
- </el-descriptions>
- </div>
- <!-- 入院记录 -->
- <div v-if="item.ryjl">
- <el-descriptions title="入院记录" :column="1">
- <el-descriptions-item label="整体" v-if="item.ryjl.RYJL_HJNR">
- <span v-html="item.ryjl.RYJL_HJNR"></span>
- </el-descriptions-item>
- <el-descriptions-item label="主诉" v-if="item.ryjl.RYJL_ZHS">
- <span v-html="item.ryjl.RYJL_ZHS"></span>
- </el-descriptions-item>
- <el-descriptions-item label="现病史" v-if="item.ryjl.RYJL_XBS">
- <span v-html="item.ryjl.RYJL_XBS"></span>
- </el-descriptions-item>
- <el-descriptions-item label="既往史" v-if="item.ryjl.RYJL_JWS">
- <span v-html="item.ryjl.RYJL_JWS"></span>
- </el-descriptions-item>
- <el-descriptions-item label="个人史" v-if="item.ryjl.RYJL_GRS">
- <span v-html="item.ryjl.RYJL_GRS"></span>
- </el-descriptions-item>
- <el-descriptions-item label="月经及婚育史+婚育史" v-if="item.ryjl.RYJL_YJJHYS">
- <span v-html="item.ryjl.RYJL_YJJHYS"></span>
- </el-descriptions-item>
- <el-descriptions-item label="家族史" v-if="item.ryjl.RYJL_JZS">
- <span v-html="item.ryjl.RYJL_JZS"></span>
- </el-descriptions-item>
- <el-descriptions-item label="体格检查" v-if="item.ryjl.RYJL_TGJC">
- <span v-html="item.ryjl.RYJL_TGJC"></span>
- </el-descriptions-item>
- <el-descriptions-item label="专科检查" v-if="item.ryjl.RYJL_ZHUANKE">
- <span v-html="item.ryjl.RYJL_ZHUANKE"></span>
- </el-descriptions-item>
- <el-descriptions-item label="辅助检查" v-if="item.ryjl.RYJL_FZJC">
- <span v-for="(aItem, aIndex) of JSON.parse(item.ryjl.RYJL_FZJC)" :key="aIndex">
- <span v-if="aIndex">;</span>
- <span v-html="aItem"></span>
- </span>
- </el-descriptions-item>
- <el-descriptions-item label="初步诊断" v-if="item.ryjl.RYJL_CBZD">
- <span v-for="(aItem, aIndex) of JSON.parse(item.ryjl.RYJL_CBZD)" :key="aIndex">
- <span v-if="aIndex">;</span>
- <span v-html="aItem"></span>
- </span>
- </el-descriptions-item>
- <el-descriptions-item label="第一初步诊断" v-if="item.ryjl.RYJL_CBZB">
- <span v-html="item.ryjl.RYJL_CBZB"></span>
- </el-descriptions-item>
- </el-descriptions>
- </div>
- <!-- 病程记录 -->
- <div v-if="item.bcjl_scbc">
- <el-descriptions title="病程记录" :column="1">
- <el-descriptions-item label="整体" v-if="item.bcjl_scbc.BCJL_SCBC_HJNR">
- <span v-html="item.bcjl_scbc.BCJL_SCBC_HJNR"></span>
- </el-descriptions-item>
- <el-descriptions-item label="病历特点" v-if="item.bcjl_scbc.BCJL_SCBC_BLTD">
- <span v-html="item.bcjl_scbc.BCJL_SCBC_BLTD"></span>
- </el-descriptions-item>
- <el-descriptions-item label="第一初步诊断" v-if="item.bcjl_scbc.BCJL_SCBC_CBZD_ONE">
- <span v-html="item.bcjl_scbc.BCJL_SCBC_CBZD_ONE"></span>
- </el-descriptions-item>
- <el-descriptions-item label="其他初步诊断" v-if="item.bcjl_scbc.BCJL_SCBC_CBZD_OTHER">
- <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_CBZD_OTHER)" :key="aIndex">
- <span v-if="aIndex">;</span>
- <span v-html="aItem"></span>
- </span>
- </el-descriptions-item>
- <el-descriptions-item label="诊断依据" v-if="item.bcjl_scbc.BCJL_SCBC_ZDYJ">
- <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_ZDYJ)" :key="aIndex">
- <span v-if="aIndex">;</span>
- <span v-html="aItem"></span>
- </span>
- </el-descriptions-item>
- <el-descriptions-item label="鉴别诊断" v-if="item.bcjl_scbc.BCJL_SCBC_JBZD">
- <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_JBZD)" :key="aIndex">
- <span v-if="aIndex">;</span>
- <span v-html="aItem"></span>
- </span>
- </el-descriptions-item>
- <el-descriptions-item label="鉴别诊断名称" v-if="item.bcjl_scbc.BCJL_SCBC_JBZDMC">
- <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_JBZDMC)" :key="aIndex">
- <span v-if="aIndex">;</span>
- <span v-html="aItem"></span>
- </span>
- </el-descriptions-item>
- <el-descriptions-item label="诊疗记录" v-if="item.bcjl_scbc.BCJL_SCBC_ZLJH">
- <span v-for="(aItem, aIndex) of JSON.parse(item.bcjl_scbc.BCJL_SCBC_ZLJH)" :key="aIndex">
- <span v-if="aIndex">;</span>
- <span v-html="aItem"></span>
- </span>
- </el-descriptions-item>
- </el-descriptions>
- </div>
- </div>
- </div>
- </div>
- <el-pagination
- v-if="tableData && tableData.length !== 0"
- :total="paginationData.total"
- background
- class="table-pagination"
- style="margin: 15px 0px"
- :page-size="paginationData.pageSize"
- :current-page.sync="paginationData.currentPage"
- layout="total, sizes, prev, pager, next, jumper"
- @size-change="SizeChangeEvent"
- @current-change="pageHasChanged"
- />
- </div>
- </div>
- </template>
- <script>
- import Title from '@/components/Title';
- import { mapGetters } from 'vuex';
- import mPagination from '@/components/m-pagination';
- import { bassNormalSearchDownload, bassHighSearchDownload, professionSearchExport } from '@/api/excel';
- import ProfessionSearchVue from './components/ProfessionSearch.vue';
- export default {
- props: {
- isWhitelist: {
- type: Boolean,
- default() {
- return false
- }
- }
- },
- components: {
- Title,
- mPagination,
- ProfessionSearchVue,
- },
- computed: {
- ...mapGetters(['name']),
- },
- data() {
- return {
- pickerOptions: {
- disabledDate(time) {
- return time.getTime() > Date.now();
- },
- },
- checked: false,
- choice: 0,
- formData0: {
- input: '',
- input1: '',
- },
- formData1: {
- ageday: '',
- age_start_type: 2,
- age_end_type: 2,
- ageyear: '',
- endTime: undefined,
- startTime: undefined,
- seniorList: [
- {
- select_type: 0,
- key: '',
- value: '',
- type: '0',
- lock: false,
- },
- ],
- seniorList1: [],
- hospitalizationon: '',
- hospitalizationin: '',
- AAC04_start: undefined,
- AAC04_end: undefined,
- AAA04_start: undefined,
- AAA04_end: undefined,
- ageType1: 1,
- ageType2: 1,
- AAA28: '',
- },
- tableData: [],
- tableDataDetails: [],
- paginationData: {
- total: 0,
- currentPage: 1,
- pageSize: 10,
- },
- fieldList: [
- { name: '出院记录', id: '1' },
- { name: '入院记录', id: '292' },
- { name: '病程记录', id: '294' },
- { name: '手术记录', id: '303' },
- { name: '病历讨论记录', id: '43' },
- { name: '授权同意类', id: '329' },
- { name: '评估评分表类', id: '79' },
- { name: '死亡记录类', id: '288' },
- { name: '24小时内记录类', id: '18' },
- { name: '医患沟通类', id: '34' },
- { name: '医疗常用表格', id: '87' },
- { name: '医嘱单', id: '49' },
- { name: '出院科室', id: 'AAC11N' },
- { name: '费用明细', id: 'FYMC' },
- { name: '报告单', id: '2000002' },
- { name: '主要诊断名称', id: 'ICD10_NAME' },
- { name: '主要诊断编码', id: 'ICD10_ID1' },
- ],
- keyList: [],
- Dayoptions: [],
- multipleSelection: [],
- onClass: 0,
- setListTwe: [],
- setList: [],
- departmentList: [],
- lock: false,
- searchNum: 0,
- professionSearchData: {},
- // 排序
- sort: [],
- is_tm_path: ['/hospital-caseViews', '/embedIndex-caseViews', '/reviewIndex-caseViews', '/whitelist-caseViews', '/whitelist-search']
- };
- },
- mounted() {
- if (this.storageGet('inputOn')) {
- this.formData0.input = JSON.parse(this.storageGet('inputOn'));
- this.storageRemove('inputOn');
- }
- if (this.storageGet('formData1')) {
- this.formData1 = JSON.parse(this.storageGet('formData1'));
- this.storageRemove('formData1');
- }
- if (this.storageGet('choice')) {
- this.choice = Number(this.storageGet('choice'));
- this.storageRemove('choice');
- }
- if (this.storageGet('setList')) {
- this.setList = JSON.parse(this.storageGet('setList'));
- }
- this.selectInfo();
- this.funQuery(0);
- },
- created() {},
- methods: {
- // table 字段排序
- handleSortChange(column) {
- const { prop, order } = column;
- let str = '';
- if (order === 'descending') {
- str = 'desc';
- } else if (order === 'ascending') {
- str = 'asc';
- } else {
- str = null;
- }
- if (str) {
- this.$set(this.sort, 0, prop)
- this.$set(this.sort, 1, str)
- } else {
- this.sort = []
- }
- this.tableData = [];
-
- if (this.choice == 2) {
- this.handleProfessionSearch(this.professionSearchData)
- } else {
- this.funQuery(this.searchNum);
- }
- },
- // 普通下载
- normalDownload(name) {
- const params = {
- keyword: this.formData0.input,
- AAC01_start: this.formData1.startTime,
- AAC01_end: this.formData1.endTime,
- };
- bassNormalSearchDownload(params).then(res => {
- const content = res.data; // 后台返回二进制数据
- const blob = new Blob([content]);
- const fileName = `${name}.csv`;
- if ('download' in document.createElement('a')) {
- // 非IE下载
- const elink = document.createElement('a');
- elink.download = fileName;
- elink.style.display = 'none';
- elink.href = URL.createObjectURL(blob);
- document.body.appendChild(elink);
- elink.click();
- URL.revokeObjectURL(elink.href); // 释放URL 对象
- document.body.removeChild(elink);
- } else {
- // IE10+下载
- navigator.msSaveBlob(blob, fileName);
- }
- });
- },
- // 高级搜索下载
- highDownload(name) {
- const pramse = {};
- pramse.field = this.formData1.seniorList;
- pramse.AAC01_start = this.formData1.startTime;
- pramse.AAC01_end = this.formData1.endTime;
- pramse.AAA28 = this.formData1.AAA28;
- pramse.AAC04_start = this.formData1.AAC04_start;
- pramse.AAC04_end = this.formData1.AAC04_end;
- const { ageType1, ageType2 } = this.formData1;
- // ageType1 = 1 年龄
- // ageType1 = 0 天数
- if (ageType1) {
- pramse.AAA04_start = this.formData1.AAA04_start;
- } else {
- pramse.AAA40_start = this.formData1.AAA04_start;
- }
- if (ageType2) {
- pramse.AAA04_end = this.formData1.AAA04_end;
- } else {
- pramse.AAA40_end = this.formData1.AAA04_end;
- }
- bassHighSearchDownload(pramse).then(res => {
- const content = res.data; // 后台返回二进制数据
- const blob = new Blob([content]);
- const fileName = `${name}.csv`;
- if ('download' in document.createElement('a')) {
- // 非IE下载
- const elink = document.createElement('a');
- elink.download = fileName;
- elink.style.display = 'none';
- elink.href = URL.createObjectURL(blob);
- document.body.appendChild(elink);
- elink.click();
- URL.revokeObjectURL(elink.href); // 释放URL 对象
- document.body.removeChild(elink);
- } else {
- // IE10+下载
- navigator.msSaveBlob(blob, fileName);
- }
- });
- },
- // 结果中查询
- onLockResult() {
- this.lock = true;
- this.formData1.seniorList.map(item => {
- if (!!item.value) {
- item.lock = true;
- } else {
- item.lock = false;
- }
- });
- this.funAdd();
- },
- indexAdd(index) {
- return index + 1 + (this.paginationData.currentPage - 1) * this.paginationData.pageSize;
- },
- funSelect(index) {
- // 建坤:切换时,取消input 重置
- // this.formData1.seniorList[index].value = "";
- },
- selectInfo() {
- this.$axios.post('/selectInfo').then(res => {
- // 支付方式 pay
- this.departmentList = res.data.department;
- });
- },
- funGoto(val) {
- this.storageSet('inputOn', JSON.stringify(this.formData0.input));
- this.storageSet('formData1', JSON.stringify(this.formData1));
- this.storageSet('choice', JSON.stringify(this.choice));
- this.storageSet('getData', val);
- const { path } = this.$route;
- let toPath;
- if (path === '/hospital-search') {
- toPath = '/hospital-caseViews';
- } else {
- toPath = '/caseViews';
- }
- // status = 1 代表不能复制文本
- this.$router.push({ path: toPath });
- },
- funCeal() {
- this.$refs.multipleTable.clearSelection();
- },
- funSetformData2() {
- this.formData1.seniorList = this.formData1.seniorList1;
- },
- funSetList() {
- this.formData0.input = String(this.formData0.input1);
- },
- funOnclass(val) {
- this.onClass = val;
- },
- handleSelectionChange(val) {
- this.multipleSelection = val;
- },
- SizeChangeEvent(val) {
- this.paginationData.pageSize = val;
- const num = this.lock ? 1 : 0;
- if (this.choice == 2) {
- this.handleProfessionSearch(this.professionSearchData)
- } else {
- this.funQuery(num);
- }
- },
- pageHasChanged(val) {
- this.paginationData.currentPage = val
- const num = this.lock ? 1 : 0;
- if (this.choice == 2) {
- this.handleProfessionSearch(this.professionSearchData)
- } else {
- this.funQuery(num);
- }
- },
- funBlur() {
- if (this.formData1.ageday > 356) {
- this.formData1.ageday = 356;
- }
- if (this.formData1.ageyear > 150) {
- this.formData1.ageyear = 150;
- }
- },
- funBluron() {
- if (this.formData1.hospitalizationon && this.formData1.hospitalizationin) {
- if (this.formData1.hospitalizationon > this.formData1.hospitalizationin) {
- this.$message('起止住院天数输入不正确');
- }
- }
- },
- funDel(i) {
- const index = i;
- if (index == 0) {
- return;
- }
- const list = this.formData1.seniorList;
- list.splice(index, 1);
- this.formData1.seniorList = list;
- },
- funAdd() {
- this.formData1.seniorList.push({
- key: '',
- select_type: 0,
- value: '',
- type: '0',
- lock: false,
- });
- },
- funQuery(num) {
- const pramse = {
- limit: this.paginationData.pageSize,
- page: this.paginationData.currentPage // 是当前页数 默认是0 。普通检索的参数是
- };
- if (this.$route.query.code) {
- pramse.code = this.$route.query.code
- }
- if (this.sort.length) {
- pramse.sort = this.sort
- }
- let queryUrl = 'normalSearch';
- if (this.choice == '0') {
- queryUrl = 'normalSearch';
- // 普通检索
- pramse.keyword = this.formData0.input; // 关键字
- pramse.AAC01_start = this.formData1.startTime;
- pramse.AAC01_end = this.formData1.endTime;
-
- if (this.is_tm_path.includes(this.$route.path)) {
- pramse.is_tm = 1;
- }
- this.$axios3.post(queryUrl, pramse).then(res => {
- this.tableData = res.data.data.list || [];
- this.tableDataDetails = res.data.data.detail || [];
- this.paginationData.total = res.data.data.total;
- if (this.choice == '0' && this.formData0.input) {
- this.setList.push(String(this.formData0.input));
- const listSetto = Array.from(new Set(this.setList));
- this.setList = listSetto;
- this.storageSet('setList', JSON.stringify(this.setList));
- }
- });
- } else {
- queryUrl = 'search';
- // 高级检索
- pramse.field = this.formData1.seniorList;
- pramse.AAC01_start = this.formData1.startTime;
- pramse.AAC01_end = this.formData1.endTime;
- pramse.AAA28 = this.formData1.AAA28;
- pramse.AAC04_start = this.formData1.AAC04_start;
- pramse.AAC04_end = this.formData1.AAC04_end;
- this.searchNum = num;
- const { ageType1, ageType2 } = this.formData1;
- // ageType1 = 1 年龄
- // ageType1 = 0 天数
- if (ageType1) {
- pramse.AAA04_start = this.formData1.AAA04_start;
- } else {
- pramse.AAA40_start = this.formData1.AAA04_start;
- }
- if (ageType2) {
- pramse.AAA04_end = this.formData1.AAA04_end;
- } else {
- pramse.AAA40_end = this.formData1.AAA04_end;
- }
- if (this.is_tm_path.includes(this.$route.path)) {
- pramse.is_tm = 1;
- }
- this.$axios3.post(queryUrl, pramse).then(res => {
- this.tableData = res.data.data.list || [];
- this.tableDataDetails = res.data.data.detail || [];
- this.paginationData.total = res.data.data.total;
- if (this.choice == '0' && this.formData0.input) {
- this.setList.push(String(this.formData0.input));
- const listSetto = Array.from(new Set(this.setList));
- this.setList = listSetto;
- this.storageSet('setList', JSON.stringify(this.setList));
- }
- });
- }
- },
- searchBtn(num) {
- this.paginationData.currentPage = 1;
- this.funQuery(num);
- },
- funBluron() {
- if (this.formData1.hospitalizationon && this.formData1.hospitalizationin) {
- if (this.formData1.hospitalizationon > this.formData1.hospitalizationin) {
- this.$message('起止住院天数输入不正确');
- }
- }
- },
- reset() {
- // 重置数据
- if (this.choice == 0) {
- Object.assign(this.$data.formData0, this.$options.data().formData0);
- } else {
- this.lock = false;
- this.searchNum = 0;
- Object.assign(this.$data.formData1, this.$options.data().formData1);
- }
- },
- // 专业检索
- handleProfessionSearchFn(params) {
- this.paginationData.currentPage = 1
- this.handleProfessionSearch(params)
- },
- handleProfessionSearch(params) {
- this.professionSearchData = params
- const { pageSize, currentPage } = this.paginationData
- const queryData = {
- ...params,
- page_size: pageSize,
- page: currentPage
- }
- if (this.$route.query.code) {
- queryData.code = this.$route.query.code
- }
- if (this.sort.length) {
- queryData.sort = this.sort
- }
-
- if (this.is_tm_path.includes(this.$route.path)) {
- queryData.is_tm = 1;
- }
- this.$axios3.post('/bl/serach', queryData).then(res => {
- this.tableData = res.data.list || [];
- this.tableDataDetails = res.data.detail || [];
- this.paginationData.total = res.data.total;
- });
- },
- // 判断对象是否为空
- isObject(form){
- let a = 0
- for(let key in form){
- if(!!form[key]){
- a++
- }
- }
- if (a) {
- return false
- } else {
- return true
- }
- },
- // 导出
- onExport() {
- this.$refs.professionSearch.onExport()
- },
- handelExport(params) {
- professionSearchExport(params).then(res => {
- const content = res.data; // 后台返回二进制数据
- const blob = new Blob([content]);
- const fileName = `住院病历-专业检索.csv`;
- if ('download' in document.createElement('a')) {
- // 非IE下载
- const elink = document.createElement('a');
- elink.download = fileName;
- elink.style.display = 'none';
- elink.href = URL.createObjectURL(blob);
- document.body.appendChild(elink);
- elink.click();
- URL.revokeObjectURL(elink.href); // 释放URL 对象
- document.body.removeChild(elink);
- } else {
- // IE10+下载
- navigator.msSaveBlob(blob, fileName);
- }
- });
- },
- // 重置
- handleReset() {
- this.paginationData.currentPage = 1
- this.handleProfessionSearch({})
- },
- // 检索类型变化
- handleRadioChange(val) {
- if (val == 2) {
- this.paginationData.currentPage = 1
- this.handleProfessionSearch({})
- }
- }
- },
- };
- </script>
- <style scoped>
- ::v-deep.el-pagination.is-background .btn-next,
- ::v-deep.el-pagination.is-background .btn-prev,
- ::v-deep.el-pagination.is-background .el-pager li {
- margin: 0 5px;
- background-color: #fff;
- color: #606266;
- min-width: 30px;
- border-radius: 2px;
- border: 1px solid #dfe3f3;
- line-height: 27px;
- }
- ::v-deep.el-pagination.is-background .el-pager li:not(.disabled).active {
- background: #7e8bab;
- }
- ::v-deep.el-table .el-table__row td {
- color: #7e8bab;
- border-bottom: 1px solid #f4f4f4;
- }
- ::v-deep.el-table .el-table__header tr th:first-child {
- border-radius: 10px 0px 0px 10px;
- }
- ::v-deep.el-table .el-table__header tr th:last-child {
- border-radius: 0px 10px 10px 0px;
- }
- ::v-deep.el-table .el-table__header tr th {
- background: #f1f6ff;
- color: #13171e;
- border-bottom: 0px;
- }
- </style>
- <style lang="scss" scoped>
- .tableBox {
- background: #fff;
- padding: 19px;
- border-radius: 5px;
- font-size: 12px;
- }
- .block {
- background: #fff;
- border-radius: 5px;
- margin-bottom: 16px;
- padding: 20px;
- margin-bottom: 20px;
- .fBtn {
- margin-bottom: 20px;
- display: flex;
- align-items: center;
- justify-content: center;
- .btn11 {
- position: absolute;
- right: 0;
- }
- }
- .bnh {
- margin: 0 auto;
- margin-bottom: 20px;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- }
- .barBtn {
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .selects {
- width: 100%;
- }
- .rowsa {
- margin-bottom: 20px;
- }
- }
- .tableBox {
- background: #fff;
- padding: 19px;
- border-radius: 5px;
- }
- .dashboard {
- &-container {
- margin: 30px;
- }
- &-text {
- font-size: 30px;
- line-height: 46px;
- }
- }
- .pind {
- padding: 0 20px;
- }
- .pind10 {
- padding: 0 5px;
- }
- .width100 {
- width: 100px;
- }
- .width150 {
- width: 200px;
- }
- .width300 {
- width: 295px;
- }
- .width500 {
- width: 280px;
- }
- .width90 {
- width: 90px;
- }
- .blue {
- color: #185da6;
- }
- .h-title {
- display: flex;
- .blue {
- display: block;
- width: 6px;
- height: 17px;
- background: linear-gradient(180deg, #185da6 0%, #3195ff 100%);
- border-radius: 3px;
- }
- .text {
- font-size: 16px;
- font-weight: 600;
- color: #13171e;
- margin: 0 0 0 14px;
- }
- }
- .flextab-item {
- display: flex;
- align-items: center;
- margin-left: 20px;
- }
- .flextab-item > div {
- font-size: 15px;
- margin-right: 15px;
- }
- .flextab-item > div span.s-1 {
- color: #185da6;
- }
- .flextab-item > div span.s-2 {
- font-weight: bold;
- }
- .inputOn {
- width: 200px;
- margin: 10px 10px;
- }
- .search-title {
- padding: 20px 10px;
- // width: 900px;
- display: flex;
- justify-content: space-between;
- }
- .search-title-span {
- font-size: 20px;
- font-weight: 600;
- color: #13171e;
- }
- .conter {
- position: relative;
- margin: 20px 0;
- border: 1px solid skyblue;
- border-radius: 5px;
- }
- .conter-title {
- font-size: 16px;
- font-weight: 600;
- color: #13171e;
- }
- .blue {
- color: #185da6;
- font-size: 16px;
- font-weight: 600;
- }
- .conter-case {
- margin: 20px 0;
- font-size: 15px;
- text-indent: 30px;
- line-height: 30px;
- }
- .conter-case1 {
- margin: 0 auto;
- margin: 50px 0;
- }
- .yeleou {
- font-size: 16px;
- color: rgb(233, 157, 66);
- cursor: pointer;
- font-weight: 600;
- }
- .conter-num {
- font-size: 15px;
- font-weight: 600;
- }
- .conter-time {
- font-size: 15px;
- padding-top: 10px;
- font-weight: 600;
- }
- .onQuery {
- padding: 0 20px;
- color: rgb(233, 157, 66);
- }
- .cont-title {
- width: 100%;
- padding: 20px;
- display: flex;
- justify-content: space-between;
- }
- .title-left {
- display: flex;
- }
- .title-right {
- display: flex;
- float: right;
- & > div {
- width: 150px;
- border: 1px solid #d5e4ff;
- text-align: center;
- padding: 10px 0;
- }
- }
- .title-right-data {
- background: #3195ff;
- color: #fff;
- }
- .title-left-p {
- line-height: 38px;
- padding: 0 20px;
- font-size: 16px;
- color: #13171e;
- }
- .title-left-span {
- color: #3195ff;
- font-size: 18px;
- padding: 0 5px;
- // font-weight: 600;
- }
- .title-left-btn {
- margin: 0 0 0 40px;
- }
- .title-left-checked {
- margin-top: 10px;
- }
- .conter-checked {
- position: absolute;
- top: 21px;
- left: 30px;
- }
- .bule {
- background: #3195ff !important;
- color: #fff !important;
- }
- .titleName {
- margin-left: 30px;
- vertical-align: top;
- }
- .marginLeft {
- margin-left: -110px;
- }
- ::v-deep .el-input-number .el-input__inner {
- text-align: left;
- }
- </style>
|