receipt_create_fn.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. /*
  2. * @description: 创建报销单业务处理
  3. * @Author: CP
  4. * @Date: 2020-11-13 15:20:41
  5. * @FilePath: \cld\global\vue\fee\receipt_create_fn.js
  6. */
  7. // 验证费用表单
  8. function checkReceipt(event, obj) {
  9. let flag = false;
  10. //1.选择办事处费用
  11. if (obj.receiptTypeMenu[0].show) {
  12. if (obj.receiptTypeMenu[0].officeExplain[0].officeExplain == "") {
  13. obj.alertDia("请填写 办事处相关费用 报销说明");
  14. flag = true;
  15. }
  16. }
  17. //2.选择办事处费用
  18. if (obj.receiptTypeMenu[2].show) {
  19. if (obj.receiptTypeMenu[2].trainExplain[0].trainExplain == "") {
  20. obj.alertDia("请填写 内部培训费用 报销说明");
  21. flag = true;
  22. }
  23. }
  24. //3.行程时间判定
  25. if (obj.receiptTypeMenu[1].show) {
  26. // if (obj.receiptTypeMenu[1]['traveList'].length > 1) {
  27. let sortList = new Array();
  28. // obj.receiptTypeMenu[1]['traveList'].forEach(element => {
  29. // let dateArray = element.tripTime.split(" - ");
  30. // if (dateArray.length != 2) {
  31. // obj.alertDia("差旅行程时间填写有误");
  32. // event.preventDefault();
  33. // return
  34. // }
  35. // let item = new Array(new Date(dateArray[0]).getTime() / 1000 - 28800, new Date(dateArray[1]).getTime() / 1000 - 28800);
  36. // sortList.push(item);
  37. // });
  38. for (let i = 0; i < obj.receiptTypeMenu[1]['traveList'].length; i++) {
  39. let dateArray = obj.receiptTypeMenu[1]['traveList'][i].tripTime.split(" - ");
  40. if (dateArray.length != 2) {
  41. obj.alertDia("差旅行程时间填写有误");
  42. event.preventDefault();
  43. return
  44. }
  45. let dateFormat = /^(\d{4})-(\d{2})-(\d{2})$/;
  46. if (!dateFormat.test(dateArray[0])) {
  47. obj.alertDia("差旅行程时间填写有误");
  48. event.preventDefault();
  49. return
  50. }
  51. if (!dateFormat.test(dateArray[1])) {
  52. obj.alertDia("差旅行程时间填写有误");
  53. event.preventDefault();
  54. return
  55. }
  56. let item = new Array(new Date(dateArray[0]).getTime() / 1000 - 28800, new Date(dateArray[1]).getTime() / 1000 - 28800);
  57. sortList.push(item);
  58. }
  59. //验证差旅时间
  60. console.log(obj.receiptTypeMenu[1]['traveList'])
  61. // let dateFormat = /^(\d{4})-(\d{2})-(\d{2})$/;
  62. // if (sortList[i].length != 2) {
  63. // flag = true;
  64. // break;
  65. // } else {
  66. // if (!dateFormat.test(sortList[i][0])) {
  67. // flag = true;
  68. // break;
  69. // }
  70. // if (!dateFormat.test(sortList[i][1])) {
  71. // flag = true;
  72. // break;
  73. // }
  74. // }
  75. let alertDia = obj.alertDia;
  76. $.ajax({
  77. type: "GET",
  78. url: "/json/trave/date/all",
  79. dataType: "json",
  80. processData: false,
  81. contentType: false,
  82. }).success(function (data) {
  83. sortList.forEach(element => {
  84. data.push(element);
  85. });
  86. let TraveStatus = isTraveDate(sortList);
  87. if (TraveStatus == 2) {
  88. alertDia("差旅日期格式不正确");
  89. flag = true;
  90. }
  91. }).fail(function (msg) {
  92. alertDia("历史差旅时间获取失败");
  93. flag = true;
  94. });
  95. }
  96. // 选择费用类型
  97. if (obj.receiptTypeMenu[0].show === false && obj.receiptTypeMenu[1].show === false && obj.receiptTypeMenu[2].show === false) {
  98. obj.alertDia("请选择 费用类型");
  99. flag = true;
  100. }
  101. // 设置参数
  102. // 1.办事处相关费用
  103. let officeData_input_dom = obj.$refs.officeData_input;
  104. officeData_input_dom.value = "";
  105. if (obj.receiptTypeMenu[0].show) {
  106. officeData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[0]);
  107. }
  108. // 2.差旅相关费用
  109. let traveData_input_dom = obj.$refs.traveData_input;
  110. traveData_input_dom.value = "";
  111. if (obj.receiptTypeMenu[1].show) {
  112. traveData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[1]);
  113. }
  114. // 3.差旅相关费用
  115. let trainData_input_dom = obj.$refs.trainData_input;
  116. trainData_input_dom.value = "";
  117. if (obj.receiptTypeMenu[2].show) {
  118. trainData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[2]);
  119. }
  120. // 4.附件内容相关
  121. let enclosurFiles_input_dom = obj.$refs.enclosurFiles_input;
  122. enclosurFiles_input_dom.value = "";
  123. if (obj.enclosurFiles.length != 0) {
  124. enclosurFiles_input_dom.value = JSON.stringify(obj.enclosurFiles);
  125. }
  126. // 校验设置后的参数
  127. if (obj.verifyId === "") {
  128. obj.alertDia("请选择 审批组");
  129. flag = true;
  130. }
  131. if (flag) {
  132. event.preventDefault();
  133. }
  134. // // 1-2日常费用
  135. // let officeDailyData_input_dom = obj.$refs.officeDailyData_input;
  136. // // 1-2填写过金额
  137. // let daily = [];
  138. // obj.receiptTypeMenu[0].daily.forEach(element => {
  139. // if (element.price != 0) {
  140. // daily.push(element);
  141. // }
  142. // });
  143. // officeDailyData_input_dom.value = JSON.stringify(daily);
  144. // let officeOtherData_input_dom = obj.$refs.officeOtherData_input;
  145. // let other = [];
  146. // obj.receiptTypeMenu[0].other.forEach(element => {
  147. // if (element.price != 0) {
  148. // other.push(element);
  149. // }
  150. // });
  151. // officeOtherData_input_dom.value = JSON.stringify(other);
  152. // let officeExplain_input_dom = obj.$refs.officeExplain_input;
  153. // officeExplain_input_dom.value = obj.receiptTypeMenu[0].officeExplain[0].officeExplain;
  154. }
  155. // 办事处相关费用合计
  156. function officePrice(obj) {
  157. sum = 0;
  158. obj.daily.forEach(element => {
  159. sum += Number(element.price);
  160. });
  161. obj.other.forEach(element => {
  162. sum += Number(element.price);
  163. });
  164. return sum.toFixed(2);
  165. }
  166. // 差旅相关费用
  167. function travePrice(obj) {
  168. let sum = 0;
  169. obj.forEach(element => {
  170. element.tripList.forEach(elementlv2 => {
  171. elementlv2.tripItem.forEach(elementlv3 => {
  172. sum += Number(elementlv3.price);
  173. });
  174. });
  175. });
  176. return sum.toFixed(2);
  177. }
  178. // 内部培训费用
  179. function trainPrice(obj) {
  180. let sum = 0;
  181. obj.forEach(element => {
  182. sum += Number(element.price);
  183. });
  184. return sum.toFixed(2);
  185. }
  186. //
  187. function NewTraveItem() {
  188. let newTripItem = new Array();
  189. accountItem.trave.forEach(element => {
  190. newTripItem.push({
  191. "name": element.name,
  192. "price": 0.00,
  193. "remark": "",
  194. });
  195. });
  196. return newTripItem;
  197. }
  198. function toDecimal2(x) {
  199. var f = parseFloat(x);
  200. if (isNaN(f)) {
  201. return false;
  202. }
  203. var f = Math.round(x * 100) / 100;
  204. var s = f.toString();
  205. var rs = s.indexOf('.');
  206. if (rs < 0) {
  207. rs = s.length;
  208. s += '.';
  209. }
  210. while (s.length <= rs + 2) {
  211. s += '0';
  212. }
  213. return s;
  214. }
  215. function delEnclosurByKey(id) {
  216. var url = "/ajaxRemEnclousur";
  217. $.ajax({
  218. url: url,
  219. type: "post",
  220. cache: false,
  221. dataType: "json",
  222. data: {
  223. key: id
  224. },
  225. global: true,
  226. success: function (data) {
  227. if (data.status == 1) {
  228. $('#' + id).remove();
  229. }
  230. },
  231. error: function (err) {
  232. }
  233. });
  234. }
  235. function isTraveDate(sortList) {
  236. let flag = 0;
  237. let sortlength = sortList.length;
  238. for (var index = 0; index < sortlength; index++) {
  239. let start = sortList[index][0];
  240. let end = sortList[index][1];
  241. itemIndex = index + 1;
  242. if (sortList.length === itemIndex) {
  243. break;
  244. }
  245. let isRangeStartAndEnd = sortList.some((item, i) => {
  246. if (i != index) {
  247. return (item[0] <= start && item[1] >= start) || (item[0] <= end && item[1] >= end)
  248. }
  249. })
  250. if (isRangeStartAndEnd) {
  251. // 有重复区间
  252. //flag = true;
  253. flag = 2;
  254. break;
  255. }
  256. }
  257. // sortList.forEach((element, index) => {
  258. // let start = element[0];
  259. // let end = element[1];
  260. // itemIndex = index + 1;
  261. // if (sortList.length === itemIndex) {
  262. // return true;
  263. // }
  264. // let isRangeStartAndEnd = sortList.some((item, i) => {
  265. // if (i != index) {
  266. // return (item[0] <= start && item[1] >= start) || (item[0] <= end && item[1] >= end)
  267. // }
  268. // //return (sortList[itemIndex][0]<=start&&sortList[itemIndex][1]>=start)||(sortList[itemIndex][0]<=end&&sortList[itemIndex][1]>=end)
  269. // })
  270. // if (isRangeStartAndEnd) {
  271. // // 有重复区间
  272. // //flag = true;
  273. // flag = 2;
  274. // return true;
  275. // }
  276. // });
  277. return flag;
  278. }