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