/**
 * long description for the file
 *
 * @summary 数据字典
 * @author wu <308822989@qq.com>
 *
 * Created at     : 2018-08-17 10:13:51
 * Last modified  : 2018-08-27 14:52:42
 */

// 字典类型 类型编号 是否可编辑 字典名称及编码
// 机构类别 CATE 否 "1-机构
// 0-部门"
// 机构级别 RANK 否 "1-集团总部
// 2-分公司"
// 国家或地区 COUNTRY 是 "CN-中国
// HK-中国香港
// USA-美国
// JP-日本"
// 城市 CITYCODE 否 "BeiJing-北京
// ShangHai-上海
// Changsha-长沙"
// 是/否 Y_N 否 "0-否
// 1-是"
// 性别 sex 否 "1-男
// 2-女"
// 在线状态 online 否 "1-在线
// 0-离线"
// 状态 status 否 "1-启用
// 0-停用(删除)"
// 职称 TITLE  1-总工程师 2-高级工程师 3-技工 4-经济师 5-会计师
// 文化程度 DEGREE  1-博士 2-研究生 3-本科 4-专科 5-中专 6-高中 7-初中
// 专业 MAJOR  1-计算机 2-材料 3-化工 3-机械 4-自动化
// 离职状态 LEAVE_STATUS  1-离职 2-在职
// 岗位类型 POST_TYPE  "1-主岗位
// 2-兼岗位"
// 岗位类别 POST_CATE  "1-系统管理岗
// 2-审核岗
// 3-负责人
// 4-操作岗"
// 岗位级别 RANK  同机构级别
// 角色类型 ROLE_TYPE  1-功能角色 2-数据角色
// 角色级别 RANK  同机构级别
// 资源类型 RESOURCE_TYPE  1-菜单 按钮 2-数据集权限
// 菜单类型 MENU_TYPE  1-菜单 2-按钮
// 窗口打开方式 OPEN_MODE  0 主窗口打开 1 弹出窗口打开
// 表操作类型 OPER_TYPE  1-浏览 2-读写 3-删除,有修改删除的权限就有浏览权限。
// 操作行为 OPER_ACTION  0-允许访问 1-拒绝访问
// 约束关系 RESTRICT_TYPE  and：与 or 或
// 数据授权范围 REGION  1 当前用户 2 当前机构 3 当前机构（含下级） 4 当前机构（含上级） 5 当前角色 6 实际值
// 表类型 TABLE_TYPE  1-系统表 2-业务表
// 加载方式 LOAD_METHOD  "Insert:新增
// UpdAdd：更新新增
// Refresh：完全更新"
// 数据存储状态 DATA_STATUS  数据存储状态：new -只保存最新数据 history-保存历史数据 onlytable-历史数据保存历史表
// 控件类型 ELE_TYPE  textEditor:文本输入 combox 下拉框 checkBox 复选框 radioBox 单选框 select 下拉列表
// 字段类型   FIELD_TYPE  VARCHAR:字符型 INTEGER 整型 DATE 日期型 DECIMAL 小数型

import Vue from 'vue'
import Vuex from 'vuex'
import axios from '@/config/axios.js';
import { proPath } from '@/config/config.js';

Vue.use(Vuex);
const state = {
  //  字典列表
  dict: {}
};

const getters = {
}

const mutations = {
  //  更新
  dict (state, dict) {
    state.dict = dict;
  }
}

const actions = {
  //  取所有字典列表
  list ({ commit, state }, form) {
    !form && (form = {});
    form.pageSize = '1000000';
    let res = axios.get(proPath + 'v1/sysdicts/', {
      params: form
    });
    //
    res.then((res) => {
      let obj = {};
      if (res.code === '0') {
        //  整理数据
        for (let item of res.data.list) {
          if (item.pDictId === '0') {
            continue;
          }
          if (!(item.dictType in obj)) {
            obj[item.dictType] = [];
          }
          item.label = item.dictName;
          item.value = item.dictCode;
          obj[item.dictType].push(item);
        }
      }
      commit('dict', obj);
    });
    return res;
  },
  //  取类型字典
  type ({ commit, state }, dictType) {
    let res = axios.get(proPath + 'v1/sysdicts/dicttype/' + dictType);
    return res;
  }
}

export default new Vuex.Store({
  state,
  actions,
  getters,
  mutations
});
