card-mini/pages/mine/setting/columnsetting.js

404 lines
14 KiB
JavaScript
Raw Normal View History

2021-07-20 15:45:29 +08:00
// pages/mine/setting/columnsetting.js
const app = getApp()
Page({
data: {
2021-09-01 16:55:20 +08:00
activeNames: ['1'],
2021-07-20 15:45:29 +08:00
curIndex: 0,
menuList: [],
imgUrl: app.urls.baseImgUrl,
inputColumnName: '',
isShowInput: false,
curId: '',
curIndex: 0,
2021-09-01 16:55:20 +08:00
curIdx: 0,
pageInfo: {
rowHeight: 64,
scrollHeight: 85,
startIndex: null,
scrollY: true,
readyPlaceIndex: null,
startY: 0,
selectedIndex: null,
startIdx: null,
selectedIdx: null
},
movableViewInfo: {
y: 0,
showClass: 'none',
data: {}
},
pageInfoX: {
rowWidth: 96,
scrollHeight: 85,
startIndex: null,
scrollX: true,
readyPlaceIndex: null,
startX: 0,
selectedIndex: null,
startIdx: null,
selectedIdx: null
},
movableViewInfoX: {
x: 0,
showClass: 'none',
data: {}
},
2021-07-20 15:45:29 +08:00
},
onLoad: function (options) {
this.getColumnList()
try {
var isFrist = wx.getStorageSync('isFirst')
if (isFrist) {
} else {
wx.setStorage({
key: 'isFirst',
data: true
})
wx.showModal({
title: '提示',
content: '点击列表条目名称可以自定义栏目名称,点击开关可以控制是否在首页展示该条目.',
showCancel: false,
success(res) {
}
})
}
} catch (err) {
console.log('获取失败')
wx.showModal({
title: '提示',
content: '点击列表条目名称可以自定义栏目名称,点击开关可以控制是否在首页展示该条目.',
showCancel: false,
success(res) {
}
})
}
},
getColumnList() {
wx.showLoading({
title: '加载中...',
})
var _self = this
app.http.get(app.urls.getMineColumnList, {
header: {
token: app.globalData.token
}
})
.then(res => {
var data = res.data
wx.hideLoading({})
2021-09-01 16:55:20 +08:00
data.forEach((it, index) => {
it.phoneOrder = index
2021-07-20 15:45:29 +08:00
})
_self.setData({
menuList: data
})
})
.catch(err => {
wx.hideLoading({})
})
},
//保存我的栏目是否显示
doSaveColumnDisplay(e) {
// configColumnId
var id = e.currentTarget.dataset.id
var index = e.currentTarget.dataset.index
var idx = e.currentTarget.dataset.idx
console.log(id + '===' + idx + '===' + index)
var _self = this
wx.showLoading({
title: '保存中...',
})
app.http.post(app.urls.doSaveColumnDisplay, {
header: {
token: app.globalData.token
},
data: {
configColumnId: id
}
})
.then(res => {
wx.hideLoading({})
var setMode = _self.data.menuList[index].configColumnList[idx].configColumnSet
if (setMode == '0') {
setMode = '1'
} else {
setMode = '0'
}
_self.data.menuList[index].configColumnList[idx].configColumnSet = setMode
_self.setData({
menuList: _self.data.menuList
})
})
.catch(err => {
console.log(err)
wx.hideLoading({})
wx.showToast({
title: '保存失败',
icon: 'error'
})
})
},
//保存我的栏目名称
doSaveColumnName() {
var _self = this
wx.showLoading({
title: '修改中...',
})
app.http.post(app.urls.doSaveColumnName, {
header: {
token: app.globalData.token
},
data: {
configColumnId: _self.data.curId,
configColumnName: _self.data.inputColumnName
}
})
.then(res => {
wx.hideLoading({})
_self.data.menuList[_self.data.curIndex].configColumnList[_self.data.curIdx].configColumnRemark = _self.data.menuList[_self.data.curIndex].configColumnList[_self.data.curIdx].configColumnName
_self.data.menuList[_self.data.curIndex].configColumnList[_self.data.curIdx].configColumnName = _self.data.inputColumnName
// 刷新数据
_self.setData({
menuList: _self.data.menuList,
inputColumnName: '',
})
})
.catch(err => {
wx.hideLoading({})
wx.showToast({
title: '修改失败',
icon: 'error'
})
})
},
showInput(e) {
var id = e.currentTarget.dataset.id //栏目
var index = e.currentTarget.dataset.index //栏目组
var idx = e.currentTarget.dataset.idx //栏目
this.setData({
isShowInput: true,
curId: id,
curIndex: index,
curIdx: idx
})
},
//保存自定义栏目名称
addName(e) {
var _self = this
_self.setData({
isShowInput: false,
})
_self.doSaveColumnName()
},
//栏目名称输入监听
textInput(e) {
this.setData({
inputColumnName: e.detail.value
})
},
onHide(e) {
this.setData({
isShowInput: false
})
2021-09-01 16:55:20 +08:00
},
dragStart: function (event) {
var startIndex = event.currentTarget.dataset.index
var startIdx = event.currentTarget.dataset.idx
console.log('获取到的元素为', this.data.menuList[startIndex].configColumnList[startIdx])
// 初始化页面数据
var pageInfo = this.data.pageInfo
pageInfo.startY = event.touches[0].clientY
pageInfo.readyPlaceIndex = startIndex
pageInfo.selectedIndex = startIndex
pageInfo.selectedIdx = startIdx
pageInfo.scrollY = false
pageInfo.startIndex = startIndex
pageInfo.startIdx = startIdx
this.setData({
'movableViewInfo.y': pageInfo.startY - (pageInfo.rowHeight / 2)
})
// 初始化拖动控件数据
var movableViewInfo = this.data.movableViewInfo
movableViewInfo.data = this.data.menuList[startIndex].configColumnList[startIdx]
movableViewInfo.showClass = "inline"
this.setData({
movableViewInfo: movableViewInfo,
pageInfo: pageInfo
})
},
dragMove: function (event) {
var optionList = this.data.menuList
var pageInfo = this.data.pageInfo
// 计算拖拽距离
var movableViewInfo = this.data.movableViewInfo
var movedDistance = event.touches[0].clientY - pageInfo.startY
movableViewInfo.y = pageInfo.startY - (pageInfo.rowHeight / 2) + movedDistance
console.log('移动的距离为', movedDistance)
// 修改预计放置位置
var movedIndex = parseInt(movedDistance / pageInfo.rowHeight)
var readyPlaceIndex = pageInfo.startIdx + movedIndex
if (readyPlaceIndex < 0) {
readyPlaceIndex = 0
} else if (readyPlaceIndex >= optionList[pageInfo.selectedIndex].configColumnList.length) {
readyPlaceIndex = optionList[pageInfo.selectedIndex].configColumnList.length - 1
}
if (readyPlaceIndex != pageInfo.selectedIdx) {
var selectedData = optionList[pageInfo.selectedIndex].configColumnList[pageInfo.selectedIdx]
optionList[pageInfo.selectedIndex].configColumnList.splice(pageInfo.selectedIdx, 1)
optionList[pageInfo.selectedIndex].configColumnList.splice(readyPlaceIndex, 0, selectedData)
pageInfo.selectedIdx = readyPlaceIndex
}
// 移动movableView
pageInfo.readyPlaceIndex = readyPlaceIndex
// console.log('移动到了索引', readyPlaceIndex, '选项为', optionList[readyPlaceIndex])
this.setData({
movableViewInfo: movableViewInfo,
menuList: optionList,
pageInfo: pageInfo
})
},
dragEnd: function (event) {
// 重置页面数据
var pageInfo = this.data.pageInfo
var order = order = pageInfo.readyPlaceIndex + 1
this.doSaveOrder(pageInfo.selectedIndex)
pageInfo.readyPlaceIndex = null
pageInfo.startY = null
pageInfo.selectedIndex = null
pageInfo.selectedIdx = null
pageInfo.startIndex = null
pageInfo.startIdx = null
pageInfo.scrollY = true
// 隐藏movableView
var movableViewInfo = this.data.movableViewInfo
movableViewInfo.showClass = 'none'
this.setData({
pageInfo: pageInfo,
movableViewInfo: movableViewInfo
})
},
dragStartX(e) {
var startIndex = e.currentTarget.dataset.index
var startIdx = e.currentTarget.dataset.idx
console.log('获取到的元素为', this.data.menuList[startIndex].configColumnList[startIdx])
// 初始化页面数据
var pageInfo = this.data.pageInfoX
pageInfo.startX = e.touches[0].clientX
console.log(pageInfo.startX)
pageInfo.readyPlaceIndex = startIndex
pageInfo.selectedIndex = startIndex
pageInfo.selectedIdx = startIdx
pageInfo.scrollX = false
pageInfo.startIndex = startIndex
pageInfo.startIdx = startIdx
this.setData({
'movableViewInfoX.x': pageInfo.startX - (pageInfo.rowWidth / 2)
})
// 初始化拖动控件数据
var movableViewInfo = this.data.movableViewInfoX
movableViewInfo.data = this.data.menuList[startIndex].configColumnList[startIdx]
movableViewInfo.showClass = "inline"
console.log(movableViewInfo)
this.setData({
movableViewInfoX: movableViewInfo,
pageInfoX: pageInfo
})
},
dragMoveX(event) {
var optionList = this.data.menuList
var pageInfo = this.data.pageInfoX
// 计算拖拽距离
var movableViewInfo = this.data.movableViewInfoX
var movedDistance = event.touches[0].clientX - pageInfo.startX
movableViewInfo.x = pageInfo.startX - (pageInfo.rowWidth / 2) + movedDistance
console.log('移动的距离为', movedDistance)
// 修改预计放置位置
var movedIndex = parseInt(movedDistance / pageInfo.rowWidth)
var readyPlaceIndex = pageInfo.startIdx + movedIndex
if (readyPlaceIndex < 0) {
readyPlaceIndex = 0
} else if (readyPlaceIndex >= optionList[pageInfo.selectedIndex].configColumnList.length) {
readyPlaceIndex = optionList[pageInfo.selectedIndex].configColumnList.length - 1
}
if (readyPlaceIndex != pageInfo.selectedIdx) {
var selectedData = optionList[pageInfo.selectedIndex].configColumnList[pageInfo.selectedIdx]
optionList[pageInfo.selectedIndex].configColumnList.splice(pageInfo.selectedIdx, 1)
optionList[pageInfo.selectedIndex].configColumnList.splice(readyPlaceIndex, 0, selectedData)
pageInfo.selectedIdx = readyPlaceIndex
}
// 移动movableView
pageInfo.readyPlaceIndex = readyPlaceIndex
// console.log('移动到了索引', readyPlaceIndex, '选项为', optionList[readyPlaceIndex])
this.setData({
movableViewInfoX: movableViewInfo,
menuList: optionList,
pageInfoX: pageInfo
})
},
dragEndX(e) {
// 重置页面数据
var pageInfo = this.data.pageInfoX
// var order = order = pageInfo.readyPlaceIndex + 1
// this.doSaveOrder(order, this.data.movableViewInfo.data.configColumnId)
pageInfo.readyPlaceIndex = null
pageInfo.startX = null
pageInfo.selectedIndex = null
pageInfo.selectedIdx = null
pageInfo.startIndex = null
pageInfo.startIdx = null
pageInfo.scrollY = true
// 隐藏movableView
var movableViewInfo = this.data.movableViewInfoX
movableViewInfo.showClass = 'none'
this.setData({
pageInfoX: pageInfo,
movableViewInfoX: movableViewInfo
})
},
//保存排序
doSaveOrder(index) {
wx.showLoading({
title: '保存中...',
})
var _self = this
var orders = {}
_self.data.menuList[index].configColumnList.forEach((it, index) => {
orders[it.configColumnId] = index + 1
})
app.http.post(app.urls.doOrderColumn, {
header: {
token: app.globalData.token
},
data: {
configColumnOrder: orders
}
})
.then(res => {
wx.hideLoading({})
})
.catch(err => {})
},
onChange(e) {
this.setData({
activeNames: e.detail
})
2021-07-20 15:45:29 +08:00
}
})