gxd-vue-library
Version:
依赖与element Ui插件库,聚福宝福利PC端插件库
201 lines (175 loc) • 4.9 kB
Plain Text
'use strict';
/**
* @description Vuex - {{items.title}}
* @module @/store/{{model}}
* @author coder
*/
import {
{{each items.value}}
{{$value['fnName']}},
{{/each}}
} from '@/api/{{items.name}}';
const {isOpenNoResultKey} = require('./../../../settings');
/**
* @description types常量
* const
*/
import {
{{each items.value}}
{{$value['key']}},
{{/each}}
} from '@/store/types';
//设置请求拦截
{{set isCache = false}}
{{each items.value}}
{{if $value['state']}}
let {{$value['state']}}Flag = false;
{{set isCache = true}}
{{/if}}
{{/each}}
import {setVuexCache} from "@/utils/xd.base";
/**
* @description 状态保存对象
*/
const state = {
{{each items.value}}
{{if $value['state']}}
{{$value['state']}}: null,
{{/if}}
{{/each}}
};
/**
* @description 状态更新对象
*/
const mutations = {
{{each items.value}}
{{if $value['state']}}
[{{$value.key}}](state, payload) {
state.{{$value['state']}} = payload
},
{{/if}}
{{/each}}
};
/**
* @description 状态获取对象
*/
const getters = {
{{each items.value}}
{{if $value['state']}}
[{{$value.key}}](state) {
return state.{{$value['state']}}
},
{{/if}}
{{/each}}
};
/**
* @description 状态接受对象
*/
const actions = {
{{each items.value}}
{{set params = ', params'}}
{{set inParams = 'params'}}
{{set store = '{commit, state, getters, dispatch}'}}
{{set paramsData = $value.data }}
{{if $value.method === 'get'}}
{{set paramsData = $value.params }}
{{/if}}
{{if !$value.isParams}}
{{set params = '' }}
{{set inParams = ''}}
{{set paramsData = {} }}
{{/if}}
{{if !$value['state'] && !$value.isParams}}
{{set store = '' }}
{{/if}}
/**
* @description {{items.title}} - {{$value.title}}
{{if $value.isParams}}
* @param commit
* @param state
* @param getters
* @param dispatch
* @param params { Object }
{{each paramsData }}
* @param params.{{$index}} { {{@ $value[1]}} } {{$value[0]}} ({{$value[2]}}) {{if $value[3]}}默认值:{{$value[3]}}{{/if}}
{{/each}}
{{if $value.isCallback}}
* @param params.{{ $value.isCallback}} {Function} 回调函数 (必填)
{{/if}}
{{/if}}
* @returns { Promise|* }
**/
{{$value.fnName}}({{store}}{{params || fnParams }}) {
{{if params && $value.isCallback}}
/**判断是否有回调函数并保存**/
let callback;
if (typeof params.{{$value.isCallback}} === 'function') {
callback = new Function('return ' + params.{{$value.isCallback}}.toString())();;
delete params.{{$value.isCallback}}
}
{{/if}}
{{if $value['state']}}
//强制刷新
if(params && params['@update']) {
{{$value['state']}}Flag = false;
delete params['@update'];
}
//启动vuex缓存
if({{$value['state']}}Flag) {
return setVuexCache(state, '{{$value['state']}}')
}
//接口获取
{{$value['state']}}Flag = true;
{{/if}}
{{if $value.methodKey === 'delete' || $value.methodKey === 'get'}}
let toString = Object.prototype.toString;
if(toString.call(params) === '[object String]'
|| toString.call(params) === '[object Number]'
){
params = {id:params};
}
{{/if}}
return new Promise((resolve, reject) => {
{{$value.fnName}}({{inParams}})
.then(res => {
{{if $value.resultKey}}
res = (res.{{$value.resultKey}} && (res.code || res.msg)) ? res.{{$value.resultKey}} : res;
{{/if}}
{{if $value['isConsole']}}
console.log('{{$value.fnName}}',res);
{{/if}}
{{if params && $value.isCallback}}
/**执行回调函数**/
if (typeof callback === 'function') {
callback({commit, state, getters, dispatch,resolve,reject,result: res },()=>{
resolve(res)
});
}
{{else}}
{{if $value['state']}}
{{if $value['stateAppend']}}
let stateData = JSON.stringify(state["{{$value['state']}}"]).concat(res)
commit('{{$value.key}}', stateData)
{{else}}
commit('{{$value.key}}', res)
{{/if}}
{{/if}}
if(isOpenNoResultKey) res = {data: res};
resolve(res)
{{/if}}
})
.catch(error => {
console.error(error)
reject(error);
});
})
},
{{/each}}
};
export default {
namespaced: true,
state,
mutations,
actions,
getters
};