workload.blade.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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 >@{{ package.logistic_number }}</span>
  54. </p>
  55. </div>
  56. </td>
  57. <td>@{{ workLoad.processingTime }}</td>
  58. </tr>
  59. </table>
  60. <button class="btn btn-sm" :class="page.curPage === 1 ?'':'btn-outline-primary'"
  61. @click="goPage(page.curPage-1)"
  62. :disabled="page.curPage === 1">上一页</button>
  63. <button class="btn btn-sm" :class="page.curPage === page.lastPage ?'':'btn-outline-primary'"
  64. @click="goPage(page.curPage+1)"
  65. :disabled="page.curPage === page.lastPage">下一页</button>
  66. <input @keyup.enter="pageTurning($event)" class="form-control-sm ml-3 tooltipTarget"
  67. :placeholder="'当前页数:'+page.curPage+'/'+page.lastPage" title="去往指定页">
  68. <span class="text-muted m-1">共 @{{page.total}} 条 </span>
  69. </div>
  70. </div>
  71. @endsection
  72. @section('lastScript')
  73. <script type="text/javascript" src="{{asset('js/queryForm/queryForm200828a.js')}}"></script>
  74. <script type="text/javascript" src="{{asset('js/queryForm/export200818a.js')}}"></script>
  75. <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
  76. <script>
  77. let workLoadVue = new Vue({
  78. el: "#workLoad_div",
  79. data: {
  80. workLoads: {!! $workLoads->toJson() !!}['data'],
  81. users:{!! $users->toJson() !!},
  82. owners:{!! $owners->toJson() !!},
  83. checkData: [],
  84. query: {
  85. create_user_id: '{{$options['create_user_id']}}',
  86. end_user_id: '{{$options['end_user_id']}}',
  87. client_no: '{{$options['client_no']}}',
  88. owner_id: '{{{$options['owner_id']}}}',
  89. create_start: '{{$options['create_start']}}',
  90. create_end: '{{$options['create_end']}}',
  91. order_issue_id: '{{$options['order_issue_id']}}',
  92. },
  93. page: {
  94. lastPage: {!! $workLoads->toJson() !!}['last_page'],
  95. curPage: {!! $workLoads->toJson() !!}['current_page'],
  96. total: {!! $workLoads->toJson() !!}['total'],
  97. nextPageUrl: {!! $workLoads->toJson() !!}['next_page_url'],
  98. prevPageUrl: {!! $workLoads->toJson() !!}['prev_page_url'],
  99. lastPageUrl: {!! $workLoads->toJson() !!}['last_page_url'],
  100. },
  101. isBtn:[],
  102. form:'',
  103. },
  104. mounted: function () {
  105. $('#workLoad_div').removeClass('d-none');
  106. let users = [];
  107. let owners = [];
  108. this.users.forEach(function(user,index){
  109. users.push({name:user.id,value:user.name})
  110. })
  111. this.owners.forEach(function(owner,index){
  112. owners.push({name:owner.id,value:owner.name})
  113. })
  114. let data = [
  115. [
  116. {name: 'create_start', type: 'dateTime', tip: '创建日期', placeholder: '创建日期'},
  117. {name: 'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],placeholder:['',''],data:owners},
  118. {name: 'create_user_id', type: 'select', tip: '创建人', placeholder: '创建人',data:users},
  119. {name: 'end_user_id', type: 'select', tip: '结束人', placeholder: '结束人',data:users},
  120. ], [
  121. {name: 'end_date', type: 'dateTime', tip: '完结日期', placeholder: '完结日期'},
  122. {name: 'logistic_number', type: 'input', tip: '快递单号', placeholder: '快递单号'},
  123. {name: 'order_issue_id', type: 'input', tip: '问题件ID', placeholder: '问题件ID'},
  124. ]
  125. ];
  126. this.form = new query({
  127. 'el':'#form_div',
  128. condition:data,
  129. });
  130. this.form.init();
  131. },
  132. watch: {
  133. checkData: {
  134. handler() {
  135. if (this.checkData.length === this.workLoads.length) {
  136. document.querySelector('#all').checked = true;
  137. } else {
  138. document.querySelector('#all').checked = false;
  139. }
  140. },
  141. deep: true
  142. }
  143. },
  144. methods: {
  145. checkAll(e) {
  146. if (e.target.checked) {
  147. this.workLoads.forEach((el, i) => {
  148. if (this.checkData.indexOf(el.id) == '-1')
  149. this.checkData.push(el.id);
  150. });
  151. } else {
  152. this.checkData = [];
  153. }
  154. },
  155. exportSelected() {
  156. let url = '{{url('workLoad/export')}}';
  157. let token = '{{ csrf_token() }}';
  158. excelExport(false, this.checkData, url, this.page.total, token);
  159. },
  160. exportAll() {
  161. let url = '{{url('workLoad/export')}}';
  162. let token = '{{ csrf_token() }}';
  163. excelExport(true, null, url, null, token);
  164. },
  165. isUnfold(order){
  166. if (!order.is_unfold){
  167. this.$set(order,'is_unfold',true);
  168. return
  169. }
  170. order.is_unfold=false;
  171. },
  172. unfold(id){
  173. this.$set(this.isBtn,id,true);
  174. setTimeout(function () {
  175. $(".tooltipTarget").tooltip({'trigger':'hover'});
  176. },1);
  177. },
  178. pageTurning(e){
  179. let page = $(e.target).val();
  180. if (page > this.page.lastPage) {
  181. return;
  182. }
  183. let href = window.location.href;
  184. if(href.indexOf('page=')!==-1){
  185. href = href.replace('page='+this.page.curPage,'page='+page);
  186. }else{
  187. href+='&page='+page;
  188. }
  189. window.location = href;
  190. },
  191. goPage(page){
  192. let href = window.location.href;
  193. if(href.indexOf('page=')!==-1){
  194. href = href.replace('page='+this.page.curPage,'page='+page);
  195. }else{
  196. href+='&page='+page;
  197. }
  198. window.location = href;
  199. }
  200. }
  201. })
  202. </script>
  203. @endsection