assess.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. <template>
  2. <div class="table_item">
  3. <s-table ref="tableRef" bordered :columns="columns" :data="loadData" :row-key="(record) => record.code">
  4. <template #operator>
  5. <!-- 搜索区域 -->
  6. <div class="table-search">
  7. <div class="table-search-form">
  8. <a-row :gutter="10">
  9. <a-form
  10. ref="searchFormRef"
  11. name="advanced_search"
  12. layout="inline"
  13. :label-col="{ style: { width: '70px', justifyContent: 'end' } }"
  14. :model="searchFormState"
  15. class="ant-advanced-search-form"
  16. >
  17. <a-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
  18. <a-form-item label="开始时间" name="searchKey">
  19. <a-date-picker
  20. v-model:value="searchFormState.searchKey"
  21. show-time
  22. format="YYYY-MM-DD HH:mm:ss"
  23. value-format="YYYY-MM-DD HH:mm:ss"
  24. style="width: 100%"
  25. />
  26. </a-form-item>
  27. </a-col>
  28. <a-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
  29. <a-form-item label="结束时间" name="jssj">
  30. <a-date-picker
  31. v-model:value="searchFormState.jssj"
  32. show-time
  33. format="YYYY-MM-DD HH:mm:ss"
  34. value-format="YYYY-MM-DD HH:mm:ss"
  35. style="width: 100%"
  36. />
  37. </a-form-item>
  38. </a-col>
  39. <a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8" v-if="searchFormState.type == 'qst'">
  40. <a-form-item label="采集类型" name="cjlx">
  41. <a-select v-model:value="searchFormState.cjlx" placeholder="请选择采集类型">
  42. <a-select-option value="1">温度</a-select-option>
  43. <a-select-option value="2">湿度</a-select-option>
  44. <a-select-option value="3">氧气浓度</a-select-option>
  45. </a-select>
  46. </a-form-item>
  47. </a-col>
  48. </a-form>
  49. </a-row>
  50. </div>
  51. <div class="table-search-buttons">
  52. <a-button type="primary" @click="tableRef.refresh(true)">查询</a-button>
  53. <a-button class="xn-mg08" @click="reset">重置</a-button>
  54. </div>
  55. </div>
  56. <!-- 其他操作区域 -->
  57. <div class="table-head-btn">
  58. <div class="btn-right">
  59. <a-button class="xn-mg08">
  60. <template #icon><download-outlined /></template>导出
  61. </a-button>
  62. <a-button>
  63. <template #icon><printer-outlined /></template>打印
  64. </a-button>
  65. </div>
  66. </div>
  67. </template>
  68. <template #bodyCell="{ column, index }">
  69. <!-- 序号 -->
  70. <template v-if="column.dataIndex === 'index'">{{ index + 1 }} </template>
  71. </template>
  72. </s-table>
  73. <div class="item-right">
  74. <!-- 单位 -->
  75. <div class="unit">
  76. <unitSearch ref="unitSearchRef" />
  77. </div>
  78. <!-- 监控点 -->
  79. <div class="monitor">
  80. <monitorSearch ref="monitorSearchRef" />
  81. </div>
  82. </div>
  83. </div>
  84. </template>
  85. <script setup>
  86. import jobApi from '@/api/dev/jobApi'
  87. import unitSearch from './unitSearch.vue'
  88. import monitorSearch from './monitorSearch.vue'
  89. const unitSearchRef = ref(null)
  90. const monitorSearchRef = ref(null)
  91. onMounted(() => {
  92. unitSearchRef.value.onOpen() //获取单位数据
  93. monitorSearchRef.value.onOpen() //获取监控点数据
  94. })
  95. const tableRef = ref()
  96. const searchFormState = ref({})
  97. const columns = [
  98. {
  99. title: '序号',
  100. dataIndex: 'index',
  101. align: 'center',
  102. width: 50
  103. },
  104. {
  105. title: '部门名称',
  106. dataIndex: 'bmmc',
  107. align: 'center',
  108. ellipsis: true
  109. },
  110. {
  111. title: '监控点',
  112. dataIndex: 'jkd',
  113. align: 'center',
  114. ellipsis: true
  115. },
  116. {
  117. title: '冷链编号',
  118. dataIndex: 'llcode',
  119. align: 'center',
  120. ellipsis: true
  121. },
  122. {
  123. title: '品牌',
  124. dataIndex: 'pp',
  125. align: 'center',
  126. ellipsis: true
  127. },
  128. {
  129. title: '温度情况',
  130. dataIndex: 'wdqk',
  131. align: 'center',
  132. ellipsis: true,
  133. children: [
  134. {
  135. title: '平均温度',
  136. dataIndex: 'pjwd',
  137. align: 'center',
  138. ellipsis: true
  139. },
  140. {
  141. title: '最高温度',
  142. dataIndex: 'zgwd',
  143. align: 'center',
  144. ellipsis: true
  145. },
  146. {
  147. title: '最低温度',
  148. dataIndex: 'zdwd',
  149. align: 'center',
  150. ellipsis: true
  151. }
  152. ]
  153. },
  154. {
  155. title: '报警情况',
  156. dataIndex: 'bjqk',
  157. align: 'center',
  158. ellipsis: true,
  159. children: [
  160. {
  161. title: '超温报警次数',
  162. dataIndex: 'cwbjcs',
  163. align: 'center',
  164. ellipsis: true
  165. },
  166. {
  167. title: '采集报警次数',
  168. dataIndex: 'cjbjcs',
  169. align: 'center',
  170. ellipsis: true
  171. }
  172. ]
  173. },
  174. {
  175. title: '温度评估值',
  176. dataIndex: 'wdpgz',
  177. align: 'center',
  178. ellipsis: true
  179. }
  180. ]
  181. const loadData = (parameter) => {
  182. return jobApi.jobPage(Object.assign(parameter, searchFormState.value)).then((res) => {
  183. // return res
  184. const obj = {
  185. current: 1,
  186. pages: 1,
  187. records: [
  188. {
  189. bmmc: '上海海关基数中心1',
  190. jkd: '监控点',
  191. llcode: 'LL-20241112',
  192. pp: '海尔',
  193. pjwd: 33,
  194. zgwd: 1,
  195. zdwd: 0,
  196. cwbjcs: 0,
  197. cjbjcs: 20,
  198. wdpgz: 0
  199. },
  200. {
  201. bmmc: '上海海关基数中心2',
  202. jkd: '监控点',
  203. llcode: 'LL-20241112',
  204. pp: '海尔',
  205. pjwd: 21,
  206. zgwd: 0,
  207. zdwd: 2,
  208. cwbjcs: 0,
  209. cjbjcs: 34,
  210. wdpgz: 0
  211. },
  212. {
  213. bmmc: '上海海关基数中心2',
  214. jkd: '监控点',
  215. llcode: 'LL-20241112',
  216. pp: '海尔',
  217. pjwd: 4,
  218. zgwd: 6,
  219. zdwd: 1,
  220. cwbjcs: 1,
  221. cjbjcs: 10,
  222. wdpgz: 0
  223. },
  224. {
  225. bmmc: '上海海关基数中心4',
  226. jkd: '监控点',
  227. llcode: 'LL-20241112',
  228. pp: '海尔',
  229. pjwd: 24,
  230. zgwd: 3,
  231. zdwd: 3,
  232. cwbjcs: 0,
  233. cjbjcs: 16,
  234. wdpgz: 0
  235. },
  236. {
  237. bmmc: '上海海关基数中心5',
  238. jkd: '监控点',
  239. llcode: 'LL-20241112',
  240. pp: '海尔',
  241. pjwd: 15,
  242. zgwd: 0,
  243. zdwd: 0,
  244. cwbjcs: 1,
  245. cjbjcs: 12,
  246. wdpgz: 0
  247. },
  248. {
  249. bmmc: '上海海关基数中心6',
  250. jkd: '监控点',
  251. llcode: 'LL-20241112',
  252. pp: '海尔',
  253. pjwd: 2,
  254. zgwd: 0,
  255. zdwd: 1,
  256. cwbjcs: 1,
  257. cjbjcs: 31,
  258. wdpgz: 0
  259. }
  260. ],
  261. size: 10,
  262. total: 6
  263. }
  264. return obj
  265. })
  266. }
  267. // 重置
  268. const reset = () => {
  269. searchFormRef.value.resetFields()
  270. tableRef.value.refresh(true)
  271. }
  272. </script>
  273. <style lang="less" scoped>
  274. .table_item {
  275. width: 100%;
  276. display: flex;
  277. padding: 15px 20px;
  278. .table-wrapper {
  279. width: 75%;
  280. }
  281. // 右边的搜索区域
  282. .item-right {
  283. width: 25%;
  284. padding: 5px 10px;
  285. .unit,
  286. .monitor {
  287. width: 100%;
  288. height: 350px;
  289. padding: 10px;
  290. margin-bottom: 10px;
  291. border-radius: 5px;
  292. border: 1px solid #eaeaea;
  293. overflow-y: auto;
  294. }
  295. }
  296. }
  297. // 树形结构的样式
  298. :deep(.ant-tree-treenode) {
  299. width: 100%;
  300. margin-bottom: 5px;
  301. border-radius: 5px;
  302. padding: 5px 0 !important;
  303. border: 1px solid #eaeaea;
  304. }
  305. // 分页居中显示
  306. :deep(.ant-table-pagination-right) {
  307. justify-content: center !important;
  308. }
  309. </style>