Browse Source

增加服务选择全选逻辑

pull/112/head
zq 1 week ago
parent
commit
81f8e2a307
  1. 86
      src/views/agent/siteAddChooseService.vue

86
src/views/agent/siteAddChooseService.vue

@ -2,9 +2,12 @@
<div class=""> <div class="">
<div class="addService_wrap"> <div class="addService_wrap">
<div class="addServicetop"> <div class="addServicetop">
<h3>添加查重服务</h3> <h3 class="classify-title">添加查重服务</h3>
<b>选择品牌</b>
<p class="ver-desc">{{ }}</p>
<!-- 分类导航 --> <!-- 分类导航 -->
<el-scrollbar> <!-- 暂时注释 修改时放开即可 -->
<!-- <el-scrollbar v-if="menuList">
<ul> <ul>
<li v-for="(item, index) in menuList" :key="item.name" @click="scrollToCategory(index)" <li v-for="(item, index) in menuList" :key="item.name" @click="scrollToCategory(index)"
:class="['normal_service', activeCategory == index ? 'active_service' : '']"> :class="['normal_service', activeCategory == index ? 'active_service' : '']">
@ -15,11 +18,19 @@
<img class="activeImg" src="@/assets/serviceIcon/activeImg_choose.svg" alt=""> <img class="activeImg" src="@/assets/serviceIcon/activeImg_choose.svg" alt="">
</li> </li>
</ul> </ul>
</el-scrollbar> </el-scrollbar> -->
</div> </div>
<!-- 内容 --> <!-- 内容 -->
<div class="addServicebot" ref="content"> <div class="addServicebot" ref="content">
<ul :key="datenow"> <b>选择服务</b>
<div class="flex operateCheck">
<div class="checkboxAll">
<el-checkbox @change="handleSelectAllChange" v-model="selectAll"
:indeterminate="isIndeterminate">全选</el-checkbox>
</div>
<span class="totalCount">{{ addlist.length }}已选{{ serviceTotal }}</span>
</div>
<ul :key="datenow" v-if="addlist.length > 0">
<li v-for="item in addlist" :key="item.name" <li v-for="item in addlist" :key="item.name"
:class="item.checked ? 'service-active' : ''"> :class="item.checked ? 'service-active' : ''">
<div class="service-name-item flex-between"> <div class="service-name-item flex-between">
@ -27,7 +38,7 @@
<input type="checkbox" :id="`item-${item.id}`" v-model="item.checked" <input type="checkbox" :id="`item-${item.id}`" v-model="item.checked"
@change="updateSelectedCount" /> @change="updateSelectedCount" />
</div> </div>
<p class="service-desc-item">看见啊还是看见阿水</p> <p class="service-desc-item">{{ }}</p>
<p class="service-price-item"><i>¥</i><span>{{ item.price }}</span> / {{ item.word }}</p> <p class="service-price-item"><i>¥</i><span>{{ item.price }}</span> / {{ item.word }}</p>
</li> </li>
</ul> </ul>
@ -51,14 +62,18 @@ export default {
}, },
data() { data() {
return { return {
selectAll: false,
isIndeterminate: false,
datenow:Date.now(), datenow:Date.now(),
serviceTotal:0, serviceTotal:0,
activeCategory:0, activeCategory:0,
uid: 0, uid: 0,
type: 0, type: 0,
prodid: 0, prodid: 0,
menuList:[], menuList:null,
addlist:[], addlist:[
],
serviceAddUrl: '/agent/siteServiceAdd', serviceAddUrl: '/agent/siteServiceAdd',
} }
@ -83,14 +98,13 @@ export default {
// //
selectedCount() { selectedCount() {
const newaddlist = JSON.parse(JSON.stringify(this.addlist)) const newaddlist = JSON.parse(JSON.stringify(this.addlist))
if(!newaddlist.length)return 0
let list = [] let list = []
newaddlist.forEach(item => { newaddlist.forEach(item => {
if (item.checked) { if (item.checked) {
list.push(item) list.push(item)
} }
}) })
console.log(list, 'list----', this.addlist);
// store.commit('SET_ADDSERVICELIST', list);
return list.length; return list.length;
}, },
}, },
@ -101,6 +115,10 @@ export default {
updateSelectedCount() { updateSelectedCount() {
this.serviceTotal = this.addlist.filter(item => item.checked).length; this.serviceTotal = this.addlist.filter(item => item.checked).length;
this.$set(this.menuList[this.activeCategory],'list',this.addlist) this.$set(this.menuList[this.activeCategory],'list',this.addlist)
const allSelected = this.serviceTotal === this.addlist.length;
const noneSelected = this.serviceTotal === 0;
this.selectAll = allSelected;
this.isIndeterminate = !noneSelected && !allSelected;
this.datenow = Date.now() this.datenow = Date.now()
}, },
nextGoSettingPrice() { nextGoSettingPrice() {
@ -116,11 +134,11 @@ export default {
}; };
} }
}); });
// console.log(this.menuList,result,'result===');
store.commit('SET_SECOND_MENU', result); store.commit('SET_SECOND_MENU', result);
localStorage.setItem('selectedServices',JSON.stringify(result)) localStorage.setItem('selectedServices',JSON.stringify(result))
this.$router.push(this.serviceAddUrl + '?uid=' + this.uid + '&prodid=' + this.prodid) this.$router.push(this.serviceAddUrl + '?uid=' + this.uid + '&prodid=' + this.prodid)
}, },
//
getAddServiceList() { getAddServiceList() {
const that = this const that = this
that.$http('POST', '/agentnew/ajax_get_service_add_list', { that.$http('POST', '/agentnew/ajax_get_service_add_list', {
@ -128,10 +146,11 @@ export default {
prodid: that.prodid, prodid: that.prodid,
}).then(response => { }).then(response => {
that.$nextTick(() => { that.$nextTick(() => {
that.menuList = response.data console.log(response,'response===');
that.activeCategory = Object.keys(response.data)[0]; //
// store.commit('SET_SECOND_MENU', response.data); // that.menuList = response.data
that.setMenuList() // that.activeCategory = Object.keys(response.data)[0];
// that.setMenuList()
}) })
}).catch(error => { }).catch(error => {
console.error(error, 'error') console.error(error, 'error')
@ -165,10 +184,44 @@ export default {
// const element = this.$refs[`category-${index}`][0]; // const element = this.$refs[`category-${index}`][0];
// element.scrollIntoView({ behavior: 'smooth' }); // element.scrollIntoView({ behavior: 'smooth' });
}, },
handleSelectAllChange(){
this.addlist.forEach(item =>{
if(item.checked == !this.selectAll){
item.checked = !item.checked;
}
})
this.serviceTotal = this.addlist.filter(item => item.checked).length;
},
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.ver-desc{
font-size: 14px;
font-weight: 400;
line-height: normal;
letter-spacing: .08em;
color: #8a8c99;
margin: 12px 0;
}
.operateCheck{
margin: 24px 0 12px 0;
}
.totalCount {
font-size: 12px;
font-weight: normal;
line-height: 13px;
letter-spacing: 0.08em;
color: #8A9099;
margin-left: 12px;
}
.classify-title{
font-size: 20px;
font-weight: bold;
line-height: 26px;
letter-spacing: 0.08em;
color: #1E2226;
}
.addService_wrap { .addService_wrap {
text-align: left; text-align: left;
background-color: #fff; background-color: #fff;
@ -185,11 +238,9 @@ export default {
// width: 963.43px; // width: 963.43px;
b { b {
font-size: 20px; font-size: 14px;
font-weight: bold; font-weight: bold;
line-height: 26px;
letter-spacing: 0.08em; letter-spacing: 0.08em;
font-variation-settings: "opsz" auto;
color: #1E2226; color: #1E2226;
} }
@ -206,6 +257,7 @@ export default {
display: flex; display: flex;
white-space: nowrap; white-space: nowrap;
min-width: 181.71px; min-width: 181.71px;
height: 46px;
box-sizing: border-box; box-sizing: border-box;
} }

Loading…
Cancel
Save