Explorar el Código

代码逻辑完善

sunxuewei hace 2 años
padre
commit
318518f9c1

+ 2 - 2
.env.development

@@ -1,7 +1,7 @@
1 1
 # 若依管理系统/开发环境
2 2
 # VUE_APP_BASE_URL = 'http://192.168.50.205:9999'
3
-VUE_APP_BASE_URL = 'http://172.16.6.217:9999'
4
-# VUE_APP_BASE_URL = 'http://121.36.17.6:9098'
3
+# VUE_APP_BASE_URL = 'http://172.16.6.217:9999'
4
+VUE_APP_BASE_URL = 'http://121.36.17.6:9098'
5 5
 
6 6
 # 页面标题
7 7
 VUE_APP_TITLE = "应急物资系统"

+ 9 - 0
src/api/index.ts

@@ -33,6 +33,8 @@ import axios from "axios";
33 33
 import cache from "@/utils/cache";
34 34
 import errorCode from "@/utils/errorCode";
35 35
 import store from "@/store";
36
+import NProgress from "nprogress"; // progress bar
37
+import "nprogress/nprogress.css";
36 38
 import { serialize } from "@/utils/util";
37 39
 import { ElNotification, ElMessageBox, ElMessage } from "element-plus";
38 40
 
@@ -47,10 +49,15 @@ const request = axios.create({
47 49
   timeout: 10000
48 50
 });
49 51
 
52
+// NProgress Configuration
53
+NProgress.configure({
54
+  showSpinner: false
55
+});
50 56
 // request拦截器
