TimeOutGather.aspx 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage/ErpView.master" AutoEventWireup="true" CodeFile="TimeOutGather.aspx.cs" Inherits="ECharts_TimeOutGather" %>
  2. <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
  3. <style>
  4. .mini-panel-header {
  5. height: 45px
  6. }
  7. </style>
  8. <script src="../js/miniui/HeaderFilter.js" type="text/javascript"></script>
  9. <link href="../js/miniui/HeaderFilter.css" rel="stylesheet" type="text/css" />
  10. <script type="text/javascript">
  11. let current_index = 0;
  12. $(() => {
  13. let html = `<a class="mini-button mini-button-success" iconcls="icon-folder" onclick="exportAfterFn(this)">导出</a>`;
  14. mini.get("total_shop_grid_panel").setButtons([{ html }]);
  15. mini.get("total_goods_grid_panel").setButtons([{ html }]);
  16. let miniTabs = mini.get("miniTabs");
  17. miniTabs.on("activechanged", function (e) {
  18. current_index = e.index;
  19. $("#design_filter").hide()
  20. $("#customer_filter").hide()
  21. if (current_index == 0) {
  22. $("#customer_filter").show()
  23. } else if (current_index == 1) {
  24. $("#design_filter").show()
  25. }
  26. })
  27. })
  28. function exportAfterFn(that) {
  29. let grid = mini.get($(that).parents(".mini-panel").find(".panel").attr("id"));
  30. let extname = $("#hRepTitle").val();
  31. extname = extname == "" ? "导出报表" : extname
  32. if (grid == null) {
  33. alert("无法导出");
  34. return;
  35. }
  36. let columns = grid.columns;
  37. function getColumns(columns) {
  38. let cols = [];
  39. let h = "";
  40. for (let i = 0; i < columns.length; i++) {
  41. let column = columns[i];
  42. //if (!column.visible || column.header == undefined) {
  43. // continue;
  44. //}
  45. if (column.header == undefined || column.header == "#") {
  46. continue;
  47. }
  48. if (typeof column.header == "function") continue;
  49. if (column.header.indexOf("<") != -1) h = column.header.toString().substring(0, column.header.indexOf("<"));
  50. else h = column.header.toString();
  51. h = h.replace(/ /g, "");
  52. //if (i == 1) alert(h);
  53. //alert(column.header);
  54. //var col = { header: h, field: column.field, type: column.type, visible: column.visible };
  55. let col = { header: h, field: column.field, type: column.type, width: column.width, visible: true };
  56. if (column.columns) {
  57. col.columns = getColumns(column.columns);
  58. }
  59. cols.push(col);
  60. }
  61. return cols;
  62. }
  63. columns = getColumns(columns);
  64. let type = "";
  65. let sel_row = grid.getSelecteds();
  66. if (grid.multiSelect && sel_row.length > 0 || grid.url == "" || grid.showPager == false) {
  67. type = "bexcel";
  68. }
  69. else type = grid.url == "" ? "bexcel" : "excel";
  70. downLoad(grid, GetPrePath() + "/Reports/comExports.aspx", { extname: extname, url: encodeURIComponent(grid.url), type: type, columns: columns }, function () {
  71. //alert("导出成功");
  72. });
  73. }
  74. function downLoad(grid, url, fields, callback) {
  75. //创建Form
  76. var submitfrm = document.createElement("form");
  77. submitfrm.action = url;
  78. submitfrm.method = "post";
  79. submitfrm.target = "_blank";
  80. document.body.appendChild(submitfrm);
  81. if (fields) {
  82. for (var p in fields) {
  83. var input = mini.append(submitfrm, "<input type='hidden' name='" + p + "'>");
  84. var v = fields[p];
  85. if (typeof v != "string") v = mini.encode(v);
  86. input.value = v;
  87. }
  88. }
  89. if (grid == null) {
  90. alert("无法导出");
  91. return;
  92. }
  93. var parms = grid._dataSource.loadParams;
  94. for (var item in parms) {
  95. if (parms[item] == undefined || parms[item] == null) continue;
  96. mini.append(submitfrm, "<input type='hidden' name='" + item + "' value=\"" + parms[item] + "\">");
  97. }
  98. var sel_row = grid.getSelecteds();
  99. if (grid.multiSelect && sel_row.length > 0) {
  100. mini.append(submitfrm, "<input type='hidden' name='hExData' value='" + mini.encode(sel_row) + "'>");
  101. } else {
  102. if (grid.url == undefined || grid.url == "" || grid.showPager == false) {
  103. //ame = 'hExData' value = '" + mini.encode(grid.data)
  104. mini.append(submitfrm, "<input type='hidden' name='hExData' value='" + mini.encode(grid.data) + "'>");
  105. }
  106. }
  107. if (mini.get("txtSdate") != null && mini.get("txtSdate").getText() != "") {
  108. mini.append(submitfrm, "<input type='hidden' name='hExSdate' value=\"" + mini.get("txtSdate").getText() + "\">");
  109. }
  110. if (mini.get("txtEdate") != null && mini.get("txtEdate").getText() != "") {
  111. mini.append(submitfrm, "<input type='hidden' name='hExEdate' value=\"" + mini.get("txtEdate").getText() + "\">");
  112. }
  113. //mini.append()
  114. submitfrm.submit();
  115. setTimeout(function () {
  116. submitfrm.parentNode.removeChild(submitfrm);
  117. if (callback) callback();
  118. }, 1000);
  119. }
  120. //查询按钮
  121. function searchFn() {
  122. let designOrgId = mini.get("txtSearchDesignerOrg").getValue()
  123. let customerOrgId = mini.get("txtSearchCustomerOrg").getValue()
  124. if (current_index == 0) {
  125. let date1 = mini.get("txtSearchPayDate1").getValue()
  126. let date2 = mini.get("txtSearchPayDate2").getValue()
  127. mini.get("total_customer_grid").load({
  128. pay_date1: date1, pay_date2: date2, orgid: customerOrgId
  129. });
  130. } else if (current_index == 1) {
  131. let date1 = mini.get("txtSearchDesignDate1").getValue()
  132. let date2 = mini.get("txtSearchDesignDate2").getValue()
  133. mini.get("total_design_grid").load({
  134. pay_date1: date1, pay_date2: date2, orgid: designOrgId
  135. })
  136. }
  137. }
  138. function clearFn() {
  139. let design_filter = new mini.Form("#design_filter");
  140. design_filter.clear();
  141. let customer_filter = new mini.Form("#customer_filter");
  142. customer_filter.clear();
  143. }
  144. function orderAction(e) {
  145. var record = e.record;
  146. var id = record.id;
  147. var html = "";
  148. html += getGridBtn("memo", "详情", "getDetail('" + id + "')");
  149. return html;
  150. }
  151. function getDetail(id) {
  152. let params = { type: current_index, id };
  153. if (current_index == 0) {
  154. let date1 = mini.get("txtSearchPayDate1").getValue()
  155. let date2 = mini.get("txtSearchPayDate2").getValue()
  156. params = { ...params, pay_date1: date1, pay_date2: date2 };
  157. } else if (current_index == 1) {
  158. let date1 = mini.get("txtSearchDesignDate1").getValue()
  159. let date2 = mini.get("txtSearchDesignDate2").getValue()
  160. params = { ...params, pay_date1: date1, pay_date2: date2 };
  161. }
  162. mini.get("detail_grid").load(params);
  163. mini.get("detail_win").show();
  164. }
  165. function orderWaitDesign(e) {
  166. var record = e.record;
  167. var html = "<div>" + formatCommonDate(record.WaitDesignTime) + "</div>";
  168. return html;
  169. }
  170. function orderFinishDesign(e) {
  171. var record = e.record;
  172. var html = "<div>" + formatCommonDate(record.FinishDesignTime) + "</div>";
  173. return html;
  174. }
  175. function ordercreated(e) {
  176. var record = e.record;
  177. var html = "<div>" + formatCommonDate(record.create_time) + "</div>";
  178. return html;
  179. }
  180. function orderpayTime(e) {
  181. var record = e.record;
  182. var html = "<div>" + formatCommonDate(record.pay_time) + "</div>";
  183. return html;
  184. }
  185. </script>
  186. </asp:Content>
  187. <asp:Content ID="Content2" ContentPlaceHolderID="toolbar" runat="Server">
  188. <div id="customer_filter">
  189. <div class="filter_item" runat="server">
  190. <label>付款</label>
  191. <input id="txtSearchPayDate1" name="date1" data-options="{otype:'daterange',havetime:'1'}" class="mini-textbox inp-time" />
  192. <span class="sp">-</span>
  193. <input id="txtSearchPayDate2" name="date2" data-options="{otype:'daterange',havetime:'1'}" class="mini-textbox inp-time" />
  194. </div>
  195. <div class="filter_item" runat="server">
  196. <label>部门</label>
  197. <input id="txtSearchCustomerOrg" name="customerorg" shownullitem="true" allowinput="true" class="mini-combobox inp_middle" url="../handler/sync.ashx?t=get_sel_customer_org" value="" textfield="name" valuefield="id" />
  198. </div>
  199. </div>
  200. <div id="design_filter" style="display: none">
  201. <div class="filter_item" runat="server">
  202. <label>派单</label>
  203. <input id="txtSearchDesignDate1" name="date1" data-options="{otype:'daterange',havetime:'1'}" class="mini-textbox inp-time" />
  204. <span class="sp">-</span>
  205. <input id="txtSearchDesignDate2" name="date2" data-options="{otype:'daterange',havetime:'1'}" class="mini-textbox inp-time" />
  206. </div>
  207. <div class="filter_item" runat="server">
  208. <label>部门</label>
  209. <input id="txtSearchDesignerOrg" name="designerorg" shownullitem="true" allowinput="true" class="mini-combobox inp_middle" url="../handler/sync.ashx?t=get_sel_design_org" value="" textfield="name" valuefield="id" />
  210. </div>
  211. </div>
  212. </asp:Content>
  213. <asp:Content ID="Content4" ContentPlaceHolderID="content" runat="Server">
  214. <div class="mini-tabs" id="miniTabs" activeindex="0" style="width: 98%;">
  215. <div title="客服">
  216. <div style="display: flex; flex-direction: column; gap: 10px">
  217. <div style="display: flex; gap: 10px">
  218. <div id="total_shop_grid_panel" class="mini-panel mini-panel-info" title="客服" style="width: 98%; padding: 0px">
  219. <div id="total_customer_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%;" showemptytext="true" showpager="false"
  220. emptytext="暂无记录" url="../handler/sync.ashx?t=get_cuntomer_time_out_gather">
  221. <div property="columns">
  222. <div field="Name" width="60" align="center" headeralign="center">名称</div>
  223. <div field="OrgName" width="60" align="center" headeralign="center">团队</div>
  224. <div field="number" datatype="int" width="60" align="center" headeralign="center" allowsort="true">数量</div>
  225. <div name="action" width="60" headeralign="center" align="center" renderer="orderAction" cellstyle="padding:0;">#</div>
  226. </div>
  227. </div>
  228. </div>
  229. </div>
  230. </div>
  231. </div>
  232. <div title="设计">
  233. <div id="total_goods_grid_panel" class="mini-panel mini-panel-info" title="设计" style="width: 98%; padding: 0px">
  234. <div id="total_design_grid" class="mini-datagrid panel" sortmode="client" style="width: 100%;" showemptytext="true" showpager="false"
  235. emptytext="暂无记录" url="../handler/sync.ashx?t=get_design_time_out_gather">
  236. <div property="columns">
  237. <div field="Name" width="60" align="center" headeralign="center">名称</div>
  238. <div field="OrgName" width="60" align="center" headeralign="center">团队</div>
  239. <div field="number" datatype="int" width="60" align="center" headeralign="center" allowsort="true">数量</div>
  240. <div name="action" width="60" headeralign="center" align="center" renderer="orderAction" cellstyle="padding:0;">#</div>
  241. </div>
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. <div id="detail_win" class="mini-window" title="超时详情" style="width: 1000px; height: 570px; position: relative; display: none">
  247. <div id="detail_grid" class="mini-datagrid" style="width: 100%; height: 100%;" showsummaryrow="true" showemptytext="true" emptytext="暂无记录" url="../handler/sync.ashx?t=get_timeout_detail">
  248. <div property="columns">
  249. <div field="tid" width="100" align="left" headeralign="center">订单编号</div>
  250. <div field="WaitDesignTime" width="100" align="left" headeralign="center" renderer="orderWaitDesign">指派时间</div>
  251. <div field="FinishDesignTime" width="100" align="left" headeralign="center" renderer="orderFinishDesign">上传时间</div>
  252. <div field="create_time" width="100" align="left" headeralign="center" renderer="ordercreated">领单时间</div>
  253. <div field="pay_time" width="100" align="left" headeralign="center" renderer="orderpayTime">支付时间</div>
  254. </div>
  255. </div>
  256. </div>
  257. </asp:Content>