missionAudit.blade.php 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. @extends('layouts.app')
  2. @section('title')任务审核@endsection
  3. @section('content')
  4. <div id="nav2">
  5. @component('personnel.menu')@endcomponent
  6. @component('personnel.checking-in.menuChecking-in')@endcomponent
  7. </div>
  8. <div class="container-fluid card" id="list">
  9. <div class="card-header">
  10. <form method="GET" action="{{url('personnel/checking-in/missionAudit')}}" id="form">
  11. <table class="table-sm text-nowrap table-bordered" style="width: 100%">
  12. <tbody>
  13. <tr v-if="isBeingFilterConditions">
  14. <td colspan="4">
  15. <div class="col" style="padding:0">
  16. <a href="{{url('personnel/checking-in/missionAudit')}}"><span class="btn btn-warning text-dark">清除过滤条件</span></a>
  17. </div></td>
  18. <td></td>
  19. </tr>
  20. <tr>
  21. <td colspan="3">
  22. <select name="paginate" v-model="filterData.paginate" class="tooltipTarget form-control-sm" style="vertical-align: middle" @change="submit">
  23. <option value="50">50行</option>
  24. <option value="100">100行</option>
  25. <option value="200">200行</option>
  26. <option value="500">500行</option>
  27. <option value="1000">1000行</option>
  28. </select></td>
  29. <td></td>
  30. </tr>
  31. <tr>
  32. <td class="col" style="width: 220px">
  33. <div class="col p-0">
  34. <input v-model="filterData.start_date" :class="filterData.start_date?'bg-warning':''" name="start_date" type="date" class="form-control-sm m-0 col-8 tooltipTarget" title="选择显示指定日期的开始时间" style="width: 130px" autocomplete="off">
  35. </div>
  36. <input v-model="filterData.end_date" :class="filterData.end_date?'bg-warning':''" name="end_date" type="date" class="form-control-sm col-8 offset-md-0 mt-2 tooltipTarget" title="选择显示指定日期的结束时间" style="width: 130px" autocomplete="off">
  37. </td>
  38. <td style="width: 220px">
  39. <input v-model="filterData.full_name" :class="filterData.full_name?'bg-warning':''" name="full_name" class="form-control-sm" type="text" placeholder="姓名">
  40. </td>
  41. <td style="width: 220px">
  42. <input v-model="filterData.mobile_phone" :class="filterData.mobile_phone?'bg-warning':''" name="mobile_phone" class="form-control-sm" type="text" placeholder="电话">
  43. </td>
  44. <td><input hidden type="submit"></td>
  45. </tr>
  46. </tbody>
  47. </table>
  48. </form>
  49. </div>
  50. <div class="card-body">
  51. <table class="table table-striped">
  52. <thead class="thead-light">
  53. <tr>
  54. <td>序号</td>
  55. <td>日期</td>
  56. <td>姓名</td>
  57. <td>电话</td>
  58. <td>劳务所</td>
  59. <td>登记工时</td>
  60. <td>打卡工时</td>
  61. <td>工时差</td>
  62. <td>计费工时</td>
  63. <td>计件数量</td>
  64. <th>工作组</th>
  65. <td>查看</td>
  66. <td>审核</td>
  67. </tr>
  68. </thead>
  69. <tbody>
  70. <tr v-for="(processDailyParticipant,i) in processDailyParticipants">
  71. <td>@{{ i+1 }}</td>
  72. <td><p v-if="processDailyParticipant.process_daily">
  73. @{{ processDailyParticipant.process_daily.date }}</p></td>
  74. <td><p v-if="processDailyParticipant.user_detail">
  75. @{{ processDailyParticipant.user_detail.full_name }}</p></td>
  76. <td><p v-if="processDailyParticipant.user_detail">
  77. @{{ processDailyParticipant.user_detail.mobile_phone }}</p></td>
  78. <td><p v-if="processDailyParticipant.user_detail">
  79. @{{ processDailyParticipant.user_detail.userLabor.labor_company.name}}</p></td>
  80. <td>@{{ processDailyParticipant.hour_count }}</td>
  81. <td class="text-danger">@{{ processDailyParticipant.hour }}</td>
  82. <td class="text-danger">@{{ processDailyParticipant.diff }}</td>
  83. <td class="text-danger">@{{ processDailyParticipant.billingHour }}</td>
  84. <td>@{{ processDailyParticipant.unit_count }}</td>
  85. <td><span v-if="processDailyParticipant.user_detail&&processDailyParticipant.user_detail.user&&processDailyParticipant.user_detail.user.user_workgroups.length>0">@{{ processDailyParticipant.user_detail.user.user_workgroups[0].name }}</span></td>
  86. <td><button v-if="processDailyParticipant.user_detail" @click="showUserDetail(processDailyParticipant.user_id)" class="btn btn-info">查看</button></td>
  87. <td><b v-if="processDailyParticipant.status=='已审核'" class="text-success">已审核</b>
  88. <button v-else class="btn btn-primary" @click="storeMissionAudit(processDailyParticipant.id)">审核</button>
  89. </td>
  90. </tr>
  91. </tbody>
  92. </table>
  93. {{$processDailyParticipants->appends($request)->links()}}
  94. </div>
  95. </div>
  96. @endsection
  97. @section('lastScript')
  98. <script>
  99. new Vue({
  100. el:"#list",
  101. data:{
  102. processDailyParticipants:[
  103. @foreach($processDailyParticipants as $processDailyParticipant)
  104. {!! $processDailyParticipant !!},
  105. @endforeach
  106. ],
  107. filterData:{paginate:50,start_date:'',end_date:'',full_name:'',mobile_phone:''}
  108. },
  109. mounted:function () {
  110. this.initInputs();
  111. $(".tooltipTarget").tooltip({'trigger':'hover'});
  112. },
  113. computed:{
  114. isBeingFilterConditions:function(){
  115. for(let key in this.filterData){
  116. if(this.filterData[key]){
  117. if(key==='paginate')continue;
  118. return true
  119. }
  120. }
  121. return false;
  122. },
  123. },
  124. methods:{
  125. //回显条件参数
  126. initInputs:function(){
  127. let data=this;
  128. let uriParts =decodeURI(location.href).split("?");
  129. if(uriParts.length>1){
  130. let params = uriParts[1].split('&');
  131. params.forEach(function(paramPair){
  132. let pair=paramPair.split('=');
  133. let key = pair[0], val = pair[1];
  134. $('input[name="'+key+'"]').val(val);
  135. $('select[name="'+key+'"]').val(val);
  136. decodeURI(data.filterData[key]=val);
  137. });
  138. }
  139. },
  140. //提交表单
  141. submit:function(){
  142. let form = $("#form");
  143. form.submit();
  144. },
  145. //提交审核
  146. storeMissionAudit(id){
  147. let _this=this;
  148. axios.post('{{url("personnel/checking-in/storeMissionAudit")}}',{id:id})
  149. .then(function (response) {
  150. if (response.data.error){
  151. tempTip.setDuration(3000);
  152. tempTip.show('审核失败:'+response.data.error);
  153. return;
  154. }
  155. _this.processDailyParticipants.every(function (processDailyParticipant) {
  156. if (processDailyParticipant.id==id){
  157. processDailyParticipant.status="已审核";
  158. tempTip.setDuration(3000);
  159. tempTip.showSuccess('审核通过!');
  160. return false;
  161. }
  162. return true;
  163. });
  164. }).catch(function (err) {
  165. tempTip.setDuration(3000);
  166. tempTip.show('审核失败!网络错误:' + err);
  167. });
  168. },
  169. showUserDetail(user_id){
  170. window.open("{{url('maintenance/userLabor')}}/"+user_id);
  171. }
  172. },
  173. });
  174. </script>
  175. @endsection