index.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <template>
  2. <div class="app-container scroll-auto">
  3. <el-form
  4. ref="queryForm"
  5. :model="queryParams"
  6. size="small"
  7. :inline="true"
  8. v-show="showSearch"
  9. >
  10. <!--el-form-item label="区县公司" prop="countyOrgNm">
  11. <el-input
  12. v-model="queryParams.countyOrgNm"
  13. placeholder="请输入区县公司"
  14. clearable
  15. />
  16. </el-form-item>
  17. <el-form-item label="项目负责人" prop="curator">
  18. <el-input
  19. v-model="queryParams.curator"
  20. placeholder="请输入项目负责人"
  21. clearable
  22. /-->
  23. </el-form-item>
  24. <el-form-item label="车牌号" prop="vehicleNo">
  25. <el-input v-model="queryParams.vehicleNo" clearable placeholder="请输入车牌号" />
  26. </el-form-item>
  27. <el-form-item label="车组" prop="vehicleGroup">
  28. <el-input v-model="queryParams.vehicleGroup" clearable placeholder="请输入车组" />
  29. </el-form-item>
  30. <el-form-item label="日期" prop="monitorDate">
  31. <el-date-picker
  32. v-model="queryParams.monitorDate"
  33. style="width: 240px; margin-right: 8px"
  34. type="daterange"
  35. range-separator="至"
  36. start-placeholder="开始日期"
  37. end-placeholder="结束日期"
  38. value-format="yyyy-MM-dd"
  39. :clearable="false"
  40. >
  41. </el-date-picker>
  42. </el-form-item>
  43. <el-form-item>
  44. <el-button
  45. type="primary"
  46. icon="el-icon-search"
  47. size="mini"
  48. @click="handleQuery"
  49. >搜索</el-button
  50. >
  51. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  52. >重置</el-button
  53. >
  54. </el-form-item>
  55. </el-form>
  56. <div class="table">
  57. <el-table ref="renewalTable" border style="width: 100%" :header-cell-style="{fontSize: '12px', backgroundColor: '#f8f8f8',color:'#333',fontWeight: 'bold'}" v-loading="loading" :data="dataList">
  58. <<el-table-column prop="" label="序号" width="80" align="center">
  59. <template slot-scope="scope">
  60. {{
  61. scope.$index +
  62. (queryParams.pageNum - 1) * queryParams.pageSize +
  63. 1
  64. }}
  65. </template>
  66. </el-table-column>
  67. <el-table-column
  68. label="所属车组"
  69. prop="vehicleGroup"
  70. align="center"
  71. > </el-table-column>
  72. <el-table-column
  73. label="车牌号"
  74. prop="vehicleNo"
  75. align="center"
  76. >
  77. </el-table-column>
  78. <el-table-column
  79. prop="occurDate"
  80. label="发生时间"
  81. align="center"
  82. />
  83. <el-table-column
  84. label="最新状态"
  85. prop="alarmDesc"
  86. align="center"
  87. >
  88. <template slot-scope="scope" >
  89. <el-tag type="danger" v-if="scope.row.alarmCd!='0'" effect="text">{{scope.row.alarmDesc}}</el-tag>
  90. <el-tag type="success" v-else>{{scope.row.alarmDesc}}</el-tag>
  91. </template>
  92. </el-table-column>
  93. <el-table-column
  94. prop="remark"
  95. label="备注"
  96. align="center"
  97. />
  98. <el-table-column
  99. label="更新时间"
  100. prop="createTime"
  101. align="center"
  102. >
  103. </el-table-column>
  104. <el-table-column
  105. label="操作"
  106. align="center"
  107. width="250"
  108. class-name="small-padding fixed-width"
  109. >
  110. <template slot-scope="scope">
  111. <el-button
  112. size="mini"
  113. type="text"
  114. icon="el-icon-document"
  115. @click="handleRecord(scope.row)"
  116. >监控明细</el-button
  117. >
  118. </template>
  119. </el-table-column>
  120. </el-table>
  121. <pagination
  122. class="page-box"
  123. v-show="total > 0"
  124. :total="total"
  125. :page.sync="queryParams.pageNum"
  126. :limit.sync="queryParams.pageSize"
  127. @pagination="getList"
  128. />
  129. </div>
  130. <driving-record
  131. :visible.sync="recordDialogVisible"
  132. :vehicle-info="currentVehicle"
  133. />
  134. </div>
  135. </template>
  136. <script>
  137. import {
  138. listVehicleAlarmHist
  139. } from "@/api/powerdistribution/vehicle-monitoring";
  140. import DrivingRecord from "./../components/DrivingRecord.vue";
  141. export default {
  142. components: {
  143. DrivingRecord
  144. },
  145. data() {
  146. return {
  147. dataList: [],
  148. // 显示搜索条件
  149. showSearch: true,
  150. // 遮罩层
  151. loading: true,
  152. total: 0,
  153. // 查询参数
  154. queryParams: {
  155. pageNum: 1,
  156. pageSize: 10,
  157. countyOrgNm: "", // 区县公司
  158. curator: "", // 项目负责人
  159. vehicleNo: "", // 车牌号
  160. alarmCd: "2",
  161. vehicleGroup: "", // 车组
  162. monitorDate: [
  163. ],
  164. },
  165. // 行驶记录相关
  166. recordDialogVisible: false,
  167. // 当前选中的车辆信息
  168. currentVehicle: {},
  169. };
  170. },
  171. created() {
  172. this.getList();
  173. },
  174. methods: {
  175. /** 查询列表 */
  176. getList() {
  177. this.loading = true;
  178. listVehicleAlarmHist({ ...this.queryParams,
  179. startDate: this.queryParams.monitorDate[0],
  180. endDate: this.queryParams.monitorDate[1]
  181. }).then((response) => {
  182. this.dataList = response.rows;
  183. this.total = response.total;
  184. this.loading = false;
  185. });
  186. },
  187. /** 搜索按钮操作 */
  188. handleQuery() {
  189. this.getList();
  190. },
  191. /** 重置按钮操作 */
  192. resetQuery() {
  193. this.queryParams = {
  194. pageNum: 1,
  195. pageSize: 10,
  196. countyOrgNm: "",
  197. curator: "",
  198. vehicleNo: "",
  199. vehicleGroup: "",
  200. alarmCd: "2",
  201. monitorDate: [
  202. ],
  203. };
  204. this.resetForm("queryForm");
  205. this.handleQuery();
  206. },
  207. /** 查看行驶记录 */
  208. handleRecord(row) {
  209. this.currentVehicle =row;
  210. this.recordDialogVisible = true;
  211. },
  212. },
  213. };
  214. </script>
  215. <style lang="scss" scoped>
  216. .table {
  217. height: calc(100% - 150px);
  218. }
  219. ::v-deep {
  220. .el-table {
  221. height: 100%;
  222. width: 100%;
  223. .el-table__body-wrapper {
  224. width: 100% !important;
  225. height: calc(100% - 50px) !important; // 表格高度减去表头的高度
  226. overflow-y: scroll;
  227. }
  228. }
  229. .el-form--inline .el-form-item {
  230. margin-right: 10px;
  231. margin-bottom: 10px;
  232. }
  233. // 上传按钮样式调整
  234. .el-upload {
  235. display: inline-block;
  236. }
  237. .el-button--text {
  238. padding: 0 8px;
  239. }
  240. }
  241. .track-container {
  242. min-height: 400px;
  243. // 添加地图容器的样式
  244. }
  245. .record-container {
  246. min-height: 400px;
  247. padding: 20px;
  248. .mb20 {
  249. margin-bottom: 20px;
  250. }
  251. ::v-deep {
  252. .el-table {
  253. margin-bottom: 20px;
  254. }
  255. }
  256. }
  257. </style>