From 84a04ecfcaeb563ee8e1400036808c8a5c3cbaa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Chuailei000=E2=80=9D?= <2280131253@qq.com> Date: Thu, 20 Oct 2022 11:11:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=B5=84=E4=BA=A7?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=88=9B=E5=BB=BA=E8=B4=A6=E5=8F=B7=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/AccountListTable/AddAccount.vue | 15 +++++++-------- src/components/AccountListTable/index.vue | 18 +++++++++++++++++- src/utils/common.js | 13 +++++++++++++ .../accounts/AssetAccount/AssetAccountList.vue | 15 ++++++++++----- src/views/assets/Asset/AssetList/AllList.vue | 3 ++- 5 files changed, 49 insertions(+), 15 deletions(-) diff --git a/src/components/AccountListTable/AddAccount.vue b/src/components/AccountListTable/AddAccount.vue index 163a2c439..f891c9fa5 100644 --- a/src/components/AccountListTable/AddAccount.vue +++ b/src/components/AccountListTable/AddAccount.vue @@ -67,14 +67,13 @@ export default { methods: { addAccount(form) { const data = { asset: this.asset.id, ...form } - this.$axios.post(`/api/v1/assets/accounts/`, data) - .then(() => { - this.iVisible = false - this.$emit('add', true) - }) - .catch(() => { - this.$message.error(this.$tc('common.createErrorMsg')) - }) + this.$axios.post(`/api/v1/assets/accounts/`, data).then(() => { + this.iVisible = false + this.$emit('add', true) + this.$message.success(this.$t('common.createSuccessMsg')) + }).catch(() => { + this.$message.error(this.$tc('common.createErrorMsg')) + }) }, editAccount(form) { const data = { ...form } diff --git a/src/components/AccountListTable/index.vue b/src/components/AccountListTable/index.vue index 902354632..6921712ab 100644 --- a/src/components/AccountListTable/index.vue +++ b/src/components/AccountListTable/index.vue @@ -11,7 +11,7 @@ @@ -26,6 +26,7 @@ import UpdateSecretInfo from './UpdateSecretInfo' import AddAccount from './AddAccount' import { connectivityMeta } from './const' import { openTaskPage } from '@/utils/jms' +import { hasUUID } from '@/utils/common' export default { name: 'AccountListTable', @@ -73,6 +74,7 @@ export default { showViewSecretDialog: false, showUpdateSecretDialog: false, showAddDialog: false, + iAsset: this.asset, account: {}, tableConfig: { url: this.url, @@ -213,6 +215,12 @@ export default { url(iNew) { this.$set(this.tableConfig, 'url', iNew) this.$set(this.headerActions.exportOptions, 'url', iNew.replace('/accounts/', '/account-secrets/')) + }, + '$route.query.assets': { + immediate: true, + handler() { + this.hasAccountPermission() + } } }, mounted() { @@ -232,6 +240,14 @@ export default { }, addAccountSuccess() { this.$refs.ListTable.reloadTable() + }, + hasAccountPermission() { + const { path, query } = this.$route + if (!hasUUID(path)) { + const hasPerm = this.$hasPerm('assets.add_account') && !!query.assets + this.iAsset = { id: query.assets } + this.$set(this.headerActions.extraActions[0], 'can', hasPerm) + } } } } diff --git a/src/utils/common.js b/src/utils/common.js index 70e04abbf..2786229be 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -209,6 +209,19 @@ export function setUrlParam(url, name, value) { return url } +export function setRouterQuery(vm, url = '') { + url = url || vm.tableConfig.url + const params = url.split('?')[1] + const query = Object.fromEntries(new URLSearchParams(params)) + const newQuery = { + ...vm.$route.query, + ...query + } + vm.$nextTick(() => { + vm.$router.replace({ query: newQuery }) + }) +} + export function getDayFuture(days, now) { if (!now) { now = new Date() diff --git a/src/views/accounts/AssetAccount/AssetAccountList.vue b/src/views/accounts/AssetAccount/AssetAccountList.vue index 037b1b35c..fac6f2eec 100644 --- a/src/views/accounts/AssetAccount/AssetAccountList.vue +++ b/src/views/accounts/AssetAccount/AssetAccountList.vue @@ -1,7 +1,7 @@ @@ -9,7 +9,7 @@