missionAudit.blade.php 8.7 KB

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