perf: 修改更新密文显示字段

This commit is contained in:
“huailei000”
2023-04-24 19:13:34 +08:00
parent 57702bcef3
commit 5e3917d61c
7 changed files with 106 additions and 112 deletions

View File

@@ -1,100 +0,0 @@
<template>
<Dialog
v-if="iVisible"
:destroy-on-close="true"
:show-cancel="false"
:show-confirm="false"
:title="title"
:visible.sync="iVisible"
top="35vh"
width="40%"
>
<el-row :gutter="20">
<el-col :md="4" :sm="24">
<div style="line-height: 34px">{{ '密文' }}</div>
</el-col>
<el-col :md="14" :sm="24">
<el-input
v-model="secret"
:type="template.secret_type.value === 'password' ? 'text' : 'textarea'"
:rows="template.secret_type.value === 'password' ? 2 : 4"
/>
<span class="help-tips help-block">{{ '同时会修改通过模版所创建账号的密文' }}</span>
</el-col>
<el-col :md="4" :sm="24">
<el-button
:loading="loading"
size="mini"
style="line-height:20px "
type="primary"
@click="dialogConfirm"
>
{{ this.$t('common.Confirm') }}
</el-button>
</el-col>
</el-row>
</Dialog>
</template>
<script>
import Dialog from '@/components/Dialog'
export default {
name: 'AccountTemplateChangeSecretDialog',
components: {
Dialog
},
props: {
visible: {
type: Boolean,
default: false
},
loading: {
type: Boolean,
default: false
},
secret: {
type: String,
default: null
},
template: {
type: Object,
default: null
},
sw: {
type: Boolean,
default: false
}
},
data() {
console.log('this.template', this.template)
return {
title: '更新密文'
}
},
computed: {
iVisible: {
get() {
return this.visible
},
set(val) {
this.$emit('update:visible', val)
}
}
},
methods: {
dialogConfirm() {
this.$axios.patch(
`/api/v1/accounts/account-templates/${this.template['id']}/sync-update-secret/`,
{ secret: this.secret }
)
.then(() => {
this.$message.success(this.$tc('common.updateSuccessMsg'))
}).finally(() => {
this.iVisible = false
this.secret = null
})
}
}
}
</script>

View File

