27 Commits

Author SHA1 Message Date
5552b48ec4 story#6462,二手车,下架状态不展示想要按钮 2025-05-22 19:26:23 +08:00
56e56c7839 story#6462,筛选项问题 2025-05-22 11:55:08 +08:00
851a0e7260 story#6462,二手拖车信息需求 2025-05-22 11:43:06 +08:00
d2f124e901 story#6462,二手拖车信息需求 2025-05-22 10:58:35 +08:00
8bc734273b story#6462,二手拖车信息需求 2025-05-22 10:58:04 +08:00
643ee2c5eb story#6462,发布省市和日期去除clearable属性 2025-05-21 14:32:39 +08:00
881ae7e47b story#6462,发布日期清除事件和图标 2025-05-21 14:27:14 +08:00
d5af7692f8 story#6462,自定义清除事件和图标 2025-05-21 14:21:34 +08:00
aa52bd2f31 story#6462,自定义清除事件和图标 2025-05-21 14:17:35 +08:00
9df87ac518 story#6462,阻止输入框默认行为 2025-05-21 14:10:45 +08:00
8e20adbba3 story#6462,阻止输入框默认行为 2025-05-21 14:02:32 +08:00
cc083b7551 story#6462,阻止输入框默认行为 2025-05-21 14:00:04 +08:00
0a668e6f57 story#6462,阻止输入框默认行为 2025-05-21 13:55:09 +08:00
c2cc09aef1 story#6462,省市选择弹出框不要× 2025-05-21 13:48:33 +08:00
037fbf74fb story#6462,筛选输入框设置只读 2025-05-21 13:18:00 +08:00
de252fceb2 story#6462,列表添加发布省市和发布时间筛选项 2025-05-21 10:55:16 +08:00
6a53749cdc 样式调整 2025-05-08 14:07:38 +08:00
d71e3679ef 添加展示测试 2025-05-08 13:41:38 +08:00
c626aab606 添加展示 2025-05-08 13:06:42 +08:00
7594e56cda story#5360,web端拨打电话的确定事件弹框消失 2025-04-21 09:34:47 +08:00
95c8095518 story#5314 图片变形 2025-04-17 14:06:45 +08:00
0aa3630adb story#5360,web端拨打电话改为确定 2025-04-16 16:48:38 +08:00
75eba22e9e story#5360,将所有露出的“二手车”字样,全部改为“二手拖车”字样 2025-04-16 16:42:30 +08:00
a162c3fdcc story#5314 底部图片修改 2025-04-14 09:26:58 +08:00
33f4857427 story#5314 banner图样式3 2025-04-11 18:51:42 +08:00
432f35a403 story#5314 banner图样式2 2025-04-11 18:45:05 +08:00
ae0bd3b169 story#5314 banner图样式 2025-04-11 18:39:37 +08:00
8 changed files with 247 additions and 77 deletions

View File

@ -44,10 +44,10 @@
<body>
<div class="container">
<h3>声明</h3>
<p>本平台为二手车买卖双方提供免费信息发布服务。在您使用本平台之前,请仔细阅读并理解本免责声明。一旦使用本平台,即视为您已阅读、理解并同意接受本免责声明的所有条款。</p>
<p>本平台为二手车买卖双方提供免费信息发布服务。在您使用本平台之前,请仔细阅读并理解本免责声明。一旦使用本平台,即视为您已阅读、理解并同意接受本免责声明的所有条款。</p>
<h4>一、平台性质</h4>
<p>1. 本平台仅为信息发布平台,不参与任何二手车交易环节,包括但不限于交易洽谈、合同签订、款项支付、车辆交付等,实际交易价格由买卖双方自行协商确定。</p>
<p>1. 本平台仅为信息发布平台,不参与任何二手车交易环节,包括但不限于交易洽谈、合同签订、款项支付、车辆交付等,实际交易价格由买卖双方自行协商确定。</p>
<p>2. 本平台不对发布信息的真实性、准确性、完整性、合法性进行任何形式的担保或保证,用户应自行判断信息的真实性并承担由此产生的风险。</p>
<h4>二、用户责任</h4>

View File

