fix: 修改通用创建更新成功后的Route; 优化用户ACL创建ip_group错误时的信息显示

This commit is contained in:
Bai
2021-07-26 17:02:14 +08:00
parent 6bab31d74c
commit f7d75ca92c
15 changed files with 239 additions and 283 deletions

View File

@@ -176,7 +176,9 @@ export default {
type: Function,
default(res, method, vm, addContinue) {
const route = this.getNextRoute(res, method)
route['params'] = { 'id': res.id }
if (!(route.params && route.params.id)) {
route['params'] = { 'id': res.id }
}
this.$emit('submitSuccess', res)
this.emitPerformSuccessMsg(method, res, addContinue)

View File

@@ -1,16 +1,6 @@
<template>
<IBox>
<GenericCreateUpdateForm
:fields="fields"
:fields-meta="fieldsMeta"
:initial="object"
:url="url"
:update-success-next-route="updateSuccessNextRoute"
:clean-form-value="cleanFormValue"
:get-method="getMethod"
:on-perform-success="onPerformSuccess"
:perform-submit="performSubmit"
/>
<GenericCreateUpdateForm v-bind="$data" />
</IBox>
</template>
@@ -82,24 +72,24 @@ export default {
delete value['mfa_level']
}
return value
},
performSubmit(validValues) {
if (!validValues.terms) {
this.$message.error(this.$t('common.PleaseAgreeToTheTerms'))
return Promise.reject()
}
return this.$axios['put'](this.url, validValues)
},
onPerformSuccess() {
this.$message.success(this.$t('common.updateSuccessMsg'))
setTimeout(() => this.$router.push({ name: 'UserGuide' }), 100)
},
getMethod() {
return 'put'
}
}
},
methods: {
getMethod() {
return 'put'
},
performSubmit(validValues) {
if (!validValues.terms) {
this.$message.error(this.$t('common.PleaseAgreeToTheTerms'))
return Promise.reject()
}
return this.$axios['put'](this.url, validValues)
},
onPerformSuccess() {
this.$message.success(this.$t('common.updateSuccessMsg'))
setTimeout(() => this.$router.push({ name: 'UserGuide' }), 100)
}
}
}
</script>

View File