51 57
 request.interceptors.request.use(
52 58
   (config) => {
53 59
     // 是否需要设置 token
60
+    NProgress.start(); // start progress bar
54 61
     const isToken = (config.headers || {}).isToken === false;
55 62
     // 是否需要防止数据重复提交
56 63
     const isRepeatSubmit = (config.headers || {}).repeatSubmit === false;
@@ -102,6 +109,7 @@ request.interceptors.request.use(
102 109
 // 响应拦截器
103 110
 request.interceptors.response.use(
104 111
   (res: any) => {
112
+    NProgress.done();
105 113
     // 未设置状态码则默认成功状态
106 114
     const code = res.code || 200;
107 115
     // 获取错误信息
@@ -133,6 +141,7 @@ request.interceptors.response.use(
133 141
   },
134 142
   (error) => {
135 143
     console.log("err" + error);
144
+    NProgress.done();
136 145
     let { message } = error;
137 146
     if (message === "Network Error") {
138 147
       message = "后端接口连接异常";

+ 1 - 2
src/permission.ts

@@ -20,8 +20,7 @@ router.beforeEach(async (to, from, next) => {
20 20
         formatRoutes(res);
21 21
         next(to.path);
22 22
       });
23
-    } 
24
-    else {
23
+    } else {
25 24
       const meta = to.meta || {};
26 25
       if (to.path === "/login" || to.path === "/shuju") {
27 26
         next({ path: "/" });

+ 3 - 2
src/utils/util.ts

@@ -1,4 +1,4 @@
1
-import { ref } from "vue";
1
+import { ref, toRef } from "vue";
2 2
 import CryptoJS from "crypto-js";
3 3
 
4 4
 // 构造树型结构数据
@@ -171,11 +171,12 @@ export function getValueLabel(arr: any, value: string, valueName?: string, label
171 171
   return arr.find((item: any) => item[valName] === value)[label];
172 172
 }
173 173
 
174
+// 从字典中获取多选value的label
174 175
 export function getValueListLabel(arr: any, value: string[], valueName?: string, labelName?: string) {
175 176
   const valName = valueName ?? "value";
176 177
   const label = labelName ?? "label";
177
-  if (!value || value?.length === 0) return;
178 178
   const showBackList = typeof value === "string" ? JSON.parse(value) : value;
179
+  if (!value || value?.length === 0) return;
179 180
   const result: string[] = [];
180 181
   showBackList.forEach((item: any) => {
181 182
     result.push(arr.find((ite: any) => ite[valName] === item)[label] || "");

+ 19 - 5
src/views/admin/dept/index.vue

@@ -83,7 +83,7 @@
83 83
           <el-row>
84 84
             <el-col :span="24">
85 85
               <el-form-item label="部门类型" prop="deptType">
86
-                <el-select v-model="form.deptType" clearable>
86
+                <el-select v-model="form.deptType" clearable @change="deptTypeChange">
87 87
                   <el-option v-for="item in dept_type" :key="item.value" :label="item.label" :value="item.value" />
88 88
                 </el-select>
89 89
               </el-form-item>
@@ -159,7 +159,7 @@
159 159
 </template>
160 160
 
161 161
 <script setup lang="ts">
162
-import { ref } from "vue";
162
+import { nextTick, ref } from "vue";
163 163
 import { ElMessage, ElMessageBox } from "element-plus";
164 164
 import type { FormInstance, FormRules } from "element-plus";
165 165
 import { Search, EditPen, Plus, Edit, Delete } from "@element-plus/icons-vue";
@@ -200,7 +200,6 @@ const formRules = ref<FormRules>({
200 200
   parentId: [{ required: true, message: "上级部门不能为空", trigger: "change" }],
201 201
   name: [{ required: true, message: "部门名称不能为空", trigger: "blur" }],
202 202
   deptType: [{ required: true, message: "部门类型不能为空", trigger: "change" }],
203
-  warehouseType: [{ required: true, message: "仓库类型不能为空", trigger: "change" }],
204 203
   sortOrder: [{ required: true, message: "请选择排序", trigger: "blur" }]
205 204
 });
206 205
 const deptOptions = ref<any>([]); // 部门目录
@@ -226,6 +225,22 @@ const getList = () => {
226 225
 
227 226
 getList();
228 227
 
228
+//
229
+const deptTypeChange = (val: string) => {
230
+  if (val === "3") {
231
+    formRules.value.warehouseType = [{ required: true, message: "仓库类型不能为空", trigger: "change" }];
232
+    formRules.value.longitude = [{ required: true, message: "经度不能为空", trigger: "blur" }];
233
+    formRules.value.dimension = [{ required: true, message: "维度不能为空", trigger: "blur" }];
234
+  } else {
235
+    formRules.value.warehouseType = [];
236
+    formRules.value.longitude = [];
237
+    formRules.value.dimension = [];
238
+  }
239
+  nextTick(() => {
240
+    formRef.value?.clearValidate();
241
+  });
242
+};
243
+
229 244
 // 添加/查看/编辑 列表数据
230 245
 const addOrUpdateHandle = (isEdit: boolean, id?: string) => {
231 246
   // 获取菜单信息
@@ -238,7 +253,6 @@ const addOrUpdateHandle = (isEdit: boolean, id?: string) => {
238 253
     getDeptObj(id).then((res: any) => {
239 254
       if (res.code === 0) {
240 255
         form.value = res.data;
241
-        form.value.parentId = Number(form.value.parentId);
242 256
         form.value.warehouseType = JSON.parse(form.value.warehouseType);
243 257
       }
244 258
     });
@@ -340,7 +354,7 @@ const clearDialogData = () => {
340 354
     dimension: "",
341 355
     warehouseType: []
342 356
   };
343
-  formRef.value?.resetFields();
357
+  formRef.value?.clearValidate();
344 358
 };
345 359
 </script>
346 360
 

+ 2 - 2
src/views/admin/dict/index.vue

@@ -391,7 +391,7 @@ const clearDialogData = () => {
391 391
     createTime: ""
392 392
   };
393 393
   roleFormDisabled.value = false;
394
-  dictRef.value?.resetFields();
394
+  dictRef.value?.clearValidate();
395 395
 };
396 396
 
397 397
 // 打开字典项弹窗
@@ -492,7 +492,7 @@ const clearItemDialog = () => {
492 492
     sortOrder: 1,
493 493
     remarks: ""
494 494
   };
495
-  dictItemRef.value?.resetFields;
495
+  dictItemRef.value?.clearValidate;
496 496
   dictItemCreate.value = false;
497 497
   getDictItem();
498 498
 };

+ 1 - 1
src/views/admin/menu/index.vue

@@ -281,7 +281,7 @@ const clearDialogData = () => {
281 281
     sortOrder: 999,
282 282
     keepAlive: "1"
283 283
   };
284
-  formRef.value?.resetFields();
284
+  formRef.value?.clearValidate();
285 285
   dialogVisible.value = false;
286 286
   getList();
287 287
 };

+ 1 - 1
src/views/admin/role/index.vue

@@ -359,7 +359,7 @@ const clearDialogData = () => {
359 359
     createTime: ""
360 360
   };
361 361
   roleFormDisabled.value = false;
362
-  roleRef.value?.resetFields();
362
+  roleRef.value?.clearValidate();
363 363
 };
364 364
 
365 365
 // 遍历取出数组ID

+ 1 - 1
src/views/admin/user/index.vue

@@ -441,7 +441,7 @@ const clearDialogForm = () => {
441 441
     lockFlag: "",
442 442
     role: []
443 443
   };
444
-  dialogFormRef.value?.resetFields();
444
+  dialogFormRef.value?.clearValidate();
445 445
   dialogVisible.value = false;
446 446
   getList();
447 447
 };