|
@@ -1,140 +1,142 @@
|
|
|
-import config from './config'
|
|
|
-
|
|
|
-export default {
|
|
|
- isHttp(path) {
|
|
|
- return path.startsWith('http') || path.startsWith('https')
|
|
|
- },
|
|
|
- escapeHTML(a) {
|
|
|
- a = "" + a;
|
|
|
- return a.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'")
|
|
|
- },
|
|
|
-
|
|
|
- * @function unescapeHTML 还原html脚本 < > & " '
|
|
|
- * @param a - 字符串
|
|
|
- */
|
|
|
- unescapeHTML(a){
|
|
|
- a = "" + a;
|
|
|
- return a.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/'/g, "'")
|
|
|
- },
|
|
|
- uuid(len = 16) {
|
|
|
- const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
|
|
|
- const uuid = []
|
|
|
-
|
|
|
- if (len) {
|
|
|
-
|
|
|
- for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * chars.length]
|
|
|
- } else {
|
|
|
- let r
|
|
|
-
|
|
|
- uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
|
|
|
- uuid[14] = '4'
|
|
|
-
|
|
|
- for (let i = 0; i < 36; i++) {
|
|
|
- if (!uuid[i]) {
|
|
|
- r = 0 | Math.random() * 16
|
|
|
- uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return uuid.join('')
|
|
|
- },
|
|
|
+import config from './config'
|
|
|
+
|
|
|
+export default {
|
|
|
+ isHttp(path) {
|
|
|
+ return path.startsWith('http') || path.startsWith('https')
|
|
|
+ },
|
|
|
+ escapeHTML(a) {
|
|
|
+ a = "" + a;
|
|
|
+ return a.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(
|
|
|
+ /'/g, "'")
|
|
|
+ },
|
|
|
+
|
|
|
+ * @function unescapeHTML 还原html脚本 < > & " '
|
|
|
+ * @param a - 字符串
|
|
|
+ */
|
|
|
+ unescapeHTML(a) {
|
|
|
+ a = "" + a;
|
|
|
+ return a.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(
|
|
|
+ /'/g, "'")
|
|
|
+ },
|
|
|
+ uuid(len = 16) {
|
|
|
+ const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
|
|
|
+ const uuid = []
|
|
|
+
|
|
|
+ if (len) {
|
|
|
+
|
|
|
+ for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * chars.length]
|
|
|
+ } else {
|
|
|
+ let r
|
|
|
+
|
|
|
+ uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
|
|
|
+ uuid[14] = '4'
|
|
|
+
|
|
|
+ for (let i = 0; i < 36; i++) {
|
|
|
+ if (!uuid[i]) {
|
|
|
+ r = 0 | Math.random() * 16
|
|
|
+ uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return uuid.join('')
|
|
|
+ },
|
|
|
upload(data) {
|
|
|
return uni.uploadFile({
|
|
|
url: this.isHttp(data.url) ? data.url : config.apiBaseUrl + data.url,
|
|
|
name: data.name || 'file',
|
|
|
- formData: {
|
|
|
+ formData: {
|
|
|
...data.formData,
|
|
|
- token: uni.getStorageSync('token')
|
|
|
- },
|
|
|
+ token: uni.getStorageSync('token')
|
|
|
+ },
|
|
|
header: data.header || {},
|
|
|
filePath: data.filePath
|
|
|
}).then(res => {
|
|
|
return JSON.parse(res)
|
|
|
- })
|
|
|
- },
|
|
|
- uploadCloud(data) {
|
|
|
- return uniCloud.uploadFile(data).then(res => {
|
|
|
- return res
|
|
|
- })
|
|
|
- },
|
|
|
- chooseAndUpload(methods, chooseParam, uploadParam, isCloud) {
|
|
|
- const uploadArr = []
|
|
|
- return this[methods](chooseParam).then(file => {
|
|
|
- file.filePaths.forEach((filePath, index) => {
|
|
|
- if (isCloud) {
|
|
|
- const fileArr = filePath.split('.')
|
|
|
-
|
|
|
- const fileType = file.tempFiles[index].type || 'image/png'
|
|
|
- const suffix = fileArr.length >= 2 ? fileArr[fileArr.length - 1] : fileType.split('/')[1]
|
|
|
-
|
|
|
- uploadArr.push(this.uploadCloud({
|
|
|
- filePath,
|
|
|
- cloudPath: this.uuid() + '.' + suffix,
|
|
|
- fileType: (methods === 'chooseImage' ? 'image/' : 'video/') + suffix
|
|
|
- }).then(res => {
|
|
|
- if (res.success) {
|
|
|
- return {
|
|
|
- filePath: res.fileID
|
|
|
- }
|
|
|
- } else {
|
|
|
- uni.showToast({
|
|
|
- title: res.msg,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- }
|
|
|
- }))
|
|
|
- } else{
|
|
|
- uploadArr.push(this.upload({
|
|
|
- ...uploadParam,
|
|
|
- filePath
|
|
|
- }).then(res => {
|
|
|
- if (res.code === 200 || res.success) {
|
|
|
- return res.data
|
|
|
- } else {
|
|
|
- uni.showToast({
|
|
|
- title: res.msg,
|
|
|
- icon: 'none'
|
|
|
- })
|
|
|
- }
|
|
|
- }))
|
|
|
- }
|
|
|
- })
|
|
|
- uni.showLoading({
|
|
|
- title: '上传中...'
|
|
|
- })
|
|
|
- return Promise.all(uploadArr).then(res => {
|
|
|
- uni.hideLoading()
|
|
|
- return res.filter(item => item)
|
|
|
- })
|
|
|
- })
|
|
|
- },
|
|
|
- chooseImage(data) {
|
|
|
- return uni.chooseImage({
|
|
|
- count: 1,
|
|
|
- ...data
|
|
|
- }).then(res => {
|
|
|
- console.log(res);
|
|
|
- return {
|
|
|
- filePaths: res.tempFilePaths,
|
|
|
- tempFiles: res.tempFiles
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- chooseAndUploadImage(chooseParam, uploadParam, isCloud) {
|
|
|
- return this.chooseAndUpload('chooseImage',chooseParam, uploadParam, isCloud)
|
|
|
- },
|
|
|
- chooseVideo(data) {
|
|
|
- return uni.chooseVideo({
|
|
|
- ...data
|
|
|
- }).then(res => {
|
|
|
- return {
|
|
|
- filePaths: [res.tempFilePath],
|
|
|
- tempFiles: [res.tempFile]
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- chooseAndUploadVideo(chooseParam, uploadParam, isCloud) {
|
|
|
- return this.chooseAndUpload('chooseVideo',chooseParam, uploadParam, isCloud)
|
|
|
- },
|
|
|
-}
|
|
|
+ })
|
|
|
+ },
|
|
|
+ uploadCloud(data) {
|
|
|
+ return uniCloud.uploadFile(data).then(res => {
|
|
|
+ return res
|
|
|
+ })
|
|
|
+ },
|
|
|
+ chooseAndUpload(methods, chooseParam, uploadParam, isCloud) {
|
|
|
+ const uploadArr = []
|
|
|
+ return this[methods](chooseParam).then(file => {
|
|
|
+ file.filePaths.forEach((filePath, index) => {
|
|
|
+ if (isCloud) {
|
|
|
+ const fileArr = filePath.split('.')
|
|
|
+
|
|
|
+ const fileType = file.tempFiles[index].type || 'image/png'
|
|
|
+ const suffix = fileArr.length >= 2 ? fileArr[fileArr.length - 1] : fileType.split(
|
|
|
+ '/')[1]
|
|
|
+
|
|
|
+ uploadArr.push(this.uploadCloud({
|
|
|
+ filePath,
|
|
|
+ cloudPath: this.uuid() + '.' + suffix,
|
|
|
+ fileType: (methods === 'chooseImage' ? 'image/' : 'video/') + suffix
|
|
|
+ }).then(res => {
|
|
|
+ if (res.success) {
|
|
|
+ return {
|
|
|
+ filePath: res.fileID
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ uni.showToast({
|
|
|
+ title: res.msg,
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }))
|
|
|
+ } else {
|
|
|
+ uploadArr.push(this.upload({
|
|
|
+ ...uploadParam,
|
|
|
+ filePath
|
|
|
+ }).then(res => {
|
|
|
+ if (res.code === 200 || res.success) {
|
|
|
+ return res.data
|
|
|
+ } else {
|
|
|
+ uni.showToast({
|
|
|
+ title: res.msg,
|
|
|
+ icon: 'none'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ uni.showLoading({
|
|
|
+ title: '上传中...'
|
|
|
+ })
|
|
|
+ return Promise.all(uploadArr).then(res => {
|
|
|
+ uni.hideLoading()
|
|
|
+ return res.filter(item => item)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ chooseImage(data) {
|
|
|
+ return uni.chooseImage({
|
|
|
+ count: 1,
|
|
|
+ ...data
|
|
|
+ }).then(res => {
|
|
|
+ return {
|
|
|
+ filePaths: res.tempFilePaths,
|
|
|
+ tempFiles: res.tempFiles
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ chooseAndUploadImage(chooseParam, uploadParam, isCloud) {
|
|
|
+ return this.chooseAndUpload('chooseImage', chooseParam, uploadParam, isCloud)
|
|
|
+ },
|
|
|
+ chooseVideo(data) {
|
|
|
+ return uni.chooseVideo({
|
|
|
+ ...data
|
|
|
+ }).then(res => {
|
|
|
+ return {
|
|
|
+ filePaths: [res.tempFilePath],
|
|
|
+ tempFiles: [res.tempFile]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ chooseAndUploadVideo(chooseParam, uploadParam, isCloud) {
|
|
|
+ return this.chooseAndUpload('chooseVideo', chooseParam, uploadParam, isCloud)
|
|
|
+ },
|
|
|
+}
|