mirror of
https://github.com/jumpserver/lina.git
synced 2025-09-25 14:25:23 +00:00
[Update] 修改geneate form
This commit is contained in:
@@ -56,14 +56,8 @@ export default {
|
|||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
generateField(name) {
|
generateFieldByType(type, field, fieldMeta) {
|
||||||
let field = {}
|
switch (type) {
|
||||||
const fieldMeta = this.meta[name] || {}
|
|
||||||
field.id = name
|
|
||||||
field.label = fieldMeta.label
|
|
||||||
|
|
||||||
let type = 'input'
|
|
||||||
switch (fieldMeta.type) {
|
|
||||||
case 'choice':
|
case 'choice':
|
||||||
type = 'radio-group'
|
type = 'radio-group'
|
||||||
field.options = fieldMeta.choices.map(v => {
|
field.options = fieldMeta.choices.map(v => {
|
||||||
@@ -85,13 +79,41 @@ export default {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
field.type = type
|
field.type = type
|
||||||
|
return field
|
||||||
|
},
|
||||||
|
generateFieldByName(name, field) {
|
||||||
|
switch (name) {
|
||||||
|
case 'email':
|
||||||
|
field.el = { type: 'email' }
|
||||||
|
break
|
||||||
|
case 'password':
|
||||||
|
field.el = { type: 'password' }
|
||||||
|
break
|
||||||
|
case 'comment':
|
||||||
|
field.el = { type: 'textarea' }
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return field
|
||||||
|
},
|
||||||
|
generateFieldByOther(field, fieldMeta) {
|
||||||
if (fieldMeta.required) {
|
if (fieldMeta.required) {
|
||||||
if (type === 'input') {
|
if (field.type === 'input') {
|
||||||
field.rules = [rules.Required]
|
field.rules = [rules.Required]
|
||||||
} else {
|
} else {
|
||||||
field.rules = [rules.RequiredChange]
|
field.rules = [rules.RequiredChange]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return field
|
||||||
|
},
|
||||||
|
generateField(name) {
|
||||||
|
let field = {}
|
||||||
|
const fieldMeta = this.meta[name] || {}
|
||||||
|
field.id = name
|
||||||
|
field.label = fieldMeta.label
|
||||||
|
field = this.generateFieldByType(fieldMeta.type, field, fieldMeta)
|
||||||
|
field = this.generateFieldByName(name, field)
|
||||||
|
field = this.generateFieldByOther(field, fieldMeta)
|
||||||
|
|
||||||
field = Object.assign(field, this.fieldsMeta[name] || {})
|
field = Object.assign(field, this.fieldsMeta[name] || {})
|
||||||
return field
|
return field
|
||||||
},
|
},
|
||||||
|
@@ -56,6 +56,7 @@ export default {
|
|||||||
if (valid) {
|
if (valid) {
|
||||||
this.$emit('submit', this.$refs[formName].getFormValue())
|
this.$emit('submit', this.$refs[formName].getFormValue())
|
||||||
} else {
|
} else {
|
||||||
|
this.$emit('invalid', valid)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@@ -19,7 +19,7 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
url: {
|
url: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true
|
||||||
},
|
},
|
||||||
method: {
|
method: {
|
||||||
type: String,
|
type: String,
|
||||||
@@ -34,16 +34,34 @@ export default {
|
|||||||
form: {
|
form: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => { return {} }
|
default: () => { return {} }
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
onSubmit: {
|
||||||
handleSubmit(values) {
|
type: Function,
|
||||||
console.log('submit', values)
|
default: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
console.log('generic', this.$attrs)
|
console.log('generic', this.$attrs)
|
||||||
console.log(this.fields)
|
console.log(this.fields)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleSubmit(values) {
|
||||||
|
let handler = this.onSubmit || this.defaultOnSubmit
|
||||||
|
handler = handler.bind(this)
|
||||||
|
console.log('submit', values)
|
||||||
|
return handler(values)
|
||||||
|
},
|
||||||
|
defaultOnSubmit(validValues) {
|
||||||
|
this.$axios.post(this.url, validValues).then(
|
||||||
|
() => {
|
||||||
|
const msg = this.$tc('Create success')
|
||||||
|
this.$message.success(msg)
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$router.push({ name: 'UserList' })
|
||||||
|
}, 500)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@@ -104,7 +104,7 @@ export const constantRoutes = [
|
|||||||
component: () => import('@/views/users/UserCreateUpdate.vue'), // Parent router-view
|
component: () => import('@/views/users/UserCreateUpdate.vue'), // Parent router-view
|
||||||
name: 'UserGroupCreate',
|
name: 'UserGroupCreate',
|
||||||
hidden: true,
|
hidden: true,
|
||||||
meta: { title: 'UserGroupCreate' }
|
meta: { title: 'UserGroupCreate', activeMenu: '/users/groups' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'groups/:id',
|
path: 'groups/:id',
|
||||||
|
0
src/utils/jumpserver.js
Normal file
0
src/utils/jumpserver.js
Normal file
@@ -26,14 +26,11 @@ export default {
|
|||||||
},
|
},
|
||||||
fields: [
|
fields: [
|
||||||
'name', 'username', 'email', 'groups', 'password_strategy', 'password', 'mfa_level',
|
'name', 'username', 'email', 'groups', 'password_strategy', 'password', 'mfa_level',
|
||||||
'source', 'role', 'date_expired', 'phone', 'wechat', 'comment',
|
'source', 'role', 'date_expired', 'phone', 'wechat', 'comment'
|
||||||
],
|
],
|
||||||
url: '/api/v1/users/users/',
|
url: '/api/v1/users/users/',
|
||||||
fieldsMeta: {
|
fieldsMeta: {
|
||||||
password: {
|
password: {
|
||||||
el: {
|
|
||||||
type: 'password'
|
|
||||||
},
|
|
||||||
hidden: (formValue, item) => {
|
hidden: (formValue, item) => {
|
||||||
console.log('hidden password', formValue.password_strategy)
|
console.log('hidden password', formValue.password_strategy)
|
||||||
if (this.$route.params.id === undefined) {
|
if (this.$route.params.id === undefined) {
|
||||||
@@ -43,21 +40,11 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
email: {
|
|
||||||
el: {
|
|
||||||
type: 'email'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
groups: {
|
groups: {
|
||||||
el: {
|
el: {
|
||||||
value: [],
|
value: [],
|
||||||
url: '/api/v1/users/groups/'
|
url: '/api/v1/users/groups/'
|
||||||
}
|
}
|
||||||
},
|
|
||||||
comment: {
|
|
||||||
el: {
|
|
||||||
type: 'textarea'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -14,7 +14,7 @@ export default {
|
|||||||
tableConfig: {
|
tableConfig: {
|
||||||
url: '/api/v1/users/users/',
|
url: '/api/v1/users/users/',
|
||||||
columns: [
|
columns: [
|
||||||
'name', 'username', 'role', 'groups_display', 'source', 'is_valid', 'actions'
|
'name', 'username', 'role', 'groups_display', 'source', 'is_active', 'actions'
|
||||||
],
|
],
|
||||||
detailRoute: 'UserDetail'
|
detailRoute: 'UserDetail'
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user