index.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. <template>
  2. <div class="afterAalesProblemAnalysis">
  3. <el-row :gutter="10">
  4. <el-col :span="6">
  5. <el-form ref="form" :model="queryParams" label-width="80px">
  6. <el-form-item label="项目/医院">
  7. <el-autocomplete
  8. v-model="queryParams.projectSource"
  9. :fetch-suggestions="querySearchAsync"
  10. placeholder="请输入内容"
  11. @select="handleSelect"
  12. clearable
  13. ></el-autocomplete>
  14. </el-form-item>
  15. </el-form>
  16. </el-col>
  17. <el-col :span="6">
  18. <el-button type="primary" plain @click="dayBtn">近7天</el-button>
  19. <el-button type="primary" plain @click="weekBtn">近7周</el-button>
  20. <el-button type="primary" plain @click="monthBtn">近7月</el-button>
  21. </el-col>
  22. <el-col :span="6">
  23. <el-date-picker
  24. v-model="dateRange"
  25. type="daterange"
  26. value-format="yyyy-MM-dd"
  27. range-separator="至"
  28. start-placeholder="开始日期"
  29. end-placeholder="结束日期">
  30. </el-date-picker>
  31. </el-col>
  32. <el-col :span="6">
  33. <el-button type="primary" @click="queryBtn">搜索</el-button>
  34. </el-col>
  35. </el-row>
  36. <el-row>
  37. <el-table
  38. :data="dataList"
  39. style="width: 100%;margin-top: 20px"
  40. :height="tableHeight"
  41. :header-cell-style="{'text-align':'center'}"
  42. :cell-style="{'text-align':'center'}"
  43. border
  44. >
  45. <el-table-column
  46. prop="date"
  47. label="序号"
  48. width="90">
  49. <template #default="scope">
  50. {{scope.$index+1}}
  51. </template>
  52. </el-table-column>
  53. <el-table-column
  54. prop="projectSource"
  55. label="项目/医院"
  56. width="230">
  57. </el-table-column>
  58. <el-table-column
  59. prop="address"
  60. label="总问题(已解决/未解决)"
  61. width="230">
  62. <template #default="scope">
  63. <a>{{scope.row.solvedProblem+'/'+scope.row.unsolvedProblem}}</a>
  64. </template>
  65. </el-table-column>
  66. <el-table-column
  67. prop="address"
  68. label="软件问题(已解决/未解决)"
  69. width="230">
  70. <template #default="scope">
  71. <a>{{scope.row.typeOneSolvedProblem+'/'+scope.row.typeOneUnsolvedProblem}}</a>
  72. </template>
  73. </el-table-column>
  74. <el-table-column
  75. prop="address"
  76. label="服务问题(已解决/未解决)"
  77. width="230">
  78. <template #default="scope">
  79. <a>{{scope.row.typeThreeSolvedProblem+'/'+scope.row.typeThreeUnsolvedProblem}}</a>
  80. </template>
  81. </el-table-column>
  82. <el-table-column
  83. prop="address"
  84. label="硬件问题(已解决/未解决)"
  85. width="230">
  86. <template #default="scope">
  87. <a>{{scope.row.typeTwoSolvedProblem+'/'+scope.row.typeTwoUnsolvedProblem}}</a>
  88. </template>
  89. </el-table-column>
  90. <el-table-column
  91. prop="address"
  92. label="其他问题(已解决/未解决)"
  93. width="230">
  94. <template #default="scope">
  95. <a>{{scope.row.typeFourSolvedProblem+'/'+scope.row.typeFourUnsolvedProblem}}</a>
  96. </template>
  97. </el-table-column>
  98. </el-table>
  99. </el-row>
  100. <el-pagination
  101. @size-change="handleSizeChange"
  102. @current-change="handleCurrentChange"
  103. :current-page=this.queryParams.pageNum
  104. :page-sizes="[10,20,50,100]"
  105. :page-size=this.queryParams.pageSize
  106. layout="total, sizes, prev, pager, next, jumper"
  107. :total=this.total>
  108. </el-pagination>
  109. </div>
  110. </template>
  111. <script>
  112. import {getAnalysisResult} from "@/api/business/as/afterAalesProblemAnalysis";
  113. import {getHospitalAndProcessor} from "@/api/business/as/problemInfo";
  114. export default {
  115. created() {
  116. this.queryBtn()
  117. this.getTableHeight()
  118. getHospitalAndProcessor().then(res =>{
  119. if(res.code == 200){
  120. this.restaurants = res.data
  121. }
  122. })
  123. },
  124. methods:{
  125. //计算table高度(动态设置table高度)
  126. getTableHeight() {
  127. let tableH = 120; //距离页面下方的高度
  128. let tableHeightDetil = window.innerHeight - tableH;
  129. if (tableHeightDetil <= 300) {
  130. this.tableHeight = 300;
  131. } else {
  132. this.tableHeight = window.innerHeight - tableH;
  133. }
  134. },
  135. querySearchAsync(queryString, cb) {
  136. this.restaurants.forEach((item) =>{
  137. item.value=item.projectSource
  138. })
  139. var restaurants = this.restaurants
  140. var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants;
  141. cb(results)
  142. },
  143. createStateFilter(queryString) {
  144. return (item) => {
  145. return item.projectSource.match(queryString);
  146. };
  147. },
  148. handleSelect(item) {
  149. this.queryParams.projectSource=item.projectSource
  150. },
  151. handleSizeChange(val) {
  152. this.queryParams.pageSize = val
  153. this.queryBtn()
  154. },
  155. handleCurrentChange(val) {
  156. this.queryParams.pageNum = val
  157. this.queryBtn()
  158. },
  159. dayBtn(){
  160. this.queryParams.dayRange=7
  161. this.queryBtn()
  162. this.queryParams.dayRange=''
  163. },
  164. weekBtn(){
  165. this.queryParams.weekRange=7
  166. this.queryBtn()
  167. this.queryParams.weekRange=''
  168. },
  169. monthBtn(){
  170. this.queryParams.monthRange=7
  171. this.queryBtn()
  172. this.queryParams.monthRange=''
  173. },
  174. queryBtn(){
  175. if(this.dateRange && this.dateRange.length>0){
  176. this.queryParams.startTime = this.dateRange[0]
  177. this.queryParams.endTime = this.dateRange[1]
  178. }else {
  179. this.queryParams.startTime = ''
  180. this.queryParams.endTime = ''
  181. }
  182. getAnalysisResult(this.queryParams).then(res =>{
  183. if(res.code ==200){
  184. this.dataList=res.rows
  185. this.total=res.total
  186. }
  187. })
  188. }
  189. },
  190. data(){
  191. return {
  192. tableHeight:'',
  193. total:'',
  194. dataList:[],
  195. dateRange:[],
  196. queryParams:{
  197. pageNum:1,
  198. pageSize:10,
  199. projectSource:'',
  200. startTime:'',
  201. endTime:'',
  202. dayRange:'',
  203. weekRange:'',
  204. monthRange:''
  205. }
  206. }
  207. }
  208. }
  209. </script>
  210. <style>
  211. </style>