|
|
@@ -0,0 +1,167 @@
|
|
|
+@extends('layouts.app')
|
|
|
+@section('title')客单件报表@endsection
|
|
|
+@section('content')
|
|
|
+ <div class="d-none" id="list">
|
|
|
+ <!--查询 -->
|
|
|
+ <div class="row m-3" style="background-color: #fff;">
|
|
|
+ <!--货主名称-->
|
|
|
+ <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="货主名称">
|
|
|
+ <input v-model="search.customerName" class="form-control" type="text" placeholder="货主名称">
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="起始日期">
|
|
|
+ <input v-model="search.startTime" class="form-control" type="date" step="01">
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-group m-2" data-toggle="tooltip" data-placement="top" title="截止日期">
|
|
|
+ <input v-model="search.endTime" class="form-control" type="date" step="01">
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-group m-2">
|
|
|
+ <button class="form-control btn btn-sm btn-info" @click="searchData()">查询</button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-group m-2">
|
|
|
+ <button class="form-control btn btn-sm btn-success" @click="resetSearch()">重置</button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="form-group m-2">
|
|
|
+ <button class="form-control btn btn-sm btn-success" @click="downExcel()">导出EXCEL</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 导出-->
|
|
|
+ <span class="dropdown"></span>
|
|
|
+ <!-- 表格-->
|
|
|
+ <table class="table table-striped table-bordered table-hover text-nowrap waybill-table td-min-width-80"
|
|
|
+ style="background: #fff;" id="table">
|
|
|
+ <tr v-for="(item,i) in details.data" :key="i">
|
|
|
+ <td class="td-warm text-muted"><span>@{{ i+1 }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.customerName }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.case1Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.case2Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.case3Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.case4Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.case5Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.case6Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.case7Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.case8Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.moreThan9Amount }}</span></td>
|
|
|
+ <td class="td-warm text-muted"><span>@{{ item.avg }}</span></td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+@endsection
|
|
|
+
|
|
|
+@section('lastScript')
|
|
|
+ <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>{{--新版2--}}
|
|
|
+ <script>
|
|
|
+ let vue = new Vue({
|
|
|
+ el: "#list",
|
|
|
+ data: {
|
|
|
+ selectTr: null,
|
|
|
+ details: {
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ search: {
|
|
|
+ startTime: null,
|
|
|
+ endTime: null,
|
|
|
+ customerName: null,
|
|
|
+ customerCodes: {!! $ownerCodes !!}
|
|
|
+ },
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ let url = this.getBaseUrl();
|
|
|
+ url += '/api/report/customerOrderQty/listGrouped';
|
|
|
+
|
|
|
+ axios.post(url, this.search).then(res => {
|
|
|
+ this.details.data = res.data.data;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ mounted: function () {
|
|
|
+ $('#list').removeClass('d-none');
|
|
|
+ let column = [
|
|
|
+ {name: 'customerName', value: '货主名称'},
|
|
|
+ {name: 'case1Amount', value: '1pcs'},
|
|
|
+ {name: 'case2Amount', value: '2pcs'},
|
|
|
+ {name: 'case3Amount', value: '3pcs'},
|
|
|
+ {name: 'case4Amount', value: '4pcs'},
|
|
|
+ {name: 'case5Amount', value: '5pcs'},
|
|
|
+ {name: 'case6Amount', value: '6pcs'},
|
|
|
+ {name: 'case7Amount', value: '7pcs'},
|
|
|
+ {name: 'case8Amount', value: '8pcs'},
|
|
|
+ {name: 'moreThan9Amount', value: '>=9pcs'},
|
|
|
+ {name: 'avg', value: '单均客单数'}
|
|
|
+
|
|
|
+ ];
|
|
|
+ new Header({
|
|
|
+ el: "table",
|
|
|
+ name: "details",
|
|
|
+ column: column,
|
|
|
+ data: this.details.data,
|
|
|
+ restorationColumn: 'addtime',
|
|
|
+ fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
|
|
|
+ }).init();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ resetSearch() {
|
|
|
+ this.search = {
|
|
|
+ startTime: null,
|
|
|
+ endTime: null,
|
|
|
+ customerName: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ searchData() {
|
|
|
+ this.pagination();
|
|
|
+ },
|
|
|
+ //根据环境获取不同的url
|
|
|
+ getBaseUrl() {
|
|
|
+ let url = null;
|
|
|
+ let env = "{{ config('app.env') }}";
|
|
|
+ if (env === 'local') {
|
|
|
+ url = 'http://127.0.0.1:8111'
|
|
|
+ } else if (env === 'production') {
|
|
|
+ url = 'https://stat.baoshi56.com'
|
|
|
+ }
|
|
|
+ return url;
|
|
|
+ },
|
|
|
+ pagination(flag) {
|
|
|
+ let url = this.getBaseUrl();
|
|
|
+ url += '/api/report/customerOrderQty/listGrouped';
|
|
|
+ axios.post(url, this.search).then(res => {
|
|
|
+ if (res.data.data === undefined) {
|
|
|
+ this.details.data = [];
|
|
|
+ } else {
|
|
|
+ this.details.data = res.data.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ downExcel() {
|
|
|
+ let url = this.getBaseUrl();
|
|
|
+ url += '/api/report/scanInfo/export';
|
|
|
+ let search = this.getSearch();
|
|
|
+ axios.post(url, search).then(res => {
|
|
|
+ if (res.data.code === 200) {
|
|
|
+ let filename = res.data.data;
|
|
|
+ let downUrl = this.getBaseUrl() + '/api/report/scanInfo/export/' + filename;
|
|
|
+ let link = document.createElement('a');
|
|
|
+ link.style.display = 'none';
|
|
|
+ link.href = downUrl;
|
|
|
+ link.download = `${filename}.xlsx`;
|
|
|
+ document.body.appendChild(link);
|
|
|
+ link.click();
|
|
|
+ document.body.removeChild(link);
|
|
|
+ tempTip.showSuccess('导出成功!');
|
|
|
+ } else {
|
|
|
+ tempTip.setDuration(3000);
|
|
|
+ tempTip.show(res.data.data);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ });
|
|
|
+ </script>
|
|
|
+@endsection
|