CaseHomeSearch.vue 30 KB

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