Files
gao-customer-h5/src/pages/management/PermissionEdit.vue
T
2026-08-01 18:01:23 +08:00

101 lines
2.9 KiB
Vue

<template>
<div v-role="permissionManagementRoleAccess" v-can="pageAccess" class="permission-edit">
<t-form class="form" label-align="left">
<t-form-item label="名称">
<t-input v-model.trim="formModel.name" placeholder="权限名称" borderless />
</t-form-item>
<t-form-item label="代码">
<t-input v-model.trim="formModel.code" placeholder="如 customer:read" borderless />
</t-form-item>
<t-form-item label="模块">
<t-input v-model.trim="formModel.moduleCode" placeholder="模块代码" borderless />
</t-form-item>
<t-form-item label="说明">
<t-textarea v-model.trim="formModel.description" class="textarea" placeholder="权限说明" autosize borderless />
</t-form-item>
</t-form>
<t-button v-can="savePermissionCode" class="save" theme="primary" @click="savePermission">保存</t-button>
</div>
</template>
<script setup lang="ts">
import { Toast } from "tdesign-mobile-vue";
import { gaoModuleCode, usePermissionSettingsStore } from "@/store/permissionSettingsStore";
import { corePermissionCodes, permissionManagementRoleAccess } from "@/utils/gaoPermission";
defineOptions({
name: "PermissionEdit"
});
const route = useRoute();
const router = useRouter();
const permissionStore = usePermissionSettingsStore();
const routeId = computed(() => String(route.params.id || ""));
const isCreateMode = computed(() => !routeId.value);
const savePermissionCode = computed(() => isCreateMode.value ? corePermissionCodes.permission.create : corePermissionCodes.permission.update);
const pageAccess = computed(() => ({
value: [corePermissionCodes.role.read, corePermissionCodes.permission.read, savePermissionCode.value],
mode: "and" as const
}));
const formModel = reactive({
id: "",
moduleCode: gaoModuleCode,
code: "",
name: "",
description: ""
});
async function fillForm(): Promise<void> {
await permissionStore.loadAll();
const current = await permissionStore.loadPermissionDetail(routeId.value);
Object.assign(formModel, {
id: current.id,
moduleCode: current.moduleCode || gaoModuleCode,
code: current.code,
name: current.name,
description: current.description
});
}
async function savePermission(): Promise<void> {
const permission = await permissionStore.upsertPermission({
id: formModel.id,
moduleCode: gaoModuleCode,
code: formModel.code,
name: formModel.name,
description: formModel.description
}, isCreateMode.value);
Toast({
theme: "success",
direction: "row",
message: "权限已保存"
});
await router.push(isCreateMode.value ? "/management/permissions/items" : `/management/permissions/items/${permission?.id || formModel.id}`);
}
onMounted(async () => {
await fillForm();
});
</script>
<style scoped lang="less">
.permission-edit {
padding: calc(var(--app-nav-height) + 1rem) 0 5rem 0;
.form {
border-radius: .75rem;
}
.textarea {
width: 100%;
}
.save {
left: 1rem;
right: 1rem;
bottom: calc(.75rem + env(safe-area-inset-bottom, 0));
position: fixed;
}
}
</style>