Files
gjt_mini/pageSub/annualReview/index.vue
2025-12-30 09:44:46 +08:00

295 lines
7.6 KiB
Vue

<template>
<view>
<u-sticky>
<view style="background-color: #fff">
<u-subsection
mode="subsection"
:list="list"
:current="current"
@change="sectionChange"
activeColor="#7ba746"
:fontSize="30"
>
</u-subsection>
</view>
<u-search
placeholder="请输入"
v-model="keyword"
:showAction="false"
@search="searchList()"
></u-search>
</u-sticky>
<view class="list">
<view class="item" v-for="item in dataList" :key="item.id">
<view class="line" v-if="item.annualInspectionStatus == 1">
<u-badge :isDot="true" type="error"></u-badge>
<view class="text-normal" style="margin-left: 20rpx">年审中</view>
</view>
<view class="line" v-else-if="item.annualInspectionStatus == 2">
<u-badge :isDot="true" type="error"></u-badge>
<view class="text-normal" style="margin-left: 20rpx">未通过</view>
</view>
<view class="line" v-else-if="item.annualInspectionStatus == 0">
<u-badge :isDot="true" type="error"></u-badge>
<view class="text-normal" style="margin-left: 20rpx">待年审</view>
</view>
<view class="line" v-else-if="item.annualInspectionStatus == 3">
<u-badge :isDot="true" type="success"></u-badge>
<view class="text-normal" style="margin-left: 20rpx">已通过</view>
</view>
<view class="line" style="justify-content: space-between">
<view class="text-small">车牌号: {{ item.plateNumber }}</view>
</view>
<view class="line">
<view class="text-small"
>资产状态: {{ item.truckRentStatusName }}</view
>
</view>
<view class="line" style="justify-content: space-between">
<view class="text-small left"
>年审到期时间:
{{
formatDateTime(item.annualInspectionExpireDate, "minute")
}}</view
>
<view class="text-small"
>负责人: {{ item.submitterName || "--" }}</view
>
</view>
<view class="buttons">
<!--deliveryPermit为1的时候准许交车 -->
<button
@tap="goto"
:data-url="`/pageSub/annualReview/detail?id=${item.id}`"
>
编辑
</button>
<button
@tap="goto"
:data-url="`/pageSub/annualReview/detail?id=${item.id}&isRead=1`"
>
查看
</button>
</view>
</view>
<view class="no-more" v-if="noMoreData">没有更多数据了</view>
</view>
<view
clas="line"
style="margin-top: 150rpx"
v-if="!dataList || dataList.length === 0"
>
<u-empty mode="search" text="暂无数据" width="400" textSize="16">
</u-empty
></view>
<u-loading-page
bg-color="#ffffff"
:loading="loading"
color="#7ba746"
font-size="24"
></u-loading-page>
</view>
</template>
<script>
import stora from "@/utils/storage";
import { getUser } from "@/utils/auth.js";
export default {
options: {
styleIsolation: "shared", // 解除样式隔离
},
data() {
return {
current: 0,
list: ["待办", "已年审"],
queryPage: {
pageNo: 1, // 页码
pageSize: 10, //每页查询条数
total: 0, //总页数
pages: 1, //总页数
accessType: 1, // 访问类型 小程序传一
// userid: 0, //当前账号id
annualInspectionStatus: 0, // 表示待办
},
dataList: [],
pageNo: 1,
noMoreData: false,
loading: false,
keyword: "",
};
},
methods: {
// 新增的搜索方法
searchList() {
this.queryPage.plateNumber = this.keyword.trim(); // 设置车牌号条件
this.queryPage.pageNo = 1; // 重置页码为1
this.dataList = []; // 清空数据列表
this.noMoreData = false; // 重置没有更多数据的标志
this.loadmore(); // 重新加载数据
},
sectionChange(index) {
this.current = index;
this.keyword = "";
this.queryPage.plateNumber = undefined; // 清空搜索关键字
if (index == 1) {
this.queryPage.annualInspectionStatus = 3;
} else {
this.queryPage.annualInspectionStatus = 0;
}
this.loadmore();
this.getToDo();
this.queryPage.pageNo = 1;
this.dataList = [];
},
// submitEvent() {
// getToDo();
// this.current = 1;
// //提交后删除缓存
// stora.remove("fault_fromData");
// },
formatDateTime(obj) {
if (obj == null) {
return "";
}
let date = new Date(obj);
let y = 1900 + date.getYear();
let m = "0" + (date.getMonth() + 1);
let d = "0" + date.getDate();
return (
y +
"-" +
m.substring(m.length - 2, m.length) +
"-" +
d.substring(d.length - 2, d.length)
);
},
loadmore() {
this.loading = true;
this.$api.annualReview
.queryTakePageList(this.queryPage)
.then((res) => {
console.log(res);
this.queryPage.pageNo = res.current;
this.queryPage.pages = res.pages;
this.queryPage.total = res.total;
this.dataList.push(...(res.records || []));
this.loading = false;
})
.catch((errors) => {
this.loading = false;
});
},
goto(e) {
uni.navigateTo({ url: e.target.dataset.url });
},
// 获取待办数量
getToDo() {
this.$api.annualReview.getToDo().then((res) => {
console.log("数量");
console.log(res);
this.list[0] = `待办 + ${res}`; // 动态设置
});
},
},
onLoad() {
// this.getToDo();
this.userInfo = getUser() || {};
console.log(this.userInfo);
// this.queryPage.userid = this.userInfo.id;
console.log(this.queryPage.userid);
},
onPullDownRefresh() {
this.sectionChange(this.current);
uni.stopPullDownRefresh(); //刷新数据之后停止刷新效果
},
destroyed() {
//页面销毁删除掉数据缓存
stora.remove("fault_fromData");
},
onReachBottom() {
console.log("触底了");
//当前页数小于总页数
if (this.queryPage.pageNo < this.queryPage.pages) {
this.queryPage.pageNo++;
this.loadmore();
this.getToDo();
} else {
this.noMoreData = true;
console.log("没有更多数据了");
}
},
onShow() {
this.sectionChange(this.current);
},
};
</script>
<style lang="less" scoped>
/deep/ .u-badge--error {
background-color: red !important;
}
/deep/ .u-badge--success {
background-color: #4cd964 !important;
}
/deep/ .u-search {
background: #d7d7d7 !important;
padding: 20rpx 10rpx !important;
}
.list {
background: #d7d7d7;
padding: 20rpx;
.item {
background: white;
width: calc(100% - 40rpx);
padding: 20rpx;
margin-bottom: 20rpx;
position: relative;
border-radius: 15rpx;
.line {
display: flex;
align-items: center;
margin-bottom: 15rpx;
.left {
margin-right: 50rpx;
width: 300rpx;
}
.text-small {
font-size: x-small;
}
.text-normal {
font-size: small;
}
}
.buttons {
position: absolute;
top: 20rpx;
right: 20rpx;
button {
width: 130rpx;
height: 50rpx;
padding: 12rpx 0;
font-size: 26rpx;
line-height: 26rpx;
margin-bottom: 10rpx;
}
}
}
.no-more {
width: 100%;
text-align: center;
font-size: xx-small;
color: white;
}
}
</style>