2025-04-08 19:29:25 +08:00

1308 lines
35 KiB
Vue

<template>
<view class="main">
<div
class="top"
:style="{
height: `${loginType === 'min' ? menu.bottom + 8 : ''}px`,
paddingTop: `${menu.top}px`,
}"
v-if="false"
>
<div class="topContent">
<image
class="backIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/backArrow.svg"
@click="handleBack"
/>
<div class="first" @click="goSelectServer">
<image
class="addressIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/blackFixed.png"
/>
<div class="text">{{ nowServiceObj.SERVERPART_NAME || "" }}</div>
<image
class="moreIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/rightArrow.png"
/>
</div>
<div
:class="inSearchAll ? 'inSearchAll' : 'searchAll'"
@click="handleSearchAll"
>
查看全部
</div>
</div>
</div>
<div class="tabBox" v-if="false">
<div
:class="fintType === 1000 ? 'tabItem active' : 'tabItem'"
@click="handleChangeType(1000)"
>
失物信息
</div>
<div
:class="fintType === 2000 ? 'tabItem active' : 'tabItem'"
@click="handleChangeType(2000)"
>
招领信息
</div>
</div>
<div class="headerBox">
<div
class="searchBox"
:style="{
width: showSearchBtn ? 'calc(100% - 80rpx) ' : '100%',
}"
>
<image
class="searchIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/searchIcon.png"
/>
<input
class="inputBox"
placeholder="请输入物品信息"
style="font-size: 28rpx"
v-model="searchText"
confirm-type="send"
@focus="clickSearch"
@blur="noClickSearch"
@confirm="handleEntrySearch"
/>
<!-- <image class="searchIcon" src="https://eshangtech.com/wanmeiyizhanImg/home/searchIcon.png" />
<span class="searchText">请输入服务区</span> -->
</div>
<div class="searchBtn" v-if="showSearchBtn" @click="handleGetListData">
搜索
</div>
<!-- <div class="filterBox" @click="showFilter" style="margin-left: 8px">
<image class="filterIcon" src="https://eshangtech.com/wanmeiyizhanImg/home/filterIcon.svg" />
</div>
<div class="filterBox" @click="handleGoAdd" style="margin-left: 8px">
<image class="filterIcon" src="https://eshangtech.com/wanmeiyizhanImg/home/addIcon.svg" />
</div> -->
</div>
<div class="newSelectBox">
<div class="leftBox">
<div class="first" @click="goSelectServer">
<image
class="addressIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/blackFixed.png"
/>
<div class="text">{{ nowServiceObj.SERVERPART_NAME || "" }}</div>
<image
class="moreIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/rightArrow.png"
/>
</div>
<div
:class="inSearchAll ? 'inSearchAll' : 'searchAll'"
@click="handleSearchAll"
>
查看全部
</div>
</div>
<div class="tabBoxNew">
<div
:class="fintType === 1000 ? 'tabItemNew activeNew' : 'tabItemNew'"
@click="handleChangeType(1000)"
>
失物
</div>
<div
:class="fintType === 2000 ? 'tabItemNew activeNew' : 'tabItemNew'"
@click="handleChangeType(2000)"
>
招领
</div>
</div>
</div>
<div
class="pageList"
:style="{
height: `calc(100vh - 186rpx - ${
loginType === 'min' ? menu.bottom : menu.top * 2
}px )`,
}"
>
<div
v-if="dataList && dataList.length > 0"
style="width: 100%; height: 100%"
>
<!-- <div class="pageTitle">物品 ({{ dataList.length || "" }})</div> -->
<scroll-view
scroll-y
class="listBox"
:style="{
height: `calc(100vh - 186rpx - ${
loginType === 'min' ? menu.bottom : menu.top * 2
}px )`,
}"
refresher-enabled
:refresher-triggered="triggered"
@scrolltolower="handleScrollBottom"
@refresherrefresh="handleRefresh"
>
<div
class="shopItem"
v-for="(item, index) in dataList"
:key="index"
@click="handleGoDetail(item)"
>
<div class="leftImgNew">
<image
class="img"
:src="item.ImageList[0].ImageUrl"
v-if="item.ImageList && item.ImageList.length > 0"
/>
<image
class="img"
src="https://eshangtech.com/wanmeiyizhanImg/discovery/defaultIcon.png"
v-else
/>
</div>
<div class="rightItem">
<view>
<div class="title">
<span class="type">{{
fintType === 1000 ? "失物" : "招领"
}}</span>
<span class="normal">{{ item.beforeOtherName }}</span>
<span class="light">{{ item.lightName }}</span>
<span class="normal">{{ item.afterOtherName }}</span>
</div>
</view>
<view>
<div class="timeBox">
<!-- <span class="label">时间</span> -->
{{ item.SUGGESTION_CREATEDATE || "-" }}
</div>
<div class="placeBox">
<!-- <span class="label">{{
fintType === 1000 ? "丢失地点" : "捡拾地点"
}}</span> -->
{{ item.SERVERPART_NAME || "-" }}
</div>
<div class="phone">
<!-- <span class="label">联系电话</span> -->
{{ item.PHONE_NUMBER || "-" }}
</div>
<div class="phone" v-if="item.SUGGESTION_REASON">
<span class="label">服务区热线</span>
{{ item.SUGGESTION_REASON || "-" }}
</div>
</view>
</div>
<div v-if="false">
<div class="title">
<span class="normal">{{ item.beforeOtherName }}</span>
<span class="light">{{ item.lightName }}</span>
<span class="normal">{{ item.afterOtherName }}</span>
</div>
<div class="timeBox">
<image
class="timeIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/timeIcon.png"
/>
<span class="timeText">{{ item.SUGGESTION_CREATEDATE }}</span>
</div>
<div class="phoneBox">
<!-- <image
class="phoneIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/phoneIcon.svg"
/>
<span class="phoneText">{{ item.PHONE_NUMBER }}</span> -->
<image
class="phoneIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/communityInteraction.svg"
/>
<span class="phoneText">{{ item.SERVERPART_NAME }}</span>
</div>
<div class="callPhoneBox" @click="handleCallPhone(item)">
<image
class="callPhoneIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/phone.png"
/>
</div>
</div>
</div>
<div v-if="dataList && dataList.length > 0">
<view class="inBottom">
<text class="bottomText">{{
pageObj.isOver ? "我是有底线的" : "下拉加载更多"
}}</text>
</view>
</div>
</scroll-view>
</div>
<div
v-if="!(dataList && dataList.length > 0)"
style="width: 100%; padding-top: 160px"
>
<no-data text="暂无物品信息" :isShow="true" :type="1"></no-data>
</div>
</div>
<view class="addNewPost" @click="handleGoAdd">
<view class="newPostBox">
<image
class="addIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/addPost.svg"
/>
<text class="addText">{{
fintType === 1000 ? "新增失物" : fintType === 2000 ? "新增招领" : ""
}}</text>
</view>
</view>
<uni-popup
ref="popup"
:show="isShow"
:safe-area="false"
@close="handleClosePopup"
>
<div class="popupBox">
<div class="popupTitle">
<image
class="closeIcon"
src="https://eshangtech.com/wanmeiyizhanImg/home/closeIcon.svg"
@click="handleClosePopup"
/>
<span class="titleText">更多筛选</span>
<div class="closeIcon"></div>
</div>
<div class="popupList">
<div class="popupLeftBox">
<div
:class="
leftSelectIndex === index ? 'itemType selectType' : 'itemType'
"
v-for="(item, index) in leftTypeList"
:key="index"
@click="handleSelectType(index, item.value)"
>
{{ item.label }}
</div>
</div>
<scroll-view
:scroll-y="true"
:scroll-into-view="scrollTop"
show-scrollbar="false"
:scroll-with-animation="true"
class="popupRightBox"
>
<div
class="rightItem"
:id="'shop' + item.value"
v-for="(item, index) in leftTypeList"
:key="index"
>
<template v-if="index !== 0">
<div class="itemTitle">{{ item.label }}</div>
<div
class="rightTypeList"
v-if="item.children && item.children.length > 0"
>
<div
:class="
subItem.value === rightSelectValue
? 'rightType selectRightType'
: 'rightType'
"
v-for="(subItem, subIndex) in item.children"
:key="subIndex"
@click="handleChangeRightSelect(index, subItem.value)"
>
{{ subItem.label }}
</div>
</div>
</template>
</div>
</scroll-view>
</div>
<div class="btnBox" @click="handleClickConfirm">
<div class="btn">确定</div>
</div>
</div>
</uni-popup>
</view>
</template>
<script>
import UniPopup from "@/uni_modules/uni-popup/components/uni-popup/uni-popup.vue";
import NoData from "../../components/noData.vue";
export default {
data() {
return {
nowServiceObj: {}, // 当前的服务区信息
isShow: false, // 悬浮框的是否显示
dataList: [
// {
// beforeOtherName: "罗马仕",
// lightName: "充电宝",
// afterOtherName: "",
// time: "2024-12-12 10:34:34",
// phone: "123456789",
// },
], // 数据列表
leftTypeList: [], // 悬浮框左侧的列表
leftSelectIndex: 0, // 左侧的默认选择
rightSelectValue: 0, // 右侧的改变
scrollTop: "", // 滚动的锚点
searchText: "", // 查询的内容
showSearchBtn: false, // 点击输入框时 出现搜索按钮
menu: {}, // 手机样式
goAdd: false, // 判断是否已经跳转了新增页面
inSearchAll: true, // 判断是否查看全部服务区
pageObj: {
pageSize: 10,
pageIndex: 1,
isOver: false,
},
triggered: false, // 下拉状态
fintType: 1000, // 1000 失物 2000 招领
loginType: "",
};
},
components: {
UniPopup,
NoData,
},
onLoad() {
let systemInfo = uni.getSystemInfoSync();
let type = uni.getStorageSync("loginType");
this.loginType = type;
if (type === "min") {
this.menu = uni.getMenuButtonBoundingClientRect();
} else {
this.menu = systemInfo.safeArea;
}
console.log("this.menu", this.menu);
let currentService = uni.getStorageSync("currentService");
console.log("currentService", currentService);
this.nowServiceObj = currentService;
this.handleGetTypeList();
this.handleGetListData();
},
onShow() {
let currentService = uni.getStorageSync("currentService");
if (currentService.SERVERPART_ID !== this.nowServiceObj.SERVERPART_ID) {
this.nowServiceObj = currentService;
this.dataList = [];
this.handleGetListData();
// this.goAdd = false;
}
let contactReload = uni.getStorageSync("contactReload");
if (contactReload) {
this.dataList = [];
this.pageObj = {
pageSize: 10,
pageIndex: 1,
isOver: false,
};
this.handleGetListData();
uni.setStorageSync("contactReload", null);
}
},
methods: {
// 查看详情
handleGoDetail(obj) {
console.log("obj", obj);
uni.navigateTo({
url: `/pages/contact/addContact?id=${obj.SUGGESTION_ID}&addType=${obj.WECHAT_OPENID}&serviceID=${obj.SERVERPART_ID}`,
});
},
// 回车查询调用的方法
handleEntrySearch() {
console.log("handleEntrySearch");
this.dataList = [];
this.pageObj = {
pageIndex: 1,
pageSize: 10,
isOver: false,
};
this.handleGetListData();
},
// 改变查询的类型
handleChangeType(value) {
this.fintType = value;
this.$forceUpdate();
this.dataList = [];
this.pageObj = {
pageSize: 10,
pageIndex: 1,
isOver: false,
};
this.handleGetListData();
},
// 下拉刷新
async handleRefresh(e) {
this.triggered = true;
this.dataList = [];
this.pageObj = {
pageIndex: 1,
pageSize: 10,
isOver: false,
};
await this.handleGetListData();
this.triggered = false;
},
// 滚动到底部
handleScrollBottom() {
this.pageObj.pageIndex += 1;
if (!this.pageObj.isOver) {
this.handleGetListData();
}
},
// 查看全部
handleSearchAll() {
this.inSearchAll = !this.inSearchAll;
this.dataList = [];
this.pageObj = {
pageIndex: 1,
pageSize: 10,
isOver: false,
};
this.handleGetListData();
},
// 返回上一级
handleBack() {
uni.navigateBack({
delta: 1,
});
},
// 跳转去添加失物的页面
handleGoAdd() {
// this.goAdd = true;
uni.navigateTo({
url: `/pages/contact/addContact?addType=${this.fintType}`,
});
},
// 跳转到地图选择服务区
goSelectServer() {
uni.navigateTo({ url: "/pages/newMap/index/index" });
},
showFilter() {
this.isShow = true;
this.$refs.popup.open("bottom");
},
handleClosePopup() {
this.$refs.popup.close();
this.isShow = false;
},
// 拿到类型枚举
async handleGetTypeList() {
const data = await this.$api.$get(
"/EShangApiMain/FrameWork/GetFieldEnumTree",
{ FieldExplainField: "business_target" }
);
let list = this.$utils.wrapTreeNode(data.Result_Data.List);
let res = [];
if (list && list.length > 0) {
list.forEach((item) => {
if (item.value === 6000) {
res = item.children;
}
});
}
res.unshift({ label: "全部", value: 6000 });
console.log("handleGetTypeList", res);
this.leftTypeList = res;
},
// 左侧类型的选择
handleSelectType(index, itemValue) {
this.leftSelectIndex = index;
this.scrollTop = "shop" + itemValue;
},
// 右侧的选择事件 会改变左侧的选中效果
handleChangeRightSelect(leftIndex, rightValue) {
if (this.rightSelectValue === rightValue) {
this.leftSelectIndex = 0;
this.rightSelectValue = 0;
} else {
this.leftSelectIndex = leftIndex;
this.rightSelectValue = rightValue;
}
},
// 点击悬浮框里面的确定
handleClickConfirm() {
this.handleClosePopup();
this.handleGetListData();
},
// 拿到失物招领的数据 只要最近三个月的数据
async handleGetListData() {
const req = {
SearchParameter: {
SUGGESTION_TYPES: 4000,
SERVERPART_IDS: this.inSearchAll
? ""
: this.nowServiceObj.SERVERPART_ID || "",
SUGGESTION_STATES: 1,
ENUM_LABEL: this.rightSelectValue || "",
WECHAT_OPENID: this.fintType,
SUGGESTION_CREATEDATE_Start: this.$moment
.now()
.set("month", -3)
.format("YYYY-MM-DD"),
SUGGESTION_CREATEDATE_End: this.$moment.now().format("YYYY-MM-DD"),
},
SortStr: "SUGGESTION_CREATEDATE desc",
PageSize: this.pageObj.pageSize,
PageIndex: this.pageObj.pageIndex,
keyWord: {
Key: "SUGGESTION_TITLE",
value: this.searchText,
},
// PageIndex: 1,
// PageSize: 999999,
};
const data = await this.$api.$post(
"/EShangApiMain/SiteManage/GetSUGGESTIONList",
req
);
console.log("data", data);
let oldList = [];
if (this.dataList && this.dataList.length > 0) {
oldList = JSON.parse(JSON.stringify(this.dataList));
}
let list = data.Result_Data.List;
if (list && list.length > 0) {
if (list.length < this.pageObj.pageSize) {
this.pageObj.isOver = true;
}
list.forEach((item) => {
if (this.searchText) {
let obj = this.extractParts(item.SUGGESTION_TITLE, this.searchText);
item.beforeOtherName = obj.beforeKeyword || "";
item.lightName = obj.keyword || "";
item.afterOtherName = obj.afterKeyword || "";
} else {
item.beforeOtherName = item.SUGGESTION_TITLE;
}
});
} else {
this.pageObj.isOver = true;
}
this.dataList = oldList.concat(list);
},
// 截取关键字前后 关键字的方法
extractParts(str, keyword) {
const keywordIndex = str.indexOf(keyword);
if (keywordIndex === -1) {
return null; // 如果找不到关键字,则返回 null
}
// 截取关键字前的内容
const beforeKeyword = str.substring(0, keywordIndex);
// 截取关键字后的内容
const afterKeyword = str.substring(keywordIndex + keyword.length);
// 返回结果对象
return {
keyword: keyword,
beforeKeyword: beforeKeyword,
afterKeyword: afterKeyword,
};
},
// 出现搜索按钮
clickSearch() {
this.showSearchBtn = true;
},
// 关闭搜索按钮
noClickSearch() {
this.showSearchBtn = false;
},
// 调起打电话
handleCallPhone(obj) {
uni.makePhoneCall({
phoneNumber: obj.PHONE_NUMBER, //仅为示例
});
},
},
};
</script>
<style scoped lang="less">
.main {
width: 100%;
height: 100vh;
background: #fff;
.top {
width: 100%;
box-sizing: border-box;
background: #fff;
.topContent {
display: flex;
align-items: center;
box-sizing: border-box;
padding: 0 16px;
.backIcon {
width: 48rpx;
height: 48rpx;
margin-right: 8px;
}
.first {
display: flex;
align-items: center;
box-sizing: border-box;
border: 1rpx solid #e7e7e6;
border-radius: 48rpx;
padding: 12rpx 24rpx;
.addressIcon {
width: 24rpx;
height: 24rpx;
margin-right: 8rpx;
}
.text {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #090c1a;
line-height: 40rpx;
text-align: justify;
font-style: normal;
}
.moreIcon {
margin-left: 8rpx;
width: 24rpx;
height: 24rpx;
}
}
.searchAll {
width: 120rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 24rpx;
color: #090c1a;
line-height: 40rpx;
text-align: justify;
font-style: normal;
margin-left: 8rpx;
text-align: center;
}
.inSearchAll {
width: 120rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 24rpx;
color: #fff;
line-height: 40rpx;
text-align: justify;
font-style: normal;
margin-left: 8rpx;
background: #ba922f;
text-align: center;
border-radius: 8rpx;
}
}
}
.tabBox {
width: 100%;
height: 60rpx;
display: flex;
align-items: center;
margin-top: 16rpx;
border-bottom: 1px solid #f6f6f6;
.tabItem {
width: 50%;
height: 100%;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #716f69;
line-height: 40rpx;
text-align: center;
font-style: normal;
}
.active {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #130f05;
line-height: 40rpx;
text-align: center;
font-style: normal;
position: relative;
}
.active:after {
content: "";
width: 2rem;
height: 6rpx;
background: #ba922f;
position: absolute;
left: 50%;
bottom: 6rpx;
transform: translateX(-50%);
}
}
.headerBox {
height: 104rpx;
box-sizing: border-box;
padding: 24rpx 32rpx 0;
background: #fff;
display: flex;
align-items: center;
justify-content: space-between;
.searchBox {
width: 100%;
// width: calc(100% - 104rpx);
height: 80rpx;
background: #f5f6f7;
border-radius: 8rpx;
box-sizing: border-box;
padding: 16rpx 20rpx;
display: flex;
align-items: center;
.searchIcon {
width: 32rpx;
height: 32rpx;
margin-right: 8rpx;
}
.inputBox {
width: 100%;
// width: calc(100% - 160rpx);
}
.searchText {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #9fa1aa;
line-height: 40rpx;
text-align: left;
font-style: normal;
margin-left: 8rpx;
}
}
.searchBtn {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #130f05;
line-height: 44rpx;
text-align: left;
font-style: normal;
}
.filterBox {
width: 80rpx;
height: 80rpx;
background: #f5f6f7;
border-radius: 8rpx;
display: flex;
align-items: center;
justify-content: center;
.filterIcon {
width: 32rpx;
height: 32rpx;
}
}
}
.newSelectBox {
width: 100%;
box-sizing: border-box;
padding: 24rpx 32rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
.leftBox {
max-width: 70%;
display: flex;
align-items: center;
.first {
display: flex;
align-items: center;
.addressIcon {
width: 24rpx;
height: 24rpx;
margin-right: 8rpx;
}
.text {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 30rpx;
color: #090c1a;
line-height: 36rpx;
text-align: justify;
font-style: normal;
}
.moreIcon {
margin-left: 8rpx;
width: 24rpx;
height: 24rpx;
}
}
.searchAll {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 30rpx;
color: #090c1a;
line-height: 36rpx;
text-align: justify;
font-style: normal;
margin-left: 8rpx;
text-align: center;
padding: 4rpx 16rpx;
}
.inSearchAll {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 30rpx;
color: #fff;
line-height: 36rpx;
text-align: justify;
font-style: normal;
margin-left: 8rpx;
background: #ba922f;
text-align: center;
border-radius: 8rpx;
padding: 4rpx 16rpx;
}
}
.tabBoxNew {
border: 2rpx solid #ba922f;
border-radius: 8rpx;
.tabItemNew {
display: inline-block;
padding: 4rpx 16rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 30rpx;
color: #ba922f;
line-height: 36rpx;
text-align: center;
font-style: normal;
}
.activeNew {
background: #ba922f;
color: #fff;
}
}
}
.pageList {
width: 100%;
// height: calc(100vh - 200rpx);
box-sizing: border-box;
padding: 0 32rpx;
margin-top: 24rpx;
.pageTitle {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 32rpx;
color: #130f05;
line-height: 44rpx;
text-align: left;
font-style: normal;
margin-bottom: 24rpx;
}
.listBox {
width: 100%;
// height: calc(100% - 80rpx);
overflow-y: auto;
.shopItem {
width: 100%;
margin-bottom: 24rpx;
background: #ffffff;
border-radius: 6rpx;
border: 2rpx solid #f5f6f7;
box-sizing: border-box;
padding: 24rpx;
position: relative;
display: flex;
align-items: flex-start;
.leftImgNew {
width: 200rpx;
height: 200rpx;
border-radius: 8rpx;
overflow: hidden;
margin-right: 16rpx;
.img {
width: 100%;
height: 100%;
}
}
.rightItem {
width: calc(100% - 200rpx);
// height: 200rpx;
display: flex;
flex-direction: column;
justify-content: space-between;
.title {
width: 100%;
font-family: "PingFangSC";
font-weight: 400;
font-size: 30rpx;
color: #130f05;
line-height: 36rpx;
text-align: left;
font-style: normal;
display: -webkit-box;
-webkit-line-clamp: 2; /* 设置显示的行数 */
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
.type {
font-size: 30rpx;
color: #d57a35;
margin-right: 12rpx;
}
.normal {
font-family: "PingFangSC";
font-weight: 400;
font-size: 30rpx;
color: #130f05;
line-height: 44rpx;
text-align: left;
font-style: normal;
}
.light {
font-family: "PingFangSC";
font-weight: 400;
font-size: 30rpx;
color: #ba922f;
line-height: 44rpx;
text-align: left;
font-style: normal;
}
}
.timeBox,
.placeBox,
.phone {
width: 100%;
font-family: "PingFangSC";
font-weight: 400;
font-size: 26rpx;
color: #716f69;
line-height: 38rpx;
text-align: left;
font-style: normal;
.label {
font-family: "PingFangSC";
font-weight: 400;
font-size: 26rpx;
color: #716f69;
line-height: 38rpx;
text-align: left;
font-style: normal;
margin-right: 12rpx;
width: 150rpx;
display: inline-block;
}
}
}
.title {
width: calc(100% - 72rpx);
// text-overflow: ellipsis;
// overflow: hidden;
// white-space: nowrap;
display: -webkit-box; /* 使用弹性盒模型 */
-webkit-box-orient: vertical; /* 垂直排列 */
overflow: hidden; /* 超出部分隐藏 */
-webkit-line-clamp: 6; /* 限制最多显示多少行文本 */
text-overflow: ellipsis; /* 超出部分用省略号显示 */
.normal {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 32rpx;
color: #130f05;
line-height: 44rpx;
text-align: left;
font-style: normal;
}
.light {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 32rpx;
color: #ba922f;
line-height: 44rpx;
text-align: left;
font-style: normal;
}
}
.timeBox {
margin-top: 8rpx;
display: flex;
align-items: center;
.timeIcon {
width: 24rpx;
height: 24rpx;
margin-right: 8rpx;
}
.timeText {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 24rpx;
color: #716f69;
line-height: 36rpx;
text-align: left;
font-style: normal;
}
}
.phoneBox {
margin-top: 4rpx;
display: flex;
align-items: center;
.phoneIcon {
width: 24rpx;
height: 24rpx;
margin-right: 8rpx;
}
.phoneText {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 24rpx;
color: #716f69;
line-height: 36rpx;
text-align: left;
font-style: normal;
}
}
.callPhoneBox {
position: absolute;
right: 24rpx;
top: 24rpx;
width: 64rpx;
height: 64rpx;
background: #f5f6f7;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
.callPhoneIcon {
width: 32rpx;
height: 32rpx;
}
}
}
.inBottom {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.bottomText {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 26rpx;
color: #d0d0d0;
line-height: 40rpx;
text-align: justify;
font-style: normal;
position: relative;
padding: 6rpx 0;
}
.bottomText::after {
content: "";
width: 30vw;
height: 2rpx;
background: #e0e0e0;
position: absolute;
left: -32vw;
top: 50%;
}
.bottomText::before {
content: "";
width: 30vw;
height: 2rpx;
background: #e0e0e0;
position: absolute;
right: -32vw;
top: 50%;
}
}
}
.listBox ::-webkit-scrollbar {
display: none;
}
}
.addNewPost {
width: calc(100% - 80rpx);
margin-left: 40rpx;
background: #ba922f;
border-radius: 6rpx;
display: flex;
align-items: center;
box-sizing: border-box;
justify-content: center;
.newPostBox {
display: inline-block;
padding: 16rpx 24rpx;
border-radius: 36rpx;
background: #ba922f;
.addIcon {
width: 28rpx;
height: 28rpx;
margin-right: 8rpx;
}
.addText {
font-family: "PingFangSC";
font-weight: 400;
font-size: 32rpx;
color: #ffffff;
line-height: 44rpx;
text-align: center;
font-style: normal;
}
}
}
.popupBox {
width: 100vw;
height: 80vh;
background: #fff;
.popupTitle {
width: 100%;
box-sizing: border-box;
padding: 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
.closeIcon {
width: 32rpx;
height: 32rpx;
}
.titleText {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 32rpx;
color: #130f05;
line-height: 44rpx;
text-align: left;
font-style: normal;
}
}
.popupList {
width: 100%;
height: calc(100% - 250rpx);
display: flex;
align-items: center;
.popupLeftBox {
width: 200rpx;
height: 100%;
background: #f5f6f7;
overflow-y: auto;
.itemType {
width: 100%;
box-sizing: border-box;
padding: 24rpx 0;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #130f05;
line-height: 40rpx;
text-align: center;
font-style: normal;
}
.selectType {
color: #ba922f;
background: #fff;
}
}
.popupRightBox {
width: calc(100% - 200rpx);
height: 100%;
background: #fff;
box-sizing: border-box;
padding: 0 50rpx 0 32rpx;
overflow-y: auto;
.rightItem {
width: 100%;
margin-bottom: 24rpx;
.itemTitle {
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #130f05;
line-height: 40rpx;
text-align: left;
font-style: normal;
margin-bottom: 16rpx;
}
.rightTypeList {
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
.rightType {
display: block;
width: calc((100% - 48rpx) / 3);
height: 64rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #716f69;
line-height: 40rpx;
font-style: normal;
background: #f5f6f7;
border-radius: 4rpx;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 16rpx;
margin-right: 16rpx;
}
.selectRightType {
color: #ffffff;
background: #ba922f;
}
}
}
}
.popupLeftBox::-webkit-scrollbar {
display: none;
}
.popupRightBox::-webkit-scrollbar {
display: none;
}
}
.btnBox {
width: 100%;
box-sizing: border-box;
padding: 16rpx 40rpx;
.btn {
width: 100%;
background: #ba922f;
border-radius: 6rpx;
text-align: center;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
font-size: 32rpx;
color: #ffffff;
line-height: 44rpx;
text-align: center;
font-style: normal;
padding: 22rpx 0;
}
}
}
}
</style>