diff --git a/common/api.js b/common/api.js
new file mode 100644
index 0000000..cca5a60
--- /dev/null
+++ b/common/api.js
@@ -0,0 +1,5 @@
+export const host = '/TODO'
+
+export default {
+ uploadFile: `${host}`
+}
diff --git a/common/manageServer.js b/common/manageServer.js
new file mode 100644
index 0000000..a6d96c6
--- /dev/null
+++ b/common/manageServer.js
@@ -0,0 +1,52 @@
+import { goto } from "./untool";
+import { showToast } from "./untool"
+
+// 请求接口
+function dealRequest(def, url, param) {
+
+ const promise = new Promise(function (resolve, reject) {
+
+ def.then(function (res) {
+ handleResponse(res, resolve, reject, url, param);
+ }, function (res) {
+ console.log('request url==========1', url)
+ console.log('request param==========1', param)
+ console.log('response ===========1', res);
+ showToast(`网络错误`)
+ reject(res)
+ })
+ })
+
+ // 统一提示 errmsg
+ promise.then(function (res) {
+ }, function (res) {
+ uni.hideLoading()
+ })
+ return promise;
+}
+
+// 处理响应
+function handleResponse(res, resolve, reject, url, param) {
+ const orgRes = { ...res };
+ if ((res && res.respCode == 1)) {
+ resolve(res.respData)
+ } else {
+ if (res.respCode == '-1') { // 统一判断需要认证, 并作页面跳转
+ showToast(res.respMsg)
+ setTimeout(()=>{
+ goto(`TODO`, 1)
+ }, 3500)
+ return reject({ code: {} });
+ }
+
+ setTimeout(()=> {
+ showToast(`网络错误`)
+ }, 0)
+ reject({code: {}});
+ }
+}
+
+export {
+ dealRequest,
+ handleResponse
+}
diff --git a/common/request.js b/common/request.js
new file mode 100644
index 0000000..ba3a01f
--- /dev/null
+++ b/common/request.js
@@ -0,0 +1,40 @@
+import { dealRequest } from "./manageServer"
+import { showToast } from "./untool"
+
+const corePostBase = (url, reqParams, options) => {
+ return new Promise((resolve, reject)=> {
+ uni.request({
+ url,
+ data: reqParams,
+ header: options,
+ method: 'POST',
+ success: (res)=> {
+ resolve(res)
+ },
+ fail: (e)=> {
+ reject(e)
+ }
+ })
+ })
+}
+
+const BaseParam = {}
+// 请求处理
+let corePost = function (url, params = {}, options = {}) {
+ let { tid } = Storage.get("MEMBER_SESSION") || {}
+ // 统一把emo转unicode
+ // emoUnicode(params)
+ const reqParams = {
+ ...BaseParam,
+ ...params,
+ }
+ return dealRequest(corePostBase(url, reqParams, options)).then(res => {
+ // 解析unicode
+ // emoUnicode(res, 2)
+ return res
+ })
+}
+
+export {
+ corePost
+}
\ No newline at end of file
diff --git a/common/untool.js b/common/untool.js
index 9e2b345..31038d7 100644
--- a/common/untool.js
+++ b/common/untool.js
@@ -35,11 +35,15 @@ const setClipboardData = (val)=> {
uni.setClipboardData({
data: val,
success: () => {
- uni.showToast({ title: "复制成功", icon: 'none' })
+ showToast({ title: "复制成功", icon: 'none' })
},
})
}
+const showToast = (val)=> {
+ uni.showToast({ title: val, icon: 'none' })
+}
+
const confirmModal = (title) => {
return new Promise((resolve)=> {
uni.showModal({ content: title, confirmColor: '#B12D29' }).then((res)=> {
@@ -64,4 +68,5 @@ export {
setClipboardData,
confirmModal,
showLoading,
+ showToast
}
diff --git a/common/upload.js b/common/upload.js
new file mode 100644
index 0000000..dd9d651
--- /dev/null
+++ b/common/upload.js
@@ -0,0 +1,99 @@
+import { handleResponse } from './manageServer.js'
+import apiConfig from './api.js' //接口配置
+import { showToast } from "./untool"
+
+
+const chooseFile = function (action = 'chooseImage', opt = {}) {
+ let opts = {
+ // sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
+ sizeType: ['compressed'],
+ sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
+ ...opt
+ }
+ return new Promise((resolve, reject) => {
+ uni[action]({
+ count: 1, // 默认9
+ ...opts,
+ success: function (res) {
+ // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
+ var tempFilePaths = res.tempFilePaths || [res.tempFilePath]
+ resolve(tempFilePaths)
+ },
+ fail: function (res) {
+ reject()
+ }
+ })
+ })
+}
+
+const doRequest = function (file) {
+ return new Promise((resolve, reject) => {
+ uni.uploadFile({
+ url: `${apiConfig.uploadFile}`,
+ fileType: 'image', // TODO
+ filePath: file,
+ name: 'file',
+ formData: {
+ // 'user': 'test'
+ },
+ success(res) {
+ try {
+ const data = JSON.parse(res.data)
+ handleResponse(data, resolve, reject)
+ } catch (error) {
+ reject()
+ }
+ },
+ fail() {
+ reject()
+ }
+ })
+ })
+}
+
+// 单 选择并上传文件
+const coreUploadFile = function (action = 'chooseImage', opt = {}) {
+ return chooseFile(action, opt).then(async (files) => {
+ if (opt.asyncFileFun) {
+ const newFiles = await opt.asyncFileFun(files)
+ files = newFiles
+ }
+ uni.showLoading()
+ return doRequest(files[0]).then(res => {
+ return res
+ }).finally(()=> {
+ uni.hideLoading()
+ })
+ })
+}
+
+// 多 选择并上传文件
+const coreMultiUploadFile = async (action = 'chooseImage', opt = {})=> {
+ let files = await chooseFile(action, opt)
+ files = files || []
+ const allDef = []
+ if (opt.asyncFileFun) {
+ const newFiles = await opt.asyncFileFun(files)
+ files = newFiles
+ }
+ uni.showLoading()
+ files.map(val=>{
+ const def = doRequest(val).then(res => {
+ return res
+ })
+ allDef.push(def)
+ })
+ try{
+ let resFiles = await Promise.all(allDef)
+ uni.hideLoading()
+ return resFiles
+ }catch(e){
+ uni.hideLoading()
+ return files
+ }
+}
+
+export {
+ coreUploadFile,
+ coreMultiUploadFile
+}
diff --git a/components/tpx-image/tpx-image.vue b/components/tpx-image/tpx-image.vue
new file mode 100644
index 0000000..5ae6f30
--- /dev/null
+++ b/components/tpx-image/tpx-image.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/tpx-upload/tpx-upload.vue b/components/tpx-upload/tpx-upload.vue
index a038522..4c3a92a 100644
--- a/components/tpx-upload/tpx-upload.vue
+++ b/components/tpx-upload/tpx-upload.vue
@@ -1,21 +1,53 @@
-
-
-
+
+
+
+
+
+
+ 上传
+ 照片
+ 视频
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file