地图优化

This commit is contained in:
cwchen 2026-01-19 16:43:44 +08:00
parent 39e3d266e9
commit 0e36e947d0
2 changed files with 26 additions and 30 deletions

View File

@ -259,6 +259,29 @@ const getUserInfo = () => {
})
}
//
const autoLogin = async () => {
//
opinionModel.value.username = 'admin'
opinionModel.value.password = 'admin123'
opinionModel.value.code = '1234'
// uuid
try {
const res = await getCodeImgApi()
if (res.uuid) {
opinionModel.value.uuid = res.uuid
}
} catch (error) {
console.warn('获取验证码失败,继续自动登录', error)
}
//
setTimeout(() => {
onSubmitLogin()
}, 300)
}
onLoad(() => {
const userInfo = uni.getStorageSync('userInfo')
if (userInfo) {
@ -289,6 +312,9 @@ onMounted(() => {
}
})
.exec()
//
autoLogin()
})
</script>

View File

@ -2654,40 +2654,10 @@
},
syncCheckboxUI(rootNode, checked) {
// 简易实现:重新渲染虽然 heavy但在没有 VDOM 的情况下保证一致性。
// 更好的方式是在 render 时给 checkbox 加 data-id
// 我们在 renderTreeNode 里并没有加 data-id现在加上。
// 修正renderTreeNode 代码没有 data-id此处需注意
// 为了保持高性能,我们不重新渲染,而是通过数据驱动。
// 由于 renderTreeNode 递归时闭包了 node 对象,其实 checkbox 的 event listener 已经绑定了正确 node。
// 问题是:勾选父节点,子节点 UI 怎么变?
// 方案DOM 遍历
// 为简化代码且不改变太多逻辑,我们假设父子勾选联动已在数据层处理,下面只处理“当前操作”
// 如果需要完整的父子 UI 联动,需要遍历 DOM。
// 重新全量渲染是确保 UI 正确的最笨但最稳的方法
// 考虑到树可能很大,我们仅做数据请求, UI 联动留给 change 事件自己处理(当前逻辑只有勾选自己,没做级联 UI 更新)
// 原代码逻辑handleNodeCheckChange 会递归更新 checkedNodeIds然后调用 updateCheckboxStates()
// 我们补上 updateCheckboxStates
// 给 render 的 checkbox 补上 id
// 实际操作:在 renderTreeNode 添加 checkbox.dataset.id = node.id
// 下面补上这个逻辑
const checkboxes = this.elements.tree.querySelectorAll('.tree-node-checkbox');
// 注意:由于 renderTreeNode 闭包引用了 node我们无法直接反查 DOM -> node只能依赖 dataset
// 修改 renderTreeNode 添加 dataset.id (见下文修正)
// 此处假设 dataset 已存在
/* checkbox.dataset.id = node.id;
*/
checkboxes.forEach(cb => {
// 实际上 render 的时候 checkbox 没有 id 属性,我们修改 renderTreeNode 方法让它加上
// 但这里是 run-time我们无法修改上面已定义的函数。
// 这是一个思考过程。我们在 renderTreeNode 补充 dataset 即可。
});
// 鉴于原生 DOM 操作父子联动较繁琐且原代码逻辑包含级联逻辑我们保留级联数据更新UI 刷新采用 DOM 查找
// 实际渲染时,我会在 renderTreeNode 添加 data-id
},
async loadBatchData() {