index.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <template>
  2. <div class="layout-pd">
  3. <el-row>
  4. <el-col>
  5. <el-card class="mt8" shadow="hover">
  6. <el-form :model="groupLogoKeyOnQuery.filter" @submit.stop.prevent>
  7. <el-form-item prop="name" style="width:100%">
  8. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
  9. <el-form-item label="GUID">
  10. <el-input v-model="groupLogoKeyOnQuery.filter.keyGuid" placeholder="请输入GUID" clearable></el-input>
  11. </el-form-item>
  12. </el-col>
  13. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
  14. <el-form-item label="团标状态">
  15. <el-select v-model="groupLogoKeyOnQuery.filter.state" placeholder="请选择部件类型">
  16. <el-option v-for="(value, key) in groupKeyGroupStatus" :key="key" :label="value[1].name"
  17. :value="Number(value[1].value)" />
  18. </el-select>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
  22. <el-form-item label="密钥类型">
  23. <el-select v-model="groupLogoKeyOnQuery.filter.deviceType" placeholder="请选择部件类型">
  24. <el-option v-for="(value, key) in groupLogoKeyKeyType" :key="key" :label="value[1].name"
  25. :value="value[1].value" />
  26. </el-select>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6" class="mb20">
  30. <el-form-item label="厂商">
  31. <el-input v-model="groupLogoKeyOnQuery.filter.manufacturer" placeholder="请输入厂商" clearable></el-input>
  32. </el-form-item>
  33. </el-col>
  34. </el-form-item>
  35. </el-form>
  36. <hr>
  37. <!-- 按钮 -->
  38. <el-row justify="space-between" class="submit-button">
  39. <el-row>
  40. <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
  41. <el-button type="primary" icon="ele-RefreshRight" @click="onReset"> 重置 </el-button>
  42. </el-row>
  43. </el-row>
  44. </el-card>
  45. </el-col>
  46. <el-col :xs="24">
  47. <el-card class="mt8" shadow="hover">
  48. <el-table v-loading="state.loading" stripe :data="state.list" row-key="id" style="width: 100%">
  49. <el-table-column prop="keyGuid" label="GUID" />
  50. <el-table-column prop="state" label="状态">
  51. <template #default="{ row }">
  52. {{ getState(row.state).name }}
  53. </template>
  54. </el-table-column>
  55. <el-table-column prop="deviceType" label="密钥类型">
  56. <template #default="{ row }">
  57. {{ getDeviceType(row.deviceType).name }}
  58. </template>
  59. </el-table-column>
  60. <el-table-column prop="lastUpdate" label="最近同步时间" />
  61. <el-table-column prop="applicationTime" label="申请时间" />
  62. <el-table-column prop="recordTime" label="备案时间" />
  63. <el-table-column prop="manufacturer" label="厂商" />
  64. <el-table-column prop="remark" label="备注" />
  65. </el-table>
  66. <div class="my-flex my-flex-end" style="margin-top: 20px">
  67. <el-pagination v-model:currentPage="state.pageInput.currentPage"
  68. v-model:page-size="state.pageInput.pageSize" :total="state.total" :default-page-size="5"
  69. :page-sizes="[5, 10, 20, 50, 100]" small background @size-change="onSizeChange"
  70. @current-change="onCurrentChange" layout="total, sizes, prev, pager, next, jumper" />
  71. </div>
  72. </el-card>
  73. </el-col>
  74. </el-row>
  75. </div>
  76. </template>
  77. <script setup lang="ts">/**团标密钥数据对象*/
  78. import { onMounted, reactive } from "vue";
  79. import {
  80. groupLogoKeyFilterModel,
  81. groupLogoKeyPageInput, groupLogoKeyRequestBody,
  82. } from "/@/api/admin/productionManagement/groupLogoKeyDto";
  83. import { ref } from "vue-demi";
  84. import { useGlobalCacheStore } from "/@/stores/globalCacheStore";
  85. import { GroupLogoKeyApi } from "/@/api/admin/productionManagement/groupLogoKeyApi";
  86. /**
  87. * 团标密钥查询时需要的参数
  88. * */
  89. const groupLogoKeyOnQuery = reactive({
  90. filter: {
  91. keyGuid: '',
  92. deviceType: '',
  93. lastUpdate: '',
  94. applicationTime: '',
  95. recordTime: '',
  96. } as groupLogoKeyFilterModel,
  97. })
  98. /**
  99. * 团标密钥数据对象
  100. */
  101. const state = reactive({
  102. loading: false,
  103. list: [] as Array<groupLogoKeyFilterModel>,
  104. pageInput: {
  105. currentPage: 1,
  106. pageSize: 10,
  107. } as groupLogoKeyPageInput,
  108. total: 0
  109. })
  110. /**获取全局缓存*/
  111. const globalCacheStore = useGlobalCacheStore()
  112. /**生产管理 - 团标密钥 - 团标状态*/
  113. const groupKeyGroupStatus = ref(globalCacheStore.getGlobalStore().get('groupKeyGroupStatus'))
  114. /**生产管理 - 团标密钥 - 密钥类型*/
  115. const groupLogoKeyKeyType = ref(globalCacheStore.getGlobalStore().get('groupLogoKeyKeyType'))
  116. /**获取团标状态*/
  117. const getState = (val) => {
  118. val = String(val)
  119. if (groupKeyGroupStatus.value.has(val)) {
  120. return groupKeyGroupStatus.value.get(val)
  121. } else {
  122. return val
  123. }
  124. }
  125. /**获取密钥类型*/
  126. const getDeviceType = (val) => {
  127. val = String(val)
  128. if (groupLogoKeyKeyType.value.has(val)) {
  129. return groupLogoKeyKeyType.value.get(val)
  130. } else {
  131. return val
  132. }
  133. }
  134. /**
  135. * 页条变化
  136. * @param val
  137. */
  138. const onSizeChange = (val: number) => {
  139. state.pageInput.pageSize = val
  140. onQuery()
  141. }
  142. /**
  143. * 页数 变化
  144. * @param val
  145. */
  146. const onCurrentChange = (val: number) => {
  147. state.pageInput.currentPage = val
  148. onQuery()
  149. }
  150. const onQuery = async () => {
  151. state.loading = true
  152. const { data } = await new GroupLogoKeyApi().getPage({ ...state.pageInput, filter: groupLogoKeyOnQuery.filter } as groupLogoKeyRequestBody).catch(() => state.loading = false)
  153. state.list = data?.list ?? []
  154. state.total = data?.total ?? 0
  155. state.loading = false
  156. }
  157. onMounted(() => {
  158. onQuery()
  159. })
  160. const onReset = () => {
  161. groupLogoKeyOnQuery.filter = {
  162. keyGuid: '',
  163. deviceType: '',
  164. lastUpdate: '',
  165. applicationTime: '',
  166. recordTime: '',
  167. }
  168. state.pageInput.currentPage = 1
  169. onQuery()
  170. }
  171. </script>
  172. <style scoped lang="scss">
  173. @import '/@/theme/tableStyle.scss';
  174. </style>