This commit is contained in:
DESKTOP-369JRHT\12997 2024-11-09 17:18:02 +08:00
parent c93515f1f2
commit adccfd43fd
19 changed files with 523 additions and 279 deletions

View File

@ -15,11 +15,6 @@
</div> </div>
<div class="right-box"> <div class="right-box">
<div class="d-s"> <div class="d-s">
<!-- <div class="icon-img">-->
<!-- <img src="../../../src/assets/new/t-sousuo.png" alt="">-->
<!-- </div>-->
<!-- 搜索-->
<!-- </div>-->
<search id="header-search" class="right-menu-item"/> <search id="header-search" class="right-menu-item"/>
<span style="margin-right: 10px; ">搜索</span> <span style="margin-right: 10px; ">搜索</span>
<div class="d-s" @click="click"> <div class="d-s" @click="click">

View File

@ -2,7 +2,9 @@
<div v-if="!item.hidden"> <div v-if="!item.hidden">
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow"> <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)"> <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
<el-menu-item v-if="!isCollapse" :index="resolvePath(onlyOneChild.path)" style="padding-left: 20px;height: 48px" :class="{'submenu-title-noDropdown':!isNest}"> <el-menu-item v-if="!isCollapse" :index="resolvePath(onlyOneChild.path)"
ref="menu"
@open="handleOpen" style="padding-left: 20px;height: 48px" :class="{'submenu-title-noDropdown':!isNest}">
<!-- <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />--> <!-- <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />-->
<span style="margin-left: 30px" v-if="onlyOneChild.meta.title!='系统首页'">{{onlyOneChild.meta.title}}</span> <span style="margin-left: 30px" v-if="onlyOneChild.meta.title!='系统首页'">{{onlyOneChild.meta.title}}</span>
<div v-else style="background-color: white;width: 200px;height: 100%;position: fixed;left: 0px"> <div v-else style="background-color: white;width: 200px;height: 100%;position: fixed;left: 0px">
@ -11,7 +13,9 @@
<span>{{onlyOneChild.meta.title}}</span> <span>{{onlyOneChild.meta.title}}</span>
</div> </div>
</el-menu-item> </el-menu-item>
<el-menu-item v-if="isCollapse" :index="resolvePath(onlyOneChild.path)" style="padding-left: 20px;height: 60px" :class="{'submenu-title-noDropdown':!isNest}"> <el-menu-item v-if="isCollapse" :index="resolvePath(onlyOneChild.path)"
ref="menu"
@open="handleOpen" style="padding-left: 20px;height: 60px" :class="{'submenu-title-noDropdown':!isNest}">
<!-- <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />--> <!-- <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />-->
<span style="margin-left: 30px" v-if="onlyOneChild.meta.title!='系统首页'">{{onlyOneChild.meta.title}}</span> <span style="margin-left: 30px" v-if="onlyOneChild.meta.title!='系统首页'">{{onlyOneChild.meta.title}}</span>
<div v-else style="background-color: white;width: 70px;height: 100%;position: fixed;left: 0px;text-align: center"> <div v-else style="background-color: white;width: 70px;height: 100%;position: fixed;left: 0px;text-align: center">
@ -23,7 +27,8 @@
</app-link> </app-link>
</template> </template>
<el-submenu v-else ref="subMenu" :style="{'height':isCollapse ? '60px':''}" :index="resolvePath(item.path)" popper-append-to-body > <el-submenu v-else ref="subMenu" :style="{'height':isCollapse ? '60px':''}"
@open="handleOpen" :index="resolvePath(item.path)" popper-append-to-body >
<template slot="title"> <template slot="title">
<div v-if="!isCollapse" > <div v-if="!isCollapse" >
<!-- <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />--> <!-- <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />-->
@ -174,10 +179,23 @@ export default {
data() { data() {
this.onlyOneChild = null this.onlyOneChild = null
return { return {
defaultActive:"" defaultActive:"",
keyIndex: 0
}
},
watch:{
$route () {
//
if (this.$route.path == '/index') {
this.$refs.menu.close(this.keyIndex);
this.$refs.subMenu.close(this.keyIndex);
}
} }
}, },
methods: { methods: {
handleOpen(key) {
this.keyIndex = key;
},
hasOneShowingChild(children = [], parent) { hasOneShowingChild(children = [], parent) {
if (!children) { if (!children) {
children = []; children = [];

View File

@ -2,11 +2,11 @@
<div :class="{'has-logo':showLogo}" <div :class="{'has-logo':showLogo}"
:style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground}, :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground},
{width: isCollapse ? '70px !important' : '200px !important' }"> {width: isCollapse ? '70px !important' : '200px !important' }">
<logo v-if="showLogo" :collapse="isCollapse" /> <logo v-if="showLogo" :collapse="isCollapse"/>
<!-- <div class="store-info" v-if="storeName">--> <!-- <div class="store-info" v-if="storeName">-->
<!-- <div class="name">{{ storeName }}</div>--> <!-- <div class="name">{{ storeName }}</div>-->
<!-- <div class="role" v-if="role">{{ role }}</div>--> <!-- <div class="role" v-if="role">{{ role }}</div>-->
<!-- </div>--> <!-- </div>-->
<el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper"> <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
<div v-if="isCollapse" style="width: 70px;"> <div v-if="isCollapse" style="width: 70px;">
<el-menu <el-menu
@ -19,6 +19,8 @@
:collapse-transition="false" :collapse-transition="false"
style="margin-bottom: 80px;height: 60px" style="margin-bottom: 80px;height: 60px"
mode="vertical" mode="vertical"
ref="menu"
@open="handleOpen"
> >
<sidebar-item <sidebar-item
v-for="(route, index) in sidebarRouters" v-for="(route, index) in sidebarRouters"
@ -41,6 +43,8 @@
:collapse-transition="false" :collapse-transition="false"
style="margin-bottom: 80px;height: 48px" style="margin-bottom: 80px;height: 48px"
mode="vertical" mode="vertical"
ref="menu"
@open="handleOpen"
> >
<sidebar-item <sidebar-item
v-for="(route, index) in sidebarRouters" v-for="(route, index) in sidebarRouters"
@ -56,19 +60,19 @@
</template> </template>
<script> <script>
import { mapGetters, mapState } from "vuex"; import {mapGetters, mapState} from "vuex";
import Logo from "./Logo"; import Logo from "./Logo";
import SidebarItem from "./SidebarItem"; import SidebarItem from "./SidebarItem";
import variables from "@/assets/styles/variables.scss"; import variables from "@/assets/styles/variables.scss";
export default { export default {
components: { SidebarItem, Logo }, components: {SidebarItem, Logo},
computed: { computed: {
...mapState(["settings"]), ...mapState(["settings"]),
...mapGetters(["sidebarRouters", "sidebar"]), ...mapGetters(["sidebarRouters", "sidebar"]),
activeMenu() { activeMenu() {
const route = this.$route; const route = this.$route;
const { meta, path } = route; const {meta, path} = route;
// if set path, the sidebar will highlight the path you set // if set path, the sidebar will highlight the path you set
if (meta.activeMenu) { if (meta.activeMenu) {
return meta.activeMenu; return meta.activeMenu;
@ -82,10 +86,10 @@ export default {
return variables; return variables;
}, },
isCollapse() { isCollapse() {
if (!this.sidebar.opened){ if (!this.sidebar.opened) {
document.documentElement.style.setProperty('--sidebar-width', '70px'); document.documentElement.style.setProperty('--sidebar-width', '70px');
document.documentElement.style.setProperty('--sidebar-height', '60px'); document.documentElement.style.setProperty('--sidebar-height', '60px');
}else { } else {
document.documentElement.style.setProperty('--sidebar-width', '200px'); document.documentElement.style.setProperty('--sidebar-width', '200px');
document.documentElement.style.setProperty('--sidebar-height', '48px'); document.documentElement.style.setProperty('--sidebar-height', '48px');
} }
@ -109,8 +113,28 @@ export default {
return '商户管理员'; return '商户管理员';
} }
} }
},
data() {
return {
keyIndex: 0
}
},
watch:{
$route () {
//
if (this.$route.path == '/index') {
this.$refs.menu.close(this.keyIndex);
}
}
},
methods: {
handleOpen(key) {
this.keyIndex = key;
}
} }
}; }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -127,6 +151,7 @@ export default {
border-radius: 8px; border-radius: 8px;
margin: 0px 6px 10px 6px; margin: 0px 6px 10px 6px;
cursor: pointer; cursor: pointer;
.name { .name {
font-weight: bold; font-weight: bold;
font-size: 14px; font-size: 14px;
@ -134,6 +159,7 @@ export default {
text-align: center; text-align: center;
overflow: hidden; overflow: hidden;
} }
.role { .role {
font-size: 10px; font-size: 10px;
margin-top: 3px; margin-top: 3px;

View File

@ -14,14 +14,12 @@
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import RightPanel from '@/components/RightPanel' import RightPanel from '@/components/RightPanel'
import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components' import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components'
import ResizeMixin from './mixin/ResizeHandler' import ResizeMixin from './mixin/ResizeHandler'
import { mapState } from 'vuex' import { mapState } from 'vuex'
import variables from '@/assets/styles/variables.scss' import variables from '@/assets/styles/variables.scss'
export default { export default {
name: 'Layout', name: 'Layout',
components: { components: {

View File

@ -34,10 +34,6 @@
</span> </span>
</div> </div>
</div> </div>
<div style="height: 100%; width: 30%; display: flex; flex-direction: column; justify-content: space-between;"> <div style="height: 100%; width: 30%; display: flex; flex-direction: column; justify-content: space-between;">
<el-form ref="myForm" label-width="100px"> <el-form ref="myForm" label-width="100px">
<el-form-item label="盘点单号"> <el-form-item label="盘点单号">
@ -94,77 +90,74 @@
</el-col> </el-col>
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>--> <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
</el-row> </el-row>
<el-table ref="tables" <div style="height: 71vh;overflow: auto; scrollbar-width: none">
v-loading="loading" <el-table ref="tables"
:data="orderList" v-loading="loading"
:default-sort="defaultSort"> :data="orderList"
<el-table-column align="center" type="index" label="序号"></el-table-column> :default-sort="defaultSort">
<el-table-column label="油罐名称" align="center" prop="tankName"/> <el-table-column align="center" type="index" label="序号"></el-table-column>
<el-table-column label="油品-油号" align="center" prop="numberName"/> <el-table-column label="油罐名称" align="center" prop="tankName"/>
<el-table-column label="供应商" align="center" prop="numberName"/> <el-table-column label="油品-油号" align="center" prop="numberName"/>
<el-table-column label="供应商" align="center" prop="numberName"/>
<el-table-column label="上次采购信息" align="center" prop="numberName"> <el-table-column label="上次采购信息" align="center" prop="numberName">
<el-table-column label="采购总价(元)" align="center" prop="theTotalPurchasePrice"> <el-table-column label="采购总价(元)" align="center" prop="theTotalPurchasePrice">
<template slot-scope="scope">
{{scope.row.theTotalPurchasePrice?scope.row.theTotalPurchasePrice:'--'}}
</template>
</el-table-column>
<el-table-column label="采购油量(L)" align="center" prop="theAmountOfOilPurchased"/>
<el-table-column label="采购单价(元)" align="center" prop="purchaseUnitPrice"/>
</el-table-column>
<el-table-column label="销售信息" align="center" prop="numberName">
<el-table-column label="销售总油量(L)" align="center" prop="totalOilVolumeSold">
<template slot-scope="scope">
{{scope.row.totalOilVolumeSold?scope.row.totalOilVolumeSold:'--'}}
</template>
</el-table-column>
<!-- <el-table-column label="销售售出价" align="center" prop="numberName"/>-->
<el-table-column label="销售总金额(元)" align="center" prop="theTotalSalePrice">
<template slot-scope="scope">
{{scope.row.theTotalSalePrice?scope.row.theTotalSalePrice:'--'}}
</template>
</el-table-column>
</el-table-column>
<el-table-column label="当前剩余油量(元/吨)" align="center" prop="currentInventoryVolume">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.theTotalPurchasePrice?scope.row.theTotalPurchasePrice:'--'}} {{scope.row.totalPrice?scope.row.totalPrice:'--'}}/{{scope.row.theTotalSalePrice?scope.row.theTotalSalePrice:'--'}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="采购油量(L)" align="center" prop="theAmountOfOilPurchased"/> <!-- <el-table-column label="当前剩余油量总价" align="center" prop="totalPrice"/>-->
<el-table-column label="采购单价(元)" align="center" prop="purchaseUnitPrice"/>
</el-table-column>
<el-table-column label="销售信息" align="center" prop="numberName"> <el-table-column label="当前均价(元/L)" align="center" prop="currentAveragePrice" />
<el-table-column label="销售总油量(L)" align="center" prop="totalOilVolumeSold"> <el-table-column label="当前库存(L)" align="center" prop="currentInventoryVolume"/>
<el-table-column label="盘点升数(L)" align="center" prop="inventoryVolume" width="150px">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.totalOilVolumeSold?scope.row.totalOilVolumeSold:'--'}} <el-input-number :disabled="numberInput" v-model="scope.row.inventoryVolume" @change="change(scope.row)" controls-position="right" :min="0" :max="100000000" :step="1" :precision="2" style="max-width: 100%"></el-input-number>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="销售售出价" align="center" prop="numberName"/>--> <el-table-column label="库存差异(L)" align="center" prop="stockDifference"/>
<el-table-column label="销售总金额(元)" align="center" prop="theTotalSalePrice"> <el-table-column label="盈亏金额(元)" align="center" prop="profitLossAmount"/>
<el-table-column v-if="state =='await'" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.theTotalSalePrice?scope.row.theTotalSalePrice:'--'}} <el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="orderDel(scope.row)"
>删除</el-button>
</template> </template>
<!-- v-hasPermi="['']"-->
</el-table-column> </el-table-column>
</el-table-column> </el-table>
</div>
<el-table-column label="当前剩余油量(元/吨)" align="center" prop="currentInventoryVolume">
<template slot-scope="scope">
{{scope.row.totalPrice?scope.row.totalPrice:'--'}}/{{scope.row.theTotalSalePrice?scope.row.theTotalSalePrice:'--'}}
</template>
</el-table-column>
<!-- <el-table-column label="当前剩余油量总价" align="center" prop="totalPrice"/>-->
<el-table-column label="当前均价(元/L)" align="center" prop="currentAveragePrice" />
<el-table-column label="当前库存(L)" align="center" prop="currentInventoryVolume"/>
<el-table-column label="盘点升数(L)" align="center" prop="inventoryVolume" width="150px">
<template slot-scope="scope">
<el-input-number :disabled="numberInput" v-model="scope.row.inventoryVolume" @change="change(scope.row)" controls-position="right" :min="0" :max="100000000" :step="1" :precision="2" style="max-width: 100%"></el-input-number>
</template>
</el-table-column>
<el-table-column label="库存差异(L)" align="center" prop="stockDifference"/>
<el-table-column label="盈亏金额(元)" align="center" prop="profitLossAmount"/>
<el-table-column v-if="state =='await'" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="orderDel(scope.row)"
>删除</el-button>
</template>
<!-- v-hasPermi="['']"-->
</el-table-column>
</el-table>
<!-- <pagination-->
<!-- v-show="total>0"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.page"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @pagination="getList"-->
<!-- />-->
</div> </div>
<!-- 添加采购油品--> <!-- 添加采购油品-->
@ -918,6 +911,5 @@ export default {
box-sizing: border-box; box-sizing: border-box;
padding: 15px; padding: 15px;
margin: 10px; margin: 10px;
height: 80vh;
} }
</style> </style>

View File

@ -2,7 +2,9 @@
<div v-if="!item.hidden"> <div v-if="!item.hidden">
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow"> <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)"> <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
<el-menu-item v-if="!isCollapse" :index="resolvePath(onlyOneChild.path)" style="padding-left: 20px;" :class="{'submenu-title-noDropdown':!isNest}"> <el-menu-item v-if="!isCollapse" :index="resolvePath(onlyOneChild.path)" style="padding-left: 20px;"
ref="menu"
@open="handleOpen" :class="{'submenu-title-noDropdown':!isNest}">
<!-- <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />--> <!-- <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />-->
<span style="margin-left: 30px" v-if="onlyOneChild.meta.title!='系统首页'">{{onlyOneChild.meta.title}}</span> <span style="margin-left: 30px" v-if="onlyOneChild.meta.title!='系统首页'">{{onlyOneChild.meta.title}}</span>
<div v-else style="background-color: white;width: 200px;height: 100%;position: fixed;left: 0px"> <div v-else style="background-color: white;width: 200px;height: 100%;position: fixed;left: 0px">
@ -11,7 +13,9 @@
<span>{{onlyOneChild.meta.title}}</span> <span>{{onlyOneChild.meta.title}}</span>
</div> </div>
</el-menu-item> </el-menu-item>
<el-menu-item v-if="isCollapse" :index="resolvePath(onlyOneChild.path)" style="padding-left: 20px;height: 60px" :class="{'submenu-title-noDropdown':!isNest}"> <el-menu-item v-if="isCollapse" :index="resolvePath(onlyOneChild.path)"
ref="menu"
@open="handleOpen" style="padding-left: 20px;height: 60px" :class="{'submenu-title-noDropdown':!isNest}">
<!-- <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />--> <!-- <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />-->
<span style="margin-left: 30px" v-if="onlyOneChild.meta.title!='系统首页'">{{onlyOneChild.meta.title}}</span> <span style="margin-left: 30px" v-if="onlyOneChild.meta.title!='系统首页'">{{onlyOneChild.meta.title}}</span>
<div v-else style="background-color: white;width: 70px;height: 100%;position: fixed;left: 0px;text-align: center"> <div v-else style="background-color: white;width: 70px;height: 100%;position: fixed;left: 0px;text-align: center">
@ -24,7 +28,8 @@
</app-link> </app-link>
</template> </template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body> <el-submenu v-else ref="subMenu"
@open="handleOpen" :index="resolvePath(item.path)" popper-append-to-body>
<template slot="title"> <template slot="title">
<div v-if="!isCollapse" > <div v-if="!isCollapse" >
<!-- <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />--> <!-- <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />-->
@ -205,9 +210,23 @@ export default {
}, },
data() { data() {
this.onlyOneChild = null this.onlyOneChild = null
return {} return {
keyIndex: 0
}
},
watch:{
$route () {
//
if (this.$route.path == '/index') {
this.$refs.menu.close(this.keyIndex);
this.$refs.subMenu.close(this.keyIndex);
}
}
}, },
methods: { methods: {
handleOpen(key) {
this.keyIndex = key;
},
hasOneShowingChild(children = [], parent) { hasOneShowingChild(children = [], parent) {
console.log('212') console.log('212')
if (!children) { if (!children) {

View File

@ -1,116 +1,140 @@
<template> <template>
<div :class="{'has-logo':showLogo}" :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }"> <div :class="{'has-logo':showLogo}"
<logo v-if="showLogo" :collapse="isCollapse" /> :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<!-- <div class="store-info" v-if="storeName">--> <logo v-if="showLogo" :collapse="isCollapse"/>
<!-- <div class="name">{{ storeName }}</div>--> <!-- <div class="store-info" v-if="storeName">-->
<!-- <div class="role" v-if="role">{{ role }}</div>--> <!-- <div class="name">{{ storeName }}</div>-->
<!-- </div>--> <!-- <div class="role" v-if="role">{{ role }}</div>-->
<el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper"> <!-- </div>-->
<el-menu <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
<el-menu
:default-active="activeMenu" :default-active="activeMenu"
:collapse="isCollapse" :collapse="isCollapse"
:background-color="settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground" :background-color="settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground"
:text-color="settings.sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor" :text-color="settings.sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor"
:unique-opened="true" :unique-opened="true"
:active-text-color="settings.theme" :active-text-color="settings.theme"
:collapse-transition="false" :collapse-transition="false"
mode="vertical" mode="vertical"
style="margin-bottom: 80px;" style="margin-bottom: 80px;"
> ref="menu"
<sidebar-item @open="handleOpen"
v-for="(route, index) in sidebarRouters" >
:key="route.path + index" <sidebar-item
:item="route" v-for="(route, index) in sidebarRouters"
:base-path="route.path" :key="route.path + index"
:activeMenu="activeMenu" :item="route"
:isCollapse="isCollapse" :base-path="route.path"
/> :activeMenu="activeMenu"
</el-menu> :isCollapse="isCollapse"
</el-scrollbar> />
</div> </el-menu>
</el-scrollbar>
</div>
</template> </template>
<script> <script>
import { mapGetters, mapState } from "vuex"; import {mapGetters, mapState} from "vuex";
import Logo from "./Logo"; import Logo from "./Logo";
import SidebarItem from "./SidebarItem"; import SidebarItem from "./SidebarItem";
import variables from "@/assets/styles/variables.scss"; import variables from "@/assets/styles/variables.scss";
export default { export default {
components: { SidebarItem, Logo }, components: {SidebarItem, Logo},
computed: { computed: {
...mapState(["settings"]), ...mapState(["settings"]),
...mapGetters(["sidebarRouters", "sidebar"]), ...mapGetters(["sidebarRouters", "sidebar"]),
activeMenu() { activeMenu() {
const route = this.$route; const route = this.$route;
const { meta, path } = route; const {meta, path} = route;
// if set path, the sidebar will highlight the path you set // if set path, the sidebar will highlight the path you set
if (meta.activeMenu) { if (meta.activeMenu) {
return meta.activeMenu; return meta.activeMenu;
} }
return path; return path;
}, },
showLogo() { showLogo() {
return this.$store.state.settings.sidebarLogo; return this.$store.state.settings.sidebarLogo;
}, },
variables() { variables() {
return variables; return variables;
}, },
isCollapse() { isCollapse() {
if (!this.sidebar.opened){ if (!this.sidebar.opened) {
document.documentElement.style.setProperty('--sidebar-height', '60px'); document.documentElement.style.setProperty('--sidebar-height', '60px');
}else { } else {
document.documentElement.style.setProperty('--sidebar-height', '48px'); document.documentElement.style.setProperty('--sidebar-height', '48px');
} }
return !this.sidebar.opened; return !this.sidebar.opened;
}, },
storeName() { storeName() {
if (this.$store.getters.merchantName && this.$store.getters.merchantId) { if (this.$store.getters.merchantName && this.$store.getters.merchantId) {
return this.$store.getters.merchantName; return this.$store.getters.merchantName;
} }
if (this.$store.getters.storeName && this.$store.getters.storeId) { if (this.$store.getters.storeName && this.$store.getters.storeId) {
return this.$store.getters.storeName; return this.$store.getters.storeName;
} }
return ''; return '';
}, },
role() { role() {
if (this.$store.getters.storeName && this.$store.getters.storeId) { if (this.$store.getters.storeName && this.$store.getters.storeId) {
return '店铺管理员'; return '店铺管理员';
} }
if (this.$store.getters.merchantName && this.$store.getters.merchantId) { if (this.$store.getters.merchantName && this.$store.getters.merchantId) {
return '商户管理员'; return '商户管理员';
} }
}
} }
},
data() {
return {
keyIndex: 0
}
},
watch: {
$route() {
//
if (this.$route.path == '/index') {
this.$refs.menu.close(this.keyIndex);
}
}
},
methods: {
handleOpen(key) {
this.keyIndex = key;
}
}
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.store-info { .store-info {
height: 42px; height: 42px;
padding-top: 2px; padding-top: 2px;
text-align: center;
background: #00acac;
overflow: hidden;
border: 1px #ffffff solid;
border-radius: 2px;
margin: 0px 6px 10px 6px;
cursor: pointer;
.name {
font-weight: bold;
font-size: 14px;
color: #ffffff;
text-align: center; text-align: center;
background: #00acac;
overflow: hidden; overflow: hidden;
border: 1px #ffffff solid;
border-radius: 2px;
margin: 0px 6px 10px 6px;
cursor: pointer;
.name {
font-weight: bold;
font-size: 14px;
color: #ffffff;
text-align: center;
overflow: hidden;
}
.role {
font-size: 10px;
margin-top: 3px;
color: #ffffff;
}
} }
.role {
font-size: 10px;
margin-top: 3px;
color: #ffffff;
}
}
</style> </style>

View File

@ -558,7 +558,11 @@
border border
:data="dutyList"> :data="dutyList">
<el-table-column label="序号" align="center" type="index" width="50"></el-table-column> <el-table-column label="序号" align="center" type="index" width="50"></el-table-column>
<el-table-column label="角色名称" align="center" prop="dutyName" /> <el-table-column label="角色名称" align="center" prop="dutyName" >
<template slot-scope="scope">
{{scope.row.dutyName}}
</template>
</el-table-column>
<!-- <el-table-column label="角色类型" align="center" prop="dutyType" >--> <!-- <el-table-column label="角色类型" align="center" prop="dutyType" >-->
<!-- <template slot-scope="scope">--> <!-- <template slot-scope="scope">-->
<!-- <span v-if="scope.row.dutyType=='1'">超级管理员</span>--> <!-- <span v-if="scope.row.dutyType=='1'">超级管理员</span>-->
@ -699,12 +703,13 @@
<!-- <el-radio :key=1 :label=1 :value=1>启用</el-radio>--> <!-- <el-radio :key=1 :label=1 :value=1>启用</el-radio>-->
<!-- <el-radio :key=0 :label=0 :value=0>禁用</el-radio>--> <!-- <el-radio :key=0 :label=0 :value=0>禁用</el-radio>-->
<!-- </el-radio-group>--> <!-- </el-radio-group>-->
<el-switch <el-switch
v-model="form.accountStatus" v-model="form.accountStatus"
active-color="#13ce66" active-color="#13ce66"
inactive-color="#ff4949" inactive-color="#ff4949"
active-value="1" :active-value="1"
inactive-value="0"> :inactive-value="0">
</el-switch> </el-switch>
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -19,8 +19,11 @@
</div> </div>
<dai_yunyingfenxi-pay-type v-if="radio1 === '支付方式分析'"></dai_yunyingfenxi-pay-type> <div class="hui_box">
<dai_yunyingfenxi-paym v-if="radio1 === '支付通道分析'"></dai_yunyingfenxi-paym> <dai_yunyingfenxi-pay-type v-if="radio1 === '支付方式分析'"></dai_yunyingfenxi-pay-type>
<dai_yunyingfenxi-paym v-if="radio1 === '支付通道分析'"></dai_yunyingfenxi-paym>
</div>
</div> </div>
</template> </template>
@ -65,6 +68,10 @@ export default {
box-sizing: border-box; box-sizing: border-box;
//padding: 10px; //padding: 10px;
} }
.hui_box{
box-sizing: border-box;
padding: 10px;
}
.app-top{ .app-top{
width: 100%; width: 100%;
//margin-bottom: 20px; //margin-bottom: 20px;

View File

@ -1,7 +1,7 @@
<!-- 收银台订单--> <!-- 收银台订单-->
<template> <template>
<div style="padding-top: 15px; padding-right: 20px; background: #f6f8f9;padding-bottom: 15px"> <div >
<div class="card-change2" style="margin-left: 20px; padding-top: 0px;padding-bottom: 5px" shadow="never" > <div class="top_box" shadow="never" >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px" > <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px" >
<div class="d-s" style="justify-content: space-between"> <div class="d-s" style="justify-content: space-between">
<div class="d-s"> <div class="d-s">
@ -62,7 +62,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="card-change" style="min-height: 500px; margin-left: 20px;margin-top: 20px" shadow="never"> <div class="card-change" shadow="never">
<div class="table-box"> <div class="table-box">
<el-table <el-table
:data="orderList" :data="orderList"
@ -293,23 +293,32 @@ export default {
</script> </script>
<style scoped> <style scoped>
.box-card { .top_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%; width: 100%;
margin: 0px 20px 4px 20px; }
border: none; .table-box{
box-shadow: none; width: 100%;
height: 60vh;
scrollbar-width: none;
overflow: auto;
}
.center_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%;
margin: 5px auto;
} }
.el-form--inline .el-form-item { .el-form--inline .el-form-item {
margin-right: 20px; margin-right: 20px;
} }
.table-box {
width: 100%;
height: 56vh;
overflow: auto;
}
.wrap-boxs { .wrap-boxs {
width: 100%; width: 100%;
display: flex; display: flex;

View File

@ -41,14 +41,14 @@
</div> </div>
<template > <div class="rl_box">
<yunyingfenxi-vip v-if="radio1 === '会员分析'"></yunyingfenxi-vip> <yunyingfenxi-vip v-if="radio1 === '会员分析'"></yunyingfenxi-vip>
<yunyingfenxi-oil v-if="radio1 === '油品分析'"></yunyingfenxi-oil> <yunyingfenxi-oil v-if="radio1 === '油品分析'"></yunyingfenxi-oil>
<yunyingfenxi-store v-if="radio1 === '便利店分析'"></yunyingfenxi-store> <yunyingfenxi-store v-if="radio1 === '便利店分析'"></yunyingfenxi-store>
<yunyingfenxi-int v-if="radio1 === '积分商城分析'"></yunyingfenxi-int> <yunyingfenxi-int v-if="radio1 === '积分商城分析'"></yunyingfenxi-int>
<dai_yunyingfenxi-pay-type v-if="radio1 === '支付方式分析'"></dai_yunyingfenxi-pay-type> <dai_yunyingfenxi-pay-type v-if="radio1 === '支付方式分析'"></dai_yunyingfenxi-pay-type>
<dai_yunyingfenxi-paym v-if="radio1 === '支付通道分析'"></dai_yunyingfenxi-paym> <dai_yunyingfenxi-paym v-if="radio1 === '支付通道分析'"></dai_yunyingfenxi-paym>
</template> </div>
</div> </div>
</template> </template>
@ -97,7 +97,6 @@ export default {
.app-center{ .app-center{
width: 100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
//padding: 10px;
} }
.app-top{ .app-top{
width: 100%; width: 100%;
@ -115,7 +114,7 @@ export default {
margin-left: 50px; margin-left: 50px;
//height: 40px; //height: 40px;
display: flex; display: flex;
background-color: #FFFFFF; background-color: #FFFFFF;
align-items: center; align-items: center;
//border: 1px solid #EBEEF5; //border: 1px solid #EBEEF5;
} }
@ -126,15 +125,16 @@ background-color: #FFFFFF;
font-size: 14px; font-size: 14px;
color: #999999 color: #999999
} }
.fount-box2{
font-size: 14px;
color: #999999
}
.heng-box{ .heng-box{
background-color: #FF770F; background-color: #FF770F;
width: 100%; width: 100%;
height: 2px; height: 2px;
margin-top: 10px; margin-top: 10px;
} }
.rl_box{
width: 100%;
box-sizing: border-box;
padding: 10px;
padding-bottom: 0px;
}
</style> </style>

View File

@ -1,7 +1,7 @@
<!-- 收银台订单--> <!-- 收银台订单-->
<template> <template>
<div style="padding-top: 20px; padding-right: 20px; background: #f6f8f9;padding-bottom: 15px"> <div >
<div class="card-change2-1" shadow="never" style="margin-bottom: 25px;"> <div class="top_box" shadow="never" >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
<div class="d-s" style="justify-content: space-between;width: 100%"> <div class="d-s" style="justify-content: space-between;width: 100%">
<div class="d-s"> <div class="d-s">
@ -58,7 +58,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="card-change-1" style="min-height: 500px;" shadow="never"> <div class="center_box" shadow="never">
<div class="table-box"> <div class="table-box">
<el-table <el-table
:data="orderList" :data="orderList"
@ -289,23 +289,33 @@ export default {
</script> </script>
<style scoped> <style scoped>
.box-card { .top_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%; width: 100%;
margin: 0px 20px 4px 20px; }
border: none; .table-box{
box-shadow: none; width: 100%;
height: 57vh;
scrollbar-width: none;
overflow: auto;
}
.center_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%;
margin: 5px auto;
} }
.el-form--inline .el-form-item { .el-form--inline .el-form-item {
margin-right: 20px; margin-right: 20px;
} }
.table-box {
width: 100%;
height: 52vh;
min-height: 600px;
overflow: auto;
}
.wrap-box { .wrap-box {
width: 100%; width: 100%;

View File

@ -1,7 +1,7 @@
<!-- 油品分析 --> <!-- 油品分析 -->
<template> <template>
<div style="padding-top: 20px; padding-right: 20px; background: #f6f8f9;padding-bottom: 15px"> <div >
<div class="card-change2-1" shadow="never" style="margin-bottom: 25px;"> <div class="top_box" shadow="never" >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
<div class="d-s" style="justify-content: space-between;width: 100%"> <div class="d-s" style="justify-content: space-between;width: 100%">
<div class="d-s"> <div class="d-s">
@ -68,9 +68,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="card-change-1" style="min-height: 500px;" shadow="never"> <div class="center_box" shadow="never">
<div class="table-box" > <div class="table-box" >
<el-table <el-table
:data="orderList" :data="orderList"
@ -339,23 +337,32 @@ import {parseTime} from "@/utils/fuint";
</script> </script>
<style scoped> <style scoped>
.box-card{ .top_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%; width: 100%;
margin: 0px 20px 4px 20px; }
border: none; .table-box{
box-shadow: none; width: 100%;
height: 57vh;
scrollbar-width: none;
overflow: auto;
}
.center_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%;
margin: 5px auto;
} }
.el-form--inline .el-form-item { .el-form--inline .el-form-item {
margin-right: 20px; margin-right: 20px;
} }
.table-box{
width: 100%;
height: 52vh;
min-height: 600px;
overflow: auto;
}
.wrap-box{ .wrap-box{
width: 100%; width: 100%;
display: flex; display: flex;

View File

@ -1,7 +1,7 @@
<!-- 收银台订单--> <!-- 收银台订单-->
<template> <template>
<div style="padding-top: 20px; padding-right: 20px; background: #f6f8f9;padding-bottom: 15px" > <div >
<div class="card-change2-1" shadow="never" style="margin-bottom: 25px;"> <div class="top_box" shadow="never" >
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px" > <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px" >
<div class="d-s" style="justify-content: space-between;width: 100%"> <div class="d-s" style="justify-content: space-between;width: 100%">
<div class="d-s"> <div class="d-s">
@ -59,7 +59,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="card-change-1" style="min-height: 500px;" shadow="never"> <div class="center_box" shadow="never">
<div class="table-box"> <div class="table-box">
<el-table <el-table
:data="orderList" :data="orderList"
@ -93,7 +93,7 @@
<el-table-column label="热销商品信息" align="center"> <el-table-column label="热销商品信息" align="center">
<el-table-column prop="goodsName" label="商品名称" width="100" align="center"></el-table-column> <el-table-column prop="goodsName" label="商品名称" width="100" align="center"></el-table-column>
<el-table-column prop="goodsNum" label="销售数量" width="100" align="center"></el-table-column> <el-table-column prop="goodsNum" label="销售数量" width="100" align="center"></el-table-column>
<el-table-column prop="goodsAmount" label="销售金额 (元)" width="150" align="center"></el-table-column> <el-table-column prop="goodsAmount" label="销售金额 (元)" width="100" align="center"></el-table-column>
<!-- <el-table-column prop="supplierName" label="供应商名称" width="100" align="center"></el-table-column>--> <!-- <el-table-column prop="supplierName" label="供应商名称" width="100" align="center"></el-table-column>-->
</el-table-column> </el-table-column>
<el-table-column prop="statDate" label="统计日期" width="200" align="center"> <el-table-column prop="statDate" label="统计日期" width="200" align="center">
@ -312,23 +312,34 @@ import {parseTime} from "@/utils/fuint";
</script> </script>
<style scoped> <style scoped>
.box-card{ .top_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%; width: 100%;
margin: 0px 20px 4px 20px;
border: none;
box-shadow: none;
} }
.table-box{
width: 100%;
height: 57vh;
scrollbar-width: none;
overflow: auto;
}
.center_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%;
margin: 5px auto;
}
.el-form--inline .el-form-item { .el-form--inline .el-form-item {
margin-right: 20px; margin-right: 20px;
} }
.table-box{
width: 100%;
height: 52vh;
min-height: 600px;
overflow: auto;
}
.wrap-box{ .wrap-box{
width: 100%; width: 100%;
display: flex; display: flex;

View File

@ -1,7 +1,7 @@
<!-- 收银台订单--> <!-- 收银台订单-->
<template> <template>
<div class="" style="padding-top: 20px; padding-right: 20px; background: #f6f8f9;padding-bottom: 15px"> <div class="" >
<div class="card-change2-1" style="padding-top: 20px; margin-bottom: 25px;" shadow="never"> <div class="top_box"shadow="never">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
<el-form-item label="" prop="deptId" style="width: 180px"> <el-form-item label="" prop="deptId" style="width: 180px">
<el-select <el-select
@ -53,7 +53,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="card-change-1" style="min-height: 500px;" shadow="never"> <div class="center_box" shadow="never">
<div class="table-box"> <div class="table-box">
<el-table <el-table
:data="orderList" :data="orderList"
@ -236,23 +236,32 @@ import {getFenXiUserbalanceDataApi, getFenXiUserbalanceListApi} from "@/api/fina
</script> </script>
<style scoped> <style scoped>
.box-card{ .top_box{
width: 100%; border-radius: 6px;
margin: 0px 20px 4px 20px; background: #fff;
border: none; box-sizing: border-box;
box-shadow: none; padding: 10px;
} width: 100%;
}
.table-box{
width: 100%;
height: 59vh;
scrollbar-width: none;
overflow: auto;
}
.center_box{
border-radius: 6px;
background: #fff;
box-sizing: border-box;
padding: 10px;
width: 100%;
margin: 5px auto;
}
.el-form--inline .el-form-item { .el-form--inline .el-form-item {
margin-right: 20px; margin-right: 20px;
} }
.table-box{
width: 100%;
height: 52vh;
min-height: 600px;
overflow: auto;
}
.wrap-box{ .wrap-box{
width: 100%; width: 100%;
display: flex; display: flex;

View File

@ -57,11 +57,12 @@
<div style="margin-right: 40px"> <div style="margin-right: 40px">
<el-date-picker <el-date-picker
v-model="value1" v-model="value1"
type="daterange" type="datetimerange"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:picker-options="pickerOptions"
@change="getStoreAmount"> @change="getStoreAmount">
</el-date-picker> </el-date-picker>
</div> </div>
@ -162,11 +163,12 @@
<span style="margin-top: -10px;"> <span style="margin-top: -10px;">
<el-date-picker <el-date-picker
v-model="value2" v-model="value2"
type="daterange" type="datetimerange"
range-separator="至" range-separator="至"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:picker-options="pickerOptions"
:disabled="disabled" :disabled="disabled"
@change="getStoreList()"> @change="getStoreList()">
</el-date-picker> </el-date-picker>
@ -232,13 +234,18 @@ export default {
bannerList:{}, bannerList:{},
storeList:[], storeList:[],
hardwareList:[], hardwareList:[],
noticeList:[] noticeList:[],
pickerOptions: {
disabledDate: time => {
return time.getTime() > new Date();
}
}
} }
}, },
created() { created() {
let nowDate = new Date(); let nowDate = new Date();
let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000) let oneWeekAgo = new Date(nowDate.getTime() - 6 * 24 * 60 * 60 * 1000)
this.value1 = [formatDate(oneWeekAgo),formatDate(nowDate)] this.value1 = [parseTime(oneWeekAgo),parseTime(nowDate)]
this.getStoreTotal() this.getStoreTotal()
this.selectChildByDeptIdApi() this.selectChildByDeptIdApi()
// this.getStoreAmount() // this.getStoreAmount()
@ -304,7 +311,7 @@ export default {
} }
this.getStoreList() this.getStoreList()
}, },
getStoreList(){ getStoreList(val){
getStoreAmountByTime(this.addDateRange({},this.value2)).then(res => { getStoreAmountByTime(this.addDateRange({},this.value2)).then(res => {
this.storeList = res.data this.storeList = res.data
this.initChart() this.initChart()

View File

@ -63,6 +63,7 @@
range-separator="至" range-separator="至"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:picker-options="pickerOptions"
@change="getStoreAmount"> @change="getStoreAmount">
</el-date-picker> </el-date-picker>
</div> </div>
@ -173,6 +174,7 @@
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
:picker-options="pickerOptions"
:disabled="disabled" :disabled="disabled"
@change="getStoreList()"> @change="getStoreList()">
</el-date-picker> </el-date-picker>
@ -236,7 +238,12 @@ export default {
bannerList:{}, bannerList:{},
storeList:[], storeList:[],
hardwareList:[], hardwareList:[],
noticeList:[] noticeList:[],
pickerOptions: {
disabledDate: time => {
return time.getTime() > new Date();
}
}
} }
}, },
created() { created() {

View File

@ -1732,7 +1732,7 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper, All
} }
Double averagePrice = tradeAmount / tradeTotal; Double averagePrice = tradeAmount / tradeTotal;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Double dayTradeAmount = 0.0; Double dayTradeAmount = 0.0;
Integer dayTradeTotal = 0; Integer dayTradeTotal = 0;

View File

@ -61,6 +61,8 @@ import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -752,7 +754,7 @@ public class StoreServiceImpl extends ServiceImpl<MtStoreMapper, MtStore> implem
for (MtStore mtStore : mtStores) { for (MtStore mtStore : mtStores) {
storeIds.add(mtStore.getId()); storeIds.add(mtStore.getId());
} }
List<StoreNumVo> storeNumVos = null; List<StoreNumVo> storeNumVos = new ArrayList<>();
if (ObjectUtil.isNotEmpty(store.getParams()) && ObjectUtil.isNotEmpty(store.getParams().get("beginTime")) if (ObjectUtil.isNotEmpty(store.getParams()) && ObjectUtil.isNotEmpty(store.getParams().get("beginTime"))
&& ObjectUtil.isNotEmpty(store.getParams().get("endTime"))){ && ObjectUtil.isNotEmpty(store.getParams().get("endTime"))){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -770,12 +772,60 @@ public class StoreServiceImpl extends ServiceImpl<MtStoreMapper, MtStore> implem
try { try {
if (!today.after( dateFormat.parse(store.getParams().get("beginTime").toString()) )){ if (!today.after( dateFormat.parse(store.getParams().get("beginTime").toString()) )){
storeNumVos = baseMapper.selectStoreNum(store, storeIds); List<String> allDatesBetweenDay = getAllDatesBetweenDay(store.getParams().get("beginTime").toString(), store.getParams().get("endTime").toString());
List<StoreNumVo> storeNumVos1 = baseMapper.selectStoreNum(store, storeIds);
for (String time : allDatesBetweenDay) {
StoreNumVo storeNumVo = new StoreNumVo();
storeNumVo.setTradeTime(time);
storeNumVo.setTradeNum(0);
storeNumVo.setStoreNum(0);
storeNumVo.setTradeAmount(0.0);
for (StoreNumVo numVo : storeNumVos1) {
if (numVo.getTradeTime().equals(time)){
storeNumVo.setTradeNum(numVo.getTradeNum());
storeNumVo.setStoreNum(numVo.getStoreNum());
storeNumVo.setTradeAmount(numVo.getTradeAmount());
}
}
storeNumVos.add(storeNumVo);
}
}else { }else {
if (yearDay.before(dateFormat.parse(store.getParams().get("beginTime").toString()))){ if (yearDay.before(dateFormat.parse(store.getParams().get("beginTime").toString()))){
storeNumVos = baseMapper.selectStoreNumByDay(store, storeIds); List<String> allDatesBetweenMonth = getAllDatesBetweenMonth(store.getParams().get("beginTime").toString(), store.getParams().get("endTime").toString());
List<StoreNumVo> storeNumVos1 = baseMapper.selectStoreNumByDay(store, storeIds);
for (String time : allDatesBetweenMonth) {
StoreNumVo storeNumVo = new StoreNumVo();
storeNumVo.setTradeTime(time);
storeNumVo.setTradeNum(0);
storeNumVo.setStoreNum(0);
storeNumVo.setTradeAmount(0.0);
for (StoreNumVo numVo : storeNumVos1) {
if (numVo.getTradeTime().equals(time)){
storeNumVo.setTradeNum(numVo.getTradeNum());
storeNumVo.setStoreNum(numVo.getStoreNum());
storeNumVo.setTradeAmount(numVo.getTradeAmount());
}
}
storeNumVos.add(storeNumVo);
}
}else { }else {
storeNumVos = baseMapper.selectStoreNumByMonth(store, storeIds); List<String> allDatesBetweenYear = getAllDatesBetweenYear(store.getParams().get("beginTime").toString(), store.getParams().get("endTime").toString());
List<StoreNumVo> storeNumVos1 = baseMapper.selectStoreNumByMonth(store, storeIds);
for (String time : allDatesBetweenYear) {
StoreNumVo storeNumVo = new StoreNumVo();
storeNumVo.setTradeTime(time);
storeNumVo.setTradeNum(0);
storeNumVo.setStoreNum(0);
storeNumVo.setTradeAmount(0.0);
for (StoreNumVo numVo : storeNumVos1) {
if (numVo.getTradeTime().equals(time)){
storeNumVo.setTradeNum(numVo.getTradeNum());
storeNumVo.setStoreNum(numVo.getStoreNum());
storeNumVo.setTradeAmount(numVo.getTradeAmount());
}
}
storeNumVos.add(storeNumVo);
}
} }
} }
}catch (Exception e){ }catch (Exception e){
@ -786,6 +836,56 @@ public class StoreServiceImpl extends ServiceImpl<MtStoreMapper, MtStore> implem
return storeNumVos; return storeNumVos;
} }
public List<String> getAllDatesBetweenYear(String startTime, String endTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM");
LocalDate startDate = LocalDate.parse(startTime, formatter);
LocalDate endDate = LocalDate.parse(endTime, formatter);
List<String> dateList = new ArrayList<>();
while (!startDate.isAfter(endDate)) {
dateList.add(startDate.format(formatter1));
startDate = startDate.plusMonths(1);
}
return dateList;
}
public List<String> getAllDatesBetweenDay(String startTime, String endTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("HH:mm");
LocalDateTime startDate = LocalDateTime.parse(startTime, formatter);
LocalDateTime endDate = LocalDateTime.parse(endTime, formatter);
List<String> dateList = new ArrayList<>();
while (!startDate.isAfter(endDate)) {
dateList.add(startDate.format(formatter1));
startDate = startDate.plusHours(1);
}
return dateList;
}
public List<String> getAllDatesBetweenMonth(String startTime, String endTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime startDate = LocalDateTime.parse(startTime, formatter);
LocalDateTime endDate = LocalDateTime.parse(endTime, formatter);
List<String> dateList = new ArrayList<>();
while (!startDate.isAfter(endDate)) {
dateList.add(startDate.format(formatter1));
startDate = startDate.plusDays(1);
}
return dateList;
}
@Override @Override
public List<MtStore> getStoreByDeptId(Integer deptId) { public List<MtStore> getStoreByDeptId(Integer deptId) {
QueryWrapper queryWrapper = new QueryWrapper<>(); QueryWrapper queryWrapper = new QueryWrapper<>();