血透系统PC前端

template.vue 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs="crumbs"></bread-crumb>
  5. <!-- <el-col :span="3" style="text-align: right;"> -->
  6. <el-button size="small" icon="el-icon-setting" type="primary" @click="setScheduleTemplateAction">设置模板</el-button>
  7. <!-- </el-col> -->
  8. </div>
  9. <div class="app-container">
  10. <!-- <el-row>
  11. <el-col :span="21"> -->
  12. <el-tabs v-model="activeName" tab-position="top">
  13. <el-tab-pane name="schedules">
  14. <span slot="label"> 排班信息 </span>
  15. <template-table :editable="false" :device_numbers="device_numbers" :template="this_week_schedules"
  16. :patients="patients"></template-table>
  17. </el-tab-pane>
  18. <el-tab-pane name="first" :disabled="template_mode.mode == 0">
  19. <span slot="label"> 第一周 </span>
  20. <template-table :editable="true" :device_numbers="device_numbers" :template="first_template"
  21. :patients="patients"></template-table>
  22. </el-tab-pane>
  23. <el-tab-pane name="second" :disabled="template_mode.mode != 2">
  24. <span slot="label"> 第二周 </span>
  25. <template-table :editable="true" :device_numbers="device_numbers" :template="second_template"
  26. :patients="patients"></template-table>
  27. </el-tab-pane>
  28. </el-tabs>
  29. <!-- </el-col> -->
  30. <!-- </el-row> -->
  31. <set-up-template-dialog ref="setup_dialog" :template_mode="template_mode" :origin_mode="origin_mode"
  32. @chenge_mode="didChangeTemplateMode"></set-up-template-dialog>
  33. </div>
  34. </div>
  35. </template>
  36. <script>
  37. import SetUpTemplateDialog from './components/setup_template_dialog'
  38. import TemplateTable from './components/template_table'
  39. import { getTemplateInitData } from '@/api/schedule_template/patient'
  40. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  41. export default {
  42. name: 'WorkforceTemplate',
  43. components: {
  44. SetUpTemplateDialog,
  45. TemplateTable,
  46. BreadCrumb
  47. },
  48. data: function() {
  49. return {
  50. crumbs: [
  51. { path: false, name: '排班管理' },
  52. { path: 'workforce/template', name: '排班模版' }
  53. ],
  54. activeName: 'schedules',
  55. template_mode: {
  56. id: 0,
  57. mode: 0
  58. },
  59. origin_mode: 0,
  60. device_numbers: [],
  61. patients: [],
  62. first_template: {
  63. items: []
  64. },
  65. second_template: {
  66. items: []
  67. },
  68. this_week_schedules: {
  69. id: 0,
  70. items: []
  71. }
  72. }
  73. },
  74. created() {
  75. getTemplateInitData().then(rs => {
  76. var resp = rs.data
  77. if (resp.state == 1) {
  78. var mode = resp.data.template_mode
  79. var device_numbers = resp.data.device_numbers
  80. var templates = resp.data.templates
  81. var patients = resp.data.patients
  82. var schedules = resp.data.schedules
  83. this.template_mode = mode
  84. this.origin_mode = mode.mode
  85. this.device_numbers = device_numbers,
  86. this.patients = patients
  87. this.first_template = templates[0]
  88. this.second_template = templates[1]
  89. var fakeTemplateItems = []
  90. for (let index = 0; index < schedules.length; index++) {
  91. const schedule = schedules[index]
  92. var item = {}
  93. this.$set(item, 'id', schedule.id)
  94. this.$set(item, 'template_id', 0)
  95. this.$set(item, 'device_number_id', schedule.bed_id)
  96. this.$set(item, 'treat_mode', schedule.mode_id)
  97. this.$set(item, 'weekday', schedule.schedule_week)
  98. this.$set(item, 'time_type', schedule.schedule_type)
  99. var patient = {}
  100. this.$set(patient, 'id', schedule.patient_id)
  101. this.$set(patient, 'name', schedule.patient)
  102. this.$set(item, 'patient', patient)
  103. fakeTemplateItems.push(item)
  104. }
  105. this.this_week_schedules.items = fakeTemplateItems
  106. } else {
  107. this.$message(resp.msg)
  108. }
  109. })
  110. },
  111. methods: {
  112. setScheduleTemplateAction: function() {
  113. this.$refs.setup_dialog.show()
  114. },
  115. didChangeTemplateMode: function(mode) {
  116. if (this.origin_mode != mode) {
  117. if (this.origin_mode == 0) { // 0 -> 1 或 0 -> 2
  118. // 不处理模板 item
  119. } else if (mode == 0) { // 1 -> 0 或 2 -> 0 清除所有模板的 item
  120. this.first_template.items.splice(0, this.first_template.items.length)
  121. this.second_template.items.splice(0, this.second_template.items.length)
  122. if (this.activeName != 'schedules') {
  123. this.activeName = 'schedules'
  124. }
  125. } else if (this.origin_mode == 1 && mode == 2) { // 1 -> 2
  126. // 不处理模板 item
  127. } else if (this.origin_mode == 2 && mode == 1) { // 2 -> 1 清除第二个模板的 item
  128. this.second_template.items.splice(0, this.second_template.items.length)
  129. if (this.activeName == 'second') {
  130. this.activeName = 'schedules'
  131. }
  132. }
  133. this.origin_mode = mode
  134. }
  135. }
  136. }
  137. }
  138. </script>
  139. <style scoped>
  140. </style>