index.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <template>
  2. <div class="layout-pd">
  3. <el-row>
  4. <!--操作-->
  5. <el-col :xs="24">
  6. <el-card class="mt8" shadow="hover">
  7. <el-form :model="Data.Filter" @submit.stop.prevent>
  8. <el-form-item prop="name" style="width: 100%">
  9. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="4" class="mb20">
  10. <el-form-item label="序列号">
  11. <el-input v-model="Data.Filter.sn" placeholder="请输入序列号" clearable></el-input>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="4" class="mb20">
  15. <el-form-item label="在线状态">
  16. <el-select v-model="Data.Filter.onlineStatus" placeholder="请选择在线状态">
  17. <el-option v-for="(value, key) in selectList.Online" :key="key" :label="value" :value="key" />
  18. </el-select>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="4" class="mb20">
  22. <el-form-item label="设备状态">
  23. <el-select v-model="Data.Filter.deviceStatus" placeholder="请选择设备状态">
  24. <el-option v-for="(value, key) in selectList.Device" :key="key" :label="value" :value="key" />
  25. </el-select>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="4" class="mb20">
  29. <el-form-item label="报警级别">
  30. <el-select v-model="Data.Filter.deviceAlarmLevel" placeholder="请选择报警级别">
  31. <el-option v-for="(value, key) in selectList.Level" :key="key" :label="value" :value="key" />
  32. </el-select>
  33. </el-form-item>
  34. </el-col>
  35. </el-form-item>
  36. </el-form>
  37. <hr>
  38. <!-- 按钮 -->
  39. <el-row justify="space-between" class="submit-button">
  40. <el-row>
  41. <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
  42. <el-button type="primary" icon="ele-RefreshRight" @click="onReset"> 重置 </el-button>
  43. </el-row>
  44. </el-row>
  45. </el-card>
  46. </el-col>
  47. <!--表格-->
  48. <el-col :xs="24">
  49. <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
  50. <el-table ref="multipleTableRef" v-loading="Data.loading" stripe :data="Data.tableModel" row-key="id"
  51. style="width: 100%">
  52. <el-table-column v-for="column in Data.dynamicColumns" :key="column.prop" :prop="column.prop"
  53. :label="column.label" />
  54. </el-table>
  55. <div class="my-flex my-flex-end" style="margin-top: 20px">
  56. <el-pagination v-model:currentPage="Data.pageInput.CurrentPage" v-model:page-size="Data.pageInput.PageSize"
  57. :total="Data.total" :page-sizes="[5, 10, 20, 50, 100]" small background @size-change="onSizeChange"
  58. @current-change="onCurrentChange" layout="total, sizes, prev, pager, next, jumper" />
  59. </div>
  60. </el-card>
  61. </el-col>
  62. </el-row>
  63. </div>
  64. </template>
  65. <script setup lang="ts" name="partsManagement/encoder">
  66. import { onMounted, reactive, ref, watch } from "vue";
  67. import { encoderFilterModel_SearchFilter, encoderFilterModel, PageInputEncoderFilterModel } from "/@/api/admin/reportManagement/encoder/encoderDto";
  68. import { encoderApi } from "/@/api/admin/reportManagement/encoder/encoderApi";
  69. /** 页面对象 */
  70. const Data = reactive({
  71. /**加载显示 */
  72. loading: false,
  73. /**条件查询模块 */
  74. Filter: {
  75. /**设备类型 */
  76. deviceType: "encoderControls",
  77. /**在线状态 */
  78. onlineStatus: "",
  79. /**设备状态 */
  80. deviceStatus: "",
  81. /**序列号 */
  82. sn: "",
  83. /**设备报警级别 */
  84. deviceAlarmLevel: ""
  85. } as encoderFilterModel_SearchFilter,
  86. /**表格信息 */
  87. tableModel: [] as Array<encoderFilterModel>,
  88. /**动态表头 */
  89. dynamicColumns: [
  90. { prop: 'sn', label: '序列号' },
  91. { prop: 'companyName', label: '石油公司' },
  92. { prop: 'stationName', label: '加油站名称' },
  93. { prop: 'supplierName', label: '加油机厂商' },
  94. { prop: 'manufacturerName', label: '编码器厂商' },
  95. { prop: 'nozzleconName', label: '油枪号' },
  96. { prop: 'uuid', label: '编码器编号' },
  97. { prop: 'deviceStatus', label: '编码器状态' },
  98. { prop: 'onlineStatus', label: '在线状态' },
  99. { prop: 'soldTime', label: '安装时间' },
  100. { prop: 'productTime', label: '出厂时间' },
  101. ],
  102. /**分页标识 */
  103. pageInput: {
  104. CurrentPage: 1,
  105. PageSize: 10,
  106. } as PageInputEncoderFilterModel,
  107. /**分页总数 */
  108. total: 0,
  109. })
  110. /** 选择框列表 */
  111. const selectList = reactive({
  112. Online: ["在线", "离线"],
  113. Device: [
  114. "启用",
  115. "备案",
  116. "维修",
  117. "出厂注册"],
  118. Level: [1, 2, 3, 4, 5]
  119. })
  120. onMounted(() => {
  121. init()
  122. })
  123. /**初始化 */
  124. const init = async () => {
  125. Data.loading = true
  126. const res: any = await new encoderApi().getPage({ ...Data.pageInput, filter: Data.Filter })
  127. Data.tableModel = res?.data ?? []
  128. Data.total = res?.data?.length ?? 0
  129. Data.loading = false
  130. }
  131. /**条件查询 */
  132. const onQuery = () => {
  133. init()
  134. }
  135. /**重置查询条件 */
  136. const resetQuery = () => {
  137. Data.Filter.onlineStatus = ''
  138. Data.Filter.deviceStatus = ''
  139. Data.Filter.sn = ''
  140. Data.Filter.deviceAlarmLevel = ''
  141. Data.pageInput.PageSize = 10
  142. Data.pageInput.CurrentPage = 1
  143. }
  144. /**重置 */
  145. const onReset = () => {
  146. resetQuery()
  147. init()
  148. }
  149. /**
  150. * 页条变化
  151. * @param val
  152. */
  153. const onSizeChange = (val: number) => {
  154. Data.pageInput.PageSize = val
  155. onQuery()
  156. }
  157. /**
  158. * 页数 变化
  159. * @param val
  160. */
  161. const onCurrentChange = (val: number) => {
  162. Data.pageInput.CurrentPage = val
  163. onQuery()
  164. }
  165. /**
  166. * 监听时间变换
  167. */
  168. // watch(() => [Data.time1,Data.time2], (newVal ) => {
  169. // if(newVal.length === 0){
  170. // return
  171. // }
  172. // Data.Filter.OutBeginTime = newVal?.[0]?.[0]
  173. // Data.Filter.OutEndTime = newVal?.[0]?.[1]
  174. // Data.Filter.CreateBeginTime = newVal?.[1]?.[0]
  175. // Data.Filter.CreateEndTime = newVal?.[1]?.[0]
  176. // })
  177. </script>
  178. <style scoped lang="scss">
  179. @import '/@/theme/tableStyle.scss';
  180. </style>