refactor: 确立独立子工程架构 (backend, admin, mpuniapp) 并同步更新 AGENTS.md 规范

这个提交包含在:
wikiboss
2026-09-20 17:05:22 +08:00
父节点 de3cf8b870
当前提交 9fa1d1fbd0
共有 1679 个文件被更改,包括 204798 次插入 和 16817 次删除

查看文件

@@ -0,0 +1,64 @@
const PAGE_PATH = "/pages/API/pull-down-refresh/pull-down-refresh"
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isIos = platformInfo.startsWith('ios')
const isWeb = platformInfo.startsWith('web')
const isMP = platformInfo.startsWith('mp')
const isAppWebView = process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true'
const isDom2 = process.env.UNI_APP_X_DOM2 === "true"
describe("pull-down-refresh", () => {
if (isWeb || isAppWebView || isMP) {
it('not support', () => {
expect(1).toBe(1)
})
return
}
if (process.env.UNI_TEST_DEVICES_DIRECTION == 'landscape') {
it('跳过横屏模式', () => {
expect(1).toBe(1)
})
return
}
let page;
async function setPageData(newData) {
return await page.setData({ data: newData });
}
beforeAll(async () => {
page = await program.reLaunch(PAGE_PATH)
});
it("trigger pulldown refresh by swipe", async () => {
await page.waitFor('view')
await page.waitFor(4000)
await setPageData({
pulldownRefreshTriggered: false
})
if (isIos) {
// 暂时通过点击关闭授权弹框,避免影响 swipe 测试
await program.tap({
x: 100,
y: 500
})
}
expect(await page.data('data.startPullDownRefreshStaus')).toBe(true)
await program.swipe({
startPoint: {
x: 100,
y: 400
},
endPoint: {
x: 100,
y: 900
},
duration: 1000
})
await page.waitFor(1500)
expect(await page.data('data.pulldownRefreshTriggered')).toBe(true)
});
});

查看文件

@@ -0,0 +1,105 @@
<template>
<!-- #ifdef APP && !VUE3-VAPOR -->
<scroll-view style="flex: 1;">
<!-- #endif -->
<!-- 实际开发中,长列表应该使用list-view -->
<view class="uni-padding-wrap uni-common-mt">
<text class="text" v-for="(num,index) in listData" :key="index">list - {{num}}</text>
<view v-if="showLoadMore">{{loadMoreText}}</view>
</view>
<!-- #ifdef APP && !VUE3-VAPOR -->
</scroll-view>
<!-- #endif -->
</template>
<script setup lang="uts">
type DataType = {
pulldownRefreshTriggered: boolean,
startPullDownRefreshStaus: boolean
}
const listData = ref([] as Array<number>)
const loadMoreText = ref("加载中...")
const showLoadMore = ref(false)
const max = ref(0)
const data = reactive({
pulldownRefreshTriggered: false,
startPullDownRefreshStaus: false
} as DataType)
function initData() {
setTimeout(() => {
max.value = 0;
listData.value = [];
let dataArr : Array<number> = [];
max.value += 20;
for (let i : number = max.value - 19; i < max.value + 1; i++) {
dataArr.push(i)
}
listData.value = listData.value.concat(dataArr);
let status = false
uni.stopPullDownRefresh();
}, 1000);
}
function setListData() {
let dataArr : Array<number> = [];
max.value += 10;
for (let i : number = max.value - 9; i < max.value + 1; i++) {
dataArr.push(i)
}
listData.value = listData.value.concat(dataArr);
}
onReady(() => {
let status = false
uni.startPullDownRefresh({
success() {
status = true
},
fail() {
status = false
},
complete: () => {
data.startPullDownRefreshStaus = status
}
});
initData();
})
onReachBottom(() => {
console.log("onReachBottom");
if (max.value > 40) {
loadMoreText.value = "没有更多数据了!"
return;
}
showLoadMore.value = true;
setTimeout(() => {
setListData();
}, 300);
})
onPullDownRefresh(() => {
console.log('onPullDownRefresh');
data.pulldownRefreshTriggered = true
initData();
})
defineExpose({
data
})
</script>
<style>
.text {
margin: 6px 0;
width: 100%;
background-color: #fff;
height: 52px;
line-height: 52px;
text-align: center;
color: #555;
border-radius: 4px;
}
</style>