daofu-applet/components/dropdownmenu/dropdownmenu.js

285 lines
7.2 KiB
JavaScript
Raw Permalink Normal View History

2024-01-29 17:42:38 +08:00
Component({
properties: {
dropDownMenuTitle: {
type: Array,
value: [],
},
dropDownMenuDistrictData: {
type: Array,
value: [],
observer: function (newVal, oldVal) {
let model = newVal[0] ? newVal[0] : null
this.selectDefaltDistrictLeft(model)
}
},
dropDownMenuSourceData: {
type: Array,
value: []
},
dropDownMenuStyleData: {
type: Array,
value: []
},
dropDownMenuFilterData: {
type: Array,
value: []
},
},
data: {
district_open: false, // 区域
source_open: false, // 来源
style_open: false, // 出租 出售
filteropen: false, // 筛选
shownavindex: '',
dropDownMenuDistrictDataRight: {},
district_left_select: '',
district_right_select: '',
district_right_select_name: '',
selected_style_id: 0,
selected_style_name: '',
selected_source_id: 0,
selected_source_name: '',
selected_filter_id: 0,
selected_filter_name: ''
},
methods: {
tapDistrictNav: function (e) {
if (this.data.district_open) {
this.setData({
district_open: false,
source_open: false,
style_open: false,
filter_open: false,
shownavindex: 0
})
} else {
this.setData({
district_open: true,
style_open: false,
source_open: false,
filter_open: false,
shownavindex: e.currentTarget.dataset.nav
})
}
},
tapSourceNav: function (e) {
if (this.data.source_open) {
this.setData({
source_open: false,
style_open: false,
district_open: false,
filter_open: false,
shownavindex: 0
})
} else {
this.setData({
source_open: true,
style_open: false,
district_open: false,
filter_open: false,
shownavindex: e.currentTarget.dataset.nav
})
}
},
tapStyleNav: function (e) {
if (this.data.style_open) {
this.setData({
source_open: false,
style_open: false,
district_open: false,
filter_open: false,
shownavindex: 0
})
} else {
this.setData({
source_open: false,
style_open: true,
filter_open: false,
district_open: false,
shownavindex: e.currentTarget.dataset.nav
})
}
console.log(e.target)
},
tapFilterNav: function (e) {
if (this.data.filter_open) {
this.setData({
source_open: false,
style_open: false,
district_open: false,
filter_open: false,
shownavindex: 0
})
} else {
this.setData({
source_open: false,
style_open: false,
district_open: false,
filter_open: true,
shownavindex: e.currentTarget.dataset.nav
})
}
},
selectDefaltDistrictLeft(model) {
if (!model) {
return
}
var model = model.childModel;
var selectedId = model.id
var selectedTitle = model.title;
this.setData({
dropDownMenuDistrictDataRight: model ? model : '',
district_left_select: selectedId,
district_right_select: '',
})
},
selectDistrictLeft: function (e) {
var model = e.target.dataset.model.childModel;
var selectedId = e.target.dataset.model.id
var selectedTitle = e.target.dataset.model.title;
this.setData({
dropDownMenuDistrictDataRight: model ? model : '',
district_left_select: selectedId,
district_right_select: '',
})
},
selectDistrictRight: function (e) {
var selectedId = e.target.dataset.model.id
var selectedTitle = e.target.dataset.model.title;
this.closeHyFilter();
this.setData({
district_right_select: selectedId,
district_right_select_name: selectedTitle
})
this.triggerEvent("selectedItem", {
index: this.data.shownavindex,
selectedId: selectedId,
selectedTitle: selectedTitle
})
},
selectSourceItem: function (e) {
var selectedId = e.target.dataset.model.id
var selectedTitle = e.target.dataset.model.title;
this.closeHyFilter();
this.setData({
selected_source_id: selectedId,
selected_source_name: selectedTitle
})
this.triggerEvent("selectedItem", {
index: this.data.shownavindex,
selectedId: selectedId,
selectedTitle: selectedTitle
})
},
selectFilterItem: function (e) {
var selectedId = e.target.dataset.model.id
var selectedTitle = e.target.dataset.model.title;
this.closeHyFilter();
this.setData({
selected_filter_id: selectedId,
selected_filter_name: selectedTitle
})
this.triggerEvent("selectedItem", {
index: this.data.shownavindex,
selectedId: selectedId,
selectedTitle: selectedTitle
})
},
selectStyleItem: function (e) {
var selectedId = e.target.dataset.model.id
var selectedTitle = e.target.dataset.model.title;
this.closeHyFilter();
this.setData({
selected_style_id: selectedId,
selected_style_name: selectedTitle
})
this.triggerEvent("selectedItem", {
index: this.data.shownavindex,
selectedId: selectedId,
selectedTitle: selectedTitle
})
},
/**关闭筛选 */
closeHyFilter: function () {
if (this.data.district_open) {
this.setData({
district_open: false,
source_open: false,
style_open: false,
filter_open: false,
})
} else if (this.data.source_open) {
this.setData({
source_open: false,
style_open: false,
district_open: false,
filter_open: false,
})
} else if (this.data.style_open) {
this.setData({
source_open: false,
style_open: false,
district_open: false,
filter_open: false,
})
} else if (this.data.filter_open) {
this.setData({
source_open: false,
style_open: false,
district_open: false,
filter_open: false,
})
}
},
/**重设值 */
resetMenu: function (index) {
switch (index) {
case 0:
this.data.district_right_select_name = ""
this.data.district_left_select = ""
this.data.district_right_select = ""
break;
case 1:
this.data.selected_source_name = ""
this.data.selected_source_id = ""
break;
case 2:
this.data.selected_style_name = ""
this.data.selected_style_id = ""
break;
case 3:
this.data.selected_filter_name = ""
this.data.selected_filter_id = ""
break;
}
this.setData(this.data)
},
/**关闭弹窗 */
close: function (params) {
this.setData({
district_open: false,
source_open: false,
style_open: false,
filter_open: false,
})
}
},
//组件生命周期函数,在组件实例进入页面节点树时执行
attached: function () {
},
})