Merge branch 'master' of http://192.168.31.244:3000/byx/oilSystem
# Conflicts: # fuintAdmin_zt/src/views/Site/index.vue # fuintAdmin_zt/src/views/login.vue
BIN
fuintAdmin/src/assets/images/scimg.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
@ -117,3 +117,10 @@
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.el-pagination.is-background .el-pager li:not(.disabled).active{
|
||||
background-color: #FF9655 !important;
|
||||
}
|
||||
.el-pagination.is-background .el-pager li:hover{
|
||||
color: #FF9655 !important;/*hover时候的文字颜色*/
|
||||
}
|
||||
|
@ -371,18 +371,46 @@
|
||||
<el-input v-model="form2.mobile"
|
||||
type="textarea"
|
||||
maxlength="12000"
|
||||
style="width: 85%;height: 300px;"
|
||||
style="width: 85%;margin-left: 13px"
|
||||
show-word-limit
|
||||
placeholder="请输入会员手机号,多个手机号换行操作,每行一个会员手机号!单次最大支持1000个会员手机号认证~">
|
||||
placeholder="请输入会员手机号,多个手机号用中文或英文 ‘或’ 隔开!单次最大支持1000个会员手机号认证">
|
||||
</el-input>
|
||||
<div>
|
||||
<div style="color: grey;font-size: 12px;height: 18px;margin-left: 8%">
|
||||
多个会员手机号换行操作,每行为一个会员手机号,单次最大支持1000个会员手机号认证,请确保用户手机号已注册为油站会员(在会员列表已显示),否则无法添加认证信息
|
||||
</div>
|
||||
<!-- <div style="color: grey;font-size: 12px;margin-left: 8%">-->
|
||||
<!-- 多个会员手机号换行操作,每行为一个会员手机号,单次最大支持1000个会员手机号认证,请确保用户手机号已注册为油站会员(在会员列表已显示),否则无法添加认证信息-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="margin: 50px 0;display: flex">
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
v-loading="uploading"
|
||||
action="/fuint-application/business/userManager/certifiedMember/import"
|
||||
:headers="headers"
|
||||
:limit="1"
|
||||
:on-change="handleChange"
|
||||
style="margin-left: 50px"
|
||||
:file-list="fileList">
|
||||
<div style="display: flex;margin-left: 20px">
|
||||
<div style="position: relative" >
|
||||
<img src="../../assets/images/scimg.png" style="width: 167px;height: 144px;">
|
||||
<div style=" width: 100%; position: absolute;left: 50%;transform: translate(-50%,50%);bottom: 36px"> <span style="color: #FF9655">点击导入</span> 文件</div>
|
||||
</div>
|
||||
<div style="margin-top: 120px">
|
||||
<a style="margin-left: 50px;color: #FF9655;"
|
||||
href="/fuint-application/business/userManager/certifiedMember/export"> 导入模板下载.xlsx </a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <el-button size="small" type="success" icon="el-icon-upload">点击上传</el-button>-->
|
||||
<div slot="tip" style="margin-top: 20px;color: grey;font-size: 12px;line-height: 20px">
|
||||
只能上传xls/xlsx文件,单次最大支持1000个会员手机号认证且不超过1M 超出请分文件处理,请确保用户手机号已注册为油站会员(在会员列表已显示),否则无法添加认证信息
|
||||
批星导入会员手机号,单次最大支持5000个会员手机号认证,请确保用户手机号已注册为油站会员(在会员列表已显示),否则无法添加认证官享
|
||||
</div>
|
||||
</el-upload>
|
||||
|
||||
</div>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitFormMembers">确 定</el-button>
|
||||
@ -841,6 +869,9 @@ export default {
|
||||
headers: {
|
||||
'Access-Token': getToken(),
|
||||
},
|
||||
uploading: false,
|
||||
// 文件上传信息
|
||||
fileList: [],
|
||||
result:{},
|
||||
isEdit:false,
|
||||
// 上传图片信息
|
||||
@ -1316,6 +1347,20 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
// 批量导入
|
||||
handleChange(file, fileList) {
|
||||
this.uploading = true;
|
||||
if(file.status === 'success'){
|
||||
this.uploading = false;
|
||||
this.fileList.splice(0,1)
|
||||
this.openMembers = false;
|
||||
this.openResult = true;
|
||||
this.title = "会员认证结果";
|
||||
this.result = file.response.data;
|
||||
this.reset2();
|
||||
this.getListMember();
|
||||
}
|
||||
},
|
||||
// 提交按钮 批量认证会员信息
|
||||
submitFormMembers: function() {
|
||||
this.$refs["form2"].validate(valid => {
|
||||
|
@ -49,7 +49,7 @@
|
||||
<el-select
|
||||
v-model="queryParams.gradeId"
|
||||
clearable
|
||||
placeholder="全部"
|
||||
placeholder="会员等级"
|
||||
>
|
||||
<el-option v-for="grade in userGradeList" :key="grade.id+''" :label="grade.name" :value="grade.id+''"/>
|
||||
</el-select>
|
||||
@ -58,7 +58,7 @@
|
||||
<el-select
|
||||
v-model="ifBalance"
|
||||
clearable
|
||||
placeholder="全部"
|
||||
placeholder="有无储值余额"
|
||||
>
|
||||
<el-option label="有储值余额" value="haveBalance"/>
|
||||
<el-option label="无储值余额" value="noHaveBalance"/>
|
||||
@ -92,7 +92,7 @@
|
||||
</div>
|
||||
<div class="k-three">
|
||||
<div class="title_">充值总人数</div>
|
||||
<div class="num-size">{{balance}}</div>
|
||||
<div class="num-size">{{rechargeTotal || 0}}</div>
|
||||
<img class="r-bot-img" src="./imgs/hy-3.png" alt="">
|
||||
</div>
|
||||
<div class="k-four">
|
||||
@ -477,6 +477,7 @@ export default {
|
||||
addNum:'',
|
||||
// 昨日新增
|
||||
yesterdayAddNum:'',
|
||||
rechargeTotal:"",
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
uploading: false,
|
||||
@ -612,6 +613,7 @@ export default {
|
||||
listStatistic(this.addDateRange(this.queryParams, dateRange)).then( response => {
|
||||
this.addNum = response.data.addNum;
|
||||
this.yesterdayAddNum = response.data.yesterdayAddNum;
|
||||
this.rechargeTotal = response.data.rechargeTotal;
|
||||
if (!response.data.balance) {
|
||||
this.balance = 0
|
||||
}else {
|
||||
|
@ -91,7 +91,7 @@
|
||||
<!-- 统计-->
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>统计</span>
|
||||
<span>挂账订单统计</span>
|
||||
</div>
|
||||
<div class="box-gang">
|
||||
<div class="box">
|
||||
|
@ -51,7 +51,7 @@
|
||||
</el-card>
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span></span>
|
||||
<span>收银台订单统计</span>
|
||||
</div>
|
||||
<div class="box-gang">
|
||||
<div class="box">
|
||||
|
@ -81,7 +81,7 @@
|
||||
</el-card>
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span></span>
|
||||
<span>商品交易订单统计</span>
|
||||
</div>
|
||||
<div class="box-gang">
|
||||
<div class="box">
|
||||
|
@ -77,7 +77,7 @@
|
||||
<!-- 统计-->
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span></span>
|
||||
<span>会员充值订单统计</span>
|
||||
</div>
|
||||
<div class="box-gang">
|
||||
|
||||
|
19
fuintAdmin_zt/src/api/indexBanner/index.js
Normal file
@ -0,0 +1,19 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 查询首页店铺数量信息
|
||||
export function storeTotalIndex(query) {
|
||||
return request({
|
||||
url: '/backendApi/store/getStoreTotal',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
// 查询首页店铺金额信息
|
||||
export function storeAmountIndex(query) {
|
||||
return request({
|
||||
url: '/business/allOrderInfo/getAmount',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
BIN
fuintAdmin_zt/src/assets/images/add.png
Normal file
After Width: | Height: | Size: 400 B |
BIN
fuintAdmin_zt/src/assets/images/detele.png
Normal file
After Width: | Height: | Size: 249 B |
BIN
fuintAdmin_zt/src/assets/images/pcin.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
fuintAdmin_zt/src/assets/images/qp.png
Normal file
After Width: | Height: | Size: 571 B |
BIN
fuintAdmin_zt/src/assets/images/tzzx.png
Normal file
After Width: | Height: | Size: 338 B |
BIN
fuintAdmin_zt/src/assets/images/xz.png
Normal file
After Width: | Height: | Size: 592 B |
@ -117,3 +117,17 @@
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
.el-switch.is-checked .el-switch__core{
|
||||
background-color: #0DC291 !important;
|
||||
border-color: #0DC291 !important;
|
||||
}
|
||||
.el-switch__core{
|
||||
background-color: #FF4347 !important;
|
||||
border-color: #FF4347 !important;
|
||||
}
|
||||
.el-pagination.is-background .el-pager li:not(.disabled).active{
|
||||
background-color: #FF9655 !important;
|
||||
}
|
||||
.el-pagination.is-background .el-pager li:hover{
|
||||
color: #FF9655 !important;/*hover时候的文字颜色*/
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ export default {
|
||||
}
|
||||
|
||||
.fixed-header+.app-main {
|
||||
padding-top: 130px;
|
||||
padding-top: 90px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,19 +1,38 @@
|
||||
<template>
|
||||
<div class="navbar">
|
||||
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
|
||||
<div style="display: flex;align-items: center" >
|
||||
<hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
|
||||
<div class="title-logo">
|
||||
|
||||
<div>
|
||||
百业兴智慧油站欢迎您
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>-->
|
||||
|
||||
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
|
||||
<!-- <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>-->
|
||||
|
||||
<div class="right-menu">
|
||||
<template v-if="device!=='mobile'">
|
||||
<search id="header-search" class="right-menu-item" />
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
<FuintDoc id="fuint-doc" class="right-menu-item hover-effect" />
|
||||
</template>
|
||||
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
|
||||
<div class="avatar-wrapper">
|
||||
<img :src="avatar" class="user-avatar">
|
||||
<!-- <template v-if="device!=='mobile'">-->
|
||||
<!-- <search id="header-search" class="right-menu-item" />-->
|
||||
<!-- <screenfull id="screenfull" class="right-menu-item hover-effect" />-->
|
||||
<!-- <FuintDoc id="fuint-doc" class="right-menu-item hover-effect" />-->
|
||||
<!-- </template>-->
|
||||
<div class="d-s"style="margin-right: 20px">
|
||||
<img src="../../assets/images/qp.png" style="width: 28px;height: 28px;margin-right: 5px">
|
||||
<div>全屏</div>
|
||||
</div>
|
||||
<div class="d-s"style="margin-right: 20px">
|
||||
<img src="../../assets/images/tzzx.png" style="width: 28px;height: 28px;margin-right: 5px">
|
||||
<div>通知中心</div>
|
||||
</div>
|
||||
<el-dropdown class="d-s" trigger="click">
|
||||
<div class="d-s">
|
||||
<div class="title_">百业兴总部</div>
|
||||
<img :src="avatar" style="width: 28px;height: 28px;margin: 0px 10px" />
|
||||
<span class="user-name">{{ name }}</span>
|
||||
<i class="el-icon-caret-bottom"/>
|
||||
</div>
|
||||
@ -27,13 +46,7 @@
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="title-logo">
|
||||
|
||||
<div>
|
||||
百业兴智慧油站欢迎您
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -101,6 +114,16 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
.d-s{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.title_{
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
color: #333333;
|
||||
}
|
||||
.navbar {
|
||||
height: 90px;
|
||||
overflow: hidden;
|
||||
@ -113,7 +136,9 @@ export default {
|
||||
|
||||
box-shadow: 0 1px 4px rgba(0,21,41,.08);
|
||||
box-sizing: border-box;
|
||||
padding-top:25px ;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
.hamburger-container {
|
||||
line-height: 46px;
|
||||
height: 100%;
|
||||
@ -154,9 +179,9 @@ export default {
|
||||
}
|
||||
|
||||
.right-menu {
|
||||
float: right;
|
||||
display: flex;
|
||||
height: 100%;
|
||||
line-height: 50px;
|
||||
align-items: center;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
|
@ -82,7 +82,7 @@ export default {
|
||||
color: #000;
|
||||
font-weight: 700;
|
||||
line-height: 50px;
|
||||
font-size: 16px;
|
||||
font-size: 18px;
|
||||
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
<div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container">
|
||||
<div v-if="!sidebar.hide" :class="{'fixed-header':fixedHeader}">
|
||||
<navbar />
|
||||
<tags-view v-if="needTagsView" />
|
||||
<!-- <tags-view v-if="needTagsView" />-->
|
||||
</div>
|
||||
<app-main />
|
||||
<right-panel>
|
||||
|
@ -63,7 +63,7 @@ export const constantRoutes = [
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
component: () => import('@/views/Service/index.vue'),
|
||||
component: () => import('@/views/index.vue'),
|
||||
name: 'Index',
|
||||
meta: { title: '系统首页', icon: 'dashboard', affix: true }
|
||||
},
|
||||
|
216
fuintAdmin_zt/src/views/Site/add.vue
Normal file
@ -0,0 +1,216 @@
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
ruleForm: {
|
||||
name: '',
|
||||
region: '',
|
||||
date1: '',
|
||||
date2: '',
|
||||
delivery: false,
|
||||
type: [],
|
||||
resource: '',
|
||||
desc: ''
|
||||
},
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: '请输入活动名称', trigger: 'blur' },
|
||||
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
|
||||
],
|
||||
region: [
|
||||
{ required: true, message: '请选择活动区域', trigger: 'change' }
|
||||
],
|
||||
date1: [
|
||||
{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
|
||||
],
|
||||
date2: [
|
||||
{ type: 'date', required: true, message: '请选择时间', trigger: 'change' }
|
||||
],
|
||||
type: [
|
||||
{ type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }
|
||||
],
|
||||
resource: [
|
||||
{ required: true, message: '请选择活动资源', trigger: 'change' }
|
||||
],
|
||||
desc: [
|
||||
{ required: true, message: '请填写活动形式', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
tableData: [{
|
||||
id: 1,
|
||||
date: '系统首页',
|
||||
|
||||
}, {
|
||||
id: 2,
|
||||
date: '机构管理',
|
||||
children: [
|
||||
{
|
||||
id: 3,
|
||||
date: '组织架构',
|
||||
name: '王小虎',
|
||||
address: '上海市普陀区金沙江路 1519 弄',
|
||||
|
||||
children: [{
|
||||
id: 31,
|
||||
date: '用户信息',
|
||||
|
||||
list:[{show:true,name:'新增'},{show:true,name:'修改'},{show:true,name:'重置密码'},]
|
||||
}, {
|
||||
id: 32,
|
||||
date: '机构信息',
|
||||
|
||||
list:[{show:true,name:'保存'},]
|
||||
}]
|
||||
},
|
||||
]
|
||||
// list:[{show:true,name:'选项一'},{show:true,name:'选项二'},{show:true,name:'选项三'},]
|
||||
|
||||
}, {
|
||||
id: 4,
|
||||
date: '财务报表',
|
||||
children:[{
|
||||
id: 33,
|
||||
date: '交易对账',
|
||||
|
||||
list:[{show:true,name:'导出订单'}]
|
||||
}, {
|
||||
id: 34,
|
||||
date: '流水分析',
|
||||
|
||||
list:[{show:true,name:'导出订单'},]
|
||||
}],
|
||||
|
||||
}],
|
||||
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
submitForm(formName) {
|
||||
this.$refs[formName].validate((valid) => {
|
||||
if (valid) {
|
||||
alert('submit!');
|
||||
} else {
|
||||
console.log('error submit!!');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
resetForm(formName) {
|
||||
this.$refs[formName].resetFields();
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="container">
|
||||
<div class="top-box">
|
||||
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
|
||||
<div>
|
||||
<el-form-item label="角色名称" prop="name">
|
||||
<el-input v-model="ruleForm.name"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div>
|
||||
<el-form-item label="所属机构" prop="region">
|
||||
<el-select v-model="ruleForm.region" placeholder="请选择活动区域">
|
||||
<el-option label="区域一" value="shanghai"></el-option>
|
||||
<el-option label="区域二" value="beijing"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div>
|
||||
<el-form-item label="角色状态" prop="delivery">
|
||||
<el-switch v-model="ruleForm.delivery"></el-switch>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div>
|
||||
<el-form-item label="角色描述" prop="desc">
|
||||
<el-input v-model="ruleForm.desc"></el-input>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="center-box">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
style="width: 100%;margin-bottom: 20px;"
|
||||
row-key="id"
|
||||
border
|
||||
default-expand-all
|
||||
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
|
||||
|
||||
<el-table-column
|
||||
prop="date"
|
||||
label="菜单"
|
||||
|
||||
width="180">
|
||||
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="address"
|
||||
label="功能">
|
||||
<template slot-scope="scope">
|
||||
<div style="display: flex;align-items: center">
|
||||
<div class="f-box" v-for="(item,index) in scope.row.list" :key="index"> <img v-if="item.show == true" style="width: 15px;height: 15px;margin-right: 5px" src="../../assets/images/xz.png"> <div v-else class="k_" ></div> {{item.name}} </div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div style="display: flex">
|
||||
<el-button @click="resetForm('ruleForm')">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.container{
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
background: #f4f5f9;
|
||||
}
|
||||
.top-box{
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 3px 6px 1px rgba(255,255,255,0.4), inset 0px 3px 6px 1px rgba(255,255,255,0.5);
|
||||
border-radius: 10px 10px 10px 10px;
|
||||
}
|
||||
.demo-ruleForm{
|
||||
display: flex;
|
||||
|
||||
align-items: center;
|
||||
}
|
||||
.center-box{
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
|
||||
background: #FFFFFF;
|
||||
box-shadow: 0px 3px 6px 1px rgba(255,255,255,0.4), inset 0px 3px 6px 1px rgba(255,255,255,0.5);
|
||||
border-radius: 10px 10px 10px 10px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.f-box{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.k_{
|
||||
width: 15px;
|
||||
border-radius: 4px;
|
||||
height: 15px;
|
||||
margin-right: 5px;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
</style>
|
@ -85,24 +85,42 @@
|
||||
<el-option key="0" label="禁用" value="0"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<!-- <el-form-item style="float: right">-->
|
||||
<!-- <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>-->
|
||||
<!-- <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-form>-->
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
@click="handleAdd"
|
||||
|
||||
>新增
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button
|
||||
type="warning"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
>新增用户
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<!-- <el-row :gutter="10" class="mb8">-->
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="warning"-->
|
||||
<!-- plain-->
|
||||
<!-- size="mini"-->
|
||||
<!-- @click="handleAdd"-->
|
||||
|
||||
<!-- >新增用户-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<!-- </el-card>-->
|
||||
<!-- <el-card >-->
|
||||
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
|
||||
@ -392,24 +410,11 @@
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
<template v-if="ruleForm.turnoverType === '5'">
|
||||
<el-col :span="10">
|
||||
<el-row>
|
||||
<el-form-item label="时间范围">
|
||||
<!-- <el-date-picker-->
|
||||
<!-- :disabled="isTopDept"-->
|
||||
<!-- v-model="timeFrame"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- type="daterange"-->
|
||||
<!-- range-separator="至"-->
|
||||
<!-- start-placeholder="开始日期"-->
|
||||
<!-- end-placeholder="结束日期">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<el-date-picker
|
||||
:disabled="isTopDept"
|
||||
v-model="beginTime"
|
||||
@ -509,10 +514,6 @@
|
||||
</el-row>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
|
||||
<template v-if="ruleForm.turnoverType === '5'">
|
||||
<el-col :span="10">
|
||||
<el-row>
|
||||
@ -537,7 +538,6 @@
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="价格">
|
||||
<el-input :disabled="isTopDept" v-model="ruleForm.prepaidAmount">
|
||||
@ -546,9 +546,6 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
<template v-if="ruleForm.turnoverType === '6'">
|
||||
<el-col :span="10">
|
||||
|
||||
@ -601,12 +598,7 @@
|
||||
</el-col>
|
||||
</template>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
</el-row>
|
||||
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12"><div class="grid-content bg-purple"></div></el-col>
|
||||
<el-col :span="12"><div class="grid-content bg-purple-light"></div></el-col>
|
||||
@ -1804,19 +1796,23 @@ export default {
|
||||
let isAdd = data.deptType == '3'
|
||||
|
||||
return (
|
||||
<span class="custom-tree-node">
|
||||
|
||||
<div class="custom-tree-node" style="display: flex;align-items: center;">
|
||||
<span class="custom-tree-box">{node.label}</span>
|
||||
<span>
|
||||
<span style="display: flex;align-items: center;">
|
||||
{!isAdd ?
|
||||
<el-button v-if="!isAdd" size="mini" type="text" on-click={() => this.append(data)}>新增</el-button>
|
||||
|
||||
|
||||
< img alt="" src="http://47.95.206.185:83/add.png" style=" width: 20px;height: 20px; " on-click={() => this.append(data)}/>
|
||||
: null
|
||||
}
|
||||
{node.level !== 1 ?
|
||||
<el-button size="mini" type="text" on-click={() => this.remove(node, data)}>删除</el-button>
|
||||
< img alt="" src="http://47.95.206.185:83/del.png" style=" width: 20px;height: 20px; " on-click={() => this.remove(node, data)}/>
|
||||
|
||||
: null
|
||||
}
|
||||
</span>
|
||||
</span>);
|
||||
</span>
|
||||
</div>);
|
||||
},
|
||||
|
||||
|
||||
@ -1911,7 +1907,7 @@ export default {
|
||||
handleStatusChange(row) {
|
||||
let text = row.status === "0" ? "启用" : "停用";
|
||||
this.$modal.confirm('确认要"' + text + '""' + row.realName + '"用户吗?').then(function () {
|
||||
return changeUserStatus(row.userId, row.status);
|
||||
return updateUser(row);
|
||||
}).then(() => {
|
||||
this.$modal.msgSuccess(text + "成功");
|
||||
}).catch(function () {
|
||||
@ -2222,6 +2218,7 @@ export default {
|
||||
}
|
||||
.custom-tree-box{
|
||||
margin-right: 10px;
|
||||
|
||||
}
|
||||
</style>
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
<img src="./../assets/images/l-one.png" style="width: 80px;height: 80px">
|
||||
</div>
|
||||
<div>
|
||||
<div class="r-title">568</div>
|
||||
<div class="r-title">{{ storeTotal.allTotal || 0 }}</div>
|
||||
<div class="r-size">合作油站总数</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -19,8 +19,8 @@
|
||||
<img src="./../assets/images/l-two.png" style="width: 80px;height: 80px">
|
||||
</div>
|
||||
<div>
|
||||
<div class="r-title">568</div>
|
||||
<div class="r-size">合作油站总数</div>
|
||||
<div class="r-title">{{ storeTotal.weekTotal || 0 }}</div>
|
||||
<div class="r-size">7日活跃油站汇总数</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="san-box" style="background: linear-gradient( 90deg, #9CDCA0 0%, #5BC557 100%);">
|
||||
@ -28,8 +28,8 @@
|
||||
<img src="./../assets/images/l-three.png" style="width: 80px;height: 80px">
|
||||
</div>
|
||||
<div>
|
||||
<div class="r-title">568</div>
|
||||
<div class="r-size">合作油站总数</div>
|
||||
<div class="r-title">{{ storeTotal.monthTotal || 0 }}</div>
|
||||
<div class="r-size">本月新增油站数</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -104,28 +104,67 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hui-hang"></div>
|
||||
<div class="d-s">
|
||||
<div class="d-s" >
|
||||
<div>
|
||||
<div class="h-tt" >活跃油站</div>
|
||||
<div id="pie" style="width: 150px;height: 150px;"></div>
|
||||
|
||||
<div id="ccc" style="width: 300px;height: 200px; "></div>
|
||||
</div>
|
||||
<div class="h-r-ba"></div>
|
||||
<div>
|
||||
<div class="h-tt" >活跃油站</div>
|
||||
<div class="d-s" style="justify-content: space-between">
|
||||
<div id="cccc" style="width: 300px;height: 200px;margin-right: 50px"></div>
|
||||
<div id="ccct" style="width: 300px;height: 200px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-box-t">
|
||||
|
||||
<div class="h-tt" >硬件设备</div>
|
||||
<div class="d-s" style="margin: 30px 0px" v-for="(item,index) in 3" :key="index" >
|
||||
<div class="r-img">
|
||||
<img src="./../assets/images/pcin.png" style="width: 84px;height: 70px">
|
||||
</div>
|
||||
<div>容大(RT RONGTA)RP76II针式76mm小票打印机加油站二三联票据 RP76II/USB口</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom_">
|
||||
<div class="h-tt" style="margin-bottom: 15px" >数据统计</div>
|
||||
<div class="d-s">
|
||||
<div class="anniu-h" :class="{ 'anniu-act': index == 0 }" v-for="(item,index) in timeList" :key="index">
|
||||
{{item}}
|
||||
</div>
|
||||
<el-date-picker
|
||||
v-model="value1"
|
||||
type="datetimerange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
<div id="ctct" style="width: 100%; height: 315px;background: linear-gradient( 360deg, #F8F0E7 0%, #FFFFFF 100%); "></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import echarts from "echarts";
|
||||
import {storeAmountIndex, storeTotalIndex} from "@/api/indexBanner";
|
||||
export default {
|
||||
|
||||
data(){
|
||||
return{
|
||||
form: {},
|
||||
timeList:[
|
||||
"今日",
|
||||
"近一周",
|
||||
"近一月",
|
||||
"近一年",
|
||||
],
|
||||
|
||||
options: [{
|
||||
value: '选项1',
|
||||
label: '黄金糕'
|
||||
@ -145,63 +184,243 @@ export default {
|
||||
value: '',
|
||||
value1: [new Date(2000, 10, 10, 10, 10), new Date(2000, 10, 11, 10, 10)],
|
||||
imagePath: process.env.VUE_APP_SERVER_URL,
|
||||
|
||||
// 店铺数量
|
||||
storeTotal:{},
|
||||
// 店铺金额
|
||||
storeAmount:{},
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
this.getStoreTotal()
|
||||
this.getStoreAmount()
|
||||
},
|
||||
mounted() {
|
||||
this.initChart()
|
||||
},
|
||||
methods:{
|
||||
getStoreTotal(){
|
||||
storeTotalIndex().then(res => {
|
||||
this.storeTotal = res.data
|
||||
})
|
||||
},
|
||||
getStoreAmount(){
|
||||
storeAmountIndex().then(res => {
|
||||
console.log(res)
|
||||
})
|
||||
},
|
||||
initChart() {
|
||||
const chart = echarts.init(document.getElementById('pie'))
|
||||
const chart = echarts.init(document.getElementById('ccc'))
|
||||
const chart1 = echarts.init(document.getElementById('cccc'))
|
||||
const chart2= echarts.init(document.getElementById('ccct'))
|
||||
const chart3= echarts.init(document.getElementById('ctct'))
|
||||
|
||||
|
||||
const option = {
|
||||
color: [
|
||||
'#ff9655',
|
||||
'#86E1BB',
|
||||
'#8195F5',
|
||||
'#0DC291',
|
||||
'#FFB519',
|
||||
],
|
||||
dataset: {
|
||||
source: [
|
||||
['product', '#92', '#95', '#98'],
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
|
||||
]
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
// data: ['2023.1.1', '2023.2.1', '2023.3.1', '2023.4.1', '2023.5.1', '2023.6.1', '2023.7.1']
|
||||
data: this.timeDate
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: this.oilDate,
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
lineStyle: {
|
||||
width: 4
|
||||
},
|
||||
areaStyle: {
|
||||
opacity: 0.8,
|
||||
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||||
{
|
||||
offset: 0,
|
||||
color: '#fff'
|
||||
},
|
||||
{
|
||||
offset: 1,
|
||||
color: '#F8F1E7'
|
||||
}
|
||||
])
|
||||
},
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: '80%',
|
||||
data: [
|
||||
{ value: 28, name: '28%' },
|
||||
{ value: 72, name: '72%' },
|
||||
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
const option1 = {
|
||||
color: [
|
||||
'#3B6ADE',
|
||||
'#409eff',
|
||||
],
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: '80%',
|
||||
data: [
|
||||
{ value: 28, name: '28%' },
|
||||
{ value: 72, name: '72%' },
|
||||
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
const option2 = {
|
||||
color: [
|
||||
'#0DC291',
|
||||
'#FFB519',
|
||||
],
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: '80%',
|
||||
data: [
|
||||
{ value: 28, name: '28%' },
|
||||
{ value: 72, name: '72%' },
|
||||
|
||||
],
|
||||
emphasis: {
|
||||
itemStyle: {
|
||||
shadowBlur: 10,
|
||||
shadowOffsetX: 0,
|
||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
const option3 = {
|
||||
color: ['#FF9655', '#0DC291', '#409EFF'],
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'cross',
|
||||
crossStyle: {
|
||||
color: '#999'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
legend: {
|
||||
data: ['交易金额', '交易笔数', '活跃油站数']
|
||||
},
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
data: [
|
||||
'00:00',
|
||||
'02:00',
|
||||
'04:00',
|
||||
'06:00',
|
||||
'08:00',
|
||||
'10:00',
|
||||
'12:00',
|
||||
'14:00',
|
||||
'16:00',
|
||||
'18:00',
|
||||
'20:00',
|
||||
'22:00'
|
||||
],
|
||||
axisPointer: {
|
||||
type: 'shadow'
|
||||
}
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
type: 'value',
|
||||
name: '金额(元)',
|
||||
|
||||
min: 0,
|
||||
max: 250,
|
||||
interval: 50,
|
||||
axisLabel: {
|
||||
formatter: '{value} '
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name: '笔数',
|
||||
min: 0,
|
||||
max: 25,
|
||||
interval: 5,
|
||||
axisLabel: {
|
||||
formatter: '{value}'
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: '活跃油站数',
|
||||
type: 'bar',
|
||||
tooltip: {
|
||||
valueFormatter: function (value) {
|
||||
return value + ' ml';
|
||||
}
|
||||
},
|
||||
barWidth: 13,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
//这里设置柱形图圆角 5左上角,右上角,右下角,左下角]
|
||||
barBorderRadius: [50, 50, 0, 0]
|
||||
}
|
||||
},
|
||||
data: [
|
||||
30.0, 31.9, 71.0, 23.2, 41.6, 31.7, 21.6, 30.0, 31.9, 71.0, 23.2, 41.6
|
||||
]
|
||||
},
|
||||
|
||||
]
|
||||
{
|
||||
name: '交易金额',
|
||||
type: 'line',
|
||||
yAxisIndex: 1,
|
||||
tooltip: {
|
||||
valueFormatter: function (value) {
|
||||
return value + ' °C';
|
||||
}
|
||||
},
|
||||
data: [3.0, 3.9, 7.0, 2.2, 4.6, 3.7, 2.6, 3.0, 3.9, 7.0, 3.2, 4.6]
|
||||
},
|
||||
{
|
||||
name: '交易笔数',
|
||||
type: 'line',
|
||||
yAxisIndex: 1,
|
||||
tooltip: {
|
||||
valueFormatter: function (value) {
|
||||
return value + ' °C';
|
||||
}
|
||||
},
|
||||
data: [2.0, 3.9, 4.0, 5.2, 4.6, 6.7, 7.6, 6.0, 5.9, 4.0, 4.2, 2.6]
|
||||
}
|
||||
],
|
||||
grid: {
|
||||
left: '1%',
|
||||
right: '1%',
|
||||
bottom: '3%',
|
||||
containLabel: true
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
chart.setOption(option)
|
||||
chart1.setOption(option1)
|
||||
chart2.setOption(option2)
|
||||
chart3.setOption(option3)
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -367,4 +586,41 @@ export default {
|
||||
background: #F4F5F9;
|
||||
margin: 15px auto;
|
||||
}
|
||||
.h-r-ba{
|
||||
height: 170px;
|
||||
margin: 0px 50px;
|
||||
width: 5px;
|
||||
background: #f4f5f9;
|
||||
}
|
||||
.r-img{
|
||||
width: 84px;
|
||||
height: 70px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.bottom_{
|
||||
width: 100%;
|
||||
border-radius: 10px;
|
||||
background: #fff;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.anniu-h{
|
||||
width: 80px;
|
||||
height: 26px;
|
||||
background: #FAFAFA;
|
||||
border-radius: 4px 4px 4px 4px;
|
||||
border: 1px solid #DDDDDD;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #777777;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.anniu-act{
|
||||
background: #FF9655 !important;
|
||||
border: 1px solid #FF9655 !important;
|
||||
color: #fff;
|
||||
|
||||
}
|
||||
</style>
|
||||
|
@ -281,6 +281,7 @@ export default {
|
||||
}
|
||||
app.$store.dispatch("Login", this.loginForm).then(() => {
|
||||
|
||||
|
||||
if (Cookies.get("IS_BK_LOGIN")) {
|
||||
location.replace(this.bkUrl+"resource_oilstore");
|
||||
}else {
|
||||
@ -288,6 +289,9 @@ export default {
|
||||
}
|
||||
|
||||
// app.$router.push({ path: this.redirect || "/" }).catch(()=>{});
|
||||
|
||||
// app.$router.push({ path: this.redirect || "/" }).catch(()=>{});
|
||||
// app.$router.push({ path: "index" }).catch(()=>{});
|
||||
}).catch(() => {
|
||||
app.loading = false;
|
||||
if (app.captchaOnOff) {
|
||||
|
@ -90,4 +90,11 @@ public interface CardValueRecordService extends IService<CardValueRecord> {
|
||||
* @return
|
||||
*/
|
||||
IPage<CardValueRecord> selectCardValueRecordList(Page page, CardValueRecord cardValueRecord);
|
||||
|
||||
/**
|
||||
* 会员充值总人数
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
Integer selectUserTotal(LJUserVo user);
|
||||
}
|
||||
|
@ -1151,5 +1151,17 @@ public class CardValueRecordServiceImpl extends ServiceImpl<CardValueRecordMappe
|
||||
cardValueRecord.setStoreId(nowAccountInfo.getStoreId());
|
||||
return baseMapper.selectCardValueRecordList(page,cardValueRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectUserTotal(LJUserVo user) {
|
||||
QueryWrapper queryWrapper = new QueryWrapper<>();
|
||||
if (ObjectUtil.isNotEmpty(user.getParams())){
|
||||
queryWrapper.apply(true,"create_time BETWEEN '" + user.getParams().get("beginTime") + "' and '" + user.getParams().get("endTime") + "'");
|
||||
}
|
||||
queryWrapper.eq("chain_store_id",user.getChainStoreId());
|
||||
queryWrapper.groupBy("mt_user_id");
|
||||
List list = baseMapper.selectList(queryWrapper);
|
||||
return list.size();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -230,4 +230,9 @@ public class AllOrderInfoController extends BaseController {
|
||||
public ResponseObject getOperatingDataPos(AllOrderInfoDto allOrderInfo){
|
||||
return getSuccessResult(allOrderInfoService.getOperatingDataPos(allOrderInfo));
|
||||
}
|
||||
|
||||
@GetMapping("/getAmount")
|
||||
public ResponseObject getAmount(AllOrderInfoVo allOrderInfo){
|
||||
return getSuccessResult(allOrderInfoService.getAmount(allOrderInfo));
|
||||
}
|
||||
}
|
||||
|
@ -20,28 +20,33 @@ public interface AllOrderInfoMapper extends BaseMapper<AllOrderInfo> {
|
||||
|
||||
IPage<AllOrderInfoVo> getPageList(@Param("page") Page page, @Param("allOrderInfo") AllOrderInfo allOrderInfo);
|
||||
|
||||
String sumPayMoney( @Param("allOrderInfo") AllOrderInfo allOrderInfo);
|
||||
String sumPayMoney(@Param("allOrderInfo") AllOrderInfo allOrderInfo);
|
||||
|
||||
// 根据storeId List查询总流水
|
||||
BigDecimal allStream(@Param("list") List<MtStore> mtStoreList);
|
||||
|
||||
AllOrderInfoVo getTradingData(@Param("allOrderInfo") AllOrderInfoDto allOrderInfo);
|
||||
|
||||
IPage<AllOrderInfoVo> getTradingPage(@Param("page") Page page, @Param("allOrderInfo") AllOrderInfo allOrderInfo);
|
||||
|
||||
IPage<AllOrderInfoVo> getTradingPage(@Param("page") Page page, @Param("allOrderInfo") AllOrderInfoDto allOrderInfo);
|
||||
|
||||
AllOrderInfoVo getRunningWaterByInstituion(@Param("allOrderInfo") AllOrderInfoDto allOrderInfo);
|
||||
|
||||
|
||||
// 计算不活跃的店铺数量
|
||||
// 计算不活跃的店铺数量
|
||||
AllOrderInfoVo getStoreNDynamic(@Param("allOrderInfo") AllOrderInfoDto allOrderInfo);
|
||||
|
||||
IPage<AllOrderInfoVo> getRunningWaterByDay(@Param("page") Page page, @Param("allOrderInfo") AllOrderInfoDto allOrderInfo);
|
||||
AllOrderInfoVo getRunningWaterByDayData( @Param("allOrderInfo") AllOrderInfoDto allOrderInfo);
|
||||
|
||||
AllOrderInfoVo getRunningWaterByDayData(@Param("allOrderInfo") AllOrderInfoDto allOrderInfo);
|
||||
|
||||
AllOrderInfoVo getRunningWaterByData(@Param("allOrderInfo") AllOrderInfoDto allOrderInfo);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 根据支付状态查询订单笔数
|
||||
*
|
||||
* @param allOrderInfo
|
||||
* @return
|
||||
*/
|
||||
@ -52,4 +57,14 @@ public interface AllOrderInfoMapper extends BaseMapper<AllOrderInfo> {
|
||||
AllOrderInfoVo getHandOverList(HandoverRecord record);
|
||||
|
||||
AllOrderInfoVo getOneByOrderNo(String orderNo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据条件查询笔数
|
||||
*
|
||||
* @param allOrderInfo
|
||||
* @return
|
||||
*/
|
||||
Integer selectTotal(@Param("allOrderInfo") AllOrderInfo allOrderInfo);
|
||||
|
||||
Double selectAllAmount(@Param("allOrderInfo") AllOrderInfo allOrderInfo);
|
||||
}
|
@ -402,6 +402,41 @@
|
||||
from all_order_info
|
||||
where order_no = #{orderNo}
|
||||
</select>
|
||||
<select id="selectTotal" resultType="java.lang.Integer">
|
||||
select count(*) from all_order_info
|
||||
<where>
|
||||
<if test="allOrderInfo.storeId != null and allOrderInfo.storeId != ''">
|
||||
and store_id = #{allOrderInfo.storeId}
|
||||
</if>
|
||||
<if test="allOrderInfo.status != null and allOrderInfo.status != ''">
|
||||
and status = #{allOrderInfo.status}
|
||||
</if>
|
||||
<if test="allOrderInfo.params.beginTime != null and allOrderInfo.params.beginTime != ''"><!-- 开始时间检索 -->
|
||||
and date_format(create_time,'%y%m%d') >= date_format(#{allOrderInfo.params.beginTime},'%y%m%d')
|
||||
</if>
|
||||
<if test="allOrderInfo.params.endTime != null and allOrderInfo.params.endTime != ''"><!-- 结束时间检索 -->
|
||||
and date_format(create_time,'%y%m%d') <= date_format(#{allOrderInfo.params.endTime},'%y%m%d')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<select id="selectAllAmount" resultType="java.lang.Double"
|
||||
parameterType="com.fuint.business.order.entity.AllOrderInfo">
|
||||
select sum(pay_money) from all_order_info
|
||||
<where>
|
||||
<if test="allOrderInfo.storeId != null and allOrderInfo.storeId != ''">
|
||||
and store_id = #{allOrderInfo.storeId}
|
||||
</if>
|
||||
<if test="allOrderInfo.status != null and allOrderInfo.status != ''">
|
||||
and status = #{allOrderInfo.status}
|
||||
</if>
|
||||
<if test="allOrderInfo.params.beginTime != null and allOrderInfo.params.beginTime != ''"><!-- 开始时间检索 -->
|
||||
and date_format(create_time,'%y%m%d') >= date_format(#{allOrderInfo.params.beginTime},'%y%m%d')
|
||||
</if>
|
||||
<if test="allOrderInfo.params.endTime != null and allOrderInfo.params.endTime != ''"><!-- 结束时间检索 -->
|
||||
and date_format(create_time,'%y%m%d') <= date_format(#{allOrderInfo.params.endTime},'%y%m%d')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<!-- WHERE-->
|
||||
<!-- DATE(pay_time) = CURDATE();-->
|
||||
<!-- <if test="startTime != null "><!– 开始时间检索 –>-->
|
||||
|
@ -96,4 +96,17 @@ public interface AllOrderInfoService {
|
||||
AllOrderInfoVo getOneByOrderNo(String orderNo);
|
||||
|
||||
AllOrderInfo getOneByOrderNos(String orderNo);
|
||||
|
||||
/**
|
||||
* 查询某个时间段内店铺数量
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
Integer selectStoreTotal(Map<String,String> map);
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
Map<String,Object> getAmount(AllOrderInfoVo allOrderInfoVo);
|
||||
}
|
||||
|
@ -975,6 +975,58 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
|
||||
return allOrderInfoMapper.getOneByOrderNo(orderNo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer selectStoreTotal(Map<String, String> map) {
|
||||
String startTime = map.get("startTime");
|
||||
String endTime = map.get("endTime");
|
||||
QueryWrapper queryWrapper = new QueryWrapper<>();
|
||||
if (ObjectUtil.isNotEmpty(startTime) && ObjectUtil.isNotEmpty(endTime)){
|
||||
queryWrapper.apply(true,"create_time BETWEEN '" + startTime + "' and '" + endTime + "'");
|
||||
}
|
||||
queryWrapper.groupBy("store_id");
|
||||
List<AllOrderInfo> allOrderInfos = baseMapper.selectList(queryWrapper);
|
||||
Integer row = 0;
|
||||
if (ObjectUtil.isNotEmpty(allOrderInfos)) row = allOrderInfos.size();
|
||||
return row;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getAmount(AllOrderInfoVo allOrderInfoVo) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
Integer tradeTotal = baseMapper.selectTotal(allOrderInfoVo);
|
||||
Double tradeAmount = baseMapper.selectAllAmount(allOrderInfoVo);
|
||||
allOrderInfoVo.setStatus("refund");
|
||||
Integer refundTotal = baseMapper.selectTotal(allOrderInfoVo);
|
||||
Double refundAmount = baseMapper.selectAllAmount(allOrderInfoVo);
|
||||
Double averagePrice = tradeAmount/tradeTotal;
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
|
||||
Double dayTradeAmount = 0.0;
|
||||
Integer dayTradeTotal = 0;
|
||||
Map<String, String> map1 = new HashMap<>();
|
||||
if (ObjectUtil.isNotEmpty(allOrderInfoVo.getParams())) {
|
||||
LocalDate date1 = LocalDate.parse(allOrderInfoVo.getParams().get("beginTime").toString(), formatter);
|
||||
LocalDate date2 = LocalDate.parse(allOrderInfoVo.getParams().get("endTime").toString(), formatter);
|
||||
|
||||
Integer daysBetween = Math.toIntExact(ChronoUnit.DAYS.between(date1, date2));
|
||||
dayTradeAmount = tradeAmount / daysBetween;
|
||||
dayTradeTotal = tradeTotal / daysBetween;
|
||||
map1.put("startTime", allOrderInfoVo.getParams().get("beginTime").toString());
|
||||
map1.put("endTime", allOrderInfoVo.getParams().get("endTime").toString());
|
||||
}
|
||||
Integer storeTotal = selectStoreTotal(map1);
|
||||
|
||||
map.put("tradeTotal",tradeTotal);
|
||||
map.put("tradeAmount",tradeAmount);
|
||||
map.put("refundTotal",refundTotal);
|
||||
map.put("refundAmount",refundAmount);
|
||||
map.put("averagePrice",averagePrice);
|
||||
map.put("dayTradeAmount",dayTradeAmount);
|
||||
map.put("dayTradeTotal",dayTradeTotal);
|
||||
map.put("storeTotal",storeTotal);
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
private long dayCount(String beginTimeStr, String endTimeStr ) {
|
||||
// 将字符串表示的时间转换成 LocalDate 对象
|
||||
|
@ -2,6 +2,7 @@ package com.fuint.business.store.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.fuint.business.storeInformation.entity.LJStore;
|
||||
import com.fuint.common.util.Constants;
|
||||
import com.fuint.common.dto.AccountInfo;
|
||||
import com.fuint.common.dto.StoreDto;
|
||||
@ -347,4 +348,10 @@ public class BackendStoreController extends BaseController {
|
||||
public ResponseObject getByStroeName(MtStore storeName) {
|
||||
return getSuccessResult(storeService.getByStroeName(storeName));
|
||||
}
|
||||
|
||||
// 中台首页店铺数量查询
|
||||
@GetMapping("/getStoreTotal")
|
||||
public ResponseObject getStoreTotal(LJStore store){
|
||||
return getSuccessResult(storeService.getStoreTotal(store));
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.fuint.business.store.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.fuint.business.storeInformation.entity.LJStore;
|
||||
import com.fuint.common.dto.StoreDto;
|
||||
import com.fuint.framework.exception.BusinessCheckException;
|
||||
import com.fuint.framework.pagination.PaginationRequest;
|
||||
@ -113,4 +114,6 @@ public interface StoreService extends IService<MtStore> {
|
||||
|
||||
|
||||
List<Map<Object,Object>> getByStroeName(MtStore storeName);
|
||||
|
||||
Map<String,Object> getStoreTotal(LJStore store);
|
||||
}
|
||||
|
@ -2,14 +2,17 @@ package com.fuint.business.store.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fuint.business.order.mapper.AllOrderInfoMapper;
|
||||
import com.fuint.business.order.service.AllOrderInfoService;
|
||||
import com.fuint.business.store.entity.MtStore;
|
||||
import com.fuint.business.store.mapper.MtStoreMapper;
|
||||
import com.fuint.business.store.service.StoreService;
|
||||
import com.fuint.business.storeInformation.entity.LJStore;
|
||||
import com.fuint.common.dto.AccountInfo;
|
||||
import com.fuint.common.dto.StoreDto;
|
||||
import com.fuint.common.enums.StatusEnum;
|
||||
@ -40,6 +43,7 @@ import org.apache.shiro.authc.UsernamePasswordToken;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
@ -48,6 +52,9 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@ -67,6 +74,9 @@ public class StoreServiceImpl extends ServiceImpl<MtStoreMapper, MtStore> implem
|
||||
private MtMerchantMapper mtMerchantMapper;
|
||||
@Resource
|
||||
private ISysDeptService iSysDeptService;
|
||||
@Resource
|
||||
@Lazy
|
||||
private AllOrderInfoService allOrderInfoService;
|
||||
|
||||
/**
|
||||
* 商户接口
|
||||
@ -605,6 +615,40 @@ public class StoreServiceImpl extends ServiceImpl<MtStoreMapper, MtStore> implem
|
||||
return objects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getStoreTotal(LJStore store) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
QueryWrapper queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("if_delete","0");
|
||||
Integer allTotal = baseMapper.selectCount(queryWrapper);
|
||||
|
||||
// 查询过去七天活跃的数据
|
||||
Map<String,String> map1 = new HashMap<>();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.add(Calendar.DATE, -7); // 减去7天
|
||||
Date sevenDaysAgo = calendar.getTime();
|
||||
String startTime = sdf.format(sevenDaysAgo);
|
||||
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
|
||||
String endTime = dateFormat.format(new Date());
|
||||
map1.put("startTime",startTime);
|
||||
map1.put("endTime",endTime);
|
||||
Integer weekTotal = allOrderInfoService.selectStoreTotal(map1);
|
||||
|
||||
// 查询过去一个月的数据
|
||||
LocalDate now1 = LocalDate.now();
|
||||
LocalDate sevenDaysAgo1 = now1.minusDays(30);
|
||||
QueryWrapper queryWrapperSevenDays1 = new QueryWrapper<>();
|
||||
queryWrapperSevenDays1.eq("if_delete","0");
|
||||
queryWrapperSevenDays1.ge("create_time", sevenDaysAgo1);
|
||||
Integer monthTotal = baseMapper.selectCount(queryWrapperSevenDays1);
|
||||
|
||||
map.put("allTotal",allTotal);
|
||||
map.put("weekTotal",ObjectUtil.isNotEmpty(weekTotal) ? weekTotal : 0);
|
||||
map.put("monthTotal",monthTotal);
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
// 将在部门里面删除的在油站中删除
|
||||
public void beachDelStore() {
|
||||
|
@ -1,16 +1,33 @@
|
||||
package com.fuint.business.userManager.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.EasyExcelFactory;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.fuint.business.userManager.entity.CertifiedMember;
|
||||
import com.fuint.business.userManager.entity.FixingLevel;
|
||||
import com.fuint.business.userManager.entity.UserStatistic;
|
||||
import com.fuint.business.userManager.listener.EasyExcelListener;
|
||||
import com.fuint.business.userManager.service.CertifiedMemberService;
|
||||
import com.fuint.business.userManager.service.FixingLevelService;
|
||||
import com.fuint.business.userManager.vo.CertifiedMemberVo;
|
||||
import com.fuint.business.userManager.vo.LJUserVo;
|
||||
import com.fuint.framework.web.BaseController;
|
||||
import com.fuint.framework.web.ResponseObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -22,6 +39,9 @@ public class CertifiedMemberController extends BaseController {
|
||||
@Autowired
|
||||
private CertifiedMemberService certifiedMemberService;
|
||||
|
||||
@Autowired
|
||||
private FixingLevelService fixingLevelService;
|
||||
|
||||
/**
|
||||
* 根据条件分页查询固定等级信息
|
||||
* @param certifiedMember
|
||||
@ -114,6 +134,93 @@ public class CertifiedMemberController extends BaseController {
|
||||
return getSuccessResult(map1);
|
||||
}
|
||||
|
||||
// 导入模板示例
|
||||
@RequestMapping("/export")
|
||||
public void export(HttpServletResponse response, HttpServletRequest request) {
|
||||
|
||||
try {
|
||||
String filenames = "导入模板示列";
|
||||
String userAgent = request.getHeader("User-Agent");
|
||||
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
|
||||
filenames = URLEncoder.encode(filenames, "UTF-8");
|
||||
} else {
|
||||
filenames = new String(filenames.getBytes("UTF-8"), "ISO-8859-1");
|
||||
}
|
||||
response.setContentType("application/json.ms-exce");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.addHeader("Content-Disposition", "filename=" + filenames + ".xlsx");
|
||||
|
||||
CertifiedMemberVo certifiedMember = new CertifiedMemberVo();
|
||||
certifiedMember.setMobile("15487415241");
|
||||
certifiedMember.setFixingLevelName("出租车认证");
|
||||
certifiedMember.setName("张三");
|
||||
certifiedMember.setCarNumber("鲁A8888");
|
||||
certifiedMember.setRemark("这是一条示例数据");
|
||||
|
||||
List<CertifiedMemberVo> list = new ArrayList<>();
|
||||
list.add(certifiedMember);
|
||||
|
||||
EasyExcel.write(response.getOutputStream(), CertifiedMemberVo.class).sheet("sheet").doWrite(list);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// 导入认证会员信息
|
||||
@RequestMapping("/import")
|
||||
public ResponseObject myImport(MultipartFile file) throws IOException {
|
||||
Map<String,Integer> map = new HashMap<>();
|
||||
int error = 0;
|
||||
int certified = 0;
|
||||
int success = 0;
|
||||
int total = 0;
|
||||
try {
|
||||
//获取文件名
|
||||
String filename = file.getOriginalFilename();
|
||||
//获取文件流
|
||||
InputStream inputStream = file.getInputStream();
|
||||
//实例化实现了AnalysisEventListener接口的类
|
||||
EasyExcelListener listener = new EasyExcelListener();
|
||||
|
||||
EasyExcelFactory.read(inputStream, CertifiedMemberVo.class, listener).headRowNumber(1).build().readAll();
|
||||
//获取数据
|
||||
List<Object> list = listener.getDatas();
|
||||
total = list.size();
|
||||
if (list.size() >= 1) {
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
CertifiedMemberVo certifiedMemberVo = (CertifiedMemberVo) list.get(i);
|
||||
FixingLevel fixingLevel = fixingLevelService.selectFixingLevelByName(certifiedMemberVo.getFixingLevelName());
|
||||
if (ObjectUtil.isNotEmpty(fixingLevel)) {
|
||||
CertifiedMember certifiedMember = new CertifiedMember();
|
||||
certifiedMember.setFixingLevelId(fixingLevel.getId());
|
||||
certifiedMember.setMobile(certifiedMemberVo.getMobile());
|
||||
certifiedMember.setName(certifiedMemberVo.getName());
|
||||
certifiedMember.setCarNumber(certifiedMemberVo.getCarNumber());
|
||||
certifiedMember.setRemark(certifiedMemberVo.getRemark());
|
||||
int row = certifiedMemberService.insertCertifiedMember(certifiedMember);
|
||||
if (row == 1) {
|
||||
success++;
|
||||
} else if (row == 2 || row == 3) {
|
||||
error++;
|
||||
} else {
|
||||
certified++;
|
||||
}
|
||||
}else {
|
||||
error++;
|
||||
}
|
||||
}
|
||||
}
|
||||
map.put("success",success);
|
||||
map.put("error",error);
|
||||
map.put("certified",certified);
|
||||
map.put("total",total);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return getSuccessResult(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改固定等级信息
|
||||
* @param certifiedMember
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.fuint.business.userManager.entity;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
@ -45,16 +46,19 @@ public class CertifiedMember extends BaseEntity implements Serializable {
|
||||
* 姓名
|
||||
*/
|
||||
@ApiModelProperty("姓名")
|
||||
@ExcelProperty(value = "姓名")
|
||||
private String name;
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@ApiModelProperty("手机号")
|
||||
@ExcelProperty(value = "手机号码(必填)")
|
||||
private String mobile;
|
||||
/**
|
||||
* 车牌号
|
||||
*/
|
||||
@ApiModelProperty("车牌号")
|
||||
@ExcelProperty(value = "车牌号")
|
||||
private String carNumber;
|
||||
/**
|
||||
* 认证资料
|
||||
@ -65,6 +69,7 @@ public class CertifiedMember extends BaseEntity implements Serializable {
|
||||
* 备注
|
||||
*/
|
||||
@ApiModelProperty("备注")
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
/**
|
||||
* 认证状态
|
||||
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fuint.business.marketingActivity.cardValue.service.CardValueRecordService;
|
||||
import com.fuint.business.marketingActivity.cardValueChildrens.entity.CardValudChildrens;
|
||||
import com.fuint.business.marketingActivity.cardValueChildrens.service.CardValudChildrensService;
|
||||
import com.fuint.business.storeInformation.entity.LJStore;
|
||||
@ -40,6 +41,9 @@ public class LJUserServiceImpl extends ServiceImpl<LJUserMapper, LJUser> impleme
|
||||
private ILJStoreService storeService;
|
||||
@Resource
|
||||
private LJUserMapper ljUserMapper;
|
||||
@Resource
|
||||
@Lazy
|
||||
private CardValueRecordService cardValueRecordService;
|
||||
|
||||
/**
|
||||
* 根据条件分页查询会员信息
|
||||
@ -73,7 +77,7 @@ public class LJUserServiceImpl extends ServiceImpl<LJUserMapper, LJUser> impleme
|
||||
|
||||
/**
|
||||
* 根据条件分页查询会员信息
|
||||
* @param page
|
||||
* @param
|
||||
* @param user
|
||||
* @return
|
||||
*/
|
||||
@ -158,13 +162,14 @@ public class LJUserServiceImpl extends ServiceImpl<LJUserMapper, LJUser> impleme
|
||||
|
||||
// Integer yesterdayAddNum = baseMapper.selectCount(queryWrapper1);
|
||||
Integer yesterdayAddNum = userBalanceMapper.selectCount(queryWrapper1);
|
||||
|
||||
Integer rechargeTotal = cardValueRecordService.selectUserTotal(user);
|
||||
map.put("balance",balance);
|
||||
map.put("point",point);
|
||||
// map.put("literCard",literCard);
|
||||
// map.put("refuelMoney",refuelMoney);
|
||||
map.put("addNum",addNum);
|
||||
map.put("yesterdayAddNum",yesterdayAddNum);
|
||||
map.put("rechargeTotal",rechargeTotal);
|
||||
return map;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,13 @@
|
||||
package com.fuint.business.userManager.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fuint.business.userManager.entity.CertifiedMember;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class CertifiedMemberVo extends CertifiedMember {
|
||||
@ExcelProperty(value = "认证类型")
|
||||
private String fixingLevelName;
|
||||
}
|
@ -48,6 +48,8 @@ public class ShiroConfig {
|
||||
filterMap.put("/static/**","anon");
|
||||
//会员模板导出
|
||||
filterMap.put("/excel/export","anon");
|
||||
//认证会员模板导出
|
||||
filterMap.put("/business/userManager/certifiedMember/export","anon");
|
||||
//根据地理位置获取最近的店铺信息
|
||||
filterMap.put("/business/storeInformation/store/recentlyStore","anon");
|
||||
filterMap.put("/business/storeInformation/store/isRecharge","anon");
|
||||
|
@ -160,6 +160,7 @@ public class DutyServiceImpl extends ServiceImpl<TDutyMapper, TDuty> implements
|
||||
TDutySource dutySource = new TDutySource();
|
||||
dutySource.setDutyId(tduty.getDutyId());
|
||||
dutySource.setSourceId(tSource.getSourceId());
|
||||
dutySource.setIfDelete("0");
|
||||
tDutySourceMapper.insert(dutySource);
|
||||
}
|
||||
}else {
|
||||
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
@ -35,6 +35,10 @@ public class TDutySource implements Serializable {
|
||||
* 菜单id
|
||||
*/
|
||||
private Integer sourceId;
|
||||
/**
|
||||
* 菜单id
|
||||
*/
|
||||
private String ifDelete;
|
||||
|
||||
|
||||
}
|
||||
|
@ -3,10 +3,11 @@
|
||||
<mapper namespace="com.fuint.repository.mapper.TDutySourceMapper">
|
||||
<select id="findSourceIdsByDutyId" resultType="java.lang.Long">
|
||||
select distinct t.source_id from t_duty_source t
|
||||
where t.duty_id = #{dutyId}
|
||||
where t.duty_id = #{dutyId} and if_delete = '0'
|
||||
</select>
|
||||
|
||||
<delete id="deleteSourcesByDutyId">
|
||||
delete from t_duty_source where duty_id = #{dutyId}
|
||||
</delete>
|
||||
<update id="deleteSourcesByDutyId">
|
||||
UPDATE t_duty_source
|
||||
SET if_delete = '1' where duty_id = #{dutyId}
|
||||
</update>
|
||||
</mapper>
|
||||
|
@ -117,3 +117,10 @@
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.el-pagination.is-background .el-pager li:not(.disabled).active{
|
||||
background-color: #FF9655 !important;
|
||||
}
|
||||
.el-pagination.is-background .el-pager li:hover{
|
||||
color: #FF9655 !important;/*hover时候的文字颜色*/
|
||||
}
|
||||
|
@ -72,7 +72,7 @@
|
||||
} else {
|
||||
if (str.includes("storeId")) {
|
||||
storeId = str.split("=")[1]
|
||||
}else if(str.includes("sn")){
|
||||
} else if (str.includes("sn")) {
|
||||
sn = str.split("=")[1]
|
||||
}
|
||||
}
|
||||
@ -105,4 +105,4 @@
|
||||
.dis {
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
@ -3,8 +3,9 @@ module.exports = {
|
||||
// baseUrl: 'https://vue.ruoyi.vip/prod-api',
|
||||
// baseUrl: 'http://192.168.0.196:8081/',
|
||||
// baseUrl: 'https://www.tuofeng.cc/oilAdmin/',
|
||||
baseUrl: 'https://oilapi.youkerr.com/oilAdmin/',
|
||||
// baseUrl: 'https://8q4f124343.yicp.fun/',
|
||||
baseUrl: 'http://192.168.31.96:8080/',
|
||||
// baseUrl: 'http://192.168.31.96:8080/',
|
||||
// baseUrl: 'http://192.168.1.5:8002/cdJdc',
|
||||
imagesUrl: 'http://www.nuoyunr.com/lananRsc',
|
||||
// 应用信息
|
||||
|
@ -409,10 +409,10 @@
|
||||
// this.getAddress();
|
||||
uni.getSetting({
|
||||
success(res) {
|
||||
if (res.authSetting['scope.userLocation']==false) {
|
||||
if (res.authSetting['scope.userLocation'] == false) {
|
||||
// uni.clearStorageSync();
|
||||
// _this.getStorageSize()
|
||||
|
||||
|
||||
_this.showRefuseLocationPermission()
|
||||
} else {
|
||||
// 用户同意获取位置信息
|
||||
@ -431,36 +431,36 @@
|
||||
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
// 用户拒绝授权的展示
|
||||
showRefuseLocationPermission() {
|
||||
const that = this;
|
||||
wx.showModal({
|
||||
title: "提示",
|
||||
content: "需要获取用户位置权限",
|
||||
confirmText: "前往设置",
|
||||
showCancel: false,
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
uni.openSetting({
|
||||
success(res){
|
||||
console.log("打开设置成功", res);
|
||||
if (res.authSetting['scope.userLocation']) {
|
||||
console.log('成功授权userLocation')
|
||||
that.getAddress()
|
||||
} else {
|
||||
console.log('用户未授权userLocation')
|
||||
// 递归调用本函数,(函数套函数)
|
||||
that.showRefuseLocationPermission()
|
||||
}
|
||||
},
|
||||
fail(err){
|
||||
console.log("打开设置失败", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
const that = this;
|
||||
wx.showModal({
|
||||
title: "提示",
|
||||
content: "需要获取用户位置权限",
|
||||
confirmText: "前往设置",
|
||||
showCancel: false,
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
uni.openSetting({
|
||||
success(res) {
|
||||
console.log("打开设置成功", res);
|
||||
if (res.authSetting['scope.userLocation']) {
|
||||
console.log('成功授权userLocation')
|
||||
that.getAddress()
|
||||
} else {
|
||||
console.log('用户未授权userLocation')
|
||||
// 递归调用本函数,(函数套函数)
|
||||
that.showRefuseLocationPermission()
|
||||
}
|
||||
},
|
||||
fail(err) {
|
||||
console.log("打开设置失败", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
getStorageSize() {
|
||||
let that = this;
|
||||
@ -1059,4 +1059,4 @@
|
||||
color: white;
|
||||
margin: 0 auto;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
@ -92,11 +92,12 @@
|
||||
},
|
||||
}).then((resp) => {
|
||||
if (resp.code == 200) {
|
||||
console.log(uni.getStorageSync("y_type"),uni.getStorageSync("y_userId"));
|
||||
console.log(uni.getStorageSync("y_type"), uni
|
||||
.getStorageSync("y_userId"));
|
||||
if (uni.getStorageSync("y_type") ==
|
||||
'yaoqingyouli') {
|
||||
_this.activeRecommendRecords()
|
||||
|
||||
|
||||
}
|
||||
|
||||
uni.setStorageSync('App-Token', resp.data.token);
|
||||
@ -380,4 +381,4 @@
|
||||
border: 1px solid #0078FF;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
@ -325,8 +325,7 @@
|
||||
oilCardAmountSale: this.oilCardRedece,
|
||||
ifLogin: this.ifLogin,
|
||||
levelAmount: this.levelAmount,
|
||||
activeAmount: this.activeAmount,
|
||||
sn
|
||||
activeAmount: this.activeAmount
|
||||
};
|
||||
let _this = this;
|
||||
request({
|
||||
|