Commit 2baa873bac57514ce29286567de628a407829ec1

Authored by ww
1 parent b2712627

perf: camera manage split mode add pagination

... ... @@ -2,7 +2,7 @@
2 2 import { PageWrapper } from '/@/components/Page';
3 3 import OrganizationIdTree from '../../common/organizationIdTree/src/OrganizationIdTree.vue';
4 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 6 import { cameraPage } from '/@/api/camera/cameraManager';
7 7 import { CameraRecord } from '/@/api/camera/model/cameraModel';
8 8 import { videoPlay as VideoPlay } from 'vue3-video-play'; // 引入组件
... ... @@ -24,6 +24,7 @@
24 24 page: 1,
25 25 pageSize: 4,
26 26 colNumber: 2,
  27 + total: 0,
27 28 });
28 29
29 30 const options = reactive({
... ... @@ -66,11 +67,12 @@
66 67 const getCameraList = async () => {
67 68 try {
68 69 loading.value = true;
69   - const { items } = await cameraPage({
70   - page: 1,
  70 + const { items, total } = await cameraPage({
  71 + page: pagination.page,
71 72 pageSize: pagination.pageSize,
72 73 organizationId: unref(organizationId)!,
73 74 });
  75 + pagination.total = total;
74 76 cameraList.value = items;
75 77 console.log({ url: cameraList.value.map((item) => item.videoUrl) });
76 78 } catch (error) {
... ... @@ -103,6 +105,10 @@
103 105 }
104 106 };
105 107
  108 + const handleVideoError = (event) => {
  109 + console.log('video happend error', event);
  110 + };
  111 +
106 112 const [registerDrawer, { openDrawer }] = useDrawer();
107 113
108 114 const handleAddCamera = () => {
... ... @@ -144,6 +150,17 @@
144 150 >
145 151 <SvgIcon class="text-2xl" prefix="iconfont" name="grid-nine" />
146 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 164 </div>
148 165 <div class="flex items-center gap-4">
149 166 <div class="flex">
... ... @@ -168,7 +185,12 @@
168 185 >
169 186 <div class="box-border w-full h-full p-3">
170 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 194 <div
173 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 >
... ...