| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 | // components/upload/index.jsconst qiniuUploader = require("../../utils/qiniuUploader");const Parse = getApp().Parseconst company = getApp().globalData.company/** * @class NovaUpload * @desc 上传组件 * @memberof module:components * @desc  * # 一、组件引用 * 模块引用:如app.json根组件引用 * ``` json * "usingComponents": { *  "upload": "/components/upload/index", * } * ``` * 上传令牌获取:xxxpage.js * ``` js *  async getUptoken() { *      // 根据config.js全局配置company的ID来获取上传口令        let res = await Parse.Cloud.run('qiniu_uptoken', {            company: getApp().globalData.company        })        console.log(Object.keys(res));        console.log(res);        this.setData({            uptokenURL: res.uptoken,            domain: res.domain,            uploadURL: res.zoneUrl        })    },    async onLoad(){      this.getUptoken()    } * ``` # 二、组件示例 * 模板标签:xxxpage.wxml 页面中使用<upload>标签传参使用 ## 文件上传 * ``` html *  <!-- 文件上传 -->  <view class="text-title">请上传房产证内页或购房合同内页,需露出署名</view>  <view class="title-text1">(您上传的资料仅作认证使用,并交加密处理)</view>  <view class="alboum">    <upload bind:onChangeFile="changeFile" fileList="{{fileList}}" accept="all" maxCount="3" uploadURL="{{uploadURL}}" domain="{{domain}}" uptokenURL="{{uptokenURL}}" />  </view> * ``` * ``` html ## 多图上传 * <!-- 多图上传 --> * <view class="alboum">    <view class="alboum-text">评价图片</view>    <upload bind:onChangeFile="changeFile" fileList="{{fileList}}" accept="image" maxCount="6" uploadURL="{{uploadURL}}" domain="{{domain}}" uptokenURL="{{uptokenURL}}"></upload>  </view> * ``` * ``` html ## 单图上传 * <!-- 单图上传 -->  <view class="top-figure">店铺首图</view>  <upload bind:onChangeFile="changeFile" fileList="{{imageList}}" accept="image" maxCount="1" uploadURL="{{uploadURL}}" domain="{{domain}}" uptokenURL="{{uptokenURL}}"></upload> * ``` */Component({  /**   * 组件的属性列表   * @memberof module:components.NovaUpload   * @type {object}   * @property {string} accept - 图片地址   * @property {string} icon - 图标   * @property {number} maxCount - 最大数量   * @property {string} loadImg - 未上传前图片格式样式   * @property {string} text - 未上传前文字解释   */  properties: {    accept: {      type: String,      value: "image"    },    icon: {      type: String,      value: "plus"    },    maxCount: {      type: Number,      value: 1    },    maxSize: {      type: Number,      value: null    },    uploadURL: {      type: String,      value: ""    },    domain: {      type: String,      value: ""    },    uptokenURL: {      type: String,      value: ""    },    fileList: {      type: Array,      value: []    },    loadImg: {      type: String,      value: ""    },    text: {      type: String,      value: ""    },  },  /**   * 组件的初始数据   */  data: {    fileList: [],    capture: ['album', 'camera']  },  /**   * 组件的方法列表   * @memberof module:components.NovaUpload   * @type {object}   * @method afterRead - 读取后执行   */  methods: {    /**     * 读取后执行     * @memberof module:components.NovaUpload     * @param {*} event - 事件参数     */    afterRead(event) {      let that = this;      const {        file      } = event.detail;      file.forEach(item => {        let tempFilePaths = item.url;        qiniuUploader.upload(          tempFilePaths,          (res) => {            let {              imageURL,              size            } = res            const {              fileList = []            } = this.data;            fileList.push({              url: imageURL,              size: size            });            this.setData({              fileList            });            this.triggerEvent("onChangeFile", this.data.fileList);          },          (error) => {            console.log("error: " + error);          }, {            region: "SCN",            uploadURL: that.data.uploadURL,            domain: that.data.domain,            uptoken: that.data.uptokenURL,          }        );      })    },    deleteImg(e) {      let fileList = this.data.fileList;      fileList.splice(e.detail.index, 1);      this.setData({        fileList      });      this.triggerEvent("onChangeFile", this.data.fileList);    },    getUptoken() {      return Parse.Cloud.run('qiniu_uptoken', {        company: company      })    },  },  // attachment 表, 资源链接加上companyId  lifetimes: {    async created() {},    async attached() {      let uploadData = await this.getUptoken()      if (uploadData) {        this.setData({          uploadURL: uploadData.zoneUrl,          domain: uploadData.domain,          uptokenURL: uploadData.uptoken,        })      }    },    moved() {},    detached() {},    ready: function () {}  },})
 |