Procházet zdrojové kódy

充值数据统计 修改

wangtao před 3 roky
rodič
revize
edf0ed8246

+ 111 - 0
src/api/recharge/index.js

@@ -0,0 +1,111 @@
+import request from '@/utils/request'
+
+
+// 员工总数接口
+export function employeesCountApi() {
+    return request({
+        url: '/dxtop/staff/count',
+        method: 'get',
+    })
+}
+// 不同人员比例
+export function personnelRatioApi() {
+    return request({
+        url: '/dxtop/staff/staffRadio',
+        method: 'get',
+    })
+}
+// 渠道订单金额汇总
+export function channelOrderMoneyApi() {
+    return request({
+        url: '/dxtop/topChannel/channelOrderMoney',
+        method: 'get',
+    })
+}
+// 支付方式数据
+export function payTypeCollectApi() {
+    return request({
+        url: '/dxtop/order/payTypeCollect',
+        method: 'get',
+    })
+}
+//充值金额/充值次数
+export function orderMoneyApi() {
+    return request({
+        url: '/dxtop/order/orderMoney',
+        method: 'get',
+    })
+}
+// 消费数据统计
+export function collectApi(data) {
+    return request({
+        url: '/dxtop/dish/collect',
+        method: 'get',
+
+    })
+}
+
+// 充值数据统计
+export function dateCollectApi(data) {
+    return request({
+        url: '/dxtop/order/dateCollect',
+        method: 'get',
+        params: data
+    })
+
+}
+
+// 修改
+export function updataChannel() {
+    return request({
+        url: '/dxtop/topChannel',
+        method: 'put',
+    })
+}
+// 删除
+export function delChannel(deptId) {
+    return request({
+        url: '/dxtop/topChannel/' + deptId,
+        method: 'delete',
+
+    })
+}
+// 查询
+export function listChannel(query) {
+    return request({
+        url: '/dxtop/topChannel/list',
+        method: 'get',
+        params: query
+    })
+}
+
+
+// //根据支付方式计算订单汇总
+// localhost:8085/dxtop/order/payTypeCollect
+// 请求方式:get
+// 参数:无
+// 响应:[
+//         {
+
+//             "payType": 1,
+//             "money": 1.00
+//         }
+// 只需要拿payType和money字段
+
+
+// //充值金额/充值次数
+// localhost:8085/dxtop/order/orderMoney
+// 请求方式:get
+// 参数无
+// 响应:{
+//         "total": 0.00,//充值金额
+//         "count": 0//充值次数
+//     }
+// //日期统计接口
+// //localhost:8085/dxtop/order/dateCollect
+// 参数:type(0月1年),startTime,endTime
+// [
+//         {
+//             "total": 0.0,
+//             "orderTime": 1
+//         }

binární
src/assets/images/bg.png


binární
src/assets/images/tj1.png


binární
src/assets/images/tj2.png


binární
src/assets/logo/logo-b.png


+ 9 - 1
src/assets/styles/variables.scss

@@ -20,6 +20,10 @@ $sidebarLightTitle: #001529;
 $subMenuBg:#161523;
 $subMenuHover:#004BAD;
 $sideBarWidth: 200px;
+$zfb:#44B2FF;
+$wx:#51D455;
+$xj:#FECB27;
+$qt:#FE9627;
 // the :export directive is the magic sauce for webpack
 // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
 :export {
@@ -34,5 +38,9 @@ $sideBarWidth: 200px;
     subMenuHover: $subMenuHover;
     sideBarWidth: $sideBarWidth;
     sidebarTitle: $sidebarTitle;
-    sidebarLightTitle: $sidebarLightTitle
+    sidebarLightTitle: $sidebarLightTitle;
+    zfb: $zfb;
+    wx: $wx;
+    xj: $xj;
+    qt: $qt;
 }

+ 35 - 2
src/layout/components/Navbar.vue

@@ -4,9 +4,11 @@
 
     <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
     <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
-
+    
     <div class="right-menu">
+      
       <template v-if="device!=='mobile'">
+        <span class="date" >{{date}}</span>
         <search id="header-search" class="right-menu-item" />
 
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
@@ -14,6 +16,7 @@
         <el-tooltip content="布局大小" effect="dark" placement="bottom">
           <size-select id="size-select" class="right-menu-item hover-effect" />
         </el-tooltip>
+        
 
       </template>
 
@@ -49,6 +52,11 @@ import SizeSelect from '@/components/SizeSelect'
 import Search from '@/components/HeaderSearch' 
 
 export default {
+  data(){
+    return{
+      date: new Date(),
+    }
+  },
   components: {
     Breadcrumb,
     TopNav,
@@ -78,8 +86,27 @@ export default {
       get() {
         return this.$store.state.settings.topNav
       }
-    }
+    },
+    
+  },
+  mounted(){
+    let that= this;
+    this.timer = setInterval(function() {
+        let myDate = new Date()
+        let year = myDate.getFullYear() + '年'
+        let month = myDate.getMonth() + 1 +'月'
+        let day = myDate.getDate()  +'日'
+        let sfb = myDate.getHours() + ':' + myDate.getMinutes() + ':' + myDate.getSeconds()
+        that.date = year + month + day + ' ' + sfb
+    });
+    
   },
+  //销毁时清除计时器
+  // beforeDestroy: function () {
+  //     if (this.timer) {
+  //       clearInterval(this.timer)
+  //     }
+  // },
   methods: {
     toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')
@@ -186,4 +213,10 @@ export default {
     }
   }
 }
+.date{
+  width:250px;
+  margin-right: 20px;
+  vertical-align: top;
+  
+}
 </style>

