EmrHerbs.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <template>
  2. <div class="layout_container">
  3. <el-form inline>
  4. <el-form-item>
  5. <xc-date-picker style="width: 180px"
  6. type="daterange"
  7. clearable
  8. v-model="dateRange"/>
  9. </el-form-item>
  10. <el-form-item>
  11. <el-switch v-model="shiFouFaYao"
  12. :active-value="true"
  13. :inactive-value="false"
  14. active-color="#13ce66"
  15. active-text="已发药"
  16. inactive-color="#ff4949"
  17. inactive-text="未发药"/>
  18. </el-form-item>
  19. <el-form-item>
  20. <el-button @click="dianJiChaXunYiZhu">查询</el-button>
  21. </el-form-item>
  22. </el-form>
  23. <div class="layout_main layout_el-table ">
  24. <el-dialog v-model="xiangQing.dialog" title="草药医嘱详情">
  25. <el-table :close-on-click-modal="false"
  26. :data="xiangQing.data"
  27. ref="tableRef"
  28. :height="getWindowSize.h / 1.5"
  29. highlight-current-row
  30. stripe>
  31. <el-table-column label="选择" type="selection"/>
  32. <el-table-column label="编码" prop="chargeCode"></el-table-column>
  33. <el-table-column label="名称" prop="chargeCodeName"></el-table-column>
  34. <el-table-column label="药房" prop="groupNoName"></el-table-column>
  35. <el-table-column label="数量" prop="quantity"></el-table-column>
  36. <el-table-column label="单价" prop="unitPrice"></el-table-column>
  37. <el-table-column label="说明" prop="instruction"></el-table-column>
  38. <el-table-column label="包装规格" prop="serial">
  39. <template #default="scope">
  40. <span v-if="scope.row.serial === '01'">小包装</span>
  41. <span v-else-if="scope.row.serial === '99'">小包装</span>
  42. </template>
  43. </el-table-column>
  44. </el-table>
  45. <template #footer>
  46. <el-button type="danger" @click="xiangQing.dialog = false">关闭</el-button>
  47. <el-button @click="copyClick" type="success">复制选中</el-button>
  48. <el-button @click="copyAllClick" type="primary">复制全部</el-button>
  49. </template>
  50. </el-dialog>
  51. <xc-table
  52. :local-data="caoYaoShuJu"
  53. @rowClick="caoYaoYiZhuXiangQing"
  54. >
  55. <el-table-column label="名称" prop="orderName"></el-table-column>
  56. <el-table-column label="开单时间" prop="inputDate" show-overflow-tooltip></el-table-column>
  57. <el-table-column label="医生" prop="doctorCodeName"></el-table-column>
  58. <el-table-column label="状态" prop="statusFlag">
  59. <template #default="scope">
  60. {{ getHerbsStatusFlag(scope.row.statusFlag) }}
  61. </template>
  62. </el-table-column>
  63. <el-table-column label="处方总额" prop="zongJia"></el-table-column>
  64. <el-table-column label="剂数" prop="quantity"></el-table-column>
  65. <el-table-column label="单剂金额" prop="orderJe"></el-table-column>
  66. <el-table-column label="医嘱号" prop="orderNo"></el-table-column>
  67. <el-table-column label="执行科室" prop="execDeptName"></el-table-column>
  68. <el-table-column label="操作" width="90">
  69. <template #default="scope">
  70. <el-button-group>
  71. <el-button type="primary" @click.stop="caoYaoYiZhuXiangQing(scope.row)" icon="View" title="查看详情"/>
  72. </el-button-group>
  73. </template>
  74. </el-table-column>
  75. </xc-table>
  76. </div>
  77. </div>
  78. </template>
  79. <script setup name='EmrHerbs'>
  80. import XcDatePicker from "@/components/xiao-chan/date-picker/XcDatePicker.vue";
  81. import {ref} from "vue";
  82. import {getDateRangeFormatDate} from "@/utils/date";
  83. import {huoQuCaoYaoShuJu, huoQuChaoYaoMingXi} from "@/api/zhu-yuan-yi-sheng/cao-yao-yi-zhu";
  84. import {getWindowSize} from "@/utils/window-size";
  85. import {getHerbsStatusFlag} from "@/views/hospitalization/zhu-yuan-yi-sheng/cao-yao-yi-zhu/cao-yao";
  86. import {listIsBlank} from "@/utils/blank-utils";
  87. import {xcMessage} from "@/utils/xiaochan-element-plus";
  88. import {
  89. emrCopyFunc
  90. } from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
  91. import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
  92. const props = defineProps({
  93. patNo: String,
  94. times: Number
  95. })
  96. const emits = defineEmits(['close'])
  97. const dateRange = ref([])
  98. const caoYaoShuJu = ref([])
  99. const shiFouFaYao = ref(true)
  100. const xiangQing = ref({
  101. dialog: false,
  102. data: [],
  103. yizhu: {},
  104. })
  105. const dianJiChaXunYiZhu = () => {
  106. let dateS = getDateRangeFormatDate(dateRange.value)
  107. let data = {
  108. startTime: dateS.startTime,
  109. endTime: dateS.endTime,
  110. patNo: props.patNo,
  111. times: props.times,
  112. }
  113. huoQuCaoYaoShuJu(data).then((res) => {
  114. caoYaoShuJu.value = res
  115. })
  116. }
  117. const caoYaoYiZhuXiangQing = (row) => {
  118. huoQuChaoYaoMingXi(row.orderNo).then((res) => {
  119. xiangQing.value.dialog = true
  120. xiangQing.value.data = res
  121. xiangQing.value.yizhu = row
  122. })
  123. }
  124. const tableRef = ref(null)
  125. const copyFunc = (data) => {
  126. let str = ''
  127. let v = xiangQing.value.yizhu
  128. let length = data.length
  129. data.forEach((item, index) => {
  130. str += item.chargeCodeName + item.quantity + 'g'
  131. if (length !== index + 1) {
  132. str += ' '
  133. }
  134. })
  135. str += '。'
  136. str += v.cyJssm + ',' + '日' + v.cyMtjs + '剂' + ',分' + v.cyFfcs + '次' + ',' + v.cyFysmName + '。'
  137. emrCopyFunc(str)
  138. emits('close')
  139. }
  140. const copyClick = () => {
  141. let temp = tableRef.value.getSelectionRows()
  142. if (listIsBlank(temp)) {
  143. xcMessage.error('请选择数据。')
  144. } else {
  145. copyFunc(temp)
  146. }
  147. }
  148. const copyAllClick = () => {
  149. copyFunc(xiangQing.value.data)
  150. }
  151. onMounted(() => {
  152. dianJiChaXunYiZhu()
  153. })
  154. </script>
  155. <style scoped lang="scss">
  156. </style>