123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- // components/upload/index.js
- const qiniuUploader = require("../../utils/qiniuUploader");
- const Parse = getApp().Parse
- const 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 () {}
- },
- })
|