You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
7.1 KiB
205 lines
7.1 KiB
import { getInterfaceBoard,getApiDefinition } from "@/api/wms-auth"
|
|
import { zhApiColumnsLable,firstWordSizeChange } from '@/utils/index'
|
|
|
|
const state = {
|
|
enumList: [],//枚举
|
|
columZHList:null,//表头转义
|
|
dtoColumnTypes:[],//所有页面的dto类型
|
|
apiActions:[],//所有api的动作(增删改查等)
|
|
}
|
|
|
|
const mutations = {
|
|
// 设置枚举
|
|
SET_ENUM_LIST: (state, data) => {
|
|
state.enumList=data
|
|
},
|
|
// 设置表头转义
|
|
SET_COLUMZH_LIST: (state, data) => {
|
|
state.columZHList=data
|
|
},
|
|
// 所有页面的dto类型
|
|
SET_DTOCOLUMN_TYPES: (state, data) => {
|
|
state.dtoColumnTypes=data
|
|
},
|
|
// 所有api的动作(增删改查等)
|
|
SET_API_ACTIONS: (state, data) => {
|
|
state.apiActions=data
|
|
}
|
|
}
|
|
|
|
// 通过url做方法处理转换(S/C/U/G等)目前做了S查询/C新增/U编辑。如果有需要在丰富
|
|
export function initDtoTypeByUrl(url){
|
|
const _url_last = url.substring(url.lastIndexOf("/") + 1);
|
|
if(_url_last.toLowerCase() == 'get-list-page-by-filter'){
|
|
return "S"
|
|
}
|
|
else if(_url_last.toLowerCase() == 'create'){
|
|
return "C"
|
|
}
|
|
else if(_url_last.toLowerCase() == 'update'){
|
|
return "U"
|
|
}
|
|
else if(_url_last.toLowerCase() == 'delete'){
|
|
return "D"
|
|
}
|
|
else{
|
|
return url
|
|
}
|
|
}
|
|
|
|
// dto和枚举转义
|
|
export function initDtoTypesAndEnums(res,typeName,apiName) {
|
|
if(!res.types[typeName])return
|
|
// 通过returnValue.type 在 res.types 中获取全部的dto
|
|
let _dtos = res.types[typeName].properties
|
|
_dtos.forEach(d=>{
|
|
// 如果是枚举做处理(目前枚举只根据Enums做处理,todo:是否需要其他处理)
|
|
if(d.type.indexOf('Enums') >= 0){
|
|
d.apiBaseType = 'enums'
|
|
d.isEnums = true
|
|
// 有?的话去掉?
|
|
let _lastLength = d.type.lastIndexOf('?') >= 0 ? 1 : 0
|
|
let enums_type = d.type.substring(0,d.type.length - _lastLength)
|
|
let _lastEnumName = enums_type.slice(enums_type.lastIndexOf('.') + 1)
|
|
// 通过type包含Enums的全字段-'?'匹配res.types中的值
|
|
let enums_list = res.types[enums_type]
|
|
if(enums_list){
|
|
d.enums_list = []
|
|
enums_list.enumValues.forEach((e,key)=>{
|
|
let _zhName = _lastEnumName + '.' + e
|
|
d.enums_list.push({
|
|
value:e,
|
|
label:state.columZHList[_zhName] || enums_list.enumNames[key],//反查翻译接口中有没有对应的数据(enum名+'.值'),没有的话显示当前enumNames的值
|
|
})
|
|
})
|
|
}
|
|
}else if(d.typeSimple.indexOf('boolean') >= 0){
|
|
d.apiBaseType = 'boolean'
|
|
d.enums_list = [{
|
|
value: true,
|
|
label: '是'
|
|
},{
|
|
value: false,
|
|
label: '否'
|
|
}]
|
|
}else{
|
|
if(d.typeSimple == 'number' || d.typeSimple == 'number?'){
|
|
d.apiBaseType='number'
|
|
}else{
|
|
let _end_index = d.type.lastIndexOf('?') >= 0 ? d.type.lastIndexOf('?') : d.type.length
|
|
d.apiBaseType = d.type.substring(d.type.lastIndexOf('.') + 1, _end_index).toLowerCase()
|
|
}
|
|
if(d.type.indexOf('Guid') >= 0){
|
|
d.apiBaseType='string'
|
|
}
|
|
}
|
|
d.baseApiName = apiName + d.name
|
|
d.label = zhApiColumnsLable(apiName + d.name) || d.name
|
|
d.prop = firstWordSizeChange(d.name)
|
|
})
|
|
return _dtos
|
|
}
|
|
|
|
// DTO列类型转义
|
|
export function initDtoColumnTypes(res,commit) {
|
|
let _actionsObj = {}// 所有actions处理暂存数据
|
|
// modules>app>controller>这里是所有的接口
|
|
let _controller = res.modules.app.controllers
|
|
let _allData = {}
|
|
for(let item in _controller){
|
|
let _com = 'AppService'
|
|
// 获取简单的api(路由,如:IncomingData)
|
|
let _api = item.substring(item.lastIndexOf('.') + 1,item.length - _com.length)
|
|
// 所有actions处理
|
|
_actionsObj[_api] = _controller[item].actions;
|
|
// dto处理
|
|
let inner_item = {
|
|
baseApi:_api,
|
|
dtoList:[],
|
|
dtoName:item.substring(0,item.length - _com.length),
|
|
columnsType:null
|
|
}
|
|
let _item = {
|
|
S:Object.assign({},inner_item,{dtoType: 'S'}),
|
|
C:Object.assign({},inner_item,{dtoType: 'C'}),
|
|
U:Object.assign({},inner_item,{dtoType: 'U'}),
|
|
D:Object.assign({},inner_item,{dtoType: 'D'}),
|
|
}
|
|
for(let ac in _controller[item].actions){
|
|
let _actions = _controller[item].actions[ac]
|
|
// actions下通过URL匹配 做特殊处理
|
|
// 查询处理
|
|
let _type = _actions.returnValue.type
|
|
if(initDtoTypeByUrl(_actions.url) == 'S'){
|
|
_item.S.actionsUrl = _actions.url
|
|
let _type_value = _type.substring(_type.indexOf('<') + 1,_type.indexOf('>'))
|
|
_item.S.columnsType=_type_value
|
|
_item.S.dtoList = initDtoTypesAndEnums(res,_type_value,_api)
|
|
}
|
|
// 新增处理
|
|
if( initDtoTypeByUrl(_actions.url) == 'C' ){
|
|
_item.C.actionsUrl = _actions.url
|
|
_item.C.columnsType = _type
|
|
_item.C.dtoList = initDtoTypesAndEnums(res,_type,_api)
|
|
}
|
|
// 编辑处理
|
|
if( initDtoTypeByUrl(_actions.url) == 'U' ){
|
|
_item.U.actionsUrl = _actions.url
|
|
_item.U.columnsType = _type
|
|
_item.U.dtoList = initDtoTypesAndEnums(res,_type,_api)
|
|
|
|
}
|
|
// 删除处理
|
|
if( initDtoTypeByUrl(_actions.url) == 'D' ){
|
|
_item.D.actionsUrl = _actions.url
|
|
_item.U.columnsType = _type
|
|
}
|
|
}
|
|
_allData[_api] = _item
|
|
}
|
|
// 设置所有actions
|
|
commit('SET_API_ACTIONS', _actionsObj)
|
|
return _allData
|
|
}
|
|
|
|
const actions = {
|
|
// 获取枚举
|
|
getDefinitionConfig({ commit }) {
|
|
return new Promise(resolve => {
|
|
getApiDefinition().then(res=>{
|
|
commit('SET_ENUM_LIST', res.types)
|
|
commit('SET_DTOCOLUMN_TYPES', initDtoColumnTypes(res,commit))
|
|
resolve(res)
|
|
})
|
|
})
|
|
},
|
|
// 获取表头转义
|
|
getColumZHList({ commit },errCallback) {
|
|
return new Promise((resolve,reject) => {
|
|
getInterfaceBoard()
|
|
.then(res=>{
|
|
let _zh = res.resources[localStorage.getItem('appClientScope')].texts;
|
|
commit('SET_COLUMZH_LIST', _zh)
|
|
resolve(res)
|
|
})
|
|
.catch(err=>{
|
|
if(errCallback)errCallback()
|
|
reject(err)
|
|
})
|
|
})
|
|
},
|
|
// 重置配置信息
|
|
resetDefinition({ commit }) {
|
|
commit('SET_ENUM_LIST', [])
|
|
commit('SET_COLUMZH_LIST', null)
|
|
commit('SET_DTOCOLUMN_TYPES', [])
|
|
commit('SET_API_ACTIONS', [])
|
|
}
|
|
}
|
|
|
|
export default {
|
|
namespaced: true,
|
|
state,
|
|
mutations,
|
|
actions
|
|
}
|