From f3382264265a8147bf5de26178821a8ee8819ca2 Mon Sep 17 00:00:00 2001 From: Apcallover <1503963513@qq.com> Date: Wed, 5 Jun 2024 16:58:38 +0800 Subject: [PATCH] =?UTF-8?q?flat:=E6=89=80=E5=B1=9E=E7=A4=BE=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/userrecruit.js | 5 + components/uni-popup/uni-popup.vue | 374 +++---- pages/recruit/subPage/task.vue | 29 +- pages/recruit/subPage/work.vue | 25 +- uni_modules/custom-tree-select/changelog.md | 187 ++++ .../custom-tree-select/custom-tree-select.vue | 983 ++++++++++++++++++ .../custom-tree-select/data-select-item.vue | 363 +++++++ .../components/custom-tree-select/utils.js | 17 + uni_modules/custom-tree-select/package.json | 83 ++ uni_modules/custom-tree-select/readme.md | 228 ++++ uni_modules/uni-popup/changelog.md | 84 ++ .../components/uni-popup-dialog/keypress.js | 45 + .../uni-popup-dialog/uni-popup-dialog.vue | 316 ++++++ .../uni-popup-message/uni-popup-message.vue | 143 +++ .../uni-popup-share/uni-popup-share.vue | 187 ++++ .../components/uni-popup/i18n/en.json | 7 + .../components/uni-popup/i18n/index.js | 8 + .../components/uni-popup/i18n/zh-Hans.json | 7 + .../components/uni-popup/i18n/zh-Hant.json | 7 + .../components/uni-popup/keypress.js | 45 + .../uni-popup/components/uni-popup/popup.js | 26 + .../components/uni-popup/uni-popup.uvue | 90 ++ .../components/uni-popup/uni-popup.vue | 503 +++++++++ uni_modules/uni-popup/package.json | 88 ++ uni_modules/uni-popup/readme.md | 17 + uni_modules/uni-transition/changelog.md | 24 + .../uni-transition/createAnimation.js | 131 +++ .../uni-transition/uni-transition.vue | 286 +++++ uni_modules/uni-transition/package.json | 85 ++ uni_modules/uni-transition/readme.md | 11 + 30 files changed, 4215 insertions(+), 189 deletions(-) create mode 100644 uni_modules/custom-tree-select/changelog.md create mode 100644 uni_modules/custom-tree-select/components/custom-tree-select/custom-tree-select.vue create mode 100644 uni_modules/custom-tree-select/components/custom-tree-select/data-select-item.vue create mode 100644 uni_modules/custom-tree-select/components/custom-tree-select/utils.js create mode 100644 uni_modules/custom-tree-select/package.json create mode 100644 uni_modules/custom-tree-select/readme.md create mode 100644 uni_modules/uni-popup/changelog.md create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/en.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/index.js create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json create mode 100644 uni_modules/uni-popup/components/uni-popup/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup/popup.js create mode 100644 uni_modules/uni-popup/components/uni-popup/uni-popup.uvue create mode 100644 uni_modules/uni-popup/components/uni-popup/uni-popup.vue create mode 100644 uni_modules/uni-popup/package.json create mode 100644 uni_modules/uni-popup/readme.md create mode 100644 uni_modules/uni-transition/changelog.md create mode 100644 uni_modules/uni-transition/components/uni-transition/createAnimation.js create mode 100644 uni_modules/uni-transition/components/uni-transition/uni-transition.vue create mode 100644 uni_modules/uni-transition/package.json create mode 100644 uni_modules/uni-transition/readme.md diff --git a/api/userrecruit.js b/api/userrecruit.js index 812924b..a6dd67e 100644 --- a/api/userrecruit.js +++ b/api/userrecruit.js @@ -134,4 +134,9 @@ export const cancelUserInvite = (params) => request({ url: '/api/jobslink-api/user/userrecruit/cancelUserInvite', method: 'get', params +}) +export const getDeptAllTree = (params) => request({ + url: '/api/jobslink-api/system/dept/all-tree', + method: 'get', + params }) \ No newline at end of file diff --git a/components/uni-popup/uni-popup.vue b/components/uni-popup/uni-popup.vue index 50434e6..7df14e9 100644 --- a/components/uni-popup/uni-popup.vue +++ b/components/uni-popup/uni-popup.vue @@ -1,187 +1,189 @@ - - - - \ No newline at end of file diff --git a/pages/recruit/subPage/task.vue b/pages/recruit/subPage/task.vue index 33f47d2..25c9827 100644 --- a/pages/recruit/subPage/task.vue +++ b/pages/recruit/subPage/task.vue @@ -101,6 +101,11 @@ + + + @@ -176,7 +181,8 @@ submitInfo, getWorktypesBaseList, findTradeList, - getDictionary + getDictionary, + getDeptAllTree } from '@/api/userrecruit.js' import PickerTree from './enterpriceCertification/pickerTree.vue' import { @@ -191,6 +197,7 @@ export default { data() { return { + deptTreeData: [], addressOptions: [], loading: false, latitude: 31.05, //中心点 @@ -242,6 +249,7 @@ callTel: '', // 手机号 callNumber: '', // 座机 address: '', // 公司详细地址 + createDept: [] // userInfo: { // name: '楼兰', // sex: '', @@ -258,7 +266,7 @@ showNature: false, // 人员属性 showAge: false, // 年龄要求 showEdu: false, // 学历要求 - showExpe: false, // 经验要求 + showExpe: false, // 经验要求 birthday: Number(new Date()), wageColumns: dic.wageUnitCategoryState, tradeColumns: dic.tradeArr, @@ -391,6 +399,12 @@ message: '请输入详细地址', trigger: ['change'] }, + createDept: { + type: 'array', + required: true, + message: '请选择所属社区', + trigger: ['change'] + } }, } }, @@ -412,6 +426,7 @@ } = dic.wageUnitCategoryState[0].filter(item => item.id == 3)[0] this.info.wageUnitCategory = staId this.info.wageUnitCategoryName = staLabel + this.getTreeDept() if (this.company) { this.backfill(this.company) } @@ -426,6 +441,13 @@ }, methods: { + async getTreeDept() { + let resData = await getDeptAllTree() + if (resData.data.code === 200) { + this.deptTreeData = resData.data.data + console.log('dept', resData.data.data) + } + }, selectInput: debounce(function(val) { // querySearch(val, '3CXBZ-SKHCL-QC6PH-MLJAE-ZYCFK-6MBR5').then(res => { // console.log(res) @@ -484,6 +506,7 @@ this.info.jobCompanyIndustry = info.jobCompanyIndustry this.info.jobCompanyNature = info.jobCompanyNature this.info.jobCompanyDescription = info.jobCompanyDescription + this.info.createDept = [String(info.createDept)] this.info.callName = info.callName this.info.callTel = info.callTel this.info.callNumber = info.callNumber @@ -658,6 +681,7 @@ } params.lon = that.longitude params.lat = that.latitude + params.createDept = params.createDept[0] submitInfo(params).then(res => { if (res.data.code == 200) { that.reset() @@ -700,6 +724,7 @@ 'jobCompanyIndustry', 'jobCompanyNature', 'jobCompanyDescription', + "createDept", 'callName', 'callTel', 'callNumber', diff --git a/pages/recruit/subPage/work.vue b/pages/recruit/subPage/work.vue index 20225dc..e986039 100644 --- a/pages/recruit/subPage/work.vue +++ b/pages/recruit/subPage/work.vue @@ -105,6 +105,11 @@ + + + @@ -177,7 +182,8 @@ submitInfo, getWorktypesBaseList, findTradeList, - getDictionary + getDictionary, + getDeptAllTree } from '@/api/userrecruit.js' import PickerTree from './enterpriceCertification/pickerTree.vue' import { @@ -186,6 +192,7 @@ export default { data() { return { + deptTreeData: [], latitude: 31.05, //中心点 longitude: 104.20, covers: [{ //marker标记位置 @@ -384,6 +391,12 @@ message: '请输入详细地址', trigger: ['change'] }, + createDept: { + type: 'array', + required: true, + message: '请选择所属社区', + trigger: ['change'] + } }, } }, @@ -412,6 +425,7 @@ this.info.wageUnitCategory = staId this.info.wageUnitCategoryName = staLabel console.log(this.area) + this.getTreeDept() this.getWorkTypes() this.dictionary() if (this.company) { @@ -419,6 +433,12 @@ } }, methods: { + async getTreeDept() { + let resData = await getDeptAllTree() + if (resData.data.code === 200) { + this.deptTreeData = resData.data.data + } + }, onBlurWage(value) { const val = this.wallMaxAndMin if (!val.length) { @@ -468,6 +488,7 @@ this.info.jobCompanyNature = info.jobCompanyNature this.info.jobCompanyDescription = info.jobCompanyDescription this.info.callName = info.callName + this.info.createDept = [String(info.createDept)] this.info.callTel = info.callTel this.info.callNumber = info.callNumber this.info.address = info.address @@ -648,6 +669,7 @@ } params.lon = that.longitude params.lat = that.latitude + params.createDept = params.createDept[0] submitInfo(params).then(res => { if (res.data.code == 200) { that.reset() @@ -701,6 +723,7 @@ 'jobCompanyNature', 'jobCompanyDescription', 'callName', + 'createDept', 'callTel', 'callNumber', 'address' diff --git a/uni_modules/custom-tree-select/changelog.md b/uni_modules/custom-tree-select/changelog.md new file mode 100644 index 0000000..a74dfa5 --- /dev/null +++ b/uni_modules/custom-tree-select/changelog.md @@ -0,0 +1,187 @@ +## 4.1.0(2023-10-22) +- 修复小程序端无法移除已选项问题 +- 修复小程序端异步加载节点不可用问题 +- 增加点击左侧箭头同样可以展开元素 +## 4.0.0(2023-09-17) +- 调整 v-model 传参类型,为适应数值和字符串同时存在的树形数据 +## 3.8.4(2023-09-17) +- 支持动态加载节点 +## 3.8.3(2023-09-17) +- 文档更新 +## 3.8.2(2023-09-17) +- 新增路径模式吗,解决重名选项无法辨认问题 +## 3.8.1(2023-08-06) +- 修复加载选择器数据后,选择框没有数据问题 +## 3.8.0(2023-07-29) +- 修复父子联动状态下,数据回显父级半选状态不展示问题 +- selectChange 返回数据调整 +- 新增 contentHeight 、disabledList 属性 +- 文档更新 +## 3.7.9(2023-07-11) +- 文档更新 +## 3.7.8(2023-07-10) +- 修复父元素未完全选中状态显示异常问题 +## 3.7.7(2023-07-07) +- 文档更新 +## 3.7.6(2023-07-07) +- 重写checkbox,解决与colorui样式冲突问题 +- 父级添加子级未全选状态,更直观了解选中数据情况 +- 样式优化,提取文件内样式变量 +- 代码体积优化 +## 3.7.5(2023-05-15) +- 修复visible在数据初始化时配置有时失效问题 +## 3.7.4(2023-05-11) +- 修复父元素下某个子元素设置隐藏时,父子联动状态异常问题 +- 对性能以及代码体积做了进一步优化 +## 3.7.3(2023-05-08) +- 修复子元素展开懒加载功能被覆盖问题 +- 优化数据初始化速度 +## 3.7.2(2023-05-04) +- uni.$emit 替换 bus事件 +## 3.7.1(2023-04-10) +- 解决小程序无法折叠或展开问题 +## 3.7.0(2023-04-09) +- 全选默认不开启,并且只在多选模式下生效 +## 3.6.91(2023-04-09) +- 文档更新 +## 3.6.9(2023-04-09) +- 代码整体优化 +- 新增弹窗安全区配置选项 +- 新增全选功能配置选项 +- 新增搜索框清除按钮是否直接重置搜索结果选项 +- 遗留问题:小程序端搜索后无法折叠或打开 +## 3.6.8(2023-04-07) +- 优化deepClone +## 3.6.7(2023-04-03) +- 取消对微信小程序的支持 +## 3.6.6(2023-04-03) +- 修复listData刷新后,不能正确渲染勾选状态问题 +## 3.6.5(2023-03-30) +- 修复小程序节点展开或折叠时指示箭头不变换状态 +- 修复回显数据有时不展示问题 +## 3.6.3(2023-03-27) +- [紧急] 修复单选状态仍可以多选bug +## 3.6.2(2023-03-27) +- 修复偶尔出现节点无法根据绑定数据改变选中状态问题 +## 3.6.1(2023-03-24) +- 修复引入问题 +## 3.6.0(2023-03-24) +- 重构去除冗余代码,功能不变 +## 3.5.0(2023-03-23) +- 修复没有子元素时点击报错问题 +## 3.3.9(2023-03-22) +- 解决搜索时 toLowerCase 报错问题 +## 3.3.8(2023-03-22) +- 懒加载优化 +## 3.3.7(2023-03-20) +- 样式更新 +## 3.3.6(2023-03-20) +- 修复子元素折叠或展开不触发问题 +## 3.3.5(2023-03-15) +- isArray 替换 instanceof +## 3.3.4(2023-03-11) +- 修复搜索后无法展开或折叠问题 +- 搜索后直接展开搜索项 +## 3.3.3(2023-03-06) +- 优化展示效果 +- 添加引导线选项 +## 3.3.2(2023-02-22) +- 修复搜索内容包含隐藏数据的问题 +- 优化搜索触发方式 +## 3.3.1(2023-02-16) +- 修复异常 +## 3.2.9(2023-02-16) +- 修复编译到小程序报错问题 +## 3.2.8(2023-02-16) +- 修复多个组件key重复问题 +## 3.2.7(2023-02-16) +- 全新底层架构设计 +- 修改默认配色,更显成熟稳重 +## 3.2.6(2023-02-15) +- 修改文档 +## 3.2.5(2023-02-15) +- 文档修改 +## 3.2.3(2023-02-15) +- 修复小程序组件无法折叠问题 +## 3.2.2(2023-02-10) +- 文档更新 +## 3.2.1(2023-02-09) +- 增加节点展开和关闭全局配置 +- 修复搜索后数据无法展开和关闭问题 +- 修复搜索后不能自动滚动到顶部问题 +## 3.2.0(2023-01-16) +- 修复事件冲突 +## 3.1.5(2023-01-13) +- 样式调整 +## 3.1.4(2023-01-13) +- 样式修复 +## 3.1.3(2023-01-13) +- 文档更新 +## 3.1.2(2023-01-13) +- 修复一些已知问题 +## 3.1.1(2023-01-12) +- 解决微信小程序bus事件冲突问题 +## 3.1.0(2023-01-11) +- 支持微信小程序 +## 3.0.3(2023-01-10) +- 更新文档 +## 3.0.2(2023-01-09) +- 修复了一些已知问题 +## 3.0.1(2023-01-09) +- 修复了一些已知问题 +## 3.0.0(2023-01-09) +- 全面支持懒加载,大量数据也能快速打开 +## 2.0.01(2022-12-29) +- 文档修改 +## 2.0.0(2022-12-28) +- 添加搜索功能 +- 完善文档 +## 1.9.2(2022-12-14) +- 修复了一些已知问题 +## 1.9.1(2022-12-14) +- 修复了一些已知问题 +## 1.9.0(2022-12-14) +- 增加选项禁用、隐藏功能 +- 文档添加示例 +## 1.8.4(2022-12-13) +- 文档修复 +## 1.8.3(2022-12-09) +- 样式调整 +## 1.8.2(2022-12-07) +- 修复弹窗不同设备显示高度问题 +## 1.8.1(2022-12-06) +- 修复了一些已知问题 +## 1.8.0(2022-12-05) +- 修复了一些已知问题 +- 图标替换图片 +## 1.7.0(2022-12-05) +- 增加 disabled 属性,适用于查看页面 +- 修复了一些已知问题 +## 1.6.0(2022-12-05) +- 修复了一些已知问题 +## 1.5.0(2022-12-05) +- 根据绑定数据类型自动判断返回值类型 +- 完善文档 +## 1.4.0(2022-12-02) +- 修复了一些已知问题 +## 1.3.1(2022-12-02) +- 修复了一些已知问题 +## 1.3.0(2022-12-02) +- 修复了一些已知问题 +## 1.2.01(2022-12-02) +- 文档更新 +## 1.2.0(2022-12-02) +- 添加一键清除功能 +- 添加多选、单选功能 +## 1.1.0(2022-12-02) +- 支持数据回显、已选数据移除 +- 对标 uni-easyinput 默认样式 +- 支持更多属性和事件 +## 1.0.3(2022-12-01) +- 修改信息 +## 1.0.2(2022-12-01) +- 更新文档 +## 1.0.1(2022-12-01) +- 更新预览截图 +## 1.0.0(2022-12-01) +- 插件更新 diff --git a/uni_modules/custom-tree-select/components/custom-tree-select/custom-tree-select.vue b/uni_modules/custom-tree-select/components/custom-tree-select/custom-tree-select.vue new file mode 100644 index 0000000..cc28a50 --- /dev/null +++ b/uni_modules/custom-tree-select/components/custom-tree-select/custom-tree-select.vue @@ -0,0 +1,983 @@ + + + + + diff --git a/uni_modules/custom-tree-select/components/custom-tree-select/data-select-item.vue b/uni_modules/custom-tree-select/components/custom-tree-select/data-select-item.vue new file mode 100644 index 0000000..08be717 --- /dev/null +++ b/uni_modules/custom-tree-select/components/custom-tree-select/data-select-item.vue @@ -0,0 +1,363 @@ + + + + + diff --git a/uni_modules/custom-tree-select/components/custom-tree-select/utils.js b/uni_modules/custom-tree-select/components/custom-tree-select/utils.js new file mode 100644 index 0000000..e6a3560 --- /dev/null +++ b/uni_modules/custom-tree-select/components/custom-tree-select/utils.js @@ -0,0 +1,17 @@ +export function isString(data) { + return typeof data === 'string' +} + +// 分页 +export function paging(data, PAGENUM = 50) { + if (!Array.isArray(data) || !data.length) return data + const pages = [] + data.forEach((item, index) => { + const i = Math.floor(index / PAGENUM) + if (!pages[i]) { + pages[i] = [] + } + pages[i].push(item) + }) + return pages +} diff --git a/uni_modules/custom-tree-select/package.json b/uni_modules/custom-tree-select/package.json new file mode 100644 index 0000000..bea8e65 --- /dev/null +++ b/uni_modules/custom-tree-select/package.json @@ -0,0 +1,83 @@ +{ + "id": "custom-tree-select", + "displayName": "custom-tree-select树形选择器支持v-model", + "version": "4.1.0", + "description": "树形选择器基于uni-ui,v-model绑定数据,父级可选、数据回显、移除选项", + "keywords": [ + "custom", + "tree-select", + "选择器", + "树形选择器" +], + "repository": "https://github.com/qzlthxp/custom-tree-select", +"engines": { + }, + "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": "u" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "u", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/custom-tree-select/readme.md b/uni_modules/custom-tree-select/readme.md new file mode 100644 index 0000000..e1f9501 --- /dev/null +++ b/uni_modules/custom-tree-select/readme.md @@ -0,0 +1,228 @@ +# custom-tree-select 使用指南 + +找工作中…,大佬们有内推加群联系我 + +**提示:** 使用该插件前确保你已经导入 `uni-popup` `uni-icons` `uni-easyinput` 插件。 + +当前插件主要作为表单中选择器来使用,如果只是作为弹窗会出现数据状态无法重置,此时推荐使用 [`custom-tree-popup`](https://ext.dcloud.net.cn/plugin?name=custom-tree-popup) 组件。 + +**如果在微信小程序中使用,在 `main.js` 文件中添加以下代码,2023/05/04 之前安装插件或者本地插件版本 `<=3.7.1` 需要添加** + +```js +// #ifdef MP-WEIXIN +Vue.prototype.$bus = new Vue() +// #endif +``` + +**有问题可以加 QQ 群:297080738** + +## 优势 + +💪:基于 `uni-popup`、 `uni-icons`、 `uni-easyinput` 插件进行开发,默认样式与 `uni-easyinput` 样式对标。 + +⚡:全面支持懒加载应对大量数据。 + +🚀:v-model 绑定数据、数据回显、移除选项。 + +⚙ :提供更多配置项。 + +📦:开箱即用。 + +## Props + +| 属性名 | 类型 | 默认值 | 说明 | 版本要求 | +| :-------------------: | :---------: | :-----------------------------: | :----------------------------------------------------------: | --------- | +| canSelectAll | Boolean | false | 开启一键全选功能 | | +| contentHeight | String | '500px' \| 视窗高度的 75%的像素 | 弹出内选择器容器高度,为解决搜索时搜索框被顶出屏幕,监听输入框 focus 事件 动态修改弹窗内选择器容器高度 | | +| clearResetSearch | Boolean | false | 设置为 `true` 并且搜索之后,点击输入框清除按钮,会清空搜索内容并且会直接重置整个弹窗内树形选择器内容,默认情况下只有清除之后再次进行查询才会重置选择器 | | +| animation | Boolean | ture | 是否开启弹窗动画 | | +| is-mask-click | Boolean | true | 点击遮罩关闭弹窗 | | +| mask-background-color | String | rgba(0,0,0,0.4) | 蒙版颜色,建议使用 rgba 颜色值 | | +| background-color | String | none | 主窗口背景色 | | +| safe-area | Boolean | true | 是否适配底部安全区 | | +| **choseParent** | **Boolean** | **true** | **父节点是否可选** | | +| **linkage** | **Boolean** | **false** | **父子节点是否联动** | | +| placeholder | String | 请选择 | 空状态信息提示、弹窗标题 | | +| confirmText | String | 完成 | 确定按钮文字 | | +| confirmTextColor | String | #007aff | 确定按钮文字颜色 | | +| listData | Array | - | 展示的数据 | | +| **dataLabel** | **String** | **name** | **listData 中对应数据的 label** | | +| **dataValue** | **String** | **id** | **listData 中对应数据的 value** | | +| **dataChildren** | **String** | **children** | **listData 中对应数据的 children** | | +| clearable | Boolean | false | 是否显示清除按钮,点击清除所有已选项 | | +| **mutiple** | **Boolean** | **false** | **是否可以多选** | | +| **disabled** | **Boolean** | **false** | **是否允许修改** | | +| disabledList | Array | [] | 设置某些选项为不可选,数组元素为数据 dataValue 对应的值,也可以操作数据 disabled 属性实现 | | +| search | Boolean | false | 是否可以搜索(常用于数据较多的情况) | | +| showChildren | Boolean | false | 默认展开(数据内部 showChildren 属性优先级更高,可以设置全局收起,单独展开某一条数据) | | +| border | Boolean | false | 显示引导线 | | +| pathMode | Boolean | false | 路径模式,开启后选择框内展示选项所在层级的完整信息如:`城市/街道/小区` | >= 3.8.2 | +| pathHyphen | String | / | 路径模式下连字符 | >= 3.8.2 | +| lazyLoadChildren | Boolean | false | 是否允许动态加载获取子节点 | >= 3.8.4 | +| load | Function | (node) => Promise | 动态加载函数,具体用法见下方示例 | >= 3.8.4 | +| **v-model/value** | **Array** | **[ ]** | **已选择的值,通过 v-model 进行绑定,例如:v-model="formData.selectedList"** (根据你绑定数据的类型自动返回相同类型的数据,String 类型通过 `,` 进行分隔。>=4.0.0 版本不在支持字符串类型传参,修改为数组类型) | >= 4.0.0 | + +## listdata 特有属性 + +| 名称 | 类型 | 默认值 | 说明 | +| ------------ | ------- | ------ | ------------------ | +| disabled | Boolean | false | 选项是否可选 | +| visible | Boolean | true | 选项是否展示 | +| showChildren | Boolean | true | 选项是否展示子节点 | + +## Events + +| 事件名称 | 说明 | 返回值 | +| ------------ | ------------------------ | -------------------------------------- | +| change | 弹窗组件状态发生变化触发 | e={show: true | false, type:当前模式} | +| maskClick | 点击遮罩层触发 | | +| input | 选中数据或取消选中时触发 | 以数组形式返回已选择数据 | +| selectChange | 选中数据或取消选中时触发 | 以数组形式返回已选择数据完整信息 | +| removeSelect | 选择框移除选项时触发 | 返回对应数据的完整信息 | + +## 基础使用示例 + +```vue + + + +``` + +## 禁用某些选项,或隐藏某些选项 + +```vue + + + +``` + +## 动态加载节点 + +```vue + + + +``` + diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..decd775 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,84 @@ +## 1.9.1(2024-04-02) +- 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法) +## 1.9.0(2024-03-28) +- 修复 uni-popup-dialog 双向绑定时初始化逻辑修正 +## 1.8.9(2024-03-20) +- 修复 uni-popup-dialog 数据输入时修正为双向绑定 +## 1.8.8(2024-02-20) +- 修复 uni-popup 在微信小程序下出现文字向上闪动的bug +## 1.8.7(2024-02-02) +- 新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦 +## 1.8.6(2024-01-30) +- 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数 +## 1.8.5(2024-01-26) +- 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示 +## 1.8.4(2023-11-15) +- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close` +## 1.8.3(2023-04-17) +- 修复 uni-popup 重复打开时的 bug +## 1.8.2(2023-02-02) +- uni-popup-dialog 组件新增 inputType 属性 +## 1.8.1(2022-12-01) +- 修复 nvue 下 v-show 报错 +## 1.8.0(2022-11-29) +- 优化 主题样式 +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..a747b9f --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..e42bfaf --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..7f27a1e --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..7a98a31 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..8c0f5f3 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..fa8f0f3 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..8e5b99f --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..06ce162 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..16a5818 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..a37fb9f --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue b/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue new file mode 100644 index 0000000..5eb8d5b --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..8349e99 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,503 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..3cfa384 --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.9.1", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "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" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "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" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-popup/readme.md b/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..faaf336 --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,24 @@ +## 1.3.3(2024-04-23) +- 修复 当元素会受变量影响自动隐藏的bug +## 1.3.2(2023-05-04) +- 修复 NVUE 平台报错的问题 +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..8f89b18 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,131 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 + this.animation = uni.createAnimation({ + ...options + }) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..f3ddd1f --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d5c20e1 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.3", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "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" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y", + "alipay": "n" + }, + "client": { + "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" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-transition/readme.md b/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file