From cbaa21c32c9899e135bc22f51f02fbbed0635164 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期一, 13 二月 2023 13:19:43 +0800
Subject: [PATCH] 添加新页面

---
 src/views/stock/components/enterprisePurchaseDetail.vue |   88 ++++
 src/api/stock.js                                        |   22 +
 src/views/stock/enterpriseStock.vue                     |    9 
 src/views/stock/enterprisePurchaseStatistics.vue        |  395 +++++++++++++++++++++
 src/views/specialCheck/components/areaForm.vue          |    2 
 src/views/stock/components/statePurchaseDetail.vue      |  134 +++++++
 src/views/stock/statePurchaseStatistics.vue             |  391 +++++++++++++++++++++
 src/views/stock/enterpriseSale.vue                      |    8 
 8 files changed, 1,035 insertions(+), 14 deletions(-)

diff --git a/src/api/stock.js b/src/api/stock.js
index aed3ebc..5e15d31 100644
--- a/src/api/stock.js
+++ b/src/api/stock.js
@@ -200,3 +200,25 @@
         data:data
     });
 }
+
+export function getpifaBox(data) {
+    return request({
+        headers:{
+            'Authorization': getToken()
+        },
+        url: process.env.BASE_API+'/contract/count/pifaBox',
+        method: 'post',
+        data:data
+    });
+}
+
+export function regionPifaBox(data) {
+    return request({
+        headers:{
+            'Authorization': getToken()
+        },
+        url: process.env.BASE_API+'/contract/count/regionPifaBox',
+        method: 'post',
+        data:data
+    });
+}
diff --git a/src/views/specialCheck/components/areaForm.vue b/src/views/specialCheck/components/areaForm.vue
index 6135588..e45f1ea 100644
--- a/src/views/specialCheck/components/areaForm.vue
+++ b/src/views/specialCheck/components/areaForm.vue
@@ -32,7 +32,7 @@
                 <el-table-column label="隐患数量" prop="hiddendangerSum" align="center"></el-table-column>
                 <el-table-column label="整改数量" prop="rectifyHiddendangerSum" align="center"></el-table-column>
                 <el-table-column label="重大整改数量" prop="rectifyMajorHiddendangerNum" align="center"></el-table-column>
-                <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width">
+                <el-table-column label="操作" align="center" class-name="small-padding">
                     <template slot-scope="scope">
                         <el-button type="text" @click="toEnterprises(scope.row.selfAndcheckInfos)">查看</el-button>
                     </template>
