ct-mattress/page_fenbao/shebeixz.vue

350 lines
7.7 KiB
Vue
Raw Normal View History

2024-08-28 11:04:46 +08:00
<template>
<view class="page">
<u-navbar title="应用场所" :border-bottom="false" :background="bgc" title-color='#fff' back-icon-color="#fff"
title-size='36' height='42'></u-navbar>
<view class="box" v-if="loading">
<view class="box_list" v-for="(item, index) in list" :key="index" @click="btnactive(item.storeId,index,item)" >
<view :class="['boxlist', { active: tcidlist.includes(item.storeId) }]">
<view :class="['toptime', { activewz: tcidlist.includes(item.storeId) }]">
<text>{{item.name}}</text>
<text>负责人:{{item.userName}}</text>
</view>
</view>
<view class="ccc">
</view>
</view>
</view>
<view class="" v-if="listflag"
style="color: #ccc;font-size: 36rpx;margin-top: 200rpx;text-align: center;">
暂无场所
</view>
<view class="anniu" @click="btnqd">
<!-- <view class="xinz" @click="btnadd">
新建套餐
</view> -->
<view class="xinz">
确定
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: '',
loading: false,
disabled: false,
btnWidth: 180,
show: false,
options: [{
text: '删除',
style: {
backgroundColor: '#dd524d'
}
}],
storeId: '',
bgc: {
backgroundColor: "#8883f0",
},
activeid: '',
checkboxes: [],
tcidlist: [],
titaoc: [],
newobj: [],
listflag:false,
titflag:'',
arrlists:[],
deviceList:[],
};
},
onLoad(option) {
uni.removeStorageSync('tcidlist')
this.storeId = option.id
if(option.title == '确定'){
this.titflag = '确定'
// this.deviceList = JSON.parse(option.list)
}
},
created() {
// 初始化checkboxes数组每个元素都设为false表示初始时不显示复选框
// this.checkboxes = new Array(this.list.length).fill(false);
},
onShow() {
this.tcidlist = []
this.getlist()
},
// 分享到好友(会话)
onShareAppMessage: function() {
return {
title: '创亿康',
path: '/pages/index/index'
}
},
// 分享到朋友圈
onShareTimeline: function() {
return {
title: '创亿康',
query: '',
path: '/pages/index/index'
}
},
methods: {
// 查询套餐已有设备
getao() {
this.$u.get(`/agent/suit/${this.storeId}`).then(res => {
if (res.code == 200) {
if (res.data.storeList.length > 0) {
this.titaoc = res.data.storeList
let uniqueSuitIds = new Set();
this.arrlists = new Set()
this.list.forEach(item => {
if (this.titaoc.some(titaocItem => titaocItem.storeId == item.storeId)) {
uniqueSuitIds.add(item.storeId);
this.arrlists.add(item)
}
})
this.tcidlist = Array.from(uniqueSuitIds);
let matchedItems = this.list.filter(item => uniqueSuitIds.has(item.storeId))
let unmatchedItems = this.list.filter(item => !uniqueSuitIds.has(item.storeId))
this.list = matchedItems.concat(unmatchedItems)
// this.list = this.list
}else{
// this.list = this.list
this.tcidlist = []
}
}
})
},
getadd(){
if (this.deviceList.length > 0) {
this.titaoc = this.deviceList
let uniqueSuitIds = new Set();
this.arrlists = new Set()
this.list.forEach(item => {
if (this.titaoc.some(titaocItem => titaocItem.storeId == item.storeId)) {
uniqueSuitIds.add(item.storeId);
this.arrlists.add(item)
}
})
this.tcidlist = Array.from(uniqueSuitIds);
let matchedItems = this.list.filter(item => uniqueSuitIds.has(item.storeId))
let unmatchedItems = this.list.filter(item => !uniqueSuitIds.has(item.storeId))
this.list = matchedItems.concat(unmatchedItems)
}else{
this.tcidlist = []
}
},
btnactive(id, index,item) {
const indexInTcidList = this.tcidlist.indexOf(id);
if (indexInTcidList !== -1) {
this.tcidlist.splice(indexInTcidList, 1);
} else {
this.tcidlist.push(id);
}
this.toggleItemInArray(this.arrlists, item)
},
toggleItemInArray(arr, item) {
// 检查元素是否存在于数组中
const index = arr.indexOf(item);
if (index > -1) {
// 如果存在,则删除该元素
arr.splice(index, 1);
console.log('元素已删除');
} else {
// 如果不存在,则添加该元素
arr.push(item);
console.log('元素已添加');
}
// 打印更新后的数组
console.log(arr);
},
// 点击确定
btnqd() {
if(this.titflag == '确定'){
uni.setStorageSync('tcidlist', this.arrlists)
uni.navigateBack()
}else{
// this.$u.delete(`/app/suit/delByDevice/${this.storeId}`).then(res => {})
let numArr = this.tcidlist.map(item => parseInt(item, 10))
let data = {
storeIds: numArr,
suitId: this.storeId
}
this.$u.put(`/agent/suit`, data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: res.msg,
icon: 'success',
duration: 1000,
})
if(this.titflag == '确定'){
}else{
this.getao()
}
setTimeout(() => {
uni.navigateBack()
}, 1000)
}
})
}
},
getlist() {
let data = {
pageNum: 1,
pageSize: 99
}
this.$u.get(`/agent/store/allList`, data).then((res) => {
if (res.code == 200) {
if(res.data.length > 0){
this.listflag = false
this.list = res.data
this.list = this.list.map(item => ({
...item,
tcidlist: this.tcidlist
}))
if(this.titflag == '确定'){
// this.getadd()
}else{
this.getao()
}
// console.log(this.list);
this.loading = true
}else{
this.listflag = true
}
}
});
},
}
};
</script>
<style lang="scss">
// /deep/ .u-title {
// padding-bottom: 22rpx;
// }
// /deep/ .u-icon__icon {
// padding-bottom: 22rpx;
// }
.active {
background-color: #8883F0 !important;
border-radius: 20rpx;
}
.activewz {
color: #fff !important;
}
page {
background: #F4F5F7;
}
.anniu {
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
display: flex;
height: 200rpx;
padding-top: 40rpx;
background-color: #fff;
// justify-content: space-between;
width: 100%;
padding-left: 50rpx;
padding-right: 50rpx;
.xinz {
width: 100%;
height: 84rpx;
background: #8883F0;
filter: blur(0px);
text-align: center;
line-height: 84rpx;
font-size: 36rpx;
color: #FFFFFF;
border-radius: 18rpx;
}
}
.page {
width: 750rpx;
padding-bottom: 400rpx;
.box {
width: 750rpx;
height: 100%;
background: #F4F5F7;
border-radius: 0rpx 0rpx 0rpx 0rpx;
padding: 50rpx;
.box_list {
background-color: #fff;
margin-top: 20rpx;
border-radius: 20rpx;
}
.boxlist {
padding: 40rpx 42rpx;
box-sizing: border-box;
.ccc {
display: flex;
align-items: center;
justify-content: space-between;
}
.toptime {
font-size: 32rpx;
color: #000000;
display: flex;
justify-content: space-between;
}
.bumday {
margin-top: 10rpx;
text {
font-size: 32rpx;
color: #95989D;
}
}
}
/deep/ .u-swipe-action {
margin-top: 30rpx;
border-radius: 20rpx;
width: 654rpx;
height: 182rpx;
background: #FFFFFF;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
filter: blur(0px);
border: 0;
}
/deep/ .u-swipe-del {
height: 190rpx;
}
}
}
</style>