From 45344ac6204116c705592d8652e6827d8a7d6dbc Mon Sep 17 00:00:00 2001 From: fit2bot <68588906+fit2bot@users.noreply.github.com> Date: Fri, 30 Aug 2024 17:01:18 +0800 Subject: [PATCH] perf: ldap import user error msg (#4333) * perf: ldap import user error msg * fix: Duplication on new code --------- Co-authored-by: wangruidong <940853815@qq.com> --- .../ListTable/TableAction/ImportTable.vue | 36 ++--------------- .../Table/ListTable/TableAction/const.js | 40 +++++++++++++++++++ src/views/settings/Auth/Ldap/ImportDialog.vue | 4 +- 3 files changed, 46 insertions(+), 34 deletions(-) create mode 100644 src/components/Table/ListTable/TableAction/const.js diff --git a/src/components/Table/ListTable/TableAction/ImportTable.vue b/src/components/Table/ListTable/TableAction/ImportTable.vue index 1133330e3..ea1e06ca6 100644 --- a/src/components/Table/ListTable/TableAction/ImportTable.vue +++ b/src/components/Table/ListTable/TableAction/ImportTable.vue @@ -44,8 +44,9 @@ import DataTable from '@/components/Table/DataTable/index.vue' import { getUpdateObjURL } from '@/utils/common' import { sleep } from '@/utils/time' -import { EditableInputFormatter, StatusFormatter } from '@/components/Table/TableFormatters' +import { EditableInputFormatter } from '@/components/Table/TableFormatters' import { encryptPassword } from '@/utils/crypto' +import getStatusColumnMeta from '@/components/Table/ListTable/TableAction/const' export default { name: 'ImportTable', @@ -223,38 +224,7 @@ export default { }, methods: { generateTableColumns(tableTitles, tableData) { - const vm = this - const columns = [{ - prop: '@status', - label: vm.$t('Status'), - width: '80px', - align: 'center', - formatter: StatusFormatter, - formatterArgs: { - faChoices: { - ok: 'fa-check text-primary', - error: 'fa-times text-danger', - pending: 'fa-clock-o' - }, - getChoicesKey(val) { - if (val === 'ok' || val === 'pending') { - return val - } - return 'error' - }, - getTip(val) { - if (val === 'ok') { - return vm.$t('Success') - } else if (val === 'pending') { - return vm.$t('Pending') - } else if (val && val.name === 'error') { - return val.error - } - return '' - }, - hasTips: true - } - }] + const columns = [{ ...getStatusColumnMeta.bind(this)().status }] for (const item of tableTitles) { const dataItemLens = tableData.map(d => { if (!d) { diff --git a/src/components/Table/ListTable/TableAction/const.js b/src/components/Table/ListTable/TableAction/const.js new file mode 100644 index 000000000..2b326c3e7 --- /dev/null +++ b/src/components/Table/ListTable/TableAction/const.js @@ -0,0 +1,40 @@ +import { StatusFormatter } from '@/components/Table/TableFormatters' +import i18n from '@/i18n/i18n' + +export const getStatusColumnMeta = (prop = '@status') => { + return { + status: { + prop: prop, + label: i18n.t('Status'), + width: '80px', + align: 'center', + formatter: StatusFormatter, + formatterArgs: { + faChoices: { + ok: 'fa-check text-primary', + error: 'fa-times text-danger', + pending: 'fa-clock-o' + }, + getChoicesKey: (val) => { + if (val === 'ok' || val === 'pending') { + return val + } + return 'error' + }, + getTip: (val) => { + if (val === 'ok') { + return i18n.t('Success') + } else if (val === 'pending') { + return i18n.t('Pending') + } else if ((val && val.name === 'error') || val.error !== undefined) { + return val.error + } + return '' + }, + hasTips: true + } + } + } +} + +export default getStatusColumnMeta diff --git a/src/views/settings/Auth/Ldap/ImportDialog.vue b/src/views/settings/Auth/Ldap/ImportDialog.vue index be3ba4b2f..1e99835d7 100644 --- a/src/views/settings/Auth/Ldap/ImportDialog.vue +++ b/src/views/settings/Auth/Ldap/ImportDialog.vue @@ -49,6 +49,7 @@ import { DEFAULT_ORG_ID, SYSTEM_ORG_ID } from '@/utils/org' import ListTable from '@/components/Table/ListTable/index.vue' import Dialog from '@/components/Dialog/index.vue' import Select2 from '@/components/Form/FormFields/Select2.vue' +import getStatusColumnMeta from '@/components/Table/ListTable/TableAction/const' export default { name: 'ImportDialog', @@ -76,8 +77,9 @@ export default { }, tableConfig: { url: '/api/v1/settings/ldap/users/', - columns: ['username', 'name', 'email', 'groups', 'existing'], + columns: ['status', 'username', 'name', 'email', 'groups', 'existing'], columnsMeta: { + ...getStatusColumnMeta.bind(this)('status'), username: { label: this.$t('Username'), width: '180px'