Browse Source

Merge branch 'dev' into 'test'

Dev

See merge request quanshu/mp-ui-pc!36
hunagwb 3 years ago
parent
commit
beeb2c928d
3 changed files with 123 additions and 37 deletions
  1. 38 35
      public/jump.html
  2. 25 0
      src/api/business/ticket.js
  3. 60 2
      src/views/business/ticket/import.vue

+ 38 - 35
public/jump.html

@@ -7,38 +7,40 @@
 
 
   <script>
   <script>
     function docReady(fn) {
     function docReady(fn) {
-        if (document.readyState === 'complete' || document.readyState === 'interactive') {
-          fn()
-        } else {
-          document.addEventListener('DOMContentLoaded', fn);
-        }
+      if (document.readyState === 'complete' || document.readyState === 'interactive') {
+        fn()
+      } else {
+        document.addEventListener('DOMContentLoaded', fn);
       }
       }
+    }
 
 
-      docReady(async function() {
-        var ua = navigator.userAgent.toLowerCase()
-        var isWXWork = ua.match(/wxwork/i) == 'wxwork'
-        var isWeixin = !isWXWork && ua.match(/micromessenger/i) == 'micromessenger'
-        var isMobile = false
-        var isDesktop = false
-        if (navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {
-          isMobile = true
-        } else {
-          isDesktop = true
-        }
+    docReady(async function () {
+      var ua = navigator.userAgent.toLowerCase()
+      var isWXWork = ua.match(/wxwork/i) == 'wxwork'
+      var isWeixin = !isWXWork && ua.match(/micromessenger/i) == 'micromessenger'
+      var isMobile = false
+      var isDesktop = false
+      if (navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {
+        isMobile = true
+      } else {
+        isDesktop = true
+      }
 
 
-        var containerEl = document.getElementById('container')
-
-        if (isWeixin) {
-          console.log('111', 111)
-          containerEl.innerHTML = '微信'
-        } else if (isDesktop) {
-         console.log('222', 222)
-         containerEl.innerHTML = '电脑'
-        }  else {
-          console.log('333', 333)
-          containerEl.innerHTML = '其他'
-        }
-      })
+      var container = document.getElementById('container')
+      var wx = document.getElementById('container-wx')
+      var tip = document.getElementById('container-tip')
+
+      if (isWeixin) {
+        container.innerHTML = '打开微信小程序'
+        tip.innerHTML = '点击以下按钮打开 “盲票小程序”'
+        wx.style.display = "none";
+      } else {
+        container.style.display = "none";
+        wx.style.display = "inline";
+        wx.innerHTML = '打开微信'
+        tip.innerHTML = '请使用微信扫描当前二维码'
+      }
+    })
 
 
     function ajax(options) {
     function ajax(options) {
       return new Promise((resolve, reject) => {
       return new Promise((resolve, reject) => {
@@ -86,13 +88,16 @@
         console.log(data)
         console.log(data)
         window.location.href = "weixin://";
         window.location.href = "weixin://";
       })
       })
+    }
 
 
+    function openWx() {
+      window.location.href = "weixin://";
     }
     }
   </script>
   </script>
   <style>
   <style>
     .skip-wrap {
     .skip-wrap {
-      height: 100vh;
       width: 100%;
       width: 100%;
+      height: 100%;
       position: relative;
       position: relative;
     }
     }
 
 
@@ -142,12 +147,10 @@
 
 
 <body>
 <body>
   <div class="skip-wrap">
   <div class="skip-wrap">
-    <div class="skip-theme">
-      <div class="skip-theme-iamge">logo</div>
-      <div class="skip-theme-txt">小程序</div>
-    </div>
+    <div class="skip-theme" id="container-tip"></div>
     <div class="skip-btn">
     <div class="skip-btn">
-      <p onclick="openWeapp()" id="container">打开微信小程序</p>
+      <p onclick="openWeapp()" id="container"></p>
+      <p onclick="openWx()" id="container-wx"></p>
     </div>
     </div>
   </div>
   </div>
 </body>
 </body>

+ 25 - 0
src/api/business/ticket.js

@@ -36,3 +36,28 @@ export function exportTicket(data) {
     data
     data
   })
   })
 }
 }
