import axios from 'axios'
import _ from 'lodash'
export default {
  data () {
    return {
      config: {
        'url': '',
        'ref': {
          const_id: '0',
          table_name: '',
          columns: '',
          remote_condition: '',
          displayfield: '',
          writebackfield: []
        },
        dyncQueryParms: {},
        multiple: false,
        disabled: false,
        size: 'mini',
        clearable: true,
        title: '',
        placeholder: '',
        value: '',
        label: '',
        is_computed: false
      }
    }
  },
  methods: {
    async requestMethod (config, value) {
      const { ref, dyncQueryParms } = config || {}
      const { remote_condition } = ref || {}
      let real_url = this.initRealUrl(config)
      if (!real_url) return []
      let remote_condition_ = remote_condition.trim()
      let parms = ''
      const dyncQueryParms_ = _.cloneDeep(dyncQueryParms || {})
      if (value) {
        dyncQueryParms_[remote_condition_] = value.trim()
      }
      for (const key in dyncQueryParms_) {
        if (key === remote_condition) {
          parms += `&${key}=${encodeURIComponent('%' + dyncQueryParms_[key] + '%')}`
        } else {
          parms += `&${key}=${encodeURIComponent(dyncQueryParms_[key])}`
        }
      }
      if (real_url.includes('?')) {
        real_url += parms
      } else {
        real_url += '?' + parms
      }
      const type = typeof value
      if (type === 'undefined' && remote_condition_) {// 远程搜索的时候
        return []
      } else {
        const res = await axios.get(real_url)
        const options = Array.isArray(res.data)
          ? this.tansLate(res.data, config)
          : this.translate_json(res.data)
        return options
      }

    },
    tansLate (data, config) {
      const arr = data
      const list = []
      const { value, label } = config
      arr.forEach(element => {
        const parm = {}
        for (const pro in element) {
          if (pro === value && value === label) {
            parm.value = element[pro]
            parm.label = element[pro]
          } else if (pro === value) {
            parm.value = element[pro]
          } else if (pro === label) {
            parm.label = element[label]
          }
          parm[pro] = element[pro]
        }
        list.push(parm)
      })

      return list
    },
    initRealUrl (config) {
      const { url, ref, proxyTag } = config
      const { const_id, table_name, columns, remote_condition } = ref
      const url_dynamic = `${proxyTag}/ref/table`
      const url_static = `${proxyTag}/ref/items`
      if (remote_condition) {
        if (table_name) {
          return `${url_dynamic}/${table_name}/${columns}/`
        } else {
          return `${url}`
        }
      } else {
        if (const_id && Number(const_id) !== 0) {
          return `${url_static}/${const_id}/`
        } else if (table_name) {
          return `${url_dynamic}/${table_name}/${columns}/`
        } else {
          return url
        }
      }
    },
    uploadFileFun(appCode,formData) {
      return axios.post(`fileresourceAPI/file/${appCode}/`, formData)
    }
  },
}