apply.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. (function () {
  2. let flowInstanceId = "";
  3. let isView = "";
  4. window.onload = function () {
  5. flowInstanceId = z.ui.comm.getUrlParam("flowInstanceId");
  6. bindEvents();
  7. };
  8. function bindEvents() {
  9. initData();
  10. initCalcTax();
  11. initContractMilestone();
  12. bindGenerateSerial();
  13. z.workflow.saveBtn.addListener("onSaveClick", submit);
  14. }
  15. function initData(){
  16. initClient();
  17. initAssignee()
  18. initAreaManager();
  19. }
  20. function bindGenerateSerial(){
  21. $("#generateSerial").on("click",function(){
  22. var genFlag = true;
  23. var serial = $("[name='contract$contractNumber'] input").val();
  24. if(serial) {
  25. z.ui.confirm("confirm").init({
  26. content: '已有编号[' +serial + '],重新生成会覆盖原有编号,是否继续?',
  27. onCancel: function () {
  28. genFlag = false;
  29. }
  30. })
  31. }
  32. var projectTypeCode = $("[name=projectTypeCode]").val();
  33. var xzqh = $("[name=xzqh]").val();
  34. var params = {"projectType": projectTypeCode,"xzqh": xzqh};
  35. var postdata = {"name": '合同编号',"params": params}
  36. if(genFlag){
  37. z.ui.ajax({
  38. type: "post",
  39. contentType: "application/json",
  40. url: "/common/generate-serial-number",
  41. data: JSON.stringify(postdata),
  42. success: function (res) {
  43. if(res && res.code === 0){
  44. $("[name='contract$contractNumber'] input").val(res.data)
  45. } else {
  46. z.ui.alertWarning(res.msg);
  47. }
  48. },
  49. error: function () {
  50. }
  51. })
  52. }
  53. })
  54. }
  55. function initClient(){
  56. z.ui.ajax({
  57. type: "get",
  58. url: "/customer-tree",
  59. data: {},
  60. success: function (res) {
  61. if(res && res.code === 0 && res.data.length > 0){
  62. selecttree("[name='client']",res.data,clickClient)
  63. }
  64. },
  65. error: function () {
  66. }
  67. })
  68. }
  69. function initAssignee(){
  70. z.ui.ajax({
  71. type: "get",
  72. url: "/common/company-tree",
  73. data: {},
  74. success: function (res) {
  75. if(res && res.code === 0 && res.data.length > 0){
  76. selecttree("[name='assignee']",res.data,clickAssignee)
  77. }
  78. },
  79. error: function () {
  80. }
  81. })
  82. }
  83. function initCalcTax(){
  84. $('[name="contract$taxHsjeJskf"] input').on('change',function (){
  85. calcTax();
  86. })
  87. $('[name="contract$taxHsjeFw"] input').on('change',function (){
  88. calcTax();
  89. })
  90. $('[name="contract$taxHsjeRjcp"] input').on('change',function (){
  91. calcTax();
  92. })
  93. $('[name="contract$taxHsjeYj"] input').on('change',function (){
  94. calcTax();
  95. })
  96. }
  97. function initContractMilestone(){
  98. $("#addData").click(function(){
  99. addContractMilestone();
  100. })
  101. }
  102. function submit(all, istransfer) {
  103. var postData = z.ui.form.getFormFields("[name=flow-form]", {validatorRequired: istransfer});
  104. if (postData === false) {
  105. all({success: false});
  106. return;
  107. }
  108. z.ui.ajax({
  109. url: z.ui.comm.getEntranceUrl("/flow/contract/update"),
  110. data: z.ui.form.childStringify(postData),
  111. success: function () {
  112. all({success: true});
  113. },
  114. error: function () {
  115. all({success: false});
  116. }
  117. })
  118. }
  119. function calcTax() {
  120. var hsje_jskf = parseFloat($('[name="contract$taxHsjeJskf"] input').val()) || 0;
  121. var hsje_fw = parseFloat($('[name="contract$taxHsjeFw"] input').val()) || 0;
  122. var hsje_rjcp = parseFloat($('[name="contract$taxHsjeRjcp"] input').val()) || 0;
  123. var hsje_yj = parseFloat($('[name="contract$taxHsjeYj"] input').val()) || 0;
  124. var hsje_total = parseFloat((hsje_jskf + hsje_fw + hsje_rjcp + hsje_yj).toFixed(2));
  125. $('[name="contract$taxHsjeTotal"] input').val(hsje_total);
  126. var bhsje_jskf = parseFloat(hsje_jskf.toFixed(2));
  127. var bhsje_fw = parseFloat((hsje_fw / (1 + 0.06)).toFixed(2));
  128. var bhsje_rjcp = parseFloat((hsje_rjcp / (1 + 0.13)).toFixed(2));
  129. var bhsje_yj =parseFloat( (hsje_yj / (1 + 0.13)).toFixed(2));
  130. var bhsje_total = parseFloat((bhsje_jskf + bhsje_fw + bhsje_rjcp + bhsje_yj).toFixed(2));
  131. $('[name="contract$taxBhsze"] input').val(bhsje_total);
  132. $('[name="contract$taxZhsl"] input').val(((hsje_total - bhsje_total) / bhsje_total).toFixed(6));
  133. var zhsl = 0;
  134. var htje = parseFloat($('[name="contract$contractAmount"] input').val()) || 0;
  135. if (htje == 0){
  136. zhsl = 1;
  137. } else {
  138. zhsl = (1 - parseFloat(bhsje_total / htje)).toFixed(2);
  139. }
  140. $('[name="contract$contractAmount"] input').val(zhsl);
  141. }
  142. function initAreaManager(){
  143. z.ui.ajax({
  144. type: "get",
  145. url: "/common/user-tree",
  146. data: {},
  147. success: function (res) {
  148. if(res && res.length > 0){
  149. selectMutiTree("[name='areaManager']",res,onClear,clickAreaManager,setAreaManager,allowUserClick,{ "Y": "s", "N": "s" })
  150. }
  151. },
  152. error: function () {
  153. }
  154. })
  155. }
  156. function onClear(){
  157. $("[name='contract$areaManagerId']").val('');
  158. $("[name='contract$areaManager']").val('');
  159. }
  160. function setAreaManager(){
  161. var ids = $("[name='contract$areaManagerId']").val();
  162. if(ids){
  163. z.ui.selecttree("[name='areaManager']").setValue(ids.split(","));
  164. }
  165. }
  166. function clickAreaManager(even, treeId, treeNode) {
  167. var ids = [];
  168. var names = [];
  169. var nodes = z.ui.selecttree("[name='areaManager']").tree.getCheckedNodes();
  170. for(var i in nodes){
  171. ids.push(nodes[i].id);
  172. names.push(nodes[i].name);
  173. }
  174. if(ids.length > 0){
  175. $("[name='contract$areaManagerId']").val(ids.join(","));
  176. $("[name='contract$areaManager']").val(names.join(","));
  177. }
  178. }
  179. function clickClient(even, treeId, treeNode) {
  180. $("[name='contract$clientName']").val(treeNode.name);
  181. $("[name='contract$clientId']").val(treeNode.id);
  182. $("[name='contract$clientNumber'] input").val(treeNode.extendData);
  183. }
  184. function clickAssignee(even, treeId, treeNode) {
  185. $("[name='contract$assigneeName']").val(treeNode.name);
  186. $("[name='contract$assigneeId']").val(treeNode.id);
  187. }
  188. function addContractMilestone(){
  189. var lists = []
  190. var trFragment = document.createDocumentFragment();
  191. let tbody = document.querySelectorAll('.tbody tr')
  192. let qjsjElements = document.getElementsByName("contract_milestone_seq");
  193. var dataObj = {}
  194. trFragment.appendChild(generateTableTrHtml(lists.length))
  195. $(".tbody").append(trFragment)
  196. timeSelector({
  197. ele: ".endTimeRange" + lists.length,
  198. name: "Contract[" + lists.length + "]$endTimeRange",
  199. callback: function (val) {
  200. }
  201. })
  202. $("#delBtn_" + lists.length).click(function () {
  203. var index = this.id.substring(this.id.indexOf("_") + 1)
  204. z.ui.confirm("compid").init({
  205. content: "确定删除吗?",
  206. onConfirm: function () {
  207. var element = document.getElementById("contract_milestone_" + index);
  208. element.remove();
  209. buildSeq();
  210. },
  211. onCancel: function () {
  212. }
  213. })
  214. })
  215. z.ui.date("[name='Contract[" + lists.length + "]$planReturnTime']").init()
  216. buildSeq();
  217. lists.push(dataObj)
  218. for (let i = 0; i < tbody.length; i++) {
  219. z.ui.date("[name='Contract[" + i + "]$planReturnTime']").init({
  220. done: function (value, date, endDate) {
  221. //改变日期后触发
  222. console.log(value);
  223. }
  224. });
  225. }
  226. }
  227. function buildSeq() {
  228. let elementsByName = document.getElementsByName("contract_milestone_seq");
  229. for (let i = 0; i < elementsByName.length; i++) {
  230. const seqElement = elementsByName[i];
  231. seqElement.innerHTML = i + 1;
  232. }
  233. }
  234. function generateTableTrHtml(index) {
  235. var trDom = document.createElement("tr");
  236. trDom.style.backgroundColor = "#fff";
  237. trDom.id = "contract_milestone_" + index;
  238. trDom.innerHTML = '<td name="contract_milestone_seq">' + (index + 1) + '</td>'
  239. + '<td>'
  240. + '<div class="form-flex">'
  241. + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
  242. + '<div class="z-comp-input" name="Contract[' + index + ']$name">'
  243. + '<input type="text" value="">'
  244. + '</div>'
  245. + '</div>'
  246. + '</div>'
  247. + '</td>'
  248. + '<td>'
  249. + '<div class="form-flex">'
  250. + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
  251. + '<div class="z-comp-input">'
  252. + '<input type="text" value="">'
  253. + '</div>'
  254. + '</div>'
  255. + '</div>'
  256. + '</td>'
  257. + '<td>'
  258. + '<div class="form-flex">'
  259. + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
  260. + '<div class="z-comp-input" name="Contract[' + index + ']$returnAmount">'
  261. + '<input type="text" value="">'
  262. + '</div>'
  263. + '</div>'
  264. + '</div>'
  265. + '</td>'
  266. + '<td>'
  267. + '<div class="form-flex">'
  268. + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
  269. + '<div class="z-comp-input" name="Contract[' + index + ']$actualReturnAmount">'
  270. + '<input type="text" value="">'
  271. + '</div>'
  272. + '</div>'
  273. + '</div>'
  274. + '</td>'
  275. + '<td>'
  276. + '<div class="form-flex">'
  277. + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
  278. + '<div class="z-comp-date" name="Contract[' + index + ']$planReturnTime">'
  279. + '<input type="text" value="">'
  280. + '</div>'
  281. + '</div>'
  282. + '<div style="width: 50%;margin-left: 5px;" class="dateTimeRange endTimeRange' + (index) + '">'
  283. + '</div>'
  284. + '</div>'
  285. + '</td>'
  286. + '<td>'
  287. + '<div class="form-flex">'
  288. + '<div class="form-item" style="width: 50%;margin-right: 5px;">'
  289. + '<div class="z-comp-input" name="Contract[' + index + ']$description">'
  290. + '<input type="text" value="">'
  291. + '</div>'
  292. + '</div>'
  293. + '</div>'
  294. + '</td>'
  295. + '<td>'
  296. + '<div id="delBtn_' + (index) + '" class="table-btn delBtn_' + (index) + '" data-index="' + (index) + '">'
  297. + '<span>删除</span>'
  298. + '</div>'
  299. + '</td>';
  300. return trDom;
  301. }
  302. // TODO tax valid
  303. // function Tax_ValidateInput() {
  304. // var flag = true;
  305. // var htje = Number(jPage.find('[name="CONTRACT0000HTJE"]').val()) || 0;
  306. // var hsje_total = Number(jPage.find('[name="CONTRACT0000TAX_HSJE_TOTAL"]').val()) || 0;
  307. // if (hsje_total != htje) {
  308. // W.Page.ShowError('含税金额(小计)与合同金额不一致!');
  309. // flag = false;
  310. // }
  311. //
  312. // var hsje_rjcp = parseFloat(jPage.find('[name="CONTRACT0000TAX_HSJE_RJCP"]').val()) || 0;
  313. // var tax_softpatent = jPage.find('[name="CONTRACT0000TAX_SOFTPATENT"]').val();
  314. // if (hsje_rjcp > 0 && !tax_softpatent) {
  315. // W.Page.ShowError('请选择一个具体的软件产品名称!');
  316. // flag = false;
  317. // }
  318. // if (hsje_rjcp == 0 && tax_softpatent)
  319. // jPage.find('[name="CONTRACT0000TAX_SOFTPATENT"]').val('');
  320. //
  321. // return flag;
  322. // }
  323. }())