lanan-old/lanan-master-uniapp/subCarPages/userPost/userPost.vue
愉快的大福 7dc28dc701 init
2024-07-17 14:16:22 +08:00

164 lines
4.8 KiB
Vue

<template>
<view>
<view class="w750 padding flex-col align-center " style="min-height: 100%;">
<view class="response padding bg-white margin-bottom border-bottom" style="border-radius: 20rpx;"
v-for="(item, index) in userPostList" :key="index" @click="edit(item.carId)">
<view class="flex-row margin-bottom-xs align-center">
<view>
<u--image class="goodImg" radius="10rpx" width="240rpx" height="140rpx" :showLoading="true"
:src=" baseUrl + firstSubstring(item.carPics)"></u--image>
</view>
<view class="flex-col justify-between margin-bottom-xs margin-left-xs response"
style="height: 140rpx;">
<view class="text-lg text-bold">
<text class="margin-right-xs">{{item.carBrand}}</text> <text>{{item.carModel}}</text>
</view>
<view>
<text class="text-bold text-orange text-lg">
{{ formatAmountToWan(item.carPrice) + ' 万' }}</text>
</view>
<view class="flex-row justify-between text-sm">
<text>上户:{{item.carRecordDate}}</text>
<text>公里:{{item.carKilometers}}</text>
<!-- <text>上户地点:{{ getMappingArea(item.province,item.city,item.county) }} </text> -->
</view>
</view>
</view>
<view class="flex-row justify-between align-center margin-bottom-xs">
<view>
<text class="text-sm margin-bottom-xs">{{item.createTime}}</text>
</view>
<view class="flex-row">
<button class="cu-btn line-black text-red sm round margin-right-sm"
@click.stop="edit(item.carId)">编辑</button>
<button class="cu-btn line-red text-red sm round" @click.stop="del(item.carId)">删除</button>
</view>
</view>
</view>
<u-loadmore :status="status" line fontSize="22rpx" />
<view v-show="userPostList.length===0">
<u-empty mode="list" icon="http://cdn.uviewui.com/uview/empty/list.png" textSize="22rpx"
iconSize="120rpx">
</u-empty>
</view>
</view>
</view>
</template>
<script>
import Decimal from "decimal.js"; // 具体文件中引入
export default {
data() {
return {
imagesUrl: getApp().globalData.config.imagesUrl,
baseUrl: getApp().globalData.config.baseUrl,
userPostList: [],
user: {},
role: '',
isLoadMore: false, //是否加载中
params: {
pageSize: 10,
pageNum: 1
},
status: 'loadmore',
}
},
onLoad() {
this.getConfig()
},
onReachBottom() {
if (!this.isLoadMore) { //此处判断,上锁,防止重复请求
this.status = 'loading';
this.isLoadMore = true
this.params.pageNum++
console.log(this.params.pageNum);
this.getConfig()
}
},
methods: {
// 获取配置:用户发布次数
async getConfig() {
const user = await this.$request({
url: '/getInfo',
})
if (user.code == 200 && user.hasOwnProperty('user')) {
this.user = user.user
if (user.roles.length > 0 && user.roles[0] == 'dealers') {
this.role = user.roles[0]
}
}
// 获取已发布次数
const getUserPostNum = await this.$request({
url: '/system/car/getUserPostNum',
data: this.params
})
this.userPostList = this.userPostList.concat(getUserPostNum.rows);
console.log(getUserPostNum.rows.length);
if (getUserPostNum.rows.length < this.params.pageSize) { //判断接口返回数据量小于请求数据量,则表示此为最后一页
this.status = 'nomore';
this.isLoadMore = true
} else {
this.isLoadMore = false
}
console.log(getUserPostNum);
},
// 按逗号分隔字符串,获取第一个元素,用于图片展示
firstSubstring(string) {
if (string.includes(',')) {
return string.split(',')[0];
} else {
return string;
}
},
// 格式化金额,转为万元单位
formatAmountToWan(num) {
num = Number(num);
if (num == 0) {
return num + "";
} else {
return new Decimal(num).div(new Decimal(10000)).toString();
}
},
// 翻译省市区代码
async getMappingArea(province, city, county) {
const provinceRes = await this.$request({
url: '/shop/region/getInfoWx/' + province,
});
const cityRes = await this.$request({
url: '/shop/region/getInfoWx/' + city,
});
const countyRes = await this.$request({
url: '/shop/region/getInfoWx/' + county,
});
return provinceRes.data.name + cityRes.data.name + countyRes.data.name;
},
del(carId) {
this.$modal.confirm('即将删除这辆二手车信息,是否继续?').then(async () => {
const res = await this.$request({
url: '/system/car/removeWx/' + carId,
method: 'DELETE'
});
this.$modal.msgSuccess('删除成功')
this.getConfig()
})
},
edit(carId) {
this.$tab.navigateTo('/subCarPages/edit/edit?carId=' + carId)
}
}
}
</script>
<style>
page {
/* background: #242A38; */
}
</style>