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.

282 lines
8.3 KiB

5 years ago
  1. import axios from 'axios';
  2. import config from '../../common/config.js';
  3. let base = "/"+config.getContextName();
  4. /***
  5. * {
  6. *
  7. * }
  8. */
  9. var cacheOptions={};
  10. var cacheSeconds={};
  11. var cacheOptionsBySecondCodeRows={};
  12. var cacheCompanyDepts=null;
  13. var cacheCompanyEmployees=null;
  14. //默认只开放普通查询,所有查询,只要上传 分页参数 {currentPage:1,pageSize:10,total:0},后台都会自动按分页查询 其它 api用到再打开,没用到的api请注释掉,
  15. //普通查询
  16. export const listCode = params => { return axios.get(`${base}/sys/code/list`, { params: params }); };
  17. //关键字模糊查询 {字段1:v1,字段2:v1,字段3:v1},字段驼峰命名,条件之间默认为or关系
  18. export const listCodeKey = params => {
  19. return axios.get(`${base}/sys/code/listKey`, { params: params });
  20. };
  21. /**
  22. * 查询下拉选项目 参数为数组型参数 selectOptions( { fieldNames:['sex','age','student'],code:'all' } ),code为数据分类
  23. * 返回结果为
  24. * res.data.data:{
  25. * sex:[{codeName:,codeValue:1,ifdefault:'1'},{codeName:,codeValue:2,ifdefault:'0'}],
  26. * age:[{codeName:1,codeValue:1,ifdefault:'1'},{codeName:2,codeValue:2,ifdefault:'0'},{codeName:3,codeValue:3,ifdefault:'0'}]
  27. * }
  28. */
  29. export const selectCacheOptions = params => {
  30. let code=params.code;
  31. let fieldNames=params.fieldNames;
  32. if(!cacheOptions[code]){
  33. return new Promise((resolve, reject) => {
  34. axios.get(`${base}/sys/code/selectOptions`, { params:params }).then(res=>{
  35. let options=res.data.data;
  36. cacheOptions[code]=options;
  37. resolve({
  38. data: {data:options}
  39. });
  40. });
  41. });
  42. }else{
  43. let codeOptions=cacheOptions[code];
  44. var lostFieldNames=[];
  45. var cacheHasOptions={};
  46. fieldNames.forEach(item=>{
  47. if(codeOptions[item]){
  48. cacheHasOptions[item]=codeOptions[item];
  49. }else{
  50. lostFieldNames.push(item);
  51. }
  52. });
  53. if(lostFieldNames.length>0){
  54. return new Promise((resolve, reject) => {
  55. axios.get(`${base}/sys/code/selectOptions`, { params:{code:code,fieldNames:lostFieldNames} }).then(res=>{
  56. let options2=res.data.data;
  57. lostFieldNames.forEach(item=>{
  58. codeOptions[item]=options2[item];
  59. cacheHasOptions[item]=options2[item];
  60. cacheOptions[code]=codeOptions;
  61. });
  62. resolve( {
  63. data: {data:cacheHasOptions}
  64. });
  65. });
  66. });
  67. }else{
  68. return new Promise((resolve, reject) => {
  69. resolve( {
  70. data: {data:cacheHasOptions}
  71. });
  72. });
  73. }
  74. }
  75. };
  76. /**
  77. * 查询下拉选项目 参数为数组型参数 selectOptionsBySecondCodeRows( {secondCodeRows:['secondCodeRow1','secondCodeRow2']} )
  78. * 返回结果为
  79. * res.data.data:{
  80. * secondCodeRow1:[{codeName:,codeValue:1,ifdefault:'1'},{codeName:,codeValue:2,ifdefault:'0'}],
  81. * secondCodeRow1:[{codeName:1,codeValue:1,ifdefault:'1'},{codeName:2,codeValue:2,ifdefault:'0'},{codeName:3,codeValue:3,ifdefault:'0'}]
  82. * }
  83. */
  84. export const selectOptionsBySecondCodeRows = params => {
  85. let secondCodeRows=params.secondCodeRows;
  86. var lostSecondCodeRows=[];
  87. var cacheHasOptions={};
  88. secondCodeRows.forEach(item=>{
  89. if(cacheOptionsBySecondCodeRows[item]){
  90. cacheHasOptions[item]=cacheOptionsBySecondCodeRows[item];
  91. }else{
  92. lostSecondCodeRows.push(item);
  93. }
  94. });
  95. if(lostSecondCodeRows.length>0){
  96. return new Promise((resolve, reject) => {
  97. axios.get(`${base}/sys/code/selectOptionsBySecondCodeRows`, { params:{secondCodeRows:lostSecondCodeRows }}).then(res=>{
  98. let options2=res.data.data;
  99. lostSecondCodeRows.forEach(item=>{
  100. cacheOptionsBySecondCodeRows[item]=options2[item];
  101. cacheHasOptions[item]=options2[item];
  102. });
  103. resolve( {
  104. data: {data:cacheHasOptions}
  105. });
  106. });
  107. });
  108. }else{
  109. return new Promise((resolve, reject) => {
  110. resolve( {
  111. data: {data:cacheHasOptions}
  112. });
  113. });
  114. }
  115. };
  116. /**
  117. * 查询下拉选项目 参数为数组型参数 selectOptions( { fieldNames:['sex','age','student'],code:'all' } ),code为数据分类
  118. * 返回结果为
  119. * res.data.data:{
  120. * sex:[{codeName:,codeValue:1,ifdefault:'1'},{codeName:,codeValue:2,ifdefault:'0'}],
  121. * age:[{codeName:1,codeValue:1,ifdefault:'1'},{codeName:2,codeValue:2,ifdefault:'0'},{codeName:3,codeValue:3,ifdefault:'0'}]
  122. * }
  123. */
  124. export const selectOptions = params => {
  125. return axios.get(`${base}/sys/code/selectOptions`, { params:params })
  126. };
  127. //获取代码对应的名称 用于数据反显 如 getCodeName(options.sex,'1');
  128. export const getCodeName = (options,codeValue)=>{
  129. if(!options)return codeValue;
  130. let code=options.filter(i=>i.codeValue==codeValue);
  131. if(code.length>0){
  132. return code[0].codeName
  133. }else{
  134. return codeValue
  135. }
  136. };
  137. /**
  138. * 获取某个字段的默认值
  139. * getDefaultValue(options.sex,'1');
  140. */
  141. export const getDefaultValue = (fieldOptions,defaultValue) =>{
  142. if(fieldOptions==null || fieldOptions.length==0){
  143. return defaultValue;
  144. }
  145. let defaultV=defaultValue;
  146. fieldOptions.forEach(i=>{
  147. if(i.ifdefault=='1'){
  148. defaultV=i.codeValue;
  149. }
  150. });
  151. return defaultV;
  152. };
  153. /**
  154. * 根据一级分类列表查询所有的二级分类
  155. * @param codes 分类编码 列表 ['JCBM_TPL','SystemParas']
  156. * @return 返回如下格式的mapsecondCodeRow为主键,dtcodeId为编码dtcodeName中文描述
  157. * {
  158. * JCBM_TPL:[{secondCodeRow:'xxxx',dtcodeId:1,dtcodeName:},{secondCodeRow:'xxxx',dtcodeid:1,dtcodeName:}],
  159. * SystemParas:[{secondCodeRow:'xxxx',dtcodeId:3,dtcodeName:其它},{secondCodeRow:'xxxx',dtcodeid:2,dtcodeName:其它2}]
  160. * }
  161. */
  162. export const selectSeconds = params => { return axios.get(`${base}/sys/code/selectSeconds`, { params:params }); };
  163. /**
  164. * 根据一级分类列表查询所有的二级分类
  165. * @param codes 分类编码 列表 ['JCBM_TPL','SystemParas']
  166. * @return 返回如下格式的mapsecondCodeRow为主键,dtcodeId为编码dtcodeName中文描述
  167. * {
  168. * JCBM_TPL:[{secondCodeRow:'xxxx',dtcodeId:1,dtcodeName:},{secondCodeRow:'xxxx',dtcodeid:1,dtcodeName:}],
  169. * SystemParas:[{secondCodeRow:'xxxx',dtcodeId:3,dtcodeName:其它},{secondCodeRow:'xxxx',dtcodeid:2,dtcodeName:其它2}]
  170. * }
  171. */
  172. export const selectCacheSeconds = params => {
  173. let codes=params.codes;
  174. let lostCodes=[];
  175. codes.forEach(item=>{
  176. if(!cacheSeconds[item]){
  177. lostCodes.push(item);
  178. }
  179. });
  180. if(lostCodes.length>0){
  181. return new Promise((resolve, reject) => {
  182. selectSeconds({codes:lostCodes}).then(res=>{
  183. let seconds=res.data.data;
  184. lostCodes.forEach(item=>{
  185. cacheSeconds[item]=seconds[item];
  186. });
  187. let result={};
  188. codes.forEach(item=>{
  189. result[item]=cacheSeconds[item];
  190. });
  191. resolve( {
  192. data: {data:result}
  193. });
  194. });
  195. });
  196. }else{
  197. let result={};
  198. codes.forEach(item=>{
  199. result[item]=cacheSeconds[item];
  200. });
  201. return new Promise((resolve, reject) => {
  202. resolve( {
  203. data: {data:result}
  204. });
  205. });
  206. }
  207. };
  208. // [{dpetid:'',displayDeptid:'',deptName:'',shortName:'',pdeptid:''},{dpetid:'',displayDeptid:'',deptName:'',shortName:'',pdeptid:''}]
  209. export const getCompanyDepts = () => {
  210. if(cacheCompanyDepts!=null && cacheCompanyDepts.length>=0){
  211. return new Promise((resolve, reject) => {
  212. resolve( {
  213. data: {data:cacheCompanyDepts}
  214. });
  215. });
  216. }
  217. return axios.get(`${base}/sys/code/companyDepts`).then(res=>{
  218. if(res.data.data==null){
  219. cacheCompanyDepts=[];
  220. }else{
  221. cacheCompanyDepts=res.data.data;
  222. }
  223. return new Promise((resolve, reject) => {
  224. resolve( {
  225. data: {data:cacheCompanyDepts}
  226. });
  227. });
  228. });
  229. };
  230. //[{userid:'',displayUserid:'',username:'',deptid:'',shortName:'',deptName:''},{userid:'',displayUserid:'',username:'',deptid:'',shortName:'',deptName:''}]
  231. export const getCompanyEmployees = () => {
  232. if(cacheCompanyEmployees!=null && cacheCompanyEmployees.length>=0){
  233. return new Promise((resolve, reject) => {
  234. resolve( {
  235. data: {data:cacheCompanyEmployees}
  236. });
  237. });
  238. }
  239. return axios.get(`${base}/sys/code/companyEmployees`).then(res=>{
  240. if(res.data.data==null){
  241. cacheCompanyEmployees=[];
  242. }else{
  243. cacheCompanyEmployees=res.data.data;
  244. }
  245. return new Promise((resolve, reject) => {
  246. resolve( {
  247. data: {data:cacheCompanyEmployees}
  248. });
  249. });
  250. });
  251. };