ClinicSatisfied.vue 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  1. <template>
  2. <page-layer>
  3. <template #header>
  4. <el-select v-model="inquiry.visitType" style="width: 60px" @change="handleVisitTypeChange">
  5. <el-option label="门诊" value="OUTPATIENT"></el-option>
  6. <el-option label="住院" value="INPATIENT"></el-option>
  7. </el-select>
  8. <el-date-picker type="daterange" v-model="dateRange" style="width: 200px" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
  9. <el-divider direction="vertical"></el-divider>
  10. <el-checkbox v-model="inquiry.onlyShowUnsatisfied" @change="handleSatisfiedChange">只看含有“不满意”的问卷</el-checkbox>
  11. <el-button icon="Search" type="primary" @click="fetchAssessments" style="margin-left: 4px">检索</el-button>
  12. <el-button icon="DataAnalysis" type="success" @click="executeAssessmentAnalyse" style="margin-left: 12px">问卷分析</el-button>
  13. <el-button type="primary" icon="Download" @click="exportExcel">导出Excel</el-button>
  14. </template>
  15. <template #main>
  16. <el-table v-if="inquiry.visitType === 'OUTPATIENT'" :data="assessments.list" stripe :height="tableHeight" highlight-current-row>
  17. <el-table-column prop="item11" label="门急诊导诊及护理"></el-table-column>
  18. <el-table-column prop="item13" label="门急诊医生"></el-table-column>
  19. <el-table-column prop="item1" label="药剂科"></el-table-column>
  20. <el-table-column prop="item3" label="放射科"></el-table-column>
  21. <el-table-column prop="item5" label="超声影像科"></el-table-column>
  22. <el-table-column prop="item7" label="检验科"></el-table-column>
  23. <el-table-column prop="item9" label="收费窗口"></el-table-column>
  24. <el-table-column prop="item15" label="医保科"></el-table-column>
  25. <el-table-column prop="item1002" label="选择我院的原因"></el-table-column>
  26. <el-table-column prop="item1004" label="是否会再次选择我院"></el-table-column>
  27. <el-table-column prop="item1006" label="整体评价"></el-table-column>
  28. <el-table-column prop="satisfyStaff" label="满意的医生护士"></el-table-column>
  29. <el-table-column prop="suggestion" label="意见和建议"></el-table-column>
  30. <el-table-column prop="createDatetime" label="问卷时间"></el-table-column>
  31. <el-table-column label="操作">
  32. <template #default="scope">
  33. <el-button v-if="scope.row.deleted === 0" icon="Delete" type="danger" @click="changeAssessmentStatus(scope.row, 1)">删除</el-button>
  34. <el-button v-else icon="Refresh" type="success" @click="changeAssessmentStatus(scope.row, 0)">恢复</el-button>
  35. </template>
  36. </el-table-column>
  37. </el-table>
  38. <el-table v-else :data="assessments.list" stripe :height="tableHeight" highlight-current-row>
  39. <el-table-column prop="item1" label="护理人员"></el-table-column>
  40. <el-table-column prop="item3" label="科室医生"></el-table-column>
  41. <el-table-column prop="item5" label="环境卫生"></el-table-column>
  42. <el-table-column prop="item7" label="食堂"></el-table-column>
  43. <el-table-column prop="item9" label="药剂科"></el-table-column>
  44. <el-table-column prop="item11" label="放射科"></el-table-column>
  45. <el-table-column prop="item13" label="超声影像科"></el-table-column>
  46. <el-table-column prop="item15" label="检验科"></el-table-column>
  47. <el-table-column prop="item17" label="收费窗口"></el-table-column>
  48. <el-table-column prop="item19" label="门诊医护"></el-table-column>
  49. <el-table-column prop="item21" label="急诊医护"></el-table-column>
  50. <el-table-column prop="item23" label="医保科"></el-table-column>
  51. <el-table-column prop="item1002" label="选择我院的原因"></el-table-column>
  52. <el-table-column prop="item1004" label="是否会再次选择我院"></el-table-column>
  53. <el-table-column prop="item1006" label="整体评价"></el-table-column>
  54. <el-table-column prop="satisfyStaff" label="满意的医生护士"></el-table-column>
  55. <el-table-column prop="suggestion" label="意见和建议"></el-table-column>
  56. <el-table-column prop="createDatetime" label="问卷时间"></el-table-column>
  57. <el-table-column label="操作">
  58. <template #default="scope">
  59. <el-button v-if="scope.row.deleted === 0" icon="Delete" type="danger" @click="changeAssessmentStatus(scope.row, 1)">删除</el-button>
  60. <el-button v-else icon="Refresh" type="success" @click="changeAssessmentStatus(scope.row, 0)">恢复</el-button>
  61. </template>
  62. </el-table-column>
  63. </el-table>
  64. <el-pagination
  65. @size-change="handleSizeChange"
  66. @current-change="handleCurrentChange"
  67. :current-page="inquiry.pageNum"
  68. :page-sizes="[30, 50, 70, 100]"
  69. :page-size="inquiry.pageSize"
  70. layout="total, sizes, prev, pager, next"
  71. :total="assessments.totalSize"
  72. style="margin-top: 5px"
  73. ></el-pagination>
  74. <el-dialog v-model="showAnalyzeResult" :title="titleOfAnalyze" width="95%" :close-on-click-modal="false">
  75. <div style="font-size: 14px; font-weight: bold; color: black; margin-top: -12px;border-bottom: 2px solid black;padding-bottom: 8px">
  76. 所有问卷总量:{{ analyzeResult.totalAssessmentsCount }}
  77. <el-divider direction="vertical"></el-divider>
  78. 所有含有“不满意”的问卷量:{{ analyzeResult.totalUnsatisfiedCount }}({{ analyzeResult.totalUnsatisfiedPercentage }})
  79. </div>
  80. <div style="width: 100%; display: flex; flex-wrap: nowrap">
  81. <div style="width: 80%">
  82. <div style="margin-top: 12px; color: red; font-weight: bold">
  83. * 以下所有统计均不包含“未接触”
  84. </div>
  85. <div style="font-size: 14px; font-weight: bold; color: black; margin-top: 8px;border-bottom: 1px dashed lightgray;padding-bottom: 8px">
  86. 问卷选项总量:{{ analyzeResult.totalOptionCount }}
  87. <el-divider direction="vertical"></el-divider>
  88. “不满意”选项数量:{{ analyzeResult.totalUnsatisfiedOptionCount }}({{ analyzeResult.totalUnsatisfiedOptionPercentage }})
  89. </div>
  90. <div>
  91. <div v-if="inquiry.visitType==='INPATIENT'" class="flex-line">
  92. <div class="flex-child">
  93. <div class="department-name">● 护理人员</div>
  94. <div class="department-summary">
  95. 问卷总量:{{analyzeResult.hlryAssessmentCount}},
  96. 不满意问卷量:{{analyzeResult.hlryUnsatisfiedCount}}&nbsp;({{analyzeResult.hlryUnsatisfiedPercentage}})
  97. <div>
  98. 指标总量:{{analyzeResult.hlryUnsatisfiedOption.totalOptionSize}},
  99. 不满意指标量:{{analyzeResult.hlryUnsatisfiedOption.checkedOptionSize}}&nbsp;
  100. ({{analyzeResult.hlryUnsatisfiedOption.checkedOptionPercentage}})
  101. </div>
  102. </div>
  103. <div class="option-summary">- 不满意指标详情</div>
  104. <div class="option-detail"><span class="option-name">技术水平</span>不满意数量:{{ analyzeResult.hlryUnsatisfiedOption.jsspCount }}({{analyzeResult.hlryUnsatisfiedOption.jsspPercentage}})</div>
  105. <div class="option-detail"><span class="option-name">隐私保护</span>不满意数量:{{ analyzeResult.hlryUnsatisfiedOption.ysbhCount }}({{analyzeResult.hlryUnsatisfiedOption.ysbhPercentage}})</div>
  106. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.hlryUnsatisfiedOption.fwtdCount }}({{analyzeResult.hlryUnsatisfiedOption.fwtdPercentage}})</div>
  107. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.hlryUnsatisfiedOption.gtjsCount }}({{analyzeResult.hlryUnsatisfiedOption.gtjsPercentage}})</div>
  108. <div class="option-detail"><span class="option-name">病情巡视</span>不满意数量:{{ analyzeResult.hlryUnsatisfiedOption.bqxsCount }}({{analyzeResult.hlryUnsatisfiedOption.bqxsPercentage}})</div>
  109. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.hlryUnsatisfiedOption.fzlyCount }}({{analyzeResult.hlryUnsatisfiedOption.fzlyPercentage}})</div>
  110. <div class="option-detail"><span class="option-name">其他</span>不满意数量:{{ analyzeResult.hlryUnsatisfiedOption.qtCount }}({{analyzeResult.hlryUnsatisfiedOption.qtPercentage}})</div>
  111. </div>
  112. <div class="flex-child">
  113. <div class="department-name">● 科室医生</div>
  114. <div class="department-summary">
  115. 问卷总量:{{analyzeResult.ksysAssessmentCount}},
  116. 不满意问卷量:{{analyzeResult.ksysUnsatisfiedCount}}&nbsp;({{analyzeResult.ksysUnsatisfiedPercentage}})
  117. <div>
  118. 指标总量:{{analyzeResult.ksysUnsatisfiedOption.totalOptionSize}},
  119. 不满意指标量:{{analyzeResult.ksysUnsatisfiedOption.checkedOptionSize}}&nbsp;
  120. ({{analyzeResult.ksysUnsatisfiedOption.checkedOptionPercentage}})
  121. </div>
  122. </div>
  123. <div class="option-summary">- 不满意指标详情</div>
  124. <div class="option-detail"><span class="option-name">技术水平</span>不满意数量:{{ analyzeResult.ksysUnsatisfiedOption.jsspCount }}({{analyzeResult.ksysUnsatisfiedOption.jsspPercentage}})</div>
  125. <div class="option-detail"><span class="option-name">隐私保护</span>不满意数量:{{ analyzeResult.ksysUnsatisfiedOption.ysbhCount }}({{analyzeResult.ksysUnsatisfiedOption.ysbhPercentage}})</div>
  126. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.ksysUnsatisfiedOption.fwtdCount }}({{analyzeResult.ksysUnsatisfiedOption.fwtdPercentage}})</div>
  127. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.ksysUnsatisfiedOption.gtjsCount }}({{analyzeResult.ksysUnsatisfiedOption.gtjsPercentage}})</div>
  128. <div class="option-detail"><span class="option-name">按时查房</span>不满意数量:{{ analyzeResult.ksysUnsatisfiedOption.ascfCount }}({{analyzeResult.ksysUnsatisfiedOption.ascfPercentage}})</div>
  129. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.ksysUnsatisfiedOption.fzlyCount }}({{analyzeResult.ksysUnsatisfiedOption.fzlyPercentage}})</div>
  130. <div class="option-detail"><span class="option-name">其他</span>不满意数量:{{ analyzeResult.ksysUnsatisfiedOption.qtCount }}({{analyzeResult.ksysUnsatisfiedOption.qtPercentage}})</div>
  131. </div>
  132. <div class="flex-child">
  133. <div class="department-name">● 环境卫生</div>
  134. <div class="department-summary">
  135. 问卷总量:{{analyzeResult.hjwsAssessmentCount}},
  136. 不满意问卷量:{{analyzeResult.hjwsUnsatisfiedCount}}&nbsp;({{analyzeResult.hjwsUnsatisfiedPercentage}})
  137. <div>
  138. 指标总量:{{analyzeResult.hjwsUnsatisfiedOption.totalOptionSize}},
  139. 不满意指标量:{{analyzeResult.hjwsUnsatisfiedOption.checkedOptionSize}}&nbsp;
  140. ({{analyzeResult.hjwsUnsatisfiedOption.checkedOptionPercentage}})
  141. </div>
  142. </div>
  143. <div class="option-summary">- 不满意指标详情</div>
  144. <div class="option-detail"><span class="option-name">卫生情况</span>不满意数量:{{ analyzeResult.hjwsUnsatisfiedOption.wsqkCount }}({{analyzeResult.hjwsUnsatisfiedOption.wsqkPercentage}})</div>
  145. <div class="option-detail"><span class="option-name">布局不合理</span>不满意数量:{{ analyzeResult.hjwsUnsatisfiedOption.bjbhlCount }}({{analyzeResult.hjwsUnsatisfiedOption.bjbhlPercentage}})</div>
  146. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.hjwsUnsatisfiedOption.fwtdCount }}({{analyzeResult.hjwsUnsatisfiedOption.fwtdPercentage}})</div>
  147. <div class="option-detail"><span class="option-name">舒适度</span>不满意数量:{{ analyzeResult.hjwsUnsatisfiedOption.ssdCount }}({{analyzeResult.hjwsUnsatisfiedOption.ssdPercentage}})</div>
  148. <div class="option-detail"><span class="option-name">按时清理</span>不满意数量:{{ analyzeResult.hjwsUnsatisfiedOption.asqlCount }}({{analyzeResult.hjwsUnsatisfiedOption.asqlPercentage}})</div>
  149. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.hjwsUnsatisfiedOption.fzlyCount }}({{analyzeResult.hjwsUnsatisfiedOption.fzlyPercentage}})</div>
  150. <div class="option-detail"><span class="option-name">其他</span>不满意数量:{{ analyzeResult.hjwsUnsatisfiedOption.qtCount }}({{analyzeResult.hjwsUnsatisfiedOption.qtPercentage}})</div>
  151. </div>
  152. <div class="flex-child">
  153. <div class="department-name">● 食堂</div>
  154. <div class="department-summary">
  155. 问卷总量:{{analyzeResult.stAssessmentCount}},
  156. 不满意问卷量:{{analyzeResult.stUnsatisfiedCount}}&nbsp;({{analyzeResult.stUnsatisfiedPercentage}})
  157. <div>
  158. 指标总量:{{analyzeResult.stUnsatisfiedOption.totalOptionSize}},
  159. 不满意指标量:{{analyzeResult.stUnsatisfiedOption.checkedOptionSize}}&nbsp;
  160. ({{analyzeResult.stUnsatisfiedOption.checkedOptionPercentage}})
  161. </div>
  162. </div>
  163. <div class="option-summary">- 不满意指标详情</div>
  164. <div class="option-detail"><span class="option-name">卫生情况</span>不满意数量:{{ analyzeResult.stUnsatisfiedOption.wsqkCount }}({{analyzeResult.stUnsatisfiedOption.wsqkPercentage}})</div>
  165. <div class="option-detail"><span class="option-name">口味</span>不满意数量:{{ analyzeResult.stUnsatisfiedOption.kwCount }}({{analyzeResult.stUnsatisfiedOption.kwPercentage}})</div>
  166. <div class="option-detail"><span class="option-name">菜品</span>不满意数量:{{ analyzeResult.stUnsatisfiedOption.cpCount }}({{analyzeResult.stUnsatisfiedOption.cpPercentage}})</div>
  167. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.stUnsatisfiedOption.fwtdCount }}({{analyzeResult.stUnsatisfiedOption.fwtdPercentage}})</div>
  168. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.stUnsatisfiedOption.fzlyCount }}({{analyzeResult.stUnsatisfiedOption.fzlyPercentage}})</div>
  169. <div class="option-detail"><span class="option-name">其他</span>不满意数量:{{ analyzeResult.stUnsatisfiedOption.qtCount }}({{analyzeResult.stUnsatisfiedOption.qtPercentage}})</div>
  170. </div>
  171. </div>
  172. <div class="flex-line">
  173. <div class="flex-child">
  174. <div class="department-name">● 药剂科</div>
  175. <div class="department-summary">
  176. 问卷总量:{{analyzeResult.yjkAssessmentCount}},
  177. 不满意问卷量:{{analyzeResult.yjkUnsatisfiedCount}}&nbsp;({{analyzeResult.yjkUnsatisfiedPercentage}})
  178. <div>
  179. 指标总量:{{analyzeResult.yjkUnsatisfiedOption.totalOptionSize}},
  180. 不满意指标量:{{analyzeResult.yjkUnsatisfiedOption.checkedOptionSize}}&nbsp;
  181. ({{analyzeResult.yjkUnsatisfiedOption.checkedOptionPercentage}})
  182. </div>
  183. </div>
  184. <div class="option-summary">- 不满意指标详情</div>
  185. <div class="option-detail"><span class="option-name">叫号服务</span>不满意数量:{{ analyzeResult.yjkUnsatisfiedOption.jhfwCount }}({{analyzeResult.yjkUnsatisfiedOption.jhfwPercentage}})</div>
  186. <div class="option-detail"><span class="option-name">等待时长</span>不满意数量:{{ analyzeResult.yjkUnsatisfiedOption.ddscCount }}({{analyzeResult.yjkUnsatisfiedOption.ddscPercentage}})</div>
  187. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.yjkUnsatisfiedOption.fwtdCount }}({{analyzeResult.yjkUnsatisfiedOption.fwtdPercentage}})</div>
  188. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.yjkUnsatisfiedOption.gtjsCount }}({{analyzeResult.yjkUnsatisfiedOption.gtjsPercentage}})</div>
  189. <div class="option-detail"><span class="option-name">及时响应</span>不满意数量:{{ analyzeResult.yjkUnsatisfiedOption.jsxyCount }}({{analyzeResult.yjkUnsatisfiedOption.jsxyPercentage}})</div>
  190. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.yjkUnsatisfiedOption.fzlyCount }}({{analyzeResult.yjkUnsatisfiedOption.fzlyPercentage}})</div>
  191. <div class="option-detail"><span class="option-name">准确率</span>不满意数量:{{ analyzeResult.yjkUnsatisfiedOption.zqlCount }}({{analyzeResult.yjkUnsatisfiedOption.zqlPercentage}})</div>
  192. </div>
  193. <div class="flex-child">
  194. <div class="department-name">● 放射科</div>
  195. <div class="department-summary">
  196. 问卷总量:{{analyzeResult.fskAssessmentCount}},
  197. 不满意问卷量:{{analyzeResult.fskUnsatisfiedCount}}&nbsp;({{analyzeResult.fskUnsatisfiedPercentage}})
  198. <div>
  199. 指标总量:{{analyzeResult.fskUnsatisfiedOption.totalOptionSize}},
  200. 不满意指标量:{{analyzeResult.fskUnsatisfiedOption.checkedOptionSize}}&nbsp;
  201. ({{analyzeResult.fskUnsatisfiedOption.checkedOptionPercentage}})
  202. </div>
  203. </div>
  204. <div class="option-summary">- 不满意指标详情</div>
  205. <div v-if="inquiry.visitType==='OUTPATIENT'">
  206. <div class="option-detail"><span class="option-name">叫号服务</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.jhfwCount }}({{analyzeResult.fskUnsatisfiedOption.jhfwPercentage}})</div>
  207. <div class="option-detail"><span class="option-name">等待时长</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.ddscCount }}({{analyzeResult.fskUnsatisfiedOption.ddscPercentage}})</div>
  208. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.fwtdCount }}({{analyzeResult.fskUnsatisfiedOption.fwtdPercentage}})</div>
  209. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.gtjsCount }}({{analyzeResult.fskUnsatisfiedOption.gtjsPercentage}})</div>
  210. <div class="option-detail"><span class="option-name">及时响应</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.jsxyCount }}({{analyzeResult.fskUnsatisfiedOption.jsxyPercentage}})</div>
  211. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.fzlyCount }}({{analyzeResult.fskUnsatisfiedOption.fzlyPercentage}})</div>
  212. <div class="option-detail"><span class="option-name">准确率</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.zqlCount }}({{analyzeResult.fskUnsatisfiedOption.zqlPercentage}})</div>
  213. </div>
  214. <div v-else>
  215. <div class="option-detail"><span class="option-name">技术水平</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.jsspCount }}({{analyzeResult.fskUnsatisfiedOption.jsspPercentage}})</div>
  216. <div class="option-detail"><span class="option-name">隐私保护</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.ysbhCount }}({{analyzeResult.fskUnsatisfiedOption.ysbhPercentage}})</div>
  217. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.fwtdCount }}({{analyzeResult.fskUnsatisfiedOption.fwtdPercentage}})</div>
  218. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.gtjsCount }}({{analyzeResult.fskUnsatisfiedOption.gtjsPercentage}})</div>
  219. <div class="option-detail"><span class="option-name">按时查房</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.ascfCount }}({{analyzeResult.fskUnsatisfiedOption.ascfPercentage}})</div>
  220. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.fzlyCount }}({{analyzeResult.fskUnsatisfiedOption.fzlyPercentage}})</div>
  221. <div class="option-detail"><span class="option-name">其他</span>不满意数量:{{ analyzeResult.fskUnsatisfiedOption.qtCount }}({{analyzeResult.fskUnsatisfiedOption.qtPercentage}})</div>
  222. </div>
  223. </div>
  224. <div class="flex-child">
  225. <div class="department-name">● 超声影像科</div>
  226. <div class="department-summary">
  227. 问卷总量:{{analyzeResult.csyxkAssessmentCount}},
  228. 不满意问卷量:{{analyzeResult.csyxkUnsatisfiedCount}}&nbsp;({{analyzeResult.csyxkUnsatisfiedPercentage}})
  229. <div>
  230. 指标总量:{{analyzeResult.csyxkUnsatisfiedOption.totalOptionSize}},
  231. 不满意指标量:{{analyzeResult.csyxkUnsatisfiedOption.checkedOptionSize}}&nbsp;
  232. ({{analyzeResult.csyxkUnsatisfiedOption.checkedOptionPercentage}})
  233. </div>
  234. </div>
  235. <div class="option-summary">- 不满意指标详情</div>
  236. <div class="option-detail"><span class="option-name">叫号服务</span>不满意数量:{{ analyzeResult.csyxkUnsatisfiedOption.jhfwCount }}({{analyzeResult.csyxkUnsatisfiedOption.jhfwPercentage}})</div>
  237. <div class="option-detail"><span class="option-name">等待时长</span>不满意数量:{{ analyzeResult.csyxkUnsatisfiedOption.ddscCount }}({{analyzeResult.csyxkUnsatisfiedOption.ddscPercentage}})</div>
  238. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.csyxkUnsatisfiedOption.fwtdCount }}({{analyzeResult.csyxkUnsatisfiedOption.fwtdPercentage}})</div>
  239. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.csyxkUnsatisfiedOption.gtjsCount }}({{analyzeResult.csyxkUnsatisfiedOption.gtjsPercentage}})</div>
  240. <div class="option-detail"><span class="option-name">及时响应</span>不满意数量:{{ analyzeResult.csyxkUnsatisfiedOption.jsxyCount }}({{analyzeResult.csyxkUnsatisfiedOption.jsxyPercentage}})</div>
  241. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.csyxkUnsatisfiedOption.fzlyCount }}({{analyzeResult.csyxkUnsatisfiedOption.fzlyPercentage}})</div>
  242. <div class="option-detail"><span class="option-name">准确率</span>不满意数量:{{ analyzeResult.csyxkUnsatisfiedOption.zqlCount }}({{analyzeResult.csyxkUnsatisfiedOption.zqlPercentage}})</div>
  243. </div>
  244. <div class="flex-child">
  245. <div class="department-name">● 检验科</div>
  246. <div class="department-summary">
  247. 问卷总量:{{analyzeResult.jykAssessmentCount}},
  248. 不满意问卷量:{{analyzeResult.jykUnsatisfiedCount}}&nbsp;({{analyzeResult.jykUnsatisfiedPercentage}})
  249. <div>
  250. 指标总量:{{analyzeResult.jykUnsatisfiedOption.totalOptionSize}},
  251. 不满意指标量:{{analyzeResult.jykUnsatisfiedOption.checkedOptionSize}}&nbsp;
  252. ({{analyzeResult.jykUnsatisfiedOption.checkedOptionPercentage}})
  253. </div>
  254. </div>
  255. <div class="option-summary">- 不满意指标详情</div>
  256. <div class="option-detail"><span class="option-name">叫号服务</span>不满意数量:{{ analyzeResult.jykUnsatisfiedOption.jhfwCount }}({{analyzeResult.jykUnsatisfiedOption.jhfwPercentage}})</div>
  257. <div class="option-detail"><span class="option-name">等待时长</span>不满意数量:{{ analyzeResult.jykUnsatisfiedOption.ddscCount }}({{analyzeResult.jykUnsatisfiedOption.ddscPercentage}})</div>
  258. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.jykUnsatisfiedOption.fwtdCount }}({{analyzeResult.jykUnsatisfiedOption.fwtdPercentage}})</div>
  259. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.jykUnsatisfiedOption.gtjsCount }}({{analyzeResult.jykUnsatisfiedOption.gtjsPercentage}})</div>
  260. <div class="option-detail"><span class="option-name">及时响应</span>不满意数量:{{ analyzeResult.jykUnsatisfiedOption.jsxyCount }}({{analyzeResult.jykUnsatisfiedOption.jsxyPercentage}})</div>
  261. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.jykUnsatisfiedOption.fzlyCount }}({{analyzeResult.jykUnsatisfiedOption.fzlyPercentage}})</div>
  262. <div class="option-detail"><span class="option-name">准确率</span>不满意数量:{{ analyzeResult.jykUnsatisfiedOption.zqlCount }}({{analyzeResult.jykUnsatisfiedOption.zqlPercentage}})</div>
  263. </div>
  264. </div>
  265. <div style="width: 100%; height: 1px; margin: 12px 0 2px 0; border-bottom: 1px dashed lightgray"></div>
  266. <div class="flex-line">
  267. <div class="flex-child">
  268. <div class="department-name">● 收费窗口</div>
  269. <div class="department-summary">
  270. 问卷总量:{{analyzeResult.sfckAssessmentCount}},
  271. 不满意问卷量:{{analyzeResult.sfckUnsatisfiedCount}}&nbsp;({{analyzeResult.sfckUnsatisfiedPercentage}})
  272. <div>
  273. 指标总量:{{analyzeResult.sfckUnsatisfiedOption.totalOptionSize}},
  274. 不满意指标量:{{analyzeResult.sfckUnsatisfiedOption.checkedOptionSize}}&nbsp;
  275. ({{analyzeResult.sfckUnsatisfiedOption.checkedOptionPercentage}})
  276. </div>
  277. </div>
  278. <div class="option-summary">- 不满意指标详情</div>
  279. <div class="option-detail"><span class="option-name">叫号服务</span>不满意数量:{{ analyzeResult.sfckUnsatisfiedOption.jhfwCount }}({{analyzeResult.sfckUnsatisfiedOption.jhfwPercentage}})</div>
  280. <div class="option-detail"><span class="option-name">等待时长</span>不满意数量:{{ analyzeResult.sfckUnsatisfiedOption.ddscCount }}({{analyzeResult.sfckUnsatisfiedOption.ddscPercentage}})</div>
  281. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.sfckUnsatisfiedOption.fwtdCount }}({{analyzeResult.sfckUnsatisfiedOption.fwtdPercentage}})</div>
  282. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.sfckUnsatisfiedOption.gtjsCount }}({{analyzeResult.sfckUnsatisfiedOption.gtjsPercentage}})</div>
  283. <div class="option-detail"><span class="option-name">及时响应</span>不满意数量:{{ analyzeResult.sfckUnsatisfiedOption.jsxyCount }}({{analyzeResult.sfckUnsatisfiedOption.jsxyPercentage}})</div>
  284. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.sfckUnsatisfiedOption.fzlyCount }}({{analyzeResult.sfckUnsatisfiedOption.fzlyPercentage}})</div>
  285. <div class="option-detail"><span class="option-name">准确率</span>不满意数量:{{ analyzeResult.sfckUnsatisfiedOption.zqlCount }}({{analyzeResult.sfckUnsatisfiedOption.zqlPercentage}})</div>
  286. </div>
  287. <div v-if="inquiry.visitType === 'INPATIENT'" class="flex-child">
  288. <div class="department-name">● 急诊医护人员</div>
  289. <div class="department-summary">
  290. 问卷总量:{{analyzeResult.jzyhAssessmentCount}},
  291. 不满意问卷量:{{analyzeResult.jzyhUnsatisfiedCount}}&nbsp;({{analyzeResult.jzyhUnsatisfiedPercentage}})
  292. <div>
  293. 指标总量:{{analyzeResult.jzyhUnsatisfiedOption.totalOptionSize}},
  294. 不满意指标量:{{analyzeResult.jzyhUnsatisfiedOption.checkedOptionSize}}&nbsp;
  295. ({{analyzeResult.jzyhUnsatisfiedOption.checkedOptionPercentage}})
  296. </div>
  297. </div>
  298. <div class="option-summary">- 不满意指标详情</div>
  299. <div class="option-detail"><span class="option-name">叫号服务</span>不满意数量:{{ analyzeResult.jzyhUnsatisfiedOption.jhfwCount }}({{analyzeResult.jzyhUnsatisfiedOption.jhfwPercentage}})</div>
  300. <div class="option-detail"><span class="option-name">等待时长</span>不满意数量:{{ analyzeResult.jzyhUnsatisfiedOption.ddscCount }}({{analyzeResult.jzyhUnsatisfiedOption.ddscPercentage}})</div>
  301. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.jzyhUnsatisfiedOption.fwtdCount }}({{analyzeResult.jzyhUnsatisfiedOption.fwtdPercentage}})</div>
  302. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.jzyhUnsatisfiedOption.gtjsCount }}({{analyzeResult.jzyhUnsatisfiedOption.gtjsPercentage}})</div>
  303. <div class="option-detail"><span class="option-name">及时响应</span>不满意数量:{{ analyzeResult.jzyhUnsatisfiedOption.jsxyCount }}({{analyzeResult.jzyhUnsatisfiedOption.jsxyPercentage}})</div>
  304. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.jzyhUnsatisfiedOption.fzlyCount }}({{analyzeResult.jzyhUnsatisfiedOption.fzlyPercentage}})</div>
  305. <div class="option-detail"><span class="option-name">准确率</span>不满意数量:{{ analyzeResult.jzyhUnsatisfiedOption.zqlCount }}({{analyzeResult.jzyhUnsatisfiedOption.zqlPercentage}})</div>
  306. </div>
  307. <div v-else class="flex-child">
  308. <div class="department-name">● 门急诊导诊及护理人员</div>
  309. <div class="department-summary">
  310. 问卷总量:{{analyzeResult.mjzdzhlAssessmentCount}},
  311. 不满意问卷量:{{analyzeResult.mjzdzhlUnsatisfiedCount}}&nbsp;({{analyzeResult.mjzdzhlUnsatisfiedPercentage}})
  312. <div>
  313. 指标总量:{{analyzeResult.mjzdzhlUnsatisfiedOption.totalOptionSize}},
  314. 不满意指标量:{{analyzeResult.mjzdzhlUnsatisfiedOption.checkedOptionSize}}&nbsp;
  315. ({{analyzeResult.mjzdzhlUnsatisfiedOption.checkedOptionPercentage}})
  316. </div>
  317. </div>
  318. <div class="option-summary">- 不满意指标详情</div>
  319. <div class="option-detail"><span class="option-name">技术水平</span>不满意数量:{{ analyzeResult.mjzdzhlUnsatisfiedOption.jsspCount }}({{analyzeResult.mjzdzhlUnsatisfiedOption.jsspPercentage}})</div>
  320. <div class="option-detail"><span class="option-name">隐私保护</span>不满意数量:{{ analyzeResult.mjzdzhlUnsatisfiedOption.ysbhCount }}({{analyzeResult.mjzdzhlUnsatisfiedOption.ysbhPercentage}})</div>
  321. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.mjzdzhlUnsatisfiedOption.fwtdCount }}({{analyzeResult.mjzdzhlUnsatisfiedOption.fwtdPercentage}})</div>
  322. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.mjzdzhlUnsatisfiedOption.gtjsCount }}({{analyzeResult.mjzdzhlUnsatisfiedOption.gtjsPercentage}})</div>
  323. <div class="option-detail"><span class="option-name">病情巡视</span>不满意数量:{{ analyzeResult.mjzdzhlUnsatisfiedOption.bqxsCount }}({{analyzeResult.mjzdzhlUnsatisfiedOption.bqxsPercentage}})</div>
  324. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.mjzdzhlUnsatisfiedOption.fzlyCount }}({{analyzeResult.mjzdzhlUnsatisfiedOption.fzlyPercentage}})</div>
  325. </div>
  326. <div v-if="inquiry.visitType === 'INPATIENT'" class="flex-child">
  327. <div class="department-name">● 门诊医护人员</div>
  328. <div class="department-summary">
  329. 问卷总量:{{analyzeResult.mzyhAssessmentCount}},
  330. 不满意问卷量:{{analyzeResult.mzyhUnsatisfiedCount}}&nbsp;({{analyzeResult.mzyhUnsatisfiedPercentage}})
  331. <div>
  332. 指标总量:{{analyzeResult.mzyhUnsatisfiedOption.totalOptionSize}},
  333. 不满意指标量:{{analyzeResult.mzyhUnsatisfiedOption.checkedOptionSize}}&nbsp;
  334. ({{analyzeResult.mzyhUnsatisfiedOption.checkedOptionPercentage}})
  335. </div>
  336. </div>
  337. <div class="option-summary">- 不满意指标详情</div>
  338. <div class="option-detail"><span class="option-name">叫号服务</span>不满意数量:{{ analyzeResult.mzyhUnsatisfiedOption.jhfwCount }}({{analyzeResult.mzyhUnsatisfiedOption.jhfwPercentage}})</div>
  339. <div class="option-detail"><span class="option-name">等待时长</span>不满意数量:{{ analyzeResult.mzyhUnsatisfiedOption.ddscCount }}({{analyzeResult.mzyhUnsatisfiedOption.ddscPercentage}})</div>
  340. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.mzyhUnsatisfiedOption.fwtdCount }}({{analyzeResult.mzyhUnsatisfiedOption.fwtdPercentage}})</div>
  341. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.mzyhUnsatisfiedOption.gtjsCount }}({{analyzeResult.mzyhUnsatisfiedOption.gtjsPercentage}})</div>
  342. <div class="option-detail"><span class="option-name">及时响应</span>不满意数量:{{ analyzeResult.mzyhUnsatisfiedOption.jsxyCount }}({{analyzeResult.mzyhUnsatisfiedOption.jsxyPercentage}})</div>
  343. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.mzyhUnsatisfiedOption.fzlyCount }}({{analyzeResult.mzyhUnsatisfiedOption.fzlyPercentage}})</div>
  344. <div class="option-detail"><span class="option-name">准确率</span>不满意数量:{{ analyzeResult.mzyhUnsatisfiedOption.zqlCount }}({{analyzeResult.mzyhUnsatisfiedOption.zqlPercentage}})</div>
  345. </div>
  346. <div v-else class="flex-child">
  347. <div class="department-name">● 门急诊医生</div>
  348. <div class="department-summary">
  349. 问卷总量:{{analyzeResult.mjzysAssessmentCount}},
  350. 不满意问卷量:{{analyzeResult.mjzysUnsatisfiedCount}}&nbsp;({{analyzeResult.mjzysUnsatisfiedPercentage}})
  351. <div>
  352. 指标总量:{{analyzeResult.mjzysUnsatisfiedOption.totalOptionSize}},
  353. 不满意指标量:{{analyzeResult.mjzysUnsatisfiedOption.checkedOptionSize}}&nbsp;
  354. ({{analyzeResult.mjzysUnsatisfiedOption.checkedOptionPercentage}})
  355. </div>
  356. </div>
  357. <div class="option-summary">- 不满意指标详情</div>
  358. <div class="option-detail"><span class="option-name">技术水平</span>不满意数量:{{ analyzeResult.mjzysUnsatisfiedOption.jsspCount }}({{analyzeResult.mjzysUnsatisfiedOption.jsspPercentage}})</div>
  359. <div class="option-detail"><span class="option-name">隐私保护</span>不满意数量:{{ analyzeResult.mjzysUnsatisfiedOption.ysbhCount }}({{analyzeResult.mjzysUnsatisfiedOption.ysbhPercentage}})</div>
  360. <div class="option-detail"><span class="option-name">服务态度</span>不满意数量:{{ analyzeResult.mjzysUnsatisfiedOption.fwtdCount }}({{analyzeResult.mjzysUnsatisfiedOption.fwtdPercentage}})</div>
  361. <div class="option-detail"><span class="option-name">沟通解释</span>不满意数量:{{ analyzeResult.mjzysUnsatisfiedOption.gtjsCount }}({{analyzeResult.mjzysUnsatisfiedOption.gtjsPercentage}})</div>
  362. <div class="option-detail"><span class="option-name">按时坐诊</span>不满意数量:{{ analyzeResult.mjzysUnsatisfiedOption.aszzCount }}({{analyzeResult.mjzysUnsatisfiedOption.aszzPercentage}})</div>
  363. <div class="option-detail"><span class="option-name">服装礼仪</span>不满意数量:{{ analyzeResult.mjzysUnsatisfiedOption.fzlyCount }}({{analyzeResult.mjzysUnsatisfiedOption.fzlyPercentage}})</div>
  364. </div>
  365. <div class="flex-child">
  366. <div class="department-name">● 医保科</div>
  367. <div class="department-summary">
  368. 问卷总量:{{analyzeResult.ybkAssessmentCount}},
  369. 不满意问卷量:{{analyzeResult.ybkUnsatisfiedCount}}&nbsp;({{analyzeResult.ybkUnsatisfiedPercentage}})
  370. <div>
  371. 指标总量:无,
  372. 不满意指标量:无&nbsp;
  373. </div>
  374. </div>
  375. </div>
  376. </div>
  377. <div style="width: 100%; height: 1px; margin: 12px 0 2px 0; border-bottom: 1px dashed lightgray"></div>
  378. <div class="flex-line">
  379. <div class="flex-child">
  380. <div class="department-name">● 选择我院的原因</div>
  381. <div class="department-summary">
  382. 问卷总量:{{analyzeResult.whyChooseHere.totalCount}}
  383. </div>
  384. <div class="option-summary">- 原因详情</div>
  385. <div class="option-detail"><span class="option-name">慕名而来</span>数量:{{ analyzeResult.whyChooseHere.mmelCount }}({{analyzeResult.whyChooseHere.mmelPercentage}})</div>
  386. <div class="option-detail"><span class="option-name">就近选择</span>数量:{{ analyzeResult.whyChooseHere.jjxzCount }}({{analyzeResult.whyChooseHere.jjxzPercentage}})</div>
  387. <div class="option-detail"><span class="option-name">朋友推荐</span>数量:{{ analyzeResult.whyChooseHere.pytjCount }}({{analyzeResult.whyChooseHere.pytjPercentage}})</div>
  388. <div class="option-detail"><span class="option-name">网络查询</span>数量:{{ analyzeResult.whyChooseHere.wlcxCount }}({{analyzeResult.whyChooseHere.wlcxPercentage}})</div>
  389. <div class="option-detail"><span class="option-name">服务水平</span>数量:{{ analyzeResult.whyChooseHere.fwspCount }}({{analyzeResult.whyChooseHere.fwspPercentage}})</div>
  390. <div class="option-detail"><span class="option-name">环境设备</span>数量:{{ analyzeResult.whyChooseHere.hjsbCount }}({{analyzeResult.whyChooseHere.hjsbPercentage}})</div>
  391. <div class="option-detail"><span class="option-name">医疗价格</span>数量:{{ analyzeResult.whyChooseHere.yljgCount }}({{analyzeResult.whyChooseHere.yljgPercentage}})</div>
  392. </div>
  393. <div class="flex-child">
  394. <div class="department-name">● 是否会再次选择我院</div>
  395. <div class="department-summary">
  396. 问卷总量:{{analyzeResult.willComeAgain.totalCount}}
  397. </div>
  398. <div class="option-summary">- 结果详情</div>
  399. <div class="option-detail"><span class="option-name">会</span>数量:{{ analyzeResult.willComeAgain.yesCount }}({{analyzeResult.willComeAgain.yesPercentage}})</div>
  400. <div class="option-detail"><span class="option-name">不会</span>数量:{{ analyzeResult.willComeAgain.noCount }}({{analyzeResult.willComeAgain.noPercentage}})</div>
  401. <div class="option-detail"><span class="option-name">不一定</span>数量:{{ analyzeResult.willComeAgain.bydCount }}({{analyzeResult.willComeAgain.bydPercentage}})</div>
  402. </div>
  403. <div class="flex-child">
  404. <div class="department-name">● 整体评价(1-10分)</div>
  405. <div class="department-summary">
  406. 问卷总量:{{analyzeResult.gradeNum.totalCount}}
  407. </div>
  408. <div class="option-summary">- 评分详情</div>
  409. <div class="option-detail"><span class="option-name">1分</span>数量:{{ analyzeResult.gradeNum.oneCount }}({{analyzeResult.gradeNum.onePercentage}})</div>
  410. <div class="option-detail"><span class="option-name">2分</span>数量:{{ analyzeResult.gradeNum.twoCount }}({{analyzeResult.gradeNum.twoPercentage}})</div>
  411. <div class="option-detail"><span class="option-name">3分</span>数量:{{ analyzeResult.gradeNum.threeCount }}({{analyzeResult.gradeNum.threePercentage}})</div>
  412. <div class="option-detail"><span class="option-name">4分</span>数量:{{ analyzeResult.gradeNum.fourCount }}({{analyzeResult.gradeNum.fourPercentage}})</div>
  413. <div class="option-detail"><span class="option-name">5分</span>数量:{{ analyzeResult.gradeNum.fiveCount }}({{analyzeResult.gradeNum.fivePercentage}})</div>
  414. <div class="option-detail"><span class="option-name">6分</span>数量:{{ analyzeResult.gradeNum.sixCount }}({{analyzeResult.gradeNum.sixPercentage}})</div>
  415. <div class="option-detail"><span class="option-name">7分</span>数量:{{ analyzeResult.gradeNum.sevenCount }}({{analyzeResult.gradeNum.sevenPercentage}})</div>
  416. <div class="option-detail"><span class="option-name">8分</span>数量:{{ analyzeResult.gradeNum.eightCount }}({{analyzeResult.gradeNum.eightPercentage}})</div>
  417. <div class="option-detail"><span class="option-name">9分</span>数量:{{ analyzeResult.gradeNum.nineCount }}({{analyzeResult.gradeNum.ninePercentage}})</div>
  418. <div class="option-detail"><span class="option-name">10分</span>数量:{{ analyzeResult.gradeNum.tenCount }}({{analyzeResult.gradeNum.tenPercentage}})</div>
  419. </div>
  420. </div>
  421. </div>
  422. </div>
  423. <div style="width: 20%; height: 600px;">
  424. <div style="font-size: 14px; font-weight: bold; color: black; margin: 4px 0 4px 8px;border-bottom: 1px dashed lightgray;padding-bottom: 4px">
  425. 建议与意见
  426. </div>
  427. <div style="height: 580px; overflow-y: auto; padding: 0 8px 0 8px;">
  428. <div v-for="item in analyzeResult.suggestions">
  429. <div style="color: black">{{item.suggestion}}</div>
  430. <div style="width: 100%; text-align: right; padding: 4px 8px 0 0;color: #54545b;font-size: 12px">
  431. <span v-if="inquiry.visitType === 'INPATIENT'">{{item.deptName}}&nbsp;/&nbsp;</span>
  432. {{item.patientId}}&nbsp;/&nbsp;{{item.patName}}&nbsp;/&nbsp;{{item.createDatetime}}
  433. </div>
  434. <div style="width: 100%; height: 2px;border-bottom: 1px dashed #6b778c;margin-bottom: 4px"></div>
  435. </div>
  436. </div>
  437. </div>
  438. </div>
  439. </el-dialog>
  440. </template>
  441. </page-layer>
  442. </template>
  443. <script setup>
  444. import PageLayer from "@/layout/PageLayer.vue";
  445. import {
  446. getSatisfiedBodies,
  447. updateAssessmentStatus,
  448. assessmentsAnalyse,
  449. getAllSatisfiedBodies
  450. } from "@/api/outpatient/clinic-satisfied";
  451. import store from "@/store";
  452. import {ElMessage} from "element-plus";
  453. import {Export} from "@/utils/ExportExcel";
  454. import {getDateRangeFormatDate} from "@/utils/date";
  455. const windowSize = store.state.app.windowSize
  456. const tableHeight = windowSize.h - 55
  457. const dateRange = ref([])
  458. const formatDateRange = () => {
  459. if (dateRange.value.length === 2) {
  460. const format = getDateRangeFormatDate(dateRange.value)
  461. inquiry.start = format.startTime
  462. inquiry.end = format.endTime
  463. }
  464. }
  465. const inquiry = reactive({
  466. visitType: 'OUTPATIENT',
  467. start: null,
  468. end: null,
  469. pageNum: 1,
  470. pageSize: 30,
  471. onlyShowUnsatisfied: false
  472. })
  473. const assessments = reactive({
  474. totalSize: 0,
  475. list: []
  476. })
  477. const showAnalyzeResult = ref(false)
  478. const analyzeResult = ref({})
  479. const titleOfAnalyze = computed(() => {
  480. return inquiry.visitType === 'OUTPATIENT' ?
  481. '门诊满意度调查分析' : '住院满意度调查分析'
  482. })
  483. const handleVisitTypeChange = () => {
  484. assessments.totalSize = 0
  485. assessments.list = []
  486. }
  487. const fetchAssessments = () => {
  488. formatDateRange()
  489. getSatisfiedBodies(inquiry).then(res => {
  490. assessments.totalSize = res.totalSize
  491. assessments.list = res.list
  492. }).catch(() => {
  493. assessments.totalSize = 0
  494. assessments.list = []
  495. })
  496. }
  497. const executeAssessmentAnalyse = () => {
  498. formatDateRange()
  499. assessmentsAnalyse(inquiry).then(res => {
  500. analyzeResult.value = res
  501. showAnalyzeResult.value = true
  502. console.log(res)
  503. })
  504. }
  505. const handleSatisfiedChange = () => {
  506. inquiry.pageNum = 1
  507. fetchAssessments()
  508. }
  509. const handleSizeChange = (val) => {
  510. inquiry.pageSize = val
  511. fetchAssessments()
  512. }
  513. const handleCurrentChange = (val) => {
  514. inquiry.pageNum = val
  515. fetchAssessments()
  516. }
  517. const changeAssessmentStatus = (row, deleted) => {
  518. const params = {
  519. visitType: inquiry.visitType,
  520. id: row.id,
  521. deleted: deleted,
  522. }
  523. updateAssessmentStatus(params).then(res => {
  524. row.deleted = deleted
  525. ElMessage({
  526. message: res,
  527. type: 'success',
  528. showClose: true,
  529. duration: 2000
  530. })
  531. })
  532. }
  533. const exportExcel = () => {
  534. let fields;
  535. if (inquiry.visitType === 'OUTPATIENT') {
  536. fields = {
  537. item1: '对药剂科工作人员',
  538. item3: '对放射科工作人员',
  539. item5: '对超声影像科工作人员',
  540. item7: '对检验科工作人员',
  541. item9: '对收费窗口工作人员',
  542. item11: '对门急诊导诊及护理人员',
  543. item13: '对门急诊医生',
  544. item15: '对医保科',
  545. item1002: '选择我院的原因',
  546. item1004: '是否会再次选择我院',
  547. item1006: '整体评价(1-10分)',
  548. satisfyStaff: '最满意的医生护士',
  549. suggestion: '建议与意见'
  550. };
  551. } else {
  552. fields = {
  553. item1: '对护理人员',
  554. item3: '对科室医生',
  555. item5: '对环境卫生',
  556. item7: '对食堂',
  557. item9: '对药剂科工作人员',
  558. item11: '对放射科工作人员',
  559. item13: '对超声影像科工作人员',
  560. item15: '对检验科工作人员',
  561. item17: '对收费窗口工作人员',
  562. item19: '对门诊医护人员',
  563. item21: '对急诊医护人员',
  564. item23: '对医保科',
  565. item1002: '选择我院的原因',
  566. item1004: '是否会再次选择我院',
  567. item1006: '整体评价(1-10分)',
  568. satisfyStaff: '最满意的医生护士',
  569. suggestion: '建议与意见'
  570. };
  571. }
  572. formatDateRange();
  573. getAllSatisfiedBodies(inquiry).then(res => {
  574. Export(res, fields, titleOfAnalyze.value)
  575. })
  576. }
  577. </script>
  578. <style scoped>
  579. .flex-line {
  580. display: flex;
  581. }
  582. .flex-child {
  583. width: 25%;
  584. }
  585. .department-name {
  586. font-weight: bold;
  587. margin-top: 12px;
  588. }
  589. .department-summary {
  590. margin-top: 4px;
  591. padding-left: 10px;
  592. color: darkred;
  593. }
  594. .option-summary {
  595. margin-top: 4px;
  596. padding-left: 10px;
  597. font-weight: bold;
  598. }
  599. .option-detail {
  600. margin-top: 4px;
  601. padding-left: 18px;
  602. }
  603. .option-name {
  604. color: #222222;
  605. font-weight: bold;
  606. }
  607. </style>