+// 下载批量导入模板
+export function importTemplate(){
+  return request({
+    url: '/api/v1/mp/admin/ticket/box/importTemplate',
+    method: 'get'
+  })
+}
+
+
+// 批量导入
+export function importTicket(data, config = {}){
+  var formData  = new FormData()
+  Object.keys(data).forEach(key => {
+    formData.append(key, data[key])
+  })
+  return request({
+    url: '/api/v1/mp/admin/ticket/box/importTicket',
+    method: 'post',
+    data: formData ,
+    ...config,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}

+ 60 - 2
src/views/business/ticket/import.vue

@@ -12,10 +12,13 @@
        :limit="1"
        :limit="1"
        accept=".xlsx, .xls"
        accept=".xlsx, .xls"
        :headers="upload.headers"
        :headers="upload.headers"
+       :data="reqData"
        :action="upload.url"
        :action="upload.url"
        :disabled="upload.isUploading"
        :disabled="upload.isUploading"
+       :before-upload="handleBeforeUpload"
        :on-progress="handleFileUploadProgress"
        :on-progress="handleFileUploadProgress"
        :on-success="handleFileSuccess"
        :on-success="handleFileSuccess"
+       :http-request="reqUploadFile"
        :auto-upload="false"
        :auto-upload="false"
        drag
        drag
      >
      >
@@ -38,7 +41,9 @@
 <script>
 <script>
 
 
 import { mapGetters } from 'vuex'
 import { mapGetters } from 'vuex'
-import { getToken } from "@/utils/auth";
+import { getToken, getSign } from "@/utils/auth"
+import { randomStr20 } from '@/utils/util'
+import { importTicket, importTemplate} from "@/api/business/ticket";
 export default {
 export default {
   props: {
   props: {
     dialogVisible: {
     dialogVisible: {
@@ -52,7 +57,7 @@ export default {
       loading: false,
       loading: false,
       // 表单参数
       // 表单参数
       form: {},
       form: {},
-      detail: {},
+      reqData: {},
       // 盲票导入参数
       // 盲票导入参数
       upload: {
       upload: {
         // 是否显示弹出层(盲票导入)
         // 是否显示弹出层(盲票导入)
@@ -96,8 +101,19 @@ export default {
 
 
   methods: {
   methods: {
 
 
+    // 上传前loading加载
+    handleBeforeUpload(file) {
+      this.getHttpHeader()
+      this.vloading = this.$loading({
+        lock: true,
+        text: "正在导入.....",
+        background: "rgba(0, 0, 0, 0.7)",
+      });
+    },
+
     /** 下载模板操作 */
     /** 下载模板操作 */
     importTemplate() {
     importTemplate() {
+      console.log("importTemplate ====================")
       importTemplate().then(response => {
       importTemplate().then(response => {
         this.download(response.msg);
         this.download(response.msg);
       });
       });
@@ -119,6 +135,48 @@ export default {
       this.$refs.upload.submit();
       this.$refs.upload.submit();
     },
     },
 
 
+    // 自定义文件上传的实现
+    reqUploadFile(param) {
+      var data = this.reqData || {}
+      var params = {
+        file: param.file,
+        ...data
+      }
+      importTicket(params, this.headers).then(response => {
+       //  console.log("importTicket============ response.msg"+response.msg)
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        // this.$emit('saveSuccess')
+        this.vloading.close();
+        this.close()
+
+      }).catch(response => {
+        console.log("导入 shibia==========")
+        this.upload.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.vloading.close();
+        //param.onError()
+      })
+    },
+
+    // 请求头
+    getHttpHeader() {
+      let timestamp = parseInt(new Date().getTime()),
+        nonce = randomStr20();
+      var sign = getSign(this.reqData || {}, timestamp)
+      let url = this.uploadImgUrl + '?sign=' + sign + '&nonce=' + nonce;
+      this.fileSaveUrl = url
+      var headers = {
+        "Authorization": "Bearer " + getToken(),
+        "x-zz-timestamp": timestamp
+      }
+      this.headers = headers
+    },
+
     /**
     /**
      * 关闭窗口
      * 关闭窗口
      */
      */