wangzimeng f5ab9a74e4 1、查看人数的图标-牵扯页面:首页、搜索、招租列表、招租详情、课程列表、课程详情、收藏列表、足迹列表
2、发布的认证信息弹框的居中
3、首页顶部的搜索框宽度加长,全国缩小
4、个人中心:六个行设置的间距变为40;登录弹框的宽度缩小;未认证和已认证的内间距
5、发布页面的底部按钮的高度调整
6、招租详情的底部按钮栏的高度调整
2025-08-07 18:20:43 +08:00

655 lines
15 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<s-layout title="我的发布">
<view class="container">
<!-- tabs页签 -->
<view class="tabs-box">
<su-tabs :list="tabMaps" @change="onChange" :scrollable="false" :current="currentTab"></su-tabs>
</view>
<!-- 推荐列表 -->
<scroll-view @scrolltolower="onScrolltolower" :refresher-enabled="true" :refresher-triggered="homrS"
@refresherrefresh="onS" scroll-y="true" class="flex align-items"
style="height: 85vh;box-sizing: border-box;">
<view class="recommend-box">
<view class="rrecommList" v-for="(item,index) in rentList" :key="index" @click="toDetail(item)">
<!-- 通过的 -->
<view class="reListItem" v-if="item.status == 1">
<view class="reItemCon">
<!-- 左侧图片 -->
<view class="listItem-images">
<image class="iamges-mainImg" :src="item.images[0]" mode="aspectFill"></image>
</view>
<!-- 右侧内容 -->
<view class="listItem-contents">
<view class="title2" style="margin-bottom: 20rpx;">
{{item.title}}
</view>
<scroll-view class="score-box">
<view class="fs11 flex cate">
<view class="cate-e" v-for="(e,i) in item.cate" :key="i">
<view v-show="e" class="status-tag " style="margin-right: 20rpx;">{{e}}
</view>
</view>
</view>
</scroll-view>
<view class="cons-third">
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/locationList.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.address_city_text}}
</view>
</view>
<view class="title3">{{item.release_time_text}}</view>
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/eye.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.views}}</view>
</view>
</view>
</view>
</view>
<view
style="background-color: #f7f7f7;height: 1rpx;width: 630rpx;border-radius: 12rpx;margin: 30rpx 0;">
</view>
<view class="reItemBtn">
<view class="editItemBtn" @click.stop="rentEdit(item)">修改信息</view>
<view class="cancelItemBtn" @click.stop="rentCancel(item)">取消发布</view>
</view>
</view>
<!-- 待审核的的 -->
<view class="pandListItem" v-if="item.status == 0">
<view class="pandItemCon">
<!-- 左侧图片 -->
<view class="listItem-images">
<image v-if="item.status == 0"
style="width: 151rpx;height: 210rpx;z-index: 100;position: relative;top: 78rpx;right: 15rpx;"
src="https://jiangxiaoxian.0rui.cn/releasePanding.png"></image>
<image class="iamges-mainImg" :src="item.images[0]" mode="aspectFill"></image>
</view>
<!-- 右侧内容 -->
<view class="listItem-contents">
<view class="title2" style="margin-bottom: 20rpx;">
{{item.title}}
</view>
<scroll-view class="score-box">
<view class="fs11 flex cate">
<view class="cate-e" v-for="(e,i) in item.cate" :key="i">
<view v-show="e" class="status-tag " style="margin-right: 20rpx;">{{e}}
</view>
</view>
</view>
</scroll-view>
<view class="cons-third">
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/locationList.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.address_city_text}}
</view>
</view>
<view class="title3">{{item.release_time_text}}</view>
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/eye.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.views}}</view>
</view>
</view>
</view>
</view>
<view
style="background-color: #f7f7f7;height: 1rpx;width: 630rpx;border-radius: 12rpx;margin: 30rpx 0;">
</view>
<view class="reItemBtn">
<view class="editItemBtn" @click.stop="rentEdit(item)">修改信息</view>
<view class="cancelItemBtn" @click.stop="rentCancel(item)">取消发布</view>
</view>
</view>
<!-- 未通过的 -->
<view class="unListItem" v-if="item.status == 2">
<view class="unItemCon">
<!-- 左侧图片 -->
<view class="listItem-images">
<image v-if="item.status == 2"
style="width: 151rpx;height: 210rpx;z-index: 100;position: relative;top: 78rpx;right: 15rpx;"
src="https://jiangxiaoxian.0rui.cn/releaseFail.png"></image>
<image class="iamges-mainImg" :src="item.images[0]" mode="aspectFill"></image>
</view>
<!-- 右侧内容 -->
<view class="listItem-contents">
<view class="title2" style="margin-bottom: 20rpx;">
{{item.title}}
</view>
<scroll-view class="score-box">
<view class="fs11 flex cate">
<view class="cate-e" v-for="(e,i) in item.cate" :key="i">
<view v-show="e" class="status-tag " style="margin-right: 20rpx;">{{e}}
</view>
</view>
</view>
</scroll-view>
<view class="cons-third">
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/locationList.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.address_city_text}}
</view>
</view>
<view class="title3">{{item.release_time_text}}</view>
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/eye.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.views}}</view>
</view>
</view>
</view>
</view>
<view class="failReasonBox">
<view class="titltFail">驳回原因{{item.reason}}</view>
</view>
<view class="reItemBtn">
<view class="editItemBtn" @click.stop="rentEdit(item)">修改信息</view>
<view class="cancelItemBtn" @click.stop="rentCancel(item)">取消发布</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</s-layout>
</template>
<script setup>
import sheep from '@/sheep';
import {
onLoad,
onShow,
onReachBottom
} from '@dcloudio/uni-app';
import {
ref,
reactive
} from 'vue';
import _ from 'lodash';
const listQuery = ref({
page: 1,
limit: 10,
list_rows: 10,
status: '',
})
const tabMaps = [{
name: '全部',
value: '3',
},
{
name: '待审核',
value: '0',
},
{
name: '未通过',
value: '2',
},
{
name: '已发布',
value: '1',
},
];
const currentTab = ref(0)
const rentList = ref([])
const rentCount = ref(0)
//切换tabs
function onChange(e) {
console.log('onChange', e);
currentTab.value = e.index
console.log('切换tabs', currentTab.value);
if (currentTab.value == 0) {
listQuery.value.status = ''
} else {
listQuery.value.status = tabMaps[currentTab.value].value
}
rentList.value = []
getList();
}
//招租列表
async function getList() {
const res = await sheep.$api.rent.rentlist({
page: listQuery.value.page,
limit: listQuery.value.limit,
order: 'normal',
status: listQuery.value.status,
my: 1,
});
console.log('getList', res);
if (res.data && res.data.list) {
// rentList.value = res.data.list;
rentList.value = [...rentList.value, ...res.data.list];
rentCount.value = res.data.count;
rentList.value = rentList.value.map(item => {
const newItem = {
...item
};
if (newItem.release_time_text) {
newItem.release_time_text = newItem.release_time_text.substring(0, 10);
}
return newItem;
});
} else {
rentList.value = [];
}
console.log('getList', rentList.value, rentCount.value);
}
//加载更多
function onScrolltolower() {
if (rentList.value.length < rentCount.value) {
listQuery.value.page += 1;
getList();
}
}
//下拉刷新
function onS() {
homrS.value = true
listQuery.value.keywords = ''
uni.showLoading({
title: '加载中...'
});
resetLists();
setTimeout(() => {
homrS.value = false;
uni.hideLoading();
uni.stopPullDownRefresh();
}, 2000)
}
// 重置列表
function resetLists() {
listQuery.value.page = 1;
rentList.value = [];
getList();
}
//详情
function toDetail(e) {
console.log('跳转详情', e);
uni.navigateTo({
url: '/pages/canteenRent/rentDetail?id=' + e.id
})
}
//修改
function rentEdit(item) {
console.log('修改招租',item);
uni.navigateTo({
url: `/pages/canteenRent/rentEdit?id=${item.id}`
})
}
//取消
function rentCancel(item) {
console.log('取消招租',item.id);
const ids = item.id
console.log('取消招租',ids);
sheep.$api.rent.delRent({ids:item.id}).then((res) => {
if(res.code === 1) {
console.log('delete:',res);
uni.showToast({
title: '取消成功',
icon: 'none'
})
rentList.value = []
getList()
}else {
uni.showToast({
title: res.msg,
icon: 'error'
})
}
})
}
getList()
</script>
<style lang="scss" scoped>
.title {
color: #3d3d3d;
font-size: 34rpx;
font-weight: 800;
line-height: 34rpx;
}
.intro {
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.title2 {
color: #3d3d3d;
font-size: 30rpx;
font-weight: 800;
line-height: 42rpx;
}
.title3 {
font-size: 20rpx;
font-weight: 400;
color: #999999;
line-height: 22rpx;
}
.titltFail {
font-size: 28rpx;
font-weight: 400;
line-height: 28rpx;
color: #3d3d3d;
display: flex;
justify-content: flex-start;
}
.container {
.recommend-box {
padding: 0rpx 30rpx;
.rrecommList {
margin-top: 30rpx;
.reListItem {
background-color: #ffffff;
width: 640rpx;
height: 320rpx;
padding: 30rpx;
// display: block;
// justify-content: ;
// align-items: center;
border-radius: 18rpx;
margin-bottom: 30rpx;
.reItemCon {
width: 100%;
display: flex;
justify-content: flex-start;
align-items: center;
.listItem-images {
display: grid;
justify-content: flex-start;
.iamges-mainImg {
width: 190rpx;
height: 190rpx;
position: relative;
right: 0rpx;
bottom: 0rpx;
z-index: 1;
}
}
.listItem-contents {
margin-left: 20rpx;
.score-box {
display: flex;
.cate {
display: flex;
justify-content: flex-start;
align-items: center;
.cate-e {
.status-tag {
padding: 5rpx 15rpx;
border-radius: 5rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 22rpx;
background-color: rgba(247, 97, 0, 0.2);
// opacity: 0.2;
color: #F76100;
//flex-shrink: 0
}
}
}
}
.cons-third {
width: 428rpx;
margin-top: 26rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
}
}
}
.unListItem {
background-color: #ffffff;
width: 640rpx;
height: 440rpx;
padding: 30rpx;
border-radius: 18rpx;
margin-bottom: 30rpx;
.unItemCon {
width: 100%;
height: 190rpx;
display: flex;
justify-content: flex-start;
align-items: center;
.listItem-images {
display: grid;
justify-content: flex-start;
.iamges-mainImg {
width: 190rpx;
height: 190rpx;
position: relative;
right: 0rpx;
bottom: 108rpx;
z-index: 1;
}
}
.listItem-contents {
margin-left: 20rpx;
.score-box {
display: flex;
.cate {
display: flex;
justify-content: flex-start;
align-items: center;
.cate-e {
.status-tag {
padding: 5rpx 15rpx;
border-radius: 5rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 22rpx;
background-color: rgba(247, 97, 0, 0.2);
// opacity: 0.2;
color: #F76100;
//flex-shrink: 0
}
}
}
}
.cons-third {
width: 428rpx;
margin-top: 26rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
}
}
.failReasonBox {
height: 69rpx;
width: 570rpx;
margin: 30rpx 0;
padding: 30rpx;
background-color: #f7f7f7;
border-radius: 12rpx;
overflow-wrap: break-word;
word-break: break-word;
white-space: normal;
}
}
.pandListItem {
background-color: #ffffff;
width: 640rpx;
height: 320rpx;
padding: 30rpx;
border-radius: 18rpx;
margin-bottom: 30rpx;
.pandItemCon {
width: 100%;
height: 190rpx;
display: flex;
justify-content: flex-start;
align-items: center;
.listItem-images {
display: grid;
justify-content: flex-start;
.iamges-mainImg {
width: 190rpx;
height: 190rpx;
position: relative;
right: 0rpx;
bottom: 108rpx;
z-index: 1;
}
}
.listItem-contents {
margin-left: 20rpx;
.score-box {
display: flex;
.cate {
display: flex;
justify-content: flex-start;
align-items: center;
.cate-e {
.status-tag {
padding: 5rpx 15rpx;
border-radius: 5rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 22rpx;
background-color: rgba(247, 97, 0, 0.2);
// opacity: 0.2;
color: #F76100;
//flex-shrink: 0
}
}
}
}
.cons-third {
width: 428rpx;
margin-top: 26rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
}
}
}
}
}
}
.reItemBtn {
width: 100%;
display: flex;
justify-content: flex-end;
align-items: center;
.editItemBtn {
width: 189rpx;
height: 70rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 32rpx;
border-radius: 128rpx;
border: 1rpx solid #333333;
font-weight: 400;
color: #333333;
line-height: 20rpx;
}
.cancelItemBtn {
width: 189rpx;
height: 70rpx;
background: linear-gradient(to right, #FFBD25, #FCCA58);
margin-left: 20rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 32rpx;
border-radius: 128rpx;
font-weight: 400;
color: #333333;
line-height: 20rpx;
}
}
</style>