+ 2 - 2
src/layout/components/Sidebar/Logo.vue

@@ -83,8 +83,8 @@ export default {
     width: 100%;
 
     & .sidebar-logo {
-      width: 117px;
-      height: 45px;
+      width: 102px;
+      height: 39px;
       vertical-align: middle;
       margin-right: 12px;
     }

+ 36 - 36
src/permission.js

@@ -10,44 +10,44 @@ NProgress.configure({ showSpinner: false })
 const whiteList = ['/login', '/auth-redirect', '/bind', '/register']
 
 router.beforeEach((to, from, next) => {
-  NProgress.start()
-  if (getToken()) {
-    to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
-    /* has token*/
-    if (to.path === '/login') {
-      next({ path: '/' })
-      NProgress.done()
+    NProgress.start()
+    if (getToken()) {
+        to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
+            /* has token*/
+        if (to.path === '/login') {
+            next({ path: '/' })
+            NProgress.done()
+        } else {
+            if (store.getters.roles.length === 0) {
+                // 判断当前用户是否已拉取完user_info信息
+                store.dispatch('GetInfo').then(() => {
+                    store.dispatch('GenerateRoutes').then(accessRoutes => {
+                        // 根据roles权限生成可访问的路由表
+                        router.addRoutes(accessRoutes) // 动态添加可访问路由表
+                        next({...to, replace: true }) // hack方法 确保addRoutes已完成
+                    })
+                }).catch(err => {
+                    store.dispatch('LogOut').then(() => {
+                        Message.error(err)
+                        next({ path: '/vuedx/#/' })
+                    })
+                })
+            } else {
+                next()
+            }
+        }
     } else {
-      if (store.getters.roles.length === 0) {
-        // 判断当前用户是否已拉取完user_info信息
-        store.dispatch('GetInfo').then(() => {
-          store.dispatch('GenerateRoutes').then(accessRoutes => {
-            // 根据roles权限生成可访问的路由表
-            router.addRoutes(accessRoutes) // 动态添加可访问路由表
-            next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
-          })
-        }).catch(err => {
-            store.dispatch('LogOut').then(() => {
-              Message.error(err)
-              next({ path: '/vuedx/' })
-            })
-          })
-      } else {
-        next()
-      }
+        // 没有token
+        if (whiteList.indexOf(to.path) !== -1) {
+            // 在免登录白名单,直接进入
+            next()
+        } else {
+            next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
+            NProgress.done()
+        }
     }
-  } else {
-    // 没有token
-    if (whiteList.indexOf(to.path) !== -1) {
-      // 在免登录白名单,直接进入
-      next()
-    } else {
-      next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
-      NProgress.done()
-    }
-  }
 })
 
 router.afterEach(() => {
-  NProgress.done()
-})
+    NProgress.done()
+})

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 613 - 265
src/views/index.vue


+ 44 - 2
src/views/login.vue

@@ -1,7 +1,12 @@
 <template>
-  <div class="login">
+  <div class="login" >
+    <div class="bg"><img :src="bg" alt=""></div>
+    <div class="logo">
+      <img :src="logo" alt="">
+      <span class="logo_txt">充值管理平台</span>
+    </div>
     <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
-      <h3 class="title">永天后台管理系统</h3>
+      <h3 class="title">后台管理系统</h3>
       <el-form-item prop="username">
         <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">
           <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
@@ -57,6 +62,8 @@
 </template>
 
 <script>
+import bgImg from "@/assets/images/bg.png";
+import logoImg from "@/assets/logo/logo-b.png";
 import { getCodeImg } from "@/api/login";
 import Cookies from "js-cookie";
 import { encrypt, decrypt } from '@/utils/jsencrypt'
@@ -65,6 +72,8 @@ export default {
   name: "Login",
   data() {
     return {
+      bg:bgImg,
+      logo:logoImg,
       codeUrl: "",
       cookiePassword: "",
       loginForm: {
@@ -108,6 +117,7 @@ export default {
   methods: {
     getCode() {
       getCodeImg().then(res => {
+        console.log(res)
         this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff;
         if (this.captchaOnOff) {
           this.codeUrl = "data:image/gif;base64," + res.img;
@@ -155,6 +165,38 @@ export default {
 </script>
 
 <style rel="stylesheet/scss" lang="scss">
+.bg{
+  width:100%;
+  height:100%;
+  overflow: hidden;
+  position: fixed;
+  top:0;
+  left:0;
+  z-index: -1;
+  .bgimg{
+    width:100%;
+    height:100%;
+    position: absolute;
+    top:0;
+    left:0;
+    z-index: -1;
+  }
+}
+.logo{
+  width:100%;
+  position: fixed;
+  top:0;
+  img{
+    width:6%;
+    margin:10px 2rem 0 20px;
+    vertical-align: middle;
+  }
+  .logo_txt{
+    font-size: 1.6rem;
+    color:#fff;
+    vertical-align: middle;
+  }
+}
 .login {
   display: flex;
   justify-content: center;

+ 2 - 2
vue.config.js

@@ -33,8 +33,8 @@ module.exports = {
         proxy: {
             // detail: https://cli.vuejs.org/config/#devserver-proxy
             [process.env.VUE_APP_BASE_API]: {
-                // target: 'https://wx.ewoogi.com/dxapi/',
-                target: `http://172.16.120.104:8085`,
+                target: 'https://wx.ewoogi.com/dxapi/',
+                //target: `http://172.16.120.104:8085`,
                 changeOrigin: true,
                 pathRewrite: {
                     ['^' + process.env.VUE_APP_BASE_API]: ''

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů