YiJiFeiYongLuRu.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <el-container>
  3. <el-header style="margin-top: 8px">
  4. <el-tag effect="dark">住院号: {{ patient.inpatientNo }}</el-tag>
  5. <el-tag effect="dark" type="warning">患者姓名: {{ patient.name }}</el-tag>
  6. <el-tag effect="dark">床号: {{ patient.bedNo }}</el-tag>
  7. <el-tag effect="dark" type="warning">住院次数: {{ patient.admissTimes }}</el-tag>
  8. <el-tag effect="dark">性别: {{ cptSex(patient.sex) }}</el-tag>
  9. <el-tag effect="dark" type="warning">病房: {{ patient.wardName }}</el-tag>
  10. <el-tag effect="dark">入院日期: {{ patient.admissDate }}</el-tag>
  11. <el-tag effect="dark" type="warning">医保身份: {{ patient.responceTypeName }}</el-tag>
  12. <el-tag effect="dark">总费用: {{ patient.totalCharge }}</el-tag
  13. ><br />
  14. 住院号:<el-input size="mini" style="width: 160px" placeholder="请输入住院号" v-model="queryTerm.inpatientNo" @keyup.enter="getHuanZheXinXiClick"></el-input>
  15. <span v-show="queryTerm.zaiHuanChuYuan === 1">
  16. 住院次数:<el-input-number
  17. size="mini"
  18. :min="0"
  19. :precision="0"
  20. style="width: 60px"
  21. placeholder="请输入住院次数"
  22. v-model="queryTerm.admissTimes"
  23. :controls="false"
  24. ></el-input-number>
  25. </span>
  26. <el-divider direction="vertical"></el-divider>
  27. <el-switch active-color="#ff4949" inactive-color="#13ce66" active-text="出院" inactive-text="在院" :active-value="1" :inactive-value="0" v-model="queryTerm.zaiHuanChuYuan">
  28. </el-switch>
  29. <el-divider direction="vertical"></el-divider>
  30. 项目名称:<el-select v-model="queryTerm.chargeCode" size="mini" remote filterable clearable :remote-method="remoteMethodChargeCode">
  31. <el-option v-for="item in chargeCodeNameData" :key="item.code" :label="item.name" :value="item.code">
  32. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  33. <el-divider direction="vertical"></el-divider>
  34. <span>{{ item.name }}</span>
  35. </el-option>
  36. </el-select>
  37. 录入日期:<el-date-picker
  38. type="daterange"
  39. v-model="queryTerm.dateRange"
  40. placeholder="选择日期"
  41. size="mini"
  42. style="width: 200px"
  43. range-separator="至"
  44. start-placeholder="开始日期"
  45. end-placeholder="结束日期"
  46. :shortcuts="shortcuts"
  47. ></el-date-picker>
  48. <el-button
  49. size="mini"
  50. @click="queryTerm.riQiPaiXu === 'DESC' ? (queryTerm.riQiPaiXu = 'ASC') : (queryTerm.riQiPaiXu = 'DESC')"
  51. type="success"
  52. :icon="queryTerm.riQiPaiXu === 'DESC' ? 'el-icon-caret-bottom' : 'el-icon-caret-top'"
  53. >{{ queryTerm.riQiPaiXu === 'DESC' ? '降序' : '升序' }}</el-button
  54. >
  55. <el-select style="width: 100px" size="mini" v-model="queryTerm.feiYongLeiXingCode">
  56. <el-option v-for="item in feiYongLeiXing" :key="item.code" :label="item.name" :value="item.code">
  57. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  58. <el-divider direction="vertical"></el-divider>
  59. <span>{{ item.name }}</span>
  60. </el-option>
  61. </el-select>
  62. <el-select v-model="queryTerm.orderNo" style="width: 100px" size="mini" @change="queryHuanZheFeiYong">
  63. <el-option v-for="item in yiZhuTuiFeiLeiXing" :key="item.code" :label="item.name" :value="item.code">
  64. <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
  65. <el-divider direction="vertical"></el-divider>
  66. <span>{{ item.name }}</span>
  67. </el-option>
  68. </el-select>
  69. <el-button size="mini" type="primary" @click="getHuanZheXinXiClick">查询</el-button>
  70. </el-header>
  71. <el-container>
  72. <el-main style="margin-top: 10px">
  73. <el-tabs v-model="elTabPane">
  74. <el-tab-pane label="已录入费用" name="ylrfy">
  75. <huan-zhe-fei-yong
  76. :init="tableDataHuanZheFeiYong"
  77. :patient="patient"
  78. @queryFeiYong="getHuanZheXinXiClick"
  79. @size="handleSizeChange"
  80. @current="handleCurrentChange"
  81. ></huan-zhe-fei-yong>
  82. </el-tab-pane>
  83. <el-tab-pane label="费用录入" name="fylr">
  84. <xiang-mu-lu-ru :patient="patient"></xiang-mu-lu-ru>
  85. </el-tab-pane>
  86. </el-tabs>
  87. </el-main>
  88. </el-container>
  89. </el-container>
  90. </template>
  91. <script>
  92. import { ref } from 'vue'
  93. import store from '@/store'
  94. import { getHuanZheXinXi } from '@/api/zhu-yuan-yi-ji/yi-ji-fei-yong-lu-ru'
  95. import { cptSex } from '@/utils/computed'
  96. import Cookie from 'js-cookie'
  97. import { getChargeCode } from '@/api/yibao/xiang-mu-lu-ru'
  98. import { getHuanZheFeiYong } from '../../api/yibao/xiang-mu-lu-ru'
  99. import HuanZheFeiYong from './components/HuanZheFeiYong.vue'
  100. import XiangMuLuRu from './components/YiJiXiangMuLuRu.vue'
  101. import { yiZhuTuiFeiLeiXing, feiYongLeiXing } from '@/data/index'
  102. import { shortcuts } from '@/data/shortcuts'
  103. import { getDateRangeFormatDate } from '../../utils/date'
  104. export default {
  105. components: { HuanZheFeiYong, XiangMuLuRu },
  106. name: 'yiJiFeiYongLuRu',
  107. setup() {
  108. const windowSize = store.state.app.windowSize
  109. const windowHeigth = windowSize.h
  110. const queryTerm = ref({
  111. inpatientNo: '',
  112. admissTimes: 0,
  113. zaiHuanChuYuan: '',
  114. dateRange: shortcuts[2].value,
  115. riQiPaiXu: 'DESC',
  116. chargeCode: '',
  117. orderNo: 0,
  118. feiYongLeiXingCode: 0,
  119. dept: Cookie.get('dept') === '3100000' ? '' : Cookie.get('dept'),
  120. currentPage: 1,
  121. pageSize: 30,
  122. })
  123. const elTabPane = ref('ylrfy')
  124. const patient = ref({})
  125. const tableDataHuanZheFeiYong = ref([])
  126. const getHuanZheXinXiClick = () => {
  127. if (queryTerm.value.zaiHuanChuYuan === 0) {
  128. queryTerm.value.admissTimes = 0
  129. }
  130. if (patient.inpatientNo === queryTerm.value.inpatientNo) {
  131. queryHuanZheFeiYong()
  132. } else {
  133. getHuanZheXinXi(queryTerm.value.inpatientNo, queryTerm.value.zaiHuanChuYuan, queryTerm.value.admissTimes)
  134. .then((res) => {
  135. patient.value = res
  136. queryTerm.value.admissTimes = res.admissTimes
  137. queryHuanZheFeiYong()
  138. })
  139. .catch(() => {
  140. patient.value = {}
  141. tableDataHuanZheFeiYong.value = []
  142. })
  143. }
  144. }
  145. const queryHuanZheFeiYong = () => {
  146. if (elTabPane.value !== 'ylrfy') return
  147. let dateRangeS = getDateRangeFormatDate(queryTerm.value.dateRange)
  148. queryTerm.value.startTime = dateRangeS.stratTime
  149. queryTerm.value.endTime = dateRangeS.endTime
  150. queryTerm.value.currentPage = 1
  151. getHuanZheFeiYong(queryTerm.value)
  152. .then((res) => {
  153. tableDataHuanZheFeiYong.value = res
  154. })
  155. .catch(() => {
  156. tableDataHuanZheFeiYong.value = []
  157. })
  158. }
  159. const handleHuanZheFeiYong = () => {
  160. if (elTabPane.value !== 'ylrfy') return
  161. let dateRangeS = getDateRangeFormatDate(queryTerm.value.dateRange)
  162. queryTerm.value.startTime = dateRangeS.stratTime
  163. queryTerm.value.endTime = dateRangeS.endTime
  164. getHuanZheFeiYong(queryTerm.value)
  165. .then((res) => {
  166. tableDataHuanZheFeiYong.value = res
  167. })
  168. .catch(() => {
  169. tableDataHuanZheFeiYong.value = []
  170. })
  171. }
  172. // 根据项目名称来查询
  173. const chargeCodeNameData = ref([])
  174. /**
  175. * 远程搜索
  176. */
  177. const remoteMethodChargeCode = (val) => {
  178. if (val.length >= 2) {
  179. getChargeCode(val).then((res) => {
  180. chargeCodeNameData.value = res
  181. })
  182. }
  183. }
  184. // 分页
  185. const handleSizeChange = (val) => {
  186. queryTerm.value.pageSize = val.val
  187. handleHuanZheFeiYong()
  188. }
  189. const handleCurrentChange = (val) => {
  190. queryTerm.value.currentPage = val.val
  191. handleHuanZheFeiYong()
  192. }
  193. return {
  194. windowHeigth,
  195. queryTerm,
  196. getHuanZheXinXiClick,
  197. tableDataHuanZheFeiYong,
  198. patient,
  199. cptSex,
  200. queryHuanZheFeiYong,
  201. chargeCodeNameData,
  202. remoteMethodChargeCode,
  203. elTabPane,
  204. yiZhuTuiFeiLeiXing,
  205. shortcuts,
  206. feiYongLeiXing,
  207. handleSizeChange,
  208. handleCurrentChange,
  209. }
  210. },
  211. }
  212. </script>
  213. <style></style>