@@ -1,5 +1,5 @@
<template>
<GenericCreateUpdatePage v-bind="$data" :clean-form-value="cleanFormValue" />
<GenericCreateUpdatePage v-bind="$data" />
</template>
<script>
@@ -92,21 +92,21 @@ export default {
{ validator: validatorInterval }
]
}
},
cleanFormValue(data) {
if (data['password_strategy'] === 'custom') {
delete data['password_rules']
} else {
delete data['password']
}
if (data['interval'] === '') {
delete data['interval']
}
return data
}
}
},
methods: {
cleanFormValue(data) {
if (data['password_strategy'] === 'custom') {
delete data['password_rules']
} else {
delete data['password']
}
if (data['interval'] === '') {
delete data['interval']
}
return data
},
generatePasswordRulesItemsFields() {
const itemsFields = []
const items = [

View File

@@ -1,6 +1,5 @@
<template>
<GenericCreateUpdatePage :fields="fields" :initial="initial" :fields-meta="fieldsMeta" :url="url" :clean-form-value="cleanFormValue" :after-get-form-value="afterGetFormValue" />
<GenericCreateUpdatePage v-bind="$data" />
</template>
<script>
@@ -60,40 +59,40 @@ export default {
}
}
},
url: '/api/v1/acls/login-asset-acls/'
url: '/api/v1/acls/login-asset-acls/',
afterGetFormValue(formValue) {
formValue.assets.ip_group = formValue.assets.ip_group.toString()
formValue.assets.hostname_group = formValue.assets.hostname_group.toString()
formValue.system_users.name_group = formValue.system_users.name_group.toString()
formValue.system_users.protocol_group = formValue.system_users.protocol_group.toString()
formValue.system_users.username_group = formValue.system_users.username_group.toString()
formValue.users.username_group = formValue.users.username_group.toString()
return formValue
},
cleanFormValue(value) {
if (!Array.isArray(value.assets.ip_group)) {
value.assets.ip_group = value.assets.ip_group ? value.assets.ip_group.split(',') : []
}
if (!Array.isArray(value.assets.hostname_group)) {
value.assets.hostname_group = value.assets.hostname_group ? value.assets.hostname_group.split(',') : []
}
if (!Array.isArray(value.system_users.protocol_group)) {
value.system_users.protocol_group = value.system_users.protocol_group ? value.system_users.protocol_group.split(',') : []
}
if (!Array.isArray(value.system_users.name_group)) {
value.system_users.name_group = value.system_users.name_group ? value.system_users.name_group.split(',') : []
}
if (!Array.isArray(value.system_users.username_group)) {
value.system_users.username_group = value.system_users.username_group ? value.system_users.username_group.split(',') : []
}
if (!Array.isArray(value.users.username_group)) {
value.users.username_group = value.users.username_group ? value.users.username_group.split(',') : []
}
return value
}
}
},
methods: {
afterGetFormValue(formValue) {
formValue.assets.ip_group = formValue.assets.ip_group.toString()
formValue.assets.hostname_group = formValue.assets.hostname_group.toString()
formValue.system_users.name_group = formValue.system_users.name_group.toString()
formValue.system_users.protocol_group = formValue.system_users.protocol_group.toString()
formValue.system_users.username_group = formValue.system_users.username_group.toString()
formValue.users.username_group = formValue.users.username_group.toString()
return formValue
},
cleanFormValue(value) {
if (!Array.isArray(value.assets.ip_group)) {
value.assets.ip_group = value.assets.ip_group ? value.assets.ip_group.split(',') : []
}
if (!Array.isArray(value.assets.hostname_group)) {
value.assets.hostname_group = value.assets.hostname_group ? value.assets.hostname_group.split(',') : []
}
if (!Array.isArray(value.system_users.protocol_group)) {
value.system_users.protocol_group = value.system_users.protocol_group ? value.system_users.protocol_group.split(',') : []
}
if (!Array.isArray(value.system_users.name_group)) {
value.system_users.name_group = value.system_users.name_group ? value.system_users.name_group.split(',') : []
}
if (!Array.isArray(value.system_users.username_group)) {
value.system_users.username_group = value.system_users.username_group ? value.system_users.username_group.split(',') : []
}
if (!Array.isArray(value.users.username_group)) {
value.users.username_group = value.users.username_group ? value.users.username_group.split(',') : []
}
return value
}
}
}
</script>

View File

@@ -1,9 +1,5 @@
<template>
<GenericCreateUpdatePage
v-bind="$data"
:after-get-form-value="afterGetFormValue"
/>
<GenericCreateUpdatePage v-bind="$data" />
</template>
<script>
@@ -47,20 +43,38 @@ export default {
}},
createSuccessNextRoute: { name: 'UserDetail', params: {
id: this.$route.query.user
}}
}},
onPerformError(error, method, vm) {
this.$emit('submitError', error)
const response = error.response
const data = response.data
if (response.status === 400) {
for (const key of Object.keys(data)) {
let value = data[key]
if (key === 'ip_group') {
value = Object.values(data[key])
}
if (value instanceof Array) {
value = value.join(';')
}
this.$refs.form.setFieldError(key, value)
}
}
},
afterGetFormValue(validValues) {
validValues.ip_group = validValues.ip_group.toString()
return validValues
},
cleanFormValue(value) {
if (!Array.isArray(value.ip_group)) {
value.ip_group = value.ip_group ? value.ip_group.split(',') : []
}
console.log('>>>>>>>>: ', value)
return value
}
}
},
methods: {
afterGetFormValue(validValues) {
validValues.ip_group = validValues.ip_group.toString()
return validValues
},
cleanFormValue(value) {
if (!Array.isArray(value.ip_group)) {
value.ip_group = value.ip_group ? value.ip_group.split(',') : []
}
return value
}
}
}
</script>

View File

@@ -66,7 +66,6 @@ export default {
}
},
computed: {
}
}

View File

