提交 76bb9a00 编写于 作者: KK's avatar KK

代码表服务类调整

上级 5456516c
import { Store } from 'vuex'; import store from '@/store';
import { EntityService } from './entity-service-base'; import { EntityService } from './entity-service-base';
/** /**
* 动态代码表服务类 * 动态代码表服务类
...@@ -8,17 +8,17 @@ import { EntityService } from './entity-service-base'; ...@@ -8,17 +8,17 @@ import { EntityService } from './entity-service-base';
*/ */
export class CodeListService { export class CodeListService {
/** /**
* Vue 状态管理器 * Vue 状态管理器
* *
* @private * @private
* @type {(any | null)} * @type {(any | null)}
* @memberof CodeListService * @memberof CodeListService
*/ */
private $store: Store<any> | null = null; private $store: any;
constructor(opts: any = {}) { constructor(opts: any = {}) {
this.$store = opts.$store; this.$store = store;
} }
/** /**
...@@ -27,18 +27,11 @@ export class CodeListService { ...@@ -27,18 +27,11 @@ export class CodeListService {
* @returns {(any | null)} * @returns {(any | null)}
* @memberof CodeListService * @memberof CodeListService
*/ */
public getStore(): Store<any> | null { public getStore(): any {
return this.$store; return this.$store;
} }
/**
* 数据服务基类
*
* @type {Minorentity}
* @memberof CodeListService
*/
public entityService:EntityService = new EntityService();
/** /**
* 动态代码表缓存(加载中) * 动态代码表缓存(加载中)
* *
...@@ -55,6 +48,13 @@ export class CodeListService { ...@@ -55,6 +48,13 @@ export class CodeListService {
*/ */
public static codelistCached:Map<string,any> = new Map(); public static codelistCached:Map<string,any> = new Map();
/**
* 数据服务基类
*
* @type {Minorentity}
* @memberof CodeListService
*/
public entityService:EntityService = new EntityService();
/** /**
* 获取代码表服务 * 获取代码表服务
...@@ -68,6 +68,23 @@ export class CodeListService { ...@@ -68,6 +68,23 @@ export class CodeListService {
return window.codeListServiceConstructor.getService(name); return window.codeListServiceConstructor.getService(name);
} }
/**
* 获取静态代码表
*
* @param {string} tag 代码表标识
* @returns {Promise<any[]>}
* @memberof CodeListService
*/
public getStaticItems(tag: string):Promise<any[]>{
return new Promise((resolve:any,reject:any) =>{
const codelist = this.$store.getters.getCodeList(tag);
if (codelist) {
let items: Array<any> = [...JSON.parse(JSON.stringify(codelist.items))];
resolve(items);
}
})
}
/** /**
* 获取预定义代码表 * 获取预定义代码表
* *
...@@ -130,49 +147,36 @@ export class CodeListService { ...@@ -130,49 +147,36 @@ export class CodeListService {
let cacheTimeout:any = codelist.cacheTimeout; let cacheTimeout:any = codelist.cacheTimeout;
// 启用缓存 // 启用缓存
if(isEnableCache){ if(isEnableCache){
const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{
promise.then((result:any) =>{
if(result.length > 0){
CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result});
CodeListService.codelistCache.delete(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`);
return resolve(result);
}else{
return resolve([]);
}
}).catch((result:any) =>{
return reject(result);
})
}
// 加载完成,从本地缓存获取 // 加载完成,从本地缓存获取
if(CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){ if(CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){
let items:any = CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`).items; let items:any = CodeListService.codelistCached.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`).items;
if(items.length >0){ if(items.length >0){
if(cacheTimeout !== -1){ if(new Date().getTime() <= codelist.getExpirationTime()){
if(new Date().getTime() > codelist.expirationTime){ return resolve(items);
codelist.getItems(context,data,isloading).then((result:any) =>{
CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result});
codelist.expirationTime = new Date().getTime() + cacheTimeout;
resolve(result);
}).catch((error:any) =>{
Promise.reject([]);
})
}else{
return resolve(items);
}
}else{
return resolve(items);
} }
} }
} }
if (codelist) { if (codelist) {
const callback:Function = (context:any ={},data:any ={},tag:string,promise:Promise<any>) =>{
promise.then((result:any) =>{
if(result.length > 0){
CodeListService.codelistCached.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,{items:result});
return resolve(result);
}else{
return resolve([]);
}
}).catch((result:any) =>{
return reject(result);
})
}
// 加载中,UI又需要数据,解决连续加载同一代码表问题 // 加载中,UI又需要数据,解决连续加载同一代码表问题
if(CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){ if(CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)){
callback(context,data,tag,CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`)); callback(context,data,tag,CodeListService.codelistCache.get(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`));
}else{ }else{
let result:Promise<any> = codelist.getItems(context,data,isloading); let result:Promise<any> = codelist.getItems(context,data,isloading);
CodeListService.codelistCache.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,result); CodeListService.codelistCache.set(`${JSON.stringify(context)}-${JSON.stringify(data)}-${tag}`,result);
if(cacheTimeout !== -1){ codelist.setExpirationTime(new Date().getTime() + cacheTimeout);
codelist.expirationTime = new Date().getTime() + cacheTimeout;
}
callback(context,data,tag,result); callback(context,data,tag,result);
} }
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册