diff --git a/src/App.vue b/src/App.vue index 920d090..c874b6d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -40,7 +40,7 @@ 登出 -
+
diff --git a/src/components/AdminCredsCard.vue b/src/components/AdminCredsCard.vue new file mode 100644 index 0000000..383e6bd --- /dev/null +++ b/src/components/AdminCredsCard.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/pages/admin/CompaniesPage.vue b/src/pages/admin/CompaniesPage.vue index 5744050..5229fff 100644 --- a/src/pages/admin/CompaniesPage.vue +++ b/src/pages/admin/CompaniesPage.vue @@ -17,18 +17,18 @@ - + - - + + - + @@ -52,8 +52,13 @@ const error = ref(false) const errorMsg = ref('') const showDialog = ref(false) const submitting = ref(false) +const formRef = ref() const form = ref({ company_key: '', name: '' }) +const rules = { + company_key: [{ required: true, message: '請輸入 Company Key', trigger: 'blur' }], + name: [{ required: true, message: '請輸入名稱', trigger: 'blur' }] +} async function load() { loading.value = true @@ -74,10 +79,8 @@ function resetForm() { } async function handleCreate() { - if (!form.value.company_key || !form.value.name) { - ElMessage.warning('請填寫完整資訊') - return - } + const valid = await formRef.value.validate().catch(() => false) + if (!valid) return submitting.value = true try { await createCompany(form.value) diff --git a/src/pages/admin/MembersPage.vue b/src/pages/admin/MembersPage.vue index ca06b61..8bc2693 100644 --- a/src/pages/admin/MembersPage.vue +++ b/src/pages/admin/MembersPage.vue @@ -17,9 +17,9 @@ - - - + + + diff --git a/src/pages/admin/ModulesPage.vue b/src/pages/admin/ModulesPage.vue index 416db1f..9982f54 100644 --- a/src/pages/admin/ModulesPage.vue +++ b/src/pages/admin/ModulesPage.vue @@ -17,7 +17,7 @@ - + @@ -25,14 +25,14 @@ - - + + - + - + @@ -56,8 +56,14 @@ const error = ref(false) const errorMsg = ref('') const showDialog = ref(false) const submitting = ref(false) +const formRef = ref() const form = ref({ system_key: '', module_key: '', name: '' }) +const rules = { + system_key: [{ required: true, message: '請輸入 System Key', trigger: 'blur' }], + module_key: [{ required: true, message: '請輸入 Module Key', trigger: 'blur' }], + name: [{ required: true, message: '請輸入名稱', trigger: 'blur' }] +} async function load() { loading.value = true @@ -78,10 +84,8 @@ function resetForm() { } async function handleCreate() { - if (!form.value.system_key || !form.value.module_key || !form.value.name) { - ElMessage.warning('請填寫完整資訊') - return - } + const valid = await formRef.value.validate().catch(() => false) + if (!valid) return submitting.value = true try { await createModule(form.value) diff --git a/src/pages/admin/PermissionGroupsPage.vue b/src/pages/admin/PermissionGroupsPage.vue index 5d5b654..e6dd9c9 100644 --- a/src/pages/admin/PermissionGroupsPage.vue +++ b/src/pages/admin/PermissionGroupsPage.vue @@ -2,28 +2,7 @@

權限群組管理

- - - - - - - - - - - - 儲存認證 - 清除 - - - + @@ -37,7 +16,7 @@ - + @@ -63,8 +42,8 @@ -

{{ memberError }}

-

{{ memberSuccess }}

+ +
@@ -116,8 +95,8 @@
-

{{ groupPermError }}

-

{{ groupPermSuccess }}

+ + @@ -152,34 +131,12 @@ import { groupGrant, groupRevoke } from '@/api/permission-groups' +import AdminCredsCard from '@/components/AdminCredsCard.vue' const permissionStore = usePermissionStore() const activeTab = ref('groups') - -// 認證 -const credsForm = reactive({ - clientKey: permissionStore.adminClientKey, - apiKey: permissionStore.adminApiKey -}) - const credsSaved = computed(() => permissionStore.hasAdminCreds()) -function saveCreds() { - if (!credsForm.clientKey || !credsForm.apiKey) { - ElMessage.warning('請填寫完整認證') - return - } - permissionStore.setAdminCreds(credsForm.clientKey, credsForm.apiKey) - ElMessage.success('認證已儲存(session)') -} - -function clearCreds() { - permissionStore.clearAdminCreds() - credsForm.clientKey = '' - credsForm.apiKey = '' - ElMessage.info('認證已清除') -} - // Groups const groups = ref([]) const loadingGroups = ref(false) diff --git a/src/pages/admin/SitesPage.vue b/src/pages/admin/SitesPage.vue index 7a87dd1..0b4c6e2 100644 --- a/src/pages/admin/SitesPage.vue +++ b/src/pages/admin/SitesPage.vue @@ -17,7 +17,7 @@ - + @@ -25,14 +25,14 @@ - - + + - + - + @@ -56,8 +56,14 @@ const error = ref(false) const errorMsg = ref('') const showDialog = ref(false) const submitting = ref(false) +const formRef = ref() const form = ref({ site_key: '', company_key: '', name: '' }) +const rules = { + site_key: [{ required: true, message: '請輸入 Site Key', trigger: 'blur' }], + company_key: [{ required: true, message: '請輸入 Company Key', trigger: 'blur' }], + name: [{ required: true, message: '請輸入名稱', trigger: 'blur' }] +} async function load() { loading.value = true @@ -78,10 +84,8 @@ function resetForm() { } async function handleCreate() { - if (!form.value.site_key || !form.value.company_key || !form.value.name) { - ElMessage.warning('請填寫完整資訊') - return - } + const valid = await formRef.value.validate().catch(() => false) + if (!valid) return submitting.value = true try { await createSite(form.value) diff --git a/src/pages/admin/SystemsPage.vue b/src/pages/admin/SystemsPage.vue index 305cbc5..adc9c9d 100644 --- a/src/pages/admin/SystemsPage.vue +++ b/src/pages/admin/SystemsPage.vue @@ -17,18 +17,18 @@ - + - - + + - + @@ -52,8 +52,13 @@ const error = ref(false) const errorMsg = ref('') const showDialog = ref(false) const submitting = ref(false) +const formRef = ref() const form = ref({ system_key: '', name: '' }) +const rules = { + system_key: [{ required: true, message: '請輸入 System Key', trigger: 'blur' }], + name: [{ required: true, message: '請輸入名稱', trigger: 'blur' }] +} async function load() { loading.value = true @@ -74,10 +79,8 @@ function resetForm() { } async function handleCreate() { - if (!form.value.system_key || !form.value.name) { - ElMessage.warning('請填寫完整資訊') - return - } + const valid = await formRef.value.validate().catch(() => false) + if (!valid) return submitting.value = true try { await createSystem(form.value) diff --git a/src/pages/permissions/PermissionAdminPage.vue b/src/pages/permissions/PermissionAdminPage.vue index c1de8bb..c345696 100644 --- a/src/pages/permissions/PermissionAdminPage.vue +++ b/src/pages/permissions/PermissionAdminPage.vue @@ -2,38 +2,7 @@

權限管理

- - - - - - - - - - - - 儲存認證 - 清除 - - - + @@ -178,35 +147,13 @@ import { ref, reactive, computed } from 'vue' import { ElMessage } from 'element-plus' import { usePermissionStore } from '@/stores/permission' +import AdminCredsCard from '@/components/AdminCredsCard.vue' const permissionStore = usePermissionStore() const activeTab = ref('grant') - -// 認證 -const credsForm = reactive({ - clientKey: permissionStore.adminClientKey, - apiKey: permissionStore.adminApiKey -}) - const credsSaved = computed(() => permissionStore.hasAdminCreds()) -function saveCreds() { - if (!credsForm.clientKey || !credsForm.apiKey) { - ElMessage.warning('請填寫完整認證') - return - } - permissionStore.setAdminCreds(credsForm.clientKey, credsForm.apiKey) - ElMessage.success('認證已儲存(session)') -} - -function clearCreds() { - permissionStore.clearAdminCreds() - credsForm.clientKey = '' - credsForm.apiKey = '' - ElMessage.info('認證已清除') -} - // Grant const grantFormRef = ref() const grantLoading = ref(false)