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.
 
 
 
 

283 lines
8.3 KiB

import axios from '@/utils/request'
import config from '@/common/config'
let base = config.getSysBasePath();
/***
* {
*
* }
*/
var cacheOptions={};
var cacheSeconds={};
var cacheOptionsBySecondCodeRows={};
var cacheCompanyDepts=null;
var cacheCompanyEmployees=null;
//默认只开放普通查询,所有查询,只要上传 分页参数 {currentPage:1,pageSize:10,total:0},后台都会自动按分页查询 其它 api用到再打开,没用到的api请注释掉,
//普通查询
export const listCode = params => { return axios.get(`${base}/sys/code/list`, { params: params }); };
//关键字模糊查询 {字段1:v1,字段2:v1,字段3:v1},字段驼峰命名,条件之间默认为or关系
export const listCodeKey = params => {
return axios.get(`${base}/sys/code/listKey`, { params: params });
};
/**
* 查询下拉选项目 参数为数组型参数 如 selectOptions( { fieldNames:['sex','age','student'],code:'all' } ),code为数据分类
* 返回结果为:
* res.data.data:{
* sex:[{codeName:男,codeValue:1,ifdefault:'1'},{codeName:女,codeValue:2,ifdefault:'0'}],
* age:[{codeName:1岁,codeValue:1,ifdefault:'1'},{codeName:2岁,codeValue:2,ifdefault:'0'},{codeName:3岁,codeValue:3,ifdefault:'0'}]
* }
*/
export const selectCacheOptions = params => {
let code=params.code;
let fieldNames=params.fieldNames;
if(!cacheOptions[code]){
return new Promise((resolve, reject) => {
axios.get(`${base}/sys/code/selectOptions`, { params:params }).then(res=>{
let options=res.data.data;
cacheOptions[code]=options;
resolve({
data: {data:options}
});
});
});
}else{
let codeOptions=cacheOptions[code];
var lostFieldNames=[];
var cacheHasOptions={};
fieldNames.forEach(item=>{
if(codeOptions[item]){
cacheHasOptions[item]=codeOptions[item];
}else{
lostFieldNames.push(item);
}
});
if(lostFieldNames.length>0){
return new Promise((resolve, reject) => {
axios.get(`${base}/sys/code/selectOptions`, { params:{code:code,fieldNames:lostFieldNames} }).then(res=>{
let options2=res.data.data;
lostFieldNames.forEach(item=>{
codeOptions[item]=options2[item];
cacheHasOptions[item]=options2[item];
cacheOptions[code]=codeOptions;
});
resolve( {
data: {data:cacheHasOptions}
});
});
});
}else{
return new Promise((resolve, reject) => {
resolve( {
data: {data:cacheHasOptions}
});
});
}
}
};
/**
* 查询下拉选项目 参数为数组型参数 如 selectOptionsBySecondCodeRows( {secondCodeRows:['secondCodeRow1','secondCodeRow2']} )
* 返回结果为:
* res.data.data:{
* secondCodeRow1:[{codeName:男,codeValue:1,ifdefault:'1'},{codeName:女,codeValue:2,ifdefault:'0'}],
* secondCodeRow1:[{codeName:1岁,codeValue:1,ifdefault:'1'},{codeName:2岁,codeValue:2,ifdefault:'0'},{codeName:3岁,codeValue:3,ifdefault:'0'}]
* }
*/
export const selectOptionsBySecondCodeRows = params => {
let secondCodeRows=params.secondCodeRows;
var lostSecondCodeRows=[];
var cacheHasOptions={};
secondCodeRows.forEach(item=>{
if(cacheOptionsBySecondCodeRows[item]){
cacheHasOptions[item]=cacheOptionsBySecondCodeRows[item];
}else{
lostSecondCodeRows.push(item);
}
});
if(lostSecondCodeRows.length>0){
return new Promise((resolve, reject) => {
axios.get(`${base}/sys/code/selectOptionsBySecondCodeRows`, { params:{secondCodeRows:lostSecondCodeRows }}).then(res=>{
let options2=res.data.data;
lostSecondCodeRows.forEach(item=>{
cacheOptionsBySecondCodeRows[item]=options2[item];
cacheHasOptions[item]=options2[item];
});
resolve( {
data: {data:cacheHasOptions}
});
});
});
}else{
return new Promise((resolve, reject) => {
resolve( {
data: {data:cacheHasOptions}
});
});
}
};
/**
* 查询下拉选项目 参数为数组型参数 如 selectOptions( { fieldNames:['sex','age','student'],code:'all' } ),code为数据分类
* 返回结果为:
* res.data.data:{
* sex:[{codeName:男,codeValue:1,ifdefault:'1'},{codeName:女,codeValue:2,ifdefault:'0'}],
* age:[{codeName:1岁,codeValue:1,ifdefault:'1'},{codeName:2岁,codeValue:2,ifdefault:'0'},{codeName:3岁,codeValue:3,ifdefault:'0'}]
* }
*/
export const selectOptions = params => {
return axios.get(`${base}/sys/code/selectOptions`, { params:params })
};
//获取代码对应的名称 用于数据反显 如 getCodeName(options.sex,'1');
export const getCodeName = (options,codeValue)=>{
if(!options)return codeValue;
let code=options.filter(i=>i.codeValue==codeValue);
if(code.length>0){
return code[0].codeName
}else{
return codeValue
}
};
/**
* 获取某个字段的默认值
* getDefaultValue(options.sex,'1');
*/
export const getDefaultValue = (fieldOptions,defaultValue) =>{
if(fieldOptions==null || fieldOptions.length==0){
return defaultValue;
}
let defaultV=defaultValue;
fieldOptions.forEach(i=>{
if(i.ifdefault=='1'){
defaultV=i.codeValue;
}
});
return defaultV;
};
/**
* 根据一级分类列表查询所有的二级分类
* @param codes 分类编码 列表 如['JCBM_TPL','SystemParas']
* @return 返回如下格式的map。secondCodeRow为主键,dtcodeId为编码,dtcodeName中文描述
* {
* JCBM_TPL:[{secondCodeRow:'xxxx',dtcodeId:1,dtcodeName:男},{secondCodeRow:'xxxx',dtcodeid:1,dtcodeName:男}],
* SystemParas:[{secondCodeRow:'xxxx',dtcodeId:3,dtcodeName:其它},{secondCodeRow:'xxxx',dtcodeid:2,dtcodeName:其它2}]
* }
*/
export const selectSeconds = params => { return axios.get(`${base}/sys/code/selectSeconds`, { params:params }); };
/**
* 根据一级分类列表查询所有的二级分类
* @param codes 分类编码 列表 如['JCBM_TPL','SystemParas']
* @return 返回如下格式的map。secondCodeRow为主键,dtcodeId为编码,dtcodeName中文描述
* {
* JCBM_TPL:[{secondCodeRow:'xxxx',dtcodeId:1,dtcodeName:男},{secondCodeRow:'xxxx',dtcodeid:1,dtcodeName:男}],
* SystemParas:[{secondCodeRow:'xxxx',dtcodeId:3,dtcodeName:其它},{secondCodeRow:'xxxx',dtcodeid:2,dtcodeName:其它2}]
* }
*/
export const selectCacheSeconds = params => {
let codes=params.codes;
let lostCodes=[];
codes.forEach(item=>{
if(!cacheSeconds[item]){
lostCodes.push(item);
}
});
if(lostCodes.length>0){
return new Promise((resolve, reject) => {
selectSeconds({codes:lostCodes}).then(res=>{
let seconds=res.data.data;
lostCodes.forEach(item=>{
cacheSeconds[item]=seconds[item];
});
let result={};
codes.forEach(item=>{
result[item]=cacheSeconds[item];
});
resolve( {
data: {data:result}
});
});
});
}else{
let result={};
codes.forEach(item=>{
result[item]=cacheSeconds[item];
});
return new Promise((resolve, reject) => {
resolve( {
data: {data:result}
});
});
}
};
// [{dpetid:'',displayDeptid:'',deptName:'',shortName:'',pdeptid:''},{dpetid:'',displayDeptid:'',deptName:'',shortName:'',pdeptid:''}]
export const getCompanyDepts = () => {
if(cacheCompanyDepts!=null && cacheCompanyDepts.length>=0){
return new Promise((resolve, reject) => {
resolve( {
data: {data:cacheCompanyDepts}
});
});
}
return axios.get(`${base}/sys/code/companyDepts`).then(res=>{
if(res.data.data==null){
cacheCompanyDepts=[];
}else{
cacheCompanyDepts=res.data.data;
}
return new Promise((resolve, reject) => {
resolve( {
data: {data:cacheCompanyDepts}
});
});
});
};
//[{userid:'',displayUserid:'',username:'',deptid:'',shortName:'',deptName:''},{userid:'',displayUserid:'',username:'',deptid:'',shortName:'',deptName:''}]
export const getCompanyEmployees = () => {
if(cacheCompanyEmployees!=null && cacheCompanyEmployees.length>=0){
return new Promise((resolve, reject) => {
resolve( {
data: {data:cacheCompanyEmployees}
});
});
}
return axios.get(`${base}/sys/code/companyEmployees`).then(res=>{
if(res.data.data==null){
cacheCompanyEmployees=[];
}else{
cacheCompanyEmployees=res.data.data;
}
return new Promise((resolve, reject) => {
resolve( {
data: {data:cacheCompanyEmployees}
});
});
});
};