移动端
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

260 líneas
6.4 KiB

  1. import {numFormat} from "@/utils/index";
  2. import BigNumber from "bignumber.js";
  3. export const FINANCE = {
  4. CONFIG_KEY: '_Finance_config',
  5. EXPRESSION_REPORT_TEMPLATE: {
  6. ASSET_AND_LIABILITY: "资产负债表",
  7. QUARTER_REPORT: "季度报表",
  8. INCOME_DISTRIBUTION_REPORT: "收益分配表",
  9. },
  10. VOUCHER_CACHE_LIFECYCLE: 300000,
  11. getConfig(name, defVal) {
  12. let config = localStorage.getItem(this.CONFIG_KEY);
  13. if(config)
  14. {
  15. config = JSON.parse(config);
  16. if(config.hasOwnProperty(name))
  17. return config[name];
  18. }
  19. return defVal;
  20. },
  21. setConfig(name, val) {
  22. let config = localStorage.getItem(this.CONFIG_KEY);
  23. if(!config)
  24. config = {};
  25. else
  26. config = JSON.parse(config);
  27. config[name] = val;
  28. localStorage.setItem(this.CONFIG_KEY, JSON.stringify(config));
  29. },
  30. makeSubjectsTree(SubjectsList, subjectTypes) {
  31. let func = (pid) => {
  32. let arr = null;
  33. for(let v of SubjectsList)
  34. {
  35. let parentId = v.parentId || v.subjectId.substr(0, v.subjectId.length - 3) || null;
  36. if(parentId == pid)
  37. {
  38. if(!arr) arr = [];
  39. let a = func(v.subjectId);
  40. if(a)
  41. {
  42. v.children = a;
  43. v.is_last = 'N';
  44. }
  45. else
  46. v.is_last = 'Y';
  47. v.disabled = false;
  48. v.label = v.subjectId + ' ' + v.subjectName;
  49. v.label2 = v.subjectId + ' ' + v.subjectNameAll;
  50. v.id = v.subjectId;
  51. arr.push(v);
  52. }
  53. }
  54. return arr;
  55. };
  56. let res = func(null) || [];
  57. if(!subjectTypes)
  58. return res;
  59. let r = [];
  60. res.forEach((x) => {
  61. let subjectIdStart = x.subjectId[0];
  62. let item = r.find((y) => y.subjectId == subjectIdStart);
  63. if(!item)
  64. {
  65. let type = subjectTypes.find((y) => y.dictValue == subjectIdStart);
  66. if(!type)
  67. return;
  68. item = {
  69. id: type.dictValue,
  70. subjectId: type.dictValue,
  71. label: type.dictLabel,
  72. label2: type.dictLabel,
  73. sortFlag: type.dictSort,
  74. is_last: 'N',
  75. subjectName: '',
  76. subjectNameAll: '',
  77. children: [],
  78. disabled: true,
  79. };
  80. r.push(item);
  81. }
  82. item.children.push(x);
  83. });
  84. r.sort((a, b) => a.dictSort - b.dictSort);
  85. return r;
  86. },
  87. makeSubjectsTree_filter(SubjectsList, subjectTypes, filterFunc) {
  88. let func = (pid) => {
  89. let arr = null;
  90. for(let v of SubjectsList)
  91. {
  92. let parentId = v.parentId || v.subjectId.substr(0, v.subjectId.length - 3) || null;
  93. if(parentId == pid)
  94. {
  95. if(!arr) arr = [];
  96. let a = func(v.subjectId);
  97. if(a)
  98. {
  99. v.children = a;
  100. v.is_last = 'N';
  101. }
  102. else
  103. v.is_last = 'Y';
  104. v.label = v.subjectId + ' ' + v.subjectName;
  105. v.label2 = v.subjectId + ' ' + v.subjectNameAll;
  106. v.disabled = !filterFunc(v);
  107. arr.push(v);
  108. }
  109. }
  110. return arr;
  111. };
  112. let filter_func = (children) => {
  113. let res = null;
  114. if(children)
  115. {
  116. let newChildren = [];
  117. for(let v of children)
  118. {
  119. let b = filterFunc(v);
  120. let arr = filter_func(v.children);
  121. if(!arr)
  122. delete v.children;
  123. else
  124. {
  125. v.children = arr;
  126. b = true;
  127. }
  128. if(b)
  129. newChildren.push(v);
  130. }
  131. let r = newChildren.length > 0;
  132. if(r)
  133. res = newChildren;
  134. }
  135. return res;
  136. };
  137. let res = filter_func(func(null) || []) || [];
  138. let r = [];
  139. res.forEach((x) => {
  140. let subjectIdStart = x.subjectId[0];
  141. let item = r.find((y) => y.subjectId == subjectIdStart);
  142. if(!item)
  143. {
  144. let type = subjectTypes.find((y) => y.dictValue == subjectIdStart);
  145. if(!type)
  146. return;
  147. item = {
  148. id: type.dictValue,
  149. label: type.dictLabel,
  150. label2: type.dictLabel,
  151. subjectId: type.dictValue,
  152. sortFlag: type.dictSort,
  153. is_last: 'N',
  154. subjectNameAll: '',
  155. children: [],
  156. disabled: true,
  157. };
  158. r.push(item);
  159. }
  160. item.children.push(x);
  161. });
  162. r.sort((a, b) => a.dictSort - b.dictSort);
  163. return r;
  164. },
  165. /*数字每隔3位一位小数: 0返回空白 */
  166. formatNum(value) {
  167. if(value === undefined || value === null)
  168. return '';
  169. if(typeof(value) === "string")
  170. {
  171. if(value.indexOf(',') !== -1)
  172. return value;
  173. value = Number(value);
  174. if(isNaN(value))
  175. return '';
  176. }
  177. if(value === 0)
  178. return '';
  179. return numFormat(value);
  180. },
  181. formatList(list) {
  182. if(!list || !Array.isArray(list) && !list.length && arguments.length > 1)
  183. return [];
  184. list.forEach((x) => {
  185. for(let i = 1; i < arguments.length; i++)
  186. {
  187. let k = arguments[i];
  188. if(!x.hasOwnProperty(k))
  189. continue;
  190. x[k] = this.formatNum(x[k]);
  191. }
  192. });
  193. return list;
  194. },
  195. obtainAssetSubject(str) {
  196. if(!str)
  197. return null;
  198. let i = str.indexOf(":");
  199. if(i > 0)
  200. return str.substring(0, i);
  201. else if(/^\d+$/g.test(str))
  202. return str;
  203. else
  204. return null;
  205. },
  206. Number(a) {
  207. return new BigNumber(a, 10);
  208. },
  209. zero() {
  210. return new BigNumber(0, 10);
  211. },
  212. add(a, b) {
  213. if(!(a instanceof BigNumber))
  214. a = new BigNumber(a, 10);
  215. if(!(b instanceof BigNumber))
  216. b = new BigNumber(b, 10);
  217. return a.plus(b, 10);
  218. },
  219. subtract(a, b) {
  220. if(!(a instanceof BigNumber))
  221. a = new BigNumber(a, 10);
  222. if(!(b instanceof BigNumber))
  223. b = new BigNumber(b, 10);
  224. return a.minus(b, 10);
  225. },
  226. neg(a) {
  227. if(!(a instanceof BigNumber))
  228. a = new BigNumber(a, 10);
  229. return a.negated();
  230. },
  231. isZero(a) {
  232. if(!(a instanceof BigNumber))
  233. a = new BigNumber(a, 10);
  234. return a.isZero();
  235. },
  236. toNumber(a) {
  237. if(typeof(a) === 'number')
  238. return a;
  239. if(a instanceof BigNumber)
  240. return a.toNumber();
  241. return Number(a);
  242. },
  243. calcFontSizeFromTextLength(text, baseSize) {
  244. if(!text)
  245. return baseSize;
  246. const N = 28;
  247. let length = 0;
  248. for(let i = 0; i < text.length; i++)
  249. {
  250. length += text.charCodeAt(i) > 127 ? 2 : 1;
  251. }
  252. const r = Math.round(baseSize - (Math.max(length / N, 1.0)) + 1);
  253. //console.log(text, r);
  254. return r;
  255. },
  256. };