Commit 2baa873bac57514ce29286567de628a407829ec1
1 parent
b2712627
perf: camera manage split mode add pagination
Showing
1 changed file
with
26 additions
and
4 deletions
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | import { PageWrapper } from '/@/components/Page'; | 2 | import { PageWrapper } from '/@/components/Page'; |
| 3 | import OrganizationIdTree from '../../common/organizationIdTree/src/OrganizationIdTree.vue'; | 3 | import OrganizationIdTree from '../../common/organizationIdTree/src/OrganizationIdTree.vue'; |
| 4 | import { computed, onMounted, reactive, ref, unref, watch } from 'vue'; | 4 | import { computed, onMounted, reactive, ref, unref, watch } from 'vue'; |
| 5 | - import { Tabs, Row, Col, Spin, Button } from 'ant-design-vue'; | 5 | + import { Tabs, Row, Col, Spin, Button, Pagination } from 'ant-design-vue'; |
| 6 | import { cameraPage } from '/@/api/camera/cameraManager'; | 6 | import { cameraPage } from '/@/api/camera/cameraManager'; |
| 7 | import { CameraRecord } from '/@/api/camera/model/cameraModel'; | 7 | import { CameraRecord } from '/@/api/camera/model/cameraModel'; |
| 8 | import { videoPlay as VideoPlay } from 'vue3-video-play'; // 引入组件 | 8 | import { videoPlay as VideoPlay } from 'vue3-video-play'; // 引入组件 |
| @@ -24,6 +24,7 @@ | @@ -24,6 +24,7 @@ | ||
| 24 | page: 1, | 24 | page: 1, |
| 25 | pageSize: 4, | 25 | pageSize: 4, |
| 26 | colNumber: 2, | 26 | colNumber: 2, |
| 27 | + total: 0, | ||
| 27 | }); | 28 | }); |
| 28 | 29 | ||
| 29 | const options = reactive({ | 30 | const options = reactive({ |
| @@ -66,11 +67,12 @@ | @@ -66,11 +67,12 @@ | ||
| 66 | const getCameraList = async () => { | 67 | const getCameraList = async () => { |
| 67 | try { | 68 | try { |
| 68 | loading.value = true; | 69 | loading.value = true; |
| 69 | - const { items } = await cameraPage({ | ||
| 70 | - page: 1, | 70 | + const { items, total } = await cameraPage({ |
| 71 | + page: pagination.page, | ||
| 71 | pageSize: pagination.pageSize, | 72 | pageSize: pagination.pageSize, |
| 72 | organizationId: unref(organizationId)!, | 73 | organizationId: unref(organizationId)!, |
| 73 | }); | 74 | }); |
| 75 | + pagination.total = total; | ||
| 74 | cameraList.value = items; | 76 | cameraList.value = items; |
| 75 | console.log({ url: cameraList.value.map((item) => item.videoUrl) }); | 77 | console.log({ url: cameraList.value.map((item) => item.videoUrl) }); |
| 76 | } catch (error) { | 78 | } catch (error) { |
| @@ -103,6 +105,10 @@ | @@ -103,6 +105,10 @@ | ||
| 103 | } | 105 | } |
| 104 | }; | 106 | }; |
| 105 | 107 | ||
| 108 | + const handleVideoError = (event) => { | ||
| 109 | + console.log('video happend error', event); | ||
| 110 | + }; | ||
| 111 | + | ||
| 106 | const [registerDrawer, { openDrawer }] = useDrawer(); | 112 | const [registerDrawer, { openDrawer }] = useDrawer(); |
| 107 | 113 | ||
| 108 | const handleAddCamera = () => { | 114 | const handleAddCamera = () => { |
| @@ -144,6 +150,17 @@ | @@ -144,6 +150,17 @@ | ||
| 144 | > | 150 | > |
| 145 | <SvgIcon class="text-2xl" prefix="iconfont" name="grid-nine" /> | 151 | <SvgIcon class="text-2xl" prefix="iconfont" name="grid-nine" /> |
| 146 | </div> | 152 | </div> |
| 153 | + <div> | ||
| 154 | + <Pagination | ||
| 155 | + v-model:current="pagination.page" | ||
| 156 | + :total="pagination.total" | ||
| 157 | + :page-size="pagination.pageSize" | ||
| 158 | + :show-size-changer="false" | ||
| 159 | + @change="getCameraList" | ||
| 160 | + size="small" | ||
| 161 | + :show-total="(total) => `共 ${total} 条`" | ||
| 162 | + /> | ||
| 163 | + </div> | ||
| 147 | </div> | 164 | </div> |
| 148 | <div class="flex items-center gap-4"> | 165 | <div class="flex items-center gap-4"> |
| 149 | <div class="flex"> | 166 | <div class="flex"> |
| @@ -168,7 +185,12 @@ | @@ -168,7 +185,12 @@ | ||
| 168 | > | 185 | > |
| 169 | <div class="box-border w-full h-full p-3"> | 186 | <div class="box-border w-full h-full p-3"> |
| 170 | <div class="bg-yellow-50 w-full h-full overflow-hidden relative"> | 187 | <div class="bg-yellow-50 w-full h-full overflow-hidden relative"> |
| 171 | - <VideoPlay v-bind="options" :src="item.videoUrl" :title="item.name" /> | 188 | + <VideoPlay |
| 189 | + @error="handleVideoError" | ||
| 190 | + v-bind="options" | ||
| 191 | + :src="item.videoUrl" | ||
| 192 | + :title="item.name" | ||
| 193 | + /> | ||
| 172 | <div | 194 | <div |
| 173 | class="absolute hidden top-0 left-0 z-50 bg-gray-200 text-lg w-full h-full flex justify-center items-center" | 195 | class="absolute hidden top-0 left-0 z-50 bg-gray-200 text-lg w-full h-full flex justify-center items-center" |
| 174 | > | 196 | > |