@@ -1,13 +1,5 @@
<template>
<GenericCreateUpdatePage
:fields="fields"
:has-detail-in-msg="false"
:initial="initial"
:fields-meta="fieldsMeta"
:url="url"
:get-next-route="getNextRoute"
:clean-form-value="cleanFormValue"
/>
<GenericCreateUpdatePage v-bind="$data" />
</template>
<script>
@@ -86,29 +78,30 @@ export default {
params: {
}
},
url: `/api/v1/assets/gateways/`
url: `/api/v1/assets/gateways/`,
hasDetailInMsg: false,
getNextRoute(res, method) {
const domain = res.domain
const route = {
name: 'DomainDetail',
params: {
id: domain
},
query: {
activeTab: 'GatewayList'
}
}
return route
},
cleanFormValue(values) {
if (this.$route.params.id && !values.update_password) {
delete values['password']
}
return values
}
}
},
methods: {
getNextRoute(res, method) {
const domain = res.domain
const route = {
name: 'DomainDetail',
params: {
id: domain
},
query: {
activeTab: 'GatewayList'
}
}
return route
},
cleanFormValue(values) {
if (this.$route.params.id && !values.update_password) {
delete values['password']
}
return values
}
}
}
</script>

View File

@@ -3,9 +3,6 @@
v-bind="$data"
:create-success-next-route="successUrl"
:update-success-next-route="successUrl"
:has-detail-in-msg="false"
:after-get-form-value="afterGetFormValue"
:clean-form-value="cleanFormValue"
/>
</template>
@@ -55,23 +52,24 @@ export default {
}
return `${url}?type=${commandType}`
},
url: '/api/v1/terminal/command-storages/'
url: '/api/v1/terminal/command-storages/',
hasDetailInMsg: false,
afterGetFormValue(validValues) {
if (!validValues?.meta?.HOSTS) {
return validValues
}
validValues.meta.HOSTS = validValues.meta.HOSTS.toString()
return validValues
},
cleanFormValue(value) {
value.meta.HOSTS = value.meta.HOSTS.split(',').map(item => (item.trim()))
return value
}
}
},
computed: {
},
methods: {
afterGetFormValue(validValues) {
if (!validValues?.meta?.HOSTS) {
return validValues
}
validValues.meta.HOSTS = validValues.meta.HOSTS.toString()
return validValues
},
cleanFormValue(value) {
value.meta.HOSTS = value.meta.HOSTS.split(',').map(item => (item.trim()))
return value
}
}
}
</script>

View File

@@ -1,14 +1,6 @@
<template>
<IBox>
<GenericCreateUpdateForm
:fields="fields"
:url="url"
:get-method="getMethod"
:fields-meta="fieldsMeta"
:more-buttons="moreButtons"
:has-detail-in-msg="false"
:clean-form-value="cleanFormValue"
/>
<GenericCreateUpdateForm v-bind="$data" />
</IBox>
</template>
@@ -51,20 +43,21 @@ export default {
]
],
fieldsMeta: {
},
hasDetailInMsg: false,
getMethod() {
return 'put'
},
// 不清理的话编辑secret在删除提交会报错
cleanFormValue(data) {
if (!data['DINGTALK_APPSECRET']) {
delete data['DINGTALK_APPSECRET']
}
return data
}
}
},
methods: {
getMethod() {
return 'put'
},
// 不清理的话编辑secret在删除提交会报错
cleanFormValue(data) {
if (!data['DINGTALK_APPSECRET']) {
delete data['DINGTALK_APPSECRET']
}
return data
}
}
}
</script>

View File

