workload.blade.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. @extends('layouts.app')
  2. @section('title')问题件-工作量@endsection
  3. @section('content')
  4. @component("order.issue.menu")@endcomponent
  5. <div class="container-fluid d-none" id="workLoad_div">
  6. <div style="min-width: 2000px;">
  7. <div id="form_div" style="min-width: 1950px;" class="bg-white"></div>
  8. <div class="form-inline mt-1 ">
  9. <span class="dropdown">
  10. <button type="button"
  11. class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
  12. :class="[checkData.length>0?'btn-dark text-light':'']"
  13. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">导出Excel
  14. </button>
  15. <div class="dropdown-menu">
  16. <a class="dropdown-item" @click="exportSelected()" href="javascript:">导出勾选内容</a>
  17. <a class="dropdown-item" @click="exportAll()" href="javascript:">导出所有页</a>
  18. </div>
  19. </span>
  20. </div>
  21. <table class="table table-sm table-striped table-bordered table-hover card-body mt-2 ">
  22. <tr class="text-nowrap" id="header"></tr>
  23. <tr class="text-center">
  24. <th>
  25. <input type="checkbox" id="all" @click="checkAll($event)">
  26. </th>
  27. <th>序号</th>
  28. <th>问题件ID</th>
  29. <th>创建时间</th>
  30. <th>完结时间</th>
  31. <th>创建人</th>
  32. <th>结束人</th>
  33. <th>客户</th>
  34. <th>快递单号</th>
  35. <th>处理时效</th>
  36. </tr>
  37. <tr v-for="(workLoad,index) in workLoads" class="text-center">
  38. <td><input type="checkbox" v-model="checkData" :value="workLoad.id"></td>
  39. <td>@{{ index+1 }}</td>
  40. <td>@{{ workLoad.id }}</td>
  41. <td>@{{ workLoad.created_at }}</td>
  42. <td>
  43. <template v-if="workLoad.endLog">@{{ workLoad.endLog.created_at }}</template>
  44. </td>
  45. <td>@{{ workLoad.createUser }}</td>
  46. <td >@{{ workLoad.endUser }}</td>
  47. <td>
  48. <template v-if="workLoad.order.owner">@{{ workLoad.order.owner.name }}</template>
  49. </td>
  50. <td>
  51. <div>
  52. <p v-for="(package,index) in workLoad.order.packages" class="p-0 m-0">
  53. <span v-if="workLoad.order.packages.length <=2 ?true : (index===1 || isBtn[workLoad.id])">@{{ package.logistic_number }}</span>
  54. </p>
  55. <b style="cursor:pointer;text-decoration: underline;color: #4aa0e6;" @click="shrink(workLoad.id)" v-if="isBtn[workLoad.id]">点击收起</b>
  56. <b style="cursor:pointer;text-decoration: underline;color: #4aa0e6;" @click="unfold(workLoad.id)" v-if="!isBtn[workLoad.id] && workLoad.order.packages.length >2">点击展开</b>
  57. </div>
  58. </td>
  59. <td>@{{ workLoad.processingTime }}</td>
  60. </tr>
  61. </table>
  62. <button class="btn btn-sm" :class="page.curPage === 1 ?'':'btn-outline-primary'"
  63. @click="goPage(page.curPage-1)"
  64. :disabled="page.curPage === 1">上一页</button>
  65. <button class="btn btn-sm" :class="page.curPage === page.lastPage ?'':'btn-outline-primary'"
  66. @click="goPage(page.curPage+1)"
  67. :disabled="page.curPage === page.lastPage">下一页</button>
  68. <input @keyup.enter="pageTurning($event)" class="form-control-sm ml-3 tooltipTarget"
  69. :placeholder="'当前页数:'+page.curPage+'/'+page.lastPage" title="去往指定页">
  70. <span class="text-muted m-1">共 @{{page.total}} 条 </span>
  71. </div>
  72. </div>
  73. @endsection
  74. @section('lastScript')
  75. <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
  76. <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
  77. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
  78. <script>
  79. let workLoadVue = new Vue({
  80. el: "#workLoad_div",
  81. data: {
  82. workLoads: {!! $workLoads->append(['createUser','endUser','processingTime',])->toJson()??[] !!},
  83. users:{!! $users->toJson() !!},
  84. owners:{!! $owners->toJson() !!},
  85. checkData: [],
  86. query: {
  87. create_user_id: '{{$options['create_user_id']}}',
  88. end_user_id: '{{$options['end_user_id']}}',
  89. client_no: '{{$options['client_no']}}',
  90. owner_id: '{{{$options['owner_id']}}}',
  91. create_start: '{{$options['create_start']}}',
  92. create_end: '{{$options['create_end']}}',
  93. order_issue_id: '{{$options['order_issue_id']}}',
  94. },
  95. page: {
  96. lastPage: '{!! $workLoads->lastPage() !!}',
  97. curPage: '{!! $workLoads->currentPage() !!}',
  98. total: '{!! $workLoads->total() !!}',
  99. nextPageUrl: '{!! $workLoads->nextPageUrl() !!}',
  100. prevPageUrl: '{!! $workLoads->previousPageUrl() !!}',
  101. },
  102. isBtn:[],
  103. form:'',
  104. },
  105. mounted: function () {
  106. $('#workLoad_div').removeClass('d-none');
  107. let users = [];
  108. let owners = [];
  109. this.users.forEach(function(user,index){
  110. users.push({name:user.id,value:user.name})
  111. })
  112. this.owners.forEach(function(owner,index){
  113. owners.push({name:owner.id,value:owner.name})
  114. })
  115. let data = [
  116. [
  117. {name: 'create_start', type: 'dateTime', tip: '创建日期', placeholder: '创建日期'},
  118. {name: 'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],placeholder:['',''],data:owners},
  119. {name: 'create_user_id', type: 'select', tip: '创建人', placeholder: '创建人',data:users},
  120. {name: 'end_user_id', type: 'select', tip: '结束人', placeholder: '结束人',data:users},
  121. ], [
  122. {name: 'end_date', type: 'dateTime', tip: '完结日期', placeholder: '完结日期'},
  123. {name: 'logistic_number', type: 'input', tip: '快递单号', placeholder: '快递单号'},
  124. {name: 'order_issue_id', type: 'input', tip: '问题件ID', placeholder: '问题件ID'},
  125. ]
  126. ];
  127. this.form = new query({
  128. 'el':'#form_div',
  129. condition:data,
  130. });
  131. this.form.init();
  132. },
  133. watch: {
  134. checkData: {
  135. handler() {
  136. if (this.checkData.length === this.workLoads.length) {
  137. document.querySelector('#all').checked = true;
  138. } else {
  139. document.querySelector('#all').checked = false;
  140. }
  141. },
  142. deep: true
  143. }
  144. },
  145. methods: {
  146. checkAll(e) {
  147. if (e.target.checked) {
  148. this.workLoads.forEach((el, i) => {
  149. if (this.checkData.indexOf(el.id) == '-1')
  150. this.checkData.push(el.id);
  151. });
  152. } else {
  153. this.checkData = [];
  154. }
  155. },
  156. exportSelected() {
  157. let url = '{{url('order/issue/workLoad/export')}}';
  158. let token = '{{ csrf_token() }}';
  159. excelExport(false, this.checkData, url, this.page.total, token);
  160. },
  161. exportAll() {
  162. let url = '{{url('order/issue/workLoad/export')}}';
  163. let token = '{{ csrf_token() }}';
  164. excelExport(true, null, url, null, token);
  165. },
  166. shrink(id){
  167. this.$set(this.isBtn,id,false);
  168. },
  169. unfold(id){
  170. this.$set(this.isBtn,id,true);
  171. setTimeout(function () {
  172. $(".tooltipTarget").tooltip({'trigger':'hover'});
  173. },1);
  174. },
  175. pageTurning(e){
  176. let page = $(e.target).val();
  177. if (page > this.page.lastPage) {
  178. return;
  179. }
  180. this.goPage(page);
  181. },
  182. goPage(page){
  183. let href = window.location.href;
  184. if(href.indexOf('?')==-1){
  185. href+='?'
  186. }
  187. if(href.indexOf('page=')!==-1){
  188. href = href.replace('page='+this.page.curPage,'page='+page);
  189. }else{
  190. href+='&page='+page;
  191. }
  192. window.location = href;
  193. }
  194. }
  195. })
  196. </script>
  197. @endsection