flow.js 7.07 KB
import flow from '@/api/flow.js'
import utils from '@/hotent-ui-util.js'
const state = {
  defConfigData: {
    initData: {},
    nodeSetData: {},
    curEditNode: {}
  },
  copyDefConfigData: {},
  nodeBranches: {},
  signConfigs: {},
  mesageType: '',
  formPublic:null,//栏目的使用平台
}

const getters = {
  getFormPublic: function (state) {
    return state.formPublic
  },
}

const actions = {
  // 根据流出定义id和父流程key获取流程配置信息
  getDefSetting({commit, state}, param) {
    return new Promise((resolve, reject) => {
      commit('clearCacheData')
      flow.getDefSetting(param, resp => {
        commit('setDefSettingData', resp.data)
        resolve(resp.data)
      })
    })
  },

  //更新vuex里面的配置数据{path:value}
  updateConfig({commit, state}, param) {
    commit('updateConfig', param)
  },
  saveDefSetting({commit, state}, data) {
    commit('updateConfig', param)
  },
  //流程图
  getBpmImage({commit, state}, data) {
    return new Promise((resolve, reject) => {
      flow.instanceFlowImage(data, response => {
        let defId = response.data.instanceId ? '' : response.data.defId
        flow.getBpmImage('', response.data.instanceId, defId, res => {
          let data = {rows: response.data, img: res.data}
          resolve(data)
        })
      })
    })
  },
  //获取审批意见
  getNodeopinions({commit, state}, pagination) {
    return new Promise((resolve, reject) => {
      flow.getNodeopinions(pagination, response => {
        resolve(response.data)
      })
    })
  },
  //获取系统配置的通知类型
  getMessageType({commit, state}) {
    return new Promise((resolve, reject) => {
      if (state.mesageType) {
        resolve(state.mesageType)
      } else {
        flow.getMessageType(response => {
          commit('setMessageType', response.data)
          resolve(response.data)
        })
      }
    })
  },
  //获取节点分支规则
  getCurSelectBranches({commit, state}) {
    return new Promise((resolve, reject) => {
      let curNode = state.defConfigData.curEditNode
      if (
        !curNode.nodeId ||
        (curNode.nodeType != 'EXCLUSIVEGATEWAY' &&
          curNode.nodeType != 'INCLUSIVEGATEWAY')
      ) {
        reject()
      } else if (curNode && state.nodeBranches[curNode.nodeId]) {
        resolve(state.nodeBranches[curNode.nodeId])
      } else if (curNode && curNode.nodeId) {
        flow.getNodeBranches(
          {nodeId: curNode.nodeId, defId: curNode.defId},
          response => {
            commit('setNodeBranches', {
              nodeId: curNode.nodeId,
              data: response.data
            })
            resolve(response.data)
          }
        )
      }
    })
  },
  //获取会签配置
  getSignConfig({commit, state}) {
    return new Promise((resolve, reject) => {
      let curNode = state.defConfigData.curEditNode
      if (!curNode.nodeId || curNode.nodeType != 'SIGNTASK') {
        reject()
      } else if (curNode && state.signConfigs[curNode.nodeId]) {
        resolve(state.signConfigs[curNode.nodeId])
      } else {
        flow.getSignConfig(
          {nodeId: curNode.nodeId, defId: curNode.defId},
          response => {
            commit('setSignConfigs', {
              nodeId: curNode.nodeId,
              data: response.data
            })
            resolve(response.data)
          }
        )
      }
    })
  },
  updateDefRev({commit, state}) {
    flow.getBpmdefByDefId(
      state.defConfigData.initData.bpmDefinition.defId,
      response => {
        commit('updateBpmdef', response)
      }
    )
  },
  updateFormPublic({commit, state},param) {
    commit('setFormPublic',param)
  }
}

const mutations = {
  updateBpmdef(state, param) {
    state.defConfigData.initData.bpmDefinition = param
  },
  setSignConfigs(state, param) {
    state.signConfigs[param.nodeId] = param.data
  },
  setNodeBranches(state, param) {
    state.nodeBranches[param.nodeId] = param.data
  },
  clearCacheData(state) {
    state.defConfigData = {initData: {}, nodeSetData: {}, curEditNode: {}}
    state.nodeBranches = {}
    state.signConfigs = {}
  },
  setDefSettingData(state, data) {
    if (!data.initData.bpmDefLayout) {
      state.defConfigData = data
      state.copyDefConfigData = JSON.parse(JSON.stringify(state.defConfigData))
      return
    }
    for (
      var i = 0, layout;
      (layout = data.initData.bpmDefLayout.listLayout[i++]);

    ) {
      layout.nodeStyle = {
        position: 'absolute',
        cursor: 'hand',
        'text-align': 'center',
        left: layout.x + 'px',
        top: layout.y + 'px',
        width: layout.width + 'px',
        height: layout.height + 'px'
      }
    }

    if (!data.nodeSetData.bpmDefSetting.globalForm)
      data.nodeSetData.bpmDefSetting.globalForm = {
        type: 'INNER',
        formType: 'pc',
        name: '',
        formValue: '',
        formExtraConf: '',
        helpFile: ''
      }
    if (!data.nodeSetData.bpmDefSetting.globalMobileForm)
      data.nodeSetData.bpmDefSetting.globalMobileForm = {
        type: 'INNER',
        formType: 'mobile',
        name: '',
        formValue: '',
        helpFile: ''
      }
    if (!data.nodeSetData.bpmDefSetting.instForm)
      data.nodeSetData.bpmDefSetting.instForm = {
        type: 'INNER',
        formType: 'pc',
        name: '',
        formValue: ''
      }
    if (!data.nodeSetData.bpmDefSetting.instMobileForm)
      data.nodeSetData.bpmDefSetting.instMobileForm = {
        type: 'INNER',
        formType: 'mobile',
        name: '',
        formValue: ''
      }
    state.defConfigData.initData = data.initData
    state.defConfigData.nodeSetData = data.nodeSetData
    //获取通知类型
    data.nodeSetData.notifyType = []
    for (let key in data.initData.messageTypelist) {
      let obj = {key: key, value: data.initData.messageTypelist[key]}
      data.nodeSetData.notifyType.push(obj)
    }
    //屏蔽一些多余的按钮配置
    for (let key in data.nodeSetData.nodeBtnMap) {
      let item = data.nodeSetData.nodeBtnMap[key]
      for (let i = item.length - 1; i >= 0; i--) {
        if (
          item[i].alias == 'commu' ||
          item[i].alias == 'startCommu' ||
          item[i].alias == 'instanceTrans' ||
          item[i].alias == 'backToStart'
        ) {
          item.splice(i, 1)
        }
      }
    }
    state.copyDefConfigData = JSON.parse(JSON.stringify(state.defConfigData))
  },
  updateConfig(state, param) {
    if (param && param.constructor == Object) {
      for (let key in param) {
        if (
          key.indexOf('nodeBranches') > -1 ||
          key.indexOf('signConfigs') > -1
        ) {
          utils.setValueByPath(
            state,
            key,
            JSON.parse(JSON.stringify(param[key]))
          )
        } else {
          utils.setValueByPath(
            state,
            'defConfigData.' + key,
            JSON.parse(JSON.stringify(param[key]))
          )
        }
      }
    }
  },
  setMessageType(state, param) {
    state.mesageType = param
  },
  setFormPublic(state, param) {
    state.formPublic = param
  },
}

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