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>
时间:  
@@ -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