workload.blade.php 9.9 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="{{asset('js/queryForm/queryForm201009.js')}}"></script>
  76. <script type="text/javascript" src="{{asset('js/queryForm/export200918.js')}}"></script>
  77. <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
  78. <script>
  79. let workLoadVue = new Vue({
  80. el: "#workLoad_div",
  81. data: {
  82. workLoads: {!! $workLoads->toJson() !!}['data'],
  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->toJson() !!}['last_page'],
  97. curPage: {!! $workLoads->toJson() !!}['current_page'],
  98. total: {!! $workLoads->toJson() !!}['total'],
  99. nextPageUrl: {!! $workLoads->toJson() !!}['next_page_url'],
  100. prevPageUrl: {!! $workLoads->toJson() !!}['prev_page_url'],
  101. lastPageUrl: {!! $workLoads->toJson() !!}['last_page_url'],
  102. },
  103. isBtn:[],
  104. form:'',
  105. },
  106. mounted: function () {
  107. $('#workLoad_div').removeClass('d-none');
  108. let users = [];
  109. let owners = [];
  110. this.users.forEach(function(user,index){
  111. users.push({name:user.id,value:user.name})
  112. })
  113. this.owners.forEach(function(owner,index){
  114. owners.push({name:owner.id,value:owner.name})
  115. })
  116. let data = [
  117. [
  118. {name: 'create_start', type: 'dateTime', tip: '创建日期', placeholder: '创建日期'},
  119. {name: 'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],placeholder:['',''],data:owners},
  120. {name: 'create_user_id', type: 'select', tip: '创建人', placeholder: '创建人',data:users},
  121. {name: 'end_user_id', type: 'select', tip: '结束人', placeholder: '结束人',data:users},
  122. ], [
  123. {name: 'end_date', type: 'dateTime', tip: '完结日期', placeholder: '完结日期'},
  124. {name: 'logistic_number', type: 'input', tip: '快递单号', placeholder: '快递单号'},
  125. {name: 'order_issue_id', type: 'input', tip: '问题件ID', placeholder: '问题件ID'},
  126. ]
  127. ];
  128. this.form = new query({
  129. 'el':'#form_div',
  130. condition:data,
  131. });
  132. this.form.init();
  133. },
  134. watch: {
  135. checkData: {
  136. handler() {
  137. if (this.checkData.length === this.workLoads.length) {
  138. document.querySelector('#all').checked = true;
  139. } else {
  140. document.querySelector('#all').checked = false;
  141. }
  142. },
  143. deep: true
  144. }
  145. },
  146. methods: {
  147. checkAll(e) {
  148. if (e.target.checked) {
  149. this.workLoads.forEach((el, i) => {
  150. if (this.checkData.indexOf(el.id) == '-1')
  151. this.checkData.push(el.id);
  152. });
  153. } else {
  154. this.checkData = [];
  155. }
  156. },
  157. exportSelected() {
  158. let url = '{{url('order/issue/workLoad/export')}}';
  159. let token = '{{ csrf_token() }}';
  160. excelExport(false, this.checkData, url, this.page.total, token);
  161. },
  162. exportAll() {
  163. let url = '{{url('order/issue/workLoad/export')}}';
  164. let token = '{{ csrf_token() }}';
  165. excelExport(true, null, url, null, token);
  166. },
  167. shrink(id){
  168. this.$set(this.isBtn,id,false);
  169. },
  170. unfold(id){
  171. this.$set(this.isBtn,id,true);
  172. setTimeout(function () {
  173. $(".tooltipTarget").tooltip({'trigger':'hover'});
  174. },1);
  175. },
  176. pageTurning(e){
  177. let page = $(e.target).val();
  178. if (page > this.page.lastPage) {
  179. return;
  180. }
  181. this.goPage(page);
  182. },
  183. goPage(page){
  184. let href = window.location.href;
  185. if(href.indexOf('?')==-1){
  186. href+='?'
  187. }
  188. if(href.indexOf('page=')!==-1){
  189. href = href.replace('page='+this.page.curPage,'page='+page);
  190. }else{
  191. href+='&page='+page;
  192. }
  193. window.location = href;
  194. }
  195. }
  196. })
  197. </script>
  198. @endsection