浏览代码

字典应用

zuy 2 年之前
父节点
当前提交
47c62e83be

+ 10 - 5
admin-web/src/App.vue

@@ -20,7 +20,8 @@ import other from '/@/utils/other';
 import { Local, Session } from '/@/utils/storage';
 import mittBus from '/@/utils/mitt';
 import setIntroduction from '/@/utils/setIconfont';
-import {$get} from "/@/utils/request";
+import {$get,$body} from "/@/utils/request";
+import u from "/@/utils/u";
 
 // 引入组件
 const LockScreen = defineAsyncComponent(() => import('/@/layout/lockScreen/index.vue'));
@@ -91,6 +92,8 @@ onMounted(() => {
     window.addEventListener('unload', ()=>{
       console.log("unload")
     });
+
+
     if (Session.get('token')) {
       refreshEnv();
     }
@@ -98,11 +101,13 @@ onMounted(() => {
 });
 
 const refreshEnv = ()=>{
-/*  $get("/dict/dictList", {}).then((res: any) => {
-    Session.set("dicts", res);
+  $body("/dataDict/list", {pageSize:1024}).then((res: any) => {
+    let {list}  = res;
+    var dictGroup = u.groupByKey(list,"code");
+    Session.set("dicts", dictGroup);
   })
 
-  $get("/user/profile").then((obj: any) => {
+  $get("/admin-user/profile").then((obj: any) => {
     if (obj) {
       let {user, permissionList} = obj;
       let userInfo = {...user, permList: permissionList}
@@ -111,7 +116,7 @@ const refreshEnv = ()=>{
 
   }).catch(err => {
     Session.clear();
-  });*/
+  });
 }
 
 // 页面销毁时,关闭监听布局配置/i18n监听

+ 2 - 2
admin-web/src/utils/request.ts

@@ -59,8 +59,8 @@ service.interceptors.response.use(
             } else if (res.code === 200) {
                 return response.data;
             } else {
-                ElMessage.error(res.msg || '系统繁忙,请稍后再试!');
-                return Promise.reject(res.msg || '系统繁忙,请稍后再试!');
+                ElMessage.error(res.msg||res.message || '系统繁忙,请稍后再试!');
+                return Promise.reject(res.msg||res.message  || '系统繁忙,请稍后再试!');
             }
         } else {
             return response.data;

+ 47 - 2
admin-web/src/views/admin/index.vue

@@ -5,8 +5,8 @@
           :xs="24"
           :sm="12"
           :md="12"
-          :lg="6"
-          :xl="6"
+          :lg="4"
+          :xl="4"
           v-for="(v, k) in state.homeOne"
           :key="k"
           :class="{ 'home-media home-media-lg': k > 1, 'home-media-sm': k === 1 }"
@@ -28,6 +28,15 @@
     <el-row :gutter="15" class="home-card-two mb15">
       <el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16">
         <div class="home-card-item">
+          <el-date-picker
+              v-model="state.dateRange"
+              type="daterange"
+              unlink-panels
+              range-separator="To"
+              start-placeholder="开始时间"
+              end-placeholder="结束时间"
+              :shortcuts="shortcuts"
+          />
           <div style="height: 100%" ref="homeLineRef"></div>
         </div>
       </el-col>
@@ -83,7 +92,13 @@ const storesTagsViewRoutes = useTagsViewRoutes();
 const storesThemeConfig = useThemeConfig();
 const {themeConfig} = storeToRefs(storesThemeConfig);
 const {isTagsViewCurrenFull} = storeToRefs(storesTagsViewRoutes);
+
+const end = new Date()
+const start = new Date()
+start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+
 const state = reactive({
+  dateRange:[start,end],
   global: {
     homeChartOne: null,
     homeChartTwo: null,
@@ -201,6 +216,36 @@ const state = reactive({
   },
 });
 
+const shortcuts = [
+  {
+    text: '上周',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+      return [start, end]
+    },
+  },
+  {
+    text: '上个月',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+      return [start, end]
+    },
+  },
+  {
+    text: '最近三个月',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+      return [start, end]
+    },
+  },
+]
+
 // 折线图
 const initLineChart = () => {
   if (!state.global.dispose.some((b: any) => b === state.global.homeChartOne)) state.global.homeChartOne.dispose();

+ 5 - 3
admin-web/src/views/login/component/account.vue

@@ -111,13 +111,15 @@ const encryptData = (str:string)=>{
 
 const initData = () => {
   $body("/dataDict/list", {}).then((res: any) => {
-    Session.set("dicts", res);
+    let {list}  = res;
+    var dictGroup = u.groupByKey(list,"code");
+    Session.set("dicts", dictGroup);
   });
 
   $get("/admin-user/profile").then((obj: any) => {
     if (obj) {
-      let {user, permissionList} = obj;
-      let userInfo = {...user, permList: permissionList}
+      let user = obj[0];
+      let userInfo = {...user, permList: user.permissions}
       /*     app.user = user;
            app.userId = user.id;
            app.permissions = permissionList;

+ 8 - 2
admin/src/main/java/com/kym/admin/config/StpInterfaceImpl.java

@@ -1,13 +1,16 @@
 package com.kym.admin.config;
 
 import cn.dev33.satoken.stp.StpInterface;
+import com.kym.common.utils.CommUtil;
 import com.kym.entity.admin.vo.AdminUserVo;
 import com.kym.service.admin.AdminUserService;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
+
 /**
  * @author skyline
  * @description 权限控制
@@ -27,8 +30,11 @@ public class StpInterfaceImpl implements StpInterface {
      */
     @Override
     public List<String> getPermissionList(Object userId, String loginType) {
-        var permissions = new ArrayList<String>();
-        adminUserService.listUserPermissions((Long) userId).stream().map(AdminUserVo::getPermissions).toList().forEach(permissions::addAll);
+        List<String> permissions = new ArrayList<String>();
+        List<AdminUserVo> adminUserVos = adminUserService.listUserPermissions(CommUtil.null2Long(userId));
+        if(!CommUtil.isEmptyOrNull(adminUserVos)){
+            permissions = adminUserVos.stream().map(AdminUserVo::getPermissions).filter(kPermissions -> !CommUtil.isEmptyOrNull(kPermissions)).flatMap(Collection::stream).distinct().toList();
+        }
         return permissions;
     }
 

+ 7 - 0
common/src/main/java/com/kym/common/handler/GlobalExceptionHandler.java

@@ -142,4 +142,11 @@ public class GlobalExceptionHandler {
     }
 
 
+    @ExceptionHandler(value = {Exception.class})
+    public R handlerRestException(Exception e) {
+        LOGGER.info(e.getMessage(), e);
+        return R.failed();
+    }
+
+
 }

+ 1 - 2
service/src/main/java/com/kym/service/miniapp/impl/DataDictServiceImpl.java

@@ -5,7 +5,6 @@ import cn.hutool.core.util.ReflectUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.pagehelper.PageHelper;
 import com.kym.common.IQuery;
 import com.kym.common.utils.CommUtil;
 import com.kym.entity.common.PageBean;
@@ -34,7 +33,7 @@ public class DataDictServiceImpl extends ServiceImpl<DataDictMapper, DataDict> i
 
     @Override
     public Object list(IQuery<DataDict> query) {
-        PageHelper.startPage(query.pageNum, query.pageSize);
+//        PageHelper.startPage(query.pageNum, query.pageSize);
         List<DataDict> list = list();
         return new PageBean<>(list);
     }