@@ -1,6 +1,7 @@
{
"": "",
"accounts": {
"UpdateSecret": "Update secret",
"AccountPolicy": "Account policy",
"BulkCreateStrategy": "When creating accounts that do not meet the requirements, such as key type non-compliance and unique key constraints, the above policies can be selected.",
"HistoryDate": "History date",
@@ -347,7 +348,7 @@
"PasswordSelector": "Password Input Box Selector",
"SubmitSelector": "Submit Button Selector",
"PlatformProtocolConfig": "Platform protocol config",
"InheritPlatformConfig": "Inherited from the platform configuration. If you need to change, please change the configuration in the platform",
"InheritPlatformConfig": "The account list displays accounts created through templates. When updating ciphertext, the ciphertext of the account created through the template will be updated.",
"CollectHardwareInfo": "Enable collection of hardware information",
"DomainEnabled": "Enable domain",
"ProtocolsEnabled": "Enable protocol",

View File

@@ -1,6 +1,7 @@
{
"": "",
"accounts": {
"UpdateSecret": "機密の更新",
"AccountPolicy": "アカウントポリシー",
"BulkCreateStrategy": "作成時に要件を満たしていないアカウント(例:鍵タイプが規則に合わない、一意のキー制約がある、上記のポリシーを選択することができます)について。",
"HistoryDate": "历史日期",
@@ -340,7 +341,7 @@
"PasswordSelector": "パスワード入力ボックスセレクタ",
"SubmitSelector": "コミットボタンセレクタ",
"PlatformProtocolConfig": "プラットフォームプロトコルの構成",
"InheritPlatformConfig": "プラットフォーム構成から継承します。変更する場合は、プラットフォームの構成を変更してください",
"InheritPlatformConfig": "アカウントリストには、テンプレートで作成されたアカウントが表示されます。暗号文を更新すると、テンプレートで作成されたアカウントの暗号文が更新されます。",
"CollectHardwareInfo": "ハードウェア情報の収集を有効にする",
"DomainEnabled": "ドメインを有効化",
"ProtocolsEnabled": "プロトコルの有効化",

View File

@@ -1,6 +1,7 @@
{
"": "",
"accounts": {
"UpdateSecret": "更新密文",
"AddAccountResult": "账号批量添加结果",
"AccountPolicy": "账号策略",
"BulkCreateStrategy": "创建时对于不符合要求的账号,如:密钥类型不合规,唯一键约束,可选择以上策略。",
@@ -358,7 +359,7 @@
"PasswordSelector": "密码输入框选择器",
"SubmitSelector": "提交按钮选择器",
"PlatformProtocolConfig": "平台协议配置",
"InheritPlatformConfig": "继承自平台配置,如需更改,请更改平台中的配置",
"InheritPlatformConfig": "账号列表展示通过模版创建的账号。更新密文时,会更新通过模版所创建账号的密文。",
"CollectHardwareInfo": "启用收集硬件信息",
"DomainEnabled": "启用网域",
"ProtocolsEnabled": "启用协议",

View File

@@ -22,7 +22,7 @@
/>
<AccountTemplateChangeSecretDialog
:visible.sync="visible"
:template="object"
:object="object"
/>
</el-row>
</div>
@@ -31,7 +31,7 @@
<script>
import GenericListTable from '@/layout/components/GenericListTable'
import QuickActions from '@/components/QuickActions'
import AccountTemplateChangeSecretDialog from '@/components/AccountTemplateChangeSecretDialog'
import AccountTemplateChangeSecretDialog from './AccountTemplateChangeSecretDialog'
import { ActionsFormatter, DetailFormatter } from '@/components/TableFormatters'
import ViewSecret from '@/components/AccountListTable/ViewSecret'
@@ -58,12 +58,10 @@ export default {
showViewSecretDialog: false,
quickActions: [
{
// title: this.$t('assets.TestAssetsConnective'),
title: '更新密文',
title: this.$t('accounts.UpdateSecret'),
attrs: {
type: 'primary',
// label: this.$t('assets.Test')
label: '更新'
label: this.$t('common.Update')
},
callbacks: Object.freeze({
click: () => {

View File

@@ -0,0 +1,93 @@
<template>
<Dialog
v-if="iVisible"
:visible.sync="iVisible"
:title="$tc('accounts.UpdateSecret')"
width="50%"
:show-cancel="false"
:show-confirm="false"
:destroy-on-close="true"
>
<AutoDataForm
:form="form"
v-bind="config"
@submit="onSubmit"
/>
</Dialog>
</template>
<script>
import { AutoDataForm, Dialog } from '@/components'
import { templateFieldsMeta } from '../const.js'
import { encryptPassword } from '@/utils/crypto'
export default {
name: 'AccountTemplateChangeSecretDialog',
components: {
Dialog,
AutoDataForm
},
props: {
visible: {
type: Boolean,
default: false
},
object: {
type: Object,
default: null
}
},
data() {
return {
form: this.object,
secretType: this.object?.secret_type?.value,
config: {
hasSaveContinue: false,
url: '/api/v1/accounts/account-templates/',
fields: [
['', [
'secret_type', 'secret', 'ssh_key', 'token',
'access_key', 'passphrase'
]]
],
fieldsMeta: {
...templateFieldsMeta(this),
secret_type: {
disabled: true
}
}
}
}
},
computed: {
iVisible: {
get() {
return this.visible
},
set(val) {
this.$emit('update:visible', val)
}
}
},
methods: {
onSubmit(form) {
const { object, secretType } = this
const currentSecretType = secretType === 'password' ? form?.['secret'] : form?.[secretType]
const params = {
secret: currentSecretType ? encryptPassword(currentSecretType) : '',
is_sync_account: true,
...(secretType === 'ssh_key' && { passphrase: encryptPassword(form?.['passphrase']) })
}
this.$axios.patch(
`/api/v1/accounts/account-templates/${object.id}/sync-update-secret/`,
params
).then(() => {
this.$message.success(this.$tc('common.updateSuccessMsg'))
}).finally(() => {
this.iVisible = false
})
}
}
}
</script>

View File

@@ -14,14 +14,14 @@
<script>
import { GenericDetailPage, TabPage } from '@/layout/components'
import Detail from './Detail.vue'
import AccountTemplateChangeSecret from './AccountTemplateChangeSecret/index'
import Account from './Account'
export default {
components: {
GenericDetailPage,
TabPage,
Detail,
AccountTemplateChangeSecret
Account
},
data() {
return {
@@ -36,7 +36,7 @@ export default {
},
{
title: this.$t('assets.Accounts'),
name: 'AccountTemplateChangeSecret',
name: 'Account',
hidden: () => !this.$hasPerm('accounts.change_accounttemplate')
}
]