<template> <div class="container"> <NavBar title="关联项目" left-arrow @click-left="goBack" /> <Notice detail="关联项目后,您即可使用 APP 中项目查询,还款计划等功能" /> <section class="list"> <PullRefresh v-model="refreshing" @refresh="onRefresh" class="scroll"> <List :finished="finished" finished-text="没有更多了" @load="loadApproval"> <ListItem v-for="item in listValue" :other_title="item.other_title" :title="item.title" :values="item.values" isSwiper @clickRight="unbind(item.associationId)"> <template #rightTxt> <span>取消解绑</span> </template> </ListItem> </List> </PullRefresh> </section> <Plus @click="jump" /> </div> </template> <script setup> import { goBack } from "@/utils/globalFun" import Notice from "@/components/Notice.vue" import { NavBar, List, PullRefresh, Dialog } from "vant"; import ListItem from '@/components/ListItem.vue' import Plus from '@/components/Plus.vue' import api from "../api"; import { useRouter } from "vue-router"; let listValue = $ref([]) let pager = { page: 1, pageSize: 10 } let refreshing = $ref(true); let finished = $ref(true); const queryList = async () => { refreshing = true let res = await api.contractQueryAll({ receivets: + new Date() + '', ...pager }) if (res.success && res.rows.length > 0) { res.rows.forEach(item => { let temp = { ...item, title: item.contractNumber + '' || '', other_title: item.acceptDate?.split(' ')[0] || '', // values: [["机型", "机号", "代理店"], [item.model, item.machineNumber, item.agencyName]] values: [["机型", "机号", "状态", "代理店"], [item.model, item.machineNumber, item.contractStatus?item.contractStatus:'', item.agencyName]] } listValue.push(temp) }) if(res.rows.length >=10 ){ finished = false } } else { finished = true } refreshing = false } queryList() const onRefresh = () => { // 下拉重置参数,重新加载 listValue = []; pager.page = 1; pager.pageSize = 10; finished = false queryList() }; const loadApproval = () => { pager.page++; queryList() } const router = useRouter(); const jump = () => { router.push({ name: "relatedProject-views-relatedFlow" }) } const unbind = async (associationId) => { Dialog.confirm({ title: '是否对该项目取消解绑', message: '', }) .then(async () => { // on confirm let res = await api.contractDelete({ associationId: associationId + '', receivets: +new Date() + '', }) if (res.success) { onRefresh() } }) .catch(() => { // on cancel }); } </script> <style scoped lang="less"> .list { box-sizing: border-box; height: calc(100vh - var(--van-nav-bar-height) - 90px); display: flex; flex-direction: column; justify-content: space-between; padding-top: 8px; padding-bottom: 10px; } .scroll { box-sizing: border-box; overflow-y: auto; } </style> <route> { meta: { title: '关联项目' } } </route>