report.blade.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. @extends('layouts.app')
  2. @section('title')
  3. 绩效-人事管理
  4. @endsection
  5. @section('content')
  6. <div class="container-fluid card d-none" id="container">
  7. <div class="container-fluid nav3">
  8. <div class="card menu-third" >
  9. <ul class="nav nav-pills">
  10. <li class="nav-item">
  11. <a class="nav-link" style="cursor: pointer;" :class="type==0 ? 'active' : ''" @click="switchType(0)">项目部</a>
  12. </li>
  13. <li class="nav-item">
  14. <a class="nav-link" style="cursor: pointer;" :class="type==1 ? 'active' : ''" @click="switchType(1)">销售部</a>
  15. </li>
  16. <li class="nav-item">
  17. <a class="nav-link" style="cursor: pointer;" :class="type==2 ? 'active' : ''" @click="switchType(2)">仓库部</a>
  18. </li>
  19. </ul>
  20. </div>
  21. </div>
  22. @include("customer._selectedOwner")
  23. <div id="form_div"></div>
  24. <div>
  25. <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget"
  26. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
  27. 导出Excel
  28. </button>
  29. <div class="dropdown-menu">
  30. <a class="dropdown-item" @click="reportExport(false)" href="javascript:">导出勾选内容</a>
  31. <a class="dropdown-item" @click="reportExport(true)" href="javascript:">导出所有页</a>
  32. </div>
  33. <button class="ml-1 btn btn-sm btn-outline-primary" data-toggle="modal" data-target="#selectedOwner">刷 新</button>
  34. </div>
  35. <div>
  36. <table class="table table-sm table-striped table-hover td-min-width-80" id="table">
  37. <tr v-for="(report,i) in reports">
  38. <td>
  39. <label><input type="checkbox" :value="report.id"></label>
  40. </td>
  41. <td><span>@{{ i+1 }}</span></td>
  42. <td><span>@{{ report.countingMonth }}</span></td>
  43. <td><span>@{{ report.ownerStorageDuration }}</span></td>
  44. <td v-if="type == 0"><span>@{{ report.ownerGroupName }}</span></td>
  45. <td v-if="type == 0">
  46. <small v-for="user in report.ownerGroupUserList">@{{ user }}</small><br>
  47. </td>
  48. <td v-if="type == 0"><span>@{{ report.ownerName }}</span></td>
  49. <td v-if="type == 0"><span>@{{ report.warehouseName }}</span></td>
  50. <td v-if="type == 0"><span>@{{ report.userWorkGroupName }}</span></td>
  51. <td v-if="type == 0 || type == 1"><span>@{{ report.sell }}</span></td>
  52. <td v-if="type == 1"><span>@{{ report.ownerName }}</span></td>
  53. <td v-if="type == 1"><span>@{{ report.warehouseName }}</span></td>
  54. <td v-if="type == 1 || type == 2"><span>@{{ report.userWorkGroupName }}</span></td>
  55. <td v-if="type == 1"><span>@{{ report.ownerGroupName }}</span></td>
  56. <td v-if="type == 2">
  57. <small v-for="user in report.userWorkGroupUserList">@{{ user }}</small><br>
  58. </td>
  59. <td v-if="type == 2"><span>@{{ report.ownerName }}</span></td>
  60. <td v-if="type == 2"><span>@{{ report.warehouseName }}</span></td>
  61. <td v-if="type == 2"><span>@{{ report.principal }}</span></td>
  62. <td v-if="type == 2"><span>@{{ report.sell }}</span></td>
  63. <td><span>@{{ report.ownerStatus }}</span></td>
  64. <td><span>@{{ report.ownerCreatedAt }}</span></td>
  65. <td><span>@{{ report.dailyAverageOrderAmount }}</span></td>
  66. <td><span>@{{ report.lastMonthCountingArea }}</span></td>
  67. <td><span>@{{ report.currentMonthCountingArea }}</span></td>
  68. <td v-if="type == 0"><span>@{{ report.ownerBillReportInitialFee }}</span></td>
  69. <td v-if="type == 0 || type == 1"><span>@{{ report.ownerBillReportConfirmFee }}</span></td>
  70. <td v-if="type == 2"><span>@{{ report.ownerBillReportWorkFee }}</span></td>
  71. <td v-if="type == 2"><span>@{{ report.ownerAreaReportAccountingArea }}</span></td>
  72. <td><span>@{{ report.ownerBillReportConfirmUpdatedAt }}</span></td>
  73. <td v-if="type == 0"><span>@{{ report.timeOut }}</span></td>
  74. </tr>
  75. </table>
  76. {{$reports->appends($params)->links()}}
  77. </div>
  78. </div>
  79. @stop
  80. @section('lastScript')
  81. <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
  82. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>{{--新版2--}}
  83. <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
  84. <script>
  85. let vue = new Vue({
  86. el:"#container",
  87. data:{
  88. reports : [
  89. @foreach($reports as $report)
  90. {
  91. id : "{{$report->id}}",
  92. ownerGroupName : "{{$report->owner ? ($report->owner->userOwnerGroup ? $report->owner->userOwnerGroup->name : '') : ''}}",
  93. customerName : "{{$report->owner ? ($report->owner->customer ? $report->owner->customer->name : '') : ''}}",
  94. ownerName : "{{$report->owner ? $report->owner->name : ''}}",
  95. warehouseName : "{{$report->owner->warehouse->name ?? ''}}",
  96. userWorkGroupName : "{{$report->userWorkGroup->name ?? ''}}",
  97. ownerGroupUserList:[],
  98. userWorkGroupUserList:[],
  99. ownerStatus : "{{$report->owner ? ($report->owner->deleted_at ? "冻结" : "激活") : ''}}",
  100. ownerStorageDuration : "{{$report->owner ? ($report->owner->created_at ? ((new DateTime())->diff(new DateTime($report->owner->created_at))->days) : '') : ''}}",
  101. ownerCreatedAt : "{{$report->owner ? $report->owner->created_at : ''}}",
  102. countingMonth : "{{$report->counting_month}}",
  103. dailyAverageOrderAmount : "{{$report->daily_average_order_amount}}",
  104. lastMonthCountingArea : "{{$report->last_month_counting_area}}",
  105. currentMonthCountingArea : "{{$report->current_month_counting_area}}",
  106. ownerBillReportInitialFee : "{{$report->ownerBillReport ? $report->ownerBillReport->initial_fee : ''}}",
  107. ownerBillReportConfirmFee : "{{$report->ownerBillReport ? $report->ownerBillReport->confirm_fee : ''}}",
  108. ownerBillReportWorkFee : "{{$report->ownerBillReport->work_fee ?? ''}}",
  109. ownerAreaReportAccountingArea : "{{$report->owner->ownerAreaReport->accounting_area ?? ''}}",
  110. ownerBillReportConfirmUpdatedAt : "{{$report->ownerBillReport ? $report->ownerBillReport->updated_at : ''}}",
  111. },
  112. @endforeach
  113. ],
  114. owners : [
  115. @foreach($owners as $owner)
  116. {name:"{{$owner->id}}",value:"{{$owner->name}}"},
  117. @endforeach
  118. ],
  119. workgroup : [
  120. @foreach($ownerGroups as $ownerGroup)
  121. {name:"{{$ownerGroup->id}}",value:"{{$ownerGroup->name}}"},
  122. @endforeach
  123. ],
  124. customers : [
  125. @foreach($customers as $customer)
  126. {name:"{{$customer->id}}",value:"{{$customer->name}}"},
  127. @endforeach
  128. ],
  129. status : [
  130. {name:"激活",value:"激活"},
  131. {name:"冻结",value:"冻结"},
  132. ],
  133. sum : Number("{{ $reports->total() }}"),
  134. errors:[],
  135. type:0,
  136. header:"",
  137. },
  138. mounted(){
  139. $('#container').removeClass('d-none');
  140. let data=[
  141. [
  142. {name:'owner_groups',type:'select',tip:'项目小组',placeholder: '项目小组',data:this.workgroup},
  143. {name:'counting_month_start',type:'dateMonth',tip:'起始结算月',placeholder: '----年--月'},
  144. {name:'owners',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的项目'],
  145. placeholder:['项目','定位或多选项目'],data:this.owners},
  146. ],[
  147. {name:'customers',type:'select_multiple_select',tip:['客户','定位或多选客户'],placeholder: ['客户','定位或多选客户'],data:this.customers},
  148. {name:'counting_month_end',type:'dateMonth',tip:'结束结算月',placeholder: '----年--月'},
  149. {name:'status',type:'select',placeholder:'状态',data:this.status},
  150. ],
  151. ];
  152. this.form = new query({
  153. el:"#form_div",
  154. condition:data,
  155. });
  156. this.form.init();
  157. new Header({
  158. el: "table",
  159. name: "report",
  160. column: this._getRenderingHeader(),
  161. data: this.reports,
  162. fixedTop:($('#form_div').height())+2,
  163. before : [
  164. {colspan:2,value: '', class:"table-header-layer-1"},
  165. {colspan:2,value: '日期信息', class:"bg-light-purple"},
  166. {colspan:(this.type==1?7:8),value: '项目信息', class:"bg-light-khaki"},
  167. {colspan:3,value: '盘点信息', class:"bg-light-info"},
  168. {colspan:(this.type==0 ? '4' : (this.type==1 ? '2' : '3')),value: '账单信息', class:"bg-light-cyanogen"},
  169. ],
  170. }).init();
  171. },
  172. methods : {
  173. _getRenderingHeader()
  174. {
  175. let column = [
  176. {name:'index',value: '序号', neglect: true},
  177. {name:'countingMonth',value: '结算月' ,class:"bg-purple"},
  178. {name:'ownerStorageDuration',value: '入仓时长' ,class:"bg-purple"},
  179. ];
  180. switch (this.type) {
  181. case 0:
  182. column.push({name:'ownerGroupName',value: '项目小组',class:"bg-khaki"});
  183. column.push({name:'ownerGroupUserList', neglect: true,value: '成员',class:"bg-khaki"});
  184. column.push({name:'ownerName',value: '项目',class:"bg-khaki"});
  185. column.push({name:'warehouseName',value: '所在仓库',class:"bg-khaki"});
  186. column.push({name:'userWorkGroupName',value: '仓库小组',class:"bg-khaki"});
  187. column.push({name:'sell',value: '销售', neglect: true,class:"bg-khaki"});
  188. break;
  189. case 1:
  190. column.push({name:'sell',value: '销售', neglect: true,class:"bg-khaki"});
  191. column.push({name:'ownerName',value: '项目',class:"bg-khaki"});
  192. column.push({name:'warehouseName',value: '所在仓库',class:"bg-khaki"});
  193. column.push({name:'userWorkGroupName',value: '仓库小组',class:"bg-khaki"});
  194. column.push({name:'ownerGroupName',value: '项目小组',class:"bg-khaki"});
  195. break;
  196. case 2:
  197. column.push({name:'userWorkGroupName',value: '仓库小组',class:"bg-khaki"});
  198. column.push({name:'userWorkGroupUserList', neglect: true,value: '成员',class:"bg-khaki"});
  199. column.push({name:'ownerName',value: '项目',class:"bg-khaki"});
  200. column.push({name:'warehouseName',value: '所在仓库',class:"bg-khaki"});
  201. column.push({name:'principal', neglect: true,value: '项目负责人',class:"bg-khaki"});
  202. column.push({name:'sell',value: '销售', neglect: true,class:"bg-khaki"});
  203. break;
  204. }
  205. column.push({name:'ownerStatus',value: '状态',class:"bg-khaki"});
  206. column.push({name:'ownerCreatedAt',value: '创建日期',class:"bg-khaki"});
  207. column.push({name:'dailyAverageOrderAmount',value: '日均单量', neglect: true, class:"bg-info"});
  208. column.push({name:'lastMonthCountingArea',value: '上月盘点面积', neglect: true, class:"bg-info"});
  209. column.push({name:'currentMonthCountingArea',value: '本月盘点面积', neglect: true, class:"bg-info"});
  210. switch (this.type) {
  211. case 0:
  212. column.push({name:'ownerBillReportInitialFee',value: '初始账单金额', neglect: true, class:"bg-cyanogen"});
  213. column.push({name:'ownerBillReportConfirmFee',value: '确认账单金额', neglect: true, class:"bg-cyanogen"});
  214. column.push({name:'ownerBillReportConfirmUpdatedAt',value: '确认日期', class:"bg-cyanogen"});
  215. column.push({name:'timeOut',value: '超时', neglect: true,class:"bg-cyanogen"});
  216. break;
  217. case 1:
  218. column.push({name:'ownerBillReportConfirmFee',value: '确认账单金额', neglect: true, class:"bg-cyanogen"});
  219. column.push({name:'ownerBillReportConfirmUpdatedAt',value: '确认日期', class:"bg-cyanogen"});
  220. break;
  221. case 2:
  222. column.push({name:'ownerBillReportWorkFee',value: '操作费账单金额', neglect: true, class:"bg-cyanogen"});
  223. column.push({name:'ownerAreaReportAccountingArea',value: '结算面积', neglect: true, class:"bg-cyanogen"});
  224. column.push({name:'ownerBillReportConfirmUpdatedAt',value: '确认日期', class:"bg-cyanogen"});
  225. break;
  226. }
  227. return column;
  228. },
  229. reportExport(isAll){
  230. let url = '{{url('personnel/report/export')}}';
  231. let token='{{ csrf_token() }}';
  232. excelExport(isAll,checkData,url,this.sum,token);
  233. },
  234. createReport(isAll = false){
  235. let dom = $("#owners");
  236. let val = dom.selectpicker('val');
  237. if (isAll){
  238. val = [];
  239. this.owners.forEach(owner=>{
  240. val.push(owner.name);
  241. });
  242. }
  243. window.tempTip.setDuration(3000);
  244. window.tempTip.setIndex(1099);
  245. if (val.length<1){
  246. window.tempTip.show("未选择");
  247. return;
  248. }
  249. let url="{{url('customer/project/createReport')}}";
  250. let params = {val:val};
  251. window.tempTip.postBasicRequest(url,params,res=>{
  252. if (!isAll) this.errors = res.errors;
  253. this.reports = res.data.concat(this.reports);
  254. dom.selectpicker('val',[]);
  255. return "已生成报表";
  256. },true)
  257. },
  258. switchType(type){
  259. this.type = type;
  260. let obj = {columns:this._getRenderingHeader()};
  261. if (type === 1)obj.offset = 7;
  262. this.header.reset(obj);
  263. }
  264. }
  265. });
  266. </script>
  267. @stop