From 4ea873c1bd9fb068dcc7400f9df0679acb4b5ab3 Mon Sep 17 00:00:00 2001 From: liguigong Date: Fri, 19 Sep 2025 19:27:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(fittingRoom):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=AF=95=E8=A1=A3=E9=97=B4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 fittingRoom 存储模块,用于管理试衣间状态和数据 - 实现试衣间页面布局和基础功能,包括轮播图、标签页、衣服网格等组件 - 开发选择模特和上传衣服功能 - 优化页面样式和交互 --- main.js | 4 +- pages/fittingRoom/components/STabs.vue | 95 +++ .../fittingRoom/components/s-grid-clothes.vue | 104 +++ .../fittingRoom/components/s-select-mote.vue | 79 ++ pages/fittingRoom/index.vue | 69 +- .../component/CustomSwiper/CustomSwiper.vue | 570 +++++++------- sheep/store/fittingRoom.js | 44 ++ static/mote.png | Bin 0 -> 296365 bytes static/shangchuan.png | Bin 0 -> 2235 bytes static/uploads/1.png | Bin 0 -> 6162 bytes static/yifu.png | Bin 0 -> 33813 bytes static/yifu1.png | Bin 0 -> 95642 bytes uni_modules/uni-file-picker/changelog.md | 89 +++ .../uni-file-picker/choose-and-upload-file.js | 287 +++++++ .../uni-file-picker/uni-file-picker.vue | 680 ++++++++++++++++ .../uni-file-picker/upload-file.vue | 323 ++++++++ .../uni-file-picker/upload-image.vue | 285 +++++++ .../components/uni-file-picker/utils.js | 110 +++ uni_modules/uni-file-picker/package.json | 105 +++ uni_modules/uni-file-picker/readme.md | 11 + uni_modules/uv-sticky/changelog.md | 11 + .../uv-sticky/components/uv-sticky/props.js | 41 + .../components/uv-sticky/uv-sticky.vue | 223 ++++++ uni_modules/uv-sticky/package.json | 87 +++ uni_modules/uv-sticky/readme.md | 11 + uni_modules/uv-ui-tools/changelog.md | 76 ++ .../components/uv-ui-tools/uv-ui-tools.vue | 6 + uni_modules/uv-ui-tools/index.js | 79 ++ uni_modules/uv-ui-tools/index.scss | 7 + uni_modules/uv-ui-tools/libs/config/config.js | 34 + uni_modules/uv-ui-tools/libs/css/color.scss | 32 + uni_modules/uv-ui-tools/libs/css/common.scss | 100 +++ .../uv-ui-tools/libs/css/components.scss | 23 + .../uv-ui-tools/libs/css/variable.scss | 111 +++ uni_modules/uv-ui-tools/libs/css/vue.scss | 40 + .../libs/function/colorGradient.js | 134 ++++ .../uv-ui-tools/libs/function/debounce.js | 29 + .../uv-ui-tools/libs/function/digit.js | 167 ++++ .../uv-ui-tools/libs/function/index.js | 734 ++++++++++++++++++ .../uv-ui-tools/libs/function/platform.js | 75 ++ uni_modules/uv-ui-tools/libs/function/test.js | 287 +++++++ .../uv-ui-tools/libs/function/throttle.js | 30 + .../libs/luch-request/adapters/index.js | 132 ++++ .../luch-request/core/InterceptorManager.js | 51 ++ .../libs/luch-request/core/Request.js | 201 +++++ .../libs/luch-request/core/buildFullPath.js | 20 + .../libs/luch-request/core/defaults.js | 33 + .../libs/luch-request/core/dispatchRequest.js | 6 + .../libs/luch-request/core/mergeConfig.js | 126 +++ .../libs/luch-request/core/settle.js | 16 + .../libs/luch-request/helpers/buildURL.js | 64 ++ .../libs/luch-request/helpers/combineURLs.js | 14 + .../luch-request/helpers/isAbsoluteURL.js | 14 + .../uv-ui-tools/libs/luch-request/index.d.ts | 197 +++++ .../uv-ui-tools/libs/luch-request/index.js | 2 + .../uv-ui-tools/libs/luch-request/utils.js | 135 ++++ .../libs/luch-request/utils/clone.js | 264 +++++++ uni_modules/uv-ui-tools/libs/mixin/button.js | 13 + uni_modules/uv-ui-tools/libs/mixin/mixin.js | 172 ++++ uni_modules/uv-ui-tools/libs/mixin/mpMixin.js | 8 + uni_modules/uv-ui-tools/libs/mixin/mpShare.js | 13 + .../uv-ui-tools/libs/mixin/openType.js | 47 ++ uni_modules/uv-ui-tools/libs/mixin/touch.js | 59 ++ uni_modules/uv-ui-tools/libs/util/dayjs.js | 216 ++++++ uni_modules/uv-ui-tools/libs/util/route.js | 126 +++ uni_modules/uv-ui-tools/package.json | 81 ++ uni_modules/uv-ui-tools/readme.md | 23 + uni_modules/uv-ui-tools/theme.scss | 43 + uni_modules/v-tabs/changelog.md | 149 ++++ uni_modules/v-tabs/components/v-tabs/props.js | 100 +++ uni_modules/v-tabs/components/v-tabs/utils.js | 110 +++ .../v-tabs/components/v-tabs/v-tabs.vue | 296 +++++++ uni_modules/v-tabs/package.json | 85 ++ uni_modules/v-tabs/readme.md | 276 +++++++ 74 files changed, 7963 insertions(+), 321 deletions(-) create mode 100644 pages/fittingRoom/components/STabs.vue create mode 100644 pages/fittingRoom/components/s-grid-clothes.vue create mode 100644 pages/fittingRoom/components/s-select-mote.vue create mode 100644 sheep/store/fittingRoom.js create mode 100644 static/mote.png create mode 100644 static/shangchuan.png create mode 100644 static/uploads/1.png create mode 100644 static/yifu.png create mode 100644 static/yifu1.png create mode 100644 uni_modules/uni-file-picker/changelog.md create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/utils.js create mode 100644 uni_modules/uni-file-picker/package.json create mode 100644 uni_modules/uni-file-picker/readme.md create mode 100644 uni_modules/uv-sticky/changelog.md create mode 100644 uni_modules/uv-sticky/components/uv-sticky/props.js create mode 100644 uni_modules/uv-sticky/components/uv-sticky/uv-sticky.vue create mode 100644 uni_modules/uv-sticky/package.json create mode 100644 uni_modules/uv-sticky/readme.md create mode 100644 uni_modules/uv-ui-tools/changelog.md create mode 100644 uni_modules/uv-ui-tools/components/uv-ui-tools/uv-ui-tools.vue create mode 100644 uni_modules/uv-ui-tools/index.js create mode 100644 uni_modules/uv-ui-tools/index.scss create mode 100644 uni_modules/uv-ui-tools/libs/config/config.js create mode 100644 uni_modules/uv-ui-tools/libs/css/color.scss create mode 100644 uni_modules/uv-ui-tools/libs/css/common.scss create mode 100644 uni_modules/uv-ui-tools/libs/css/components.scss create mode 100644 uni_modules/uv-ui-tools/libs/css/variable.scss create mode 100644 uni_modules/uv-ui-tools/libs/css/vue.scss create mode 100644 uni_modules/uv-ui-tools/libs/function/colorGradient.js create mode 100644 uni_modules/uv-ui-tools/libs/function/debounce.js create mode 100644 uni_modules/uv-ui-tools/libs/function/digit.js create mode 100644 uni_modules/uv-ui-tools/libs/function/index.js create mode 100644 uni_modules/uv-ui-tools/libs/function/platform.js create mode 100644 uni_modules/uv-ui-tools/libs/function/test.js create mode 100644 uni_modules/uv-ui-tools/libs/function/throttle.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/adapters/index.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/core/InterceptorManager.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/core/Request.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/core/buildFullPath.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/core/defaults.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/core/dispatchRequest.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/core/mergeConfig.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/core/settle.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/helpers/buildURL.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/helpers/combineURLs.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/index.d.ts create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/index.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/utils.js create mode 100644 uni_modules/uv-ui-tools/libs/luch-request/utils/clone.js create mode 100644 uni_modules/uv-ui-tools/libs/mixin/button.js create mode 100644 uni_modules/uv-ui-tools/libs/mixin/mixin.js create mode 100644 uni_modules/uv-ui-tools/libs/mixin/mpMixin.js create mode 100644 uni_modules/uv-ui-tools/libs/mixin/mpShare.js create mode 100644 uni_modules/uv-ui-tools/libs/mixin/openType.js create mode 100644 uni_modules/uv-ui-tools/libs/mixin/touch.js create mode 100644 uni_modules/uv-ui-tools/libs/util/dayjs.js create mode 100644 uni_modules/uv-ui-tools/libs/util/route.js create mode 100644 uni_modules/uv-ui-tools/package.json create mode 100644 uni_modules/uv-ui-tools/readme.md create mode 100644 uni_modules/uv-ui-tools/theme.scss create mode 100644 uni_modules/v-tabs/changelog.md create mode 100644 uni_modules/v-tabs/components/v-tabs/props.js create mode 100644 uni_modules/v-tabs/components/v-tabs/utils.js create mode 100644 uni_modules/v-tabs/components/v-tabs/v-tabs.vue create mode 100644 uni_modules/v-tabs/package.json create mode 100644 uni_modules/v-tabs/readme.md diff --git a/main.js b/main.js index 2680ac6..d11ea7c 100644 --- a/main.js +++ b/main.js @@ -2,11 +2,9 @@ import App from './App'; import { createSSRApp } from 'vue'; import { setupPinia } from './sheep/store'; - export function createApp() { - const app = createSSRApp(App); - + setupPinia(app); return { diff --git a/pages/fittingRoom/components/STabs.vue b/pages/fittingRoom/components/STabs.vue new file mode 100644 index 0000000..e378250 --- /dev/null +++ b/pages/fittingRoom/components/STabs.vue @@ -0,0 +1,95 @@ + + + + diff --git a/pages/fittingRoom/components/s-grid-clothes.vue b/pages/fittingRoom/components/s-grid-clothes.vue new file mode 100644 index 0000000..d9be4d2 --- /dev/null +++ b/pages/fittingRoom/components/s-grid-clothes.vue @@ -0,0 +1,104 @@ + + + + diff --git a/pages/fittingRoom/components/s-select-mote.vue b/pages/fittingRoom/components/s-select-mote.vue new file mode 100644 index 0000000..89f7c34 --- /dev/null +++ b/pages/fittingRoom/components/s-select-mote.vue @@ -0,0 +1,79 @@ + + + + diff --git a/pages/fittingRoom/index.vue b/pages/fittingRoom/index.vue index 2ee1a01..08f80ab 100644 --- a/pages/fittingRoom/index.vue +++ b/pages/fittingRoom/index.vue @@ -1,30 +1,42 @@ - - diff --git a/sheep/store/fittingRoom.js b/sheep/store/fittingRoom.js new file mode 100644 index 0000000..ea614a1 --- /dev/null +++ b/sheep/store/fittingRoom.js @@ -0,0 +1,44 @@ +import { defineStore } from 'pinia'; +import app from './app'; + +const fittingRoom = defineStore({ + id: 'fittingRoom', + state: () => ({ + visable: false, // 上传模特, 选模特的 + type: true, // true: 我的衣橱, false: 衣服库 + tab: 0, // 对应下面tabs的序号 + tabs: ['全部', '上衣', '下装', '连衣裙', '外套', '发型'], + currentClothes: [], // 当前选的衣服 + }), + getters: { + // 能上传图片的场景 + canUpload(state) { + console.log(this.type, this.tab, state.type, '123'); + return this.type && this.tab > 0; + }, + }, + actions: { + setVisable(visable) { + console.log('🚀 ~ setVisable 🐶15 ~ visable: ', visable); + this.visable = visable ?? !this.visable; + }, + changeType(visable) { + console.log('🚀 ~ setVisable 🐶15 ~ visable: ', visable); + this.type = visable ?? !this.type; + }, + // 点击衣服 + changeClothes() { + console.log('切换衣服'); + }, + }, + persist: { + enabled: true, + strategies: [ + { + key: 'fittingRoom-store', + }, + ], + }, +}); + +export default fittingRoom; diff --git a/static/mote.png b/static/mote.png new file mode 100644 index 0000000000000000000000000000000000000000..8c08a801ab3ae52126fcfae46d2dfec9237df0e8 GIT binary patch literal 296365 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
S;|N+F9j-fg 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

  • -tP$NZ`{gbDUD1h3_FIQBDo41Q#hUre) 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:EKN3$%;Io1&vWWEUkPb8BdU=aYx|!pr1R+)oH=l*lK?#t|Yw9i+tVNM*I7sC0HXa^MhF>F&j7fi+jx;KgU3 zMGIe3(h^t#2YInv!p_i2iA3UB)z2qt9bG8_WRck=U{Wk6Nes2xqwLmH?^8S)`hv7=kzm65rUq1XS7CN`j_#7EQf|64ZL~C^Ncd@G zIi=huEv|G%N!z)(Io!N+TP5vhj~~@QMv3|HI6YLxVyLUD$FYNl@cz&sxu1~oMIMsl ze#-PM4NY2qI3ry{c`YQ*Oj10&wDR0;LqS-qI>{}Q40?&fabP3JY`qKuK}I+#sg-=2 z$B|SC;cb?dm$0(DqTnc-dZfj#eO)V|3HHYQjS5t%_1w>`b0>V;2;`F zsx~#%(d{{fwS_rVorXvtOB1;U650m$;h1wOV0yy=R8iJWrXzH-qEbW&k!t7}9{Yb$ZfsTNft zr8N+-v?}>p0r;tWiB+R*k?ng*+w3?Tn_h*W&)ETh-Q8WvtI73S79u<#B{B$B$+QAa zPO|s+teYJlrB>=)9L{!7zI;|}iP9DK`6WKCDwRcCmj9z^ht_MOJA#eWb&&<^_XaJ~ zpVo$KC@zDvh0!t!Zl@B*>O$E+ZUWcT^b~GYV7{XE_y-}Cv;eGYZ?4ZI#vb&K+dE_qXi!)_etu+CZT zU#EQ!=VP7v=+cSoy~cBkN1|wLY^JN{rv+%$49ZB08P4xPBwl`!hE)*(n;yVLeW^a$ zLbtHxZqj+H>S!OQk(WNLfK|ilmT8ZCiBXZm#ey+xNj7U&rIYq9TE|7jlN15MYMm>k zNHbY;os3rb*J1rcxOi&mN=dDoW~xyUF4pQ`NJ(f3_7mAxGNTt)mX+U;=5(?cCDun4 znVSTVettT0YSW86m==LA=X_WE%)Qn^1-VgMm9D6CY~^8;I)_r_DdhK^Qq#%~ z!?>#^&W;EEmAn{vKj5S82ak_SmD~JJdzdO!xw&W)(u7U;2wE{0Ke&uzM-OQpl8~K3 zDht1&Qh1)>w@WF=vs+?l#HDCyZo#LXe;yMP6Us@53sU6|>SB|?H_&a6c%JLGZlbZJ zNnNW@FwAYLAfbQivPpek?n}x>%LbxC)whkelN%F=rak>-{s!mWBCo7#VHDOU=gVON1Jxch-vUGzYO9<4` zg`rFoqm|&Rt3jARv^JThMV8~XZgsC*v?Ov|xX!GpKqF*!E}howZMTxKP-$PlLC#4k z^+}oYU{zQp@ zo}hw;@GwHcOXWh39bzE)We#2=>D?to;xpv00KBDfNDLt{YGGI=D%W&8-;$u9v zdKf<{59&R@c|aqtQdxDOa_UAo>>FKxCLu0{-)G(UVv1^#XZ}X9ZWgt0Oxw94(OFFr zRxF|mZ@;Z&L-+67r)4K3a#?e(2pHm`d4jY$$hX8JRG#8gXqG8oQ24+1xD>2JhR;fM2$lIABEM-O^e>&(eCEpI@Zx zPhN@V=M*>7AxfTCfyU4xWhn(! zH?8t#Us{=Osi@fd9pxg8_xPbbz}fXt{M?jKd|50h0Ub$opjtG^r+j^F7uoiXcjiQ6xP!+*gve=n=-46>`w!`fdzCMh3-e*l??E2X4i}64* zdM(Ok^Ke?^u#l8lyFBK;zI`NB{Te0fa*^+dBsHNkgS0LnNoQ~v8{Hx0Goom%@JTH( zEvHYO!u9Ldt)xtc-B^#VoAeA%@bglZ!ezRYn9gbcJGwxcHSX1#$#J?{-fD6jw1A{m zjnhXGIJyjHI!aeBqyd0Z!c^+-Na;`oJ}zc=&Y>MYr4PAVcnia&?w_Hxf}tQ_!s_)M z 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 { + // 微信由于旧接口不再维护,针对微信小程序平台改用chooseMedia接口 + // #ifdef MP-WEIXIN + uni.chooseMedia({ + count, + sizeType, + sourceType, + mediaType: ['image'], + extension, + success(res) { + res.tempFiles.forEach(item => { + item.path = item.tempFilePath; + }) + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }) + // #endif + // #ifndef MP-WEIXIN + uni.chooseImage({ + count, + sizeType, + sourceType, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }); + // #endif + + }); +} + +function chooseVideo(opts) { + const { + count, + camera, + compressed, + maxDuration, + sourceType, + extension + } = opts; + return new Promise((resolve, reject) => { + // 微信由于旧接口不再维护,针对微信小程序平台改用chooseMedia接口 + // #ifdef MP-WEIXIN + uni.chooseMedia({ + count, + compressed, + maxDuration, + sourceType, + extension, + mediaType: ['video'], + success(res) { + const { + tempFiles, + } = res; + resolve(normalizeChooseAndUploadFileRes({ + errMsg: 'chooseVideo:ok', + tempFiles: tempFiles.map(item => { + return { + name: item.name || '', + path: item.tempFilePath, + thumbTempFilePath: item.thumbTempFilePath, + size:item.size, + type: (res.tempFile && res.tempFile.type) || '', + width:item.width, + height:item.height, + duration:item.duration, + fileType: 'video', + cloudPath: '', + } + }), + }, 'video')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL), + }); + }, + }) + // #endif + // #ifndef MP-WEIXIN + 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), + }); + }, + }); + // #endif + }); +} + +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 + }) +} + +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/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue new file mode 100644 index 0000000..51f9e21 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue @@ -0,0 +1,680 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue new file mode 100644 index 0000000..0d26379 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue @@ -0,0 +1,323 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue new file mode 100644 index 0000000..0ce5eb7 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js new file mode 100644 index 0000000..1bc9259 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/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, + thumbTempFilePath: files.thumbTempFilePath, + 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/uni_modules/uni-file-picker/package.json b/uni_modules/uni-file-picker/package.json new file mode 100644 index 0000000..9e2e080 --- /dev/null +++ b/uni_modules/uni-file-picker/package.json @@ -0,0 +1,105 @@ +{ + "id": "uni-file-picker", + "displayName": "uni-file-picker 文件选择上传", + "version": "1.1.2", + "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间", + "keywords": [ + "uni-ui", + "uniui", + "图片上传", + "文件上传" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "", + "uni-app": "^4.33", + "uni-app-x": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue", + "darkmode": "x", + "i18n": "x", + "widescreen": "x" + }, + "uni_modules": { + "dependencies": [ + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "√", + "aliyun": "√", + "alipay": "√" + }, + "client": { + "uni-app": { + "vue": { + "vue2": "√", + "vue3": "√" + }, + "web": { + "safari": "√", + "chrome": "√" + }, + "app": { + "vue": "√", + "nvue": "-", + "android": "√", + "ios": "√", + "harmony": "√" + }, + "mp": { + "weixin": "√", + "alipay": "√", + "toutiao": "√", + "baidu": "√", + "kuaishou": "√", + "jd": "-", + "harmony": "-", + "qq": "√", + "lark": "-" + }, + "quickapp": { + "huawei": "√", + "union": "√" + } + }, + "uni-app-x": { + "web": { + "safari": "-", + "chrome": "-" + }, + "app": { + "android": "-", + "ios": "-", + "harmony": "-" + }, + "mp": { + "weixin": "-" + } + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-file-picker/readme.md b/uni_modules/uni-file-picker/readme.md new file mode 100644 index 0000000..c8399a5 --- /dev/null +++ b/uni_modules/uni-file-picker/readme.md @@ -0,0 +1,11 @@ + +## FilePicker 文件选择上传 + +> **组件名:uni-file-picker** +> 代码块: `uFilePicker` + + +文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uv-sticky/changelog.md b/uni_modules/uv-sticky/changelog.md new file mode 100644 index 0000000..c079cce --- /dev/null +++ b/uni_modules/uv-sticky/changelog.md @@ -0,0 +1,11 @@ +## 1.0.4(2023-12-20) +1. 优化 +## 1.0.3(2023-10-13) +1. unmounted兼容vue3 +## 1.0.2(2023-08-27) +1. 优化 +## 1.0.1(2023-05-16) +1. 优化组件依赖,修改后无需全局引入,组件导入即可使用 +2. 优化部分功能 +## 1.0.0(2023-05-10) +uv-sticky 吸顶 diff --git a/uni_modules/uv-sticky/components/uv-sticky/props.js b/uni_modules/uv-sticky/components/uv-sticky/props.js new file mode 100644 index 0000000..e7d2d2e --- /dev/null +++ b/uni_modules/uv-sticky/components/uv-sticky/props.js @@ -0,0 +1,41 @@ +export default { + props: { + // 吸顶容器到顶部某个距离的时候,进行吸顶,在H5平台,NavigationBar为44px + offsetTop: { + type: [String, Number], + default: 0 + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + // #ifdef H5 + // H5端的导航栏属于“自定义”导航栏的范畴,因为它是非原生的,与普通元素一致 + default: 44, + // #endif + // #ifndef H5 + default: 0 + // #endif + }, + // 是否禁用吸顶功能 + disabled: { + type: Boolean, + default: false + }, + // 吸顶区域的背景颜色 + bgColor: { + type: String, + default: 'transparent' + }, + // z-index值 + zIndex: { + type: [String, Number], + default: '' + }, + // 列表中的索引值 + index: { + type: [String, Number], + default: '' + }, + ...uni.$uv?.props?.sticky + } +} \ No newline at end of file diff --git a/uni_modules/uv-sticky/components/uv-sticky/uv-sticky.vue b/uni_modules/uv-sticky/components/uv-sticky/uv-sticky.vue new file mode 100644 index 0000000..4ca7b45 --- /dev/null +++ b/uni_modules/uv-sticky/components/uv-sticky/uv-sticky.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/uni_modules/uv-sticky/package.json b/uni_modules/uv-sticky/package.json new file mode 100644 index 0000000..036f922 --- /dev/null +++ b/uni_modules/uv-sticky/package.json @@ -0,0 +1,87 @@ +{ + "id": "uv-sticky", + "displayName": "uv-sticky 吸顶 全面兼容小程序、nvue、vue2、vue3等多端", + "version": "1.0.4", + "description": "吸顶组件与CSS中position: sticky属性实现的效果一致,当组件达到预设的到顶部距离时, 就会固定在指定位置,组件位置大于预设的顶部距离时,会重新按照正常的布局排列。", + "keywords": [ + "uv-sticky", + "uvui", + "uv-ui", + "sticky", + "吸顶" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [ + "uv-ui-tools" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uv-sticky/readme.md b/uni_modules/uv-sticky/readme.md new file mode 100644 index 0000000..c9319a6 --- /dev/null +++ b/uni_modules/uv-sticky/readme.md @@ -0,0 +1,11 @@ +## Sticky 吸顶 + +> **组件名:uv-sticky** + +该组件与CSS中position: sticky属性实现的效果一致,当组件达到预设的到顶部距离时, 就会固定在指定位置,组件位置大于预设的顶部距离时,会重新按照正常的布局排列。 + +### 查看文档 + +### [完整示例项目下载 | 关注更多组件](https://ext.dcloud.net.cn/plugin?name=uv-ui) + +#### 如使用过程中有任何问题,或者您对uv-ui有一些好的建议,欢迎加入 uv-ui 交流群:uv-ui官方QQ群 diff --git a/uni_modules/uv-ui-tools/changelog.md b/uni_modules/uv-ui-tools/changelog.md new file mode 100644 index 0000000..998373e --- /dev/null +++ b/uni_modules/uv-ui-tools/changelog.md @@ -0,0 +1,76 @@ +## 1.1.25(2024-01-20) +1.1.20版本更新 +## 1.1.24(2023-12-21) +1. luch-request更新 +## 1.1.23(2023-12-12) +1. 1.1.19版本 +## 1.1.22(2023-11-28) +1. 优化 +## 1.1.21(2023-11-10) +1. 1.1.17版本 +## 1.1.20(2023-10-30) +1. 1.1.16版本 +## 1.1.19(2023-10-13) +1. 兼容vue3 +## 1.1.18(2023-10-12) +1. 1.1.15版本 +## 1.1.17(2023-09-27) +1. 1.1.14版本发布 +## 1.1.16(2023-09-15) +1. 1.1.13版本发布 +## 1.1.15(2023-09-15) +1. 更新button.js相关按钮支持open-type="agreePrivacyAuthorization" +## 1.1.14(2023-09-14) +1. 优化dayjs +## 1.1.13(2023-09-13) +1. 优化,$uv中增加unit参数,方便组件中使用 +## 1.1.12(2023-09-10) +1. 升级版本 +## 1.1.11(2023-09-04) +1. 1.1.11版本 +## 1.1.10(2023-08-31) +1. 修复customStyle和customClass存在冲突的问题 +## 1.1.9(2023-08-27) +1. 版本升级 +2. 优化 +## 1.1.8(2023-08-24) +1. 版本升级 +## 1.1.7(2023-08-22) +1. 版本升级 +## 1.1.6(2023-08-18) +uvui版本:1.1.6 +## 1.0.15(2023-08-14) +1. 更新uvui版本号 +## 1.0.13(2023-08-06) +1. 优化 +## 1.0.12(2023-08-06) +1. 修改版本号 +## 1.0.11(2023-08-06) +1. 路由增加events参数 +2. 路由拦截修复 +## 1.0.10(2023-08-01) +1. 优化 +## 1.0.9(2023-06-28) +优化openType.js +## 1.0.8(2023-06-15) +1. 修改支付宝报错的BUG +## 1.0.7(2023-06-07) +1. 解决微信小程序使用uvui提示 Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors +2. 解决上述提示,需要在uni.scss配置$uvui-nvue-style: false; 然后在APP.vue下面引入uvui内置的基础样式:@import '@/uni_modules/uv-ui-tools/index.scss'; +## 1.0.6(2023-06-04) +1. uv-ui-tools 优化工具组件,兼容更多功能 +2. 小程序分享功能优化等 +## 1.0.5(2023-06-02) +1. 修改扩展使用mixin中方法的问题 +## 1.0.4(2023-05-23) +1. 兼容百度小程序修改bem函数 +## 1.0.3(2023-05-16) +1. 优化组件依赖,修改后无需全局引入,组件导入即可使用 +2. 优化部分功能 +## 1.0.2(2023-05-10) +1. 增加Http请求封装 +2. 优化 +## 1.0.1(2023-05-04) +1. 修改名称及备注 +## 1.0.0(2023-05-04) +1. uv-ui工具集首次发布 diff --git a/uni_modules/uv-ui-tools/components/uv-ui-tools/uv-ui-tools.vue b/uni_modules/uv-ui-tools/components/uv-ui-tools/uv-ui-tools.vue new file mode 100644 index 0000000..baf45e9 --- /dev/null +++ b/uni_modules/uv-ui-tools/components/uv-ui-tools/uv-ui-tools.vue @@ -0,0 +1,6 @@ + + + diff --git a/uni_modules/uv-ui-tools/index.js b/uni_modules/uv-ui-tools/index.js new file mode 100644 index 0000000..71a8b66 --- /dev/null +++ b/uni_modules/uv-ui-tools/index.js @@ -0,0 +1,79 @@ +// 全局挂载引入http相关请求拦截插件 +import Request from './libs/luch-request' + +// 引入全局mixin +import mixin from './libs/mixin/mixin.js' +// 小程序特有的mixin +import mpMixin from './libs/mixin/mpMixin.js' +// #ifdef MP +import mpShare from './libs/mixin/mpShare.js' +// #endif + +// 路由封装 +import route from './libs/util/route.js' +// 公共工具函数 +import * as index from './libs/function/index.js' +// 防抖方法 +import debounce from './libs/function/debounce.js' +// 节流方法 +import throttle from './libs/function/throttle.js' +// 规则检验 +import * as test from './libs/function/test.js' + +// 颜色渐变相关,colorGradient-颜色渐变,hexToRgb-十六进制颜色转rgb颜色,rgbToHex-rgb转十六进制 +import * as colorGradient from './libs/function/colorGradient.js' + +// 配置信息 +import config from './libs/config/config.js' +// 平台 +import platform from './libs/function/platform' + +const $uv = { + route, + config, + test, + date: index.timeFormat, // 另名date + ...index, + colorGradient: colorGradient.colorGradient, + hexToRgb: colorGradient.hexToRgb, + rgbToHex: colorGradient.rgbToHex, + colorToRgba: colorGradient.colorToRgba, + http: new Request(), + debounce, + throttle, + platform, + mixin, + mpMixin +} +uni.$uv = $uv; +const install = (Vue,options={}) => { + // #ifndef APP-NVUE + const cloneMixin = index.deepClone(mixin); + delete cloneMixin?.props?.customClass; + delete cloneMixin?.props?.customStyle; + Vue.mixin(cloneMixin); + // #ifdef MP + if(options.mpShare){ + Vue.mixin(mpShare); + } + // #endif + // #endif + // #ifdef VUE2 + // 时间格式化,同时两个名称,date和timeFormat + Vue.filter('timeFormat', (timestamp, format) => uni.$uv.timeFormat(timestamp, format)); + Vue.filter('date', (timestamp, format) => uni.$uv.timeFormat(timestamp, format)); + // 将多久以前的方法,注入到全局过滤器 + Vue.filter('timeFrom', (timestamp, format) => uni.$uv.timeFrom(timestamp, format)); + // 同时挂载到uni和Vue.prototype中 + // #ifndef APP-NVUE + // 只有vue,挂载到Vue.prototype才有意义,因为nvue中全局Vue.prototype和Vue.mixin是无效的 + Vue.prototype.$uv = $uv; + // #endif + // #endif + // #ifdef VUE3 + Vue.config.globalProperties.$uv = $uv; + // #endif +} +export default { + install +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/index.scss b/uni_modules/uv-ui-tools/index.scss new file mode 100644 index 0000000..8d05b8d --- /dev/null +++ b/uni_modules/uv-ui-tools/index.scss @@ -0,0 +1,7 @@ +// 引入公共基础类 +@import "./libs/css/common.scss"; + +// 非nvue的样式 +/* #ifndef APP-NVUE */ +@import "./libs/css/vue.scss"; +/* #endif */ \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/config/config.js b/uni_modules/uv-ui-tools/libs/config/config.js new file mode 100644 index 0000000..f18ae74 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/config/config.js @@ -0,0 +1,34 @@ +// 此版本发布于2024-01-20 +const version = '1.1.20' + +// 开发环境才提示,生产环境不会提示 +if (process.env.NODE_ENV === 'development') { + console.log(`\n %c uvui V${version} https://www.uvui.cn/ \n\n`, 'color: #ffffff; background: #3c9cff; padding:5px 0; border-radius: 5px;'); +} + +export default { + v: version, + version, + // 主题名称 + type: [ + 'primary', + 'success', + 'info', + 'error', + 'warning' + ], + // 颜色部分,本来可以通过scss的:export导出供js使用,但是奈何nvue不支持 + color: { + 'uv-primary': '#2979ff', + 'uv-warning': '#ff9900', + 'uv-success': '#19be6b', + 'uv-error': '#fa3534', + 'uv-info': '#909399', + 'uv-main-color': '#303133', + 'uv-content-color': '#606266', + 'uv-tips-color': '#909399', + 'uv-light-color': '#c0c4cc' + }, + // 默认单位,可以通过配置为rpx,那么在用于传入组件大小参数为数值时,就默认为rpx + unit: 'px' +} diff --git a/uni_modules/uv-ui-tools/libs/css/color.scss b/uni_modules/uv-ui-tools/libs/css/color.scss new file mode 100644 index 0000000..ce65743 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/color.scss @@ -0,0 +1,32 @@ +$uv-main-color: #303133 !default; +$uv-content-color: #606266 !default; +$uv-tips-color: #909193 !default; +$uv-light-color: #c0c4cc !default; +$uv-border-color: #dadbde !default; +$uv-bg-color: #f3f4f6 !default; +$uv-disabled-color: #c8c9cc !default; + +$uv-primary: #3c9cff !default; +$uv-primary-dark: #398ade !default; +$uv-primary-disabled: #9acafc !default; +$uv-primary-light: #ecf5ff !default; + +$uv-warning: #f9ae3d !default; +$uv-warning-dark: #f1a532 !default; +$uv-warning-disabled: #f9d39b !default; +$uv-warning-light: #fdf6ec !default; + +$uv-success: #5ac725 !default; +$uv-success-dark: #53c21d !default; +$uv-success-disabled: #a9e08f !default; +$uv-success-light: #f5fff0; + +$uv-error: #f56c6c !default; +$uv-error-dark: #e45656 !default; +$uv-error-disabled: #f7b2b2 !default; +$uv-error-light: #fef0f0 !default; + +$uv-info: #909399 !default; +$uv-info-dark: #767a82 !default; +$uv-info-disabled: #c4c6c9 !default; +$uv-info-light: #f4f4f5 !default; diff --git a/uni_modules/uv-ui-tools/libs/css/common.scss b/uni_modules/uv-ui-tools/libs/css/common.scss new file mode 100644 index 0000000..7ab99f8 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/common.scss @@ -0,0 +1,100 @@ +// 超出行数,自动显示行尾省略号,最多5行 +// 来自uvui的温馨提示:当您在控制台看到此报错,说明需要在App.vue的style标签加上【lang="scss"】 +@for $i from 1 through 5 { + .uv-line-#{$i} { + /* #ifdef APP-NVUE */ + // nvue下,可以直接使用lines属性,这是weex特有样式 + lines: $i; + text-overflow: ellipsis; + overflow: hidden; + flex: 1; + /* #endif */ + + /* #ifndef APP-NVUE */ + // vue下,单行和多行显示省略号需要单独处理 + @if $i == '1' { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } @else { + display: -webkit-box!important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: $i; + -webkit-box-orient: vertical!important; + } + /* #endif */ + } +} +$uv-bordercolor: #dadbde; +@if variable-exists(uv-border-color) { + $uv-bordercolor: $uv-border-color; +} + +// 此处加上!important并非随意乱用,而是因为目前*.nvue页面编译到H5时, +// App.vue的样式会被uni-app的view元素的自带border属性覆盖,导致无效 +// 综上,这是uni-app的缺陷导致我们为了多端兼容,而必须要加上!important +// 移动端兼容性较好,直接使用0.5px去实现细边框,不使用伪元素形式实现 +.uv-border { + border-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-style: solid; +} + +.uv-border-top { + border-top-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-top-style: solid; +} + +.uv-border-left { + border-left-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-left-style: solid; +} + +.uv-border-right { + border-right-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-right-style: solid; +} + +.uv-border-bottom { + border-bottom-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-bottom-style: solid; +} + +.uv-border-top-bottom { + border-top-width: 0.5px!important; + border-bottom-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-top-style: solid; + border-bottom-style: solid; +} + +// 去除button的所有默认样式,让其表现跟普通的view、text元素一样 +.uv-reset-button { + padding: 0; + background-color: transparent; + /* #ifndef APP-PLUS */ + font-size: inherit; + line-height: inherit; + color: inherit; + /* #endif */ + /* #ifdef APP-NVUE */ + border-width: 0; + /* #endif */ +} + +/* #ifndef APP-NVUE */ +.uv-reset-button::after { + border: none; +} +/* #endif */ + +.uv-hover-class { + opacity: 0.7; +} + diff --git a/uni_modules/uv-ui-tools/libs/css/components.scss b/uni_modules/uv-ui-tools/libs/css/components.scss new file mode 100644 index 0000000..81ce15d --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/components.scss @@ -0,0 +1,23 @@ +@mixin flex($direction: row) { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: $direction; +} + +/* #ifndef APP-NVUE */ +// 由于uvui是基于nvue环境进行开发的,此环境中普通元素默认为flex-direction: column; +// 所以在非nvue中,需要对元素进行重置为flex-direction: column; 否则可能会表现异常 +$uvui-nvue-style: true !default; +@if $uvui-nvue-style == true { + view, scroll-view, swiper-item { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; + } +} +/* #endif */ diff --git a/uni_modules/uv-ui-tools/libs/css/variable.scss b/uni_modules/uv-ui-tools/libs/css/variable.scss new file mode 100644 index 0000000..63903c9 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/variable.scss @@ -0,0 +1,111 @@ +// 超出行数,自动显示行尾省略号,最多5行 +// 来自uvui的温馨提示:当您在控制台看到此报错,说明需要在App.vue的style标签加上【lang="scss"】 +@if variable-exists(show-lines) { + @for $i from 1 through 5 { + .uv-line-#{$i} { + /* #ifdef APP-NVUE */ + // nvue下,可以直接使用lines属性,这是weex特有样式 + lines: $i; + text-overflow: ellipsis; + overflow: hidden; + flex: 1; + /* #endif */ + + /* #ifndef APP-NVUE */ + // vue下,单行和多行显示省略号需要单独处理 + @if $i == '1' { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } @else { + display: -webkit-box!important; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + -webkit-line-clamp: $i; + -webkit-box-orient: vertical!important; + } + /* #endif */ + } + } +} +@if variable-exists(show-border) { + $uv-bordercolor: #dadbde; + @if variable-exists(uv-border-color) { + $uv-bordercolor: $uv-border-color; + } + // 此处加上!important并非随意乱用,而是因为目前*.nvue页面编译到H5时, + // App.vue的样式会被uni-app的view元素的自带border属性覆盖,导致无效 + // 综上,这是uni-app的缺陷导致我们为了多端兼容,而必须要加上!important + // 移动端兼容性较好,直接使用0.5px去实现细边框,不使用伪元素形式实现 + @if variable-exists(show-border-surround) { + .uv-border { + border-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-style: solid; + } + } + @if variable-exists(show-border-top) { + .uv-border-top { + border-top-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-top-style: solid; + } + } + @if variable-exists(show-border-left) { + .uv-border-left { + border-left-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-left-style: solid; + } + } + @if variable-exists(show-border-right) { + .uv-border-right { + border-right-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-right-style: solid; + } + } + @if variable-exists(show-border-bottom) { + .uv-border-bottom { + border-bottom-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-bottom-style: solid; + } + } + @if variable-exists(show-border-top-bottom) { + .uv-border-top-bottom { + border-top-width: 0.5px!important; + border-bottom-width: 0.5px!important; + border-color: $uv-bordercolor!important; + border-top-style: solid; + border-bottom-style: solid; + } + } +} +@if variable-exists(show-reset-button) { + // 去除button的所有默认样式,让其表现跟普通的view、text元素一样 + .uv-reset-button { + padding: 0; + background-color: transparent; + /* #ifndef APP-PLUS */ + font-size: inherit; + line-height: inherit; + color: inherit; + /* #endif */ + /* #ifdef APP-NVUE */ + border-width: 0; + /* #endif */ + } + + /* #ifndef APP-NVUE */ + .uv-reset-button::after { + border: none; + } + /* #endif */ +} +@if variable-exists(show-hover) { + .uv-hover-class { + opacity: 0.7; + } +} diff --git a/uni_modules/uv-ui-tools/libs/css/vue.scss b/uni_modules/uv-ui-tools/libs/css/vue.scss new file mode 100644 index 0000000..bdbefdd --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/css/vue.scss @@ -0,0 +1,40 @@ +// 历遍生成4个方向的底部安全区 +@each $d in top, right, bottom, left { + .uv-safe-area-inset-#{$d} { + padding-#{$d}: 0; + padding-#{$d}: constant(safe-area-inset-#{$d}); + padding-#{$d}: env(safe-area-inset-#{$d}); + } +} + +//提升H5端uni.toast()的层级,避免被uvui的modal等遮盖 +/* #ifdef H5 */ +uni-toast { + z-index: 10090; +} +uni-toast .uni-toast { + z-index: 10090; +} +/* #endif */ + +// 隐藏scroll-view的滚动条 +::-webkit-scrollbar { + display: none; + width: 0 !important; + height: 0 !important; + -webkit-appearance: none; + background: transparent; +} + +$uvui-nvue-style: true !default; +@if $uvui-nvue-style == false { + view, scroll-view, swiper-item { + display: flex; + flex-direction: column; + flex-shrink: 0; + flex-grow: 0; + flex-basis: auto; + align-items: stretch; + align-content: flex-start; + } +} diff --git a/uni_modules/uv-ui-tools/libs/function/colorGradient.js b/uni_modules/uv-ui-tools/libs/function/colorGradient.js new file mode 100644 index 0000000..55c188f --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/colorGradient.js @@ -0,0 +1,134 @@ +/** + * 求两个颜色之间的渐变值 + * @param {string} startColor 开始的颜色 + * @param {string} endColor 结束的颜色 + * @param {number} step 颜色等分的份额 + * */ +function colorGradient(startColor = 'rgb(0, 0, 0)', endColor = 'rgb(255, 255, 255)', step = 10) { + const startRGB = hexToRgb(startColor, false) // 转换为rgb数组模式 + const startR = startRGB[0] + const startG = startRGB[1] + const startB = startRGB[2] + + const endRGB = hexToRgb(endColor, false) + const endR = endRGB[0] + const endG = endRGB[1] + const endB = endRGB[2] + + const sR = (endR - startR) / step // 总差值 + const sG = (endG - startG) / step + const sB = (endB - startB) / step + const colorArr = [] + for (let i = 0; i < step; i++) { + // 计算每一步的hex值 + let hex = rgbToHex(`rgb(${Math.round((sR * i + startR))},${Math.round((sG * i + startG))},${Math.round((sB + * i + startB))})`) + // 确保第一个颜色值为startColor的值 + if (i === 0) hex = rgbToHex(startColor) + // 确保最后一个颜色值为endColor的值 + if (i === step - 1) hex = rgbToHex(endColor) + colorArr.push(hex) + } + return colorArr +} + +// 将hex表示方式转换为rgb表示方式(这里返回rgb数组模式) +function hexToRgb(sColor, str = true) { + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/ + sColor = String(sColor).toLowerCase() + if (sColor && reg.test(sColor)) { + if (sColor.length === 4) { + let sColorNew = '#' + for (let i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)) + } + sColor = sColorNew + } + // 处理六位的颜色值 + const sColorChange = [] + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`)) + } + if (!str) { + return sColorChange + } + return `rgb(${sColorChange[0]},${sColorChange[1]},${sColorChange[2]})` + } if (/^(rgb|RGB)/.test(sColor)) { + const arr = sColor.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',') + return arr.map((val) => Number(val)) + } + return sColor +} + +// 将rgb表示方式转换为hex表示方式 +function rgbToHex(rgb) { + const _this = rgb + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/ + if (/^(rgb|RGB)/.test(_this)) { + const aColor = _this.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',') + let strHex = '#' + for (let i = 0; i < aColor.length; i++) { + let hex = Number(aColor[i]).toString(16) + hex = String(hex).length == 1 ? `${0}${hex}` : hex // 保证每个rgb的值为2位 + if (hex === '0') { + hex += hex + } + strHex += hex + } + if (strHex.length !== 7) { + strHex = _this + } + return strHex + } if (reg.test(_this)) { + const aNum = _this.replace(/#/, '').split('') + if (aNum.length === 6) { + return _this + } if (aNum.length === 3) { + let numHex = '#' + for (let i = 0; i < aNum.length; i += 1) { + numHex += (aNum[i] + aNum[i]) + } + return numHex + } + } else { + return _this + } +} + +/** +* JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串 +* sHex为传入的十六进制的色值 +* alpha为rgba的透明度 +*/ +function colorToRgba(color, alpha) { + color = rgbToHex(color) + // 十六进制颜色值的正则表达式 + const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/ + /* 16进制颜色转为RGB格式 */ + let sColor = String(color).toLowerCase() + if (sColor && reg.test(sColor)) { + if (sColor.length === 4) { + let sColorNew = '#' + for (let i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)) + } + sColor = sColorNew + } + // 处理六位的颜色值 + const sColorChange = [] + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt(`0x${sColor.slice(i, i + 2)}`)) + } + // return sColorChange.join(',') + return `rgba(${sColorChange.join(',')},${alpha})` + } + + return sColor +} + +export { + colorGradient, + hexToRgb, + rgbToHex, + colorToRgba +} diff --git a/uni_modules/uv-ui-tools/libs/function/debounce.js b/uni_modules/uv-ui-tools/libs/function/debounce.js new file mode 100644 index 0000000..ad3996b --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/debounce.js @@ -0,0 +1,29 @@ +let timeout = null + +/** + * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数 + * + * @param {Function} func 要执行的回调函数 + * @param {Number} wait 延时的时间 + * @param {Boolean} immediate 是否立即执行 + * @return null + */ +function debounce(func, wait = 500, immediate = false) { + // 清除定时器 + if (timeout !== null) clearTimeout(timeout) + // 立即执行,此类情况一般用不到 + if (immediate) { + const callNow = !timeout + timeout = setTimeout(() => { + timeout = null + }, wait) + if (callNow) typeof func === 'function' && func() + } else { + // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法 + timeout = setTimeout(() => { + typeof func === 'function' && func() + }, wait) + } +} + +export default debounce diff --git a/uni_modules/uv-ui-tools/libs/function/digit.js b/uni_modules/uv-ui-tools/libs/function/digit.js new file mode 100644 index 0000000..c8260a0 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/digit.js @@ -0,0 +1,167 @@ +let _boundaryCheckingState = true; // 是否进行越界检查的全局开关 + +/** + * 把错误的数据转正 + * @private + * @example strip(0.09999999999999998)=0.1 + */ +function strip(num, precision = 15) { + return +parseFloat(Number(num).toPrecision(precision)); +} + +/** + * Return digits length of a number + * @private + * @param {*number} num Input number + */ +function digitLength(num) { + // Get digit length of e + const eSplit = num.toString().split(/[eE]/); + const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0); + return len > 0 ? len : 0; +} + +/** + * 把小数转成整数,如果是小数则放大成整数 + * @private + * @param {*number} num 输入数 + */ +function float2Fixed(num) { + if (num.toString().indexOf('e') === -1) { + return Number(num.toString().replace('.', '')); + } + const dLen = digitLength(num); + return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num); +} + +/** + * 检测数字是否越界,如果越界给出提示 + * @private + * @param {*number} num 输入数 + */ +function checkBoundary(num) { + if (_boundaryCheckingState) { + if (num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) { + console.warn(`${num} 超出了精度限制,结果可能不正确`); + } + } +} + +/** + * 把递归操作扁平迭代化 + * @param {number[]} arr 要操作的数字数组 + * @param {function} operation 迭代操作 + * @private + */ +function iteratorOperation(arr, operation) { + const [num1, num2, ...others] = arr; + let res = operation(num1, num2); + + others.forEach((num) => { + res = operation(res, num); + }); + + return res; +} + +/** + * 高精度乘法 + * @export + */ +export function times(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, times); + } + + const [num1, num2] = nums; + const num1Changed = float2Fixed(num1); + const num2Changed = float2Fixed(num2); + const baseNum = digitLength(num1) + digitLength(num2); + const leftValue = num1Changed * num2Changed; + + checkBoundary(leftValue); + + return leftValue / Math.pow(10, baseNum); +} + +/** + * 高精度加法 + * @export + */ +export function plus(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, plus); + } + + const [num1, num2] = nums; + // 取最大的小数位 + const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2))); + // 把小数都转为整数然后再计算 + return (times(num1, baseNum) + times(num2, baseNum)) / baseNum; +} + +/** + * 高精度减法 + * @export + */ +export function minus(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, minus); + } + + const [num1, num2] = nums; + const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2))); + return (times(num1, baseNum) - times(num2, baseNum)) / baseNum; +} + +/** + * 高精度除法 + * @export + */ +export function divide(...nums) { + if (nums.length > 2) { + return iteratorOperation(nums, divide); + } + + const [num1, num2] = nums; + const num1Changed = float2Fixed(num1); + const num2Changed = float2Fixed(num2); + checkBoundary(num1Changed); + checkBoundary(num2Changed); + // 重要,这里必须用strip进行修正 + return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1)))); +} + +/** + * 四舍五入 + * @export + */ +export function round(num, ratio) { + const base = Math.pow(10, ratio); + let result = divide(Math.round(Math.abs(times(num, base))), base); + if (num < 0 && result !== 0) { + result = times(result, -1); + } + // 位数不足则补0 + return result; +} + +/** + * 是否进行边界检查,默认开启 + * @param flag 标记开关,true 为开启,false 为关闭,默认为 true + * @export + */ +export function enableBoundaryChecking(flag = true) { + _boundaryCheckingState = flag; +} + + +export default { + times, + plus, + minus, + divide, + round, + enableBoundaryChecking, +}; + diff --git a/uni_modules/uv-ui-tools/libs/function/index.js b/uni_modules/uv-ui-tools/libs/function/index.js new file mode 100644 index 0000000..b35e0ab --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/index.js @@ -0,0 +1,734 @@ +import { number, empty } from './test.js' +import { round } from './digit.js' +/** + * @description 如果value小于min,取min;如果value大于max,取max + * @param {number} min + * @param {number} max + * @param {number} value + */ +function range(min = 0, max = 0, value = 0) { + return Math.max(min, Math.min(max, Number(value))) +} + +/** + * @description 用于获取用户传递值的px值 如果用户传递了"xxpx"或者"xxrpx",取出其数值部分,如果是"xxxrpx"还需要用过uni.upx2px进行转换 + * @param {number|string} value 用户传递值的px值 + * @param {boolean} unit + * @returns {number|string} + */ +function getPx(value, unit = false) { + if (number(value)) { + return unit ? `${value}px` : Number(value) + } + // 如果带有rpx,先取出其数值部分,再转为px值 + if (/(rpx|upx)$/.test(value)) { + return unit ? `${uni.upx2px(parseInt(value))}px` : Number(uni.upx2px(parseInt(value))) + } + return unit ? `${parseInt(value)}px` : parseInt(value) +} + +/** + * @description 进行延时,以达到可以简写代码的目的 比如: await uni.$uv.sleep(20)将会阻塞20ms + * @param {number} value 堵塞时间 单位ms 毫秒 + * @returns {Promise} 返回promise + */ +function sleep(value = 30) { + return new Promise((resolve) => { + setTimeout(() => { + resolve() + }, value) + }) +} +/** + * @description 运行期判断平台 + * @returns {string} 返回所在平台(小写) + * @link 运行期判断平台 https://uniapp.dcloud.io/frame?id=判断平台 + */ +function os() { + return uni.getSystemInfoSync().platform.toLowerCase() +} +/** + * @description 获取系统信息同步接口 + * @link 获取系统信息同步接口 https://uniapp.dcloud.io/api/system/info?id=getsysteminfosync + */ +function sys() { + return uni.getSystemInfoSync() +} + +/** + * @description 取一个区间数 + * @param {Number} min 最小值 + * @param {Number} max 最大值 + */ +function random(min, max) { + if (min >= 0 && max > 0 && max >= min) { + const gab = max - min + 1 + return Math.floor(Math.random() * gab + min) + } + return 0 +} + +/** + * @param {Number} len uuid的长度 + * @param {Boolean} firstU 将返回的首字母置为"u" + * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制 + */ +function guid(len = 32, firstU = true, radix = null) { + const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') + const uuid = [] + radix = radix || chars.length + + if (len) { + // 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位 + for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix] + } else { + let r + // rfc4122标准要求返回的uuid中,某些位为固定的字符 + 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] + } + } + } + // 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class + if (firstU) { + uuid.shift() + return `u${uuid.join('')}` + } + return uuid.join('') +} + +/** +* @description 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法 + this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx + 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name + 值(默认为undefined),就是查找最顶层的$parent +* @param {string|undefined} name 父组件的参数名 +*/ +function $parent(name = undefined) { + let parent = this.$parent + // 通过while历遍,这里主要是为了H5需要多层解析的问题 + while (parent) { + // 父组件 + if (parent.$options && parent.$options.name !== name) { + // 如果组件的name不相等,继续上一级寻找 + parent = parent.$parent + } else { + return parent + } + } + return false +} + +/** + * @description 样式转换 + * 对象转字符串,或者字符串转对象 + * @param {object | string} customStyle 需要转换的目标 + * @param {String} target 转换的目的,object-转为对象,string-转为字符串 + * @returns {object|string} + */ +function addStyle(customStyle, target = 'object') { + // 字符串转字符串,对象转对象情形,直接返回 + if (empty(customStyle) || typeof(customStyle) === 'object' && target === 'object' || target === 'string' && + typeof(customStyle) === 'string') { + return customStyle + } + // 字符串转对象 + if (target === 'object') { + // 去除字符串样式中的两端空格(中间的空格不能去掉,比如padding: 20px 0如果去掉了就错了),空格是无用的 + customStyle = trim(customStyle) + // 根据";"将字符串转为数组形式 + const styleArray = customStyle.split(';') + const style = {} + // 历遍数组,拼接成对象 + for (let i = 0; i < styleArray.length; i++) { + // 'font-size:20px;color:red;',如此最后字符串有";"的话,会导致styleArray最后一个元素为空字符串,这里需要过滤 + if (styleArray[i]) { + const item = styleArray[i].split(':') + style[trim(item[0])] = trim(item[1]) + } + } + return style + } + // 这里为对象转字符串形式 + let string = '' + for (const i in customStyle) { + // 驼峰转为中划线的形式,否则css内联样式,无法识别驼峰样式属性名 + const key = i.replace(/([A-Z])/g, '-$1').toLowerCase() + string += `${key}:${customStyle[i]};` + } + // 去除两端空格 + return trim(string) +} + +/** + * @description 添加单位,如果有rpx,upx,%,px等单位结尾或者值为auto,直接返回,否则加上px单位结尾 + * @param {string|number} value 需要添加单位的值 + * @param {string} unit 添加的单位名 比如px + */ +function addUnit(value = 'auto', unit = uni?.$uv?.config?.unit ? uni?.$uv?.config?.unit : 'px') { + value = String(value) + // 用uvui内置验证规则中的number判断是否为数值 + return number(value) ? `${value}${unit}` : value +} + +/** + * @description 深度克隆 + * @param {object} obj 需要深度克隆的对象 + * @param cache 缓存 + * @returns {*} 克隆后的对象或者原值(不是对象) + */ +function deepClone(obj, cache = new WeakMap()) { + if (obj === null || typeof obj !== 'object') return obj; + if (cache.has(obj)) return cache.get(obj); + let clone; + if (obj instanceof Date) { + clone = new Date(obj.getTime()); + } else if (obj instanceof RegExp) { + clone = new RegExp(obj); + } else if (obj instanceof Map) { + clone = new Map(Array.from(obj, ([key, value]) => [key, deepClone(value, cache)])); + } else if (obj instanceof Set) { + clone = new Set(Array.from(obj, value => deepClone(value, cache))); + } else if (Array.isArray(obj)) { + clone = obj.map(value => deepClone(value, cache)); + } else if (Object.prototype.toString.call(obj) === '[object Object]') { + clone = Object.create(Object.getPrototypeOf(obj)); + cache.set(obj, clone); + for (const [key, value] of Object.entries(obj)) { + clone[key] = deepClone(value, cache); + } + } else { + clone = Object.assign({}, obj); + } + cache.set(obj, clone); + return clone; +} + +/** + * @description JS对象深度合并 + * @param {object} target 需要拷贝的对象 + * @param {object} source 拷贝的来源对象 + * @returns {object|boolean} 深度合并后的对象或者false(入参有不是对象) + */ +function deepMerge(target = {}, source = {}) { + target = deepClone(target) + if (typeof target !== 'object' || target === null || typeof source !== 'object' || source === null) return target; + const merged = Array.isArray(target) ? target.slice() : Object.assign({}, target); + for (const prop in source) { + if (!source.hasOwnProperty(prop)) continue; + const sourceValue = source[prop]; + const targetValue = merged[prop]; + if (sourceValue instanceof Date) { + merged[prop] = new Date(sourceValue); + } else if (sourceValue instanceof RegExp) { + merged[prop] = new RegExp(sourceValue); + } else if (sourceValue instanceof Map) { + merged[prop] = new Map(sourceValue); + } else if (sourceValue instanceof Set) { + merged[prop] = new Set(sourceValue); + } else if (typeof sourceValue === 'object' && sourceValue !== null) { + merged[prop] = deepMerge(targetValue, sourceValue); + } else { + merged[prop] = sourceValue; + } + } + return merged; +} + +/** + * @description error提示 + * @param {*} err 错误内容 + */ +function error(err) { + // 开发环境才提示,生产环境不会提示 + if (process.env.NODE_ENV === 'development') { + console.error(`uvui提示:${err}`) + } +} + +/** + * @description 打乱数组 + * @param {array} array 需要打乱的数组 + * @returns {array} 打乱后的数组 + */ +function randomArray(array = []) { + // 原理是sort排序,Math.random()产生0<= x < 1之间的数,会导致x-0.05大于或者小于0 + return array.sort(() => Math.random() - 0.5) +} + +// padStart 的 polyfill,因为某些机型或情况,还无法支持es7的padStart,比如电脑版的微信小程序 +// 所以这里做一个兼容polyfill的兼容处理 +if (!String.prototype.padStart) { + // 为了方便表示这里 fillString 用了ES6 的默认参数,不影响理解 + String.prototype.padStart = function(maxLength, fillString = ' ') { + if (Object.prototype.toString.call(fillString) !== '[object String]') { + throw new TypeError( + 'fillString must be String' + ) + } + const str = this + // 返回 String(str) 这里是为了使返回的值是字符串字面量,在控制台中更符合直觉 + if (str.length >= maxLength) return String(str) + + const fillLength = maxLength - str.length + let times = Math.ceil(fillLength / fillString.length) + while (times >>= 1) { + fillString += fillString + if (times === 1) { + fillString += fillString + } + } + return fillString.slice(0, fillLength) + str + } +} + +/** + * @description 格式化时间 + * @param {String|Number} dateTime 需要格式化的时间戳 + * @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd + * @returns {string} 返回格式化后的字符串 + */ +function timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') { + let date + // 若传入时间为假值,则取当前时间 + if (!dateTime) { + date = new Date() + } + // 若为unix秒时间戳,则转为毫秒时间戳(逻辑有点奇怪,但不敢改,以保证历史兼容) + else if (/^\d{10}$/.test(dateTime?.toString().trim())) { + date = new Date(dateTime * 1000) + } + // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容 + else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) { + date = new Date(Number(dateTime)) + } + // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间 + // 处理 '2022-07-10 01:02:03',跳过 '2022-07-10T01:02:03' + else if (typeof dateTime === 'string' && dateTime.includes('-') && !dateTime.includes('T')) { + date = new Date(dateTime.replace(/-/g, '/')) + } + // 其他都认为符合 RFC 2822 规范 + else { + date = new Date(dateTime) + } + + const timeSource = { + 'y': date.getFullYear().toString(), // 年 + 'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月 + 'd': date.getDate().toString().padStart(2, '0'), // 日 + 'h': date.getHours().toString().padStart(2, '0'), // 时 + 'M': date.getMinutes().toString().padStart(2, '0'), // 分 + 's': date.getSeconds().toString().padStart(2, '0') // 秒 + // 有其他格式化字符需求可以继续添加,必须转化成字符串 + } + + for (const key in timeSource) { + const [ret] = new RegExp(`${key}+`).exec(formatStr) || [] + if (ret) { + // 年可能只需展示两位 + const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0 + formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex)) + } + } + + return formatStr +} + +/** + * @description 时间戳转为多久之前 + * @param {String|Number} timestamp 时间戳 + * @param {String|Boolean} format + * 格式化规则如果为时间格式字符串,超出一定时间范围,返回固定的时间格式; + * 如果为布尔值false,无论什么时间,都返回多久以前的格式 + * @returns {string} 转化后的内容 + */ +function timeFrom(timestamp = null, format = 'yyyy-mm-dd') { + if (timestamp == null) timestamp = Number(new Date()) + timestamp = parseInt(timestamp) + // 判断用户输入的时间戳是秒还是毫秒,一般前端js获取的时间戳是毫秒(13位),后端传过来的为秒(10位) + if (timestamp.toString().length == 10) timestamp *= 1000 + let timer = (new Date()).getTime() - timestamp + timer = parseInt(timer / 1000) + // 如果小于5分钟,则返回"刚刚",其他以此类推 + let tips = '' + switch (true) { + case timer < 300: + tips = '刚刚' + break + case timer >= 300 && timer < 3600: + tips = `${parseInt(timer / 60)}分钟前` + break + case timer >= 3600 && timer < 86400: + tips = `${parseInt(timer / 3600)}小时前` + break + case timer >= 86400 && timer < 2592000: + tips = `${parseInt(timer / 86400)}天前` + break + default: + // 如果format为false,则无论什么时间戳,都显示xx之前 + if (format === false) { + if (timer >= 2592000 && timer < 365 * 86400) { + tips = `${parseInt(timer / (86400 * 30))}个月前` + } else { + tips = `${parseInt(timer / (86400 * 365))}年前` + } + } else { + tips = timeFormat(timestamp, format) + } + } + return tips +} + +/** + * @description 去除空格 + * @param String str 需要去除空格的字符串 + * @param String pos both(左右)|left|right|all 默认both + */ +function trim(str, pos = 'both') { + str = String(str) + if (pos == 'both') { + return str.replace(/^\s+|\s+$/g, '') + } + if (pos == 'left') { + return str.replace(/^\s*/, '') + } + if (pos == 'right') { + return str.replace(/(\s*$)/g, '') + } + if (pos == 'all') { + return str.replace(/\s+/g, '') + } + return str +} + +/** + * @description 对象转url参数 + * @param {object} data,对象 + * @param {Boolean} isPrefix,是否自动加上"?" + * @param {string} arrayFormat 规则 indices|brackets|repeat|comma + */ +function queryParams(data = {}, isPrefix = true, arrayFormat = 'brackets') { + const prefix = isPrefix ? '?' : '' + const _result = [] + if (['indices', 'brackets', 'repeat', 'comma'].indexOf(arrayFormat) == -1) arrayFormat = 'brackets' + for (const key in data) { + const value = data[key] + // 去掉为空的参数 + if (['', undefined, null].indexOf(value) >= 0) { + continue + } + // 如果值为数组,另行处理 + if (value.constructor === Array) { + // e.g. {ids: [1, 2, 3]} + switch (arrayFormat) { + case 'indices': + // 结果: ids[0]=1&ids[1]=2&ids[2]=3 + for (let i = 0; i < value.length; i++) { + _result.push(`${key}[${i}]=${value[i]}`) + } + break + case 'brackets': + // 结果: ids[]=1&ids[]=2&ids[]=3 + value.forEach((_value) => { + _result.push(`${key}[]=${_value}`) + }) + break + case 'repeat': + // 结果: ids=1&ids=2&ids=3 + value.forEach((_value) => { + _result.push(`${key}=${_value}`) + }) + break + case 'comma': + // 结果: ids=1,2,3 + let commaStr = '' + value.forEach((_value) => { + commaStr += (commaStr ? ',' : '') + _value + }) + _result.push(`${key}=${commaStr}`) + break + default: + value.forEach((_value) => { + _result.push(`${key}[]=${_value}`) + }) + } + } else { + _result.push(`${key}=${value}`) + } + } + return _result.length ? prefix + _result.join('&') : '' +} + +/** + * 显示消息提示框 + * @param {String} title 提示的内容,长度与 icon 取值有关。 + * @param {Number} duration 提示的延迟时间,单位毫秒,默认:2000 + */ +function toast(title, duration = 2000) { + uni.showToast({ + title: String(title), + icon: 'none', + duration + }) +} + +/** + * @description 根据主题type值,获取对应的图标 + * @param {String} type 主题名称,primary|info|error|warning|success + * @param {boolean} fill 是否使用fill填充实体的图标 + */ +function type2icon(type = 'success', fill = false) { + // 如果非预置值,默认为success + if (['primary', 'info', 'error', 'warning', 'success'].indexOf(type) == -1) type = 'success' + let iconName = '' + // 目前(2019-12-12),info和primary使用同一个图标 + switch (type) { + case 'primary': + iconName = 'info-circle' + break + case 'info': + iconName = 'info-circle' + break + case 'error': + iconName = 'close-circle' + break + case 'warning': + iconName = 'error-circle' + break + case 'success': + iconName = 'checkmark-circle' + break + default: + iconName = 'checkmark-circle' + } + // 是否是实体类型,加上-fill,在icon组件库中,实体的类名是后面加-fill的 + if (fill) iconName += '-fill' + return iconName +} + +/** + * @description 数字格式化 + * @param {number|string} number 要格式化的数字 + * @param {number} decimals 保留几位小数 + * @param {string} decimalPoint 小数点符号 + * @param {string} thousandsSeparator 千分位符号 + * @returns {string} 格式化后的数字 + */ +function priceFormat(number, decimals = 0, decimalPoint = '.', thousandsSeparator = ',') { + number = (`${number}`).replace(/[^0-9+-Ee.]/g, '') + const n = !isFinite(+number) ? 0 : +number + const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals) + const sep = (typeof thousandsSeparator === 'undefined') ? ',' : thousandsSeparator + const dec = (typeof decimalPoint === 'undefined') ? '.' : decimalPoint + let s = '' + + s = (prec ? round(n, prec) + '' : `${Math.round(n)}`).split('.') + const re = /(-?\d+)(\d{3})/ + while (re.test(s[0])) { + s[0] = s[0].replace(re, `$1${sep}$2`) + } + + if ((s[1] || '').length < prec) { + s[1] = s[1] || '' + s[1] += new Array(prec - s[1].length + 1).join('0') + } + return s.join(dec) +} + +/** + * @description 获取duration值 + * 如果带有ms或者s直接返回,如果大于一定值,认为是ms单位,小于一定值,认为是s单位 + * 比如以30位阈值,那么300大于30,可以理解为用户想要的是300ms,而不是想花300s去执行一个动画 + * @param {String|number} value 比如: "1s"|"100ms"|1|100 + * @param {boolean} unit 提示: 如果是false 默认返回number + * @return {string|number} + */ +function getDuration(value, unit = true) { + const valueNum = parseInt(value) + if (unit) { + if (/s$/.test(value)) return value + return value > 30 ? `${value}ms` : `${value}s` + } + if (/ms$/.test(value)) return valueNum + if (/s$/.test(value)) return valueNum > 30 ? valueNum : valueNum * 1000 + return valueNum +} + +/** + * @description 日期的月或日补零操作 + * @param {String} value 需要补零的值 + */ +function padZero(value) { + return `00${value}`.slice(-2) +} + +/** + * @description 在uv-form的子组件内容发生变化,或者失去焦点时,尝试通知uv-form执行校验方法 + * @param {*} instance + * @param {*} event + */ +function formValidate(instance, event) { + const formItem = $parent.call(instance, 'uv-form-item') + const form = $parent.call(instance, 'uv-form') + // 如果发生变化的input或者textarea等,其父组件中有uv-form-item或者uv-form等,就执行form的validate方法 + // 同时将form-item的pros传递给form,让其进行精确对象验证 + if (formItem && form) { + form.validateField(formItem.prop, () => {}, event) + } +} + +/** + * @description 获取某个对象下的属性,用于通过类似'a.b.c'的形式去获取一个对象的的属性的形式 + * @param {object} obj 对象 + * @param {string} key 需要获取的属性字段 + * @returns {*} + */ +function getProperty(obj, key) { + if (!obj) { + return + } + if (typeof key !== 'string' || key === '') { + return '' + } + if (key.indexOf('.') !== -1) { + const keys = key.split('.') + let firstObj = obj[keys[0]] || {} + + for (let i = 1; i < keys.length; i++) { + if (firstObj) { + firstObj = firstObj[keys[i]] + } + } + return firstObj + } + return obj[key] +} + +/** + * @description 设置对象的属性值,如果'a.b.c'的形式进行设置 + * @param {object} obj 对象 + * @param {string} key 需要设置的属性 + * @param {string} value 设置的值 + */ +function setProperty(obj, key, value) { + if (!obj) { + return + } + // 递归赋值 + const inFn = function(_obj, keys, v) { + // 最后一个属性key + if (keys.length === 1) { + _obj[keys[0]] = v + return + } + // 0~length-1个key + while (keys.length > 1) { + const k = keys[0] + if (!_obj[k] || (typeof _obj[k] !== 'object')) { + _obj[k] = {} + } + const key = keys.shift() + // 自调用判断是否存在属性,不存在则自动创建对象 + inFn(_obj[k], keys, v) + } + } + + if (typeof key !== 'string' || key === '') { + + } else if (key.indexOf('.') !== -1) { // 支持多层级赋值操作 + const keys = key.split('.') + inFn(obj, keys, value) + } else { + obj[key] = value + } +} + +/** + * @description 获取当前页面路径 + */ +function page() { + const pages = getCurrentPages(); + const route = pages[pages.length - 1]?.route; + // 某些特殊情况下(比如页面进行redirectTo时的一些时机),pages可能为空数组 + return `/${route ? route : ''}` +} + +/** + * @description 获取当前路由栈实例数组 + */ +function pages() { + const pages = getCurrentPages() + return pages +} + +/** + * 获取页面历史栈指定层实例 + * @param back {number} [0] - 0或者负数,表示获取历史栈的哪一层,0表示获取当前页面实例,-1 表示获取上一个页面实例。默认0。 + */ +function getHistoryPage(back = 0) { + const pages = getCurrentPages() + const len = pages.length + return pages[len - 1 + back] +} + + + +/** + * @description 修改uvui内置属性值 + * @param {object} props 修改内置props属性 + * @param {object} config 修改内置config属性 + * @param {object} color 修改内置color属性 + * @param {object} zIndex 修改内置zIndex属性 + */ +function setConfig({ + props = {}, + config = {}, + color = {}, + zIndex = {} +}) { + const { + deepMerge, + } = uni.$uv + uni.$uv.config = deepMerge(uni.$uv.config, config) + uni.$uv.props = deepMerge(uni.$uv.props, props) + uni.$uv.color = deepMerge(uni.$uv.color, color) + uni.$uv.zIndex = deepMerge(uni.$uv.zIndex, zIndex) +} + +export { + range, + getPx, + sleep, + os, + sys, + random, + guid, + $parent, + addStyle, + addUnit, + deepClone, + deepMerge, + error, + randomArray, + timeFormat, + timeFrom, + trim, + queryParams, + toast, + type2icon, + priceFormat, + getDuration, + padZero, + formValidate, + getProperty, + setProperty, + page, + pages, + getHistoryPage, + setConfig +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/function/platform.js b/uni_modules/uv-ui-tools/libs/function/platform.js new file mode 100644 index 0000000..d6b926e --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/platform.js @@ -0,0 +1,75 @@ +/** + * 注意: + * 此部分内容,在vue-cli模式下,需要在vue.config.js加入如下内容才有效: + * module.exports = { + * transpileDependencies: ['uview-v2'] + * } + */ + +let platform = 'none' + +// #ifdef VUE3 +platform = 'vue3' +// #endif + +// #ifdef VUE2 +platform = 'vue2' +// #endif + +// #ifdef APP-PLUS +platform = 'plus' +// #endif + +// #ifdef APP-NVUE +platform = 'nvue' +// #endif + +// #ifdef H5 +platform = 'h5' +// #endif + +// #ifdef MP-WEIXIN +platform = 'weixin' +// #endif + +// #ifdef MP-ALIPAY +platform = 'alipay' +// #endif + +// #ifdef MP-BAIDU +platform = 'baidu' +// #endif + +// #ifdef MP-TOUTIAO +platform = 'toutiao' +// #endif + +// #ifdef MP-QQ +platform = 'qq' +// #endif + +// #ifdef MP-KUAISHOU +platform = 'kuaishou' +// #endif + +// #ifdef MP-360 +platform = '360' +// #endif + +// #ifdef MP +platform = 'mp' +// #endif + +// #ifdef QUICKAPP-WEBVIEW +platform = 'quickapp-webview' +// #endif + +// #ifdef QUICKAPP-WEBVIEW-HUAWEI +platform = 'quickapp-webview-huawei' +// #endif + +// #ifdef QUICKAPP-WEBVIEW-UNION +platform = 'quckapp-webview-union' +// #endif + +export default platform diff --git a/uni_modules/uv-ui-tools/libs/function/test.js b/uni_modules/uv-ui-tools/libs/function/test.js new file mode 100644 index 0000000..7c8b747 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/test.js @@ -0,0 +1,287 @@ +/** + * 验证电子邮箱格式 + */ +function email(value) { + return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value) +} + +/** + * 验证手机格式 + */ +function mobile(value) { + return /^1([3589]\d|4[5-9]|6[1-2,4-7]|7[0-8])\d{8}$/.test(value) +} + +/** + * 验证URL格式 + */ +function url(value) { + return /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,3}.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/ + .test(value) +} + +/** + * 验证日期格式 + */ +function date(value) { + if (!value) return false + // 判断是否数值或者字符串数值(意味着为时间戳),转为数值,否则new Date无法识别字符串时间戳 + if (number(value)) value = +value + return !/Invalid|NaN/.test(new Date(value).toString()) +} + +/** + * 验证ISO类型的日期格式 + */ +function dateISO(value) { + return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value) +} + +/** + * 验证十进制数字 + */ +function number(value) { + return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value) +} + +/** + * 验证字符串 + */ +function string(value) { + return typeof value === 'string' +} + +/** + * 验证整数 + */ +function digits(value) { + return /^\d+$/.test(value) +} + +/** + * 验证身份证号码 + */ +function idCard(value) { + return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test( + value + ) +} + +/** + * 是否车牌号 + */ +function carNo(value) { + // 新能源车牌 + const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/ + // 旧车牌 + const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/ + if (value.length === 7) { + return creg.test(value) + } if (value.length === 8) { + return xreg.test(value) + } + return false +} + +/** + * 金额,只允许2位小数 + */ +function amount(value) { + // 金额,只允许保留两位小数 + return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value) +} + +/** + * 中文 + */ +function chinese(value) { + const reg = /^[\u4e00-\u9fa5]+$/gi + return reg.test(value) +} + +/** + * 只能输入字母 + */ +function letter(value) { + return /^[a-zA-Z]*$/.test(value) +} + +/** + * 只能是字母或者数字 + */ +function enOrNum(value) { + // 英文或者数字 + const reg = /^[0-9a-zA-Z]*$/g + return reg.test(value) +} + +/** + * 验证是否包含某个值 + */ +function contains(value, param) { + return value.indexOf(param) >= 0 +} + +/** + * 验证一个值范围[min, max] + */ +function range(value, param) { + return value >= param[0] && value <= param[1] +} + +/** + * 验证一个长度范围[min, max] + */ +function rangeLength(value, param) { + return value.length >= param[0] && value.length <= param[1] +} + +/** + * 是否固定电话 + */ +function landline(value) { + const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/ + return reg.test(value) +} + +/** + * 判断是否为空 + */ +function empty(value) { + switch (typeof value) { + case 'undefined': + return true + case 'string': + if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true + break + case 'boolean': + if (!value) return true + break + case 'number': + if (value === 0 || isNaN(value)) return true + break + case 'object': + if (value === null || value.length === 0) return true + for (const i in value) { + return false + } + return true + } + return false +} + +/** + * 是否json字符串 + */ +function jsonString(value) { + if (typeof value === 'string') { + try { + const obj = JSON.parse(value) + if (typeof obj === 'object' && obj) { + return true + } + return false + } catch (e) { + return false + } + } + return false +} + +/** + * 是否数组 + */ +function array(value) { + if (typeof Array.isArray === 'function') { + return Array.isArray(value) + } + return Object.prototype.toString.call(value) === '[object Array]' +} + +/** + * 是否对象 + */ +function object(value) { + return Object.prototype.toString.call(value) === '[object Object]' +} + +/** + * 是否短信验证码 + */ +function code(value, len = 6) { + return new RegExp(`^\\d{${len}}$`).test(value) +} + +/** + * 是否函数方法 + * @param {Object} value + */ +function func(value) { + return typeof value === 'function' +} + +/** + * 是否promise对象 + * @param {Object} value + */ +function promise(value) { + return object(value) && func(value.then) && func(value.catch) +} + +/** 是否图片格式 + * @param {Object} value + */ +function image(value) { + const newValue = value.split('?')[0] + const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i + return IMAGE_REGEXP.test(newValue) +} + +/** + * 是否视频格式 + * @param {Object} value + */ +function video(value) { + const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|m3u8)/i + return VIDEO_REGEXP.test(value) +} + +/** + * 是否为正则对象 + * @param {Object} + * @return {Boolean} + */ +function regExp(o) { + return o && Object.prototype.toString.call(o) === '[object RegExp]' +} + +export { + email, + mobile, + url, + date, + dateISO, + number, + digits, + idCard, + carNo, + amount, + chinese, + letter, + enOrNum, + contains, + range, + rangeLength, + empty, + jsonString, + landline, + object, + array, + code, + func, + promise, + video, + image, + regExp, + string +} diff --git a/uni_modules/uv-ui-tools/libs/function/throttle.js b/uni_modules/uv-ui-tools/libs/function/throttle.js new file mode 100644 index 0000000..2f33611 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/function/throttle.js @@ -0,0 +1,30 @@ +let timer; let + flag +/** + * 节流原理:在一定时间内,只能触发一次 + * + * @param {Function} func 要执行的回调函数 + * @param {Number} wait 延时的时间 + * @param {Boolean} immediate 是否立即执行 + * @return null + */ +function throttle(func, wait = 500, immediate = true) { + if (immediate) { + if (!flag) { + flag = true + // 如果是立即执行,则在wait毫秒内开始时执行 + typeof func === 'function' && func() + timer = setTimeout(() => { + flag = false + }, wait) + } + } else if (!flag) { + flag = true + // 如果是非立即执行,则在wait毫秒内的结束处执行 + timer = setTimeout(() => { + flag = false + typeof func === 'function' && func() + }, wait) + } +} +export default throttle diff --git a/uni_modules/uv-ui-tools/libs/luch-request/adapters/index.js b/uni_modules/uv-ui-tools/libs/luch-request/adapters/index.js new file mode 100644 index 0000000..31a5cfc --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/adapters/index.js @@ -0,0 +1,132 @@ +import buildURL from '../helpers/buildURL' +import buildFullPath from '../core/buildFullPath' +import settle from '../core/settle' +import {isUndefined} from "../utils" + +/** + * 返回可选值存在的配置 + * @param {Array} keys - 可选值数组 + * @param {Object} config2 - 配置 + * @return {{}} - 存在的配置项 + */ +const mergeKeys = (keys, config2) => { + let config = {} + keys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } + }) + return config +} +export default (config) => { + return new Promise((resolve, reject) => { + let fullPath = buildURL(buildFullPath(config.baseURL, config.url), config.params, config.paramsSerializer) + const _config = { + url: fullPath, + header: config.header, + complete: (response) => { + config.fullPath = fullPath + response.config = config + response.rawData = response.data + try { + let jsonParseHandle = false + const forcedJSONParsingType = typeof config.forcedJSONParsing + if (forcedJSONParsingType === 'boolean') { + jsonParseHandle = config.forcedJSONParsing + } else if (forcedJSONParsingType === 'object') { + const includesMethod = config.forcedJSONParsing.include || [] + jsonParseHandle = includesMethod.includes(config.method) + } + + // 对可能字符串不是json 的情况容错 + if (jsonParseHandle && typeof response.data === 'string') { + response.data = JSON.parse(response.data) + } + // eslint-disable-next-line no-empty + } catch (e) { + } + settle(resolve, reject, response) + } + } + let requestTask + if (config.method === 'UPLOAD') { + delete _config.header['content-type'] + delete _config.header['Content-Type'] + let otherConfig = { + // #ifdef MP-ALIPAY + fileType: config.fileType, + // #endif + filePath: config.filePath, + name: config.name + } + const optionalKeys = [ + // #ifdef APP-PLUS || H5 + 'files', + // #endif + // #ifdef H5 + 'file', + // #endif + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + 'timeout', + // #endif + 'formData' + ] + requestTask = uni.uploadFile({..._config, ...otherConfig, ...mergeKeys(optionalKeys, config)}) + } else if (config.method === 'DOWNLOAD') { + const optionalKeys = [ + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + 'timeout', + // #endif + // #ifdef MP + 'filePath', + // #endif + ] + requestTask = uni.downloadFile({..._config, ...mergeKeys(optionalKeys, config)}) + } else { + const optionalKeys = [ + 'data', + 'method', + // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN + 'timeout', + // #endif + 'dataType', + // #ifndef MP-ALIPAY + 'responseType', + // #endif + // #ifdef APP-PLUS + 'sslVerify', + // #endif + // #ifdef H5 + 'withCredentials', + // #endif + // #ifdef APP-PLUS + 'firstIpv4', + // #endif + // #ifdef MP-WEIXIN + 'enableHttp2', + 'enableQuic', + // #endif + // #ifdef MP-TOUTIAO || MP-WEIXIN + 'enableCache', + // #endif + // #ifdef MP-WEIXIN + 'enableHttpDNS', + 'httpDNSServiceId', + 'enableChunked', + 'forceCellularNetwork', + // #endif + // #ifdef MP-ALIPAY + 'enableCookie', + // #endif + // #ifdef MP-BAIDU + 'cloudCache', + 'defer' + // #endif + ] + requestTask = uni.request({..._config, ...mergeKeys(optionalKeys, config)}) + } + if (config.getTask) { + config.getTask(requestTask, config) + } + }) +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/InterceptorManager.js b/uni_modules/uv-ui-tools/libs/luch-request/core/InterceptorManager.js new file mode 100644 index 0000000..3ea0d5e --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/InterceptorManager.js @@ -0,0 +1,51 @@ +'use strict' + + +function InterceptorManager() { + this.handlers = [] +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }) + return this.handlers.length - 1 +} + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null + } +} + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + this.handlers.forEach(h => { + if (h !== null) { + fn(h) + } + }) +} + +export default InterceptorManager diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/Request.js b/uni_modules/uv-ui-tools/libs/luch-request/core/Request.js new file mode 100644 index 0000000..96c89a8 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/Request.js @@ -0,0 +1,201 @@ +/** + * @Class Request + * @description luch-request http请求插件 + * @Author lu-ch + * @Email webwork.s@qq.com + * 文档: https://www.quanzhan.co/luch-request/ + * github: https://github.com/lei-mu/luch-request + * DCloud: http://ext.dcloud.net.cn/plugin?id=392 + */ + + +import dispatchRequest from './dispatchRequest' +import InterceptorManager from './InterceptorManager' +import mergeConfig from './mergeConfig' +import defaults from './defaults' +import { isPlainObject } from '../utils' +import clone from '../utils/clone' + +export default class Request { + /** + * @param {Object} arg - 全局配置 + * @param {String} arg.baseURL - 全局根路径 + * @param {Object} arg.header - 全局header + * @param {String} arg.method = [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE] - 全局默认请求方式 + * @param {String} arg.dataType = [json] - 全局默认的dataType + * @param {String} arg.responseType = [text|arraybuffer] - 全局默认的responseType。支付宝小程序不支持 + * @param {Object} arg.custom - 全局默认的自定义参数 + * @param {Number} arg.timeout - 全局默认的超时时间,单位 ms。默认60000。H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)、微信小程序(2.10.0)、支付宝小程序 + * @param {Boolean} arg.sslVerify - 全局默认的是否验证 ssl 证书。默认true.仅App安卓端支持(HBuilderX 2.3.3+) + * @param {Boolean} arg.withCredentials - 全局默认的跨域请求时是否携带凭证(cookies)。默认false。仅H5支持(HBuilderX 2.6.15+) + * @param {Boolean} arg.firstIpv4 - 全DNS解析时优先使用ipv4。默认false。仅 App-Android 支持 (HBuilderX 2.8.0+) + * @param {Function(statusCode):Boolean} arg.validateStatus - 全局默认的自定义验证器。默认statusCode >= 200 && statusCode < 300 + */ + constructor(arg = {}) { + if (!isPlainObject(arg)) { + arg = {} + console.warn('设置全局参数必须接收一个Object') + } + this.config = clone({...defaults, ...arg}) + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + } + } + + /** + * @Function + * @param {Request~setConfigCallback} f - 设置全局默认配置 + */ + setConfig(f) { + this.config = f(this.config) + } + + middleware(config) { + config = mergeConfig(this.config, config) + let chain = [dispatchRequest, undefined] + let promise = Promise.resolve(config) + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected) + }) + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected) + }) + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()) + } + + return promise + } + + /** + * @Function + * @param {Object} config - 请求配置项 + * @prop {String} options.url - 请求路径 + * @prop {Object} options.data - 请求参数 + * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型 + * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse + * @prop {Object} [options.header = config.header] - 请求header + * @prop {Object} [options.method = config.method] - 请求方法 + * @returns {Promise} + */ + request(config = {}) { + return this.middleware(config) + } + + get(url, options = {}) { + return this.middleware({ + url, + method: 'GET', + ...options + }) + } + + post(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'POST', + ...options + }) + } + + // #ifndef MP-ALIPAY || MP-KUAISHOU || MP-JD + put(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'PUT', + ...options + }) + } + + // #endif + + // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU + delete(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'DELETE', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN + connect(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'CONNECT', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN || MP-BAIDU + head(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'HEAD', + ...options + }) + } + + // #endif + + // #ifdef APP-PLUS || H5 || MP-WEIXIN || MP-BAIDU + options(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'OPTIONS', + ...options + }) + } + + // #endif + + // #ifdef H5 || MP-WEIXIN + trace(url, data, options = {}) { + return this.middleware({ + url, + data, + method: 'TRACE', + ...options + }) + } + + // #endif + + upload(url, config = {}) { + config.url = url + config.method = 'UPLOAD' + return this.middleware(config) + } + + download(url, config = {}) { + config.url = url + config.method = 'DOWNLOAD' + return this.middleware(config) + } + + get version () { + return '3.1.0' + } +} + + +/** + * setConfig回调 + * @return {Object} - 返回操作后的config + * @callback Request~setConfigCallback + * @param {Object} config - 全局默认config + */ diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/buildFullPath.js b/uni_modules/uv-ui-tools/libs/luch-request/core/buildFullPath.js new file mode 100644 index 0000000..f2852f4 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/buildFullPath.js @@ -0,0 +1,20 @@ +'use strict' + +import isAbsoluteURL from '../helpers/isAbsoluteURL' +import combineURLs from '../helpers/combineURLs' + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +export default function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL) + } + return requestedURL +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/defaults.js b/uni_modules/uv-ui-tools/libs/luch-request/core/defaults.js new file mode 100644 index 0000000..db74609 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/defaults.js @@ -0,0 +1,33 @@ +/** + * 默认的全局配置 + */ + + +export default { + baseURL: '', + header: {}, + method: 'GET', + dataType: 'json', + paramsSerializer: null, + // #ifndef MP-ALIPAY + responseType: 'text', + // #endif + custom: {}, + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + timeout: 60000, + // #endif + // #ifdef APP-PLUS + sslVerify: true, + // #endif + // #ifdef H5 + withCredentials: false, + // #endif + // #ifdef APP-PLUS + firstIpv4: false, + // #endif + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300 + }, + // 是否尝试将响应数据json化 + forcedJSONParsing: true +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/dispatchRequest.js b/uni_modules/uv-ui-tools/libs/luch-request/core/dispatchRequest.js new file mode 100644 index 0000000..c5f2c85 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/dispatchRequest.js @@ -0,0 +1,6 @@ +import adapter from '../adapters/index' + + +export default (config) => { + return adapter(config) +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/mergeConfig.js b/uni_modules/uv-ui-tools/libs/luch-request/core/mergeConfig.js new file mode 100644 index 0000000..99c8ecd --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/mergeConfig.js @@ -0,0 +1,126 @@ +import {deepMerge, isUndefined} from '../utils' + +/** + * 合并局部配置优先的配置,如果局部有该配置项则用局部,如果全局有该配置项则用全局 + * @param {Array} keys - 配置项 + * @param {Object} globalsConfig - 当前的全局配置 + * @param {Object} config2 - 局部配置 + * @return {{}} + */ +const mergeKeys = (keys, globalsConfig, config2) => { + let config = {} + keys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } else if (!isUndefined(globalsConfig[prop])) { + config[prop] = globalsConfig[prop] + } + }) + return config +} +/** + * + * @param globalsConfig - 当前实例的全局配置 + * @param config2 - 当前的局部配置 + * @return - 合并后的配置 + */ +export default (globalsConfig, config2 = {}) => { + const method = config2.method || globalsConfig.method || 'GET' + let config = { + baseURL: config2.baseURL || globalsConfig.baseURL || '', + method: method, + url: config2.url || '', + params: config2.params || {}, + custom: {...(globalsConfig.custom || {}), ...(config2.custom || {})}, + header: deepMerge(globalsConfig.header || {}, config2.header || {}) + } + const defaultToConfig2Keys = ['getTask', 'validateStatus', 'paramsSerializer', 'forcedJSONParsing'] + config = {...config, ...mergeKeys(defaultToConfig2Keys, globalsConfig, config2)} + + // eslint-disable-next-line no-empty + if (method === 'DOWNLOAD') { + const downloadKeys = [ + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + 'timeout', + // #endif + // #ifdef MP + 'filePath', + // #endif + ] + config = {...config, ...mergeKeys(downloadKeys, globalsConfig, config2)} + } else if (method === 'UPLOAD') { + delete config.header['content-type'] + delete config.header['Content-Type'] + const uploadKeys = [ + // #ifdef APP-PLUS || H5 + 'files', + // #endif + // #ifdef MP-ALIPAY + 'fileType', + // #endif + // #ifdef H5 + 'file', + // #endif + 'filePath', + 'name', + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + 'timeout', + // #endif + 'formData', + ] + uploadKeys.forEach(prop => { + if (!isUndefined(config2[prop])) { + config[prop] = config2[prop] + } + }) + // #ifdef H5 || APP-PLUS || MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO || MP-KUAISHOU + if (isUndefined(config.timeout) && !isUndefined(globalsConfig.timeout)) { + config['timeout'] = globalsConfig['timeout'] + } + // #endif + } else { + const defaultsKeys = [ + 'data', + // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN + 'timeout', + // #endif + 'dataType', + // #ifndef MP-ALIPAY + 'responseType', + // #endif + // #ifdef APP-PLUS + 'sslVerify', + // #endif + // #ifdef H5 + 'withCredentials', + // #endif + // #ifdef APP-PLUS + 'firstIpv4', + // #endif + // #ifdef MP-WEIXIN + 'enableHttp2', + 'enableQuic', + // #endif + // #ifdef MP-TOUTIAO || MP-WEIXIN + 'enableCache', + // #endif + // #ifdef MP-WEIXIN + 'enableHttpDNS', + 'httpDNSServiceId', + 'enableChunked', + 'forceCellularNetwork', + // #endif + // #ifdef MP-ALIPAY + 'enableCookie', + // #endif + // #ifdef MP-BAIDU + 'cloudCache', + 'defer' + // #endif + + ] + config = {...config, ...mergeKeys(defaultsKeys, globalsConfig, config2)} + } + + return config +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/core/settle.js b/uni_modules/uv-ui-tools/libs/luch-request/core/settle.js new file mode 100644 index 0000000..b2f1659 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/core/settle.js @@ -0,0 +1,16 @@ +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +export default function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus + const status = response.statusCode + if (status && (!validateStatus || validateStatus(status))) { + resolve(response) + } else { + reject(response) + } +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/helpers/buildURL.js b/uni_modules/uv-ui-tools/libs/luch-request/helpers/buildURL.js new file mode 100644 index 0000000..e90b908 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/helpers/buildURL.js @@ -0,0 +1,64 @@ +'use strict' + +import * as utils from './../utils' + +function encode(val) { + return encodeURIComponent(val).replace(/%40/gi, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']') +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +export default function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url + } + + var serializedParams + if (paramsSerializer) { + serializedParams = paramsSerializer(params) + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString() + } else { + var parts = [] + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return + } + + if (utils.isArray(val)) { + key = key + '[]' + } else { + val = [val] + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString() + } else if (utils.isObject(v)) { + v = JSON.stringify(v) + } + parts.push(encode(key) + '=' + encode(v)) + }) + }) + + serializedParams = parts.join('&') + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#') + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex) + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams + } + + return url +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/helpers/combineURLs.js b/uni_modules/uv-ui-tools/libs/luch-request/helpers/combineURLs.js new file mode 100644 index 0000000..7b9d1ef --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/helpers/combineURLs.js @@ -0,0 +1,14 @@ +'use strict' + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +export default function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/helpers/isAbsoluteURL.js b/uni_modules/uv-ui-tools/libs/luch-request/helpers/isAbsoluteURL.js new file mode 100644 index 0000000..2a82517 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/helpers/isAbsoluteURL.js @@ -0,0 +1,14 @@ +'use strict' + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +export default function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url) +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/index.d.ts b/uni_modules/uv-ui-tools/libs/luch-request/index.d.ts new file mode 100644 index 0000000..62d3fb9 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/index.d.ts @@ -0,0 +1,197 @@ +export type HttpTask = UniApp.RequestTask | UniApp.UploadTask | UniApp.DownloadTask; + +export type HttpRequestTask = UniApp.RequestTask; + +export type HttpUploadTask = UniApp.UploadTask; + +export type HttpDownloadTask = UniApp.DownloadTask; + +export type HttpMethod = + "GET" + | "POST" + | "PUT" + | "DELETE" + | "CONNECT" + | "HEAD" + | "OPTIONS" + | "TRACE" + | "UPLOAD" + | "DOWNLOAD"; + +export type HttpRequestHeader = Record; + +export type HttpParams = Record; + +export type HttpData = Record; + +export type HttpResponseType = 'arraybuffer' | 'text'; + +export type HttpCustom = Record; + +export type HttpFileType = 'image' | 'video' | 'audio'; + +export type HttpFormData = Record; + +export type HttpResponseHeader = Record & { + "set-cookie"?: string[] +}; + +export interface HttpRequestConfig { + /** @desc 请求服务器接口地址 */ + url?: string; + /** @desc 请求方式,默认为 GET */ + method?: HttpMethod; + /** @desc 请求基地址 */ + baseURL?: string; + /** @desc 请求头信息,不能设置 Referer,App、H5 端会自动带上 cookie,且 H5 端不可手动修改 */ + header?: HttpRequestHeader; + /** @desc 请求查询参数,自动拼接为查询字符串 */ + params?: HttpParams; + /** @desc 请求体参数 */ + data?: HttpData; + /** @desc 超时时间,单位 ms,默认为 60000,仅 H5 (HBuilderX 2.9.9+)、APP (HBuilderX 2.9.9+)、微信小程序 (2.10.0)、支付宝小程序支持 */ + timeout?: number; + /** @desc 跨域请求时是否携带凭证 (cookies),默认为 false,仅 H5 (HBuilderX 2.6.15+) 支持 */ + withCredentials?: boolean; + /** @desc 设置响应的数据类型,支付宝小程序不支持 */ + responseType?: HttpResponseType; + /** @desc 全局自定义验证器 */ + validateStatus?: ((statusCode: number) => boolean) | null; + + + /** params 参数自定义处理 */ + paramsSerializer?: (params: AnyObject) => string | void; + + /** @desc 默认为 json,如果设为 json,会尝试对返回的数据做一次 JSON.parse */ + dataType?: string; + /** @desc DNS 解析时是否优先使用 ipv4,默认为 false,仅 App-Android (HBuilderX 2.8.0+) 支持 */ + firstIpv4?: boolean; + /** @desc 是否验证 SSL 证书,默认为 true,仅 App-Android (HBuilderX 2.3.3+) 支持 */ + sslVerify?: boolean; + + /** @desc 开启 http2;微信小程序 */ + enableHttp2?: boolean; + + /** @desc 开启 quic;微信小程序 */ + enableQuic?: boolean; + /** @desc 开启 cache;微信小程序、字节跳动小程序 2.31.0+ */ + enableCache?: boolean; + /** @desc 开启 httpDNS;微信小程序 */ + enableHttpDNS?: boolean; + /** @desc httpDNS 服务商;微信小程序 */ + httpDNSServiceId?: string; + /** @desc 开启 transfer-encoding chunked;微信小程序 */ + enableChunked?: boolean; + /** @desc wifi下使用移动网络发送请求;微信小程序 */ + forceCellularNetwork?: boolean; + /** @desc 开启后可在headers中编辑cookie;支付宝小程序 10.2.33+ */ + enableCookie?: boolean; + /** @desc 是否开启云加速;百度小程序 3.310.11+ */ + cloudCache?: boolean | object; + /** @desc 控制当前请求是否延时至首屏内容渲染后发送;百度小程序 3.310.11+ */ + defer?: boolean; + + /** @desc 自定义参数 */ + custom?: HttpCustom; + + /** @desc 返回当前请求的 task 和 options,不要在这里修改 options */ + getTask?: (task: T, options: HttpRequestConfig) => void; + + /** @desc 需要上传的文件列表,使用 files 时,filePath 和 name 不生效,仅支持 App、H5 (2.6.15+) */ + files?: { name?: string; file?: File; uri: string; }[]; + /** @desc 文件类型,仅支付宝小程序支持且为必填项 */ + fileType?: HttpFileType; + /** @desc 要上传的文件对象,仅 H5 (2.6.15+) 支持 */ + file?: File; + /** @desc 要上传文件资源的路径,使用 files 时,filePath 和 name 不生效 */ + filePath?: string; + /** @desc 文件对应的 key,开发者在服务器端通过这个 key 可以获取到文件二进制内容,使用 files 时,filePath 和 name 不生效 */ + name?: string; + /** @desc 请求中其他额外的 form data */ + formData?: HttpFormData; +} + +export interface HttpResponse { + data: T; + statusCode: number; + header: HttpResponseHeader; + config: HttpRequestConfig; + cookies: string[]; + errMsg: string; + rawData: any; +} + +export interface HttpUploadResponse { + data: T; + statusCode: number; + config: HttpRequestConfig; + errMsg: string; + rawData: any; +} + +export interface HttpDownloadResponse extends HttpResponse { + tempFilePath: string; + apFilePath?: string; + filePath?: string; + fileContent?: string; +} + +export interface HttpError { + data?: T; + statusCode?: number; + header?: HttpResponseHeader; + config: HttpRequestConfig; + cookies?: string[]; + errMsg: string; +} + +export interface HttpPromise extends Promise> { +} + +export interface HttpInterceptorManager { + use(onFulfilled?: (value: V) => V | Promise, onRejected?: (error: E) => T | Promise): void; + + eject(id: number): void; +} + +export abstract class HttpRequestAbstract { + constructor(config?: HttpRequestConfig); + + interceptors: { + request: HttpInterceptorManager; + response: HttpInterceptorManager; + } + + request, D = HttpRequestTask>(config: HttpRequestConfig): Promise; + + get, D = HttpRequestTask>(url: string, config?: HttpRequestConfig): Promise; + + delete, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + head, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + options, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + post, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + put, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + config: HttpRequestConfig; + + setConfig(onSend: (config: HttpRequestConfig) => HttpRequestConfig): void; + + connect, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + trace, D = HttpRequestTask>(url: string, data?: HttpData, config?: HttpRequestConfig): Promise; + + upload, D = HttpUploadTask>(url: string, config?: HttpRequestConfig): Promise; + + download, D = HttpDownloadTask>(url: string, config?: HttpRequestConfig): Promise; + + middleware, D = HttpTask>(config: HttpRequestConfig): Promise; +} + +declare class HttpRequest extends HttpRequestAbstract { +} + +export default HttpRequest; diff --git a/uni_modules/uv-ui-tools/libs/luch-request/index.js b/uni_modules/uv-ui-tools/libs/luch-request/index.js new file mode 100644 index 0000000..d8fe348 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/index.js @@ -0,0 +1,2 @@ +import Request from './core/Request' +export default Request diff --git a/uni_modules/uv-ui-tools/libs/luch-request/utils.js b/uni_modules/uv-ui-tools/libs/luch-request/utils.js new file mode 100644 index 0000000..0b5bf21 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/utils.js @@ -0,0 +1,135 @@ +'use strict' + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +export function isArray (val) { + return toString.call(val) === '[object Array]' +} + + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +export function isObject (val) { + return val !== null && typeof val === 'object' +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +export function isDate (val) { + return toString.call(val) === '[object Date]' +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +export function isURLSearchParams (val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams +} + + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +export function forEach (obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj] + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj) + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj) + } + } + } +} + +/** + * 是否为boolean 值 + * @param val + * @returns {boolean} + */ +export function isBoolean(val) { + return typeof val === 'boolean' +} + +/** + * 是否为真正的对象{} new Object + * @param {any} obj - 检测的对象 + * @returns {boolean} + */ +export function isPlainObject(obj) { + return Object.prototype.toString.call(obj) === '[object Object]' +} + + + +/** + * Function equal to merge with the difference being that no reference + * to original objects is kept. + * + * @see merge + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +export function deepMerge(/* obj1, obj2, obj3, ... */) { + let result = {} + function assignValue(val, key) { + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = deepMerge(result[key], val) + } else if (typeof val === 'object') { + result[key] = deepMerge({}, val) + } else { + result[key] = val + } + } + for (let i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue) + } + return result +} + +export function isUndefined (val) { + return typeof val === 'undefined' +} diff --git a/uni_modules/uv-ui-tools/libs/luch-request/utils/clone.js b/uni_modules/uv-ui-tools/libs/luch-request/utils/clone.js new file mode 100644 index 0000000..2fee704 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/luch-request/utils/clone.js @@ -0,0 +1,264 @@ +/* eslint-disable */ +var clone = (function() { + 'use strict'; + + function _instanceof(obj, type) { + return type != null && obj instanceof type; + } + + var nativeMap; + try { + nativeMap = Map; + } catch(_) { + // maybe a reference error because no `Map`. Give it a dummy value that no + // value will ever be an instanceof. + nativeMap = function() {}; + } + + var nativeSet; + try { + nativeSet = Set; + } catch(_) { + nativeSet = function() {}; + } + + var nativePromise; + try { + nativePromise = Promise; + } catch(_) { + nativePromise = function() {}; + } + + /** + * Clones (copies) an Object using deep copying. + * + * This function supports circular references by default, but if you are certain + * there are no circular references in your object, you can save some CPU time + * by calling clone(obj, false). + * + * Caution: if `circular` is false and `parent` contains circular references, + * your program may enter an infinite loop and crash. + * + * @param `parent` - the object to be cloned + * @param `circular` - set to true if the object to be cloned may contain + * circular references. (optional - true by default) + * @param `depth` - set to a number if the object is only to be cloned to + * a particular depth. (optional - defaults to Infinity) + * @param `prototype` - sets the prototype to be used when cloning an object. + * (optional - defaults to parent prototype). + * @param `includeNonEnumerable` - set to true if the non-enumerable properties + * should be cloned as well. Non-enumerable properties on the prototype + * chain will be ignored. (optional - false by default) + */ + function clone(parent, circular, depth, prototype, includeNonEnumerable) { + if (typeof circular === 'object') { + depth = circular.depth; + prototype = circular.prototype; + includeNonEnumerable = circular.includeNonEnumerable; + circular = circular.circular; + } + // maintain two arrays for circular references, where corresponding parents + // and children have the same index + var allParents = []; + var allChildren = []; + + var useBuffer = typeof Buffer != 'undefined'; + + if (typeof circular == 'undefined') + circular = true; + + if (typeof depth == 'undefined') + depth = Infinity; + + // recurse this function so we don't reset allParents and allChildren + function _clone(parent, depth) { + // cloning null always returns null + if (parent === null) + return null; + + if (depth === 0) + return parent; + + var child; + var proto; + if (typeof parent != 'object') { + return parent; + } + + if (_instanceof(parent, nativeMap)) { + child = new nativeMap(); + } else if (_instanceof(parent, nativeSet)) { + child = new nativeSet(); + } else if (_instanceof(parent, nativePromise)) { + child = new nativePromise(function (resolve, reject) { + parent.then(function(value) { + resolve(_clone(value, depth - 1)); + }, function(err) { + reject(_clone(err, depth - 1)); + }); + }); + } else if (clone.__isArray(parent)) { + child = []; + } else if (clone.__isRegExp(parent)) { + child = new RegExp(parent.source, __getRegExpFlags(parent)); + if (parent.lastIndex) child.lastIndex = parent.lastIndex; + } else if (clone.__isDate(parent)) { + child = new Date(parent.getTime()); + } else if (useBuffer && Buffer.isBuffer(parent)) { + if (Buffer.from) { + // Node.js >= 5.10.0 + child = Buffer.from(parent); + } else { + // Older Node.js versions + child = new Buffer(parent.length); + parent.copy(child); + } + return child; + } else if (_instanceof(parent, Error)) { + child = Object.create(parent); + } else { + if (typeof prototype == 'undefined') { + proto = Object.getPrototypeOf(parent); + child = Object.create(proto); + } + else { + child = Object.create(prototype); + proto = prototype; + } + } + + if (circular) { + var index = allParents.indexOf(parent); + + if (index != -1) { + return allChildren[index]; + } + allParents.push(parent); + allChildren.push(child); + } + + if (_instanceof(parent, nativeMap)) { + parent.forEach(function(value, key) { + var keyChild = _clone(key, depth - 1); + var valueChild = _clone(value, depth - 1); + child.set(keyChild, valueChild); + }); + } + if (_instanceof(parent, nativeSet)) { + parent.forEach(function(value) { + var entryChild = _clone(value, depth - 1); + child.add(entryChild); + }); + } + + for (var i in parent) { + var attrs = Object.getOwnPropertyDescriptor(parent, i); + if (attrs) { + child[i] = _clone(parent[i], depth - 1); + } + + try { + var objProperty = Object.getOwnPropertyDescriptor(parent, i); + if (objProperty.set === 'undefined') { + // no setter defined. Skip cloning this property + continue; + } + child[i] = _clone(parent[i], depth - 1); + } catch(e){ + if (e instanceof TypeError) { + // when in strict mode, TypeError will be thrown if child[i] property only has a getter + // we can't do anything about this, other than inform the user that this property cannot be set. + continue + } else if (e instanceof ReferenceError) { + //this may happen in non strict mode + continue + } + } + + } + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(parent); + for (var i = 0; i < symbols.length; i++) { + // Don't need to worry about cloning a symbol because it is a primitive, + // like a number or string. + var symbol = symbols[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent, symbol); + if (descriptor && !descriptor.enumerable && !includeNonEnumerable) { + continue; + } + child[symbol] = _clone(parent[symbol], depth - 1); + Object.defineProperty(child, symbol, descriptor); + } + } + + if (includeNonEnumerable) { + var allPropertyNames = Object.getOwnPropertyNames(parent); + for (var i = 0; i < allPropertyNames.length; i++) { + var propertyName = allPropertyNames[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName); + if (descriptor && descriptor.enumerable) { + continue; + } + child[propertyName] = _clone(parent[propertyName], depth - 1); + Object.defineProperty(child, propertyName, descriptor); + } + } + + return child; + } + + return _clone(parent, depth); + } + + /** + * Simple flat clone using prototype, accepts only objects, usefull for property + * override on FLAT configuration object (no nested props). + * + * USE WITH CAUTION! This may not behave as you wish if you do not know how this + * works. + */ + clone.clonePrototype = function clonePrototype(parent) { + if (parent === null) + return null; + + var c = function () {}; + c.prototype = parent; + return new c(); + }; + +// private utility functions + + function __objToStr(o) { + return Object.prototype.toString.call(o); + } + clone.__objToStr = __objToStr; + + function __isDate(o) { + return typeof o === 'object' && __objToStr(o) === '[object Date]'; + } + clone.__isDate = __isDate; + + function __isArray(o) { + return typeof o === 'object' && __objToStr(o) === '[object Array]'; + } + clone.__isArray = __isArray; + + function __isRegExp(o) { + return typeof o === 'object' && __objToStr(o) === '[object RegExp]'; + } + clone.__isRegExp = __isRegExp; + + function __getRegExpFlags(re) { + var flags = ''; + if (re.global) flags += 'g'; + if (re.ignoreCase) flags += 'i'; + if (re.multiline) flags += 'm'; + return flags; + } + clone.__getRegExpFlags = __getRegExpFlags; + + return clone; +})(); + +export default clone diff --git a/uni_modules/uv-ui-tools/libs/mixin/button.js b/uni_modules/uv-ui-tools/libs/mixin/button.js new file mode 100644 index 0000000..0c019c2 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/button.js @@ -0,0 +1,13 @@ +export default { + props: { + lang: String, + sessionFrom: String, + sendMessageTitle: String, + sendMessagePath: String, + sendMessageImg: String, + showMessageCard: Boolean, + appParameter: String, + formType: String, + openType: String + } +} diff --git a/uni_modules/uv-ui-tools/libs/mixin/mixin.js b/uni_modules/uv-ui-tools/libs/mixin/mixin.js new file mode 100644 index 0000000..0dd3b03 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/mixin.js @@ -0,0 +1,172 @@ +import * as index from '../function/index.js'; +import * as test from '../function/test.js'; +import route from '../util/route.js'; +import debounce from '../function/debounce.js'; +import throttle from '../function/throttle.js'; +export default { + // 定义每个组件都可能需要用到的外部样式以及类名 + props: { + // 每个组件都有的父组件传递的样式,可以为字符串或者对象形式 + customStyle: { + type: [Object, String], + default: () => ({}) + }, + customClass: { + type: String, + default: '' + }, + // 跳转的页面路径 + url: { + type: String, + default: '' + }, + // 页面跳转的类型 + linkType: { + type: String, + default: 'navigateTo' + } + }, + data() { + return {} + }, + onLoad() { + // getRect挂载到$uv上,因为这方法需要使用in(this),所以无法把它独立成一个单独的文件导出 + this.$uv.getRect = this.$uvGetRect + }, + created() { + // 组件当中,只有created声明周期,为了能在组件使用,故也在created中将方法挂载到$uv + this.$uv.getRect = this.$uvGetRect + }, + computed: { + $uv() { + return { + ...index, + test, + route, + debounce, + throttle, + unit: uni?.$uv?.config?.unit + } + }, + /** + * 生成bem规则类名 + * 由于微信小程序,H5,nvue之间绑定class的差异,无法通过:class="[bem()]"的形式进行同用 + * 故采用如下折中做法,最后返回的是数组(一般平台)或字符串(支付宝和字节跳动平台),类似['a', 'b', 'c']或'a b c'的形式 + * @param {String} name 组件名称 + * @param {Array} fixed 一直会存在的类名 + * @param {Array} change 会根据变量值为true或者false而出现或者隐藏的类名 + * @returns {Array|string} + */ + bem() { + return function(name, fixed, change) { + // 类名前缀 + const prefix = `uv-${name}--` + const classes = {} + if (fixed) { + fixed.map((item) => { + // 这里的类名,会一直存在 + classes[prefix + this[item]] = true + }) + } + if (change) { + change.map((item) => { + // 这里的类名,会根据this[item]的值为true或者false,而进行添加或者移除某一个类 + this[item] ? (classes[prefix + item] = this[item]) : (delete classes[prefix + item]) + }) + } + return Object.keys(classes) + // 支付宝,头条小程序无法动态绑定一个数组类名,否则解析出来的结果会带有",",而导致失效 + // #ifdef MP-ALIPAY || MP-TOUTIAO || MP-LARK || MP-BAIDU + .join(' ') + // #endif + } + } + }, + methods: { + // 跳转某一个页面 + openPage(urlKey = 'url') { + const url = this[urlKey] + if (url) { + // 执行类似uni.navigateTo的方法 + uni[this.linkType]({ + url + }) + } + }, + // 查询节点信息 + // 目前此方法在支付宝小程序中无法获取组件跟接点的尺寸,为支付宝的bug(2020-07-21) + // 解决办法为在组件根部再套一个没有任何作用的view元素 + $uvGetRect(selector, all) { + return new Promise((resolve) => { + uni.createSelectorQuery() + .in(this)[all ? 'selectAll' : 'select'](selector) + .boundingClientRect((rect) => { + if (all && Array.isArray(rect) && rect.length) { + resolve(rect) + } + if (!all && rect) { + resolve(rect) + } + }) + .exec() + }) + }, + getParentData(parentName = '') { + // 避免在created中去定义parent变量 + if (!this.parent) this.parent = {} + // 这里的本质原理是,通过获取父组件实例(也即类似uv-radio的父组件uv-radio-group的this) + // 将父组件this中对应的参数,赋值给本组件(uv-radio的this)的parentData对象中对应的属性 + // 之所以需要这么做,是因为所有端中,头条小程序不支持通过this.parent.xxx去监听父组件参数的变化 + // 此处并不会自动更新子组件的数据,而是依赖父组件uv-radio-group去监听data的变化,手动调用更新子组件的方法去重新获取 + this.parent = this.$uv.$parent.call(this, parentName) + if (this.parent.children) { + // 如果父组件的children不存在本组件的实例,才将本实例添加到父组件的children中 + this.parent.children.indexOf(this) === -1 && this.parent.children.push(this) + } + if (this.parent && this.parentData) { + // 历遍parentData中的属性,将parent中的同名属性赋值给parentData + Object.keys(this.parentData).map((key) => { + this.parentData[key] = this.parent[key] + }) + } + }, + // 阻止事件冒泡 + preventEvent(e) { + e && typeof(e.stopPropagation) === 'function' && e.stopPropagation() + }, + // 空操作 + noop(e) { + this.preventEvent(e) + } + }, + onReachBottom() { + uni.$emit('uvOnReachBottom') + }, + beforeDestroy() { + // 判断当前页面是否存在parent和chldren,一般在checkbox和checkbox-group父子联动的场景会有此情况 + // 组件销毁时,移除子组件在父组件children数组中的实例,释放资源,避免数据混乱 + if (this.parent && test.array(this.parent.children)) { + // 组件销毁时,移除父组件中的children数组中对应的实例 + const childrenList = this.parent.children + childrenList.map((child, index) => { + // 如果相等,则移除 + if (child === this) { + childrenList.splice(index, 1) + } + }) + } + }, + // 兼容vue3 + unmounted() { + if (this.parent && test.array(this.parent.children)) { + // 组件销毁时,移除父组件中的children数组中对应的实例 + const childrenList = this.parent.children + childrenList.map((child, index) => { + // 如果相等,则移除 + if (child === this) { + childrenList.splice(index, 1) + } + }) + } + } +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js b/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js new file mode 100644 index 0000000..90b6903 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js @@ -0,0 +1,8 @@ +export default { + // #ifdef MP-WEIXIN + // 将自定义节点设置成虚拟的(去掉自定义组件包裹层),更加接近Vue组件的表现,能更好的使用flex属性 + options: { + virtualHost: true + } + // #endif +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/mixin/mpShare.js b/uni_modules/uv-ui-tools/libs/mixin/mpShare.js new file mode 100644 index 0000000..c9695a0 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/mpShare.js @@ -0,0 +1,13 @@ +export default { + onLoad() { + // 设置默认的转发参数 + uni.$uv.mpShare = { + title: '', // 默认为小程序名称 + path: '', // 默认为当前页面路径 + imageUrl: '' // 默认为当前页面的截图 + } + }, + onShareAppMessage() { + return uni.$uv.mpShare + } +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/libs/mixin/openType.js b/uni_modules/uv-ui-tools/libs/mixin/openType.js new file mode 100644 index 0000000..1b94b7e --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/openType.js @@ -0,0 +1,47 @@ +export default { + props: { + openType: String + }, + emits: ['getphonenumber','getuserinfo','error','opensetting','launchapp','contact','chooseavatar','addgroupapp','chooseaddress','subscribe','login','im'], + methods: { + onGetPhoneNumber(event) { + this.$emit('getphonenumber', event.detail) + }, + onGetUserInfo(event) { + this.$emit('getuserinfo', event.detail) + }, + onError(event) { + this.$emit('error', event.detail) + }, + onOpenSetting(event) { + this.$emit('opensetting', event.detail) + }, + onLaunchApp(event) { + this.$emit('launchapp', event.detail) + }, + onContact(event) { + this.$emit('contact', event.detail) + }, + onChooseavatar(event) { + this.$emit('chooseavatar', event.detail) + }, + onAgreeprivacyauthorization(event) { + this.$emit('agreeprivacyauthorization', event.detail) + }, + onAddgroupapp(event) { + this.$emit('addgroupapp', event.detail) + }, + onChooseaddress(event) { + this.$emit('chooseaddress', event.detail) + }, + onSubscribe(event) { + this.$emit('subscribe', event.detail) + }, + onLogin(event) { + this.$emit('login', event.detail) + }, + onIm(event) { + this.$emit('im', event.detail) + } + } +} diff --git a/uni_modules/uv-ui-tools/libs/mixin/touch.js b/uni_modules/uv-ui-tools/libs/mixin/touch.js new file mode 100644 index 0000000..0ecbd88 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/mixin/touch.js @@ -0,0 +1,59 @@ +const MIN_DISTANCE = 10 + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal' + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical' + } + return '' +} + +export default { + methods: { + getTouchPoint(e) { + if (!e) { + return { + x: 0, + y: 0 + } + } if (e.touches && e.touches[0]) { + return { + x: e.touches[0].pageX, + y: e.touches[0].pageY + } + } if (e.changedTouches && e.changedTouches[0]) { + return { + x: e.changedTouches[0].pageX, + y: e.changedTouches[0].pageY + } + } + return { + x: e.clientX || 0, + y: e.clientY || 0 + } + }, + resetTouchStatus() { + this.direction = '' + this.deltaX = 0 + this.deltaY = 0 + this.offsetX = 0 + this.offsetY = 0 + }, + touchStart(event) { + this.resetTouchStatus() + const touch = this.getTouchPoint(event) + this.startX = touch.x + this.startY = touch.y + }, + touchMove(event) { + const touch = this.getTouchPoint(event) + this.deltaX = touch.x - this.startX + this.deltaY = touch.y - this.startY + this.offsetX = Math.abs(this.deltaX) + this.offsetY = Math.abs(this.deltaY) + this.direction = this.direction || getDirection(this.offsetX, this.offsetY) + } + } +} diff --git a/uni_modules/uv-ui-tools/libs/util/dayjs.js b/uni_modules/uv-ui-tools/libs/util/dayjs.js new file mode 100644 index 0000000..c84ab68 --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/util/dayjs.js @@ -0,0 +1,216 @@ +var __getOwnPropNames = Object.getOwnPropertyNames; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; + +var require_dayjs_min = __commonJS({ + "uvuidayjs"(exports, module) { + !function(t, e) { + "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).dayjs = e(); + }(exports, function() { + "use strict"; + var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s = "minute", u = "hour", a = "day", o = "week", f = "month", h = "quarter", c = "year", d = "date", l = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) { + var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100; + return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]"; + } }, m = function(t2, e2, n2) { + var r2 = String(t2); + return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2; + }, v = { s: m, z: function(t2) { + var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60; + return (e2 <= 0 ? "+" : "-") + m(r2, 2, "0") + ":" + m(i2, 2, "0"); + }, m: function t2(e2, n2) { + if (e2.date() < n2.date()) + return -t2(n2, e2); + var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, f), s2 = n2 - i2 < 0, u2 = e2.clone().add(r2 + (s2 ? -1 : 1), f); + return +(-(r2 + (n2 - i2) / (s2 ? i2 - u2 : u2 - i2)) || 0); + }, a: function(t2) { + return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2); + }, p: function(t2) { + return { M: f, y: c, w: o, d: a, D: d, h: u, m: s, s: i, ms: r, Q: h }[t2] || String(t2 || "").toLowerCase().replace(/s$/, ""); + }, u: function(t2) { + return void 0 === t2; + } }, g = "en", D = {}; + D[g] = M; + var p = function(t2) { + return t2 instanceof _; + }, S = function t2(e2, n2, r2) { + var i2; + if (!e2) + return g; + if ("string" == typeof e2) { + var s2 = e2.toLowerCase(); + D[s2] && (i2 = s2), n2 && (D[s2] = n2, i2 = s2); + var u2 = e2.split("-"); + if (!i2 && u2.length > 1) + return t2(u2[0]); + } else { + var a2 = e2.name; + D[a2] = e2, i2 = a2; + } + return !r2 && i2 && (g = i2), i2 || !r2 && g; + }, w = function(t2, e2) { + if (p(t2)) + return t2.clone(); + var n2 = "object" == typeof e2 ? e2 : {}; + return n2.date = t2, n2.args = arguments, new _(n2); + }, O = v; + O.l = S, O.i = p, O.w = function(t2, e2) { + return w(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset }); + }; + var _ = function() { + function M2(t2) { + this.$L = S(t2.locale, null, true), this.parse(t2); + } + var m2 = M2.prototype; + return m2.parse = function(t2) { + this.$d = function(t3) { + var e2 = t3.date, n2 = t3.utc; + if (null === e2) + return new Date(NaN); + if (O.u(e2)) + return new Date(); + if (e2 instanceof Date) + return new Date(e2); + if ("string" == typeof e2 && !/Z$/i.test(e2)) { + var r2 = e2.match($); + if (r2) { + var i2 = r2[2] - 1 || 0, s2 = (r2[7] || "0").substring(0, 3); + return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s2); + } + } + return new Date(e2); + }(t2), this.$x = t2.x || {}, this.init(); + }, m2.init = function() { + var t2 = this.$d; + this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds(); + }, m2.$utils = function() { + return O; + }, m2.isValid = function() { + return !(this.$d.toString() === l); + }, m2.isSame = function(t2, e2) { + var n2 = w(t2); + return this.startOf(e2) <= n2 && n2 <= this.endOf(e2); + }, m2.isAfter = function(t2, e2) { + return w(t2) < this.startOf(e2); + }, m2.isBefore = function(t2, e2) { + return this.endOf(e2) < w(t2); + }, m2.$g = function(t2, e2, n2) { + return O.u(t2) ? this[e2] : this.set(n2, t2); + }, m2.unix = function() { + return Math.floor(this.valueOf() / 1e3); + }, m2.valueOf = function() { + return this.$d.getTime(); + }, m2.startOf = function(t2, e2) { + var n2 = this, r2 = !!O.u(e2) || e2, h2 = O.p(t2), l2 = function(t3, e3) { + var i2 = O.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2); + return r2 ? i2 : i2.endOf(a); + }, $2 = function(t3, e3) { + return O.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2); + }, y2 = this.$W, M3 = this.$M, m3 = this.$D, v2 = "set" + (this.$u ? "UTC" : ""); + switch (h2) { + case c: + return r2 ? l2(1, 0) : l2(31, 11); + case f: + return r2 ? l2(1, M3) : l2(0, M3 + 1); + case o: + var g2 = this.$locale().weekStart || 0, D2 = (y2 < g2 ? y2 + 7 : y2) - g2; + return l2(r2 ? m3 - D2 : m3 + (6 - D2), M3); + case a: + case d: + return $2(v2 + "Hours", 0); + case u: + return $2(v2 + "Minutes", 1); + case s: + return $2(v2 + "Seconds", 2); + case i: + return $2(v2 + "Milliseconds", 3); + default: + return this.clone(); + } + }, m2.endOf = function(t2) { + return this.startOf(t2, false); + }, m2.$set = function(t2, e2) { + var n2, o2 = O.p(t2), h2 = "set" + (this.$u ? "UTC" : ""), l2 = (n2 = {}, n2[a] = h2 + "Date", n2[d] = h2 + "Date", n2[f] = h2 + "Month", n2[c] = h2 + "FullYear", n2[u] = h2 + "Hours", n2[s] = h2 + "Minutes", n2[i] = h2 + "Seconds", n2[r] = h2 + "Milliseconds", n2)[o2], $2 = o2 === a ? this.$D + (e2 - this.$W) : e2; + if (o2 === f || o2 === c) { + var y2 = this.clone().set(d, 1); + y2.$d[l2]($2), y2.init(), this.$d = y2.set(d, Math.min(this.$D, y2.daysInMonth())).$d; + } else + l2 && this.$d[l2]($2); + return this.init(), this; + }, m2.set = function(t2, e2) { + return this.clone().$set(t2, e2); + }, m2.get = function(t2) { + return this[O.p(t2)](); + }, m2.add = function(r2, h2) { + var d2, l2 = this; + r2 = Number(r2); + var $2 = O.p(h2), y2 = function(t2) { + var e2 = w(l2); + return O.w(e2.date(e2.date() + Math.round(t2 * r2)), l2); + }; + if ($2 === f) + return this.set(f, this.$M + r2); + if ($2 === c) + return this.set(c, this.$y + r2); + if ($2 === a) + return y2(1); + if ($2 === o) + return y2(7); + var M3 = (d2 = {}, d2[s] = e, d2[u] = n, d2[i] = t, d2)[$2] || 1, m3 = this.$d.getTime() + r2 * M3; + return O.w(m3, this); + }, m2.subtract = function(t2, e2) { + return this.add(-1 * t2, e2); + }, m2.format = function(t2) { + var e2 = this, n2 = this.$locale(); + if (!this.isValid()) + return n2.invalidDate || l; + var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = O.z(this), s2 = this.$H, u2 = this.$m, a2 = this.$M, o2 = n2.weekdays, f2 = n2.months, h2 = function(t3, n3, i3, s3) { + return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s3); + }, c2 = function(t3) { + return O.s(s2 % 12 || 12, t3, "0"); + }, d2 = n2.meridiem || function(t3, e3, n3) { + var r3 = t3 < 12 ? "AM" : "PM"; + return n3 ? r3.toLowerCase() : r3; + }, $2 = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: a2 + 1, MM: O.s(a2 + 1, 2, "0"), MMM: h2(n2.monthsShort, a2, f2, 3), MMMM: h2(f2, a2), D: this.$D, DD: O.s(this.$D, 2, "0"), d: String(this.$W), dd: h2(n2.weekdaysMin, this.$W, o2, 2), ddd: h2(n2.weekdaysShort, this.$W, o2, 3), dddd: o2[this.$W], H: String(s2), HH: O.s(s2, 2, "0"), h: c2(1), hh: c2(2), a: d2(s2, u2, true), A: d2(s2, u2, false), m: String(u2), mm: O.s(u2, 2, "0"), s: String(this.$s), ss: O.s(this.$s, 2, "0"), SSS: O.s(this.$ms, 3, "0"), Z: i2 }; + return r2.replace(y, function(t3, e3) { + return e3 || $2[t3] || i2.replace(":", ""); + }); + }, m2.utcOffset = function() { + return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); + }, m2.diff = function(r2, d2, l2) { + var $2, y2 = O.p(d2), M3 = w(r2), m3 = (M3.utcOffset() - this.utcOffset()) * e, v2 = this - M3, g2 = O.m(this, M3); + return g2 = ($2 = {}, $2[c] = g2 / 12, $2[f] = g2, $2[h] = g2 / 3, $2[o] = (v2 - m3) / 6048e5, $2[a] = (v2 - m3) / 864e5, $2[u] = v2 / n, $2[s] = v2 / e, $2[i] = v2 / t, $2)[y2] || v2, l2 ? g2 : O.a(g2); + }, m2.daysInMonth = function() { + return this.endOf(f).$D; + }, m2.$locale = function() { + return D[this.$L]; + }, m2.locale = function(t2, e2) { + if (!t2) + return this.$L; + var n2 = this.clone(), r2 = S(t2, e2, true); + return r2 && (n2.$L = r2), n2; + }, m2.clone = function() { + return O.w(this.$d, this); + }, m2.toDate = function() { + return new Date(this.valueOf()); + }, m2.toJSON = function() { + return this.isValid() ? this.toISOString() : null; + }, m2.toISOString = function() { + return this.$d.toISOString(); + }, m2.toString = function() { + return this.$d.toUTCString(); + }, M2; + }(), T = _.prototype; + return w.prototype = T, [["$ms", r], ["$s", i], ["$m", s], ["$H", u], ["$W", a], ["$M", f], ["$y", c], ["$D", d]].forEach(function(t2) { + T[t2[1]] = function(e2) { + return this.$g(e2, t2[0], t2[1]); + }; + }), w.extend = function(t2, e2) { + return t2.$i || (t2(e2, _, w), t2.$i = true), w; + }, w.locale = S, w.isDayjs = p, w.unix = function(t2) { + return w(1e3 * t2); + }, w.en = D[g], w.Ls = D, w.p = {}, w; + }); + } +}); +export default require_dayjs_min(); diff --git a/uni_modules/uv-ui-tools/libs/util/route.js b/uni_modules/uv-ui-tools/libs/util/route.js new file mode 100644 index 0000000..80c0afd --- /dev/null +++ b/uni_modules/uv-ui-tools/libs/util/route.js @@ -0,0 +1,126 @@ +/** + * 路由跳转方法,该方法相对于直接使用uni.xxx的好处是使用更加简单快捷 + * 并且带有路由拦截功能 + */ +import { queryParams, deepMerge, page } from '@/uni_modules/uv-ui-tools/libs/function/index.js' +class Router { + constructor() { + // 原始属性定义 + this.config = { + type: 'navigateTo', + url: '', + delta: 1, // navigateBack页面后退时,回退的层数 + params: {}, // 传递的参数 + animationType: 'pop-in', // 窗口动画,只在APP有效 + animationDuration: 300, // 窗口动画持续时间,单位毫秒,只在APP有效 + intercept: false ,// 是否需要拦截 + events: {} // 页面间通信接口,用于监听被打开页面发送到当前页面的数据。hbuilderx 2.8.9+ 开始支持。 + } + // 因为route方法是需要对外赋值给另外的对象使用,同时route内部有使用this,会导致route失去上下文 + // 这里在构造函数中进行this绑定 + this.route = this.route.bind(this) + } + + // 判断url前面是否有"/",如果没有则加上,否则无法跳转 + addRootPath(url) { + return url[0] === '/' ? url : `/${url}` + } + + // 整合路由参数 + mixinParam(url, params) { + url = url && this.addRootPath(url) + + // 使用正则匹配,主要依据是判断是否有"/","?","="等,如“/page/index/index?name=mary" + // 如果有url中有get参数,转换后无需带上"?" + let query = '' + if (/.*\/.*\?.*=.*/.test(url)) { + // object对象转为get类型的参数 + query = queryParams(params, false) + // 因为已有get参数,所以后面拼接的参数需要带上"&"隔开 + return url += `&${query}` + } + // 直接拼接参数,因为此处url中没有后面的query参数,也就没有"?/&"之类的符号 + query = queryParams(params) + return url += query + } + + // 对外的方法名称 + async route(options = {}, params = {}) { + // 合并用户的配置和内部的默认配置 + let mergeConfig = {} + + if (typeof options === 'string') { + // 如果options为字符串,则为route(url, params)的形式 + mergeConfig.url = this.mixinParam(options, params) + mergeConfig.type = 'navigateTo' + } else { + mergeConfig = deepMerge(this.config, options) + // 否则正常使用mergeConfig中的url和params进行拼接 + mergeConfig.url = this.mixinParam(options.url, options.params) + } + // 如果本次跳转的路径和本页面路径一致,不执行跳转,防止用户快速点击跳转按钮,造成多次跳转同一个页面的问题 + if (mergeConfig.url === page()) return + + if (params.intercept) { + mergeConfig.intercept = params.intercept + } + // params参数也带给拦截器 + mergeConfig.params = params + // 合并内外部参数 + mergeConfig = deepMerge(this.config, mergeConfig) + // 判断用户是否定义了拦截器 + if (typeof mergeConfig.intercept === 'function') { + // 定一个promise,根据用户执行resolve(true)或者resolve(false)来决定是否进行路由跳转 + const isNext = await new Promise((resolve, reject) => { + mergeConfig.intercept(mergeConfig, resolve) + }) + // 如果isNext为true,则执行路由跳转 + isNext && this.openPage(mergeConfig) + } else { + this.openPage(mergeConfig) + } + } + + // 执行路由跳转 + openPage(config) { + // 解构参数 + const { + url, + type, + delta, + animationType, + animationDuration, + events + } = config + if (config.type == 'navigateTo' || config.type == 'to') { + uni.navigateTo({ + url, + animationType, + animationDuration, + events + }) + } + if (config.type == 'redirectTo' || config.type == 'redirect') { + uni.redirectTo({ + url + }) + } + if (config.type == 'switchTab' || config.type == 'tab') { + uni.switchTab({ + url + }) + } + if (config.type == 'reLaunch' || config.type == 'launch') { + uni.reLaunch({ + url + }) + } + if (config.type == 'navigateBack' || config.type == 'back') { + uni.navigateBack({ + delta + }) + } + } +} + +export default (new Router()).route \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/package.json b/uni_modules/uv-ui-tools/package.json new file mode 100644 index 0000000..2d940f6 --- /dev/null +++ b/uni_modules/uv-ui-tools/package.json @@ -0,0 +1,81 @@ +{ + "id": "uv-ui-tools", + "displayName": "uv-ui-tools 工具集 全面兼容vue3+2、app、h5、小程序等多端", + "version": "1.1.25", + "description": "uv-ui-tools,集成工具库,强大的Http请求封装,清晰的文档说明,开箱即用。方便使用,可以全局使用", + "keywords": [ + "uv-ui-tools,uv-ui组件库,工具集,uvui,uView2.x" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/readme.md b/uni_modules/uv-ui-tools/readme.md new file mode 100644 index 0000000..79a7df5 --- /dev/null +++ b/uni_modules/uv-ui-tools/readme.md @@ -0,0 +1,23 @@ +## uv-ui-tools 工具集 + +> **组件名:uv-ui-tools** + +uv-ui工具集成,包括网络Http请求、便捷工具、节流防抖、对象操作、时间格式化、路由跳转、全局唯一标识符、规则校验等等。 + +该组件推荐配合[uv-ui组件库](https://www.uvui.cn/components/intro.html)使用,单独下载也可以在自己项目中使用,需要做相应的配置,可查看文档。强烈推荐使用[uv-ui组件库](https://www.uvui.cn/components/intro.html),导入组件都会自动导入`uv-ui-tools`。需要在自己的项目中使用请参考[扩展配置](https://www.uvui.cn/components/setting.html)。 + +uv-ui破釜沉舟之兼容vue3+2、app、h5、多端小程序的uni-app生态框架,大部分组件基于uView2.x,在经过改进后全面支持vue3,部分组件做了进一步的优化,修复大量BUG,支持单独导入,方便开发者选择导入需要的组件。开箱即用,灵活配置。 + +# 查看文档 + +## [下载完整示例项目](https://ext.dcloud.net.cn/plugin?name=uv-ui) (请不要 下载插件ZIP) + +### [更多插件,请关注uv-ui组件库](https://ext.dcloud.net.cn/plugin?name=uv-ui) + + + +![image](https://mp-a667b617-c5f1-4a2d-9a54-683a67cff588.cdn.bspapp.com/uv-ui/banner.png) + + + +#### 如使用过程中有任何问题反馈,或者您对uv-ui有一些好的建议,欢迎加入uv-ui官方交流群:官方QQ群 \ No newline at end of file diff --git a/uni_modules/uv-ui-tools/theme.scss b/uni_modules/uv-ui-tools/theme.scss new file mode 100644 index 0000000..cfaae92 --- /dev/null +++ b/uni_modules/uv-ui-tools/theme.scss @@ -0,0 +1,43 @@ +// 此文件为uvUI的主题变量,这些变量目前只能通过uni.scss引入才有效,另外由于 +// uni.scss中引入的样式会同时混入到全局样式文件和单独每一个页面的样式中,造成微信程序包太大, +// 故uni.scss只建议放scss变量名相关样式,其他的样式可以通过main.js或者App.vue引入 + +$uv-main-color: #303133; +$uv-content-color: #606266; +$uv-tips-color: #909193; +$uv-light-color: #c0c4cc; +$uv-border-color: #dadbde; +$uv-bg-color: #f3f4f6; +$uv-disabled-color: #c8c9cc; + +$uv-primary: #3c9cff; +$uv-primary-dark: #398ade; +$uv-primary-disabled: #9acafc; +$uv-primary-light: #ecf5ff; + +$uv-warning: #f9ae3d; +$uv-warning-dark: #f1a532; +$uv-warning-disabled: #f9d39b; +$uv-warning-light: #fdf6ec; + +$uv-success: #5ac725; +$uv-success-dark: #53c21d; +$uv-success-disabled: #a9e08f; +$uv-success-light: #f5fff0; + +$uv-error: #f56c6c; +$uv-error-dark: #e45656; +$uv-error-disabled: #f7b2b2; +$uv-error-light: #fef0f0; + +$uv-info: #909399; +$uv-info-dark: #767a82; +$uv-info-disabled: #c4c6c9; +$uv-info-light: #f4f4f5; + +@mixin flex($direction: row) { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: $direction; +} \ No newline at end of file diff --git a/uni_modules/v-tabs/changelog.md b/uni_modules/v-tabs/changelog.md new file mode 100644 index 0000000..4f9bd3d --- /dev/null +++ b/uni_modules/v-tabs/changelog.md @@ -0,0 +1,149 @@ +## 2.2.2(2024-12-10) +1. [修复]修复`change`事件不生效的bug +## 2.2.1(2024-11-13) +1. [修复]修复摇树打包出现的bug +## 2.2.0(2024-07-19) +1. [修改]增加节流函数,控制tab的点击间隔 +## 2.1.9(2024-06-14) +1. [修改]当`current`初始值大于`tabs.length`或者小于`0`,自动设置`current`的值为`0` +2. [抛弃]压缩包方式的源码不提供维护了,只维护`uni_modules`中的源码 +## 2.1.8(2024-06-07) +1. [新增]支持`vue3`了 +## 2.1.6(2024-06-06) +1. [修复]当有`fixed`属性之后,在支付宝小程序无法滚动的bug +## 2.1.5(2023-11-02) +1. [修复]修复`change`和`v-model`绑定的值不同步 +2. [修复]暂时停用`activeFontSize`选项 +3. [修改]修改默认激活的文字不加粗 +## 2.1.4(2023-10-12) +1. [修改]修改计算方式 +2. [新增]外部可以通过`this.$refs.tabs.update()`方法主动更新 +## 2.1.3(2023-09-11) +1. [新增]支持自定义插槽模式,具体可以查看示例代码使用方式。[gitee demo](https://github.com/xfjpeter/uni-plugins/blob/3e2bd062163f664889122fd74b8bd6ccad6a97f1/pages/tabs/tabs.vue#L47C10-L50C16) 或 [github demo](https://github.com/xfjpeter/uni-plugins/blob/3e2bd062163f664889122fd74b8bd6ccad6a97f1/pages/tabs/tabs.vue#L47C10-L50C16) +## 2.1.2(2023-06-12) +1. [新增]添加`z-index`参数控制层级大小,默认1993 +2. [说明]以后该插件只更新`uni_modules`方式的,`zip`方式的不提供更新了 +## 2.1.1(2022-09-16) +1. 将插件更新为`uni_modules`方式 +## 2.1.0(2022-08-12) +1. 增加`disable`参数,控制是否可以点击,只能应用在数组对象中,见[disabled 的用法](#112-当tabs使用的数组对象的方式特定参数需要注意一下) + +```js +export default { + data() { + return { + tabs: [{ id: 1, name: '' }] + } + } +} +``` + +## 2.0.10(2022-01-27) + +1. 更新属性line-animation设置为false可以不要动画,这是好多朋友问到,特此加上 + +## 2.0.9(2020-10-12) + +1. 修复 v-tabs 第一次可能出现第一个标签显示不完整的情况 +2. 修改了 pages/tabs/order 示例文件 + +## 2.0.8(2020-09-21) + +1. 修复添加 fixed 属性后,滚动条无效 +2. 修复选项很少的情况下,下划线计算计算错误 +3. 新增 paddingItem 属性,设置选项左右边距(上下边距需要设置 height 属性,或者设置 padding 属性) + +## 2.0.7(2020-09-17) + +1. 紧急修复 bug,横向滑动不了的情况 + +## 2.0.6(2020-09-16) + +1. 新增 fixed 属性,是否固定在顶部,示例地址:pages/tabs/tabs-static +2. 优化之前的页面结构 + +## 2.0.5(2020-09-09) + +1. 修复 width 错误,dom 加载的时候没有及时获取到 data 属性导致的 。 + +## 2.0.4(2020-08-29) + +1. 优化异步改变 tabs 后,下划线不初始化问题 +2. github 地址上有图 2 的源码,需要的自行下载,页面路径:pages/tabs/order.vue + +## 2.0.3(2020-08-20) + +1. 优化 节点查询 和 选中渲染 +2. 优化支付宝中 createSelectorQuery() 的影响 + +**特别说明:** + +> 支付宝中平铺方法和其他方法不能在一个页面中出现,不然有一个显示错误(具体什么原因没查到,有好心的人发现了,望告知一下,感谢 + +## 2.0.2(2020-08-19) + +1. 优化 change 事件触发机制 + +## 2.0.1(2020-08-16) + +1. 修改默认高度为 70rpx +2. 新增属性 bgColor,可设置背景颜色,默认 #fff +3. 新增整个 tab 的 padding 属性,默认 0 + +## 2.0.0(2020-08-13) + +1. 全新的 v-tabs 2.0 +2. 支持 H5 小程序 APP +3. 属性高度可配置 + +## 1.3.2(2020-07-21) + +1. 新增 auto 的配置,是否平铺 tab +2. 修复文档上的错误示例(感谢 lushgwe@163.com 的反馈) + +## 1.3.0(2020-07-05) + +1. 新增 padding 的可配置 +2. 修复 v-model 双向绑定问题 +3. 修复初始化下划线没定位的为题 + +## 1.2.0(2020-06-19) + +1. 添加注释 +2. 修复 bug + +## 1.1.8(2020-06-11) + +1. 添加 change 事件 +2. 修复插件内容问题 +3. 修复下划线不居中问题 + +## 1.1.6(2020-06-11) + +1. 添加 change 事件 +2. 修复插件内容问题 + +## 1.1.4(2020-06-11) + +1. 添加 change 事件 +2. 修复插件内容问题 + +## 1.1.2(2020-06-11) + +1. 添加 change 事件 + +## 1.1.1(2020-06-09) + +1. 修复小程序端选中的下划线不显示问题 +2. 新增 tab 高度设置 +3. lineHeight 修改为只支持 String 方式 + +## 1.1.0(2020-06-09) + +1. 修复小程序端选中的下划线不显示问题 +2. 新增 tab 高度设置 +3. lineHeight 修改为只支持 String 方式 + +## 1.0.0(2020-06-04) + +1. 更新插件1.0.0 \ No newline at end of file diff --git a/uni_modules/v-tabs/components/v-tabs/props.js b/uni_modules/v-tabs/components/v-tabs/props.js new file mode 100644 index 0000000..3565054 --- /dev/null +++ b/uni_modules/v-tabs/components/v-tabs/props.js @@ -0,0 +1,100 @@ +export default { + value: { + type: Number, + default: 0 + }, + modelValue: { + type: Number, + default: 0 + }, + tabs: { + type: Array, + default() { + return [] + } + }, + bgColor: { + type: String, + default: '#fff' + }, + padding: { + type: String, + default: '0' + }, + color: { + type: String, + default: '#333' + }, + activeColor: { + type: String, + default: '#2979ff' + }, + fontSize: { + type: String, + default: '28rpx' + }, + activeFontSize: { + type: String, + default: '32rpx' + }, + bold: { + type: Boolean, + default: false + }, + scroll: { + type: Boolean, + default: true + }, + height: { + type: String, + default: '70rpx' + }, + lineColor: { + type: String, + default: '#2979ff' + }, + lineHeight: { + type: [String, Number], + default: '10rpx' + }, + lineScale: { + type: Number, + default: 0.5 + }, + lineRadius: { + type: String, + default: '10rpx' + }, + pills: { + type: Boolean, + default: false + }, + pillsColor: { + type: String, + default: '#2979ff' + }, + pillsBorderRadius: { + type: String, + default: '10rpx' + }, + field: { + type: String, + default: '' + }, + fixed: { + type: Boolean, + default: false + }, + paddingItem: { + type: String, + default: '0 22rpx' + }, + lineAnimation: { + type: Boolean, + default: true + }, + zIndex: { + type: Number, + default: 1993 + } +} diff --git a/uni_modules/v-tabs/components/v-tabs/utils.js b/uni_modules/v-tabs/components/v-tabs/utils.js new file mode 100644 index 0000000..e8b55af --- /dev/null +++ b/uni_modules/v-tabs/components/v-tabs/utils.js @@ -0,0 +1,110 @@ +/** + * 启动一个微任务。 + * + * 该函数旨在兼容不同环境下的微任务调度。微任务是一种在主任务(如事件循环中的回调)之后,但在下一次渲染之前执行的JavaScript任务。 + * 它们对于异步编程和性能优化非常重要。此函数尝试使用三种不同的方法来调度微任务,取决于环境的支持情况。 + * + * @param {Function} callback - 待执行的微任务回调函数。 + */ +export function startMicroTask(callback) { + // 如果队列微任务是可用的,直接使用队列微任务的方法来调度回调。 + if (typeof queueMicrotask === 'function') { + queueMicrotask(callback) + } else if (typeof MutationObserver === 'function') { + // 如果MutationObserver可用,使用它来创建一个微任务。 + // 这是一种旧的兼容性方法,因为MutationObserver在较早的浏览器版本中就已经支持。 + const node = document.createElement('div') + const observer = new MutationObserver(callback) + observer.observe(node, { childList: true }) + node.textContent = 'xfjpeter' + } else { + // 如果以上两种方法都不可用,退回到使用setTimeout来模拟微任务。 + // 这是最后的选择,因为setTimeout不是真正的微任务,但它可以在不支持微任务的环境中提供类似的功能。 + setTimeout(callback, 0) + } +} + +/** + * 函数节流器。 + * 通过限制函数调用的频率,防止在高频率事件(如窗口滚动或鼠标移动)中过多调用给定的函数,从而优化性能。 + * + * @param {Function} fn 要节流的函数。 + * @param {number} delay 延迟的毫秒数,在这段时间内只能调用一次给定的函数。 + * @returns {Function} 返回一个新的节流函数,它将控制原始函数的调用频率。 + */ +/** + * 函数节流器 + * @param {Function} fn 要节流的函数 + * @param {number} delay 延迟的毫秒数 + * @returns {Function} 返回节流后的函数 + */ +export function throttle(fn, delay) { + // 用于存储定时器ID + let timeoutId + // 用于记录上一次函数执行的时间 + let lastExecuted = 0 + + // 返回一个节流函数 + return function () { + // 保存当前上下文和参数 + const context = this + const args = arguments + // 获取当前时间 + const now = Date.now() + // 计算剩余时间 + const remaining = delay - (now - lastExecuted) + + // 实际执行函数的内部函数 + function execute() { + lastExecuted = now + // 在当前上下文中调用原始函数,并传入参数 + fn.apply(context, args) + } + + // 如果剩余时间小于等于0,表示可以执行函数 + if (remaining <= 0) { + // 如果存在定时器,则清除定时器 + if (timeoutId) { + clearTimeout(timeoutId) + timeoutId = null + } + // 执行函数 + execute() + } else { + // 如果不存在定时器,则设置定时器 + if (!timeoutId) { + timeoutId = setTimeout(() => { + timeoutId = null + // 执行函数 + execute() + }, remaining) + } + } + } +} + +/** + * 函数防抖动封装。 + * 函数防抖(debounce)是指在事件被触发n秒后,才执行回调,如果在这n秒内事件又被触发,则重新计时。 + * 主要用于限制函数调用的频率,常用于输入事件处理函数(如输入框的keyup事件)和窗口大小调整事件等。 + * + * @param {Function} fn 需要被延迟执行的函数。 + * @param {number} delay 延迟执行的时间,单位为毫秒。 + * @returns {Function} 返回一个经过防抖动处理的函数。 + */ +export function debounce(fn, delay) { + // 用于存储定时器的变量 + let timer = null + + // 返回一个封装函数 + return function () { + // 如果定时器存在,则清除之前的定时器 + if (timer) clearTimeout(timer) + + // 设置新的定时器,延迟执行原函数 + timer = setTimeout(() => { + // 使用apply确保函数在正确的上下文中执行,并传递所有参数 + fn.apply(this, arguments) + }, delay) + } +} diff --git a/uni_modules/v-tabs/components/v-tabs/v-tabs.vue b/uni_modules/v-tabs/components/v-tabs/v-tabs.vue new file mode 100644 index 0000000..a1656e6 --- /dev/null +++ b/uni_modules/v-tabs/components/v-tabs/v-tabs.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/uni_modules/v-tabs/package.json b/uni_modules/v-tabs/package.json new file mode 100644 index 0000000..aa0d120 --- /dev/null +++ b/uni_modules/v-tabs/package.json @@ -0,0 +1,85 @@ +{ + "id": "v-tabs", + "displayName": "自定义 tab 选项卡 2", + "version": "2.2.2", + "description": "自定义 tab ,支持多种样式,支持 h5 小程序 app", + "keywords": [ + "v-tabs", + "tab", + "选项卡" +], + "repository": "https://github.com/xfjpeter/uni-plugins", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "1207791534" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n", + "app-uvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "n", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "y", + "快手": "y", + "飞书": "y", + "京东": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/v-tabs/readme.md b/uni_modules/v-tabs/readme.md new file mode 100644 index 0000000..7a9cff8 --- /dev/null +++ b/uni_modules/v-tabs/readme.md @@ -0,0 +1,276 @@ +## 插件说明 + +> 这是 `v-tabs` 插件的升级版本,参数上有很大变动,支持 `H5` `小程序` `手机端`,如果是在之前的插件上升级的话,请注意参数的变更,触发的事件没有变更。 + +## 使用说明 + +### 1、最基本用法 + +- 视图文件 + +```html + +``` + +- 脚本文件 + +```js +export default { + data() { + return { + current: 0, + tabs: ['军事', '国内', '新闻新闻', '军事', '国内', '新闻', '军事', '国内', '新闻'] + } + }, + methods: { + changeTab(index) { + console.log('当前选中的项:' + index) + } + } +} +``` + +### 2、平铺整个屏幕 + +- 视图文件 + +```html + +``` + +- 脚本文件 + +```js +export default { + data() { + return { + activeTab: 0 + } + } +} +``` + +### 3、胶囊用法 + +- 视图文件 + +```html + +``` + +- 脚本文件 + +```js +data() { + return { + current: 2, + tabs: [ + '军事', + '国内', + '新闻新闻', + '军事', + '国内', + '新闻', + '军事', + '国内', + '新闻', + ], + }, + methods: { + changeTab(index) { + console.log('当前选中索引:' + index) + } + } +} +``` + +## 文档说明 + +### 1、属性说明 + +| 参数 | 类型 | 默认值 | 说明 | +| :---------------: | :-----: | :-------: | :-----------------------------------------------------------------------: | +| tabs | Array | [] | 控制 tab 的列表 | +| value | Number | 0 | 必传(双向绑定的值) | +| color | String | '#333' | 默认文字颜色 | +| activeColor | String | '#2979ff' | 选中文字的颜色 | +| fontSize | String | '28rpx' | 默认文字大小(rpx 或 px)(弃用) | +| bold | Boolean | true | 是否加粗选中项 | +| scroll | Boolean | true | 是否显示滚动条,平铺设置 false | +| height | String | '70rpx' | tab 高度(rpx 或 px) | +| lineHeight | String | '10rpx' | 滑块高度(rpx 或 px) | +| lineColor | String | '#2979ff' | 滑块的颜色 | +| lineScale | Number | 0.5 | 滑块宽度缩放值 | +| lineRadius | String | '10rpx' | 滑块圆角宽度(rpx 或 px) | +| pills | Boolean | false | 是否开启胶囊 | +| pillsColor | String | '#2979ff' | 胶囊背景颜色(rpx 或 px) | +| pillsBorderRadius | String | '10rpx' | 胶囊圆角宽度(rpx 或 px) | +| field | String | '' | 如果 tabs 子项是对象,输入需要展示的键名 | +| bgColor | String | '#fff' | 背景色,支持 linear-gradient 渐变 | +| padding | String | '0' | 整个 tab padding 属性 | +| fixed | Boolean | false | 是否固定在顶部 | +| paddingItem | String | '0 22rpx' | 选项的边距(设置上下不生效,需要设置高度) | +| lineAnimation | Boolean | true | 是否需要 line 和 pills 的动画,在隐藏页面后默认移动到第一个的时候比较实用 | +| zIndex | Number | 1993 | 控制 tab 的层级,默认1993 | + +### 1.1 `tabs`参数展开说明 + +#### 1.1.1 当`tabs`仅仅是单纯的数组时候,没有什么特别的地方 + +```js +export default { + data() { + return { + tabs: ['全部', '待付款', '待消费', '已完成', '已评价', '已过期', '已退款'] + } + } +} +``` + +#### 1.1.2 当`tabs`使用的数组对象的方式,特定参数需要注意一下 + +- `disabled` 参数,可以控制按钮是否可以点击 + +```js +export default { + data() { + return { + tabs: [ + { id: 1, name: '待付款', disabled: false }, + { id: 2, name: '待收货', disabled: false }, + { id: 3, name: '待评价', disabled: false }, + { id: 4, name: '退款/售后', disabled: true }, + { id: 5, name: '我的订单', disabled: false } + ] + } + } +} +``` + +### 2、事件说明 + +| 名称 | 参数 | 说明 | +| :----: | :---: | :--------------------------------: | +| change | index | 改变选中项触发, index 选中项的下标 | + +## 更新日志 + +### 2.2.2(2024-12-10) +1. [修复]修复`change`事件不生效的bug + +### 2.2.1(2024-11-13) +1. [修复]修复摇树打包出现的bug + +### 2.2.0(2024-07-19) +1. [修改]增加节流函数,控制tab的点击间隔 + +### 2.1.9(2024-06-14) +1. [修改]当`current`初始值大于`tabs.length`或者小于`0`,自动设置`current`的值为`0` +2. [抛弃]压缩包方式的源码不提供维护了,只维护`uni_modules`中的源码 + +### 2.1.8(2024-06-06) +1. [新增]支持`vue3`了 + +### 2.1.6(2024-06-06) +1. [修复]使用`fixed`属性之后,在支付宝小程序无法滚动的bug + +### 2.1.5(2023-11-02) +1. [修复]修复`change`和`v-model`绑定的值不同步 +2. [修复]暂时停用`activeFontSize`选项 +3. [修改]修改默认激活的文字不加粗 + +### 2.1.4(2023-10-12) +1. [修改]修改计算方式 +2. [新增]外部可以通过`this.$refs.tabs.update()`方法主动更新 + +### 2.1.3(2023-09-11) +1. [新增]支持自定义插槽模式,具体可以查看示例代码使用方式。[gitee demo](https://github.com/xfjpeter/uni-plugins/blob/master/pages/tabs/tabs.vue#L47-L50) 或 [github demo](https://github.com/xfjpeter/uni-plugins/blob/master/pages/tabs/tabs.vue#L47-L50) + +### 2.1.2(2023-06-12) +1. [新增]添加`z-index`参数控制层级大小,默认1993 +2. [说明]以后该插件只更新`uni_modules`方式的,`zip`方式的不提供更新了,如果需要的请到 [gitee uni-plugins](https://gitee.com/xfjpeter/uni-plugins) 或 [github uni-plugins](https://github.com/xfjpeter/uni-plugins)下载源码,自行使用 + +### 2.1.1(2022-09-16) + +1. 将插件更新为`uni_modules`方式 + +### 2022-08-12 + +1. 增加`disable`参数,控制是否可以点击,只能应用在数组对象中,见[disabled 的用法](#112-当tabs使用的数组对象的方式特定参数需要注意一下) + +```js +export default { + data() { + return { + tabs: [{ id: 1, name: '' }] + } + } +} +``` + +### 2022-01-27 + +1. 更新属性`line-animation`设置为`false`可以不要动画,这是好多朋友问到,特此加上 + +### 2020-09-24 + +1. 修复 `v-tabs` 第一次可能出现第一个标签显示不完整的情况 +2. 修改了 `pages/tabs/order` 示例文件 + +### 2020-09-21 + +1. 修复添加 `fixed` 属性后,滚动条无效 +2. 修复选项很少的情况下,下划线计算计算错误 +3. 新增 `paddingItem` 属性,设置选项左右边距(上下边距需要设置 `height` 属性,或者设置 `padding` 属性) + +**写在最后:** +欢迎各位老铁反馈 bug ,本人后端 PHP 一枚,只是应为感兴趣前端,自己琢磨,自己搞。如果你在使用的过程中有什么不合理,需要优化的,都可以在下面评论(或加我 QQ: 1207791534),本人看见后回复、修正,感谢。 + +### 2020-09-17 + +1. 紧急修复 bug,横向滑动不了的情况 + +### 2020-09-16 + +1. 新增 `fixed` 属性,是否固定在顶部,示例地址:`pages/tabs/tabs-static` +2. 优化之前的页面结构 + +**注意:** + +1. 使用 `padding` 属性的时候,尽量不要左右边距,会导致下划线位置不对 +2. 如果不绑定 `v-model` 会导致 `change` 事件改变的时候,下划线不跟随问题 + +### 2020-09-09 + +1. 修复 `width` 错误,dom 加载的时候没有及时获取到 `data` 属性导致的。 + +### 2020-08-29 + +1. 优化异步改变 `tabs` 后,下划线不初始化问题 +2. `github` 地址上有图 2 的源码,需要的自行下载,页面路径:`pages/tabs/order` + +### 2020-08-20 + +1. 优化 `节点查询` 和 `选中渲染` +2. 优化支付宝中 `createSelectorQuery()` 的影响 + +### 2020-08-19 + +1. 优化 `change` 事件触发机制 + +### 2020-08-16 + +1. 修改默认高度为 `70rpx` +2. 新增属性 `bgColor`,可设置背景颜色,默认 `#fff` +3. 新增整个 `tab` 的 `padding` 属性,默认 `0` + +### 2020-08-13 + +1. 全新的 `v-tabs 2.0` +2. 支持 `H5` `小程序` `APP` +3. 属性高度可配置 + +## 预览 + +![v-tabs 2.0.1.gif](https://tva1.sinaimg.cn/large/007S8ZIlgy1ghsv40mj76g30ai0i2tsd.gif) +![v-tabs 2.0.2.gif](https://img-cdn-aliyun.dcloud.net.cn/stream/plugin_screens/42f3a920-a674-11ea-8a24-ffee00625e2e_1.png?v=1597912963)