@@ -1,14 +1,6 @@
<template>
<IBox>
<GenericCreateUpdateForm
:fields="fields"
:url="url"
:clean-form-value="cleanFormValue"
:get-method="getMethod"
:fields-meta="fieldsMeta"
:more-buttons="moreButtons"
:has-detail-in-msg="false"
/>
<GenericCreateUpdateForm v-bind="$data" />
</IBox>
</template>
@@ -72,6 +64,7 @@ export default {
]
}
},
hasDetailInMsg: false,
url: '/api/v1/settings/setting/?category=email',
moreButtons: [
{
@@ -87,26 +80,26 @@ export default {
})
}
}
]
],
cleanFormValue(data) {
if (!data['EMAIL_HOST_PASSWORD']) {
delete data['EMAIL_HOST_PASSWORD']
}
Object.keys(data).forEach(
function(key) {
if (data[key] === null) {
delete data[key]
}
}
)
return data
},
getMethod() {
return 'put'
}
}
},
methods: {
getMethod() {
return 'put'
},
cleanFormValue(data) {
if (!data['EMAIL_HOST_PASSWORD']) {
delete data['EMAIL_HOST_PASSWORD']
}
Object.keys(data).forEach(
function(key) {
if (data[key] === null) {
delete data[key]
}
}
)
return data
}
}
}

View File

@@ -1,15 +1,6 @@
<template>
<IBox>
<GenericCreateUpdateForm
:fields="selectFields"
:url="url"
:fields-meta="fieldsMeta"
:get-method="getMethod"
:more-buttons="moreButtons"
:has-detail-in-msg="false"
:after-get-form-value="changeFormValue"
:clean-form-value="cleanFormValue"
/>
<GenericCreateUpdateForm v-bind="$data" />
<ImportDialog :visible.sync="dialogLdapUserImport" />
<TestLoginDialog :visible.sync="dialogTest" />
</IBox>
@@ -67,6 +58,7 @@ export default {
}
},
url: '/api/v1/settings/setting/?category=ldap',
hasDetailInMsg: false,
moreButtons: [
{
title: this.$t('setting.ldapConnectTest'),
@@ -94,29 +86,29 @@ export default {
this.dialogLdapUserImport = true
}.bind(this)
}
]
],
getMethod() {
return 'put'
},
afterGetFormValue(obj) {
obj.AUTH_LDAP_USER_ATTR_MAP = JSON.stringify(obj.AUTH_LDAP_USER_ATTR_MAP)
return obj
},
cleanFormValue(data) {
if (data['AUTH_LDAP_BIND_PASSWORD'] === '') {
delete data['AUTH_LDAP_BIND_PASSWORD']
}
if (data['AUTH_LDAP_USER_ATTR_MAP']) {
data['AUTH_LDAP_USER_ATTR_MAP'] = JSON.parse(data['AUTH_LDAP_USER_ATTR_MAP'])
}
return data
}
}
},
mounted() {
this.loading = false
},
methods: {
getMethod() {
return 'put'
},
changeFormValue(obj) {
obj.AUTH_LDAP_USER_ATTR_MAP = JSON.stringify(obj.AUTH_LDAP_USER_ATTR_MAP)
return obj
},
cleanFormValue(data) {
if (data['AUTH_LDAP_BIND_PASSWORD'] === '') {
delete data['AUTH_LDAP_BIND_PASSWORD']
}
if (data['AUTH_LDAP_USER_ATTR_MAP']) {
data['AUTH_LDAP_USER_ATTR_MAP'] = JSON.parse(data['AUTH_LDAP_USER_ATTR_MAP'])
}
return data
}
}
}
</script>

View File

@@ -1,13 +1,6 @@
<template>
<IBox>
<GenericCreateUpdateForm
:fields="selectFields"
:url="url"
:fields-meta="fieldsMeta"
:get-method="getMethod"
:has-detail-in-msg="false"
:clean-form-value="cleanFormValue"
/>
<GenericCreateUpdateForm v-bind="$data" />
</IBox>
</template>
<script>
@@ -41,7 +34,21 @@ export default {
type: 'input'
}
},
url: '/api/v1/settings/setting/?category=terminal'
url: '/api/v1/settings/setting/?category=terminal',
hasDetailInMsg: false,
getMethod() {
return 'put'
},
cleanFormValue(data) {
Object.keys(data).forEach(
function(key) {
if (data[key] === null) {
delete data[key]
}
}
)
return data
}
}
},
mounted() {
@@ -55,19 +62,6 @@ export default {
}
},
methods: {
getMethod() {
return 'put'
},
cleanFormValue(data) {
Object.keys(data).forEach(
function(key) {
if (data[key] === null) {
delete data[key]
}
}
)
return data
}
}
}
</script>

