Compare commits

..

No commits in common. "cb4e23669d49e80e56509cad9e573b2bc5a57c1b" and "2866332d274de0962c009ad99bf2bb4d971c861f" have entirely different histories.

73 changed files with 2748 additions and 8380 deletions

View File

@ -1,6 +1,4 @@
export const apiArr = { export const apiArr = {
isShowSearch: '/api/v1/wechat/home-page/search-enable/info', // 获取搜索框是否显示
hotWord: '/api/v1/wechat/home-page/search-hot-word/info', // 获取搜索框热词
list: '/api/v1/wechat/community/list', // 获取社区列表 list: '/api/v1/wechat/community/list', // 获取社区列表
info: '/api/v1/wechat/community/info', // 获取单个社区信息 info: '/api/v1/wechat/community/info', // 获取单个社区信息
isJoin: '/api/v1/wechat/community/is-join', // 用户是否加入社区、楼宇、房间 isJoin: '/api/v1/wechat/community/is-join', // 用户是否加入社区、楼宇、房间
@ -38,7 +36,6 @@ export const apiArr = {
commInfo: "/api/v2/wechat/mpuser-crud/community-owner/info",//我的房产信息小区列表 commInfo: "/api/v2/wechat/mpuser-crud/community-owner/info",//我的房产信息小区列表
create: "/api/v2/wechat/community-owners/create",//创建新的业主信息 create: "/api/v2/wechat/community-owners/create",//创建新的业主信息
communityInfo: "/api/v2/community/get-one",//获取小区信息
getOrderList:"/api/v2/wechat/community-orders/get-all-list",//获取账单 getOrderList:"/api/v2/wechat/community-orders/get-all-list",//获取账单
getCommunityRoomList:"/api/v2/wechat/community-room/list", //获取房源列表 getCommunityRoomList:"/api/v2/wechat/community-room/list", //获取房源列表

View File

@ -1,6 +1,5 @@
export const apiArr = { export const apiArr = {
getCateList: "/api/v2/wechat/merchant-cate-crud/list", //商家分类列表 getCateList: "/api/v2/wechat/merchant-cate-crud/list", //小区房源列表
getMerchantList: "/api/v2/wechat/merchant-info-crud/page", //商家列表
getHomeBanner: "/api/v2/wechat/home-banner-region-crud/page", //获取首页banner及其广告 getHomeBanner: "/api/v2/wechat/home-banner-region-crud/page", //获取首页banner及其广告
getButtonNum:"/api/v2/wechat/nav-display-crud/info",//获取首页button的行数 数量 getButtonNum:"/api/v2/wechat/nav-display-crud/info",//获取首页button的行数 数量
getHomeButton:"/api/v2/wechat/home-button-region-crud/page", //获取首页button getHomeButton:"/api/v2/wechat/home-button-region-crud/page", //获取首页button

View File

@ -2,7 +2,6 @@ export const apiArr = {
getMerChantCateList:"/api/v2/wechat/merchant-cate-crud/list", //商家分类 getMerChantCateList:"/api/v2/wechat/merchant-cate-crud/list", //商家分类
getMerchantList:"/api/v2/wechat/merchant-info-crud/page",//商家列表 getMerchantList:"/api/v2/wechat/merchant-info-crud/page",//商家列表
createComment:"/api/v2/wechat/merchant-evaluation-crud/creat",//创建用户评价 createComment:"/api/v2/wechat/merchant-evaluation-crud/creat",//创建用户评价
getMerchantInfo:"/api/v2/wechat/merchant-info-crud/info",//获取商家信息详情
getMerchantComment:"/api/v2/wechat/merchant-evaluation-crud/page",//获取商家评价 getMerchantComment:"/api/v2/wechat/merchant-evaluation-crud/page",//获取商家评价
merChantCommentLike:"/api/v2/wechat/merchant-evaluation-like-crud/creat",//点赞 merChantCommentLike:"/api/v2/wechat/merchant-evaluation-like-crud/creat",//点赞
merChantCommentUnlike:"/api/v2/wechat/merchant-evaluation-like-crud/del",//取消点赞 merChantCommentUnlike:"/api/v2/wechat/merchant-evaluation-like-crud/del",//取消点赞

View File

@ -1,3 +1,4 @@
.foot-fixed { .foot-fixed {
position: fixed; position: fixed;
bottom: -1px; bottom: -1px;
@ -7,17 +8,14 @@
width: 100%; width: 100%;
background: #ffffff; background: #ffffff;
border-top: 1px solid #E8E8E8; border-top: 1px solid #E8E8E8;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.1); box-shadow: 0 0 3px rgba(0,0,0,0.1);
} }
.foot-fixed .foot-item { .foot-fixed .foot-item {
padding: 0; padding: 0;
} }
.foot-fixed .foot-item { .foot-fixed .foot-item {
position: relative; position: relative;
} }
.foot-fixed .foot-item { .foot-fixed .foot-item {
width: 20%; width: 20%;
float: left; float: left;
@ -29,88 +27,48 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
a { a {
color: #666; color: #666;
text-decoration: none; text-decoration: none;
} }
a { a {
background: transparent; background: transparent;
} }
.foot-fixed .foot-item .foot-icon-box { .foot-fixed .foot-item .foot-icon-box{
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 66rpx; width: 66rpx;
height: 66rpx; height: 66rpx;
} }
.foot-fixed .foot-item .foot-icon { .foot-fixed .foot-item .foot-icon {
width: 47rpx; width: 47rpx;
margin: 0 auto; margin: 0 auto;
} }
.foot-fixed .foot-item .foot-icon2 { .foot-fixed .foot-item .foot-icon2 {
width: 66rpx; width: 66rpx;
height: 66rpx; height: 66rpx;
margin: 0 auto; margin: 0 auto;
} }
.foot-icon3{
width: 130rpx;
height: 130rpx;
border-radius: 50%;
}
.foot-fixed .foot-item .foot-label { .foot-fixed .foot-item .foot-label {
margin: 5px 0; margin: 5px 0;
} }
.foot-fixed .foot-item .foot-label { .foot-fixed .foot-item .foot-label {
height: 15px; height: 15px;
line-height: 15px; line-height: 15px;
font-size: 12px; font-size: 12px;
} }
.foot-fixed .foot-item span { .foot-fixed .foot-item span {
display: block; display: block;
width: 100%; width: 100%;
text-align: center; text-align: center;
} }
.foot-fixed .scan-item {
position: relative;
margin-top: -30rpx;
z-index: 1000;
}
.foot-fixed .scan-item .foot-icon-box {
width: 130rpx;
height: 130rpx;
background: #fff;
border-radius: 50%;
box-shadow: 0 0 20rpx rgba(255, 77, 79, 0.5);
display: flex;
align-items: center;
justify-content: center;
margin-bottom: -20rpx;
}
.foot-fixed .scan-item .foot-icon {
width: 130rpx;
height: 130rpx;
border-radius: 50%;
}
.foot-fixed .scan-item .foot-label {
margin-top: 10rpx;
color: #FF4D4F;
font-weight: bold;
}
/* 自定义导航栏 */ /* 自定义导航栏 */
.nav-box { .nav-box {

View File

@ -1,202 +1,141 @@
<template> <template>
<view class="foot-fixed"> <view class="foot-fixed">
<view v-for="(item, index) in navList" :key="index"> <view v-for="(item, index) in navList" :key='index'>
<view <view id="navIndex" :style="{width:foot_width}" @click="jump" :data-idx="index" :data-url="item.url"
id="navIndex" class="foot-item">
:style="{ width: foot_width }"
@click="jump"
:data-idx="index"
:data-url="item.url"
:class="{ 'foot-item': true, 'scan-item': item.isScan }"
>
<view class="foot-icon-box">
<image
class="foot-icon"
:src="item.photo"
mode="widthFix"
v-if="current != index"
:style="{
width: item.photo.includes('footer_localLife.png')
? '70rpx'
: '',
}"
></image>
<image
:class="{ 'foot-icon3': item.photo.includes('footer_richScan.png'), 'foot-icon2': !item.photo.includes('footer_richScan.png') }"
:src="item.photoAc"
mode="widthFix"
v-if="current == index"
></image>
</view>
<text class="foot-label" id="navIndexLabel">{{ item.nav_name }}</text> <view class="foot-icon-box">
</view> <image class="foot-icon" :src="item.photo" mode="widthFix" v-if="current != index"></image>
</view> <image class="foot-icon2" :src="item.photoAc" mode="widthFix" v-if="current == index"></image>
</view> </view>
<text class="foot-label" id="navIndexLabel">{{item.nav_name}}</text>
</view>
</view>
</view>
</template> </template>
<script> <script>
export default { export default {
name: "nav", name: "nav",
props: { props:{
current: { current:{
type: Number, type:Number,
default: 0, default: 0,
}, }
}, },
computed: { data() {
foot_width() { return {
// navList: [
return (100 / this.navList.length).toFixed(2) + '%'; {
} photo:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_home.png",
}, photoAc:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_homeAc.png",
data() { nav_name:"首页",
return { url:"/pages/index/index"
navList: [ },
{ {
photo: photo:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_community.png",
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_home.png", photoAc:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_communityAc.png",
photoAc: nav_name:"我的小区",
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_homeAc.png", url:"/packages/community/index/index"
nav_name: "智慧首页", },
url: "/pages/index/index", {
}, photo:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_shop.png",
{ photoAc:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_shopAc.png",
photo: nav_name:"优选商城",
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_facility.png", url:"/packages/shop/index/index"
photoAc: },
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_facilityAc.png", {
nav_name: "智能设备", photo:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_door.png",
url: "", photoAc:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_communityAc.png",
}, nav_name:"到家服务",
{ url:"/packages/homeServer/index/index"
photo: },
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_richScan.png", {
photoAc: photo:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_mine.png",
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_richScan.png", photoAc:"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_mineAc.png",
url: "", nav_name:"我的",
isScan: true, url:"/pages/user/index"
}, },
{ ],
photo: foot_width: '20%',
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_community.png", };
photoAc: },
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_communityAc.png", methods: {
nav_name: "我的小区", getFootnav() {
url: "/packages/community/index/index", let _that = this;
}, uni.request({
// { url: 'https://zhsq.hshuishang.com/Miniapi/Index/footer_nav_list',
// photo: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_localLife.png", method: 'post',
// photoAc: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_localLifeAc.png", header: {
// nav_name: "", 'Content-type': 'application/x-www-form-urlencoded'
// url: "/packages/localLife/index/index", },
// }, data: {},
// { dataType: 'json',
// photo: success: (result) => {
// "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_shop.png", result.data[0].url = "/pages/index/index"
// photoAc: result.data[1].url = "/pages/device/device"
// "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_shopAc.png", result.data[2].nav_name = "手机通行"
// nav_name: "", result.data[2].url = "/pages/phoneGo/phoneGo"
// url: "/packages/shop/index/index",
// },
// {
// photo:
// "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_door.png",
// photoAc:
// "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_communityAc.png",
// nav_name: "",
// url: "/packages/homeServer/index/index",
// },
{
photo:
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_mine.png",
photoAc:
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_mineAc.png",
nav_name: "个人中心",
url: "/pages/user/index",
},
],
}
},
methods: {
getFootnav() {
let _that = this;
uni.request({
url: "https://zhsq.hshuishang.com/Miniapi/Index/footer_nav_list",
method: "post",
header: {
"Content-type": "application/x-www-form-urlencoded",
},
data: {},
dataType: "json",
success: (result) => {
result.data[0].url = "/pages/index/index";
result.data[1].url = "/pages/device/device";
result.data[2].nav_name = "手机通行";
result.data[2].url = "/pages/phoneGo/phoneGo";
result.data[3].url = `/packages/community/index/index`; result.data[3].url = `/packages/community/index/index`
result.data[4].url = "/pages/user/index"; result.data[4].url = "/pages/user/index"
result.data.splice(1, 2); result.data.splice(1, 2);
let footWidth = (100 / result.data.length).toFixed(2) + "%"; let footWidth = (100 / result.data.length).toFixed(2) + '%';
this.navList = result.data; this.navList = result.data;
this.foot_width = footWidth; this.foot_width = footWidth;
}, },
}); });
}, },
//
NotOpen() {
uni.showModal({
title: '提示',
content: '此功能暂未开通!',
showCancel: false,
complete: (res) => {
if (res.cancel) {
// }
NotOpen() { }
uni.showModal({ })
title: "提示", },
content: "此功能暂未开通!",
showCancel: false,
complete: (res) => {
if (res.cancel) {
}
},
});
},
jump(e) {
const url = e.currentTarget.dataset.url;
// url
if (!url || url.trim() === '') {
this.NotOpen();
return;
}
const ctoken = uni.getStorageSync("ctoken"); jump(e) {
const authen = [ const ctoken = uni.getStorageSync('ctoken');
"/pages/index/index", const authen = ['/pages/index/index', '/pages/user/index','/pages/user/index'];
"/pages/user/index", // ctoken tab访
]; if (authen.includes(e.currentTarget.dataset.url)) {
// ctoken tab访 uni.redirectTo({
if (authen.includes(url)) { url: e.currentTarget.dataset.url,
uni.redirectTo({ })
url: url, return
}); }
return; if (!ctoken) {
} uni.redirectTo({
if (!ctoken) { url: '/pages/login/login',
uni.redirectTo({ })
url: "/pages/login/login", return;
}); }
return;
}
uni.redirectTo({ uni.redirectTo({
url: url, url: e.currentTarget.dataset.url,
}); })
}, },
},
mounted() {
// this.getFootnav(); },
}, mounted() {
}; // this.getFootnav();
}
}
</script> </script>
<style> <style>
@import url("./nav.css"); @import url("./nav.css");
</style> </style>

View File

@ -1,169 +1,153 @@
<template> <template>
<view class="container"> <view class="container">
<div class="line"></div> <div class="line"></div>
<view class="main"> <view class="main">
<view class="table"> <view class="table">
<view class="label">房产</view> <view class="label">房产</view>
<view class="flexBox" @click="choseCommunity"> <view class="flexBox" @click="choseCommunity">
<input <input type="text" v-model="changeComm" disabled placeholder="请选择房产">
type="text" <u-icon name="arrow-right"></u-icon>
v-model="changeComm" </view>
disabled </view>
placeholder="请选择房产" <view class="table">
/> <view class="label">姓名</view>
<u-icon name="arrow-right"></u-icon> <input type="text" v-model="nameVal" placeholder="请输入姓名">
</view> </view>
</view> <view class="table">
<view class="table"> <view class="label">手机</view>
<view class="label">姓名</view> <input type="text" v-model="phoneVal" placeholder="请输入手机号">
<input type="text" v-model="nameVal" placeholder="请输入姓名" /> </view>
</view> <view class="table">
<view class="table"> <view class="label">身份</view>
<view class="label">手机</view>
<input type="text" v-model="phoneVal" placeholder="请输入手机号" />
</view>
<view class="table">
<view class="label">身份</view>
<view class="flexBox" @click="chooseIdentity"> <view class="flexBox" @click="chooseIdentity">
<input <input type="number" v-model="selectedLabel" disabled placeholder="请选择身份">
type="number" <u-icon name="arrow-right"></u-icon>
v-model="selectedLabel" </view>
disabled
placeholder="请选择身份" </view>
/> <!-- <view class="tip">
<u-icon name="arrow-right"></u-icon>
</view>
</view>
<!-- <view class="tip">
注意业主为在物业登记在册的人员需经过物业审 核确认后即可成为该房产的业主如需帮助可与物 业或平台联系 注意业主为在物业登记在册的人员需经过物业审 核确认后即可成为该房产的业主如需帮助可与物 业或平台联系
</view> --> </view> -->
</view> </view>
<view class="btn" @click="headerSubmitClick">确定</view> <view class="btn" @click="headerSubmitClick">确定</view>
<u-popup <u-popup :show="show" @close="close" mode="bottom" customStyle="width: 500rpx;" round="20rpx">
:show="show" <u-picker :show="show" :columns="columns" keyName="label" @cancel="close" @confirm="confirm"></u-picker>
@close="close" </u-popup>
mode="bottom" </view>
customStyle="width: 500rpx;"
round="20rpx"
>
<u-picker
:show="show"
:columns="columns"
keyName="label"
@cancel="close"
@confirm="confirm"
></u-picker>
</u-popup>
</view>
</template> </template>
<script> <script>
import { request, NavgateTo, isPhone } from "../../../utils"; import {
import { apiArr } from "../../../api/community"; request,
export default { NavgateTo,
onBackPress(options) { isPhone
console.log("from:" + options.from); } from '../../../utils';
}, import {
data() { apiArr
return { } from '../../../api/community';
communityId: "", export default {
roomId: "", onBackPress(options) {
managementMobile: "", console.log('from:' + options.from)
show: false, },
changeComm: "", data() {
columns: [ return {
[ communityId: '',
{ roomId: '',
label: "业主", managementMobile: '',
value: "1", show: false,
}, changeComm: '',
{ columns: [
label: "家属", [{
value: "2", label: "业主",
}, value: "1"
{ },
label: "租客", {
value: "3", label: "家属",
}, value: "2"
{ },
label: "访客", {
value: "4", label: "租客",
}, value: "3"
], },
], {
selectedValue: "", label: "访客",
selectedLabel: "", value: "4"
nameVal: "", },
phoneVal: "", ]
}; ],
}, selectedValue: '',
methods: { selectedLabel: '',
close() { nameVal: '',
this.show = false; phoneVal: '',
}, }
chooseIdentity() { },
this.show = true; methods: {
console.log(); close() {
}, this.show = false
confirm(selected) { },
console.log(selected.value[0].value); chooseIdentity() {
this.selectedValue = selected.value[0].value; this.show = true
this.selectedLabel = selected.value[0].label; console.log()
this.show = false; },
}, confirm(selected) {
headerCloseClick() { console.log(selected.value[0].value)
this.show = false; this.selectedValue = selected.value[0].value
}, this.selectedLabel = selected.value[0].label
this.show = false
},
headerCloseClick() {
this.show = false;
},
headerInputClick(e) { headerInputClick(e) {
const { name } = e.currentTarget.dataset; const {
const { value } = e.detail; name
this[name] = value; } = e.currentTarget.dataset;
}, const {
async headerSubmitClick() { value
await request(apiArr.create, "POST", { } = e.detail;
community_id: parseInt(this.communityId), this[name] = value;
room_id: parseInt(this.roomId), },
user_id: uni.getStorageSync("userId"), async headerSubmitClick() {
name: this.nameVal, // await request(apiArr.create, "POST", {
mobile: this.phoneVal, // community_id: parseInt(this.communityId),
type: parseInt(this.selectedValue), // room_id: parseInt(this.roomId),
id_type: 1, user_id: uni.getStorageSync('userId'),
}).then((res) => { name: this.nameVal, //
console.log(res); mobile: this.phoneVal, //
uni.showToast({ type: parseInt(this.selectedValue), //
title: "提交成功请等待物业审核!", id_type: 1
icon: "none", }).then(res => {
duration: 1500, console.log(res)
}); uni.showToast({
// title: '创建成功',
setTimeout(() => { icon: "none",
NavgateTo("/packages/community/myCommunity/index"); duration: 2000
}, 1500); });
}); NavgateTo("/packages/community/myCommunity/index")
}, })
choseCommunity() { },
NavgateTo("/packages/community/choseCommunity/index"); choseCommunity() {
}, NavgateTo("/packages/community/choseCommunity/index")
}, },
onLoad(options) { },
console.log("接收到的参数:", options);
this.communityId = options.community_id
? decodeURIComponent(options.community_id)
: "";
this.roomId = options.room_id ? decodeURIComponent(options.room_id) : "";
this.changeComm = options.changeVal
? decodeURIComponent(options.changeVal)
: "";
},
onReachBottom() {}, onLoad(options) {
}; console.log("接收到的参数:", options);
this.communityId = options.community_id ? decodeURIComponent(options.community_id) : ''
this.roomId = options.room_id ? decodeURIComponent(options.room_id) : ''
this.changeComm = options.changeVal ? decodeURIComponent(options.changeVal) : ''
},
onReachBottom() {
},
}
</script> </script>
<style> <style>
@import url("./index.css"); @import url("./index.css");
</style> </style>

View File

@ -98,7 +98,7 @@ image {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
/* background-color: #fff; */ background-color: #fff;
padding-bottom: 200rpx; padding-bottom: 200rpx;
margin-top: 20rpx; margin-top: 20rpx;
padding-top: 111rpx; padding-top: 111rpx;

View File

@ -1,42 +1,39 @@
<template> <template>
<div class="container"> <div class="container">
<div class="currentAdd"> <div class="currentAdd">
<div class="currentAdd_left">{{ city.region }}</div> <div class="currentAdd_left">{{city.region}}</div>
<div class="currentAdd_right" @click="changeAddress"> <div class="currentAdd_right" @click="changeAddress">
切换城市 切换城市
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_choseAddress.png"></image> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_choseAddress.png"></image>
</div> </div>
</div> </div>
<div class="communityBox" v-if="step == 1"> <div class="communityBox" v-if="step == 1">
<div class="search"> <div class="search">
<input type="text" placeholder="请输入小区名称" v-model="communityName" /> <input type="text" placeholder="请输入小区名称" v-model="communityName">
<image @click="searchByName" <image @click="searchByName" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"> </div>
</image>
</div>
<!-- @click="chooseCommunity(item)" --> <!-- @click="chooseCommunity(item)" -->
<div class="communityList"> <div class="communityList">
<div class="communityItem" v-for="item in communityList" :key="item.community_id" @click="nextStep(item)"> <div class="communityItem" v-for="item in communityList" :key="item.community_id" @click="nextStep(item)">
<div class="communityItem_left"> <div class="communityItem_left">
<div class="communityItem_tit">{{ item.name }}</div> <div class="communityItem_tit">{{item.name}}</div>
<div class="communityItem_address">{{ item.addr }}</div> <div class="communityItem_address">{{item.addr}}</div>
</div> </div>
<div class="communityItem_right"> <div class="communityItem_right">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communityMore.png"> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communityMore.png"></image>
</image> </div>
</div> </div>
</div> </div>
</div>
<div class="empty" v-if="communityList.length == 0"> <div class="empty" v-if="!communityList">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
<span>未找到相关信息的小区</span> <span>未找到相关信息的小区</span>
</div> </div>
</div> </div>
<!-- <div class="communityBox" v-if="step == 2"> <!-- <div class="communityBox" v-if="step == 2">
<div class="search"> <div class="search">
<input type="text" placeholder="请输入楼栋名称"> <input type="text" placeholder="请输入楼栋名称">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image>
@ -54,270 +51,235 @@
</div> </div>
</div> --> </div> -->
<div class="communityBox" v-if="step == 2"> <div class="communityBox" v-if="step == 2">
<div class="search"> <div class="search">
<input v-model="searchQuery" type="text" placeholder="请输入楼栋名称" /> <input v-model="searchQuery" type="text" placeholder="请输入楼栋名称">
<image @click="searchName" <image @click="searchName" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"> </div>
</image>
</div>
<div class="floorList"> <div class="floorList">
<div @click="nextStep(item, index)" :class="{ active: index === selectedFloorIndex }" class="floorItem" <div @click="nextStep(item)" class="floorItem" v-for="(item, index) in filteredFloorsList" :key="index">
v-for="(item, index) in filteredFloorsList" :key="index"> {{ item.label }}
{{ item.label }} </div>
</div> </div>
</div>
<div class="empty" v-if="filteredFloorsList.length === 0"> <div class="empty" v-if="filteredFloorsList.length === 0">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
<span>未找到相关信息的楼栋</span> <span>未找到相关信息的楼栋</span>
</div> </div>
</div> </div>
<div class="communityBox" v-if="step == 3"> <div class="communityBox" v-if="step == 3">
<div class="search"> <div class="search">
<input v-model="searchQuery" type="text" placeholder="请输入楼层名称" /> <input v-model="searchQuery" type="text" placeholder="请输入楼层名称">
<image @click="searchName" <image @click="searchName" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"> </div>
</image>
</div>
<div class="roomList"> <div class="roomList">
<!-- <div class="roomItem" v-for="(item,index) in 5" :class="index == 1?'active2':''"> --> <!-- <div class="roomItem" v-for="(item,index) in 5" :class="index == 1?'active2':''"> -->
<div @click="nextStep(item, index, 'room')" :class="{ active2: index === selectedRoomIndex }" class="roomItem" <div @click="nextStep(item)" class="roomItem" v-for="(item,index) in filteredFloorsList" :key="index">
v-for="(item, index) in filteredFloorsList" :key="index"> {{item.label}}
{{ item.label }} </div>
</div> </div>
</div>
<div class="empty" v-if="filteredFloorsList.length === 0"> <div class="empty" v-if="filteredFloorsList.length === 0">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
<span>未找到相关信息的楼层</span> <span>未找到相关信息的楼层</span>
</div> </div>
</div> </div>
<div class="communityBox" v-if="step == 4"> <div class="communityBox" v-if="step == 4">
<div class="search"> <div class="search">
<input v-model="searchQuery" type="text" placeholder="请输入房间名称" /> <input v-model="searchQuery" type="text" placeholder="请输入房间名称">
<image @click="searchName" <image @click="searchName" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"> </div>
</image>
</div>
<div class="roomList"> <div class="roomList">
<!-- <div class="roomItem" v-for="(item,index) in 5" :class="index == 1?'active2':''"> --> <!-- <div class="roomItem" v-for="(item,index) in 5" :class="index == 1?'active2':''"> -->
<div @click="nextStep(item, index, 'room')" :class="{ active2: index === selectedRoomIndex }" class="roomItem" <div @click="nextStep(item)" class="roomItem" v-for="(item,index) in filteredFloorsList" :key="index">
v-for="(item, index) in filteredFloorsList" :key="index"> {{item.label}}
{{ item.label }} </div>
</div> </div>
</div>
<div class="empty" v-if="filteredFloorsList.length === 0"> <div class="empty" v-if="filteredFloorsList.length === 0">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
<span>未找到相关信息的房间</span> <span>未找到相关信息的房间</span>
</div> </div>
</div> </div>
<areaPopup :show="show" @selectArea="selectArea" @close="close"></areaPopup>
<div class="dialogBox" v-if="dialogBoxShow"> <areaPopup :show="show" @selectArea="selectArea" @close="close"></areaPopup>
<div class="dialogBoxCon">
<div class="dialogBoxCon1">确认选择</div> <div class="dialogBox" v-if="dialogBoxShow">
<div class="dialogBoxCon2">{{ cName }}</div> <div class="dialogBoxCon">
<div class="dialogBoxCon3">{{ facilityName + fName + rName }}</div> <div class="dialogBoxCon1">确认选择</div>
<div class="dialogBoxConBtnList"> <div class="dialogBoxCon2">{{cName}}</div>
<div class="dialogBoxConBtnItem1" @click="dialogBoxShow = false"> <div class="dialogBoxCon3">{{facilityName + fName + rName}}</div>
取消 <div class="dialogBoxConBtnList">
</div> <div class="dialogBoxConBtnItem1" @click="dialogBoxShow = false">取消</div>
<div class="dialogBoxConBtnItem2" @click="confirmComm">确定</div> <div class="dialogBoxConBtnItem2" @click="confirmComm">确定</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { apiArr } from "../../../api/community"; import {
import { apiArr
request, } from '../../../api/community';
picUrl, import {
uniqueByField, request,
menuButtonInfo, picUrl,
NavgateTo, uniqueByField,
} from "../../../utils"; menuButtonInfo,
NavgateTo
} from '../../../utils';
export default { export default {
data() { data() {
return { return {
selectedFloorIndex: -1, show: false,
selectedRoomIndex: -1, step: "1",
show: false, communityName: '',
step: "1", cName: '',
communityName: "", fName: '',
cName: "", communityId: '',
fName: "", communityList: [],
communityId: "", facilityName: '',
communityList: [], // foloorList: [],
facilityName: "", // floorsList: [],
// foloorList: [], rName: '',
// floorsList: [], roomId: '',
rName: "", // roomList: [],
roomId: "", page_num: 1,
// roomList: [], page_size: 10,
page_num: 1, dialogBoxShow: false,
page_size: 10, searchQuery: '',
dialogBoxShow: false, filteredFloorsList: [],
searchQuery: "", searchList: [],
filteredFloorsList: [], city: uni.getStorageSync('location'),
searchList: [], currentCommunity:""
city: uni.getStorageSync("location"), }
currentCommunity: "", },
}; methods: {
}, changeAddress() {
methods: { this.show = true
changeAddress() { },
this.show = true; close() {
}, this.show = false
close() { },
this.show = false; selectArea(val) {
}, console.log(val);
selectArea(val) { this.city = {
console.log(val); region: val.confirmDist.ad_name.split(',').join(''),
this.city = { ...val.confirmDist
region: val.confirmDist.ad_name.split(",").join(""), }
...val.confirmDist, this.searchByName();
}; this.show = false
this.searchByName(); },
this.show = false; async searchByName() {
}, console.log(this.communityName,'zzz')
async searchByName() { await request(apiArr.getAllList, "POST", {
console.log(this.communityName, "zzz"); community_id: '',
await request(apiArr.getAllList, "POST", { name: this.communityName,
community_id: "", comm_code: '',
name: this.communityName, ad_code: this.city.ad_code ? this.city.ad_code : uni.getStorageSync('ad_code'),
comm_code: "", page_num: this.page_num,
ad_code: this.city.ad_code page_size: this.page_size
? this.city.ad_code }).then(res => {
: uni.getStorageSync("ad_code"), console.log(res.rows)
page_num: this.page_num, this.communityList = res.rows
page_size: this.page_size, })
}).then((res) => { },
console.log(res.rows); async nextStep(item) {
this.communityList = res.rows; this.communityId = item.community_id ? item.community_id : this.communityId;
}); this.facilityName = this.facilityName ? this.facilityName : item.label;
}, this.fName = this.step == 4 ? this.fName : (this.facilityName ? item.label : '')
async nextStep(item, index, type = "") { await request(apiArr.commRoomSelect, "POST", {
if (type === "room") { community_ids: item.community_id ? item.community_id : this.communityId,
this.selectedRoomIndex = index; facility_names: this.facilityName,
} else { floors: this.facilityName ? (this.facilityName == this.fName ? '' : item.label) : '',
this.selectedFloorIndex = index; }).then(res => {
} this.filteredFloorsList = this.step == 4 ? this.filteredFloorsList : res.rows
this.communityId = item.community_id this.searchList = res.rows
? item.community_id this.searchQuery = ''
: this.communityId; if (this.step == '1') {
this.facilityName = this.facilityName ? this.facilityName : item.label; this.step = '2';
this.fName = this.cName = item.name;
this.step == 4 ? this.fName : this.facilityName ? item.label : ""; // this.foloorList = res.rows
await request(apiArr.commRoomSelect, "POST", { } else if (this.step == '2') {
community_ids: [item.community_id ? item.community_id : this.communityId], this.step = '3';
facility_names: this.facilityName ? [this.facilityName] : [], // this.floorsList = res.rows
} else if (this.step == '3') {
console.log(item.label);
this.fName = item.label;
// this.roomList = res.rows
this.step = '4';
} else {
this.dialogBoxShow = true;
this.rName = item.label
this.romId = item.value
}
})
},
searchName() {
//
this.filteredFloorsList = this.searchList.filter(item =>
item.label.includes(this.searchQuery)
);
},
confirmComm() {
const params = {
changeVal: `${this.cName}${this.facilityName}${this.fName}${this.rName}`,
community_id: this.communityId,
room_id: this.romId
};
console.log(params)
//
function createQueryString(params) {
return Object.keys(params)
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
.join('&');
}
floors: this.facilityName //
? this.facilityName == this.fName const targetPath = "/packages/community/addCommunity/index";
? "" const queryString = createQueryString(params);
: [item.label] const fullPath = `${targetPath}?${queryString}`;
: "",
}).then((res) => {
//
if (this.step != 4) {
res.rows.sort((a, b) => {
//
const floorA = parseInt(a.label.replace(/[^\d]/g, ''));
const floorB = parseInt(b.label.replace(/[^\d]/g, ''));
return floorA - floorB;
});
}
this.filteredFloorsList = this.step == 4 ? this.filteredFloorsList : res.rows;
this.searchList = res.rows;
this.searchQuery = "";
if (this.step == "1") {
this.step = "2";
this.cName = item.name;
// this.foloorList = res.rows
} else if (this.step == "2") {
this.step = "3";
// this.floorsList = res.rows
} else if (this.step == "3") {
console.log(item.label);
this.fName = item.label.includes("层") ? item.label : item.label + "层";
// this.roomList = res.rows
this.step = "4";
} else {
this.dialogBoxShow = true;
this.rName = item.label;
this.romId = item.value;
}
});
},
searchName() {
//
this.filteredFloorsList = this.searchList.filter((item) =>
item.label.includes(this.searchQuery)
);
},
confirmComm() {
const params = {
changeVal: `${this.cName}${this.facilityName}${this.fName}${this.rName}`,
community_id: this.communityId,
room_id: this.romId,
};
console.log(params);
//
function createQueryString(params) {
return Object.keys(params)
.map(
(key) =>
`${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`
)
.join("&");
}
// //
const targetPath = "/packages/community/addCommunity/index"; NavgateTo(fullPath);
const queryString = createQueryString(params); },
const fullPath = `${targetPath}?${queryString}`;
// //
NavgateTo(fullPath); chooseCommunity(e){
}, this.currentCommunity = e
this.getRoomSelect()
},
//
getRoomSelect(){
request(apiArr.commRoomSelect,"POST",{
community_ids:this.currentCommunity.community_id,
}).then(res=>{
console.log(res);
this.step = 2
})
},
},
// onLoad(options) {
chooseCommunity(e) { const meun = menuButtonInfo();
this.currentCommunity = e; this.searchByName()
},
this.getRoomSelect(); onReachBottom() {
},
//
getRoomSelect() {
request(apiArr.commRoomSelect, "POST", {
community_ids: [this.currentCommunity.community_id],
}).then((res) => {
console.log(res);
this.step = 2;
});
},
},
onLoad(options) { },
const meun = menuButtonInfo(); }
this.searchByName();
},
onReachBottom() { },
};
</script> </script>
<style> <style>
@import url("./index.css"); @import url("./index.css");
</style> </style>

View File

@ -3,40 +3,6 @@ page {
padding: 0; padding: 0;
} }
.empty {
font-size: 28rpx;
color: #999999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: 400rpx;
}
.empty image {
width: 340rpx;
height: 240rpx;
}
.emptyBtn {
width: 400rpx;
height: 80rpx;
background-color: #ea030d;
color: white;
align-items: center;
margin-top: 400rpx;
}
.emptyBtn2 {
width: 400rpx;
height: 80rpx;
background-color: white;
color: #333;
align-items: center;
margin-top: 50rpx;
border: 1rpx solid #333;
}
swiper { swiper {
height: 100%; height: 100%;
} }
@ -69,9 +35,8 @@ image {
.emptyCommunity { .emptyCommunity {
font-size: 28rpx; font-size: 28rpx;
color: #222222; color: #222222;
width: auto; width: 200rpx;
height: 44rpx; height: 44rpx;
padding: 5rpx 15rpx;
background: rgba(255, 255, 255, 0.8); background: rgba(255, 255, 255, 0.8);
border-radius: 100rpx 100rpx 100rpx 100rpx; border-radius: 100rpx 100rpx 100rpx 100rpx;
display: flex; display: flex;
@ -139,10 +104,6 @@ image {
margin: 0 5rpx; margin: 0 5rpx;
} }
.swiperBox2_img {
border-radius: 20rpx 20rpx 0 0;
}
.active { .active {
width: 26rpx; width: 26rpx;
} }
@ -183,8 +144,7 @@ image {
margin: 0 auto; margin: 0 auto;
margin-top: 40rpx; margin-top: 40rpx;
} }
.ads_first{
.ads_first {
margin-top: 0; margin-top: 0;
} }
@ -196,15 +156,13 @@ image {
height: 100rpx; height: 100rpx;
padding: 0 20rpx; padding: 0 20rpx;
box-sizing: border-box; box-sizing: border-box;
overflow-x: auto;
white-space: nowrap;
} }
.tabItem { .tabItem {
font-size: 30rpx; font-size: 30rpx;
color: #222222; color: #222222;
margin-right: 60rpx; margin-right: 60rpx;
white-space: nowrap; height: 42rpx;
} }
.active2 { .active2 {
@ -225,10 +183,6 @@ image {
transform: translateX(-50%); transform: translateX(-50%);
} }
.newsList {
margin-bottom: 100rpx;
}
.newsItem { .newsItem {
display: flex; display: flex;
align-items: center; align-items: center;
@ -239,10 +193,6 @@ image {
border-bottom: 1rpx solid #EBEBEB; border-bottom: 1rpx solid #EBEBEB;
} }
.newsItem:last-child {
border-bottom: none;
}
.newsItem_left { .newsItem_left {
flex: 1; flex: 1;
} }
@ -355,8 +305,4 @@ image {
width: 100rpx; width: 100rpx;
height: 100rpx; height: 100rpx;
margin-bottom: 16rpx; margin-bottom: 16rpx;
}
.grid_Text {
font-size: 24rpx;
} }

View File

@ -1,110 +1,163 @@
<template> <template>
<div class="container"> <div class="container">
<div class="empty" v-if="communityList.length == 0"> <div
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_newEmpty.png" alt="" /> class="searchBox"
<text>当前账户未绑定任何项目房源信息</text> :style="{ height: localHeight + 'px', paddingTop: top + 'px' }"
<button class="emptyBtn" @click="addCommunity">新增房产绑定</button> >
<!-- <button class="emptyBtn2" @click="refresh">刷新</button> --> <div class="searchBox_add">
</div> <div class="emptyCommunity" @click="addCommunity">
<div v-else> {{ communityVal }}
<div class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
<div class="searchBox_add">
<div class="emptyCommunity" @click="addCommunity">
{{ communityVal }}
</div>
</div> </div>
<!-- <div class="MyCommunity" v-if="false">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community/community_mycommunity.png"
mode="aspectFill"></image>
<span>惠生活</span>
<u-icon name="arrow-down" color="#999999" size="28"></u-icon>
</div> -->
</div> </div>
</div>
<div class="swiperBox1"> <div class="swiperBox1">
<swiper @animationfinish="swipers" autoplay circular> <swiper @animationfinish="swipers" autoplay circular>
<swiper-item v-for="(item, index) in bannerList" :key="index" @click="headerServerClick(item)"> <swiper-item
<image :src="item.ad_picture" mode="aspectFill" /> v-for="(item, index) in bannerList"
</swiper-item> :key="index"
</swiper> @click="headerServerClick(item)"
>
<image :src="item.ad_picture" mode="aspectFill" />
</swiper-item>
</swiper>
<view class="dot"> <view class="dot">
<view :class="['dotItem', currentIdx == index ? 'active' : '']" v-for="(item, index) in bannerList" <view
:key="index"> :class="['dotItem', currentIdx == index ? 'active' : '']"
</view> v-for="(item, index) in bannerList"
:key="index"
>
</view> </view>
</div>
<div class="swiperBox2">
<swiper @animationfinish="swipers" autoplay circular>
<swiper-item v-for="(item, index) in streamerList" :key="index" @click="headerServerClick(item)">
<image :src="item.ad_picture" mode="aspectFill" class="swiperBox2_img" />
</swiper-item>
</swiper>
</div>
<view class="funcList">
<u-grid :col="rowNum" :border="false">
<u-grid-item v-for="(item, index) in functionList" @click="jump(item.mini_program_url)" :key="index">
<image class="grid_Pic" :src="item.nav_icon" mode=""></image>
<text class="grid_Text">{{ item.nav_name }}</text>
</u-grid-item>
</u-grid>
</view> </view>
<div v-for="(item, index) in tileList" :key="index" :class="['ads', index == 0 ? 'ads_first' : '']" <!-- <div class="dot">
@click="headerServerClick(item)"> <div class="dotItem"></div>
<image :src="item.ad_picture" mode="aspectFill" /> <div class="dotItem active"></div>
</div> </div> -->
</div>
<div class="tabs"> <div class="swiperBox2">
<div v-for="(item, index) in categoryList" :key="index" <swiper @animationfinish="swipers" autoplay circular>
:class="['tabItem', selectedTab === index ? 'active2' : '']" @click="selectTab(index, item)"> <swiper-item
{{ item.category_name }} v-for="(item, index) in streamerList"
:key="index"
@click="headerServerClick(item)"
>
<image :src="item.ad_picture" mode="aspectFill" />
</swiper-item>
</swiper>
</div>
<!-- <div class="funcList">
<div class="funcItem" v-for="item in functionList" @click="jump(item.mini_program_url)">
<image :src="item.nav_icon"></image>
{{ item.nav_name }}
</div>
</div> -->
<view class="funcList">
<u-grid :col="rowNum" :border="false">
<u-grid-item
v-for="(item, index) in functionList"
@click="jump(item.mini_program_url)"
:key="index"
>
<image class="grid_Pic" :src="item.nav_icon" mode=""></image>
<text>{{ item.nav_name }}</text>
</u-grid-item>
</u-grid>
</view>
<div
v-for="(item, index) in tileList"
:key="index"
:class="['ads', index == 0 ? 'ads_first' : '']"
@click="headerServerClick(item)"
>
<image :src="item.ad_picture" mode="aspectFill" />
</div>
<div class="tabs">
<div
v-for="(item, index) in categoryList"
:key="index"
:class="['tabItem', selectedTab === index ? 'active2' : '']"
@click="selectTab(index, item)"
>
{{ item.category_name }}
</div>
</div>
<div class="newsList">
<div
class="newsItem"
v-for="item in infoList"
@click="detail(item)"
:key="item.id"
>
<div class="newsItem_left">
<div class="newsItem_left_tit">{{ item.title }}</div>
<div class="newsItem_left_sub">{{ item.author }}</div>
</div> </div>
</div> <div class="newsItem_right">
<image :src="item.list_image" mode="aspectFill" />
<div class="newsList">
<div class="newsItem" v-for="item in infoList" @click="detail(item)" :key="item.id">
<div class="newsItem_left">
<div class="newsItem_left_tit">{{ item.title }}</div>
<div class="newsItem_left_sub">{{ item.author }}</div>
</div>
<div class="newsItem_right">
<image :src="item.list_image" mode="aspectFill" />
</div>
</div>
</div>
<div class="tips">{{ loadMoreText }}</div>
<div class="bigAds" v-if="ads1Show">
<div class="bigAdsCon">
<div class="bigAdsCon_img">
<swiper @animationfinish="swipers" autoplay circular>
<swiper-item v-for="(item, index) in largePopList" :key="index" @click="headerServerClick(item)">
<image :src="item.ad_picture" mode="aspectFill" />
</swiper-item>
</swiper>
</div>
<div class="close" @click="closeAds">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_close.png">
</image>
</div>
</div>
</div>
<div class="bigAds" v-if="ads2Show">
<div class="bigAdsCon2">
<div class="bigAdsCon2_img">
<swiper :current="currentSwiperIndex" @change="onSwiperChange" @animationfinish="swipers" autoplay circular>
<swiper-item v-for="(item, index) in popList" :key="index">
<image :src="item.ad_picture" mode="aspectFill" />
</swiper-item>
</swiper>
</div>
<div class="AdsBtnList">
<div class="AdsBtnItem1" @click="closeAds2">取消</div>
<div class="AdsBtnItem2" @click="onDetailClick">了解详情</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<nav-footer :current="3" />
<div class="tips">{{ loadMoreText }}</div>
<div class="bigAds" v-if="ads1Show">
<div class="bigAdsCon">
<div class="bigAdsCon_img">
<swiper @animationfinish="swipers" autoplay circular>
<swiper-item
v-for="(item, index) in largePopList"
:key="index"
@click="headerServerClick(item)"
>
<image :src="item.ad_picture" mode="aspectFill" />
</swiper-item>
</swiper>
</div>
<div class="close" @click="closeAds">
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_close.png"
>
</image>
</div>
</div>
</div>
<div class="bigAds" v-if="ads2Show">
<div class="bigAdsCon2">
<div class="bigAdsCon2_img">
<swiper
:current="currentSwiperIndex"
@change="onSwiperChange"
@animationfinish="swipers"
autoplay
circular
>
<swiper-item v-for="(item, index) in popList" :key="index">
<image :src="item.ad_picture" mode="aspectFill" />
</swiper-item>
</swiper>
</div>
<div class="AdsBtnList">
<div class="AdsBtnItem1" @click="closeAds2">取消</div>
<div class="AdsBtnItem2" @click="onDetailClick">了解详情</div>
</div>
</div>
</div>
<nav-footer :current="1" />
</div> </div>
</template> </template>
@ -118,7 +171,6 @@ import {
} from "../../../utils"; } from "../../../utils";
import { apiArr } from "../../../api/v2Community"; import { apiArr } from "../../../api/v2Community";
import { apiArr as apiArr2 } from "../../../api/community";
export default { export default {
data() { data() {
@ -156,68 +208,20 @@ export default {
page_size: 10, page_size: 10,
page_num: 1, page_num: 1,
flag: false, flag: false,
loadMoreText: "", loadMoreText: "下拉加载后续10条共计30条",
isShowBill: false,
houseVal: "",
}; };
}, },
async onLoad(options) { async onLoad(options) {
//
},
async onShow() {
//
// if (!uni.getStorageSync("changeCommData")) {
// return;
// }
await request(apiArr2.commInfo, "POST", {
user_id: uni.getStorageSync("userId"),
longitude: uni.getStorageSync("location").lng,
latitude: uni.getStorageSync("location").lat,
page_num: this.page_num,
page_size: this.page_size,
}).then((res) => {
if (res.rows.length == 0) {
uni.removeStorageSync("changeCommData");
return;
}
const targetItem = res.rows.find((item) => {
return item.community_id == uni.getStorageSync("changeCommData").id;
});
if (targetItem) {
//
this.isShowBill = targetItem.bill_front_end_display == 1;
//
if (targetItem.front_end_display == 1) {
uni.removeStorageSync("changeCommData");
}
}
res.rows = res.rows.filter((item) => {
return item.front_end_display != 1;
});
console.log("🚀 ~ onLoad ~ res.rows:", res.rows)
if (!uni.getStorageSync("changeCommData")) {
uni.setStorageSync("changeCommData", { name: res.rows[0].name, id: res.rows[0].community_id })
uni.setStorageSync("isShowNav", res.rows[0].room_owner_list[0].type)
}
this.communityList = res.rows;
});
const meun = menuButtonInfo(); const meun = menuButtonInfo();
this.top = meun.top; this.top = meun.top;
// this.top = meun.height + meun.top; // this.top = meun.height + meun.top;
this.localHeight = meun.height; this.localHeight = meun.height;
// this.getCommunityList() // this.getCommunityList()
if (this.communityList.length == 0) { if (!uni.getStorageSync("changeCommData").id) {
this.communityVal = "添加我的房产"; uni.setStorageSync("changeCommData", { name: "森呼吸二期", id: 14 });
} else {
console.log("🚀 ~ onLoad ~ this.communityList:", this.communityList)
this.communityVal = uni.getStorageSync("changeCommData").name;
} }
this.communityVal = uni.getStorageSync("changeCommData").name;
this.getfunctionNum(); this.getfunctionNum();
this.getAdvertising(); this.getAdvertising();
this.getCategoryList(); this.getCategoryList();
@ -270,16 +274,6 @@ export default {
this.NotOpen(); this.NotOpen();
return; return;
} }
if (
e == "/packages/community/propertyPayment/index" &&
!this.isShowBill
) {
uni.showToast({
title: "请配置账单",
icon: "none",
});
return;
}
NavgateTo(e); NavgateTo(e);
}, },
@ -307,9 +301,6 @@ export default {
}, },
async getfunctionList() { async getfunctionList() {
if (!uni.getStorageSync("changeCommData")) {
return;
}
const res = await request(apiArr.navPage, "POST", { const res = await request(apiArr.navPage, "POST", {
community_id: Number(uni.getStorageSync("changeCommData").id), community_id: Number(uni.getStorageSync("changeCommData").id),
page_num: 1, page_num: 1,
@ -331,9 +322,6 @@ export default {
}, },
async getAdvertising() { async getAdvertising() {
if (!uni.getStorageSync("changeCommData")) {
return;
}
const res = await request(apiArr.advPage, "POST", { const res = await request(apiArr.advPage, "POST", {
community_id: Number(uni.getStorageSync("changeCommData").id), community_id: Number(uni.getStorageSync("changeCommData").id),
ad_position: 1, ad_position: 1,
@ -404,27 +392,26 @@ export default {
headerServerClick(e) { headerServerClick(e) {
console.log("当前点击内容", e); console.log("当前点击内容", e);
if (!e.target_page) { if (!e.link_url) {
this.NotOpen(); this.NotOpen();
return; return;
} }
if (e.target_page) { if (e.link_url) {
// #ifdef APP-PLUS // #ifdef APP-PLUS
uni.navigateTo({ uni.navigateTo({
url: url: "/pages/webview/webview?url=" + encodeURIComponent(e.link_url),
"/pages/webview/webview?url=" + encodeURIComponent(e.target_page),
}); });
// #endif // #endif
// #ifdef H5 // #ifdef H5
window.open(e.target_page, "_blank"); window.open(e.link_url, "_blank");
// #endif // #endif
// #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU // #ifdef MP-WEIXIN || MP-ALIPAY || MP-BAIDU
if (e.appid) { if (e.appid) {
uni.navigateToMiniProgram({ uni.navigateToMiniProgram({
appId: e.appid, appId: e.appid,
path: e.target_page, path: e.link_url,
// //
extraData: { extraData: {
data1: "test", data1: "test",
@ -434,23 +421,18 @@ export default {
}, },
}); });
} else { } else {
// NavgateTo(e.link_url);
let targetPage = e.target_page;
if (!targetPage.startsWith("/")) {
targetPage = "/" + targetPage;
}
NavgateTo(targetPage);
// NavgateTo('/packages/localLife/index/index') // NavgateTo('/packages/localLife/index/index')
} }
// 使web-view // 使web-view
// uni.showModal({ // uni.showModal({
// title: '', // title: '',
// content: ': ' + e.target_page, // content: ': ' + e.link_url,
// confirmText: '', // confirmText: '',
// success(res) { // success(res) {
// if (res.confirm) { // if (res.confirm) {
// uni.setClipboardData({ // uni.setClipboardData({
// data: e.target_page, // data: e.link_url,
// success() { // success() {
// uni.showToast({ // uni.showToast({
// title: '', // title: '',
@ -491,9 +473,6 @@ export default {
}, },
async getCategoryList() { async getCategoryList() {
if (!uni.getStorageSync("changeCommData")) {
return;
}
const res = await request(apiArr.categoryPage, "POST", { const res = await request(apiArr.categoryPage, "POST", {
community_id: Number(uni.getStorageSync("changeCommData").id), community_id: Number(uni.getStorageSync("changeCommData").id),
category_code: "", category_code: "",
@ -510,15 +489,10 @@ export default {
if (isTabChange) { if (isTabChange) {
this.page_num = 1; this.page_num = 1;
this.infoList = []; this.infoList = [];
// this.loadMoreText = "1030"; this.loadMoreText = "下拉加载后续10条共计30条";
} }
this.selectedTab = index; this.selectedTab = index;
console.log("选中的tab:", index);
// tab
if (!isTabChange && !this.flag && this.infoList.length > 0) {
return;
}
const res = await request(apiArr.infoPage, "POST", { const res = await request(apiArr.infoPage, "POST", {
community_id: Number(uni.getStorageSync("changeCommData").id), community_id: Number(uni.getStorageSync("changeCommData").id),
announcement_category_id: item.id, announcement_category_id: item.id,
@ -539,17 +513,10 @@ export default {
// 3 // 3
this.flag = hasMore; this.flag = hasMore;
//
const isDataDuplicate =
!isTabChange &&
this.infoList.length > 0 &&
newData.length > 0 &&
this.infoList[this.infoList.length - 1].id === newData[0].id;
// //
if (isTabChange) { if (isTabChange) {
this.infoList = newData; this.infoList = newData;
} else if (!isDataDuplicate) { } else {
this.infoList = this.infoList.concat(newData); this.infoList = this.infoList.concat(newData);
} }
@ -560,7 +527,7 @@ export default {
icon: "none", icon: "none",
}); });
} else { } else {
// this.loadMoreText = `10`; this.loadMoreText = `下拉加载后续10条`;
} }
}, },

View File

@ -1,6 +1,6 @@
<template> <template>
<view class="container"> <view class="container">
<view class="empty" v-if="communityList.length == 0"> <view class="empty" v-if="false">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_newEmpty.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_newEmpty.png"
alt="" /> alt="" />
没有添加任何房产 没有添加任何房产
@ -67,7 +67,7 @@ export default {
res.rows.forEach(item => { res.rows.forEach(item => {
item.pic = item.pic.startsWith('http') ? item.pic : picUrl + item.pic item.pic = item.pic.startsWith('http') ? item.pic : picUrl + item.pic
}); });
this.communityList = res.rows.filter(item => item.front_end_display !== 1) this.communityList = res.rows
}) })
}, },
// toUpview(item) { // toUpview(item) {
@ -79,8 +79,7 @@ export default {
this.currentCommunity = e this.currentCommunity = e
uni.setStorageSync('changeCommData', { id: e.community_id, name: e.name }); uni.setStorageSync('changeCommData', { id: e.community_id, name: e.name });
uni.setStorageSync('currentCommunityAddr',e.addr); uni.setStorageSync('currentCommunityAddr',e.addr);
uni.setStorageSync("isShowNav", e.room_owner_list[0].type) NavgateTo("/packages/community/index/index")
NavgateTo("1")
}, },
}, },

View File

@ -59,10 +59,6 @@ page {
font-size: 32rpx; font-size: 32rpx;
} }
.red{
color: #FF0000;
}
.label { .label {
font-size: 28rpx; font-size: 28rpx;
color: #999999; color: #999999;
@ -77,7 +73,7 @@ page {
} }
.roomItem { .roomItem {
width: auto; width: 276rpx;
height: 54rpx; height: 54rpx;
background: #FFF5F5; background: #FFF5F5;
border-radius: 10rpx 10rpx 10rpx 10rpx; border-radius: 10rpx 10rpx 10rpx 10rpx;
@ -89,7 +85,6 @@ page {
color: #222222; color: #222222;
margin-right: 30rpx; margin-right: 30rpx;
margin-bottom: 28rpx; margin-bottom: 28rpx;
padding: 0 10rpx;
} }
.roomItem:nth-child(2n) { .roomItem:nth-child(2n) {

View File

@ -12,16 +12,16 @@
<div class="repairMsg"> <div class="repairMsg">
<div class="repairTit"> <div class="repairTit">
报修信息 <span>*</span>报修信息
</div> </div>
<div class="label"><span class="red">*</span>选择房源信息</div> <div class="label">选择房源信息</div>
<div class="roomList"> <div class="roomList">
<div v-for="(item, index) in roomList" :key="index" :class="active == index ?'roomItem active':'roomItem'" @click="changeAct(index)">{{ item.name }}</div> <div v-for="(item, index) in roomList" :key="index" :class="active == index ?'roomItem active':'roomItem'" @click="changeAct(index)">{{ item.name }}</div>
</div> </div>
<div class="row"> <div class="row">
<div class="row_label"><span class="red">*</span>报修类型</div> <div class="row_label">报修类型</div>
<div class="row_con" @click="chose"> <div class="row_con" @click="chose">
<input type="text" :value="category.category_name" placeholder="请选择报修类型" disabled> <input type="text" :value="category.category_name" placeholder="请选择报修类型" disabled>
<u-icon bold color="#999999" size="30" name="arrow-right"></u-icon> <u-icon bold color="#999999" size="30" name="arrow-right"></u-icon>
@ -29,28 +29,28 @@
</div> </div>
<div class="row"> <div class="row">
<div class="row_label"><span class="red">*</span>问题描述</div> <div class="row_label">问题描述</div>
<div class="row_con"> <div class="row_con">
<input type="text" placeholder="请描述故障" :value="repairInfo" data-name="repairInfo" @input="handlerInputClick"> <input type="text" placeholder="请描述故障" :value="repairInfo" data-name="repairInfo" @input="handlerInputClick">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="row_label"><span class="red">*</span>联系人</div> <div class="row_label">联系人</div>
<div class="row_con"> <div class="row_con">
<input type="text" placeholder="请输入您的姓名" :value="contactName" data-name="contactName" @input="handlerInputClick"> <input type="text" placeholder="请输入您的姓名" :value="contactName" data-name="contactName" @input="handlerInputClick">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="row_label"><span class="red">*</span>联系电话</div> <div class="row_label">联系电话</div>
<div class="row_con"> <div class="row_con">
<input type="number" maxlength="11" placeholder="请输入您的联系方式" :value="contactPhone" data-name="contactPhone" @input="handlerInputClick"> <input type="number" maxlength="11" placeholder="请输入您的联系方式" :value="contactPhone" data-name="contactPhone" @input="handlerInputClick">
</div> </div>
</div> </div>
<div class="row noneBorder"> <div class="row noneBorder">
<div class="row_label"><span class="red">*</span>上门时间</div> <div class="row_label">上门时间</div>
<div class="row_con" @click="choseTime"> <div class="row_con" @click="choseTime">
<input type="text" :value="time" placeholder="请选择上门时间" disabled> <input type="text" :value="time" placeholder="请选择上门时间" disabled>
<u-icon bold color="#999999" size="30" name="arrow-right"></u-icon> <u-icon bold color="#999999" size="30" name="arrow-right"></u-icon>
@ -63,7 +63,7 @@
<div class="row_label">上传图片</div> <div class="row_label">上传图片</div>
<div class="row_con2"> <div class="row_con2">
<u-upload :fileList="imgList" name="imgList" @afterRead="afterReadImg" @delete="deletePic" multiple <u-upload :fileList="imgList" name="imgList" @afterRead="afterReadImg" @delete="deletePic" multiple
:maxCount="5"> :maxCount="10">
<div class="imgCon"> <div class="imgCon">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_imageImg.png" mode="widthFix"></image> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_imageImg.png" mode="widthFix"></image>
上传图片 上传图片
@ -235,55 +235,6 @@ export default {
this.active = e; this.active = e;
}, },
async handlerSubmitClick() { async handlerSubmitClick() {
//
if (!this.roomList[this.active]) {
uni.showToast({
title: '请选择房源信息',
icon: 'none'
});
return;
}
if (!this.category.id) {
uni.showToast({
title: '请选择报修类型',
icon: 'none'
});
return;
}
if (!this.repairInfo.trim()) {
uni.showToast({
title: '请输入问题描述',
icon: 'none'
});
return;
}
if (!this.contactName.trim()) {
uni.showToast({
title: '请输入联系人姓名',
icon: 'none'
});
return;
}
if (!this.contactPhone.trim() || this.contactPhone.length !== 11) {
uni.showToast({
title: '请输入有效的联系电话',
icon: 'none'
});
return;
}
if (!this.time) {
uni.showToast({
title: '请选择上门时间',
icon: 'none'
});
return;
}
uni.showLoading({ uni.showLoading({
title: '提交中' title: '提交中'
}); });

View File

@ -212,10 +212,6 @@ image {
font-size: 24rpx; font-size: 24rpx;
} }
.payItem_money{
width: 150rpx;
}
.bottom { .bottom {
width: 750rpx; width: 750rpx;
background: #FFFFFF; background: #FFFFFF;
@ -413,17 +409,6 @@ image {
font-size: 28rpx; font-size: 28rpx;
color: #000000; color: #000000;
margin-top: 10rpx; margin-top: 10rpx;
display: flex;
}
.PayTypeItem_con_msg2{
font-size: 26rpx;
margin-left: 20rpx;
border: 1rpx solid #f23f17;
padding: 0 10rpx;
background-color: #fde0dc;
color: #f23f17;
border-radius: 20rpx;
} }
.line3 { .line3 {
@ -436,9 +421,8 @@ image {
font-weight: bold; font-weight: bold;
font-size: 50rpx; font-size: 50rpx;
color: #FF370B; color: #FF370B;
/* text-align: center; */ text-align: center;
padding-bottom: 30rpx; padding-bottom: 30rpx;
margin: 0 auto;
} }
.boxshadowCon_subTit span { .boxshadowCon_subTit span {

File diff suppressed because it is too large Load Diff

View File

@ -1,226 +1,187 @@
<template> <template>
<view class="container"> <view class="container">
<u-navbar <u-navbar title=" " leftIconSize="20px" leftIconColor="#FFFFFF" bgColor="transparent" :autoBack="true" />
title=" " <view class="container_body" :style="{ paddingTop: top + 'px' }">
leftIconSize="20px" <view class="title">物业公积金</view>
leftIconColor="#FFFFFF" <view class="title_bottom">
bgColor="transparent" <view>{{ moeny }}</view>
:autoBack="true" <u-icon name="info-circle" size="30rpx" color="linear-gradient( 180deg, #FFFFFF 0%, #FFD7D7 100%);" />
/> </view>
<view class="container_body" :style="{ paddingTop: top + 'px' }"> <view class="name" @click="headerSwitchClick">
<view class="title">物业公积金</view> <text>{{defaultName.name}}</text>
<view class="title_bottom"> <u-icon name="arrow-right" color="#FFFFFF" size="30rpx" />
<view>{{ moeny }}</view> </view>
<u-icon </view>
name="info-circle" <view class="main">
size="30rpx" <view class="person_info" v-for="(item,index) in list.owners" :key="index">
color="linear-gradient( 180deg, #FFFFFF 0%, #FFD7D7 100%);" <view class="item">
/> <view class="label">姓名</view>
</view> <view class="desc">{{ item.name }}</view>
<view class="name" @click="headerSwitchClick"> </view>
<text>{{ defaultName.name }}</text> <view class="item">
<u-icon name="arrow-right" color="#FFFFFF" size="30rpx" /> <view class="label">身份</view>
</view> <view class="desc" v-if="item.type == 1">业主</view>
</view> <view class="desc" v-if="item.type == 2">家属</view>
<view class="main"> <view class="desc" v-if="item.type == 3">租户</view>
<view <view class="desc" v-if="item.type == 4">访客</view>
class="person_info" </view>
v-for="(item, index) in list.owners" <view class="item">
:key="index"
>
<view class="item">
<view class="label">姓名</view>
<view class="desc">{{ item.name }}</view>
</view>
<view class="item">
<view class="label">身份</view>
<view class="desc" v-if="item.type == 1">业主</view>
<view class="desc" v-if="item.type == 2">家属</view>
<view class="desc" v-if="item.type == 3">租户</view>
<view class="desc" v-if="item.type == 4">访客</view>
</view>
<!-- <view class="item">
<view class="label">手机号</view> <view class="label">手机号</view>
<view class="desc">{{item.mobile}}</view> <view class="desc">{{item.mobile}}</view>
</view> --> </view>
<view class="item"> <view class="item">
<view class="label">房产总数</view> <view class="label">房产总数</view>
<view class="desc">{{ item.count_of_rooms }}</view> <view class="desc">{{ item.count_of_rooms }}</view>
</view> </view>
<view class="item"> <view class="item">
<view class="label fix"> <view class="label fix">
<text>物业费公积金总余额</text> <text>物业费公积金总余额</text>
<u-icon <u-icon name="info-circle-fill" size="30rpx" color="red" @click="headerIconClick(index)" />
name="info-circle-fill" <view class="popup" v-if="item.popupShow" @click="headerIconClick(index)">
size="30rpx" {{ item.identity == '业主' ? ownerDesc : desc }}
color="red" <view class="angle"></view>
@click="headerIconClick(index)" </view>
/> </view>
<view <view class="desc">{{item.property_fund_balance}}</view>
class="popup" </view>
v-if="item.popupShow" </view>
@click="headerIconClick(index)" </view>
> <view class="btn">去抵扣物业账单</view>
{{ item.identity == "业主" ? ownerDesc : desc }}
<view class="angle"></view>
</view>
</view>
<view class="desc">{{ item.property_fund_balance }}</view>
</view>
</view>
</view>
<view class="btn" @click="goPay">去抵扣物业账单</view>
<u-popup :show="show" :round="50" @close="close"> <u-popup :show="show" :round="50" @close="close">
<view class="select_Popup"> <view class="select_Popup">
<view class="header"> <view class="header">
<view></view> <view></view>
<view class="title">选择房源</view> <view class="title">选择房源</view>
<view class="close" @click="close">取消</view> <view class="close" @click="close">取消</view>
</view> </view>
<view class="line"></view> <view class="line"></view>
<view class="main"> <view class="main">
<view <view class="item" v-for="(item,index) in houseList" :key="index" @click="headerConfirmClick(item)">
class="item" <text>{{ item.name }}</text>
v-for="(item, index) in houseList" <image
:key="index" v-if="item.checked"
@click="headerConfirmClick(item)" class="pic"
> src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Group_1444.png"
<text>{{ item.name }}</text> mode="scaleToFill"
<image />
v-if="item.checked" <image
class="pic" v-else
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Group_1444.png" class="pic"
mode="scaleToFill" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Ellipse_160.png"
/> mode="scaleToFill"
<image />
v-else </view>
class="pic" </view>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Ellipse_160.png" </view>
mode="scaleToFill" </u-popup>
/> </view>
</view>
</view>
</view>
</u-popup>
</view>
</template> </template>
<script> <script>
import { import {
request, request,
picUrl, picUrl,
uniqueByField, uniqueByField,
menuButtonInfo, menuButtonInfo,
NavgateTo, } from '../../../utils';
} from "../../../utils";
import { apiArr } from '../../../api/v2Community';
import { apiArr } from "../../../api/v2Community";
export default { export default {
data() { data() {
return { return {
top: "", top: '',
moeny: "0.00", moeny: '0.00',
show: false, show: false,
ownerDesc: ownerDesc: '本房产的物业公积金为该房产的所有成员物业公积金总和。无需经过成员同意便可用于本房产的物业费抵扣,一旦成功抵扣,成员所拥有的物业公积金将自动进行扣除。',
"本房产的物业公积金为该房产的所有成员物业公积金总和。无需经过成员同意便可用于本房产的物业费抵扣,一旦成功抵扣,成员所拥有的物业公积金将自动进行扣除。", desc: '物业公积金可通用至您加入的所有房产,任一房产的物业相关费用均可用该物业公积金抵扣。',
desc: "物业公积金可通用至您加入的所有房产,任一房产的物业相关费用均可用该物业公积金抵扣。", defaultName: '',
defaultName: "", list: [
list: [],
houseList: [], ],
roomList: [], houseList: [
],
roomList:[]
}
},
async onLoad(options) {
this.defaultName = {
...this.houseList[0],
checked: true
};
const meun = menuButtonInfo();
this.top = meun.height + meun.top;
await this.getRoomList()
await this.getInfo()
},
itemObj: '',
};
},
async onLoad(options) {
if (options.item) {
this.itemObj = JSON.parse(decodeURIComponent(options.item));
this.defaultName = {
...this.itemObj,
checked: true,
};
} else {
this.defaultName = {
...this.houseList[0],
checked: true,
};
}
console.log(this.itemObj)
const meun = menuButtonInfo();
this.top = meun.height + meun.top;
await this.getRoomList();
await this.getInfo();
},
methods: { methods: {
headerConfirmClick(item) { headerConfirmClick(item) {
this.defaultName = { this.defaultName = {
...item, ...item,
checked: true, checked: true
}; };
this.show = false; this.show = false;
this.getInfo(); this.getInfo()
}, },
// //
headerSwitchClick() { headerSwitchClick() {
this.show = true; this.show = true;
const newRes = this.roomList.map((item) => { const newRes = this.roomList.map(item => {
if (item.name === this.defaultName.name) { if (item.name === this.defaultName.name) {
return { return {
...item, ...item,
checked: true, checked: true
}; }
} }
return { return {
...item, ...item,
checked: false, checked: false
}; }
}); });
console.log("newResnewRes", newRes); console.log('newResnewRes', newRes);
this.houseList = newRes; this.houseList = newRes;
}, },
// //
headerIconClick(ind) { headerIconClick(ind) {
this.list.owners[ind].popupShow = !this.list.owners[ind].popupShow; this.list.owners[ind].popupShow = !this.list.owners[ind].popupShow
}, },
close() { close() {
this.show = false; this.show = false;
}, },
async getRoomList() { async getRoomList(){
await request(apiArr.getCommunityList, "POST", { await request(apiArr.getCommunityList,"POST",{
page_num: 1, page_num:1,
page_size: 50, page_size:50,
community_id: uni.getStorageSync("changeCommData").id, community_id:uni.getStorageSync("changeCommData").id
}).then((res) => { }).then(res=>{
res.rows.forEach((item) => { res.rows.forEach(item=>{
item.checked = false; item.checked = false
}); })
this.roomList = res.rows; this.roomList = res.rows
if (!this.itemObj) { this.defaultName = res.rows[0]
this.defaultName = res.rows[0]; })
} },
}); async getInfo(){
}, await request(apiArr.getGovernmentByRoom,"POST",{
async getInfo() { room_id:this.defaultName.room_id
await request(apiArr.getGovernmentByRoom, "POST", { }).then(res=>{
room_id: this.defaultName.room_id, res.owners.forEach(item => {
}).then((res) => { item.popupShow = false
res.owners.forEach((item) => { });
item.popupShow = false; this.list = res
}); })
this.list = res; },
}); },
}, }
goPay() {
NavgateTo("../propertyPayment/index");
},
},
};
</script> </script>
<style lang="scss"> <style lang="scss">
@import "./index.scss"; @import './index.scss';
</style> </style>

View File

@ -138,7 +138,6 @@ page {
font-size: 28rpx; font-size: 28rpx;
color: #FFA600; color: #FFA600;
font-weight: 600; font-weight: 600;
width: 95rpx;
} }
.orderItem_row_state2 { .orderItem_row_state2 {
color: #FF4800; color: #FF4800;

View File

@ -1,18 +1,9 @@
<template> <template>
<view class="box"> <view class="box">
<div <div class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
class="searchBox"
:style="{ height: localHeight + 'px', paddingTop: top + 'px' }"
>
<div class="searchBox_add"> <div class="searchBox_add">
<div class="searchBox_left"> <div class="searchBox_left">
<u-icon <u-icon bold color="#000" size="40" name="arrow-left" @click="back"></u-icon>
bold
color="#000"
size="40"
name="arrow-left"
@click="back"
></u-icon>
</div> </div>
<div class="searchBox_mid">我的报修</div> <div class="searchBox_mid">我的报修</div>
<div class="searchBox_right"></div> <div class="searchBox_right"></div>
@ -20,38 +11,21 @@
</div> </div>
<div class="tabList"> <div class="tabList">
<div <div :class="active == 1 ? 'tab active' : 'tab'" @click="headerTabsClick(1)">
:class="active == 1 ? 'tab active' : 'tab'"
@click="headerTabsClick(1)"
>
待指派 <span>({{ awaitingNumb }})</span> 待指派 <span>({{ awaitingNumb }})</span>
</div> </div>
<div <div :class="active == 2 ? 'tab active' : 'tab'" @click="headerTabsClick(2)">
:class="active == 2 ? 'tab active' : 'tab'"
@click="headerTabsClick(2)"
>
进行中 <span>({{ underwayNum }})</span> 进行中 <span>({{ underwayNum }})</span>
</div> </div>
<div <div :class="active == 4 ? 'tab active' : 'tab'" @click="headerTabsClick(4)">
:class="active == 4 ? 'tab active' : 'tab'"
@click="headerTabsClick(4)"
>
已作废 <span>({{ discardNum }})</span> 已作废 <span>({{ discardNum }})</span>
</div> </div>
<div <div :class="active == 3 ? 'tab active' : 'tab'" @click="headerTabsClick(3)">
:class="active == 3 ? 'tab active' : 'tab'"
@click="headerTabsClick(3)"
>
已完成 <span>({{ doneNum }})</span> 已完成 <span>({{ doneNum }})</span>
</div> </div>
</div> </div>
<div <div v-if="list.length !== 0" class="orderList" v-for="(item, index) in list" :key="index">
v-if="list.length !== 0"
class="orderList"
v-for="(item, index) in list"
:key="index"
>
<div class="orderItem" @click="handlerDetailClick(item.id)"> <div class="orderItem" @click="handlerDetailClick(item.id)">
<div :class="['orderItemTit', statusType[item.status].style]"> <div :class="['orderItemTit', statusType[item.status].style]">
<div class="orderItemTit_left">工单编号{{ item.order_code }}</div> <div class="orderItemTit_left">工单编号{{ item.order_code }}</div>
@ -61,11 +35,10 @@
<div class="df"> <div class="df">
<div class="orderItem_row_label">小区房源名称</div> <div class="orderItem_row_label">小区房源名称</div>
<div class="orderItem_row_con">{{ item.room.name }}</div> <div class="orderItem_row_con">{{ item.room.name }}</div>
<div </div>
:class="['orderItem_row_state', statusType[item.status].color]"
> <div :class="['orderItem_row_state', statusType[item.status].color]">
{{ statusType[item.status].desc }} {{ statusType[item.status].desc }}
</div>
</div> </div>
</div> </div>
@ -97,10 +70,8 @@
</div> </div>
<div v-if="list.length == 0" class="empty"> <div v-if="list.length == 0" class="empty">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyList_empty.png"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyList_empty.png" mode="aspectFill"></image>
mode="aspectFill"
></image>
暂无数据 暂无数据
</div> </div>
@ -121,31 +92,31 @@ export default {
page_size: 10, page_size: 10,
flag: false, // flag: false, //
list: [], // list: [], //
awaitingNumb: "", // awaitingNumb: '', //
underwayNum: "", // underwayNum: '', //
doneNum: "", // doneNum: '', //
discardNum: "", // discardNum: '', //
// //
statusType: { statusType: {
1: { 1: {
desc: "待指派", desc: "待指派",
style: "orderItemTit_state1", style: "orderItemTit_state1",
color: "orderItem_row_state1", color: "orderItem_row_state1"
}, },
2: { 2: {
desc: "进行中", desc: "进行中",
style: "orderItemTit_state2", style: "orderItemTit_state2",
color: "orderItem_row_state2", color: "orderItem_row_state2"
}, },
3: { 3: {
desc: "已完成", desc: "已完成",
style: "orderItemTit_state3", style: "orderItemTit_state3",
color: "orderItem_row_state3", color: "orderItem_row_state3"
}, },
4: { 4: {
desc: "已作废", desc: "已作废",
style: "orderItemTit_state4", style: "orderItemTit_state4",
color: "orderItem_row_state4", color: "orderItem_row_state4"
}, },
}, },
}; };
@ -166,13 +137,12 @@ export default {
this.getTabsList(); this.getTabsList();
}, },
async init() { async init() {
const [awaitingNumb, underwayNum, doneNum, discardNum] = const [awaitingNumb, underwayNum, doneNum, discardNum] = await Promise.all([
await Promise.all([ this.awaitingRes(),
this.awaitingRes(), this.underwayRes(),
this.underwayRes(), this.doneRes(),
this.doneRes(), this.discardRes(),
this.discardRes(), ]);
]);
this.awaitingNumb = awaitingNumb; this.awaitingNumb = awaitingNumb;
this.underwayNum = underwayNum; this.underwayNum = underwayNum;
this.discardNum = discardNum; this.discardNum = discardNum;
@ -218,7 +188,7 @@ export default {
// //
async discardRes() { async discardRes() {
const res = await request(apiArr.getWorkOrderCrudList, "POST", { const res = await request(apiArr.getWorkOrderCrudList, "POST", {
status: 4, status: 3,
page_num: this.page_num, page_num: this.page_num,
page_size: this.page_size, page_size: this.page_size,
}); });
@ -227,7 +197,7 @@ export default {
// //
async doneRes() { async doneRes() {
const res = await request(apiArr.getWorkOrderCrudList, "POST", { const res = await request(apiArr.getWorkOrderCrudList, "POST", {
status: 3, status: 4,
page_num: this.page_num, page_num: this.page_num,
page_size: this.page_size, page_size: this.page_size,
}); });
@ -236,9 +206,9 @@ export default {
back() { back() {
uni.navigateBack({ uni.navigateBack({
delta: 1, delta: 1
}); })
}, }
}, },
onLoad(options) { onLoad(options) {

View File

@ -146,7 +146,7 @@
</view> </view>
</view> </view>
<!-- <nav-footer :current="4" /> --> <nav-footer :current="3" />
<!-- 回到顶部 --> <!-- 回到顶部 -->
<div class="toUp" @click="scrollToTop"> <div class="toUp" @click="scrollToTop">
@ -304,7 +304,7 @@ export default {
// //
lookNotice() { lookNotice() {
NavgateTo("/packages/homeServer/noticeManage/index"); NavgateTo("/packages/homeServer/noticeDetials/index");
}, },
}, },
onLoad() { onLoad() {

View File

@ -148,7 +148,7 @@ page {
} }
.master_info_right2 { .master_info_right2 {
font-size: 26rpx; font-size: 28rpx;
color: #999999; color: #999999;
display: flex; display: flex;
align-items: center; align-items: center;
@ -423,12 +423,6 @@ page {
margin-right: 6rpx; margin-right: 6rpx;
} }
.evaluateItem_msg3{
font-size: 24rpx;
margin-left: 15rpx;
font-weight: bold;
}
.evaluateItem_main { .evaluateItem_main {
font-size: 26rpx; font-size: 26rpx;
color: #222222; color: #222222;
@ -454,9 +448,9 @@ page {
} }
.footerbtn1 { .footerbtn1 {
width: 300rpx; width: 200rpx;
height: 70rpx; height: 70rpx;
background: linear-gradient(91deg, #ff765a 0%, #ff3d11 100%); background: linear-gradient(91deg, #FFB95E 0%, #FF9100 100%);
border-radius: 100rpx 100rpx 100rpx 100rpx; border-radius: 100rpx 100rpx 100rpx 100rpx;
font-size: 36rpx; font-size: 36rpx;
color: #FFFFFF; color: #FFFFFF;
@ -507,114 +501,4 @@ page {
text-align: center; text-align: center;
padding: 20rpx; padding: 20rpx;
box-sizing: border-box; box-sizing: border-box;
}
.shadow {
background: rgba(0, 0, 0, 0.4);
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 9;
}
.shadowBox1 {
height: 250rpx;
width: 100%;
background-color: #fff;
position: absolute;
left: 0;
bottom: 0;
display: flex;
}
.shadowBox1Item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 26rpx;
color: #000000;
}
.shadowBox1Item image {
width: 100rpx;
height: 100rpx;
margin-bottom: 26rpx;
}
.shadowBox2 {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: auto;
height: auto;
}
.shadowBox_img {
width: 600rpx;
height: 750rpx;
background-color: white;
background-size: 100% 100%;
border-radius: 30rpx;
}
.boxshadow_btnList{
display: flex;
justify-content: center;
}
.shadowBox_btn1 {
font-size: 30rpx;
color: #FFFFFF;
width: 250rpx;
height: 70rpx;
background: #08c161;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 30rpx 10rpx;
}
.shadowBox_btn2 {
font-size: 30rpx;
color: #FFFFFF;
width: 250rpx;
height: 70rpx;
background: #fe380e;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 30rpx 10rpx;
}
.boxshadow_tit {
font-size: 32rpx;
color: #222222;
text-align: center;
padding-top: 40rpx;
margin-bottom: 30rpx;
}
.boxshadow_text{
font-size: 26rpx;
color: #a3a3a3;
text-align: center;
}
.boxshadow_text2{
font-size: 28rpx;
text-align: center;
margin: 20rpx;
}
.boxshadow_img {
width: 250rpx;
height: 250rpx;
margin: 0 auto;
margin-top: 40rpx;
} }

View File

@ -13,7 +13,7 @@
@click="back" @click="back"
></u-icon> ></u-icon>
</view> </view>
<div class="searchBox_mid">人员详情</div> <div class="searchBox_mid">刘师傅</div>
<div class="searchBox_right"> <div class="searchBox_right">
<u-icon <u-icon
bold bold
@ -43,9 +43,7 @@
<div class="master"> <div class="master">
<div class="master_info"> <div class="master_info">
<div class="master_info_left"> <div class="master_info_left">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
></image>
<div class="state state1">待服务</div> <div class="state state1">待服务</div>
<div class="state state2" v-if="false">休息中</div> <div class="state state2" v-if="false">休息中</div>
<div class="state state3" v-if="false">服务中</div> <div class="state state3" v-if="false">服务中</div>
@ -148,9 +146,7 @@
<div class="Tit">职业证书</div> <div class="Tit">职业证书</div>
<div class="imgList"> <div class="imgList">
<div class="imgItem" v-for="(item, index) in 5" :key="index"> <div class="imgItem" v-for="(item, index) in 5" :key="index">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
></image>
</div> </div>
</div> </div>
</div> </div>
@ -159,9 +155,7 @@
<div class="master_info mt20" v-for="(item, index) in 3" :key="index"> <div class="master_info mt20" v-for="(item, index) in 3" :key="index">
<div class="master_info_left"> <div class="master_info_left">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
></image>
<div class="state state1">待服务</div> <div class="state state1">待服务</div>
<div class="state state2" v-if="false">休息中</div> <div class="state state2" v-if="false">休息中</div>
<div class="state state3" v-if="false">服务中</div> <div class="state state3" v-if="false">服务中</div>
@ -214,9 +208,7 @@
<div class="master"> <div class="master">
<div class="master_info"> <div class="master_info">
<div class="master_info_left"> <div class="master_info_left">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
></image>
<div class="state state1">待服务</div> <div class="state state1">待服务</div>
<div class="state state2" v-if="false">休息中</div> <div class="state state2" v-if="false">休息中</div>
<div class="state state3" v-if="false">服务中</div> <div class="state state3" v-if="false">服务中</div>
@ -241,8 +233,7 @@
<span>4.8</span> <span>4.8</span>
</div> </div>
<div class="master_info_right2"> <div class="master_info_right2">
<div>工号<span>123456</span></div> 价格范围 <span>500-800</span>
<div>价格范围 <span>500-800</span></div>
</div> </div>
<div class="master_info_right3"> <div class="master_info_right3">
<div class="master_info_right3_item"> <div class="master_info_right3_item">
@ -322,9 +313,7 @@
<div class="EvaluateItem"> <div class="EvaluateItem">
<div class="evaluateItem_header"> <div class="evaluateItem_header">
<div class="evaluateItem_ava"> <div class="evaluateItem_ava">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
></image>
</div> </div>
<div class="evaluateItem_msg"> <div class="evaluateItem_msg">
<div class="evaluateItem_msg1">TP</div> <div class="evaluateItem_msg1">TP</div>
@ -334,7 +323,6 @@
:key="index" :key="index"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_stait.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_stait.png"
></image> ></image>
<span class="evaluateItem_msg3">技术评级100</span>
</div> </div>
</div> </div>
<div class="evaluateItem_time">2025-06-24</div> <div class="evaluateItem_time">2025-06-24</div>
@ -348,9 +336,7 @@
<div class="Tit">职业证书</div> <div class="Tit">职业证书</div>
<div class="imgList"> <div class="imgList">
<div class="imgItem" v-for="(item, index) in 5" :key="index"> <div class="imgItem" v-for="(item, index) in 5" :key="index">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
></image>
</div> </div>
</div> </div>
</div> </div>
@ -361,9 +347,9 @@
<div class="footerIcon" @click="Vendor"> <div class="footerIcon" @click="Vendor">
<image <image
id="footerIcon1" id="footerIcon1"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_shop.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_serverInfoIcon.png"
></image> ></image>
店铺 服务商
</div> </div>
<div class="footerIcon"> <div class="footerIcon">
<image <image
@ -372,37 +358,9 @@
></image> ></image>
收藏 收藏
</div> </div>
<div class="footerIcon"> <div class="footerbtn1">联系客服</div>
<image <div class="footerbtn2">立即预约</div>
@click="openSave"
id="footerIcon2"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share.png"
></image>
分享
</div>
<div class="footerbtn1">联系客服咨询</div>
<!-- <div class="footerbtn2">立即预约</div> -->
</div> </div>
<!-- 分享 -->
<view class="shadow" @click="changeShadow2" v-if="boxshadow2">
<view class="shadowBox2">
<view class="shadowBox_img">
<view class="boxshadow_tit">分享服务给朋友</view>
<view class="boxshadow_text">将服务人员信息分享给微信,</view>
<view class="boxshadow_text">好友对方可以直接查看详情</view>
<view class="boxshadow_text2">张师傅</view>
<view class="boxshadow_img">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/erweima.png"> </image>
</view>
<view class="boxshadow_text2">扫描二维码查看服务详情</view>
<view class="boxshadow_btnList">
<view class="shadowBox_btn1">分享到微信</view>
<view class="shadowBox_btn2">保存二维码</view>
</view>
</view>
</view>
</view>
</view> </view>
</template> </template>
@ -420,7 +378,6 @@ export default {
return { return {
top: "", top: "",
localHeight: "", localHeight: "",
boxshadow2: false,
}; };
}, },
methods: { methods: {
@ -433,13 +390,6 @@ export default {
back() { back() {
NavgateTo("1"); NavgateTo("1");
}, },
openSave() {
this.boxshadow2 = true;
},
changeShadow2() {
this.boxshadow2 = false;
},
}, },
onReady() {}, onReady() {},

View File

@ -1,49 +0,0 @@
page {
background-color: #f6f7fb;
}
.container {
padding: 30rpx;
}
.notice-item {
border-radius: 20rpx;
margin-bottom: 25rpx;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.notice-image {
width: 100%;
height: 400rpx;
border-radius: 20rpx 20rpx 0 0;
}
.notice-main {
background-color: white;
border-radius: 0 0 20rpx 20rpx;
padding: 20rpx 15rpx;
}
.notice-title {
font-size: 30rpx;
font-weight: bold;
}
.notice-content {
font-size: 28ropx;
color: #586271;
margin: 20rpx 0;
}
.notice-date {
display: flex;
font-size: 26rpx;
color: #a0a7b1;
align-items: center;
}
.date-image {
width: 25rpx;
height: 25rpx;
margin-right: 10rpx;
}

View File

@ -1,58 +0,0 @@
<template>
<view class="container">
<view v-for="(item, index) in noticeList" :key="index">
<view class="notice-item" @click="toNoticeDetail(item)">
<image :src="item.image" class="notice-image"></image>
<view class="notice-main">
<view class="notice-title">{{ item.title }}</view>
<view class="notice-content">{{ item.content }}</view>
<view class="notice-date">
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/time.png"
class="date-image"
></image>
<view>{{ item.date }}</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import {
request,
picUrl,
NavgateTo,
menuButtonInfo,
} from "../../../utils/index";
export default {
data() {
return {
noticeList: [
{
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "公告标题1",
content: "公告内容",
date: "2023-01-01",
},
{
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "公告标题2",
content: "公告内容",
date: "2023-01-02",
},
],
};
},
methods: {
toNoticeDetail(item) {
NavgateTo("/packages/homeServer/noticeDetails/index");
},
},
};
</script>
<style>
@import url("./index.css");
</style>

View File

@ -78,43 +78,6 @@
} }
} }
.tabs {
align-items: center;
background: #ffffff;
height: 100rpx;
padding: 0 20rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
width: 600rpx;
margin: 0 auto;
}
.tabItem {
font-size: 25rpx;
color: #222222;
margin-right: 60rpx;
height: 42rpx;
}
.active2 {
font-size: 25rpx;
font-weight: 700;
position: relative;
}
.active2::after {
content: '';
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png) no-repeat;
background-size: 100% 100%;
width: 52rpx;
height: 22rpx;
position: absolute;
left: 50%;
bottom: -16rpx;
transform: translateX(-50%);
}
/* 搜索指定内容 */ /* 搜索指定内容 */
.specifiedContent { .specifiedContent {
min-height: 30rpx; min-height: 30rpx;
@ -190,10 +153,6 @@
.hot-services { .hot-services {
margin: 20rpx; margin: 20rpx;
border: 1rpx solid #e8e8e8; border: 1rpx solid #e8e8e8;
display: flex;
flex-direction: column;
height: 80vh;
overflow-y: auto;
} }
.section-header { .section-header {

View File

@ -18,7 +18,7 @@
<input <input
type="text" type="text"
class="search-input" class="search-input"
placeholder="请输入内容" placeholder="请选择搜索指定内容"
v-model="searchText" v-model="searchText"
@confirm="handleSearch" @confirm="handleSearch"
/> />
@ -26,7 +26,7 @@
</view> </view>
<!-- 搜索指定内容 --> <!-- 搜索指定内容 -->
<!-- <view <view
class="specifiedContent" class="specifiedContent"
v-if="!isLoading && specifiedContent.length > 0 && !hasResult" v-if="!isLoading && specifiedContent.length > 0 && !hasResult"
> >
@ -42,7 +42,7 @@
<view>{{ item.name }}</view> <view>{{ item.name }}</view>
</view> </view>
</view> </view>
</view> --> </view>
<!-- 搜索历史 --> <!-- 搜索历史 -->
<view <view
@ -73,31 +73,12 @@
<!-- 搜索结果 --> <!-- 搜索结果 -->
<view class="search-result" v-if="!isLoading && hasResult"> <view class="search-result" v-if="!isLoading && hasResult">
<view class="tabs"> <view class="hot-services">
<view
v-for="(item, index) in categoryList"
:key="index"
:class="['tabItem', selectedTab === index ? 'active2' : '']"
@click="selectTab(index, item)"
>
{{ item.category_name }}
</view>
</view>
<!-- 全部 -->
<searchAll v-if="selectedTab === 0" class="searchAll" />
<!-- 店铺 -->
<searchShop v-if="selectedTab === 1" class="searchShop" />
<!-- 服务 -->
<view class="hot-services" v-if="selectedTab === 2">
<view class="service-list"> <view class="service-list">
<view <view
class="service-card" class="service-card"
v-for="(service, index) in hotServiceList" v-for="(service, index) in hotServiceList"
:key="index" :key="index"
@click="navigateToReservation(service)"
> >
<image <image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/ceshi.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/ceshi.png"
@ -118,12 +99,12 @@
</view> </view>
<view class="service-info-right"> <view class="service-info-right">
<view class="service-footer"> <view class="service-footer">
<!-- <view <view
class="service-button" class="service-button"
@click="navigateToReservation(service)" @click="navigateToReservation(service)"
> >
<text class="button-text" @click="goSubscribe">去预约</text> <text class="button-text" @click="goSubscribe">去预约</text>
</view> --> </view>
<text class="service-count">{{ service.count }}</text> <text class="service-count">{{ service.count }}</text>
</view> </view>
</view> </view>
@ -140,10 +121,9 @@
</view> </view>
<!-- 回到顶部 --> <!-- 回到顶部 -->
<u-back-top :scroll-top="scrollTop"></u-back-top> <div
<!-- <div
class="toUp" class="toUp"
v-show="isShowToTop" v-show="searchHistory.length > 0 && isShowToTop"
@click="scrollToTop" @click="scrollToTop"
> >
<u-badge <u-badge
@ -152,23 +132,15 @@
max="99" max="99"
:value="value" :value="value"
></u-badge> ></u-badge>
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/toUp.png"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/toUp.png" </div>
></image>
</div> -->
</view> </view>
</template> </template>
<script> <script>
import { request, NavgateTo } from "../../../utils/index"; import { request, NavgateTo } from "../../../utils/index";
import SearchAll from "../searchAll/index.vue";
import SearchShop from "../searchShop/index.vue";
export default { export default {
components: {
SearchAll,
SearchShop,
},
data() { data() {
return { return {
isShowToTop: false, isShowToTop: false,
@ -200,58 +172,10 @@ export default {
description: "专业保洁团队,全屋深度清洁,去除顽固污渍,还您清新居所", description: "专业保洁团队,全屋深度清洁,去除顽固污渍,还您清新居所",
count: "已预约100+", count: "已预约100+",
}, },
{
id: 1,
name: "空调清洗",
image: "",
badge: "推荐",
tag: "平台保障",
description: "专业保洁团队,全屋深度清洁,去除顽固污渍,还您清新居所",
count: "已预约100+",
},
{
id: 1,
name: "空调清洗",
image: "",
badge: "推荐",
tag: "平台保障",
description: "专业保洁团队,全屋深度清洁,去除顽固污渍,还您清新居所",
count: "已预约100+",
},
{
id: 1,
name: "空调清洗",
image: "",
badge: "推荐",
tag: "平台保障",
description: "专业保洁团队,全屋深度清洁,去除顽固污渍,还您清新居所",
count: "已预约100+",
},
{
id: 1,
name: "空调清洗",
image: "",
badge: "推荐",
tag: "平台保障",
description: "专业保洁团队,全屋深度清洁,去除顽固污渍,还您清新居所",
count: "已预约100+",
},
], ],
categoryList: [
{ category_name: "全部" },
{ category_name: "店铺" },
{ category_name: "服务" },
],
selectedTab: 0,
scrollTop: 0
}; };
}, },
onPageScroll(e) {
this.scrollTop = e.scrollTop;
},
created() { created() {
const history = uni.getStorageSync("searchHistory") || []; const history = uni.getStorageSync("searchHistory") || [];
this.searchHistory = history; this.searchHistory = history;
@ -262,8 +186,8 @@ export default {
window.removeEventListener("scroll", this.handleScroll); window.removeEventListener("scroll", this.handleScroll);
}, },
methods: { methods: {
handleScroll(e) { handleScroll() {
this.isShowToTop = e.detail.scrollTop > 0; this.isShowToTop = window.pageYOffset > 200;
}, },
scrollToTop() { scrollToTop() {
uni.pageScrollTo({ uni.pageScrollTo({
@ -274,9 +198,6 @@ export default {
back() { back() {
NavgateTo("1"); NavgateTo("1");
}, },
selectTab(index, item) {
this.selectedTab = index;
},
// //
handleSearch() { handleSearch() {
const keyword = this.searchText.trim(); const keyword = this.searchText.trim();
@ -335,18 +256,10 @@ export default {
goSubscribe() { goSubscribe() {
NavgateTo("/packages/homeServer/searchInfo/index"); NavgateTo("/packages/homeServer/searchInfo/index");
}, },
navigateToReservation(item) {
uni.navigateTo({
url: `/packages/homeServer/serverInfo/index?service=${encodeURIComponent(
JSON.stringify(item)
)}`,
});
},
}, },
}; };
</script> </script>
<style> <style>
@import url("./index.css"); @import url("./index.css");
</style> </style>

View File

@ -1,509 +0,0 @@
page {
padding: 0 !important;
}
.container2 {
display: flex;
flex-direction: column;
height: 83vh;
overflow: hidden;
}
.main {
flex: 1;
box-sizing: border-box;
overflow: hidden;
overflow-y: auto;
position: relative;
padding-bottom: 160rpx;
}
.searchBox {
display: flex;
align-items: center;
background-color: #fff;
}
.Filter {
display: flex;
align-items: center;
background-color: #fff;
margin-top: -20rpx;
}
.Filter_right {
width: 133rpx;
height: 110rpx;
background: #FFFFFF;
border-radius: 0rpx 0rpx 0rpx 0rpx;
font-size: 26rpx;
color: #333;
display: flex;
align-items: center;
justify-content: center;
margin-left: 200rpx;
}
.activeFilter{
color: #FF370B;
}
.Filter_right image {
width: 22rpx;
height: 24rpx;
margin-left: 7rpx;
}
.iptBox {
width: 431rpx;
height: 70rpx;
background: #F6F7FB;
border-radius: 100rpx 100rpx 100rpx 100rpx;
margin-left: 40rpx;
display: flex;
align-items: center;
padding-left: 30rpx;
box-sizing: border-box;
}
.iptBox image {
width: 30rpx;
height: 30rpx;
margin-right: 16rpx;
}
.iptBox .u-input {
padding: 0 !important;
background-color: transparent !important;
}
.Filter_left {
display: flex;
align-items: center;
overflow: hidden;
overflow-x: auto;
white-space: nowrap;
}
/* 选中状态图片样式 */
.iconStyle {
width: 25rpx !important;
height: 45rpx !important;
}
/* 默认状态样式 */
.FilterItem image:not(.iconStyle) {
width: 20rpx;
height: 20rpx;
}
.FilterItem:not(.active) {
/* 默认字体样式 */
font-size: 26rpx;
color: #333;
}
.FilterItem {
font-size: 26rpx;
color: #222222;
display: flex;
align-items: center;
padding: 0 20rpx;
margin-right: 10rpx;
}
.FilterItem image {
width: 24rpx;
height: 15rpx;
margin-left: 10rpx;
}
.MasterList {
margin-top: 30rpx;
background-color: #fff;
padding: 12rpx 20rpx 20rpx 20rpx;
}
.MasterItem {
display: flex;
align-items: center;
margin-bottom: 20rpx;
border-bottom: 1rpx solid #EBEBEB;
box-sizing: border-box;
padding-bottom: 30rpx;
padding-top: 20rpx;
}
.MasterItem:last-child {
border-bottom: none;
}
.MasterItem_right {
flex: 1;
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
}
.MasterItem_info {
box-sizing: border-box;
display: flex;
align-items: flex-start;
}
.MasterItem_Info_left {
display: flex;
flex-direction: column;
justify-content: center;
width: 130rpx;
margin-right: 40rpx;
}
.MasterItem_Info_left image {
width: 130rpx;
height: 130rpx;
}
.state {
width: 110rpx;
height: 40rpx;
border-radius: 100rpx 100rpx 100rpx 100rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 26rpx;
color: #FFFFFF;
margin: 0 auto;
margin-top: -20rpx;
z-index: 2;
position: relative;
}
.state1 {
background: #AECE2B;
}
.state2 {
background: #CECECE;
}
.state3 {
background: #FF370B;
}
.MasterItem_Info_right {
flex: 1;
}
.filter-section {
padding: 20rpx 30rpx;
border-bottom: 1rpx solid #f5f5f5;
}
.filter-title {
font-size: 28rpx;
color: #333;
margin-bottom: 20rpx;
font-weight: bold;
}
.filter-options {
display: flex;
flex-wrap: wrap;
gap: 15rpx;
}
.filter-option {
background: #f5f5f5;
border-radius: 50rpx;
padding: 12rpx 30rpx;
font-size: 24rpx;
color: #666;
white-space: nowrap;
}
.filter-option.active {
background: #ff370b;
color: white;
}
.price-range {
display: flex;
align-items: center;
gap: 20rpx;
margin-top: 10rpx;
}
.price-input {
flex: 1;
height: 60rpx;
background: #f5f5f5;
border-radius: 10rpx;
padding: 0 20rpx;
font-size: 24rpx;
border: none;
}
.price-separator {
font-size: 28rpx;
color: #999;
}
.filter-buttons {
display: flex;
justify-content: space-between;
padding: 20rpx 30rpx;
margin-top: 10rpx;
}
.reset-button {
width: 200rpx;
height: 70rpx;
border: 1rpx solid #7abbff;
border-radius: 50rpx;
background: #f0f7ff;
color: #409eff;
font-size: 28rpx;
}
.confirm-button {
width: 200rpx;
height: 70rpx;
background: #409eff;
border-radius: 50rpx;
color: white;
font-size: 28rpx;
border: none;
}
.MasterItem_Info_right_1 {
display: flex;
align-items: center;
font-size: 36rpx;
color: #222222;
justify-content: space-between;
}
.Medal {
width: 35rpx;
height: 40rpx;
margin-left: 6rpx;
margin-right: 28rpx;
}
.star {
width: 22rpx;
height: 22rpx;
margin-right: 6rpx;
}
.MasterItem_Info_right_1 span {
font-size: 26rpx;
color: #000000;
}
.MasterItem_Info_right_2 {
font-size: 26rpx;
color: #999999;
margin-top: 8rpx;
}
.MasterItem_Info_right_3 {
font-size: 26rpx;
display: flex;
color: #999999;
align-items: center;
margin-top: 16rpx;
}
.MasterItem_Info_right_3 span {
color: #FF370B;
}
.MasterItem_Info_right_4 {
display: flex;
align-items: center;
margin-top: 16rpx;
}
.tagItem {
width: 130rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 100rpx 100rpx 100rpx 100rpx;
font-size: 22rpx;
color: #555555;
margin-right: 10rpx;
}
.tag1 {
background: rgba(255, 178, 23, 0.1);
}
.tag2 {
background: rgba(255, 81, 42, 0.1);
}
.tag3 {
background: rgba(175, 175, 175, 0.1);
}
.MasterItem_Info_right_5 {
font-size: 28rpx;
color: #999999;
display: flex;
align-items: center;
margin-top: 16rpx;
}
.MasterItem_Info_right_5 span {
color: #FF370B;
}
.MasterItem_Info_right_6 {
display: flex;
align-items: center;
margin-top: 20rpx;
}
.MasterItem_Info_right_6 image {
width: 110rpx;
height: 110rpx;
margin-right: 20rpx;
border-radius: 20rpx;
overflow: hidden;
}
.Btn {
font-size: 36rpx;
color: #FFFFFF;
width: 600rpx;
height: 90rpx;
background: linear-gradient(91deg, #FF7658 0%, #FF370B 100%);
border-radius: 100rpx 100rpx 100rpx 100rpx;
display: flex;
align-items: center;
justify-content: center;
position: fixed;
left: 50%;
bottom: 60rpx;
transform: translateX(-50%);
z-index: 3;
}
.local {
display: flex;
align-items: center;
}
.local span {
font-weight: 700;
}
.filterMore1 {
display: flex;
align-items: center;
overflow: hidden;
overflow-x: auto;
white-space: nowrap;
margin-top: 20rpx;
}
.filterMoreItem {
font-size: 28rpx;
color: #222222;
display: flex;
align-items: center;
background-color: #f6f6fa;
padding: 0 20rpx;
margin-right: 10rpx;
margin-right: 20rpx;
border-radius: 20rpx;
padding: 10rpx 20rpx;
}
.filterMore2_item {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20rpx;
color: #999;
}
.filterMore2_item_left {}
.active3 {
color: #ff702c !important;
}
.filterMore2_item_left2 {
color: #000;
}
.filterMore3Item {
font-size: 26rpx;
color: #555555;
width: 130rpx;
height: 50rpx;
background: #F6F7FB;
border-radius: 10rpx 10rpx 10rpx 10rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 40rpx;
margin-bottom: 18rpx;
}
.filterMore3Item:nth-child(4n) {
margin-right: 0;
}
.fullscreen-black-bg {
/* position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100vh;
background-color: rgba(0, 0, 0, .4);
box-sizing: border-box;
z-index: 9;
overflow: hidden; */
}
.FilterMore3 {
width: 100%;
background-color: #fff;
padding: 20rpx;
box-sizing: border-box;
display: flex;
flex-wrap: wrap;
}
.FilterMore {
width: 100%;
background-color: #fff;
padding: 20rpx;
box-sizing: border-box;
}
.dialogBox {
position: absolute;
background-color: rgba(0, 0, 0, .4);
z-index: 8;
width: 100%;
height: 100%;
}
.master_info_right_left {
display: flex;
align-items: center;
}
.master_info_right_right {
font-size: 28rpx;
color: #FF370B;
}

View File

@ -1,433 +0,0 @@
<template>
<view class="container2">
<div class="header">
<div class="Filter">
<div class="Filter_left">
<div
v-for="filter in filters"
:key="filter.id"
class="FilterItem"
:class="{ active: selectedFilter === filter.id }"
@click="
showDialog(filter.id);
selectedFilter = filter.id;
"
>
{{ filter.label }}
<image
:src="
selectedFilter === filter.id
? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/search_up.png'
: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png'
"
:class="{ iconStyle: selectedFilter === filter.id }"
></image>
</div>
</div>
<div class="Filter_right" @click="showDialog(6)">
<text :class="{ activeFilter: show6 }">筛选</text>
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filter.png"
></image>
</div>
</div>
<!-- 位置筛选 -->
<div class="FilterMore" v-if="show1">
<div class="local">距离 <span>上海公馆</span></div>
<div class="filterMore1">
<div class="filterMoreItem">附近</div>
<div class="filterMoreItem">500m</div>
<div class="filterMoreItem">1km</div>
<div class="filterMoreItem">3km</div>
<div class="filterMoreItem">5km</div>
<div class="filterMoreItem">10km</div>
</div>
</div>
<!-- 综合筛选 -->
<div class="FilterMore" v-if="show2">
<div class="filterMore2_item">
<div class="filterMore2_item_left">综合</div>
<div class="filterMore2_item_right">
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
</div>
</div>
<div class="filterMore2_item">
<div class="filterMore2_item_left active3">从高到低</div>
<div class="filterMore2_item_right">
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
</div>
</div>
<div class="filterMore2_item">
<div class="filterMore2_item_left">从低到高</div>
<div class="filterMore2_item_right">
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
</div>
</div>
</div>
<!-- 排序筛选 -->
<div class="FilterMore" v-if="show3">
<div class="filterMore2_item">
<div class="filterMore2_item_left2">智能排序</div>
<div class="filterMore2_item_right">
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
</div>
</div>
<div class="filterMore2_item">
<div class="filterMore2_item_left2 active3">距离优先</div>
<div class="filterMore2_item_right">
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
</div>
</div>
<div class="filterMore2_item">
<div class="filterMore2_item_left2">好评优先</div>
<div class="filterMore2_item_right">
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
</div>
</div>
<div class="filterMore2_item">
<div class="filterMore2_item_left2">销量优先</div>
<div class="filterMore2_item_right">
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
</div>
</div>
</div>
<!-- 高级筛选面板 -->
<div class="FilterMore" v-if="show6">
<div class="filter-section">
<div class="filter-title">满意度</div>
<div class="filter-options">
<div
class="filter-option"
:class="{ active: selectedSatisfaction.includes('5+') }"
@click="toggleSatisfaction('5+')"
>
5分及以上
</div>
<div
class="filter-option"
:class="{ active: selectedSatisfaction.includes('4.9+') }"
@click="toggleSatisfaction('4.9+')"
>
4.9分及以上
</div>
<div
class="filter-option"
:class="{ active: selectedSatisfaction.includes('4.8+') }"
@click="toggleSatisfaction('4.8+')"
>
4.8分及以上
</div>
<div
class="filter-option"
:class="{ active: selectedSatisfaction.includes('4.7+') }"
@click="toggleSatisfaction('4.7+')"
>
4.7分及以上
</div>
<div
class="filter-option"
:class="{ active: selectedSatisfaction.includes('4.6+') }"
@click="toggleSatisfaction('4.6+')"
>
4.6分及以上
</div>
<div
class="filter-option"
:class="{ active: selectedSatisfaction.includes('4.5+') }"
@click="toggleSatisfaction('4.5+')"
>
4.5分及以上
</div>
</div>
</div>
<div class="filter-section">
<div class="filter-title">评论数量</div>
<div class="filter-options">
<div
class="filter-option"
:class="{ active: selectedReviewCount === '1-100' }"
@click="selectedReviewCount = '1-100'"
>
1-100
</div>
<div
class="filter-option"
:class="{ active: selectedReviewCount === '100-500' }"
@click="selectedReviewCount = '100-500'"
>
100-500
</div>
<div
class="filter-option"
:class="{ active: selectedReviewCount === '500+' }"
@click="selectedReviewCount = '500+'"
>
500以上
</div>
</div>
</div>
<div class="filter-section">
<div class="filter-title">价格范围</div>
<div class="price-range">
<input
type="number"
v-model="minPrice"
placeholder="最低价"
class="price-input"
@input="validatePriceRange"
/>
<span class="price-separator"></span>
<input
type="number"
v-model="maxPrice"
placeholder="最高价"
class="price-input"
@input="validatePriceRange"
/>
</div>
</div>
<div class="filter-section">
<div class="filter-title">类别</div>
<div class="filter-options">
<div
class="filter-option"
:class="{ active: selectedCategory === 'airConditioner' }"
@click="selectedCategory = 'airConditioner'"
>
空调维修
</div>
<div
class="filter-option"
:class="{ active: selectedCategory === 'refrigerator' }"
@click="selectedCategory = 'refrigerator'"
>
冰箱维修
</div>
</div>
</div>
<div class="filter-buttons">
<button class="reset-button" @click="resetFilters">重置</button>
<button class="confirm-button" @click="applyFilters">确定</button>
</div>
</div>
</div>
<div class="main">
<!-- 遮罩 -->
<div class="dialogBox" v-if="isShowDia"></div>
<div class="MasterList">
<div class="MasterItem" v-for="(item, index) in 5" :key="index">
<div class="MasterItem_right">
<div class="MasterItem_info">
<div class="MasterItem_Info_left">
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
></image>
<div class="state state1">待服务</div>
<div class="state state2" v-if="false">休息中</div>
<div class="state state3" v-if="false">服务中</div>
</div>
<div class="MasterItem_Info_right">
<div class="MasterItem_Info_right_1">
<div class="master_info_right_left">
林师傅
<image
class="Medal"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png"
>
</image>
<image
class="Medal"
v-if="false"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png"
>
</image>
<image
class="star"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"
></image>
<span>4.8</span>
</div>
<div class="master_info_right_right" @click="masterInfo">
查看资料
</div>
</div>
<div class="MasterItem_Info_right_2">
52 广东梅州人 5-10
</div>
<div class="MasterItem_Info_right_3">
<span>500+</span>预定 <span>100+</span>评价
</div>
<div class="MasterItem_Info_right_4">
<div class="tagItem tag1">积极主动</div>
<div class="tagItem tag2">技术精湛</div>
<div class="tagItem tag3">技术精湛</div>
</div>
<div class="MasterItem_Info_right_5">
价格范围 <span>500-800</span>
</div>
<div class="MasterItem_Info_right_6">
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
></image>
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
></image>
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
></image>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</view>
</template>
<style scoped>
.FilterItem.active {
color: red;
}
</style>
<script>
import {
request,
picUrl,
NavgateTo,
menuButtonInfo,
} from "../../../utils/index";
import { apiArr } from "../../../api/reservation";
export default {
data() {
return {
top: "",
localHeight: "",
selectedFilter: null,
//
filters: [
{ id: 1, label: "附近" },
{ id: 2, label: "综合" },
{ id: 3, label: "排序" },
],
show1: false,
show2: false,
show3: false,
show4: false,
show5: false,
show6: false,
isShowDia: false,
selectedSatisfaction: [],
selectedReviewCount: null,
selectedCategory: null,
minPrice: 0,
maxPrice: "",
};
},
watch: {
show1(val) {
if (!val) this.selectedFilter = null;
},
show2(val) {
if (!val) this.selectedFilter = null;
},
show3(val) {
if (!val) this.selectedFilter = null;
},
show6(val) {
if (!val) this.selectedFilter = null;
},
},
methods: {
masterInfo() {
NavgateTo("../masterInfo/index");
},
back() {
NavgateTo("1");
},
toggleSatisfaction(value) {
const index = this.selectedSatisfaction.indexOf(value);
if (index === -1) {
this.selectedSatisfaction.push(value);
} else {
this.selectedSatisfaction.splice(index, 1);
}
},
validatePriceRange() {
// 0-99999
if (this.minPrice < 0) this.minPrice = 0;
if (this.minPrice > 99999) this.minPrice = 99999;
// 0-99999
if (
this.maxPrice &&
(this.maxPrice < this.minPrice || this.maxPrice > 99999)
) {
this.maxPrice = Math.min(Math.max(this.maxPrice, this.minPrice), 99999);
}
},
resetFilters() {
this.selectedSatisfaction = [];
this.selectedReviewCount = null;
this.selectedCategory = null;
this.minPrice = 0;
this.maxPrice = "";
},
applyFilters() {
const filterData = {
satisfaction: this.selectedSatisfaction,
reviewCount: this.selectedReviewCount,
category: this.selectedCategory,
priceRange: {
min: this.minPrice || 0,
max: this.maxPrice || 99999,
},
};
console.log("筛选条件:", filterData);
this.show6 = false;
this.isShowDia = false;
},
showDialog(index) {
this[`show${index}`] = !this[`show${index}`];
this.logOtherButtons(index);
this.isShowDia = this[`show${index}`];
},
logOtherButtons(excludeIndex) {
for (let i = 1; i <= 6; i++) {
if (i !== excludeIndex) {
this[`show${i}`] = false;
}
}
},
},
onReady() {},
onLoad(options) {
const meun = menuButtonInfo();
this.top = meun.top;
this.localHeight = meun.height;
},
onShow() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
};
</script>
<style>
@import url("./index.css");
</style>

View File

@ -4,15 +4,14 @@ page {
} }
.container { .container {
display: grid; display: flex;
grid-template-rows: auto 1fr; flex-direction: column;
height: 100vh; height: 100vh;
overflow: hidden; overflow: hidden;
} }
.header { .header {
z-index: 9; z-index: 9;
overflow-x: auto;
} }
.main { .main {

View File

@ -62,13 +62,6 @@
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
></image> ></image>
</div> </div>
<div class="FilterItem" @click="showDialog(6)">
地区
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
></image>
</div>
</div> </div>
<div class="Filter_right"> <div class="Filter_right">
@ -154,50 +147,12 @@
</div> </div>
</div> </div>
<!-- 地区筛选 -->
<u-popup :show="show6" @close="close" v-if="show6">
<view>
<picker-view
indicator-style="height: 50px;"
style="width: 100%; height: 400rpx"
:value="id"
@change="bindChange"
>
<picker-view-column>
<view
v-for="(item, index) in provList"
:key="index"
style="line-height: 50px; text-align: center"
>{{ item.short_name }}</view
>
</picker-view-column>
<picker-view-column>
<view
v-for="(item, index) in defaultCity"
:key="index"
style="line-height: 50px; text-align: center"
>{{ item.short_name }}</view
>
</picker-view-column>
<picker-view-column>
<view
v-for="(item, index) in defaultDist"
:key="index"
style="line-height: 50px; text-align: center"
>{{ item.short_name }}</view
>
</picker-view-column>
</picker-view>
</view>
</u-popup>
<div class="main"> <div class="main">
<!-- 遮罩 --> <!-- 遮罩 -->
<div class="dialogBox" v-if="isShowDia"></div> <div class="dialogBox" v-if="isShowDia"></div>
<div class="MasterList"> <div class="MasterList">
<div class="MasterItem" v-for="(item, index) in 5" :key="index"> <div class="MasterItem" v-for="(item, index) in 3" :key="index">
<div class="MasterItem_right"> <div class="MasterItem_right">
<div class="MasterItem_info"> <div class="MasterItem_info">
<div class="MasterItem_Info_left"> <div class="MasterItem_Info_left">
@ -267,7 +222,7 @@
</div> </div>
</div> </div>
<!-- <div class="Btn">确定</div> --> <div class="Btn">确定</div>
</div> </div>
</view> </view>
</template> </template>
@ -280,7 +235,6 @@ import {
menuButtonInfo, menuButtonInfo,
} from "../../../utils/index"; } from "../../../utils/index";
import { apiArr } from "../../../api/reservation"; import { apiArr } from "../../../api/reservation";
import { apiArr as apiArr2 } from "../../../api/area";
export default { export default {
data() { data() {
@ -292,19 +246,7 @@ export default {
show3: false, show3: false,
show4: false, show4: false,
show5: false, show5: false,
show6: false,
isShowDia: false, isShowDia: false,
id: [0, 0, 0], //
provList: [], //
cityList: [], //
distList: [], //
defaultCity: [], //
defaultDist: [], // /
confirmProv: {}, //
confirmProv1: {},
confirmCity: {}, //
confirmDist: {}, // /
}; };
}, },
methods: { methods: {
@ -318,97 +260,15 @@ export default {
showDialog(index) { showDialog(index) {
this[`show${index}`] = !this[`show${index}`]; this[`show${index}`] = !this[`show${index}`];
this.logOtherButtons(index); this.logOtherButtons(index);
this.isShowDia = this[`show${index}`]; this.isShowDia = this[`show${index}`]
},
close() {
this.show6 = false;
this.isShowDia = false;
}, },
logOtherButtons(excludeIndex) { logOtherButtons(excludeIndex) {
for (let i = 1; i <= 6; i++) { for (let i = 1; i <= 5; i++) {
if (i == 6) {
this.getProvList();
}
if (i !== excludeIndex) { if (i !== excludeIndex) {
this[`show${i}`] = false; this[`show${i}`] = false
} }
} }
}, },
/////////////////////////////////// ///////////////////////////////////////////
//
async getProvList() {
const res = await request(apiArr2.getArea, "POST", {}, { silent: false });
this.provList = res.rows;
this.confirmProv1 = res.rows[0];
//
this.getCityList(0);
//
},
//
async getCityList(sq = 0, x = 0) {
console.log("11swq", sq);
console.log("获取x", x);
if (!this.sf && this.cityList.length > 0) {
console.log("省份没变,查市跟区", this.cityList);
let newDist = this.cityList[sq];
console.log("新的市信息", newDist);
if (this.xsq.ad_code !== newDist.ad_code) {
console.log("新市区跟旧市区不一直");
this.xsq = newDist;
this.getDistList(this.confirmCity, x);
} else {
console.log("新市区跟旧市区一直");
this.confirmDist = this.defaultDist[x];
}
return;
}
const res = await request(
apiArr2.getArea,
"POST",
{ parent_ad_code: this.confirmProv1.ad_code },
{ silent: false }
);
this.cityList = res.rows;
let newDist;
this.defaultCity = res.rows;
this.confirmCity = res.rows[0]; //
this.getDistList(newDist, x);
},
// /
async getDistList(xsq, x) {
console.log("页面传递的x", x);
const res = await request(
apiArr2.getArea,
"POST",
{ parent_ad_code: xsq ? xsq.ad_code : this.confirmCity.ad_code },
{ silent: false }
);
this.distList = res.rows;
this.defaultDist = res.rows;
this.confirmDist = res.rows[0]; //
this.id = [0, 0, 0]; //
},
//
bindChange(e) {
console.log("[1231331], e", e);
const { value } = e.detail;
// // /
let newCrty = this.provList[value[0]];
console.log("新的省份信息", newCrty);
console.log("旧的省信息", this.confirmProv1);
if (newCrty.ad_code === this.confirmProv1.ad_code) {
console.log("省份信息没变");
this.sf = false;
} else {
this.sf = true;
}
console.log("this.cityListthis.cityList", this.cityList);
this.confirmProv1 = newCrty;
this.getCityList(value[1], value[2]);
},
}, },
onReady() {}, onReady() {},
@ -417,7 +277,6 @@ export default {
this.top = meun.top; this.top = meun.top;
// this.top = meun.height + meun.top; // this.top = meun.height + meun.top;
this.localHeight = meun.height; this.localHeight = meun.height;
this.getProvList(); //
}, },
onShow() {}, onShow() {},

View File

@ -1,73 +0,0 @@
.shop-list {
padding: 20rpx;
display: flex;
flex-direction: column;
height: 80vh;
overflow-y: auto;
}
.shop-card {
display: flex;
align-items: center;
padding: 20rpx;
border-bottom: 1rpx solid #f5f5f5;
}
.shop-img {
width: 160rpx;
height: 160rpx;
border-radius: 10rpx;
margin-right: 20rpx;
}
.shop-info {
flex: 1;
}
.shop-title {
font-size: 32rpx;
font-weight: bold;
color: #333;
margin-bottom: 10rpx;
}
.shop-rating {
display: flex;
align-items: center;
font-size: 24rpx;
color: #999;
}
.rating-count {
margin-right: 15rpx;
align-items: center;
font-size: 24rpx;
color: #999;
margin: 20rpx 0;
}
.rating-stars {
color: #FFC107;
margin-right: 15rpx;
}
.distance {
margin-right: 15rpx;
}
.fans {
margin-right: 15rpx;
}
.enter-shop-btn {
width: 120rpx;
height: 60rpx;
background-color: #FF370B;
color: white;
border-radius: 30rpx;
border: none;
font-size: 28rpx;
display: flex;
align-items: center;
justify-content: center;
}

View File

@ -1,213 +0,0 @@
<template>
<view class="shop-list">
<view class="shop-card" v-for="shop in shops" :key="shop.id">
<image :src="shop.image" class="shop-img"></image>
<view class="shop-info">
<view class="shop-title">{{ shop.title }}</view>
<view class="rating-count">{{ shop.ratingCount }}条评价</view>
<view class="shop-rating">
<view class="rating-stars">
<text class="star"></text>
<text class="rating-score">{{ shop.rating }}</text>
</view>
<view class="distance">
<text class="distance-value">{{ shop.distance }}km</text>
</view>
<view class="fans">
<text class="fans-count">{{ shop.fans }}个粉丝</text>
</view>
</view>
</view>
<button class="enter-shop-btn" @click="goShop">进店</button>
</view>
</view>
</template>
<script>
import {
request,
picUrl,
NavgateTo,
menuButtonInfo,
} from "../../../utils/index";
export default {
data() {
return {
shops: [
{
id: 1,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 2,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 3,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 4,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 5,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 6,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
{
id: 7,
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
title: "专业到家服务",
ratingCount: 5,
rating: 4.8,
distance: 3.0,
fans: 120,
},
],
};
},
methods: {
goShop() {
NavgateTo("../vendor/index");
},
},
};
</script>
<style>
@import url("./index.css");
</style>

View File

@ -10,29 +10,6 @@
height: 307rpx; height: 307rpx;
} }
.cirList {
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto;
margin-top: 10rpx;
padding-bottom: 20rpx;
}
.cir {
width: 6rpx;
height: 6rpx;
border-radius: 50%;
background-color: #333;
margin-right: 6rpx;
}
.active {
width: 12rpx;
height: 6rpx;
border-radius: 100rpx;
}
.dotList { .dotList {
display: flex; display: flex;
align-items: center; align-items: center;
@ -115,7 +92,7 @@
} }
.serverListTit { .serverListTit {
font-size: 32rpx; font-size: 63rpx;
color: #222222; color: #222222;
font-weight: 600; font-weight: 600;
} }
@ -142,7 +119,6 @@
} }
.msg_tit { .msg_tit {
display: flex;
font-size: 30rpx; font-size: 30rpx;
color: #222222; color: #222222;
margin-bottom: 20rpx; margin-bottom: 20rpx;
@ -169,7 +145,15 @@
justify-content: center; justify-content: center;
font-size: 30rpx; font-size: 30rpx;
color: #FFFFFF; color: #FFFFFF;
margin-left: 200rpx; }
.serverItem_right_btn .more {
width: 26rpx;
height: 26rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
} }
.range { .range {
@ -202,131 +186,4 @@
/* 添加左右间距 */ /* 添加左右间距 */
min-width: 0; min-width: 0;
/* 防止 flex 子项溢出 */ /* 防止 flex 子项溢出 */
}
.msg_meta {
display: flex;
align-items: center;
margin-bottom: 12rpx;
font-size: 24rpx;
color: #666666;
}
.msg_meta .rating,
.msg_meta .distance,
.msg_meta .served {
display: flex;
align-items: center;
margin-right: 20rpx;
}
.infoImage {
width: 25rpx;
height: 25rpx;
margin-right: 5rpx;
}
.tabs {
display: flex;
align-items: center;
background: #ffffff;
height: 100rpx;
padding: 0 20rpx;
box-sizing: border-box;
display: flex;
overflow-x: auto;
white-space: nowrap;
}
.tabItem {
font-size: 25rpx;
color: #222222;
margin-right: 60rpx;
height: 42rpx;
}
.active2 {
font-size: 25rpx;
font-weight: 700;
position: relative;
}
.active2::after {
content: '';
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png) no-repeat;
background-size: 100% 100%;
width: 52rpx;
height: 22rpx;
position: absolute;
left: 50%;
bottom: -16rpx;
transform: translateX(-50%);
}
.FilterMore {
width: 100%;
height: 220rpx;
background-color: #fff;
padding: 20rpx;
box-sizing: border-box;
/* 添加阴影 */
box-shadow: 0 0 8rpx rgba(0, 0, 0, 0.1);
}
.filter-section {
padding: 20rpx 30rpx;
border-bottom: 1rpx solid #f5f5f5;
}
.filter-title {
font-size: 28rpx;
color: #333;
margin-bottom: 20rpx;
font-weight: bold;
}
.price-range {
display: flex;
align-items: center;
gap: 20rpx;
margin-top: 10rpx;
}
.price-input {
flex: 1;
height: 60rpx;
background: #f5f5f5;
border-radius: 10rpx;
padding: 0 20rpx;
font-size: 24rpx;
border: none;
}
.filter-buttons {
display: flex;
justify-content: space-between;
padding: 20rpx 30rpx;
margin-bottom: 10rpx;
}
.reset-button {
width: 150rpx;
height: 50rpx;
border: 1rpx solid #7abbff;
border-radius: 50rpx;
background: #f0f7ff;
color: #409eff;
font-size: 26rpx;
line-height: 50rpx;
}
.confirm-button {
width: 150rpx;
height: 50rpx;
background: #409eff;
border-radius: 50rpx;
color: white;
font-size: 26rpx;
border: none;
line-height: 50rpx;
} }

View File

@ -1,249 +1,125 @@
<template> <template>
<view class="container"> <view class="container">
<div class="banner"> <div class="banner">
<swiper @animationfinish="swipers" autoplay circular> <swiper>
<swiper-item <swiper-item>
v-for="(item, index) in bannerList" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_banner.png"></image>
:key="index" </swiper-item>
@click="lookImage(item, index)" </swiper>
> <div class="dotList">
<image :src="item.pic_src" mode="aspectFill" /> <div class="dot active"></div>
</swiper-item> <div class="dot"></div>
</swiper> <div class="dot"></div>
<view class="cirList">
<view
:class="['cir', currentIdx == index ? 'active' : '']"
v-for="(item, index) in bannerList"
:key="index"
>
</view>
</view>
</div>
<div class="line"></div>
<div class="serverTitBox">
<div class="serverTit">
<div class="serverTit_left">
<div class="tit">空调清洗</div>
<div class="msg">平台保障</div>
</div>
<div class="serverTit_right">已预约100+</div>
</div>
<div class="serverCon">
专业保洁团队全屋深度清洁去除顽固污渍还您清新居所还您清新居所
</div>
</div>
<div class="line"></div>
<div class="serverList">
<div class="serverListTit">找到8个匹配服务商</div>
<view class="tabs">
<view
v-for="(item, index) in categoryList"
:key="index"
:class="['tabItem', selectedTab === index ? 'active2' : '']"
@click="selectTab(index, item)"
>
{{ item.category_name }}
</view>
</view>
<div class="FilterMore" v-if="showPrice">
<div class="filter-section">
<div class="price-range">
<input
type="number"
v-model="minPrice"
placeholder="最低价"
class="price-input"
@input="validatePriceRange"
/>
<span class="price-separator"></span>
<input
type="number"
v-model="maxPrice"
placeholder="最高价"
class="price-input"
@input="validatePriceRange"
/>
</div>
</div>
<div class="filter-buttons">
<button class="reset-button" @click="resetFilters">重置</button>
<button class="confirm-button" @click="applyFilters">确定</button>
</div>
</div>
<div class="serverItem" @click="selectVendor">
<div class="serverItem_left">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png"></image>
</div>
<div class="serverItem_right">
<div class="serverItem_right_msg">
<div class="msg_tit">
<view>安心家政</view>
<div class="serverItem_right_btn" @click="selectMaster">
选择服务
</div>
</div> </div>
<div class="msg_meta">
<span class="rating">
<image
class="infoImage"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/serverInfo_xing.png"
/>
4.8
</span>
<span class="distance">
<image
class="infoImage"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/serverInfo_weizhi.png"
/>3.3km</span
>
<span class="served">
<image
class="infoImage"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/serverInfo_fuwu.png"
/>12226</span
>
</div>
<div class="msg_price">价格范围 <span>80-150</span></div>
</div>
</div> </div>
</div> <div class="line"></div>
</div> <div class="serverTitBox">
</view> <div class="serverTit">
<div class="serverTit_left">
<div class="tit">空调清洗</div>
<div class="msg">
平台保障
</div>
</div>
<div class="serverTit_right">已预约100+</div>
</div>
<div class="serverCon">专业保洁团队全屋深度清洁去除顽固污渍还您清新居所还您清新居所</div>
</div>
<div class="line"></div>
<div class="priceSelect">
<div class="tit">价格范围</div>
<div class="range">
<div class="minPrice">10</div>
<slider-range style="flex: 1;" :value="rangeValue" :min="rangeMin" :max="rangeMax" :step="5" :bar-height="3"
:block-size="26" background-color="#EEEEF6" active-color="#FF6B00" :format="format"
:decorationVisible="true" @change="handleRangeChange"></slider-range>
<div class="maxPrice">39</div>
</div>
</div>
<div class="serverList">
<div class="serverListTit">匹配的服务商(3)</div>
<div class="serverItem" @click="selectVendor">
<div class="serverItem_left">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/test.png"></image>
</div>
<div class="serverItem_right">
<div class="serverItem_right_msg">
<div class="msg_tit">安心家政</div>
<div class="msg_price">价格范围 <span>80-150</span></div>
</div>
<div class="serverItem_right_btn" @click="selectMaster">
选择师傅
<div class="more">
<u-icon name="arrow-right" color="#fff" size="28"></u-icon>
</div>
</div>
</div>
</div>
</div>
</view>
</template> </template>
<script> <script>
import { import { request, picUrl, NavgateTo, menuButtonInfo } from '../../../utils/index';
request, import { apiArr } from '../../../api/reservation';
picUrl, import SliderRange from '@/components/primewind-sliderrange/components/primewind-sliderrange/index.vue'
NavgateTo,
menuButtonInfo,
} from "../../../utils/index";
import { apiArr } from "../../../api/reservation";
import SliderRange from "@/components/primewind-sliderrange/components/primewind-sliderrange/index.vue";
export default { export default {
components: { components: {
// //
SliderRange, SliderRange
}, },
data() { data() {
return { return {
bannerList: [ top: "",
{ localHeight: "",
pic_src: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png", rangeMin: 5,
rangeMax: 200,
rangeValue: [10, 50]
}
},
methods: {
format(val) {
return val + '%'
}, },
{ handleRangeChange(e) {
pic_src: this.rangeValue = e
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_banner.png",
}, },
{ selectVendor(){
pic_src: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png", NavgateTo("../vendor/index")
}, },
], selectMaster(){
currentIdx: 0, NavgateTo("../chooseMaster/index")
top: "",
localHeight: "",
rangeMin: 5,
rangeMax: 200,
rangeValue: [10, 50],
selectedTab: 0,
categoryList: [
{ category_name: "推荐" },
{ category_name: "评分优先" },
{ category_name: "距离最近" },
{ category_name: "价格最低" },
{ category_name: "服务最多" },
{ category_name: "价格范围" },
],
showPrice: false,
minPrice: "",
maxPrice: "",
};
},
methods: {
swipers(e) {
this.currentIdx = e.detail.current;
},
format(val) {
return val + "%";
},
handleRangeChange(e) {
this.rangeValue = e;
},
selectVendor() {
// NavgateTo("../vendor/index");
NavgateTo("../searchInfo/index");
},
selectMaster() {
NavgateTo("../searchInfo/index");
},
lookImage(item, index) {
// URL
const urls = this.bannerList.map((item) => item.pic_src);
// UniAppAPI
uni.previewImage({
current: index,
urls: urls,
loop: true,
});
},
selectTab(index, item) {
this.selectedTab = index;
if (item.category_name === "价格范围") {
this.showPrice = !this.showPrice;
} else {
this.showPrice = false;
}
},
validatePriceRange() {
// 0-99999
if (this.minPrice < 0) this.minPrice = 0;
if (this.minPrice > 99999) this.minPrice = 99999;
// 0-99999
if (
this.maxPrice &&
(this.maxPrice < this.minPrice || this.maxPrice > 99999)
) {
this.maxPrice = Math.min(Math.max(this.maxPrice, this.minPrice), 99999);
}
},
resetFilters() {
this.minPrice = "";
this.maxPrice = "";
},
applyFilters() {
const filterData = {
priceRange: {
min: this.minPrice || 0,
max: this.maxPrice || 99999,
}, },
};
console.log("筛选条件:", filterData);
this.showPrice = false;
}, },
}, onReady() {
onReady() {},
onLoad(options) { },
const meun = menuButtonInfo();
this.top = meun.top;
this.localHeight = meun.height;
},
onShow() {},
/** onLoad(options) {
* 页面上拉触底事件的处理函数 const meun = menuButtonInfo();
*/ this.top = meun.top;
onReachBottom() {}, this.localHeight = meun.height;
}; },
onShow() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
}
</script> </script>
<style> <style>
@import url("./index.css"); @import url("./index.css");
</style> </style>

View File

@ -56,26 +56,6 @@ image {
margin-top: 30rpx; margin-top: 30rpx;
} }
.Msg_con_img {
display: flex;
flex-wrap: wrap;
width: 100%;
margin-top: 15rpx;
gap: 15rpx;
}
.Msg_con_img image {
width: calc(33.33% - 11rpx);
height: 225rpx;
flex-shrink: 0;
}
.Msg_con_video{
width: calc(33.33% - 11rpx);
height: 225rpx;
flex-shrink: 0;
}
.Msg_iconList_leftIcon { .Msg_iconList_leftIcon {
display: flex; display: flex;
align-items: center; align-items: center;
@ -137,11 +117,9 @@ image {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.comment_con input{
.comment_con input {
flex: 1; flex: 1;
} }
.comment_con image { .comment_con image {
width: 28.3rpx; width: 28.3rpx;
height: 28rpx; height: 28rpx;

View File

@ -3,14 +3,13 @@
<div class="Msg"> <div class="Msg">
<div class="Msg_Tit"> <div class="Msg_Tit">
<div class="Msg_Tit_left"> <div class="Msg_Tit_left">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/user_ava.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/user_ava.png" v-if="!info.user.avatar" mode="aspectFill">
v-if="!info.user.avatar" mode="aspectFill">
</image> </image>
<image :src="picUrl + info.user.avatar" v-if="info.user.avatar" mode="aspectFill"></image> <image :src="picUrl + info.user.avatar" v-if="info.user.avatar" mode="aspectFill"></image>
{{ info.user.nick_name }} {{ info.user.nick_name }}
</div> </div>
<div class="Msg_Tit_right"> <div class="Msg_Tit_right">
<image v-for="(item, index) in 5" :key="index" <image v-for="indez in 5"
:src="indez < info.satisfaction ? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png' : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png'" :src="indez < info.satisfaction ? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png' : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png'"
mode="aspectFill"></image> mode="aspectFill"></image>
</div> </div>
@ -18,46 +17,35 @@
<div class="Msg_con"> <div class="Msg_con">
{{ info.comment }} {{ info.comment }}
<div class="Msg_con_img" v-if="info.image_url">
<image v-for="(img, index) in info.image_url.split(',')" :key="index" :src="picUrl + img"
mode="aspectFill"></image>
<video class="Msg_con_video" v-if="info.video_url" :src="picUrl + info.video_url" controls></video>
</div>
</div> </div>
<div class="Msg_iconList"> <div class="Msg_iconList">
<div class="Msg_iconList_left"> <div class="Msg_iconList_left">
<div class="Msg_iconList_leftIcon"> <div class="Msg_iconList_leftIcon">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_review.png" mode="widthFix"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_review.png"
mode="widthFix"></image>
{{ info.merchant_evaluation_reply_list ? info.merchant_evaluation_reply_list.length : 0 }} {{ info.merchant_evaluation_reply_list ? info.merchant_evaluation_reply_list.length : 0 }}
</div> </div>
<div class="Msg_iconList_leftIcon"> <div class="Msg_iconList_leftIcon">
<image v-if="info.is_like == 2" <image v-if="info.is_like == 2" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon.png" mode="widthFix"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon.png" @click="like(info)"></image>
mode="widthFix" @click="like(info)"></image> <image v-if="info.is_like == 1" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon2.png"
<image v-if="info.is_like == 1"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon2.png"
mode="widthFix" @click="unlike(info)"></image> mode="widthFix" @click="unlike(info)"></image>
{{ info.merchant_evaluation_like_list ? info.merchant_evaluation_like_list.length : 0 }} {{ info.merchant_evaluation_like_list ? info.merchant_evaluation_like_list.length : 0 }}
</div> </div>
</div> </div>
<div class="Msg_iconList_right"> <div class="Msg_iconList_right">
<div class="Msg_iconList_leftIcon" @click="deletes" v-if="isDelte"> <div class="Msg_iconList_leftIcon" @click="deletes" v-if="isDelte">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_del.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_del.png" mode="widthFix"></image>
mode="widthFix"></image>
</div> </div>
</div> </div>
</div> </div>
<!-- 回复列表 --> <!-- 回复列表 -->
<div class="reply" v-for="(item, index) in replyList" :key="index"> <div class="reply" v-for="item in replyList">
<div class="reply_tit"> <div class="reply_tit">
<div class="reply_tit_left"> <div class="reply_tit_left">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/user_ava.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/user_ava.png" v-if="!item.user.avatar" mode="aspectFill">
v-if="!item.user.avatar" mode="aspectFill">
</image> </image>
<image :src="picUrl + item.user.avatar" v-if="item.user.avatar" mode="aspectFill"></image> <image :src="picUrl + item.user.avatar" v-if="item.user.avatar" mode="aspectFill"></image>
{{ item.user.nick_name }} {{ item.user.nick_name }}
@ -70,8 +58,7 @@
<div class="comment"> <div class="comment">
<div class="comment_con"> <div class="comment_con">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_send.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_send.png" mode="aspectFill"></image>
mode="aspectFill"></image>
<input type="text" v-model="reply_content" placeholder="说点什么"> <input type="text" v-model="reply_content" placeholder="说点什么">
<button id="send" @click="sendComment">发送</button> <button id="send" @click="sendComment">发送</button>
@ -129,14 +116,6 @@ export default {
sendComment() { sendComment() {
// //
console.log('发送评论'); console.log('发送评论');
if (!this.reply_content) {
uni.showToast({
title: "请输入评论内容",
icon: "none",
duration: 2000
})
return
}
let that = this let that = this
request(apiArr.createUserReply, "POST", { request(apiArr.createUserReply, "POST", {
evaluation_id: that.info.id, evaluation_id: that.info.id,
@ -188,9 +167,7 @@ export default {
request(apiArr.userCommentInfo, "POST", { request(apiArr.userCommentInfo, "POST", {
id: that.id id: that.id
}).then(res => { }).then(res => {
res.merchant_evaluation_reply_list = res.merchant_evaluation_reply_list.filter((item) => { console.log(res);
return item.status == 2;
});
that.info = res that.info = res
if (res.user_id == uni.getStorageSync('userId')) { if (res.user_id == uni.getStorageSync('userId')) {
that.isDelte = true that.isDelte = true
@ -246,9 +223,6 @@ export default {
that.flag = false that.flag = false
} }
that.page_num++ that.page_num++
res.rows = res.rows.filter((item) => {
return item.status == 2;
});
that.replyList = that.replyList.concat(res.rows) that.replyList = that.replyList.concat(res.rows)
}) })
}, },

View File

@ -179,26 +179,6 @@ page {
margin-top: 30rpx; margin-top: 30rpx;
} }
.Msg_con_img {
display: flex;
flex-wrap: wrap;
width: 100%;
margin-top: 15rpx;
gap: 15rpx;
}
.Msg_con_img image {
width: calc(33.33% - 11rpx);
height: 225rpx;
flex-shrink: 0;
}
.Msg_con_video{
width: calc(33.33% - 11rpx);
height: 225rpx;
flex-shrink: 0;
}
.Msg_iconList_leftIcon { .Msg_iconList_leftIcon {
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -12,7 +12,7 @@
<!-- <u-icon name="star-fill" color="#FFB84D" /> --> <!-- <u-icon name="star-fill" color="#FFB84D" /> -->
<div class="startList"> <div class="startList">
<image v-for="index in 5" :key="index" <image v-for="index in 5"
:src="index < item.rating ? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png' : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png'" :src="index < item.rating ? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png' : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png'"
mode="aspectFill"></image> mode="aspectFill"></image>
</div> </div>
@ -42,17 +42,16 @@
</view> </view>
</view> </view>
<view class="white_container detail" v-for="(item, index) in commentList" :key="index"> <view class="white_container detail" v-for="item in commentList">
<div class="Msg"> <div class="Msg">
<div class="Msg_Tit"> <div class="Msg_Tit">
<div class="Msg_Tit_left"> <div class="Msg_Tit_left">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/user_ava.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/user_ava.png" v-if="!item.user.avatar" mode="aspectFill"></image>
v-if="!item.user.avatar" mode="aspectFill"></image>
<image :src="picUrl + item.user.avatar" v-if="item.user.avatar" mode="aspectFill"></image> <image :src="picUrl + item.user.avatar" v-if="item.user.avatar" mode="aspectFill"></image>
{{ item.user.nick_name }} {{ item.user.nick_name }}
</div> </div>
<div class="Msg_Tit_right"> <div class="Msg_Tit_right">
<image v-for="indez in 5" :key="indez" <image v-for="indez in 5"
:src="indez < item.satisfaction ? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png' : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png'" :src="indez < item.satisfaction ? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png' : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png'"
mode="aspectFill"></image> mode="aspectFill"></image>
</div> </div>
@ -60,28 +59,20 @@
<div class="Msg_con"> <div class="Msg_con">
{{ item.comment }} {{ item.comment }}
<div class="Msg_con_img" v-if="item.image_url">
<image v-for="(img, index) in item.image_url.split(',')" :key="index" :src="picUrl + img" mode="aspectFill">
</image>
<video class="Msg_con_video" v-if="item.video_url" :src="picUrl + item.video_url" controls></video>
</div>
</div> </div>
<div class="Msg_iconList"> <div class="Msg_iconList">
<div class="Msg_iconList_left"> <div class="Msg_iconList_left">
<div class="Msg_iconList_leftIcon"> <div class="Msg_iconList_leftIcon">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_review.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_review.png" mode="widthFix"></image>
mode="widthFix"></image>
{{ item.merchant_evaluation_reply_list ? item.merchant_evaluation_reply_list.length : 0 }} {{ item.merchant_evaluation_reply_list ? item.merchant_evaluation_reply_list.length : 0 }}
</div> </div>
<div class="Msg_iconList_leftIcon"> <div class="Msg_iconList_leftIcon">
<image v-if="item.is_like == 2" <image v-if="item.is_like == 2" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon.png" mode="widthFix"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon.png" @click="like(item)"></image>
mode="widthFix" @click="like(item)"></image> <image v-if="item.is_like == 1" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon2.png" mode="widthFix"
<image v-if="item.is_like == 1" @click="unlike(item)"></image>
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon2.png"
mode="widthFix" @click="unlike(item)"></image>
{{ item.merchant_evaluation_like_list ? item.merchant_evaluation_like_list.length : 0 }} {{ item.merchant_evaluation_like_list ? item.merchant_evaluation_like_list.length : 0 }}
</div> </div>
</div> </div>
@ -98,18 +89,15 @@
<view>导航</view> <view>导航</view>
</view> </view>
<view class="left_label" @click="handlePhoneClick"> <view class="left_label" @click="handlePhoneClick">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/localLife_detail_Frame.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/localLife_detail_Frame.png" mode="" />
mode="" />
<view>电话</view> <view>电话</view>
</view> </view>
<view class="left_label" @click="handleDiscussClick"> <view class="left_label" @click="handleDiscussClick">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/localLife_shopList_Group_1334.png" mode="" />
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/localLife_shopList_Group_1334.png"
mode="" />
<view>点评</view> <view>点评</view>
</view> </view>
</view> </view>
<text v-if="isShow" class="btn" @click="handleQuickPayClick">快捷买单</text> <text class="btn" @click="handleQuickPayClick">快捷买单</text>
</view> </view>
</view> </view>
</template> </template>
@ -132,18 +120,16 @@ export default {
page_size: 10, page_size: 10,
commentList: [], commentList: [],
flag: false, flag: false,
isShow: false,
}; };
}, },
onLoad(options) { onLoad(options) {
this.info = uni.getStorageSync("merchantInfo") this.info = uni.getStorageSync("merchantInfo")
}, },
onShow() { onShow(){
this.page_num = 1 this.page_num = 1
this.flag = false this.flag = false
this.commentList = [] this.commentList = []
this.getCommentList() this.getCommentList()
this.getMerchantInfo()
}, },
onReachBottom() { onReachBottom() {
if (this.flag) { if (this.flag) {
@ -168,26 +154,7 @@ export default {
} else { } else {
this.flag = false; this.flag = false;
} }
this.isShow = res.rows[0].merchant_info.quick_purchase_enabled == 1 this.commentList = this.commentList.concat(res.rows);
const list = res.rows.filter((item) => {
return item.status == 2;
});
list.forEach(item => {
item.merchant_evaluation_reply_list =item.merchant_evaluation_reply_list.filter((item) => {
return item.status == 2;
})
})
this.commentList = this.commentList.concat(list);
})
},
getMerchantInfo() {
request(apiArr.getMerchantInfo, "POST", {
id: uni.getStorageSync("merchantInfo").id,
}).then(res => {
this.isShow = res.quick_purchase_enabled == 1
}) })
}, },
@ -227,15 +194,15 @@ export default {
evaluation_id: e.id, evaluation_id: e.id,
}).then(res => { }).then(res => {
console.log(e); console.log(e);
if (e.merchant_evaluation_like_list) { if(e.merchant_evaluation_like_list){
e.merchant_evaluation_like_list.push({}) e.merchant_evaluation_like_list.push({})
} else { }else{
e.merchant_evaluation_like_list = [] e.merchant_evaluation_like_list = []
e.merchant_evaluation_like_list.push({}) e.merchant_evaluation_like_list.push({})
} }
e.is_like = 1 e.is_like = 1
uni.showToast({ uni.showToast({
icon: "none", icon:"none",
title: '点赞成功', title: '点赞成功',
duration: 2000 duration: 2000
}); });
@ -249,13 +216,13 @@ export default {
e.merchant_evaluation_like_list.pop() e.merchant_evaluation_like_list.pop()
uni.showToast({ uni.showToast({
title: '取消成功', title: '取消成功',
icon: "none", icon:"none",
duration: 2000 duration: 2000
}); });
}) })
}, },
commentDesc(e) { commentDesc(e){
NavgateTo(`../UserComment/index?id=${e.id}`) NavgateTo(`../UserComment/index?id=${e.id}`)
}, },
}, },

View File

@ -1,5 +1,5 @@
page { page {
background-color: #fff; background-color: #f6f7fb;
} }
.container { .container {

View File

@ -2,10 +2,6 @@ page {
background-color: #fff; background-color: #fff;
} }
.container{
/* padding-top: 100rpx; */
}
.local { .local {
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -1,52 +1,39 @@
<template> <template>
<div class="container"> <div class="container">
<div class="local"> <div class="local">
<image <image id="local" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_localIcon.png" mode="aspectFill"></image>
id="local" {{address}}
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_localIcon.png" <u-icon name="arrow-down" color="#999999" size="28"></u-icon>
mode="aspectFill" </div>
></image>
{{ address }}
<u-icon name="arrow-down" color="#999999" size="28"></u-icon>
</div>
<div class="search">
<div class="searchBox">
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"
mode="aspectFill"
></image>
<input type="text" placeholder="请输入您想搜索的内容" />
</div>
</div>
<div class="swiperBox"> <div class="search">
<swiper class="swiper" @change="swiperChange" :current="currentIndex"> <div class="searchBox">
<swiper-item v-for="(page, pageIndex) in swiperList" :key="pageIndex"> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png" mode="aspectFill"></image>
<div class="navList"> <input type="text" placeholder="请输入您想搜索的内容">
<div
class="navItem"
v-for="(item, itemIndex) in page"
:key="itemIndex"
>
<image :src="picUrl + item.cate_image" mode="widthFix"></image>
<div class="navName">{{ item.cate_name }}</div>
</div> </div>
</div> </div>
</swiper-item>
</swiper>
<div class="dot">
<div
class="dotItem"
v-for="(page, index) in swiperList" :key="index"
:class="currentIndex == index ? 'actives' : ''"
></div>
</div>
</div>
<div class="lines"></div> <div class="swiperBox">
<!-- <scroll-view scroll-x="true" enhanced enable-flex class="scrollBox"> <swiper class="swiper" @change="swiperChange" :current="currentIndex">
<swiper-item v-for="(page, pageIndex) in swiperList" :key="pageIndex">
<div class="navList">
<div class="navItem" v-for="(item, itemIndex) in page" :key="itemIndex">
<image :src="picUrl + item.cate_image" mode="widthFix"></image>
<div class="navName">{{ item.cate_name }}</div>
</div>
</div>
</swiper-item>
</swiper>
<div class="dot">
<div class="dotItem" v-for="(page, index) in swiperList" :class="currentIndex == index ? 'actives' : ''"></div>
</div>
</div>
<div class="lines"></div>
<!-- <scroll-view scroll-x="true" enhanced enable-flex class="scrollBox">
<div class="scrollView"> <div class="scrollView">
<div class="scroll-viewItem" v-for="(item, index) in 4" @click="checkItem(index)"> <div class="scroll-viewItem" v-for="(item, index) in 4" @click="checkItem(index)">
<image v-show="!checkedItems[index]" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_uncheck.png" <image v-show="!checkedItems[index]" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_uncheck.png"
@ -58,216 +45,173 @@
</div> </div>
</scroll-view> --> </scroll-view> -->
<div class="merchantList"> <div class="merchantList">
<div <div class="merchantItem" v-for="item in merchatList" :key="item.id" @click="Info(item)">
class="merchantItem" <div class="merchantItem_left">
v-for="item in merchatList" <image :src="picUrl + item.bigImg[0]" mode="aspectFill"></image>
:key="item.id" </div>
@click="Info(item)" <div class="merchantItem_right">
> <div class="merchantItem_right_tit">
<div class="merchantItem_left"> <div class="merchantItem_right_tit_left">
<image :src="picUrl + item.bigImg[0]" mode="aspectFill"></image> {{item.merchant_name}}
</div>
<div class="merchantItem_right_tit_right">
{{item.distances}}
</div>
</div>
<div class="merchantItem_right_con">
<div class="merchantItem_right_con_left">
<div class="startList">
<image v-for="index in 5" :src="index < item.rating ? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png' : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png'" mode="aspectFill"></image>
</div>
<div class="merchangtItem_tag" v-if="item.refund_property_fee_ratio">买单反物业费</div>
<div class="merchangtItem_tag" v-if="item.refund_user_points_ratio">买单反积分</div>
</div>
<div class="merchantItem_right_con_right">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_review.png" mode="aspectFill"></image>
点评
</div>
</div>
<div class="merchantItem_right_add">
{{item.comAddress}}
</div>
</div>
</div>
</div> </div>
<div class="merchantItem_right">
<div class="merchantItem_right_tit"> <div class="btnList">
<div class="merchantItem_right_tit_left"> <div class="btn_left">
{{ item.merchant_name }} <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_serverIcon.png" mode="aspectFill"></image>
到店服务券
</div> </div>
<div class="merchantItem_right_tit_right"> <div class="line"></div>
{{ item.distances }} <div class="btn_right">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/lcoal_payIcon.png" mode="aspectFill"></image>
快捷支付记录
</div> </div>
</div>
<div class="merchantItem_right_con">
<div class="merchantItem_right_con_left">
<div class="startList">
<image
v-for="index in 5"
:key="index"
:src="
index < item.rating
? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png'
: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png'
"
mode="aspectFill"
></image>
</div>
<div
class="merchangtItem_tag"
v-if="item.refund_property_fee_ratio"
>
买单返物业费
</div>
<div
class="merchangtItem_tag"
v-if="item.refund_user_points_ratio"
>
买单返积分
</div>
</div>
<div class="merchantItem_right_con_right" @click="toJump(item)">
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_review.png"
mode="aspectFill"
></image>
点评
</div>
</div>
<div class="merchantItem_right_add">
{{ item.comAddress }}
</div>
</div> </div>
</div> <div class="btnList_after"></div>
</div>
<div class="btnList">
<div class="btn_left">
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_serverIcon.png"
mode="aspectFill"
></image>
到店服务券
</div>
<div class="line"></div>
<div class="btn_right">
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/lcoal_payIcon.png"
mode="aspectFill"
></image>
快捷支付记录
</div>
</div>
<div class="btnList_after"></div>
<!-- <nav-footer :current="2" /> -->
</div>
</div>
</template> </template>
<script> <script>
import { import {
request, request,
picUrl, picUrl,
uniqueByField, uniqueByField,
menuButtonInfo, menuButtonInfo,
calculateDistance, calculateDistance,
NavgateTo, NavgateTo
} from "../../../utils"; } from '../../../utils';
import { apiArr } from '../../../api/v2local';
import { apiArr } from "../../../api/v2local";
export default { export default {
data() { data() {
return { return {
picUrl, picUrl,
top: "", top: "",
localHeight: "", localHeight: "",
swiperList: [], swiperList: [
currentIndex: 0, ],
checkedItems: [false, false, false, false], currentIndex: 0,
address: "", checkedItems: [false, false, false, false],
page_size: "10", address:"",
page_num: "1", page_size:"10",
flag: false, page_num:"1",
merchatList: [], flag:false,
}; merchatList:[]
},
onLoad(options) {
const meun = menuButtonInfo();
this.top = meun.top;
// this.top = meun.height + meun.top;
this.localHeight = meun.height;
this.getCateList();
this.getMechantList();
this.address = uni.getStorageSync("location").address;
console.log(this.address);
},
onReachBottom() {
if (this.flag) {
this.getMechantList();
}
},
methods: {
swiperChange(e) {
this.currentIndex = e.detail.current;
},
checkItem(index) {
this.$set(this.checkedItems, index, !this.checkedItems[index]);
},
//
async getCateList() {
let that = this;
await request(apiArr.getMerChantCateList, "POST").then((res) => {
res.rows = res.rows.filter((item) => item.is_visible == 1)
console.log(res);
// 10
const chunkSize = 10;
that.swiperList = [];
for (let i = 0; i < res.rows.length; i += chunkSize) {
that.swiperList.push(res.rows.slice(i, i + chunkSize));
} }
});
}, },
// onLoad(options) {
async getMechantList() { const meun = menuButtonInfo();
let that = this; this.top = meun.top;
await request(apiArr.getMerchantList, "POST", { // this.top = meun.height + meun.top;
page_num: that.page_num, this.localHeight = meun.height;
page_size: that.page_size, this.getCateList();
}).then((res) => { this.getMechantList();
let latitude = uni.getStorageSync("location").lat; this.address = uni.getStorageSync("location").address
let longitude = uni.getStorageSync("location").lng; console.log(this.address)
res.rows.forEach((item) => { },
item.bigImg = item.album_images.split(",");
const distanceInKm = calculateDistance(
latitude,
longitude,
item.latitude,
item.longitude
);
item.distances =
distanceInKm >= 1
? `${distanceInKm.toFixed(1)}km`
: `${(distanceInKm * 1000).toFixed(1)}m`;
if (item.ad) { onReachBottom() {
item.comAddress = item.ad.ad_name.replace(/,/g, "") + item.address; if(this.flag){
} else { this.getMechantList();
item.comAddress = item.address;
}
});
res.rows.sort((a, b) => {
const valueA =
parseFloat(a.distances.replace("km", "").replace("m", "")) *
(a.distances.includes("km") ? 1000 : 1);
const valueB =
parseFloat(b.distances.replace("km", "").replace("m", "")) *
(b.distances.includes("km") ? 1000 : 1);
return valueA - valueB;
});
if (res.rows.length == this.page_size) {
this.page_num = this.page_num + 1;
this.flag = true;
} else {
this.flag = false;
} }
this.merchatList = this.merchatList.concat(res.rows); },
});
}, methods: {
// swiperChange(e) {
Info(e) { this.currentIndex = e.detail.current;
uni.setStorageSync("merchantInfo", e); },
NavgateTo("../detail/index");
}, checkItem(index) {
// this.$set(this.checkedItems, index, !this.checkedItems[index]);
toJump(e){ },
NavgateTo('../comment/index'); //
async getCateList() {
let that = this
await request(apiArr.getMerChantCateList, "POST").then(res => {
console.log(res);
// 10
const chunkSize = 10;
that.swiperList = [];
for (let i = 0; i < res.rows.length; i += chunkSize) {
that.swiperList.push(res.rows.slice(i, i + chunkSize));
}
})
},
//
async getMechantList(){
let that = this
await request(apiArr.getMerchantList, "POST",{
page_num:that.page_num,
page_size:that.page_size,
}).then(res => {
let latitude = uni.getStorageSync("location").lat
let longitude = uni.getStorageSync("location").lng
res.rows.forEach(item => {
item.bigImg = item.album_images.split(',')
const distanceInKm = calculateDistance(latitude,longitude,item.latitude,item.longitude);
item.distances = distanceInKm >= 1 ? `${distanceInKm.toFixed(1)}km` : `${(distanceInKm * 1000).toFixed(1)}m`;
if(item.ad){
item.comAddress = item.ad.ad_name.replace(/,/g, '') + item.address
}else{
item.comAddress = item.address
}
});
res.rows.sort((a, b) => {
const valueA = parseFloat(a.distances.replace('km', '').replace('m', '')) * (a.distances.includes('km') ? 1000 : 1);
const valueB = parseFloat(b.distances.replace('km', '').replace('m', '')) * (b.distances.includes('km') ? 1000 : 1);
return valueA - valueB;
});
if(res.rows.length == this.page_size){
this.page_num = this.page_num + 1;
this.flag = true
}else{
this.flag = false
}
this.merchatList = this.merchatList.concat(res.rows)
})
},
//
Info(e){
uni.setStorageSync("merchantInfo",e)
NavgateTo("../detail/index")
},
}, },
},
}; }
</script> </script>
<style> <style>

View File

@ -18,8 +18,8 @@
<div class="Msg"> <div class="Msg">
<div class="payMony"> <div class="payMony">
<input type="number" v-model="Money" placeholder="付款金额" placeholder-style="font-size: 50rpx;" <input type="text" v-model="Money" placeholder="付款金额" placeholder-style="font-size: 50rpx;">
@blur="handleMoneyInput" step="0.01" min="0.01"> </div> </div>
<div class="payRemark"> <div class="payRemark">
<input type="text" v-model="remarks" placeholder="付款备注"> <input type="text" v-model="remarks" placeholder="付款备注">
</div> </div>
@ -62,8 +62,7 @@
<div class="line"></div> <div class="line"></div>
<div class="btnItem" @click="home">首页</div> <div class="btnItem" @click="home">首页</div>
<div class="btnItem2" @click="changeBoxshadow"> <div class="btnItem2" @click="changeBoxshadow">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_qrcode.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_qrcode.png" mode="aspectFill"></image>
mode="aspectFill"></image>
本页二维码 本页二维码
</div> </div>
</div> </div>
@ -136,29 +135,6 @@ export default {
methods: { methods: {
handleMoneyInput() {
//
let value = this.Money.toString().replace(/[^\d.]/g, '');
//
value = value.replace(/\.{2,}/g, '.');
//
value = value.replace(/^(\d+)\.(\d{2}).*$/, '$1.$2');
//
if (value.startsWith('.')) {
value = '0' + value;
}
// 0
const num = parseFloat(value);
if (isNaN(num) || num <= 0) {
value = '';
}
this.Money = value;
},
createQrcode() { createQrcode() {
uni.showLoading({ uni.showLoading({
@ -181,7 +157,7 @@ export default {
}); });
}, },
createQrcode2(e) { createQrcode2(e) {
let that = this let that= this
uni.request({ uni.request({
url: `https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=${e}`, url: `https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=${e}`,
method: 'post', method: 'post',
@ -206,7 +182,7 @@ export default {
} }
}); });
}, },
changeBoxshadow2() { changeBoxshadow2(){
this.boxShow = !this.boxShow this.boxShow = !this.boxShow
}, },
changeBoxshadow() { changeBoxshadow() {

View File

@ -1,217 +0,0 @@
page {
background-color: #f0f2f5;
min-height: 100vh;
overflow-y: hidden;
}
.container {
padding: 20rpx;
}
/* 商品图片区域 */
.goods-scroll {
width: 96%;
white-space: nowrap;
margin-bottom: 30rpx;
padding: 20rpx 15rpx;
background-color: #ffffff;
}
.goods-list {
display: inline-flex;
}
.goods-item {
width: 120rpx;
height: 120rpx;
margin-right: 16rpx;
border-radius: 8rpx;
overflow: hidden;
}
.goods-img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* 订单编号 */
.order-info {
display: flex;
justify-content: space-between;
padding: 20rpx 0;
border-bottom: 1rpx solid #EEEEEE;
margin-bottom: 30rpx;
}
.order-label {
font-size: 26rpx;
color: #9a9a9a;
}
.order-value {
font-size: 26rpx;
color: #333333;
}
.goods{
display: flex;
align-items: center;
justify-content: flex-start;
gap: 20rpx;
}
/* 货品图 */
.goodsImg{
display: flex;
width: 100rpx;
height: 100rpx;
}
/* 评分区域 */
.rating{
width: 460rpx;
display: flex;
justify-content: space-between;
margin: 0 0 0rpx 55rpx;
color: #a6a6a6;
}
.rating-section {
background-color: #FFFFFF;
border-radius: 16rpx;
padding: 20rpx;
margin-bottom: 30rpx;
height: 80vh;
}
.rating-item {
display: flex;
align-items: center;
margin-bottom: 30rpx;
margin-top: 20rpx;
}
.rating-item:last-child {
margin-bottom: 0;
}
.rating-label {
width: 160rpx;
font-size: 28rpx;
color: #333333;
font-weight: bold;
}
/* 评价输入 */
.comment-section {
padding: 20rpx;
margin-bottom: 30rpx;
border-top: 1rpx solid #f5f5f5;
}
.comment-input {
width: 100%;
min-height: 100rpx;
font-size: 26rpx;
color: #333333;
line-height: 1.5;
}
/* 图片上传 */
.upload-section {
/* background-color: #FFFFFF; */
border-radius: 16rpx;
padding: 20rpx;
margin-bottom: 40rpx;
display: flex;
}
.upload-btn {
display: flex;
width: 150rpx;
height: 150rpx;
padding: 15rpx;
background-color: #f6f6f6;
flex-direction: column;
justify-content: center;
align-items: center;
margin-bottom: 20rpx;
border-radius: 20rpx;
}
.upload-icon {
width: 60rpx;
height: 50rpx;
margin-right: 10rpx;
}
.upload-text {
font-size: 28rpx;
color: #333333;
margin: 10rpx 0;
}
.upload-count {
font-size: 28rpx;
color: #999999;
}
.image-list {
display: flex;
/* flex-wrap: wrap; */
}
.image-item {
width: 170rpx;
height: 170rpx;
margin-right: 20rpx;
margin-bottom: 20rpx;
position: relative;
border-radius: 20rpx;
overflow: hidden;
}
.uploaded-img {
width: 100%;
height: 100%;
object-fit: cover;
}
.delete-btn {
position: absolute;
top: -10rpx;
right: -10rpx;
width: 36rpx;
height: 36rpx;
background-color: rgba(0, 0, 0, 0.5);
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
}
.delete-icon {
color: #FFFFFF;
font-size: 24rpx;
font-weight: bold;
}
/* 提交按钮 */
.submit-btn {
width: 90%;
height: 98rpx;
background-color: #ff4117;
border-radius: 49rpx;
display: flex;
justify-content: center;
align-items: center;
margin-top: 20rpx;
margin: 0 auto;
}
.btn-text {
font-size: 32rpx;
color: #FFFFFF;
font-weight: bold;
}

View File

@ -1,182 +0,0 @@
<template>
<view class="container">
<!-- 评分区域 -->
<view class="rating-section">
<!-- 订单编号 -->
<view class="order-info">
<text class="order-label">订单编号</text>
<text class="order-value">38757328485</text>
</view>
<view class="goods">
<view>
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png" class="goodsImg"></image>
</view>
<view class="rating">
<view>很差</view>
<view></view>
<view>一般</view>
<view>不错</view>
<view>满意</view>
</view>
</view>
<!-- 商品品质 -->
<view class="rating-item">
<text class="rating-label">商品品质</text>
<u-rate
v-model="qualityRating"
size="40"
active-color="#FFB400"
inactive-color="#EEEEEE"
gutter="60"
></u-rate>
</view>
<!-- 配送速度 -->
<view class="rating-item">
<text class="rating-label">配送速度</text>
<u-rate
v-model="speedRating"
size="40"
active-color="#FFB400"
inactive-color="#EEEEEE"
gutter="60"
></u-rate>
</view>
<!-- 快递员服务 -->
<view class="rating-item">
<text class="rating-label">快递员服务</text>
<u-rate
v-model="serviceRating"
size="40"
active-color="#FFB400"
inactive-color="#EEEEEE"
gutter="60"
></u-rate>
</view>
<!-- 评价输入 -->
<view class="comment-section">
<textarea
class="comment-input"
placeholder="展开说说对商品的想法吧…"
v-model="comment"
></textarea>
</view>
<!-- 图片上传 -->
<view class="upload-section">
<view class="image-list">
<view
class="image-item"
v-for="(img, index) in imageList"
:key="index"
>
<image :src="img" class="uploaded-img"></image>
<view class="delete-btn" @click="deleteImage(index)">
<text class="delete-icon">×</text>
</view>
</view>
</view>
<view
class="upload-btn"
@click="chooseImage"
v-if="imageList.length < 3"
>
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/upload.png"
class="upload-icon"
></image>
<view class="upload-text">上传图片</view>
<view class="upload-count">({{ imageList.length }}/3)</view>
</view>
</view>
<!-- 提交按钮 -->
<view class="submit-btn" @click="submitEvaluate">
<text class="btn-text">提交</text>
</view>
</view>
</view>
</template>
<script>
import uImage from "../../../uni_modules/uview-ui/components/u--image/u--image.vue";
export default {
components: { uImage },
data() {
return {
//
goods: [
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index1.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index2.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index3.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index4.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index5.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index1.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index2.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index3.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index4.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index5.png" },
],
//
qualityRating: 5,
speedRating: 0,
serviceRating: 0,
//
comment: "",
//
imageList: [],
};
},
methods: {
//
chooseImage() {
if (this.imageList.length >= 3) {
uni.showToast({
title: "最多上传3张图片",
icon: "none",
});
return;
}
uni.chooseImage({
count: 3 - this.imageList.length,
sizeType: ["original", "compressed"],
sourceType: ["album", "camera"],
success: (res) => {
this.imageList = this.imageList.concat(res.tempFilePaths);
},
});
},
//
deleteImage(index) {
this.imageList.splice(index, 1);
},
//
submitEvaluate() {
if (!this.comment.trim() && this.imageList.length === 0) {
uni.showToast({
title: "请至少填写评价内容或上传图片",
icon: "none",
});
return;
}
// API
uni.showToast({
title: "评价提交成功",
icon: "success",
});
setTimeout(() => {
uni.navigateBack();
}, 1500);
},
},
onLoad(options) {
console.log("🚀 ~ onLoad ~ options:", options);
const itemObj = JSON.parse(decodeURIComponent(options.item));
},
};
</script>
<style>
@import url("./index.css");
</style>

View File

@ -1,110 +0,0 @@
.order-list {
padding: 20rpx;
background-color: #f5f7fb;
}
.order-item {
background-color: white;
border-radius: 20rpx;
padding: 30rpx;
margin-bottom: 25rpx;
}
.order-header {
margin-bottom: 25rpx;
}
.order-name {
font-size: 30rpx;
font-weight: bold;
color: #333;
}
.order-number {
font-size: 30rpx;
color: #333;
}
.product-list {
padding-top: 25rpx;
}
.product-item {
display: flex;
align-items: center;
padding: 20rpx 0;
border-bottom: 1rpx solid #eee;
}
.product-item:last-child {
border-bottom: none;
}
.product-info {
flex: 1;
display: flex;
align-items: center;
}
.product-img {
position: relative;
width: 130rpx;
height: 130rpx;
margin-right: 25rpx;
border-radius: 20rpx;
}
.product-img image {
width: 100%;
height: 100%;
}
.tag {
position: absolute;
bottom: 0;
right: 0;
background-color: #ff7d00;
color: white;
font-size: 22rpx;
padding: 5rpx 10rpx;
border-radius: 20rpx 0 20rpx 20rpx;
}
.product-details {
flex: 1;
}
.product-name {
font-size: 28rpx;
color: #333;
font-weight: bold;
margin-bottom: 10rpx;
display: block;
}
.product-spec {
font-size: 22rpx;
color: #666;
margin-bottom: 10rpx;
display: block;
}
.product-unit {
font-size: 26rpx;
color: red;
margin-bottom: 10rpx;
display: block;
}
.evaluate-btn {
background-color: #ffe8e5;
color: #e33612;
border: none;
border-radius: 50rpx;
font-size: 26rpx;
min-width: 150rpx;
}
.evaluate-btn::after {
border: none;
}

View File

@ -1,101 +0,0 @@
<template>
<view class="order-list">
<view class="order-item" v-for="(item, index) in orderList" :key="index">
<view class="order-header">
<text class="order-name">{{ item.orderName }}</text>
<text class="order-number">{{ item.orderNumber }}</text>
</view>
<view class="product-list">
<view
class="product-item"
v-for="(product, pIndex) in item.products"
:key="pIndex"
>
<view class="product-info">
<view class="product-img">
<image :src="product.imageUrl" mode="aspectFit"></image>
<view class="tag" v-if="product.tag">{{ product.tag }}</view>
</view>
<view class="product-details">
<text class="product-name">{{ product.name }}</text>
<text class="product-spec">{{ product.spec }}</text>
<text class="product-unit">{{ product.unit }}</text>
</view>
</view>
<button class="evaluate-btn" @click="evaluateOrder(product)">
评价
</button>
</view>
</view>
</view>
</view>
</template>
<script>
import { request, NavgateTo } from "../../../utils";
export default {
data() {
return {
orderList: [
{
orderName: "衡水商贸国际公司",
orderNumber: "4534534255",
products: [
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "当日达",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "当日达",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
],
},
{
orderNumber: "54352342331",
products: [
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
{
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tag: "",
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
],
},
],
};
},
methods: {
evaluateOrder(item) {
console.log("🚀 ~ evaluateOrder ~ orderNumber:", item);
NavgateTo(`../evaluate/index?item=${JSON.stringify(item)}`);
},
},
};
</script>
<style>
@import url("./awaitRated.css");
</style>

View File

@ -11,9 +11,6 @@ page {
height: 100rpx; height: 100rpx;
padding: 0 20rpx; padding: 0 20rpx;
box-sizing: border-box; box-sizing: border-box;
display: flex;
overflow-x: auto;
white-space: nowrap;
} }
.tabItem { .tabItem {

View File

@ -12,83 +12,87 @@
</view> </view>
<view class="content"> <view class="content">
<view v-if="selectedTab === 6"> <view v-for="(category, catIndex) in categoryList" :key="catIndex">
<awaitRated /> <view v-if="selectedTab === catIndex">
</view> <view v-for="(item, index) in orderData" :key="index">
<view v-if="selectedTab === 7"> <view class="contentList">
<rated /> <!-- 订单头部信息 -->
</view> <view class="order-header" @click="toDetails(item.order_status)">
<view v-else> <text>提交订单{{ item.order_time }}</text>
<view v-for="(item, index) in orderData" :key="index"> <view
<view class="contentList"> v-if="item.order_status == 6 || item.order_status == 5"
<!-- 订单头部信息 --> class="status3"
<view class="order-header" @click="toDetails(item.order_status)"> >{{ getOrderStatus(item.order_status) }}</view
<text>提交订单{{ item.order_time }}</text> >
<view <view v-else-if="item.order_status == 7" class="status2">
v-if="item.order_status == 6 || item.order_status == 5" <img src="http://localhost:8080/refund.png" />
class="status3" {{ getOrderStatus(item.order_status) }}
>{{ getOrderStatus(item.order_status) }}</view </view>
> <view v-else class="order_status">{{
<view v-else-if="item.order_status == 7" class="status2"> getOrderStatus(item.order_status)
<img src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/refund.png" /> }}</view>
{{ getOrderStatus(item.order_status) }}
</view> </view>
<view v-else class="order_status">{{
getOrderStatus(item.order_status)
}}</view>
</view>
<!-- 商品列表 --> <!-- 商品列表 -->
<view class="goods-list" @click="toDetails(item.order_status)"> <view class="goods-list" @click="toDetails(item.order_status)">
<view <view
v-for="(goods, goodsIndex) in item.commodity_order_item_list v-for="(goods, goodsIndex) in item.commodity_order_item_list
.commodity_pic" .commodity_pic"
:key="goodsIndex" :key="goodsIndex"
class="goods-item" class="goods-item"
> >
<image :src="goods.image" class="goods-img"></image> <image :src="goods.image" class="goods-img"></image>
</view>
</view> </view>
</view>
<!-- 订单底部信息 --> <!-- 订单底部信息 -->
<view class="order-footer"> <view class="order-footer">
<view <view
class="order-footer-text" class="order-footer-text"
@click="toDetails(item.order_status)" @click="toDetails(item.order_status)"
>{{ item.total_count }}件商品共计 >{{ item.total_count }}件商品共计
<text> {{ item.total_amount }}</text> <text> {{ item.total_amount }}</text>
</view>
<view>
<view class="btn-group" v-if="item.order_status === 1">
<button class="cancel-btn" @click="cancelOrder">
取消订单
</button>
<button class="yfd-btn" @click="cancelOrder">运费单</button>
<button class="pay-btn" @click="goToPay">立即支付</button>
</view> </view>
<view class="btn-group" v-if="item.order_status === 3"> <view>
<button class="yfd-btn" @click="cancelOrder">运费单</button> <view class="btn-group" v-if="item.order_status === 1">
</view> <button class="cancel-btn" @click="cancelOrder">
<view class="btn-group" v-if="item.order_status === 6"> 取消订单
<button class="yfd-btn" @click="cancelOrder">运费单</button> </button>
<button class="pay-btn" @click="cancelOrder">再来一单</button> <button class="yfd-btn" @click="cancelOrder">运费单</button>
</view> <button class="pay-btn" @click="goToPay">立即支付</button>
<view class="btn-group" v-if="item.order_status === 4"> </view>
<button class="cancel-btn" @click="checkLogistics"> <view class="btn-group" v-if="item.order_status === 3">
查看物流 <button class="yfd-btn" @click="cancelOrder">运费单</button>
</button> </view>
<button class="yfd-btn" @click="cancelOrder">运费单</button> <view class="btn-group" v-if="item.order_status === 6">
<button class="pay-btn" @click="cancelOrder">再来一单</button> <button class="yfd-btn" @click="cancelOrder">运费单</button>
</view> <button class="pay-btn" @click="cancelOrder">
<view class="btn-group" v-if="item.order_status === 5"> 再来一单
<button class="cancel-btn" @click="orderEvaluate"> </button>
服务评价 </view>
</button> <view class="btn-group" v-if="item.order_status === 4">
<button class="yfd-btn" @click="cancelOrder">运费单</button> <button class="cancel-btn" @click="checkLogistics">
<button class="pay-btn" @click="cancelOrder">再来一单</button> 查看物流
</view> </button>
<view class="btn-group" v-if="item.order_status === 7"> <button class="yfd-btn" @click="cancelOrder">运费单</button>
<button class="pay-btn" @click="cancelOrder">再来一单</button> <button class="pay-btn" @click="cancelOrder">
再来一单
</button>
</view>
<view class="btn-group" v-if="item.order_status === 5">
<button class="cancel-btn" @click="orderEvaluate">
服务评价
</button>
<button class="yfd-btn" @click="cancelOrder">运费单</button>
<button class="pay-btn" @click="cancelOrder">
再来一单
</button>
</view>
<view class="btn-group" v-if="item.order_status === 7">
<button class="pay-btn" @click="cancelOrder">
再来一单
</button>
</view>
</view> </view>
</view> </view>
</view> </view>
@ -100,38 +104,26 @@
</template> </template>
<script> <script>
import { picUrl, NavgateTo, request } from "../../../utils"; import { picUrl, NavgateTo, request } from "../../../utils";
import { apiArr } from "../../../api/order"; import { apiArr } from "../../../api/order"
import Rated from "./rated.vue";
import AwaitRated from "./awaitRated.vue";
export default { export default {
components: {
Rated,
AwaitRated,
},
data() { data() {
return { return {
categoryList: [ categoryList: [
{ category_name: "全部" }, { category_name: "全部" },
{ category_name: "待付款" }, { category_name: "待付款" },
{ category_name: "已取消" },
{ category_name: "待发货" }, { category_name: "待发货" },
{ category_name: "配送中" }, { category_name: "配送中" },
{ category_name: "已完成" }, { category_name: "已完成" },
{ category_name: "待评价" },
{ category_name: "已评价" },
{ category_name: "售后" },
], ],
selectedTab: 0, selectedTab: 0,
orderData: [], orderData:[],
}; };
}, },
methods: { methods: {
selectTab(index, item) { selectTab(index, item) {
this.selectedTab = index; this.selectedTab = index;
if (index !== 6) { this.getOrderList()
this.getOrderList();
}
}, },
cancelOrder() { cancelOrder() {
// //
@ -146,71 +138,68 @@ export default {
}); });
}, },
goToPay() { goToPay() {
console.log("🚀 ~ goToPay ~ goToPay:", "去支付...");
}, },
toDetails(order_status) { toDetails(order_status) {
NavgateTo( NavgateTo(`/packages/myOrders/orderDetails/index?order_status=${order_status}`);
`/packages/myOrders/orderDetails/index?order_status=${order_status}`
);
}, },
checkLogistics() { checkLogistics() {
NavgateTo(`/packages/myOrders/logistics/index`); NavgateTo(`/packages/myOrders/logistics/index`);
}, },
orderEvaluate() { orderEvaluate(){
NavgateTo(`/packages/myOrders/orderEvaluate/index`); NavgateTo(`/packages/myOrders/orderEvaluate/index`);
}, },
getOrderStatus(order_status) { getOrderStatus(order_status){
switch (order_status) { switch(order_status){
case 1: case 1:
return "待付款"; return '待付款'
case 2: case 2:
return "支付中"; return '支付中'
case 3: case 3:
return "待发货"; return '待发货'
case 4: case 4:
return "配送中"; return '配送中'
case 5: case 5:
return "已完成"; return '已完成'
case 6: case 6:
return "已取消"; return '已取消'
case 7: case 7:
return "退款中"; return '退款中'
case 8: case 8:
return "已退款"; return '已退款'
} }
}, },
getOrderList() { getOrderList(){
request(apiArr.orderList, "POST", { request(apiArr.orderList, "POST", {
user_id: uni.getStorageSync("userId"), user_id: uni.getStorageSync('userId')
}).then((res) => { }).then(res => {
const orderList = res.order_list || []; const orderList = res.order_list || [];
let filteredData = orderList; let filteredData = orderList;
if (this.selectedTab !== 0) { if (this.selectedTab !== 0) {
const statusMap = { const statusMap = {
1: 1, // 1: 1, //
2: 3, // 2: 3, //
3: 4, // 3: 4, //
4: 5, // 4: 5 //
}; };
const targetStatus = statusMap[this.selectedTab]; const targetStatus = statusMap[this.selectedTab];
if (targetStatus) { if (targetStatus) {
filteredData = orderList.filter( filteredData = orderList.filter(item => item.order_status === targetStatus);
(item) => item.order_status === targetStatus
);
} }
} }
this.orderData = filteredData; this.orderData = filteredData;
}); })
}, }
}, },
onLoad(options) { onLoad(options) {
this.getOrderList(); this.getOrderList();
}, },
}; };
</script> </script>
<style> <style>

View File

@ -1,133 +0,0 @@
.evaluation-container {
padding: 20rpx;
background-color: #f5f7fb;
min-height: 100vh;
}
.order-header {
display: flex;
justify-content: space-between;
padding: 15rpx 0;
border-bottom: 1rpx solid #eee;
margin-bottom: 20rpx;
}
.order-name {
font-size: 30rpx;
font-weight: bold;
color: #333;
}
.order-number {
font-size: 30rpx;
color: #333;
}
.order-date {
font-size: 26rpx;
color: #999;
float: right;
}
.evaluation-content {
background: #fff;
border-radius: 10rpx;
padding: 20rpx;
margin-bottom: 20rpx;
}
.evaluation-area {
background: #f5f7fb;
padding: 20rpx 20rpx 50rpx 20rpx;
border-radius: 10rpx;
}
.evaluation-text {
font-size: 28rpx;
color: #333;
line-height: 40rpx;
margin-bottom: 20rpx;
}
.image-list {
display: flex;
gap: 15rpx;
padding: 10rpx 0;
}
.image-item {
width: 140rpx;
height: 140rpx;
border: 1rpx dashed #ddd;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.image-item image {
width: 80rpx;
height: 80rpx;
}
.image-text {
font-size: 24rpx;
color: #999;
margin-top: 10rpx;
}
.product-info {
background: #fff;
border-radius: 10rpx;
padding: 20rpx;
display: flex;
align-items: center;
}
.product-img {
position: relative;
margin-right: 20rpx;
}
.product-img image {
width: 120rpx;
height: 120rpx;
border-radius: 8rpx;
}
.tag {
position: absolute;
bottom: 0;
right: 0;
background-color: #ff7d00;
color: white;
font-size: 22rpx;
padding: 5rpx 10rpx;
border-radius: 20rpx 0 20rpx 20rpx;
}
.product-details {
flex: 1;
}
.product-name {
font-size: 28rpx;
color: #333;
font-weight: bold;
margin-bottom: 10rpx;
display: block;
}
.product-spec {
font-size: 22rpx;
color: #666;
margin-bottom: 10rpx;
display: block;
}
.product-unit {
font-size: 26rpx;
color: red;
margin-bottom: 10rpx;
display: block;
}

View File

@ -1,79 +0,0 @@
<template>
<view class="evaluation-container">
<!-- 评价内容区域 -->
<view class="evaluation-content">
<!-- 订单头部信息 -->
<view class="order-header">
<text class="order-name">{{ orderInfo.orderName }}</text>
<text class="order-number">{{ orderInfo.orderNumber }}</text>
</view>
<view class="evaluation-area">
<text class="evaluation-text">{{ evaluationInfo.content }}</text>
<!-- 评价图片区域 -->
<view class="image-list">
<view
class="image-item"
v-for="(img, index) in evaluationInfo.images"
:key="index"
>
<image :src="img.url" mode="aspectFill"></image>
<text class="image-text">{{ img.text }}</text>
</view>
</view>
<text class="order-date">{{ orderInfo.date }}</text>
</view>
<!-- 商品信息区域 -->
<view class="product-info">
<view class="product-img">
<image :src="productInfo.imageUrl" mode="aspectFit"></image>
<view
class="tag"
v-for="(tag, index) in productInfo.tags"
:key="index"
>{{ tag }}</view
>
</view>
<view class="product-details">
<text class="product-name">{{ productInfo.name }}</text>
<text class="product-spec">{{ productInfo.spec }}</text>
<text class="product-unit">{{ productInfo.unit }}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
orderInfo: {
orderName: "衡水商贸国际公司",
orderNumber: "4534534255",
date: "2025-07-21",
},
evaluationInfo: {
content: "评价文字内容",
images: [
{ url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/eval1.png", text: "评价图片" },
{ url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/eval2.png", text: "评价图片" },
{ url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/eval3.png", text: "评价图片" },
],
},
productInfo: {
imageUrl: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/product.png",
tags: ["当日达", "当日达"],
name: "货品名称",
spec: "货品规格",
unit: "货品单位",
},
};
},
};
</script>
<style>
@import url("./rated.css");
</style>

View File

@ -23,7 +23,7 @@
<img <img
class="copy-btn" class="copy-btn"
@click="copyNumber" @click="copyNumber"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/copy.png" src="http://localhost:8080/copy.png"
alt="复制" alt="复制"
/> />
</view> </view>

View File

@ -16,7 +16,7 @@
<view class="countdown">预计到货时间: 2025-09-09 9:59:59</view> <view class="countdown">预计到货时间: 2025-09-09 9:59:59</view>
<view class="tips"> <view class="tips">
配送司机15901518415 配送司机15901518415
<img class="phone" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/phone.png" /> <img class="phone" src="http://localhost:8080/phone.png" />
</view> </view>
</view> </view>
<view class="status-bar" v-if="status === '已完成' || status === '退款中'"> <view class="status-bar" v-if="status === '已完成' || status === '退款中'">
@ -190,21 +190,21 @@ export default {
remark: "明天9点之前送到", remark: "明天9点之前送到",
goodsList: [ goodsList: [
{ {
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_details.png", image: "http://localhost:8080/order_details.png",
name: "泰国金枕榴莲", name: "泰国金枕榴莲",
desc: "泰国金枕榴莲 软糯 香甜", desc: "泰国金枕榴莲 软糯 香甜",
price: "125.9", price: "125.9",
quantity: 1, quantity: 1,
}, },
{ {
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_details.png", image: "http://localhost:8080/order_details.png",
name: "泰国金枕榴莲", name: "泰国金枕榴莲",
desc: "泰国金枕榴莲 软糯 香甜", desc: "泰国金枕榴莲 软糯 香甜",
price: "125.9", price: "125.9",
quantity: 1, quantity: 1,
}, },
{ {
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_details.png", image: "http://localhost:8080/order_details.png",
name: "泰国金枕榴莲", name: "泰国金枕榴莲",
desc: "泰国金枕榴莲 软糯 香甜", desc: "泰国金枕榴莲 软糯 香甜",
price: "125.9", price: "125.9",

View File

@ -87,7 +87,7 @@
v-if="imageList.length < 3" v-if="imageList.length < 3"
> >
<image <image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/upload.png" src="http://localhost:8080/upload.png"
class="upload-icon" class="upload-icon"
></image> ></image>
<view class="upload-text">上传图片</view> <view class="upload-text">上传图片</view>
@ -108,16 +108,16 @@ export default {
return { return {
// //
goods: [ goods: [
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index1.png" }, { image: "http://localhost:8080/order_index1.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index2.png" }, { image: "http://localhost:8080/order_index2.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index3.png" }, { image: "http://localhost:8080/order_index3.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index4.png" }, { image: "http://localhost:8080/order_index4.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index5.png" }, { image: "http://localhost:8080/order_index5.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index1.png" }, { image: "http://localhost:8080/order_index1.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index2.png" }, { image: "http://localhost:8080/order_index2.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index3.png" }, { image: "http://localhost:8080/order_index3.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index4.png" }, { image: "http://localhost:8080/order_index4.png" },
{ image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/order_index5.png" }, { image: "http://localhost:8080/order_index5.png" },
], ],
// //
qualityRating: 5, qualityRating: 5,

View File

@ -1,6 +1,6 @@
page { page {
background-color: #fff; background-color: #fff;
padding-bottom: 20rpx; padding-bottom: 0;
min-height: 100vh; min-height: 100vh;
} }
@ -28,6 +28,9 @@ image {
padding-left: 20rpx; padding-left: 20rpx;
} }
.swiper { .swiper {
height: 750rpx; height: 750rpx;
width: 750rpx; width: 750rpx;
@ -104,45 +107,6 @@ image {
margin-right: 40rpx; margin-right: 40rpx;
} }
/* 促销信息样式 */
.promotions-container {
padding: 15rpx;
background-color: #FFF;
border-radius: 10rpx;
margin: 15rpx 0;
}
.promotion-item {
display: flex;
align-items: center;
margin-bottom: 20rpx;
}
.promotion-tag {
width: 80rpx;
text-align: center;
background-color: #ffe8e5;
color: #ff5029;
padding: 5rpx 15rpx;
border-radius: 10rpx;
font-size: 26rpx;
margin-right: 30rpx;
}
.promotion-content {
font-size: 26rpx;
color: #333;
}
.promotion-content1 {
width: auto;
padding: 5rpx 10rpx;
text-align: center;
background-color: #ff6749;
color: white;
border-radius: 10rpx;
}
.GG_Item { .GG_Item {
font-size: 26rpx; font-size: 26rpx;
color: #999999; color: #999999;
@ -169,7 +133,7 @@ image {
} }
.GoodsMsg { .GoodsMsg {
/* font-size: 30rpx; */ font-size: 33rpx;
color: #222222; color: #222222;
margin: 0 20rpx; margin: 0 20rpx;
margin-top: 55rpx; margin-top: 55rpx;
@ -187,14 +151,14 @@ image {
.Msg_ItemTit { .Msg_ItemTit {
width: 120rpx; width: 120rpx;
margin-right: 100rpx; margin-right: 100rpx;
font-size: 26rpx; font-size: 28rpx;
color: #999999; color: #999999;
margin: 0 20rpx; margin: 0 20rpx;
padding: 30rpx 0; padding: 30rpx 0;
} }
.Msg_ItemCon { .Msg_ItemCon {
font-size: 26rpx; font-size: 28rpx;
color: #222222; color: #222222;
display: flex; display: flex;
align-items: center; align-items: center;
@ -309,7 +273,7 @@ image {
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 26rpx; font-size: 28rpx;
color: #000000; color: #000000;
} }
@ -401,215 +365,7 @@ image {
color: #999999; color: #999999;
} }
.active { .active{
background: #FF370B; background: #FF370B;
color: #fff; color: #fff;
}
.priceInfo {
height: 450rpx;
padding: 20rpx;
}
.priceInfo-title {
/* font-size: 30rpx; */
font-weight: bolder;
margin: 15rpx 0 20rpx 0;
}
.priceInfo-content {
font-size: 26rpx;
color: #9c9c9c;
line-height: 1.7;
}
.priceInfo-content-title {
font-size: 28rpx;
color: #333;
}
.fenge {
width: 100%;
height: 15rpx;
background-color: #f5f7fb;
}
/* 评价部分样式 */
.reviews-section {
padding: 20rpx;
background-color: #fff;
margin-bottom: 20rpx;
}
.reviews-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
}
.reviews-header h3 {
/* font-size: 32rpx; */
font-weight: bold;
}
.view-all {
color: #999;
font-size: 26rpx;
background: none;
border: none;
padding: 0;
}
.reviews-list {
margin-top: 20rpx;
}
.review-item {
padding: 20rpx 0;
border-bottom: 1rpx solid #f5f5f5;
}
.review-user {
display: flex;
align-items: center;
margin-bottom: 15rpx;
}
.user-avatar {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
margin-right: 15rpx;
}
.user-info {
flex: 1;
}
.user-name {
font-size: 28rpx;
font-weight: 500;
}
.user-purchase {
font-size: 24rpx;
color: #999;
margin: 10rpx 0;
}
.review-content {
font-size: 27rpx;
line-height: 1.5;
margin-bottom: 15rpx;
}
.review-images {
display: flex;
flex-wrap: wrap;
gap: 10rpx;
margin-bottom: 15rpx;
}
.review-img {
width: 140rpx;
height: 140rpx;
border-radius: 8rpx;
}
.review-time {
font-size: 24rpx;
color: #999;
text-align: right;
}
.popup-header {
display: flex;
width: 90%;
padding-left: 80rpx;
margin: 20rpx 0;
}
.popup-header-h3 {
font-weight: bold;
margin: 0 auto;
}
.popup-header-view {
font-size: 24rpx;
color: #999;
margin-right: 30rpx;
}
.temp {
display: flex;
justify-content: space-between;
align-items: center;
}
.temp1 {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 24rpx;
color: #959595;
margin: 20rpx 0 5rpx 0;
}
.temp_img {
width: 35rpx;
height: 35rpx;
margin-right: 10rpx;
}
.temp_img1 {
width: 30rpx;
height: 30rpx;
margin: 5rpx 5rpx 0 5rpx;
}
.itemSize {
width: 30%;
font-size: 26rpx;
color: #333;
background: #F6F7FB;
border-radius: 40rpx;
padding: 10rpx 15rpx;
white-space: nowrap;
margin:20rpx 30rpx;
}
.itemSize_active {
background: #FF370B;
color: #fff;
}
.itemSize-img{
width: 100rpx;
height: 100rpx;
margin-right: 30rpx;
border-radius: 20rpx;
border:1rpx solid red;
}
.itemSize_top{
display: flex;
margin-left: 30rpx;
}
.itemSize_info {
margin-top: 10rpx;
}
.itemSize_name {
font-size: 28rpx;
font-weight: 500;
font-weight: bold;
}
.itemSize_price {
font-size: 28rpx;
font-weight: 500;
margin-top: 10rpx;
color: red;
} }

View File

@ -1,16 +1,16 @@
<template> <template>
<view> <view>
<view class="header"> <div class="header">
<view <div
class="searchBox" class="searchBox"
:style="{ height: localHeight + 'px', paddingTop: top + 'px' }" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }"
> >
<view class="searchBox_left" @click="back"> <div class="searchBox_left" @click="back">
<u-icon name="arrow-left" size="20px" color="#000"></u-icon> <u-icon name="arrow-left" size="20px" color="#000"></u-icon>
</view> </div>
</view> </div>
</view> </div>
<view class="swiper"> <div class="swiper">
<swiper <swiper
:indicator-dots="false" :indicator-dots="false"
:autoplay="true" :autoplay="true"
@ -26,24 +26,24 @@
</swiper-item> </swiper-item>
</swiper> </swiper>
<view class="NumDot"> <div class="NumDot">
{{ currentIndex }} /{{ currentGG.goods_carousel.length }} {{ currentIndex }} /{{ currentGG.goods_carousel.length }}
</view> </div>
</view> </div>
<view class="Money"> <div class="Money">
<view class="MoneyMark"></view> <div class="MoneyMark"></div>
{{ currentGG.sales_price }} {{ currentGG.sales_price }}
<view class="MoneyUnit">/{{ currentGG.goods_unit }}</view> <div class="MoneyUnit">/{{ currentGG.goods_unit }}</div>
<view class="oldMoney">{{ currentGG.market_price }}</view> <div class="oldMoney">{{ currentGG.market_price }}</div>
</view> </div>
<!-- 规格 --> <!-- 规格 -->
<!-- @click="changeGG2(item, index)" :class="index == currentGGIndex ? 'active' : ''"> --> <!-- @click="changeGG2(item, index)" :class="index == currentGGIndex ? 'active' : ''"> -->
<view class="GGBox"> <div class="GGBox">
<view class="GG_left"> <div class="GG_left">
<view <div
class="GG_Item" class="GG_Item"
v-for="(item, index) in info.commodity_goods_info_list" v-for="(item, index) in info.commodity_goods_info_list"
:key="item.id" :key="item.id"
@ -51,150 +51,57 @@
:class="index == currentGGIndex ? 'active' : ''" :class="index == currentGGIndex ? 'active' : ''"
> >
{{ item.goods_spec }} / {{ item.goods_unit }} {{ item.goods_spec }} / {{ item.goods_unit }}
</view> </div>
</view> </div>
<view class="GG_rigth"> <div class="GG_rigth">
{{ info.commodity_goods_info_list.length }}<u-icon {{ info.commodity_goods_info_list.length }}<u-icon
size="26rpx" size="26rpx"
name="arrow-right" name="arrow-right"
></u-icon> ></u-icon>
</view> </div>
</view> </div>
<view class="Tit">{{ currentGG.goods_name }}</view> <div class="Tit">{{ currentGG.goods_name }}</div>
<view class="Msg">{{ currentGG.commodity_brief }}</view> <div class="Msg">{{ currentGG.commodity_brief }}</div>
<div class="GoodsMsg">商品详情</div>
<view class="fenge"></view> <div class="Msg_Item">
<div class="Msg_ItemTit">商品编号</div>
<!-- 促销信息区域 --> <div class="Msg_ItemCon" @click="copys(currentGG.goods_no)">
<view class="promotions-container">
<view class="promotion-item">
<view class="promotion-tag">优惠</view>
<view class="promotion-content promotion-content1">满100减10</view>
</view>
<view class="promotion-item">
<view class="promotion-tag">限购</view>
<view class="promotion-content">限购5件</view>
</view>
<view class="promotion-item">
<view class="promotion-tag">阶梯价</view>
<view class="promotion-content">1~9 9.5/;>10 8.0/</view>
</view>
<view class="promotion-item">
<view class="promotion-tag">满赠</view>
<view class="promotion-content">满5赠1满10赠3</view>
</view>
<view class="promotion-item">
<view class="promotion-tag">满减</view>
<view class="promotion-content">满100减5满200减20</view>
</view>
</view>
<view class="fenge"></view>
<view class="Msg_Item">
<view class="Msg_ItemTit">质检</view>
<view class="Msg_ItemCon">质检报告</view>
</view>
<view class="Msg_Item">
<view class="Msg_ItemTit">押金</view>
<view class="Msg_ItemCon">需另付押金:30.00(30天可退)</view>
</view>
<view class="Msg_Item">
<view class="Msg_ItemTit">配送</view>
<view class="Msg_ItemCon"> 12:00前下单,预计8月21日送达; </view>
</view>
<view class="fenge"></view>
<!-- 评价部分 -->
<view class="reviews-section">
<view class="reviews-header">
<h3>评价({{ comments.length }})</h3>
<view class="view-all" @click="showPopup">查看全部 ></view>
</view>
<view class="reviews-list" v-if="comments.length > 0">
<view
class="review-item"
v-for="(comment, index) in comments"
:key="index"
>
<view class="review-user">
<image :src="comment.avatar" class="user-avatar"></image>
<view class="user-info">
<view class="user-name">{{ comment.username }}</view>
</view>
<view class="review-time">{{ comment.time }}</view>
</view>
<view class="user-purchase">已购 {{ comment.product }}</view>
<view class="review-content">{{ comment.content }}</view>
<view class="review-images" v-if="comment.images.length > 0">
<image
:src="img"
class="review-img"
v-for="(img, idx) in comment.images"
:key="idx"
></image>
</view>
</view>
</view>
</view>
<view class="fenge"></view>
<h3 class="GoodsMsg">商品详情</h3>
<view class="Msg_Item">
<view class="Msg_ItemTit">商品编号</view>
<view class="Msg_ItemCon" @click="copys(currentGG.goods_no)">
{{ currentGG.goods_no }} {{ currentGG.goods_no }}
<image <image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_copy.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_copy.png"
></image> ></image>
</view> </div>
</view> </div>
<view class="Msg_Item"> <div class="Msg_Item">
<view class="Msg_ItemTit">规格说明</view> <div class="Msg_ItemTit">规格说明</div>
<view class="Msg_ItemCon">{{ currentGG.goods_spec }}</view> <div class="Msg_ItemCon">{{ currentGG.goods_spec }}</div>
</view> </div>
<view class="Msg_Item"> <div class="Msg_Item">
<view class="Msg_ItemTit">售卖单位</view> <div class="Msg_ItemTit">售卖单位</div>
<view class="Msg_ItemCon">{{ currentGG.goods_unit }}</view> <div class="Msg_ItemCon">{{ currentGG.goods_unit }}</div>
</view> </div>
<view class="GoosMsg"> <div class="GoosMsg">
<image <image
v-for="item in currentGG.goods_detail_pic" v-for="item in currentGG.goods_detail_pic"
:src="picUrl + item" :src="picUrl + item"
:key="item"
mode="widthFix" mode="widthFix"
></image> ></image>
</view> </div>
<view class="priceInfo">
<h3 class="priceInfo-title">价格说明</h3>
<view class="priceInfo-content">
<view>
<text class="priceInfo-content-title">划线价格</text>
指商品的厂商指导价正品零售价市面常见价或该商品曾经展示过的销售价等并非原价仅供参考
</view>
<view>
<text class="priceInfo-content-title">未划线价格</text>
指商品的实时价格不因表述的差异改变性质具体成交价格根据商品参加活动或使用优惠券等发生变化最终以订单结算价格为准
</view>
</view>
</view>
<!-- 底部购物车 --> <!-- 底部购物车 -->
<view class="Car"> <div class="Car">
<view class="car_left"> <div class="car_left">
<view class="share" @click="share"> <div class="share" @click="share">
<image <image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share.png"
mode="widthFix" mode="widthFix"
></image> ></image>
分享 分享
</view> </div>
<view class="cars" @click="car"> <div class="cars" @click="car">
<u-badge <u-badge
numberType="limit" numberType="limit"
:type="type" :type="type"
@ -207,10 +114,10 @@
mode="widthFix" mode="widthFix"
></image> ></image>
购物车 购物车
</view> </div>
</view> </div>
<view <div
class="car_right" class="car_right"
v-if=" v-if="
!info.commodity_goods_info_list[currentGGIndex].cart_count || !info.commodity_goods_info_list[currentGGIndex].cart_count ||
@ -219,9 +126,9 @@
@click="addCar" @click="addCar"
> >
加入购物车 加入购物车
</view> </div>
<view <div
class="car_right" class="car_right"
v-if=" v-if="
info.commodity_goods_info_list[currentGGIndex].cart_count.count > 0 info.commodity_goods_info_list[currentGGIndex].cart_count.count > 0
@ -250,136 +157,54 @@
<u-icon name="plus" color="#FFFFFF" size="36" bold></u-icon> <u-icon name="plus" color="#FFFFFF" size="36" bold></u-icon>
</view> </view>
</u-number-box> </u-number-box>
</view> </div>
</view> </div>
<!-- 分享 --> <!-- 分享 -->
<view class="shadow" @click.stop="changeShadow" v-if="boxshadow1"> <div class="shadow" @click.stop="changeShadow" v-if="boxshadow1">
<view class="shadowBox1"> <div class="shadowBox1">
<view class="shadowBox1Item" @click="shareFriend"> <div class="shadowBox1Item" @click="shareFriend">
<image <image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_WX.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_WX.png"
mode="aspectFill" mode="aspectFill"
></image> ></image>
微信好友 微信好友
</view> </div>
<view class="shadowBox1Item" @click="openSave"> <div class="shadowBox1Item" @click="openSave">
<image <image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_saveImg.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_saveImg.png"
mode="aspectFill" mode="aspectFill"
></image> ></image>
生成海报 生成海报
</view> </div>
</view> </div>
</view> </div>
<!-- 海报 --> <!-- 海报 -->
<view class="shadow" @click="changeShadow2" v-if="boxshadow2"> <div class="shadow" @click="changeShadow2" v-if="boxshadow2">
<view class="shadowBox2"> <div class="shadowBox2">
<view class="shadowBox_img"> <div class="shadowBox_img">
<view class="boxshadow_tit">今日商品推荐</view> <div class="boxshadow_tit">今日商品推荐</div>
<view class="boxshadow_img"> <div class="boxshadow_img">
<image <image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png"
> >
</image> </image>
</view> </div>
<view class="line"></view> <div class="line"></div>
<view class="shadowBoxInfo"> <div class="shadowBoxInfo">
<view class="shadowboxInfo_left">二维码</view> <div class="shadowboxInfo_left">二维码</div>
<view class="shadowboxInfo_right"> <div class="shadowboxInfo_right">
<view class="shadowboxInfo_right_1">正鲜生</view> <div class="shadowboxInfo_right_1">正鲜生</div>
<view class="shadowboxInfo_right_2"> <div class="shadowboxInfo_right_2">
长按识别小程序 <br /> 长按识别小程序 <br />
数量有限马上抢购 数量有限马上抢购
</view> </div>
</view> </div>
</view> </div>
</view> </div>
<view class="shadowBox_btn" @click.stop="saveImg">保存海报</view> <div class="shadowBox_btn" @click.stop="saveImg">保存海报</div>
</view> </div>
</view> </div>
<!-- 评价 查看详情 -->
<u-popup
:show="show"
round="20rpx"
mode="bottom"
@close="close"
@open="open"
:z-index="10070"
>
<view class="reviews-section">
<view class="popup-header">
<h3 class="popup-header-h3">评价</h3>
<view class="popup-header-view" @click="close">取消</view>
</view>
<view class="temp">
<view class="temp1">
<img class="temp_img" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/pingjia.png" />
为你展示真实评价
</view>
<view class="temp1" @click="showSizePopup">
款式
<img class="temp_img1" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kuanshi.png" />
</view>
</view>
<view class="reviews-list" v-if="comments.length > 0">
<view
class="review-item"
v-for="(comment, index) in comments"
:key="index"
>
<view class="review-user">
<image :src="comment.avatar" class="user-avatar"></image>
<view class="user-info">
<view class="user-name">{{ comment.username }}</view>
</view>
<view class="review-time">{{ comment.time }}</view>
</view>
<view class="user-purchase">已购 {{ comment.product }}</view>
<view class="review-content">{{ comment.content }}</view>
<view class="review-images" v-if="comment.images.length > 0">
<image
:src="img"
class="review-img"
v-for="(img, idx) in comment.images"
:key="idx"
></image>
</view>
</view>
</view>
</view>
</u-popup>
<!-- 选择款式 -->
<u-popup
:show="showSize"
round="20rpx"
mode="bottom"
@close="closeSize"
@open="open"
>
<view class="popup-header">
<h3 class="popup-header-h3">选择款式</h3>
<view class="popup-header-view" @click="closeSize">取消</view>
</view>
<view class="itemSize_top">
<image :src="changeImg" class="itemSize-img"></image>
<view class="itemSize_info">
<view class="itemSize_name">{{ changeName }}</view>
<view class="itemSize_price">{{ changePrice }}/</view>
</view>
</view>
<view
class="itemSize"
v-for="(item, index) in info.commodity_goods_info_list"
:key="item.id"
@click="changeGG(item, index)"
:class="index == currentGGIndex ? 'itemSize_active' : ''"
>
{{ item.goods_name }} {{ item.goods_spec }} / {{ item.goods_unit }}
</view>
</u-popup>
</view> </view>
</template> </template>
@ -406,38 +231,6 @@ export default {
currentGGIndex: "", //index currentGGIndex: "", //index
carOrderList: [], carOrderList: [],
//
showReviewPopup: false,
comments: [
{
avatar: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
username: "TP",
product: "库尔勒香梨 10kg/箱",
content:
"踏入这家位于街角的餐厅,木质门框与暖黄灯光交织出温馨氛围,墙面上手绘的食材插画画透着文艺气息,开放式厨房的设计让食客能看见厨师处理食材的全过程,第一印象便给人以干净与安心。",
images: ["https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png"],
time: "2025-03-01 11:24:20",
},
{
avatar: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
username: "TP",
product: "库尔勒香梨 10kg/箱",
content:
"踏入这家位于街角的餐厅木质门框与暖黄灯光交织出温馨氛围墙面上手绘的食材插_draw着文艺气息开放式厨房的设计让食客能看见厨师处理食材的全过程第一印象便给人以干净与安心。",
images: [
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
],
time: "2025-03-01 11:24:20",
},
],
show: false,
showSize: false,
changeImg: "",
changeName: "",
changePrice: "",
}; };
}, },
methods: { methods: {
@ -547,10 +340,6 @@ export default {
this.info = res; this.info = res;
this.currentGG = res.commodity_goods_info_list[0]; this.currentGG = res.commodity_goods_info_list[0];
this.currentGGIndex = 0; this.currentGGIndex = 0;
this.changeImg = this.currentGG.commodity_pic[0]
this.changeName = this.currentGG.goods_alias
this.changePrice = this.currentGG.sales_price
}); });
}, },
@ -569,7 +358,6 @@ export default {
// //
changeGG(item, index) { changeGG(item, index) {
console.log("🚀 ~ changeGG ~ item:", item);
this.currentGG = item; this.currentGG = item;
this.currentGGIndex = index; this.currentGGIndex = index;
if (this.currentGG.cart_count) { if (this.currentGG.cart_count) {
@ -577,9 +365,6 @@ export default {
} else { } else {
this.currentGG.cart_count = { count: 0 }; this.currentGG.cart_count = { count: 0 };
} }
this.changeImg = item.commodity_pic[0]
this.changeName = item.goods_alias
this.changePrice = item.sales_price
}, },
car() { car() {
NavgateTo("../shopCar/index"); NavgateTo("../shopCar/index");
@ -645,8 +430,7 @@ export default {
user_id: uni.getStorageSync("userId"), user_id: uni.getStorageSync("userId"),
goods_id_and_count: [ goods_id_and_count: [
{ {
goods_id: goods_id: this.info.commodity_goods_info_list[this.currentGGIndex].id,
this.info.commodity_goods_info_list[this.currentGGIndex].id,
count: newValue.value, count: newValue.value,
}, },
], ],
@ -660,22 +444,6 @@ export default {
}); });
}); });
}, },
showPopup() {
this.show = true;
},
showSizePopup() {
this.showSize = true;
},
close() {
this.show = false;
},
closeSize() {
this.showSize = false;
},
}, },
onLoad(options) { onLoad(options) {
const itemObj = JSON.parse(decodeURIComponent(options.item)); const itemObj = JSON.parse(decodeURIComponent(options.item));
@ -704,8 +472,6 @@ export default {
request(apiArr.updateCar, "POST", { request(apiArr.updateCar, "POST", {
goods_id_and_count, goods_id_and_count,
}).then((res) => {
console.log("Cart updated on hide");
}); });
return; return;
}, },

View File

@ -158,7 +158,6 @@ page {
overflow: hidden; overflow: hidden;
position: relative; position: relative;
overflow-y: auto; overflow-y: auto;
margin-bottom: 150rpx;
} }
.CateInfo_tit { .CateInfo_tit {
@ -198,28 +197,7 @@ page {
height: 140rpx; height: 140rpx;
border-radius: 20rpx 20rpx 20rpx 20rpx; border-radius: 20rpx 20rpx 20rpx 20rpx;
overflow: hidden; overflow: hidden;
margin-right: 15rpx; margin-right: 3rpx;
position: relative;
}
.tag {
background-color: #ff7d00;
color: white;
font-size: 22rpx;
padding: 5rpx 10rpx;
border-radius: 20rpx 0 20rpx 20rpx;
}
.tag-img {
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
.tag-text {
display: inline-block;
vertical-align: middle;
margin-right: 20rpx; margin-right: 20rpx;
} }
@ -507,12 +485,8 @@ page {
.GGItem_Image { .GGItem_Image {
width: 120rpx; width: 120rpx;
height: 100rpx; height: 100rpx;
margin: 0 20rpx 20rpx 0; border-radius: 20rpx 20rpx 20rpx 20rpx;
position: relative; margin-right: 20rpx;
}
.GGItem_Image image{
border-radius: 20rpx;
} }
.GGItem_Con_Tit { .GGItem_Con_Tit {
@ -554,16 +528,16 @@ page {
left: 0; left: 0;
right: 0; right: 0;
top: 0; top: 0;
bottom: 0; bottom: 0;
} }
.shadowBox1 { .shadowBox1{
height: 250rpx; height: 250rpx;
width: 100%; width: 100%;
background-color: #fff; background-color: #fff;
} }
.shop_car { .shop_car{
width: 140rpx; width: 140rpx;
height: 140rpx; height: 140rpx;
position: fixed; position: fixed;
@ -571,8 +545,7 @@ page {
bottom: 180rpx; bottom: 180rpx;
z-index: 10; z-index: 10;
} }
.shop_car image{
.shop_car image {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }

View File

@ -139,7 +139,7 @@
<!-- 右下阴影 --> <!-- 右下阴影 -->
<div class="boxshadow2" v-if="cateListShow"></div> <div class="boxshadow2" v-if="cateListShow"></div>
<div class="CateInfo" v-for="item in tagList" :key="item.id"> <div class="CateInfo" v-for="(item, index) in tagList" :key="item.id">
<div class="CateInfo_tit"> <div class="CateInfo_tit">
{{ item.tag_name }} {{ item.tag_name }}
</div> </div>
@ -150,14 +150,6 @@
> >
<div class="CateInfo_Item_Box"> <div class="CateInfo_Item_Box">
<div class="CateInfo_Item_left" @click="goods(items)"> <div class="CateInfo_Item_left" @click="goods(items)">
<view
class="tag tag-img"
v-if="
!items.commodity_goods_info_list[1] &&
items.commodity_goods_info_list[0].is_same_day
"
>当日达</view
>
<image <image
:src="picUrl + items.commodity_pic" :src="picUrl + items.commodity_pic"
mode="aspectFill" mode="aspectFill"
@ -165,22 +157,18 @@
</div> </div>
<div class="CateInfo_Item_right" :class="GGshow ? 'noneBor' : ''"> <div class="CateInfo_Item_right" :class="GGshow ? 'noneBor' : ''">
<div class="CateInfo_Item_right_Tit" @click="goods(items)"> <div class="CateInfo_Item_right_Tit" @click="goods(items)">
<view
class="tag tag-text"
v-if="
!items.commodity_goods_info_list[1] &&
items.commodity_goods_info_list[0].is_same_day
"
>当日达</view
>
{{ items.commodity_name }} {{ items.commodity_name }}
</div> </div>
<div class="CateInfo_Item_right_subtit" @click="goods(items)"> <div
class="CateInfo_Item_right_subtit"
@click="goods(items)"
>
{{ items.commodity_intro }} {{ items.commodity_intro }}
</div> </div>
<div class="CateInfo_Item_Money"> <div class="CateInfo_Item_Money">
<div class="CateInfo_Item_Money_left"> <div class="CateInfo_Item_Money_left">
{{ getPriceRange(items.commodity_goods_info_list) }} <span></span
>{{ items.commodity_goods_info_list[0].sales_price }}
</div> </div>
<div <div
class="CateInfo_Item_Money_right" class="CateInfo_Item_Money_right"
@ -243,23 +231,16 @@
<div <div
class="GGItem" class="GGItem"
v-for="ite in items.commodity_goods_info_list" v-for="ite in items.commodity_goods_info_list"
:key="ite.id"
@click="goods(items)" @click="goods(items)"
> >
<div class="GGItem_Image"> <div class="GGItem_Image">
<view class="tag tag-img" v-if="ite.is_same_day">当日达</view>
<image <image
:src="picUrl + ite.commodity_pic" :src="picUrl + ite.commodity_pic"
mode="aspectFill" mode="aspectFill"
></image> ></image>
</div> </div>
<div class="GGItem_Con"> <div class="GGItem_Con">
<div class="GGItem_Con_Tit"> <div class="GGItem_Con_Tit">{{ ite.goods_name }}</div>
<view class="tag tag-text" v-if="ite.is_same_day"
>当日达</view
>
{{ ite.goods_name }}
</div>
<div class="GGItem_Con_Msg"> <div class="GGItem_Con_Msg">
<div class="GGItem_Con_Msg_left"> <div class="GGItem_Con_Msg_left">
<span></span>{{ ite.sales_price }} <span></span>{{ ite.sales_price }}
@ -305,7 +286,7 @@
</div> </div>
</div> </div>
<!-- <nav-footer :current="3" /> --> <nav-footer :current="2" />
<div class="shop_car" @click="shopCar"> <div class="shop_car" @click="shopCar">
<u-badge <u-badge
@ -395,8 +376,6 @@ export default {
carNum: "", carNum: "",
goodsDetail: [], goodsDetail: [],
showTag: false, //
}; };
}, },
methods: { methods: {
@ -480,6 +459,7 @@ export default {
}); });
}); });
this.tagList = res.commodity_list; this.tagList = res.commodity_list;
console.log("🚀 ~ getGoodsList ~ this.tagList:", this.tagList)
}); });
}, },
@ -487,9 +467,7 @@ export default {
request(apiArr.getCar, "POST").then((res) => { request(apiArr.getCar, "POST").then((res) => {
console.log(res); console.log(res);
this.carNum = res.total; this.carNum = res.total;
// this.goodsDetail = res.commodity_cart_list;
this.goodsDetail = [].concat(res.same_day_cart_list, res.normal_cart_list)
.flatMap(supplier => supplier.commodity_cart_and_goods_model);
}); });
}, },
@ -526,13 +504,6 @@ export default {
}); });
}); });
}, },
getPriceRange(goodsList) {
if (!goodsList || goodsList.length === 0) return '¥0';
const prices = goodsList.map(item => Number(item.sales_price));
const minPrice = Math.min(...prices);
const maxPrice = Math.max(...prices);
return minPrice === maxPrice ? `${minPrice}` : `${minPrice} ~ ¥${maxPrice}`;
},
}, },
onLoad(options) { onLoad(options) {
const meun = menuButtonInfo(); const meun = menuButtonInfo();

View File

@ -29,11 +29,11 @@
<div class="goodsItem_left" @click="changeChecked(item, index)"> <div class="goodsItem_left" @click="changeChecked(item, index)">
<image <image
v-if="!item.checked" v-if="!item.checked"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png" src="http://192.168.0.172:5500/7.15/shop_checked1.png"
></image> ></image>
<image <image
v-if="item.checked" v-if="item.checked"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png" src="http://192.168.0.172:5500/7.15/shop_checked2.png"
></image> ></image>
</div> </div>
<div class="goodsItem_right"> <div class="goodsItem_right">

View File

@ -73,7 +73,7 @@
</view> </view>
</view> </view>
</view> </view>
<nav-footer :current="4"/> <nav-footer />
</view> </view>
</template> </template>
@ -122,8 +122,6 @@ export default {
uni.removeStorageSync('is_shop'); uni.removeStorageSync('is_shop');
uni.removeStorageSync('shopId'); uni.removeStorageSync('shopId');
uni.removeStorageSync('order_dispatch_permission'); uni.removeStorageSync('order_dispatch_permission');
uni.removeStorageSync('work_order_permission');
const button = uni.createSelectorQuery().select('#hiddenLoginBtn'); const button = uni.createSelectorQuery().select('#hiddenLoginBtn');
button.boundingClientRect().exec(); button.boundingClientRect().exec();
@ -232,7 +230,6 @@ export default {
if (item) { if (item) {
const { community_worker } = res; const { community_worker } = res;
uni.setStorageSync('order_dispatch_permission', community_worker && community_worker[0].order_dispatch_permission == 1 || false); uni.setStorageSync('order_dispatch_permission', community_worker && community_worker[0].order_dispatch_permission == 1 || false);
uni.setStorageSync('work_order_permission', community_worker && community_worker[0].work_order_permission == 1 || false);
uni.setStorageSync('phone', res.account); uni.setStorageSync('phone', res.account);
uni.hideLoading(); uni.hideLoading();
uni.showToast({ uni.showToast({

View File

@ -141,17 +141,9 @@ page {
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
.btn_view_btn { .btn_view > .btn {
margin: 40rpx 20rpx;
width: 300rpx; width: 300rpx;
height: 90rpx; height: 90rpx;
line-height: 90rpx;
text-align: center;
background: linear-gradient( 91deg, #FF7658 0%, #FF370B 100%);
border-radius: 100rpx 100rpx 100rpx 100rpx;
font-size: 36rpx;
color: #FFFFFF;
font-weight: 600;
} }
.btn { .btn {
margin: 40rpx auto 60rpx; margin: 40rpx auto 60rpx;

View File

@ -1,204 +1,230 @@
<template> <template>
<view class="container"> <div class="container">
<view class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }"> <div
<view class="searchBox_add"> class="searchBox"
<view class="searchBox_left"> :style="{ height: localHeight + 'px', paddingTop: top + 'px' }"
<u-icon bold color="#000" size="40" name="arrow-left" @click="headerBackClick"></u-icon> >
</view> <div class="searchBox_add">
<view class="searchBox_mid">工单详情</view> <div class="searchBox_left">
<view class="searchBox_right"></view> <u-icon
</view> bold
</view> color="#000"
size="40"
name="arrow-left"
@click="headerBackClick"
></u-icon>
</div>
<div class="searchBox_mid">工单详情</div>
<div class="searchBox_right"></div>
</div>
</div>
<view class="repairMsg"> <div class="repairMsg">
<view :class="['orderItemTit', statusType[info.status].style]"> <div :class="['orderItemTit', statusType[info.status].style]">
<view class="orderItemTit_left">工单编号{{ info.order_code }}</view> <div class="orderItemTit_left">工单编号{{ info.order_code }}</div>
<view class="orderItemTit_right">{{ statusType[info.status].desc }}</view> <div class="orderItemTit_right">{{ statusType[info.status].desc }}</div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">小区房源名称</view> <div class="row_label">小区房源名称</div>
<view class="row_con">{{ info.room.name }}</view> <div class="row_con">{{ info.room.name }}</div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">报修类型</view> <div class="row_label">报修类型</div>
<view class="row_con">{{ info.ac.category_name }}</view> <div class="row_con">{{ info.ac.category_name }}</div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">问题描述</view> <div class="row_label">问题描述</div>
<view class="row_con">{{ info.problem_description }}</view> <div class="row_con">{{ info.problem_description }}</div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">联系人</view> <div class="row_label">联系人</div>
<view class="row_con">{{ info.contact_name }}</view> <div class="row_con">{{ info.contact_name }}</div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">联系电话</view> <div class="row_label">联系电话</div>
<view class="row_con">{{ info.contact_phone }}</view> <div class="row_con">{{ info.contact_phone }}</div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">上门时间</view> <div class="row_label">上门时间</div>
<view class="row_con">{{ info.service_time }}</view> <div class="row_con">{{ info.service_time }}</div>
</view> </div>
</view> </div>
<view class="repairMsg"> <div class="repairMsg">
<view class="row"> <div class="row">
<view class="row_label df">图片</view> <div class="row_label df">图片</div>
<view class="row_con"> <div class="row_con">
<view v-if="info.imagesList && info.imagesList.length == 0">暂无图片</view> <view v-if="info.imagesList && info.imagesList.length == 0">暂无图片</view>
<image v-else v-for="(item, index) in info.imagesList" :key="index" :src="item" mode="" <image
@click="handlerPreviewImageClick(item)"> v-else
v-for="(item, index) in info.imagesList"
:key="index"
:src="item"
mode=""
@click="handlerPreviewImageClick(item)"
>
</image> </image>
</view> </div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label df">视频</view> <div class="row_label df">视频</div>
<view class="row_con"> <div class="row_con">
<view v-if="info.videosList && info.videosList.length == 0">暂无视频</view> <view v-if="info.videosList && info.videosList.length == 0">暂无视频</view>
<view v-else v-for="(item, index) in info.videosList" :key="index" class="videoBOX"> <div v-else v-for="(item, index) in info.videosList" :key="index" class="videoBOX">
<video id="myVideo" :src="item" playsinline webkit-playsinline></video> <video id="myVideo" :src="item" playsinline webkit-playsinline></video>
</view> </div>
</view> </div>
</view> </div>
<view class="row" v-if="info.assign_time"> <div class="row" v-if="info.assign_time">
<view class="row_label">指派时间</view> <div class="row_label">指派时间</div>
<view class="row_con noneBor">{{ info.assign_time }}</view> <div class="row_con noneBor">{{ info.assign_time }}</div>
</view> </div>
</view> </div>
<!-- 维修状态非带指派 --> <!-- 维修状态非带指派 -->
<view class="repairMsg" v-if="info.status !== 1"> <div class="repairMsg" v-if="info.status !== 1">
<view class="row"> <div class="row">
<view class="row_label">维修师傅</view> <div class="row_label">维修师傅</div>
<view class="row_con">{{ info.repairman_worker.name }}</view> <div class="row_con">{{ info.repairman_worker.name }}</div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">师傅手机号</view> <div class="row_label">师傅手机号</div>
<view class="row_con">{{ info.repairman_worker.mobile }}</view> <div class="row_con">{{ info.repairman_worker.mobile }}</div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">师傅工号</view> <div class="row_label">师傅工号</div>
<view class="row_con noneBor">{{ info.repairman_worker.emp_no }}</view> <div class="row_con noneBor">{{ info.repairman_worker.emp_no }}</div>
</view> </div>
</view> </div>
<!-- 工单状态非带指派或者进行中 --> <!-- 工单状态非带指派或者进行中 -->
<view class="repairMsg" v-if="info.status !== 1 && info.status !== 2"> <div class="repairMsg" v-if="info.status !== 1 && info.status !== 2">
<view class="row"> <div class="row">
<view class="row_label df">维修图片</view> <div class="row_label df">维修图片</div>
<view class="row_con"> <div class="row_con">
<view v-if="info.repairImagesList && info.repairImagesList.length == 0">暂无图片</view> <view v-if="info.repairImagesList && info.repairImagesList.length == 0">暂无图片</view>
<image v-for="(item, index) in info.repairImagesList" :key="index" :src="item" mode="" <image
@click="headerRepairImagesClick(item)" /> v-for="(item, index) in info.repairImagesList"
</view> :key="index"
</view> :src="item"
mode=""
@click="headerRepairImagesClick(item)"
/>
</div>
</div>
<view class="row"> <div class="row">
<view class="row_label df">维修视频</view> <div class="row_label df">维修视频</div>
<view class="row_con"> <div class="row_con">
<view v-if="info.repairVideosList && info.repairVideosList.length == 0">暂无视频</view> <view v-if="info.repairVideosList && info.repairVideosList.length == 0">暂无视频</view>
<view v-else v-for="(item, index) in info.repairVideosList" :key="index" class="videoBOX"> <div v-else v-for="(item, index) in info.repairVideosList" :key="index" class="videoBOX">
<video id="myVideo" :src="item" playsinline webkit-playsinline></video> <video id="myVideo" :src="item" playsinline webkit-playsinline></video>
</view> </div>
</view> </div>
</view> </div>
<view class="row"> <div class="row">
<view class="row_label">维修描述</view> <div class="row_label">维修描述</div>
<view class="row_con noneBor">{{ info.repair_description || '暂无描述' }}</view> <div class="row_con noneBor">{{ info.repair_description || '暂无描述' }}</div>
</view> </div>
</view> </div>
<view class="repairMsg" v-if="type === 'edit'"> <div class="repairMsg" v-if="type === 'edit'">
<view class="repairMedia"> <div class="repairMedia">
<view class="edit_row df"> <div class="edit_row df">
<view class="row_label">维修图片</view> <div class="row_label">维修图片</div>
<view class="row_con2"> <div class="row_con2">
<u-upload :fileList="imgList" name="imgList" @afterRead="afterReadImg" @delete="deletePic" multiple <u-upload :fileList="imgList" name="imgList" @afterRead="afterReadImg" @delete="deletePic" multiple
:maxCount="10"> :maxCount="10">
<view class="imgCon"> <div class="imgCon">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_imageImg.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_imageImg.png" mode="widthFix"></image>
mode="widthFix"></image>
上传图片 上传图片
</view> </div>
</u-upload> </u-upload>
</view> </div>
</view> </div>
<view class="edit_row df"> <div class="edit_row df">
<view class="row_label">上传视频</view> <div class="row_label">上传视频</div>
<view class="row_con2"> <div class="row_con2">
<u-upload v-if="!videoList.url" :fileList="videoList" @afterRead="afterReadVideo" @delete="deleteVideo" <u-upload v-if="!videoList.url" :fileList="videoList" @afterRead="afterReadVideo" @delete="deleteVideo" name="videoList"
name="videoList" :maxCount="1" accept="video"> :maxCount="1" accept="video">
<view class="imgCon"> <div class="imgCon">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_videoImg.png" <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_videoImg.png" mode="widthFix"></image>
mode="widthFix"></image>
上传视频 上传视频
</view> </div>
</u-upload> </u-upload>
<view v-if="videoList.url" class="videoBOX"> <div v-if="videoList.url" class="videoBOX">
<video id="myVideo" :src="videoList.url" playsinline webkit-playsinline></video> <video id="myVideo" :src="videoList.url" playsinline webkit-playsinline></video>
<view class="mask" @click="playFullScreenVideo"> <div class="mask" @click="playFullScreenVideo">
<!-- <view class="mask_con"> <!-- <div class="mask_con">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_play.png" mode="widthFix"></image> <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_play.png" mode="widthFix"></image>
</view> --> </div> -->
<view class="mask_cancel" @click="cancels">删除</view> <div class="mask_cancel" @click="cancels">删除</div>
</view> </div>
</view> </div>
</view> </div>
</view> </div>
</view> </div>
<view class="edit_row"> <div class="edit_row">
<view class="row_label">维修描述</view> <div class="row_label">维修描述</div>
<textarea placeholder="请输入维修描述" :value="repairRemarks" data-name="repairRemarks" @input="handlerInputClick" <textarea placeholder="请输入维修描述" :value="repairRemarks" data-name="repairRemarks" @input="handlerInputClick" auto-height />
auto-height /> </div>
</view> </div>
</view> <div
<view class="white_container" v-if="info.status == 2 && type === 'edit'" @click="headerChangeStateClick"> class="white_container"
<view style="display: flex; justify-content: space-between"> v-if="info.status == 2 && type === 'edit'"
<view style="display: flex"> @click="headerChangeStateClick"
<view class="white_label">工单状态</view> >
<view class="whit_desc"> <div style="display: flex; justify-content: space-between">
<div style="display: flex">
<div class="white_label">工单状态</div>
<div class="whit_desc">
{{ orderState.desc }} {{ orderState.desc }}
</view> </div>
</view> </div>
<u-icon name="arrow-up" v-if="!orderSelect" /> <u-icon name="arrow-up" v-if="!orderSelect" />
<u-icon name="arrow-down" v-if="orderSelect" /> <u-icon name="arrow-down" v-if="orderSelect" />
</view> </div>
<view class="statePupop" v-if="orderSelect"> <view class="statePupop" v-if="orderSelect">
<view class="statePopop_label" v-for="(item, index) in orderStateList" :key="index" <view
@click.stop="headerSelectClick(item)">{{ item.desc }}</view> class="statePopop_label"
v-for="(item, index) in orderStateList"
:key="index"
@click.stop="headerSelectClick(item)"
>{{ item.desc }}</view>
</view> </view>
</view> </div>
<view class="btn_view"> <div class="btn_view" v-if="info.status == 1 && order_dispatch_permission">
<view v-if="info.status == 1 && order_dispatch_permission"> <view class="btn" @click="headerTakeClick">接单</view>
<view class="btn_view_btn" @click="headerSelectMasterClick">派单</view> <view class="btn" @click="headerSelectMasterClick">派单</view>
</view> </div>
<view v-if="info.status == 1 && work_order_permission && allow_grab_order">
<view class="btn_view_btn" @click="headerTakeClick">接单</view>
</view>
</view>
<!-- 待派单状态 无派单权限按钮 --> <!-- 待派单状态 无派单权限按钮 -->
<!-- <view class="btn" v-else-if="info.status == 1" @click="headerTakeClick">接单</view> --> <div class="btn" v-else-if="info.status == 1" @click="headerTakeClick">接单</div>
<!-- 进行中状态编辑维修信息 --> <!-- 进行中状态编辑维修信息 -->
<view class="btn" v-if="info.status == 2" @click="headerEditClick"> <div class="btn" v-if="info.status == 2" @click="headerEditClick">
{{ type === "edit" ? "确定" : "编辑" }} {{ type === "edit" ? "确定" : "编辑" }}
</view> </div>
<u-popup :show="show" @close="close" round="50rpx" style="height: 50%; overflow: hidden"> <u-popup
:show="show"
@close="close"
round="50rpx"
style="height: 50%; overflow: hidden"
>
<view class="master_popup"> <view class="master_popup">
<view class="master_popup_title"> <view class="master_popup_title">
<view></view> <view></view>
@ -212,21 +238,20 @@
<view class="master_popup_tabel_left"> <view class="master_popup_tabel_left">
<view class="master_popup_label"> <view class="master_popup_label">
<view class="label">师傅名称</view> <view class="label">师傅名称</view>
<view>{{ item.name }}</view> <view>{{item.name}}</view>
</view> </view>
<view class="master_popup_label"> <view class="master_popup_label">
<view class="label">师傅手机号</view> <view class="label">师傅手机号</view>
<view>{{ item.mobile }}</view> <view>{{ item.mobile }}</view>
</view> </view>
</view> </view>
<radio :value="item.worker_id" @click="headerRadioClick" :data-name="item.worker_id" <radio :value="item.worker_id" @click="headerRadioClick" :data-name="item.worker_id" :checked="checked === item.worker_id" />
:checked="checked === item.worker_id" />
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</u-popup> </u-popup>
</view> </div>
</template> </template>
<script> <script>
@ -287,13 +312,10 @@ export default {
}, },
show: false, show: false,
communityMasterList: [], communityMasterList: [],
order_dispatch_permission: false, order_dispatch_permission: false,
work_order_permission: false,
allow_grab_order: false,
repairRemarks: '', // repairRemarks: '', //
imgList: [], imgList: [],
videoList: {}, videoList: {},
}; };
}, },
@ -324,51 +346,51 @@ export default {
const res = await request(apiArr.workMasterLick, "POST", { const res = await request(apiArr.workMasterLick, "POST", {
community_id: this.info.community_id, community_id: this.info.community_id,
}); });
this.communityMasterList = res.rows; this.communityMasterList = res.rows;
this.show = true; this.show = true;
}, },
// //
async afterReadImg(e) { async afterReadImg(e){
const { file } = e; const { file} = e;
console.log(e); console.log(e);
file.forEach(item => { file.forEach(item => {
upload(item.url, res => { upload(item.url, res => {
console.log(res.data.path); console.log(res.data.path);
this.imgList.push({ this.imgList.push({
url: picUrl + res.data.path, url: picUrl + res.data.path,
picUrl: res.data.path, picUrl: res.data.path,
}) })
}) })
}) })
uni.hideLoading(); uni.hideLoading();
uni.showToast({ uni.showToast({
title: '上传成功', title: '上传成功',
icon: 'success' icon: 'success'
}); });
}, },
deletePic(e) { deletePic(e) {
this.imgList.splice(e.index, 1); this.imgList.splice(e.index, 1);
}, },
afterReadVideo(e) { afterReadVideo(e){
uploadVideo(e.file.url, res => { uploadVideo(e.file.url, res => {
this.videoList = { this.videoList = {
url: picUrl + res.data.url, url: picUrl + res.data.url,
videos: res.data.url videos: res.data.url
} }
}) })
}, },
deleteVideo() { deleteVideo() {
this.videoList = {}; this.videoList = {};
}, },
playFullScreenVideo() { playFullScreenVideo() {
this.videoContext = this.videoContext || wx.createVideoContext('myVideo') this.videoContext = this.videoContext || wx.createVideoContext('myVideo')
this.videoContext.requestFullScreen() // this.videoContext.requestFullScreen() //
}, },
cancels(e) { cancels(e) {
this.videoList = {}; this.videoList = {};
}, },
// //
async headerEditClick() { async headerEditClick() {
@ -389,8 +411,8 @@ export default {
}); });
setTimeout(() => { setTimeout(() => {
uni.navigateBack({ uni.navigateBack({
delta: 1 delta: 1
}) })
}, 2000) }, 2000)
} else { } else {
@ -399,9 +421,9 @@ export default {
}, },
// input // input
handlerInputClick(e) { handlerInputClick(e) {
const { name } = e.currentTarget.dataset; const { name} = e.currentTarget.dataset;
this[name] = e.detail.value this[name] = e.detail.value
}, },
// //
headerChangeStateClick() { headerChangeStateClick() {
@ -414,51 +436,51 @@ export default {
this.orderSelect = false; this.orderSelect = false;
}, },
// //
async headerConfirmClick() { async headerConfirmClick() {
if (!this.checked) { if (!this.checked) {
uni.showToast({ uni.showToast({
title: '请选择维修师傅', title: '请选择维修师傅',
icon: 'none' icon: 'none'
}) })
return; return;
} }
console.log('this.chec', this.checked); console.log('this.chec', this.checked);
const res = await request(apiArr.workOrderCrudDispatch, 'POST', { const res = await request(apiArr.workOrderCrudDispatch, 'POST', {
worker_id: this.checked, worker_id: this.checked,
id: this.info.id, id: this.info.id,
}) })
uni.showToast({ uni.showToast({
title: '派单成功', title: '派单成功',
icon: 'success', icon: 'success',
mask: true mask: true
}) })
setTimeout(() => { setTimeout(() => {
uni.navigateBack({ uni.navigateBack({
delta: 1 delta: 1
}) })
}, 2000) }, 2000)
}, },
// //
handlerPreviewImageClick(item) { handlerPreviewImageClick(item) {
uni.previewImage({ uni.previewImage({
urls: this.info.imagesList, urls: this.info.imagesList,
current: item, current: item,
}); });
}, },
headerRepairImagesClick(item) { headerRepairImagesClick(item) {
uni.previewImage({ uni.previewImage({
urls: this.info.repairImagesList, urls: this.info.repairImagesList,
current: item, current: item,
}); });
}, },
// //
headerRadioClick(e) { headerRadioClick(e) {
console.log('e', e); console.log('e', e);
const { name } = e.currentTarget.dataset; const { name } = e.currentTarget.dataset;
this.checked = name; this.checked = name;
}, },
close() { close() {
this.show = false; this.show = false;
}, },
@ -480,20 +502,15 @@ export default {
onLoad(options) { onLoad(options) {
console.log("1111", options); console.log("1111", options);
const order_dispatch_permission = uni.getStorageSync('order_dispatch_permission'); const order_dispatch_permission = uni.getStorageSync('order_dispatch_permission');
this.order_dispatch_permission = order_dispatch_permission; this.order_dispatch_permission = order_dispatch_permission;
const work_order_permission = uni.getStorageSync('work_order_permission');
this.work_order_permission = work_order_permission;
const allow_grab_order = uni.getStorageSync('allow_grab_order');
this.allow_grab_order = allow_grab_order;
const meun = menuButtonInfo(); const meun = menuButtonInfo();
this.top = meun.top; this.top = meun.top;
this.localHeight = meun.height; this.localHeight = meun.height;
this.init(options.id); this.init(options.id);
}, },
onShow() { }, onShow() {},
}; };
</script> </script>

View File

@ -1,115 +0,0 @@
.container {
display: flex;
flex-direction: column;
/* min-height: 100vh; */
background-color: #ffffff;
}
.searchBox {
display: flex;
align-items: center;
/* position: absolute; */
left: 0;
z-index: 2;
}
.searchBox_add {
margin: 10rpx 20rpx;
display: flex;
align-items: center;
}
.top-image{
width: 50rpx;
height: 50rpx;
}
.emptyCommunity {
font-size: 28rpx;
color: #222222;
width: auto;
height: 44rpx;
padding: 5rpx 15rpx;
border-radius: 100rpx 100rpx 100rpx 100rpx;
display: flex;
align-items: center;
justify-content: center;
}
/* 背景图片区域 */
.bg-image-container {
position: relative;
width: 100%;
height: 500rpx;
overflow: hidden;
}
.bg-image {
width: 100%;
height: 100%;
}
.search-box {
position: absolute;
bottom: 50rpx;
left: 50%;
transform: translateX(-50%);
width: 80%;
height: 70rpx;
background-color: rgba(255, 255, 255, 0.9);
border-radius: 10rpx;
display: flex;
align-items: center;
justify-content: center;
}
.search-placeholder {
font-size: 26rpx;
color: #999999;
}
/* 工单台区域 */
.work-order-section {
display: grid;
grid-template-columns: repeat(3, 1fr);
/* 创建3列等宽的网格 */
}
.work-order-card {
width: 246rpx;
height: 200rpx;
background-color: #ffffff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border: 1rpx solid #f7f7f7;
}
.work-order-icon {
width: 100rpx;
height: 100rpx;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 10rpx;
}
.work-order-icon .iconfont {
color: #ffffff;
margin: 0;
}
.work-order-text {
font-size: 26rpx;
color: #333333;
font-weight: bold;
}
/* 适配不同屏幕尺寸 */
@media screen and (min-width: 768px) {
.container {
max-width: 768px;
margin: 0 auto;
}
}

View File

@ -1,82 +0,0 @@
<template>
<view class="container">
<view class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
<view class="searchBox_add" @click="addCommunity">
<image class="top-image" src="http://localhost:8080/workOrder_community.png" mode="aspectFill"></image>
<view class="emptyCommunity">
{{ communityVal }}
</view>
</view>
</view>
<!-- 背景图片区域 -->
<view class="bg-image-container">
<image class="bg-image" src="http://localhost:8080/test.png" mode="aspectFill"></image>
<!-- <input class="search-box" placeholder='输入工单号进入工单' confirm-type='search' @input="searchInput"
@confirm="searchInput" :value="selectKeyWord" /> -->
<!-- <view class="search-box">
<text class="search-placeholder">输入工单号进入工单</text>
</view> -->
</view>
<view class="work-order-section">
<view v-for="(item, index) in 9" :key="index">
<view class="work-order-card" v-if="index == 0 && showWorkOrderSection"
@click="navigateToWorkOrderDashboard">
<image class="work-order-icon" src="http://localhost:8080/workOrder.png" mode="aspectFill" />
<text class="work-order-text">工单台</text>
</view>
<view class="work-order-card" v-else></view>
</view>
</view>
</view>
</template>
<script>
import {
request,
picUrl,
uniqueByField,
menuButtonInfo,
NavgateTo,
} from "../../../utils";
import { apiArr } from "../../../api/community";
export default {
data() {
return {
communityVal: "添加我的房产",
showWorkOrderSection: false
}
},
onLoad() {
const workOrderPermission = uni.getStorageSync('work_order_permission');
const orderDispatchPermission = uni.getStorageSync('order_dispatch_permission');
this.showWorkOrderSection = !(workOrderPermission === false && orderDispatchPermission === false);
},
async onShow() {
this.communityVal = uni.getStorageSync('changeCommData').name;
const params = {
community_id: uni.getStorageSync('changeCommData').id,
}
const res = await request(apiArr.communityInfo, "POST", params);
uni.setStorageSync('allow_grab_order', res.allow_grab_order == 1 ? true : false);
},
methods: {
addCommunity() {
NavgateTo("/packages/workOrderDashboard/myCommunity/index");
},
//
navigateToWorkOrderDashboard() {
uni.navigateTo({
url: '/packages/workOrderDashboard/index/index'
});
}
}
}
</script>
<style scoped>
/* 引入外部CSS文件 */
@import url("./index.css");
</style>

View File

@ -1,85 +1,85 @@
<template> <template>
<view class="box"> <view class="box">
<view class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }"> <div class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
<view class="searchBox_add"> <div class="searchBox_add">
<view class="searchBox_left"> <div class="searchBox_left">
<u-icon bold color="#000" size="40" name="arrow-left" @click="headerBackClick"></u-icon> <u-icon bold color="#000" size="40" name="arrow-left" @click="headerBackClick"></u-icon>
</view> </div>
<view class="searchBox_mid">单台</view> <div class="searchBox_mid">作台</div>
<view class="searchBox_right"></view> <div class="searchBox_right"></div>
</view> </div>
</view> </div>
<view class="tabList"> <div class="tabList">
<view <div
:class="active == 1 ? 'tab active' : 'tab'" :class="active == 1 ? 'tab active' : 'tab'"
@click="headerTabsClick(1)" @click="headerTabsClick(1)"
> >
待指派 <span>({{awaitingNumb}})</span> 待指派 <span>({{awaitingNumb}})</span>
</view> </div>
<view <div
:class="active == 2 ? 'tab active' : 'tab'" :class="active == 2 ? 'tab active' : 'tab'"
@click="headerTabsClick(2)" @click="headerTabsClick(2)"
> >
进行中 <span>({{ underwayNum }})</span> 进行中 <span>({{ underwayNum }})</span>
</view> </div>
<view <div
:class="active == 4 ? 'tab active' : 'tab'" :class="active == 4 ? 'tab active' : 'tab'"
@click="headerTabsClick(4)" @click="headerTabsClick(4)"
> >
已作废 <span>({{ discardNum }})</span> 已作废 <span>({{ discardNum }})</span>
</view> </div>
<view <div
:class="active == 3 ? 'tab active' : 'tab'" :class="active == 3 ? 'tab active' : 'tab'"
@click="headerTabsClick(3)" @click="headerTabsClick(3)"
> >
已完成 <span>({{ doneNum }})</span> 已完成 <span>({{ doneNum }})</span>
</view> </div>
</view> </div>
<view class="orderList" v-for="(item, index) in list" :key="index"> <div class="orderList" v-for="(item, index) in list" :key="index">
<view class="orderItem" @click="handlerDetailClick(item.id)"> <div class="orderItem" @click="handlerDetailClick(item.id)">
<view :class="['orderItemTit', statusType[item.status].style]"> <div :class="['orderItemTit', statusType[item.status].style]">
<view class="orderItemTit_left">工单编号{{ item.order_code }}</view> <div class="orderItemTit_left">工单编号{{ item.order_code }}</div>
<view class="orderItemTit_right">{{ item.create_time }}</view> <div class="orderItemTit_right">{{ item.create_time }}</div>
</view> </div>
<view class="orderItem_row"> <div class="orderItem_row">
<view class="df"> <div class="df">
<view class="orderItem_row_label">小区房源名称</view> <div class="orderItem_row_label">小区房源名称</div>
<view class="orderItem_row_con">{{ item.room.name }}</view> <div class="orderItem_row_con">{{ item.room.name }}</div>
</view> </div>
<view :class="['orderItem_row_state', statusType[item.status].color]"> <div :class="['orderItem_row_state', statusType[item.status].color]">
{{ statusType[item.status].desc }} {{ statusType[item.status].desc }}
</view> </div>
</view> </div>
<view class="orderItem_row"> <div class="orderItem_row">
<view class="orderItem_row_label">报修类型</view> <div class="orderItem_row_label">报修类型</div>
<view class="orderItem_row_con">{{ item.ac.category_name }}</view> <div class="orderItem_row_con">{{ item.ac.category_name }}</div>
</view> </div>
<view class="orderItem_row"> <div class="orderItem_row">
<view class="orderItem_row_label">问题描述</view> <div class="orderItem_row_label">问题描述</div>
<view class="orderItem_row_con">{{ item.problem_description }}</view> <div class="orderItem_row_con">{{ item.problem_description }}</div>
</view> </div>
<view class="orderItem_row"> <div class="orderItem_row">
<view class="orderItem_row_label">上门时间</view> <div class="orderItem_row_label">上门时间</div>
<view class="orderItem_row_con">{{ item.service_time }}</view> <div class="orderItem_row_con">{{ item.service_time }}</div>
</view> </div>
<view class="orderItem_row"> <div class="orderItem_row">
<view class="orderItem_row_label">联系人</view> <div class="orderItem_row_label">联系人</div>
<view class="orderItem_row_con">{{ item.contact_name }}</view> <div class="orderItem_row_con">{{ item.contact_name }}</div>
</view> </div>
<view class="orderItem_row"> <div class="orderItem_row">
<view class="orderItem_row_label">联系人手机号</view> <div class="orderItem_row_label">联系人手机号</div>
<view class="orderItem_row_con">{{ item.contact_phone }}</view> <div class="orderItem_row_con">{{ item.contact_phone }}</div>
</view> </div>
</view> </div>
</view> </div>
</view> </view>
</template> </template>

View File

@ -1,98 +0,0 @@
page {
background-color: #f6f7fb;
padding: 0;
}
.container {
min-height: 100vh;
}
image {
width: 100%;
height: 100%;
}
.empty {
font-size: 28rpx;
color: #999999;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-top: 180rpx;
}
.empty image {
width: 340rpx;
height: 240rpx;
}
.addBtn {
width: 600rpx;
height: 90rpx;
background: linear-gradient(91deg, #FF7658 0%, #FF370B 100%);
border-radius: 100rpx 100rpx 100rpx 100rpx;
font-size: 36rpx;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 100rpx;
}
.communityList {
padding: 0 20rpx;
background-color: #fff;
margin-top: 20rpx;
}
.communityItem {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1rpx solid #EBEBEB;
padding: 30rpx 0;
}
.communityItem_left{
display: flex;
align-items: center;
}
.communityItem_left_img {
width: 160rpx;
height: 140rpx;
border-radius: 20rpx;
overflow: hidden;
margin-right: 30rpx;
}
.communityItem_left_msg{
flex: 1;
}
.communityItem_left_msg_tit {
font-size: 30rpx;
color: #222222;
}
.communityItem_left_msg_tit span {
color: #FF370B;
}
.communityItem_left_msg_msg {
font-size: 26rpx;
color: #999999;
}
.communityItem_right{
width: 34rpx;
height: 34rpx;
margin-left: 80rpx;
}
/* 最后一个 communityItem */
.communityItem:last-child {
border-bottom: none;
}

View File

@ -1,100 +0,0 @@
<template>
<view class="container">
<view class="empty" v-if="communityList.length == 0">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_newEmpty.png"
alt="" />
没有添加任何房产
</view>
<div class="communityList">
<div class="communityItem" v-for="item in communityList" :key="item.community_id"
@click="choseCommunity(item)">
<div class="communityItem_left">
<div class="communityItem_left_img">
<image :src="item.pic" mode="aspectFill"></image>
</div>
<div class="communityItem_left_msg">
<div class="communityItem_left_msg_tit">{{ item.name }}<span> {{ item.room_owner_list.length }}
</span></div>
<div class="communityItem_left_msg_msg">{{ item.addr }}</div>
</div>
</div>
<div class="communityItem_right">
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png"
v-if="item.community_id != currentCommunity.id"></image>
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png"
v-if="item.community_id == currentCommunity.id"></image>
</div>
</div>
</div>
<!-- <div class="addBtn" @click="addCommunity">添加我的房产</div> -->
</view>
</template>
<script>
import {
request,
NavgateTo,
isPhone,
picUrl
} from '../../../utils';
import {
apiArr
} from '../../../api/community';
export default {
data() {
return {
communityList: [],
page_num: 1,
page_size: 10,
currentCommunity: {}
}
},
methods: {
addCommunity() {
NavgateTo("/packages/community/addCommunity/index")
},
async getList() {
await request(apiArr.commInfo, "POST", {
user_id: uni.getStorageSync('userId'),
longitude: uni.getStorageSync('location').lng,
latitude: uni.getStorageSync('location').lat,
page_num: this.page_num,
page_size: this.page_size
}).then(res => {
res.rows.forEach(item => {
item.pic = item.pic.startsWith('http') ? item.pic : picUrl + item.pic
});
this.communityList = res.rows.filter(item => item.front_end_display !== 1)
})
},
// toUpview(item) {
// uni.setStorageSync('changeCommData', { id: item.community_id, name: item.name });
// NavgateTo("/packages/community/index/index")
// },
choseCommunity(e) {
this.currentCommunity = e
uni.setStorageSync('changeCommData', { id: e.community_id, name: e.name });
uni.setStorageSync('currentCommunityAddr',e.addr);
uni.setStorageSync("isShowNav", e.room_owner_list[0].type)
NavgateTo("1")
},
},
onLoad(options) {
this.currentCommunity = uni.getStorageSync('changeCommData')
console.log(this.currentCommunity, 'currentCommunity');
this.getList();
},
onReachBottom() { },
}
</script>
<style>
@import url("./index.css");
</style>

View File

@ -95,20 +95,6 @@
"navigationBarTitleText": "", "navigationBarTitleText": "",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
},
{
"path": "guide/index",
"style": {
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#fff"
}
},
{
"path": "myCommunity/index",
"style": {
"navigationBarTitleText": "选择小区",
"navigationBarBackgroundColor": "#fff"
}
} }
] ]
}, },
@ -491,7 +477,7 @@
{ {
"path": "index/index", "path": "index/index",
"style": { "style": {
"navigationBarTitleText": "", "navigationBarTitleText": "本地生活",
"navigationBarBackgroundColor": "#fff" "navigationBarBackgroundColor": "#fff"
} }
}, },
@ -728,14 +714,7 @@
} }
}, },
{ {
"path": "noticeManage/index", "path": "noticeDetials/index",
"style": {
"navigationBarTitleText": "公告管理",
"navigationBarBackgroundColor": "#fff"
}
},
{
"path": "noticeDetails/index",
"style": { "style": {
"navigationBarTitleText": "公告详情", "navigationBarTitleText": "公告详情",
"navigationBarBackgroundColor": "#fff" "navigationBarBackgroundColor": "#fff"
@ -800,12 +779,6 @@
"style": { "style": {
"navigationBarTitleText": "选择自提点" "navigationBarTitleText": "选择自提点"
} }
},
{
"path": "evaluate/index",
"style": {
"navigationBarTitleText": "评价"
}
} }
] ]
} }

View File

@ -1,46 +1,13 @@
.container { .container {
background-color: #f9f9f9; background-color: #f9f9f9;
} }
.hot-word-container {
width: auto;
height: 50rpx;
overflow: hidden;
position: relative;
/* flex: 1; */
border-radius: 50rpx;
/* margin: 0 20rpx; */
}
.hot-word-scroll {
transition: transform 0.5s ease;
}
.hot-word-item {
height: 50rpx;
line-height: 50rpx;
padding: 0 15rpx;
color: #666;
}
.hot-word-item:active {
background-color: #f5f5f5;
}
.searchBox2 {
display: flex;
align-items: center;
}
.white_container { .white_container {
background: #FFFFFF; background: #FFFFFF;
padding: 0 20rpx; padding: 0 20rpx;
} }
page { page {
background-color: #FFFFFF; background-color: #FFFFFF;
} }
.grid_Pic { .grid_Pic {
width: 61.5rpx; width: 61.5rpx;
height: 63.14rpx; height: 63.14rpx;
@ -68,79 +35,16 @@ page {
margin-right: 10rpx; margin-right: 10rpx;
} }
.search2 {
padding: 20rpx 0;
}
.function-nav {
display: flex;
justify-content: space-around;
padding: 20rpx 0;
margin: 20rpx -20rpx 0 -20rpx;
background-color: #f7f6fb;
}
.function-item {
width: 200rpx;
height: 180rpx;
display: flex;
flex-direction: column;
align-items: center;
border-radius: 20rpx;
background-color: #fff;
}
.icon-box {
width: 120rpx;
height: 100rpx;
border-radius: 10rpx;
margin-top: 15rpx;
margin-bottom: 10rpx;
display: flex;
justify-content: center;
align-items: center;
}
.icon-box image {
width: 90rpx;
height: 90rpx;
}
.function-item text {
font-size: 28rpx;
color: #333;
}
.searchBox2 {
width: 100%;
height: 60rpx;
background-color: #f6f7fb;
border-radius: 100rpx 100rpx 100rpx 100rpx;
margin-right: 170rpx;
display: flex;
box-sizing: border-box;
align-items: center;
padding: 0 30rpx;
font-size: 26rpx;
}
.searchBox2 image {
width: 28rpx;
height: 28rpx;
margin-right: 16rpx;
}
.swiper { .swiper {
width: 710rpx; width: 710rpx;
height: 300rpx; height: 300rpx;
margin: 0 auto; margin: 0 auto;
margin-top: 10rpx; margin-top: 30rpx;
position: relative; position: relative;
border-radius: 20rpx; border-radius: 20rpx;
overflow: hidden; overflow: hidden;
} }
.swiper swiper{
.swiper swiper {
height: 100%; height: 100%;
} }
@ -204,57 +108,6 @@ page {
height: 100%; height: 100%;
} }
/* 广告横幅 */
.serverList1 {
width: 100%;
height: 450rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
background-color: #fff;
margin-top: 20rpx;
padding: 15rpx;
}
.serverList1_left {
display: block;
width: 330rpx;
height: 450rpx;
margin-right: 17rpx;
}
.serverList1_left image {
height: 450rpx;
width: 330rpx;
object-fit: cover;
border-radius: 20rpx;
}
.serverList1_right {
width: 400rpx;
height: 450rpx;
}
.serverItemRight1 {
width: 365rpx;
height: 220rpx;
}
.serverItemRight1 image {
border-radius: 20rpx;
}
.serverItemRight2 {
width: 365rpx;
height: 220rpx;
margin-top: 10rpx;
}
.serverItemRight2 image {
border-radius: 20rpx;
}
.Tit { .Tit {
display: flex; display: flex;
align-items: center; align-items: center;
@ -264,24 +117,21 @@ page {
font-size: 36rpx; font-size: 36rpx;
color: #222222; color: #222222;
} }
.local { .local {
max-width: 414rpx; max-width: 414rpx;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.Tit_desc { .Tit_desc {
padding: 0 12rpx; padding: 0 12rpx;
height: 36rpx; height: 36rpx;
background: linear-gradient(90deg, #FFA100 0%, #FF6A00 100%); background: linear-gradient( 90deg, #FFA100 0%, #FF6A00 100%);
border-radius: 100rpx 100rpx 100rpx 100rpx; border-radius: 100rpx 100rpx 100rpx 100rpx;
font-weight: normal; font-weight: normal;
font-size: 26rpx; font-size: 26rpx;
color: #FFFFFF; color: #FFFFFF;
margin-left: 15rpx;
} }
.serverList { .serverList {
@ -304,7 +154,6 @@ page {
position: relative; position: relative;
margin-bottom: 12rpx; margin-bottom: 12rpx;
} }
.serverList_left { .serverList_left {
display: block; display: block;
width: 260rpx; width: 260rpx;
@ -312,7 +161,7 @@ page {
margin-right: 17rpx; margin-right: 17rpx;
} }
.serverList_left swiper { .serverList_left swiper{
height: 100%; height: 100%;
} }
@ -322,15 +171,6 @@ page {
flex-wrap: wrap; flex-wrap: wrap;
} }
.serverList_right1 {
width: 48%;
}
.serverList_right2 {
width: 48%;
margin-left: 10rpx;
}
.serverItem1 { .serverItem1 {
background: linear-gradient(139deg, #FEF4F4 0%, #FEDCD2 100%); background: linear-gradient(139deg, #FEF4F4 0%, #FEDCD2 100%);
margin-right: 12rpx; margin-right: 12rpx;
@ -342,68 +182,66 @@ page {
.serverItem3 { .serverItem3 {
background: #F1FFEC; background: #F1FFEC;
margin-right: 12rpx; margin-right: 12rpx;
} }
.serverItem4 { .serverItem4 {
background: #F0FDFF; background: #F0FDFF;
} }
.serverItem5 { .serverItem5 {
background: #EFF7FF; background: #EFF7FF;
margin-right: 12rpx; margin-right: 12rpx;
} }
.serverItem6 { .serverItem6 {
background: linear-gradient(180deg, #FFFFFF 0%, #FFEDF2 100%); background: linear-gradient( 180deg, #FFFFFF 0%, #FFEDF2 100%);
} }
.serverItem1 image { .serverItem1 image {
position: absolute; position: absolute;
right: 0rpx; right: 12rpx;
bottom: 0rpx; top: 14rpx;
width: 120rpx; width: 103rpx;
height: 70rpx; height: 100rpx;
} }
.serverItem2 image { .serverItem2 image {
position: absolute; position: absolute;
right: 0rpx; right: 6rpx;
bottom: 0rpx; top: 8rpx;
width: 120rpx; width: 108rpx;
height: 70rpx; height: 108rpx;
} }
.serverItem3 image { .serverItem3 image {
width: 116rpx;
height: 83rpx;
position: absolute; position: absolute;
right: 0rpx; right: 0rpx;
bottom: 0rpx; top: 30rpx;
width: 120rpx;
height: 70rpx;
} }
.serverItem4 image { .serverItem4 image {
width: 130rpx;
height: 86rpx;
position: absolute; position: absolute;
right: 0rpx; top: 30rpx;
bottom: 0rpx; right: 11rpx;
width: 120rpx;
height: 70rpx;
} }
.serverItem5 image { .serverItem5 image {
width: 162rpx;
height: 93rpx;
position: absolute; position: absolute;
right: 0rpx; right: 0rpx;
bottom: 0rpx; top: 23rpx;
width: 120rpx;
height: 70rpx;
} }
.serverItem6 image { .serverItem6 image {
width: 72rpx;
height: 72rpx;
position: absolute; position: absolute;
right: 0rpx; top: 30rpx;
bottom: 0rpx; right: 20rpx;
height: 70rpx;
width: 120rpx;
} }
.merchant { .merchant {
@ -412,7 +250,7 @@ page {
text-align: center; text-align: center;
width: 710rpx; width: 710rpx;
border-radius: 100rpx 100rpx 100rpx 100rpx; border-radius: 100rpx 100rpx 100rpx 100rpx;
background: linear-gradient(91deg, #FF7658 0%, #FF370B 100%); background: linear-gradient( 91deg, #FF7658 0%, #FF370B 100%);
font-weight: normal; font-weight: normal;
font-size: 36rpx; font-size: 36rpx;
color: #FFFFFF; color: #FFFFFF;
@ -422,19 +260,16 @@ page {
.padding_bottom32 { .padding_bottom32 {
padding-bottom: 32rpx; padding-bottom: 32rpx;
} }
.main { .main {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
} }
.list_pic { .list_pic {
width: 345rpx; width: 345rpx;
height: 345rpx; height: 345rpx;
margin-right: 20rpx; margin-right: 20rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
.list_pic:nth-child(2n) { .list_pic:nth-child(2n) {
margin-right: 0; margin-right: 0;
} }
@ -445,375 +280,4 @@ page {
color: #999999; color: #999999;
margin: 65rpx auto; margin: 65rpx auto;
text-align: center; text-align: center;
}
/* 分类标签栏样式 */
.category-tabs {
background-color: #fff;
border-radius: 10rpx;
margin-top: 20rpx;
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
overflow: hidden;
position: relative;
}
.tabs-container {
display: flex;
padding: 0 20rpx;
position: relative;
align-items: center;
}
.tabs-scroll {
height: 50rpx;
display: flex;
overflow-x: auto;
padding: 20rpx 0;
scrollbar-width: none;
-ms-overflow-style: none;
}
.tabs-scroll::-webkit-scrollbar {
display: none;
}
.tab-item {
padding: 0 20rpx;
margin-right: 20rpx;
font-size: 20rpx;
color: #333;
background-color: #ededed;
height: 50rpx;
line-height: 50rpx;
white-space: nowrap;
border-radius: 10rpx;
}
.tab-item.activeTab {
color: #ff6700;
background-color: #fff3e0;
}
.dropdown-btn {
width: 50rpx;
height: 50rpx;
display: flex;
align-items: center;
justify-content: center;
margin-left: 10rpx;
}
.dropdown-icon {
width: 50rpx;
height: 50rpx;
align-items: center;
transition: transform 0.3s ease;
}
.dropdown-icon.active {
transform: rotate(180deg);
}
/* 下拉分类列表样式 */
.category-dropdown {
background-color: #fff;
border-radius: 0 0 10rpx 10rpx;
box-shadow: 0 5rpx 15rpx rgba(0, 0, 0, 0.1);
padding: 20rpx;
position: relative;
z-index: 99;
width: 95%;
left: 0;
/* top: 88rpx; */
}
.dropdown-title {
font-size: 28rpx;
font-weight: bold;
color: #333;
margin-bottom: 20rpx;
padding-bottom: 15rpx;
border-bottom: 1rpx solid #eee;
}
.review-btn {
width: 80rpx;
height: 50rpx;
background-color: #ff6700;
color: #fff;
font-size: 26rpx;
text-align: center;
line-height: 50rpx;
border-radius: 8rpx;
margin-right: 10rpx;
align-self: center;
}
.category-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20rpx;
}
.category-grid-item {
padding: 20rpx;
text-align: center;
font-size: 24rpx;
color: #666;
background-color: #f5f5f5;
border-radius: 8rpx;
}
.category-grid-item.activeTab {
color: #ff6700;
background-color: #fff3e0;
font-weight: bold;
}
/* 店铺列表样式 */
.store-list-container {
background-color: #fff;
border-radius: 10rpx;
padding: 20rpx;
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
position: relative;
}
.overlay {
position: absolute;
top: 90rpx;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 98;
}
.store-item {
display: flex;
padding: 20rpx 0;
border-bottom: 1rpx solid #f0f0f0;
}
.store-item:last-child {
border-bottom: none;
}
.store-image {
width: 180rpx;
height: 180rpx;
border-radius: 10rpx;
margin-right: 20rpx;
overflow: hidden;
}
.store-image image {
width: 100%;
height: 100%;
object-fit: cover;
}
.store-info {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.store-name {
font-size: 32rpx;
color: #333;
font-weight: bold;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.store-rating {
display: flex;
align-items: center;
margin: 10rpx 0;
}
.star-icon {
width: 24rpx;
height: 24rpx;
margin-right: 5rpx;
}
.rating-text {
font-size: 26rpx;
color: #ffb400;
margin-left: 5rpx;
}
.store-tags {
display: flex;
flex-wrap: wrap;
margin-bottom: 10rpx;
}
.tag {
background-color: #f5f5f5;
color: #666;
font-size: 24rpx;
padding: 5rpx 15rpx;
border-radius: 15rpx;
margin-right: 10rpx;
margin-bottom: 10rpx;
}
.store-address {
font-size: 26rpx;
color: #999;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: flex;
align-items: center;
}
.address-icon {
width: 24rpx;
height: 24rpx;
margin-right: 5rpx;
}
.store-distance {
font-size: 26rpx;
color: #999;
margin-top: 5rpx;
display: flex;
align-items: center;
}
.distance-icon {
width: 24rpx;
height: 24rpx;
margin-right: 5rpx;
}
.merchantList {
padding: 0 20rpx;
width: 100%;
box-sizing: border-box;
}
.merchantList2 {}
.merchantItem {
display: flex;
padding-top: 30px;
padding-bottom: 30rpx;
border-bottom: 1rpx solid #EBEBEB;
;
}
.merchantItem_left {
width: 180rpx;
height: 180rpx;
border-radius: 20rpx 20rpx 20rpx 20rpx;
overflow: hidden;
margin-right: 24rpx;
}
.merchantItem_left image {
width: 100%;
height: 100%;
}
.merchantItem_right {
flex: 1;
}
.merchantItem_right_tit {
display: flex;
align-items: center;
justify-content: space-between;
}
.merchantItem_right_tit_left {
font-size: 30rpx;
color: #222222;
}
.merchantItem_right_tit_right {
font-size: 24rpx;
color: #555555;
}
.merchantItem_right_con {
margin-top: 14rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.merchangtItem_tag {
font-size: 22rpx;
color: #555555;
padding: 5rpx 12rpx;
white-space: nowrap;
background: rgba(255, 81, 42, 0.1);
border-radius: 100rpx 100rpx 100rpx 100rpx;
display: inline-block;
margin-top: 20rpx;
margin-right: 10rpx;
}
.startList {
display: flex;
align-items: center;
}
.startList image {
width: 22rpx;
height: 22rpx;
margin-right: 3rpx;
}
.merchantItem_right_con_right {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 26rpx;
color: #000000;
}
.merchantItem_right_con_right image {
width: 32rpx;
height: 28.59rpx;
margin-bottom: 6rpx;
}
.merchantItem_right_add {
font-size: 24rpx;
color: #999999;
margin-top: 14rpx;
}
/* 加载更多样式 */
.loading {
display: inline-block;
width: 30rpx;
height: 30rpx;
border: 3rpx solid #f3f3f3;
border-top: 3rpx solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
margin-right: 10rpx;
vertical-align: middle;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
} }

File diff suppressed because it is too large Load Diff

View File

@ -147,8 +147,6 @@ export default {
uni.removeStorageSync('is_shop'); uni.removeStorageSync('is_shop');
uni.removeStorageSync('shopId'); uni.removeStorageSync('shopId');
uni.removeStorageSync('order_dispatch_permission'); uni.removeStorageSync('order_dispatch_permission');
uni.removeStorageSync('work_order_permission');
uni.removeStorageSync('nickName'); uni.removeStorageSync('nickName');
uni.removeStorageSync('changeCommData'); uni.removeStorageSync('changeCommData');
console.error('用户拒绝授权:', event.detail.errMsg); console.error('用户拒绝授权:', event.detail.errMsg);
@ -161,7 +159,6 @@ export default {
}, { silent: false }).then(res => { }, { silent: false }).then(res => {
const { community_worker } = res; const { community_worker } = res;
uni.setStorageSync('order_dispatch_permission', community_worker && community_worker[0].order_dispatch_permission == 1 || false); uni.setStorageSync('order_dispatch_permission', community_worker && community_worker[0].order_dispatch_permission == 1 || false);
uni.setStorageSync('work_order_permission', community_worker && community_worker[0].work_order_permission == 1 || false);
uni.setStorageSync('nickName', res.nick_name); uni.setStorageSync('nickName', res.nick_name);
console.log(res) console.log(res)
}) })

View File

@ -215,9 +215,7 @@ export default {
mask: true mask: true
}) })
request(apiArr.getRegionList, 'POST', { request(apiArr.getRegionList, 'POST', {
short_name: keyword, short_name: keyword
ad_level: 2,
}, { silent: false }).then((res) => { }, { silent: false }).then((res) => {
console.log('搜索结果', res); console.log('搜索结果', res);
this.searchValue = keyword; this.searchValue = keyword;
@ -265,10 +263,7 @@ export default {
title: '加载中', title: '加载中',
mask: true mask: true
}) })
const params = { const res = await request(apiArr.getRegionList, 'POST', {}, { silent: false });
ad_level:2
}
const res = await request(apiArr.getRegionList, 'POST', params, { silent: false });
// TODO: // TODO:
const newRes = res.rows.map((item) => { const newRes = res.rows.map((item) => {
return { return {

View File

@ -27,7 +27,7 @@
</view> </view>
<view class="section section1"> <view class="section section1">
<view class="section_label"> <view class="section_label">
<view>{{ userInfo.balance }}</view> <view>10010</view>
<view>积分</view> <view>积分</view>
</view> </view>
<view class="section_label"> <view class="section_label">
@ -232,8 +232,6 @@
uni.removeStorageSync('is_shop'); uni.removeStorageSync('is_shop');
uni.removeStorageSync('shopId'); uni.removeStorageSync('shopId');
uni.removeStorageSync('order_dispatch_permission'); uni.removeStorageSync('order_dispatch_permission');
uni.removeStorageSync('work_order_permission');
const button = uni.createSelectorQuery().select('#hiddenLoginBtn'); const button = uni.createSelectorQuery().select('#hiddenLoginBtn');
button.boundingClientRect().exec(); button.boundingClientRect().exec();
@ -374,7 +372,6 @@
if (item) { if (item) {
const { community_worker } = res; const { community_worker } = res;
uni.setStorageSync('order_dispatch_permission', community_worker && community_worker[0].order_dispatch_permission == 1 || false); uni.setStorageSync('order_dispatch_permission', community_worker && community_worker[0].order_dispatch_permission == 1 || false);
uni.setStorageSync('work_order_permission', community_worker && community_worker[0].work_order_permission == 1 || false);
uni.setStorageSync('phone', res.account); uni.setStorageSync('phone', res.account);
uni.hideLoading(); uni.hideLoading();
uni.showToast({ uni.showToast({