liriming
2025-03-03 8bb7160c9c4fd7ce5893ee673647b13cc35410ae
提交 | 用户 | 时间
e26cd3 1 <template>
D 2   <el-drawer
3     v-model="drawer"
b48f2d 4     size="50%"
e26cd3 5     title="归档数据"
D 6     :direction="direction"
7     :before-close="handleClose"
8   >
9     <!-- 搜索 -->
10     <ContentWrap>
11       <el-form
12         class="-mb-15px"
13         :model="queryParams"
14         ref="queryFormRef"
15         :inline="true"
16         label-width="68px"
17       >
18         <el-form-item label="开始时间">
19           <el-date-picker
20             v-model="queryParams.startTime"
21             format="YYYY-MM-DD HH:mm:00"
22             value-format="YYYY-MM-DD HH:mm:00"
23             type="datetime"
b48f2d 24             :clearable="true"
e26cd3 25             placeholder="选择日期时间"/>
D 26         </el-form-item>
27         <el-form-item label="结束时间">
28           <el-date-picker
29             v-model="queryParams.endTime"
30             format="YYYY-MM-DD HH:mm:00"
31             value-format="YYYY-MM-DD HH:mm:00"
32             type="datetime"
b48f2d 33             :clearable="true"
e26cd3 34             placeholder="选择日期时间"/>
D 35         </el-form-item>
36         <el-form-item>
37           <el-button @click="getList()">查询</el-button>
38         </el-form-item>
39       </el-form>
40     </ContentWrap>
41     <!-- 列表 -->
42     <ContentWrap>
43       <el-table v-loading="loading" :data="list">
44         <el-table-column
b48f2d 45           prop="arcValue"
e26cd3 46           label="数据值"
D 47           header-align="center"
48           align="center"
49           min-width="100"
50         />
51         <el-table-column
52           prop="arcTime"
53           label="归档时间"
54           header-align="center"
55           align="center"
56           min-width="150"
57         />
58         <el-table-column
59           prop="createTime"
60           label="创建时间"
61           header-align="center"
62           align="center"
63         />
64       </el-table>
65       <!-- 分页 -->
66       <Pagination
67         :total="total"
68         v-model:page="queryParams.pageNo"
69         v-model:limit="queryParams.pageSize"
70         @pagination="getList"
71       />
72     </ContentWrap>
73   </el-drawer>
74 </template>
75 <script lang="ts" setup>
76   import type {DrawerProps} from 'element-plus'
77   import * as ArcDataApi from "@/api/data/arc/data";
78   import {ref} from "vue";
79   import {getYMDHM0} from "@/utils/dateUtil";
80
81   defineOptions({name: 'ArcData'})
82
83   const message = useMessage() // 消息弹窗
84   const {t} = useI18n() // 国际化
85
86   const drawer = ref(false)
87   const direction = ref<DrawerProps['direction']>('rtl')
88   const loading = ref(true) // 列表的加载中
89   const total = ref(0) // 列表的总页数
90   const list = ref([]) // 列表的数据
91   const queryParams = reactive({
92     pageNo: 1,
93     pageSize: 10,
94     arcId:undefined,
95     startTime: undefined,
b48f2d 96     endTime: undefined
e26cd3 97   })
D 98   const queryFormRef = ref() // 搜索的表单
99   const exportLoading = ref(false) // 导出的加载中
100
101   /** 查询列表 */
102   const getList = async () => {
103     loading.value = true
104     try {
105       const page = await ArcDataApi.getPage(queryParams)
106       list.value = page.list
107       total.value = page.total
108     } finally {
109       loading.value = false
110     }
111   }
112
113   /** 搜索按钮操作 */
114   const handleQuery = () => {
115     queryParams.pageNo = 1
116     getList()
117   }
118
119   /** 重置按钮操作 */
120   const resetQuery = () => {
121     queryFormRef.value.resetFields()
122     handleQuery()
123   }
124
125   /** 打开弹窗 */
126   const open = async (arcId?: string) => {
127     resetForm()
128     drawer.value = true
129     queryParams.arcId = arcId
130     if (arcId) {
131       getList()
132     }
133   }
134   defineExpose({open}) // 提供 open 方法,用于打开弹窗
135
136   /** 重置表单 */
137   const resetForm = () => {
138     queryParams.pageNo = 1
139     queryParams.pageSize = 10
140     queryParams.arcId = ''
141     queryParams.startTime = ''
b48f2d 142     queryParams.endTime = ''
e26cd3 143   }
D 144
145   const handleClose = (done: () => void) => {
146     drawer.value = false
147   }
148 </script>