diff --git a/src/views/stock/components/enterprisePurchaseDetail.vue b/src/views/stock/components/enterprisePurchaseDetail.vue
new file mode 100644
index 0000000..9c8a95c
--- /dev/null
+++ b/src/views/stock/components/enterprisePurchaseDetail.vue
@@ -0,0 +1,88 @@
+<template>
+    <el-dialog
+        :visible.sync="purchaseDetailVisible"
+        :close-on-click-modal="false"
+        width="70%"
+        :append-to-body="true"
+    >
+        <div class="app-container">
+            <div class="table_title">新疆吉庆烟花爆竹有限公司<span v-if="timeValue!==''">({{ timeValue }})</span>进货情况</div>
+            <div class="table_content">
+                <el-table
+                    v-loading="listLoading"
+                    :key="tableKey"
+                    :data="scList"
+                    border
+                    fit
+                    highlight-current-row
+                    style="width: 100%;"
+                >
+                    <el-table-column label="序号" type="index" align="center" width="60"/>
+                    <el-table-column label="进货生产企业" prop="scCompany" align="center">
+                    </el-table-column>
+                    <el-table-column label="进货总数量(箱)" prop="totalcol" align="center">
+                    </el-table-column>
+                    <el-table-column label="爆竹类(箱)" prop="firecracker" align="center">
+                    </el-table-column>
+                    <el-table-column label="喷花类(箱)" prop="spray" align="center">
+                    </el-table-column>
+                    <el-table-column label="旋转类(箱)" prop="rotation" align="center">
+                    </el-table-column>
+                    <el-table-column label="吐珠类(箱)" prop="bead" align="center">
+                    </el-table-column>
+                    <el-table-column label="玩具类(箱)" prop="toy" align="center">
+                    </el-table-column>
+                    <el-table-column label="组合烟花类(箱)" prop="combined" align="center">
+                    </el-table-column>
+                </el-table>
+                <br>
+            </div>
+        </div>
+    </el-dialog>
+</template>
+
+<script>
+    import {computePageCount} from "@/utils";
+
+    export default {
+        name: "index",
+        data(){
+            return{
+                scList: [],
+                timeValue: '',
+                tableKey:'',
+                listLoading:false,
+                purchaseDetailVisible:false,
+            }
+        },
+        components: {},
+        methods:{
+            open(scItems,timeRange,startTime,endTime){
+                this.scList = scItems;
+                for(let i of this.scList){
+                    i.firecracker = i.items.filter(it=>it.type === '爆竹类').length>0?i.items.filter(it=>it.type === '爆竹类')[0].boxCount:0
+                    i.spray = i.items.filter(it=>it.type === '喷花类').length>0?i.items.filter(it=>it.type === '喷花类')[0].boxCount:0
+                    i.rotation = i.items.filter(it=>it.type === '旋转类').length>0?i.items.filter(it=>it.type === '旋转类')[0].boxCount:0
+                    i.bead = i.items.filter(it=>it.type === '吐珠类').length>0?i.items.filter(it=>it.type === '吐珠类')[0].boxCount:0
+                    i.toy = i.items.filter(it=>it.type === '玩具类').length>0?i.items.filter(it=>it.type === '玩具类')[0].boxCount:0
+                    i.combined = i.items.filter(it=>it.type === '组合烟花类').length>0?i.items.filter(it=>it.type === '组合烟花类')[0].boxCount:0
+                    i.totalcol = i.firecracker + i.spray + i.rotation + i.bead + i.toy + i.combined
+                }
+                this.purchaseDetailVisible = true;
+                if(timeRange){
+                    this.timeValue = startTime.split(' ')[0] + '~' + endTime.split(' ')[0]
+                }
+            }
+        }
+    }
+</script>
+
+<style scoped>
+    .basic_search{
+        display:inline-block;
+    }
+    .table_title{
+        font-size: 18px;
+        margin-bottom: 20px;
+    }
+</style>
diff --git a/src/views/stock/components/statePurchaseDetail.vue b/src/views/stock/components/statePurchaseDetail.vue
new file mode 100644
index 0000000..45b1956
--- /dev/null
+++ b/src/views/stock/components/statePurchaseDetail.vue
@@ -0,0 +1,134 @@
+<template>
+    <el-dialog
+        :visible.sync="personPurchaseDetailVisible"
+        :close-on-click-modal="false"
+        width="70%"
+        :append-to-body="true"
+    >
+        <div class="app-container">
+            <div class="table_title"><span>{{stateName}}</span>各批发企业进货情况</div>
+            <div class="table_content">
+                <el-table
+                    v-loading="listLoading"
+                    :key="tableKey"
+                    :data="statePurchaseDetailData"
+                    border
+                    fit
+                    highlight-current-row
+                    style="width: 100%;"
+                >
+                    <el-table-column label="序号" type="index" align="center" width="60"/>
+                    <el-table-column label="批发企业" prop="pifaCompany" align="center">
+                    </el-table-column>
+                    <el-table-column label="生产企业" prop="scCompany" align="center">
+                    </el-table-column>
+                    <el-table-column label="进货总数量(箱)" prop="totalcol" align="center">
+                    </el-table-column>
+                    <el-table-column label="爆竹类(箱)" prop="firecracker" align="center">
+                    </el-table-column>
+                    <el-table-column label="喷花类(箱)" prop="spray" align="center">
+                    </el-table-column>
+                    <el-table-column label="旋转类(箱)" prop="rotation" align="center">
+                    </el-table-column>
+                    <el-table-column label="吐珠类(箱)" prop="bead" align="center">
+                    </el-table-column>
+                    <el-table-column label="玩具类(箱)" prop="toy" align="center">
+                    </el-table-column>
+                    <el-table-column label="组合烟花类(箱)" prop="combined" align="center">
+                    </el-table-column>
+                </el-table>
+                <br>
+<!--                <el-pagination-->
+<!--                    v-show="recordTotal>0"-->
+<!--                    :current-page="currentPage"-->
+<!--                    :page-sizes="[10, 15]"-->
+<!--                    :page-size="pageSize"-->
+<!--                    :total="recordTotal"-->
+<!--                    layout="total, sizes, prev, pager, next, jumper"-->
+<!--                    background-->
+<!--                    style="float:right;"-->
+<!--                    @size-change="handleSizeChange"-->
+<!--                    @current-change="handleCurrentChange"-->
+<!--                />-->
+<!--                <br>-->
+            </div>
+        </div>
+    </el-dialog>
+</template>
+
+<script>
+    import {computePageCount} from "@/utils";
+    import {getpifaBox} from "../../../api/stock";
+
+    export default {
+        name: "index",
+        data(){
+            return{
+                stateName:'',
+                unitType: 1,
+                tableKey:'',
+                listLoading:false,
+                statePurchaseDetailData:[],
+                personPurchaseDetailVisible:false,
+            }
+        },
+        components: {},
+        methods:{
+            open(stateName,type,startTime,endTime){
+                this.stateName = stateName;
+                this.unitType = type;
+                this.personPurchaseDetailVisible = true;
+                this.getStatepifaBox(stateName,startTime,endTime);
+            },
+            async getStatepifaBox(stateName,startTime,endTime){
+                this.listLoading = true
+                const listQuery = {
+                    startTime: startTime,
+                    endTime: endTime,
+                    companyName: '',
+                    province: '',
+                    city: '',
+                    district: '',
+                }
+                if(this.unitType == 1){
+                    listQuery.city = stateName
+                }else{
+                    listQuery.district = stateName
+                }
+                let res = await getpifaBox(listQuery)
+                if(res.data.code === "200"){
+                    const data = res.data.result
+                    for(let t of data){
+                        for(let i of t.scItems){
+                            i.pifaCompany = t.pifaCompany
+                            i.firecracker = i.items.filter(it=>it.type === '爆竹类').length>0?i.items.filter(it=>it.type === '爆竹类')[0].boxCount:0
+                            i.spray = i.items.filter(it=>it.type === '喷花类').length>0?i.items.filter(it=>it.type === '喷花类')[0].boxCount:0
+                            i.rotation = i.items.filter(it=>it.type === '旋转类').length>0?i.items.filter(it=>it.type === '旋转类')[0].boxCount:0
+                            i.bead = i.items.filter(it=>it.type === '吐珠类').length>0?i.items.filter(it=>it.type === '吐珠类')[0].boxCount:0
+                            i.toy = i.items.filter(it=>it.type === '玩具类').length>0?i.items.filter(it=>it.type === '玩具类')[0].boxCount:0
+                            i.combined = i.items.filter(it=>it.type === '组合烟花类').length>0?i.items.filter(it=>it.type === '组合烟花类')[0].boxCount:0
+                            i.totalcol = i.firecracker + i.spray + i.rotation + i.bead + i.toy + i.combined
+                            this.statePurchaseDetailData.push(i)
+                        }
+                    }
+                }else{
+                    this.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                this.listLoading = false
+            }
+        }
+    }
+</script>
+
+<style scoped>
+    .basic_search{
+        display:inline-block;
+    }
+    .table_title{
+        font-size: 18px;
+        margin-bottom: 20px;
+    }
+</style>
diff --git a/src/views/stock/enterprisePurchaseStatistics.vue b/src/views/stock/enterprisePurchaseStatistics.vue
new file mode 100644
index 0000000..2ba0d35
--- /dev/null
+++ b/src/views/stock/enterprisePurchaseStatistics.vue
@@ -0,0 +1,395 @@
+<template>
+    <div class="app-container">
+        <div class="filter-container">
+            <div style="display: block">
+                <div class="basic_search">
+                    <span>区域:</span>
+                    <el-select v-model="listQuery.province" clearable filterable @change="changeArea('province')">
+                        <el-option
+                            v-for="item in provinceList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.name"
+                        >
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="basic_search">
+                    <el-select v-model="listQuery.city" prop="city" clearable filterable @change="changeArea('city')">
+                        <el-option
+                            v-for="item in cityList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.name"
+                        >
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="basic_search">
+                    <el-select v-model="listQuery.district" clearable filterable @change="changeArea('district')">
+                        <el-option
+                            v-for="item in districtList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.name"
+                        >
+                        </el-option>
+                    </el-select>
+                </div>
+            </div>
+            <div style="display: block;">
+                <div class="basic_search" style="padding-top: 10px;">
+                    <span>按时间查询:</span>
+                    <el-date-picker
+                        value-format="yyyy-MM-dd HH:mm:ss"
+                        v-model="validTime"
+                        type="datetimerange"
+                        :default-time="['00:00:00','23:59:59']"
+                        :picker-options="pickerOptions"
+                        range-separator="-"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期"
+                    >
+                    </el-date-picker>
+                </div>
+                <div class="basic_search" style="padding-top: 10px">
+                    <span>企业名称:</span>
+                    <el-input filterable clearable v-model="listQuery.companyName" style="width:200px">
+                    </el-input>
+                </div>
+                <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
+                    <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+                    <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search" @click="searchProductSearch('查询','')">查询</el-button>
+                    <el-button style="margin-left: 10px;" type="primary" icon="el-icon-download" @click="exportToExcel">导出</el-button>
+                </div>
+            </div>
+        </div>
+        <div class="table_content">
+            <el-table
+                v-loading="listLoading"
+                :key="tableKey"
+                :data="enterprisePurchaseData"
+                border
+                show-summary
+                fit
+                id="enterPriseTable"
+                highlight-current-row
+                style="width: 100%;"
+            >
+                <el-table-column label="序号" type="index" align="center" width="60"/>
+                <el-table-column label="批发企业" prop="pifaCompany" align="center">
+                </el-table-column>
+                <el-table-column label="所属地区" align="center">
+                    <template slot-scope="scope">
+                        {{[scope.row.province,scope.row.city,scope.row.district].filter(item=>item!=="" &item!=null).join("-")}}
+                    </template>
+                </el-table-column>
+                <el-table-column label="合计(箱)" prop="total" align="center">
+                </el-table-column>
+                <el-table-column label="爆竹类(箱)" prop="baozhuCount" align="center">
+                </el-table-column>
+                <el-table-column label="喷花类(箱)" prop="penhuaCount" align="center">
+                </el-table-column>
+                <el-table-column label="旋转类(箱)" prop="xuanzhuanCount" align="center">
+                </el-table-column>
+                <el-table-column label="吐珠类(箱)" prop="tuzhuCount" align="center">
+                </el-table-column>
+                <el-table-column label="玩具类(箱)" prop="wanjuCount" align="center">
+                </el-table-column>
+                <el-table-column label="组合烟花类(箱)" prop="zuheCount" align="center">
+                </el-table-column>
+                <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="showDetail(scope.row)">查看详情</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <br>
+<!--            <el-pagination-->
+<!--                v-show="recordTotal>0"-->
+<!--                :current-page="currentPage"-->
+<!--                :page-sizes="[20, 50, 100, 200]"-->
+<!--                :page-size="pageSize"-->
+<!--                :total="recordTotal"-->
+<!--                layout="total, sizes, prev, pager, next, jumper"-->
+<!--                background-->
+<!--                style="float:right;"-->
+<!--                @size-change="handleSizeChange"-->
+<!--                @current-change="handleCurrentChange"-->
+<!--            />-->
+<!--            <br>-->
+            <PurchaseDetail ref="purchaseDetail"></PurchaseDetail>
+        </div>
+    </div>
+</template>
+
+<script>
+    import { computePageCount } from "../../utils";
+    import {exportEnterpriseEntryStatistics, getEnterpriseEntryStatistics} from "../../api/flow";
+    import {getCityListData, getProvinceListData} from "../../api/area";
+    import { getpifaBox } from "../../api/stock";
+    import Cookies from "js-cookie";
+    import PurchaseDetail from "./components/enterprisePurchaseDetail";
+    import FileSaver from 'file-saver'
+    import XLSX from 'xlsx'
+    export default {
+        name: "enterpriseEntryStatistics",
+        components: {PurchaseDetail},
+        data(){
+            return{
+                tableKey:'',
+                validTime:['',''],
+                listQuery: {
+                    startTime: '',
+                    endTime: '',
+                    companyName: '',
+                    province: '',
+                    city: '',
+                    district: '',
+                },
+                pickerOptions: {
+                    shortcuts: [{
+                        text: '最近一周',
+                        onClick(picker) {
+                            const end = new Date()
+                            const start = new Date()
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 6)
+                            end.setTime(end.getTime() + 3600 * 1000 * 24)
+                            picker.$emit('pick', [start, end])
+                        }
+                    }, {
+                        text: '最近一个月',
+                        onClick(picker) {
+                            const end = new Date()
+                            const start = new Date()
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 29)
+                            end.setTime(end.getTime() + 3600 * 1000 * 24)
+                            picker.$emit('pick', [start, end])
+                        }
+                    }, {
+                        text: '最近三个月',
+                        onClick(picker) {
+                            const end = new Date()
+                            const start = new Date()
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 89)
+                            end.setTime(end.getTime() + 3600 * 1000 * 24)
+                            picker.$emit('pick', [start, end])
+                        }
+                    },]
+                },
+                provinceList:[],
+                cityList:[],
+                districtList:[],
+                Cookies:Cookies,
+                listLoading:false,
+                enterprisePurchaseData:[],
+                previewList:[],
+                options: [
+                    { label: '全部', value: '' },
+                    { label: '是', value:1 },
+                    { label: '否', value: -1 }
+                ]
+            }
+        },
+        created() {
+            this.initValidTime()
+            this.getpifaBox()
+            this.getProvince()
+        },
+        mounted(){
+        },
+        watch: {
+        },
+        methods:{
+            async getpifaBox(){
+                this.listLoading = true
+                if( this.validTime !== null ){
+                    this.listQuery.startTime = this.validTime[0]
+                    this.listQuery.endTime = this.validTime[1]
+                }else{
+                    this.listQuery.startTime = ''
+                    this.listQuery.endTime = ''
+                }
+                let res = await getpifaBox(this.listQuery)
+                if(res.data.code === "200"){
+                    this.enterprisePurchaseData = res.data.result
+                }else{
+                    this.$message({
+                        type:'warning',
+                        message:res.data.message
+                    })
+                }
+                this.listLoading = false
+            },
+            refresh(){
+                this.getpifaBox()
+            },
+
+            // async exportToExcel(){
+            //     let res = await exportEnterpriseEntryStatistics(this.listQuery)
+            //     if(res.data.code === '200'){
+            //         if(res.data.result === null ||res.data.result === [] || res.data.result.length === 0){
+            //             debugger
+            //             this.$message({
+            //                 type:'warning',
+            //                 message:'无数据可导出'
+            //             })
+            //         }else{
+            //             let allData = res.data.result
+            //             import('@/vendor/Export2Excel').then((excel) => {
+            //                 const tHeader = [
+            //                     '地区',
+            //                     '企业名称',
+            //                     '爆竹类(箱)',
+            //                     '喷花类(箱)',
+            //                     '旋转类(箱)',
+            //                     '吐珠类(箱)',
+            //                     '玩具类(箱)',
+            //                     '组合烟花类(箱)',
+            //                     '合计(箱)',
+            //                 ]
+            //                 const filterVal = [
+            //                     'name',
+            //                     'enterprisename',
+            //                     'num_爆竹类',
+            //                     'num_喷花类',
+            //                     'num_旋转类',
+            //                     'num_吐珠类',
+            //                     'num_玩具类',
+            //                     'num_组合烟花类',
+            //                     'totalcol'
+            //                 ]
+            //                 const data = this.formatJson(filterVal, allData)
+            //                 excel.export_json_to_excel({
+            //                     header: tHeader,
+            //                     data,
+            //                     filename: '企业分类入库统计'
+            //                 })
+            //             })
+            //         }
+            //
+            //     }else{
+            //         this.$message({
+            //             message:res.data.message,
+            //             type:'warning'
+            //         })
+            //     }
+            // },
+
+            // exportToExcel(){
+            //     const sheetName = '批发企业进货统计'
+            //     let wb = XLSX.utils.table_to_book(document.querySelector('#enterPriseTable'))
+            //     let wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
+            //     try {
+            //         FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), sheetName + '.xlsx')
+            //         console.log('daochu')
+            //     } catch (e) {
+            //         if (typeof console !== 'undefined') console.log(e, wbout)
+            //     }
+            //     // return wbout
+            // },
+            exportToExcel(){
+                let xlsxParam = {raw:true}
+                let wb = XLSX.utils.table_to_book(document.querySelector('#enterPriseTable'),xlsxParam)
+                let wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
+                try {
+                    FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '各批发企业进货统计.xlsx')
+                } catch (e) {
+                    if (typeof console !== 'undefined') console.log(e, wbout)
+                }
+                return wbout
+            },
+            formatJson(filterVal, jsonData) {
+                return jsonData.map(v => filterVal.map(j => v[j]))
+            },
+            async getProvince(){
+                let res = await getProvinceListData()
+                if(res.data.code === "200"){
+                    this.provinceList = res.data.result.provinceList
+                }
+            },//获取省
+
+            async changeArea(value){
+                if(value === 'province'){
+                    this.listQuery.city = ''
+                    this.listQuery.district = ''
+                    this.areaListQuery = {
+                        type: 2,
+                        parenttype: 1,
+                        parentname: this.listQuery.province,
+                    }
+                    let res = await getCityListData(this.areaListQuery)
+                    if(res.data.code === "200"){
+                        this.cityList = res.data.result
+                    }
+                }else if(value === 'city'){
+                    this.listQuery.district = ''
+                    this.areaListQuery = {
+                        type: 3,
+                        parenttype: 2,
+                        parentname: this.listQuery.city,
+                    }
+                    let res = await getCityListData(this.areaListQuery)
+                    if(res.data.code === "200"){
+                        this.districtList = res.data.result
+                    }
+                }
+            },
+
+            reset(){
+                this.listQuery= {
+                    startTime: '',
+                    endTime: '',
+                    companyName: '',
+                    province: '',
+                    city: '',
+                    district: '',
+                }
+            },
+            searchProductSearch(){
+                this.getpifaBox()
+            },
+
+            initValidTime(){
+                const end = new Date();
+                if(end.getDate() - 1 === 0){
+                    this.validTime[0] = [end.getFullYear(), end.getMonth() , this.returnDay(end.getMonth(),end.getFullYear())].join("-") + " 00:00:00" ;
+                    this.validTime[1] = [end.getFullYear(), end.getMonth() , this.returnDay(end.getMonth(),end.getFullYear())].join("-") +" 23:59:59";
+                }else if(end.getDate() - 1 === 0 && end.getMonth() === 0){
+                    this.validTime[0] = [end.getFullYear() - 1, 12, 31].join("-") + " 00:00:00" ;
+                    this.validTime[1] = [end.getFullYear() - 1, 12, 31].join("-") +" 23:59:59";
+                }
+                else{
+                    this.validTime[0] = [end.getFullYear(), end.getMonth() + 1, end.getDate() - 1].join("-") + " 00:00:00" ;
+                    this.validTime[1] = [end.getFullYear(), end.getMonth() + 1, end.getDate() - 1].join("-") +" 23:59:59";
+                }
+            },
+            returnDay(value,year){
+                if(value === 1 || value === 3|| value === 5 || value === 7 || value === 8 || value === 10 || value === 12){
+                    return 31
+                }else if(value === 2){
+                    if(year % 4 === 0){
+                        return 29
+                    }else{
+                        return 28
+                    }
+                }else{
+                    return 30
+                }
+            },
+            showDetail(param){
+                if( this.validTime !== null ){
+                    this.$refs.purchaseDetail.open(param.scItems,true,this.validTime[0],this.validTime[1])
+                }else{
+                    this.$refs.purchaseDetail.open(param.scItems,false)
+                }
+            },
+        },
+    }
+</script>
+
+<style scoped>
+    .basic_search{
+        display:inline-block;
+    }
+</style>
diff --git a/src/views/stock/enterpriseSale.vue b/src/views/stock/enterpriseSale.vue
index 35dbefe..d1ef8bf 100644
--- a/src/views/stock/enterpriseSale.vue
+++ b/src/views/stock/enterpriseSale.vue
@@ -1,10 +1,5 @@
 <template>
