kaiguan-zfb/page_fenbao/statulist/taocanlist/index.vue
2024-08-03 18:03:02 +08:00

397 lines
9.2 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' back-icon-color="#fff"
title-size='36' height='42'></u-navbar>
<view class="box" v-if="loading">
<view class="" style="width: 100%;color: #ccc;font-weight: 600;">
长按拖动可更改排序
</view>
<!-- <view class="box_list" v-for="(item, index) in list" :key="index" @click="btnactive(item.suitId,index)" >
<view :class="['boxlist', { active: tcidlist.includes(item.suitId) }]">
<view :class="['toptime', { activewz: tcidlist.includes(item.suitId) }]">
<text>{{item.name.length > 5 ? item.name.substring(0,4) + '...' : item.name}}(通电时长:{{item.value}} <text v-if="item.timeUnit == 1">日</text> <text
v-if="item.timeUnit == 2">时</text> <text v-if="item.timeUnit == 3">分钟</text> <text
v-if="item.timeUnit == 4">秒</text> </text> <text>¥{{item.price}}</text>
</view>
<view class="ccc">
<view class="bumday" v-if="item.description == null">
<text class="shi"></text></text>
</view>
<view class="bumday" v-else>
<text
:class="['shi', { activewz: tcidlist.includes(item.suitId) }]">{{item.description.length > 20 ? item.description.substring(0, 20) + '...' : item.description}}</text></text>
</view>
</view>
</view>
</view> -->
<HM-dragSorts ref="dragSorts" :list="newobj" :tcidlist="tcidlist"
@update:tcidlist="handleTcidlistUpdate" :autoScroll="true" :feedbackGenerator="false"
@newList="handleNewList" rowHeight='50' @change="change" @confirm="confirm" @onclick="onclick"
:listBackgroundColor='F7FAFE'></HM-dragSorts>
<view class="" v-if="newobj == ''"
style="color: #ccc;font-size: 36rpx;margin-top: 200rpx;text-align: center;">
暂无可用套餐
</view>
<view class="anniu">
<!-- <view class="xinz" @click="btnadd">
新建套餐
</view> -->
<view class="xinz" @click="btnqd">
确定
</view>
</view>
</view>
<view v-if="btnmsk" style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .1;z-index: 999;"></view>
</view>
</template>
<script>
import dragSorts from '@/page_fenbao/HM-dragSorts/HM-dragSorts.vue'
export default {
components: {
'HM-dragSorts': dragSorts
},
data() {
return {
btnmsk:false,
list: '',
loading: false,
disabled: false,
btnWidth: 180,
show: false,
options: [{
text: '删除',
style: {
backgroundColor: '#dd524d'
}
}],
deviceId: '',
bgc: {
backgroundColor: "#8883f0",
},
activeid: '',
checkboxes: [],
tcidlist: [],
titaoc: [],
newobj: []
};
},
onLoad(option) {
this.deviceId = option.id
},
created() {
// 初始化checkboxes数组每个元素都设为false表示初始时不显示复选框
this.checkboxes = new Array(this.list.length).fill(false);
},
onShow() {
this.tcidlist = []
this.getlist()
},
// 分享到好友(会话)
onShareAppMessage: function() {
return {
title: '创想物联',
path: '/pages/shouye/index'
}
},
// 分享到朋友圈
onShareTimeline: function() {
return {
title: '创想物联',
query: '',
path: '/pages/shouye/index'
}
},
methods: {
handleTcidlistUpdate(newTcidlist) {
// 这里是处理接收到的新 tcidlist 的地方
// console.log('接收到的 tcidlist:', newTcidlist);
this.tcidlist = newTcidlist
},
handleNewList(newList) {
let list = [this.list, ...newList]
const newSortedList = list.map((item, index) => {
return {
suitId: item.suitId,
sort: index + 1 // 使用索引值加 1 作为 groupSort
}
})
let filteredArr = newSortedList.filter(item => item.suitId !== undefined)
// console.log("新的排列数据:", filteredArr)
setTimeout(() => {
this.$u.put("/app/suit/sort", filteredArr).then((res) => {
if (res.code == 200) {
// this.getgroup()
}
});
}, 200)
},
change() {
},
confirm(e) {
},
onclick(e) {
},
// 查询本人套餐
getao() {
this.$u.get(`/app/suit/listByDeviceId/${this.deviceId}`).then(res => {
if (res.code == 200) {
if (res.data.length > 0) {
this.titaoc = res.data
let uniqueSuitIds = new Set()
this.list.forEach(item => {
if (this.titaoc.some(titaocItem => titaocItem.sourceId === item.suitId || titaocItem.suitId === item.suitId)) {
uniqueSuitIds.add(item.suitId)
}
})
this.tcidlist = Array.from(uniqueSuitIds)
let matchedItems = this.list.filter(item => uniqueSuitIds.has(item.suitId))
let unmatchedItems = this.list.filter(item => !uniqueSuitIds.has(item.suitId))
this.list = matchedItems.concat(unmatchedItems)
this.newobj = this.list
}else{
this.newobj = this.list
if(this.newobj.length == 0){
uni.showModal({
title: '提示',
content: '未存有套餐,是否去新建?',
success: function(res) {
if (res.confirm) {
uni.navigateTo({
url:'/page_fenbao/statulist/taocanlist/addtaocan/index'
})
} else if (res.cancel) {
}
}
})
}
this.tcidlist = []
}
}
})
},
btnactive(id, index) {
const indexInTcidList = this.tcidlist.indexOf(id);
if (indexInTcidList !== -1) {
this.tcidlist.splice(indexInTcidList, 1);
} else {
this.tcidlist.push(id);
}
// console.log(this.tcidlist);
},
// 点击确定
btnqd() {
this.btnmsk = true
this.$u.delete(`/app/suit/delByDevice/${this.deviceId}`).then(res => {})
let numArr = this.tcidlist.map(item => parseInt(item, 10))
let data = {
deviceId: this.deviceId,
suitIds: numArr
}
this.$u.put(`/app/device`, data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: res.msg,
icon: 'success',
duration: 1000,
})
this.getao()
setTimeout(() => {
this.btnmsk = false
uni.navigateBack()
}, 1000)
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1000,
})
this.btnmsk = false
}
})
},
getlist() {
let data = {
pageNum: 1,
pageSize: 99
}
this.$u.get(`/app/suit/tempList`, data).then((res) => {
if (res.code == 200) {
this.getao()
this.list = res.rows
this.list = this.list.map(item => ({
...item,
tcidlist: this.tcidlist
}))
// console.log(this.list);
this.loading = true
}
});
},
btnedit(item) {
uni.navigateTo({
url: '/page_fenbao/statulist/taocanlist/addtaocan/index?id=' + this.deviceId + '&suitId=' +
item.suitId
})
},
click(item) {
this.$u.delete(`/app/suit/${item.suitId}`).then((res) => {
if (res.code == 200) {
this.$u.toast(`删除成功`);
this.getlist()
} else {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1000,
})
}
});
},
open(index) {
this.list[index].show = true
this.list.map((val, idx) => {
if (index != idx) this.list[idx].show = false;
})
},
btnadd() {
uni.navigateTo({
url: '/page_fenbao/statulist/taocanlist/addtaocan/index?id=' + ''
})
}
}
};
</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;
}
.page {
width: 750rpx;
padding-bottom: 200rpx;
.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;
}
.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;
}
.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>