PddDelivered.aspx 18 KB

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