Skip to content

Commit e1fae38

Browse files
committed
feat: 增加全局readonly属性
1 parent f81970d commit e1fae38

File tree

3 files changed

+25
-15
lines changed

3 files changed

+25
-15
lines changed

lib/EleForm.vue

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
:rules="computedRules"
1010
@submit.native.prevent="handleSubmitForm"
1111
ref="form"
12+
:disabled="disabled"
1213
v-bind="formAttrs"
1314
>
1415
<!-- 默认插槽作为表单项 -->
@@ -29,7 +30,7 @@
2930
:field="field"
3031
:props="$props"
3132
:formData="formData"
32-
:disabled="disabled || formItem._disabled"
33+
:disabled="formItem._disabled"
3334
:type="formItem._type"
3435
:options="formItem._options"
3536
>
@@ -56,12 +57,13 @@
5657
:field="field"
5758
:formData="formData"
5859
:name="field"
59-
:disabled="disabled || formItem._disabled"
60+
:disabled="formItem._disabled"
6061
:type="formItem._type"
6162
:options="formItem._options"
6263
>
6364
<component
64-
:disabled="disabled || formItem._disabled"
65+
:disabled="formItem._disabled"
66+
:readonly="readonly"
6567
:desc="formItem"
6668
:is="formItem._type"
6769
:options="formItem._options"
@@ -222,6 +224,11 @@ export default {
222224
type: Boolean,
223225
default: false
224226
},
227+
// 全局的readonly
228+
readonly: {
229+
type: Boolean,
230+
default: false
231+
},
225232
// 是否为弹窗
226233
isDialog: {
227234
type: Boolean,
@@ -393,6 +400,7 @@ export default {
393400
formDescKeys() {
394401
return Object.keys(this.computedFormDesc)
395402
},
403+
// 对formDesc做处理
396404
computedFormDesc() {
397405
const desc = this.getDeepFormDesc(this.formDesc)
398406
Object.keys(desc).forEach(field => {

lib/mixins/attrsMixin.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ export default {
4141
this.defaultAttrs,
4242
this.globalComponentAttrs,
4343
this.customAttrs,
44-
{ disabled: this.disabled || this.customAttrs.disabled }
44+
{ disabled: this.disabled || this.customAttrs.disabled },
45+
{ readonly: this.readonly || this.customAttrs.readonly }
4546
)
4647
}
4748
}

lib/mixins/formMixin.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,40 +11,41 @@ export default {
1111
props: {
1212
value: {},
1313
disabled: Boolean,
14+
readonly: Boolean,
1415
options: {
1516
type: Array,
16-
default () {
17+
default() {
1718
return []
1819
}
1920
},
2021
desc: {
2122
type: Object,
22-
default () {
23+
default() {
2324
return {}
2425
}
2526
}
2627
},
2728
computed: {
28-
slots () {
29+
slots() {
2930
return this.desc.slots || {}
3031
},
31-
scopedSlots () {
32+
scopedSlots() {
3233
return this.desc.scopedSlots || {}
3334
},
34-
onEvents () {
35+
onEvents() {
3536
return Object.assign({}, this.defaultOn, this.desc.on)
3637
}
3738
},
3839
watch: {
3940
// 当值发生变化时
4041
value: {
41-
handler (value) {
42+
handler(value) {
4243
this.handleValueChanged(value)
4344
},
4445
immediate: true
4546
}
4647
},
47-
data () {
48+
data() {
4849
return {
4950
// 默认事件
5051
defaultOn: {
@@ -56,7 +57,7 @@ export default {
5657
},
5758
methods: {
5859
// 模拟数据
59-
mockData () {
60+
mockData() {
6061
const Mock = mock()
6162
if (Mock) {
6263
if (this.desc.mock === true && this.mockRule !== false) {
@@ -80,12 +81,12 @@ export default {
8081
},
8182

8283
// 变化处理
83-
handleChange (value) {
84+
handleChange(value) {
8485
this.$emit('input', value)
8586
},
8687

8788
// 检查类型
88-
checkType (val, isDefault = false) {
89+
checkType(val, isDefault = false) {
8990
if (this.type && isDef(val)) {
9091
const isOk = is(val, this.type)
9192
if (!isOk) {
@@ -106,7 +107,7 @@ export default {
106107
},
107108

108109
// 初始化数据
109-
handleValueChanged (value) {
110+
handleValueChanged(value) {
110111
if (this.desc.displayFormatter) {
111112
value = this.desc.displayFormatter(value)
112113
}

0 commit comments

Comments
 (0)