wenhongquan 1 year ago
parent
commit
3d0c5e221f

+ 1 - 0
package.json

@@ -20,6 +20,7 @@
         "@vue/babel-plugin-jsx": "^1.1.1",
         "axios": "0.26.1",
         "clipboard": "^2.0.11",
+        "compressorjs": "^1.2.1",
         "dingtalk-jsapi": "^2.15.2",
         "echarts": "^5.4.0",
         "element-plus": "2.1.8",

+ 16 - 0
src/api/system/config.js

@@ -95,3 +95,19 @@ export function getdata() {
   });
 }
 ;
+
+export function uploadImg(file) {
+   const form = new FormData();
+   form.append("file", file);
+   return request({
+    url: "/common/upload",
+    method: "post",
+    data: form,
+    headers: {
+      "Content-Type": "multipart/form-data",
+    },
+  });
+}
+;
+
+

+ 33 - 1
src/components/ImageUpload/index.vue

@@ -48,6 +48,8 @@
 
 <script setup>
 import { getToken } from "@/utils/auth";
+import Compressor from 'compressorjs';
+import {uploadImg} from "@/api/system/config";
 
 const props = defineProps({
   modelValue: [String, Object, Array],
@@ -116,7 +118,6 @@ function handleRemove(file, files) {
 // 上传成功回调
 function handleUploadSuccess(res) {
   uploadList.value.push({ name: res.fileName, url: res.fileName });
-  debugger
   if (uploadList.value.length === number.value) {
     fileList.value = fileList.value.filter(f => f.url !== undefined).concat(uploadList.value);
     uploadList.value = [];
@@ -155,10 +156,38 @@ function handleBeforeUpload(file) {
       return false;
     }
   }
+
+
+
+    // 执行上传
   proxy.$modal.loading("正在上传图片,请稍候...");
   number.value++;
+
+  return new Promise((resolve,reject) => {
+
+    new Compressor(file, {
+      quality:  file.size>1024*1024*1?0.6:1, // 压缩质量
+      success: (result) => {
+        // 替换原文件
+        file = result;
+        uploadImg(file).then(res => {
+          handleUploadSuccess(res);
+        });
+
+        reject("sssss")
+        // resolve(result);
+      },
+      error: (err) => {
+        console.log(err.message);
+      },
+    });
+  });
 }
 
+
+
+
+
 // 文件个数超出
 function handleExceed() {
   proxy.$modal.msgError(`上传文件数量不能超过 ${props.limit} 个!`);
@@ -187,6 +216,9 @@ function listToString(list, separator) {
   }
   return strs != "" ? strs.substr(0, strs.length - 1) : "";
 }
+
+
+
 </script>
 <style>
 .el-upload-dragger{

+ 34 - 28
src/directive/permission/hasPermi.js

@@ -1,28 +1,34 @@
- /**
- * v-hasPermi 操作权限处理
- * Copyright (c) 2019 ruoyi
- */
- 
-import store from '@/store'
-
-export default {
-  mounted(el, binding, vnode) {
-    const { value } = binding
-    const all_permission = "*:*:*";
-    const permissions = store.getters && store.getters.permissions
-
-    if (value && value instanceof Array && value.length > 0) {
-      const permissionFlag = value
-
-      const hasPermissions = permissions.some(permission => {
-        return all_permission === permission || permissionFlag.includes(permission)
-      })
-
-      if (!hasPermissions) {
-        el.parentNode && el.parentNode.removeChild(el)
-      }
-    } else {
-      throw new Error(`请设置操作权限标签值`)
-    }
-  }
-}
+ /**
+ * v-hasPermi 操作权限处理
+ * Copyright (c) 2019 ruoyi
+ */
+
+import store from '@/store'
+
+export default {
+  mounted(el, binding, vnode) {
+    const { value } = binding
+    const all_permission = "*:*:*";
+    const permissions = store.getters && store.getters.permissions
+
+    console.log(permissions);
+
+    if (value && value instanceof Array && value.length > 0) {
+      const permissionFlag = value
+
+      const hasPermissions = permissions.some(permission => {
+
+        return all_permission === permission || permissionFlag.includes(permission)
+      })
+
+// debugger;
+      if (!hasPermissions) {
+
+        el.parentNode && el.parentNode.removeChild(el)
+      }
+    } else {
+      throw new Error(`请设置操作权限标签值`)
+    }
+
+  }
+}

+ 10 - 5
src/utils/request.js

@@ -54,12 +54,17 @@ service.interceptors.request.use(config => {
             const s_data = sessionObj.data; // 请求数据
             const s_time = sessionObj.time; // 请求时间
             const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
-            if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
-                const message = '数据正在处理,请勿重复提交';
-                console.warn(`[${s_url}]: ` + message)
-                return Promise.reject(new Error(message))
+            if (
+              s_data === requestObj.data &&
+              requestObj.time - s_time < interval &&
+              s_url === requestObj.url &&
+              requestObj.url?.indexOf("upload")==-1
+            ) {
+              const message = "数据正在处理,请勿重复提交";
+              console.warn(`[${s_url}]: ` + message);
+              return Promise.reject(new Error(message));
             } else {
-                cache.session.setJSON('sessionObj', requestObj)
+              cache.session.setJSON("sessionObj", requestObj);
             }
         }
     }

+ 9 - 2
src/views/task/detail/index.vue

@@ -911,7 +911,7 @@
       </template>
     </el-dialog>
 
-    <el-dialog v-model="showsh" title="任务审核" draggable>
+    <el-dialog v-model="showsh" v-loading="loading" title="任务审核" draggable>
       <div>
         <el-form :model="shobj" label-width="120px">
           <el-form-item label="审核人员">
@@ -951,7 +951,7 @@
         <span class="dialog-footer">
           <el-button @click="showsh = false">取消</el-button>
           <el-button type="danger" @click="TaskJJ">退回处置</el-button>
-          <el-button type="primary" @click="TaskSH">确定</el-button>
+          <el-button type="primary"  @click="TaskSH">确定</el-button>
         </span>
       </template>
     </el-dialog>
@@ -1491,7 +1491,11 @@ const TaskGZ = () => {
   });
 };
 
+const loading = ref(false);
+
 const TaskSH = () => {
+  if (loading.value) return;
+  loading.value = true;
   var gz = cloneDeep(shobj.value);
   if (gz.hctime) {
     gz.hctime = moment(gz.hctime).format("YYYY-MM-DD HH:mm:ss");
@@ -1500,9 +1504,12 @@ const TaskSH = () => {
     taskId: route.params.id,
     logDes: JSON.stringify(gz),
   }).then((res) => {
+    loading.value = false;
     showsh.value = false;
     ElMessage.success("成功!");
     gettasklist();
+  }).catch((err) => {
+    loading.value = false;
   });
 };
 

+ 6 - 1
src/views/task/list/index.vue

@@ -67,10 +67,15 @@
                 placeholder="请选择"
               >
                 <el-option
+                  label="全部区域"
+                  value=""
+                ></el-option>
+                <el-option
                   v-for="item in sys_area"
                   :label="item.label"
                   :value="item.value"
                 ></el-option>
+
               </el-select>
             </el-form-item>
           </el-col>
@@ -200,7 +205,7 @@
           <el-table-column
             prop="address"
             label="操作"
-            :width="currentstatus == 6 ? '400px' : ''"
+            :width="currentstatus == 6 ? '400px' : ''"   v-hasPermi="['task:list:operate']"
           >
             <template #default="scope">
               <el-button