clockAudit.blade.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. @extends('layouts.app')
  2. @section('content')
  3. <div id="nav2">
  4. @component('process.menu')@endcomponent
  5. @component('process.checking-in.menuChecking-in')@endcomponent
  6. </div>
  7. <div class="container-fluid mt-3" id="list">
  8. <div class="card col-md-10 offset-md-1">
  9. <div class="card-body p-0">
  10. <table class="table table-striped table-bordered text-nowrap">
  11. <thead class="thead-light">
  12. <tr>
  13. <td>序号</td>
  14. <td>姓名</td>
  15. <td>手机号</td>
  16. <td>劳务所</td>
  17. <td>打卡时间</td>
  18. <td>打卡类型</td>
  19. <td>操作</td>
  20. <td>异常</td>
  21. <td>合计工时</td>
  22. </tr>
  23. </thead>
  24. <tbody>
  25. <tr v-for="(userDutyCheck,i) in userDutyChecks">
  26. <td>@{{ i+1 }}</td>
  27. <td ><p v-if="userDutyCheck.user_detail">@{{ userDutyCheck.user_detail.full_name }}</p></td>
  28. <td ><p v-if="userDutyCheck.user_detail">@{{ userDutyCheck.user_detail.mobile_phone }}</p></td>
  29. <td ><p v-if="userDutyCheck.user_detail">@{{ userDutyCheck.user_detail.user_labor_company }}</p></td>
  30. <td>@{{ userDutyCheck.checked_at }}</td>
  31. <td>
  32. <div v-if="userDutyCheck.verify_user_id" class="text-center">@{{ userDutyCheck.type }}</div>
  33. <select v-else v-model="userDutyCheck.type" @change="isException(userDutyCheck.id,userDutyCheck.user_id,userDutyCheck.checked_at,userDutyCheck.type)" class="form-control" style="width: 100px">
  34. <option value="登入">登入</option>
  35. <option value="登出">登出</option>
  36. </select>
  37. </td>
  38. <td>
  39. <b v-if="userDutyCheck.verify_user_id" class="text-success">已审核</b>
  40. <button v-else @click="storeClockAudit(userDutyCheck.id,userDutyCheck.type)" class="btn btn-primary w-80">审核</button>
  41. </td>
  42. <td>@{{ userDutyCheck.exception }}</td>
  43. <td>@{{ userDutyCheck.duration_man_hour }}</td>
  44. </tr>
  45. </tbody>
  46. </table>
  47. </div>
  48. </div>
  49. </div>
  50. @endsection
  51. @section('lastScript')
  52. <script>
  53. new Vue({
  54. el:"#list",
  55. data:{
  56. userDutyChecks:[
  57. @foreach($userDutyChecks as $userDutyCheck)
  58. {id:'{{$userDutyCheck->id}}',user_id:'{{$userDutyCheck->user_id}}',checked_at:'{{$userDutyCheck->checked_at}}',
  59. type:'{{$userDutyCheck->type}}',verify_user_id:'{{$userDutyCheck->verify_user_id}}',
  60. exception:'',duration_man_hour:'',@if($userDutyCheck->userDetail)user_detail:{!! $userDutyCheck->userDetail !!} @endif },
  61. @endforeach
  62. ],
  63. },
  64. methods:{
  65. storeClockAudit(id,type){
  66. let _this=this;
  67. axios.post('{{url("process/storeClockAudit")}}',{id:id,type:type})
  68. .then(function (response) {
  69. _this.userDutyChecks.every(function (userDutyCheck) {
  70. if (userDutyCheck.id==id){
  71. userDutyCheck.verify_user_id=response.data;
  72. tempTip.setDuration(4000);
  73. tempTip.showSuccess('审核通过!');
  74. return false
  75. }
  76. return true;
  77. });
  78. }).catch(function (err) {
  79. tempTip.setDuration(4000);
  80. tempTip.show('审核失败!网络错误:'+err);
  81. });
  82. },
  83. isException(id,user_id,checked_at,type){
  84. let _this=this;
  85. axios.post('{{url("process/isException")}}',{id:id,user_id:user_id,checked_at:checked_at,type:type})
  86. .then(function (response) {
  87. _this.userDutyChecks.every(function (userDutyCheck) {
  88. if (userDutyCheck.id==id){
  89. userDutyCheck.exception=response.data.exception;
  90. userDutyCheck.duration_man_hour=response.data.duration_man_hour;
  91. return false
  92. }
  93. return true;
  94. });
  95. }).catch(function (err) {
  96. tempTip.setDuration(4000);
  97. tempTip.show('校验失败!网络错误:'+err);
  98. });
  99. }
  100. },
  101. });
  102. </script>
  103. @endsection