area.blade.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. @extends('layouts.app')
  2. @section('title')
  3. 称重管理-项目报表
  4. @endsection
  5. @section('content')
  6. @component('customer.project.menu')@endcomponent
  7. <div class="container-fluid" id="container">
  8. <div id="form_div"></div>
  9. <div>
  10. <button type="button" class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
  11. data-toggle="dropdown" title="导出所有页将会以搜索条件得到的筛选结果,将其全部记录(每一页)导出">
  12. 导出Excel
  13. </button>
  14. <div class="dropdown-menu">
  15. <a class="dropdown-item" @click="areaExport(false)" href="javascript:">导出勾选内容</a>
  16. <a class="dropdown-item" @click="areaExport(true)" href="javascript:">导出所有页</a>
  17. </div>
  18. </div>
  19. <div>
  20. <label for="all" id="cloneCheckAll" class="d-none">
  21. <input id="all" type="checkbox" @click="checkAll($event)">全选
  22. </label>
  23. <table class="d-none" id="headerRoll"></table>
  24. <table class="table table-sm table-striped table-hover" id="headerParent">
  25. <tr class="text-nowrap" id="header"></tr>
  26. <tr v-for="(area,i) in areas">
  27. <td>
  28. <label><input type="checkbox" :value="area.id" v-model="checkData"></label>
  29. </td>
  30. <td>@{{ i+1 }}</td>
  31. <td>
  32. <span v-if="area.status=='已完成'" class="text-success">@{{ area.status }}</span>
  33. <span v-else><button class="btn btn-sm btn-outline-info" @click="edit(area,i)">编辑</button></span>
  34. <span v-if="editIndex==i">
  35. <button class="btn btn-sm btn-success" @click="submitArea()">确定</button>
  36. <button class="btn btn-sm btn-danger" @click="editIndex='-1'">取消</button>
  37. </span>
  38. </td>
  39. <td>
  40. <label><select @change="thisArea.user_owner_group_id = $event.target.value" :disabled="editIndex==i ? false : true"
  41. :value="area.ownerGroupId" class="form-control form-control-sm">
  42. <option v-for="ownerGroup in ownerGroups" :value="ownerGroup.name">@{{ ownerGroup.value }}</option>
  43. </select></label>
  44. </td>
  45. <td>@{{ area.customerName }}</td>
  46. <td>@{{ area.ownerName }}</td>
  47. <td>@{{ area.countingMonth }}</td>
  48. <td>@{{ area.updatedAt }}</td>
  49. <td>@{{ area.ownerStoragePriceModelUsingType }}</td>
  50. <td>
  51. <label><input :readonly="editIndex==i ? false : true" @change="thisArea.area_on_tray = $event.target.value"
  52. type="number" min="0" class="form-control form-control-sm" :value="area.areaOnTray"></label>
  53. </td>
  54. <td>
  55. <label><input :readonly="editIndex==i ? false : true" @change="thisArea.area_on_half_tray = $event.target.value"
  56. type="number" min="0" class="form-control form-control-sm" :value=area.areaOnHalfTray></label>
  57. </td>
  58. <td>
  59. <label><input :readonly="editIndex==i ? false : true" @change="thisArea.area_on_flat = $event.target.value"
  60. type="number" min="0" class="form-control form-control-sm" :value="area.areaOnFlat"></label>
  61. </td>
  62. <td>@{{ area.accountingArea }}</td>
  63. </tr>
  64. </table>
  65. {{$areas->appends($params)->links()}}
  66. </div>
  67. </div>
  68. @stop
  69. @section('lastScript')
  70. <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
  71. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
  72. <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
  73. <script>
  74. let vue = new Vue({
  75. el:"#container",
  76. data:{
  77. areas : [
  78. @foreach($areas as $area)
  79. {
  80. id : "{{$area->id}}",
  81. ownerGroupId : "{{$area->user_owner_group_id}}",
  82. ownerName : "{{$area->owner ? $area->owner->name : ''}}",
  83. customerName : "{{$area->owner ? ($area->owner->customer ? $area->owner->customer->name : '') : ''}}",
  84. countingMonth : "{{$area->counting_month}}",
  85. areaOnTray : "{{$area->area_on_tray}}",
  86. areaOnHalfTray : "{{$area->area_on_half_tray}}",
  87. areaOnFlat : "{{$area->area_on_flat}}",
  88. accountingArea : "{{$area->accounting_area}}",
  89. status : "{{$area->status}}",
  90. updatedAt : "{{$area->updated_at}}",
  91. ownerStoragePriceModelUsingType:"{{ $area->owner ? implode(",",array_unique(array_column(($area->owner->ownerStoragePriceModels)->toArray(),"using_type"))) : '' }}",
  92. },
  93. @endforeach
  94. ],
  95. thisArea : {
  96. user_owner_group_id : "",
  97. area_on_tray : "",
  98. area_on_half_tray : "",
  99. area_on_flat : "",
  100. },
  101. ownerGroups : [
  102. @foreach($ownerGroups as $ownerGroup)
  103. {name:"{{$ownerGroup->id}}",value:"{{$ownerGroup->name}}"},
  104. @endforeach
  105. ],
  106. customers : [
  107. @foreach($customers as $customer)
  108. {name:"{{$customer->id}}",value:"{{$customer->name}}"},
  109. @endforeach
  110. ],
  111. owners : [
  112. @foreach($owners as $owner)
  113. {name:"{{$owner->id}}",value:"{{$owner->name}}"},
  114. @endforeach
  115. ],
  116. status : [{name:"编辑中",value:"编辑中"},{name:"已完成",value:"已完成"}],
  117. checkData : [],
  118. editIndex : "-1",
  119. sum : Number("{{ $areas->total() }}"),
  120. },
  121. watch:{
  122. checkData:{
  123. handler(){
  124. if (this.checkData.length === this.areas.length){
  125. document.querySelector('#all').checked = true;
  126. document.querySelector('#all_temp').checked = true;
  127. }else {
  128. document.querySelector('#all').checked = false;
  129. document.querySelector('#all_temp').checked = false;
  130. }
  131. },
  132. deep:true
  133. }
  134. },
  135. mounted(){
  136. let data=[
  137. [
  138. {name:'owner_group_id',type:'select',tip:'项目小组',placeholder: '项目小组',data:this.ownerGroups},
  139. {name:'counting_month_start',type:'dateMonth',tip:'起始结算月'},
  140. {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的项目'],
  141. placeholder:['项目','定位或多选项目'],data:this.owners},
  142. ],[
  143. {name:'customer_id',type:'select',tip:'客户',placeholder: '客户',data:this.customers},
  144. {name:'counting_month_end',type:'dateMonth',tip:'结束结算月'},
  145. {name:'status',type:'select',tip:'状态',placeholder: '状态',data:this.status},
  146. ],
  147. ];
  148. this.form = new query({
  149. el:"#form_div",
  150. condition:data,
  151. });
  152. this.form.init();
  153. let column = [
  154. {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
  155. dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
  156. {name:'index',value: '序号', neglect: true},
  157. {name:'status',value: '状态'},
  158. {name:'ownerGroupId',value: '项目组', neglect : true},
  159. {name:'customerName',value: '客户'},
  160. {name:'ownerName',value: '子项目'},
  161. {name:'countingMonth',value: '结算月'},
  162. {name:'createdAt',value: '录入时间'},
  163. {name:'ownerStoragePriceModelUsingType',value: '用仓类型'},
  164. {name:'areaOnTray',value: '货物整托', neglect: true},
  165. {name:'areaOnHalfTray',value: '货物半托', neglect: true},
  166. {name:'areaOnFlat',value: '平面区面积', neglect: true},
  167. {name:'accountingArea',value: '结算面积', neglect: true},
  168. ];
  169. let _this=this;
  170. setTimeout(function () {
  171. let header = new Header({
  172. el: "#header",
  173. column: column,
  174. data: _this.reports,
  175. restorationColumn: 'id',
  176. fixedTop:($('#form_div').height())+2,
  177. offset:0.5,
  178. vue:vue
  179. });
  180. header.init();
  181. },0);
  182. },
  183. methods:{
  184. areaExport(isAll){
  185. let url = '{{url('customer/project/area/export')}}';
  186. let token='{{ csrf_token() }}';
  187. //excelExport 定义在 js/queryForm/export.js
  188. excelExport(isAll,this.checkData,url,this.sum,token);
  189. },
  190. //全选事件
  191. checkAll(e){
  192. if (e.target.checked){
  193. this.areas.forEach((el)=>{
  194. if (this.checkData.indexOf(el.id) === '-1'){
  195. this.checkData.push(el.id);
  196. }
  197. });
  198. }else {
  199. this.checkData = [];
  200. }
  201. },
  202. edit(area,index){
  203. this.editIndex = index;
  204. this.thisArea.user_owner_group_id = area.ownerGroupId;
  205. this.thisArea.area_on_tray = area.areaOnTray;
  206. this.thisArea.area_on_half_tray = area.areaOnHalfTray;
  207. this.thisArea.area_on_flat = area.areaOnFlat;
  208. },
  209. submitArea(){
  210. window.tempTip.confirm("确认要提交该面积的更新吗?",()=>{
  211. axios.post("{{url('customer/project/updateArea')}}",{
  212. id:this.areas[this.editIndex].id,area:this.thisArea
  213. }).then(res=>{
  214. if (res.data.success){
  215. this.areas[this.editIndex].ownerGroupId = res.data.data["user_owner_group_id"];
  216. this.areas[this.editIndex].areaOnTray = res.data.data["area_on_tray"];
  217. this.areas[this.editIndex].areaOnHalfTray = res.data.data["area_on_half_tray"];
  218. this.areas[this.editIndex].areaOnFlat = res.data.data["area_on_flat"];
  219. this.areas[this.editIndex].accountingArea = res.data.data["accounting_area"];
  220. this.editIndex = '-1';
  221. this.thisArea = {
  222. user_owner_group_id : "",
  223. area_on_tray : "",
  224. area_on_half_tray : "",
  225. area_on_flat : "",
  226. };
  227. window.tempTip.setDuration(2000);
  228. window.tempTip.showSuccess("修改成功");
  229. return;
  230. }
  231. window.tempTip.setDuration(3000);
  232. window.tempTip.show(res.data.data);
  233. }).catch(err=>{
  234. window.tempTip.setDuration(3000);
  235. window.tempTip.show("网络错误:"+err);
  236. })
  237. });
  238. }
  239. },
  240. });
  241. </script>
  242. @stop