form.js
1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
export default {
props: {
data: {
type: Object,
default: null
},
loading: {
type: Boolean,
default: false
}
},
data() {
return {
form: {},
rules: {}
}
},
computed: {
formProps() {
return {
model: this.form,
rules: this.rules,
labelWidth: '100px'
}
}
},
watch: {
data: {
deep: true,
immediate: true,
handler(val) {
if (val) {
const fields = Object.keys(this.form)
for (const field of fields) {
this.form[field] = val[field]
}
}
}
}
},
methods: {
onSubmit() {
for (const key in this.form) {
if (this.form[key] && typeof this.form[key] === 'string') {
this.form[key] = this.form[key].trim()
}
}
const form = JSON.parse(JSON.stringify(this.form))
this.$refs.form.validate((valid) => {
if (valid) {
this.$emit('submit', form)
} else {
return false
}
})
},
onCancel() {
this.$emit('cancel')
},
reset() {
// eslint-disable-next-line babel/no-unused-expressions
this.$refs.form && this.$refs.form.resetFields()
}
}
}