formStore.js 4.41 KB
import Vue from 'vue'
import form from '@/api/form.js'
import {toCamel} from '@/utils/index.js'

const state = {
  // 自定义对话框数据
  customDialogData: {},
  // 关联查询数据
  customQueryData: {},
  // 表单列表配置页面 下拉显示字段存储
  formListCommonVar: [],
  // 表单设计页面 当前选中的控件
  selectWidget: {options: {validateType: ''}}
}
const getters = {
  hasCustomQueryDataWithAlias: state => alias => {
    return state.customQueryData.hasOwnProperty(alias)
  },
  hasCustomDialogDataWithAlias: state => alias => {
    return state.customDialogData.hasOwnProperty(alias)
  },
  displayFormListCommonVar: state => {
    let data = JSON.parse(JSON.stringify(state.formListCommonVar))
    const disableUpdateFiled = ['form_data_rev_','id_','ref_id_'] 
    data.forEach((item, index) => {
      item.fields.forEach(subItem => {
        if((subItem.name && disableUpdateFiled.indexOf(subItem.name.toLowerCase()) > -1) ||
           (subItem.oldTableField && disableUpdateFiled.indexOf(subItem.oldTableField.toLowerCase().replace('f_','')) > -1) ){
          subItem.disableUpdate = true
        }
        // 主表非流程字段拼接参数
        if (index === 0) {
          subItem.boName = subItem.name
          if (!subItem.flowField) {
            let subItemName =
              subItem.tableName + (subItem.oldTableField || subItem.name)
            subItem.name = subItemName.replace(/_/g, '').toLowerCase()
          }
        } else {
          // 关联表参数修改
          subItem.boName = subItem.name
          subItem.name = (item.name + subItem.name)
            .replace(/_/g, '')
            .toLowerCase()
        }
      })
    })
    return data
  },
  conditionFormListCommonVar: state => {
    let data = JSON.parse(JSON.stringify(state.formListCommonVar))
    data.forEach((item, index) => {
      // 主表需要加t前缀,而且主表非id_、ref_id时,主表字段再加前缀F_ 去区分
      if (item.fields && item.fields.length) {
        item.fields.forEach(subItem => {
          if (index === 0) {
            subItem.queryPre =
              item.name.toLowerCase().startsWith('w_') &&
              subItem.name.toLowerCase() != 'id_' &&
              subItem.name.toLowerCase() != 'ref_id_'
                ? 't.F_'
                : 't.'
          } else {
            subItem.queryPre = item.name + '.'
          }
        })
      }
    })
    return data
  }
}

const actions = {
  getCustomQuery({commit, state, getters}, alias) {
    if (getters.hasCustomQueryDataWithAlias(alias)) {
      return
    }
    form.getByAliasCq(alias, res => {
      commit('addCustomQueryData', res)
    })
  },

  clearCustomQuery({commit, state, getters}, alias) {
    if (!getters.hasCustomQueryDataWithAlias(alias)) {
      return
    }
    if (alias) {
      commit('clearCustomQueryData', alias)
    }
  },

  getCustomDialog({commit, state, getters}, alias) {
    if (getters.hasCustomDialogDataWithAlias(alias)) {
      return
    }
    form.getDialogByAlias(alias, res => {
      commit('addCustomDialogData', res)
    })
  },

  clearCustomDialog({commit, state, getters}, alias) {
    if (!getters.hasCustomDialogDataWithAlias(alias)) {
      return
    }
    if (alias) {
      commit('clearCustomDialogData', alias)
    }
  },
  setFormListCommonVar({commit}, params) {
    form.joinCheckSql(params).then(({data}) => {
      if (data && data.value) {
        commit('setFormListCommonVar', data.value)
      }
    })
  }
}

const mutations = {
  addCustomQueryData(state, data) {
    if (data && data.alias) {
      Vue.set(state.customQueryData, data.alias, data)
    }
  },
  clearCustomQueryData(state, alias) {
    Vue.delete(state.customQueryData, alias)
  },
  addCustomDialogData(state, data) {
    if (data && data.alias) {
      Vue.set(state.customDialogData, data.alias, data)
    }
  },
  clearCustomDialogData(state, alias) {
    Vue.delete(state.customDialogData, alias)
  },
  setFormListCommonVar(state, data) {
    data.forEach(item => {
      if (item.fields && item.fields.length) {
        item.fields.forEach(subItem => {
          subItem.tableName = subItem.tableName || item.name
          subItem.oldTableField = subItem.oldTableField
          subItem.format = subItem.format
        })
      }
    })
    state.formListCommonVar = data
  },
  setSelectWidget(state, data) {
    state.selectWidget = data
  }
}

export default {
  namespaced: true,
  state,
  getters,
  actions,
  mutations
}