fix: pagetype详情页只读模式无效的问题
This commit is contained in:
parent
3c4ae07656
commit
7f3fd4fc04
@ -410,14 +410,12 @@ const activeTab = ref('default')
|
||||
const loading = ref(false)
|
||||
const initialLoading = ref(true)
|
||||
|
||||
// 基于记录行级权限更新 canDelete(后端 _can_delete 已根据 if_owner 等约束计算)
|
||||
watch(() => record._can_delete, (val) => {
|
||||
if (isNew.value) {
|
||||
canDelete.value = false
|
||||
} else {
|
||||
canDelete.value = val === 1 || val === undefined
|
||||
}
|
||||
}, { immediate: true })
|
||||
// 基于记录行级权限更新 canEdit/canDelete(后端 _can_write/_can_delete 已根据 if_owner 等约束计算)
|
||||
watch(() => [record._can_write, record._can_delete] as const, ([writeVal, deleteVal]) => {
|
||||
if (isNew.value) return // 新记录的 canEdit 由 permissionStore.canWrite 控制
|
||||
canEdit.value = writeVal === 1
|
||||
canDelete.value = deleteVal === 1
|
||||
})
|
||||
|
||||
const isSubmittable = computed(() => !!pageMeta.value?.is_submittable)
|
||||
const pageStatus = computed(() => record.pagestatus ?? record.pagestatus ?? -1) // 区分初次加载和记录切换
|
||||
@ -971,10 +969,13 @@ async function loadMeta() {
|
||||
if (pageMeta.value.is_virtual) {
|
||||
canEdit.value = false
|
||||
canDelete.value = false
|
||||
} else {
|
||||
} else if (isNew.value) {
|
||||
canEdit.value = permissionStore.canWrite(pagetypeName)
|
||||
// canDelete 由 record._can_delete 的 watcher 驱动(后端根据 if_owner 等约束计算)
|
||||
// 新记录无删除权限,已保存记录等 loadDetail 后由 _can_delete 更新
|
||||
canDelete.value = false
|
||||
} else {
|
||||
// canEdit/canDelete 由 record._can_write/_can_delete watcher 在 loadDetail 后更新
|
||||
// 先设为 false,避免加载前误判
|
||||
canEdit.value = false
|
||||
canDelete.value = false
|
||||
}
|
||||
|
||||
|
||||
@ -524,6 +524,11 @@ class BasePage:
|
||||
if value := getattr(self, key, None):
|
||||
pg[key] = value
|
||||
|
||||
# 行级权限标记(由 API 层设置,如 v2.py read_pg)
|
||||
for key in ("_can_read", "_can_write", "_can_delete"):
|
||||
if hasattr(self, key):
|
||||
pg[key] = getattr(self, key)
|
||||
|
||||
return pg
|
||||
|
||||
def as_json(self):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user