From 94ee2a3d22cffd89b5034d881c45c54aef430e8b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Jun 2024 01:09:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=A7=AF=E5=88=86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages.json | 41 +- pages/index/my.vue | 339 ++--- pages/index/product.vue | 101 +- pages/order/list.vue | 331 ++--- pages/product/manageGoods.vue | 245 ++++ pages/user/point/buy.vue | 167 +++ pages/user/point/loglist.vue | 105 ++ pages/user/point/share.vue | 124 ++ pages/user/wallet/withdraw.vue | 107 +- peach/api/common/file.js | 53 + peach/api/member/point.js | 14 + peach/api/trade/goods.js | 30 + peach/api/trade/order.js | 14 + .../p-uploader/choose-and-upload-file.js | 227 ++++ peach/components/p-uploader/p-uploader.vue | 666 ++++++++++ peach/components/p-uploader/upload-file.vue | 318 +++++ peach/components/p-uploader/upload-image.vue | 302 +++++ peach/components/p-uploader/utils.js | 110 ++ peach/scss/_tools.scss | 2 +- static/upload-camera.png | Bin 0 -> 7663 bytes .../uni-forms-item/uni-forms-item.vue | 1153 +++++++++-------- 21 files changed, 3462 insertions(+), 987 deletions(-) create mode 100644 pages/product/manageGoods.vue create mode 100644 pages/user/point/buy.vue create mode 100644 pages/user/point/loglist.vue create mode 100644 pages/user/point/share.vue create mode 100644 peach/api/common/file.js create mode 100644 peach/api/member/point.js create mode 100644 peach/api/trade/goods.js create mode 100644 peach/api/trade/order.js create mode 100644 peach/components/p-uploader/choose-and-upload-file.js create mode 100644 peach/components/p-uploader/p-uploader.vue create mode 100644 peach/components/p-uploader/upload-file.vue create mode 100644 peach/components/p-uploader/upload-image.vue create mode 100644 peach/components/p-uploader/utils.js create mode 100644 static/upload-camera.png diff --git a/pages.json b/pages.json index f39db70..95137fd 100644 --- a/pages.json +++ b/pages.json @@ -120,10 +120,49 @@ "navigationBarTitleText": "提现" }, "meta": { - "auth": false + "auth": true + } + }, + { + "path": "point/buy", + "style": { + "navigationBarTitleText": "购买积分" + }, + "meta": { + "auth": true + } + }, { + "path": "point/share", + "style": { + "navigationBarTitleText": "分发积分" + }, + "meta": { + "auth": true + } + }, { + "path": "point/loglist", + "style": { + "navigationBarTitleText": "历史积分" + }, + "meta": { + "auth": true } } ] + }, + { + "root": "pages/product", + "pages": [ + { + "path": "manageGoods", + "style": { + "navigationBarTitleText": "商品管理" + }, + "meta": { + "auth": false + } + } + ] } ], "tabBar": { diff --git a/pages/index/my.vue b/pages/index/my.vue index c483869..c73055a 100644 --- a/pages/index/my.vue +++ b/pages/index/my.vue @@ -1,43 +1,43 @@ diff --git a/pages/index/product.vue b/pages/index/product.vue index 7ab5aa7..d9422aa 100644 --- a/pages/index/product.vue +++ b/pages/index/product.vue @@ -1,34 +1,21 @@ + + diff --git a/pages/order/list.vue b/pages/order/list.vue index d34f7ce..1ae6a2a 100644 --- a/pages/order/list.vue +++ b/pages/order/list.vue @@ -1,117 +1,77 @@ diff --git a/pages/product/manageGoods.vue b/pages/product/manageGoods.vue new file mode 100644 index 0000000..b4252b5 --- /dev/null +++ b/pages/product/manageGoods.vue @@ -0,0 +1,245 @@ + + + + + + diff --git a/pages/user/point/buy.vue b/pages/user/point/buy.vue new file mode 100644 index 0000000..c3fc60a --- /dev/null +++ b/pages/user/point/buy.vue @@ -0,0 +1,167 @@ + + + + + \ No newline at end of file diff --git a/pages/user/point/loglist.vue b/pages/user/point/loglist.vue new file mode 100644 index 0000000..8fdb320 --- /dev/null +++ b/pages/user/point/loglist.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/pages/user/point/share.vue b/pages/user/point/share.vue new file mode 100644 index 0000000..e395ba4 --- /dev/null +++ b/pages/user/point/share.vue @@ -0,0 +1,124 @@ + + + + + \ No newline at end of file diff --git a/pages/user/wallet/withdraw.vue b/pages/user/wallet/withdraw.vue index 3681cf7..096ac5a 100644 --- a/pages/user/wallet/withdraw.vue +++ b/pages/user/wallet/withdraw.vue @@ -1,19 +1,26 @@ @@ -37,4 +49,75 @@ const state = ref({ last: 1000, canUse: 10000 }) - \ No newline at end of file + + + \ No newline at end of file diff --git a/peach/api/common/file.js b/peach/api/common/file.js new file mode 100644 index 0000000..cf93524 --- /dev/null +++ b/peach/api/common/file.js @@ -0,0 +1,53 @@ +import { baseUrl, apiPath } from "@/peach/config"; + +const FileApi = { + // 上传文件 + uploadFile: (file) => { + const token = uni.getStorageSync("token"); + uni.showLoading({ + title: "上传中", + }); + return new Promise((resolve, reject) => { + uni.uploadFile({ + url: baseUrl + apiPath + "/infra/file/upload", + filePath: file, + name: "file", + header: { + // Accept: 'text/json', + Accept: "*/*", + "tenant-id": "1", + // Authorization: 'Bearer test247', + }, + success: (uploadFileRes) => { + let result = JSON.parse(uploadFileRes.data); + console.log(result); + if (result.error === 1) { + uni.showToast({ + icon: "none", + title: result.msg, + }); + } else { + uni.showToast({ + icon: "none", + title: "上传成功", + }); + return resolve(result); + } + }, + fail: (error) => { + console.log("上传失败:", error); + uni.showToast({ + title: "上传失败", + icon: "none", + }); + return resolve(false); + }, + complete: () => { + uni.hideLoading(); + }, + }); + }); + }, +}; + +export default FileApi; diff --git a/peach/api/member/point.js b/peach/api/member/point.js new file mode 100644 index 0000000..a4f62c3 --- /dev/null +++ b/peach/api/member/point.js @@ -0,0 +1,14 @@ +import request from "@/peach/request"; + +const PointApi = { + // 派发积分 + sendPoint: (data) => { + return request({ + url: "/particulars/point/send-member", + method: "POST", + data, + }); + }, +}; + +export default PointApi; diff --git a/peach/api/trade/goods.js b/peach/api/trade/goods.js new file mode 100644 index 0000000..4de984b --- /dev/null +++ b/peach/api/trade/goods.js @@ -0,0 +1,30 @@ +import request from "@/peach/request"; + +const GoodsApi = { + // 商品详情 + getProduct: (data) => { + return request({ + url: "/trade/order/page", + method: "GET", + params: data, + }); + }, + // 添加商品 + addProduct: (data) => { + return request({ + url: "/trade/order/page", + method: "POST", + data, + }); + }, + // 修改商品 + editProduct: (data) => { + return request({ + url: "/trade/order/page", + method: "POST", + data, + }); + }, +}; + +export default GoodsApi; diff --git a/peach/api/trade/order.js b/peach/api/trade/order.js new file mode 100644 index 0000000..75692c7 --- /dev/null +++ b/peach/api/trade/order.js @@ -0,0 +1,14 @@ +import request from "@/peach/request"; + +const OrderUtil = { + // 获取订单列表 + getOrderPage: (data) => { + return request({ + url: "/trade/order/page", + method: "GET", + params: data, + }); + }, +}; + +export default OrderUtil; diff --git a/peach/components/p-uploader/choose-and-upload-file.js b/peach/components/p-uploader/choose-and-upload-file.js new file mode 100644 index 0000000..ca6c1ae --- /dev/null +++ b/peach/components/p-uploader/choose-and-upload-file.js @@ -0,0 +1,227 @@ +"use strict"; +import FileApi from "@/peach/api/common/file"; + +const ERR_MSG_OK = "chooseAndUploadFile:ok"; +const ERR_MSG_FAIL = "chooseAndUploadFile:fail"; + +function chooseImage(opts) { + const { + count, + sizeType = ["original", "compressed"], + sourceType = ["album", "camera"], + extension, + } = opts; + return new Promise((resolve, reject) => { + uni.chooseImage({ + count, + sizeType, + sourceType, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res, "image")); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace("chooseImage:fail", ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseVideo(opts) { + const { + camera, + compressed, + maxDuration, + sourceType = ["album", "camera"], + extension, + } = opts; + return new Promise((resolve, reject) => { + uni.chooseVideo({ + camera, + compressed, + maxDuration, + sourceType, + extension, + success(res) { + const { tempFilePath, duration, size, height, width } = res; + resolve( + normalizeChooseAndUploadFileRes( + { + errMsg: "chooseVideo:ok", + tempFilePaths: [tempFilePath], + tempFiles: [ + { + name: (res.tempFile && res.tempFile.name) || "", + path: tempFilePath, + size, + type: (res.tempFile && res.tempFile.type) || "", + width, + height, + duration, + fileType: "video", + cloudPath: "", + }, + ], + }, + "video" + ) + ); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace("chooseVideo:fail", ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseAll(opts) { + const { count, extension } = opts; + return new Promise((resolve, reject) => { + let chooseFile = uni.chooseFile; + if ( + typeof wx !== "undefined" && + typeof wx.chooseMessageFile === "function" + ) { + chooseFile = wx.chooseMessageFile; + } + if (typeof chooseFile !== "function") { + return reject({ + errMsg: + ERR_MSG_FAIL + " 请指定 type 类型,该平台仅支持选择 image 或 video。", + }); + } + chooseFile({ + type: "all", + count, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res)); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace("chooseFile:fail", ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function normalizeChooseAndUploadFileRes(res, fileType) { + res.tempFiles.forEach((item, index) => { + if (!item.name) { + item.name = item.path.substring(item.path.lastIndexOf("/") + 1); + } + if (fileType) { + item.fileType = fileType; + } + item.cloudPath = + Date.now() + + "_" + + index + + item.name.substring(item.name.lastIndexOf(".")); + }); + if (!res.tempFilePaths) { + res.tempFilePaths = res.tempFiles.map((file) => file.path); + } + return res; +} + +function uploadCloudFiles(files, max = 5, onUploadProgress) { + files = JSON.parse(JSON.stringify(files)); + const len = files.length; + let count = 0; + let self = this; + return new Promise((resolve) => { + while (count < max) { + next(); + } + + function next() { + let cur = count++; + if (cur >= len) { + !files.find((item) => !item.url && !item.errMsg) && resolve(files); + return; + } + const fileItem = files[cur]; + const index = self.files.findIndex((v) => v.uuid === fileItem.uuid); + fileItem.url = ""; + delete fileItem.errMsg; + + uniCloud + .uploadFile({ + filePath: fileItem.path, + cloudPath: fileItem.cloudPath, + fileType: fileItem.fileType, + onUploadProgress: (res) => { + res.index = index; + onUploadProgress && onUploadProgress(res); + }, + }) + .then((res) => { + fileItem.url = res.fileID; + fileItem.index = index; + if (cur < len) { + next(); + } + }) + .catch((res) => { + fileItem.errMsg = res.errMsg || res.message; + fileItem.index = index; + if (cur < len) { + next(); + } + }); + } + }); +} + +function uploadFiles(choosePromise, { onChooseFile, onUploadProgress }) { + return choosePromise + .then((res) => { + if (onChooseFile) { + const customChooseRes = onChooseFile(res); + if (typeof customChooseRes !== "undefined") { + return Promise.resolve(customChooseRes).then((chooseRes) => + typeof chooseRes === "undefined" ? res : chooseRes + ); + } + } + return res; + }) + .then((res) => { + if (res === false) { + return { + errMsg: ERR_MSG_OK, + tempFilePaths: [], + tempFiles: [], + }; + } + return res; + }) + .then(async (files) => { + for (let file of files.tempFiles) { + const { data } = await FileApi.uploadFile(file.path); + file.url = data; + } + return files; + }); +} + +function chooseAndUploadFile( + opts = { + type: "all", + } +) { + if (opts.type === "image") { + return uploadFiles(chooseImage(opts), opts); + } else if (opts.type === "video") { + return uploadFiles(chooseVideo(opts), opts); + } + return uploadFiles(chooseAll(opts), opts); +} + +export { chooseAndUploadFile, uploadCloudFiles }; diff --git a/peach/components/p-uploader/p-uploader.vue b/peach/components/p-uploader/p-uploader.vue new file mode 100644 index 0000000..0030201 --- /dev/null +++ b/peach/components/p-uploader/p-uploader.vue @@ -0,0 +1,666 @@ + + + + + + diff --git a/peach/components/p-uploader/upload-file.vue b/peach/components/p-uploader/upload-file.vue new file mode 100644 index 0000000..abe56e9 --- /dev/null +++ b/peach/components/p-uploader/upload-file.vue @@ -0,0 +1,318 @@ + + + + + diff --git a/peach/components/p-uploader/upload-image.vue b/peach/components/p-uploader/upload-image.vue new file mode 100644 index 0000000..0ed1590 --- /dev/null +++ b/peach/components/p-uploader/upload-image.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/peach/components/p-uploader/utils.js b/peach/components/p-uploader/utils.js new file mode 100644 index 0000000..7b40d21 --- /dev/null +++ b/peach/components/p-uploader/utils.js @@ -0,0 +1,110 @@ +/** + * 获取文件名和后缀 + * @param {String} name + */ +export const get_file_ext = (name) => { + const last_len = name.lastIndexOf("."); + const len = name.length; + return { + name: name.substring(0, last_len), + ext: name.substring(last_len + 1, len), + }; +}; + +/** + * 获取扩展名 + * @param {Array} fileExtname + */ +export const get_extname = (fileExtname) => { + if (!Array.isArray(fileExtname)) { + let extname = fileExtname.replace(/(\[|\])/g, ""); + return extname.split(","); + } else { + return fileExtname; + } + return []; +}; + +/** + * 获取文件和检测是否可选 + */ +export const get_files_and_is_max = (res, _extname) => { + let filePaths = []; + let files = []; + if (!_extname || _extname.length === 0) { + return { + filePaths, + files, + }; + } + res.tempFiles.forEach((v) => { + let fileFullName = get_file_ext(v.name); + const extname = fileFullName.ext.toLowerCase(); + if (_extname.indexOf(extname) !== -1) { + files.push(v); + filePaths.push(v.path); + } + }); + if (files.length !== res.tempFiles.length) { + uni.showToast({ + title: `当前选择了${res.tempFiles.length}个文件 ,${ + res.tempFiles.length - files.length + } 个文件格式不正确`, + icon: "none", + duration: 5000, + }); + } + + return { + filePaths, + files, + }; +}; + +/** + * 获取图片信息 + * @param {Object} filepath + */ +export const get_file_info = (filepath) => { + return new Promise((resolve, reject) => { + uni.getImageInfo({ + src: filepath, + success(res) { + resolve(res); + }, + fail(err) { + reject(err); + }, + }); + }); +}; +/** + * 获取封装数据 + */ +export const get_file_data = async (files, type = "image") => { + // 最终需要上传数据库的数据 + let fileFullName = get_file_ext(files.name); + const extname = fileFullName.ext.toLowerCase(); + let filedata = { + name: files.name, + uuid: files.uuid, + extname: extname || "", + cloudPath: files.cloudPath, + fileType: files.fileType, + url: files.path || files.path, + size: files.size, //单位是字节 + image: {}, + path: files.path, + video: {}, + }; + if (type === "image") { + const imageinfo = await get_file_info(files.path); + delete filedata.video; + filedata.image.width = imageinfo.width; + filedata.image.height = imageinfo.height; + filedata.image.location = imageinfo.path; + } else { + delete filedata.image; + } + return filedata; +}; diff --git a/peach/scss/_tools.scss b/peach/scss/_tools.scss index a1702e5..7699ea0 100644 --- a/peach/scss/_tools.scss +++ b/peach/scss/_tools.scss @@ -104,7 +104,7 @@ margin padding: 内外边距 ==================== */ -@for $i from 0 through 100 { +@for $i from 0 through 200 { // 只要双数和能被5除尽的数 @if $i % 2==0 or $i % 5==0 { // 得出:u-margin-30或者u-m-30 diff --git a/static/upload-camera.png b/static/upload-camera.png new file mode 100644 index 0000000000000000000000000000000000000000..e304e25ec1e974dd1ada24753556fbb00d67e2b0 GIT binary patch literal 7663 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 BR&M|R literal 0 HcmV?d00001 diff --git a/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue index 59b0528..b295967 100644 --- a/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue +++ b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue @@ -1,627 +1,628 @@