-    <div class="container">
-        <el-breadcrumb style="padding-top: 10px;padding-bottom: 10px" >
-            <el-breadcrumb-item :to="{ path: '/stock/enterpriseSale' }">进销存</el-breadcrumb-item>
-            <el-breadcrumb-item>进销存详情</el-breadcrumb-item>
-        </el-breadcrumb>
-
+    <div class="app-container">
         <div class="filter-container">
             <el-row>
                 时间:&emsp;&emsp;
@@ -173,6 +168,7 @@
                 @size-change="handleSizeChange"
                 @current-change="handleCurrentChange"
             />
+            <br>
         </div>
         <in-storage-detail ref="inStorageDetail"></in-storage-detail>
         <out-storage-detail ref="outStorageDetail"></out-storage-detail>
diff --git a/src/views/stock/enterpriseStock.vue b/src/views/stock/enterpriseStock.vue
index 79bdb93..f8269a6 100644
--- a/src/views/stock/enterpriseStock.vue
+++ b/src/views/stock/enterpriseStock.vue
@@ -1,12 +1,6 @@
 <template>
-  <div class="container">
-    <el-breadcrumb style="padding-top: 10px;padding-bottom: 10px" >
-      <el-breadcrumb-item :to="{ path: '/stock/enterprise' }">库存监管</el-breadcrumb-item>
-      <el-breadcrumb-item >库存详情</el-breadcrumb-item>
-    </el-breadcrumb>
-
+  <div class="app-container">
     <div class="filter-container">
