personDeviceLog-list.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <template>
  2. <div>
  3. <el-breadcrumb separator=">">
  4. <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
  5. <el-breadcrumb-item>
  6. <a href="#">系统管理</a>
  7. </el-breadcrumb-item>
  8. <el-breadcrumb-item>
  9. <a href="/personDeviceLog">台账信息</a>
  10. </el-breadcrumb-item>
  11. </el-breadcrumb>
  12. <el-divider></el-divider>
  13. <!--
  14. 要resetFields起作用,必须配置:model和prop
  15. -->
  16. <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
  17. <el-form-item label="检测时间" prop="beginTime">
  18. <el-date-picker
  19. v-model="queryModel.timeRanges"
  20. type="daterange"
  21. range-separator="至"
  22. start-placeholder="开始日期"
  23. end-placeholder="结束日期"
  24. size="mini"
  25. ></el-date-picker>
  26. </el-form-item>
  27. <el-form-item label="人员姓名" prop="personName">
  28. <el-input type="text" size="mini" v-model="queryModel.personName"></el-input>
  29. </el-form-item>
  30. <el-form-item label="设备编号" prop="deviceNo">
  31. <el-input type="text" size="mini" v-model="queryModel.deviceNo"></el-input>
  32. </el-form-item>
  33. <el-form-item label="设备别称" prop="aliasName">
  34. <el-input type="text" size="mini" v-model="queryModel.aliasName"></el-input>
  35. </el-form-item>
  36. <el-form-item>
  37. <el-button
  38. type="primary"
  39. size="mini"
  40. icon="ios-search"
  41. @click="changePage(1)"
  42. :loading="loading"
  43. >查询</el-button>&nbsp;
  44. <el-button
  45. type="info"
  46. size="mini"
  47. style="margin-left: 8px"
  48. @click="handleReset('queryForm')"
  49. >重置</el-button>&nbsp;
  50. </el-form-item>
  51. </el-form>
  52. <el-divider></el-divider>
  53. <el-row class="button-group"></el-row>
  54. <el-table
  55. :data="tableData"
  56. style="min-height:400px;"
  57. v-loading="loading"
  58. stripe
  59. @sort-change="sortChange"
  60. @selection-change="handleSelectionChange"
  61. >
  62. <el-table-column prop="recordTime" label="记录时间" width="180"></el-table-column>
  63. <el-table-column prop="faceImage" width="80">
  64. <template slot-scope="{row}">
  65. <a :href="row.faceImage" target="_blank">
  66. <el-avatar
  67. size="small"
  68. :src="row.faceImage+'?x-oss-process=image/resize,m_lfit,h_100,w_100'"
  69. :key="row.id"
  70. ></el-avatar>
  71. </a>
  72. </template>
  73. </el-table-column>
  74. <el-table-column prop="person" label="人员姓名" width="120">
  75. <template slot-scope="{row}">{{row.person == null ? "匿名用户" : row.person.name}}</template>
  76. </el-table-column>
  77. <el-table-column prop="temperature" label="测温度数" width="120"></el-table-column>
  78. <!-- <el-table-column prop="matchStatus" label="匹配状态" width="180"></el-table-column> -->
  79. <el-table-column prop="matchMsg" label="开门类型" width="150"></el-table-column>
  80. <!-- <el-table-column prop="matchFaceId" label="匹配的人脸id" width="180"></el-table-column> -->
  81. <el-table-column prop="position1" label="一级位置" width="150"></el-table-column>
  82. <el-table-column prop="position2" label="二级位置" width="150"></el-table-column>
  83. <el-table-column prop="position3" label="三级位置" width="150"></el-table-column>
  84. <el-table-column prop="position4" label="四级位置" width="150"></el-table-column>
  85. <el-table-column prop="position5" label="五级位置" width="150"></el-table-column>
  86. <el-table-column prop="deviceNo" label="设备编号" width="220"></el-table-column>
  87. <el-table-column prop="device" label="设备别称" width="220">
  88. <template slot-scope="{row}">{{row.device == null ? "" : row.device.aliasName}}</template>
  89. </el-table-column>
  90. </el-table>
  91. <el-pagination
  92. :current-page.sync="pageIndex"
  93. :total="totalElements"
  94. :page-sizes="pageSizeList"
  95. @current-change="changePage"
  96. @size-change="pageSizeChange"
  97. layout="total, sizes, prev, pager, next, jumper"
  98. ></el-pagination>
  99. </div>
  100. </template>
  101. <script>
  102. import Constant from "@/constant";
  103. import personDeviceLogApi from "@/api/base/personDeviceLog";
  104. import NProgress from "nprogress"; // progress bar
  105. import "nprogress/nprogress.css"; // progress bar style
  106. export default {
  107. data() {
  108. var self = this;
  109. return {
  110. queryModel: {
  111. companyId: "",
  112. deviceNo: "",
  113. aliasName: "",
  114. personName: "",
  115. matchStatus: "",
  116. timeRanges: "",
  117. faceImage: "",
  118. position:""
  119. },
  120. loading: false,
  121. tableData: [],
  122. pageIndex: 1,
  123. pageSize: 10,
  124. totalPages: 0,
  125. totalElements: 0,
  126. field: "",
  127. direction: "",
  128. pageSizeList: [10, 20, 30],
  129. multipleSelection: [],
  130. showModal: false,
  131. modalTitle: "",
  132. businessKey: ""
  133. };
  134. },
  135. methods: {
  136. changePage(pageIndex) {
  137. var self = this;
  138. self.loading = true;
  139. self.pageIndex = pageIndex;
  140. var formData = new FormData();
  141. formData.append("pageIndex", self.pageIndex);
  142. formData.append("pageSize", self.pageSize);
  143. formData.append("faceImage", self.queryModel.faceImage);
  144. formData.append("timeRanges", self.queryModel.timeRanges);
  145. formData.append("matchStatus", self.queryModel.matchStatus);
  146. formData.append("personName", self.queryModel.personName);
  147. formData.append("deviceNo", self.queryModel.deviceNo);
  148. formData.append("aliasName", self.queryModel.aliasName);
  149. formData.append("companyId", self.queryModel.companyId);
  150. formData.append("position", self.queryModel.position);
  151. if (this.field != null) {
  152. formData.append("field", this.field);
  153. }
  154. if (this.direction != null) {
  155. formData.append("direction", this.direction);
  156. }
  157. personDeviceLogApi
  158. .pageList(formData)
  159. .then(function(response) {
  160. self.loading = false;
  161. var jsonData = response.data.data;
  162. self.tableData = jsonData.data;
  163. self.totalPages = jsonData.totalPages;
  164. self.totalElements = jsonData.recordsTotal;
  165. })
  166. .catch(error => {
  167. self.loading = false;
  168. // self.$message.error(error + "");
  169. });
  170. },
  171. pageSizeChange(pageSize) {
  172. this.pageSize = pageSize;
  173. },
  174. sortChange(data) {
  175. this.field = data.column.field;
  176. this.direction = data.order;
  177. this.changePage(this.pageIndex);
  178. },
  179. handleSelectionChange(val) {
  180. this.multipleSelection = val;
  181. },
  182. handleReset(name) {
  183. this.$refs[name].resetFields();
  184. },
  185. onDetailModalClose(refreshed) {
  186. //保存成功后回调
  187. this.showModal = false;
  188. if (refreshed) {
  189. this.changePage(this.pageIndex);
  190. }
  191. }
  192. },
  193. mounted: function() {
  194. this.changePage(1);
  195. }
  196. };
  197. </script>
  198. <style lang="scss" scoped>
  199. .el-breadcrumb {
  200. margin: 10px;
  201. line-height: 20px;
  202. }
  203. .el-divider {
  204. margin: 5px 0;
  205. }
  206. .demo-form-inline {
  207. margin-left: 10px;
  208. text-align: left;
  209. }
  210. .button-group {
  211. margin-left: 10px;
  212. text-align: left;
  213. }
  214. </style>