Detail.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <template>
  2. <Dialog v-model="dialogVisible" title="合同详情" @close="handleClosed">
  3. <el-form :model="dataForm">
  4. <el-row :gutter="20">
  5. <el-col :span="12" :xs="24">
  6. <el-form-item label="长者姓名">
  7. {{ dataForm.elderName }}
  8. </el-form-item>
  9. </el-col>
  10. <el-col :span="12" :xs="24">
  11. <el-form-item label="合同编号">
  12. {{ dataForm.contractNumber }}
  13. </el-form-item>
  14. </el-col>
  15. <el-col :span="12" :xs="24">
  16. <el-form-item label="合同开始日期">
  17. {{ formatDate(dataForm.beginTime, 'YYYY-MM-DD') }}
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="12" :xs="24">
  21. <el-form-item label="合同结束日期">
  22. {{ formatDate(dataForm.expireTime, 'YYYY-MM-DD') }}
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="24">
  26. <el-form-item label="合同附件">
  27. <div v-for="(item, index) in dataForm.details" :key="index">
  28. <el-link type="primary" :underline="false" :href="item.fileUrl">{{
  29. item.fileName
  30. }}</el-link>
  31. </div>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="12" :xs="24">
  35. <el-form-item label="能力评估结果">
  36. {{ dataForm.syntheticAbilityResult }}
  37. </el-form-item>
  38. </el-col>
  39. <el-col :span="12" :xs="24">
  40. <el-form-item label="长者标签">
  41. {{ dataForm.elderTags }}
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="12" :xs="24">
  45. <el-form-item label="当前护理等级">
  46. {{ dataForm.nursingLevelName }} <Icon icon="ep:memo" class="ml2" @click="handleOpen" />
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="12" :xs="24">
  50. <el-form-item label="护理费">
  51. {{ formatNum(dataForm.nurseAmount) }}
  52. </el-form-item>
  53. </el-col>
  54. <el-col :span="12" :xs="24">
  55. <el-form-item label="当前所在床位">
  56. {{ dataForm.bedName }}
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="12" :xs="24">
  60. <el-form-item label="床位价格">
  61. {{ formatNum(dataForm.bedAmount) }}
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="12" :xs="24">
  65. <el-form-item label="餐饮费">
  66. {{ formatNum(dataForm.mealAmount) }}
  67. </el-form-item>
  68. </el-col>
  69. <el-col :span="12" :xs="24">
  70. <el-form-item label="当前餐饮标准">
  71. {{ dataForm.mealItemName }}
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="12" :xs="24">
  75. <el-form-item label="特殊护理备注">
  76. {{ dataForm.specialCareNotes }}
  77. </el-form-item>
  78. </el-col>
  79. </el-row>
  80. </el-form>
  81. <NurseCategory ref="formRef" />
  82. </Dialog>
  83. </template>
  84. <script lang="ts" setup>
  85. import { getElderlyContractById } from '@/api/elderly/elder/contract'
  86. import { formatDate } from '@/utils/formatTime'
  87. import { getSyntheticAbilityName } from '@/utils/synthetic-ability'
  88. import { formatNum } from '@/utils/formatter'
  89. import NurseCategory from './NurseCategory.vue'
  90. import { ContractDetailType } from '../types'
  91. defineOptions({ name: 'ContractDetail' })
  92. const dialogVisible = ref(false) // 弹窗的是否展示
  93. const detailLoading = ref(false) // 表单的加载中
  94. const dataForm = ref<ContractDetailType>({
  95. elderName: '',
  96. contractNumber: '',
  97. beginTime: '' as unknown as Date,
  98. expireTime: '' as unknown as Date,
  99. details: [],
  100. elderTags: '',
  101. nursingLevelName: '',
  102. nursingLevelId: '',
  103. nurseAmount: '',
  104. bedName: '',
  105. bedAmount: '',
  106. mealAmount: '',
  107. mealItemName: '',
  108. specialCareNotes: ''
  109. }) // 详情数据
  110. const active = ref()
  111. /** 打开弹窗 */
  112. const open = async (id) => {
  113. dialogVisible.value = true
  114. // 设置数据
  115. try {
  116. const res = await getElderlyContractById(id)
  117. dataForm.value = res
  118. } finally {
  119. detailLoading.value = false
  120. }
  121. }
  122. defineExpose({ open }) // 提供 open 方法,用于打开弹窗
  123. const formRef = ref()
  124. const handleOpen = () => {
  125. formRef.value.open(dataForm.value.nursingLevelId)
  126. }
  127. const handleClosed = () => {
  128. dataForm.value = {
  129. elderName: '',
  130. contractNumber: '',
  131. beginTime: '' as unknown as Date,
  132. expireTime: '' as unknown as Date,
  133. details: [],
  134. elderTags: '',
  135. nursingLevelName: '',
  136. nursingLevelId: '',
  137. nurseAmount: '',
  138. bedName: '',
  139. bedAmount: '',
  140. mealAmount: '',
  141. mealItemName: '',
  142. specialCareNotes: ''
  143. }
  144. detailLoading.value = false
  145. }
  146. </script>