Quellcode durchsuchen

单点登录,动态新增

hanchaobo vor 2 Jahren
Ursprung
Commit
dfa4c3d4da

+ 60
- 2
src/main.js Datei anzeigen

@@ -13,11 +13,15 @@ import router from './router'
13 13
 import directive from './directive' // directive
14 14
 import plugins from './plugins' // plugins
15 15
 import { download } from '@/utils/request'
16
-
16
+import { Message } from 'element-ui'
17
+import NProgress from 'nprogress'
18
+import 'nprogress/nprogress.css'
19
+import { getToken } from '@/utils/auth'
20
+import { isRelogin } from '@/utils/request'
17 21
 import './assets/icons' // icon
18 22
 // 引入Iconfont 矢量图标库
19 23
 import './assets/icon/iconfont.css'
20
-import './permission' // permission control
24
+// import './permission' // permission control
21 25
 import { getDicts } from "@/api/system/dict/data";
22 26
 import { getConfigKey } from "@/api/system/config";
23 27
 import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
@@ -78,7 +82,61 @@ DictData.install()
78 82
  * Currently MockJs will be used in the production environment,
79 83
  * please remove it before going online! ! !
80 84
  */
85
+NProgress.configure({ showSpinner: false })
86
+
87
+const whiteList = ['/login', '/register']
81 88
 
89
+router.beforeEach((to, from, next) => {
90
+  let path = to.fullPath
91
+  if(path.indexOf('token') != -1){
92
+    path = path.split('token=');
93
+    path = path[1];
94
+    Cookies.set("Admin-Token", path)
95
+  }
96
+  NProgress.start()
97
+  if (getToken()) {
98
+    to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
99
+    /* has token*/
100
+    if (to.path === '/login') {
101
+      next({ path: '/' })
102
+      NProgress.done()
103
+    } else {
104
+      if (store.getters.roles.length === 0) {
105
+        isRelogin.show = true
106
+        // 判断当前用户是否已拉取完user_info信息
107
+        store.dispatch('GetInfo').then(() => {
108
+          isRelogin.show = false
109
+          store.dispatch('GenerateRoutes').then(accessRoutes => {
110
+            // 根据roles权限生成可访问的路由表
111
+            router.addRoutes(accessRoutes) // 动态添加可访问路由表
112
+            next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
113
+          })
114
+        }).catch(err => {
115
+            store.dispatch('LogOut').then(() => {
116
+              Message.error(err)
117
+              next({ path: '/' })
118
+            })
119
+          })
120
+      } else {
121
+        next()
122
+      }
123
+    }
124
+  } else {
125
+    // 没有token
126
+    if (whiteList.indexOf(to.path) !== -1) {
127
+      // 在免登录白名单,直接进入
128
+      next()
129
+    } else {
130
+      // next(`/login?redirect=${encodeURIComponent(to.fullPath)}`) // 否则全部重定向到登录页
131
+      next(`/login`)
132
+      NProgress.done()
133
+    }
134
+  }
135
+})
136
+
137
+router.afterEach(() => {
138
+  NProgress.done()
139
+})
82 140
 Vue.use(Element, {
83 141
   size: Cookies.get('size') || 'medium' // set element-ui default size
84 142
 })

+ 1
- 0
src/permission.js Datei anzeigen

@@ -11,6 +11,7 @@ NProgress.configure({ showSpinner: false })
11 11
 const whiteList = ['/login', '/register']
12 12
 