-
       <el-row style="padding-top: 10px">
         <div style="display: block;">
         <div class="basic_search">
@@ -197,6 +191,7 @@
         @size-change="handleSizeChange"
         @current-change="handleCurrentChange"
       />
+        <br>
     </div>
   </div>
 
diff --git a/src/views/stock/statePurchaseStatistics.vue b/src/views/stock/statePurchaseStatistics.vue
new file mode 100644
index 0000000..939b587
--- /dev/null
+++ b/src/views/stock/statePurchaseStatistics.vue
@@ -0,0 +1,391 @@
+<template>
+    <div class="app-container">
+        <div class="filter-container">
+            <div style="display: block">
+                <div class="basic_search">
+                    <span>区域:</span>
+                    <el-select v-model="listQuery.province" clearable filterable @change="changeArea('province')">
+                        <el-option
+                            v-for="item in provinceList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.name"
+                        >
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="basic_search">
+                    <el-select v-model="listQuery.city" prop="city" clearable filterable @change="changeArea('city')">
+                        <el-option
+                            v-for="item in cityList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.name"
+                        >
+                        </el-option>
+                    </el-select>
+                </div>
+                <div class="basic_search">
+                    <el-select v-model="listQuery.district" clearable filterable @change="changeArea('district')">
+                        <el-option
+                            v-for="item in districtList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.name"
+                        >
+                        </el-option>
+                    </el-select>
+                </div>
+            </div>
+            <div style="display: block;">
+                <div class="basic_search" style="padding-top: 10px;">
+                    <span>按时间查询:</span>
+                    <el-date-picker
+                        value-format="yyyy-MM-dd HH:mm:ss"
+                        v-model="validTime"
+                        type="datetimerange"
+                        :default-time="['00:00:00','23:59:59']"
+                        :picker-options="pickerOptions"
+                        range-separator="-"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期"
+                    >
+                    </el-date-picker>
+                </div>
+                <div class="basic_search" style="margin-right: 10px;padding-top: 10px">
+                    <el-button style="margin-left: 10px;" type="primary" @click="reset()">重置</el-button>
+                    <el-button style="margin-left: 10px;" type="primary" icon="el-icon-search"
+                               @click="searchProductSearch('查询','')">查询
+                    </el-button>
+                    <el-button style="margin-left: 10px;" type="primary" icon="el-icon-download" @click="exportToExcel">
+                        导出
+                    </el-button>
+                </div>
+            </div>
+        </div>
+        <div class="table_content">
+            <el-table
+                v-loading="listLoading"
+                :key="tableKey"
+                :data="statePurchaseData"
+                border
+                show-summary
+                fit
+                id="stateTable"
+                highlight-current-row
+                style="width: 100%;"
+            >
+                <el-table-column label="序号" type="index" align="center" width="60"/>
+                <el-table-column label="地(市州)" align="center">
+                    <template slot-scope="scope">
+                        <el-link type="primary" @click="digDetail(scope.row)">{{ scope.row.region }}</el-link>
+                    </template>
+                </el-table-column>
+                <el-table-column label="合计(箱)" prop="total" align="center">
+                </el-table-column>
+                <el-table-column label="爆竹类(箱)" prop="baozhuCount" align="center">
+                </el-table-column>
+                <el-table-column label="喷花类(箱)" prop="penhuaCount" align="center">
+                </el-table-column>
+                <el-table-column label="旋转类(箱)" prop="xuanzhuanCount" align="center">
+                </el-table-column>
+                <el-table-column label="吐珠类(箱)" prop="tuzhuCount" align="center">
+                </el-table-column>
+                <el-table-column label="玩具类(箱)" prop="wanjuCount" align="center">
+                </el-table-column>
+                <el-table-column label="组合烟花类(箱)" prop="zuheCount" align="center">
+                </el-table-column>
+                <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="showDetail(scope.row)">查看详情</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <br>
+            <!--            <el-pagination-->
+            <!--                v-show="recordTotal>0"-->
+            <!--                :current-page="currentPage"-->
+            <!--                :page-sizes="[20, 50, 100, 200]"-->
+            <!--                :page-size="pageSize"-->
+            <!--                :total="recordTotal"-->
+            <!--                layout="total, sizes, prev, pager, next, jumper"-->
+            <!--                background-->
+            <!--                style="float:right;"-->
+            <!--                @size-change="handleSizeChange"-->
+            <!--                @current-change="handleCurrentChange"-->
+            <!--            />-->
+            <!--            <br>-->
+            <PurchaseDetail ref="purchaseDetail"></PurchaseDetail>
+        </div>
+    </div>
+</template>
+
+<script>
+import {computePageCount} from "../../utils";
+import {exportEnterpriseEntryStatistics, getEnterpriseEntryStatistics} from "../../api/flow";
+import {getCityListData, getProvinceListData} from "../../api/area";
+import {regionPifaBox} from "../../api/stock";
+import Cookies from "js-cookie";
+import PurchaseDetail from "./components/statePurchaseDetail";
+import FileSaver from 'file-saver'
+import XLSX from 'xlsx'
+export default {
+    name: "enterpriseEntryStatistics",
+    components: {PurchaseDetail},
+    data() {
+        return {
+            tableKey: '',
+            validTime: ['', ''],
+            listQuery: {
+                startTime: '',
+                endTime: '',
+                companyName: '',
+                province: '',
+                city: '',
+                district: '',
+            },
+            provinceList: [],
+            cityList: [],
+            districtList: [],
+            Cookies: Cookies,
+            listLoading: false,
+            statePurchaseData: [],
+            previewList: [],
+            options: [
+                {label: '全部', value: ''},
+                {label: '是', value: 1},
+                {label: '否', value: -1}
+            ],
+            pickerOptions: {
+                shortcuts: [{
+                    text: '最近一周',
+                    onClick(picker) {
+                        const end = new Date();
+                        const start = new Date();
+                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+                        picker.$emit('pick', [start, end]);
+                    }
+                }, {
+                    text: '最近一个月',
+                    onClick(picker) {
+                        const end = new Date();
+                        const start = new Date();
+                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+                        picker.$emit('pick', [start, end]);
+                    }
+                }, {
+                    text: '最近三个月',
+                    onClick(picker) {
+                        const end = new Date();
+                        const start = new Date();
+                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+                        picker.$emit('pick', [start, end]);
+                    }
+                }]
+            },
+        }
+    },
+    created() {
+        this.initValidTime()
+        this.getRegionPifaBox()
+        this.getProvince()
+    },
+    mounted() {
+    },
+    watch: {},
+    methods: {
+        async getRegionPifaBox() {
+            this.listLoading = true
+            if (this.validTime !== null) {
+                this.listQuery.startTime = this.validTime[0]
+                this.listQuery.endTime = this.validTime[1]
+            } else {
+                this.listQuery.startTime = ''
+                this.listQuery.endTime = ''
+            }
+            let res = await regionPifaBox(this.listQuery)
+            if (res.data.code === "200") {
+                if(res.data.result){
+                    this.statePurchaseData = res.data.result[0].subRegionData
+                }else{
+                    this.statePurchaseData = []
+                }
+            } else {
+                this.$message({
+                    type: 'warning',
+                    message: res.data.message
+                })
+            }
+            this.listLoading = false
+        },
+        digDetail(row){
+            if(row.subRegionData){
+                this.statePurchaseData = row.subRegionData
+            }
+        },
+        refresh() {
+            this.getRegionPifaBox()
+        },
+
+        // async exportToExcel() {
+        //     let res = await regionPifaBox(this.listQuery)
+        //     if (res.data.code === '200') {
+        //         if (res.data.result === null || res.data.result === [] || res.data.result.length === 0) {
+        //             this.$message({
+        //                 type: 'warning',
+        //                 message: '无数据可导出'
+        //             })
+        //         } else {
+        //             let allData = res.data.result
+        //             import('@/vendor/Export2Excel').then((excel) => {
+        //                 const tHeader = [
+        //                     '序号',
+        //                     '地市州',
+        //                     '合计(箱)',
+        //                     '爆竹类(箱)',
+        //                     '喷花类(箱)',
+        //                     '旋转类(箱)',
+        //                     '吐珠类(箱)',
+        //                     '玩具类(箱)',
+        //                     '组合烟花类(箱)',
+        //                 ]
+        //                 const filterVal = [
+        //                     'index',
+        //                     'region',
+        //                     'total',
+        //                     'baozhuCount',
+        //                     'penhuaCount',
+        //                     'xuanzhuanCount',
+        //                     'tuzhuCount',
+        //                     'wanjuCount',
+        //                     'zuheCount',
+        //                 ]
+        //                 const data = this.formatJson(filterVal, allData)
+        //                 excel.export_json_to_excel({
+        //                     header: tHeader,
+        //                     data,
+        //                     filename: '各地州进货统计'
+        //                 })
+        //             })
+        //         }
+        //     } else {
+        //         this.$message({
+        //             message: res.data.message,
+        //             type: 'warning'
+        //         })
+        //     }
+        // },
+        exportToExcel(){
+            let xlsxParam = {raw:true}
+            let wb = XLSX.utils.table_to_book(document.querySelector('#stateTable'),xlsxParam)
+            let wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })
+            try {
+                FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '地州进货统计.xlsx')
+            } catch (e) {
+                if (typeof console !== 'undefined') console.log(e, wbout)
+            }
+            return wbout
+        },
+        // formatJson(filterVal, jsonData) {
+        //     return jsonData.map(v => filterVal.map(j => v[j]))
+        // },
+        async getProvince() {
+            let res = await getProvinceListData()
+            if (res.data.code === "200") {
+                this.provinceList = res.data.result.provinceList
+            }
+        },//获取省
+
+        async changeArea(value) {
+            if (value === 'province') {
+                this.listQuery.city = ''
+                this.listQuery.district = ''
+                this.areaListQuery = {
+                    type: 2,
+                    parenttype: 1,
+                    parentname: this.listQuery.province,
+                }
+                let res = await getCityListData(this.areaListQuery)
+                if (res.data.code === "200") {
+                    this.cityList = res.data.result
+                }
+            } else if (value === 'city') {
+                this.listQuery.district = ''
+                this.areaListQuery = {
+                    type: 3,
+                    parenttype: 2,
+                    parentname: this.listQuery.city,
+                }
+                let res = await getCityListData(this.areaListQuery)
+                if (res.data.code === "200") {
+                    this.districtList = res.data.result
+                }
+            }
+        },
+
+        reset() {
+            this.initValidTime()
+            this.listQuery = {
+                startTime: '',
+                endTime: '',
+                companyName: '',
+                province: '',
+                city: '',
+                district: '',
+            }
+            this.getRegionPifaBox()
+        },
+        searchProductSearch() {
+            this.getRegionPifaBox()
+        },
+
+        initValidTime() {
+            const end = new Date();
+            if (end.getDate() - 1 === 0) {
+                this.validTime[0] = [end.getFullYear(), end.getMonth(), this.returnDay(end.getMonth(), end.getFullYear())].join("-") + " 00:00:00";
+                this.validTime[1] = [end.getFullYear(), end.getMonth(), this.returnDay(end.getMonth(), end.getFullYear())].join("-") + " 23:59:59";
+            } else if (end.getDate() - 1 === 0 && end.getMonth() === 0) {
+                this.validTime[0] = [end.getFullYear() - 1, 12, 31].join("-") + " 00:00:00";
+                this.validTime[1] = [end.getFullYear() - 1, 12, 31].join("-") + " 23:59:59";
+            } else {
+                this.validTime[0] = [end.getFullYear(), end.getMonth() + 1, end.getDate() - 1].join("-") + " 00:00:00";
+                this.validTime[1] = [end.getFullYear(), end.getMonth() + 1, end.getDate() - 1].join("-") + " 23:59:59";
+            }
+        },
+        returnDay(value, year) {
+            if (value === 1 || value === 3 || value === 5 || value === 7 || value === 8 || value === 10 || value === 12) {
+                return 31
+            } else if (value === 2) {
+                if (year % 4 === 0) {
+                    return 29
+                } else {
+                    return 28
+                }
+            } else {
+                return 30
+            }
+        },
+        showDetail(param) {
+            if( this.validTime !== null ){
+                if(param.subRegionData){
+                    this.$refs.purchaseDetail.open(param.region,1,this.validTime[0],this.validTime[1])
+                }else{
+                    this.$refs.purchaseDetail.open(param.region,2,this.validTime[0],this.validTime[1])
+                }
+            }else{
+                if(param.subRegionData){
+                    this.$refs.purchaseDetail.open(param.region,1,'','')
+                }else{
+                    this.$refs.purchaseDetail.open(param.region,2,'','')
+                }
+            }
+        },
+    },
+}
+</script>
+
+<style scoped>
+.basic_search {
+    display: inline-block;
+}
+</style>

--
Gitblit v1.9.2