You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

573 lines
28 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. 
  2. @{
  3. ViewBag.Title = "MoProducePlan";
  4. Layout = "~/Views/Shared/_Form.cshtml";
  5. }
  6. <script src="~/Content/js/datepicker/WdatePicker.js"></script>
  7. <script>
  8. $(function () {
  9. var service = {
  10. isCanEditDate: false,
  11. Init: function () {
  12. var that = this;
  13. $("#txt_ItemCode").val('');
  14. $("#txt_ItemName").val('');
  15. $("#txt_SSName").val('');
  16. that.initControl();
  17. that.loadGrid();
  18. that.loadEvent();
  19. that.loadViewGrid();
  20. },
  21. initControl: function () {
  22. let that = this;
  23. let orgName = '';
  24. let userName = '@NFine.Code.OperatorProvider.Provider.GetCurrent().UserName';
  25. $.ajax({
  26. url: "/OMAY/Aps/GetOrgAName" + "?" + Math.random(),
  27. type: "Get",
  28. dataType: "json",
  29. async: false,
  30. success: function (data) {
  31. //
  32. console.log(data);
  33. if (data.state == "success") {
  34. orgName = data.message;
  35. }
  36. }
  37. });
  38. if (userName.indexOf('L') > -1 || userName.indexOf('C') > -1) {
  39. $("#txt_SSName").val(userName.substr(0, 2));
  40. $("#txt_SSName").attr("disabled", "disabled");
  41. $("#NF-UpdateMoPlan").attr("disabled", "disabled");
  42. }
  43. else {
  44. $("#NF-PrintLabel").attr("disabled", "disabled");
  45. }
  46. if (orgName == "生产主管") {
  47. //生产主管
  48. that.isCanEditDate = true;
  49. //$("#txt_SSName2").css("display", "block");
  50. //$("#lbl_SSName2").css("display", "block");
  51. }
  52. else if (orgName == "生产人员") {
  53. //生产人员
  54. that.isCanEditDate = false;
  55. $("#txt_SSName2").css("display", "none");
  56. $("#lbl_SSName2").css("display", "none");
  57. }
  58. else {
  59. that.isCanEditDate = false;
  60. $("#txt_SSName2").css("display", "none");
  61. $("#lbl_SSName2").css("display", "none");
  62. }
  63. if (!that.isCanEditDate) {
  64. var obj_Item1 = $("#gridList");
  65. var rowIds_Item1 = obj_Item1.getDataIDs();
  66. for (var i = 0; i < rowIds_Item1.length; i++) {
  67. $("#gridList").jqGrid('setCell', rowIds_Item1[i], "PlanStartDate", '', 'not-editable-cell');
  68. $("#gridList").jqGrid('setCell', rowIds_Item1[i], "PlanEndDate", '', 'not-editable-cell');
  69. $("#gridList").jqGrid('setCell', rowIds_Item1[i], "ApsOrderDate", '', 'not-editable-cell');
  70. }
  71. }
  72. },
  73. addArriveDateCellAttr(rowId, val, rawObject, cm, rdata) {
  74. //if (rdata.ApsOrderDate != "" && rdata.ApsOrderDate != null) {
  75. // if (rdata.Free5 == "" || rdata.Free5 == null) {
  76. // //var nowDate = GetNowDate();
  77. // //var pass = new Date(rdata.PreArriveDate).getDate() - new Date(rdata.ArriveDate).getDate();
  78. // var pass = daysBetween(rdata.PreArriveDate, rdata.ArriveDate);
  79. // if (pass <= 3 && pass >= 0) {
  80. // //return "style='background-color:darkgray'";
  81. // return "style='background-color:yellow'";
  82. // }
  83. // else if (pass > 3) {
  84. // return "style='background-color:darkgray'";
  85. // }
  86. // else {
  87. // return "style='background-color:red'";
  88. // }
  89. // }
  90. //}
  91. //else {
  92. // return "style='background-color:null'";
  93. //}
  94. },
  95. loadGrid: function () {
  96. var that = this;
  97. var queryJson = {
  98. ItemCode: $("#txt_ItemCode").val(),
  99. ItemName: $("#txt_ItemName").val(),
  100. SSName: $("#txt_SSName").val(),
  101. SSName2: $("#txt_SSName2").val(),
  102. MoCode: $("#txt_MoCode").val(),
  103. }
  104. var $gridList = $("#gridList");
  105. $gridList.dataGrid({
  106. url: "/OMAY/Aps/GetGridJsonChengPing" + "?" + Math.random(),
  107. postData: { queryJson: JSON.stringify(queryJson) },
  108. mtype: "POST",
  109. height: 400,
  110. width: $(window).width() - 300,
  111. cellEdit: true,
  112. cellsubmit: "clientArray",
  113. colModel: [
  114. { label: "主键", name: "ID", hidden: true, key: true },
  115. { label: '预订单号', name: 'PreOrderNo', width: 100, align: 'left' },
  116. { label: '业务员', name: 'BusinessName', width: 100, align: 'left' },
  117. { label: '工单', name: 'MOCode', width: 100, align: 'left' },
  118. { label: '工单行', name: 'MoSeq', width: 100, align: 'left' },
  119. { label: '工单类型', name: 'MoTypeValue', hidden: true, width: 100, align: 'left' },
  120. { label: '部门', name: 'DepName', width: 100, align: 'left' },
  121. { label: '生产日期', name: 'CreateDateTime', width: 150, align: 'left' },
  122. { label: '包装要求', name: 'PackageAsk', width: 100, align: 'left' },
  123. { label: '特殊要求', name: 'SpecialAsk', width: 100, align: 'left' },
  124. { label: '用途', name: 'Useage', width: 100, align: 'left' },
  125. { label: '存货编码', name: 'ItemCode', width: 100, align: 'left' },
  126. { label: '存货名称', name: 'ItemName', width: 100, align: 'left' },
  127. { label: '存货代码', name: 'ItemAddCode', width: 100, align: 'left' },
  128. { label: '规格', name: 'ItemStd', width: 150, align: 'left' },
  129. { label: '单位', name: 'ItemUnit', width: 100, align: 'left' },
  130. { label: '同步状态', name: 'APSStatus', width: 100, align: 'left' },
  131. { label: '数量', name: 'Amount', width: 100, align: 'left' },
  132. {
  133. label: '计划开始时间', name: 'PlanStartDate', width: 150, align: 'left',
  134. editable: true,
  135. editoptions: {
  136. dataInit: function (el) {
  137. console.log(that.isCanEditDate);
  138. if (!that.isCanEditDate)
  139. return;
  140. $(el).click(function () {
  141. WdatePicker({
  142. dateFmt: "yyyy-MM-dd"//时间显示格式
  143. });
  144. })
  145. }
  146. },
  147. },
  148. {
  149. label: '计划结束时间', name: 'PlanEndDate', width: 150, align: 'left',
  150. editable: true,
  151. editoptions: {
  152. dataInit: function (el) {
  153. $(el).click(function () {
  154. WdatePicker({
  155. dateFmt: "yyyy-MM-dd"//时间显示格式
  156. });
  157. })
  158. }
  159. },
  160. },
  161. {
  162. label: '排序时间', name: 'ApsOrderDate', align: 'left', width: 150,
  163. editable: true,
  164. editoptions: {
  165. dataInit: function (el) {
  166. $(el).click(function () {
  167. WdatePicker({
  168. dateFmt: "yyyy-MM-dd HH:mm:ss"//时间显示格式
  169. });
  170. })
  171. }
  172. },
  173. },
  174. ],
  175. shrinkToFit: true,//宽度自适应
  176. width: "100%",
  177. autowidth: true,
  178. gridComplete: function () {
  179. if (!that.isCanEditDate) {
  180. var obj_Item1 = $("#gridList");
  181. var rowIds_Item1 = obj_Item1.getDataIDs();
  182. for (var i = 0; i < rowIds_Item1.length; i++) {
  183. $("#gridList").jqGrid('setCell', rowIds_Item1[i], "PlanStartDate", '', 'not-editable-cell');
  184. $("#gridList").jqGrid('setCell', rowIds_Item1[i], "PlanEndDate", '', 'not-editable-cell');
  185. $("#gridList").jqGrid('setCell', rowIds_Item1[i], "ApsOrderDate", '', 'not-editable-cell');
  186. }
  187. }
  188. },
  189. pager: "#gridPager",
  190. sortname: 'ApsOrderDate,PlanStartDate',
  191. sortorder: "asc",
  192. viewrecords: true,
  193. multiselect: true,
  194. subGrid: true, // (1)开启子表格支持
  195. subGridRowExpanded: function (subgrid_id, rowid) { // (2)子表格容器的id和需要展开子表格的行id,将传入此事件函数
  196. // console.log(subgrid_id, rowid);
  197. //
  198. $("#gridList").jqGrid("setSelection", rowid, false);
  199. that.bindSubGrid3(subgrid_id, rowid);
  200. }
  201. });
  202. },
  203. loadViewGrid: function () {
  204. var objList = $("#gridList").jqGrid('getGridParam', 'selarrrow');
  205. if (objList.length == 0) {
  206. objList = ['-1'];
  207. }
  208. var $gridList = $("#gridList2");
  209. $gridList.dataGrid({
  210. url: "/OMAY/Aps/GetApsPlanSelectSubItemList" + "?" + Math.random(),
  211. postData: { ids: objList.join() },
  212. mtype: "POST",
  213. height: 280,
  214. width: $(window).width() - 300,
  215. colModel: [
  216. { label: "主键", name: "ID", hidden: true, key: true },
  217. { label: '子件料号', name: 'SubItemCode', width: 150, align: 'left' },
  218. { label: '子件名称', name: 'SubItemName', width: 150, align: 'left' },
  219. { label: '子件规格', name: 'SubItemStd', width: 150, align: 'left' },
  220. { label: '主数量', name: 'Quantity', width: 100, align: 'left' },
  221. { label: '主单位', name: 'InvUnit', width: 100, align: 'left' },
  222. { label: '辅计量', name: 'Amount', width: 100, align: 'left' },
  223. { label: '辅单位', name: 'AmountUnit', width: 100, align: 'left' },
  224. ],
  225. shrinkToFit: true,//宽度自适应
  226. width: "100%",
  227. autowidth: true,
  228. gridComplete: function () {
  229. },
  230. pager: "#gridPager2",
  231. sortname: 'MOCode,MoSeq',
  232. sortorder: "asc",
  233. viewrecords: true,
  234. multiselect: false
  235. });
  236. },
  237. bindSubGrid3: function (subgrid_id, rowid) {
  238. //
  239. $("#gridList").jqGrid("setSelection", rowid, false);
  240. var subgrid_table_id;
  241. subgrid_table_id = subgrid_id + "_t"; // (3)根据subgrid_id定义对应的子表格的table的id
  242. var subgrid_pager_id;
  243. subgrid_pager_id = subgrid_id + "_pgr" // (4)根据subgrid_id定义对应的子表格的pager的id
  244. $("#" + subgrid_id).html("<table id='" + subgrid_table_id + "' class='scroll'></table><div id='" + subgrid_pager_id + "' class='scroll'></div>");
  245. var MOCode = $("#gridList").jqGrid('getRowData', rowid).MOCode;
  246. var MoSeq = $("#gridList").jqGrid('getRowData', rowid).MoSeq;
  247. // (6)创建jqGrid对象
  248. $("#" + subgrid_table_id).dataGrid({
  249. cellEdit: true,
  250. mtype: "GET",
  251. url: "/OMAY/Aps/GetApsPlanSubGridJsonList?moCode=" + MOCode + "&moSeq=" + MoSeq + "&" + Math.random(), // (7)子表格数据对应的url,注意传入的contact.id参数
  252. colModel: [
  253. { label: "主键", name: "ID", hidden: true, key: true },
  254. { label: '子件行号', name: 'SubSeq', width: 150, align: 'left' },
  255. { label: '子件料号', name: 'SubItemCode', width: 150, align: 'left' },
  256. { label: '子件名称', name: 'SubItemName', width: 150, align: 'left' },
  257. { label: '子件规格', name: 'SubItemDtd', width: 150, align: 'left' },
  258. { label: '比例', name: 'Rate', width: 100, align: 'left' },
  259. { label: '主数量', name: 'Quantity', width: 100, align: 'left' },
  260. { label: '主单位', name: 'InvUnit', width: 100, align: 'left' },
  261. { label: '辅计量', name: 'Amount', width: 100, align: 'left' },
  262. { label: '辅单位', name: 'AmountUnit', width: 100, align: 'left' },
  263. ],
  264. //colModel: ColModelSub,
  265. shrinkToFit: true,//宽度自适应
  266. multiselect: true,
  267. prmNames: { search: "search" },
  268. viewrecords: true,
  269. height: "100%",
  270. //rowNum: 20,
  271. //pager: subgrid_pager_id,
  272. });
  273. },
  274. query: function () {
  275. console.log("点击查询");
  276. let queryJson = {
  277. ItemCode: $("#txt_ItemCode").val(),
  278. ItemName: $("#txt_ItemName").val(),
  279. SSName: $("#txt_SSName").val(),
  280. SSName2: $("#txt_SSName2").val(),
  281. MoCode: $("#txt_MoCode").val(),
  282. };
  283. // that.loadGrid(queryJson);
  284. $("#gridList").jqGrid('setGridParam', {
  285. postData: { queryJson: JSON.stringify(queryJson) },
  286. }).trigger('reloadGrid');
  287. },
  288. loadEvent: function () {
  289. var that = this;
  290. $("#btn_search").click(function () {
  291. that.query();
  292. });
  293. $("#NF-InstructionBill").click(function () {
  294. // console.log("编辑指令单");
  295. var objList = $("#gridList").jqGrid('getGridParam', 'selarrrow');
  296. // console.log(objList);
  297. if (objList.length == 0) {
  298. $.modalMsg("请选择一条数据", "warning");
  299. return;
  300. }
  301. var idstr = objList.join();
  302. // return;
  303. $.modalOpen({
  304. id: "Form",
  305. title: "指令单",
  306. url: "/OMAY/Aps/EditInstructionBill?ids=" + idstr + "",
  307. width: "600px",
  308. height: "400px",
  309. callBack: function (iframeId) {
  310. top.frames[iframeId].submitForm();
  311. }
  312. });
  313. });
  314. $("#NF-ViewSubItem").click(function () {
  315. console.log("点击预览");
  316. //let queryJson = {
  317. // ItemCode: $("#txt_ItemCode").val(),
  318. // ItemName: $("#txt_ItemName").val(),
  319. // SSName: $("#txt_SSName").val(),
  320. //};
  321. // that.loadGrid(queryJson);
  322. var objList = $("#gridList").jqGrid('getGridParam', 'selarrrow');
  323. // console.log(objList);
  324. if (objList.length == 0) {
  325. $.modalMsg("请选择一条数据", "warning");
  326. return;
  327. }
  328. console.log(objList);
  329. $("#gridList2").jqGrid('setGridParam', {
  330. postData: { ids: objList.join() },
  331. }).trigger('reloadGrid');
  332. });
  333. $("#NF-PrintLabel").click(function () {
  334. console.log("打印条码");
  335. var ids = $("#gridList").jqGrid('getGridParam', 'selarrrow'); //获取 多行数据
  336. if (ids.length != 1) {
  337. $.modalMsg("请选择一条数据", "warning");
  338. return;
  339. }
  340. var POCode = "";
  341. var PORow = "";
  342. for (var i in ids) {
  343. MODetailID = $("#gridList").jqGrid('getRowData', ids[i]).MODetailID;
  344. MOCode = $("#gridList").jqGrid('getRowData', ids[i]).MOCode;
  345. Sequence = $("#gridList").jqGrid('getRowData', ids[i]).MoSeq;
  346. InvCode = $("#gridList").jqGrid('getRowData', ids[i]).ItemCode;
  347. MoTypeValue = $("#gridList").jqGrid('getRowData', ids[i]).MoTypeValue;
  348. }
  349. $.modalOpen({
  350. id: "FormAddItemLot",
  351. title: "成品条码产生",
  352. url: "/OMAY/ICSMoCreateLot/From?MOCode=" + encodeURI(encodeURI(MOCode)) + "&Sequence=" + Sequence + "&InvCode=" + InvCode + "&Type=" + 3 + "&MODetailID=" + MODetailID + "&MoTypeValue=" + MoTypeValue + "&" + Math.random(),
  353. width: "550px",
  354. height: "1000px",
  355. callBack: function (iframeId) {
  356. top.frames[iframeId].submitForm();
  357. }
  358. });
  359. });
  360. $("#NF-UpdateMoPlan").click(function () {
  361. // console.log('@NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode');
  362. // return;
  363. var ids = $("#gridList").jqGrid('getGridParam', 'selarrrow'); //获取 多行数据
  364. if (ids.length != 1) {
  365. $.modalMsg("请选择一条数据", "warning");
  366. return;
  367. }
  368. let obj = {
  369. isCanUpdateStatus:false,
  370. ids: ids[0],
  371. line: $("#gridList").jqGrid('getRowData', ids[0]).DepName,
  372. planStartDate: $("#gridList").jqGrid('getRowData', ids[0]).PlanStartDate,
  373. planEndDate: $("#gridList").jqGrid('getRowData', ids[0]).PlanEndDate,
  374. orderDate: $("#gridList").jqGrid('getRowData', ids[0]).ApsOrderDate,
  375. };
  376. //if (!obj.orderDate) {
  377. // $.modalMsg("排序时间格式错误", "warning");
  378. // return;
  379. //}
  380. //if (!obj.planStartDate) {
  381. // $.modalMsg("计划开始时间必填", "warning");
  382. // return;
  383. //}
  384. //if (!obj.planEndDate) {
  385. // $.modalMsg("计划结束时间必填", "warning");
  386. // return;
  387. //}
  388. if (new Date(obj.planStartDate) > new Date(obj.planEndDate)) {
  389. $.modalMsg("计划开始时间不能大于结束时间", "warning");
  390. return;
  391. }
  392. //if (!obj.orderDate) {
  393. // obj.orderDate = new Date().toLocaleDateString();
  394. //}
  395. $.ajax({
  396. url: "/OMAY/Aps/UpdateMoPlan" + "?" + Math.random(),
  397. type: "POST",
  398. dataType: "json",
  399. async: false,
  400. data: {
  401. keyValue: JSON.stringify(obj)
  402. },
  403. success: function (data) {
  404. //
  405. console.log(data);
  406. if (data.state == "success") {
  407. $.modalMsg("修改成功", "success");
  408. that.query();
  409. }
  410. else
  411. $.modalMsg(data.message, "warning");
  412. }
  413. });
  414. });
  415. $("#txt_SSName").change(function (event,handle) {
  416. //console.log( $("#txt_SSName").val());
  417. // console.log(val);
  418. // console.log("值改变了");
  419. let val = $("#txt_SSName").val();
  420. if (!val) {
  421. $("#NF-PrintLabel").attr("disabled", "disabled");
  422. }
  423. else {
  424. $("#NF-PrintLabel").removeAttr("disabled");
  425. }
  426. });
  427. }
  428. }
  429. service.Init();
  430. })
  431. </script>
  432. <iframe id="ifrm" src="" width="0" height="0"></iframe>
  433. <script>
  434. </script>
  435. <div class="topPanel" style="height:100px;">
  436. <div class="toolbar">
  437. <div class="btn-group">
  438. <a id="NF-InstructionBill" authorize="no" style="margin-left:3px;" class="btn btn-primary"><i class="fa fa-pencil-square-o"></i>指令单</a>
  439. <a id="NF-ViewSubItem" authorize="no" style="margin-left:3px;" class="btn btn-primary"><i class="fa fa-pencil-square-o"></i>预览子料</a>
  440. <a id="NF-PrintLabel" authorize="no" style="margin-left:3px;" class="btn btn-primary"><i class="fa fa-pencil-square-o"></i>生成条码</a>
  441. <a id="NF-UpdateMoPlan" authorize="yes" style="margin-left:3px;" class="btn btn-primary"><i class="fa fa-pencil-square-o"></i>修改</a>
  442. @*<a id="NF-ExportAll" authorize="yes" class="btn btn-default" onclick="btn_ExportAll()"><i class="fa fa-download"></i>导出</a>*@
  443. <a class="btn btn-primary" onclick="$.reload()"><span class="glyphicon glyphicon-refresh"></span></a>
  444. </div>
  445. <div class="btn-group" style="display:block;padding-left:2px;">
  446. <a class="btn btn-primary" id="downPrintControl" href="~/PrintActivex.exe" style="display:none">点击下载打印组件</a>
  447. </div>
  448. @*<script>$('.toolbar').authorizeButton()</script>*@
  449. </div>
  450. <div class="search">
  451. <table>
  452. <tr>
  453. <td class="HideItems" style="text-align:right;"><label class="lglabel HideItems" for="txt_MoCode">&nbsp;&nbsp;&nbsp;&nbsp;生产工单</label>:</td>
  454. <td class="HideItems">
  455. <div class="input-group HideItems">
  456. <input id="txt_MoCode" type="text" class="form-control HideItems" style="width: 100px;">
  457. </div>
  458. </td>
  459. <td class="HideItems" style="text-align:right;"><label class="lglabel HideItems" for="txt_ItemCode">&nbsp;&nbsp;&nbsp;&nbsp;存货编码</label>:</td>
  460. <td class="HideItems">
  461. <div class="input-group HideItems">
  462. <input id="txt_ItemCode" type="text" class="form-control HideItems" style="width: 100px;">
  463. </div>
  464. </td>
  465. <td class="HideItems" style="text-align:right;"><label class="lglabel HideItems" for="txt_ItemName">&nbsp;&nbsp;&nbsp;&nbsp;存货名称</label>:</td>
  466. <td class="HideItems">
  467. <div class="input-group HideItems">
  468. <input id="txt_ItemName" type="text" class="form-control HideItems" style="width: 100px;">
  469. </div>
  470. </td>
  471. <td class="HideItems" style="text-align:right;"><label class="lglabel HideItems" for="txt_SSName">&nbsp;&nbsp;&nbsp;&nbsp;已下发产线</label>:</td>
  472. <td class="HideItems">
  473. <div class="input-group HideItems">
  474. @*<input id="txt_SSName" type="text" class="form-control HideItems" style="width: 100px;">*@
  475. <select id="txt_SSName" name="ssName" class="form-control select2 required" style="width: 200px;">
  476. <option value=""></option>
  477. <option value="L1">L1</option>
  478. <option value="L2">L2</option>
  479. <option value="L3">L3</option>
  480. <option value="L4">L4</option>
  481. <option value="L5">L5</option>
  482. <option value="L6">L6</option>
  483. <option value="L7">L7</option>
  484. <option value="C1">C1</option>
  485. <option value="C2">C2</option>
  486. </select>
  487. </div>
  488. </td>
  489. <td class="HideItems" style="text-align:right;"><label id="lbl_SSName2" class="lglabel HideItems" for="txt_SSName">未下发产线</label>:</td>
  490. <td class="HideItems">
  491. <div class="input-group HideItems">
  492. @*<input id="txt_SSName" type="text" class="form-control HideItems" style="width: 100px;">*@
  493. <select id="txt_SSName2" name="ssName2" class="form-control select2 required" style="width: 200px;">
  494. <option value=""></option>
  495. <option value="L1">L1</option>
  496. <option value="L2">L2</option>
  497. <option value="L3">L3</option>
  498. <option value="L4">L4</option>
  499. <option value="L5">L5</option>
  500. <option value="L6">L6</option>
  501. <option value="L7">L7</option>
  502. <option value="C1">C1</option>
  503. <option value="C2">C2</option>
  504. </select>
  505. </div>
  506. </td>
  507. </tr>
  508. <tr>
  509. <td>
  510. <span class="input-group-btn">
  511. <button id="btn_search" type="button" class="btn btn-primary"><i class="fa fa-search"></i></button>
  512. </span>
  513. </td>
  514. </tr>
  515. </table>
  516. </div>
  517. </div>
  518. <div class="gridPanel">
  519. <table id="gridList"></table>
  520. <div id="gridPager"></div>
  521. </div>
  522. <div class="gridPane2">
  523. <table id="gridList2"></table>
  524. <div id="gridPager2"></div>
  525. </div>