import md5 from 'js-md5'
import cookie from '../assets/utils/cookie';
import co from 'co'
import OSS from 'ali-oss'
import MsgBus from '../assets/utils/msgBus'
import routerConfig from '../router/config';
export default {
  data: {
    loginUser: {},
    apiurl: ''
  },
  install(Vue, options) {
    Vue.prototype.MsgBus = MsgBus;
    Vue.prototype.md5 = md5;
    Vue.prototype.orderBy = function (source, orders, type) {
        if (
          source instanceof Array &&
          orders instanceof Array &&
          orders.length > 0
        ) {
          var ordersc = orders.concat([]);
          var sorttype = type || "asc";
          var results = [];
          var totalSum = {};
          function grouporder(source, orders, totalSum) {
            source.sort(function (a, b) {
              var convertA = a[orders[0]];
              var convertB = b[orders[0]];
              if (typeof convertA == "string" && typeof convertB == "string") {
                if (sorttype.toUpperCase() == "ASC") {
                  return convertA.localeCompare(convertB);
                } else {
                  return convertB.localeCompare(convertA);
                }
              } else {
                if (sorttype.toUpperCase() == "ASC") {
                  return convertA - convertB;
                } else {
                  return convertB - convertA;
                }
              }
            });
            var groupmap = new Map();
            source.forEach(item => {
              if (groupmap.has(item[orders[0]])) {
                groupmap.get(item[orders[0]]).push(item);
              } else {
                groupmap.set(item[orders[0]], []);
                groupmap.get(item[orders[0]]).push(item);
              }
            });
            orders.shift();
            for (let [key, val] of groupmap) {
              totalSum[key] = {};
              totalSum[key].name = key;
              totalSum[key].value = val.length;
              if (orders.length == 0) {
                results = results.concat(val);
              } else {
                totalSum[key].children = {};
                var orderscopy = orders.concat([]);
                grouporder(val, orderscopy, totalSum[key].children);
              }
            }
          }
          grouporder(source, ordersc, totalSum);
          return {
            results: results,
            totalSum: totalSum
          };
        } else {
          return source;
        }
      },

      Vue.prototype.calcPageSize = function (itemHeight) {
        let yuHeight = itemHeight
        try {
          let obj = null
          document.querySelectorAll('.frame-box').forEach(x => {
            if (x.style.display != 'none') {
              obj = x
            }
          })
          let dom = obj.offsetHeight
          yuHeight = dom - (obj.querySelector('.v-table-header') ? obj.querySelector('.v-table-header').offsetHeight : 39) - 50 //减去面包屑,减去表格头部,减去分页,减去偏量
          //减去其它同级元素
          obj.childNodes[0].childNodes.forEach(x => {
            if (x.className && x.className.indexOf('v-table-views') == -1) {
              yuHeight -= x.offsetHeight ? x.offsetHeight : 0
            }
          })
        } catch (error) {
        }
        return Math.floor(yuHeight / itemHeight)
      }
    Vue.prototype.random_string = function (len) {
        len = len || 32;
        var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
        var maxPos = chars.length;
        var pwd = '';
        for (let i = 0; i < len; i++) {
          pwd += chars.charAt(Math.floor(Math.random() * maxPos));
        }
        return pwd;
      },
      //是否是线上环境【发布时修改为true】
      Vue.prototype.isOnline = function () {
        return process.env.NODE_ENV !== 'development';
      },
      //域名管理对象
      Vue.prototype.domainManager = function () {
        let domainUrl = '';
            //domainUrl = "http://192.168.2.214:8082";
            //domainUrl = "http://192.168.2.65:8025";
           domainUrl = "http://192.168.2.16:8083";  // 吴春
        let locationName = window.location.hostname;

        let javaUrldo="";
        javaUrldo=locationName.indexOf('oytour') !== -1 || locationName.indexOf('viitto') !== -1 ? (locationName.indexOf('oytour') !== -1 ? "http://efficient.oytour.com" : "http://47.96.12.235:9001") : "http://192.168.2.215:9000";
        
        if (locationName.indexOf('testerp.oytour') !== -1) {
          domainUrl = "http://testapi.oytour.com";
        }
        else if (locationName.indexOf('oytour') !== -1) {
          domainUrl = "http://reborn.oytour.com";
        }  
        var obj = {
          //主地址
          DomainUrl: domainUrl,
          //常用提交数据URL
          PostUrl: domainUrl + "/api/common/post",
          //上传文件URL
          UploadFileUrl: domainUrl + '/api/File/post',
          //本站模板文件下载地址
          LocalTemplateFileDownLoadUrl: domainUrl,
          //酒店接口
          HotelApi: "http://reborn.oytour.com/api/common/post",
          //阿里服务器地址
          AliUrl: "https://reborndev.oss-cn-hangzhou.aliyuncs.com",
          //本站文件流下载地址
          LocalFileStreamDownLoadUrl: domainUrl + "/api/file/GetFileFromWebApi",
          //PDF文件预览地址
          PDFViewUrl: domainUrl + "/plug/pdf/web/viewer.html?file=",
          //SocketUrl
          WebSocketUrl: "ws://192.168.1.110:8080?account=",
          //google地图Url
          GoogleMapUrl: "http://ditu.google.cn/maps/api/js?key=AIzaSyAZ5MIfzicStzKbIkbI3RcBBeZBjQFKsp0&sensor=false&language=zh-CN",
          //google地图图片地址
          GoogleMapImageUrl: "http://super.oytour.com",
          //上传站点
          UploadUrl: locationName.indexOf('oytour') !== -1 || locationName.indexOf('viitto') !== -1 ? "http://upload.oytour.com" : "http://192.168.2.214:8120",
          //文件站点
          ViittoFileUrl: locationName.indexOf('oytour') !== -1 || locationName.indexOf('viitto') !== -1 ? "http://imgfile.oytour.com" : 'http://192.168.2.214:8130',
          javaUrl: locationName.indexOf('oytour') !== -1 || locationName.indexOf('viitto') !== -1 ? (locationName.indexOf('oytour') !== -1 ? "http://efficient.oytour.com" : "http://47.96.12.235:9001") : "http://192.168.2.215:9000",
         
          // javaUrl:"http://192.168.2.215:9000",
          //Java接口本站文件流下载地址
          JavaLocalFileStreamDownLoadUrl: javaUrldo,

        };
        return obj;
      },
      Vue.prototype.yinyanFn = function (url, successCall, faildCall) {
        this.$http.jsonp(url, )
          .then(res => {
            successCall(res)
          }, faildCall)
      },
      //消息成功提示
      Vue.prototype.Success = function (msg) {
        this.$message({
          message: msg,
          duration: 2000,
          type: "success"
        });
      },
      //错误提示
      Vue.prototype.Error = function (msg) {
        this.$message({
          message: msg,
          duration: 2000,
          type: "error"
        });
      },

      //一般提示
      Vue.prototype.Info = function (msg) {
        this.$message({
          message: msg,
          duration: 2000,
          type: "info"
        });
      },
      //警告提示
      Vue.prototype.Warning = function (msg) {
        this.$message({
          message: msg,
          duration: 2000,
          type: "warning"
        });
      },
      //Confirm
      Vue.prototype.Confirm = function (msg, callback) {
        this.$confirm(msg, "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            if (typeof callback === 'function') {
              callback();
            }
          })
          .catch(() => {
            this.Info("已取消操作");
          });
      },
      //打开新窗口连接
      Vue.prototype.OpenNewUrl = function (URL) {
        if (URL != '') {
          if (URL.indexOf("https") != -1) {
            var str = 'http://' + URL.substring(8);
            window.open(str, '_blank');
          } else if (URL.indexOf("http") != -1) {
            var str = 'http://' + URL.substring(7);
            window.open(str, '_blank');
          } else {
            window.open("http://" + URL, '_blank');
          }
        }
      }

    //HTTP提交数据
    Vue.prototype.apipost = function (cmd, msg, successCall, faildCall, isOnline) {
        if (this.$route.name.indexOf('login') === -1  && this.$route.name.indexOf('clientConfirm') === -1 && this.$route.name.indexOf('confirmationOrderDownLoad') === -1 && this.$route.name.indexOf('PrintPage') === -1) {
          
          let previousPathInfo = {
            path: this.$route.name,
            query: this.$route.query
          }
          localStorage.previousPathInfo = JSON.stringify(previousPathInfo);
        }

        if (msg == null || msg == "") {
          msg = {}
        }
        var apiurl = this.domainManager().PostUrl;
        //酒店接口
        if (isOnline) {
          apiurl = this.domainManager().HotelApi;
        }
        var timestamp = (new Date()).valueOf();
        this.apiurl = apiurl;
        if (this.$route.path.toLowerCase() == "/signature") {
          this.$router.push({
            path: '/signature'
          })
        }
        else if (this.$route.path == "/clientConfirm") {
          let TCID=this.$route.query.TCID;
          let orderID=this.$route.query.orderID;
          this.$router.push({ name: "clientConfirm",query: {TCID:TCID,orderID:orderID}}) 
        } else {
          if (!localStorage.userInfo && localStorage.userInfo != "" && this.$route.path.toLowerCase() != "/login") {
            this.$router.push({
              path: '/login'
            })
          }
        }
        var token = "";
        var key = "";
        if (this.getLocalStorage() != null) {
          token = this.getLocalStorage().token;
          key = this.getLocalStorage().SecretKey;
        }
        var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
        var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
        let tempLanguage=0;
        if(localStorage.language && localStorage.language!=''){
          if(localStorage.language=="zh-TW"){
            tempLanguage=1;
          }else if(localStorage.language=="Japanese"){
            tempLanguage=2;
          }
        }
        var postData = {
          "msg": msg,
          "cmd": cmd,
          "timestamp": timestamp,
          "token": token,
          "sign": md5Str,
          "languageId":tempLanguage
        }
        this.$http.post(apiurl, postData, {
            headers: {
              'Content-Type': 'application/json',
              'Referer-Viitto': this.$route.path
            }
          })
          .then(res => {
            if (res.data.resultCode == 10000 || res.data.resultCode == 10001) {
              this.$router.push({
                path: '/login'
              });
            } else if (res.resultCode == 10005) {
              this.$router.go(-1);
            } else {
              successCall(res);
            }
          }, faildCall)
      },

      //供应商版请求接口方法
      Vue.prototype.ApiPost2 = function (cmd, msg, successCall, faildCall) {
        if (msg == null || msg == "") {
          msg = {}
        }
        var apiNewurl = this.domainManager().PostUrl;
        var timestamp = (new Date()).valueOf();
        var uid = 0;
        if (this.getLocalStorageSupplier()) {
          uid = this.getLocalStorageSupplier().SupplierAccountId;
        } else {
          this.$router.push({
            path: '/SupplierLogin'
          })
        }
        var token = "";
        var key = "";
        if (this.getLocalStorageSupplier() != null) {
          token = this.getLocalStorageSupplier().Token;
          key = this.getLocalStorageSupplier().SecretKey;
        }
        var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
        var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
        var postData = {
          "msg": msg,
          "cmd": cmd,
          "timestamp": timestamp,
          "token": token,
          "sign": md5Str,
          "uid": uid
        }
        this.$http.post(apiNewurl, postData, {
            headers: {
              'Content-Type': 'application/json',
              'Referer-Viitto': this.$route.path
            }
          })
          .then(res => {
            if (res.data.resultCode == 10000 || res.data.resultCode == 10001) {
              this.$router.push({
                path: '/SupplierLogin'
              });
            } else {
              successCall(res);
            }
          }, faildCall)
      },
      
      //请求Java接口
      Vue.prototype.apiJavaPost = function (cmd, msg, successCall, faildCall) {
        if (this.$route.name.indexOf('login') === -1 && this.$route.name.indexOf('confirmationOrderDownLoad') === -1 && this.$route.name.indexOf('PrintPage') === -1 && this.$route.name.indexOf('clientConfirm') === -1) {
         
          let previousPathInfo = {
            path: this.$route.name,
            query: this.$route.query
          }
          localStorage.previousPathInfo = JSON.stringify(previousPathInfo);
        }
        if (msg == null || msg == "") {
          msg = {}
        }
        var apiurl = this.domainManager().javaUrl + cmd;
        var timestamp = (new Date()).valueOf();
        this.apiurl = apiurl;
        var token = "";
        var key = "";
        let userInfo = localStorage.userInfo ? JSON.parse(localStorage.userInfo) : '';
        let groupId = userInfo.RB_Group_id ? userInfo.RB_Group_id : 0;
        let uid = userInfo.EmployeeId ? userInfo.EmployeeId : 0;
        if (this.getLocalStorage() != null) {
          token = this.getLocalStorage().token;
          key = this.getLocalStorage().SecretKey;
        }
        var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
        var md5Str = md5(`msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
        var postData = {
          "msg": msg,
          "timestamp": timestamp,
          "token": token,
          "sign": md5Str,
          "uid": uid,
          "groupId": groupId
        }
        if (localStorage.g && localStorage.g != 'undefined') {
          postData.groupId = parseInt(JSON.parse(localStorage.g).i)
        }
        this.$http.post(apiurl, postData, {
            headers: {
              'Content-Type': 'application/json',
              'Referer-Viitto': this.$route.path
            }
          })
          .then(res => {
            if (res.resultCode == 10000 || res.resultCode == 10001) {
              this.$router.push({
                path: '/login'
              })
            } else if (res.resultCode == 10005) {
              this.$router.go(-1)
            } else if (res.data.data.isJumpTwoCode == 1) {
              this.$router.push({
                path: '/clientConfirm'
              })
            } else {
              successCall(res)
            }
          }, faildCall)
      },

      //下载文件
      Vue.prototype.GetLocalFile = function (cmd, msg, fileName, successCall) {
        var apiurl = this.domainManager().LocalFileStreamDownLoadUrl;
        var timestamp = (new Date()).valueOf();
        if (!localStorage.userInfo && localStorage.userInfo != "" && this.$route.path.toLowerCase() != "/login") {
          this.$router.push({
            path: '/login'
          })
        }
        var token = "";
        var key = "";
        if (this.getLocalStorage() != null) {
          token = this.getLocalStorage().token;
          key = this.getLocalStorage().SecretKey;
        }
        var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
        var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
        var postData = {
          "msg": msg,
          "cmd": cmd,
          "timestamp": timestamp,
          "token": token,
          "sign": md5Str
        }
        this.$http.post(apiurl, postData, {
          responseType: 'arraybuffer'
        }).then((res) => {
          let blob = new Blob([res.data], {
            type: "application/vnd.ms-excel"
          })
          let url = URL.createObjectURL(blob);
          let link = document.createElement('a');
          link.href = url;
          link.setAttribute("download", fileName);
          document.body.appendChild(link);
          link.click();
          successCall(res);
        }).catch(function (res) {});
      },
      Vue.prototype.JavaGetLocalFile = function (cmd, msg, fileName, successCall) {
        var apiurl = this.domainManager().JavaLocalFileStreamDownLoadUrl + cmd;
        var timestamp = (new Date()).valueOf();
        if (!localStorage.userInfo && localStorage.userInfo != "" && this.$route.path.toLowerCase() != "/login") {
          this.$router.push({
            path: '/login'
          })
        }
        var token = "";
        var key = "";
        if (this.getLocalStorage() != null) {
          token = this.getLocalStorage().token;
          key = this.getLocalStorage().SecretKey;
        }
        let userInfo = localStorage.userInfo ? JSON.parse(localStorage.userInfo) : '';
        let groupId = userInfo.RB_Group_id ? userInfo.RB_Group_id : 0;        
        let uid = userInfo.EmployeeId ? userInfo.EmployeeId : 0;
        var encodeMsg = encodeURIComponent(JSON.stringify(msg)).toLowerCase();
        // var md5Str = md5(`cmd=${cmd}&msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
        var md5Str = md5(`msg=${encodeMsg}&timestamp=${timestamp}&token=${token}&key=${key}`);
        var postData = {
          "msg": msg,
          "timestamp": timestamp,
          "token": token,
          "sign": md5Str,
          "uid": uid,
          "groupId": groupId
        }
        // var postData = {
        //   "msg": msg,
        //   "cmd": cmd,
        //   "timestamp": timestamp,
        //   "token": token,
        //   "sign": md5Str
        // }
        this.$http.post(apiurl, postData, {
          responseType: 'arraybuffer'
        }).then((res) => {
          let blob = new Blob([res.data], {
            type: "application/vnd.ms-excel"
          })
          let url = URL.createObjectURL(blob);
          let link = document.createElement('a');
          link.href = url;
          link.setAttribute("download", fileName);
          document.body.appendChild(link);
          link.click();
          successCall(res);
        }).catch(function (res) {});
      },
      //ERP本地缓存
      Vue.prototype.getLocalStorage = function () {
        var localStorageData = window.localStorage["userInfo"];
        if (localStorageData !== undefined && localStorageData != 'undefined') {
          return JSON.parse(localStorageData);
        } else {
          return null;
        }
      },
      //供应商本地缓存
      Vue.prototype.getLocalStorageSupplier = function () {
        var localStorageData = window.localStorage["userInfo"];
        if (localStorageData !== undefined && localStorageData != 'userInfo') {
          return JSON.parse(localStorageData);
        } else {
          return null;
        }
      },

      //PDF预览
      Vue.prototype.previewPDF = function (url) {
        // window.open(this.domainManager().PDFViewUrl + url);
        window.open(url);
      },
      //文件下载
      Vue.prototype.downloadFile = function (objectKey) {
        var co = require('co');
        var OSS = require('ali-oss');
        var oss = new OSS({
          region: 'oss-cn-hangzhou',
          accessKeyId: 'LTAIwE7l9dImZSa3',
          accessKeySecret: 'j47Ajn0d0WzUCIX8Biyj3P2r8QDltI',
          bucket: 'reborndev'
        })
        let url = oss.signatureUrl(objectKey);
        let link = document.createElement('a');
        link.href = url;
        document.body.appendChild(link);
        link.click();
      },
      //文件重命名下载
      Vue.prototype.downloadFileRename = function (objectKey, filename, fileurl) {
        var co = require('co');
        var OSS = require('ali-oss');
        var oss = new OSS({
          region: 'oss-cn-hangzhou',
          accessKeyId: 'LTAIwE7l9dImZSa3',
          accessKeySecret: 'j47Ajn0d0WzUCIX8Biyj3P2r8QDltI',
          bucket: 'reborndev'
        })
        let url = '';
        if (fileurl)
          url = fileurl
        else
          url = oss.signatureUrl(objectKey);
        let getBlob = new Promise(resolve => {
          const xhr = new XMLHttpRequest();
          xhr.open('GET', url, true);
          xhr.responseType = 'blob';
          xhr.onload = () => {
            if (xhr.status === 200) {
              resolve(xhr.response);
            }
          };
          xhr.send();
        });
        getBlob.then(blob => {
          if (window.navigator.msSaveOrOpenBlob) {
            navigator.msSaveBlob(blob, filename);
          } else {
            const link = document.createElement('a');
            const body = document.querySelector('body');
            link.href = window.URL.createObjectURL(blob);
            link.download = filename;
            link.style.display = 'none';
            body.appendChild(link);
            link.click();
            body.removeChild(link);
            window.URL.revokeObjectURL(link.href);
          }
        });
      },
      //获取文件Blob
      Vue.prototype.getFileBlob = function (objectKey, filename) {
        var co = require('co');
        var OSS = require('ali-oss');
        var oss = new OSS({
          region: 'oss-cn-hangzhou',
          accessKeyId: 'LTAIwE7l9dImZSa3',
          accessKeySecret: 'j47Ajn0d0WzUCIX8Biyj3P2r8QDltI',
          bucket: 'reborndev'
        })
        let url = oss.signatureUrl(objectKey);
        let getBlob = new Promise(resolve => {
          const xhr = new XMLHttpRequest();
          xhr.open('GET', url, true);
          xhr.responseType = 'blob';
          xhr.onload = () => {
            if (xhr.status === 200) {
              resolve(xhr.response);
            }
          };
          xhr.send();
        });
        return getBlob
      },
      //文件上传
      Vue.prototype.uploadImg = function (tcID, msg, successCall, faildCall) {
        var apiurl = this.domainManager().UploadUrl + '/Upload/UploadBase64Two?fileType=1&fileLimit=5&&filePath=Freature/' + tcID;
        this.$http.post(apiurl, {
          FileIndex: msg.FileIndex,
          MyFile: msg.MyFile
        }, {
          headers: {
            "Content-Type": "application/x-www-form-urlencoded;"
          },
        }).then(function (res) {
  
        })
      },
      //Blob文件上传
      Vue.prototype.uploadSelfBlob = function (path, files, successCall) {
        let that = this;
        var uploadUrl = that.domainManager().UploadUrl + "/Upload/UploadBlob?fileType=1&fileLimit=5&&filePath=" + path;
        var formData = new FormData();
        formData.append("myfile", files[0]);
        that.$http.post(uploadUrl, formData, {
            'Content-Type': 'multipart/form-data'
          })
          .then(res => {
            successCall(res);
          })
      },
      //path  请按照"/模块名称/用户ID/自定义文件夹/" /谁搞错一次5块红包
      //files 文件数组
      //p    进度回调函数
      Vue.prototype.uploadFile = function (path, files, successCall) {
        if (files && files.length > 0) {
          let nameList = new Array()
          for (let index = 0; index < files.length; index++) {
            nameList.push(this.random_string());
          }
          var oss = new OSS({
            region: 'oss-cn-hangzhou',
            accessKeyId: 'LTAIwE7l9dImZSa3',
            accessKeySecret: 'j47Ajn0d0WzUCIX8Biyj3P2r8QDltI',
            bucket: 'reborndev'
          })
          let that = this
          co(function* () {
            for (let index = 0; index < files.length; index++) {
              let fileName = nameList[index]
              fileName = "/New" + path + fileName + "." + files[index].name.split('.').pop()
              var result = yield oss.multipartUpload(fileName, files[index], {
                progress: function* (p) {},
                mime: 'application/octet-stream'
              })
              successCall(result);
            }
          }).catch(function (err) {
            
          });
        }
      },
      //上传文件到本地服务器
      Vue.prototype.UploadSelfFileT = function (path, files, successCall, ocr) {
        if (files && files.length > 0) {
          let nameList = new Array()
          for (let index = 0; index < files.length; index++) {
            nameList.push(this.random_string());
          }
          let that = this;
          co(function* () {
            for (let index = 0; index < files.length; index++) {
              let fileName = nameList[index]
              fileName = path + fileName + "." + files[index].name.split('.').pop()
              var formData = new FormData();
              var uploadUrl = that.domainManager().UploadUrl + "/Upload?filePath=" + path + '&ocr=' + ocr;
              formData.append("myfile", files[index]);
              that.$http.post(uploadUrl, formData, {})
                .then(res => {
                  successCall(res);
                })
            }
          }).catch(function (err) {
  
          });
        }
      }
    //压缩图片
    //path : 图片路径
    //type : m_filt  填充  m_w  宽度固定 高度不固定  m_h 高度固定 宽度不固定
    //   w : 宽
    //   h : 高
    Vue.prototype.compressImg = function (path, type, w, h) {
      let url = this.domainManager().UploadUrl;
      let poise = 'm_filt';
      w = w ? w : ''
      h = h ? h : ''
      if (type === 'w') {
        poise = 'm_w'
      } else if (type === 'h') {
        poise = 'm_h'
      }
      return url + '/image/index?filePath=' + path.replace('http://192.168.2.214:8130', '').replace('http://imgfile.oytour.com', '').split('?')[0] + '&process=resize,' + poise + ',w_' + w + ',h_' + h;
    }
    Vue.prototype.uploadSelfBlob = function (path, files, successCall) {
        let that = this;
        var uploadUrl = that.domainManager().UploadUrl + "/Upload/UploadBlob?fileType=1&fileLimit=5&&filePath=" + path;
        var formData = new FormData();
        formData.append("myfile", files[0]);
        that.$http.post(uploadUrl, formData, {
            'Content-Type': 'multipart/form-data'
          })
          .then(res => {
            successCall(res);
          })
      },

      //验证只能输入2位小数【负数:isMinus传true】
      Vue.prototype.checkPrice = function (item, filed, isMinus) {
        var value = "" + item[filed]; //转字符串
        var t = value.charAt(0);
        value = value.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符
        value = value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
        value = value
          .replace(".", "$#$")
          .replace(/\./g, "")
          .replace("$#$", ".");
        value = value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
        //如果第一位是负号,则允许添加   如果不允许添加负号 可以把这块注释掉
        //是否允许负数
        if (isMinus && t == '-') {
          value = '-' + value;
        }
        item[filed] = value;
      }
    //验证输入6位小数汇率
    Vue.prototype.checkRate = function (item, filed) {
      var value = "" + item[filed]; //转字符串
      var p1 = /[^\d\.]/g; // 过滤非数字及小数点 /g :所有范围中过滤
      var p2 = /(\.\d{6})\d*$/g;
      var p4 = /(\.)(\d*)\1/g;
      value = value.replace(p1, "").replace(p2, "$1").replace(p4, "$1$2");
      value = value.replace(/[^0-9.]/g, '');
      var p5 = /\.+/g; //多个点的话只取1个点,屏蔽1....234的情况
      value = value.replace(p5, ".")
      var p6 = /(\.+)(\d+)(\.+)/g; //屏蔽1....234.的情况
      value = value.replace(p6, "$1$2") // 屏蔽最后一位的.
      item[filed] = value;
    }

    //验证只能输入整数【负数:isMinus传true】
    Vue.prototype.checkInteger = function (item, filed, isMinus) {
      var value = "" + item[filed]; //转字符串
      var t = value.charAt(0);
      value = value.replace(this.$commonUtils.Regex.isInteger, "");
      //是否允许负数
      if (isMinus && t == '-') {
        value = '-' + value;
      }
      item[filed] = value;
    }
    //时间验证
    Vue.prototype.checkTime = function (item, filed) {
      var date = item[filed];
      if (date.length == 1) {
        var v1 = date.substring(0, 1);
        item[filed] = v1.replace(/[^0-2]{1}/g, '');
      }
      if (date.length == 2) {
        var v1 = date.substring(0, 1);
        if (v1 == 2) {
          var reg = /[^0-3]{1}/g;
        } else {
          var reg = /[^0-9]{1}/g;
        }
        var v2 = date.substring(1, 2);
        if (!reg.test(v2)) {
          item[filed] = date + ":"
        } else {
          item[filed] = date.substring(0, 1);
        }
      }
      if (date.length == 4) {
        reg = /[^0-5]{1}/g;
        var v3 = date.substring(3, 4);
        if (!reg.test(v3)) {
          item[filed] = date;
        } else {
          item[filed] = date.substring(0, 3);
        }
      }
      if (date.length == 5) {
        var reg = /[^0-9]{1}/g;
        var v4 = date.substring(4, 5);
        if (!reg.test(v4)) {
          item[filed] = date
        } else {
          item[filed] = date.substring(0, 4);
        }
      }
      if (date.length > 5) {
        item[filed] = date.substring(0, 5);
      }
      this.$forceUpdate();
    }

    //价钱格式化,三位数逗号分隔,保留两位小数   duanjun
    Vue.prototype.moneyFormat = function (value) {
        let nStr = Number(value).toFixed(2)
        nStr += '';
        let x = nStr.split('.');
        let x1 = x[0];
        let x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
          x1 = x1.replace(rgx, '$1' + ',' + '$2');
        }
        return x1 + x2;
      },
      //文件图标
      Vue.prototype.loadFileICON = function (suffix) {
        let icons = [{
            "name": "\u7f51\u76d8BT\u79bb\u7ebf\u4e0b\u8f7d",

            "filesType": "*.bt,*.torrent",
            "filesIcon": {
              "bt": ["fileicon-small-bt", "fileicon-large-bt", "fileicon-middle-bt"],
              "torrent": ["fileicon-small-bt", "fileicon-large-bt", "fileicon-middle-bt"]
            },
            "entranceFile": "file-widget-1:bt\/start.js"
          },
          {
            "name": "\u6d69\u8fb0CAD",
            "group": "com.gstarcad.web",
            "notSupport": "ie6",
            "filesIcon": {
              "dws": ["fileicon-small-dws", "fileicon-large-dws", "fileicon-middle-dws"],
              "dwt": ["fileicon-small-dws", "fileicon-large-dws", "fileicon-middle-dws"],
              "dxf": ["fileicon-small-dws", "fileicon-large-dws", "fileicon-middle-dws"],
              "dwg": ["fileicon-small-dws", "fileicon-large-dws", "fileicon-middle-dws"],
              "cad": ["fileicon-small-dws", "fileicon-large-dws", "fileicon-middle-dws"]
            },
            "entranceFile": "file-widget-1:cad\/start.js"
          },
          {
            "name": "\u7f51\u76d8\u4ee3\u7801\u9605\u8bfb\u5668",

            "notSupport": "ie",
            "filesType": "*.txt,*.as,*.sh,*.c,*.cpp,*.h,*.cs,*.asp,*.css,*.pas,*.diff,*.patch,*.erl,*.groovy,*.java,*.jsp,*.js,*.json,*.pl,*.php,*.py,*.rb,*.sass,*.scss,*.scala,*.sql,*.vb,*.xml,*.xhtml,*.html,*.htm,*.md,*.less,*.lua,*.go,*.bat,*.wml",
            "filesIcon": {
              "as": ["fileicon-small-code", "fileicon-large-code"],
              "sh": ["fileicon-small-code", "fileicon-large-code"],
              "c": ["fileicon-small-code", "fileicon-large-code"],
              "cpp": ["fileicon-small-code", "fileicon-large-code"],
              "h": ["fileicon-small-code", "fileicon-large-code"],
              "cs": ["fileicon-small-code", "fileicon-large-code"],
              "asp": ["fileicon-small-code", "fileicon-large-code"],
              "css": ["fileicon-small-code", "fileicon-large-code"],
              "pas": ["fileicon-small-code", "fileicon-large-code"],
              "diff": ["fileicon-small-code", "fileicon-large-code"],
              "patch": ["fileicon-small-code", "fileicon-large-code"],
              "erl": ["fileicon-small-code", "fileicon-large-code"],
              "groovy": ["fileicon-small-code", "fileicon-large-code"],
              "java": ["fileicon-small-code", "fileicon-large-code"],
              "jsp": ["fileicon-small-code", "fileicon-large-code"],
              "js": ["fileicon-small-code", "fileicon-large-code"],
              "json": ["fileicon-small-code", "fileicon-large-code"],
              "pl": ["fileicon-small-code", "fileicon-large-code"],
              "php": ["fileicon-small-code", "fileicon-large-code"],
              "py": ["fileicon-small-code", "fileicon-large-code"],
              "rb": ["fileicon-small-code", "fileicon-large-code"],
              "sass": ["fileicon-small-code", "fileicon-large-code"],
              "scss": ["fileicon-small-code", "fileicon-large-code"],
              "scala": ["fileicon-small-code", "fileicon-large-code"],
              "sql": ["fileicon-small-code", "fileicon-large-code"],
              "vb": ["fileicon-small-code", "fileicon-large-code"],
              "xml": ["fileicon-small-code", "fileicon-large-code"],
              "xhtml": ["fileicon-small-code", "fileicon-large-code"],
              "html": ["fileicon-small-code", "fileicon-large-code"],
              "htm": ["fileicon-small-code", "fileicon-large-code"],
              "md": ["fileicon-small-code", "fileicon-large-code"],
              "less": ["fileicon-small-code", "fileicon-large-code"],
              "lua": ["fileicon-small-code", "fileicon-large-code"],
              "go": ["fileicon-small-code", "fileicon-large-code"],
              "bat": ["fileicon-small-code", "fileicon-large-code"],
              "wml": ["fileicon-small-code", "fileicon-large-code"]
            },
            "entranceFile": "file-widget-1:codeReader\/start.js"
          },
          {
            "name": "\u7f51\u76d8\u89e3\u538b\u7f29",

            "filesType": "*.rar,*.zip",
            "notSupport": "ie6",
            "filesIcon": {
              "rar": ["fileicon-small-zip", "fileicon-large-zip", "fileicon-middle-zip"],
              "zip": ["fileicon-small-zip", "fileicon-large-zip", "fileicon-middle-zip"]
            },
            "depsFiles": ["file-widget-1:zip\/util\/css\/fileUnzip.css", "file-widget-1:zip\/util\/css\/list-view.css"],
            "entranceFile": "file-widget-1:zip\/start.js"
          },
          {
            "name": "\u7f51\u76d8\u6587\u6863\u9605\u8bfb\u5668",

            "filesType": "*.txt,*.pdf,*.doc,*.docx,*.ppt,*.pptx,*.xls,*.xlsx,*.rtf",
            "filesIcon": {
              "txt": ["fileicon-small-txt", "fileicon-large-txt", "fileicon-middle-txt"],
              "rtf": ["fileicon-small-txt", "fileicon-large-txt", "fileicon-middle-txt"],
              "pdf": ["fileicon-small-pdf", "fileicon-large-pdf", "fileicon-middle-pdf"],
              "doc": ["fileicon-small-doc", "fileicon-large-doc", "fileicon-middle-doc"],
              "docx": ["fileicon-small-doc", "fileicon-large-doc", "fileicon-middle-doc"],
              "ppt": ["fileicon-small-ppt", "fileicon-large-ppt", "fileicon-middle-ppt"],
              "pptx": ["fileicon-small-ppt", "fileicon-large-ppt", "fileicon-middle-ppt"],
              "xls": ["fileicon-small-xls", "fileicon-large-xls", "fileicon-middle-xls"],
              "xlsx": ["fileicon-small-xls", "fileicon-large-xls", "fileicon-middle-xls"],
              "vsd": ["fileicon-small-vsd", "fileicon-large-vsd", "fileicon-middle-vsd"]
            },
            "depsFiles": ["file-widget-1:doc\/util\/docReader.css", "file-widget-1:doc\/pdfJsReader\/pdfJsReader.less", "base:thirdParty\/pdfjs\/_nomd5_nomod\/web\/trans-viewer.less", "base:thirdParty\/pdfjs\/_nomd5_nomod\/web\/viewer.less"],
            "entranceFile": "file-widget-1:doc\/start.js"
          },
          {
            "name": "\u7f51\u76d8\u56fe\u7247\u9884\u89c8",

            "filesType": "*.jpg,*.jpeg,*.livp,*.gif,*bmp,*.png,*jpe,*.cur,*.svgz,*.ico,*.heic,*.heif,*.avci,*.webp",
            "filesIcon": {
              "jpg": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "jpeg": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "livp": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "gif": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "bmp": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "png": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "jpe": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "cur": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "svgz": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "tif": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "tiff": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "ico": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "heic": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "heif": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "avci": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"]
            },
            "depsFiles": ["file-widget-1:image\/util\/picCategory-dialog\/css\/picCategory-dialog.css", "file-widget-1:image\/util\/picPreview\/css\/picPreview.css", "file-widget-1:image\/util\/picPreviewAside\/css\/picPreviewAside.css", "file-widget-1:image\/util\/showPic\/css\/showPic.css", "file-widget-1:image\/util\/thumbnailPic\/css\/thumbnailPic.css", "base:thirdParty\/videojs\/_nomd5_nomod\/video-js.css"],
            "entranceFile": "file-widget-1:image\/start.js"
          },
          {
            "name": "\u767e\u5ea6\u8111\u56fe",
            "group": "com.baidu.naotu",
            "filesType": "*.mmap,*.xmind,*.mm",
            "notSupport": "ie6",
            "filesIcon": {
              "mmap": ["fileicon-small-mmap", "fileicon-large-mmap", "fileicon-middle-mmap"],
              "xmind": ["fileicon-small-xmind", "fileicon-large-xmind", "fileicon-middle-xmind"],
              "mm": ["fileicon-small-mm", "fileicon-large-mm", "fileicon-middle-mm"]
            },
            "entranceFile": "file-widget-1:mindmap\/start.js"
          },
          {
            "name": "\u7f51\u76d8\u97f3\u9891\u64ad\u653e\u5668",

            "notSupport": "ie6",
            "filesType": "*.wma,*.wav,*.mp3,*.aac,*.ra,*.ram,*.mp2,*.ogg,*.aif,*.mpega,*.amr,*.mid,*.midi,*.m4a",
            "filesIcon": {
              "wma": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "wav": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "mp3": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "aac": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "ra": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "ram": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "mp2": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "ogg": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "aif": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "mpega": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "amr": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "mid": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "midi": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"],
              "m4a": ["fileicon-small-mp3", "fileicon-large-mp3", "fileicon-middle-mp3"]
            },
            "buttons": [{
              "title": "\u97f3\u4e50\u64ad\u653e",
              "name": "play-music",
              "position": "listTools",
              "index": 2,
              "disabled": "none",
              "icon": "icon-play",
              "buttonStyle": "normal",
              "conditions": {
                "pageModule": "list,share,search,category,searchGlobal",
                "filesType": "wma,wav,mp3,aac,ra,ram,mp2,ogg,aif,mpega,amr,mid,midi,m4a",
                "filesTypeStrongMatch": true
              }
            }],
            "depsFiles": ["file-widget-1:musicPlay\/util\/mbox\/musicbox.css"],
            "entranceFile": "file-widget-1:musicPlay\/start.js"
          },
          {
            "name": "\u7f51\u76d8\u5927\u56fe\u9884\u89c8",

            "filesType": "*.jpg,*.jpeg,*.gif,*bmp,*.png,*jpe,*.cur,*.svgz,*.ico",
            "filesIcon": {
              "jpg": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "jpeg": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "gif": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "bmp": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "png": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "jpe": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "cur": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "svgz": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "tif": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "tiff": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"],
              "ico": ["fileicon-small-pic", "default-large", "fileicon-middle-pic"]
            },
            "depsFiles": ["file-widget-1:preview\/picPreview.css"],
            "entranceFile": "file-widget-1:preview\/start.js"
          },
          {
            "name": "sysIcon",

            "filesType": "*.exe,*.msi,*.dmg,*.pkg,*.psd,*.apk,*.key,*.ai,*.ipa",
            "filesIcon": {
              "exe": ["fileicon-sys-s-exe", "fileicon-sys-l-exe"],
              "msi": ["fileicon-sys-s-exe", "fileicon-sys-l-exe"],
              "dmg": ["fileicon-sys-s-exe", "fileicon-sys-l-dmg"],
              "pkg": ["fileicon-sys-s-exe", "fileicon-sys-l-dmg"],
              "psd": ["fileicon-sys-s-psd", "fileicon-sys-l-psd"],
              "apk": ["fileicon-sys-s-apk", "fileicon-sys-l-apk"],
              "key": ["fileicon-sys-s-key", "fileicon-sys-l-key"],
              "ai": ["fileicon-sys-s-ai", "fileicon-sys-l-ai"],
              "ipa": ["fileicon-sys-s-ipa", "fileicon-sys-l-ipa"],
              "pages": ["fileicon-sys-s-pages", "fileicon-sys-l-pages"],
              "numbers": ["fileicon-sys-s-numbers", "fileicon-sys-l-numbers"],
              "eot": ["fileicon-sys-s-fonts", "fileicon-sys-l-fonts"],
              "ttf": ["fileicon-sys-s-fonts", "fileicon-sys-l-fonts"],
              "woff": ["fileicon-sys-s-fonts", "fileicon-sys-l-fonts"],
              "eps": ["fileicon-sys-s-eps", "fileicon-sys-l-eps"],
              "lnk": ["fileicon-sys-s-links", "fileicon-sys-l-links"],
              "link": ["fileicon-sys-s-links", "fileicon-sys-l-links"],
              "swf": ["fileicon-sys-s-swf", "fileicon-sys-l-swf"],
              "php": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "c": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "js": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "css": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "html": ["fileicon-sys-s-web", "fileicon-sys-l-web"],
              "htm": ["fileicon-sys-s-web", "fileicon-sys-l-web"],
              "xhtml": ["fileicon-sys-s-web", "fileicon-sys-l-web"],
              "java": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "cc": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "python": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "json": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "sh": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "bat": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "ejs": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "xml": ["fileicon-sys-s-code", "fileicon-sys-l-code"],
              "ts": ["fileicon-sys-s-video", "fileicon-sys-l-video"]
            }
          },
          {
            "name": "\u7f51\u76d8\u89c6\u9891",

            "filesType": "*.wmv,*.rmvb,*.mpeg4,*.mpeg2,*.flv,*.avi,*.3gp,*.mpga,*.qt,*.rm,*.wmz,*.wmd,*.wvx,*.wmx,*.wm,*.mpg,*.mp4,*.mkv,*.mpeg,*mov,*.asf,*.m4v,*.m3u8",
            "filesIcon": {
              "wmv": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "rmvb": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "mpeg4": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "mpeg2": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "flv": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "avi": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "3gp": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "mpga": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "qt": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "rm": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "wmz": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "wmd": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "wvx": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "wmx": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "wm": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "mpg": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "mp4": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "mkv": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "mpeg": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "mov": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "asf": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "m4v": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"],
              "m3u8": ["fileicon-small-video", "fileicon-large-video", "fileicon-middle-video"]
            },
            "preload": true,
            "entranceFile": "file-widget-1:video\/start.js"
          }
        ]
        if (suffix == "")
          return "dir-small"
        let css = ""
        icons.forEach(x => {
          if (x.filesIcon.hasOwnProperty(suffix)) {
            css = x.filesIcon[suffix][0]
            return false
          }
        })
        if (css == '') {
          css = 'default-small'
        }
        return css;
      }
  }
}