receipt_create_fn.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  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(ValidTraveDate(dateArray)){
  41. obj.alertDia("差旅行程时间填写有误");
  42. event.preventDefault();
  43. return
  44. }
  45. let item = new Array(new Date(dateArray[0]).getTime() / 1000 - 28800, new Date(dateArray[1]).getTime() / 1000 - 28800);
  46. sortList.push(item);
  47. }
  48. let alertDia = obj.alertDia;
  49. $.ajax({
  50. type: "GET",
  51. url: "/json/trave/date/all",
  52. dataType: "json",
  53. processData: false,
  54. contentType: false,
  55. }).success(function (data) {
  56. sortList.forEach(element => {
  57. data.push(element);
  58. });
  59. let TraveStatus = isTraveDate(sortList);
  60. if (TraveStatus == 2) {
  61. alertDia("差旅日期格式不正确");
  62. flag = true;
  63. }
  64. }).fail(function (msg) {
  65. alertDia("历史差旅时间获取失败");
  66. flag = true;
  67. });
  68. }
  69. // 选择费用类型
  70. if (obj.receiptTypeMenu[0].show === false && obj.receiptTypeMenu[1].show === false && obj.receiptTypeMenu[2].show === false) {
  71. obj.alertDia("请选择 费用类型");
  72. flag = true;
  73. }
  74. // 设置参数
  75. // 1.办事处相关费用
  76. let officeData_input_dom = obj.$refs.officeData_input;
  77. officeData_input_dom.value = "";
  78. if (obj.receiptTypeMenu[0].show) {
  79. officeData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[0]);
  80. }
  81. // 2.差旅相关费用
  82. let traveData_input_dom = obj.$refs.traveData_input;
  83. traveData_input_dom.value = "";
  84. if (obj.receiptTypeMenu[1].show) {
  85. traveData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[1]);
  86. }
  87. // 3.差旅相关费用
  88. let trainData_input_dom = obj.$refs.trainData_input;
  89. trainData_input_dom.value = "";
  90. if (obj.receiptTypeMenu[2].show) {
  91. trainData_input_dom.value = JSON.stringify(obj.receiptTypeMenu[2]);
  92. }
  93. // 4.附件内容相关
  94. let enclosurFiles_input_dom = obj.$refs.enclosurFiles_input;
  95. enclosurFiles_input_dom.value = "";
  96. if (obj.enclosurFiles.length != 0) {
  97. enclosurFiles_input_dom.value = JSON.stringify(obj.enclosurFiles);
  98. }
  99. // 校验设置后的参数
  100. if (obj.verifyId === "") {
  101. obj.alertDia("请选择 审批组");
  102. flag = true;
  103. }
  104. if (flag) {
  105. event.preventDefault();
  106. }
  107. // // 1-2日常费用
  108. // let officeDailyData_input_dom = obj.$refs.officeDailyData_input;
  109. // // 1-2填写过金额
  110. // let daily = [];
  111. // obj.receiptTypeMenu[0].daily.forEach(element => {
  112. // if (element.price != 0) {
  113. // daily.push(element);
  114. // }
  115. // });
  116. // officeDailyData_input_dom.value = JSON.stringify(daily);
  117. // let officeOtherData_input_dom = obj.$refs.officeOtherData_input;
  118. // let other = [];
  119. // obj.receiptTypeMenu[0].other.forEach(element => {
  120. // if (element.price != 0) {
  121. // other.push(element);
  122. // }
  123. // });
  124. // officeOtherData_input_dom.value = JSON.stringify(other);
  125. // let officeExplain_input_dom = obj.$refs.officeExplain_input;
  126. // officeExplain_input_dom.value = obj.receiptTypeMenu[0].officeExplain[0].officeExplain;
  127. }
  128. // 办事处相关费用合计
  129. function officePrice(obj) {
  130. sum = 0;
  131. obj.daily.forEach(element => {
  132. sum += Number(element.price);
  133. });
  134. obj.other.forEach(element => {
  135. sum += Number(element.price);
  136. });
  137. return sum.toFixed(2);
  138. }
  139. // 差旅相关费用
  140. function travePrice(obj) {
  141. let sum = 0;
  142. obj.forEach(element => {
  143. element.tripList.forEach(elementlv2 => {
  144. elementlv2.tripItem.forEach(elementlv3 => {
  145. sum += Number(elementlv3.price);
  146. });
  147. });
  148. });
  149. return sum.toFixed(2);
  150. }
  151. // 内部培训费用
  152. function trainPrice(obj) {
  153. let sum = 0;
  154. obj.forEach(element => {
  155. sum += Number(element.price);
  156. });
  157. return sum.toFixed(2);
  158. }
  159. //
  160. function NewTraveItem() {
  161. let newTripItem = new Array();
  162. accountItem.trave.forEach(element => {
  163. newTripItem.push({
  164. "name": element.name,
  165. "price": 0.00,
  166. "remark": "",
  167. });
  168. });
  169. return newTripItem;
  170. }
  171. function toDecimal2(x) {
  172. var f = parseFloat(x);
  173. if (isNaN(f)) {
  174. return false;
  175. }
  176. var f = Math.round(x * 100) / 100;
  177. var s = f.toString();
  178. var rs = s.indexOf('.');
  179. if (rs < 0) {
  180. rs = s.length;
  181. s += '.';
  182. }
  183. while (s.length <= rs + 2) {
  184. s += '0';
  185. }
  186. return s;
  187. }
  188. function delEnclosurByKey(id) {
  189. var url = "/ajaxRemEnclousur";
  190. $.ajax({
  191. url: url,
  192. type: "post",
  193. cache: false,
  194. dataType: "json",
  195. data: {
  196. key: id
  197. },
  198. global: true,
  199. success: function (data) {
  200. if (data.status == 1) {
  201. $('#' + id).remove();
  202. }
  203. },
  204. error: function (err) {
  205. }
  206. });
  207. }
  208. function isTraveDate(sortList) {
  209. let flag = 0;
  210. let sortlength = sortList.length;
  211. for (var index = 0; index < sortlength; index++) {
  212. let start = sortList[index][0];
  213. let end = sortList[index][1];
  214. itemIndex = index + 1;
  215. if (sortList.length === itemIndex) {
  216. break;
  217. }
  218. let isRangeStartAndEnd = sortList.some((item, i) => {
  219. if (i != index) {
  220. return (item[0] <= start && item[1] >= start) || (item[0] <= end && item[1] >= end)
  221. }
  222. })
  223. if (isRangeStartAndEnd) {
  224. // 有重复区间
  225. //flag = true;
  226. flag = 2;
  227. break;
  228. }
  229. }
  230. return flag;
  231. }
  232. function ValidTraveDate(dateArray) {
  233. if (dateArray.length != 2) {
  234. return true;
  235. }
  236. let dateFormat = /^(\d{4})-(\d{2})-(\d{2})$/;
  237. if (!dateFormat.test(dateArray[0])) {
  238. return true;
  239. }
  240. if (!dateFormat.test(dateArray[1])) {
  241. return true;
  242. }
  243. return false
  244. }