InpatientSatisfiedAssessment.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <template>
  2. <window-size>
  3. <div class="question-box">
  4. <p>1-1、您对住院科室护理人员服务满意吗?</p>
  5. <div style="margin-top: 4px">
  6. <van-radio-group v-model="answer.item1" direction="horizontal">
  7. <van-radio name="A">满意</van-radio>
  8. <van-radio name="B">不满意</van-radio>
  9. </van-radio-group>
  10. </div>
  11. <div v-show="answer.item1 === 'B'">
  12. <p style="margin-top: 6px">1-2、您对住院科室护理人员哪些服务不满意?</p>
  13. <van-checkbox-group v-model="answer.item2Arr" direction="horizontal">
  14. <van-checkbox
  15. shape="square"
  16. v-for="child in checkboxOptions1"
  17. :key="child.key"
  18. :name="child.key"
  19. style="margin-top: 5px"
  20. >{{ child.label }}
  21. </van-checkbox>
  22. </van-checkbox-group>
  23. </div>
  24. </div>
  25. <div class="question-box">
  26. <p>2-1、您对住院科室医生服务满意吗?</p>
  27. <div style="margin-top: 4px">
  28. <van-radio-group v-model="answer.item3" direction="horizontal">
  29. <van-radio name="A">满意</van-radio>
  30. <van-radio name="B">不满意</van-radio>
  31. </van-radio-group>
  32. </div>
  33. <div v-show="answer.item3 === 'B'">
  34. <p style="margin-top: 6px">2-2、您对住院科室医生哪些服务不满意?</p>
  35. <van-checkbox-group v-model="answer.item4Arr" direction="horizontal">
  36. <van-checkbox
  37. shape="square"
  38. v-for="child in checkboxOptions2"
  39. :key="child.key"
  40. :name="child.key"
  41. style="margin-top: 5px"
  42. >{{ child.label }}
  43. </van-checkbox>
  44. </van-checkbox-group>
  45. </div>
  46. </div>
  47. <div class="question-box">
  48. <p>3-1、您对医院环境卫生满意吗?</p>
  49. <div style="margin-top: 4px">
  50. <van-radio-group v-model="answer.item5" direction="horizontal">
  51. <van-radio name="A">满意</van-radio>
  52. <van-radio name="B">不满意</van-radio>
  53. </van-radio-group>
  54. </div>
  55. <div v-show="answer.item5 === 'B'">
  56. <p style="margin-top: 6px">3-2、您对医院环境卫生哪些项目不满意?</p>
  57. <van-checkbox-group v-model="answer.item6Arr" direction="horizontal">
  58. <van-checkbox
  59. shape="square"
  60. v-for="child in checkboxOptions3"
  61. :key="child.key"
  62. :name="child.key"
  63. style="margin-top: 5px"
  64. >{{ child.label }}
  65. </van-checkbox>
  66. </van-checkbox-group>
  67. </div>
  68. </div>
  69. <div class="question-box">
  70. <p>4-1、您对医院食堂满意吗?</p>
  71. <div style="margin-top: 4px">
  72. <van-radio-group v-model="answer.item7" direction="horizontal">
  73. <van-radio name="A">满意</van-radio>
  74. <van-radio name="B">不满意</van-radio>
  75. <van-radio name="C">未接触</van-radio>
  76. </van-radio-group>
  77. </div>
  78. <div v-show="answer.item7 === 'B'">
  79. <p style="margin-top: 6px">4-2、您对医院环境卫生哪些项目不满意?</p>
  80. <van-checkbox-group v-model="answer.item8Arr" direction="horizontal">
  81. <van-checkbox
  82. shape="square"
  83. v-for="child in checkboxOptions4"
  84. :key="child.key"
  85. :name="child.key"
  86. style="margin-top: 5px"
  87. >{{ child.label }}
  88. </van-checkbox>
  89. </van-checkbox-group>
  90. </div>
  91. </div>
  92. <div v-for="(item, index) in headQuestions" :key="item.key" class="question-box">
  93. <p>{{ item.label }}</p>
  94. <div style="margin-top: 4px">
  95. <van-radio-group v-model="answer['item' + item.key]" direction="horizontal">
  96. <van-radio name="A">满意</van-radio>
  97. <van-radio name="B">不满意</van-radio>
  98. <van-radio name="C">未接触</van-radio>
  99. </van-radio-group>
  100. </div>
  101. <div v-show="answer['item' + item.key] === 'B'">
  102. <p style="margin-top: 6px">{{ tailQuestions[index].label }}</p>
  103. <van-checkbox-group v-model="answer['item' + (item.key + 1) + 'Arr']" direction="horizontal">
  104. <van-checkbox
  105. shape="square"
  106. v-for="child in (item.key === 11 ? checkboxOptions2 : checkboxOptions)"
  107. :key="child.key"
  108. :name="child.key"
  109. style="margin-top: 5px"
  110. >{{ child.label }}
  111. </van-checkbox>
  112. </van-checkbox-group>
  113. </div>
  114. </div>
  115. <div style="height: 20px"></div>
  116. <van-button type="primary" block :disabled="disableSubmitButton" @click="submitAnswer">提交</van-button>
  117. </window-size>
  118. </template>
  119. <script setup>
  120. import {reactive, ref} from "vue";
  121. import {submitInpatientSatisfiedAssessment} from '../../../api/assessments'
  122. import {Dialog} from "vant";
  123. import {useRouter} from "vue-router";
  124. const router = useRouter()
  125. const answer = reactive({
  126. patientId: router.currentRoute.value.params.patientId
  127. })
  128. const disableSubmitButton = ref(false)
  129. const checkboxOptions1 = [
  130. {key: 'A', label: '技术水平'},
  131. {key: 'B', label: '隐私保护'},
  132. {key: 'C', label: '服务态度'},
  133. {key: 'D', label: '沟通解释'},
  134. {key: 'E', label: '病情巡视'},
  135. {key: 'F', label: '服装礼仪'},
  136. {key: 'G', label: '其他'},
  137. ]
  138. const checkboxOptions2 = [
  139. {key: 'A', label: '技术水平'},
  140. {key: 'B', label: '隐私保护'},
  141. {key: 'C', label: '服务态度'},
  142. {key: 'D', label: '沟通解释'},
  143. {key: 'E', label: '按时查房'},
  144. {key: 'F', label: '服装礼仪'},
  145. {key: 'G', label: '其他'},
  146. ]
  147. const checkboxOptions3 = [
  148. {key: 'A', label: '卫生情况'},
  149. {key: 'B', label: '布局不合理'},
  150. {key: 'C', label: '服务态度'},
  151. {key: 'D', label: '舒适度'},
  152. {key: 'E', label: '按时清理'},
  153. {key: 'F', label: '服装礼仪'},
  154. {key: 'G', label: '其他'},
  155. ]
  156. const checkboxOptions4 = [
  157. {key: 'A', label: '卫生情况'},
  158. {key: 'B', label: '口味'},
  159. {key: 'C', label: '菜品'},
  160. {key: 'D', label: '服务态度'},
  161. {key: 'F', label: '服装礼仪'},
  162. {key: 'G', label: '其他'},
  163. ]
  164. const headQuestions = [
  165. {key: 9, label: '5-1、您对药剂科工作人员服务满意吗?'},
  166. {key: 11, label: '6-1、您对放射科工作人员服务满意吗?'},
  167. {key: 13, label: '7-1、您对超声影像科工作人员服务满意吗?'},
  168. {key: 15, label: '8-1、您对检验科工作人员服务满意吗?'},
  169. {key: 17, label: '9-1、您对收费窗口工作人员服务满意吗?'},
  170. {key: 19, label: '10-1、您对门诊医护人员服务满意吗?'},
  171. {key: 21, label: '11-1、您对急诊医护人员服务满意吗?'},
  172. ]
  173. const tailQuestions = [
  174. {key: 10, label: '5-2、您对药剂科工作人员哪些服务不满意?'},
  175. {key: 12, label: '6-2、您对放射科工作人员哪些服务不满意?'},
  176. {key: 14, label: '7-2、您对超声影像科工作人员哪些服务不满意?'},
  177. {key: 16, label: '8-2、您对检验科工作人员哪些服务不满意?'},
  178. {key: 18, label: '9-2、您对收费窗口工作人员哪些服务不满意?'},
  179. {key: 20, label: '10-2、您对门诊医护人员哪些服务不满意?'},
  180. {key: 22, label: '11-2、您对急诊医护人员哪些服务不满意?'},
  181. ]
  182. const checkboxOptions = [
  183. {key: 'A', label: '叫号服务'},
  184. {key: 'B', label: '等待时长'},
  185. {key: 'C', label: '服务态度'},
  186. {key: 'D', label: '沟通解释'},
  187. {key: 'E', label: '及时响应'},
  188. {key: 'F', label: '服装礼仪'},
  189. {key: 'G', label: '准确率'},
  190. ]
  191. const submitAnswer = () => {
  192. submitInpatientSatisfiedAssessment(answer).then(res => {
  193. disableSubmitButton.value = true
  194. Dialog.alert({
  195. title: '提示',
  196. message: '提交成功!',
  197. })
  198. })
  199. }
  200. </script>
  201. <style scoped>
  202. .question-box {
  203. padding: 6px 0 12px 6px;
  204. border-bottom: 1px dashed gray;
  205. }
  206. </style>