123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- import { isObject } from '@/utils/types.js'
- export default {
- inheritAttrs: false,
- props: {
- // v-model/value 绑定值
- value: {
- default: null
- },
- // 字段信息
- field: {
- type: Object,
- required: true
- },
- // 字段展示名(不传则取默认值)
- label: {
- type: String,
- default: null
- },
- // 提示信息(不传则取默认值)
- placeholder: {
- type: String,
- default: null
- },
- // 是否禁止编辑
- disabled: {
- type: Boolean,
- default: false
- },
- // 私有配置参数
- config: {
- type: Object,
- default: null
- },
- index: {
- type: Number,
- default: 0
- }
- },
- data() {
- return {
- formValue: null
- }
- },
- mounted() {
- if (this.field.defaultValue && this.$isEmpty(this.formValue)) {
- // this.$emit('input', this.field.defaultValue)
- this.emitChangeEvt(this.formatDefaultValue())
- }
- console.log(this.field, 'this.field', true)
- },
- computed: {
- // 输入提示
- _placeholder() {
- if (this.field.autoGeneNumber == 1) return '根据编号规则自动生成,支持手动输入'
- return this.$isEmpty(this.placeholder) ? `请输入${this.field.name}` : this.placeholder
- },
- // 字段展示名
- _label() {
- if (this.label !== null) return this.label
- return this.field.name
- }
- },
- watch: {
- value: {
- handler(val) {
- // console.log('change value: ', val)
- this.formValue = this.value
- },
- deep: true,
- immediate: true
- },
- // #ifdef MP-WEIXIN
- // 小程序需要在这里重新赋值
- field: {
- handler() {
- this.formValue = this.field.value
- },
- deep: true,
- immediate: true
- }
- // #endif
- },
- methods: {
- emitChangeEvt(val) {
- this.$emit('input', val)
- this.$emit('change', {
- index: this.index,
- field: this.field,
- value: val
- })
- },
- /**
- * 格式化默认值
- */
- formatDefaultValue() {
- const defaultValue = this.field.defaultValue
- switch (this.field.formType) {
- case 'select':
- return this.getSelectDefaultVal(defaultValue)
- case 'checkbox':
- return this.getSelectDefaultVal(defaultValue)
- case 'detail_table':
- return [defaultValue]
- }
- return defaultValue
- },
- /**
- * 获取选项类型的默认值
- * @param {Object} data
- */
- getSelectDefaultVal(data) {
- return data.map(o => {
- if (isObject(o)) return o
- const setting = this.field.setting
- if (setting.includes('其他') && !setting.includes(o)) {
- return {
- label: '其他',
- value: o
- }
- }
- return {
- label: o,
- value: o
- }
- })
- }
- }
- }
|