|
|
@@ -9,18 +9,14 @@
|
|
|
:data="renderData"
|
|
|
:bordered="false"
|
|
|
:size="size"
|
|
|
+ @page-change="onPageChange"
|
|
|
>
|
|
|
<template #index="{ rowIndex }">
|
|
|
- {{
|
|
|
- rowIndex + 1 + (pagination.pageIndex - 1) * pagination.personNumber
|
|
|
- }}
|
|
|
+ {{ rowIndex + 1 + (pagination.current - 1) * pagination.pageSize }}
|
|
|
</template>
|
|
|
<template #picture="{ record }">
|
|
|
<div :key="record.id">
|
|
|
- <a-image
|
|
|
- width="100"
|
|
|
- src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a8c8cdb109cb051163646151a4a5083b.png~tplv-uwbnlip3yd-webp.webp"
|
|
|
- />
|
|
|
+ <a-image width="40" :src="record.picture" />
|
|
|
</div>
|
|
|
</template>
|
|
|
</a-table>
|
|
|
@@ -29,122 +25,136 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" name="RecordListPage" setup>
|
|
|
- import { computed, ref, reactive, watch, nextTick } from 'vue';
|
|
|
- import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
|
|
|
- import { useI18n } from 'vue-i18n';
|
|
|
- import useLoading from '@/hooks/loading';
|
|
|
- import { Pagination } from '@/types/global';
|
|
|
- import { queryRecordList } from '@/api/record';
|
|
|
- import type { RecordParams, DataList } from '@/api/record';
|
|
|
- import { useIntervalFn } from '@vueuse/core';
|
|
|
+import { computed, ref, reactive, watch, nextTick } from 'vue';
|
|
|
+import type { TableColumnData } from '@arco-design/web-vue/es/table/interface';
|
|
|
+import { useI18n } from 'vue-i18n';
|
|
|
+import useLoading from '@/hooks/loading';
|
|
|
+import { Pagination } from '@/types/global';
|
|
|
+import { queryRecordList } from '@/api/record';
|
|
|
+import type { RecordParams, DataList } from '@/api/record';
|
|
|
+import { useIntervalFn } from '@vueuse/core';
|
|
|
+interface FaceParams {
|
|
|
+ pageIndex: number;
|
|
|
+ personNumber: number;
|
|
|
+}
|
|
|
+type SizeProps = 'mini' | 'small' | 'medium' | 'large';
|
|
|
+type Column = TableColumnData & { checked?: true };
|
|
|
|
|
|
- type SizeProps = 'mini' | 'small' | 'medium' | 'large';
|
|
|
- type Column = TableColumnData & { checked?: true };
|
|
|
-
|
|
|
- const { loading, setLoading } = useLoading(true);
|
|
|
- const { t } = useI18n();
|
|
|
- const renderData = ref<DataList[]>([]);
|
|
|
- const cloneColumns = ref<Column[]>([
|
|
|
- {
|
|
|
- title: t('recordList.columns.index'),
|
|
|
- dataIndex: 'index',
|
|
|
- slotName: 'index',
|
|
|
- ellipsis: true,
|
|
|
- tooltip: true,
|
|
|
- width: 60,
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('recordList.columns.time'),
|
|
|
- dataIndex: 'time',
|
|
|
- ellipsis: true,
|
|
|
- tooltip: true,
|
|
|
- width: 180,
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('recordList.columns.picture'),
|
|
|
- dataIndex: 'picture',
|
|
|
- slotName: 'picture',
|
|
|
- width: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('recordList.columns.name'),
|
|
|
- dataIndex: 'name',
|
|
|
- ellipsis: true,
|
|
|
- tooltip: true,
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('recordList.columns.nameCh'),
|
|
|
- dataIndex: 'nameCh',
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('recordList.columns.company'),
|
|
|
- dataIndex: 'company',
|
|
|
- ellipsis: true,
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('recordList.columns.Position'),
|
|
|
- dataIndex: 'Position',
|
|
|
- ellipsis: true,
|
|
|
- tooltip: { position: 'left' },
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('recordList.columns.id'),
|
|
|
- dataIndex: 'id',
|
|
|
- ellipsis: true,
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('recordList.columns.result'),
|
|
|
- dataIndex: 'result',
|
|
|
- ellipsis: true,
|
|
|
- },
|
|
|
- ]);
|
|
|
- const size = ref<SizeProps>('medium');
|
|
|
-
|
|
|
- const basePagination: Pagination = {
|
|
|
+const { loading, setLoading } = useLoading(true);
|
|
|
+const { t } = useI18n();
|
|
|
+const renderData = ref<DataList[]>([]);
|
|
|
+const generateFormModel = () => {
|
|
|
+ return {
|
|
|
pageIndex: 1,
|
|
|
personNumber: 20,
|
|
|
- };
|
|
|
- const pagination = reactive({
|
|
|
- ...basePagination,
|
|
|
- });
|
|
|
- const fetchData = async (
|
|
|
- params: RecordParams = { pageIndex: 1, personNumber: 20 }
|
|
|
- ) => {
|
|
|
- setLoading(true);
|
|
|
- try {
|
|
|
- queryRecordList(params).then((res) => {
|
|
|
- console.log('res', res);
|
|
|
- renderData.value = res.data;
|
|
|
- pagination.pageIndex = params.pageIndex;
|
|
|
- pagination.personNumber = res.total;
|
|
|
- });
|
|
|
- } catch (err) {
|
|
|
- // you can report use errorHandler or other
|
|
|
- } finally {
|
|
|
- setLoading(false);
|
|
|
- }
|
|
|
- };
|
|
|
+ } as FaceParams;
|
|
|
+};
|
|
|
+const formModel = ref<FaceParams>(generateFormModel());
|
|
|
+
|
|
|
+const cloneColumns = ref<Column[]>([
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.index'),
|
|
|
+ dataIndex: 'index',
|
|
|
+ slotName: 'index',
|
|
|
+ ellipsis: true,
|
|
|
+ tooltip: true,
|
|
|
+ width: 60,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.time'),
|
|
|
+ dataIndex: 'time',
|
|
|
+ ellipsis: true,
|
|
|
+ tooltip: true,
|
|
|
+ width: 180,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.picture'),
|
|
|
+ dataIndex: 'picture',
|
|
|
+ slotName: 'picture',
|
|
|
+ width: 100,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.name'),
|
|
|
+ dataIndex: 'name',
|
|
|
+ ellipsis: true,
|
|
|
+ tooltip: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.nameCh'),
|
|
|
+ dataIndex: 'nameCh',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.company'),
|
|
|
+ dataIndex: 'company',
|
|
|
+ ellipsis: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.Position'),
|
|
|
+ dataIndex: 'Position',
|
|
|
+ ellipsis: true,
|
|
|
+ tooltip: { position: 'left' },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.id'),
|
|
|
+ dataIndex: 'id',
|
|
|
+ ellipsis: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: t('recordList.columns.result'),
|
|
|
+ dataIndex: 'result',
|
|
|
+ ellipsis: true,
|
|
|
+ },
|
|
|
+]);
|
|
|
+const size = ref<SizeProps>('medium');
|
|
|
+
|
|
|
+const basePagination: Pagination = {
|
|
|
+ current: 1,
|
|
|
+ pageSize: 20,
|
|
|
+};
|
|
|
+const pagination = reactive({
|
|
|
+ ...basePagination,
|
|
|
+});
|
|
|
+const fetchData = async () => {
|
|
|
+ setLoading(true);
|
|
|
+ try {
|
|
|
+ queryRecordList(formModel.value).then(res => {
|
|
|
+ renderData.value = res.data;
|
|
|
+ pagination.current = formModel.value.pageIndex;
|
|
|
+ pagination.pageSize = pagination.pageSize;
|
|
|
+ pagination.total = res.total;
|
|
|
+ });
|
|
|
+ } catch (err) {
|
|
|
+ // you can report use errorHandler or other
|
|
|
+ } finally {
|
|
|
+ setLoading(false);
|
|
|
+ }
|
|
|
+};
|
|
|
+fetchData();
|
|
|
+const { pause, resume, isActive } = useIntervalFn(() => {
|
|
|
+ /* your function */
|
|
|
+ formModel.value.pageIndex = 1;
|
|
|
+ fetchData();
|
|
|
+}, 50000);
|
|
|
+const onPageChange = (current: number) => {
|
|
|
+ formModel.value.pageIndex = current;
|
|
|
fetchData();
|
|
|
- const { pause, resume, isActive } = useIntervalFn(() => {
|
|
|
- /* your function */
|
|
|
- fetchData();
|
|
|
- }, 50000);
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="less">
|
|
|
- .container {
|
|
|
- padding: 10px;
|
|
|
+.container {
|
|
|
+ padding: 10px;
|
|
|
|
|
|
- :deep(.arco-list-content) {
|
|
|
- overflow-x: hidden;
|
|
|
- }
|
|
|
+ :deep(.arco-list-content) {
|
|
|
+ overflow-x: hidden;
|
|
|
+ }
|
|
|
|
|
|
- :deep(.arco-card-meta-title) {
|
|
|
- font-size: 14px;
|
|
|
- }
|
|
|
+ :deep(.arco-card-meta-title) {
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
|
|
|
- .general-card {
|
|
|
- padding-top: 10px;
|
|
|
- }
|
|
|
+ .general-card {
|
|
|
+ padding-top: 10px;
|
|
|
}
|
|
|
+}
|
|
|
</style>
|