Orl 短網址,供三星、福斯使用

ProductManagement.blade.php 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. @extends('admin.master')
  2. @section('content')
  3. <div class="row">
  4. <div class="col-lg-12">
  5. <div class="contentpanel">
  6. <form id="listForm" method="post">
  7. <!-- 功能按鈕(新增/批量處理等等) -->
  8. <div class="row" style="margin-bottom: 5px;">
  9. <div class="col-lg-12">
  10. <ol class="headermenu">
  11. <li>
  12. <button class="btn btn-darkblue btn-xs"
  13. id="step_0" {{ ($can_step_0) ? '' : 'disabled' }}><strong>前置作業:
  14. 人工添加批次(全部)</strong>
  15. </button>
  16. </li>
  17. <li>
  18. <button class="btn btn-darkblue btn-xs" id="step_21"><strong>第二步:
  19. 取得測試用XML連結(BY品牌)</strong></button>
  20. <input type="text" id="test_link" style="display: inline-block;">
  21. </li>
  22. <li>
  23. <button class="btn btn-darkblue btn-xs"
  24. id="step_22" {{ ($can_step_2) ? '' : 'disabled' }}><strong>第二步:
  25. 匯入測試報告(BY品牌)</strong>
  26. </button>
  27. <input type="file" style="display: none;" id="step_23" name="step_23">
  28. </li>
  29. <li>
  30. <button class="btn btn-darkblue btn-xs" id="step_4"><strong>第四步:
  31. 更新動態饋給來源(BY品牌)</strong>
  32. </button>
  33. </li>
  34. <li>
  35. <button class="btn btn-darkblue btn-xs" id="step_5"><strong>第五步:
  36. 匯出修改用excel(BY品牌)</strong>
  37. </button>
  38. </li>
  39. </ol>
  40. </div>
  41. </div>
  42. <!-- 搜尋段 -->
  43. <div class="panel panel-default">
  44. <div class="panel-heading" data-toggle="collapse" data-target="#search_content">
  45. <h3 class="panel-title">商品維護</h3>
  46. </div>
  47. <div id="search_content" class="collapse in">
  48. <div class="panel-body">
  49. <!-- 第一步: 選品牌 -->
  50. <div class="form-group col-xs-12 col-sm-6 col-lg-6">
  51. <label for="category">第一步: 選品牌</label>
  52. <select class="form-control input-sm" id="brand_no">
  53. @foreach($brands as $data)
  54. <option value="{{ $data['id'] }}"
  55. data-label="{{ $data['brandLabel'] }}">{{ $data['brandName'] }}</option>
  56. @endforeach
  57. </select>
  58. </div>
  59. <!-- 第一步: 選批次號 -->
  60. <div class="form-group col-xs-12 col-sm-6 col-lg-6">
  61. <label for="category">第一步: 選批次號</label>
  62. <select class="form-control input-sm" id="batch_no">
  63. @foreach($batchs as $data)
  64. <option value="{{ $data['batch_no'] }}">{{ $data['batch_no'] }}{{ ($data['m_status'] > 1) ? ' - 曾處理過' : '' }}</option>
  65. @endforeach
  66. </select>
  67. </div>
  68. <!-- 第三步: 品名檢視 -->
  69. <div class="form-group col-xs-12 col-sm-6 col-lg-6">
  70. <label for="tagName">第三步: 品名檢視</label>
  71. <input type="text" class="form-control input-sm" id="g_title"
  72. maxlength="512">
  73. </div>
  74. <!-- 第三步: 描述檢視 -->
  75. <div class="form-group col-xs-12 col-sm-6 col-lg-6">
  76. <label for="tagName">第三步: 描述檢視</label>
  77. <input type="text" class="form-control input-sm" id="g_description"
  78. maxlength="4096">
  79. </div>
  80. <!-- 第三步: 掃描問題檢視 -->
  81. <div class="form-group col-xs-12 col-sm-6 col-lg-6">
  82. <label for="tagName">第三步: 掃描問題檢視</label>
  83. <input type="text" class="form-control input-sm" id="m_comment"
  84. maxlength="4096">
  85. </div>
  86. <!-- 第三步: 狀態檢視(匯入報告後為掃描結果) -->
  87. <div class="form-group col-xs-12 col-sm-6 col-lg-6">
  88. <label for="category">第三步: 狀態檢視(匯入報告後為掃描結果)</label>
  89. <select class="form-control input-sm" id="m_status">
  90. @foreach($mstatuss as $data)
  91. <option value="{{ $data['id'] }}">{{ $data['mstatusName'] }}</option>
  92. @endforeach
  93. </select>
  94. </div>
  95. <!-- Search -->
  96. <div class="form-group col-xs-12 col-sm-12 col-lg-12">
  97. <a class="btn btn-success btn-xs" onclick="javascript: custom_search();">
  98. <div class="glyphicon glyphicon-search"></div>
  99. </a>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. <hr class="search-hr"/>
  105. <!-- 列表段 -->
  106. <div class="row">
  107. <div class="col-lg-12">
  108. <table id="GridView1" class="table table-striped table-bordered" cellspacing="0">
  109. <thead>
  110. <tr>
  111. <th>系統號</th>
  112. <th>商品號</th>
  113. <th>品名</th>
  114. <th>描述</th>
  115. <th>圖片</th>
  116. <th>定價</th>
  117. <th>售價</th>
  118. <th>掃描結果</th>
  119. <th>掃描問題</th>
  120. </tr>
  121. </thead>
  122. </table>
  123. </div>
  124. </div>
  125. </form>
  126. <!-- row -->
  127. </div>
  128. </div>
  129. </div>
  130. @endsection
  131. @section('extjs')
  132. <script>
  133. $(document).ready(function () {
  134. var table = $('#GridView1').dataTable({
  135. "scrollX": true,
  136. "processing": true,
  137. "serverSide": true,
  138. "ajax": "productManagement/grid",
  139. "paging": true,
  140. "ordering": true,
  141. "info": true,
  142. "order": [[0, "desc"]],
  143. "stateSave": true,
  144. "pagingType": "full",
  145. "bFilter": true,
  146. "aoColumnDefs": [{
  147. 'bSortable': false,
  148. 'aTargets': [1, 4, 5, 6] //不想參加排序的欄位,可指定多個,逗號分隔
  149. }]
  150. });
  151. // 從網址參觸發搜尋
  152. custom_search();
  153. $('#GridView1_filter').hide();
  154. });
  155. //客製化搜尋欄位
  156. function custom_search() {
  157. $('#GridView1').DataTable()
  158. .column(1).search($('#brand_no').val())
  159. .column(2).search($('#batch_no').val())
  160. .column(3).search($('#g_title').val())
  161. .column(4).search($('#g_description').val())
  162. .column(5).search($('#m_comment').val())
  163. .column(6).search($('#m_status').val())
  164. ;
  165. $('#GridView1').dataTable().fnDraw(true);
  166. }
  167. // 人工添加批次
  168. $("#step_0").click(function () {
  169. $.ajax({
  170. url: 'productManagement/manualXml',
  171. type: 'GET',
  172. async: false,
  173. success: function (data) {
  174. // 人工添加批次狀態鎖定
  175. alert('請等待處裡完成');
  176. $(this).prop("disabled", true);
  177. },
  178. error: function (xhr) {
  179. }
  180. });
  181. $(this).prop("disabled", true);
  182. return false;
  183. });
  184. // 取得測試連結
  185. $("#step_21").click(function () {
  186. var test_link = document.getElementById("test_link");
  187. test_link.value = 'https://' + '{{ $step_2_s3 }}' + '.s3.amazonaws.com/' + '{{ $step_2_env }}' + '/' + $('#brand_no :selected').attr('data-label') + '/' + $('#batch_no :selected').val().replace(/[^0-9]/g, '') + '.xml'
  188. test_link.select();
  189. document.execCommand("copy");
  190. return false;
  191. });
  192. // 匯入測試報告
  193. $("#step_22").click(function () {
  194. $("#step_23").click();
  195. $(this).prop("disabled", true);
  196. return false;
  197. });
  198. // 更新動態饋給
  199. $("#step_4").click(function () {
  200. $.ajax({
  201. url: 'productManagement/manualEndpoint',
  202. type: 'GET',
  203. async: false,
  204. contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  205. data: {
  206. "brand_no": $("#brand_no").val(),
  207. "batch_no": $("#batch_no").val()
  208. },
  209. success: function (data) {
  210. // 更新動態饋給狀態鎖定
  211. alert('請等待更新完成');
  212. $(this).prop("disabled", true);
  213. },
  214. error: function (xhr) {
  215. }
  216. });
  217. $(this).prop("disabled", true);
  218. return false;
  219. });
  220. // 匯出報告
  221. $("#step_5").click(function () {
  222. //加個讀取中畫面
  223. $.blockUI({
  224. css: {
  225. border: 'none',
  226. padding: '15px',
  227. backgroundColor: '#000',
  228. '-webkit-border-radius': '10px',
  229. '-moz-border-radius': '10px',
  230. opacity: .5,
  231. color: '#FFF'
  232. }
  233. });
  234. var http = new XMLHttpRequest();
  235. http.responseType = 'blob';
  236. var header;
  237. var blob;
  238. var url = 'productManagement/exportCsv';
  239. var params = 'brand_no=' + $('#brand_no').val() + '&batch_no=' + $('#batch_no').val();
  240. http.open("POST", url, true);
  241. http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  242. http.onreadystatechange = function () {//Call a function when the state changes.
  243. if (http.readyState == 4 && http.status == 200) {
  244. var filename = "";
  245. var disposition = http.getResponseHeader('Content-Disposition');
  246. if (disposition && disposition.indexOf('attachment') !== -1) {
  247. var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
  248. var matches = filenameRegex.exec(disposition);
  249. if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
  250. }
  251. var type = http.getResponseHeader('Content-Type');
  252. blob = new Blob([http.response], {type: type, endings: 'native'});
  253. var URL = window.URL || window.webkitURL;
  254. var downloadUrl = URL.createObjectURL(blob);
  255. var a = document.createElement("a");
  256. a.href = downloadUrl;
  257. a.download = filename;
  258. document.body.appendChild(a);
  259. a.click();
  260. }
  261. //解除鎖定
  262. $.unblockUI();
  263. }
  264. http.send(params);
  265. return false;
  266. });
  267. setInterval(function () {
  268. // 人工添加批次狀態鎖定
  269. $.ajax({
  270. url: 'productManagement/manualXmlStatus',
  271. type: 'GET',
  272. async: false,
  273. success: function (data) {
  274. if (data.can_step_0 == true) {
  275. if ($("#step_0").prop("disabled") == true) {
  276. alert('添加批次完成');
  277. }
  278. $("#step_0").prop("disabled", false);
  279. } else {
  280. $("#step_0").prop("disabled", true);
  281. }
  282. },
  283. error: function (xhr) {
  284. }
  285. });
  286. // 匯入資料狀態鎖定
  287. $.ajax({
  288. url: 'productManagement/importCsvStatus',
  289. type: 'GET',
  290. async: false,
  291. success: function (data) {
  292. if (data.can_step_2 == true) {
  293. // if ($("#step_22").prop("disabled") == true) {
  294. // alert('匯入報告完成');
  295. // }
  296. $("#step_22").prop("disabled", false);
  297. } else {
  298. $("#step_22").prop("disabled", true);
  299. }
  300. },
  301. error: function (xhr) {
  302. }
  303. });
  304. // 更新動態饋給狀態鎖定
  305. $.ajax({
  306. url: 'productManagement/manualEndpointStatus',
  307. type: 'GET',
  308. async: false,
  309. success: function (data) {
  310. if (data.can_step_4 == true) {
  311. if ($("#step_4").prop("disabled") == true) {
  312. alert('更新動態饋給完成');
  313. }
  314. $("#step_4").prop("disabled", false);
  315. } else {
  316. $("#step_4").prop("disabled", true);
  317. }
  318. },
  319. error: function (xhr) {
  320. }
  321. });
  322. $('[data-toggle="popover"]').popover();
  323. }, 5000);
  324. $(document).ready(function () {
  325. $("#step_23").on("change", function () {
  326. $.blockUI({
  327. css: {
  328. border: 'none',
  329. padding: '15px',
  330. backgroundColor: '#000',
  331. '-webkit-border-radius': '10px',
  332. '-moz-border-radius': '10px',
  333. opacity: .5,
  334. color: '#FFF'
  335. }
  336. });
  337. var input = $(this);
  338. var formData = new FormData();
  339. formData.append('csv', input[0].files[0]);
  340. formData.append('brand_no', $("#brand_no").val());
  341. formData.append('batch_no', $("#batch_no").val());
  342. $.ajax({
  343. url: "productManagement/importCsv",
  344. type: "POST",
  345. data: formData,
  346. processData: false,
  347. contentType: false,
  348. success: function (res) {
  349. alert('上傳完成,請等待匯入報告。');
  350. $.unblockUI();
  351. },
  352. error: function (XMLHttpRequest, textStatus) {
  353. alert('上傳失敗。');
  354. $.unblockUI();
  355. }
  356. });
  357. });
  358. });
  359. </script>
  360. @endsection