View File

@@ -1,14 +1,6 @@
<template>
<IBox>
<GenericCreateUpdateForm
:fields="fields"
:url="url"
:get-method="getMethod"
:fields-meta="fieldsMeta"
:more-buttons="moreButtons"
:has-detail-in-msg="false"
:clean-form-value="cleanFormValue"
/>
<GenericCreateUpdateForm v-bind="$data" />
</IBox>
</template>
@@ -26,6 +18,7 @@ export default {
const vm = this
return {
url: '/api/v1/settings/setting/?category=wecom',
hasDetailInMsg: false,
moreButtons: [
{
title: this.$t('setting.weComTest'),
@@ -51,20 +44,20 @@ export default {
]
],
fieldsMeta: {
},
// 不清理的话编辑secret在删除提交会报错
cleanFormValue(data) {
if (!data['WECOM_SECRET']) {
delete data['WECOM_SECRET']
}
return data
},
getMethod() {
return 'put'
}
}
},
methods: {
getMethod() {
return 'put'
},
// 不清理的话编辑secret在删除提交会报错
cleanFormValue(data) {
if (!data['WECOM_SECRET']) {
delete data['WECOM_SECRET']
}
return data
}
}
}
</script>

View File

@@ -1,9 +1,5 @@
<template>
<GenericCreateUpdatePage
v-bind="$data"
:clean-form-value="cleanFormValue"
@getObjectDone="afterGetUser"
/>
<GenericCreateUpdatePage v-bind="$data" @getObjectDone="afterGetUser" />
</template>
<script>
@@ -134,6 +130,27 @@ export default {
value: []
}
}
},
getMethod() {
const params = this.$route.params
if (params.id) {
return 'put'
} else {
return 'post'
}
},
cleanFormValue(value) {
const method = this.getMethod()
if (method === 'post' && value.password_strategy === 'email') {
delete value['password']
if (this.currentOrgIsRoot) {
delete value['groups']
}
}
if (value.update_password !== undefined) {
delete value.update_password
}
return value
}
}
},
@@ -146,27 +163,6 @@ export default {
}
},
methods: {
cleanFormValue(value) {
const method = this.getMethod()
if (method === 'post' && value.password_strategy === 'email') {
delete value['password']
if (this.currentOrgIsRoot) {
delete value['groups']
}
}
if (value.update_password !== undefined) {
delete value.update_password
}
return value
},
getMethod() {
const params = this.$route.params
if (params.id) {
return 'put'
} else {
return 'post'
}
},
afterGetUser(user) {
this.user = user
if (this.$route.query.clone_from) {

View File

@@ -1,5 +1,5 @@
<template>
<GenericCreateUpdatePage ref="createUpdatePage" v-bind="$data" :clean-form-value="cleanFormValue" :after-get-form-value="afterGetFormValue" />
<GenericCreateUpdatePage ref="createUpdatePage" v-bind="$data" />
</template>
<script>
@@ -116,7 +116,17 @@ export default {
}
},
updateSuccessNextRoute: { name: 'CloudCenter' },
createSuccessNextRoute: { name: 'CloudCenter' }
createSuccessNextRoute: { name: 'CloudCenter' },
afterGetFormValue(formValue) {
formValue.ip_network_segment_group = formValue.ip_network_segment_group.toString()
return formValue
},
cleanFormValue(value) {
if (!Array.isArray(value.ip_network_segment_group)) {
value.ip_network_segment_group = value.ip_network_segment_group ? value.ip_network_segment_group.split(',') : []
}
return value
}
}
},
async mounted() {
@@ -128,16 +138,6 @@ export default {
}
},
methods: {
afterGetFormValue(formValue) {
formValue.ip_network_segment_group = formValue.ip_network_segment_group.toString()
return formValue
},
cleanFormValue(value) {
if (!Array.isArray(value.ip_network_segment_group)) {
value.ip_network_segment_group = value.ip_network_segment_group ? value.ip_network_segment_group.split(',') : []
}
return value
}
}
}