DeliveredList.aspx 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage/ErpView.master" AutoEventWireup="true" CodeFile="DeliveredList.aspx.cs" Inherits="EDelivery_DeliveredList" %>
  2. <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
  3. <script type="text/javascript" src="js/printBill.js?v=<%=SiteVer %>"></script>
  4. <script type="text/javascript" src="js/DeliveredList.js?v=<%=SiteVer %>"></script>
  5. <script src="../js/alioss.js"></script>
  6. </asp:Content>
  7. <asp:Content ID="Content2" ContentPlaceHolderID="btn" runat="Server">
  8. <table style="width: 100%;">
  9. <tr>
  10. <td style="width: 80%;">
  11. <a id="id_sysWaybillBtn" class="mini-button mini-button-primary" style="padding: 2px 5px 2px 5px;" iconcls="icon-print" onclick="waybillFn()">淘宝打单</a>
  12. <a id="id_assignSupplier" runat="server" visible="false" class="mini-button mini-button-primary" style="padding: 2px 5px 2px 5px;" iconcls="icon-downgrade" onclick="assignSupplierFn()">供应商指派</a>
  13. <a class="mini-button mini-button-danger" style="padding: 2px 5px 2px 5px;" iconcls="icon-print" onclick="CNwaybillFn()">菜鸟打单</a>
  14. <a class="mini-button mini-button-primary" style="padding: 2px 5px 2px 5px;" iconcls="icon-folder" onclick="returnOrderFn()">打回</a>
  15. <a id="id_export" runat="server" visible="false" class="mini-button mini-button-primary" style="padding: 2px 5px 2px 5px;" iconcls="icon-folder" onclick="multiExport()">导出</a>
  16. </td>
  17. </tr>
  18. </table>
  19. </asp:Content>
  20. <asp:Content ID="Content4" ContentPlaceHolderID="content" runat="Server">
  21. <div class="mini-fit">
  22. <div id="m_grid" class="mini-datagrid" style="width: 100%; height: 100%;" showemptytext="true" contextmenu="#gridMenu" emptytext="暂无记录" url="../handler/sync.ashx?t=get_erp_deliveryedlist">
  23. <div property="columns">
  24. <div type="indexcolumn" width="20"></div>
  25. <div type="checkcolumn" width="20"></div>
  26. <div field="ctid" width="110" align="center" headeralign="center" renderer="orderIdRenderer">订单编号</div>
  27. <div field="pay_time" width="80" align="center" headeralign="center" renderer="orderPTimeRenderer">付款时间</div>
  28. <%--<div id="id_waitDelv_payment" field="payment" runat="server" visible="false" width="40" align="center" headeralign="center">金额</div>--%>
  29. <div field="seller_memo" width="150" align="center" headeralign="center" renderer="memoRenderer">备注</div>
  30. <div field="OtherMemo" id="id_othermemo" runat="server" visible="false" width="100" align="center" headeralign="center">额外备注</div>
  31. <%--<div field="Img" width="30" align="center" headeralign="center" renderer="ImgRenderer">图片</div>--%>
  32. <div field="receiver_address" width="130" align="center" headeralign="center" renderer="addressRenderer">收货地址</div>
  33. <div field="SupplierName" width="60" align="center" headeralign="center" renderer="orderCusRenderer">供应商</div>
  34. <div field="OrderState" width="50" align="center" headeralign="center" renderer="orderStatusRenderer">状态</div>
  35. <div field="FinishPlaceTime" width="60" dateformat="yyyy-MM-dd HH:mm" align="center" headeralign="center">下单时间</div>
  36. <div field="delivery_time" width="80" align="center" headeralign="center" renderer="deliveryTimeRenderer">发货时间</div>
  37. <div field="OutSid" width="50" align="center" headeralign="center">快递信息</div>
  38. <div field="OutSid" width="50" align="center" headeralign="center" renderer="changeDeliveryRenderer">修改快递信息</div>
  39. <div field="receiver_zip" width="50" align="center" headeralign="center">身份证</div>
  40. <div name="action" width="60" headeralign="center" align="center" renderer="actionRenderer" cellstyle="padding:0;">#</div>
  41. </div>
  42. </div>
  43. </div>
  44. <ul id="gridMenu" class="mini-contextmenu" onbeforeopen="onBeforeOpen">
  45. <li name="edit" iconcls="icon-copy" onclick="onCopyOrder">复制单号</li>
  46. <li name="edit" iconcls="icon-copy" onclick="onCopyBuyerNick">复制旺旺号</li>
  47. </ul>
  48. <div id="delivery_win" class="mini-window" title="指派供应商" style="width: 550px; height: 350px; position: relative; display: none">
  49. <table class="win_tb" border="0" cellpadding="0" cellspacing="1">
  50. <tr>
  51. <td class="td1">发货方式</td>
  52. <td class="td2" colspan="3">
  53. <select id="txtDeliveryType" style="width: 80%;">
  54. <option value="物流发货">物流发货</option>
  55. <option value="虚拟发货">虚拟发货</option>
  56. </select>
  57. </td>
  58. </tr>
  59. <tr>
  60. <tr>
  61. <td class="td1">运单号</td>
  62. <td class="td2">
  63. <input type="text" id="txtTransNo" /></td>
  64. </tr>
  65. </tr>
  66. <tr>
  67. <td class="td1">物流公司</td>
  68. <td class="td2" colspan="3">
  69. <input id="txtComName" class="mini-combobox" style="width: 80%;" textfield="name" valuefield="cpCode" onvaluechanged="onBillComChanged" url="../handler/sync.ashx?t=get_sel_mail" />
  70. </td>
  71. </tr>
  72. <tr>
  73. <td class="td1">备注</td>
  74. <td class="td2" colspan="3">
  75. <textarea id="txtdeliveryMemo" style="width: 96%; height: 60px;"></textarea></td>
  76. </tr>
  77. <tr>
  78. <td colspan="4">
  79. <div class="win_btn" style="text-align: center;">
  80. <a class="mini-button" iconcls="icon-ok" onclick="saveDeliveryFn">保存</a>&nbsp;
  81. <a class="mini-button" iconcls="icon-cancel" onclick="cancelDeliveryFn">取消</a>
  82. </div>
  83. </td>
  84. </tr>
  85. </table>
  86. </div>
  87. <div id="waybill_win" class="mini-window" title="系统打单" style="width: 550px; height: 250px; position: relative; display: none">
  88. <table class="win_tb" border="0" cellpadding="0" cellspacing="1">
  89. <tr>
  90. <td class="td1">物流公司</td>
  91. <td class="td2" colspan="3">
  92. <input id="txtBillCom" class="mini-combobox" style="width: 80%;" textfield="name" valuefield="cpCode" onvaluechanged="onBillComChanged" url="../handler/sync.ashx?t=get_sel_mail" />
  93. </td>
  94. </tr>
  95. <%--<tr>
  96. <td class="td1">快递模板</td>
  97. <td class="td2" colspan="3">
  98. <input id="txtBillModel" class="mini-combobox" style="width: 80%;" textfield="name" valuefield="id" />
  99. </td>
  100. </tr>--%>
  101. <tr>
  102. <td class="td1">打印机</td>
  103. <td class="td2" colspan="3">
  104. <input id="txtBillPrinter" class="mini-combobox" style="width: 80%;" textfield="name" valuefield="name" required="true" allowinput="true" valuefromselect="true" onvaluechanged="onBillPrinterChanged" />
  105. </td>
  106. </tr>
  107. <tr>
  108. <td colspan="4">
  109. <div class="win_btn" style="text-align: center;">
  110. <a id="id_saveWaybillBtn" class="mini-button" iconcls="icon-ok" onclick="saveWaybillFn">打印面单</a>&nbsp;
  111. <a class="mini-button" iconcls="icon-cancel" onclick="cancelWaybillFn">取消</a>
  112. </div>
  113. </td>
  114. </tr>
  115. </table>
  116. </div>
  117. <div id="waybill_win_CN" class="mini-window" title="菜鸟打单(订单号带N,且有收货地址)" style="color: orangered; width: 550px; height: 300px; position: relative; display: none">
  118. <table class="win_tb" border="0" cellpadding="0" cellspacing="1">
  119. <tr>
  120. <td colspan="4" style="color: red;">温馨提示:此打单方式必须有完整收货地址和电话</td>
  121. </tr>
  122. <tr>
  123. <td class="td1">物流公司</td>
  124. <td class="td2" colspan="3">
  125. <input id="txtBillCom_CN" class="mini-combobox" style="width: 80%;" textfield="name" valuefield="code" onvaluechanged="CNonBillComChanged" url="../handler/sync.ashx?t=get_waybill_company" />
  126. </td>
  127. </tr>
  128. <tr>
  129. <td class="td1">快递模板</td>
  130. <td class="td2" colspan="3">
  131. <input id="txtBillModel_CN" class="mini-combobox" style="width: 80%;" textfield="name" valuefield="Code" />
  132. </td>
  133. </tr>
  134. <tr>
  135. <td class="td1">打印机</td>
  136. <td class="td2" colspan="3">
  137. <input id="txtBillPrinter_CN" class="mini-combobox" style="width: 80%;" textfield="name" valuefield="name" required="true" allowinput="true" valuefromselect="true" onvaluechanged="CNonBillPrinterChanged" url="" />
  138. </td>
  139. </tr>
  140. <tr>
  141. <td colspan="4">
  142. <div class="win_btn" style="text-align: center;">
  143. <a class="mini-button" iconcls="icon-ok" onclick="CNsaveWaybillFn">打印面单</a>&nbsp;
  144. <a class="mini-button" iconcls="icon-cancel" onclick="CNcancelWaybillFn">取消</a>
  145. </div>
  146. </td>
  147. </tr>
  148. </table>
  149. </div>
  150. <div id="assign_win" class="mini-window" title="指派供应商" style="width: 350px; height: 180px; position: relative; display: none">
  151. <table class="win_tb" border="0" cellpadding="0" cellspacing="1">
  152. <tr>
  153. <td class="td1">供应商</td>
  154. <td class="td2" colspan="3">
  155. <input id="txtSupplierName" class="mini-combobox" style="width: 90%;" popupheight="500" popupminheight="300" popupmaxheight="1000" textfield="name" valuefield="id" required="true" allowinput="true" valuefromselect="true" url="../handler/sync.ashx?t=get_sel_supplier" />
  156. </td>
  157. </tr>
  158. <tr>
  159. <td colspan="4">
  160. <div class="win_btn" style="text-align: center;">
  161. <a class="mini-button" iconcls="icon-ok" onclick="saveAssignFn">保存</a>&nbsp;
  162. <a class="mini-button" iconcls="icon-cancel" onclick="cancelAssignFn">取消</a>
  163. </div>
  164. </td>
  165. </tr>
  166. </table>
  167. </div>
  168. <div id="issue_win" class="mini-window" title="问题反馈" style="width: 550px; height: 200px; position: relative; display: none">
  169. <table class="win_tb" border="0" cellpadding="0" cellspacing="1">
  170. <tr>
  171. <td class="td1">问题反馈</td>
  172. <td class="td2" colspan="3">
  173. <textarea id="txtIssue" style="width: 96%; height: 60px;"></textarea></td>
  174. </tr>
  175. <tr>
  176. <td colspan="4">
  177. <div class="win_btn" style="text-align: center;">
  178. <a class="mini-button" iconcls="icon-ok" onclick="saveIssueFn">保存</a>&nbsp;
  179. <a class="mini-button" iconcls="icon-cancel" onclick="canceIssueFn">取消</a>
  180. </div>
  181. </td>
  182. </tr>
  183. </table>
  184. </div>
  185. <div id="viewimg_win" class="mini-window" title="文件预览" style="width: 750px; height: 570px; position: relative; display: none">
  186. <img id="r_img" style="width: 700px; height: 500px;" onclick="largeImage(this)" src="../images/no_photo.png" />
  187. </div>
  188. <div id="change_win" class="mini-window" title="修改物流" style="width: 550px; height: 350px; position: relative; display: none">
  189. <input type="hidden" id="changeCtid" />
  190. <table class="win_tb" border="0" cellpadding="0" cellspacing="1">
  191. <tr>
  192. <tr>
  193. <td class="td1">运单号</td>
  194. <td class="td2">
  195. <input type="text" id="txtChangeTransNo" />
  196. </td>
  197. </tr>
  198. </tr>
  199. <tr>
  200. <td class="td1">物流公司</td>
  201. <td class="td2" colspan="3">
  202. <input type="text" id="txtChangeTransCom" />
  203. </td>
  204. </tr>
  205. <tr>
  206. <td colspan="4">
  207. <div class="win_btn" style="text-align: center;">
  208. <a class="mini-button" iconcls="icon-ok" onclick="saveChangeFn">保存</a>&nbsp;
  209. <a class="mini-button" iconcls="icon-cancel" onclick="cancelChangeFn">取消</a>
  210. </div>
  211. </td>
  212. </tr>
  213. </table>
  214. </div>
  215. <div id="uploaderPackFile_win" class="mini-window" title="上传包裹图片" style="width: 1000px; height: 300px; position: relative; display: none">
  216. <table class="win_tb" border="0" cellpadding="0" cellspacing="1">
  217. <tr>
  218. <td class="td1"></td>
  219. <td class="td2">
  220. <input type="file" id="pack_file" />
  221. </td>
  222. </tr>
  223. <tr>
  224. <td class="td1">文件地址</td>
  225. <td class="td2">
  226. <div id="packFile_url" style="gap: 10px; display: flex; flex-direction: column;"></div>
  227. </td>
  228. </tr>
  229. <tr>
  230. <td colspan="5">
  231. <div class="win_btn" style="text-align: center;">
  232. <a class="mini-button" iconcls="icon-ok" onclick="saveUploaderPackFileFn">确定</a>&nbsp;
  233. <a class="mini-button" iconcls="icon-cancel" onclick="cancelUploaderPackFileFn">取消</a>
  234. </div>
  235. </td>
  236. </tr>
  237. </table>
  238. </div>
  239. <script>
  240. const client = new OSS({
  241. // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  242. region: "oss-cn-fuzhou",
  243. // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  244. accessKeyId: "LTAI5tE7wuNkeT9jZ42bQnyr",
  245. accessKeySecret: "NnutvWhKl4HbQFSad3HosYbCkEkbjN",
  246. // 填写存储空间名称。
  247. bucket: "dfdiyfile",
  248. endpoint: "https://oss-cn-fuzhou.aliyuncs.com",
  249. });
  250. let ori_tid = "";
  251. let ori_ctid = "";
  252. let ori_type = "";
  253. function openPackFile(tid, ctid) {
  254. ori_tid = tid;
  255. ori_ctid = ctid;
  256. ori_type = "PACK_FILE";
  257. getFilesList();
  258. mini.get("uploaderPackFile_win").show();
  259. document.getElementById('pack_file').value = "";
  260. }
  261. function saveUploaderPackFileFn() {
  262. mini.get("uploaderPackFile_win").hide();
  263. }
  264. function cancelUploaderPackFileFn() {
  265. mini.get("uploaderPackFile_win").hide();
  266. }
  267. function getFilesList() {
  268. postAjax("getCellFile", { tid: ori_tid, ctid: ori_ctid, type: ori_type }, function (data) {
  269. $("#packFile_url").empty();
  270. let html = ``;
  271. for (var i = 0; i < data.length; i++) {
  272. html += `<div style="display:flex;gap:10px">
  273. <img src="${data[0].url}" style="width:40px;height:40px"/>
  274. </div>`
  275. }
  276. $("#packFile_url").append(html);
  277. });
  278. }
  279. document.getElementById('pack_file').addEventListener('change', async function (e) {
  280. const file = e.target?.files[0];
  281. const reader = new FileReader();
  282. let url = await putPackObject(file);
  283. let list = [url];
  284. postAjax("saveCellFile", { tid: ori_tid, ctid: ori_ctid, type: ori_type, urls: list.join(","), del: 1 }, function (data) {
  285. getFilesList();
  286. });
  287. document.getElementById('pack_file').value = "";
  288. });
  289. async function putPackObject(file) {
  290. try {
  291. let fileDir = dateFtt("yyyyMMdd", new Date())
  292. let name = "packDoc/" + fileDir + "/" + guid() + getSuff(file.name);
  293. // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
  294. // 您可以通过自定义文件名(例如exampleobject.txt)或文件完整路径(例如exampledir/exampleobject.txt)的形式实现将数据上传到当前Bucket或Bucket中的指定目录。
  295. // data对象可以自定义为file对象、Blob数据或者OSS Buffer。
  296. const options = {
  297. headers: { "Content-Type": "text/plain" },
  298. };
  299. const result = await client.put(name, file, options);
  300. return result.url;
  301. } catch (e) {
  302. console.log(e);
  303. }
  304. }
  305. function dateFtt(fmt, date) {
  306. var o = {
  307. "M+": date.getMonth() + 1, //月份
  308. "d+": date.getDate(), //日
  309. "h+": date.getHours(), //小时
  310. "m+": date.getMinutes(), //分
  311. "s+": date.getSeconds(), //秒
  312. "q+": Math.floor((date.getMonth() + 3) / 3), //季度
  313. "S": date.getMilliseconds() //毫秒
  314. };
  315. if (/(y+)/.test(fmt)) {
  316. fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  317. }
  318. for (var k in o) {
  319. if (new RegExp("(" + k + ")").test(fmt))
  320. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  321. }
  322. return fmt;
  323. }
  324. function getSuff(name) {
  325. return name.substring(name.lastIndexOf("."));
  326. }
  327. function guid() {
  328. return "xxxxxxxx-xxxx-4xxx-yxxx".replace(/[xy]/g, function (c) {
  329. var r = (Math.random() * 16) | 0,
  330. v = c == "x" ? r : (r & 0x3) | 0x8;
  331. return v.toString(16);
  332. });
  333. }
  334. </script>
  335. </asp:Content>