smartswrtch-app/page_fenbao/statulist/myshop/index.vue
2025-01-21 17:58:20 +08:00

556 lines
15 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

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

<template>
<view class="page">
<u-navbar title="我的店铺" :border-bottom="false" :background="bgc" title-color='#fff' title-size='36'
back-icon-color="#fff" height='50'></u-navbar>
<view class="box">
<view class="serch">
<view class="lt">
<image src="https://api.ccttiot.com/smartmeter/img/static/uaG7R4JLfYOzBhWfDN0j" mode=""></image><input type="text" v-model="keyword" placeholder="搜索门店"/> <view class="sousuo" @click="searchs">搜索</view>
</view>
</view>
<view class="list" @scrolltolower="onReachBottom">
<view class="listitem" v-for="(item,index) in wateringList" :key="index" @click="btnshopxq(item.storeId)">
<view class="toptit">
<image src="https://api.ccttiot.com/smartmeter/img/static/uFKbeneDcYbmekpVuWHm" mode="aspectFit"></image>
<view class="tit">
{{item.name}}
</view>
<view class="yuan" style="color: #8883F0;">
<text
style="width: 9rpx;height: 9rpx;border-radius: 50%;margin-right: 5rpx;background-color: #8883F0;display: inline-block;"></text>
运营中<u-icon name="arrow-right" color="#8883F0" size="28"></u-icon>
</view>
</view>
<view class="rishou">
<view class="rishouwz">
<text> 今日订单 </text><text> 今日收入 </text><text> 上月收入</text><text>设备状态 </text>
</view>
<view class="rishouje">
<text>¥{{item.todayOrderCount == null ? '--' : item.todayOrderCount}}</text>
<text>¥{{item.todayIncome == null ? '--' : item.todayIncome}}</text>
<text>¥{{item.lastMonthIncome == undefined ? '--' : item.lastMonthIncome}}</text>
<text> <text style="color: #8883F0;">{{item.onlineCount == undefined ? '--' : item.onlineCount}}/</text> {{item.offlineCount == undefined ? '--' : item.offlineCount}}</text>
</view>
</view>
<view class="gzlist">
<view class="jfgz" v-if="item.status == 2">
<text>审核状态:</text> 审核中
</view>
<view class="jfgz" v-if="item.status == 1">
<text>审核状态:</text> 正常
</view>
<view class="jfgz" style="margin-top: 16rpx;">
<text>是否生效:</text> {{item.enabled == false ? '未生效' : '生效'}}
</view>
<view class="jfgz" style="margin-top: 16rpx;">
<text>客服名称:</text>{{item.contactName}}
</view>
<view class="phone">
<text>客服电话:</text>{{item.contactMobile}}
</view>
<view class="icons">
<image src="https://api.ccttiot.com/smartmeter/img/static/uVj4z4rdIZGK0sVcMlHi" style="width: 116rpx;" mode="aspectFit"
@click.stop="nav(item)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/u9IYNLl7G83pOXtQbaYj" mode="aspectFit"
@click.stop="btnpag(4,item)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/uVYNIcmP5ytOhhfpasrt" style="width: 116rpx;" mode="aspectFit"
@click.stop="btnpag(5,item)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/uoyO7psgUNmNuhPDoOmH" mode="aspectFit"
@click.stop="btnpag(2,item)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/uu7AtppWYWNucDPLkcFu" mode="aspectFit"
@click.stop="btnpag(3,item)"></image>
</view>
</view>
<view class="yunxing">
<text>已运营{{item.daysDifference + 1}}天</text> <text>{{item.createTime}}</text>
</view>
</view>
<view class="" v-if="showflag" style="width: 100%;height: 200rpx;margin: auto;margin-top: 170rpx;text-align: center;">
<image style="width: 200rpx;height: 200rpx;"
src="https://api.ccttiot.com/smartmeter/img/static/uZFUpcz0YZZ4f4RjvGg2" mode="aspectFit"></image>
<view class="" style="font-size: 28rpx;color: #808080;margin-top: 30rpx;">暂无更多店铺...</view>
</view>
</view>
</view>
<view class="anniu" @click="creadshop" v-if="types != 11">
<view class="btn">
新建店铺
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: " #8883F0",
},
pagenum: 1,
wateringList: [],
pagesize: 10, // 一页多少数据
isLoading: false, // 是否正在加载数据
noMoreData: false, // 是否没有更多数据
total: 0,
keyword: '',
showflag: false,
types:null
}
},
onLoad(option) {
if(option.types){
this.types = option.types
}
},
// 分享到好友(会话)
onShareAppMessage: function () {
return {
title: '创想物联',
path: '/pages/shouye/index'
}
},
// 分享到朋友圈
onShareTimeline: function () {
return {
title: '创想物联',
query: '',
path: '/pages/shouye/index'
}
},
onShow() {
this.pagenum = 1
this.wateringList = []
this.getlist()
},
methods: {
btnpag(num,item) {
if (num == 1) {
uni.navigateTo({
url: '/page_fenbao/statulist/myshop/shebeilist/index?storeId=' + item.storeId
})
} else if (num == 2) {
if(item.status == 2){
uni.showToast({
title: '已有未审核店铺信息',
icon: 'none',
duration: 1000
})
}else{
uni.navigateTo({
url: '/page_fenbao/statulist/myshop/editshop/index?obj=' + JSON.stringify(item)
})
}
} else if (num == 3) {
let vm = this
uni.showModal({
title: '提示',
content: '你确定要注销这个店铺吗?',
success: function(res) {
if (res.confirm) {
vm.$u.delete("/app/store/" + item.storeId).then(res => {
if (res.code == 200) {
uni.showToast({
title: '删除成功',
icon: 'success',
duration: 1000
})
setTimeout(() => {
uni.navigateBack()
}, 1500)
} else if (res.code == 500) {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1000
})
}
})
} else if (res.cancel) {
console.log('用户点击了取消')
}
}
})
}else if(num == 4){
uni.navigateTo({
url:'/page_components/peizhi?obj=' + JSON.stringify(item)
})
}else if(num == 5){
// uni.navigateTo({
// url:'/pages/shopewm?storeId=' + item.storeId
// })
uni.navigateTo({
url:'/page_geren/buyCard?storeId=' + item.storeId
})
// uni.showToast({
// title: '功能暂未开放',
// icon: 'none',
// duration: 1000
// })
}
},
// 点击跳转到合伙人
nav(item){
uni.navigateTo({
url:'/page_fenbao/hehuoren/index?storeId=' + item.storeId,
})
},
// 请求店铺列表
getlist() {
if(this.types == '11'){
this.isLoading = true;
this.$u.get("/staff/store/list?pageNum=" + this.pagenum + '&pageSize=' + this.pagesize + '&keyword=' + this.keyword).then(res => {
if (res.code == 200) {
this.total = res.total
if (this.total > 0) {
this.showflag = false
} else {
this.showflag = true
}
if (res.rows.length > 0) {
// 有数据,追加到列表
this.wateringList = this.wateringList.concat(res.rows)
this.pagenum++
// 计算创建到现在运行了多少天
this.wateringList.forEach((item, index) => {
var dateTime = new Date(item.createTime)
if (isNaN(dateTime.getTime())) {
console.error(`无法解析日期时间字符串: ${item.createTime}`)
return
}
var now = new Date().getTime()
var differenceInMilliseconds = now - dateTime.getTime();
var differenceInDays = Math.floor(differenceInMilliseconds / (1000 * 60 * 60 * 24))
// 直接修改原数组中的对象添加daysDifference属性
item.daysDifference = differenceInDays
})
} else {
// 没有更多数据
this.noMoreData = true
}
this.isLoading = false
}
}).catch(error => {
console.error('获取店铺失败:', error)
this.isLoading = false // 加载失败也标记为完成
})
}else{
this.isLoading = true;
this.$u.get("/app/store/list?pageNum=" + this.pagenum + '&pageSize=' + this.pagesize + '&keyword=' + this.keyword).then(res => {
if (res.code == 200) {
this.total = res.total
if (this.total > 0) {
this.showflag = false
} else {
this.showflag = true
}
if (res.rows.length > 0) {
// 有数据,追加到列表
this.wateringList = this.wateringList.concat(res.rows)
this.pagenum++
// 计算创建到现在运行了多少天
this.wateringList.forEach((item, index) => {
var dateTime = new Date(item.createTime)
if (isNaN(dateTime.getTime())) {
console.error(`无法解析日期时间字符串: ${item.createTime}`)
return
}
var now = new Date().getTime()
var differenceInMilliseconds = now - dateTime.getTime();
var differenceInDays = Math.floor(differenceInMilliseconds / (1000 * 60 * 60 * 24))
// 直接修改原数组中的对象添加daysDifference属性
item.daysDifference = differenceInDays
})
} else {
// 没有更多数据
this.noMoreData = true
}
this.isLoading = false
}
}).catch(error => {
console.error('获取店铺失败:', error)
this.isLoading = false // 加载失败也标记为完成
})
}
},
// 点击搜索店铺
searchs() {
this.wateringList = []
this.getlist()
},
// 上拉加载更多
onReachBottom() {
let sum = this.total / this.pagesize
if (this.pagenum - 1 < sum) {
this.getlist() // 上拉加载更多
} else {
uni.showToast({
title: '没有更多店铺了',
icon: 'none',
duration: 1000
})
}
},
// 点击跳转到新建店铺
creadshop() {
uni.navigateTo({
url: '/page_fenbao/statulist/myshop/shopxx/index'
})
},
// 点击跳转到店铺详情
btnshopxq(id) {
uni.navigateTo({
url: '/page_fenbao/statulist/myshop/shopdetail/index?id=' + id
})
}
}
}
</script>
<style lang="scss">
/deep/ .u-title {
padding-bottom: 22rpx;
}
/deep/ .uicon-nav-back {
padding-bottom: 22rpx;
}
.anniu{
width: 750rpx;
height: 152rpx;
padding-top: 24rpx;
box-sizing: border-box;
background: #FFFFFF;
box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0,0,0,0.3);
border-radius: 0rpx 0rpx 0rpx 0rpx;
position: fixed;
left: 0;
bottom: 0;
.btn{
width: 680rpx;
height: 104rpx;
background: #8883F0;
border-radius: 30rpx;
font-weight: 600;
font-size: 36rpx;
color: #FFFFFF;
text-align: center;
line-height: 104rpx;
margin: auto;
}
}
.serch{
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 36rpx;
box-sizing: border-box;
padding-top: 40rpx;
padding-bottom: 22rpx;
background-color: #fff;
.lt{
display: flex;
align-items: center;
width: 100%;
height: 68rpx;
border: 2rpx solid #8883F0;
border-radius: 24rpx;
padding-left: 30rpx;
box-sizing: border-box;
.sousuo{
width: 140rpx;
height: 66rpx;
text-align: center;
line-height: 66rpx;
font-size: 32rpx;
color: #FFFFFF;
background: #8883F0;
border: 2rpx solid #8883F0;
border-radius: 0 20rpx 20rpx 0;
}
image{
width: 46rpx;
height: 46rpx;
}
input{
width: 460rpx;
margin-left: 30rpx;
height: 68rpx;
line-height: 68rpx;
}
}
}
.page {
width: 750rpx;
height: 100vh;
.box {
width: 750rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
// padding-top: 150rpx;
.list {
padding-bottom: 400rpx;
margin-top: 26rpx;
.listitem {
margin-bottom: 28rpx !important;
padding: 24rpx 38rpx;
box-sizing: border-box;
width: 680rpx;
max-height: 1540rpx;
background: #FFFFFF;
border-radius: 38rpx 38rpx 38rpx 38rpx;
margin: auto;
.yunxing {
display: flex;
justify-content: space-between;
font-size: 26rpx;
color: #808080;
margin-top: 26rpx;
}
.phones {
margin-top: 16rpx;
font-size: 26rpx;
color: #1DBE7B;
border-bottom: 1px solid #ccc;
padding-bottom: 26rpx;
box-sizing: border-box;
text {
color: #808080;
}
}
.phone {
margin-top: 16rpx;
font-size: 26rpx;
color: #3D3D3D;
text {
color: #808080;
}
}
.gzlist {
margin-top: 30rpx;
border-bottom: 1rpx solid #ccc;
padding-bottom: 26rpx;
.icons {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
image {
width: 96rpx;
height: 96rpx;
margin-top: 20rpx;
}
}
.jfgz {
font-size: 26rpx;
color: #3D3D3D;
text {
color: #808080;
}
}
}
.rishou {
margin-top: 26rpx;
box-sizing: border-box;
.rishouwz {
display: flex;
justify-content: space-between;
text {
font-size: 26rpx;
color: #808080;
width: 230rpx;
text-align: center;
}
}
.rishouje {
display: flex;
justify-content: space-between;
margin-top: 10rpx;
text {
font-weight: 500;
font-size: 32rpx;
color: #3D3D3D;
width: 230rpx;
text-align: center;
}
}
}
.toptit {
border-bottom: 1px solid #ccc;
display: flex;
justify-content: space-between;
padding-bottom: 12rpx;
box-sizing: border-box;
align-items: center;
image {
width: 28rpx;
height: 28rpx;
}
.tit {
width: 450rpx;
height: 68rpx;
line-height: 68rpx;
padding-left: 10rpx;
// background: #F4F3FF;
border-radius: 16rpx 16rpx 16rpx 16rpx;
font-weight: 600;
font-size: 30rpx;
color: #3D3D3D;
box-sizing: border-box;
}
.bd {
margin-top: 28rpx;
height: 100%;
font-size: 20rpx;
color: #FFFFFF;
padding: 4rpx 12rpx;
box-sizing: border-box;
background: #1DBE7B;
border-radius: 6rpx 6rpx 6rpx 6rpx;
}
.yuan {
width: 130rpx;
display: flex;
align-items: center;
}
}
}
}
.top {
width: 750rpx;
height: 150rpx;
background: #FFFFFF;
padding: 45rpx 36rpx;
box-sizing: border-box;
position: fixed;
top: 170rpx;
.cjshop {
width: 200rpx;
height: 64rpx;
background-color: #8883F0;
border-radius: 50rpx;
text-align: center;
line-height: 64rpx;
color: #fff;
font-size: 32rpx;
margin-left: 20rpx;
}
/deep/ .u-content {
border: 1px solid #ccc;
border-radius: 50rpx 0 0 50rpx !important;
}
/deep/ .u-action {
border-radius: 0 50rpx 50rpx 0 !important;
width: 112rpx;
height: 65rpx;
line-height: 65rpx;
border: 2rpx solid #ccc;
margin-left: 0;
color: #3D3D3D;
background-color: #f2f2f2;
}
}
}
}
</style>