9 changed files with 157 additions and 25 deletions
@ -0,0 +1,19 @@ |
|||
import http from '@/http/http'; |
|||
|
|||
// 非现场执法后台基础路径(走 vite 代理 /nosapi -> http://127.0.0.1:8080)
|
|||
const NOS_BASE = import.meta.env.VITE_NOS_BASE_URL || '/nosapi'; |
|||
|
|||
/** |
|||
* 查询 enf 测试单分页列表 |
|||
* 后端: GET /enforcementcode/enfDemo/list |
|||
* 返回: TableDataInfo<TestEnfDemoVo> -> { rows, total, code, msg } |
|||
* |
|||
* 通过 baseURL: '' 绕过 axios 默认 baseURL(默认是 /api,给企业端老接口用) |
|||
*/ |
|||
export const listEnfDemo = (params) => |
|||
http.request({ |
|||
method: 'GET', |
|||
url: NOS_BASE + '/enforcementcode/enfDemo/list', |
|||
params, |
|||
baseURL: '', |
|||
}).then(res => res.data); |
|||
@ -0,0 +1,12 @@ |
|||
// 企业端路由聚合入口
|
|||
// 由 globalExpandRouter.js 显式 import.meta.glob 识别此文件
|
|||
// 子路由文件:base 位于 enterprise-app/、demo 位于 nos/
|
|||
import { routes as baseRoutes } from "./enterprise-app/ent-base-router"; |
|||
import { routes as demoRoutes } from "./nos/nos-base-router"; |
|||
|
|||
const routes = [ |
|||
...baseRoutes, |
|||
...demoRoutes, |
|||
]; |
|||
|
|||
export { routes }; |
|||
@ -0,0 +1,15 @@ |
|||
// nos 业务基础路由(与 /nosapi 后端联调相关页面)
|
|||
const routes = [ |
|||
// enf 测试单列表 Demo(调用 /nosapi/enforcementcode/enfDemo/list)
|
|||
{ |
|||
path: "/enterprise/enfDemoList", |
|||
name: "enfDemoList", |
|||
component: () => import("@/views/enterprise/nos/enfDemoList.vue"), |
|||
meta: { |
|||
isKeepAlive: false, |
|||
title: "enf 测试单列表", |
|||
}, |
|||
}, |
|||
]; |
|||
|
|||
export { routes }; |
|||
@ -0,0 +1,104 @@ |
|||
<template> |
|||
<div class="enf-demo-list app_content"> |
|||
<van-nav-bar title="enf 测试单列表(Demo)" left-text="返回" left-arrow @click-left="onBack" /> |
|||
|
|||
<van-pull-refresh v-model="state.refreshing" @refresh="onRefresh"> |
|||
<van-list |
|||
v-model:loading="state.loading" |
|||
:finished="state.finished" |
|||
finished-text="没有更多了" |
|||
:error="state.error" |
|||
error-text="请求失败,点击重试" |
|||
@load="onLoad" |
|||
@update:error="(v) => state.error = v" |
|||
> |
|||
<van-cell |
|||
v-for="item in state.list" |
|||
:key="item.id" |
|||
:title="item.enfText || '(无文本)'" |
|||
:label="`ID: ${item.id} | key: ${item.testKey || '-'} | value: ${item.value || '-'}`" |
|||
:value="item.orderNum != null ? '#' + item.orderNum : ''" |
|||
/> |
|||
<van-empty v-if="!state.loading && state.list.length === 0 && state.finished" description="暂无数据" /> |
|||
</van-list> |
|||
</van-pull-refresh> |
|||
</div> |
|||
</template> |
|||
|
|||
<script setup name="enfDemoList"> |
|||
import { reactive } from 'vue'; |
|||
import { showFailToast } from 'vant'; |
|||
import 'vant/es/toast/style'; |
|||
import { listEnfDemo } from '@/api/nos/enfDemo'; |
|||
|
|||
const router = useRouter(); |
|||
|
|||
const state = reactive({ |
|||
list: [], |
|||
pageNum: 1, |
|||
pageSize: 10, |
|||
total: 0, |
|||
loading: false, |
|||
finished: false, |
|||
refreshing: false, |
|||
error: false, |
|||
}); |
|||
|
|||
const onBack = () => { |
|||
router.back(); |
|||
}; |
|||
|
|||
const fetchList = async () => { |
|||
try { |
|||
const res = await listEnfDemo({ pageNum: state.pageNum, pageSize: state.pageSize }); |
|||
// 兼容 TableDataInfo: { rows, total, code, msg } |
|||
const rows = res?.rows || []; |
|||
const total = res?.total ?? 0; |
|||
if (state.refreshing) { |
|||
state.list = []; |
|||
state.refreshing = false; |
|||
} |
|||
state.list.push(...rows); |
|||
state.total = total; |
|||
if (state.list.length >= total || rows.length === 0) { |
|||
state.finished = true; |
|||
} else { |
|||
state.pageNum += 1; |
|||
} |
|||
} catch (err) { |
|||
console.error('listEnfDemo error:', err); |
|||
state.error = true; |
|||
showFailToast('加载失败'); |
|||
} finally { |
|||
state.loading = false; |
|||
} |
|||
}; |
|||
|
|||
const onLoad = () => { |
|||
state.loading = true; |
|||
fetchList(); |
|||
}; |
|||
|
|||
const onRefresh = () => { |
|||
state.pageNum = 1; |
|||
state.finished = false; |
|||
state.error = false; |
|||
state.loading = true; |
|||
fetchList(); |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="less" scoped> |
|||
.enf-demo-list { |
|||
display: flex; |
|||
flex-direction: column; |
|||
height: 100%; |
|||
overflow: hidden; |
|||
background: #f5f7fa; |
|||
|
|||
:deep(.van-pull-refresh) { |
|||
flex: 1; |
|||
overflow-y: auto; |
|||
} |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue