You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
362 lines
9.8 KiB
362 lines
9.8 KiB
<template>
|
|
<view class="container" ref="backTop">
|
|
<HeaderCustom title="门店企业列表" :showBack="true"></HeaderCustom>
|
|
<uv-sticky bgColor="#fff" offsetTop="90">
|
|
<div class="tabBox">
|
|
<div class="tabItem" :class="{selected:active==='门店'}" @click="() => active = '门店'">门店</div>
|
|
<div class="tabItem" :class="{selected:active==='企业'}" @click="() => active = '企业'">企业</div>
|
|
</div>
|
|
</uv-sticky>
|
|
<div class="contentBox" v-show="active==='门店'">
|
|
<div class="contentItem" v-for="(item,index) in storeList" :key="item.id" @click="goDetail(item.id)">
|
|
<div class="statusBox" v-if="item.status == 2">
|
|
<uv-icon name="checkmark-circle-fill" color="#6AD307" size="12"></uv-icon>
|
|
已通过
|
|
</div>
|
|
<div class="statusBox reject" v-if="item.status == 3">
|
|
<uv-icon name="close-circle-fill" color="#F40404" size="12"></uv-icon>
|
|
已驳回
|
|
</div>
|
|
<div class="statusBox pedding" v-if="item.status == 1">
|
|
<uv-icon name="clock-fill" color="#F49843" size="12"></uv-icon>
|
|
待审核
|
|
</div>
|
|
<div class="title">{{item.store_name}}</div>
|
|
<div class="infoBox">
|
|
<div class="line">
|
|
<div class="infoItem">地区:{{item.location}}</div>
|
|
<div class="infoItem">地址详情:{{item.address}}</div>
|
|
</div>
|
|
<div class="line">
|
|
<div class="infoItem">电话:{{item.contact_phone}}</div>
|
|
<div class="infoItem">工作时间:{{item.business_hours}}</div>
|
|
</div>
|
|
<div class="line">
|
|
<div class="infoItem">业务类型:{{item.tags}}</div>
|
|
</div>
|
|
<div class="line">
|
|
<div class="infoItem">
|
|
注册日期:{{item.created_at ? dayjs(item.created_at * 1000).format('YYYY-MM-DD HH:mm:ss') : ''}}
|
|
</div>
|
|
<div class="infoItem" v-if="item.status == 3">驳回原因:{{item.review_note}}</div>
|
|
</div>
|
|
</div>
|
|
<div class="buttonBox">
|
|
<uv-button v-if="item.status != 1" size="small" shape="circle" text="删除" @click="delStore(item)"></uv-button>
|
|
<uv-button @click="goAdd(item.id)" customStyle="margin-left:10px" size="small" type="primary" shape="circle" text="修改"
|
|
v-if="item.status != 1"></uv-button>
|
|
</div>
|
|
</div>
|
|
<uv-load-more @loadmore="storeGetMore" :status="storeloadingStatus" />
|
|
</div>
|
|
|
|
<div class="contentBox" v-show="active==='企业'">
|
|
<div class="contentItem" v-for="(item,index) in businessList" :key="item.id">
|
|
<div class="statusBox" v-if="item.status == 2">
|
|
<uv-icon name="checkmark-circle-fill" color="#6AD307" size="12"></uv-icon>
|
|
已通过
|
|
</div>
|
|
<div class="statusBox reject" v-if="item.status == 3">
|
|
<uv-icon name="close-circle-fill" color="#F40404" size="12"></uv-icon>
|
|
已驳回
|
|
</div>
|
|
<div class="statusBox pedding" v-if="item.status == 1">
|
|
<uv-icon name="clock-fill" color="#F49843" size="12"></uv-icon>
|
|
待审核
|
|
</div>
|
|
<div class="title">{{item.company_name}}</div>
|
|
<div class="infoBox">
|
|
<div class="line">
|
|
<div class="infoItem">姓名:{{item.contact_person}}</div>
|
|
<div class="infoItem">邮箱:{{item.contact_email}}</div>
|
|
</div>
|
|
<div class="line">
|
|
<div class="infoItem">手机号码:{{item.contact_phone}}</div>
|
|
<div class="infoItem">地址:{{item.address}}</div>
|
|
</div>
|
|
<div class="line">
|
|
<div class="infoItem">更新日期:{{item.updated_at ? dayjs(item.updated_at * 1000).format('YYYY-MM-DD HH:mm:ss') : ''}}</div>
|
|
<div class="infoItem" v-if="item.status == 3">驳回原因:{{item.review_note}}</div>
|
|
</div>
|
|
</div>
|
|
<div class="buttonBox">
|
|
<uv-button size="small" shape="circle" v-if="item.status != 1" text="删除" @click="delStore(item)"></uv-button>
|
|
<uv-button v-if="item.status != 1" customStyle="margin-left:10px" size="small" type="primary" shape="circle"
|
|
text="修改" @click="goEdit(item.id)"></uv-button>
|
|
</div>
|
|
</div>
|
|
<uv-load-more @loadmore="businessGetMore" :status="businessloadingStatus" />
|
|
</div>
|
|
<div class="addBox" @click="goAdd(null)" v-if="active==='门店'"><uv-button iconColor="#fff" iconSize="14" icon="plus" type="primary"
|
|
shape="circle" text="新增"></uv-button></div>
|
|
<uv-modal showCancelButton ref="modal" content='确认删除?' :asyncClose="true" @confirm="confirmDel"></uv-modal>
|
|
</view>
|
|
</template>
|
|
|
|
<script setup>
|
|
import {
|
|
ref
|
|
} from "vue";
|
|
import dayjs from 'dayjs';
|
|
import {
|
|
onShow,
|
|
onReachBottom
|
|
} from "@dcloudio/uni-app";
|
|
import RPC from "@/utils/request";
|
|
import HeaderCustom from '/components/HeaderCustom/HeaderCustom.vue'
|
|
|
|
import {
|
|
useAuthStore
|
|
} from "@/store";
|
|
const authStore = useAuthStore()
|
|
// const props = defineProps({
|
|
// id: [String]
|
|
// });
|
|
// console.log('props', props.id)
|
|
const goAdd = (id) => {
|
|
uni.$uv.route({
|
|
url: '/pagesA/StoreManage/AddStore',
|
|
params: {
|
|
id: id,
|
|
}
|
|
});
|
|
}
|
|
const goEdit = (id) => {
|
|
uni.$uv.route({
|
|
url: '/pagesA/StoreManage/businessEdit',
|
|
params: {
|
|
id: id,
|
|
}
|
|
});
|
|
}
|
|
|
|
const goDetail = (id) => {
|
|
uni.$uv.route({
|
|
url: '/pagesA/ProductDetails/ProductDetails',
|
|
params: {
|
|
id: id,
|
|
}
|
|
});
|
|
};
|
|
const active = ref('门店')
|
|
const modal = ref(null)
|
|
|
|
const storeList = ref([])
|
|
const storeloadingStatus = ref('loadmore')
|
|
const storePage = ref(1)
|
|
const storeCount = ref(0)
|
|
|
|
const businessList = ref([])
|
|
const businessloadingStatus = ref('loadmore')
|
|
const businessPage = ref(1)
|
|
const businessCount = ref(0)
|
|
|
|
const confirmDel = () => {
|
|
if (active.value === '门店') {
|
|
RPC.post('/store/delete', {
|
|
id: currentItem.value.id
|
|
}).then((res) => {
|
|
storeList.value = storeList.value.filter(item => item.id !== currentItem.value.id)
|
|
uni.showToast({
|
|
icon: 'success',
|
|
title: '删除成功'
|
|
})
|
|
modal.value.close()
|
|
}).catch(() => {
|
|
modal.value.closeLoading()
|
|
})
|
|
}
|
|
if (active.value === '企业') {
|
|
RPC.post('/enterprise/delete', {
|
|
id: currentItem.value.id
|
|
}).then((res) => {
|
|
businessList.value = businessList.value.filter(item => item.id !== currentItem.value.id)
|
|
uni.showToast({
|
|
icon: 'success',
|
|
title: '删除成功'
|
|
})
|
|
modal.value.close()
|
|
}).catch(() => {
|
|
modal.value.closeLoading()
|
|
})
|
|
}
|
|
}
|
|
|
|
const currentItem = ref({})
|
|
const delStore = item => {
|
|
currentItem.value = item
|
|
modal.value.open();
|
|
}
|
|
|
|
const getStoreList = () => {
|
|
storeloadingStatus.value === 'loading'
|
|
RPC.post('/store/list', {
|
|
page: storePage.value,
|
|
limit: 20
|
|
}).then((res) => {
|
|
storeList.value = [...storeList.value, ...res.rows || []]
|
|
storeCount.value = res.count || 0
|
|
if (storeList.value.length >= storeCount.value) {
|
|
storeloadingStatus.value = 'nomore'
|
|
} else {
|
|
storeloadingStatus.value = 'loadmore'
|
|
}
|
|
}).catch(() => {
|
|
storeloadingStatus.value = 'loadmore'
|
|
})
|
|
}
|
|
const storeGetMore = () => {
|
|
if (storeList.value.length >= storeCount.value || storeloadingStatus.value === 'loading') return
|
|
storeloadingStatus.value = 'loading';
|
|
storePage.value = ++storePage.value;
|
|
getStoreList()
|
|
}
|
|
// getStoreList()
|
|
|
|
const getBusinessList = () => {
|
|
businessloadingStatus.value === 'loading'
|
|
RPC.post('/enterprise/list', {
|
|
page: businessPage.value,
|
|
limit: 20
|
|
}).then((res) => {
|
|
businessList.value = [...businessList.value, ...res.rows || []]
|
|
businessCount.value = res.count || 0
|
|
if (businessList.value.length >= businessCount.value) {
|
|
businessloadingStatus.value = 'nomore'
|
|
} else {
|
|
businessloadingStatus.value = 'loadmore'
|
|
}
|
|
}).catch(() => {
|
|
businessloadingStatus.value = 'loadmore'
|
|
})
|
|
}
|
|
const businessGetMore = () => {
|
|
if (businessList.value.length >= businessCount.value || businessloadingStatus.value === 'loading') return
|
|
businessloadingStatus.value = 'loading';
|
|
businessPage.value = ++businessPage.value;
|
|
getBusinessList()
|
|
}
|
|
getBusinessList()
|
|
|
|
onReachBottom(() => {
|
|
console.log('shangladaodi')
|
|
if (active.value === '门店') {
|
|
storeGetMore()
|
|
}
|
|
if (active.value === '企业') {
|
|
businessGetMore()
|
|
}
|
|
})
|
|
|
|
onShow(() => {
|
|
if (!authStore?.isLoggedIn) {
|
|
uni.switchTab({
|
|
url: `/pages/index/index`,
|
|
});
|
|
uni.showToast({
|
|
title: "请先登录",
|
|
icon: "none",
|
|
})
|
|
return
|
|
}
|
|
storeList.value = []
|
|
storePage.value = 1
|
|
getStoreList()
|
|
})
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.container {
|
|
font-size: 14px;
|
|
min-height: 100vh;
|
|
background-color: #f8f8f8;
|
|
}
|
|
|
|
.tabBox {
|
|
height: 50px;
|
|
background-color: #fff;
|
|
display: flex;
|
|
|
|
.tabItem {
|
|
height: 100%;
|
|
font-weight: 600;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex: 1;
|
|
|
|
&.selected {
|
|
color: #5479ED;
|
|
border-bottom: 1px solid #5479ED;
|
|
}
|
|
}
|
|
}
|
|
|
|
.contentBox {
|
|
padding: 10px 14px 54px;
|
|
|
|
.contentItem {
|
|
position: relative;
|
|
background-color: #fff;
|
|
padding: 8px 16px;
|
|
border-radius: 8px;
|
|
margin-bottom: 10px;
|
|
box-shadow: 0px 2px 23px 0px rgba(217, 217, 217, 0.5);
|
|
|
|
.statusBox {
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 12px;
|
|
justify-content: space-between;
|
|
padding: 4px 8px 4px 12px;
|
|
width: 56px;
|
|
color: #6AD307;
|
|
background-color: #E4FBE9;
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
border-radius: 0 0 0 20px;
|
|
|
|
&.reject {
|
|
color: #F40404;
|
|
background-color: #FAE6E3;
|
|
}
|
|
|
|
&.pedding {
|
|
color: #F49843;
|
|
background-color: #FBF3E5;
|
|
}
|
|
}
|
|
|
|
.title {
|
|
font-weight: 700;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.infoBox {
|
|
.line {
|
|
display: flex;
|
|
margin-bottom: 6px;
|
|
|
|
.infoItem {
|
|
flex: 1;
|
|
font-size: 12px;
|
|
color: #A7A7A7;
|
|
}
|
|
}
|
|
}
|
|
|
|
.buttonBox {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
}
|
|
}
|
|
|
|
.addBox {
|
|
position: fixed;
|
|
width: calc(100% - 28px);
|
|
left: 14px;
|
|
bottom: 14px;
|
|
}
|
|
</style> |