JSelectBizQueryItem.js 1.37 KB
export default {
  name: 'JSelectBizQueryItem',
  props: {
    queryParam: Object,
    queryConfig: Array,
  },
  data() {
    return {}
  },
  methods: {
    renderQueryItem() {
      return this.queryConfig.map(queryItem => {
        const {key, label, placeholder, dictCode, props, customRender} = queryItem
        const options = {
          props: {},
          on: {
            pressEnter: () => this.$emit('pressEnter'),
          }
        }
        if (props != null) {
          Object.assign(options.props, props)
        }
        if (placeholder === undefined) {
          if (dictCode) {
            options.props['placeholder'] = `${label}`
          } else {
            options.props['placeholder'] = `${label}`
          }
        } else {
          options.props['placeholder'] = placeholder
        }

        let input
        if (typeof customRender === 'function') {
          input = customRender.call(this, {key, options, queryParam: this.queryParam})
        } else if (dictCode) {
          input =
            <j-dict-select-tag {...options} vModel={this.queryParam[key]} dictCode={dictCode} style="width:180px;"/>
        } else {
          input = <a-input {...options} vModel={this.queryParam[key]}/>
        }
        return <a-form-item key={key} label={label}>{input}</a-form-item>
      })
    },
  },
  render() {
    return <span>{this.renderQueryItem()}</span>
  },
}