wewe
This commit is contained in:
parent
d5239d0654
commit
4e87f437e1
@ -50,8 +50,8 @@
|
|||||||
<div class="pagination-box">
|
<div class="pagination-box">
|
||||||
<el-pagination v-model:current-page="query.page" v-model:page-size="query.page_size"
|
<el-pagination v-model:current-page="query.page" v-model:page-size="query.page_size"
|
||||||
:page-sizes="[20, 30, 40, 50]" :size="query.page_size" background
|
:page-sizes="[20, 30, 40, 50]" :size="query.page_size" background
|
||||||
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange"
|
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="sizeChange"
|
||||||
@current-change="handleCurrentChange" />
|
@current-change="currentChange" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -364,13 +364,15 @@ let robot_data = ''
|
|||||||
const tableLoading = ref(false)
|
const tableLoading = ref(false)
|
||||||
let appSelects = []
|
let appSelects = []
|
||||||
const appTableRef = ref(null)
|
const appTableRef = ref(null)
|
||||||
|
let isInitializing = false // 标记是否正在初始化
|
||||||
|
|
||||||
const bandAppIds = ref([])
|
const bandAppIds = ref([])
|
||||||
|
|
||||||
// 设置已绑定小程序的选中状态
|
// 设置已绑定小程序的选中状态
|
||||||
const setSelectedApps = () => {
|
const setSelectedApps = () => {
|
||||||
|
isInitializing = true // 设置初始化标志,防止appSelectionChange错误更新
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
console.log(bandAppIds.value)
|
||||||
if (appTableRef.value && logList.value.length > 0) {
|
if (appTableRef.value && logList.value.length > 0) {
|
||||||
logList.value.forEach(row => {
|
logList.value.forEach(row => {
|
||||||
if (bandAppIds.value.includes(row.id)) {
|
if (bandAppIds.value.includes(row.id)) {
|
||||||
@ -378,35 +380,56 @@ const setSelectedApps = () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 设置完成后,确保appSelects包含所有已绑定的ID(不仅仅是当前页的)
|
||||||
|
appSelects = [...new Set([...appSelects, ...bandAppIds.value])]
|
||||||
|
isInitializing = false // 初始化完成
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const openLog = async () => {
|
// const openLog = async () => {
|
||||||
dialogLog.value = true
|
// dialogLog.value = true
|
||||||
|
// appSelects = []
|
||||||
|
// getApps()
|
||||||
|
// getActApps()
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
const getApps = async () => {
|
||||||
tableLoading.value = true
|
tableLoading.value = true
|
||||||
const res = await appList(logQuery)
|
const res = await appList(logQuery).then(res => {
|
||||||
logList.value = res.list
|
logList.value = res.list
|
||||||
total.value = res.total
|
total.value = res.total
|
||||||
|
tableLoading.value = false
|
||||||
// 只在第一次打开时获取已绑定的小程序列表
|
return res
|
||||||
if (bandAppIds.value.length === 0 || logQuery.page === 1) {
|
}).catch(() => {
|
||||||
const res2 = await appList({
|
tableLoading.value = false
|
||||||
admin_id: robot_data.id,
|
return null
|
||||||
page: 1,
|
})
|
||||||
page_size: 100
|
return res
|
||||||
})
|
|
||||||
tableLoading.value = false
|
|
||||||
|
|
||||||
bandAppIds.value = res2.list.map(item => item.id)
|
|
||||||
// 初始化 appSelects 包含已绑定的小程序
|
|
||||||
appSelects = [...bandAppIds.value]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 默认选中已绑定的小程序
|
|
||||||
setSelectedApps()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleBindApp = (row) => {
|
const getActApps = async () => {
|
||||||
|
tableLoading.value = true
|
||||||
|
const res2 = await appList({
|
||||||
|
admin_id: robot_data.id,
|
||||||
|
page: 1,
|
||||||
|
page_size: 100
|
||||||
|
}).then(res => {
|
||||||
|
bandAppIds.value = res.list.map(item => item.id)
|
||||||
|
// 初始化 appSelects 包含已绑定的小程序
|
||||||
|
console.log(bandAppIds.value)
|
||||||
|
console.log(appSelects)
|
||||||
|
appSelects = [...bandAppIds.value]
|
||||||
|
tableLoading.value = false
|
||||||
|
return res
|
||||||
|
}).catch(() => {
|
||||||
|
tableLoading.value = false
|
||||||
|
return null
|
||||||
|
})
|
||||||
|
return res2
|
||||||
|
}
|
||||||
|
const handleBindApp = async (row) => {
|
||||||
robot_data = row
|
robot_data = row
|
||||||
dialogLog.value = true
|
dialogLog.value = true
|
||||||
logQuery.page = 1
|
logQuery.page = 1
|
||||||
@ -420,7 +443,11 @@ const handleBindApp = (row) => {
|
|||||||
appTableRef.value.clearSelection()
|
appTableRef.value.clearSelection()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
openLog()
|
// 先加载小程序列表,再加载已绑定列表,最后设置选中状态
|
||||||
|
await getApps()
|
||||||
|
await getActApps()
|
||||||
|
// 数据加载完成后再设置选中状态(setSelectedApps内部会处理isInitializing标志)
|
||||||
|
setSelectedApps()
|
||||||
}
|
}
|
||||||
|
|
||||||
const isSelectable = (row) => {
|
const isSelectable = (row) => {
|
||||||
@ -431,20 +458,38 @@ const isSelectable = (row) => {
|
|||||||
const appSelectionChange = (e) => {
|
const appSelectionChange = (e) => {
|
||||||
// 获取当前选中的小程序ID
|
// 获取当前选中的小程序ID
|
||||||
const selectedIds = e.map(item => item.id)
|
const selectedIds = e.map(item => item.id)
|
||||||
// 合并已绑定的小程序ID,确保已绑定的小程序始终在选中列表中
|
|
||||||
appSelects = [...new Set([...bandAppIds.value, ...selectedIds])]
|
// 如果不是初始化阶段,才处理取消勾选的逻辑
|
||||||
|
if (!isInitializing) {
|
||||||
|
// 找出被取消勾选的已绑定项目,从bandAppIds中移除
|
||||||
|
bandAppIds.value.forEach(id => {
|
||||||
|
if (!selectedIds.includes(id)) {
|
||||||
|
// 如果这个已绑定的ID不在当前选中列表中,说明被取消了,从bandAppIds中移除
|
||||||
|
const index = bandAppIds.value.indexOf(id)
|
||||||
|
if (index > -1) {
|
||||||
|
bandAppIds.value.splice(index, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// appSelects 保存当前选中的所有ID(包括未取消的已绑定项和新选中的项)
|
||||||
|
appSelects = selectedIds
|
||||||
}
|
}
|
||||||
|
|
||||||
const saveBind = (val) => {
|
const saveBind = (val) => {
|
||||||
|
// 合并已选列表和已绑定列表
|
||||||
if (appSelects.length == 0) {
|
const finalIds = [...new Set([...appSelects, ...bandAppIds.value])]
|
||||||
|
console.log(finalIds)
|
||||||
|
// return
|
||||||
|
if (finalIds.length == 0) {
|
||||||
ElNotification({
|
ElNotification({
|
||||||
message: '请选择小程序',
|
message: '请选择小程序',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
bindApps(robot_data.id, {
|
bindApps(robot_data.id, {
|
||||||
ids: appSelects.join(',')
|
ids: finalIds.join(',')
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
dialogLog.value = false
|
dialogLog.value = false
|
||||||
ElNotification({
|
ElNotification({
|
||||||
@ -455,14 +500,27 @@ const saveBind = (val) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
const handleSizeChange = (e) => {
|
const sizeChange = (e) => {
|
||||||
|
query.page = 1
|
||||||
|
query.page_size = e
|
||||||
|
getTable()
|
||||||
|
}
|
||||||
|
const currentChange = (e) => {
|
||||||
|
query.page = e
|
||||||
|
getTable()
|
||||||
|
}
|
||||||
|
const handleSizeChange = async (e) => {
|
||||||
logQuery.page = 1
|
logQuery.page = 1
|
||||||
logQuery.page_size = e
|
logQuery.page_size = e
|
||||||
openLog()
|
await getApps()
|
||||||
|
// 翻页后重新设置选中状态
|
||||||
|
setSelectedApps()
|
||||||
}
|
}
|
||||||
const handleCurrentChange = (e) => {
|
const handleCurrentChange = async (e) => {
|
||||||
logQuery.page = e
|
logQuery.page = e
|
||||||
openLog()
|
await getApps()
|
||||||
|
// 翻页后重新设置选中状态
|
||||||
|
setSelectedApps()
|
||||||
}
|
}
|
||||||
|
|
||||||
const rowClassname = (e) => {
|
const rowClassname = (e) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user