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 }