mo 2 years ago
parent
commit
4a639abc8c

+ 4 - 0
index.html

@@ -6,6 +6,7 @@
     <title>酷乐秀-商城</title>
     <!-- Global site tag (gtag.js) - Google Analytics -->
     <script async src="https://www.googletagmanager.com/gtag/js?id=UA-144208445-2"></script>
+
     <script>
       window.dataLayer = window.dataLayer || [];
       function gtag(){dataLayer.push(arguments);}
@@ -22,10 +23,13 @@
         s.parentNode.insertBefore(hm, s);
       })();
     </script>
+        <script  src="./static/ks3jssdk/plupload.full.min.js"></script>
+        <script  src="./static/ks3jssdk/ks3jssdk.min.js"></script>
   </head>
   <body>
     <!--<script src="./static/tinymce4.7.5/tinymce.min.js"></script>-->
     <script src="https://unpkg.com/tinymce@4.7.5/tinymce.min.js"></script>
+
     <div id="app"></div>
     <!-- built files will be auto injected -->
   </body>

+ 70 - 6
package-lock.json

@@ -1297,6 +1297,14 @@
         "qs": "6.5.1",
         "raw-body": "2.3.2",
         "type-is": "~1.6.15"
+      },
+      "dependencies": {
+        "qs": {
+          "version": "6.5.1",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+          "dev": true
+        }
       }
     },
     "bonjour": {
@@ -1537,6 +1545,15 @@
         "unset-value": "^1.0.0"
       }
     },
+    "call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
     "camel-case": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
@@ -3300,6 +3317,12 @@
         "vary": "~1.1.2"
       },
       "dependencies": {
+        "qs": {
+          "version": "6.5.1",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
+          "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
+          "dev": true
+        },
         "safe-buffer": {
           "version": "5.1.1",
           "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
@@ -4277,8 +4300,7 @@
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-      "dev": true
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
     },
     "gauge": {
       "version": "2.7.4",
@@ -4333,6 +4355,26 @@
       "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
       "dev": true
     },
+    "get-intrinsic": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      },
+      "dependencies": {
+        "has": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+          "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+          "requires": {
+            "function-bind": "^1.1.1"
+          }
+        }
+      }
+    },
     "get-stdin": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
@@ -4565,6 +4607,11 @@
       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
       "dev": true
     },
+    "has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+    },
     "has-unicode": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
@@ -6411,6 +6458,11 @@
         }
       }
     },
+    "object-inspect": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
+      "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
+    },
     "object-keys": {
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
@@ -9103,10 +9155,12 @@
       "dev": true
     },
     "qs": {
-      "version": "6.5.1",
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
-      "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
-      "dev": true
+      "version": "6.10.3",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+      "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+      "requires": {
+        "side-channel": "^1.0.4"
+      }
     },
     "query-string": {
       "version": "4.3.4",
@@ -10067,6 +10121,16 @@
       "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==",
       "dev": true
     },
+    "side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "requires": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      }
+    },
     "signal-exit": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",

+ 1 - 0
package.json

@@ -16,6 +16,7 @@
     "js-cookie": "^2.2.0",
     "normalize.css": "^8.0.0",
     "nprogress": "^0.2.0",
+    "qs": "^6.10.3",
     "v-charts": "^1.19.0",
     "v-distpicker": "^1.0.20",
     "vue": "^2.5.2",

+ 6 - 3
src/api/oss.js

@@ -1,7 +1,10 @@
 import request from '@/utils/request'
