|
|
@ -64,6 +64,7 @@ |
|
|
import { ref } from 'vue'; |
|
|
import { ref } from 'vue'; |
|
|
import { showToast } from 'vant'; |
|
|
import { showToast } from 'vant'; |
|
|
import 'vant/es/toast/style'; |
|
|
import 'vant/es/toast/style'; |
|
|
|
|
|
import { queryLawListApi } from '@/api/enterprise'; |
|
|
|
|
|
|
|
|
const router = useRouter(); |
|
|
const router = useRouter(); |
|
|
|
|
|
|
|
|
@ -78,32 +79,51 @@ const refreshing = ref(false); |
|
|
const pageNum = ref(1); |
|
|
const pageNum = ref(1); |
|
|
const pageSize = ref(10); |
|
|
const pageSize = ref(10); |
|
|
|
|
|
|
|
|
// 模拟数据(与截图一致) |
|
|
// 日期统一显示为 yyyy-MM-dd(后端可能返回 yyyy-MM-dd HH:mm:ss 或时间戳) |
|
|
const mockData = [ |
|
|
const formatDate = (val) => { |
|
|
{ title: '渔业行政处罚规定', status: '有效', publishDate: '2026-08-08', implementDate: '2026-08-18', department: '农业农村部' }, |
|
|
if (!val) return ''; |
|
|
{ title: '渔业行政处罚规定', status: '尚未生效', publishDate: '2026-08-08', implementDate: '2026-08-18', department: '农业农村部' }, |
|
|
const str = String(val); |
|
|
{ title: '渔业行政处罚规定', status: '有效', publishDate: '2026-08-08', implementDate: '2026-08-18', department: '农业农村部' }, |
|
|
if (/^\d{4}-\d{2}-\d{2}/.test(str)) return str.slice(0, 10); |
|
|
{ title: '渔业行政处罚规定', status: '有效', publishDate: '2026-08-08', implementDate: '2026-08-18', department: '农业农村部' }, |
|
|
const d = new Date(str); |
|
|
{ title: '渔业行政处罚规定', status: '有效', publishDate: '2026-08-08', implementDate: '2026-08-18', department: '农业农村部' }, |
|
|
if (Number.isNaN(d.getTime())) return str; |
|
|
{ title: '渔业行政处罚规定', status: '有效', publishDate: '2026-08-08', implementDate: '2026-08-18', department: '农业农村部' }, |
|
|
const pad = (n) => String(n).padStart(2, '0'); |
|
|
]; |
|
|
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// 后端字段 → 页面字段 |
|
|
|
|
|
const normalizeItem = (item = {}) => ({ |
|
|
|
|
|
id: item.id, |
|
|
|
|
|
title: item.lawName || '', |
|
|
|
|
|
status: item.timeliness || '', |
|
|
|
|
|
publishDate: formatDate(item.promulgation), |
|
|
|
|
|
implementDate: formatDate(item.implementation), |
|
|
|
|
|
department: item.organ || '', |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
// 加载数据 |
|
|
// 加载数据 |
|
|
const fetchList = () => { |
|
|
const fetchList = () => { |
|
|
// TODO: 替换为真实接口调用 |
|
|
const params = { |
|
|
// const params = { pageNum: pageNum.value, pageSize: pageSize.value, searchValue: searchKeyword.value }; |
|
|
pageNum: pageNum.value, |
|
|
|
|
|
pageSize: pageSize.value, |
|
|
// 模拟异步请求 |
|
|
}; |
|
|
setTimeout(() => { |
|
|
const keyword = searchKeyword.value.trim(); |
|
|
if (refreshing.value) { |
|
|
if (keyword) params.lawName = keyword; |
|
|
lawList.value = []; |
|
|
|
|
|
refreshing.value = false; |
|
|
queryLawListApi(params, (res) => { |
|
|
} |
|
|
const rows = (res?.rows || []).map(normalizeItem); |
|
|
lawList.value = [...lawList.value, ...mockData]; |
|
|
const total = Number(res?.total || 0); |
|
|
// 模拟只有一页数据 |
|
|
lawList.value = pageNum.value === 1 ? rows : lawList.value.concat(rows); |
|
|
|
|
|
finished.value = lawList.value.length >= total || rows.length < pageSize.value; |
|
|
|
|
|
pageNum.value += 1; |
|
|
|
|
|
loading.value = false; |
|
|
|
|
|
refreshing.value = false; |
|
|
|
|
|
}, (err) => { |
|
|
|
|
|
console.error('[lawQuery] 法律法规列表加载失败:', err); |
|
|
finished.value = true; |
|
|
finished.value = true; |
|
|
loading.value = false; |
|
|
loading.value = false; |
|
|
}, 300); |
|
|
refreshing.value = false; |
|
|
|
|
|
showToast('法律法规加载失败'); |
|
|
|
|
|
}); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
// 触底加载 |
|
|
// 触底加载 |
|
|
@ -140,6 +160,7 @@ const onLawClick = (item) => { |
|
|
router.push({ |
|
|
router.push({ |
|
|
path: '/enterprise/lawDetail', |
|
|
path: '/enterprise/lawDetail', |
|
|
query: { |
|
|
query: { |
|
|
|
|
|
id: item.id, |
|
|
title: item.title, |
|
|
title: item.title, |
|
|
publishDate: item.publishDate, |
|
|
publishDate: item.publishDate, |
|
|
implementDate: item.implementDate, |
|
|
implementDate: item.implementDate, |
|
|
|