general.blade.php 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. @extends('layouts.app')
  2. @section('title')查询-退货管理@endsection
  3. @section('content')
  4. <div class="container-fluid">
  5. <div>
  6. <div class="d-none" id="list">
  7. @if(Session::has('successTip'))
  8. <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
  9. @endif <div id="form_div"></div>
  10. <span class="dropdown">
  11. <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
  12. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
  13. 导出Excel
  14. </button>
  15. <div class="dropdown-menu">
  16. <a class="dropdown-item" @click="exportExcel(false)" href="javascript:">导出勾选内容</a>
  17. <a class="dropdown-item" @click="exportExcel(true)" href="javascript:">导出所有页</a>
  18. </div>
  19. </span>
  20. @can('退货管理-审核')
  21. <span class="btn btn-sm btn-outline-dark" @click="checkAll" style="cursor: pointer">审核</span>
  22. @endcan
  23. @can('退货管理-编辑')
  24. <span class="btn btn-sm btn-outline-dark" @click="finishAll" style="cursor: pointer">完结</span>
  25. @endcan
  26. @can('退货管理-查询-一般-修改入库')
  27. @cannot('退货管理-客户不可见')
  28. <span class="dropdown">
  29. <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
  30. data-toggle="dropdown" title="将勾选记录的入库状态设定为是或否,仅对未完结状态的记录有效">
  31. 修改入库
  32. </button>
  33. <div class="dropdown-menu">
  34. <a class="dropdown-item" @click="setIsLoaded_batch(1)" href="javascript:">设定为是</a>
  35. <a class="dropdown-item" @click="setIsLoaded_batch(0)" href="javascript:">设定为否</a>
  36. <a class="dropdown-item" @click="setIsLoaded_batch('null')" href="javascript:">无需入库</a>
  37. <a class="dropdown-item" @click="setIsLoaded_batch(2)" href="javascript:">待推单</a>
  38. <a class="dropdown-item" @click="setIsLoaded_batch(4)" href="javascript:">待确认</a>
  39. </div>
  40. </span>
  41. @endcannot
  42. @endcan
  43. @can('退货管理-编辑')
  44. <a class="btn btn-sm btn-outline-dark" href="{{url('rejected/importRejectedNumber')}}" style="cursor: pointer">批量填充订单号</a>
  45. @endcan
  46. <button class="btn btn-sm ml-2 btn-primary" @click="copyLogisticNumber()">复制快递单号</button>
  47. <button class="btn btn-sm btn-outline-dark" @click="cancelCheck">取消审核 </button>
  48. <table class="table table-striped table-sm table-bordered table-hover text-nowrap table-body td-min-width-80" style="background: #fff;" id="table">
  49. <tr v-for="(rejectedBill,i) in rejectedBills" :data-id="rejectedBill.id" @click="selectTr===i+1?selectTr=0:selectTr=i+1" :class="selectTr===i+1?'focusing' : ''">
  50. <td>
  51. <label><input type="checkbox" :value="rejectedBill.id"/></label>
  52. </td>
  53. <td class="text-nowrap">
  54. <span class="text-muted" style="opacity:0.7">@{{ i+1 }}</span> <span v-if="rejectedBill.order_issue_rejected_bill" class="badge badge-pill badge-danger">问题件</span>
  55. </td>
  56. <td class="text-muted text-center">
  57. <span v-if="rejectedBill.is_checked==1">
  58. <span class="text-success">
  59. <span class="fa fa-check-square" ></span> @{{ rejectedBill.checked_numbers }}
  60. </span>
  61. </span>
  62. <span v-else>未审核</span>
  63. </td>
  64. <td class="" :class="[rejectedBill.is_finished==1?'text-success':'text-muted']">@{{rejectedBill.is_finished | yesNo}}</td>
  65. <td class="" :class="[rejectedBill.is_loaded==1?'text-success':'text-muted']">
  66. <span>
  67. <span v-if="rejectedBill.is_loaded==4">
  68. @can('退货管理-查询-一般-修改入库')
  69. <button class="btn btn-sm btn-info" @click="confirmBeStored($event,rejectedBill.id)">确定入库</button>
  70. @endcan
  71. </span>
  72. <span v-else>@{{rejectedBill.is_loaded | yesNoIsLoaded}}</span>
  73. </span>
  74. </td>
  75. <td class="text-muted"><span>@{{rejectedBill.created_at}}</span></td>
  76. <td class="text-muted"><span>@{{rejectedBill.record ? (rejectedBill.record.location_at ? rejectedBill.record.location_at : rejectedBill.record.record_at) : ''}}</span></td>
  77. <td><span v-if="rejectedBill.owner"><span>@{{rejectedBill.owner.name}}</span></span></td>
  78. <td><span>@{{rejectedBill.logistic_number_return}}</span></td>
  79. <td class="text-muted"><span v-if="rejectedBill.logistic"><span>@{{rejectedBill.logistic.name}}</span></span></td>
  80. <td>@{{rejectedBill.order_number}}</td>
  81. <td class="text-muted text-overflow-replace-100" style="pointer-events:auto"><span>@{{rejectedBill.sender}}</span></td>
  82. <td class="text-muted text-overflow-replace-200" style="pointer-events:auto"><span>@{{rejectedBill.mobile_sender}}</span></td>
  83. <td>@{{rejectedBill.logistic_number}}</td>
  84. @cannot('退货管理-到付费用')<td class="text-muted"><span>@{{rejectedBill.fee_collected}}</span></td>@endcannot
  85. @can('退货管理-查询-客户定义-爱奇艺')<td class="text-muted"><span>@{{rejectedBill.common_01}}</span></td>@endcan
  86. @cannot('退货管理-客户不可见')<td class="text-muted">@{{rejectedBill.common_02}}</td>@endcannot
  87. <td class="text-muted"><span>@{{rejectedBill.goods_amount}}</span></td>
  88. <td style="min-width: 1500px">
  89. <div class="w-100" :class="rejectedBill.items.length>1 ? 'up' : ''" :id="'rejected-'+rejectedBill.id" >
  90. <div class="row m-0" v-for="(item,i) in rejectedBill.items">
  91. @if($ownerSign)
  92. <div class="col-1 border border-1" style="overflow-x: hidden">
  93. <div class="w-100 text-overflow-warp-200 warp-min-200">@{{ (item.barcode && item.barcode.commodity) ? item.barcode.commodity.sku : '' }}</div>
  94. </div>@endif
  95. <div title="双击展开全部" @dblclick="barcodeGoodsLength(item)" class="border border-1" :class="item.barcode_goods_show_long ? 'col-auto' : '@if($ownerSign)col-1 @else col-1 @endif'" style="overflow-x: hidden">
  96. <div class="w-100 text-overflow-warp-200 warp-min-200">@{{item.barcode_goods}}</div>
  97. </div>
  98. <div title="双击展开全部" @dblclick="goodsNameLength(item)" class="border border-1" :class="item.name_goods_show_long ? 'col-auto' : 'col-1'" style="overflow-x: hidden">
  99. <div class="w-100 text-overflow-warp-200 warp-min-200">@{{item.name_goods}}</div>
  100. </div>
  101. <div class="col-1 border border-1">@{{item.amount}}</div>
  102. <div class="col-1 border border-1">@{{item.quality_label}}</div>
  103. <div class="col-1 border border-1">@{{item.batch_number}}</div>
  104. <div class="col-1 border border-1">@{{item.made_at}}</div>
  105. <div class="col-1 border border-1">@{{item.validity_at}}</div>
  106. <div class="col-1 border border-1">
  107. <div align="center" @mouseleave="removeCommonImg('common_img_package'+item.id)" @mouseenter="commonImg('img_package'+item.id,item.package_images)">
  108. <div :id="'img_package'+item.id">
  109. <img v-for="uploadFile in item.package_images" :src="imgPrefix+uploadFile.url+'-thumbnail.'+uploadFile.type">
  110. </div>
  111. </div>
  112. </div>
  113. <div class="col-1 border border-1">
  114. <div align="center" @mouseleave="removeCommonImg('common_img_commodity'+item.id)" @mouseenter="commonImg('img_commodity'+item.id,item.commodity_images)">
  115. <div :id="'img_commodity'+item.id">
  116. <img v-for="uploadFile in item.commodity_images" :src="imgPrefix+uploadFile.url+'-thumbnail.'+uploadFile.type">
  117. </div>
  118. </div>
  119. </div>
  120. <div class="col-1 border border-1">
  121. <div align="center" @mouseleave="removeCommonImg('common_img_'+item.id)" @mouseenter="commonImg('img_'+item.id,item.upload_files)">
  122. <div :id="'img_'+item.id">
  123. <img v-for="uploadFile in item.upload_files" :src="imgPrefix+uploadFile.url+'-thumbnail.'+uploadFile.type">
  124. </div>
  125. </div>
  126. </div>
  127. <div class="col-1 border border-1">@{{item.remark}}</div>
  128. </div>
  129. </div>
  130. <div class="text-center cursor-pointer" v-if="rejectedBill.items.length>1" @click="unfold(rejectedBill.id)">
  131. <div v-if="upList[rejectedBill.id]">点击收起明细</div>
  132. <div v-else>@{{rejectedBill.goods_amount}}件商品,点击展开明细</div>
  133. </div>
  134. </td>
  135. <td style="min-width:150px;">
  136. @can('退货管理-编辑备注')
  137. <textarea class="form-control form-control-sm" :rows="rejectedBill.remark?Math.ceil(rejectedBill.remark.length/8):2" cols=8
  138. @change="updateRejectedBillRemark($event)" :value="rejectedBill.remark" :data_id="rejectedBill.id">@{{ rejectedBill.remark }}</textarea>
  139. @else
  140. <span>@{{rejectedBill.remark}}</span>
  141. @endcan
  142. </td>
  143. <td class="text-muted">@{{rejectedBill.operator_name}}</td>
  144. @can('退货管理-编辑')
  145. <td>
  146. <span v-if="rejectedBill.is_finished!=1">
  147. @can('退货管理-编辑')
  148. <button class="btn btn-outline-info btn-sm tooltipTarget" @click="edit(rejectedBill.id)">改</button>
  149. @endcan
  150. @can('退货管理-删除')
  151. <button
  152. class="btn btn-outline-danger btn-sm tooltipTarget" @click="destroy(rejectedBill)">删</button>
  153. @endcan
  154. </span>
  155. <span v-else class="text-muted">已完结</span>
  156. </td>
  157. @endcan
  158. </tr>
  159. </table>
  160. <div class="text-info h5 btn btn">{{$rejectedBills->count()}}/{{$rejectedBills->total()}}</div>
  161. {{$rejectedBills->appends($paginateParams)->links()}}
  162. </div>
  163. <label><textarea id="clipboardDiv" style="opacity:0"></textarea></label>
  164. </div>
  165. </div>
  166. @endsection
  167. @section('lastScript')
  168. <script>
  169. let rejectedBills={!! $rejectedBills->toJson()!!}.data;
  170. let owners=[
  171. @foreach($owners as $owner)
  172. {id:'{{$owner->id}}',name:'{{$owner->name}}'},
  173. @endforeach
  174. ];
  175. let logistics=[
  176. @foreach($logistics as $logistic)
  177. {!! $logistic !!},
  178. @endforeach
  179. ];
  180. let qualityLabels=[
  181. @foreach($qualityLabels as $qualityLabel)
  182. {id:'{{$qualityLabel->id}}',name:'{{$qualityLabel->name}}'},
  183. @endforeach
  184. ];
  185. @if(isset($paginateParams))
  186. let paginateParams={!! json_encode($paginateParams) !!};
  187. @endif
  188. let total='{{$rejectedBills->total()}}';
  189. let editUrl = "{{url('rejectedBill')}}/";
  190. let destroyUrl = "{{url('rejectedBill')}}/";
  191. let ajaxConfirmBeStoredUrl = '{{url("apiLocal/rejectedBill/apiConfirmBeStored")}}';
  192. let ajaxCheckUrl = '{{url("apiLocal/rejectedBill/apiSetIsLoadedAll")}}';
  193. let ajaxCheckAllURL = '{{url("rejected/ajaxCheckAll")}}';
  194. let ajaxFinishAllUrl='{{url("rejected/ajaxFinishAll")}}';
  195. let csrfInput='@csrf';
  196. </script>
  197. <script src="{{mix('js/queryForm/export.js')}}"></script>
  198. <script src="{{mix('js/queryForm/queryForm.js')}}"></script>
  199. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>{{--新版2--}}
  200. <script>
  201. let vue = new Vue({
  202. el:"#list",
  203. data:{
  204. imgPrefix:"{{asset("/storage")}}",
  205. rejectedBills:rejectedBills,
  206. owners:[
  207. @foreach($owners as $owner)
  208. {name:'{{$owner->id}}',value:'{{$owner->name}}'},
  209. @endforeach
  210. ],
  211. logistics:[
  212. @foreach($logistics as $logistic)
  213. {name:'{{$logistic->id}}',value:'{{$logistic->name}}'},
  214. @endforeach
  215. ],
  216. qualityLabels:[
  217. @foreach($qualityLabels as $qualityLabel)
  218. {name:'{{$qualityLabel->id}}',value:'{{$qualityLabel->name}}'},
  219. @endforeach
  220. ],
  221. selectTr:'',
  222. upList:{},
  223. },
  224. mounted:function(){
  225. $(".up").slideUp();
  226. $(".tooltipTarget").tooltip({'trigger':'hover'});
  227. $('#list').removeClass('d-none');
  228. let data=[
  229. [
  230. {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间'},
  231. {name:'owner',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
  232. placeholder:['货主','定位或多选货主'],data:this.owners},
  233. {name:'order_number',type:'input',tip:'可支持多客户单号,糊模查找需要在右边打上%符号',placeholder:'客户单号'},
  234. {name:'logistic_number_return',type:'input',tip:'可支持多退回单号,糊模查找需要在右边打上%符号',placeholder:'退回单号'},
  235. {name:'logistic_number',type:'input',tip:'可支持多原单单号,糊模查找需要在右边打上%符号',placeholder:'原单单号'},
  236. {name:'is_checked',type:'select',placeholder: '是否审核',data:[{name:1,value:'已审核'},{name:0,value:'未审核'}]},
  237. {name:'id_logistic_return',type:'select',placeholder: '快递名称',data:this.logistics},
  238. {name:'remark',type:'input',tip:'退单备注:默认查询15天以内记录信息',placeholder: '退单备注'},
  239. ],[
  240. {name:'created_at_end',type:'dateTime',tip:'选择显示指定日期的结束时间'},
  241. {name:'barcode_goods',type:'input',tip:'可支持多商品条码,糊模查找需要在右边打上%符号',placeholder:'商品条码'},
  242. {name:'id_quality_label',type:'select',tip:'是否正品:正品仅显示全部是正品的退单,但残次显示的是包含有残次的退单',placeholder: '是否正品',data:this.qualityLabels},
  243. {name:'mobile_sender',type:'input',tip:'寄件人手机:输入完成敲回车提交',placeholder:'寄件人手机'},
  244. {name:'checked_numbers',type:'input',tip:'可支持多审核批次号,糊模查找需要在右边打上%符号',placeholder:'审核批次号'},
  245. {name:'is_loaded',type:'select',placeholder: '是否入库',data:[{name:1,value:'是'},{name:0,value:'否'},
  246. {name:'null',value:'无需入库'},{name:2,value:'待推单'},{name:4,value:'待确认'},{name:3,value:'交互异常'}]},
  247. {name:'is_issue',type:'select',data:[{name:'true',value:'有'},{name:'false',value:'无'}],tip:'问题件',placeholder:'问题件'}
  248. ]
  249. ];
  250. this.form=new query({
  251. el:"#form_div",
  252. condition:data
  253. });
  254. this.form.init();
  255. let column = [
  256. {name:'index',value: '序号', neglect: true},
  257. {name:'checked_numbers',value: '是否审核', },
  258. {name: 'is_finished', value: '是否完结',neglect: true},
  259. {name: 'is_loaded', value: '是否入库', neglect: true},
  260. {name:'created_at',value: '创建时间'},
  261. {name:'record_at',value: '退回记录时间'},
  262. {name: 'owner_name', value: '客户名称', neglect: true},
  263. {name: 'logistic_number_return', value: '退回单号'},
  264. {name: 'logistic_name', value: '退回公司', neglect: true},
  265. {name:'order_number',value: '订单号'},
  266. {name: 'sender', value: '姓名'},
  267. {name: 'mobile_sender', value: '电话'},
  268. {name: 'logistic_number', value: '原单单号'},
  269. @cannot('退货管理-到付费用'){name:'fee_collected',value: '到付费用',neglect: true},@endcannot
  270. @can('退货管理-查询-客户定义-爱奇艺'){name:'common_01',value: '寄件方省'},@endcan
  271. @cannot('退货管理-客户不可见'){name:'common_02',value: '重量'},@endcannot
  272. {name:'goods_amount',value: '商品总数'},
  273. {name:"goods",type:"multi",title:"商品信息",rows:[
  274. @if($ownerSign){value:"商品SKU",col:"1"},{value:"商品条码",col:"1"},
  275. @else{value:"商品条码",col:"1"},@endif
  276. {value:"商品名称",col:"1"},
  277. {value:"数量",col:"1"},
  278. {value:"质量",col:"1"},
  279. {value:"批次号",col:"1"},
  280. {value:"产期",col:"1"},
  281. {value:"效期",col:"1"},
  282. {value:"外箱图",col:"1"},
  283. {value:"产品图",col:"1"},
  284. {value:"照片",col:"1"},
  285. {value:"备注",col:"1"},
  286. ]},
  287. {name:'remark',value: '退单备注'},
  288. {name:'operator_name',value: '录入人'},
  289. @can('退货管理-编辑','退货管理-删除'){name:'remove',value: '操作', neglect: true},@endcan
  290. ];
  291. new Header({
  292. el: "table",
  293. name: "general",
  294. column: column,
  295. data: this.rejectedBills,
  296. fixedTop:($('#form_div').height())+2,
  297. }).init();
  298. this.rejectedBills.forEach(function(rejectedBill){
  299. rejectedBill.isShowCancelBtn=false;
  300. });
  301. },
  302. methods:{
  303. removeCommonImg(id){
  304. $('#'+id).remove();
  305. },
  306. commonImg(id,uploadFiles){
  307. let div = "";
  308. let isBtn = '@can('运输管理-运单-图片删除') true @endcan ';
  309. for(let i=0;i<uploadFiles.length;i++){
  310. let href = this.imgPrefix+uploadFiles[i].url+'-common.'+uploadFiles[i].type;
  311. let src = this.imgPrefix+uploadFiles[i].url+'-common.'+uploadFiles[i].type;
  312. div += "<div><a target='_blank' href='"+href+"'><img alt='#' src='"+src+"' style='position: relative;' ></a>"+"</div>"
  313. }
  314. $('#'+id).after(
  315. "<div id=\"common_"+id+"\" style='position: relative;padding-bottom: 2px;z-index: 99'>" +
  316. "<div style='position:relative;left: -50px' class='overflow-y-scrollbar-400'>"+div+
  317. "</div></div>");
  318. },
  319. cancelCheck() {
  320. let url = '{{url("apiLocal/rejected/cancelCheck")}}';
  321. let data = {ids: checkData};
  322. window.tempTip.setDuration(2000);
  323. window.axios.post(url, data).then(res => {
  324. if (res.data.success) {
  325. this.rejectedBills.forEach(item => {
  326. if (res.data.data.includes(item.id)) item.is_checked = 0;
  327. });
  328. window.tempTip.showSuccess('取消审核成功!');
  329. return;
  330. }
  331. window.tempTip.show(res.data.message ? res.data.message : '取消审核失败!');
  332. }).catch(err => {
  333. tempTip.show('取消审核失败!网络异常:' + err);
  334. });
  335. },
  336. unfold(id){
  337. this.$set(this.upList,id,this.upList[id] ? !this.upList[id] : true);
  338. $("#rejected-"+id).slideToggle();
  339. },
  340. selectTableRow(id,e){
  341. $('#headerParent tr[class=focusing]').removeClass('focusing');
  342. if (id === this.selectTr) {
  343. this.selectTr = '';
  344. return;
  345. }
  346. this.selectTr = id;
  347. $(e.target).parent('tr').addClass('focusing')
  348. },
  349. copyLogisticNumber(){
  350. let text="";
  351. checkData.forEach((id,i)=>{
  352. this.rejectedBills.some(bill=>{
  353. if (bill.id == id){
  354. text += bill.logistic_number_return;
  355. if (i!==checkData.length-1)text += "\r\n";
  356. return true;
  357. }
  358. });
  359. });
  360. this.copyText(text)
  361. },
  362. copyText(text){
  363. try {
  364. $('#clipboardDiv').text(text).select().focus();
  365. document.execCommand("Copy");
  366. tempTip.setIndex(1052)
  367. tempTip.setDuration(2000)
  368. tempTip.showSuccess('复制成功')
  369. } catch (e) {
  370. tempTip.setIndex(1052)
  371. tempTip.setDuration(2000)
  372. tempTip.showSuccess('复制失败:'+e)
  373. }
  374. },
  375. updateRejectedBillRemark:function (e) {
  376. let target = $(e.target);
  377. let _this = this;
  378. let id = target.attr('data_id');
  379. let remark = target.val();
  380. let ajaxUrl= '{{url("rejected/changeRejectedBillRemark")}}';
  381. axios.post(ajaxUrl,{'id':id,'remark':remark}).then(function (response) {
  382. if(response.data.success){
  383. _this.updateRejectedBills(id,remark);
  384. tempTip.setDuration(2000);
  385. tempTip.showSuccess('备注修改成功');
  386. }else{
  387. tempTip.setDuration(3000);
  388. tempTip.show('备注修改失败!'+response.data.fail_info);
  389. }
  390. }).catch(function (err) {
  391. tempTip.setDuration(3000);
  392. tempTip.show('备注修改失败!网络异常:'+err);
  393. });
  394. },
  395. // 更新表格数据
  396. updateRejectedBills(id,remark){
  397. this.rejectedBills.some(function(rejectedBill){
  398. if(parseInt(rejectedBill.id) === parseInt(id)){
  399. rejectedBill.remark = remark;
  400. return true;
  401. }
  402. })
  403. },
  404. edit(id){
  405. window.location.href=editUrl+id+"/edit";
  406. },
  407. destroy:function(rejectedBill){
  408. if(!confirm('确定要删除退货信息“' + rejectedBill.owner.name+':'+rejectedBill.logistic_number_return+ '”吗?')){return;}
  409. let data=this;
  410. let url = destroyUrl+rejectedBill.id;
  411. axios.delete(url,{id:rejectedBill.id})
  412. .then(function (response) {
  413. if(response.data.success){
  414. for (let i = 0; i < data.rejectedBills.length; i++) {
  415. if (data.rejectedBills[i].id===rejectedBill.id){
  416. data.rejectedBills.splice(i,1);
  417. break;
  418. }
  419. }
  420. tempTip.setDuration(1000);
  421. tempTip.showSuccess('删除退货信息"'+rejectedBill.owner.name+':'+rejectedBill.logistic_number_return+'"成功!')
  422. }else{
  423. tempTip.setDuration(1000);
  424. tempTip.show('删除退货信息"'+rejectedBill.owner.name+':'+rejectedBill.logistic_number_return+'"失败!')
  425. }
  426. })
  427. .catch(function (err) {
  428. tempTip.setDuration(3000);
  429. tempTip.show('删除退货信息失败!'+'网络错误:' + err);
  430. });
  431. },
  432. cancelCheckConfirmAll:function(){
  433. $('#checkConfirmingAll').tooltip('hide');
  434. setTimeout(function () {
  435. $(".tooltipTarget").tooltip({'trigger':'hover'})
  436. }, 10);
  437. this.rejectedBills.forEach(function(rejectedBill){
  438. if(rejectedBill.is_checked===-1)
  439. rejectedBill.is_checked='0';
  440. })
  441. },
  442. setIsLoaded_batch:function(val){
  443. let _this=this;
  444. if(checkData.length===0){
  445. tempTip.show('没有勾选记录');
  446. $(e.target).val("");
  447. return;
  448. }
  449. let is_loaded=0;
  450. let is_loadedLabel='否';
  451. if(parseInt(val)===1){
  452. is_loaded=1;
  453. is_loadedLabel='是';
  454. }else if(parseInt(val)===2){
  455. is_loaded=2;
  456. is_loadedLabel='待推单';
  457. }else if(parseInt(val)===4){
  458. is_loaded=4;
  459. is_loadedLabel='待确认';
  460. }else if(val==="null"){
  461. is_loaded='null';
  462. is_loadedLabel='无需入库';
  463. }
  464. if(!confirm("确定要标记所有勾选入库情况为'"+is_loadedLabel+"'吗")){return;}
  465. axios.post(ajaxCheckUrl,{ids:checkData,is_loaded:is_loaded}).then(function(response){
  466. if(response.data.success){
  467. checkData.forEach(function(id){
  468. _this.rejectedBills.forEach(function(bill){
  469. if(bill.id===id){
  470. bill.is_loaded=is_loaded;
  471. }
  472. });
  473. });
  474. tempTip.setDuration(1000);
  475. tempTip.showSuccess('修改勾选记录的入库状态成功');
  476. }else{
  477. tempTip.setDuration(2500);
  478. tempTip.show('修改勾选记录的入库状态失败,错误:'+response.data.fail_info);
  479. }
  480. }).catch(function (e) {
  481. tempTip.setDuration(2500);
  482. tempTip.show('审核勾选内容失败,网络连接错误:'+e);
  483. });
  484. $(e.target).val("")
  485. },
  486. checkAll:function(){
  487. let _this=this;
  488. if(checkData.length===0){
  489. tempTip.show('没有勾选记录');
  490. return
  491. }
  492. if(!confirm("确定要标记所有勾选内容为'已审核'吗")){return;}
  493. axios.post(ajaxCheckAllURL,{ids:checkData}).then(function(response){
  494. if(response.data.success){
  495. response.data.rejecteds.forEach(function (rejected) {
  496. _this.rejectedBills.forEach(function(rejectedBill){
  497. if(parseInt(rejectedBill.id)===parseInt(rejected.id)){
  498. rejectedBill.is_checked=1;
  499. rejectedBill.checked_numbers=rejected.checked_numbers;
  500. }
  501. });
  502. });
  503. tempTip.setDuration(1000);
  504. tempTip.showSuccess('审核勾选内容成功');
  505. }else{
  506. tempTip.setDuration(2500);
  507. tempTip.show('审核勾选内容失败,错误:'+response.data.fail_info);
  508. }
  509. }).catch(function (e) {
  510. tempTip.setDuration(2500);
  511. tempTip.show('审核勾选内容失败,网络连接错误:'+e);
  512. })
  513. },
  514. confirmBeStored:function($e,id){
  515. let _this=this;
  516. axios.post(ajaxConfirmBeStoredUrl,{id:id}).then(function(response){
  517. if(response.data.success){
  518. _this.rejectedBills.forEach(function(rejectedBill){
  519. if(rejectedBill.id===id){
  520. rejectedBill.is_loaded=1;
  521. }
  522. });
  523. tempTip.setDuration(1000);
  524. tempTip.showSuccess('确认入库成功');
  525. }else{
  526. tempTip.setDuration(2500);
  527. tempTip.okWindow('数据异常无法确认!请在WMS确定入库状态后,勾选该条目手动修改相应入库状态!','知道了')
  528. }
  529. }).catch(function (e) {
  530. alert('确认失败,网络连接错误:'+e);
  531. tempTip.setDuration(2500);
  532. tempTip.show('确认失败,网络连接错误:'+e);
  533. })
  534. },
  535. finishAll:function(){
  536. let _this=this;
  537. if(checkData.length===0){
  538. tempTip.show('没有勾选记录');
  539. return
  540. }
  541. if(!confirm("确定要标记所有勾选内容为'已完结'吗")){return;}
  542. axios.post(ajaxFinishAllUrl,{ids:checkData}).then(function(response){
  543. if(response.data.success){
  544. _this.rejectedBills.forEach(function(rejectedBill){
  545. checkData.forEach(function (checkedId) {
  546. if(rejectedBill.id===checkedId){
  547. rejectedBill.is_finished=1;
  548. }
  549. });
  550. });
  551. tempTip.setDuration(1000);
  552. tempTip.showSuccess('标记勾选内容为完结成功');
  553. }else{
  554. tempTip.setDuration(2500);
  555. tempTip.show('标记勾选内容为完结失败,错误:'+response.data.fail_info);
  556. }
  557. }).catch(function (e) {
  558. alert('网络连接错误:'+e);
  559. tempTip.setDuration(2500);
  560. tempTip.show('标记勾选内容完结失败,网络连接错误:'+e);
  561. })
  562. },
  563. exportExcel:function(checkAllSign){
  564. let url = '{{url('rejected/export')}}';
  565. let token='{{ csrf_token() }}';
  566. excelExport(checkAllSign,checkData,url,total,token);
  567. },
  568. goodsNameLength(obj) {
  569. obj.name_goods_show_long = !obj.name_goods_show_long;
  570. this.$forceUpdate();
  571. },
  572. barcodeGoodsLength(obj) {
  573. obj.barcode_goods_show_long = !obj.barcode_goods_show_long;
  574. this.$forceUpdate();
  575. },
  576. },
  577. filters:{
  578. yesNo:function (val) {
  579. if(!val||val===0||val==='0'){return '否'}
  580. return '完结'
  581. },
  582. yesNoIsLoaded:function (val) {
  583. switch(val){
  584. case 0:case '0':return '否';
  585. case 1:case '1':return '是';
  586. case 2:case '2':return '待推单';
  587. case 3:case '3':return '交互异常';
  588. case 4:case '4':return '待确认';
  589. case null:case 'null':return '无需入库';
  590. }
  591. return '';
  592. }
  593. }
  594. });
  595. </script>
  596. @endsection