YiZhuLuRuZhuJian.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <template>
  2. <el-container>
  3. <el-header style="height: 40px">
  4. <el-date-picker
  5. type="daterange"
  6. v-model="dateRange"
  7. placeholder="选择日期"
  8. size="mini"
  9. style="width: 220px"
  10. range-separator="至"
  11. start-placeholder="开始日期"
  12. end-placeholder="结束日期"
  13. :shortcuts="shortcuts"
  14. ></el-date-picker>
  15. 医嘱名称:
  16. <el-select style="width: 120px" v-model="orderName" remote filterable clearable
  17. :remote-method="remoteMethodChargeCode">
  18. <el-option v-for="item in yiZhuMingZiData" :key="item.name" :name="item.name" :value="item.name">
  19. <span>{{ item.name }}</span>
  20. </el-option>
  21. </el-select>
  22. 频率:
  23. <el-select v-model="pinLv" size="mini" filterable clearable style="width: 120px">
  24. <el-option v-for="item in huanZhePinLvData" :key="item.name" :name="item.name" :value="item.name">
  25. <span>{{ item.name }}</span>
  26. </el-option>
  27. </el-select>
  28. <el-divider direction="vertical"></el-divider>
  29. <el-button type="primary" icon="el-icon-search" @click="chaXunYiZhuClick(0)">查询</el-button>
  30. <el-divider direction="vertical"></el-divider>
  31. <el-button type="primary" icon="el-icon-plus" @click="addYiZhuClick">添加</el-button>
  32. <el-divider direction="vertical"></el-divider>
  33. <el-tag type="info" effect="dark">录入</el-tag>
  34. <el-tag effect="dark" type="success">确认</el-tag>
  35. <el-tag effect="dark">执行</el-tag>
  36. <el-tag effect="dark" type="danger">停止</el-tag>
  37. </el-header>
  38. <el-main>
  39. <el-table :data="yiZhuPage.data" :height="(windowSize.h / 1.6) + huanZheXinXiHeight" row-key="actOrderNo" border
  40. highlight-current-row>
  41. <el-table-column label="医嘱号" prop="actOrderNo" width="90" fixed="left">
  42. <template #default="scope">
  43. <el-tag :type="getYiZhuFlag( scope.row.statusFlag)" effect="dark">{{ scope.row.actOrderNo }}</el-tag>
  44. </template>
  45. </el-table-column>
  46. <template v-for="(item,index) in elTableHeader">
  47. <el-table-column :label="item.name" :prop="item.code" :width="item.width">
  48. <template #default="scope" v-if="item.code === 'emergencyFlag' || item.code === 'ybSelfFlag'">
  49. <el-tag effect="dark" type="danger"
  50. v-if="item.code === 'emergencyFlag' && scope.row.emergencyFlag === '1'">是
  51. </el-tag>
  52. <el-tag effect="dark" type="danger"
  53. v-else-if="item.code === 'ybSelfFlag' && scope.row.ybSelfFlag === '1'">是
  54. </el-tag>
  55. </template>
  56. </el-table-column>
  57. </template>
  58. <el-table-column label="操作" fixed="right" width="150">
  59. <template #default="scope">
  60. <el-button>修改</el-button>
  61. <el-button>删除</el-button>
  62. </template>
  63. </el-table-column>
  64. </el-table>
  65. <el-pagination
  66. :page-sizes="[10, 20, 30, 40, 50]"
  67. :page-size="yiZhuPage.pageSize"
  68. layout="total, sizes, prev, pager, next, jumper"
  69. :total="yiZhuPage.total"
  70. :current-page="yiZhuPage.currentPage"
  71. @size-change="handleSizeChange"
  72. @current-change="handleCurrentChange"
  73. >
  74. </el-pagination>
  75. <tian-jia-huo-xiu-gai-yi-zhu ref="tianJiaXiuGaiYiZhu"></tian-jia-huo-xiu-gai-yi-zhu>
  76. </el-main>
  77. </el-container>
  78. </template>
  79. <script>
  80. import {computed, ref, watch} from "vue";
  81. import {shortcuts} from '../../data/shortcuts'
  82. import {
  83. huanZheXinXi,
  84. huanZhePinLvData,
  85. huoQuYiZhuMingCheng,
  86. huoQuYiZhuShuJu,
  87. youWuXuanZheHuanZhe, huanZheXinXiHeight
  88. } from "../../api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
  89. import {getDateRangeFormatDate} from "../../utils/date";
  90. import store from '../../store'
  91. import {stringIsBlank, stringNotBlank} from '../../utils/blank-utils';
  92. import TianJiaHuoXiuGaiYiZhu from "./TianJiaHuoXiuGaiYiZhu.vue";
  93. export default {
  94. name: "YiZhuLuRuZhuJian",
  95. components: {TianJiaHuoXiuGaiYiZhu},
  96. setup(props, cxt) {
  97. const windowSize = computed(() => {
  98. return store.state.app.windowSize
  99. })
  100. const dateRange = ref('')
  101. // 根据医嘱的名字来进行搜索
  102. const orderName = ref('')
  103. const yiZhuMingZiData = ref([])
  104. // 获取频率
  105. const pinLv = ref('')
  106. // 分页
  107. const yiZhuPage = ref({
  108. currentPage: 1,
  109. pageSize: 30,
  110. total: 0,
  111. data: []
  112. })
  113. const remoteMethodChargeCode = (val) => {
  114. if (youWuXuanZheHuanZhe()) return
  115. if (val.length > 1) {
  116. huoQuYiZhuMingCheng(huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, val).then((res) => {
  117. yiZhuMingZiData.value = res
  118. })
  119. }
  120. }
  121. // 根据医嘱的名字来进行搜索 结束
  122. const chaXunYiZhuClick = (total) => {
  123. if (youWuXuanZheHuanZhe()) return
  124. const dateS = getDateRangeFormatDate(dateRange.value)
  125. let data = {
  126. currentPage: yiZhuPage.value.currentPage,
  127. pageSize: yiZhuPage.value.pageSize,
  128. total: total,
  129. patNo: huanZheXinXi.value.inpatientNo,
  130. times: huanZheXinXi.value.admissTimes,
  131. startTime: dateS.startTime,
  132. endTime: dateS.endTime,
  133. frequCode: pinLv.value,
  134. orderName: orderName.value
  135. }
  136. huoQuYiZhuShuJu(data).then((res) => {
  137. yiZhuPage.value.total = res.total
  138. yiZhuPage.value.data = res.records
  139. }).catch(e => {
  140. yiZhuPage.value.total = 0
  141. yiZhuPage.value.data = []
  142. })
  143. }
  144. const handleSizeChange = (val) => {
  145. yiZhuPage.value.pageSize = val
  146. chaXunYiZhuClick(yiZhuPage.value.total)
  147. }
  148. const handleCurrentChange = (val) => {
  149. yiZhuPage.value.currentPage = val
  150. chaXunYiZhuClick(yiZhuPage.value.total)
  151. }
  152. /**
  153. * 下面这里是添加医嘱了
  154. */
  155. const tianJiaXiuGaiYiZhu = ref(null)
  156. const addYiZhuClick = () => {
  157. if (youWuXuanZheHuanZhe()) return
  158. tianJiaXiuGaiYiZhu.value.dialog = true
  159. tianJiaXiuGaiYiZhu.value.title = '添加医嘱'
  160. }
  161. watch(() => huanZheXinXi.value, () => {
  162. chaXunYiZhuClick(0)
  163. })
  164. return {
  165. dateRange,
  166. shortcuts,
  167. orderName,
  168. yiZhuMingZiData,
  169. remoteMethodChargeCode,
  170. chaXunYiZhuClick,
  171. pinLv,
  172. huanZhePinLvData,
  173. yiZhuPage,
  174. windowSize,
  175. handleSizeChange,
  176. handleCurrentChange,
  177. huanZheXinXiHeight,
  178. stringNotBlank,
  179. elTableHeader: [
  180. {name: "医嘱名称", code: "orderName"},
  181. {name: "剂量", code: "doseUnitName"},
  182. {name: "频率", code: "frequCode"},
  183. {name: "给药方式", code: "supplyCodeName"},
  184. {name: "开始时间", code: "startTime"},
  185. {name: "结束时间", code: "enterTime"},
  186. {name: "医嘱时间", code: "orderTime"},
  187. {name: "紧急", code: "emergencyFlag"},
  188. {name: "医保自费", code: "ybSelfFlag"},
  189. {name: "医生", code: "physicianName"},
  190. {name: "费用标志", code: "selfBuyName"},
  191. {name: "执行科室", code: "execUnitName"},
  192. {name: "领量", code: "drugQuanName"},
  193. {name: "类别", code: "drugFlagName"},
  194. {name: "药房", code: "groupNoName"},
  195. {name: "序号", code: "serialName"},
  196. {name: "医保备注", code: "1"},
  197. ],
  198. getYiZhuFlag,
  199. addYiZhuClick,
  200. tianJiaXiuGaiYiZhu,
  201. }
  202. }
  203. }
  204. function getYiZhuFlag(val) {
  205. if (stringIsBlank(val)) {
  206. return 'warning'
  207. }
  208. switch (val) {
  209. case "1":
  210. return 'info'
  211. case "2":
  212. return 'success'
  213. case "3":
  214. return ''
  215. case "4":
  216. return ''
  217. case "5":
  218. return 'danger'
  219. default:
  220. return 'warning'
  221. }
  222. }
  223. </script>
  224. <style scoped>
  225. .el-table__row .el-table__row--level-0 {
  226. background: rgba(145, 247, 145, .5);
  227. }
  228. </style>