@ -54,14 +54,14 @@ export function userFeedback(data){
data
})
}
//二手车信息擦亮
//二手车信息擦亮
export function usedCarPolish(data){
return request({
url: `/toc-user/car-app/usedCarPolish/${data}`,
method:'POST',
})
}
//二手车信息下架
//二手车信息下架
export function usedCarRemove(data){
return request({
url: '/toc-user/car-app/usedCarRemove',
@ -70,7 +70,7 @@ export function usedCarRemove(data){
data
})
}
//二手车信息重新上架
//二手车信息重新上架
export function usedCarReShelf(data){
return request({
url: `/toc-user/car-app/usedCarReShelf/${data}`,

View File

@ -143,7 +143,7 @@
<img v-show="radio==1" @click="radio=0" class="radioIcon" src="@/assets/secondHandCar/checked.png" />
<img v-show="radio==0" @click="radio=1" class="radioIcon" src="@/assets/secondHandCar/uncheck.png" />
<span>我已阅读并同意</span>
<span @click="viewPrivacy">二手车交易条款</span>
<span @click="viewPrivacy">二手车交易条款</span>
</div>
<div class="btnWrap" >
<div v-if="type==1" class="btn commonBtn" @click="noMultipleClicks(submitHandle)">发布</div>

View File

@ -40,10 +40,13 @@
<div class="time">
<span>{{ detailInfo.createTime?.substring(0,10) }}</span><span>{{ detailInfo.areaName }}</span><span>发布</span>
</div>
<div class="price">
售价含税
<span>{{ formatNumber(detailInfo.minPrice) }}</span>
<span></span>
<div class="priceWrap">
<div class="price">
售价含税
<span>{{ formatNumber(detailInfo.minPrice) }}</span>
<span></span>
</div>
<div class="viewNum">{{detailInfo.attentionCount}}人想要<span>{{detailInfo.browseCount}}浏览</span></div>
</div>
</div>
<div class="detailInfoWrap wrapCommon">
@ -77,14 +80,24 @@
<span>排放标准</span>
</div>
<div class="suGang"></div>
<div class="itemInfo">
<span>{{ detailInfo.brakeSystem == 2 ? '油刹' : '汽刹' }}</span>
<span>刹车系统</span>
</div>
</div>
<div class="descItem descCommon">
<div class="itemInfo">
<span>{{ detailInfo.underpanBrand }}</span>
<span>底盘品牌</span>
</div>
<div class="suGang"></div>
<div class="itemInfo">
<el-tooltip class="item" effect="dark" :content="formatToWan(detailInfo.mileage)+'公里'" placement="top">
<span style="display: inline-block;width:100%;cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">{{ formatToWan(detailInfo.mileage)}}公里</span>
</el-tooltip>
<span>行驶公里</span>
</div>
</div>
<div class="descItem descCommon">
<div class="suGang"></div>
<div class="itemInfo dateItemInfo">
<span>{{ detailInfo.registerDate?.substring(0,10) }}</span>
<span>注册日期</span>
@ -96,7 +109,7 @@
<div class="descCommon desc">{{detailInfo.desc}}</div>
</div>
<div class="btnWrap" >
<div v-if="isList && !detailInfo.selfSupplierPublish" class="btn commonBtn" @click="noMultipleClicks(handle)">我想要</div>
<div v-if="isList && !detailInfo.selfSupplierPublish && detailInfo.status.code !== 6" class="btn commonBtn" @click="noMultipleClicks(handle)">我想要</div>
</div>
</div>
</div>
@ -190,10 +203,12 @@ export default {
this.getDuration(2)
Dialog.alert({
message:this.detailInfo.contactNumber ,
confirmButtonText:'拨打电话',
confirmButtonText:this.isWebFunc() ? '确定' : '拨打电话',
showCancelButton:true,
}).then(async() => {
window.location.href = `tel:${this.detailInfo.contactNumber}`;
if(!this.isWebFunc()){
window.location.href = `tel:${this.detailInfo.contactNumber}`;
}
}).catch(() => {
// on cancel
});
@ -280,6 +295,18 @@ export default {
margin-left: 10px;
}
}
.priceWrap{
display: flex;
justify-content: space-between;
align-items: center;
.viewNum{
color: #ccc;
margin-right: 15px;
span{
margin-left: 10px;
}
}
}
.price{
color: #FF5533;
line-height: 28px;
@ -320,6 +347,7 @@ export default {
display: flex;
flex-direction: column;
width: 23%;
flex: 1;
span:first-child{
font-weight: bold;
font-size: 14px;
@ -339,6 +367,7 @@ export default {
height: 8px;
border-right: 1px solid #999999;
opacity: 0.5;
margin-right: 30px;
}
.desc{
font-weight: 400;
@ -387,6 +416,10 @@ export default {
}
::v-deep .el-carousel__button {
height: 0.15rem !important;
width: 0.3rem;
}
::v-deep .el-carousel__indicators--horizontal {
padding: 0.32rem 0.08rem;
}
::v-deep .el-carousel__arrow {
background-color: rgba(31, 45, 61, 1);
@ -395,4 +428,8 @@ export default {
::v-deep .el-carousel__indicators--horizontal {
bottom: 10px;
}
::v-deep .el-image__inner {
object-fit: cover;
object-position: center;
}
</style>

View File

@ -2,7 +2,7 @@
<div class="wrap">
<div class="navBar">
<van-nav-bar
title="二手车信息"
title="二手车信息"
left-arrow
left-arrow-color="#FFFFFF"
:border="false"
@ -81,6 +81,24 @@
:value="item.value">
</el-option>
</el-select>
<el-input readonly @focus="areaShow = true" v-model="areaName" placeholder="请选择发布省市" :class="{'customSel':true,'customInput':true , 'has-value': areaName }" >
<template #suffix>
<i
v-if="areaName"
class="el-icon-circle-close el-input__icon"
@click="areaName = ''"
></i>
</template>
</el-input>
<el-input readonly @focus="showDatePicker = true" v-model="dateVal" placeholder="请选择发布日期" :class="{'customSel':true,'customInput':true , 'has-value': dateVal }" >
<template #suffix>
<i
v-if="dateVal"
class="el-icon-circle-close el-input__icon"
@click="dateVal = ''"
></i>
</template>
</el-input>
</div>
<div class="contentWrap" v-show="!show">
<van-pull-refresh v-model="isLoading" @refresh="onRefresh" style="min-height:85vh">
@ -104,12 +122,20 @@
{{ item.brandModel?.match(/^[\u4e00-\u9fa5]+/)?.[0]?.replace(/$/, '') }} | {{item.emissionStandard?.label}} | {{ formatToWan(item.mileage) }}公里</div>
<div v-else class="type">{{ item.boardType?.label ? item.boardType?.label+' | ' : ''}} {{item.emissionStandard?.label}}</div>
<div class="date" v-show="activeTab==0 && item.registerDate">注册日期 {{item.registerDate?.substring(0,10)}}</div>
<div v-if="activeTab==0" class="price">售价含税<span></span> <span>{{formatNumber(item.minPrice) }}</span> <span></span> </div>
<div v-else class="priceRange">
售价含税
<span class="num">{{formatNumber(item.minPrice) }}</span> <span class="danwei"></span>
<span class="su">~</span>
<span class="num">{{formatNumber(item.maxPrice) }}</span> <span class="danwei"></span>
<div class="priceWrap" v-if="activeTab==0" >
<div class="price">
售价含税<span></span> <span>{{formatNumber(item.minPrice) }}</span> <span></span>
</div>
<div class="viewNum">{{item.attentionCount}}人想要<span>{{item.browseCount}}浏览</span></div>
</div>
<div v-else class="priceWrap">
<div class="priceRange">
售价含税
<span class="num">{{formatNumber(item.minPrice) }}</span> <span class="danwei"></span>
<span class="su">~</span>
<span class="num">{{formatNumber(item.maxPrice) }}</span> <span class="danwei"></span>
</div>
<div class="viewNum">{{item.attentionCount}}人想卖<span>{{item.browseCount}}浏览</span></div>
</div>
<div class="line"></div>
</div>
@ -134,20 +160,74 @@
</div>
</div>
</van-popup>
<van-calendar v-model="showDatePicker" :min-date="minDate"
:max-date="maxDate" type="range" @confirm="onConfirm" />
<van-popup
v-model="areaShow"
position="bottom"
>
<van-area title="标题" :area-list="areaList" :columns-num="2" closeable="true" :value="areaCode ? String(areaCode) : ''"
@cancel="areaShow = false" @confirm="confirmHandle"/>
</van-popup>
</div>
</template>
<script>
import {myMixins} from "@/utils/myMixins"
import {appPageList,userFeedback } from "@/api/secondHandCar"
import {areaList} from "@vant/area-data";
export default {
name: "indexList",
mixins:[myMixins],
data(){
return{
areaList: areaList,
pageList:[],
topSearch:'',
activeTab:0,
isLoading:"",
loading: false,
finished: false,
pageNum:1,
pageSize:10,
total:'',
licenseType:'',
vehicleType:'',
priceSort:'',
emissionStandard:'',
boardType:'',
proprietary: '',
areaCode:'',
areaName:'',
startTime:'',
endTime:'',
licenseTypeOption:[
{value:2,label:'黄牌'},{value:3,label:'绿牌'},{value:1,label:'蓝牌'},
],
vehicleTypeOption:[
{value:1,label:'拖车'},{value:2,label:'地库车'},{value:3,label:'牵引车'},{value:4,label:'随车吊'},{value:5,label:'其他'},
],
priceOption:[
{value:1,label:'5~6'},{value:2,label:'7~8'},{value:3,label:'8~9'}
],
emissionStandardOption:[
{value:1,label:'不限'},{value:3,label:'国三'},{value:4,label:'国四'},{value:5,label:'国五'},{value:6,label:'国六'}
],
boardTypeOption:[
{value:1,label:'全落地'},{value:2,label:'斜落一体'},{value:3,label:'普通斜板'},{value:9,label:'不限'}
],
proprietaryOption: [{value: 1, label: '中道自营'}, {value: 0, label: '服务商发布'}],
poupShow:false,
suggestContent:'',
dateVal: '',
showDatePicker: false,
areaShow:false,
isClearing:false,
minDate: new Date(1970, 0, 1), // 设置最小可选日期1970年1月1日
maxDate: new Date(2099, 11, 31) // 设置最大可选日期2099年12月31日
}
},
watch:{
/* topSearch(){
this.setSearchVal();
this.getList()
},*/
licenseType(){
this.setSearchVal();
this.getList()
@ -167,44 +247,26 @@ export default {
proprietary() {
this.setSearchVal();
this.getList()
}
},
data(){
return{
pageList:[],
topSearch:'',
activeTab:0,
isLoading:"",
loading: false,
finished: false,
pageNum:1,
pageSize:10,
total:'',
licenseType:'',
vehicleType:'',
priceSort:'',
emissionStandard:'',
boardType:'',
proprietary: '',
licenseTypeOption:[
{value:2,label:'黄牌'},{value:3,label:'绿牌'},{value:1,label:'蓝牌'},
],
vehicleTypeOption:[
{value:1,label:'拖车'},{value:2,label:'地库车'},{value:3,label:'牵引车'},{value:4,label:'随车吊'},{value:5,label:'其他'},
],
priceOption:[
{value:1,label:'5~6'},{value:2,label:'7~8'},{value:3,label:'8~9'}
],
emissionStandardOption:[
{value:1,label:'不限'},{value:3,label:'国三'},{value:4,label:'国四'},{value:5,label:'国五'},{value:6,label:'国六'}
],
boardTypeOption:[
{value:1,label:'全落地'},{value:2,label:'斜落一体'},{value:3,label:'普通斜板'},{value:9,label:'不限'}
],
proprietaryOption: [{value: 1, label: '中道自营'}, {value: 0, label: '服务商发布'}],
poupShow:false,
suggestContent:'',
}
},
areaName() {
if (!this.areaName){
this.areaCode=''
}
this.setSearchVal();
this.getList()
},
dateVal(val){
if(val){
let res= this.formatDateTimeRange(val)
this.startTime=res.startTime
this.endTime=res.endTime
}else{
this.startTime=''
this.endTime=''
}
this.setSearchVal();
this.getList()
},
},
mounted() {
this.getSearchVal();
@ -214,12 +276,29 @@ export default {
if (state == 'hidden') { // 用户离开了
}
if (state == 'visible') {
console.log('visible')
// console.log('visible')
}
});
},
methods:{
confirmHandle(val){
if(val[0].name.includes('市')){
this.areaName=val[0].name
this.areaCode=val[0].code
}else{
this.areaName=val[0].name +val[1].name
this.areaCode=val[1].code
}
this.areaShow=false
},
formatDate(date) {
return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
},
onConfirm(date) {
const [start, end] = date;
this.showDatePicker = false;
this.dateVal = `${this.formatDate(start)} - ${this.formatDate(end)}`;
},
formatToWan(num) {
let result = (num / 10000).toString();
if (result.includes('.')) {
@ -272,6 +351,9 @@ export default {
sessionStorage.setItem('emissionStandard',String(this.emissionStandard));
sessionStorage.setItem('boardType',String(this.boardType));
sessionStorage.setItem('proprietary',String(this.proprietary));
sessionStorage.setItem('areaCode',String(this.areaCode));
sessionStorage.setItem('areaName',this.areaName);
sessionStorage.setItem('dateVal',this.dateVal);
},
getSearchVal(){
this.activeTab = Number(sessionStorage.getItem('indexActiveTab')) || 0;
@ -282,6 +364,9 @@ export default {
this.emissionStandard = Number(sessionStorage.getItem('emissionStandard')) || '';
this.boardType = Number(sessionStorage.getItem('boardType')) || '';
this.proprietary = Number(sessionStorage.getItem('proprietary')) || '';
this.areaCode=Number(sessionStorage.getItem('areaCode')) || '';
this.areaName=sessionStorage.getItem('areaName') || '';
this.dateVal=sessionStorage.getItem('dateVal') || '';
},
goMine(){//我的发布
this.$router.push({ name: "mineRelease"})
@ -339,7 +424,10 @@ export default {
priceSort:this.priceSort,
boardType:this.boardType,
emissionStandard:this.emissionStandard,
proprietary: this.proprietary
proprietary: this.proprietary,
areaCode:this.areaCode,
startTime:this.startTime,
endTime:this.endTime,
})
this.total=res.total
if(this.pageNum == 1){// 第一页直接赋值
@ -360,7 +448,18 @@ export default {
window.android.sendMessage("goBack");
}
},
},
formatDateTimeRange(str) {
const [startStr, endStr] = str.split(' - ').map(s => s.trim());
const startDate = new Date(startStr);
const startTime = `${startDate.getFullYear()}-${(startDate.getMonth() + 1).toString().padStart(2, '0')}-${startDate.getDate().toString().padStart(2, '0')} 00:00:00`;
const endDate = new Date(endStr);
const endTime = `${endDate.getFullYear()}-${(endDate.getMonth() + 1).toString().padStart(2, '0')}-${endDate.getDate().toString().padStart(2, '0')} 23:59:59`;
return {
startTime,
endTime
};
},
},
computed:{
show() {
return (this.pageList.length < 0 || this.pageList.length == 0); // 判断数组长度是否大于 0
@ -382,7 +481,7 @@ export default {
.fixImg{
width: 210px;
height: 102px;
position: absolute;
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
@ -489,6 +588,9 @@ export default {
right: 2px;
}
}
.customInput{
width: 130px;
}
.has-value ::v-deep .el-input__inner{
background: #F1F6FF ;
color: #007BE9;
@ -612,6 +714,18 @@ export default {
line-height: 16px;
}
}
.priceWrap{
/* display: flex;
justify-content: space-between;
align-items: center;*/
.viewNum{
color: #ccc;
margin-right: 15px;
span{
margin-left: 10px;
}
}
}
.priceRange{
color: #FF5533;
display: flex;

View File

@ -329,6 +329,8 @@ export default {
height: 77px;
border-radius: 7px;
margin-right: 10px;
object-fit: cover;
object-position: center;
}
.smallImg{
position: absolute;

View File

@ -93,7 +93,7 @@
<img v-show="radio==1" @click="radio=0" class="radioIcon" src="@/assets/secondHandCar/checked.png" />
<img v-show="radio==0" @click="radio=1" class="radioIcon" src="@/assets/secondHandCar/uncheck.png" />
<span>我已阅读并同意</span>
<span @click="viewPrivacy">二手车交易条款</span>
<span @click="viewPrivacy">二手车交易条款</span>
</div>
<div class="btnWrap" >
<div v-if="type==1" class="btn commonBtn" @click="noMultipleClicks(submitHandle)">发布</div>

View File

@ -14,11 +14,14 @@
<div class="time">
<span>{{ detailInfo.createTime?.substring(0,10) }}</span><span>发布</span>
</div>
<div class="price">
售价含税
<span class="num">{{formatNumber(detailInfo.minPrice) }}</span> <span class="danwei"></span>
<span class="su">~</span>
<span class="num">{{formatNumber(detailInfo.maxPrice) }}</span> <span class="danwei"></span>
<div class="priceWrap">
<div class="price">
售价含税
<span class="num">{{formatNumber(detailInfo.minPrice) }}</span> <span class="danwei"></span>
<span class="su">~</span>
<span class="num">{{formatNumber(detailInfo.maxPrice) }}</span> <span class="danwei"></span>
</div>
<div class="viewNum">{{detailInfo.attentionCount}}人想卖<span>{{detailInfo.browseCount}}浏览</span></div>
</div>
</div>
<div class="detailInfoWrap wrapCommon">
@ -107,10 +110,12 @@ export default {
this.getDuration(2)
Dialog.alert({
message:this.detailInfo.contactNumber ,
confirmButtonText:'拨打电话',
confirmButtonText:this.isWebFunc() ? '确定' : '拨打电话',
showCancelButton:true,
}).then(() => {
window.location.href = `tel:${this.detailInfo.contactNumber}`;
if(!this.isWebFunc()){
window.location.href = `tel:${this.detailInfo.contactNumber}`;
}
}).catch(() => {
// on cancel
});
@ -180,6 +185,18 @@ export default {
margin-right: 20px;
}
}
.priceWrap{
display: flex;
justify-content: space-between;
align-items: center;
.viewNum{
color: #ccc;
margin-right: 15px;
span{
margin-left: 10px;
}
}
}
.price{
color: #FF5533;
font-weight: 600;