index.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949
  1. <template>
  2. <div class="dashboard-container">
  3. <div class="block">
  4. <div class="barBtn">
  5. <el-radio-group v-model="choice" class="bnts" size="medium">
  6. <el-radio-button :label="0">普通检索</el-radio-button>
  7. <el-radio-button :label="1">高级检索</el-radio-button>
  8. </el-radio-group>
  9. </div>
  10. <div class="bnh">
  11. <!-- <el-input v-if="choice == 0" style="width: 303px" placeholder="全站搜索病案号" suffix-icon="el-icon-search" v-model="inputOn"></el-input> -->
  12. </div>
  13. <div class="inputs" v-if="choice == 0">
  14. <el-row :gutter="20" class="rowsa">
  15. <el-col :span="4">
  16. <div class="grid-content bg-purple">
  17. <el-input class="inpus" v-model="formData0.recordNum" placeholder="病案号"></el-input>
  18. </div>
  19. </el-col>
  20. <el-col :span="5">
  21. <div class="grid-content bg-purple">
  22. <el-select v-model="formData0.Department" filterable class="selects" placeholder="出院科室">
  23. <el-option v-for="(item, index) in departmentList" :label="item.name" :value="item.id" :key="index"></el-option>
  24. </el-select>
  25. </div>
  26. </el-col>
  27. <el-col :span="5">
  28. <div class="grid-content bg-purple">
  29. <el-select v-model="formData0.problem" class="selects" placeholder="问题属性">
  30. <el-option v-for="(item, index) in levelList" :label="item.name" :value="item.id" :key="index"></el-option>
  31. </el-select>
  32. </div>
  33. </el-col>
  34. <el-col :span="5">
  35. <div class="grid-content bg-purple">
  36. <el-select v-model="formData0.payment" filterable class="selects" placeholder="医疗付款方式">
  37. <el-option v-for="(item, index) in payList" :label="item.name" :value="item.id" :key="index"></el-option>
  38. </el-select>
  39. </div>
  40. </el-col>
  41. <el-col :span="5">
  42. <div class="grid-content bg-purple">
  43. <el-select v-model="formData0.medicalRecord" class="selects" placeholder="全部病案">
  44. <el-option label="已质控" value="1"></el-option>
  45. <el-option label="未质控" value="0"></el-option>
  46. </el-select>
  47. </div>
  48. </el-col>
  49. </el-row>
  50. <el-row :gutter="20" class="rowsa">
  51. <el-col :span="4">
  52. <div class="grid-content bg-purple">
  53. <el-select v-model="formData0.state" class="selects" placeholder="编辑状态">
  54. <!-- statusList -->
  55. <el-option v-for="(item, index) in statusList" :label="item.name" :value="item.id" :key="index"></el-option>
  56. </el-select>
  57. </div>
  58. </el-col>
  59. <el-col :span="5">
  60. <div class="grid-content bg-purple">
  61. <el-date-picker
  62. class="selects"
  63. v-model="formData0.startTime"
  64. type="date"
  65. format="yyyy 年 MM 月 dd 日"
  66. value-format="yyyyMMdd"
  67. placeholder="开始日期"
  68. ></el-date-picker>
  69. </div>
  70. </el-col>
  71. <el-col :span="5">
  72. <div class="grid-content bg-purple">
  73. <el-date-picker class="selects" v-model="formData0.endTime" type="date" format="yyyy 年 MM 月 dd 日" value-format="yyyyMMdd" placeholder="结束日期"></el-date-picker>
  74. </div>
  75. </el-col>
  76. <el-col :span="5">
  77. <div class="grid-content bg-purple">
  78. <el-select v-model="formData0.Coder" filterable class="selects" placeholder="编码员">
  79. <el-option v-for="(item, index) in coderList" :label="item.name" :value="item.id" :key="index"></el-option>
  80. </el-select>
  81. </div>
  82. </el-col>
  83. <el-col :span="5">
  84. <div class="grid-content bg-purple">
  85. <!-- <el-select
  86. v-model="formData0.Coder"
  87. class="selects"
  88. placeholder="住院医师"
  89. >
  90. <el-option label="出院科室" value="i出院科室"> </el-option>
  91. </el-select> -->
  92. </div>
  93. </el-col>
  94. </el-row>
  95. <!-- <div class="fBtn">
  96. <el-button class="btn1" @click="reset">重置条件</el-button>
  97. <el-button class="btn2" @click="funQuery">检索</el-button>
  98. </div> -->
  99. </div>
  100. <div class="barBtn" v-else>
  101. <el-form ref="form" :model="formData1" label-width="100px">
  102. <el-form-item v-for="(item, index) in formData1.seniorList" :key="index">
  103. <!-- 下拉框开始 -->
  104. <el-select class="width150" filterable v-model="item.key" @change="getOneCleck(item, index)" placeholder="请选择">
  105. <!-- fieldList -->
  106. <el-option v-for="(item, index) in fieldList" :label="item.name" :value="item.id" :key="index"></el-option>
  107. </el-select>
  108. <!-- 下拉框结束 -->
  109. <span class="pind10"></span>
  110. <!-- 中间选择输入框开始 -->
  111. <span v-if="keyList.includes(item.key)">
  112. <el-select class="width150" filterable v-model="item.value" placeholder="请选择">
  113. <el-option v-for="(itemo, indexo) in item.selectList" :key="indexo" :label="itemo.label" :value="itemo.id"></el-option>
  114. </el-select>
  115. </span>
  116. <span v-else>
  117. <el-input class="width150" v-model="item.value" placeholder=""></el-input>
  118. </span>
  119. <!-- 中间选择输入框结束 -->
  120. <span class="pind10"></span>
  121. <!-- 条件下拉开始 -->
  122. <el-select class="width90" v-model="item.type" placeholder="">
  123. <el-option label="精确" value="1"></el-option>
  124. <el-option label="模糊" value="0"></el-option>
  125. </el-select>
  126. <!-- 条件下拉结束 -->
  127. <span class="pind10"></span>
  128. <!-- 增减重置选项按钮开始 -->
  129. <span>
  130. <el-button :disabled="formData1.seniorList.length == 1" type="primary" icon="el-icon-minus" @click="funDel(index)"></el-button>
  131. <el-button type="primary" icon="el-icon-plus" @click="funAdd" v-if="index == 0"></el-button>
  132. <!-- <el-button type="primary" @click="funRead">重置</el-button> -->
  133. </span>
  134. <!-- 增减重置选项按钮结束 -->
  135. </el-form-item>
  136. <el-form-item label="患者年龄">
  137. <div class="zkSelect">
  138. <el-input class="width300" v-model="formData1.ageday" :min="28" :max="365" type="number" placeholder="<28天" @blur="funBlur">
  139. <template slot="append">
  140. <el-select v-model="formData1.age_start_type" placeholder="请选择">
  141. <el-option v-for="item in Dayoptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
  142. </el-select>
  143. </template>
  144. </el-input>
  145. </div>
  146. <!-- <el-input class="width300" v-model="formData1.ageday" :min="28" :max="365" type="number" placeholder="<28天" @blur="funBlur">
  147. <template slot="append">天</template>
  148. </el-input> -->
  149. <span class="pind" style="color: #ccc">——</span>
  150. <div class="zkSelect">
  151. <el-input class="width300" v-model="formData1.ageyear" :min="1" :max="150" type="number" placeholder="1-150岁" @blur="funBlur">
  152. <template slot="append">
  153. <el-select v-model="formData1.age_end_type" placeholder="请选择">
  154. <el-option v-for="item in Dayoptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
  155. </el-select>
  156. </template>
  157. </el-input>
  158. </div>
  159. </el-form-item>
  160. <el-form-item label="住院天数">
  161. <div class="zkSelect">
  162. <el-input class="width300" v-model="formData1.hospitalizationon" :min="28" :max="365" type="number" @blur="funBluron">
  163. <template slot="append"></template>
  164. </el-input>
  165. </div>
  166. <!-- <el-input class="width300" v-model="formData1.ageday" :min="28" :max="365" type="number" placeholder="<28天" @blur="funBlur">
  167. <template slot="append">天</template>
  168. </el-input> -->
  169. <span class="pind" style="color: #ccc">——</span>
  170. <div class="zkSelect">
  171. <el-input class="width300" v-model="formData1.hospitalizationin" :min="1" :max="150" type="number" @blur="funBluron">
  172. <template slot="append"></template>
  173. </el-input>
  174. </div>
  175. </el-form-item>
  176. <el-form-item label="时间范围">
  177. <!-- <el-date-picker
  178. class="width500"
  179. v-model="formData1.rangeDate"
  180. size="large"
  181. type="daterange"
  182. range-separator="-"
  183. start-placeholder="开始日期"
  184. end-placeholder="结束日期"
  185. format="yyyy 年 MM 月 dd 日"
  186. value-format="yyyyMMdd"
  187. ></el-date-picker> -->
  188. <el-date-picker v-model="formData1.startTime" type="date" format="yyyy 年 MM 月 dd 日" value-format="yyyyMMdd" placeholder="开始日期"></el-date-picker>
  189. <span class="pind10"></span>
  190. <el-date-picker v-model="formData1.endTime" type="date" format="yyyy 年 MM 月 dd 日" value-format="yyyyMMdd" placeholder="结束日期"></el-date-picker>
  191. </el-form-item>
  192. </el-form>
  193. </div>
  194. <div class="fBtn" style="position: relative">
  195. <el-button class="btn1" style="position: absolute; right: 30px" @click="reset">重置条件</el-button>
  196. <el-button class="btn2" @click="funQuery">检索</el-button>
  197. </div>
  198. </div>
  199. <div class="tableBox">
  200. <div class="flextab" style="margin: 0;margin-bottom:15px;">
  201. <div class="flextabtitle-box">
  202. <!-- <Title :title="'病案列表'" /> -->
  203. <div class="h-title">
  204. <span class="blue"></span>
  205. <span class="text">病案列表</span>
  206. </div>
  207. <div class="flextab-item">
  208. <div>平均住院日: <span class="s-1">{{ ARG_STAY }}</span><span class="s-2"></span></div>
  209. <div>平均费用: <span class="s-1">{{ ARG_F_D }}</span><span class="s-2"> 元;</span></div>
  210. <div>例数: <span class="s-1">{{paginationData.total?paginationData.total:0}}</span><span class="s-2"></span></div>
  211. <div>死亡例数: <span class="s-1">{{AEM01C?AEM01C:0}}</span><span class="s-2"></span></div>
  212. </div>
  213. </div>
  214. <el-button class="btn1" type="primary" icon="el-icon-download" @click="funExport('质控列表', '/qualityList')">导出execl</el-button>
  215. </div>
  216. <el-table :data="tableData" border style="width: 100%">
  217. <el-table-column type="index" label="序号" width="70px"></el-table-column>
  218. <el-table-column prop="AAA28" label="病案号">
  219. <template slot-scope="scope">
  220. <span class="blue" @click="funGoto(scope.row.MED_REC_ID)">{{ scope.row.AAA28 }}</span>
  221. </template>
  222. </el-table-column>
  223. <el-table-column prop="AAA01" label="患者姓名"></el-table-column>
  224. <el-table-column prop="AAC01" label="出院时间"></el-table-column>
  225. <el-table-column prop="AAA02C" label="性别"></el-table-column>
  226. <el-table-column prop="AAA04" label="年龄"></el-table-column>
  227. <template v-for="(item, ind) in formData1.seniorList">
  228. <el-table-column :key="ind" v-if=" tabKeyList.includes(item.key) " :label="funkdef(item.key)" :prop="item.key"></el-table-column>
  229. </template>
  230. <el-table-column prop="ABC01N" label="主诊断名称"></el-table-column>
  231. <el-table-column prop="ABC01C" label="主诊断编码"></el-table-column>
  232. <el-table-column prop="ICD9_NAME" label="主手术名称"></el-table-column>
  233. <el-table-column prop="ICD9_ID1" label="主手术编码"></el-table-column>
  234. <el-table-column v-if="columnShow" :prop="clumText.id" :label="clumText.name"></el-table-column>
  235. <el-table-column prop="AAA29" label="住院次数"></el-table-column>
  236. <el-table-column prop="AAC11N" label="出院科室"></el-table-column>
  237. <el-table-column prop="ADA01" label="住院总费用"></el-table-column>
  238. <el-table-column prop="F_D" label="药品总费用"></el-table-column>
  239. <el-table-column prop="J" label="材料总费用"></el-table-column>
  240. <!-- <el-table-column prop="address" label="业务操作人"> </el-table-column> -->
  241. <el-table-column prop="AAC04" label="实际住院(天)"></el-table-column>
  242. <!-- <el-table-column prop="ATTEND_GRP_NAME" label="主诊组"></el-table-column> -->
  243. <el-table-column prop="AEM01C" label="离院方式"></el-table-column>
  244. <el-table-column prop="AAB06C" label="入院途径"></el-table-column>
  245. <!-- <el-table-column prop="ARG_STAY" label="平均住院日"></el-table-column> -->
  246. <!-- <el-table-column prop="ARG_F_D" label="平均费用"></el-table-column> -->
  247. <el-table-column prop="SSPB" label="手术判别"></el-table-column>
  248. <el-table-column prop="AAB11N" label="入院科室"></el-table-column>
  249. <el-table-column prop="AAB01" label="入院时间"></el-table-column>
  250. </el-table>
  251. <!-- 分页控制 -->
  252. <el-pagination
  253. v-if="tableData && tableData.length !== 0"
  254. @size-change="SizeChangeEvent"
  255. @current-change="pageHasChanged"
  256. :total="paginationData.total"
  257. background
  258. class="table-pagination"
  259. style="margin: 15px 0px"
  260. :page-size="paginationData.pageSize"
  261. :current-page.sync="paginationData.currentPage"
  262. layout="total, sizes, prev, pager, next, jumper"
  263. ></el-pagination>
  264. <!-- <mPagination style="margin:15px 0px;"
  265. v-if="tableData && tableData.length !== 0"
  266. :data="paginationData"
  267. @SizeChangeEvent="SizeChangeEvent"
  268. @pageChangeEvent="pageHasChanged"></mPagination> -->
  269. </div>
  270. </div>
  271. </template>
  272. <script>
  273. import { downloadFile } from '@/httpFile';
  274. import Title from '@/components/Title';
  275. import { mapGetters } from 'vuex';
  276. import mPagination from '@/components/m-pagination';
  277. // import { json } from 'stream/consumers';
  278. export default {
  279. name: 'Dashboard',
  280. components: {
  281. Title,
  282. mPagination,
  283. },
  284. computed: {
  285. ...mapGetters(['name']),
  286. },
  287. data() {
  288. return {
  289. choice: 0,
  290. clumText: {},
  291. columnShow: false,
  292. labelList: ['ICD10_NAME'],
  293. formData0: {
  294. recordNum: '', //病案号
  295. Department: '', //出院科室
  296. problem: 'all', //问题属性
  297. payment: '', //医疗付款方式
  298. state: '', //编辑状态
  299. // rangeDate: [], //时间
  300. endTime: '',
  301. startTime: '',
  302. Coder: '', //住院医师
  303. medicalRecord: '', //全部病案
  304. },
  305. Dayoptions: [
  306. {
  307. value: 1,
  308. label: '天',
  309. },
  310. {
  311. value: 2,
  312. label: '岁',
  313. },
  314. ],
  315. formData1: {
  316. ageday: '',
  317. age_start_type: 2,
  318. age_end_type: 2,
  319. ageyear: '',
  320. // rangeDate: [],
  321. endTime: '',
  322. startTime: '',
  323. seniorList: [
  324. {
  325. key: '',
  326. value: '',
  327. type: '0',
  328. selectList: [],
  329. },
  330. {
  331. key: '',
  332. value: '',
  333. type: '0',
  334. selectList: [],
  335. },
  336. ],
  337. hospitalizationon: '',
  338. hospitalizationin: '',
  339. },
  340. inputOn: '', //全站搜索病案号
  341. value: '',
  342. value1: '',
  343. selectList: [],
  344. labelText: '',
  345. keyList: ['OPE_LEVEL', 'SSPB', 'ABC03C','RYQK', 'AAA02C', 'RJSS', 'AEM01C', 'AAC11N', 'LNSSQ', 'LNSSH', 'AEL01'],
  346. tabKeyList: ['ICD10_ID1_first', 'ICD10_NAME_first', 'ICD10_ID1', 'ICD10_NAME','ICD9_ID1', 'ICD9_NAME', 'ABC03C','RYQK', 'OPE_LEVEL', 'ABA01N', 'ABA01C', 'AEL01', 'RJSS','LNSSQ','LNSSH'], // 表头key动态展示
  347. tableData: [],
  348. payList: [], //支付方式
  349. departmentList: [], //出院科室
  350. levelList: [], //问题属性
  351. coderList: [], //编码元
  352. statusList: [], //编辑状态
  353. fieldList: [], //主要诊断名字
  354. department: [], //科室
  355. // 分页数据
  356. paginationData: {
  357. total: 10,
  358. currentPage: 1,
  359. pageSize: 10,
  360. },
  361. ARG_F_D: '',
  362. ARG_STAY: '',
  363. AEM01C:'',
  364. };
  365. },
  366. mounted() {
  367. },
  368. created() {
  369. this.funQuery();
  370. this.selectInfo();
  371. },
  372. methods: {
  373. funkdef(key) {
  374. for (let item in this.fieldList) {
  375. if (this.fieldList[item].id == key) {
  376. return this.fieldList[item].name;
  377. }
  378. }
  379. },
  380. /**
  381. * 根据下拉框选择出现对应数据
  382. * @param {val} 选中当前
  383. */
  384. getOneCleck(val, index) {
  385. this.$set(this.formData1.seniorList[index], 'value', '')
  386. var that = this;
  387. this.labelText = val.key;
  388. var text = this.fieldList.filter(item => val.key == item.id);
  389. that.$nextTick(function () {
  390. that.clumText = {
  391. name: text[0].name,
  392. id: text[0].id,
  393. };
  394. });
  395. if (val.key == 'OPE_LEVEL') {
  396. val.selectList = [
  397. {
  398. label: '全部',
  399. id: 0,
  400. },
  401. {
  402. label: '一级手术',
  403. id: 1,
  404. },
  405. {
  406. label: '二级手术',
  407. id: 2,
  408. },
  409. {
  410. label: '三级手术',
  411. id: 3,
  412. },
  413. {
  414. label: '四级手术',
  415. id: 4,
  416. },
  417. ];
  418. } else if (val.key == 'SSPB') {
  419. val.selectList = [
  420. {
  421. label: '全部',
  422. id: 5,
  423. },
  424. {
  425. label: '介入治疗',
  426. id: 4,
  427. },
  428. {
  429. label: '手术',
  430. id: 1,
  431. },
  432. {
  433. label: '诊断操作',
  434. id: 2,
  435. },
  436. {
  437. label: '治疗操作',
  438. id: 3,
  439. },
  440. {
  441. label: '空',
  442. id: 0,
  443. },
  444. ];
  445. } else if (val.key == 'AAA02C') {
  446. val.selectList = [
  447. {
  448. label: '全部',
  449. id: 0,
  450. },
  451. {
  452. label: '男',
  453. id: 1,
  454. },
  455. {
  456. label: '女',
  457. id: 2,
  458. },
  459. {
  460. label: '未知的性别',
  461. id: 3,
  462. },
  463. {
  464. label: '未说明的性别',
  465. id: 4,
  466. },
  467. ];
  468. } else if (val.key == 'RJSS') {
  469. val.selectList = [
  470. {
  471. label: '全部',
  472. id: 0,
  473. },
  474. {
  475. label: '是',
  476. id: 1,
  477. },
  478. {
  479. label: '否',
  480. id: 2,
  481. },
  482. ];
  483. } else if (val.key == 'ABC03C') {
  484. val.selectList = [
  485. {
  486. label: '全部',
  487. id: 0,
  488. },
  489. {
  490. label: '有',
  491. id: 1,
  492. },
  493. {
  494. label: '临床未确定',
  495. id: 2,
  496. },
  497. {
  498. label: '情况不明',
  499. id: 3,
  500. },
  501. {
  502. label: '无',
  503. id: 4,
  504. },
  505. ];
  506. } else if (val.key == 'RYQK') {
  507. val.selectList = [
  508. {
  509. label: '全部',
  510. id: 0,
  511. },
  512. {
  513. label: '有',
  514. id: 1,
  515. },
  516. {
  517. label: '临床未确定',
  518. id: 2,
  519. },
  520. {
  521. label: '情况不明',
  522. id: 3,
  523. },
  524. {
  525. label: '无',
  526. id: 4,
  527. },
  528. ];
  529. } else if (val.key == 'AEM01C') {
  530. val.selectList = [
  531. {
  532. label: '全部',
  533. id: 0,
  534. },
  535. {
  536. label: '医嘱离院',
  537. id: 1,
  538. },
  539. {
  540. label: '医嘱转院',
  541. id: 2,
  542. },
  543. {
  544. label: '医嘱转社区卫生服务机构/乡镇卫生院',
  545. id: 3,
  546. },
  547. {
  548. label: '非医嘱离院',
  549. id: 4,
  550. },
  551. {
  552. label: '死亡',
  553. id: 5,
  554. },
  555. {
  556. label: '其他',
  557. id: 6,
  558. },
  559. ];
  560. } else if (val.key == 'AAC11N') {
  561. for (let item in this.departmentList) {
  562. this.departmentList[item];
  563. val.selectList.push({
  564. label: this.departmentList[item].name,
  565. id: this.departmentList[item].id,
  566. });
  567. }
  568. } else if (val.key == 'LNSSQ' || val.key == 'LNSSH') {
  569. val.selectList = [
  570. {
  571. label: '全部',
  572. id: '0',
  573. },
  574. {
  575. label: '有',
  576. id: '1',
  577. },
  578. {
  579. label: '无',
  580. id: '2',
  581. },
  582. ];
  583. } else if (val.key == 'AEL01') {
  584. val.selectList = [
  585. {
  586. label: '全部',
  587. id: '0',
  588. },
  589. {
  590. label: '有',
  591. id: '1',
  592. },
  593. {
  594. label: '无',
  595. id: '2',
  596. },
  597. ];
  598. }
  599. this.$nextTick();
  600. },
  601. funRead() {
  602. //重置
  603. Object.assign(this.$data.formData1, this.$options.data().formData1);
  604. },
  605. funExport(fileName, httpUrl) {
  606. //查询
  607. var pramse = {};
  608. let min = this.formData1.hospitalizationon;
  609. let max = this.formData1.hospitalizationin;
  610. if (this.choice == 0) {
  611. // hospitalizationon: '',
  612. // hospitalizationin: '',
  613. pramse = {
  614. level: this.formData0.problem || null, //问题属性
  615. AAA28: this.formData0.recordNum || null, //病案号
  616. AAC11C: this.formData0.Department || null, //出院科室
  617. AAA26C: this.formData0.payment || null, //付款方式
  618. status: this.formData0.state || null, //编辑状态
  619. AAC01_start_date: this.formData0.startTime || '',
  620. AAC01_end_date: this.formData0.endTime || '',
  621. coder_id: this.formData0.Coder || null, //编码员ID
  622. ORG_STATE: this.formData0.medicalRecord || null, //全部病案
  623. page: this.paginationData.currentPage, //页码
  624. limit: this.paginationData.pageSize, //条数
  625. is_export: 1,
  626. };
  627. } else {
  628. pramse = {
  629. AAC04: `${min?min:0}-${max?max:0}`,
  630. AAC0401:`${min?min:0}`,
  631. AAC0402:`${max?max:0}`,
  632. AAA04: this.formData1.ageyear || null, //年龄
  633. AAA40: this.formData1.ageday || null, //不足一周岁年龄
  634. age_start_type: this.formData1.age_start_type || null,
  635. age_end_type: this.formData1.age_end_type || null,
  636. AAC01_start_date: this.formData1.startTime || '',
  637. AAC01_end_date: this.formData1.endTime || '',
  638. field: this.formData1.seniorList || null, //字段条件
  639. page: this.paginationData.currentPage, //页码
  640. limit: this.paginationData.pageSize, //条数
  641. is_export: 1,
  642. };
  643. }
  644. console.error('pramse', pramse);
  645. this.funExeclPost(fileName, pramse, httpUrl, 'xlsx');
  646. },
  647. funExeclPost(fileName, pramse, httpUrl, format) {
  648. //导出
  649. let httpUrls = '/api' + httpUrl;
  650. downloadFile(httpUrls, pramse, format, fileName).then(res => {
  651. console.error('111', res);
  652. });
  653. },
  654. funGoto(val) {
  655. this.storageSet('getData', val);
  656. const { path } = this.$route
  657. let toPath
  658. if (path === '/hospital-search') {
  659. toPath = '/hospital-details'
  660. } else {
  661. toPath = '/details'
  662. }
  663. // status = 1 代表不能复制文本
  664. this.$router.push({ path: toPath })
  665. },
  666. funBlur() {
  667. if (this.formData1.ageday > 356) {
  668. this.formData1.ageday = 356;
  669. }
  670. if (this.formData1.ageyear > 150) {
  671. this.formData1.ageyear = 150;
  672. }
  673. },
  674. funBluron() {
  675. if (this.formData1.hospitalizationon && this.formData1.hospitalizationin) {
  676. if (this.formData1.hospitalizationon > this.formData1.hospitalizationin) {
  677. this.$message('起止住院天数输入不正确');
  678. }
  679. }
  680. // this.formData1.hospitalizationon || '0' + '-' + this.formData1.hospitalizationin || '0',
  681. },
  682. funDel(i) {
  683. let index = i;
  684. if(index == 0){
  685. return
  686. }
  687. let list = this.formData1.seniorList;
  688. list.splice(index,1);
  689. this.formData1.seniorList = list;
  690. },
  691. funAdd() {
  692. this.formData1.seniorList.push({
  693. key: '',
  694. value: '',
  695. type: '0',
  696. selectList: [],
  697. });
  698. },
  699. pageHasChanged() {
  700. this.funQuery();
  701. },
  702. SizeChangeEvent(val) {
  703. this.paginationData.pageSize = val;
  704. this.funQuery();
  705. },
  706. selectInfo() {
  707. // let pramse = {};
  708. this.$axios.post('/selectInfo').then(res => {
  709. this.payList = res.data.pay;
  710. //支付方式 pay
  711. this.departmentList = res.data.department;
  712. //出院科室 department
  713. this.levelList = res.data.level;
  714. //问题属性 level
  715. this.coderList = res.data.coder;
  716. //编码元 coder
  717. this.statusList = res.data.status;
  718. this.fieldList = res.data.field;
  719. // this.department = res.data.department
  720. });
  721. },
  722. // 点击检索按钮
  723. funQuery() {
  724. console.error('this.choice111', this.choice);
  725. let min = this.formData1.hospitalizationon;
  726. let max = this.formData1.hospitalizationin;
  727. if (this.labelList.includes(this.labelText)) {
  728. this.columnShow = true;
  729. } else {
  730. this.columnShow = false;
  731. }
  732. //查询
  733. if (this.choice == 0) {
  734. let pramse = {
  735. level: this.formData0.problem || null, //问题属性
  736. AAA28: this.formData0.recordNum || null, //病案号
  737. AAC11C: this.formData0.Department || null, //出院科室
  738. AAA26C: this.formData0.payment || null, //付款方式
  739. status: this.formData0.state || null, //编辑状态
  740. AAC01_start_date: this.formData0.startTime || '',
  741. AAC01_end_date: this.formData0.endTime || '',
  742. coder_id: this.formData0.Coder || null, //编码员ID
  743. ORG_STATE: this.formData0.medicalRecord || null, //全部病案
  744. page: this.paginationData.currentPage, //页码
  745. limit: this.paginationData.pageSize, //条数
  746. is_tm: 1
  747. };
  748. sessionStorage.setItem('Zkpramse', JSON.stringify(pramse));
  749. sessionStorage.setItem('ZkChoice', this.choice);
  750. this.getinfo(pramse);
  751. } else {
  752. let pramse = {
  753. AAC04: `${min?min:0}-${max?max:0}`,
  754. AAC0401:`${min?min:0}`,
  755. AAC0402:`${max?max:0}`,
  756. AAA04: this.formData1.ageyear || null, //年龄
  757. AAA40: this.formData1.ageday || null, //不足一周岁年龄
  758. age_start_type: this.formData1.age_start_type || null,
  759. age_end_type: this.formData1.age_end_type || null,
  760. AAC01_start_date: this.formData1.startTime || '',
  761. AAC01_end_date: this.formData1.endTime || '',
  762. field: this.formData1.seniorList || null, //字段条件
  763. page: this.paginationData.currentPage, //页码
  764. limit: this.paginationData.pageSize, //条数
  765. is_tm: 1
  766. };
  767. sessionStorage.setItem('Zkpramse', JSON.stringify(pramse));
  768. sessionStorage.setItem('ZkChoice', this.choice);
  769. this.getinfo(pramse);
  770. }
  771. },
  772. getinfo(p){
  773. this.$axios.post('/qualityList', p).then(res => {
  774. this.paginationData.total = res.data.count;
  775. this.tableData = res.data.list;
  776. this.ARG_F_D = res.data.ARG_F_D;
  777. this.ARG_STAY = res.data.ARG_STAY;
  778. this.AEM01C = res.data.AEM01C;
  779. });
  780. },
  781. reset() {
  782. // 重置数据
  783. if (this.choice == 0) {
  784. Object.assign(this.$data.formData0, this.$options.data().formData0);
  785. } else {
  786. Object.assign(this.$data.formData1, this.$options.data().formData1);
  787. }
  788. this.funQuery();
  789. },
  790. },
  791. };
  792. </script>
  793. <style scoped>
  794. ::v-deep.el-pagination.is-background .btn-next,
  795. ::v-deep.el-pagination.is-background .btn-prev,
  796. ::v-deep.el-pagination.is-background .el-pager li {
  797. margin: 0 5px;
  798. background-color: #fff;
  799. color: #606266;
  800. min-width: 30px;
  801. border-radius: 2px;
  802. border: 1px solid #dfe3f3;
  803. line-height: 27px;
  804. }
  805. ::v-deep.el-pagination.is-background .el-pager li:not(.disabled).active {
  806. background: #7e8bab;
  807. }
  808. ::v-deep.el-table .el-table__row td {
  809. color: #7e8bab;
  810. border-bottom: 1px solid #f4f4f4;
  811. }
  812. ::v-deep.el-table .el-table__header tr th:first-child {
  813. border-radius: 10px 0px 0px 10px;
  814. }
  815. ::v-deep.el-table .el-table__header tr th:last-child {
  816. border-radius: 0px 10px 10px 0px;
  817. }
  818. ::v-deep.el-table .el-table__header tr th {
  819. background: #f1f6ff;
  820. color: #13171e;
  821. border-bottom: 0px;
  822. }
  823. </style>
  824. <style lang="scss" scoped>
  825. .tableBox {
  826. background: #fff;
  827. padding: 19px;
  828. border-radius: 5px;
  829. font-size: 12px;
  830. }
  831. .block {
  832. background: #fff;
  833. border-radius: 5px;
  834. margin-bottom: 16px;
  835. padding: 20px 30px;
  836. margin-bottom: 20px;
  837. .fBtn {
  838. display: flex;
  839. align-items: center;
  840. justify-content: center;
  841. .btn1 {
  842. background: #185da6;
  843. color: #fff;
  844. }
  845. .btn2 {
  846. color: #185da6;
  847. background: #d5e4ff;
  848. }
  849. }
  850. .bnh {
  851. margin-bottom: 20px;
  852. }
  853. .barBtn {
  854. display: flex;
  855. align-items: center;
  856. justify-content: center;
  857. }
  858. .selects {
  859. width: 100%;
  860. }
  861. .rowsa {
  862. margin-bottom: 20px;
  863. }
  864. }
  865. .tableBox {
  866. background: #fff;
  867. padding: 19px;
  868. border-radius: 5px;
  869. }
  870. .dashboard {
  871. &-container {
  872. margin: 30px;
  873. }
  874. &-text {
  875. font-size: 30px;
  876. line-height: 46px;
  877. }
  878. }
  879. .pind {
  880. padding: 0 20px;
  881. }
  882. .pind10 {
  883. padding: 0 5px;
  884. }
  885. .width150 {
  886. width: 200px;
  887. }
  888. .width300 {
  889. width: 295px;
  890. }
  891. .width500 {
  892. width: 645px;
  893. }
  894. .width90 {
  895. width: 90px;
  896. }
  897. .blue {
  898. color: #185da6;
  899. }
  900. .h-title {
  901. display: flex;
  902. .blue {
  903. display: block;
  904. width: 6px;
  905. height: 17px;
  906. background: linear-gradient(180deg, #185da6 0%, #3195ff 100%);
  907. border-radius: 3px;
  908. }
  909. .text {
  910. font-size: 16px;
  911. font-weight: 600;
  912. color: #13171e;
  913. margin: 0 0 0 14px;
  914. }
  915. }
  916. .flextabtitle-box{
  917. display: flex;
  918. align-items: center;
  919. }
  920. .flextab-item{
  921. display: flex;
  922. align-items: center;
  923. margin-left: 20px;
  924. }
  925. .flextab-item>div {
  926. font-size: 15px;
  927. margin-right: 15px;
  928. }
  929. .flextab-item>div span.s-1{
  930. color: #185da6;
  931. }
  932. .flextab-item>div span.s-2{
  933. font-weight: bold;
  934. }
  935. </style>