-export function policy() {
+import qs from 'qs'
+export function policy(data) {
   return request({
-    url:'/aliyun/oss/policy',
-    method:'get',
+    url:'/api-admin/getUploadSign',
+    method:'POST',
+    headers: { 'Content-Type': 'application/json' },
+    data
   })
 }

+ 113 - 87
src/components/Upload/singleUpload.vue

@@ -1,122 +1,148 @@
-<template> 
+<template>
+   
   <div>
     <el-upload
       :action="ossUploadUrl"
-      :data="useOss?dataObj:null"
+      :data="useOss ? dataObj : null"
       list-type="picture"
-      :multiple="false" :show-file-list="showFileList"
+      :multiple="false"
+      :show-file-list="showFileList"
       :file-list="fileList"
       :before-upload="beforeUpload"
       :on-remove="handleRemove"
       :on-success="handleUploadSuccess"
-      :on-preview="handlePreview">
+      :on-preview="handlePreview"
+    >
       <el-button size="small" type="primary">点击上传</el-button>
-      <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过10MB</div>
+      <div slot="tip" class="el-upload__tip">
+        只能上传jpg/png文件,且不超过10MB
+      </div>
     </el-upload>
     <el-dialog :visible.sync="dialogVisible">
-      <img width="100%" :src="fileList[0].url" alt="">
+      <img width="100%" :src="fileList[0].url" alt="" />
     </el-dialog>
   </div>
 </template>
 <script>
-  import {policy} from '@/api/oss'
-
-  export default {
-    name: 'singleUpload',
-    props: {
-      value: String
+import { policy } from "@/api/oss";
+export default {
+  name: "singleUpload",
+  props: {
+    value: String,
+  },
+  computed: {
+    imageUrl() {
+      return this.value;
     },
-    computed: {
-      imageUrl() {
-        return this.value;
-      },
-      imageName() {
-        if (this.value != null && this.value !== '') {
-          return this.value.substr(this.value.lastIndexOf("/") + 1);
-        } else {
-          return null;
-        }
-      },
-      fileList() {
-        return [{
-          name: this.imageName,
-          url: this.imageUrl
-        }]
-      },
-      showFileList: {
-        get: function () {
-          return this.value !== null && this.value !== ''&& this.value!==undefined;
-        },
-        set: function (newValue) {
-        }
+    imageName() {
+      if (this.value != null && this.value !== "") {
+        return this.value.substr(this.value.lastIndexOf("/") + 1);
+      } else {
+        return null;
       }
     },
-    data() {
-      return {
-        dataObj: {
-          policy: '',
-          signature: '',
-          key: '',
-          ossaccessKeyId: '',
-          dir: '',
-          host: '',
-          // callback:'',
+    fileList() {
+      return [
+        {
+          name: this.imageName,
+          url: this.imageUrl,
         },
-        dialogVisible: false,
-        useOss:true, //使用oss->true;使用MinIO->false
-        ossUploadUrl:'http://daya-online.oss-cn-beijing.aliyuncs.com',
-        minioUploadUrl:'http://localhost:8080/minio/upload',
-      };
+      ];
     },
-    methods: {
-      emitInput(val) {
-        this.$emit('input', val)
+    showFileList: {
+      get: function () {
+        return (
+          this.value !== null && this.value !== "" && this.value !== undefined
+        );
       },
-      handleRemove(file, fileList) {
-        this.emitInput('');
-      },
-      handlePreview(file) {
-        this.dialogVisible = true;
+      set: function (newValue) {},
+    },
+  },
+  data() {
+    return {
+      dataObj: {
+        policy: "",
+        signature: "",
+        key: "",
+        ossaccessKeyId: "",
+        dir: "",
+        host: "",
+        // callback:'',
       },
-      beforeUpload(file) {
-        let _self = this;
-        if(!this.useOss){
-          //不使用oss不需要获取策略
-          return true;
-        }
-        return new Promise((resolve, reject) => {
-          policy().then(response => {
+      dialogVisible: false,
+      useOss: true, //使用oss->true;使用MinIO->false
+      ossUploadUrl: "http://daya.ks3-cn-beijing.ksyuncs.com",
+      minioUploadUrl: "http://localhost:8080/minio/upload",
+    };
+  },
+  methods: {
+    emitInput(val) {
+      this.$emit("input", val);
+    },
+    handleRemove(file, fileList) {
+      this.emitInput("");
+    },
+    handlePreview(file) {
+      this.dialogVisible = true;
+    },
+    beforeUpload(file) {
+      let _self = this;
+      if (!this.useOss) {
+        //不使用oss不需要获取策略
+        return true;
+      }
+      console.log(file);
+
+      return new Promise((resolve, reject) => {
+        let key = new Date().getTime()+file.name
+        policy({fileName:file.name,postData:{ "acl":"public-read","key":key,unknowValueField:[]}})
+          .then((response) => {
             _self.dataObj.policy = response.data.policy;
             _self.dataObj.signature = response.data.signature;
             _self.dataObj.ossaccessKeyId = response.data.accessKeyId;
-            _self.dataObj.key = response.data.dir + '/${filename}';
+            _self.dataObj.key = response.data.dir + "/${filename}";
             _self.dataObj.dir = response.data.dir;
             _self.dataObj.host = response.data.host;
             // _self.dataObj.callback = response.data.callback;
-            resolve(true)
-          }).catch(err => {
-            console.log(err)
-            reject(false)
+            var ks3Options = {
+              KSSAccessKeyId: response.data.kssAccessKeyId,
+              policy: response.data.policy,
+              signature: response.data.signature,
+              bucket_name: "daya",
+              key: key,
+              acl: "public-read", //此处需要与policy中的acl值保持一致,默认值:private。
+              uploadDomain: "http://daya.ks3-cn-beijing.ksyuncs.com", //北京region
+              autoStart: false,
+            };
+            var pluploadOptions = {
+              drop_element: document.body,
+            };
+            var tempUpload = new ks3FileUploader(ks3Options, pluploadOptions);
+                   tempUpload.uploader.start()
+            resolve(true);
           })
-        })
-      },
-      handleUploadSuccess(res, file) {
-        console.log(res,file)
-        this.showFileList = true;
-        this.fileList.pop();
-        let url = this.dataObj.host + '/' + this.dataObj.dir + '/' + file.name;
-        if(!this.useOss){
-          //不使用oss直接获取图片路径
-          url = res.data.url;
-        }
-        this.fileList.push({name: file.name, url: url});
-        this.emitInput(this.fileList[0].url);
+          .catch((err) => {
+            console.log(err);
+            reject(false);
+          });
+      });
+    },
+    handleUploadSuccess(res, file) {
+      console.log(res, file);
+      this.showFileList = true;
+      this.fileList.pop();
+      let url = this.dataObj.host + "/" + this.dataObj.dir + "/" + file.name;
+      if (!this.useOss) {
+        //不使用oss直接获取图片路径
+        url = res.data.url;
       }
-    }
-  }
+      this.fileList.push({ name: file.name, url: url });
+      this.emitInput(this.fileList[0].url);
+    },
+  },
+};
 </script>
 <style>
-
 </style>
 
 

+ 5 - 2
src/utils/request.js

@@ -14,8 +14,11 @@ service.interceptors.request.use(config => {
   if (store.getters.token) {
     config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
   }
- config.url.indexOf('/api-mall-admin')== -1? config.url = '/api-mall-admin'+config.url:config.url
-
+  if(config.url.indexOf('/api-mall-admin')== -1){
+    if(config.url.indexOf('/api-admin')== -1){
+      config.url = '/api-mall-admin'+config.url
+    }
+  }
   return config
 }, error => {
   // Do something with request error

File diff suppressed because it is too large
+ 1 - 0
static/ks3jssdk/ks3jssdk.min.js


File diff suppressed because it is too large
+ 12 - 0
static/ks3jssdk/plupload.full.min.js


Some files were not shown because too many files changed in this diff