* 获取父页面
* @param {*} deep 1=当前 2=父页 3=父父页
*/
export function getPrevPage(deep = 2) {
let pages = getCurrentPages()
let prevPage = pages[pages.length - deep]
return prevPage
}
* 修改当前/父页面的某个列表节点
* @param {*} id 主键
* @param {*} valName 被修改的字段名
* @param {*} val 被修改的值
* @param {*} list 数据集
* @param {*} idName 主键名
*/
export function modifyListNode(id, list, valName, val, idName = 'id') {
if (!list || !Array.isArray(list)) return false
let pos = list.findIndex(item => item[idName] === id)
if (pos > -1) {
list[pos][valName] = val
return true
}
return false
}
* 修改当前/父页面的某个列表节点(单个值)
* @param {*} id 主键
* @param {*} valName 被修改的字段名
* @param {*} val 被修改的值
* @param {*} deep 1=当前 2=父页 3=父父页
* @param {*} listName 数据集名
* @param {*} idName 主键名
*/
export function modifyPrevPageListNode(id, valName, val, deep = 2, listName = 'dataList', idName = 'id') {
let prevPage = getPrevPage(deep)
if (!prevPage) return
let dataList = prevPage.data[listName]
if (!dataList) return
let list = dataList['list']
if (modifyListNode(id, list, valName, val, idName)) {
prevPage.setData({
[listName + '.list']: list,
})
}
}
* 修改当前/父页面的某个列表节点(一组值)
* @param {*} id 主键
* @param {*} valName 被修改的字段名
* @param {*} val 被修改的值
* @param {*} deep 1=当前 2=父页 3=父父页
* @param {*} listName 数据集名
* @param {*} idName 主键名
*/
export function modifyPrevPageListNodeObject(id, vals, deep = 2, listName = 'dataList', idName = 'id') {
let prevPage = getPrevPage(deep)
if (!prevPage) return
let dataList = prevPage.data[listName]
if (!dataList) return
let list = dataList['list']
for (let key in vals) {
modifyListNode(id, list, key, vals[key], idName)
}
prevPage.setData({
[listName + '.list']: list,
})
}
* 从记录数组里删除某个节点
* @param {*} id
* @param {*} list
* @param {*} idName
*/
export function delListNode(id, list, idName = 'id') {
if (!list || !Array.isArray(list)) return false
let pos = list.findIndex(item => item[idName] === id)
if (pos > -1) {
list.splice(pos, 1)
return true
}
return false
}
* 删除当前/父页面的某个列表节点
* @param {*} id 主键
* @param {*} deep 1=当前 2=父页 3=父父页
* @param {*} listName 数据集名
* @param {*} idName 主键名
*/
export function delPrevPageListNode(id, deep = 2, listName = 'dataList', idName = 'id') {
let prevPage = getPrevPage(deep)
let dataList = prevPage.data[listName]
if (!dataList) return
let list = dataList['list']
let total = dataList['total'] - 1
if (delListNode(id, list, idName)) {
prevPage.setData({
[listName + '.list']: list,
[listName + '.total']: total,
})
}
}
* 刷新当前/父页面的某个列表节点
* @param {*} deep 1=当前 2=父页 3=父父页
* @param {*} listName 数据集名
* @param {*} listFunc 翻页函数名
*/
export async function refreshPrevListNode(deep = 2, listName = 'dataList', listFunc = 'getList') {
let prevPage = getPrevPage(deep)
let dataList = prevPage.data[listName]
if (!dataList) return
await prevPage[listFunc]()
}