13 13
 router.beforeEach((to, from, next) => {
14
+  console.log("**************************************");
14 15
   NProgress.start()
15 16
   if (getToken()) {
16 17
     to.meta.title && store.dispatch('settings/setTitle', to.meta.title)

+ 5
- 0
src/router/index.js Datei anzeigen

@@ -66,6 +66,11 @@ export const constantRoutes = [
66 66
     component: () => import('@/views/onlyoffice/onlyoffice'),
67 67
     hidden: true
68 68
   },
69
+  {
70
+    path: '/test',
71
+    component: () => import('@/views/test'),
72
+    hidden: true
73
+  },
69 74
   {
70 75
     path: '',
71 76
     component: Layout,

+ 8
- 1
src/views/caseManagement/caseList.vue Datei anzeigen

@@ -18,7 +18,7 @@
18 18
                     @keyup.enter.native="handleQuery" />
19 19
             </el-form-item> -->
20 20
             <el-form-item label="案件编号" prop="caseNum">
21
-                <el-input v-model="queryParams.caseNum" placeholder="请输入案件编号" clearable style="width: 240px"
21
+                <el-input v-model="queryParams.caseNum" placeholder="请输入案件编号" :disabled='queryDisable' clearable style="width: 240px"
22 22
                     @keyup.enter.native="handleQuery" />
23 23
             </el-form-item>
24 24
             <el-form-item label="创建时间" prop="caseTime">
@@ -211,6 +211,7 @@ export default {
211 211
                 pageNum: 1,
212 212
                 pageSize: 10,
213 213
             },
214
+            queryDisable:false,
214 215
             // 遮罩层
215 216
             loading: false,
216 217
             // 总条数
@@ -277,6 +278,12 @@ export default {
277 278
         };
278 279
     },
279 280
     created() {
281
+        this.queryParams.caseNum = this.$route.query.caseNum;
282
+        if(this.$route.query.token){
283
+            this.queryDisable = true;
284
+        }else{
285
+            this.queryDisable = false;
286
+        }
280 287
         // this.getList(this.queryParams);
281 288
         this.listDeptFn();
282 289
         // this.getButtonList()

+ 660
- 333
src/views/caseManagement/components/addCase.vue
Datei-Diff unterdrückt, da er zu groß ist
Datei anzeigen


+ 2
- 2
src/views/register.vue Datei anzeigen

@@ -206,11 +206,11 @@ export default {
206 206
       roleList: [],
207 207
       nationalityList:[
208 208
         {
209
-          value:'内',
209
+          value:'内',
210 210
           id:0
211 211
         },
212 212
         {
213
-          value:'外',
213
+          value:'外',
214 214
           id:1
215 215
         }
216 216
       ],

+ 79
- 0
src/views/test.vue Datei anzeigen

@@ -0,0 +1,79 @@
1
+<template>
2
+    <div>
3
+        <el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
4
+            <el-form-item prop="email" label="邮箱" :rules="[
5
+            { required: true, message: '请输入邮箱地址', trigger: 'blur' },
6
+            { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
7
+        ]">
8
+                <el-input v-model="dynamicValidateForm.email"></el-input>
9
+            </el-form-item>
10
+            <div v-for="(item, index) in dynamicValidateForm.domains" :key="item.key">
11
+                <el-form-item :label="'域名' + index" :prop="'domains.' + index + '.value.name'" :rules="{
12
+            required: true, message: '域名不能为空', trigger: 'blur'
13
+        }">
14
+                    <el-input v-model="item.value.name"></el-input>
15
+                </el-form-item>
16
+                <el-form-item :label="'链接' + index" :prop="'domains.' + index + '.value.url'" :rules="{
17
+            required: true, message: '链接不能为空', trigger: 'blur'
18
+        }">
19
+                    <el-input v-model="item.value.url"></el-input>
20
+                </el-form-item>
21
+                <el-button @click.prevent="removeDomain(item)">删除</el-button>
22
+            </div>
23
+            <el-form-item>
24
+                <el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
25
+                <el-button @click="addDomain">新增域名</el-button>
26
+                <el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
27
+            </el-form-item>
28
+        </el-form>
29
+    </div>
30
+</template>
31
+<script>
32
+export default {
33
+    data() {
34
+        return {
35
+            dynamicValidateForm: {
36
+                domains: [{
37
+                    value: {
38
+                        name: "",
39
+                        url: ""
40
+                    }
41
+                }],
42
+                email: ''
43
+            },
44
+            data: { "applicant": { "id": 123, "caseAppliId": 5453163805296176, "userId": null, "applicantDeptId": null, "code": null, "compLegalPerson": null, "roleType": 1, "groupOrder": 2, "operatorFlag": 0, "phone": "17691225077", "email": "1129801211@qq.com", "name": "白贵勇", "home": "西安", "address": "西安", "idCard": "612429198708193335", "idType": null, "nationality": null, "birth": null, "sex": null, "resName": null }, "applicantAgent": null, "res": { "id": 124, "caseAppliId": 5453163805296176, "userId": null, "applicantDeptId": null, "code": null, "compLegalPerson": null, "roleType": 3, "groupOrder": 2, "operatorFlag": 0, "phone": "18792927508", "email": "1322446236@qq.com", "name": "王琼", "home": "西安", "address": "西安", "idCard": "14050219970814622X", "idType": null, "nationality": null, "birth": null, "sex": null, "resName": null }, "resAgent": null }
45
+        };
46
+    },
47
+    methods: {
48
+        submitForm(formName) {
49
+            this.$refs[formName].validate((valid) => {
50
+                if (valid) {
51
+                    alert('submit!');
52
+                    console.log(this.dynamicValidateForm);
53
+
54
+                } else {
55
+                    console.log('error submit!!');
56
+                    return false;
57
+                }
58
+            });
59
+        },
60
+        resetForm(formName) {
61
+            this.$refs[formName].resetFields();
62
+        },
63
+        removeDomain(item) {
64
+            var index = this.dynamicValidateForm.domains.indexOf(item)
65
+            if (index !== -1) {
66
+                this.dynamicValidateForm.domains.splice(index, 1)
67
+            }
68
+        },
69
+        addDomain() {
70
+            this.dynamicValidateForm.domains.push({
71
+                value: {
72
+                    name: "",
73
+                    key: Date.now()
74
+                },
75
+            });
76
+        }
77
+    }
78
+}
79
+</script>