index.js 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. (function () {
  2. let isTimes = []
  3. let viewState = z.ui.comm.getUrlParam("_o");
  4. let read = z.ui.comm.getUrlParam("read");
  5. let finance = z.ui.comm.getUrlParam("finance");
  6. window.onload = function (ex) {
  7. let timeObject = document.querySelector('#detailList')
  8. let arrays = JSON.parse(timeObject.value)
  9. $("#addData").click(function () {
  10. let obj = {
  11. amount: "",
  12. bz1: "",
  13. costType: "",
  14. commonCostId: "",
  15. costContent: "",
  16. costDate: "",
  17. createTime: "",
  18. id: "",
  19. invoiceNums: "",
  20. isvalid: "",
  21. latestModifyTime: "",
  22. }
  23. isTimes.push(obj)
  24. updateView()
  25. buildQjsjSeq();
  26. detailTotalInit()
  27. })
  28. $("#selectProject").click(function () {
  29. selectProject(null, setProject);
  30. })
  31. initCompany();
  32. bindEvents();
  33. //根据返回的json对象渲染
  34. if (arrays.length > 0) {
  35. for (let i = 0; i < arrays.length; i++) {
  36. let obj = {
  37. amount: arrays[i].amount,
  38. bz1: arrays[i].bz1,
  39. costType: arrays[i].costType,
  40. commonCostId: arrays[i].commonCostId,
  41. costContent: arrays[i].costContent,
  42. costDate: arrays[i].costDate,
  43. createTime: arrays[i].createTime,
  44. id: arrays[i].id,
  45. invoiceNums: arrays[i].invoiceNums,
  46. isvalid: arrays[i].isvalid,
  47. latestModifyTime: arrays[i].latestModifyTime,
  48. }
  49. isTimes.push(obj)
  50. }
  51. updateView()
  52. }
  53. }
  54. function updateView() {
  55. let tbodyQjsq = document.querySelector('.tbodyQjsq')
  56. let html = ''
  57. for (let i = 0; i < isTimes.length; i++) {
  58. html += '<tr class="qjsjClass" id="qjsj_' + i + '" style="background:#fff">'
  59. + '<td name="qjsj_seq">' + (i + 1) + '</td>'
  60. + '<td>'
  61. + '<div class="form-flex">'
  62. + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
  63. + '<div class="z-comp-date" name="CommonCostDetailDO[' + i + ']$costDate">'
  64. + '<input type="text" value="' + isTimes[i].costDate + '">'
  65. + '</div>'
  66. + '</div>'
  67. + '</div>'
  68. + '</td>'
  69. + '<td>'
  70. + '<div class="form-flex">'
  71. + '<div class="form-item" style="width: 100%;margin-right: 5px;">'
  72. + '<div class="z-comp-selecttree" name="costType[' + i + ']">'
  73. + '<input type="hidden" name="CommonCostDetailDO[' + i + ']$costType">'
  74. + '<div class="z-inputselect-bar">'
  75. + '<span></span><i></i>'
  76. + '</div>'
  77. + '</div>'
  78. + '</div>'
  79. + '</div>'
  80. + '</td>'
  81. + '<td>'
  82. + '<div class="form-item">'
  83. + '<div class="z-comp-input" name="CommonCostDetailDO[' + i + ']$costContent">'
  84. + '<input type="text" value="' + isTimes[i].costContent + '">'
  85. + '</div>'
  86. + '</div>'
  87. + '</td>'
  88. + '<td>'
  89. + '<div class="form-item">'
  90. + '<div class="z-comp-input" name="CommonCostDetailDO[' + i + ']$invoiceNums">'
  91. + '<input type="number" value="' + isTimes[i].invoiceNums + '">'
  92. + '</div>'
  93. + '</div>'
  94. + '</td>'
  95. + '<td>'
  96. + '<div class="form-item">'
  97. + '<div class="z-comp-input" name="CommonCostDetailDO[' + i + ']$amount">'
  98. + '<input type="number" value="' + isTimes[i].amount + '">'
  99. + '</div>'
  100. + '</div>'
  101. + '</td>'
  102. + '<td>'
  103. + '<div class="form-item">'
  104. + '<div class="z-comp-input" name="CommonCostDetailDO[' + i + ']$bz1">'
  105. + '<input type="text" value="' + isTimes[i].bz1 + '">'
  106. + '</div>'
  107. + '</div>'
  108. + '</td>'
  109. + '<td>'
  110. + '<div id="delBtn_' + (i) + '" class="table-btn delBtn_' + (i) + '" data-index="' + (i) + '">'
  111. + '<span>删除</span>'
  112. + '</div>'
  113. + '</td></tr>';
  114. }
  115. tbodyQjsq.innerHTML = html
  116. let costTypeJSON = JSON.parse(document.querySelector('#costTypeJSON').value)
  117. for (let i = 0; i < isTimes.length; i++) {
  118. costTypeJSON.forEach(obj => {
  119. obj.treeName = 'CommonCostDetailDO[' + i + ']$costType';
  120. })
  121. selecttree("[name='costType[" + i + "]']", costTypeJSON, clickCostType, allowChildClick)
  122. z.ui.date("[name='CommonCostDetailDO[" + i + "]$costDate']").init()
  123. z.ui.selecttree("[name='costType[" + i + "]']").setValue(isTimes[i].costType)
  124. $("[name='CommonCostDetailDO[" + i + "]$costType']").val(isTimes[i].costType);
  125. $("#delBtn_" + i).click(function () {
  126. z.ui.confirm("compid").init({
  127. content: "确定删除吗?",
  128. onConfirm: function () {
  129. var element = document.getElementById("qjsj_" + i);
  130. element.remove();
  131. buildQjsjSeq();
  132. isTimes.splice(i, 1)
  133. updateView()
  134. jeSumInit(i)
  135. },
  136. onCancel: function () {
  137. }
  138. })
  139. })
  140. if(viewState === 'v' || read===1){
  141. detailReadonly(i)
  142. }
  143. }
  144. detailTotalInit()
  145. }
  146. function detailReadonly(i){
  147. //财务审核时可以核减修改金额
  148. if(finance === 1){
  149. //如果单据金额发生修改就代表核减了
  150. }
  151. $("#delBtn_" + i).css("display","none");
  152. $("[name='costType[" + i + "]']").addClass("z-readonly");
  153. $("[name='costType[" + i + "]']").css("pointer-events", "none");
  154. let detailElement = document.getElementById("qjsj_" + i);
  155. let detailInput = detailElement.getElementsByTagName("input");
  156. for (let j = 0; j < detailInput.length; j++){
  157. detailInput[j].disabled = true;
  158. detailInput[j].className += "z-readonly"
  159. }
  160. }
  161. function detailTotalInit() {
  162. let obj = {
  163. amount: "",
  164. bz1: "",
  165. commonCostId: "",
  166. costContent: "",
  167. costDate: "",
  168. createTime: "",
  169. id: "",
  170. invoiceNums: "",
  171. isvalid: "",
  172. latestModifyTime: "",
  173. }
  174. for (let i = 0; i < isTimes.length; i++) {
  175. let inpsJe = $("[name='CommonCostDetailDO[" + i + "]$amount']")[0].children[0]; //金额
  176. let inpsPj = $("[name='CommonCostDetailDO[" + i + "]$invoiceNums']")[0].children[0];//单据张数
  177. inpsJe.addEventListener("blur", e => {
  178. let event = e || window.event;
  179. let inputInfo = event.target.value;
  180. if (!(inputInfo > 0)) {
  181. z.ui.alertWarning(`金额不能为负数、0`)
  182. inpsJe.value = ''
  183. } else {
  184. obj.amount = inputInfo
  185. jeSumInit()
  186. }
  187. });
  188. inpsPj.addEventListener("blur", e => {
  189. let event = e || window.event;
  190. let inputInfo = event.target.value;
  191. if (!(inputInfo > 0) || (String(inputInfo).indexOf('.') > -1)) {
  192. z.ui.alertWarning(`单据张数不能为负数、0、小数`)
  193. inpsPj.value = ''
  194. } else {
  195. obj.invoiceNums = inputInfo
  196. }
  197. });
  198. }
  199. }
  200. function jeSumInit(idx) {
  201. let jeSum = 0 //金额汇总
  202. for (let i = 0; i < isTimes.length; i++) {
  203. if (idx == i) {
  204. return
  205. } else {
  206. let inpsJe = $("[name='CommonCostDetailDO[" + i + "]$amount']")[0].children[0]; //金额
  207. jeSum += Number(inpsJe.value)
  208. }
  209. }
  210. z.ui.input("[name='createReqVO$totalAmount']").setValue(jeSum);
  211. z.ui.input("[name='createReqVO$totalAmountCn']").setValue(convertCurrency(jeSum));
  212. }
  213. //注册业务保存事件
  214. function bindEvents() {
  215. z.workflow.saveBtn.addListener("onSaveClick", saveForm);
  216. }
  217. function buildQjsjSeq() {
  218. let elementsByName = document.getElementsByName("qjsj_seq");
  219. for (let i = 0; i < elementsByName.length; i++) {
  220. const seqElement = elementsByName[i];
  221. seqElement.innerHTML = i + 1;
  222. }
  223. }
  224. /*
  225. * all 工作流js传递到业务的参数 success执行的方法
  226. * istransfer 工作流js传递到业务的参数 是否转件
  227. * */
  228. function saveForm(all, istransfer) {
  229. var postData = z.ui.form.getFormFields($("[name=createReqVO]"));
  230. if (postData == false) return;
  231. postData.createReqVO.instanceId = z.ui.comm.getUrlParam("flowInstanceId");
  232. var detailList = new Array()
  233. for (let key of Object.keys(postData)) {
  234. let mealName = postData[key];
  235. if (key.startsWith("CommonCostDetailDO")) {
  236. mealName.costDate = Date.parse(mealName.costDate);
  237. detailList.push(z.ui.form.childStringify(mealName));
  238. }
  239. }
  240. postData.createReqVO.detailList = detailList;
  241. z.ui.ajax({
  242. type: "post",
  243. url: "/CommonCost/update",
  244. data: JSON.stringify(postData.createReqVO),
  245. contentType: "application/json",
  246. success: function () {
  247. all({ success: true });
  248. },
  249. error: function () {
  250. all({ success: false });
  251. }
  252. })
  253. }
  254. function setProject(res) {
  255. if (res.data) {
  256. $("[name='createReqVO$projectId']").val(res.data.id);
  257. z.ui.input("[name='createReqVO$projectName']").setValue(res.data.xmmc);
  258. z.ui.input("[name='createReqVO$xmbh']").setValue(res.data.xmbh);
  259. z.ui.input("[name='createReqVO$xmzrbm']").setValue(res.data.zrbm);
  260. }
  261. }
  262. function initCompany() {
  263. z.ui.ajax({
  264. type: "get",
  265. url: "/common/company-tree",
  266. data: {},
  267. success: function (res) {
  268. if (res && res.data.length > 0) {
  269. selecttree("[name='paymentCompany']", res.data, clickCompany)
  270. }
  271. },
  272. error: function () {
  273. }
  274. })
  275. }
  276. function clickCompany(even, treeId, treeNode) {
  277. $("[name='createReqVO$paymentCompanyId']").val(treeNode.id);
  278. }
  279. function clickCostType(even, treeId, treeNode) {
  280. $("[name='" + treeNode.treeName + "']").val(treeNode.id);
  281. }
  282. }());