commit b4728537b1fc8b1cee59d73785ef619553447a53 Author: zhangwentao <09094219www> Date: Mon Oct 21 14:52:40 2024 +0800 初始化提交 diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..81f13f4 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,16 @@ +{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version": "0.0", + "configurations": [{ + "default" : + { + "launchtype" : "local" + }, + "mp-weixin" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/Retired.iml b/.idea/Retired.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/Retired.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..28a804d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..214edd2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..ae737fc --- /dev/null +++ b/App.vue @@ -0,0 +1,50 @@ + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..2fcf195 --- /dev/null +++ b/README.md @@ -0,0 +1,154 @@ +[TOC] +# 一、项目介绍 +1. 项目描述:“share-bbs”是一套采用“uni-App”开发的分享社交论坛,兼容Android、IOS、微信小程序。 +2. 代码说明:此项目为纯前端项目,不含后端、数据库等(方便本地运行、学习、复用)。前端框架:uni-app,vue.js,uViewUI。 +3. 仓库地址:[社交论坛] https://gitee.com/mrthinco/share-bbs +4. 项目展示: +![页面效果](static/profile/1.jpg) +![页面效果](static/profile/2.jpg) +![页面效果](static/profile/3.jpg) + +# 二、目录说明 +## 2.1 目录 +``` +share-bbs +├─ components // 组件库 + ├─ com-* // 公共组件 + ├─ 页面名称-* // 页面组件 + └─ uni-* // uni组件 +├─ pages // 页面 + ├─ index // 首页模块 + ├─ news // 动态模块 + ├─ paper // 小纸条模块 + └─ mine // 我的模块 +├─ static // 静态资源, 存放应用引用的本地静态资源(如图片、视频等)的目录,注意:静态资源只能存放于此 + ├─ css // css样式库 + ├─ thinco.css:样式库(自定义) + ├─ animate.css:动画库(第三方) + ├─ iconfont.css:自定义图标库(第三方) + └─ uni.css: 官方UI库(第三方) + ├─ font // 字体文件 + └─ img // 图片文件 +├─ utils // js工具库 +├─uni_modules // 存放[uni_module](/uni_modules) +├─platforms // 存放各平台专用页面的目录 +├─nativeplugins // App原生语言插件 +├─hybrid // App端存放本地html文件的目录 +├─wxcomponents // 存放小程序组件的目录 +├─unpackage // 非工程代码,一般存放运行或发行的编译结果 +├─AndroidManifest.xml // Android原生应用清单文件 +├─main.js // Vue初始化入口文件 +├─App.vue // 应用配置,用来配置App全局样式以及监听 应用生命周期 +├─manifest.json // 配置应用名称、appid、logo、版本等打包信息 +├─pages.json // 配置页面路由、导航条、选项卡等页面类信息 +└─uni.scss // 这里是uni-app内置的常用样式变量 +``` + +## 2.2 pages 模块/页面 +1. home 首页模块 +2. mine 我的模块 +3. news 动态模块 +4. paper 小纸条模块 + +## 2.3 components 组件 +### 2.3.1 组件命名规范 +1. 组件名称:小驼峰,尽量语义化,如:orderList +2. 组件文件:组件名称/组件名称.vue,一个组件对应一个文件夹,该文件夹下可以有多个类型的文件(如:js、img、css等)。如:`orderList/orderList.vue` + +### 2.3.2 组件存放规范 +1. uni-ui组件或者三方组件直接存放为:`components/uni-*`(遵循:easycom规则) +在使用 uni-ui 的时候,只要uni-ui组件 安装在项目的 components 目录下,并符合 components/组件名称/组件名称.vue 目录结构。就可以不用引用、注册,直接在页面中使用 uni-ui 组件。 +2. 自定义公共复用组件存放为:`components/com*/com*.vue` (遵循:easycom规则) +这里存放自定义复用组件,方便大家开发和复用、共享。如果要修改,uni-ui组件,也建议复制粘贴到这里,然后自定义修改,避免去uni-ui中直接修改,因为后面uni官方组件升级后会导致之前的自定义代码丢失。 +3. 自定义非公共组件存放到:`当前页/cpns`,因为有的页面组件,其他页面根部就不会复用到,只是为了让主页面代码简洁和便于维护,那么这些组件,应该直接放到当前页下的`cpns`文件夹中,独立维护。 + +### 2.3.3 组件说明规范 +每个自定义组件,组件用法、参数描述应该简单、清晰,应该在组件代码的` +``` + +## 2.4 static 静态资源 +1. `static/font` 字体文件 +2. `static/img` 图片文件 + * 建议图片能够放后端或者云存储的尽量就别放前端,减少包体积和优化加载速度 。 + * 图片如果是复用的图片,不属于某个页面独有的图片,直接放此目录。 + * 图片如果属于某个功能模块独有的,需要建立一个和模块名称同名的文件夹,再存于文件夹下。如:`static/img/order` 订单模块的图片。 +3. `static/css` css样式库 + * /css/uni.css: 官方UI库(第三方) + * /css/animate.css:动画库(第三方) + * /css/iconfont.css:自定义图标库(第三方) + * /css/thinco.scss:样式库(自定义) + +## 2.5 store vuex缓存 +我们采用分模块来管理各个vuex子模块,便于项目的维护和整合。 +1. `index.js` 此文件是入口文件,方便整合和引入vuex模块 +2. `modules/user.js` 此文件是用户信息相关vuex模块 + +# 三、配置插件 +1. pages.json文件 +因为有的页面取消了导航栏,导致没法直观的辨别页面是哪个页面,做啥的。 +* 每个页面配置项,顶部应该备注该页面说明。 +* 特别的参数项,应该备注参数说明。 +``` +{ // 分组选择 + "path": "pages/group/group-check-spec", + "style": { + "navigationStyle": "custom", // 取消本页面的导航栏 + "backgroundColor": "transparent", + "app-plus": { + "animationType": "fade-in", // 设置fade-in淡入动画,为最合理的动画类型 + "background": "transparent", // 背景透明 + "backgroundColor": "rgba(0,0,0,0)", // 背景透明 + "popGesture": "none" // 关闭IOS屏幕左边滑动关闭当前页面的功能 + } + } +} +``` + +# 四、命名规范 +## 4.1 文件命名 +.vue/.css/.js文件命名采用小驼峰,尽量语义化,如:userList.vue + +## 4.2 CSS命名规范 +* class、id命名采用小写字母加中划线,尽量语义化,前缀是类型,后面是操作。如:提交按钮 `btn-submit`。 + +## 4.3 JS命名规范 +* js函数命名采用小驼峰,尽量语义化,如:`parseStartTag`。 + +# 五、版本规范 +* 版本名称:2.220815.1 +* 版本号:22208151 +* 从左往右数字命名说明: + * 第一位:2,表示当前大迭代版本号:2版本 + * 第二至七位:220815,表示当前的发版日期:22年08月15日 + * 第八位:1-9,表示本次上线版本的上架审核次数,默认为1,重新上架一次递增1,最高为9 +*【注意】:版本号和版本名称是对应关系,版本名称用点号分割 + +# 六、代码提交 +``` +feat 增加新功能 +fix 修复问题/BUG +style 代码风格相关无影响运行结果的 +perf 优化/性能提升 +refactor 重构 +revert 撤销修改 +test 测试相关 +docs 文档/注释 +chore 依赖更新/脚手架配置修改等 +workflow 工作流改进 +ci 持续集成 +types 类型定义文件更改 +wip 开发中 +``` \ No newline at end of file diff --git a/components/blindfold/blindfold.vue b/components/blindfold/blindfold.vue new file mode 100644 index 0000000..78da564 --- /dev/null +++ b/components/blindfold/blindfold.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/components/bottom-input/bottom-input.vue b/components/bottom-input/bottom-input.vue new file mode 100644 index 0000000..397fabe --- /dev/null +++ b/components/bottom-input/bottom-input.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/components/city-picker/city-data/area.js b/components/city-picker/city-data/area.js new file mode 100644 index 0000000..92dfc30 --- /dev/null +++ b/components/city-picker/city-data/area.js @@ -0,0 +1,12542 @@ +/* eslint-disable */ +var areaData = [ + [ + [{ + "label": "东城区", + "value": "110101" + }, + { + "label": "西城区", + "value": "110102" + }, + { + "label": "朝阳区", + "value": "110105" + }, + { + "label": "丰台区", + "value": "110106" + }, + { + "label": "石景山区", + "value": "110107" + }, + { + "label": "海淀区", + "value": "110108" + }, + { + "label": "门头沟区", + "value": "110109" + }, + { + "label": "房山区", + "value": "110111" + }, + { + "label": "通州区", + "value": "110112" + }, + { + "label": "顺义区", + "value": "110113" + }, + { + "label": "昌平区", + "value": "110114" + }, + { + "label": "大兴区", + "value": "110115" + }, + { + "label": "怀柔区", + "value": "110116" + }, + { + "label": "平谷区", + "value": "110117" + }, + { + "label": "密云区", + "value": "110118" + }, + { + "label": "延庆区", + "value": "110119" + } + ] + ], + [ + [{ + "label": "和平区", + "value": "120101" + }, + { + "label": "河东区", + "value": "120102" + }, + { + "label": "河西区", + "value": "120103" + }, + { + "label": "南开区", + "value": "120104" + }, + { + "label": "河北区", + "value": "120105" + }, + { + "label": "红桥区", + "value": "120106" + }, + { + "label": "东丽区", + "value": "120110" + }, + { + "label": "西青区", + "value": "120111" + }, + { + "label": "津南区", + "value": "120112" + }, + { + "label": "北辰区", + "value": "120113" + }, + { + "label": "武清区", + "value": "120114" + }, + { + "label": "宝坻区", + "value": "120115" + }, + { + "label": "滨海新区", + "value": "120116" + }, + { + "label": "宁河区", + "value": "120117" + }, + { + "label": "静海区", + "value": "120118" + }, + { + "label": "蓟州区", + "value": "120119" + } + ] + ], + [ + [{ + "label": "长安区", + "value": "130102" + }, + { + "label": "桥西区", + "value": "130104" + }, + { + "label": "新华区", + "value": "130105" + }, + { + "label": "井陉矿区", + "value": "130107" + }, + { + "label": "裕华区", + "value": "130108" + }, + { + "label": "藁城区", + "value": "130109" + }, + { + "label": "鹿泉区", + "value": "130110" + }, + { + "label": "栾城区", + "value": "130111" + }, + { + "label": "井陉县", + "value": "130121" + }, + { + "label": "正定县", + "value": "130123" + }, + { + "label": "行唐县", + "value": "130125" + }, + { + "label": "灵寿县", + "value": "130126" + }, + { + "label": "高邑县", + "value": "130127" + }, + { + "label": "深泽县", + "value": "130128" + }, + { + "label": "赞皇县", + "value": "130129" + }, + { + "label": "无极县", + "value": "130130" + }, + { + "label": "平山县", + "value": "130131" + }, + { + "label": "元氏县", + "value": "130132" + }, + { + "label": "赵县", + "value": "130133" + }, + { + "label": "石家庄高新技术产业开发区", + "value": "130171" + }, + { + "label": "石家庄循环化工园区", + "value": "130172" + }, + { + "label": "辛集市", + "value": "130181" + }, + { + "label": "晋州市", + "value": "130183" + }, + { + "label": "新乐市", + "value": "130184" + } + ], + [{ + "label": "路南区", + "value": "130202" + }, + { + "label": "路北区", + "value": "130203" + }, + { + "label": "古冶区", + "value": "130204" + }, + { + "label": "开平区", + "value": "130205" + }, + { + "label": "丰南区", + "value": "130207" + }, + { + "label": "丰润区", + "value": "130208" + }, + { + "label": "曹妃甸区", + "value": "130209" + }, + { + "label": "滦县", + "value": "130223" + }, + { + "label": "滦南县", + "value": "130224" + }, + { + "label": "乐亭县", + "value": "130225" + }, + { + "label": "迁西县", + "value": "130227" + }, + { + "label": "玉田县", + "value": "130229" + }, + { + "label": "唐山市芦台经济技术开发区", + "value": "130271" + }, + { + "label": "唐山市汉沽管理区", + "value": "130272" + }, + { + "label": "唐山高新技术产业开发区", + "value": "130273" + }, + { + "label": "河北唐山海港经济开发区", + "value": "130274" + }, + { + "label": "遵化市", + "value": "130281" + }, + { + "label": "迁安市", + "value": "130283" + } + ], + [{ + "label": "海港区", + "value": "130302" + }, + { + "label": "山海关区", + "value": "130303" + }, + { + "label": "北戴河区", + "value": "130304" + }, + { + "label": "抚宁区", + "value": "130306" + }, + { + "label": "青龙满族自治县", + "value": "130321" + }, + { + "label": "昌黎县", + "value": "130322" + }, + { + "label": "卢龙县", + "value": "130324" + }, + { + "label": "秦皇岛市经济技术开发区", + "value": "130371" + }, + { + "label": "北戴河新区", + "value": "130372" + } + ], + [{ + "label": "邯山区", + "value": "130402" + }, + { + "label": "丛台区", + "value": "130403" + }, + { + "label": "复兴区", + "value": "130404" + }, + { + "label": "峰峰矿区", + "value": "130406" + }, + { + "label": "肥乡区", + "value": "130407" + }, + { + "label": "永年区", + "value": "130408" + }, + { + "label": "临漳县", + "value": "130423" + }, + { + "label": "成安县", + "value": "130424" + }, + { + "label": "大名县", + "value": "130425" + }, + { + "label": "涉县", + "value": "130426" + }, + { + "label": "磁县", + "value": "130427" + }, + { + "label": "邱县", + "value": "130430" + }, + { + "label": "鸡泽县", + "value": "130431" + }, + { + "label": "广平县", + "value": "130432" + }, + { + "label": "馆陶县", + "value": "130433" + }, + { + "label": "魏县", + "value": "130434" + }, + { + "label": "曲周县", + "value": "130435" + }, + { + "label": "邯郸经济技术开发区", + "value": "130471" + }, + { + "label": "邯郸冀南新区", + "value": "130473" + }, + { + "label": "武安市", + "value": "130481" + } + ], + [{ + "label": "桥东区", + "value": "130502" + }, + { + "label": "桥西区", + "value": "130503" + }, + { + "label": "邢台县", + "value": "130521" + }, + { + "label": "临城县", + "value": "130522" + }, + { + "label": "内丘县", + "value": "130523" + }, + { + "label": "柏乡县", + "value": "130524" + }, + { + "label": "隆尧县", + "value": "130525" + }, + { + "label": "任县", + "value": "130526" + }, + { + "label": "南和县", + "value": "130527" + }, + { + "label": "宁晋县", + "value": "130528" + }, + { + "label": "巨鹿县", + "value": "130529" + }, + { + "label": "新河县", + "value": "130530" + }, + { + "label": "广宗县", + "value": "130531" + }, + { + "label": "平乡县", + "value": "130532" + }, + { + "label": "威县", + "value": "130533" + }, + { + "label": "清河县", + "value": "130534" + }, + { + "label": "临西县", + "value": "130535" + }, + { + "label": "河北邢台经济开发区", + "value": "130571" + }, + { + "label": "南宫市", + "value": "130581" + }, + { + "label": "沙河市", + "value": "130582" + } + ], + [{ + "label": "竞秀区", + "value": "130602" + }, + { + "label": "莲池区", + "value": "130606" + }, + { + "label": "满城区", + "value": "130607" + }, + { + "label": "清苑区", + "value": "130608" + }, + { + "label": "徐水区", + "value": "130609" + }, + { + "label": "涞水县", + "value": "130623" + }, + { + "label": "阜平县", + "value": "130624" + }, + { + "label": "定兴县", + "value": "130626" + }, + { + "label": "唐县", + "value": "130627" + }, + { + "label": "高阳县", + "value": "130628" + }, + { + "label": "容城县", + "value": "130629" + }, + { + "label": "涞源县", + "value": "130630" + }, + { + "label": "望都县", + "value": "130631" + }, + { + "label": "安新县", + "value": "130632" + }, + { + "label": "易县", + "value": "130633" + }, + { + "label": "曲阳县", + "value": "130634" + }, + { + "label": "蠡县", + "value": "130635" + }, + { + "label": "顺平县", + "value": "130636" + }, + { + "label": "博野县", + "value": "130637" + }, + { + "label": "雄县", + "value": "130638" + }, + { + "label": "保定高新技术产业开发区", + "value": "130671" + }, + { + "label": "保定白沟新城", + "value": "130672" + }, + { + "label": "涿州市", + "value": "130681" + }, + { + "label": "定州市", + "value": "130682" + }, + { + "label": "安国市", + "value": "130683" + }, + { + "label": "高碑店市", + "value": "130684" + } + ], + [{ + "label": "桥东区", + "value": "130702" + }, + { + "label": "桥西区", + "value": "130703" + }, + { + "label": "宣化区", + "value": "130705" + }, + { + "label": "下花园区", + "value": "130706" + }, + { + "label": "万全区", + "value": "130708" + }, + { + "label": "崇礼区", + "value": "130709" + }, + { + "label": "张北县", + "value": "130722" + }, + { + "label": "康保县", + "value": "130723" + }, + { + "label": "沽源县", + "value": "130724" + }, + { + "label": "尚义县", + "value": "130725" + }, + { + "label": "蔚县", + "value": "130726" + }, + { + "label": "阳原县", + "value": "130727" + }, + { + "label": "怀安县", + "value": "130728" + }, + { + "label": "怀来县", + "value": "130730" + }, + { + "label": "涿鹿县", + "value": "130731" + }, + { + "label": "赤城县", + "value": "130732" + }, + { + "label": "张家口市高新技术产业开发区", + "value": "130771" + }, + { + "label": "张家口市察北管理区", + "value": "130772" + }, + { + "label": "张家口市塞北管理区", + "value": "130773" + } + ], + [{ + "label": "双桥区", + "value": "130802" + }, + { + "label": "双滦区", + "value": "130803" + }, + { + "label": "鹰手营子矿区", + "value": "130804" + }, + { + "label": "承德县", + "value": "130821" + }, + { + "label": "兴隆县", + "value": "130822" + }, + { + "label": "滦平县", + "value": "130824" + }, + { + "label": "隆化县", + "value": "130825" + }, + { + "label": "丰宁满族自治县", + "value": "130826" + }, + { + "label": "宽城满族自治县", + "value": "130827" + }, + { + "label": "围场满族蒙古族自治县", + "value": "130828" + }, + { + "label": "承德高新技术产业开发区", + "value": "130871" + }, + { + "label": "平泉市", + "value": "130881" + } + ], + [{ + "label": "新华区", + "value": "130902" + }, + { + "label": "运河区", + "value": "130903" + }, + { + "label": "沧县", + "value": "130921" + }, + { + "label": "青县", + "value": "130922" + }, + { + "label": "东光县", + "value": "130923" + }, + { + "label": "海兴县", + "value": "130924" + }, + { + "label": "盐山县", + "value": "130925" + }, + { + "label": "肃宁县", + "value": "130926" + }, + { + "label": "南皮县", + "value": "130927" + }, + { + "label": "吴桥县", + "value": "130928" + }, + { + "label": "献县", + "value": "130929" + }, + { + "label": "孟村回族自治县", + "value": "130930" + }, + { + "label": "河北沧州经济开发区", + "value": "130971" + }, + { + "label": "沧州高新技术产业开发区", + "value": "130972" + }, + { + "label": "沧州渤海新区", + "value": "130973" + }, + { + "label": "泊头市", + "value": "130981" + }, + { + "label": "任丘市", + "value": "130982" + }, + { + "label": "黄骅市", + "value": "130983" + }, + { + "label": "河间市", + "value": "130984" + } + ], + [{ + "label": "安次区", + "value": "131002" + }, + { + "label": "广阳区", + "value": "131003" + }, + { + "label": "固安县", + "value": "131022" + }, + { + "label": "永清县", + "value": "131023" + }, + { + "label": "香河县", + "value": "131024" + }, + { + "label": "大城县", + "value": "131025" + }, + { + "label": "文安县", + "value": "131026" + }, + { + "label": "大厂回族自治县", + "value": "131028" + }, + { + "label": "廊坊经济技术开发区", + "value": "131071" + }, + { + "label": "霸州市", + "value": "131081" + }, + { + "label": "三河市", + "value": "131082" + } + ], + [{ + "label": "桃城区", + "value": "131102" + }, + { + "label": "冀州区", + "value": "131103" + }, + { + "label": "枣强县", + "value": "131121" + }, + { + "label": "武邑县", + "value": "131122" + }, + { + "label": "武强县", + "value": "131123" + }, + { + "label": "饶阳县", + "value": "131124" + }, + { + "label": "安平县", + "value": "131125" + }, + { + "label": "故城县", + "value": "131126" + }, + { + "label": "景县", + "value": "131127" + }, + { + "label": "阜城县", + "value": "131128" + }, + { + "label": "河北衡水经济开发区", + "value": "131171" + }, + { + "label": "衡水滨湖新区", + "value": "131172" + }, + { + "label": "深州市", + "value": "131182" + } + ] + ], + [ + [{ + "label": "小店区", + "value": "140105" + }, + { + "label": "迎泽区", + "value": "140106" + }, + { + "label": "杏花岭区", + "value": "140107" + }, + { + "label": "尖草坪区", + "value": "140108" + }, + { + "label": "万柏林区", + "value": "140109" + }, + { + "label": "晋源区", + "value": "140110" + }, + { + "label": "清徐县", + "value": "140121" + }, + { + "label": "阳曲县", + "value": "140122" + }, + { + "label": "娄烦县", + "value": "140123" + }, + { + "label": "山西转型综合改革示范区", + "value": "140171" + }, + { + "label": "古交市", + "value": "140181" + } + ], + [{ + "label": "城区", + "value": "140202" + }, + { + "label": "矿区", + "value": "140203" + }, + { + "label": "南郊区", + "value": "140211" + }, + { + "label": "新荣区", + "value": "140212" + }, + { + "label": "阳高县", + "value": "140221" + }, + { + "label": "天镇县", + "value": "140222" + }, + { + "label": "广灵县", + "value": "140223" + }, + { + "label": "灵丘县", + "value": "140224" + }, + { + "label": "浑源县", + "value": "140225" + }, + { + "label": "左云县", + "value": "140226" + }, + { + "label": "大同县", + "value": "140227" + }, + { + "label": "山西大同经济开发区", + "value": "140271" + } + ], + [{ + "label": "城区", + "value": "140302" + }, + { + "label": "矿区", + "value": "140303" + }, + { + "label": "郊区", + "value": "140311" + }, + { + "label": "平定县", + "value": "140321" + }, + { + "label": "盂县", + "value": "140322" + }, + { + "label": "山西阳泉经济开发区", + "value": "140371" + } + ], + [{ + "label": "城区", + "value": "140402" + }, + { + "label": "郊区", + "value": "140411" + }, + { + "label": "长治县", + "value": "140421" + }, + { + "label": "襄垣县", + "value": "140423" + }, + { + "label": "屯留县", + "value": "140424" + }, + { + "label": "平顺县", + "value": "140425" + }, + { + "label": "黎城县", + "value": "140426" + }, + { + "label": "壶关县", + "value": "140427" + }, + { + "label": "长子县", + "value": "140428" + }, + { + "label": "武乡县", + "value": "140429" + }, + { + "label": "沁县", + "value": "140430" + }, + { + "label": "沁源县", + "value": "140431" + }, + { + "label": "山西长治高新技术产业园区", + "value": "140471" + }, + { + "label": "潞城市", + "value": "140481" + } + ], + [{ + "label": "城区", + "value": "140502" + }, + { + "label": "沁水县", + "value": "140521" + }, + { + "label": "阳城县", + "value": "140522" + }, + { + "label": "陵川县", + "value": "140524" + }, + { + "label": "泽州县", + "value": "140525" + }, + { + "label": "高平市", + "value": "140581" + } + ], + [{ + "label": "朔城区", + "value": "140602" + }, + { + "label": "平鲁区", + "value": "140603" + }, + { + "label": "山阴县", + "value": "140621" + }, + { + "label": "应县", + "value": "140622" + }, + { + "label": "右玉县", + "value": "140623" + }, + { + "label": "怀仁县", + "value": "140624" + }, + { + "label": "山西朔州经济开发区", + "value": "140671" + } + ], + [{ + "label": "榆次区", + "value": "140702" + }, + { + "label": "榆社县", + "value": "140721" + }, + { + "label": "左权县", + "value": "140722" + }, + { + "label": "和顺县", + "value": "140723" + }, + { + "label": "昔阳县", + "value": "140724" + }, + { + "label": "寿阳县", + "value": "140725" + }, + { + "label": "太谷县", + "value": "140726" + }, + { + "label": "祁县", + "value": "140727" + }, + { + "label": "平遥县", + "value": "140728" + }, + { + "label": "灵石县", + "value": "140729" + }, + { + "label": "介休市", + "value": "140781" + } + ], + [{ + "label": "盐湖区", + "value": "140802" + }, + { + "label": "临猗县", + "value": "140821" + }, + { + "label": "万荣县", + "value": "140822" + }, + { + "label": "闻喜县", + "value": "140823" + }, + { + "label": "稷山县", + "value": "140824" + }, + { + "label": "新绛县", + "value": "140825" + }, + { + "label": "绛县", + "value": "140826" + }, + { + "label": "垣曲县", + "value": "140827" + }, + { + "label": "夏县", + "value": "140828" + }, + { + "label": "平陆县", + "value": "140829" + }, + { + "label": "芮城县", + "value": "140830" + }, + { + "label": "永济市", + "value": "140881" + }, + { + "label": "河津市", + "value": "140882" + } + ], + [{ + "label": "忻府区", + "value": "140902" + }, + { + "label": "定襄县", + "value": "140921" + }, + { + "label": "五台县", + "value": "140922" + }, + { + "label": "代县", + "value": "140923" + }, + { + "label": "繁峙县", + "value": "140924" + }, + { + "label": "宁武县", + "value": "140925" + }, + { + "label": "静乐县", + "value": "140926" + }, + { + "label": "神池县", + "value": "140927" + }, + { + "label": "五寨县", + "value": "140928" + }, + { + "label": "岢岚县", + "value": "140929" + }, + { + "label": "河曲县", + "value": "140930" + }, + { + "label": "保德县", + "value": "140931" + }, + { + "label": "偏关县", + "value": "140932" + }, + { + "label": "五台山风景名胜区", + "value": "140971" + }, + { + "label": "原平市", + "value": "140981" + } + ], + [{ + "label": "尧都区", + "value": "141002" + }, + { + "label": "曲沃县", + "value": "141021" + }, + { + "label": "翼城县", + "value": "141022" + }, + { + "label": "襄汾县", + "value": "141023" + }, + { + "label": "洪洞县", + "value": "141024" + }, + { + "label": "古县", + "value": "141025" + }, + { + "label": "安泽县", + "value": "141026" + }, + { + "label": "浮山县", + "value": "141027" + }, + { + "label": "吉县", + "value": "141028" + }, + { + "label": "乡宁县", + "value": "141029" + }, + { + "label": "大宁县", + "value": "141030" + }, + { + "label": "隰县", + "value": "141031" + }, + { + "label": "永和县", + "value": "141032" + }, + { + "label": "蒲县", + "value": "141033" + }, + { + "label": "汾西县", + "value": "141034" + }, + { + "label": "侯马市", + "value": "141081" + }, + { + "label": "霍州市", + "value": "141082" + } + ], + [{ + "label": "离石区", + "value": "141102" + }, + { + "label": "文水县", + "value": "141121" + }, + { + "label": "交城县", + "value": "141122" + }, + { + "label": "兴县", + "value": "141123" + }, + { + "label": "临县", + "value": "141124" + }, + { + "label": "柳林县", + "value": "141125" + }, + { + "label": "石楼县", + "value": "141126" + }, + { + "label": "岚县", + "value": "141127" + }, + { + "label": "方山县", + "value": "141128" + }, + { + "label": "中阳县", + "value": "141129" + }, + { + "label": "交口县", + "value": "141130" + }, + { + "label": "孝义市", + "value": "141181" + }, + { + "label": "汾阳市", + "value": "141182" + } + ] + ], + [ + [{ + "label": "新城区", + "value": "150102" + }, + { + "label": "回民区", + "value": "150103" + }, + { + "label": "玉泉区", + "value": "150104" + }, + { + "label": "赛罕区", + "value": "150105" + }, + { + "label": "土默特左旗", + "value": "150121" + }, + { + "label": "托克托县", + "value": "150122" + }, + { + "label": "和林格尔县", + "value": "150123" + }, + { + "label": "清水河县", + "value": "150124" + }, + { + "label": "武川县", + "value": "150125" + }, + { + "label": "呼和浩特金海工业园区", + "value": "150171" + }, + { + "label": "呼和浩特经济技术开发区", + "value": "150172" + } + ], + [{ + "label": "东河区", + "value": "150202" + }, + { + "label": "昆都仑区", + "value": "150203" + }, + { + "label": "青山区", + "value": "150204" + }, + { + "label": "石拐区", + "value": "150205" + }, + { + "label": "白云鄂博矿区", + "value": "150206" + }, + { + "label": "九原区", + "value": "150207" + }, + { + "label": "土默特右旗", + "value": "150221" + }, + { + "label": "固阳县", + "value": "150222" + }, + { + "label": "达尔罕茂明安联合旗", + "value": "150223" + }, + { + "label": "包头稀土高新技术产业开发区", + "value": "150271" + } + ], + [{ + "label": "海勃湾区", + "value": "150302" + }, + { + "label": "海南区", + "value": "150303" + }, + { + "label": "乌达区", + "value": "150304" + } + ], + [{ + "label": "红山区", + "value": "150402" + }, + { + "label": "元宝山区", + "value": "150403" + }, + { + "label": "松山区", + "value": "150404" + }, + { + "label": "阿鲁科尔沁旗", + "value": "150421" + }, + { + "label": "巴林左旗", + "value": "150422" + }, + { + "label": "巴林右旗", + "value": "150423" + }, + { + "label": "林西县", + "value": "150424" + }, + { + "label": "克什克腾旗", + "value": "150425" + }, + { + "label": "翁牛特旗", + "value": "150426" + }, + { + "label": "喀喇沁旗", + "value": "150428" + }, + { + "label": "宁城县", + "value": "150429" + }, + { + "label": "敖汉旗", + "value": "150430" + } + ], + [{ + "label": "科尔沁区", + "value": "150502" + }, + { + "label": "科尔沁左翼中旗", + "value": "150521" + }, + { + "label": "科尔沁左翼后旗", + "value": "150522" + }, + { + "label": "开鲁县", + "value": "150523" + }, + { + "label": "库伦旗", + "value": "150524" + }, + { + "label": "奈曼旗", + "value": "150525" + }, + { + "label": "扎鲁特旗", + "value": "150526" + }, + { + "label": "通辽经济技术开发区", + "value": "150571" + }, + { + "label": "霍林郭勒市", + "value": "150581" + } + ], + [{ + "label": "东胜区", + "value": "150602" + }, + { + "label": "康巴什区", + "value": "150603" + }, + { + "label": "达拉特旗", + "value": "150621" + }, + { + "label": "准格尔旗", + "value": "150622" + }, + { + "label": "鄂托克前旗", + "value": "150623" + }, + { + "label": "鄂托克旗", + "value": "150624" + }, + { + "label": "杭锦旗", + "value": "150625" + }, + { + "label": "乌审旗", + "value": "150626" + }, + { + "label": "伊金霍洛旗", + "value": "150627" + } + ], + [{ + "label": "海拉尔区", + "value": "150702" + }, + { + "label": "扎赉诺尔区", + "value": "150703" + }, + { + "label": "阿荣旗", + "value": "150721" + }, + { + "label": "莫力达瓦达斡尔族自治旗", + "value": "150722" + }, + { + "label": "鄂伦春自治旗", + "value": "150723" + }, + { + "label": "鄂温克族自治旗", + "value": "150724" + }, + { + "label": "陈巴尔虎旗", + "value": "150725" + }, + { + "label": "新巴尔虎左旗", + "value": "150726" + }, + { + "label": "新巴尔虎右旗", + "value": "150727" + }, + { + "label": "满洲里市", + "value": "150781" + }, + { + "label": "牙克石市", + "value": "150782" + }, + { + "label": "扎兰屯市", + "value": "150783" + }, + { + "label": "额尔古纳市", + "value": "150784" + }, + { + "label": "根河市", + "value": "150785" + } + ], + [{ + "label": "临河区", + "value": "150802" + }, + { + "label": "五原县", + "value": "150821" + }, + { + "label": "磴口县", + "value": "150822" + }, + { + "label": "乌拉特前旗", + "value": "150823" + }, + { + "label": "乌拉特中旗", + "value": "150824" + }, + { + "label": "乌拉特后旗", + "value": "150825" + }, + { + "label": "杭锦后旗", + "value": "150826" + } + ], + [{ + "label": "集宁区", + "value": "150902" + }, + { + "label": "卓资县", + "value": "150921" + }, + { + "label": "化德县", + "value": "150922" + }, + { + "label": "商都县", + "value": "150923" + }, + { + "label": "兴和县", + "value": "150924" + }, + { + "label": "凉城县", + "value": "150925" + }, + { + "label": "察哈尔右翼前旗", + "value": "150926" + }, + { + "label": "察哈尔右翼中旗", + "value": "150927" + }, + { + "label": "察哈尔右翼后旗", + "value": "150928" + }, + { + "label": "四子王旗", + "value": "150929" + }, + { + "label": "丰镇市", + "value": "150981" + } + ], + [{ + "label": "乌兰浩特市", + "value": "152201" + }, + { + "label": "阿尔山市", + "value": "152202" + }, + { + "label": "科尔沁右翼前旗", + "value": "152221" + }, + { + "label": "科尔沁右翼中旗", + "value": "152222" + }, + { + "label": "扎赉特旗", + "value": "152223" + }, + { + "label": "突泉县", + "value": "152224" + } + ], + [{ + "label": "二连浩特市", + "value": "152501" + }, + { + "label": "锡林浩特市", + "value": "152502" + }, + { + "label": "阿巴嘎旗", + "value": "152522" + }, + { + "label": "苏尼特左旗", + "value": "152523" + }, + { + "label": "苏尼特右旗", + "value": "152524" + }, + { + "label": "东乌珠穆沁旗", + "value": "152525" + }, + { + "label": "西乌珠穆沁旗", + "value": "152526" + }, + { + "label": "太仆寺旗", + "value": "152527" + }, + { + "label": "镶黄旗", + "value": "152528" + }, + { + "label": "正镶白旗", + "value": "152529" + }, + { + "label": "正蓝旗", + "value": "152530" + }, + { + "label": "多伦县", + "value": "152531" + }, + { + "label": "乌拉盖管委会", + "value": "152571" + } + ], + [{ + "label": "阿拉善左旗", + "value": "152921" + }, + { + "label": "阿拉善右旗", + "value": "152922" + }, + { + "label": "额济纳旗", + "value": "152923" + }, + { + "label": "内蒙古阿拉善经济开发区", + "value": "152971" + } + ] + ], + [ + [{ + "label": "和平区", + "value": "210102" + }, + { + "label": "沈河区", + "value": "210103" + }, + { + "label": "大东区", + "value": "210104" + }, + { + "label": "皇姑区", + "value": "210105" + }, + { + "label": "铁西区", + "value": "210106" + }, + { + "label": "苏家屯区", + "value": "210111" + }, + { + "label": "浑南区", + "value": "210112" + }, + { + "label": "沈北新区", + "value": "210113" + }, + { + "label": "于洪区", + "value": "210114" + }, + { + "label": "辽中区", + "value": "210115" + }, + { + "label": "康平县", + "value": "210123" + }, + { + "label": "法库县", + "value": "210124" + }, + { + "label": "新民市", + "value": "210181" + } + ], + [{ + "label": "中山区", + "value": "210202" + }, + { + "label": "西岗区", + "value": "210203" + }, + { + "label": "沙河口区", + "value": "210204" + }, + { + "label": "甘井子区", + "value": "210211" + }, + { + "label": "旅顺口区", + "value": "210212" + }, + { + "label": "金州区", + "value": "210213" + }, + { + "label": "普兰店区", + "value": "210214" + }, + { + "label": "长海县", + "value": "210224" + }, + { + "label": "瓦房店市", + "value": "210281" + }, + { + "label": "庄河市", + "value": "210283" + } + ], + [{ + "label": "铁东区", + "value": "210302" + }, + { + "label": "铁西区", + "value": "210303" + }, + { + "label": "立山区", + "value": "210304" + }, + { + "label": "千山区", + "value": "210311" + }, + { + "label": "台安县", + "value": "210321" + }, + { + "label": "岫岩满族自治县", + "value": "210323" + }, + { + "label": "海城市", + "value": "210381" + } + ], + [{ + "label": "新抚区", + "value": "210402" + }, + { + "label": "东洲区", + "value": "210403" + }, + { + "label": "望花区", + "value": "210404" + }, + { + "label": "顺城区", + "value": "210411" + }, + { + "label": "抚顺县", + "value": "210421" + }, + { + "label": "新宾满族自治县", + "value": "210422" + }, + { + "label": "清原满族自治县", + "value": "210423" + } + ], + [{ + "label": "平山区", + "value": "210502" + }, + { + "label": "溪湖区", + "value": "210503" + }, + { + "label": "明山区", + "value": "210504" + }, + { + "label": "南芬区", + "value": "210505" + }, + { + "label": "本溪满族自治县", + "value": "210521" + }, + { + "label": "桓仁满族自治县", + "value": "210522" + } + ], + [{ + "label": "元宝区", + "value": "210602" + }, + { + "label": "振兴区", + "value": "210603" + }, + { + "label": "振安区", + "value": "210604" + }, + { + "label": "宽甸满族自治县", + "value": "210624" + }, + { + "label": "东港市", + "value": "210681" + }, + { + "label": "凤城市", + "value": "210682" + } + ], + [{ + "label": "古塔区", + "value": "210702" + }, + { + "label": "凌河区", + "value": "210703" + }, + { + "label": "太和区", + "value": "210711" + }, + { + "label": "黑山县", + "value": "210726" + }, + { + "label": "义县", + "value": "210727" + }, + { + "label": "凌海市", + "value": "210781" + }, + { + "label": "北镇市", + "value": "210782" + } + ], + [{ + "label": "站前区", + "value": "210802" + }, + { + "label": "西市区", + "value": "210803" + }, + { + "label": "鲅鱼圈区", + "value": "210804" + }, + { + "label": "老边区", + "value": "210811" + }, + { + "label": "盖州市", + "value": "210881" + }, + { + "label": "大石桥市", + "value": "210882" + } + ], + [{ + "label": "海州区", + "value": "210902" + }, + { + "label": "新邱区", + "value": "210903" + }, + { + "label": "太平区", + "value": "210904" + }, + { + "label": "清河门区", + "value": "210905" + }, + { + "label": "细河区", + "value": "210911" + }, + { + "label": "阜新蒙古族自治县", + "value": "210921" + }, + { + "label": "彰武县", + "value": "210922" + } + ], + [{ + "label": "白塔区", + "value": "211002" + }, + { + "label": "文圣区", + "value": "211003" + }, + { + "label": "宏伟区", + "value": "211004" + }, + { + "label": "弓长岭区", + "value": "211005" + }, + { + "label": "太子河区", + "value": "211011" + }, + { + "label": "辽阳县", + "value": "211021" + }, + { + "label": "灯塔市", + "value": "211081" + } + ], + [{ + "label": "双台子区", + "value": "211102" + }, + { + "label": "兴隆台区", + "value": "211103" + }, + { + "label": "大洼区", + "value": "211104" + }, + { + "label": "盘山县", + "value": "211122" + } + ], + [{ + "label": "银州区", + "value": "211202" + }, + { + "label": "清河区", + "value": "211204" + }, + { + "label": "铁岭县", + "value": "211221" + }, + { + "label": "西丰县", + "value": "211223" + }, + { + "label": "昌图县", + "value": "211224" + }, + { + "label": "调兵山市", + "value": "211281" + }, + { + "label": "开原市", + "value": "211282" + } + ], + [{ + "label": "双塔区", + "value": "211302" + }, + { + "label": "龙城区", + "value": "211303" + }, + { + "label": "朝阳县", + "value": "211321" + }, + { + "label": "建平县", + "value": "211322" + }, + { + "label": "喀喇沁左翼蒙古族自治县", + "value": "211324" + }, + { + "label": "北票市", + "value": "211381" + }, + { + "label": "凌源市", + "value": "211382" + } + ], + [{ + "label": "连山区", + "value": "211402" + }, + { + "label": "龙港区", + "value": "211403" + }, + { + "label": "南票区", + "value": "211404" + }, + { + "label": "绥中县", + "value": "211421" + }, + { + "label": "建昌县", + "value": "211422" + }, + { + "label": "兴城市", + "value": "211481" + } + ] + ], + [ + [{ + "label": "南关区", + "value": "220102" + }, + { + "label": "宽城区", + "value": "220103" + }, + { + "label": "朝阳区", + "value": "220104" + }, + { + "label": "二道区", + "value": "220105" + }, + { + "label": "绿园区", + "value": "220106" + }, + { + "label": "双阳区", + "value": "220112" + }, + { + "label": "九台区", + "value": "220113" + }, + { + "label": "农安县", + "value": "220122" + }, + { + "label": "长春经济技术开发区", + "value": "220171" + }, + { + "label": "长春净月高新技术产业开发区", + "value": "220172" + }, + { + "label": "长春高新技术产业开发区", + "value": "220173" + }, + { + "label": "长春汽车经济技术开发区", + "value": "220174" + }, + { + "label": "榆树市", + "value": "220182" + }, + { + "label": "德惠市", + "value": "220183" + } + ], + [{ + "label": "昌邑区", + "value": "220202" + }, + { + "label": "龙潭区", + "value": "220203" + }, + { + "label": "船营区", + "value": "220204" + }, + { + "label": "丰满区", + "value": "220211" + }, + { + "label": "永吉县", + "value": "220221" + }, + { + "label": "吉林经济开发区", + "value": "220271" + }, + { + "label": "吉林高新技术产业开发区", + "value": "220272" + }, + { + "label": "吉林中国新加坡食品区", + "value": "220273" + }, + { + "label": "蛟河市", + "value": "220281" + }, + { + "label": "桦甸市", + "value": "220282" + }, + { + "label": "舒兰市", + "value": "220283" + }, + { + "label": "磐石市", + "value": "220284" + } + ], + [{ + "label": "铁西区", + "value": "220302" + }, + { + "label": "铁东区", + "value": "220303" + }, + { + "label": "梨树县", + "value": "220322" + }, + { + "label": "伊通满族自治县", + "value": "220323" + }, + { + "label": "公主岭市", + "value": "220381" + }, + { + "label": "双辽市", + "value": "220382" + } + ], + [{ + "label": "龙山区", + "value": "220402" + }, + { + "label": "西安区", + "value": "220403" + }, + { + "label": "东丰县", + "value": "220421" + }, + { + "label": "东辽县", + "value": "220422" + } + ], + [{ + "label": "东昌区", + "value": "220502" + }, + { + "label": "二道江区", + "value": "220503" + }, + { + "label": "通化县", + "value": "220521" + }, + { + "label": "辉南县", + "value": "220523" + }, + { + "label": "柳河县", + "value": "220524" + }, + { + "label": "梅河口市", + "value": "220581" + }, + { + "label": "集安市", + "value": "220582" + } + ], + [{ + "label": "浑江区", + "value": "220602" + }, + { + "label": "江源区", + "value": "220605" + }, + { + "label": "抚松县", + "value": "220621" + }, + { + "label": "靖宇县", + "value": "220622" + }, + { + "label": "长白朝鲜族自治县", + "value": "220623" + }, + { + "label": "临江市", + "value": "220681" + } + ], + [{ + "label": "宁江区", + "value": "220702" + }, + { + "label": "前郭尔罗斯蒙古族自治县", + "value": "220721" + }, + { + "label": "长岭县", + "value": "220722" + }, + { + "label": "乾安县", + "value": "220723" + }, + { + "label": "吉林松原经济开发区", + "value": "220771" + }, + { + "label": "扶余市", + "value": "220781" + } + ], + [{ + "label": "洮北区", + "value": "220802" + }, + { + "label": "镇赉县", + "value": "220821" + }, + { + "label": "通榆县", + "value": "220822" + }, + { + "label": "吉林白城经济开发区", + "value": "220871" + }, + { + "label": "洮南市", + "value": "220881" + }, + { + "label": "大安市", + "value": "220882" + } + ], + [{ + "label": "延吉市", + "value": "222401" + }, + { + "label": "图们市", + "value": "222402" + }, + { + "label": "敦化市", + "value": "222403" + }, + { + "label": "珲春市", + "value": "222404" + }, + { + "label": "龙井市", + "value": "222405" + }, + { + "label": "和龙市", + "value": "222406" + }, + { + "label": "汪清县", + "value": "222424" + }, + { + "label": "安图县", + "value": "222426" + } + ] + ], + [ + [{ + "label": "道里区", + "value": "230102" + }, + { + "label": "南岗区", + "value": "230103" + }, + { + "label": "道外区", + "value": "230104" + }, + { + "label": "平房区", + "value": "230108" + }, + { + "label": "松北区", + "value": "230109" + }, + { + "label": "香坊区", + "value": "230110" + }, + { + "label": "呼兰区", + "value": "230111" + }, + { + "label": "阿城区", + "value": "230112" + }, + { + "label": "双城区", + "value": "230113" + }, + { + "label": "依兰县", + "value": "230123" + }, + { + "label": "方正县", + "value": "230124" + }, + { + "label": "宾县", + "value": "230125" + }, + { + "label": "巴彦县", + "value": "230126" + }, + { + "label": "木兰县", + "value": "230127" + }, + { + "label": "通河县", + "value": "230128" + }, + { + "label": "延寿县", + "value": "230129" + }, + { + "label": "尚志市", + "value": "230183" + }, + { + "label": "五常市", + "value": "230184" + } + ], + [{ + "label": "龙沙区", + "value": "230202" + }, + { + "label": "建华区", + "value": "230203" + }, + { + "label": "铁锋区", + "value": "230204" + }, + { + "label": "昂昂溪区", + "value": "230205" + }, + { + "label": "富拉尔基区", + "value": "230206" + }, + { + "label": "碾子山区", + "value": "230207" + }, + { + "label": "梅里斯达斡尔族区", + "value": "230208" + }, + { + "label": "龙江县", + "value": "230221" + }, + { + "label": "依安县", + "value": "230223" + }, + { + "label": "泰来县", + "value": "230224" + }, + { + "label": "甘南县", + "value": "230225" + }, + { + "label": "富裕县", + "value": "230227" + }, + { + "label": "克山县", + "value": "230229" + }, + { + "label": "克东县", + "value": "230230" + }, + { + "label": "拜泉县", + "value": "230231" + }, + { + "label": "讷河市", + "value": "230281" + } + ], + [{ + "label": "鸡冠区", + "value": "230302" + }, + { + "label": "恒山区", + "value": "230303" + }, + { + "label": "滴道区", + "value": "230304" + }, + { + "label": "梨树区", + "value": "230305" + }, + { + "label": "城子河区", + "value": "230306" + }, + { + "label": "麻山区", + "value": "230307" + }, + { + "label": "鸡东县", + "value": "230321" + }, + { + "label": "虎林市", + "value": "230381" + }, + { + "label": "密山市", + "value": "230382" + } + ], + [{ + "label": "向阳区", + "value": "230402" + }, + { + "label": "工农区", + "value": "230403" + }, + { + "label": "南山区", + "value": "230404" + }, + { + "label": "兴安区", + "value": "230405" + }, + { + "label": "东山区", + "value": "230406" + }, + { + "label": "兴山区", + "value": "230407" + }, + { + "label": "萝北县", + "value": "230421" + }, + { + "label": "绥滨县", + "value": "230422" + } + ], + [{ + "label": "尖山区", + "value": "230502" + }, + { + "label": "岭东区", + "value": "230503" + }, + { + "label": "四方台区", + "value": "230505" + }, + { + "label": "宝山区", + "value": "230506" + }, + { + "label": "集贤县", + "value": "230521" + }, + { + "label": "友谊县", + "value": "230522" + }, + { + "label": "宝清县", + "value": "230523" + }, + { + "label": "饶河县", + "value": "230524" + } + ], + [{ + "label": "萨尔图区", + "value": "230602" + }, + { + "label": "龙凤区", + "value": "230603" + }, + { + "label": "让胡路区", + "value": "230604" + }, + { + "label": "红岗区", + "value": "230605" + }, + { + "label": "大同区", + "value": "230606" + }, + { + "label": "肇州县", + "value": "230621" + }, + { + "label": "肇源县", + "value": "230622" + }, + { + "label": "林甸县", + "value": "230623" + }, + { + "label": "杜尔伯特蒙古族自治县", + "value": "230624" + }, + { + "label": "大庆高新技术产业开发区", + "value": "230671" + } + ], + [{ + "label": "伊春区", + "value": "230702" + }, + { + "label": "南岔区", + "value": "230703" + }, + { + "label": "友好区", + "value": "230704" + }, + { + "label": "西林区", + "value": "230705" + }, + { + "label": "翠峦区", + "value": "230706" + }, + { + "label": "新青区", + "value": "230707" + }, + { + "label": "美溪区", + "value": "230708" + }, + { + "label": "金山屯区", + "value": "230709" + }, + { + "label": "五营区", + "value": "230710" + }, + { + "label": "乌马河区", + "value": "230711" + }, + { + "label": "汤旺河区", + "value": "230712" + }, + { + "label": "带岭区", + "value": "230713" + }, + { + "label": "乌伊岭区", + "value": "230714" + }, + { + "label": "红星区", + "value": "230715" + }, + { + "label": "上甘岭区", + "value": "230716" + }, + { + "label": "嘉荫县", + "value": "230722" + }, + { + "label": "铁力市", + "value": "230781" + } + ], + [{ + "label": "向阳区", + "value": "230803" + }, + { + "label": "前进区", + "value": "230804" + }, + { + "label": "东风区", + "value": "230805" + }, + { + "label": "郊区", + "value": "230811" + }, + { + "label": "桦南县", + "value": "230822" + }, + { + "label": "桦川县", + "value": "230826" + }, + { + "label": "汤原县", + "value": "230828" + }, + { + "label": "同江市", + "value": "230881" + }, + { + "label": "富锦市", + "value": "230882" + }, + { + "label": "抚远市", + "value": "230883" + } + ], + [{ + "label": "新兴区", + "value": "230902" + }, + { + "label": "桃山区", + "value": "230903" + }, + { + "label": "茄子河区", + "value": "230904" + }, + { + "label": "勃利县", + "value": "230921" + } + ], + [{ + "label": "东安区", + "value": "231002" + }, + { + "label": "阳明区", + "value": "231003" + }, + { + "label": "爱民区", + "value": "231004" + }, + { + "label": "西安区", + "value": "231005" + }, + { + "label": "林口县", + "value": "231025" + }, + { + "label": "牡丹江经济技术开发区", + "value": "231071" + }, + { + "label": "绥芬河市", + "value": "231081" + }, + { + "label": "海林市", + "value": "231083" + }, + { + "label": "宁安市", + "value": "231084" + }, + { + "label": "穆棱市", + "value": "231085" + }, + { + "label": "东宁市", + "value": "231086" + } + ], + [{ + "label": "爱辉区", + "value": "231102" + }, + { + "label": "嫩江县", + "value": "231121" + }, + { + "label": "逊克县", + "value": "231123" + }, + { + "label": "孙吴县", + "value": "231124" + }, + { + "label": "北安市", + "value": "231181" + }, + { + "label": "五大连池市", + "value": "231182" + } + ], + [{ + "label": "北林区", + "value": "231202" + }, + { + "label": "望奎县", + "value": "231221" + }, + { + "label": "兰西县", + "value": "231222" + }, + { + "label": "青冈县", + "value": "231223" + }, + { + "label": "庆安县", + "value": "231224" + }, + { + "label": "明水县", + "value": "231225" + }, + { + "label": "绥棱县", + "value": "231226" + }, + { + "label": "安达市", + "value": "231281" + }, + { + "label": "肇东市", + "value": "231282" + }, + { + "label": "海伦市", + "value": "231283" + } + ], + [{ + "label": "加格达奇区", + "value": "232701" + }, + { + "label": "松岭区", + "value": "232702" + }, + { + "label": "新林区", + "value": "232703" + }, + { + "label": "呼中区", + "value": "232704" + }, + { + "label": "呼玛县", + "value": "232721" + }, + { + "label": "塔河县", + "value": "232722" + }, + { + "label": "漠河县", + "value": "232723" + } + ] + ], + [ + [{ + "label": "黄浦区", + "value": "310101" + }, + { + "label": "徐汇区", + "value": "310104" + }, + { + "label": "长宁区", + "value": "310105" + }, + { + "label": "静安区", + "value": "310106" + }, + { + "label": "普陀区", + "value": "310107" + }, + { + "label": "虹口区", + "value": "310109" + }, + { + "label": "杨浦区", + "value": "310110" + }, + { + "label": "闵行区", + "value": "310112" + }, + { + "label": "宝山区", + "value": "310113" + }, + { + "label": "嘉定区", + "value": "310114" + }, + { + "label": "浦东新区", + "value": "310115" + }, + { + "label": "金山区", + "value": "310116" + }, + { + "label": "松江区", + "value": "310117" + }, + { + "label": "青浦区", + "value": "310118" + }, + { + "label": "奉贤区", + "value": "310120" + }, + { + "label": "崇明区", + "value": "310151" + } + ] + ], + [ + [{ + "label": "玄武区", + "value": "320102" + }, + { + "label": "秦淮区", + "value": "320104" + }, + { + "label": "建邺区", + "value": "320105" + }, + { + "label": "鼓楼区", + "value": "320106" + }, + { + "label": "浦口区", + "value": "320111" + }, + { + "label": "栖霞区", + "value": "320113" + }, + { + "label": "雨花台区", + "value": "320114" + }, + { + "label": "江宁区", + "value": "320115" + }, + { + "label": "六合区", + "value": "320116" + }, + { + "label": "溧水区", + "value": "320117" + }, + { + "label": "高淳区", + "value": "320118" + } + ], + [{ + "label": "锡山区", + "value": "320205" + }, + { + "label": "惠山区", + "value": "320206" + }, + { + "label": "滨湖区", + "value": "320211" + }, + { + "label": "梁溪区", + "value": "320213" + }, + { + "label": "新吴区", + "value": "320214" + }, + { + "label": "江阴市", + "value": "320281" + }, + { + "label": "宜兴市", + "value": "320282" + } + ], + [{ + "label": "鼓楼区", + "value": "320302" + }, + { + "label": "云龙区", + "value": "320303" + }, + { + "label": "贾汪区", + "value": "320305" + }, + { + "label": "泉山区", + "value": "320311" + }, + { + "label": "铜山区", + "value": "320312" + }, + { + "label": "丰县", + "value": "320321" + }, + { + "label": "沛县", + "value": "320322" + }, + { + "label": "睢宁县", + "value": "320324" + }, + { + "label": "徐州经济技术开发区", + "value": "320371" + }, + { + "label": "新沂市", + "value": "320381" + }, + { + "label": "邳州市", + "value": "320382" + } + ], + [{ + "label": "天宁区", + "value": "320402" + }, + { + "label": "钟楼区", + "value": "320404" + }, + { + "label": "新北区", + "value": "320411" + }, + { + "label": "武进区", + "value": "320412" + }, + { + "label": "金坛区", + "value": "320413" + }, + { + "label": "溧阳市", + "value": "320481" + } + ], + [{ + "label": "虎丘区", + "value": "320505" + }, + { + "label": "吴中区", + "value": "320506" + }, + { + "label": "相城区", + "value": "320507" + }, + { + "label": "姑苏区", + "value": "320508" + }, + { + "label": "吴江区", + "value": "320509" + }, + { + "label": "苏州工业园区", + "value": "320571" + }, + { + "label": "常熟市", + "value": "320581" + }, + { + "label": "张家港市", + "value": "320582" + }, + { + "label": "昆山市", + "value": "320583" + }, + { + "label": "太仓市", + "value": "320585" + } + ], + [{ + "label": "崇川区", + "value": "320602" + }, + { + "label": "港闸区", + "value": "320611" + }, + { + "label": "通州区", + "value": "320612" + }, + { + "label": "海安县", + "value": "320621" + }, + { + "label": "如东县", + "value": "320623" + }, + { + "label": "南通经济技术开发区", + "value": "320671" + }, + { + "label": "启东市", + "value": "320681" + }, + { + "label": "如皋市", + "value": "320682" + }, + { + "label": "海门市", + "value": "320684" + } + ], + [{ + "label": "连云区", + "value": "320703" + }, + { + "label": "海州区", + "value": "320706" + }, + { + "label": "赣榆区", + "value": "320707" + }, + { + "label": "东海县", + "value": "320722" + }, + { + "label": "灌云县", + "value": "320723" + }, + { + "label": "灌南县", + "value": "320724" + }, + { + "label": "连云港经济技术开发区", + "value": "320771" + }, + { + "label": "连云港高新技术产业开发区", + "value": "320772" + } + ], + [{ + "label": "淮安区", + "value": "320803" + }, + { + "label": "淮阴区", + "value": "320804" + }, + { + "label": "清江浦区", + "value": "320812" + }, + { + "label": "洪泽区", + "value": "320813" + }, + { + "label": "涟水县", + "value": "320826" + }, + { + "label": "盱眙县", + "value": "320830" + }, + { + "label": "金湖县", + "value": "320831" + }, + { + "label": "淮安经济技术开发区", + "value": "320871" + } + ], + [{ + "label": "亭湖区", + "value": "320902" + }, + { + "label": "盐都区", + "value": "320903" + }, + { + "label": "大丰区", + "value": "320904" + }, + { + "label": "响水县", + "value": "320921" + }, + { + "label": "滨海县", + "value": "320922" + }, + { + "label": "阜宁县", + "value": "320923" + }, + { + "label": "射阳县", + "value": "320924" + }, + { + "label": "建湖县", + "value": "320925" + }, + { + "label": "盐城经济技术开发区", + "value": "320971" + }, + { + "label": "东台市", + "value": "320981" + } + ], + [{ + "label": "广陵区", + "value": "321002" + }, + { + "label": "邗江区", + "value": "321003" + }, + { + "label": "江都区", + "value": "321012" + }, + { + "label": "宝应县", + "value": "321023" + }, + { + "label": "扬州经济技术开发区", + "value": "321071" + }, + { + "label": "仪征市", + "value": "321081" + }, + { + "label": "高邮市", + "value": "321084" + } + ], + [{ + "label": "京口区", + "value": "321102" + }, + { + "label": "润州区", + "value": "321111" + }, + { + "label": "丹徒区", + "value": "321112" + }, + { + "label": "镇江新区", + "value": "321171" + }, + { + "label": "丹阳市", + "value": "321181" + }, + { + "label": "扬中市", + "value": "321182" + }, + { + "label": "句容市", + "value": "321183" + } + ], + [{ + "label": "海陵区", + "value": "321202" + }, + { + "label": "高港区", + "value": "321203" + }, + { + "label": "姜堰区", + "value": "321204" + }, + { + "label": "泰州医药高新技术产业开发区", + "value": "321271" + }, + { + "label": "兴化市", + "value": "321281" + }, + { + "label": "靖江市", + "value": "321282" + }, + { + "label": "泰兴市", + "value": "321283" + } + ], + [{ + "label": "宿城区", + "value": "321302" + }, + { + "label": "宿豫区", + "value": "321311" + }, + { + "label": "沭阳县", + "value": "321322" + }, + { + "label": "泗阳县", + "value": "321323" + }, + { + "label": "泗洪县", + "value": "321324" + }, + { + "label": "宿迁经济技术开发区", + "value": "321371" + } + ] + ], + [ + [{ + "label": "上城区", + "value": "330102" + }, + { + "label": "下城区", + "value": "330103" + }, + { + "label": "江干区", + "value": "330104" + }, + { + "label": "拱墅区", + "value": "330105" + }, + { + "label": "西湖区", + "value": "330106" + }, + { + "label": "滨江区", + "value": "330108" + }, + { + "label": "萧山区", + "value": "330109" + }, + { + "label": "余杭区", + "value": "330110" + }, + { + "label": "富阳区", + "value": "330111" + }, + { + "label": "临安区", + "value": "330112" + }, + { + "label": "桐庐县", + "value": "330122" + }, + { + "label": "淳安县", + "value": "330127" + }, + { + "label": "建德市", + "value": "330182" + } + ], + [{ + "label": "海曙区", + "value": "330203" + }, + { + "label": "江北区", + "value": "330205" + }, + { + "label": "北仑区", + "value": "330206" + }, + { + "label": "镇海区", + "value": "330211" + }, + { + "label": "鄞州区", + "value": "330212" + }, + { + "label": "奉化区", + "value": "330213" + }, + { + "label": "象山县", + "value": "330225" + }, + { + "label": "宁海县", + "value": "330226" + }, + { + "label": "余姚市", + "value": "330281" + }, + { + "label": "慈溪市", + "value": "330282" + } + ], + [{ + "label": "鹿城区", + "value": "330302" + }, + { + "label": "龙湾区", + "value": "330303" + }, + { + "label": "瓯海区", + "value": "330304" + }, + { + "label": "洞头区", + "value": "330305" + }, + { + "label": "永嘉县", + "value": "330324" + }, + { + "label": "平阳县", + "value": "330326" + }, + { + "label": "苍南县", + "value": "330327" + }, + { + "label": "文成县", + "value": "330328" + }, + { + "label": "泰顺县", + "value": "330329" + }, + { + "label": "温州经济技术开发区", + "value": "330371" + }, + { + "label": "瑞安市", + "value": "330381" + }, + { + "label": "乐清市", + "value": "330382" + } + ], + [{ + "label": "南湖区", + "value": "330402" + }, + { + "label": "秀洲区", + "value": "330411" + }, + { + "label": "嘉善县", + "value": "330421" + }, + { + "label": "海盐县", + "value": "330424" + }, + { + "label": "海宁市", + "value": "330481" + }, + { + "label": "平湖市", + "value": "330482" + }, + { + "label": "桐乡市", + "value": "330483" + } + ], + [{ + "label": "吴兴区", + "value": "330502" + }, + { + "label": "南浔区", + "value": "330503" + }, + { + "label": "德清县", + "value": "330521" + }, + { + "label": "长兴县", + "value": "330522" + }, + { + "label": "安吉县", + "value": "330523" + } + ], + [{ + "label": "越城区", + "value": "330602" + }, + { + "label": "柯桥区", + "value": "330603" + }, + { + "label": "上虞区", + "value": "330604" + }, + { + "label": "新昌县", + "value": "330624" + }, + { + "label": "诸暨市", + "value": "330681" + }, + { + "label": "嵊州市", + "value": "330683" + } + ], + [{ + "label": "婺城区", + "value": "330702" + }, + { + "label": "金东区", + "value": "330703" + }, + { + "label": "武义县", + "value": "330723" + }, + { + "label": "浦江县", + "value": "330726" + }, + { + "label": "磐安县", + "value": "330727" + }, + { + "label": "兰溪市", + "value": "330781" + }, + { + "label": "义乌市", + "value": "330782" + }, + { + "label": "东阳市", + "value": "330783" + }, + { + "label": "永康市", + "value": "330784" + } + ], + [{ + "label": "柯城区", + "value": "330802" + }, + { + "label": "衢江区", + "value": "330803" + }, + { + "label": "常山县", + "value": "330822" + }, + { + "label": "开化县", + "value": "330824" + }, + { + "label": "龙游县", + "value": "330825" + }, + { + "label": "江山市", + "value": "330881" + } + ], + [{ + "label": "定海区", + "value": "330902" + }, + { + "label": "普陀区", + "value": "330903" + }, + { + "label": "岱山县", + "value": "330921" + }, + { + "label": "嵊泗县", + "value": "330922" + } + ], + [{ + "label": "椒江区", + "value": "331002" + }, + { + "label": "黄岩区", + "value": "331003" + }, + { + "label": "路桥区", + "value": "331004" + }, + { + "label": "三门县", + "value": "331022" + }, + { + "label": "天台县", + "value": "331023" + }, + { + "label": "仙居县", + "value": "331024" + }, + { + "label": "温岭市", + "value": "331081" + }, + { + "label": "临海市", + "value": "331082" + }, + { + "label": "玉环市", + "value": "331083" + } + ], + [{ + "label": "莲都区", + "value": "331102" + }, + { + "label": "青田县", + "value": "331121" + }, + { + "label": "缙云县", + "value": "331122" + }, + { + "label": "遂昌县", + "value": "331123" + }, + { + "label": "松阳县", + "value": "331124" + }, + { + "label": "云和县", + "value": "331125" + }, + { + "label": "庆元县", + "value": "331126" + }, + { + "label": "景宁畲族自治县", + "value": "331127" + }, + { + "label": "龙泉市", + "value": "331181" + } + ] + ], + [ + [{ + "label": "瑶海区", + "value": "340102" + }, + { + "label": "庐阳区", + "value": "340103" + }, + { + "label": "蜀山区", + "value": "340104" + }, + { + "label": "包河区", + "value": "340111" + }, + { + "label": "长丰县", + "value": "340121" + }, + { + "label": "肥东县", + "value": "340122" + }, + { + "label": "肥西县", + "value": "340123" + }, + { + "label": "庐江县", + "value": "340124" + }, + { + "label": "合肥高新技术产业开发区", + "value": "340171" + }, + { + "label": "合肥经济技术开发区", + "value": "340172" + }, + { + "label": "合肥新站高新技术产业开发区", + "value": "340173" + }, + { + "label": "巢湖市", + "value": "340181" + } + ], + [{ + "label": "镜湖区", + "value": "340202" + }, + { + "label": "弋江区", + "value": "340203" + }, + { + "label": "鸠江区", + "value": "340207" + }, + { + "label": "三山区", + "value": "340208" + }, + { + "label": "芜湖县", + "value": "340221" + }, + { + "label": "繁昌县", + "value": "340222" + }, + { + "label": "南陵县", + "value": "340223" + }, + { + "label": "无为县", + "value": "340225" + }, + { + "label": "芜湖经济技术开发区", + "value": "340271" + }, + { + "label": "安徽芜湖长江大桥经济开发区", + "value": "340272" + } + ], + [{ + "label": "龙子湖区", + "value": "340302" + }, + { + "label": "蚌山区", + "value": "340303" + }, + { + "label": "禹会区", + "value": "340304" + }, + { + "label": "淮上区", + "value": "340311" + }, + { + "label": "怀远县", + "value": "340321" + }, + { + "label": "五河县", + "value": "340322" + }, + { + "label": "固镇县", + "value": "340323" + }, + { + "label": "蚌埠市高新技术开发区", + "value": "340371" + }, + { + "label": "蚌埠市经济开发区", + "value": "340372" + } + ], + [{ + "label": "大通区", + "value": "340402" + }, + { + "label": "田家庵区", + "value": "340403" + }, + { + "label": "谢家集区", + "value": "340404" + }, + { + "label": "八公山区", + "value": "340405" + }, + { + "label": "潘集区", + "value": "340406" + }, + { + "label": "凤台县", + "value": "340421" + }, + { + "label": "寿县", + "value": "340422" + } + ], + [{ + "label": "花山区", + "value": "340503" + }, + { + "label": "雨山区", + "value": "340504" + }, + { + "label": "博望区", + "value": "340506" + }, + { + "label": "当涂县", + "value": "340521" + }, + { + "label": "含山县", + "value": "340522" + }, + { + "label": "和县", + "value": "340523" + } + ], + [{ + "label": "杜集区", + "value": "340602" + }, + { + "label": "相山区", + "value": "340603" + }, + { + "label": "烈山区", + "value": "340604" + }, + { + "label": "濉溪县", + "value": "340621" + } + ], + [{ + "label": "铜官区", + "value": "340705" + }, + { + "label": "义安区", + "value": "340706" + }, + { + "label": "郊区", + "value": "340711" + }, + { + "label": "枞阳县", + "value": "340722" + } + ], + [{ + "label": "迎江区", + "value": "340802" + }, + { + "label": "大观区", + "value": "340803" + }, + { + "label": "宜秀区", + "value": "340811" + }, + { + "label": "怀宁县", + "value": "340822" + }, + { + "label": "潜山县", + "value": "340824" + }, + { + "label": "太湖县", + "value": "340825" + }, + { + "label": "宿松县", + "value": "340826" + }, + { + "label": "望江县", + "value": "340827" + }, + { + "label": "岳西县", + "value": "340828" + }, + { + "label": "安徽安庆经济开发区", + "value": "340871" + }, + { + "label": "桐城市", + "value": "340881" + } + ], + [{ + "label": "屯溪区", + "value": "341002" + }, + { + "label": "黄山区", + "value": "341003" + }, + { + "label": "徽州区", + "value": "341004" + }, + { + "label": "歙县", + "value": "341021" + }, + { + "label": "休宁县", + "value": "341022" + }, + { + "label": "黟县", + "value": "341023" + }, + { + "label": "祁门县", + "value": "341024" + } + ], + [{ + "label": "琅琊区", + "value": "341102" + }, + { + "label": "南谯区", + "value": "341103" + }, + { + "label": "来安县", + "value": "341122" + }, + { + "label": "全椒县", + "value": "341124" + }, + { + "label": "定远县", + "value": "341125" + }, + { + "label": "凤阳县", + "value": "341126" + }, + { + "label": "苏滁现代产业园", + "value": "341171" + }, + { + "label": "滁州经济技术开发区", + "value": "341172" + }, + { + "label": "天长市", + "value": "341181" + }, + { + "label": "明光市", + "value": "341182" + } + ], + [{ + "label": "颍州区", + "value": "341202" + }, + { + "label": "颍东区", + "value": "341203" + }, + { + "label": "颍泉区", + "value": "341204" + }, + { + "label": "临泉县", + "value": "341221" + }, + { + "label": "太和县", + "value": "341222" + }, + { + "label": "阜南县", + "value": "341225" + }, + { + "label": "颍上县", + "value": "341226" + }, + { + "label": "阜阳合肥现代产业园区", + "value": "341271" + }, + { + "label": "阜阳经济技术开发区", + "value": "341272" + }, + { + "label": "界首市", + "value": "341282" + } + ], + [{ + "label": "埇桥区", + "value": "341302" + }, + { + "label": "砀山县", + "value": "341321" + }, + { + "label": "萧县", + "value": "341322" + }, + { + "label": "灵璧县", + "value": "341323" + }, + { + "label": "泗县", + "value": "341324" + }, + { + "label": "宿州马鞍山现代产业园区", + "value": "341371" + }, + { + "label": "宿州经济技术开发区", + "value": "341372" + } + ], + [{ + "label": "金安区", + "value": "341502" + }, + { + "label": "裕安区", + "value": "341503" + }, + { + "label": "叶集区", + "value": "341504" + }, + { + "label": "霍邱县", + "value": "341522" + }, + { + "label": "舒城县", + "value": "341523" + }, + { + "label": "金寨县", + "value": "341524" + }, + { + "label": "霍山县", + "value": "341525" + } + ], + [{ + "label": "谯城区", + "value": "341602" + }, + { + "label": "涡阳县", + "value": "341621" + }, + { + "label": "蒙城县", + "value": "341622" + }, + { + "label": "利辛县", + "value": "341623" + } + ], + [{ + "label": "贵池区", + "value": "341702" + }, + { + "label": "东至县", + "value": "341721" + }, + { + "label": "石台县", + "value": "341722" + }, + { + "label": "青阳县", + "value": "341723" + } + ], + [{ + "label": "宣州区", + "value": "341802" + }, + { + "label": "郎溪县", + "value": "341821" + }, + { + "label": "广德县", + "value": "341822" + }, + { + "label": "泾县", + "value": "341823" + }, + { + "label": "绩溪县", + "value": "341824" + }, + { + "label": "旌德县", + "value": "341825" + }, + { + "label": "宣城市经济开发区", + "value": "341871" + }, + { + "label": "宁国市", + "value": "341881" + } + ] + ], + [ + [{ + "label": "鼓楼区", + "value": "350102" + }, + { + "label": "台江区", + "value": "350103" + }, + { + "label": "仓山区", + "value": "350104" + }, + { + "label": "马尾区", + "value": "350105" + }, + { + "label": "晋安区", + "value": "350111" + }, + { + "label": "闽侯县", + "value": "350121" + }, + { + "label": "连江县", + "value": "350122" + }, + { + "label": "罗源县", + "value": "350123" + }, + { + "label": "闽清县", + "value": "350124" + }, + { + "label": "永泰县", + "value": "350125" + }, + { + "label": "平潭县", + "value": "350128" + }, + { + "label": "福清市", + "value": "350181" + }, + { + "label": "长乐市", + "value": "350182" + } + ], + [{ + "label": "思明区", + "value": "350203" + }, + { + "label": "海沧区", + "value": "350205" + }, + { + "label": "湖里区", + "value": "350206" + }, + { + "label": "集美区", + "value": "350211" + }, + { + "label": "同安区", + "value": "350212" + }, + { + "label": "翔安区", + "value": "350213" + } + ], + [{ + "label": "城厢区", + "value": "350302" + }, + { + "label": "涵江区", + "value": "350303" + }, + { + "label": "荔城区", + "value": "350304" + }, + { + "label": "秀屿区", + "value": "350305" + }, + { + "label": "仙游县", + "value": "350322" + } + ], + [{ + "label": "梅列区", + "value": "350402" + }, + { + "label": "三元区", + "value": "350403" + }, + { + "label": "明溪县", + "value": "350421" + }, + { + "label": "清流县", + "value": "350423" + }, + { + "label": "宁化县", + "value": "350424" + }, + { + "label": "大田县", + "value": "350425" + }, + { + "label": "尤溪县", + "value": "350426" + }, + { + "label": "沙县", + "value": "350427" + }, + { + "label": "将乐县", + "value": "350428" + }, + { + "label": "泰宁县", + "value": "350429" + }, + { + "label": "建宁县", + "value": "350430" + }, + { + "label": "永安市", + "value": "350481" + } + ], + [{ + "label": "鲤城区", + "value": "350502" + }, + { + "label": "丰泽区", + "value": "350503" + }, + { + "label": "洛江区", + "value": "350504" + }, + { + "label": "泉港区", + "value": "350505" + }, + { + "label": "惠安县", + "value": "350521" + }, + { + "label": "安溪县", + "value": "350524" + }, + { + "label": "永春县", + "value": "350525" + }, + { + "label": "德化县", + "value": "350526" + }, + { + "label": "金门县", + "value": "350527" + }, + { + "label": "石狮市", + "value": "350581" + }, + { + "label": "晋江市", + "value": "350582" + }, + { + "label": "南安市", + "value": "350583" + } + ], + [{ + "label": "芗城区", + "value": "350602" + }, + { + "label": "龙文区", + "value": "350603" + }, + { + "label": "云霄县", + "value": "350622" + }, + { + "label": "漳浦县", + "value": "350623" + }, + { + "label": "诏安县", + "value": "350624" + }, + { + "label": "长泰县", + "value": "350625" + }, + { + "label": "东山县", + "value": "350626" + }, + { + "label": "南靖县", + "value": "350627" + }, + { + "label": "平和县", + "value": "350628" + }, + { + "label": "华安县", + "value": "350629" + }, + { + "label": "龙海市", + "value": "350681" + } + ], + [{ + "label": "延平区", + "value": "350702" + }, + { + "label": "建阳区", + "value": "350703" + }, + { + "label": "顺昌县", + "value": "350721" + }, + { + "label": "浦城县", + "value": "350722" + }, + { + "label": "光泽县", + "value": "350723" + }, + { + "label": "松溪县", + "value": "350724" + }, + { + "label": "政和县", + "value": "350725" + }, + { + "label": "邵武市", + "value": "350781" + }, + { + "label": "武夷山市", + "value": "350782" + }, + { + "label": "建瓯市", + "value": "350783" + } + ], + [{ + "label": "新罗区", + "value": "350802" + }, + { + "label": "永定区", + "value": "350803" + }, + { + "label": "长汀县", + "value": "350821" + }, + { + "label": "上杭县", + "value": "350823" + }, + { + "label": "武平县", + "value": "350824" + }, + { + "label": "连城县", + "value": "350825" + }, + { + "label": "漳平市", + "value": "350881" + } + ], + [{ + "label": "蕉城区", + "value": "350902" + }, + { + "label": "霞浦县", + "value": "350921" + }, + { + "label": "古田县", + "value": "350922" + }, + { + "label": "屏南县", + "value": "350923" + }, + { + "label": "寿宁县", + "value": "350924" + }, + { + "label": "周宁县", + "value": "350925" + }, + { + "label": "柘荣县", + "value": "350926" + }, + { + "label": "福安市", + "value": "350981" + }, + { + "label": "福鼎市", + "value": "350982" + } + ] + ], + [ + [{ + "label": "东湖区", + "value": "360102" + }, + { + "label": "西湖区", + "value": "360103" + }, + { + "label": "青云谱区", + "value": "360104" + }, + { + "label": "湾里区", + "value": "360105" + }, + { + "label": "青山湖区", + "value": "360111" + }, + { + "label": "新建区", + "value": "360112" + }, + { + "label": "南昌县", + "value": "360121" + }, + { + "label": "安义县", + "value": "360123" + }, + { + "label": "进贤县", + "value": "360124" + } + ], + [{ + "label": "昌江区", + "value": "360202" + }, + { + "label": "珠山区", + "value": "360203" + }, + { + "label": "浮梁县", + "value": "360222" + }, + { + "label": "乐平市", + "value": "360281" + } + ], + [{ + "label": "安源区", + "value": "360302" + }, + { + "label": "湘东区", + "value": "360313" + }, + { + "label": "莲花县", + "value": "360321" + }, + { + "label": "上栗县", + "value": "360322" + }, + { + "label": "芦溪县", + "value": "360323" + } + ], + [{ + "label": "濂溪区", + "value": "360402" + }, + { + "label": "浔阳区", + "value": "360403" + }, + { + "label": "柴桑区", + "value": "360404" + }, + { + "label": "武宁县", + "value": "360423" + }, + { + "label": "修水县", + "value": "360424" + }, + { + "label": "永修县", + "value": "360425" + }, + { + "label": "德安县", + "value": "360426" + }, + { + "label": "都昌县", + "value": "360428" + }, + { + "label": "湖口县", + "value": "360429" + }, + { + "label": "彭泽县", + "value": "360430" + }, + { + "label": "瑞昌市", + "value": "360481" + }, + { + "label": "共青城市", + "value": "360482" + }, + { + "label": "庐山市", + "value": "360483" + } + ], + [{ + "label": "渝水区", + "value": "360502" + }, + { + "label": "分宜县", + "value": "360521" + } + ], + [{ + "label": "月湖区", + "value": "360602" + }, + { + "label": "余江县", + "value": "360622" + }, + { + "label": "贵溪市", + "value": "360681" + } + ], + [{ + "label": "章贡区", + "value": "360702" + }, + { + "label": "南康区", + "value": "360703" + }, + { + "label": "赣县区", + "value": "360704" + }, + { + "label": "信丰县", + "value": "360722" + }, + { + "label": "大余县", + "value": "360723" + }, + { + "label": "上犹县", + "value": "360724" + }, + { + "label": "崇义县", + "value": "360725" + }, + { + "label": "安远县", + "value": "360726" + }, + { + "label": "龙南县", + "value": "360727" + }, + { + "label": "定南县", + "value": "360728" + }, + { + "label": "全南县", + "value": "360729" + }, + { + "label": "宁都县", + "value": "360730" + }, + { + "label": "于都县", + "value": "360731" + }, + { + "label": "兴国县", + "value": "360732" + }, + { + "label": "会昌县", + "value": "360733" + }, + { + "label": "寻乌县", + "value": "360734" + }, + { + "label": "石城县", + "value": "360735" + }, + { + "label": "瑞金市", + "value": "360781" + } + ], + [{ + "label": "吉州区", + "value": "360802" + }, + { + "label": "青原区", + "value": "360803" + }, + { + "label": "吉安县", + "value": "360821" + }, + { + "label": "吉水县", + "value": "360822" + }, + { + "label": "峡江县", + "value": "360823" + }, + { + "label": "新干县", + "value": "360824" + }, + { + "label": "永丰县", + "value": "360825" + }, + { + "label": "泰和县", + "value": "360826" + }, + { + "label": "遂川县", + "value": "360827" + }, + { + "label": "万安县", + "value": "360828" + }, + { + "label": "安福县", + "value": "360829" + }, + { + "label": "永新县", + "value": "360830" + }, + { + "label": "井冈山市", + "value": "360881" + } + ], + [{ + "label": "袁州区", + "value": "360902" + }, + { + "label": "奉新县", + "value": "360921" + }, + { + "label": "万载县", + "value": "360922" + }, + { + "label": "上高县", + "value": "360923" + }, + { + "label": "宜丰县", + "value": "360924" + }, + { + "label": "靖安县", + "value": "360925" + }, + { + "label": "铜鼓县", + "value": "360926" + }, + { + "label": "丰城市", + "value": "360981" + }, + { + "label": "樟树市", + "value": "360982" + }, + { + "label": "高安市", + "value": "360983" + } + ], + [{ + "label": "临川区", + "value": "361002" + }, + { + "label": "东乡区", + "value": "361003" + }, + { + "label": "南城县", + "value": "361021" + }, + { + "label": "黎川县", + "value": "361022" + }, + { + "label": "南丰县", + "value": "361023" + }, + { + "label": "崇仁县", + "value": "361024" + }, + { + "label": "乐安县", + "value": "361025" + }, + { + "label": "宜黄县", + "value": "361026" + }, + { + "label": "金溪县", + "value": "361027" + }, + { + "label": "资溪县", + "value": "361028" + }, + { + "label": "广昌县", + "value": "361030" + } + ], + [{ + "label": "信州区", + "value": "361102" + }, + { + "label": "广丰区", + "value": "361103" + }, + { + "label": "上饶县", + "value": "361121" + }, + { + "label": "玉山县", + "value": "361123" + }, + { + "label": "铅山县", + "value": "361124" + }, + { + "label": "横峰县", + "value": "361125" + }, + { + "label": "弋阳县", + "value": "361126" + }, + { + "label": "余干县", + "value": "361127" + }, + { + "label": "鄱阳县", + "value": "361128" + }, + { + "label": "万年县", + "value": "361129" + }, + { + "label": "婺源县", + "value": "361130" + }, + { + "label": "德兴市", + "value": "361181" + } + ] + ], + [ + [{ + "label": "历下区", + "value": "370102" + }, + { + "label": "市中区", + "value": "370103" + }, + { + "label": "槐荫区", + "value": "370104" + }, + { + "label": "天桥区", + "value": "370105" + }, + { + "label": "历城区", + "value": "370112" + }, + { + "label": "长清区", + "value": "370113" + }, + { + "label": "章丘区", + "value": "370114" + }, + { + "label": "平阴县", + "value": "370124" + }, + { + "label": "济阳县", + "value": "370125" + }, + { + "label": "商河县", + "value": "370126" + }, + { + "label": "济南高新技术产业开发区", + "value": "370171" + } + ], + [{ + "label": "市南区", + "value": "370202" + }, + { + "label": "市北区", + "value": "370203" + }, + { + "label": "黄岛区", + "value": "370211" + }, + { + "label": "崂山区", + "value": "370212" + }, + { + "label": "李沧区", + "value": "370213" + }, + { + "label": "城阳区", + "value": "370214" + }, + { + "label": "即墨区", + "value": "370215" + }, + { + "label": "青岛高新技术产业开发区", + "value": "370271" + }, + { + "label": "胶州市", + "value": "370281" + }, + { + "label": "平度市", + "value": "370283" + }, + { + "label": "莱西市", + "value": "370285" + } + ], + [{ + "label": "淄川区", + "value": "370302" + }, + { + "label": "张店区", + "value": "370303" + }, + { + "label": "博山区", + "value": "370304" + }, + { + "label": "临淄区", + "value": "370305" + }, + { + "label": "周村区", + "value": "370306" + }, + { + "label": "桓台县", + "value": "370321" + }, + { + "label": "高青县", + "value": "370322" + }, + { + "label": "沂源县", + "value": "370323" + } + ], + [{ + "label": "市中区", + "value": "370402" + }, + { + "label": "薛城区", + "value": "370403" + }, + { + "label": "峄城区", + "value": "370404" + }, + { + "label": "台儿庄区", + "value": "370405" + }, + { + "label": "山亭区", + "value": "370406" + }, + { + "label": "滕州市", + "value": "370481" + } + ], + [{ + "label": "东营区", + "value": "370502" + }, + { + "label": "河口区", + "value": "370503" + }, + { + "label": "垦利区", + "value": "370505" + }, + { + "label": "利津县", + "value": "370522" + }, + { + "label": "广饶县", + "value": "370523" + }, + { + "label": "东营经济技术开发区", + "value": "370571" + }, + { + "label": "东营港经济开发区", + "value": "370572" + } + ], + [{ + "label": "芝罘区", + "value": "370602" + }, + { + "label": "福山区", + "value": "370611" + }, + { + "label": "牟平区", + "value": "370612" + }, + { + "label": "莱山区", + "value": "370613" + }, + { + "label": "长岛县", + "value": "370634" + }, + { + "label": "烟台高新技术产业开发区", + "value": "370671" + }, + { + "label": "烟台经济技术开发区", + "value": "370672" + }, + { + "label": "龙口市", + "value": "370681" + }, + { + "label": "莱阳市", + "value": "370682" + }, + { + "label": "莱州市", + "value": "370683" + }, + { + "label": "蓬莱市", + "value": "370684" + }, + { + "label": "招远市", + "value": "370685" + }, + { + "label": "栖霞市", + "value": "370686" + }, + { + "label": "海阳市", + "value": "370687" + } + ], + [{ + "label": "潍城区", + "value": "370702" + }, + { + "label": "寒亭区", + "value": "370703" + }, + { + "label": "坊子区", + "value": "370704" + }, + { + "label": "奎文区", + "value": "370705" + }, + { + "label": "临朐县", + "value": "370724" + }, + { + "label": "昌乐县", + "value": "370725" + }, + { + "label": "潍坊滨海经济技术开发区", + "value": "370772" + }, + { + "label": "青州市", + "value": "370781" + }, + { + "label": "诸城市", + "value": "370782" + }, + { + "label": "寿光市", + "value": "370783" + }, + { + "label": "安丘市", + "value": "370784" + }, + { + "label": "高密市", + "value": "370785" + }, + { + "label": "昌邑市", + "value": "370786" + } + ], + [{ + "label": "任城区", + "value": "370811" + }, + { + "label": "兖州区", + "value": "370812" + }, + { + "label": "微山县", + "value": "370826" + }, + { + "label": "鱼台县", + "value": "370827" + }, + { + "label": "金乡县", + "value": "370828" + }, + { + "label": "嘉祥县", + "value": "370829" + }, + { + "label": "汶上县", + "value": "370830" + }, + { + "label": "泗水县", + "value": "370831" + }, + { + "label": "梁山县", + "value": "370832" + }, + { + "label": "济宁高新技术产业开发区", + "value": "370871" + }, + { + "label": "曲阜市", + "value": "370881" + }, + { + "label": "邹城市", + "value": "370883" + } + ], + [{ + "label": "泰山区", + "value": "370902" + }, + { + "label": "岱岳区", + "value": "370911" + }, + { + "label": "宁阳县", + "value": "370921" + }, + { + "label": "东平县", + "value": "370923" + }, + { + "label": "新泰市", + "value": "370982" + }, + { + "label": "肥城市", + "value": "370983" + } + ], + [{ + "label": "环翠区", + "value": "371002" + }, + { + "label": "文登区", + "value": "371003" + }, + { + "label": "威海火炬高技术产业开发区", + "value": "371071" + }, + { + "label": "威海经济技术开发区", + "value": "371072" + }, + { + "label": "威海临港经济技术开发区", + "value": "371073" + }, + { + "label": "荣成市", + "value": "371082" + }, + { + "label": "乳山市", + "value": "371083" + } + ], + [{ + "label": "东港区", + "value": "371102" + }, + { + "label": "岚山区", + "value": "371103" + }, + { + "label": "五莲县", + "value": "371121" + }, + { + "label": "莒县", + "value": "371122" + }, + { + "label": "日照经济技术开发区", + "value": "371171" + }, + { + "label": "日照国际海洋城", + "value": "371172" + } + ], + [{ + "label": "莱城区", + "value": "371202" + }, + { + "label": "钢城区", + "value": "371203" + } + ], + [{ + "label": "兰山区", + "value": "371302" + }, + { + "label": "罗庄区", + "value": "371311" + }, + { + "label": "河东区", + "value": "371312" + }, + { + "label": "沂南县", + "value": "371321" + }, + { + "label": "郯城县", + "value": "371322" + }, + { + "label": "沂水县", + "value": "371323" + }, + { + "label": "兰陵县", + "value": "371324" + }, + { + "label": "费县", + "value": "371325" + }, + { + "label": "平邑县", + "value": "371326" + }, + { + "label": "莒南县", + "value": "371327" + }, + { + "label": "蒙阴县", + "value": "371328" + }, + { + "label": "临沭县", + "value": "371329" + }, + { + "label": "临沂高新技术产业开发区", + "value": "371371" + }, + { + "label": "临沂经济技术开发区", + "value": "371372" + }, + { + "label": "临沂临港经济开发区", + "value": "371373" + } + ], + [{ + "label": "德城区", + "value": "371402" + }, + { + "label": "陵城区", + "value": "371403" + }, + { + "label": "宁津县", + "value": "371422" + }, + { + "label": "庆云县", + "value": "371423" + }, + { + "label": "临邑县", + "value": "371424" + }, + { + "label": "齐河县", + "value": "371425" + }, + { + "label": "平原县", + "value": "371426" + }, + { + "label": "夏津县", + "value": "371427" + }, + { + "label": "武城县", + "value": "371428" + }, + { + "label": "德州经济技术开发区", + "value": "371471" + }, + { + "label": "德州运河经济开发区", + "value": "371472" + }, + { + "label": "乐陵市", + "value": "371481" + }, + { + "label": "禹城市", + "value": "371482" + } + ], + [{ + "label": "东昌府区", + "value": "371502" + }, + { + "label": "阳谷县", + "value": "371521" + }, + { + "label": "莘县", + "value": "371522" + }, + { + "label": "茌平县", + "value": "371523" + }, + { + "label": "东阿县", + "value": "371524" + }, + { + "label": "冠县", + "value": "371525" + }, + { + "label": "高唐县", + "value": "371526" + }, + { + "label": "临清市", + "value": "371581" + } + ], + [{ + "label": "滨城区", + "value": "371602" + }, + { + "label": "沾化区", + "value": "371603" + }, + { + "label": "惠民县", + "value": "371621" + }, + { + "label": "阳信县", + "value": "371622" + }, + { + "label": "无棣县", + "value": "371623" + }, + { + "label": "博兴县", + "value": "371625" + }, + { + "label": "邹平县", + "value": "371626" + } + ], + [{ + "label": "牡丹区", + "value": "371702" + }, + { + "label": "定陶区", + "value": "371703" + }, + { + "label": "曹县", + "value": "371721" + }, + { + "label": "单县", + "value": "371722" + }, + { + "label": "成武县", + "value": "371723" + }, + { + "label": "巨野县", + "value": "371724" + }, + { + "label": "郓城县", + "value": "371725" + }, + { + "label": "鄄城县", + "value": "371726" + }, + { + "label": "东明县", + "value": "371728" + }, + { + "label": "菏泽经济技术开发区", + "value": "371771" + }, + { + "label": "菏泽高新技术开发区", + "value": "371772" + } + ] + ], + [ + [{ + "label": "中原区", + "value": "410102" + }, + { + "label": "二七区", + "value": "410103" + }, + { + "label": "管城回族区", + "value": "410104" + }, + { + "label": "金水区", + "value": "410105" + }, + { + "label": "上街区", + "value": "410106" + }, + { + "label": "惠济区", + "value": "410108" + }, + { + "label": "中牟县", + "value": "410122" + }, + { + "label": "郑州经济技术开发区", + "value": "410171" + }, + { + "label": "郑州高新技术产业开发区", + "value": "410172" + }, + { + "label": "郑州航空港经济综合实验区", + "value": "410173" + }, + { + "label": "巩义市", + "value": "410181" + }, + { + "label": "荥阳市", + "value": "410182" + }, + { + "label": "新密市", + "value": "410183" + }, + { + "label": "新郑市", + "value": "410184" + }, + { + "label": "登封市", + "value": "410185" + } + ], + [{ + "label": "龙亭区", + "value": "410202" + }, + { + "label": "顺河回族区", + "value": "410203" + }, + { + "label": "鼓楼区", + "value": "410204" + }, + { + "label": "禹王台区", + "value": "410205" + }, + { + "label": "祥符区", + "value": "410212" + }, + { + "label": "杞县", + "value": "410221" + }, + { + "label": "通许县", + "value": "410222" + }, + { + "label": "尉氏县", + "value": "410223" + }, + { + "label": "兰考县", + "value": "410225" + } + ], + [{ + "label": "老城区", + "value": "410302" + }, + { + "label": "西工区", + "value": "410303" + }, + { + "label": "瀍河回族区", + "value": "410304" + }, + { + "label": "涧西区", + "value": "410305" + }, + { + "label": "吉利区", + "value": "410306" + }, + { + "label": "洛龙区", + "value": "410311" + }, + { + "label": "孟津县", + "value": "410322" + }, + { + "label": "新安县", + "value": "410323" + }, + { + "label": "栾川县", + "value": "410324" + }, + { + "label": "嵩县", + "value": "410325" + }, + { + "label": "汝阳县", + "value": "410326" + }, + { + "label": "宜阳县", + "value": "410327" + }, + { + "label": "洛宁县", + "value": "410328" + }, + { + "label": "伊川县", + "value": "410329" + }, + { + "label": "洛阳高新技术产业开发区", + "value": "410371" + }, + { + "label": "偃师市", + "value": "410381" + } + ], + [{ + "label": "新华区", + "value": "410402" + }, + { + "label": "卫东区", + "value": "410403" + }, + { + "label": "石龙区", + "value": "410404" + }, + { + "label": "湛河区", + "value": "410411" + }, + { + "label": "宝丰县", + "value": "410421" + }, + { + "label": "叶县", + "value": "410422" + }, + { + "label": "鲁山县", + "value": "410423" + }, + { + "label": "郏县", + "value": "410425" + }, + { + "label": "平顶山高新技术产业开发区", + "value": "410471" + }, + { + "label": "平顶山市新城区", + "value": "410472" + }, + { + "label": "舞钢市", + "value": "410481" + }, + { + "label": "汝州市", + "value": "410482" + } + ], + [{ + "label": "文峰区", + "value": "410502" + }, + { + "label": "北关区", + "value": "410503" + }, + { + "label": "殷都区", + "value": "410505" + }, + { + "label": "龙安区", + "value": "410506" + }, + { + "label": "安阳县", + "value": "410522" + }, + { + "label": "汤阴县", + "value": "410523" + }, + { + "label": "滑县", + "value": "410526" + }, + { + "label": "内黄县", + "value": "410527" + }, + { + "label": "安阳高新技术产业开发区", + "value": "410571" + }, + { + "label": "林州市", + "value": "410581" + } + ], + [{ + "label": "鹤山区", + "value": "410602" + }, + { + "label": "山城区", + "value": "410603" + }, + { + "label": "淇滨区", + "value": "410611" + }, + { + "label": "浚县", + "value": "410621" + }, + { + "label": "淇县", + "value": "410622" + }, + { + "label": "鹤壁经济技术开发区", + "value": "410671" + } + ], + [{ + "label": "红旗区", + "value": "410702" + }, + { + "label": "卫滨区", + "value": "410703" + }, + { + "label": "凤泉区", + "value": "410704" + }, + { + "label": "牧野区", + "value": "410711" + }, + { + "label": "新乡县", + "value": "410721" + }, + { + "label": "获嘉县", + "value": "410724" + }, + { + "label": "原阳县", + "value": "410725" + }, + { + "label": "延津县", + "value": "410726" + }, + { + "label": "封丘县", + "value": "410727" + }, + { + "label": "长垣县", + "value": "410728" + }, + { + "label": "新乡高新技术产业开发区", + "value": "410771" + }, + { + "label": "新乡经济技术开发区", + "value": "410772" + }, + { + "label": "新乡市平原城乡一体化示范区", + "value": "410773" + }, + { + "label": "卫辉市", + "value": "410781" + }, + { + "label": "辉县市", + "value": "410782" + } + ], + [{ + "label": "解放区", + "value": "410802" + }, + { + "label": "中站区", + "value": "410803" + }, + { + "label": "马村区", + "value": "410804" + }, + { + "label": "山阳区", + "value": "410811" + }, + { + "label": "修武县", + "value": "410821" + }, + { + "label": "博爱县", + "value": "410822" + }, + { + "label": "武陟县", + "value": "410823" + }, + { + "label": "温县", + "value": "410825" + }, + { + "label": "焦作城乡一体化示范区", + "value": "410871" + }, + { + "label": "沁阳市", + "value": "410882" + }, + { + "label": "孟州市", + "value": "410883" + } + ], + [{ + "label": "华龙区", + "value": "410902" + }, + { + "label": "清丰县", + "value": "410922" + }, + { + "label": "南乐县", + "value": "410923" + }, + { + "label": "范县", + "value": "410926" + }, + { + "label": "台前县", + "value": "410927" + }, + { + "label": "濮阳县", + "value": "410928" + }, + { + "label": "河南濮阳工业园区", + "value": "410971" + }, + { + "label": "濮阳经济技术开发区", + "value": "410972" + } + ], + [{ + "label": "魏都区", + "value": "411002" + }, + { + "label": "建安区", + "value": "411003" + }, + { + "label": "鄢陵县", + "value": "411024" + }, + { + "label": "襄城县", + "value": "411025" + }, + { + "label": "许昌经济技术开发区", + "value": "411071" + }, + { + "label": "禹州市", + "value": "411081" + }, + { + "label": "长葛市", + "value": "411082" + } + ], + [{ + "label": "源汇区", + "value": "411102" + }, + { + "label": "郾城区", + "value": "411103" + }, + { + "label": "召陵区", + "value": "411104" + }, + { + "label": "舞阳县", + "value": "411121" + }, + { + "label": "临颍县", + "value": "411122" + }, + { + "label": "漯河经济技术开发区", + "value": "411171" + } + ], + [{ + "label": "湖滨区", + "value": "411202" + }, + { + "label": "陕州区", + "value": "411203" + }, + { + "label": "渑池县", + "value": "411221" + }, + { + "label": "卢氏县", + "value": "411224" + }, + { + "label": "河南三门峡经济开发区", + "value": "411271" + }, + { + "label": "义马市", + "value": "411281" + }, + { + "label": "灵宝市", + "value": "411282" + } + ], + [{ + "label": "宛城区", + "value": "411302" + }, + { + "label": "卧龙区", + "value": "411303" + }, + { + "label": "南召县", + "value": "411321" + }, + { + "label": "方城县", + "value": "411322" + }, + { + "label": "西峡县", + "value": "411323" + }, + { + "label": "镇平县", + "value": "411324" + }, + { + "label": "内乡县", + "value": "411325" + }, + { + "label": "淅川县", + "value": "411326" + }, + { + "label": "社旗县", + "value": "411327" + }, + { + "label": "唐河县", + "value": "411328" + }, + { + "label": "新野县", + "value": "411329" + }, + { + "label": "桐柏县", + "value": "411330" + }, + { + "label": "南阳高新技术产业开发区", + "value": "411371" + }, + { + "label": "南阳市城乡一体化示范区", + "value": "411372" + }, + { + "label": "邓州市", + "value": "411381" + } + ], + [{ + "label": "梁园区", + "value": "411402" + }, + { + "label": "睢阳区", + "value": "411403" + }, + { + "label": "民权县", + "value": "411421" + }, + { + "label": "睢县", + "value": "411422" + }, + { + "label": "宁陵县", + "value": "411423" + }, + { + "label": "柘城县", + "value": "411424" + }, + { + "label": "虞城县", + "value": "411425" + }, + { + "label": "夏邑县", + "value": "411426" + }, + { + "label": "豫东综合物流产业聚集区", + "value": "411471" + }, + { + "label": "河南商丘经济开发区", + "value": "411472" + }, + { + "label": "永城市", + "value": "411481" + } + ], + [{ + "label": "浉河区", + "value": "411502" + }, + { + "label": "平桥区", + "value": "411503" + }, + { + "label": "罗山县", + "value": "411521" + }, + { + "label": "光山县", + "value": "411522" + }, + { + "label": "新县", + "value": "411523" + }, + { + "label": "商城县", + "value": "411524" + }, + { + "label": "固始县", + "value": "411525" + }, + { + "label": "潢川县", + "value": "411526" + }, + { + "label": "淮滨县", + "value": "411527" + }, + { + "label": "息县", + "value": "411528" + }, + { + "label": "信阳高新技术产业开发区", + "value": "411571" + } + ], + [{ + "label": "川汇区", + "value": "411602" + }, + { + "label": "扶沟县", + "value": "411621" + }, + { + "label": "西华县", + "value": "411622" + }, + { + "label": "商水县", + "value": "411623" + }, + { + "label": "沈丘县", + "value": "411624" + }, + { + "label": "郸城县", + "value": "411625" + }, + { + "label": "淮阳县", + "value": "411626" + }, + { + "label": "太康县", + "value": "411627" + }, + { + "label": "鹿邑县", + "value": "411628" + }, + { + "label": "河南周口经济开发区", + "value": "411671" + }, + { + "label": "项城市", + "value": "411681" + } + ], + [{ + "label": "驿城区", + "value": "411702" + }, + { + "label": "西平县", + "value": "411721" + }, + { + "label": "上蔡县", + "value": "411722" + }, + { + "label": "平舆县", + "value": "411723" + }, + { + "label": "正阳县", + "value": "411724" + }, + { + "label": "确山县", + "value": "411725" + }, + { + "label": "泌阳县", + "value": "411726" + }, + { + "label": "汝南县", + "value": "411727" + }, + { + "label": "遂平县", + "value": "411728" + }, + { + "label": "新蔡县", + "value": "411729" + }, + { + "label": "河南驻马店经济开发区", + "value": "411771" + } + ], + [{ + "label": "济源市", + "value": "419001" + }] + ], + [ + [{ + "label": "江岸区", + "value": "420102" + }, + { + "label": "江汉区", + "value": "420103" + }, + { + "label": "硚口区", + "value": "420104" + }, + { + "label": "汉阳区", + "value": "420105" + }, + { + "label": "武昌区", + "value": "420106" + }, + { + "label": "青山区", + "value": "420107" + }, + { + "label": "洪山区", + "value": "420111" + }, + { + "label": "东西湖区", + "value": "420112" + }, + { + "label": "汉南区", + "value": "420113" + }, + { + "label": "蔡甸区", + "value": "420114" + }, + { + "label": "江夏区", + "value": "420115" + }, + { + "label": "黄陂区", + "value": "420116" + }, + { + "label": "新洲区", + "value": "420117" + } + ], + [{ + "label": "黄石港区", + "value": "420202" + }, + { + "label": "西塞山区", + "value": "420203" + }, + { + "label": "下陆区", + "value": "420204" + }, + { + "label": "铁山区", + "value": "420205" + }, + { + "label": "阳新县", + "value": "420222" + }, + { + "label": "大冶市", + "value": "420281" + } + ], + [{ + "label": "茅箭区", + "value": "420302" + }, + { + "label": "张湾区", + "value": "420303" + }, + { + "label": "郧阳区", + "value": "420304" + }, + { + "label": "郧西县", + "value": "420322" + }, + { + "label": "竹山县", + "value": "420323" + }, + { + "label": "竹溪县", + "value": "420324" + }, + { + "label": "房县", + "value": "420325" + }, + { + "label": "丹江口市", + "value": "420381" + } + ], + [{ + "label": "西陵区", + "value": "420502" + }, + { + "label": "伍家岗区", + "value": "420503" + }, + { + "label": "点军区", + "value": "420504" + }, + { + "label": "猇亭区", + "value": "420505" + }, + { + "label": "夷陵区", + "value": "420506" + }, + { + "label": "远安县", + "value": "420525" + }, + { + "label": "兴山县", + "value": "420526" + }, + { + "label": "秭归县", + "value": "420527" + }, + { + "label": "长阳土家族自治县", + "value": "420528" + }, + { + "label": "五峰土家族自治县", + "value": "420529" + }, + { + "label": "宜都市", + "value": "420581" + }, + { + "label": "当阳市", + "value": "420582" + }, + { + "label": "枝江市", + "value": "420583" + } + ], + [{ + "label": "襄城区", + "value": "420602" + }, + { + "label": "樊城区", + "value": "420606" + }, + { + "label": "襄州区", + "value": "420607" + }, + { + "label": "南漳县", + "value": "420624" + }, + { + "label": "谷城县", + "value": "420625" + }, + { + "label": "保康县", + "value": "420626" + }, + { + "label": "老河口市", + "value": "420682" + }, + { + "label": "枣阳市", + "value": "420683" + }, + { + "label": "宜城市", + "value": "420684" + } + ], + [{ + "label": "梁子湖区", + "value": "420702" + }, + { + "label": "华容区", + "value": "420703" + }, + { + "label": "鄂城区", + "value": "420704" + } + ], + [{ + "label": "东宝区", + "value": "420802" + }, + { + "label": "掇刀区", + "value": "420804" + }, + { + "label": "京山县", + "value": "420821" + }, + { + "label": "沙洋县", + "value": "420822" + }, + { + "label": "钟祥市", + "value": "420881" + } + ], + [{ + "label": "孝南区", + "value": "420902" + }, + { + "label": "孝昌县", + "value": "420921" + }, + { + "label": "大悟县", + "value": "420922" + }, + { + "label": "云梦县", + "value": "420923" + }, + { + "label": "应城市", + "value": "420981" + }, + { + "label": "安陆市", + "value": "420982" + }, + { + "label": "汉川市", + "value": "420984" + } + ], + [{ + "label": "沙市区", + "value": "421002" + }, + { + "label": "荆州区", + "value": "421003" + }, + { + "label": "公安县", + "value": "421022" + }, + { + "label": "监利县", + "value": "421023" + }, + { + "label": "江陵县", + "value": "421024" + }, + { + "label": "荆州经济技术开发区", + "value": "421071" + }, + { + "label": "石首市", + "value": "421081" + }, + { + "label": "洪湖市", + "value": "421083" + }, + { + "label": "松滋市", + "value": "421087" + } + ], + [{ + "label": "黄州区", + "value": "421102" + }, + { + "label": "团风县", + "value": "421121" + }, + { + "label": "红安县", + "value": "421122" + }, + { + "label": "罗田县", + "value": "421123" + }, + { + "label": "英山县", + "value": "421124" + }, + { + "label": "浠水县", + "value": "421125" + }, + { + "label": "蕲春县", + "value": "421126" + }, + { + "label": "黄梅县", + "value": "421127" + }, + { + "label": "龙感湖管理区", + "value": "421171" + }, + { + "label": "麻城市", + "value": "421181" + }, + { + "label": "武穴市", + "value": "421182" + } + ], + [{ + "label": "咸安区", + "value": "421202" + }, + { + "label": "嘉鱼县", + "value": "421221" + }, + { + "label": "通城县", + "value": "421222" + }, + { + "label": "崇阳县", + "value": "421223" + }, + { + "label": "通山县", + "value": "421224" + }, + { + "label": "赤壁市", + "value": "421281" + } + ], + [{ + "label": "曾都区", + "value": "421303" + }, + { + "label": "随县", + "value": "421321" + }, + { + "label": "广水市", + "value": "421381" + } + ], + [{ + "label": "恩施市", + "value": "422801" + }, + { + "label": "利川市", + "value": "422802" + }, + { + "label": "建始县", + "value": "422822" + }, + { + "label": "巴东县", + "value": "422823" + }, + { + "label": "宣恩县", + "value": "422825" + }, + { + "label": "咸丰县", + "value": "422826" + }, + { + "label": "来凤县", + "value": "422827" + }, + { + "label": "鹤峰县", + "value": "422828" + } + ], + [{ + "label": "仙桃市", + "value": "429004" + }, + { + "label": "潜江市", + "value": "429005" + }, + { + "label": "天门市", + "value": "429006" + }, + { + "label": "神农架林区", + "value": "429021" + } + ] + ], + [ + [{ + "label": "芙蓉区", + "value": "430102" + }, + { + "label": "天心区", + "value": "430103" + }, + { + "label": "岳麓区", + "value": "430104" + }, + { + "label": "开福区", + "value": "430105" + }, + { + "label": "雨花区", + "value": "430111" + }, + { + "label": "望城区", + "value": "430112" + }, + { + "label": "长沙县", + "value": "430121" + }, + { + "label": "浏阳市", + "value": "430181" + }, + { + "label": "宁乡市", + "value": "430182" + } + ], + [{ + "label": "荷塘区", + "value": "430202" + }, + { + "label": "芦淞区", + "value": "430203" + }, + { + "label": "石峰区", + "value": "430204" + }, + { + "label": "天元区", + "value": "430211" + }, + { + "label": "株洲县", + "value": "430221" + }, + { + "label": "攸县", + "value": "430223" + }, + { + "label": "茶陵县", + "value": "430224" + }, + { + "label": "炎陵县", + "value": "430225" + }, + { + "label": "云龙示范区", + "value": "430271" + }, + { + "label": "醴陵市", + "value": "430281" + } + ], + [{ + "label": "雨湖区", + "value": "430302" + }, + { + "label": "岳塘区", + "value": "430304" + }, + { + "label": "湘潭县", + "value": "430321" + }, + { + "label": "湖南湘潭高新技术产业园区", + "value": "430371" + }, + { + "label": "湘潭昭山示范区", + "value": "430372" + }, + { + "label": "湘潭九华示范区", + "value": "430373" + }, + { + "label": "湘乡市", + "value": "430381" + }, + { + "label": "韶山市", + "value": "430382" + } + ], + [{ + "label": "珠晖区", + "value": "430405" + }, + { + "label": "雁峰区", + "value": "430406" + }, + { + "label": "石鼓区", + "value": "430407" + }, + { + "label": "蒸湘区", + "value": "430408" + }, + { + "label": "南岳区", + "value": "430412" + }, + { + "label": "衡阳县", + "value": "430421" + }, + { + "label": "衡南县", + "value": "430422" + }, + { + "label": "衡山县", + "value": "430423" + }, + { + "label": "衡东县", + "value": "430424" + }, + { + "label": "祁东县", + "value": "430426" + }, + { + "label": "衡阳综合保税区", + "value": "430471" + }, + { + "label": "湖南衡阳高新技术产业园区", + "value": "430472" + }, + { + "label": "湖南衡阳松木经济开发区", + "value": "430473" + }, + { + "label": "耒阳市", + "value": "430481" + }, + { + "label": "常宁市", + "value": "430482" + } + ], + [{ + "label": "双清区", + "value": "430502" + }, + { + "label": "大祥区", + "value": "430503" + }, + { + "label": "北塔区", + "value": "430511" + }, + { + "label": "邵东县", + "value": "430521" + }, + { + "label": "新邵县", + "value": "430522" + }, + { + "label": "邵阳县", + "value": "430523" + }, + { + "label": "隆回县", + "value": "430524" + }, + { + "label": "洞口县", + "value": "430525" + }, + { + "label": "绥宁县", + "value": "430527" + }, + { + "label": "新宁县", + "value": "430528" + }, + { + "label": "城步苗族自治县", + "value": "430529" + }, + { + "label": "武冈市", + "value": "430581" + } + ], + [{ + "label": "岳阳楼区", + "value": "430602" + }, + { + "label": "云溪区", + "value": "430603" + }, + { + "label": "君山区", + "value": "430611" + }, + { + "label": "岳阳县", + "value": "430621" + }, + { + "label": "华容县", + "value": "430623" + }, + { + "label": "湘阴县", + "value": "430624" + }, + { + "label": "平江县", + "value": "430626" + }, + { + "label": "岳阳市屈原管理区", + "value": "430671" + }, + { + "label": "汨罗市", + "value": "430681" + }, + { + "label": "临湘市", + "value": "430682" + } + ], + [{ + "label": "武陵区", + "value": "430702" + }, + { + "label": "鼎城区", + "value": "430703" + }, + { + "label": "安乡县", + "value": "430721" + }, + { + "label": "汉寿县", + "value": "430722" + }, + { + "label": "澧县", + "value": "430723" + }, + { + "label": "临澧县", + "value": "430724" + }, + { + "label": "桃源县", + "value": "430725" + }, + { + "label": "石门县", + "value": "430726" + }, + { + "label": "常德市西洞庭管理区", + "value": "430771" + }, + { + "label": "津市市", + "value": "430781" + } + ], + [{ + "label": "永定区", + "value": "430802" + }, + { + "label": "武陵源区", + "value": "430811" + }, + { + "label": "慈利县", + "value": "430821" + }, + { + "label": "桑植县", + "value": "430822" + } + ], + [{ + "label": "资阳区", + "value": "430902" + }, + { + "label": "赫山区", + "value": "430903" + }, + { + "label": "南县", + "value": "430921" + }, + { + "label": "桃江县", + "value": "430922" + }, + { + "label": "安化县", + "value": "430923" + }, + { + "label": "益阳市大通湖管理区", + "value": "430971" + }, + { + "label": "湖南益阳高新技术产业园区", + "value": "430972" + }, + { + "label": "沅江市", + "value": "430981" + } + ], + [{ + "label": "北湖区", + "value": "431002" + }, + { + "label": "苏仙区", + "value": "431003" + }, + { + "label": "桂阳县", + "value": "431021" + }, + { + "label": "宜章县", + "value": "431022" + }, + { + "label": "永兴县", + "value": "431023" + }, + { + "label": "嘉禾县", + "value": "431024" + }, + { + "label": "临武县", + "value": "431025" + }, + { + "label": "汝城县", + "value": "431026" + }, + { + "label": "桂东县", + "value": "431027" + }, + { + "label": "安仁县", + "value": "431028" + }, + { + "label": "资兴市", + "value": "431081" + } + ], + [{ + "label": "零陵区", + "value": "431102" + }, + { + "label": "冷水滩区", + "value": "431103" + }, + { + "label": "祁阳县", + "value": "431121" + }, + { + "label": "东安县", + "value": "431122" + }, + { + "label": "双牌县", + "value": "431123" + }, + { + "label": "道县", + "value": "431124" + }, + { + "label": "江永县", + "value": "431125" + }, + { + "label": "宁远县", + "value": "431126" + }, + { + "label": "蓝山县", + "value": "431127" + }, + { + "label": "新田县", + "value": "431128" + }, + { + "label": "江华瑶族自治县", + "value": "431129" + }, + { + "label": "永州经济技术开发区", + "value": "431171" + }, + { + "label": "永州市金洞管理区", + "value": "431172" + }, + { + "label": "永州市回龙圩管理区", + "value": "431173" + } + ], + [{ + "label": "鹤城区", + "value": "431202" + }, + { + "label": "中方县", + "value": "431221" + }, + { + "label": "沅陵县", + "value": "431222" + }, + { + "label": "辰溪县", + "value": "431223" + }, + { + "label": "溆浦县", + "value": "431224" + }, + { + "label": "会同县", + "value": "431225" + }, + { + "label": "麻阳苗族自治县", + "value": "431226" + }, + { + "label": "新晃侗族自治县", + "value": "431227" + }, + { + "label": "芷江侗族自治县", + "value": "431228" + }, + { + "label": "靖州苗族侗族自治县", + "value": "431229" + }, + { + "label": "通道侗族自治县", + "value": "431230" + }, + { + "label": "怀化市洪江管理区", + "value": "431271" + }, + { + "label": "洪江市", + "value": "431281" + } + ], + [{ + "label": "娄星区", + "value": "431302" + }, + { + "label": "双峰县", + "value": "431321" + }, + { + "label": "新化县", + "value": "431322" + }, + { + "label": "冷水江市", + "value": "431381" + }, + { + "label": "涟源市", + "value": "431382" + } + ], + [{ + "label": "吉首市", + "value": "433101" + }, + { + "label": "泸溪县", + "value": "433122" + }, + { + "label": "凤凰县", + "value": "433123" + }, + { + "label": "花垣县", + "value": "433124" + }, + { + "label": "保靖县", + "value": "433125" + }, + { + "label": "古丈县", + "value": "433126" + }, + { + "label": "永顺县", + "value": "433127" + }, + { + "label": "龙山县", + "value": "433130" + }, + { + "label": "湖南吉首经济开发区", + "value": "433172" + }, + { + "label": "湖南永顺经济开发区", + "value": "433173" + } + ] + ], + [ + [{ + "label": "荔湾区", + "value": "440103" + }, + { + "label": "越秀区", + "value": "440104" + }, + { + "label": "海珠区", + "value": "440105" + }, + { + "label": "天河区", + "value": "440106" + }, + { + "label": "白云区", + "value": "440111" + }, + { + "label": "黄埔区", + "value": "440112" + }, + { + "label": "番禺区", + "value": "440113" + }, + { + "label": "花都区", + "value": "440114" + }, + { + "label": "南沙区", + "value": "440115" + }, + { + "label": "从化区", + "value": "440117" + }, + { + "label": "增城区", + "value": "440118" + } + ], + [{ + "label": "武江区", + "value": "440203" + }, + { + "label": "浈江区", + "value": "440204" + }, + { + "label": "曲江区", + "value": "440205" + }, + { + "label": "始兴县", + "value": "440222" + }, + { + "label": "仁化县", + "value": "440224" + }, + { + "label": "翁源县", + "value": "440229" + }, + { + "label": "乳源瑶族自治县", + "value": "440232" + }, + { + "label": "新丰县", + "value": "440233" + }, + { + "label": "乐昌市", + "value": "440281" + }, + { + "label": "南雄市", + "value": "440282" + } + ], + [{ + "label": "罗湖区", + "value": "440303" + }, + { + "label": "福田区", + "value": "440304" + }, + { + "label": "南山区", + "value": "440305" + }, + { + "label": "宝安区", + "value": "440306" + }, + { + "label": "龙岗区", + "value": "440307" + }, + { + "label": "盐田区", + "value": "440308" + }, + { + "label": "龙华区", + "value": "440309" + }, + { + "label": "坪山区", + "value": "440310" + } + ], + [{ + "label": "香洲区", + "value": "440402" + }, + { + "label": "斗门区", + "value": "440403" + }, + { + "label": "金湾区", + "value": "440404" + } + ], + [{ + "label": "龙湖区", + "value": "440507" + }, + { + "label": "金平区", + "value": "440511" + }, + { + "label": "濠江区", + "value": "440512" + }, + { + "label": "潮阳区", + "value": "440513" + }, + { + "label": "潮南区", + "value": "440514" + }, + { + "label": "澄海区", + "value": "440515" + }, + { + "label": "南澳县", + "value": "440523" + } + ], + [{ + "label": "禅城区", + "value": "440604" + }, + { + "label": "南海区", + "value": "440605" + }, + { + "label": "顺德区", + "value": "440606" + }, + { + "label": "三水区", + "value": "440607" + }, + { + "label": "高明区", + "value": "440608" + } + ], + [{ + "label": "蓬江区", + "value": "440703" + }, + { + "label": "江海区", + "value": "440704" + }, + { + "label": "新会区", + "value": "440705" + }, + { + "label": "台山市", + "value": "440781" + }, + { + "label": "开平市", + "value": "440783" + }, + { + "label": "鹤山市", + "value": "440784" + }, + { + "label": "恩平市", + "value": "440785" + } + ], + [{ + "label": "赤坎区", + "value": "440802" + }, + { + "label": "霞山区", + "value": "440803" + }, + { + "label": "坡头区", + "value": "440804" + }, + { + "label": "麻章区", + "value": "440811" + }, + { + "label": "遂溪县", + "value": "440823" + }, + { + "label": "徐闻县", + "value": "440825" + }, + { + "label": "廉江市", + "value": "440881" + }, + { + "label": "雷州市", + "value": "440882" + }, + { + "label": "吴川市", + "value": "440883" + } + ], + [{ + "label": "茂南区", + "value": "440902" + }, + { + "label": "电白区", + "value": "440904" + }, + { + "label": "高州市", + "value": "440981" + }, + { + "label": "化州市", + "value": "440982" + }, + { + "label": "信宜市", + "value": "440983" + } + ], + [{ + "label": "端州区", + "value": "441202" + }, + { + "label": "鼎湖区", + "value": "441203" + }, + { + "label": "高要区", + "value": "441204" + }, + { + "label": "广宁县", + "value": "441223" + }, + { + "label": "怀集县", + "value": "441224" + }, + { + "label": "封开县", + "value": "441225" + }, + { + "label": "德庆县", + "value": "441226" + }, + { + "label": "四会市", + "value": "441284" + } + ], + [{ + "label": "惠城区", + "value": "441302" + }, + { + "label": "惠阳区", + "value": "441303" + }, + { + "label": "博罗县", + "value": "441322" + }, + { + "label": "惠东县", + "value": "441323" + }, + { + "label": "龙门县", + "value": "441324" + } + ], + [{ + "label": "梅江区", + "value": "441402" + }, + { + "label": "梅县区", + "value": "441403" + }, + { + "label": "大埔县", + "value": "441422" + }, + { + "label": "丰顺县", + "value": "441423" + }, + { + "label": "五华县", + "value": "441424" + }, + { + "label": "平远县", + "value": "441426" + }, + { + "label": "蕉岭县", + "value": "441427" + }, + { + "label": "兴宁市", + "value": "441481" + } + ], + [{ + "label": "城区", + "value": "441502" + }, + { + "label": "海丰县", + "value": "441521" + }, + { + "label": "陆河县", + "value": "441523" + }, + { + "label": "陆丰市", + "value": "441581" + } + ], + [{ + "label": "源城区", + "value": "441602" + }, + { + "label": "紫金县", + "value": "441621" + }, + { + "label": "龙川县", + "value": "441622" + }, + { + "label": "连平县", + "value": "441623" + }, + { + "label": "和平县", + "value": "441624" + }, + { + "label": "东源县", + "value": "441625" + } + ], + [{ + "label": "江城区", + "value": "441702" + }, + { + "label": "阳东区", + "value": "441704" + }, + { + "label": "阳西县", + "value": "441721" + }, + { + "label": "阳春市", + "value": "441781" + } + ], + [{ + "label": "清城区", + "value": "441802" + }, + { + "label": "清新区", + "value": "441803" + }, + { + "label": "佛冈县", + "value": "441821" + }, + { + "label": "阳山县", + "value": "441823" + }, + { + "label": "连山壮族瑶族自治县", + "value": "441825" + }, + { + "label": "连南瑶族自治县", + "value": "441826" + }, + { + "label": "英德市", + "value": "441881" + }, + { + "label": "连州市", + "value": "441882" + } + ], + [{ + "label": "东莞市", + "value": "441900" + }], + [{ + "label": "中山市", + "value": "442000" + }], + [{ + "label": "湘桥区", + "value": "445102" + }, + { + "label": "潮安区", + "value": "445103" + }, + { + "label": "饶平县", + "value": "445122" + } + ], + [{ + "label": "榕城区", + "value": "445202" + }, + { + "label": "揭东区", + "value": "445203" + }, + { + "label": "揭西县", + "value": "445222" + }, + { + "label": "惠来县", + "value": "445224" + }, + { + "label": "普宁市", + "value": "445281" + } + ], + [{ + "label": "云城区", + "value": "445302" + }, + { + "label": "云安区", + "value": "445303" + }, + { + "label": "新兴县", + "value": "445321" + }, + { + "label": "郁南县", + "value": "445322" + }, + { + "label": "罗定市", + "value": "445381" + } + ] + ], + [ + [{ + "label": "兴宁区", + "value": "450102" + }, + { + "label": "青秀区", + "value": "450103" + }, + { + "label": "江南区", + "value": "450105" + }, + { + "label": "西乡塘区", + "value": "450107" + }, + { + "label": "良庆区", + "value": "450108" + }, + { + "label": "邕宁区", + "value": "450109" + }, + { + "label": "武鸣区", + "value": "450110" + }, + { + "label": "隆安县", + "value": "450123" + }, + { + "label": "马山县", + "value": "450124" + }, + { + "label": "上林县", + "value": "450125" + }, + { + "label": "宾阳县", + "value": "450126" + }, + { + "label": "横县", + "value": "450127" + } + ], + [{ + "label": "城中区", + "value": "450202" + }, + { + "label": "鱼峰区", + "value": "450203" + }, + { + "label": "柳南区", + "value": "450204" + }, + { + "label": "柳北区", + "value": "450205" + }, + { + "label": "柳江区", + "value": "450206" + }, + { + "label": "柳城县", + "value": "450222" + }, + { + "label": "鹿寨县", + "value": "450223" + }, + { + "label": "融安县", + "value": "450224" + }, + { + "label": "融水苗族自治县", + "value": "450225" + }, + { + "label": "三江侗族自治县", + "value": "450226" + } + ], + [{ + "label": "秀峰区", + "value": "450302" + }, + { + "label": "叠彩区", + "value": "450303" + }, + { + "label": "象山区", + "value": "450304" + }, + { + "label": "七星区", + "value": "450305" + }, + { + "label": "雁山区", + "value": "450311" + }, + { + "label": "临桂区", + "value": "450312" + }, + { + "label": "阳朔县", + "value": "450321" + }, + { + "label": "灵川县", + "value": "450323" + }, + { + "label": "全州县", + "value": "450324" + }, + { + "label": "兴安县", + "value": "450325" + }, + { + "label": "永福县", + "value": "450326" + }, + { + "label": "灌阳县", + "value": "450327" + }, + { + "label": "龙胜各族自治县", + "value": "450328" + }, + { + "label": "资源县", + "value": "450329" + }, + { + "label": "平乐县", + "value": "450330" + }, + { + "label": "荔浦县", + "value": "450331" + }, + { + "label": "恭城瑶族自治县", + "value": "450332" + } + ], + [{ + "label": "万秀区", + "value": "450403" + }, + { + "label": "长洲区", + "value": "450405" + }, + { + "label": "龙圩区", + "value": "450406" + }, + { + "label": "苍梧县", + "value": "450421" + }, + { + "label": "藤县", + "value": "450422" + }, + { + "label": "蒙山县", + "value": "450423" + }, + { + "label": "岑溪市", + "value": "450481" + } + ], + [{ + "label": "海城区", + "value": "450502" + }, + { + "label": "银海区", + "value": "450503" + }, + { + "label": "铁山港区", + "value": "450512" + }, + { + "label": "合浦县", + "value": "450521" + } + ], + [{ + "label": "港口区", + "value": "450602" + }, + { + "label": "防城区", + "value": "450603" + }, + { + "label": "上思县", + "value": "450621" + }, + { + "label": "东兴市", + "value": "450681" + } + ], + [{ + "label": "钦南区", + "value": "450702" + }, + { + "label": "钦北区", + "value": "450703" + }, + { + "label": "灵山县", + "value": "450721" + }, + { + "label": "浦北县", + "value": "450722" + } + ], + [{ + "label": "港北区", + "value": "450802" + }, + { + "label": "港南区", + "value": "450803" + }, + { + "label": "覃塘区", + "value": "450804" + }, + { + "label": "平南县", + "value": "450821" + }, + { + "label": "桂平市", + "value": "450881" + } + ], + [{ + "label": "玉州区", + "value": "450902" + }, + { + "label": "福绵区", + "value": "450903" + }, + { + "label": "容县", + "value": "450921" + }, + { + "label": "陆川县", + "value": "450922" + }, + { + "label": "博白县", + "value": "450923" + }, + { + "label": "兴业县", + "value": "450924" + }, + { + "label": "北流市", + "value": "450981" + } + ], + [{ + "label": "右江区", + "value": "451002" + }, + { + "label": "田阳县", + "value": "451021" + }, + { + "label": "田东县", + "value": "451022" + }, + { + "label": "平果县", + "value": "451023" + }, + { + "label": "德保县", + "value": "451024" + }, + { + "label": "那坡县", + "value": "451026" + }, + { + "label": "凌云县", + "value": "451027" + }, + { + "label": "乐业县", + "value": "451028" + }, + { + "label": "田林县", + "value": "451029" + }, + { + "label": "西林县", + "value": "451030" + }, + { + "label": "隆林各族自治县", + "value": "451031" + }, + { + "label": "靖西市", + "value": "451081" + } + ], + [{ + "label": "八步区", + "value": "451102" + }, + { + "label": "平桂区", + "value": "451103" + }, + { + "label": "昭平县", + "value": "451121" + }, + { + "label": "钟山县", + "value": "451122" + }, + { + "label": "富川瑶族自治县", + "value": "451123" + } + ], + [{ + "label": "金城江区", + "value": "451202" + }, + { + "label": "宜州区", + "value": "451203" + }, + { + "label": "南丹县", + "value": "451221" + }, + { + "label": "天峨县", + "value": "451222" + }, + { + "label": "凤山县", + "value": "451223" + }, + { + "label": "东兰县", + "value": "451224" + }, + { + "label": "罗城仫佬族自治县", + "value": "451225" + }, + { + "label": "环江毛南族自治县", + "value": "451226" + }, + { + "label": "巴马瑶族自治县", + "value": "451227" + }, + { + "label": "都安瑶族自治县", + "value": "451228" + }, + { + "label": "大化瑶族自治县", + "value": "451229" + } + ], + [{ + "label": "兴宾区", + "value": "451302" + }, + { + "label": "忻城县", + "value": "451321" + }, + { + "label": "象州县", + "value": "451322" + }, + { + "label": "武宣县", + "value": "451323" + }, + { + "label": "金秀瑶族自治县", + "value": "451324" + }, + { + "label": "合山市", + "value": "451381" + } + ], + [{ + "label": "江州区", + "value": "451402" + }, + { + "label": "扶绥县", + "value": "451421" + }, + { + "label": "宁明县", + "value": "451422" + }, + { + "label": "龙州县", + "value": "451423" + }, + { + "label": "大新县", + "value": "451424" + }, + { + "label": "天等县", + "value": "451425" + }, + { + "label": "凭祥市", + "value": "451481" + } + ] + ], + [ + [{ + "label": "秀英区", + "value": "460105" + }, + { + "label": "龙华区", + "value": "460106" + }, + { + "label": "琼山区", + "value": "460107" + }, + { + "label": "美兰区", + "value": "460108" + } + ], + [{ + "label": "海棠区", + "value": "460202" + }, + { + "label": "吉阳区", + "value": "460203" + }, + { + "label": "天涯区", + "value": "460204" + }, + { + "label": "崖州区", + "value": "460205" + } + ], + [{ + "label": "西沙群岛", + "value": "460321" + }, + { + "label": "南沙群岛", + "value": "460322" + }, + { + "label": "中沙群岛的岛礁及其海域", + "value": "460323" + } + ], + [{ + "label": "儋州市", + "value": "460400" + }], + [{ + "label": "五指山市", + "value": "469001" + }, + { + "label": "琼海市", + "value": "469002" + }, + { + "label": "文昌市", + "value": "469005" + }, + { + "label": "万宁市", + "value": "469006" + }, + { + "label": "东方市", + "value": "469007" + }, + { + "label": "定安县", + "value": "469021" + }, + { + "label": "屯昌县", + "value": "469022" + }, + { + "label": "澄迈县", + "value": "469023" + }, + { + "label": "临高县", + "value": "469024" + }, + { + "label": "白沙黎族自治县", + "value": "469025" + }, + { + "label": "昌江黎族自治县", + "value": "469026" + }, + { + "label": "乐东黎族自治县", + "value": "469027" + }, + { + "label": "陵水黎族自治县", + "value": "469028" + }, + { + "label": "保亭黎族苗族自治县", + "value": "469029" + }, + { + "label": "琼中黎族苗族自治县", + "value": "469030" + } + ] + ], + [ + [{ + "label": "万州区", + "value": "500101" + }, + { + "label": "涪陵区", + "value": "500102" + }, + { + "label": "渝中区", + "value": "500103" + }, + { + "label": "大渡口区", + "value": "500104" + }, + { + "label": "江北区", + "value": "500105" + }, + { + "label": "沙坪坝区", + "value": "500106" + }, + { + "label": "九龙坡区", + "value": "500107" + }, + { + "label": "南岸区", + "value": "500108" + }, + { + "label": "北碚区", + "value": "500109" + }, + { + "label": "綦江区", + "value": "500110" + }, + { + "label": "大足区", + "value": "500111" + }, + { + "label": "渝北区", + "value": "500112" + }, + { + "label": "巴南区", + "value": "500113" + }, + { + "label": "黔江区", + "value": "500114" + }, + { + "label": "长寿区", + "value": "500115" + }, + { + "label": "江津区", + "value": "500116" + }, + { + "label": "合川区", + "value": "500117" + }, + { + "label": "永川区", + "value": "500118" + }, + { + "label": "南川区", + "value": "500119" + }, + { + "label": "璧山区", + "value": "500120" + }, + { + "label": "铜梁区", + "value": "500151" + }, + { + "label": "潼南区", + "value": "500152" + }, + { + "label": "荣昌区", + "value": "500153" + }, + { + "label": "开州区", + "value": "500154" + }, + { + "label": "梁平区", + "value": "500155" + }, + { + "label": "武隆区", + "value": "500156" + } + ], + [{ + "label": "城口县", + "value": "500229" + }, + { + "label": "丰都县", + "value": "500230" + }, + { + "label": "垫江县", + "value": "500231" + }, + { + "label": "忠县", + "value": "500233" + }, + { + "label": "云阳县", + "value": "500235" + }, + { + "label": "奉节县", + "value": "500236" + }, + { + "label": "巫山县", + "value": "500237" + }, + { + "label": "巫溪县", + "value": "500238" + }, + { + "label": "石柱土家族自治县", + "value": "500240" + }, + { + "label": "秀山土家族苗族自治县", + "value": "500241" + }, + { + "label": "酉阳土家族苗族自治县", + "value": "500242" + }, + { + "label": "彭水苗族土家族自治县", + "value": "500243" + } + ] + ], + [ + [{ + "label": "锦江区", + "value": "510104" + }, + { + "label": "青羊区", + "value": "510105" + }, + { + "label": "金牛区", + "value": "510106" + }, + { + "label": "武侯区", + "value": "510107" + }, + { + "label": "成华区", + "value": "510108" + }, + { + "label": "龙泉驿区", + "value": "510112" + }, + { + "label": "青白江区", + "value": "510113" + }, + { + "label": "新都区", + "value": "510114" + }, + { + "label": "温江区", + "value": "510115" + }, + { + "label": "双流区", + "value": "510116" + }, + { + "label": "郫都区", + "value": "510117" + }, + { + "label": "金堂县", + "value": "510121" + }, + { + "label": "大邑县", + "value": "510129" + }, + { + "label": "蒲江县", + "value": "510131" + }, + { + "label": "新津县", + "value": "510132" + }, + { + "label": "都江堰市", + "value": "510181" + }, + { + "label": "彭州市", + "value": "510182" + }, + { + "label": "邛崃市", + "value": "510183" + }, + { + "label": "崇州市", + "value": "510184" + }, + { + "label": "简阳市", + "value": "510185" + } + ], + [{ + "label": "自流井区", + "value": "510302" + }, + { + "label": "贡井区", + "value": "510303" + }, + { + "label": "大安区", + "value": "510304" + }, + { + "label": "沿滩区", + "value": "510311" + }, + { + "label": "荣县", + "value": "510321" + }, + { + "label": "富顺县", + "value": "510322" + } + ], + [{ + "label": "东区", + "value": "510402" + }, + { + "label": "西区", + "value": "510403" + }, + { + "label": "仁和区", + "value": "510411" + }, + { + "label": "米易县", + "value": "510421" + }, + { + "label": "盐边县", + "value": "510422" + } + ], + [{ + "label": "江阳区", + "value": "510502" + }, + { + "label": "纳溪区", + "value": "510503" + }, + { + "label": "龙马潭区", + "value": "510504" + }, + { + "label": "泸县", + "value": "510521" + }, + { + "label": "合江县", + "value": "510522" + }, + { + "label": "叙永县", + "value": "510524" + }, + { + "label": "古蔺县", + "value": "510525" + } + ], + [{ + "label": "旌阳区", + "value": "510603" + }, + { + "label": "罗江区", + "value": "510604" + }, + { + "label": "中江县", + "value": "510623" + }, + { + "label": "广汉市", + "value": "510681" + }, + { + "label": "什邡市", + "value": "510682" + }, + { + "label": "绵竹市", + "value": "510683" + } + ], + [{ + "label": "涪城区", + "value": "510703" + }, + { + "label": "游仙区", + "value": "510704" + }, + { + "label": "安州区", + "value": "510705" + }, + { + "label": "三台县", + "value": "510722" + }, + { + "label": "盐亭县", + "value": "510723" + }, + { + "label": "梓潼县", + "value": "510725" + }, + { + "label": "北川羌族自治县", + "value": "510726" + }, + { + "label": "平武县", + "value": "510727" + }, + { + "label": "江油市", + "value": "510781" + } + ], + [{ + "label": "利州区", + "value": "510802" + }, + { + "label": "昭化区", + "value": "510811" + }, + { + "label": "朝天区", + "value": "510812" + }, + { + "label": "旺苍县", + "value": "510821" + }, + { + "label": "青川县", + "value": "510822" + }, + { + "label": "剑阁县", + "value": "510823" + }, + { + "label": "苍溪县", + "value": "510824" + } + ], + [{ + "label": "船山区", + "value": "510903" + }, + { + "label": "安居区", + "value": "510904" + }, + { + "label": "蓬溪县", + "value": "510921" + }, + { + "label": "射洪县", + "value": "510922" + }, + { + "label": "大英县", + "value": "510923" + } + ], + [{ + "label": "市中区", + "value": "511002" + }, + { + "label": "东兴区", + "value": "511011" + }, + { + "label": "威远县", + "value": "511024" + }, + { + "label": "资中县", + "value": "511025" + }, + { + "label": "内江经济开发区", + "value": "511071" + }, + { + "label": "隆昌市", + "value": "511083" + } + ], + [{ + "label": "市中区", + "value": "511102" + }, + { + "label": "沙湾区", + "value": "511111" + }, + { + "label": "五通桥区", + "value": "511112" + }, + { + "label": "金口河区", + "value": "511113" + }, + { + "label": "犍为县", + "value": "511123" + }, + { + "label": "井研县", + "value": "511124" + }, + { + "label": "夹江县", + "value": "511126" + }, + { + "label": "沐川县", + "value": "511129" + }, + { + "label": "峨边彝族自治县", + "value": "511132" + }, + { + "label": "马边彝族自治县", + "value": "511133" + }, + { + "label": "峨眉山市", + "value": "511181" + } + ], + [{ + "label": "顺庆区", + "value": "511302" + }, + { + "label": "高坪区", + "value": "511303" + }, + { + "label": "嘉陵区", + "value": "511304" + }, + { + "label": "南部县", + "value": "511321" + }, + { + "label": "营山县", + "value": "511322" + }, + { + "label": "蓬安县", + "value": "511323" + }, + { + "label": "仪陇县", + "value": "511324" + }, + { + "label": "西充县", + "value": "511325" + }, + { + "label": "阆中市", + "value": "511381" + } + ], + [{ + "label": "东坡区", + "value": "511402" + }, + { + "label": "彭山区", + "value": "511403" + }, + { + "label": "仁寿县", + "value": "511421" + }, + { + "label": "洪雅县", + "value": "511423" + }, + { + "label": "丹棱县", + "value": "511424" + }, + { + "label": "青神县", + "value": "511425" + } + ], + [{ + "label": "翠屏区", + "value": "511502" + }, + { + "label": "南溪区", + "value": "511503" + }, + { + "label": "宜宾县", + "value": "511521" + }, + { + "label": "江安县", + "value": "511523" + }, + { + "label": "长宁县", + "value": "511524" + }, + { + "label": "高县", + "value": "511525" + }, + { + "label": "珙县", + "value": "511526" + }, + { + "label": "筠连县", + "value": "511527" + }, + { + "label": "兴文县", + "value": "511528" + }, + { + "label": "屏山县", + "value": "511529" + } + ], + [{ + "label": "广安区", + "value": "511602" + }, + { + "label": "前锋区", + "value": "511603" + }, + { + "label": "岳池县", + "value": "511621" + }, + { + "label": "武胜县", + "value": "511622" + }, + { + "label": "邻水县", + "value": "511623" + }, + { + "label": "华蓥市", + "value": "511681" + } + ], + [{ + "label": "通川区", + "value": "511702" + }, + { + "label": "达川区", + "value": "511703" + }, + { + "label": "宣汉县", + "value": "511722" + }, + { + "label": "开江县", + "value": "511723" + }, + { + "label": "大竹县", + "value": "511724" + }, + { + "label": "渠县", + "value": "511725" + }, + { + "label": "达州经济开发区", + "value": "511771" + }, + { + "label": "万源市", + "value": "511781" + } + ], + [{ + "label": "雨城区", + "value": "511802" + }, + { + "label": "名山区", + "value": "511803" + }, + { + "label": "荥经县", + "value": "511822" + }, + { + "label": "汉源县", + "value": "511823" + }, + { + "label": "石棉县", + "value": "511824" + }, + { + "label": "天全县", + "value": "511825" + }, + { + "label": "芦山县", + "value": "511826" + }, + { + "label": "宝兴县", + "value": "511827" + } + ], + [{ + "label": "巴州区", + "value": "511902" + }, + { + "label": "恩阳区", + "value": "511903" + }, + { + "label": "通江县", + "value": "511921" + }, + { + "label": "南江县", + "value": "511922" + }, + { + "label": "平昌县", + "value": "511923" + }, + { + "label": "巴中经济开发区", + "value": "511971" + } + ], + [{ + "label": "雁江区", + "value": "512002" + }, + { + "label": "安岳县", + "value": "512021" + }, + { + "label": "乐至县", + "value": "512022" + } + ], + [{ + "label": "马尔康市", + "value": "513201" + }, + { + "label": "汶川县", + "value": "513221" + }, + { + "label": "理县", + "value": "513222" + }, + { + "label": "茂县", + "value": "513223" + }, + { + "label": "松潘县", + "value": "513224" + }, + { + "label": "九寨沟县", + "value": "513225" + }, + { + "label": "金川县", + "value": "513226" + }, + { + "label": "小金县", + "value": "513227" + }, + { + "label": "黑水县", + "value": "513228" + }, + { + "label": "壤塘县", + "value": "513230" + }, + { + "label": "阿坝县", + "value": "513231" + }, + { + "label": "若尔盖县", + "value": "513232" + }, + { + "label": "红原县", + "value": "513233" + } + ], + [{ + "label": "康定市", + "value": "513301" + }, + { + "label": "泸定县", + "value": "513322" + }, + { + "label": "丹巴县", + "value": "513323" + }, + { + "label": "九龙县", + "value": "513324" + }, + { + "label": "雅江县", + "value": "513325" + }, + { + "label": "道孚县", + "value": "513326" + }, + { + "label": "炉霍县", + "value": "513327" + }, + { + "label": "甘孜县", + "value": "513328" + }, + { + "label": "新龙县", + "value": "513329" + }, + { + "label": "德格县", + "value": "513330" + }, + { + "label": "白玉县", + "value": "513331" + }, + { + "label": "石渠县", + "value": "513332" + }, + { + "label": "色达县", + "value": "513333" + }, + { + "label": "理塘县", + "value": "513334" + }, + { + "label": "巴塘县", + "value": "513335" + }, + { + "label": "乡城县", + "value": "513336" + }, + { + "label": "稻城县", + "value": "513337" + }, + { + "label": "得荣县", + "value": "513338" + } + ], + [{ + "label": "西昌市", + "value": "513401" + }, + { + "label": "木里藏族自治县", + "value": "513422" + }, + { + "label": "盐源县", + "value": "513423" + }, + { + "label": "德昌县", + "value": "513424" + }, + { + "label": "会理县", + "value": "513425" + }, + { + "label": "会东县", + "value": "513426" + }, + { + "label": "宁南县", + "value": "513427" + }, + { + "label": "普格县", + "value": "513428" + }, + { + "label": "布拖县", + "value": "513429" + }, + { + "label": "金阳县", + "value": "513430" + }, + { + "label": "昭觉县", + "value": "513431" + }, + { + "label": "喜德县", + "value": "513432" + }, + { + "label": "冕宁县", + "value": "513433" + }, + { + "label": "越西县", + "value": "513434" + }, + { + "label": "甘洛县", + "value": "513435" + }, + { + "label": "美姑县", + "value": "513436" + }, + { + "label": "雷波县", + "value": "513437" + } + ] + ], + [ + [{ + "label": "南明区", + "value": "520102" + }, + { + "label": "云岩区", + "value": "520103" + }, + { + "label": "花溪区", + "value": "520111" + }, + { + "label": "乌当区", + "value": "520112" + }, + { + "label": "白云区", + "value": "520113" + }, + { + "label": "观山湖区", + "value": "520115" + }, + { + "label": "开阳县", + "value": "520121" + }, + { + "label": "息烽县", + "value": "520122" + }, + { + "label": "修文县", + "value": "520123" + }, + { + "label": "清镇市", + "value": "520181" + } + ], + [{ + "label": "钟山区", + "value": "520201" + }, + { + "label": "六枝特区", + "value": "520203" + }, + { + "label": "水城县", + "value": "520221" + }, + { + "label": "盘州市", + "value": "520281" + } + ], + [{ + "label": "红花岗区", + "value": "520302" + }, + { + "label": "汇川区", + "value": "520303" + }, + { + "label": "播州区", + "value": "520304" + }, + { + "label": "桐梓县", + "value": "520322" + }, + { + "label": "绥阳县", + "value": "520323" + }, + { + "label": "正安县", + "value": "520324" + }, + { + "label": "道真仡佬族苗族自治县", + "value": "520325" + }, + { + "label": "务川仡佬族苗族自治县", + "value": "520326" + }, + { + "label": "凤冈县", + "value": "520327" + }, + { + "label": "湄潭县", + "value": "520328" + }, + { + "label": "余庆县", + "value": "520329" + }, + { + "label": "习水县", + "value": "520330" + }, + { + "label": "赤水市", + "value": "520381" + }, + { + "label": "仁怀市", + "value": "520382" + } + ], + [{ + "label": "西秀区", + "value": "520402" + }, + { + "label": "平坝区", + "value": "520403" + }, + { + "label": "普定县", + "value": "520422" + }, + { + "label": "镇宁布依族苗族自治县", + "value": "520423" + }, + { + "label": "关岭布依族苗族自治县", + "value": "520424" + }, + { + "label": "紫云苗族布依族自治县", + "value": "520425" + } + ], + [{ + "label": "七星关区", + "value": "520502" + }, + { + "label": "大方县", + "value": "520521" + }, + { + "label": "黔西县", + "value": "520522" + }, + { + "label": "金沙县", + "value": "520523" + }, + { + "label": "织金县", + "value": "520524" + }, + { + "label": "纳雍县", + "value": "520525" + }, + { + "label": "威宁彝族回族苗族自治县", + "value": "520526" + }, + { + "label": "赫章县", + "value": "520527" + } + ], + [{ + "label": "碧江区", + "value": "520602" + }, + { + "label": "万山区", + "value": "520603" + }, + { + "label": "江口县", + "value": "520621" + }, + { + "label": "玉屏侗族自治县", + "value": "520622" + }, + { + "label": "石阡县", + "value": "520623" + }, + { + "label": "思南县", + "value": "520624" + }, + { + "label": "印江土家族苗族自治县", + "value": "520625" + }, + { + "label": "德江县", + "value": "520626" + }, + { + "label": "沿河土家族自治县", + "value": "520627" + }, + { + "label": "松桃苗族自治县", + "value": "520628" + } + ], + [{ + "label": "兴义市", + "value": "522301" + }, + { + "label": "兴仁县", + "value": "522322" + }, + { + "label": "普安县", + "value": "522323" + }, + { + "label": "晴隆县", + "value": "522324" + }, + { + "label": "贞丰县", + "value": "522325" + }, + { + "label": "望谟县", + "value": "522326" + }, + { + "label": "册亨县", + "value": "522327" + }, + { + "label": "安龙县", + "value": "522328" + } + ], + [{ + "label": "凯里市", + "value": "522601" + }, + { + "label": "黄平县", + "value": "522622" + }, + { + "label": "施秉县", + "value": "522623" + }, + { + "label": "三穗县", + "value": "522624" + }, + { + "label": "镇远县", + "value": "522625" + }, + { + "label": "岑巩县", + "value": "522626" + }, + { + "label": "天柱县", + "value": "522627" + }, + { + "label": "锦屏县", + "value": "522628" + }, + { + "label": "剑河县", + "value": "522629" + }, + { + "label": "台江县", + "value": "522630" + }, + { + "label": "黎平县", + "value": "522631" + }, + { + "label": "榕江县", + "value": "522632" + }, + { + "label": "从江县", + "value": "522633" + }, + { + "label": "雷山县", + "value": "522634" + }, + { + "label": "麻江县", + "value": "522635" + }, + { + "label": "丹寨县", + "value": "522636" + } + ], + [{ + "label": "都匀市", + "value": "522701" + }, + { + "label": "福泉市", + "value": "522702" + }, + { + "label": "荔波县", + "value": "522722" + }, + { + "label": "贵定县", + "value": "522723" + }, + { + "label": "瓮安县", + "value": "522725" + }, + { + "label": "独山县", + "value": "522726" + }, + { + "label": "平塘县", + "value": "522727" + }, + { + "label": "罗甸县", + "value": "522728" + }, + { + "label": "长顺县", + "value": "522729" + }, + { + "label": "龙里县", + "value": "522730" + }, + { + "label": "惠水县", + "value": "522731" + }, + { + "label": "三都水族自治县", + "value": "522732" + } + ] + ], + [ + [{ + "label": "五华区", + "value": "530102" + }, + { + "label": "盘龙区", + "value": "530103" + }, + { + "label": "官渡区", + "value": "530111" + }, + { + "label": "西山区", + "value": "530112" + }, + { + "label": "东川区", + "value": "530113" + }, + { + "label": "呈贡区", + "value": "530114" + }, + { + "label": "晋宁区", + "value": "530115" + }, + { + "label": "富民县", + "value": "530124" + }, + { + "label": "宜良县", + "value": "530125" + }, + { + "label": "石林彝族自治县", + "value": "530126" + }, + { + "label": "嵩明县", + "value": "530127" + }, + { + "label": "禄劝彝族苗族自治县", + "value": "530128" + }, + { + "label": "寻甸回族彝族自治县", + "value": "530129" + }, + { + "label": "安宁市", + "value": "530181" + } + ], + [{ + "label": "麒麟区", + "value": "530302" + }, + { + "label": "沾益区", + "value": "530303" + }, + { + "label": "马龙县", + "value": "530321" + }, + { + "label": "陆良县", + "value": "530322" + }, + { + "label": "师宗县", + "value": "530323" + }, + { + "label": "罗平县", + "value": "530324" + }, + { + "label": "富源县", + "value": "530325" + }, + { + "label": "会泽县", + "value": "530326" + }, + { + "label": "宣威市", + "value": "530381" + } + ], + [{ + "label": "红塔区", + "value": "530402" + }, + { + "label": "江川区", + "value": "530403" + }, + { + "label": "澄江县", + "value": "530422" + }, + { + "label": "通海县", + "value": "530423" + }, + { + "label": "华宁县", + "value": "530424" + }, + { + "label": "易门县", + "value": "530425" + }, + { + "label": "峨山彝族自治县", + "value": "530426" + }, + { + "label": "新平彝族傣族自治县", + "value": "530427" + }, + { + "label": "元江哈尼族彝族傣族自治县", + "value": "530428" + } + ], + [{ + "label": "隆阳区", + "value": "530502" + }, + { + "label": "施甸县", + "value": "530521" + }, + { + "label": "龙陵县", + "value": "530523" + }, + { + "label": "昌宁县", + "value": "530524" + }, + { + "label": "腾冲市", + "value": "530581" + } + ], + [{ + "label": "昭阳区", + "value": "530602" + }, + { + "label": "鲁甸县", + "value": "530621" + }, + { + "label": "巧家县", + "value": "530622" + }, + { + "label": "盐津县", + "value": "530623" + }, + { + "label": "大关县", + "value": "530624" + }, + { + "label": "永善县", + "value": "530625" + }, + { + "label": "绥江县", + "value": "530626" + }, + { + "label": "镇雄县", + "value": "530627" + }, + { + "label": "彝良县", + "value": "530628" + }, + { + "label": "威信县", + "value": "530629" + }, + { + "label": "水富县", + "value": "530630" + } + ], + [{ + "label": "古城区", + "value": "530702" + }, + { + "label": "玉龙纳西族自治县", + "value": "530721" + }, + { + "label": "永胜县", + "value": "530722" + }, + { + "label": "华坪县", + "value": "530723" + }, + { + "label": "宁蒗彝族自治县", + "value": "530724" + } + ], + [{ + "label": "思茅区", + "value": "530802" + }, + { + "label": "宁洱哈尼族彝族自治县", + "value": "530821" + }, + { + "label": "墨江哈尼族自治县", + "value": "530822" + }, + { + "label": "景东彝族自治县", + "value": "530823" + }, + { + "label": "景谷傣族彝族自治县", + "value": "530824" + }, + { + "label": "镇沅彝族哈尼族拉祜族自治县", + "value": "530825" + }, + { + "label": "江城哈尼族彝族自治县", + "value": "530826" + }, + { + "label": "孟连傣族拉祜族佤族自治县", + "value": "530827" + }, + { + "label": "澜沧拉祜族自治县", + "value": "530828" + }, + { + "label": "西盟佤族自治县", + "value": "530829" + } + ], + [{ + "label": "临翔区", + "value": "530902" + }, + { + "label": "凤庆县", + "value": "530921" + }, + { + "label": "云县", + "value": "530922" + }, + { + "label": "永德县", + "value": "530923" + }, + { + "label": "镇康县", + "value": "530924" + }, + { + "label": "双江拉祜族佤族布朗族傣族自治县", + "value": "530925" + }, + { + "label": "耿马傣族佤族自治县", + "value": "530926" + }, + { + "label": "沧源佤族自治县", + "value": "530927" + } + ], + [{ + "label": "楚雄市", + "value": "532301" + }, + { + "label": "双柏县", + "value": "532322" + }, + { + "label": "牟定县", + "value": "532323" + }, + { + "label": "南华县", + "value": "532324" + }, + { + "label": "姚安县", + "value": "532325" + }, + { + "label": "大姚县", + "value": "532326" + }, + { + "label": "永仁县", + "value": "532327" + }, + { + "label": "元谋县", + "value": "532328" + }, + { + "label": "武定县", + "value": "532329" + }, + { + "label": "禄丰县", + "value": "532331" + } + ], + [{ + "label": "个旧市", + "value": "532501" + }, + { + "label": "开远市", + "value": "532502" + }, + { + "label": "蒙自市", + "value": "532503" + }, + { + "label": "弥勒市", + "value": "532504" + }, + { + "label": "屏边苗族自治县", + "value": "532523" + }, + { + "label": "建水县", + "value": "532524" + }, + { + "label": "石屏县", + "value": "532525" + }, + { + "label": "泸西县", + "value": "532527" + }, + { + "label": "元阳县", + "value": "532528" + }, + { + "label": "红河县", + "value": "532529" + }, + { + "label": "金平苗族瑶族傣族自治县", + "value": "532530" + }, + { + "label": "绿春县", + "value": "532531" + }, + { + "label": "河口瑶族自治县", + "value": "532532" + } + ], + [{ + "label": "文山市", + "value": "532601" + }, + { + "label": "砚山县", + "value": "532622" + }, + { + "label": "西畴县", + "value": "532623" + }, + { + "label": "麻栗坡县", + "value": "532624" + }, + { + "label": "马关县", + "value": "532625" + }, + { + "label": "丘北县", + "value": "532626" + }, + { + "label": "广南县", + "value": "532627" + }, + { + "label": "富宁县", + "value": "532628" + } + ], + [{ + "label": "景洪市", + "value": "532801" + }, + { + "label": "勐海县", + "value": "532822" + }, + { + "label": "勐腊县", + "value": "532823" + } + ], + [{ + "label": "大理市", + "value": "532901" + }, + { + "label": "漾濞彝族自治县", + "value": "532922" + }, + { + "label": "祥云县", + "value": "532923" + }, + { + "label": "宾川县", + "value": "532924" + }, + { + "label": "弥渡县", + "value": "532925" + }, + { + "label": "南涧彝族自治县", + "value": "532926" + }, + { + "label": "巍山彝族回族自治县", + "value": "532927" + }, + { + "label": "永平县", + "value": "532928" + }, + { + "label": "云龙县", + "value": "532929" + }, + { + "label": "洱源县", + "value": "532930" + }, + { + "label": "剑川县", + "value": "532931" + }, + { + "label": "鹤庆县", + "value": "532932" + } + ], + [{ + "label": "瑞丽市", + "value": "533102" + }, + { + "label": "芒市", + "value": "533103" + }, + { + "label": "梁河县", + "value": "533122" + }, + { + "label": "盈江县", + "value": "533123" + }, + { + "label": "陇川县", + "value": "533124" + } + ], + [{ + "label": "泸水市", + "value": "533301" + }, + { + "label": "福贡县", + "value": "533323" + }, + { + "label": "贡山独龙族怒族自治县", + "value": "533324" + }, + { + "label": "兰坪白族普米族自治县", + "value": "533325" + } + ], + [{ + "label": "香格里拉市", + "value": "533401" + }, + { + "label": "德钦县", + "value": "533422" + }, + { + "label": "维西傈僳族自治县", + "value": "533423" + } + ] + ], + [ + [{ + "label": "城关区", + "value": "540102" + }, + { + "label": "堆龙德庆区", + "value": "540103" + }, + { + "label": "林周县", + "value": "540121" + }, + { + "label": "当雄县", + "value": "540122" + }, + { + "label": "尼木县", + "value": "540123" + }, + { + "label": "曲水县", + "value": "540124" + }, + { + "label": "达孜县", + "value": "540126" + }, + { + "label": "墨竹工卡县", + "value": "540127" + }, + { + "label": "格尔木藏青工业园区", + "value": "540171" + }, + { + "label": "拉萨经济技术开发区", + "value": "540172" + }, + { + "label": "西藏文化旅游创意园区", + "value": "540173" + }, + { + "label": "达孜工业园区", + "value": "540174" + } + ], + [{ + "label": "桑珠孜区", + "value": "540202" + }, + { + "label": "南木林县", + "value": "540221" + }, + { + "label": "江孜县", + "value": "540222" + }, + { + "label": "定日县", + "value": "540223" + }, + { + "label": "萨迦县", + "value": "540224" + }, + { + "label": "拉孜县", + "value": "540225" + }, + { + "label": "昂仁县", + "value": "540226" + }, + { + "label": "谢通门县", + "value": "540227" + }, + { + "label": "白朗县", + "value": "540228" + }, + { + "label": "仁布县", + "value": "540229" + }, + { + "label": "康马县", + "value": "540230" + }, + { + "label": "定结县", + "value": "540231" + }, + { + "label": "仲巴县", + "value": "540232" + }, + { + "label": "亚东县", + "value": "540233" + }, + { + "label": "吉隆县", + "value": "540234" + }, + { + "label": "聂拉木县", + "value": "540235" + }, + { + "label": "萨嘎县", + "value": "540236" + }, + { + "label": "岗巴县", + "value": "540237" + } + ], + [{ + "label": "卡若区", + "value": "540302" + }, + { + "label": "江达县", + "value": "540321" + }, + { + "label": "贡觉县", + "value": "540322" + }, + { + "label": "类乌齐县", + "value": "540323" + }, + { + "label": "丁青县", + "value": "540324" + }, + { + "label": "察雅县", + "value": "540325" + }, + { + "label": "八宿县", + "value": "540326" + }, + { + "label": "左贡县", + "value": "540327" + }, + { + "label": "芒康县", + "value": "540328" + }, + { + "label": "洛隆县", + "value": "540329" + }, + { + "label": "边坝县", + "value": "540330" + } + ], + [{ + "label": "巴宜区", + "value": "540402" + }, + { + "label": "工布江达县", + "value": "540421" + }, + { + "label": "米林县", + "value": "540422" + }, + { + "label": "墨脱县", + "value": "540423" + }, + { + "label": "波密县", + "value": "540424" + }, + { + "label": "察隅县", + "value": "540425" + }, + { + "label": "朗县", + "value": "540426" + } + ], + [{ + "label": "乃东区", + "value": "540502" + }, + { + "label": "扎囊县", + "value": "540521" + }, + { + "label": "贡嘎县", + "value": "540522" + }, + { + "label": "桑日县", + "value": "540523" + }, + { + "label": "琼结县", + "value": "540524" + }, + { + "label": "曲松县", + "value": "540525" + }, + { + "label": "措美县", + "value": "540526" + }, + { + "label": "洛扎县", + "value": "540527" + }, + { + "label": "加查县", + "value": "540528" + }, + { + "label": "隆子县", + "value": "540529" + }, + { + "label": "错那县", + "value": "540530" + }, + { + "label": "浪卡子县", + "value": "540531" + } + ], + [{ + "label": "那曲县", + "value": "542421" + }, + { + "label": "嘉黎县", + "value": "542422" + }, + { + "label": "比如县", + "value": "542423" + }, + { + "label": "聂荣县", + "value": "542424" + }, + { + "label": "安多县", + "value": "542425" + }, + { + "label": "申扎县", + "value": "542426" + }, + { + "label": "索县", + "value": "542427" + }, + { + "label": "班戈县", + "value": "542428" + }, + { + "label": "巴青县", + "value": "542429" + }, + { + "label": "尼玛县", + "value": "542430" + }, + { + "label": "双湖县", + "value": "542431" + } + ], + [{ + "label": "普兰县", + "value": "542521" + }, + { + "label": "札达县", + "value": "542522" + }, + { + "label": "噶尔县", + "value": "542523" + }, + { + "label": "日土县", + "value": "542524" + }, + { + "label": "革吉县", + "value": "542525" + }, + { + "label": "改则县", + "value": "542526" + }, + { + "label": "措勤县", + "value": "542527" + } + ] + ], + [ + [{ + "label": "新城区", + "value": "610102" + }, + { + "label": "碑林区", + "value": "610103" + }, + { + "label": "莲湖区", + "value": "610104" + }, + { + "label": "灞桥区", + "value": "610111" + }, + { + "label": "未央区", + "value": "610112" + }, + { + "label": "雁塔区", + "value": "610113" + }, + { + "label": "阎良区", + "value": "610114" + }, + { + "label": "临潼区", + "value": "610115" + }, + { + "label": "长安区", + "value": "610116" + }, + { + "label": "高陵区", + "value": "610117" + }, + { + "label": "鄠邑区", + "value": "610118" + }, + { + "label": "蓝田县", + "value": "610122" + }, + { + "label": "周至县", + "value": "610124" + } + ], + [{ + "label": "王益区", + "value": "610202" + }, + { + "label": "印台区", + "value": "610203" + }, + { + "label": "耀州区", + "value": "610204" + }, + { + "label": "宜君县", + "value": "610222" + } + ], + [{ + "label": "渭滨区", + "value": "610302" + }, + { + "label": "金台区", + "value": "610303" + }, + { + "label": "陈仓区", + "value": "610304" + }, + { + "label": "凤翔县", + "value": "610322" + }, + { + "label": "岐山县", + "value": "610323" + }, + { + "label": "扶风县", + "value": "610324" + }, + { + "label": "眉县", + "value": "610326" + }, + { + "label": "陇县", + "value": "610327" + }, + { + "label": "千阳县", + "value": "610328" + }, + { + "label": "麟游县", + "value": "610329" + }, + { + "label": "凤县", + "value": "610330" + }, + { + "label": "太白县", + "value": "610331" + } + ], + [{ + "label": "秦都区", + "value": "610402" + }, + { + "label": "杨陵区", + "value": "610403" + }, + { + "label": "渭城区", + "value": "610404" + }, + { + "label": "三原县", + "value": "610422" + }, + { + "label": "泾阳县", + "value": "610423" + }, + { + "label": "乾县", + "value": "610424" + }, + { + "label": "礼泉县", + "value": "610425" + }, + { + "label": "永寿县", + "value": "610426" + }, + { + "label": "彬县", + "value": "610427" + }, + { + "label": "长武县", + "value": "610428" + }, + { + "label": "旬邑县", + "value": "610429" + }, + { + "label": "淳化县", + "value": "610430" + }, + { + "label": "武功县", + "value": "610431" + }, + { + "label": "兴平市", + "value": "610481" + } + ], + [{ + "label": "临渭区", + "value": "610502" + }, + { + "label": "华州区", + "value": "610503" + }, + { + "label": "潼关县", + "value": "610522" + }, + { + "label": "大荔县", + "value": "610523" + }, + { + "label": "合阳县", + "value": "610524" + }, + { + "label": "澄城县", + "value": "610525" + }, + { + "label": "蒲城县", + "value": "610526" + }, + { + "label": "白水县", + "value": "610527" + }, + { + "label": "富平县", + "value": "610528" + }, + { + "label": "韩城市", + "value": "610581" + }, + { + "label": "华阴市", + "value": "610582" + } + ], + [{ + "label": "宝塔区", + "value": "610602" + }, + { + "label": "安塞区", + "value": "610603" + }, + { + "label": "延长县", + "value": "610621" + }, + { + "label": "延川县", + "value": "610622" + }, + { + "label": "子长县", + "value": "610623" + }, + { + "label": "志丹县", + "value": "610625" + }, + { + "label": "吴起县", + "value": "610626" + }, + { + "label": "甘泉县", + "value": "610627" + }, + { + "label": "富县", + "value": "610628" + }, + { + "label": "洛川县", + "value": "610629" + }, + { + "label": "宜川县", + "value": "610630" + }, + { + "label": "黄龙县", + "value": "610631" + }, + { + "label": "黄陵县", + "value": "610632" + } + ], + [{ + "label": "汉台区", + "value": "610702" + }, + { + "label": "南郑区", + "value": "610703" + }, + { + "label": "城固县", + "value": "610722" + }, + { + "label": "洋县", + "value": "610723" + }, + { + "label": "西乡县", + "value": "610724" + }, + { + "label": "勉县", + "value": "610725" + }, + { + "label": "宁强县", + "value": "610726" + }, + { + "label": "略阳县", + "value": "610727" + }, + { + "label": "镇巴县", + "value": "610728" + }, + { + "label": "留坝县", + "value": "610729" + }, + { + "label": "佛坪县", + "value": "610730" + } + ], + [{ + "label": "榆阳区", + "value": "610802" + }, + { + "label": "横山区", + "value": "610803" + }, + { + "label": "府谷县", + "value": "610822" + }, + { + "label": "靖边县", + "value": "610824" + }, + { + "label": "定边县", + "value": "610825" + }, + { + "label": "绥德县", + "value": "610826" + }, + { + "label": "米脂县", + "value": "610827" + }, + { + "label": "佳县", + "value": "610828" + }, + { + "label": "吴堡县", + "value": "610829" + }, + { + "label": "清涧县", + "value": "610830" + }, + { + "label": "子洲县", + "value": "610831" + }, + { + "label": "神木市", + "value": "610881" + } + ], + [{ + "label": "汉滨区", + "value": "610902" + }, + { + "label": "汉阴县", + "value": "610921" + }, + { + "label": "石泉县", + "value": "610922" + }, + { + "label": "宁陕县", + "value": "610923" + }, + { + "label": "紫阳县", + "value": "610924" + }, + { + "label": "岚皋县", + "value": "610925" + }, + { + "label": "平利县", + "value": "610926" + }, + { + "label": "镇坪县", + "value": "610927" + }, + { + "label": "旬阳县", + "value": "610928" + }, + { + "label": "白河县", + "value": "610929" + } + ], + [{ + "label": "商州区", + "value": "611002" + }, + { + "label": "洛南县", + "value": "611021" + }, + { + "label": "丹凤县", + "value": "611022" + }, + { + "label": "商南县", + "value": "611023" + }, + { + "label": "山阳县", + "value": "611024" + }, + { + "label": "镇安县", + "value": "611025" + }, + { + "label": "柞水县", + "value": "611026" + } + ] + ], + [ + [{ + "label": "城关区", + "value": "620102" + }, + { + "label": "七里河区", + "value": "620103" + }, + { + "label": "西固区", + "value": "620104" + }, + { + "label": "安宁区", + "value": "620105" + }, + { + "label": "红古区", + "value": "620111" + }, + { + "label": "永登县", + "value": "620121" + }, + { + "label": "皋兰县", + "value": "620122" + }, + { + "label": "榆中县", + "value": "620123" + }, + { + "label": "兰州新区", + "value": "620171" + } + ], + [{ + "label": "嘉峪关市", + "value": "620201" + }], + [{ + "label": "金川区", + "value": "620302" + }, + { + "label": "永昌县", + "value": "620321" + } + ], + [{ + "label": "白银区", + "value": "620402" + }, + { + "label": "平川区", + "value": "620403" + }, + { + "label": "靖远县", + "value": "620421" + }, + { + "label": "会宁县", + "value": "620422" + }, + { + "label": "景泰县", + "value": "620423" + } + ], + [{ + "label": "秦州区", + "value": "620502" + }, + { + "label": "麦积区", + "value": "620503" + }, + { + "label": "清水县", + "value": "620521" + }, + { + "label": "秦安县", + "value": "620522" + }, + { + "label": "甘谷县", + "value": "620523" + }, + { + "label": "武山县", + "value": "620524" + }, + { + "label": "张家川回族自治县", + "value": "620525" + } + ], + [{ + "label": "凉州区", + "value": "620602" + }, + { + "label": "民勤县", + "value": "620621" + }, + { + "label": "古浪县", + "value": "620622" + }, + { + "label": "天祝藏族自治县", + "value": "620623" + } + ], + [{ + "label": "甘州区", + "value": "620702" + }, + { + "label": "肃南裕固族自治县", + "value": "620721" + }, + { + "label": "民乐县", + "value": "620722" + }, + { + "label": "临泽县", + "value": "620723" + }, + { + "label": "高台县", + "value": "620724" + }, + { + "label": "山丹县", + "value": "620725" + } + ], + [{ + "label": "崆峒区", + "value": "620802" + }, + { + "label": "泾川县", + "value": "620821" + }, + { + "label": "灵台县", + "value": "620822" + }, + { + "label": "崇信县", + "value": "620823" + }, + { + "label": "华亭县", + "value": "620824" + }, + { + "label": "庄浪县", + "value": "620825" + }, + { + "label": "静宁县", + "value": "620826" + }, + { + "label": "平凉工业园区", + "value": "620871" + } + ], + [{ + "label": "肃州区", + "value": "620902" + }, + { + "label": "金塔县", + "value": "620921" + }, + { + "label": "瓜州县", + "value": "620922" + }, + { + "label": "肃北蒙古族自治县", + "value": "620923" + }, + { + "label": "阿克塞哈萨克族自治县", + "value": "620924" + }, + { + "label": "玉门市", + "value": "620981" + }, + { + "label": "敦煌市", + "value": "620982" + } + ], + [{ + "label": "西峰区", + "value": "621002" + }, + { + "label": "庆城县", + "value": "621021" + }, + { + "label": "环县", + "value": "621022" + }, + { + "label": "华池县", + "value": "621023" + }, + { + "label": "合水县", + "value": "621024" + }, + { + "label": "正宁县", + "value": "621025" + }, + { + "label": "宁县", + "value": "621026" + }, + { + "label": "镇原县", + "value": "621027" + } + ], + [{ + "label": "安定区", + "value": "621102" + }, + { + "label": "通渭县", + "value": "621121" + }, + { + "label": "陇西县", + "value": "621122" + }, + { + "label": "渭源县", + "value": "621123" + }, + { + "label": "临洮县", + "value": "621124" + }, + { + "label": "漳县", + "value": "621125" + }, + { + "label": "岷县", + "value": "621126" + } + ], + [{ + "label": "武都区", + "value": "621202" + }, + { + "label": "成县", + "value": "621221" + }, + { + "label": "文县", + "value": "621222" + }, + { + "label": "宕昌县", + "value": "621223" + }, + { + "label": "康县", + "value": "621224" + }, + { + "label": "西和县", + "value": "621225" + }, + { + "label": "礼县", + "value": "621226" + }, + { + "label": "徽县", + "value": "621227" + }, + { + "label": "两当县", + "value": "621228" + } + ], + [{ + "label": "临夏市", + "value": "622901" + }, + { + "label": "临夏县", + "value": "622921" + }, + { + "label": "康乐县", + "value": "622922" + }, + { + "label": "永靖县", + "value": "622923" + }, + { + "label": "广河县", + "value": "622924" + }, + { + "label": "和政县", + "value": "622925" + }, + { + "label": "东乡族自治县", + "value": "622926" + }, + { + "label": "积石山保安族东乡族撒拉族自治县", + "value": "622927" + } + ], + [{ + "label": "合作市", + "value": "623001" + }, + { + "label": "临潭县", + "value": "623021" + }, + { + "label": "卓尼县", + "value": "623022" + }, + { + "label": "舟曲县", + "value": "623023" + }, + { + "label": "迭部县", + "value": "623024" + }, + { + "label": "玛曲县", + "value": "623025" + }, + { + "label": "碌曲县", + "value": "623026" + }, + { + "label": "夏河县", + "value": "623027" + } + ] + ], + [ + [{ + "label": "城东区", + "value": "630102" + }, + { + "label": "城中区", + "value": "630103" + }, + { + "label": "城西区", + "value": "630104" + }, + { + "label": "城北区", + "value": "630105" + }, + { + "label": "大通回族土族自治县", + "value": "630121" + }, + { + "label": "湟中县", + "value": "630122" + }, + { + "label": "湟源县", + "value": "630123" + } + ], + [{ + "label": "乐都区", + "value": "630202" + }, + { + "label": "平安区", + "value": "630203" + }, + { + "label": "民和回族土族自治县", + "value": "630222" + }, + { + "label": "互助土族自治县", + "value": "630223" + }, + { + "label": "化隆回族自治县", + "value": "630224" + }, + { + "label": "循化撒拉族自治县", + "value": "630225" + } + ], + [{ + "label": "门源回族自治县", + "value": "632221" + }, + { + "label": "祁连县", + "value": "632222" + }, + { + "label": "海晏县", + "value": "632223" + }, + { + "label": "刚察县", + "value": "632224" + } + ], + [{ + "label": "同仁县", + "value": "632321" + }, + { + "label": "尖扎县", + "value": "632322" + }, + { + "label": "泽库县", + "value": "632323" + }, + { + "label": "河南蒙古族自治县", + "value": "632324" + } + ], + [{ + "label": "共和县", + "value": "632521" + }, + { + "label": "同德县", + "value": "632522" + }, + { + "label": "贵德县", + "value": "632523" + }, + { + "label": "兴海县", + "value": "632524" + }, + { + "label": "贵南县", + "value": "632525" + } + ], + [{ + "label": "玛沁县", + "value": "632621" + }, + { + "label": "班玛县", + "value": "632622" + }, + { + "label": "甘德县", + "value": "632623" + }, + { + "label": "达日县", + "value": "632624" + }, + { + "label": "久治县", + "value": "632625" + }, + { + "label": "玛多县", + "value": "632626" + } + ], + [{ + "label": "玉树市", + "value": "632701" + }, + { + "label": "杂多县", + "value": "632722" + }, + { + "label": "称多县", + "value": "632723" + }, + { + "label": "治多县", + "value": "632724" + }, + { + "label": "囊谦县", + "value": "632725" + }, + { + "label": "曲麻莱县", + "value": "632726" + } + ], + [{ + "label": "格尔木市", + "value": "632801" + }, + { + "label": "德令哈市", + "value": "632802" + }, + { + "label": "乌兰县", + "value": "632821" + }, + { + "label": "都兰县", + "value": "632822" + }, + { + "label": "天峻县", + "value": "632823" + }, + { + "label": "大柴旦行政委员会", + "value": "632857" + }, + { + "label": "冷湖行政委员会", + "value": "632858" + }, + { + "label": "茫崖行政委员会", + "value": "632859" + } + ] + ], + [ + [{ + "label": "兴庆区", + "value": "640104" + }, + { + "label": "西夏区", + "value": "640105" + }, + { + "label": "金凤区", + "value": "640106" + }, + { + "label": "永宁县", + "value": "640121" + }, + { + "label": "贺兰县", + "value": "640122" + }, + { + "label": "灵武市", + "value": "640181" + } + ], + [{ + "label": "大武口区", + "value": "640202" + }, + { + "label": "惠农区", + "value": "640205" + }, + { + "label": "平罗县", + "value": "640221" + } + ], + [{ + "label": "利通区", + "value": "640302" + }, + { + "label": "红寺堡区", + "value": "640303" + }, + { + "label": "盐池县", + "value": "640323" + }, + { + "label": "同心县", + "value": "640324" + }, + { + "label": "青铜峡市", + "value": "640381" + } + ], + [{ + "label": "原州区", + "value": "640402" + }, + { + "label": "西吉县", + "value": "640422" + }, + { + "label": "隆德县", + "value": "640423" + }, + { + "label": "泾源县", + "value": "640424" + }, + { + "label": "彭阳县", + "value": "640425" + } + ], + [{ + "label": "沙坡头区", + "value": "640502" + }, + { + "label": "中宁县", + "value": "640521" + }, + { + "label": "海原县", + "value": "640522" + } + ] + ], + [ + [{ + "label": "天山区", + "value": "650102" + }, + { + "label": "沙依巴克区", + "value": "650103" + }, + { + "label": "新市区", + "value": "650104" + }, + { + "label": "水磨沟区", + "value": "650105" + }, + { + "label": "头屯河区", + "value": "650106" + }, + { + "label": "达坂城区", + "value": "650107" + }, + { + "label": "米东区", + "value": "650109" + }, + { + "label": "乌鲁木齐县", + "value": "650121" + }, + { + "label": "乌鲁木齐经济技术开发区", + "value": "650171" + }, + { + "label": "乌鲁木齐高新技术产业开发区", + "value": "650172" + } + ], + [{ + "label": "独山子区", + "value": "650202" + }, + { + "label": "克拉玛依区", + "value": "650203" + }, + { + "label": "白碱滩区", + "value": "650204" + }, + { + "label": "乌尔禾区", + "value": "650205" + } + ], + [{ + "label": "高昌区", + "value": "650402" + }, + { + "label": "鄯善县", + "value": "650421" + }, + { + "label": "托克逊县", + "value": "650422" + } + ], + [{ + "label": "伊州区", + "value": "650502" + }, + { + "label": "巴里坤哈萨克自治县", + "value": "650521" + }, + { + "label": "伊吾县", + "value": "650522" + } + ], + [{ + "label": "昌吉市", + "value": "652301" + }, + { + "label": "阜康市", + "value": "652302" + }, + { + "label": "呼图壁县", + "value": "652323" + }, + { + "label": "玛纳斯县", + "value": "652324" + }, + { + "label": "奇台县", + "value": "652325" + }, + { + "label": "吉木萨尔县", + "value": "652327" + }, + { + "label": "木垒哈萨克自治县", + "value": "652328" + } + ], + [{ + "label": "博乐市", + "value": "652701" + }, + { + "label": "阿拉山口市", + "value": "652702" + }, + { + "label": "精河县", + "value": "652722" + }, + { + "label": "温泉县", + "value": "652723" + } + ], + [{ + "label": "库尔勒市", + "value": "652801" + }, + { + "label": "轮台县", + "value": "652822" + }, + { + "label": "尉犁县", + "value": "652823" + }, + { + "label": "若羌县", + "value": "652824" + }, + { + "label": "且末县", + "value": "652825" + }, + { + "label": "焉耆回族自治县", + "value": "652826" + }, + { + "label": "和静县", + "value": "652827" + }, + { + "label": "和硕县", + "value": "652828" + }, + { + "label": "博湖县", + "value": "652829" + }, + { + "label": "库尔勒经济技术开发区", + "value": "652871" + } + ], + [{ + "label": "阿克苏市", + "value": "652901" + }, + { + "label": "温宿县", + "value": "652922" + }, + { + "label": "库车县", + "value": "652923" + }, + { + "label": "沙雅县", + "value": "652924" + }, + { + "label": "新和县", + "value": "652925" + }, + { + "label": "拜城县", + "value": "652926" + }, + { + "label": "乌什县", + "value": "652927" + }, + { + "label": "阿瓦提县", + "value": "652928" + }, + { + "label": "柯坪县", + "value": "652929" + } + ], + [{ + "label": "阿图什市", + "value": "653001" + }, + { + "label": "阿克陶县", + "value": "653022" + }, + { + "label": "阿合奇县", + "value": "653023" + }, + { + "label": "乌恰县", + "value": "653024" + } + ], + [{ + "label": "喀什市", + "value": "653101" + }, + { + "label": "疏附县", + "value": "653121" + }, + { + "label": "疏勒县", + "value": "653122" + }, + { + "label": "英吉沙县", + "value": "653123" + }, + { + "label": "泽普县", + "value": "653124" + }, + { + "label": "莎车县", + "value": "653125" + }, + { + "label": "叶城县", + "value": "653126" + }, + { + "label": "麦盖提县", + "value": "653127" + }, + { + "label": "岳普湖县", + "value": "653128" + }, + { + "label": "伽师县", + "value": "653129" + }, + { + "label": "巴楚县", + "value": "653130" + }, + { + "label": "塔什库尔干塔吉克自治县", + "value": "653131" + } + ], + [{ + "label": "和田市", + "value": "653201" + }, + { + "label": "和田县", + "value": "653221" + }, + { + "label": "墨玉县", + "value": "653222" + }, + { + "label": "皮山县", + "value": "653223" + }, + { + "label": "洛浦县", + "value": "653224" + }, + { + "label": "策勒县", + "value": "653225" + }, + { + "label": "于田县", + "value": "653226" + }, + { + "label": "民丰县", + "value": "653227" + } + ], + [{ + "label": "伊宁市", + "value": "654002" + }, + { + "label": "奎屯市", + "value": "654003" + }, + { + "label": "霍尔果斯市", + "value": "654004" + }, + { + "label": "伊宁县", + "value": "654021" + }, + { + "label": "察布查尔锡伯自治县", + "value": "654022" + }, + { + "label": "霍城县", + "value": "654023" + }, + { + "label": "巩留县", + "value": "654024" + }, + { + "label": "新源县", + "value": "654025" + }, + { + "label": "昭苏县", + "value": "654026" + }, + { + "label": "特克斯县", + "value": "654027" + }, + { + "label": "尼勒克县", + "value": "654028" + } + ], + [{ + "label": "塔城市", + "value": "654201" + }, + { + "label": "乌苏市", + "value": "654202" + }, + { + "label": "额敏县", + "value": "654221" + }, + { + "label": "沙湾县", + "value": "654223" + }, + { + "label": "托里县", + "value": "654224" + }, + { + "label": "裕民县", + "value": "654225" + }, + { + "label": "和布克赛尔蒙古自治县", + "value": "654226" + } + ], + [{ + "label": "阿勒泰市", + "value": "654301" + }, + { + "label": "布尔津县", + "value": "654321" + }, + { + "label": "富蕴县", + "value": "654322" + }, + { + "label": "福海县", + "value": "654323" + }, + { + "label": "哈巴河县", + "value": "654324" + }, + { + "label": "青河县", + "value": "654325" + }, + { + "label": "吉木乃县", + "value": "654326" + } + ], + [{ + "label": "石河子市", + "value": "659001" + }, + { + "label": "阿拉尔市", + "value": "659002" + }, + { + "label": "图木舒克市", + "value": "659003" + }, + { + "label": "五家渠市", + "value": "659004" + }, + { + "label": "铁门关市", + "value": "659006" + } + ] + ], + [ + [{ + "label": "台北", + "value": "660101" + }], + [{ + "label": "高雄", + "value": "660201" + }], + [{ + "label": "基隆", + "value": "660301" + }], + [{ + "label": "台中", + "value": "660401" + }], + [{ + "label": "台南", + "value": "660501" + }], + [{ + "label": "新竹", + "value": "660601" + }], + [{ + "label": "嘉义", + "value": "660701" + }], + [{ + "label": "宜兰", + "value": "660801" + }], + [{ + "label": "桃园", + "value": "660901" + }], + [{ + "label": "苗栗", + "value": "661001" + }], + [{ + "label": "彰化", + "value": "661101" + }], + [{ + "label": "南投", + "value": "661201" + }], + [{ + "label": "云林", + "value": "661301" + }], + [{ + "label": "屏东", + "value": "661401" + }], + [{ + "label": "台东", + "value": "661501" + }], + [{ + "label": "花莲", + "value": "661601" + }], + [{ + "label": "澎湖", + "value": "661701" + }] + ], + [ + [{ + "label": "香港岛", + "value": "670101" + }], + [{ + "label": "九龙", + "value": "670201" + }], + [{ + "label": "新界", + "value": "670301" + }] + ], + [ + [{ + "label": "澳门半岛", + "value": "680101" + }], + [{ + "label": "氹仔岛", + "value": "680201" + }], + [{ + "label": "路环岛", + "value": "680301" + }], + [{ + "label": "路氹城", + "value": "680401" + }] + ] +] +export default areaData; diff --git a/components/city-picker/city-data/city.js b/components/city-picker/city-data/city.js new file mode 100644 index 0000000..8c1dc26 --- /dev/null +++ b/components/city-picker/city-data/city.js @@ -0,0 +1,1503 @@ +/* eslint-disable */ +var cityData = [ + [{ + "label": "市辖区", + "value": "1101" + }], + [{ + "label": "市辖区", + "value": "1201" + }], + [{ + "label": "石家庄市", + "value": "1301" + }, + { + "label": "唐山市", + "value": "1302" + }, + { + "label": "秦皇岛市", + "value": "1303" + }, + { + "label": "邯郸市", + "value": "1304" + }, + { + "label": "邢台市", + "value": "1305" + }, + { + "label": "保定市", + "value": "1306" + }, + { + "label": "张家口市", + "value": "1307" + }, + { + "label": "承德市", + "value": "1308" + }, + { + "label": "沧州市", + "value": "1309" + }, + { + "label": "廊坊市", + "value": "1310" + }, + { + "label": "衡水市", + "value": "1311" + } + ], + [{ + "label": "太原市", + "value": "1401" + }, + { + "label": "大同市", + "value": "1402" + }, + { + "label": "阳泉市", + "value": "1403" + }, + { + "label": "长治市", + "value": "1404" + }, + { + "label": "晋城市", + "value": "1405" + }, + { + "label": "朔州市", + "value": "1406" + }, + { + "label": "晋中市", + "value": "1407" + }, + { + "label": "运城市", + "value": "1408" + }, + { + "label": "忻州市", + "value": "1409" + }, + { + "label": "临汾市", + "value": "1410" + }, + { + "label": "吕梁市", + "value": "1411" + } + ], + [{ + "label": "呼和浩特市", + "value": "1501" + }, + { + "label": "包头市", + "value": "1502" + }, + { + "label": "乌海市", + "value": "1503" + }, + { + "label": "赤峰市", + "value": "1504" + }, + { + "label": "通辽市", + "value": "1505" + }, + { + "label": "鄂尔多斯市", + "value": "1506" + }, + { + "label": "呼伦贝尔市", + "value": "1507" + }, + { + "label": "巴彦淖尔市", + "value": "1508" + }, + { + "label": "乌兰察布市", + "value": "1509" + }, + { + "label": "兴安盟", + "value": "1522" + }, + { + "label": "锡林郭勒盟", + "value": "1525" + }, + { + "label": "阿拉善盟", + "value": "1529" + } + ], + [{ + "label": "沈阳市", + "value": "2101" + }, + { + "label": "大连市", + "value": "2102" + }, + { + "label": "鞍山市", + "value": "2103" + }, + { + "label": "抚顺市", + "value": "2104" + }, + { + "label": "本溪市", + "value": "2105" + }, + { + "label": "丹东市", + "value": "2106" + }, + { + "label": "锦州市", + "value": "2107" + }, + { + "label": "营口市", + "value": "2108" + }, + { + "label": "阜新市", + "value": "2109" + }, + { + "label": "辽阳市", + "value": "2110" + }, + { + "label": "盘锦市", + "value": "2111" + }, + { + "label": "铁岭市", + "value": "2112" + }, + { + "label": "朝阳市", + "value": "2113" + }, + { + "label": "葫芦岛市", + "value": "2114" + } + ], + [{ + "label": "长春市", + "value": "2201" + }, + { + "label": "吉林市", + "value": "2202" + }, + { + "label": "四平市", + "value": "2203" + }, + { + "label": "辽源市", + "value": "2204" + }, + { + "label": "通化市", + "value": "2205" + }, + { + "label": "白山市", + "value": "2206" + }, + { + "label": "松原市", + "value": "2207" + }, + { + "label": "白城市", + "value": "2208" + }, + { + "label": "延边朝鲜族自治州", + "value": "2224" + } + ], + [{ + "label": "哈尔滨市", + "value": "2301" + }, + { + "label": "齐齐哈尔市", + "value": "2302" + }, + { + "label": "鸡西市", + "value": "2303" + }, + { + "label": "鹤岗市", + "value": "2304" + }, + { + "label": "双鸭山市", + "value": "2305" + }, + { + "label": "大庆市", + "value": "2306" + }, + { + "label": "伊春市", + "value": "2307" + }, + { + "label": "佳木斯市", + "value": "2308" + }, + { + "label": "七台河市", + "value": "2309" + }, + { + "label": "牡丹江市", + "value": "2310" + }, + { + "label": "黑河市", + "value": "2311" + }, + { + "label": "绥化市", + "value": "2312" + }, + { + "label": "大兴安岭地区", + "value": "2327" + } + ], + [{ + "label": "市辖区", + "value": "3101" + }], + [{ + "label": "南京市", + "value": "3201" + }, + { + "label": "无锡市", + "value": "3202" + }, + { + "label": "徐州市", + "value": "3203" + }, + { + "label": "常州市", + "value": "3204" + }, + { + "label": "苏州市", + "value": "3205" + }, + { + "label": "南通市", + "value": "3206" + }, + { + "label": "连云港市", + "value": "3207" + }, + { + "label": "淮安市", + "value": "3208" + }, + { + "label": "盐城市", + "value": "3209" + }, + { + "label": "扬州市", + "value": "3210" + }, + { + "label": "镇江市", + "value": "3211" + }, + { + "label": "泰州市", + "value": "3212" + }, + { + "label": "宿迁市", + "value": "3213" + } + ], + [{ + "label": "杭州市", + "value": "3301" + }, + { + "label": "宁波市", + "value": "3302" + }, + { + "label": "温州市", + "value": "3303" + }, + { + "label": "嘉兴市", + "value": "3304" + }, + { + "label": "湖州市", + "value": "3305" + }, + { + "label": "绍兴市", + "value": "3306" + }, + { + "label": "金华市", + "value": "3307" + }, + { + "label": "衢州市", + "value": "3308" + }, + { + "label": "舟山市", + "value": "3309" + }, + { + "label": "台州市", + "value": "3310" + }, + { + "label": "丽水市", + "value": "3311" + } + ], + [{ + "label": "合肥市", + "value": "3401" + }, + { + "label": "芜湖市", + "value": "3402" + }, + { + "label": "蚌埠市", + "value": "3403" + }, + { + "label": "淮南市", + "value": "3404" + }, + { + "label": "马鞍山市", + "value": "3405" + }, + { + "label": "淮北市", + "value": "3406" + }, + { + "label": "铜陵市", + "value": "3407" + }, + { + "label": "安庆市", + "value": "3408" + }, + { + "label": "黄山市", + "value": "3410" + }, + { + "label": "滁州市", + "value": "3411" + }, + { + "label": "阜阳市", + "value": "3412" + }, + { + "label": "宿州市", + "value": "3413" + }, + { + "label": "六安市", + "value": "3415" + }, + { + "label": "亳州市", + "value": "3416" + }, + { + "label": "池州市", + "value": "3417" + }, + { + "label": "宣城市", + "value": "3418" + } + ], + [{ + "label": "福州市", + "value": "3501" + }, + { + "label": "厦门市", + "value": "3502" + }, + { + "label": "莆田市", + "value": "3503" + }, + { + "label": "三明市", + "value": "3504" + }, + { + "label": "泉州市", + "value": "3505" + }, + { + "label": "漳州市", + "value": "3506" + }, + { + "label": "南平市", + "value": "3507" + }, + { + "label": "龙岩市", + "value": "3508" + }, + { + "label": "宁德市", + "value": "3509" + } + ], + [{ + "label": "南昌市", + "value": "3601" + }, + { + "label": "景德镇市", + "value": "3602" + }, + { + "label": "萍乡市", + "value": "3603" + }, + { + "label": "九江市", + "value": "3604" + }, + { + "label": "新余市", + "value": "3605" + }, + { + "label": "鹰潭市", + "value": "3606" + }, + { + "label": "赣州市", + "value": "3607" + }, + { + "label": "吉安市", + "value": "3608" + }, + { + "label": "宜春市", + "value": "3609" + }, + { + "label": "抚州市", + "value": "3610" + }, + { + "label": "上饶市", + "value": "3611" + } + ], + [{ + "label": "济南市", + "value": "3701" + }, + { + "label": "青岛市", + "value": "3702" + }, + { + "label": "淄博市", + "value": "3703" + }, + { + "label": "枣庄市", + "value": "3704" + }, + { + "label": "东营市", + "value": "3705" + }, + { + "label": "烟台市", + "value": "3706" + }, + { + "label": "潍坊市", + "value": "3707" + }, + { + "label": "济宁市", + "value": "3708" + }, + { + "label": "泰安市", + "value": "3709" + }, + { + "label": "威海市", + "value": "3710" + }, + { + "label": "日照市", + "value": "3711" + }, + { + "label": "莱芜市", + "value": "3712" + }, + { + "label": "临沂市", + "value": "3713" + }, + { + "label": "德州市", + "value": "3714" + }, + { + "label": "聊城市", + "value": "3715" + }, + { + "label": "滨州市", + "value": "3716" + }, + { + "label": "菏泽市", + "value": "3717" + } + ], + [{ + "label": "郑州市", + "value": "4101" + }, + { + "label": "开封市", + "value": "4102" + }, + { + "label": "洛阳市", + "value": "4103" + }, + { + "label": "平顶山市", + "value": "4104" + }, + { + "label": "安阳市", + "value": "4105" + }, + { + "label": "鹤壁市", + "value": "4106" + }, + { + "label": "新乡市", + "value": "4107" + }, + { + "label": "焦作市", + "value": "4108" + }, + { + "label": "濮阳市", + "value": "4109" + }, + { + "label": "许昌市", + "value": "4110" + }, + { + "label": "漯河市", + "value": "4111" + }, + { + "label": "三门峡市", + "value": "4112" + }, + { + "label": "南阳市", + "value": "4113" + }, + { + "label": "商丘市", + "value": "4114" + }, + { + "label": "信阳市", + "value": "4115" + }, + { + "label": "周口市", + "value": "4116" + }, + { + "label": "驻马店市", + "value": "4117" + }, + { + "label": "省直辖县级行政区划", + "value": "4190" + } + ], + [{ + "label": "武汉市", + "value": "4201" + }, + { + "label": "黄石市", + "value": "4202" + }, + { + "label": "十堰市", + "value": "4203" + }, + { + "label": "宜昌市", + "value": "4205" + }, + { + "label": "襄阳市", + "value": "4206" + }, + { + "label": "鄂州市", + "value": "4207" + }, + { + "label": "荆门市", + "value": "4208" + }, + { + "label": "孝感市", + "value": "4209" + }, + { + "label": "荆州市", + "value": "4210" + }, + { + "label": "黄冈市", + "value": "4211" + }, + { + "label": "咸宁市", + "value": "4212" + }, + { + "label": "随州市", + "value": "4213" + }, + { + "label": "恩施土家族苗族自治州", + "value": "4228" + }, + { + "label": "省直辖县级行政区划", + "value": "4290" + } + ], + [{ + "label": "长沙市", + "value": "4301" + }, + { + "label": "株洲市", + "value": "4302" + }, + { + "label": "湘潭市", + "value": "4303" + }, + { + "label": "衡阳市", + "value": "4304" + }, + { + "label": "邵阳市", + "value": "4305" + }, + { + "label": "岳阳市", + "value": "4306" + }, + { + "label": "常德市", + "value": "4307" + }, + { + "label": "张家界市", + "value": "4308" + }, + { + "label": "益阳市", + "value": "4309" + }, + { + "label": "郴州市", + "value": "4310" + }, + { + "label": "永州市", + "value": "4311" + }, + { + "label": "怀化市", + "value": "4312" + }, + { + "label": "娄底市", + "value": "4313" + }, + { + "label": "湘西土家族苗族自治州", + "value": "4331" + } + ], + [{ + "label": "广州市", + "value": "4401" + }, + { + "label": "韶关市", + "value": "4402" + }, + { + "label": "深圳市", + "value": "4403" + }, + { + "label": "珠海市", + "value": "4404" + }, + { + "label": "汕头市", + "value": "4405" + }, + { + "label": "佛山市", + "value": "4406" + }, + { + "label": "江门市", + "value": "4407" + }, + { + "label": "湛江市", + "value": "4408" + }, + { + "label": "茂名市", + "value": "4409" + }, + { + "label": "肇庆市", + "value": "4412" + }, + { + "label": "惠州市", + "value": "4413" + }, + { + "label": "梅州市", + "value": "4414" + }, + { + "label": "汕尾市", + "value": "4415" + }, + { + "label": "河源市", + "value": "4416" + }, + { + "label": "阳江市", + "value": "4417" + }, + { + "label": "清远市", + "value": "4418" + }, + { + "label": "东莞市", + "value": "4419" + }, + { + "label": "中山市", + "value": "4420" + }, + { + "label": "潮州市", + "value": "4451" + }, + { + "label": "揭阳市", + "value": "4452" + }, + { + "label": "云浮市", + "value": "4453" + } + ], + [{ + "label": "南宁市", + "value": "4501" + }, + { + "label": "柳州市", + "value": "4502" + }, + { + "label": "桂林市", + "value": "4503" + }, + { + "label": "梧州市", + "value": "4504" + }, + { + "label": "北海市", + "value": "4505" + }, + { + "label": "防城港市", + "value": "4506" + }, + { + "label": "钦州市", + "value": "4507" + }, + { + "label": "贵港市", + "value": "4508" + }, + { + "label": "玉林市", + "value": "4509" + }, + { + "label": "百色市", + "value": "4510" + }, + { + "label": "贺州市", + "value": "4511" + }, + { + "label": "河池市", + "value": "4512" + }, + { + "label": "来宾市", + "value": "4513" + }, + { + "label": "崇左市", + "value": "4514" + } + ], + [{ + "label": "海口市", + "value": "4601" + }, + { + "label": "三亚市", + "value": "4602" + }, + { + "label": "三沙市", + "value": "4603" + }, + { + "label": "儋州市", + "value": "4604" + }, + { + "label": "省直辖县级行政区划", + "value": "4690" + } + ], + [{ + "label": "市辖区", + "value": "5001" + }, + { + "label": "县", + "value": "5002" + } + ], + [{ + "label": "成都市", + "value": "5101" + }, + { + "label": "自贡市", + "value": "5103" + }, + { + "label": "攀枝花市", + "value": "5104" + }, + { + "label": "泸州市", + "value": "5105" + }, + { + "label": "德阳市", + "value": "5106" + }, + { + "label": "绵阳市", + "value": "5107" + }, + { + "label": "广元市", + "value": "5108" + }, + { + "label": "遂宁市", + "value": "5109" + }, + { + "label": "内江市", + "value": "5110" + }, + { + "label": "乐山市", + "value": "5111" + }, + { + "label": "南充市", + "value": "5113" + }, + { + "label": "眉山市", + "value": "5114" + }, + { + "label": "宜宾市", + "value": "5115" + }, + { + "label": "广安市", + "value": "5116" + }, + { + "label": "达州市", + "value": "5117" + }, + { + "label": "雅安市", + "value": "5118" + }, + { + "label": "巴中市", + "value": "5119" + }, + { + "label": "资阳市", + "value": "5120" + }, + { + "label": "阿坝藏族羌族自治州", + "value": "5132" + }, + { + "label": "甘孜藏族自治州", + "value": "5133" + }, + { + "label": "凉山彝族自治州", + "value": "5134" + } + ], + [{ + "label": "贵阳市", + "value": "5201" + }, + { + "label": "六盘水市", + "value": "5202" + }, + { + "label": "遵义市", + "value": "5203" + }, + { + "label": "安顺市", + "value": "5204" + }, + { + "label": "毕节市", + "value": "5205" + }, + { + "label": "铜仁市", + "value": "5206" + }, + { + "label": "黔西南布依族苗族自治州", + "value": "5223" + }, + { + "label": "黔东南苗族侗族自治州", + "value": "5226" + }, + { + "label": "黔南布依族苗族自治州", + "value": "5227" + } + ], + [{ + "label": "昆明市", + "value": "5301" + }, + { + "label": "曲靖市", + "value": "5303" + }, + { + "label": "玉溪市", + "value": "5304" + }, + { + "label": "保山市", + "value": "5305" + }, + { + "label": "昭通市", + "value": "5306" + }, + { + "label": "丽江市", + "value": "5307" + }, + { + "label": "普洱市", + "value": "5308" + }, + { + "label": "临沧市", + "value": "5309" + }, + { + "label": "楚雄彝族自治州", + "value": "5323" + }, + { + "label": "红河哈尼族彝族自治州", + "value": "5325" + }, + { + "label": "文山壮族苗族自治州", + "value": "5326" + }, + { + "label": "西双版纳傣族自治州", + "value": "5328" + }, + { + "label": "大理白族自治州", + "value": "5329" + }, + { + "label": "德宏傣族景颇族自治州", + "value": "5331" + }, + { + "label": "怒江傈僳族自治州", + "value": "5333" + }, + { + "label": "迪庆藏族自治州", + "value": "5334" + } + ], + [{ + "label": "拉萨市", + "value": "5401" + }, + { + "label": "日喀则市", + "value": "5402" + }, + { + "label": "昌都市", + "value": "5403" + }, + { + "label": "林芝市", + "value": "5404" + }, + { + "label": "山南市", + "value": "5405" + }, + { + "label": "那曲地区", + "value": "5424" + }, + { + "label": "阿里地区", + "value": "5425" + } + ], + [{ + "label": "西安市", + "value": "6101" + }, + { + "label": "铜川市", + "value": "6102" + }, + { + "label": "宝鸡市", + "value": "6103" + }, + { + "label": "咸阳市", + "value": "6104" + }, + { + "label": "渭南市", + "value": "6105" + }, + { + "label": "延安市", + "value": "6106" + }, + { + "label": "汉中市", + "value": "6107" + }, + { + "label": "榆林市", + "value": "6108" + }, + { + "label": "安康市", + "value": "6109" + }, + { + "label": "商洛市", + "value": "6110" + } + ], + [{ + "label": "兰州市", + "value": "6201" + }, + { + "label": "嘉峪关市", + "value": "6202" + }, + { + "label": "金昌市", + "value": "6203" + }, + { + "label": "白银市", + "value": "6204" + }, + { + "label": "天水市", + "value": "6205" + }, + { + "label": "武威市", + "value": "6206" + }, + { + "label": "张掖市", + "value": "6207" + }, + { + "label": "平凉市", + "value": "6208" + }, + { + "label": "酒泉市", + "value": "6209" + }, + { + "label": "庆阳市", + "value": "6210" + }, + { + "label": "定西市", + "value": "6211" + }, + { + "label": "陇南市", + "value": "6212" + }, + { + "label": "临夏回族自治州", + "value": "6229" + }, + { + "label": "甘南藏族自治州", + "value": "6230" + } + ], + [{ + "label": "西宁市", + "value": "6301" + }, + { + "label": "海东市", + "value": "6302" + }, + { + "label": "海北藏族自治州", + "value": "6322" + }, + { + "label": "黄南藏族自治州", + "value": "6323" + }, + { + "label": "海南藏族自治州", + "value": "6325" + }, + { + "label": "果洛藏族自治州", + "value": "6326" + }, + { + "label": "玉树藏族自治州", + "value": "6327" + }, + { + "label": "海西蒙古族藏族自治州", + "value": "6328" + } + ], + [{ + "label": "银川市", + "value": "6401" + }, + { + "label": "石嘴山市", + "value": "6402" + }, + { + "label": "吴忠市", + "value": "6403" + }, + { + "label": "固原市", + "value": "6404" + }, + { + "label": "中卫市", + "value": "6405" + } + ], + [{ + "label": "乌鲁木齐市", + "value": "6501" + }, + { + "label": "克拉玛依市", + "value": "6502" + }, + { + "label": "吐鲁番市", + "value": "6504" + }, + { + "label": "哈密市", + "value": "6505" + }, + { + "label": "昌吉回族自治州", + "value": "6523" + }, + { + "label": "博尔塔拉蒙古自治州", + "value": "6527" + }, + { + "label": "巴音郭楞蒙古自治州", + "value": "6528" + }, + { + "label": "阿克苏地区", + "value": "6529" + }, + { + "label": "克孜勒苏柯尔克孜自治州", + "value": "6530" + }, + { + "label": "喀什地区", + "value": "6531" + }, + { + "label": "和田地区", + "value": "6532" + }, + { + "label": "伊犁哈萨克自治州", + "value": "6540" + }, + { + "label": "塔城地区", + "value": "6542" + }, + { + "label": "阿勒泰地区", + "value": "6543" + }, + { + "label": "自治区直辖县级行政区划", + "value": "6590" + } + ], + [{ + "label": "台北", + "value": "6601" + }, + { + "label": "高雄", + "value": "6602" + }, + { + "label": "基隆", + "value": "6603" + }, + { + "label": "台中", + "value": "6604" + }, + { + "label": "台南", + "value": "6605" + }, + { + "label": "新竹", + "value": "6606" + }, + { + "label": "嘉义", + "value": "6607" + }, + { + "label": "宜兰", + "value": "6608" + }, + { + "label": "桃园", + "value": "6609" + }, + { + "label": "苗栗", + "value": "6610" + }, + { + "label": "彰化", + "value": "6611" + }, + { + "label": "南投", + "value": "6612" + }, + { + "label": "云林", + "value": "6613" + }, + { + "label": "屏东", + "value": "6614" + }, + { + "label": "台东", + "value": "6615" + }, + { + "label": "花莲", + "value": "6616" + }, + { + "label": "澎湖", + "value": "6617" + } + ], + [{ + "label": "香港岛", + "value": "6701" + }, + { + "label": "九龙", + "value": "6702" + }, + { + "label": "新界", + "value": "6703" + } + ], + [{ + "label": "澳门半岛", + "value": "6801" + }, + { + "label": "氹仔岛", + "value": "6802" + }, + { + "label": "路环岛", + "value": "6803" + }, + { + "label": "路氹城", + "value": "6804" + } + ] +] +export default cityData; diff --git a/components/city-picker/city-data/province.js b/components/city-picker/city-data/province.js new file mode 100644 index 0000000..1bd680e --- /dev/null +++ b/components/city-picker/city-data/province.js @@ -0,0 +1,139 @@ +/* eslint-disable */ +var provinceData = [{ + "label": "北京市", + "value": "11" + }, + { + "label": "天津市", + "value": "12" + }, + { + "label": "河北省", + "value": "13" + }, + { + "label": "山西省", + "value": "14" + }, + { + "label": "内蒙古自治区", + "value": "15" + }, + { + "label": "辽宁省", + "value": "21" + }, + { + "label": "吉林省", + "value": "22" + }, + { + "label": "黑龙江省", + "value": "23" + }, + { + "label": "上海市", + "value": "31" + }, + { + "label": "江苏省", + "value": "32" + }, + { + "label": "浙江省", + "value": "33" + }, + { + "label": "安徽省", + "value": "34" + }, + { + "label": "福建省", + "value": "35" + }, + { + "label": "江西省", + "value": "36" + }, + { + "label": "山东省", + "value": "37" + }, + { + "label": "河南省", + "value": "41" + }, + { + "label": "湖北省", + "value": "42" + }, + { + "label": "湖南省", + "value": "43" + }, + { + "label": "广东省", + "value": "44" + }, + { + "label": "广西壮族自治区", + "value": "45" + }, + { + "label": "海南省", + "value": "46" + }, + { + "label": "重庆市", + "value": "50" + }, + { + "label": "四川省", + "value": "51" + }, + { + "label": "贵州省", + "value": "52" + }, + { + "label": "云南省", + "value": "53" + }, + { + "label": "西藏自治区", + "value": "54" + }, + { + "label": "陕西省", + "value": "61" + }, + { + "label": "甘肃省", + "value": "62" + }, + { + "label": "青海省", + "value": "63" + }, + { + "label": "宁夏回族自治区", + "value": "64" + }, + { + "label": "新疆维吾尔自治区", + "value": "65" + }, + { + "label": "台湾", + "value": "66" + }, + { + "label": "香港", + "value": "67" + }, + { + "label": "澳门", + "value": "68" + } +] +export default provinceData; diff --git a/components/city-picker/city-picker.vue b/components/city-picker/city-picker.vue new file mode 100644 index 0000000..befa3dd --- /dev/null +++ b/components/city-picker/city-picker.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/components/other-login/other-login.vue b/components/other-login/other-login.vue new file mode 100644 index 0000000..055c55c --- /dev/null +++ b/components/other-login/other-login.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/components/popup-share/popup-share.vue b/components/popup-share/popup-share.vue new file mode 100644 index 0000000..9fa6216 --- /dev/null +++ b/components/popup-share/popup-share.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..b61f63e --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..c91de4d --- /dev/null +++ b/main.js @@ -0,0 +1,31 @@ +import App from './App' + +// #ifndef VUE3 +import Vue from 'vue' +// uViewUI +import uView from '@/uni_modules/uview-ui' +Vue.use(uView) +// 引入配置文件 +import $config from "@/utils/lib/config.js" +Vue.prototype.$config = $config +// 引入助手函数 +import $tool from '@/utils/lib/tool.js' +Vue.prototype.$tool = $tool + +Vue.config.productionTip = false +App.mpType = 'app' +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { createSSRApp } from 'vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..91f1742 --- /dev/null +++ b/manifest.json @@ -0,0 +1,75 @@ +{ + "name" : "退役军人平台", + "appid" : "__UNI__F8A4991", + "description" : "本平台主要用于指导退役军人就业和创业,更好更快融入地方", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "modules" : {}, + "distribute" : { + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : { + "idfa" : false + }, + "sdkConfigs" : { + "oauth" : {} + }, + "splashscreen" : { + "androidStyle" : "common", + "iosStyle" : "storyboard" + } + } + }, + "quickapp" : {}, + "mp-weixin" : { + "appid" : "wx957ad7879a435bf2", + "setting" : { + "urlCheck" : false, + "minified" : true, + "postcss" : true, + "es6" : true + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "2" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cf83246 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,24 @@ +{ + "name": "share-bbs", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "uview-ui": "^1.8.4" + } + }, + "node_modules/uview-ui": { + "version": "1.8.4", + "resolved": "https://registry.nlark.com/uview-ui/download/uview-ui-1.8.4.tgz", + "integrity": "sha1-4yu/I3lCHTGQIuMk4ct7U4fTvUQ=" + } + }, + "dependencies": { + "uview-ui": { + "version": "1.8.4", + "resolved": "https://registry.nlark.com/uview-ui/download/uview-ui-1.8.4.tgz", + "integrity": "sha1-4yu/I3lCHTGQIuMk4ct7U4fTvUQ=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6aa57de --- /dev/null +++ b/package.json @@ -0,0 +1,3 @@ +{ + "dependencies": {} +} \ No newline at end of file diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..c3449fb --- /dev/null +++ b/pages.json @@ -0,0 +1,406 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页 + // #ifdef MP-WEIXIN + { // 首页 + "path": "pages/home/home", + "style": { + "navigationStyle": "custom" // 隐藏系统导航栏 + } + }, + // #endif + // #ifdef H5 || APP-PLUS + { // 首页 + "path": "pages/home/home", + "style": { + // App生效: + "app-plus": { + "bounce": "none", // 回弹效果 + "scrollIndicator": "none", // 隐藏滚动条 + // 导航栏 + "titleNView": { + // 搜索框 + "searchInput": { + "align": "center", + "backgroundColor": "#F7F7F7", + "borderRadius": "20px", + "placeholder": "搜索新鲜事", + "disabled": true + }, + // 按钮 + "buttons": [ + // 左边 + { + "float": "left", + "color": "#3c9cff", + "colorPressed": "#3c9cff", + "text": "\ue609", + "fontSize": "24px", + "fontSrc": "/static/font/iconfont.ttf" + }, + // 右边 + { + "float": "right", + "color": "#3c9cff", + "colorPressed": "#3c9cff", + "text": "\ue708", + "fontSize": "24px", + "fontSrc": "/static/font/iconfont.ttf" + } + ] + } + } + } + }, + // #endif + // #ifdef MP-WEIXIN + { // 首页/搜索 + "path": "pages/home/search", + "style": { + "navigationStyle": "custom" // 隐藏系统导航栏 + } + }, + // #endif + // #ifdef H5 || APP-PLUS + { // 首页/搜索 + "path": "pages/home/search", + "style": { + // App生效: + "app-plus": { + "bounce": "none", // 回弹效果 + "scrollIndicator": "none", // 隐藏滚动条 + // 导航栏 + "titleNView": { + // "autoBackButton": false, // 标题栏控件是否显示左侧返回按钮 + // 搜索框 + "searchInput": { + "align": "left", + "backgroundColor": "#F7F7F7", + "borderRadius": "20px", + "placeholder": "请输入内容", + "disabled": false + }, + // 按钮 + "buttons": [ + // 右边 + { + "float": "right", + "color": "#82848a", + "colorPressed": "#c8c9cc", + "text": "搜索", + "fontSize": "14px" + } + ] + } + } + } + }, + // #endif + // #ifdef MP-WEIXIN + { // 首页/发布 + "path": "pages/home/release", + "style": { + "navigationStyle": "custom" // 隐藏系统导航栏 + } + }, + // #endif + // #ifdef H5 || APP-PLUS + { // 首页/发布 + "path": "pages/home/release", + "style": { + "navigationBarTitleText": "", + "app-plus": { + "titleNView": false // 禁用原生导航栏 + } + } + }, + // #endif + { // 首页/详情 + "path": "pages/home/detail", + "style": { + "navigationBarTitleText": "", + "app-plus": { + "titleNView": { + "buttons": [{ + "type": "share", + "float": "right" + }] + } + } + } + }, + { // 新鲜事 + "path": "pages/news/news", + "style": { + "navigationStyle": "custom", // 隐藏系统导航栏 + // App生效: + "app-plus": { + "bounce": "none", + "titleNView": false // 隐藏系统导航栏 + } + } + }, + { // 新鲜事/话题/分类 + "path": "pages/news/news-topic-cate", + "style": { + "navigationBarTitleText": "话题分类", + "app-plus": { + "bounce": "none" + } + } + }, + { // 新鲜事/话题/详情 + "path": "pages/news/news-topic-detail", + "style": { + "navigationBarTitleText": "", + "app-plus": { + "scrollIndicator": "none", // 隐藏滚动条 + "titleNView": { + "type": "transparent", // 透明渐变 + "buttons": [{ + "type": "menu" + }] + } + } + } + }, + // #ifdef MP-WEIXIN + { // 小纸条 + "path": "pages/paper/paper", + "style": { + "navigationStyle": "custom" // 隐藏系统导航栏 + } + }, + // #endif + // #ifdef H5 || APP-PLUS + { // 小纸条 + "path": "pages/paper/paper", + "style": { + "enablePullDownRefresh": true, // 下拉刷新 + // App生效: + "app-plus": { + "titleNView": { + "titleText": "小纸条", + "buttons": [ + // 左边 + { + "float": "left", + "color": "#3c9cff", + "colorPressed": "#3c9cff", + "text": "\ue667", + "fontSize": "24px", + "fontSrc": "/static/font/iconfont.ttf" + }, + // 右边 + { + "float": "right", + "color": "#3c9cff", + "colorPressed": "#3c9cff", + "text": "\ue652", + "fontSize": "24px", + "fontSrc": "/static/font/iconfont.ttf" + } + ] + } + } + } + }, + // #endif + // #ifdef MP-WEIXIN + { // 小纸条/好友列表 + "path": "pages/paper/friend", + "style": { + "navigationStyle": "custom" // 隐藏系统导航栏 + } + }, + // #endif + // #ifdef H5 || APP-PLUS + { // 小纸条/好友列表 + "path": "pages/paper/friend", + "style": { + // App生效: + "app-plus": { + "bounce": "none", // 回弹效果 + "scrollIndicator": "none", // 隐藏滚动条 + // 动画效果 + "animationType": "slide-in-left", + // 导航栏 + "titleNView": { + // 取消返回按钮(h5页面单独用css控制) + "autoBackButton": false, + // 搜索框 + "searchInput": { + "align": "center", + "backgroundColor": "#F7F7F7", + "borderRadius": "20px", + "placeholder": "搜索用户", + "disabled": true + }, + // 按钮 + "buttons": [ + // 右边 + { + "float": "right", + "color": "#000", + "colorPressed": "#9CA3AF", + "fontSize": "15px", + "text": "取消" + } + ] + } + } + } + }, + // #endif + { // 小纸条/好友列表/聊天 + "path": "pages/paper/chat", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "app-plus": { + "bounce": "none", // 回弹效果 + "scrollIndicator": "none", // 隐藏滚动条 + // 动画效果 + "animationType": "slide-in-left", + // 导航栏 + "titleNView": { + // 取消返回按钮(h5页面单独用css控制) + "autoBackButton": false, + // 搜索框 + "searchInput": { + "align": "center", + "backgroundColor": "#F7F7F7", + "borderRadius": "20px", + "placeholder": "搜索用户", + "disabled": true + }, + // 按钮 + "buttons": [ + // 右边 + { + "float": "right", + "color": "#000", + "colorPressed": "#D1D5DB", + "text": "\ue622", + "fontSize": "24px", + "fontSrc": "/static/font/iconfont.ttf" + } + ] + } + } + } + }, + { // 我的 + "path": "pages/mine/mine", + "style": { + "navigationBarTitleText": "我的", + "navigationStyle": "custom", // 隐藏系统导航栏 + // App生效: + "app-plus": { + "titleNView":"none" + } + } + }, + { // 我的/设置 + "path": "pages/mine/set", + "style": { + "navigationBarTitleText": "设置" + } + }, { // 我的/设置/修改密码 + "path": "pages/mine/edit-pwd", + "style": { + "navigationBarTitleText": "修改密码" + } + }, { // 我的/设置/绑定邮箱 + "path": "pages/mine/bind-email", + "style": { + "navigationBarTitleText": "绑定邮箱" + } + }, { // 我的/设置/绑定邮箱 + "path": "pages/mine/edit-info", + "style": { + "navigationBarTitleText": "修改资料" + } + }, { // 我的/设置/意见反馈 + "path": "pages/mine/feedback", + "style": { + "navigationBarTitleText": "意见反馈" + } + }, { // 我的/设置/关于社区 + "path": "pages/mine/about", + "style": { + "navigationBarTitleText": "关于社区" + } + }, { // 我的/登录 + "path": "pages/mine/login", + "style": { + "navigationBarTitleText": "", + "app-plus": { + "titleNView": false + } + } + }, + { // 我的/个人空间 + "path": "pages/mine/user-space", + "style": { + "navigationBarTitleText": "个人空间", + "app-plus": { + "titleNView": { + "buttons": [{ + "type": "menu" + }] + } + } + } + } + ], + // 全局样式 + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "社交论坛", + "navigationBarBackgroundColor": "#FFFFFF", + "backgroundColor": "#FFFFFF", + "app-plus": { + "scrollIndicator": "none" + } + }, + // 底部标签栏 + "tabBar": { + "color": "#ADADAD", // tab 上的文字颜色 + "selectedColor": "#278E6F", // tab 上的文字选中时的颜色 + "backgroundColor": "#FFFFFF", // tab 的背景颜色 + "borderStyle": "black", // tabbar 上边框的颜色 + "list": [{ + "pagePath": "pages/home/home", + "text": "首页", + "iconPath": "/static/img/tabbar/home.png", + "selectedIconPath": "/static/img/tabbar/home-ed.png" + }, + { + "pagePath": "pages/news/news", + "text": "新鲜事", + "iconPath": "/static/img/tabbar/news.png", + "selectedIconPath": "/static/img/tabbar/news-ed.png" + }, + { + "pagePath": "pages/paper/paper", + "text": "小纸条", + "iconPath": "/static/img/tabbar/paper.png", + "selectedIconPath": "/static/img/tabbar/paper-ed.png" + }, + { + "pagePath": "pages/mine/mine", + "text": "我的", + "iconPath": "/static/img/tabbar/mine.png", + "selectedIconPath": "/static/img/tabbar/mine-ed.png" + } + ] + } + // "condition": { //模式配置,仅开发期间生效 + // "current": 0, //当前激活的模式(list 的索引项) + // "list": [{ + // "name": "", //模式名称 + // "path": "pages/search/search", //启动页面,必选 + // "query": "" //启动参数,在页面的onLoad函数里面得到 + // }] + // } +} diff --git a/pages/home/cpns/info-list.vue b/pages/home/cpns/info-list.vue new file mode 100644 index 0000000..28c3f77 --- /dev/null +++ b/pages/home/cpns/info-list.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/pages/home/detail.vue b/pages/home/detail.vue new file mode 100644 index 0000000..4788716 --- /dev/null +++ b/pages/home/detail.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/pages/home/home.vue b/pages/home/home.vue new file mode 100644 index 0000000..5be0d41 --- /dev/null +++ b/pages/home/home.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/pages/home/release.vue b/pages/home/release.vue new file mode 100644 index 0000000..37c81cd --- /dev/null +++ b/pages/home/release.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/pages/home/search.vue b/pages/home/search.vue new file mode 100644 index 0000000..bc29a4e --- /dev/null +++ b/pages/home/search.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/pages/mine/about.vue b/pages/mine/about.vue new file mode 100644 index 0000000..ac02877 --- /dev/null +++ b/pages/mine/about.vue @@ -0,0 +1,49 @@ + + + + + \ No newline at end of file diff --git a/pages/mine/bind-email.vue b/pages/mine/bind-email.vue new file mode 100644 index 0000000..def9df2 --- /dev/null +++ b/pages/mine/bind-email.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/pages/mine/edit-info.vue b/pages/mine/edit-info.vue new file mode 100644 index 0000000..05f72b9 --- /dev/null +++ b/pages/mine/edit-info.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/pages/mine/edit-pwd.vue b/pages/mine/edit-pwd.vue new file mode 100644 index 0000000..12d9c8a --- /dev/null +++ b/pages/mine/edit-pwd.vue @@ -0,0 +1,57 @@ + + + + + \ No newline at end of file diff --git a/pages/mine/feedback.vue b/pages/mine/feedback.vue new file mode 100644 index 0000000..6c858a0 --- /dev/null +++ b/pages/mine/feedback.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/pages/mine/login.vue b/pages/mine/login.vue new file mode 100644 index 0000000..d4b5a08 --- /dev/null +++ b/pages/mine/login.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/pages/mine/mine.vue b/pages/mine/mine.vue new file mode 100644 index 0000000..1cd22fc --- /dev/null +++ b/pages/mine/mine.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/pages/mine/set.vue b/pages/mine/set.vue new file mode 100644 index 0000000..98497ed --- /dev/null +++ b/pages/mine/set.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/pages/mine/user-space.vue b/pages/mine/user-space.vue new file mode 100644 index 0000000..61a349a --- /dev/null +++ b/pages/mine/user-space.vue @@ -0,0 +1,250 @@ + + + + + diff --git a/pages/news/cpns/news-topic-nav.vue b/pages/news/cpns/news-topic-nav.vue new file mode 100644 index 0000000..e669477 --- /dev/null +++ b/pages/news/cpns/news-topic-nav.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/pages/news/cpns/topic-list.vue b/pages/news/cpns/topic-list.vue new file mode 100644 index 0000000..fef0656 --- /dev/null +++ b/pages/news/cpns/topic-list.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/pages/news/news-topic-cate.vue b/pages/news/news-topic-cate.vue new file mode 100644 index 0000000..1727409 --- /dev/null +++ b/pages/news/news-topic-cate.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/pages/news/news-topic-detail.vue b/pages/news/news-topic-detail.vue new file mode 100644 index 0000000..a059bcf --- /dev/null +++ b/pages/news/news-topic-detail.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/pages/news/news.vue b/pages/news/news.vue new file mode 100644 index 0000000..0d7c129 --- /dev/null +++ b/pages/news/news.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/pages/paper/chat.vue b/pages/paper/chat.vue new file mode 100644 index 0000000..6b33f93 --- /dev/null +++ b/pages/paper/chat.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/pages/paper/cpns/chat-list.vue b/pages/paper/cpns/chat-list.vue new file mode 100644 index 0000000..c87aab9 --- /dev/null +++ b/pages/paper/cpns/chat-list.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/pages/paper/cpns/friend-list.vue b/pages/paper/cpns/friend-list.vue new file mode 100644 index 0000000..730b898 --- /dev/null +++ b/pages/paper/cpns/friend-list.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/pages/paper/cpns/paper-list.vue b/pages/paper/cpns/paper-list.vue new file mode 100644 index 0000000..241e55e --- /dev/null +++ b/pages/paper/cpns/paper-list.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/pages/paper/friend.vue b/pages/paper/friend.vue new file mode 100644 index 0000000..1cd6902 --- /dev/null +++ b/pages/paper/friend.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/pages/paper/paper.vue b/pages/paper/paper.vue new file mode 100644 index 0000000..6346456 --- /dev/null +++ b/pages/paper/paper.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/static/css/animate.css b/static/css/animate.css new file mode 100644 index 0000000..c3c1389 --- /dev/null +++ b/static/css/animate.css @@ -0,0 +1,4072 @@ +@charset "UTF-8";/*! + * animate.css - https://animate.style/ + * Version - 4.1.1 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2020 Animate.css + */ +:root { + --animate-duration: 1s; + --animate-delay: 1s; + --animate-repeat: 1; +} +.animate__animated { + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-duration: var(--animate-duration); + animation-duration: var(--animate-duration); + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} +.animate__animated.animate__infinite { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} +.animate__animated.animate__repeat-1 { + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + -webkit-animation-iteration-count: var(--animate-repeat); + animation-iteration-count: var(--animate-repeat); +} +.animate__animated.animate__repeat-2 { + -webkit-animation-iteration-count: calc(1 * 2); + animation-iteration-count: calc(1 * 2); + -webkit-animation-iteration-count: calc(var(--animate-repeat) * 2); + animation-iteration-count: calc(var(--animate-repeat) * 2); +} +.animate__animated.animate__repeat-3 { + -webkit-animation-iteration-count: calc(1 * 3); + animation-iteration-count: calc(1 * 3); + -webkit-animation-iteration-count: calc(var(--animate-repeat) * 3); + animation-iteration-count: calc(var(--animate-repeat) * 3); +} +.animate__animated.animate__delay-1s { + -webkit-animation-delay: 1s; + animation-delay: 1s; + -webkit-animation-delay: var(--animate-delay); + animation-delay: var(--animate-delay); +} +.animate__animated.animate__delay-2s { + -webkit-animation-delay: calc(1s * 2); + animation-delay: calc(1s * 2); + -webkit-animation-delay: calc(var(--animate-delay) * 2); + animation-delay: calc(var(--animate-delay) * 2); +} +.animate__animated.animate__delay-3s { + -webkit-animation-delay: calc(1s * 3); + animation-delay: calc(1s * 3); + -webkit-animation-delay: calc(var(--animate-delay) * 3); + animation-delay: calc(var(--animate-delay) * 3); +} +.animate__animated.animate__delay-4s { + -webkit-animation-delay: calc(1s * 4); + animation-delay: calc(1s * 4); + -webkit-animation-delay: calc(var(--animate-delay) * 4); + animation-delay: calc(var(--animate-delay) * 4); +} +.animate__animated.animate__delay-5s { + -webkit-animation-delay: calc(1s * 5); + animation-delay: calc(1s * 5); + -webkit-animation-delay: calc(var(--animate-delay) * 5); + animation-delay: calc(var(--animate-delay) * 5); +} +.animate__animated.animate__faster { + -webkit-animation-duration: calc(1s / 2); + animation-duration: calc(1s / 2); + -webkit-animation-duration: calc(var(--animate-duration) / 2); + animation-duration: calc(var(--animate-duration) / 2); +} +.animate__animated.animate__fast { + -webkit-animation-duration: calc(1s * 0.8); + animation-duration: calc(1s * 0.8); + -webkit-animation-duration: calc(var(--animate-duration) * 0.8); + animation-duration: calc(var(--animate-duration) * 0.8); +} +.animate__animated.animate__slow { + -webkit-animation-duration: calc(1s * 2); + animation-duration: calc(1s * 2); + -webkit-animation-duration: calc(var(--animate-duration) * 2); + animation-duration: calc(var(--animate-duration) * 2); +} +.animate__animated.animate__slower { + -webkit-animation-duration: calc(1s * 3); + animation-duration: calc(1s * 3); + -webkit-animation-duration: calc(var(--animate-duration) * 3); + animation-duration: calc(var(--animate-duration) * 3); +} +@media print, (prefers-reduced-motion: reduce) { + .animate__animated { + -webkit-animation-duration: 1ms !important; + animation-duration: 1ms !important; + -webkit-transition-duration: 1ms !important; + transition-duration: 1ms !important; + -webkit-animation-iteration-count: 1 !important; + animation-iteration-count: 1 !important; + } + + .animate__animated[class*='Out'] { + opacity: 0; + } +} +/* Attention seekers */ +@-webkit-keyframes bounce { + from, + 20%, + 53%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 40%, + 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -30px, 0) scaleY(1.1); + transform: translate3d(0, -30px, 0) scaleY(1.1); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -15px, 0) scaleY(1.05); + transform: translate3d(0, -15px, 0) scaleY(1.05); + } + + 80% { + -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0) scaleY(0.95); + transform: translate3d(0, 0, 0) scaleY(0.95); + } + + 90% { + -webkit-transform: translate3d(0, -4px, 0) scaleY(1.02); + transform: translate3d(0, -4px, 0) scaleY(1.02); + } +} +@keyframes bounce { + from, + 20%, + 53%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 40%, + 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -30px, 0) scaleY(1.1); + transform: translate3d(0, -30px, 0) scaleY(1.1); + } + + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -15px, 0) scaleY(1.05); + transform: translate3d(0, -15px, 0) scaleY(1.05); + } + + 80% { + -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0) scaleY(0.95); + transform: translate3d(0, 0, 0) scaleY(0.95); + } + + 90% { + -webkit-transform: translate3d(0, -4px, 0) scaleY(1.02); + transform: translate3d(0, -4px, 0) scaleY(1.02); + } +} +.animate__bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} +@-webkit-keyframes flash { + from, + 50%, + to { + opacity: 1; + } + + 25%, + 75% { + opacity: 0; + } +} +@keyframes flash { + from, + 50%, + to { + opacity: 1; + } + + 25%, + 75% { + opacity: 0; + } +} +.animate__flash { + -webkit-animation-name: flash; + animation-name: flash; +} +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +@keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +.animate__pulse { + -webkit-animation-name: pulse; + animation-name: pulse; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; +} +@-webkit-keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(0.95, 1.05, 1); + transform: scale3d(0.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, 0.95, 1); + transform: scale3d(1.05, 0.95, 1); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +@keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + -webkit-transform: scale3d(0.95, 1.05, 1); + transform: scale3d(0.95, 1.05, 1); + } + + 75% { + -webkit-transform: scale3d(1.05, 0.95, 1); + transform: scale3d(1.05, 0.95, 1); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +.animate__rubberBand { + -webkit-animation-name: rubberBand; + animation-name: rubberBand; +} +@-webkit-keyframes shakeX { + from, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, + 30%, + 50%, + 70%, + 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, + 40%, + 60%, + 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} +@keyframes shakeX { + from, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, + 30%, + 50%, + 70%, + 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + + 20%, + 40%, + 60%, + 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} +.animate__shakeX { + -webkit-animation-name: shakeX; + animation-name: shakeX; +} +@-webkit-keyframes shakeY { + from, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, + 30%, + 50%, + 70%, + 90% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 20%, + 40%, + 60%, + 80% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } +} +@keyframes shakeY { + from, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 10%, + 30%, + 50%, + 70%, + 90% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + + 20%, + 40%, + 60%, + 80% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } +} +.animate__shakeY { + -webkit-animation-name: shakeY; + animation-name: shakeY; +} +@-webkit-keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); + } + + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +@keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); + } + + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} +.animate__headShake { + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + -webkit-animation-name: headShake; + animation-name: headShake; +} +@-webkit-keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} +@keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} +.animate__swing { + -webkit-transform-origin: top center; + transform-origin: top center; + -webkit-animation-name: swing; + animation-name: swing; +} +@-webkit-keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + } + + 30%, + 50%, + 70%, + 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, + 60%, + 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +@keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + } + + 30%, + 50%, + 70%, + 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, + 60%, + 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +.animate__tada { + -webkit-animation-name: tada; + animation-name: tada; +} +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes wobble { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes wobble { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__wobble { + -webkit-animation-name: wobble; + animation-name: wobble; +} +@-webkit-keyframes jello { + from, + 11.1%, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} +@keyframes jello { + from, + 11.1%, + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + -webkit-transform: skewX(0.390625deg) skewY(0.390625deg); + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} +.animate__jello { + -webkit-animation-name: jello; + animation-name: jello; + -webkit-transform-origin: center; + transform-origin: center; +} +@-webkit-keyframes heartBeat { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 14% { + -webkit-transform: scale(1.3); + transform: scale(1.3); + } + + 28% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 42% { + -webkit-transform: scale(1.3); + transform: scale(1.3); + } + + 70% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes heartBeat { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 14% { + -webkit-transform: scale(1.3); + transform: scale(1.3); + } + + 28% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 42% { + -webkit-transform: scale(1.3); + transform: scale(1.3); + } + + 70% { + -webkit-transform: scale(1); + transform: scale(1); + } +} +.animate__heartBeat { + -webkit-animation-name: heartBeat; + animation-name: heartBeat; + -webkit-animation-duration: calc(1s * 1.3); + animation-duration: calc(1s * 1.3); + -webkit-animation-duration: calc(var(--animate-duration) * 1.3); + animation-duration: calc(var(--animate-duration) * 1.3); + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; +} +/* Back entrances */ +@-webkit-keyframes backInDown { + 0% { + -webkit-transform: translateY(-1200px) scale(0.7); + transform: translateY(-1200px) scale(0.7); + opacity: 0.7; + } + + 80% { + -webkit-transform: translateY(0px) scale(0.7); + transform: translateY(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +@keyframes backInDown { + 0% { + -webkit-transform: translateY(-1200px) scale(0.7); + transform: translateY(-1200px) scale(0.7); + opacity: 0.7; + } + + 80% { + -webkit-transform: translateY(0px) scale(0.7); + transform: translateY(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +.animate__backInDown { + -webkit-animation-name: backInDown; + animation-name: backInDown; +} +@-webkit-keyframes backInLeft { + 0% { + -webkit-transform: translateX(-2000px) scale(0.7); + transform: translateX(-2000px) scale(0.7); + opacity: 0.7; + } + + 80% { + -webkit-transform: translateX(0px) scale(0.7); + transform: translateX(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +@keyframes backInLeft { + 0% { + -webkit-transform: translateX(-2000px) scale(0.7); + transform: translateX(-2000px) scale(0.7); + opacity: 0.7; + } + + 80% { + -webkit-transform: translateX(0px) scale(0.7); + transform: translateX(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +.animate__backInLeft { + -webkit-animation-name: backInLeft; + animation-name: backInLeft; +} +@-webkit-keyframes backInRight { + 0% { + -webkit-transform: translateX(2000px) scale(0.7); + transform: translateX(2000px) scale(0.7); + opacity: 0.7; + } + + 80% { + -webkit-transform: translateX(0px) scale(0.7); + transform: translateX(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +@keyframes backInRight { + 0% { + -webkit-transform: translateX(2000px) scale(0.7); + transform: translateX(2000px) scale(0.7); + opacity: 0.7; + } + + 80% { + -webkit-transform: translateX(0px) scale(0.7); + transform: translateX(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +.animate__backInRight { + -webkit-animation-name: backInRight; + animation-name: backInRight; +} +@-webkit-keyframes backInUp { + 0% { + -webkit-transform: translateY(1200px) scale(0.7); + transform: translateY(1200px) scale(0.7); + opacity: 0.7; + } + + 80% { + -webkit-transform: translateY(0px) scale(0.7); + transform: translateY(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +@keyframes backInUp { + 0% { + -webkit-transform: translateY(1200px) scale(0.7); + transform: translateY(1200px) scale(0.7); + opacity: 0.7; + } + + 80% { + -webkit-transform: translateY(0px) scale(0.7); + transform: translateY(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } +} +.animate__backInUp { + -webkit-animation-name: backInUp; + animation-name: backInUp; +} +/* Back exits */ +@-webkit-keyframes backOutDown { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + 20% { + -webkit-transform: translateY(0px) scale(0.7); + transform: translateY(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: translateY(700px) scale(0.7); + transform: translateY(700px) scale(0.7); + opacity: 0.7; + } +} +@keyframes backOutDown { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + 20% { + -webkit-transform: translateY(0px) scale(0.7); + transform: translateY(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: translateY(700px) scale(0.7); + transform: translateY(700px) scale(0.7); + opacity: 0.7; + } +} +.animate__backOutDown { + -webkit-animation-name: backOutDown; + animation-name: backOutDown; +} +@-webkit-keyframes backOutLeft { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + 20% { + -webkit-transform: translateX(0px) scale(0.7); + transform: translateX(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: translateX(-2000px) scale(0.7); + transform: translateX(-2000px) scale(0.7); + opacity: 0.7; + } +} +@keyframes backOutLeft { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + 20% { + -webkit-transform: translateX(0px) scale(0.7); + transform: translateX(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: translateX(-2000px) scale(0.7); + transform: translateX(-2000px) scale(0.7); + opacity: 0.7; + } +} +.animate__backOutLeft { + -webkit-animation-name: backOutLeft; + animation-name: backOutLeft; +} +@-webkit-keyframes backOutRight { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + 20% { + -webkit-transform: translateX(0px) scale(0.7); + transform: translateX(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: translateX(2000px) scale(0.7); + transform: translateX(2000px) scale(0.7); + opacity: 0.7; + } +} +@keyframes backOutRight { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + 20% { + -webkit-transform: translateX(0px) scale(0.7); + transform: translateX(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: translateX(2000px) scale(0.7); + transform: translateX(2000px) scale(0.7); + opacity: 0.7; + } +} +.animate__backOutRight { + -webkit-animation-name: backOutRight; + animation-name: backOutRight; +} +@-webkit-keyframes backOutUp { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + 20% { + -webkit-transform: translateY(0px) scale(0.7); + transform: translateY(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: translateY(-700px) scale(0.7); + transform: translateY(-700px) scale(0.7); + opacity: 0.7; + } +} +@keyframes backOutUp { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + 20% { + -webkit-transform: translateY(0px) scale(0.7); + transform: translateY(0px) scale(0.7); + opacity: 0.7; + } + + 100% { + -webkit-transform: translateY(-700px) scale(0.7); + transform: translateY(-700px) scale(0.7); + opacity: 0.7; + } +} +.animate__backOutUp { + -webkit-animation-name: backOutUp; + animation-name: backOutUp; +} +/* Bouncing entrances */ +@-webkit-keyframes bounceIn { + from, + 20%, + 40%, + 60%, + 80%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); + } + + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +@keyframes bounceIn { + from, + 20%, + 40%, + 60%, + 80%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); + } + + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +.animate__bounceIn { + -webkit-animation-duration: calc(1s * 0.75); + animation-duration: calc(1s * 0.75); + -webkit-animation-duration: calc(var(--animate-duration) * 0.75); + animation-duration: calc(var(--animate-duration) * 0.75); + -webkit-animation-name: bounceIn; + animation-name: bounceIn; +} +@-webkit-keyframes bounceInDown { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0) scaleY(3); + transform: translate3d(0, -3000px, 0) scaleY(3); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0) scaleY(0.9); + transform: translate3d(0, 25px, 0) scaleY(0.9); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0) scaleY(0.95); + transform: translate3d(0, -10px, 0) scaleY(0.95); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0) scaleY(0.985); + transform: translate3d(0, 5px, 0) scaleY(0.985); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes bounceInDown { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0) scaleY(3); + transform: translate3d(0, -3000px, 0) scaleY(3); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0) scaleY(0.9); + transform: translate3d(0, 25px, 0) scaleY(0.9); + } + + 75% { + -webkit-transform: translate3d(0, -10px, 0) scaleY(0.95); + transform: translate3d(0, -10px, 0) scaleY(0.95); + } + + 90% { + -webkit-transform: translate3d(0, 5px, 0) scaleY(0.985); + transform: translate3d(0, 5px, 0) scaleY(0.985); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__bounceInDown { + -webkit-animation-name: bounceInDown; + animation-name: bounceInDown; +} +@-webkit-keyframes bounceInLeft { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0) scaleX(3); + transform: translate3d(-3000px, 0, 0) scaleX(3); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0) scaleX(1); + transform: translate3d(25px, 0, 0) scaleX(1); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0) scaleX(0.98); + transform: translate3d(-10px, 0, 0) scaleX(0.98); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0) scaleX(0.995); + transform: translate3d(5px, 0, 0) scaleX(0.995); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes bounceInLeft { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0) scaleX(3); + transform: translate3d(-3000px, 0, 0) scaleX(3); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0) scaleX(1); + transform: translate3d(25px, 0, 0) scaleX(1); + } + + 75% { + -webkit-transform: translate3d(-10px, 0, 0) scaleX(0.98); + transform: translate3d(-10px, 0, 0) scaleX(0.98); + } + + 90% { + -webkit-transform: translate3d(5px, 0, 0) scaleX(0.995); + transform: translate3d(5px, 0, 0) scaleX(0.995); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__bounceInLeft { + -webkit-animation-name: bounceInLeft; + animation-name: bounceInLeft; +} +@-webkit-keyframes bounceInRight { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0) scaleX(3); + transform: translate3d(3000px, 0, 0) scaleX(3); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0) scaleX(1); + transform: translate3d(-25px, 0, 0) scaleX(1); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0) scaleX(0.98); + transform: translate3d(10px, 0, 0) scaleX(0.98); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0) scaleX(0.995); + transform: translate3d(-5px, 0, 0) scaleX(0.995); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes bounceInRight { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0) scaleX(3); + transform: translate3d(3000px, 0, 0) scaleX(3); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0) scaleX(1); + transform: translate3d(-25px, 0, 0) scaleX(1); + } + + 75% { + -webkit-transform: translate3d(10px, 0, 0) scaleX(0.98); + transform: translate3d(10px, 0, 0) scaleX(0.98); + } + + 90% { + -webkit-transform: translate3d(-5px, 0, 0) scaleX(0.995); + transform: translate3d(-5px, 0, 0) scaleX(0.995); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__bounceInRight { + -webkit-animation-name: bounceInRight; + animation-name: bounceInRight; +} +@-webkit-keyframes bounceInUp { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0) scaleY(5); + transform: translate3d(0, 3000px, 0) scaleY(5); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0) scaleY(0.9); + transform: translate3d(0, -20px, 0) scaleY(0.9); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0) scaleY(0.95); + transform: translate3d(0, 10px, 0) scaleY(0.95); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0) scaleY(0.985); + transform: translate3d(0, -5px, 0) scaleY(0.985); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes bounceInUp { + from, + 60%, + 75%, + 90%, + to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0) scaleY(5); + transform: translate3d(0, 3000px, 0) scaleY(5); + } + + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0) scaleY(0.9); + transform: translate3d(0, -20px, 0) scaleY(0.9); + } + + 75% { + -webkit-transform: translate3d(0, 10px, 0) scaleY(0.95); + transform: translate3d(0, 10px, 0) scaleY(0.95); + } + + 90% { + -webkit-transform: translate3d(0, -5px, 0) scaleY(0.985); + transform: translate3d(0, -5px, 0) scaleY(0.985); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; +} +/* Bouncing exits */ +@-webkit-keyframes bounceOut { + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + + 50%, + 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } +} +@keyframes bounceOut { + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + + 50%, + 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } +} +.animate__bounceOut { + -webkit-animation-duration: calc(1s * 0.75); + animation-duration: calc(1s * 0.75); + -webkit-animation-duration: calc(var(--animate-duration) * 0.75); + animation-duration: calc(var(--animate-duration) * 0.75); + -webkit-animation-name: bounceOut; + animation-name: bounceOut; +} +@-webkit-keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0) scaleY(0.985); + transform: translate3d(0, 10px, 0) scaleY(0.985); + } + + 40%, + 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0) scaleY(0.9); + transform: translate3d(0, -20px, 0) scaleY(0.9); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0) scaleY(3); + transform: translate3d(0, 2000px, 0) scaleY(3); + } +} +@keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0) scaleY(0.985); + transform: translate3d(0, 10px, 0) scaleY(0.985); + } + + 40%, + 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0) scaleY(0.9); + transform: translate3d(0, -20px, 0) scaleY(0.9); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0) scaleY(3); + transform: translate3d(0, 2000px, 0) scaleY(3); + } +} +.animate__bounceOutDown { + -webkit-animation-name: bounceOutDown; + animation-name: bounceOutDown; +} +@-webkit-keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0) scaleX(0.9); + transform: translate3d(20px, 0, 0) scaleX(0.9); + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0) scaleX(2); + transform: translate3d(-2000px, 0, 0) scaleX(2); + } +} +@keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0) scaleX(0.9); + transform: translate3d(20px, 0, 0) scaleX(0.9); + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0) scaleX(2); + transform: translate3d(-2000px, 0, 0) scaleX(2); + } +} +.animate__bounceOutLeft { + -webkit-animation-name: bounceOutLeft; + animation-name: bounceOutLeft; +} +@-webkit-keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0) scaleX(0.9); + transform: translate3d(-20px, 0, 0) scaleX(0.9); + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0) scaleX(2); + transform: translate3d(2000px, 0, 0) scaleX(2); + } +} +@keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0) scaleX(0.9); + transform: translate3d(-20px, 0, 0) scaleX(0.9); + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0) scaleX(2); + transform: translate3d(2000px, 0, 0) scaleX(2); + } +} +.animate__bounceOutRight { + -webkit-animation-name: bounceOutRight; + animation-name: bounceOutRight; +} +@-webkit-keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0) scaleY(0.985); + transform: translate3d(0, -10px, 0) scaleY(0.985); + } + + 40%, + 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0) scaleY(0.9); + transform: translate3d(0, 20px, 0) scaleY(0.9); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0) scaleY(3); + transform: translate3d(0, -2000px, 0) scaleY(3); + } +} +@keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0) scaleY(0.985); + transform: translate3d(0, -10px, 0) scaleY(0.985); + } + + 40%, + 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0) scaleY(0.9); + transform: translate3d(0, 20px, 0) scaleY(0.9); + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0) scaleY(3); + transform: translate3d(0, -2000px, 0) scaleY(3); + } +} +.animate__bounceOutUp { + -webkit-animation-name: bounceOutUp; + animation-name: bounceOutUp; +} +/* Fading entrances */ +@-webkit-keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} +.animate__fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} +@-webkit-keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} +@-webkit-keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInDownBig { + -webkit-animation-name: fadeInDownBig; + animation-name: fadeInDownBig; +} +@-webkit-keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInLeft { + -webkit-animation-name: fadeInLeft; + animation-name: fadeInLeft; +} +@-webkit-keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInLeftBig { + -webkit-animation-name: fadeInLeftBig; + animation-name: fadeInLeftBig; +} +@-webkit-keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInRight { + -webkit-animation-name: fadeInRight; + animation-name: fadeInRight; +} +@-webkit-keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInRightBig { + -webkit-animation-name: fadeInRightBig; + animation-name: fadeInRightBig; +} +@-webkit-keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; +} +@-webkit-keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInUpBig { + -webkit-animation-name: fadeInUpBig; + animation-name: fadeInUpBig; +} +@-webkit-keyframes fadeInTopLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, -100%, 0); + transform: translate3d(-100%, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInTopLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, -100%, 0); + transform: translate3d(-100%, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInTopLeft { + -webkit-animation-name: fadeInTopLeft; + animation-name: fadeInTopLeft; +} +@-webkit-keyframes fadeInTopRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, -100%, 0); + transform: translate3d(100%, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInTopRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, -100%, 0); + transform: translate3d(100%, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInTopRight { + -webkit-animation-name: fadeInTopRight; + animation-name: fadeInTopRight; +} +@-webkit-keyframes fadeInBottomLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 100%, 0); + transform: translate3d(-100%, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInBottomLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 100%, 0); + transform: translate3d(-100%, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInBottomLeft { + -webkit-animation-name: fadeInBottomLeft; + animation-name: fadeInBottomLeft; +} +@-webkit-keyframes fadeInBottomRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 100%, 0); + transform: translate3d(100%, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fadeInBottomRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 100%, 0); + transform: translate3d(100%, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__fadeInBottomRight { + -webkit-animation-name: fadeInBottomRight; + animation-name: fadeInBottomRight; +} +/* Fading exits */ +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} +.animate__fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} +@-webkit-keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +@keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +.animate__fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} +@-webkit-keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} +@keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} +.animate__fadeOutDownBig { + -webkit-animation-name: fadeOutDownBig; + animation-name: fadeOutDownBig; +} +@-webkit-keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} +@keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} +.animate__fadeOutLeft { + -webkit-animation-name: fadeOutLeft; + animation-name: fadeOutLeft; +} +@-webkit-keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} +@keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} +.animate__fadeOutLeftBig { + -webkit-animation-name: fadeOutLeftBig; + animation-name: fadeOutLeftBig; +} +@-webkit-keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} +@keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} +.animate__fadeOutRight { + -webkit-animation-name: fadeOutRight; + animation-name: fadeOutRight; +} +@-webkit-keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} +@keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} +.animate__fadeOutRightBig { + -webkit-animation-name: fadeOutRightBig; + animation-name: fadeOutRightBig; +} +@-webkit-keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} +@keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} +.animate__fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} +@-webkit-keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} +@keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} +.animate__fadeOutUpBig { + -webkit-animation-name: fadeOutUpBig; + animation-name: fadeOutUpBig; +} +@-webkit-keyframes fadeOutTopLeft { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(-100%, -100%, 0); + transform: translate3d(-100%, -100%, 0); + } +} +@keyframes fadeOutTopLeft { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(-100%, -100%, 0); + transform: translate3d(-100%, -100%, 0); + } +} +.animate__fadeOutTopLeft { + -webkit-animation-name: fadeOutTopLeft; + animation-name: fadeOutTopLeft; +} +@-webkit-keyframes fadeOutTopRight { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(100%, -100%, 0); + transform: translate3d(100%, -100%, 0); + } +} +@keyframes fadeOutTopRight { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(100%, -100%, 0); + transform: translate3d(100%, -100%, 0); + } +} +.animate__fadeOutTopRight { + -webkit-animation-name: fadeOutTopRight; + animation-name: fadeOutTopRight; +} +@-webkit-keyframes fadeOutBottomRight { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(100%, 100%, 0); + transform: translate3d(100%, 100%, 0); + } +} +@keyframes fadeOutBottomRight { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(100%, 100%, 0); + transform: translate3d(100%, 100%, 0); + } +} +.animate__fadeOutBottomRight { + -webkit-animation-name: fadeOutBottomRight; + animation-name: fadeOutBottomRight; +} +@-webkit-keyframes fadeOutBottomLeft { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 100%, 0); + transform: translate3d(-100%, 100%, 0); + } +} +@keyframes fadeOutBottomLeft { + from { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 100%, 0); + transform: translate3d(-100%, 100%, 0); + } +} +.animate__fadeOutBottomLeft { + -webkit-animation-name: fadeOutBottomLeft; + animation-name: fadeOutBottomLeft; +} +/* Flippers */ +@-webkit-keyframes flip { + from { + -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) + rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) + rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) + rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) + rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0) + rotate3d(0, 1, 0, 0deg); + transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0) + rotate3d(0, 1, 0, 0deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + to { + -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg); + transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} +@keyframes flip { + from { + -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg); + transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 40% { + -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) + rotate3d(0, 1, 0, -190deg); + transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) + rotate3d(0, 1, 0, -190deg); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + + 50% { + -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) + rotate3d(0, 1, 0, -170deg); + transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px) + rotate3d(0, 1, 0, -170deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 80% { + -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0) + rotate3d(0, 1, 0, 0deg); + transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0) + rotate3d(0, 1, 0, 0deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + to { + -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg); + transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } +} +.animate__animated.animate__flip { + -webkit-backface-visibility: visible; + backface-visibility: visible; + -webkit-animation-name: flip; + animation-name: flip; +} +@-webkit-keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} +@keyframes flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} +.animate__flipInX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInX; + animation-name: flipInX; +} +@-webkit-keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} +@keyframes flipInY { + from { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + + 40% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + transform: perspective(400px) rotate3d(0, 1, 0, -20deg); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + + 60% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + transform: perspective(400px) rotate3d(0, 1, 0, 10deg); + opacity: 1; + } + + 80% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + transform: perspective(400px) rotate3d(0, 1, 0, -5deg); + } + + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} +.animate__flipInY { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipInY; + animation-name: flipInY; +} +@-webkit-keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} +@keyframes flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} +.animate__flipOutX { + -webkit-animation-duration: calc(1s * 0.75); + animation-duration: calc(1s * 0.75); + -webkit-animation-duration: calc(var(--animate-duration) * 0.75); + animation-duration: calc(var(--animate-duration) * 0.75); + -webkit-animation-name: flipOutX; + animation-name: flipOutX; + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; +} +@-webkit-keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} +@keyframes flipOutY { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + + 30% { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + transform: perspective(400px) rotate3d(0, 1, 0, -15deg); + opacity: 1; + } + + to { + -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + transform: perspective(400px) rotate3d(0, 1, 0, 90deg); + opacity: 0; + } +} +.animate__flipOutY { + -webkit-animation-duration: calc(1s * 0.75); + animation-duration: calc(1s * 0.75); + -webkit-animation-duration: calc(var(--animate-duration) * 0.75); + animation-duration: calc(var(--animate-duration) * 0.75); + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation-name: flipOutY; + animation-name: flipOutY; +} +/* Lightspeed */ +@-webkit-keyframes lightSpeedInRight { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes lightSpeedInRight { + from { + -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg); + transform: translate3d(100%, 0, 0) skewX(-30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(20deg); + transform: skewX(20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(-5deg); + transform: skewX(-5deg); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__lightSpeedInRight { + -webkit-animation-name: lightSpeedInRight; + animation-name: lightSpeedInRight; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; +} +@-webkit-keyframes lightSpeedInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0) skewX(30deg); + transform: translate3d(-100%, 0, 0) skewX(30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(-20deg); + transform: skewX(-20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(5deg); + transform: skewX(5deg); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes lightSpeedInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0) skewX(30deg); + transform: translate3d(-100%, 0, 0) skewX(30deg); + opacity: 0; + } + + 60% { + -webkit-transform: skewX(-20deg); + transform: skewX(-20deg); + opacity: 1; + } + + 80% { + -webkit-transform: skewX(5deg); + transform: skewX(5deg); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__lightSpeedInLeft { + -webkit-animation-name: lightSpeedInLeft; + animation-name: lightSpeedInLeft; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; +} +@-webkit-keyframes lightSpeedOutRight { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} +@keyframes lightSpeedOutRight { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(100%, 0, 0) skewX(30deg); + transform: translate3d(100%, 0, 0) skewX(30deg); + opacity: 0; + } +} +.animate__lightSpeedOutRight { + -webkit-animation-name: lightSpeedOutRight; + animation-name: lightSpeedOutRight; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; +} +@-webkit-keyframes lightSpeedOutLeft { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(-100%, 0, 0) skewX(-30deg); + transform: translate3d(-100%, 0, 0) skewX(-30deg); + opacity: 0; + } +} +@keyframes lightSpeedOutLeft { + from { + opacity: 1; + } + + to { + -webkit-transform: translate3d(-100%, 0, 0) skewX(-30deg); + transform: translate3d(-100%, 0, 0) skewX(-30deg); + opacity: 0; + } +} +.animate__lightSpeedOutLeft { + -webkit-animation-name: lightSpeedOutLeft; + animation-name: lightSpeedOutLeft; + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; +} +/* Rotating entrances */ +@-webkit-keyframes rotateIn { + from { + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +@keyframes rotateIn { + from { + -webkit-transform: rotate3d(0, 0, 1, -200deg); + transform: rotate3d(0, 0, 1, -200deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +.animate__rotateIn { + -webkit-animation-name: rotateIn; + animation-name: rotateIn; + -webkit-transform-origin: center; + transform-origin: center; +} +@-webkit-keyframes rotateInDownLeft { + from { + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +@keyframes rotateInDownLeft { + from { + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +.animate__rotateInDownLeft { + -webkit-animation-name: rotateInDownLeft; + animation-name: rotateInDownLeft; + -webkit-transform-origin: left bottom; + transform-origin: left bottom; +} +@-webkit-keyframes rotateInDownRight { + from { + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +@keyframes rotateInDownRight { + from { + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +.animate__rotateInDownRight { + -webkit-animation-name: rotateInDownRight; + animation-name: rotateInDownRight; + -webkit-transform-origin: right bottom; + transform-origin: right bottom; +} +@-webkit-keyframes rotateInUpLeft { + from { + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +@keyframes rotateInUpLeft { + from { + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +.animate__rotateInUpLeft { + -webkit-animation-name: rotateInUpLeft; + animation-name: rotateInUpLeft; + -webkit-transform-origin: left bottom; + transform-origin: left bottom; +} +@-webkit-keyframes rotateInUpRight { + from { + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +@keyframes rotateInUpRight { + from { + -webkit-transform: rotate3d(0, 0, 1, -90deg); + transform: rotate3d(0, 0, 1, -90deg); + opacity: 0; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} +.animate__rotateInUpRight { + -webkit-animation-name: rotateInUpRight; + animation-name: rotateInUpRight; + -webkit-transform-origin: right bottom; + transform-origin: right bottom; +} +/* Rotating exits */ +@-webkit-keyframes rotateOut { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} +@keyframes rotateOut { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 200deg); + transform: rotate3d(0, 0, 1, 200deg); + opacity: 0; + } +} +.animate__rotateOut { + -webkit-animation-name: rotateOut; + animation-name: rotateOut; + -webkit-transform-origin: center; + transform-origin: center; +} +@-webkit-keyframes rotateOutDownLeft { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} +@keyframes rotateOutDownLeft { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + opacity: 0; + } +} +.animate__rotateOutDownLeft { + -webkit-animation-name: rotateOutDownLeft; + animation-name: rotateOutDownLeft; + -webkit-transform-origin: left bottom; + transform-origin: left bottom; +} +@-webkit-keyframes rotateOutDownRight { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} +@keyframes rotateOutDownRight { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} +.animate__rotateOutDownRight { + -webkit-animation-name: rotateOutDownRight; + animation-name: rotateOutDownRight; + -webkit-transform-origin: right bottom; + transform-origin: right bottom; +} +@-webkit-keyframes rotateOutUpLeft { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} +@keyframes rotateOutUpLeft { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + opacity: 0; + } +} +.animate__rotateOutUpLeft { + -webkit-animation-name: rotateOutUpLeft; + animation-name: rotateOutUpLeft; + -webkit-transform-origin: left bottom; + transform-origin: left bottom; +} +@-webkit-keyframes rotateOutUpRight { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} +@keyframes rotateOutUpRight { + from { + opacity: 1; + } + + to { + -webkit-transform: rotate3d(0, 0, 1, 90deg); + transform: rotate3d(0, 0, 1, 90deg); + opacity: 0; + } +} +.animate__rotateOutUpRight { + -webkit-animation-name: rotateOutUpRight; + animation-name: rotateOutUpRight; + -webkit-transform-origin: right bottom; + transform-origin: right bottom; +} +/* Specials */ +@-webkit-keyframes hinge { + 0% { + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, + 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, + 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} +@keyframes hinge { + 0% { + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 20%, + 60% { + -webkit-transform: rotate3d(0, 0, 1, 80deg); + transform: rotate3d(0, 0, 1, 80deg); + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + } + + 40%, + 80% { + -webkit-transform: rotate3d(0, 0, 1, 60deg); + transform: rotate3d(0, 0, 1, 60deg); + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + opacity: 1; + } + + to { + -webkit-transform: translate3d(0, 700px, 0); + transform: translate3d(0, 700px, 0); + opacity: 0; + } +} +.animate__hinge { + -webkit-animation-duration: calc(1s * 2); + animation-duration: calc(1s * 2); + -webkit-animation-duration: calc(var(--animate-duration) * 2); + animation-duration: calc(var(--animate-duration) * 2); + -webkit-animation-name: hinge; + animation-name: hinge; + -webkit-transform-origin: top left; + transform-origin: top left; +} +@-webkit-keyframes jackInTheBox { + from { + opacity: 0; + -webkit-transform: scale(0.1) rotate(30deg); + transform: scale(0.1) rotate(30deg); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + } + + 50% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); + } + + 70% { + -webkit-transform: rotate(3deg); + transform: rotate(3deg); + } + + to { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +@keyframes jackInTheBox { + from { + opacity: 0; + -webkit-transform: scale(0.1) rotate(30deg); + transform: scale(0.1) rotate(30deg); + -webkit-transform-origin: center bottom; + transform-origin: center bottom; + } + + 50% { + -webkit-transform: rotate(-10deg); + transform: rotate(-10deg); + } + + 70% { + -webkit-transform: rotate(3deg); + transform: rotate(3deg); + } + + to { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} +.animate__jackInTheBox { + -webkit-animation-name: jackInTheBox; + animation-name: jackInTheBox; +} +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes rollIn { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); + } + + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__rollIn { + -webkit-animation-name: rollIn; + animation-name: rollIn; +} +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} +@keyframes rollOut { + from { + opacity: 1; + } + + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); + } +} +.animate__rollOut { + -webkit-animation-name: rollOut; + animation-name: rollOut; +} +/* Zooming entrances */ +@-webkit-keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + 50% { + opacity: 1; + } +} +@keyframes zoomIn { + from { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + 50% { + opacity: 1; + } +} +.animate__zoomIn { + -webkit-animation-name: zoomIn; + animation-name: zoomIn; +} +@-webkit-keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +@keyframes zoomInDown { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +.animate__zoomInDown { + -webkit-animation-name: zoomInDown; + animation-name: zoomInDown; +} +@-webkit-keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +@keyframes zoomInLeft { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +.animate__zoomInLeft { + -webkit-animation-name: zoomInLeft; + animation-name: zoomInLeft; +} +@-webkit-keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +@keyframes zoomInRight { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +.animate__zoomInRight { + -webkit-animation-name: zoomInRight; + animation-name: zoomInRight; +} +@-webkit-keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +@keyframes zoomInUp { + from { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + 60% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +.animate__zoomInUp { + -webkit-animation-name: zoomInUp; + animation-name: zoomInUp; +} +/* Zooming exits */ +@-webkit-keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + to { + opacity: 0; + } +} +@keyframes zoomOut { + from { + opacity: 1; + } + + 50% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + + to { + opacity: 0; + } +} +.animate__zoomOut { + -webkit-animation-name: zoomOut; + animation-name: zoomOut; +} +@-webkit-keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +@keyframes zoomOutDown { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +.animate__zoomOutDown { + -webkit-animation-name: zoomOutDown; + animation-name: zoomOutDown; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} +@-webkit-keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); + transform: scale(0.1) translate3d(-2000px, 0, 0); + } +} +@keyframes zoomOutLeft { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0); + transform: scale(0.1) translate3d(-2000px, 0, 0); + } +} +.animate__zoomOutLeft { + -webkit-animation-name: zoomOutLeft; + animation-name: zoomOutLeft; + -webkit-transform-origin: left center; + transform-origin: left center; +} +@-webkit-keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); + transform: scale(0.1) translate3d(2000px, 0, 0); + } +} +@keyframes zoomOutRight { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); + } + + to { + opacity: 0; + -webkit-transform: scale(0.1) translate3d(2000px, 0, 0); + transform: scale(0.1) translate3d(2000px, 0, 0); + } +} +.animate__zoomOutRight { + -webkit-animation-name: zoomOutRight; + animation-name: zoomOutRight; + -webkit-transform-origin: right center; + transform-origin: right center; +} +@-webkit-keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +@keyframes zoomOutUp { + 40% { + opacity: 1; + -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); + -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); + } + + to { + opacity: 0; + -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); + -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); + } +} +.animate__zoomOutUp { + -webkit-animation-name: zoomOutUp; + animation-name: zoomOutUp; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} +/* Sliding entrances */ +@-webkit-keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__slideInDown { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; +} +@-webkit-keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__slideInLeft { + -webkit-animation-name: slideInLeft; + animation-name: slideInLeft; +} +@-webkit-keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__slideInRight { + -webkit-animation-name: slideInRight; + animation-name: slideInRight; +} +@-webkit-keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.animate__slideInUp { + -webkit-animation-name: slideInUp; + animation-name: slideInUp; +} +/* Sliding exits */ +@-webkit-keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +@keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +.animate__slideOutDown { + -webkit-animation-name: slideOutDown; + animation-name: slideOutDown; +} +@-webkit-keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} +@keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} +.animate__slideOutLeft { + -webkit-animation-name: slideOutLeft; + animation-name: slideOutLeft; +} +@-webkit-keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} +@keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} +.animate__slideOutRight { + -webkit-animation-name: slideOutRight; + animation-name: slideOutRight; +} +@-webkit-keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} +@keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} +.animate__slideOutUp { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; +} diff --git a/static/css/iconfont.css b/static/css/iconfont.css new file mode 100644 index 0000000..d5f03ad --- /dev/null +++ b/static/css/iconfont.css @@ -0,0 +1,225 @@ +@font-face { + font-family: "iconfont"; + src: url('~@/static/font/iconfont.woff2') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.iconrenzheng:before { + content: "\e63f"; +} + +.iconshenhe:before { + content: "\e69a"; +} + +.iconweibo1:before { + content: "\e73c"; +} + +.iconshejiaotubiao-02:before { + content: "\e642"; +} + +.iconweixin1:before { + content: "\e607"; +} + +.iconQQ:before { + content: "\fed8"; +} + +.iconduoren:before { + content: "\e667"; +} + +.iconfenxiang:before { + content: "\e67f"; +} + +.iconremen:before { + content: "\e8f4"; +} + +.iconhuati:before { + content: "\e659"; +} + +.iconcaidan:before { + content: "\e652"; +} + +.icontupian:before { + content: "\e60b"; +} + +.iconbi:before { + content: "\e602"; +} + +.iconbofang:before { + content: "\e611"; +} + +.iconzanting:before { + content: "\e614"; +} + +.iconz-nolike:before { + content: "\e6c0"; +} + +.iconz-nolikeFill:before { + content: "\e6c2"; +} + +.iconthumbsup:before { + content: "\e66e"; +} + +.iconxiaoxi3:before { + content: "\e627"; +} + +.iconfabu:before { + content: "\e876"; +} + +.iconshoucang:before { + content: "\e610"; +} + +.icondianzan:before { + content: "\e60c"; +} + +.iconxuanze:before { + content: "\e619"; +} + +.iconshezhi1:before { + content: "\e618"; +} + +.iconxuanze1:before { + content: "\e625"; +} + +.iconsousuo:before { + content: "\e6b9"; +} + +.iconliulan:before { + content: "\e648"; +} + +.iconicon-test:before { + content: "\e61e"; +} + +.icontianjia:before { + content: "\e69d"; +} + +.iconguanbi1:before { + content: "\e69e"; +} + +.iconshoucang1:before { + content: "\e626"; +} + +.iconxiaoxi1:before { + content: "\e61d"; +} + +.iconpinglun:before { + content: "\e60f"; +} + +.iconxiaoxi:before { + content: "\e613"; +} + +.iconxiala2:before { + content: "\e698"; +} + +.iconshuaxin:before { + content: "\e63d"; +} + +.iconxingbie-nan:before { + content: "\e615"; +} + +.iconxingbie-nv:before { + content: "\e616"; +} + +.iconhuiyuan:before { + content: "\e61c"; +} + +.iconsaomiaoerweima:before { + content: "\e666"; +} + +.iconshanchu:before { + content: "\e7aa"; +} + +.iconhoutui:before { + content: "\e621"; +} + +.iconqianjin:before { + content: "\e624"; +} + +.iconguanbi:before { + content: "\e61a"; +} + +.iconjia:before { + content: "\e641"; +} + +.iconliaotian:before { + content: "\e60e"; +} + +.iconqiandao:before { + content: "\e609"; +} + +.iconPensyumaobi:before { + content: "\e708"; +} + +.iconshouye1:before { + content: "\e600"; +} + +.iconshezhi:before { + content: "\e623"; +} + +.icondizhitiao:before { + content: "\e679"; +} + +.iconwode:before { + content: "\e622"; +} + +.icondongtai:before { + content: "\e6ba"; +} + diff --git a/static/css/thinco.scss b/static/css/thinco.scss new file mode 100644 index 0000000..1671480 --- /dev/null +++ b/static/css/thinco.scss @@ -0,0 +1,620 @@ +// thinco样式库 + +/* ============ 初始化 ============*/ +page { + background-color: #fff; + font-size: 24rpx; +} + +/* ============ 样式 ============*/ +// 状态栏高度 +.status-bar {height: var(--status-bar-height);width: 100%;} +// 内容区域距离顶部的距离 +.window-top {height: var(--window-top);width: 100%;} +// 内容区域距离底部的距离 +.window-bottom {height: var(--window-bottom);width: 100%;} + +// 页面 +.wrap-page { + display: flex; + flex: 1; + flex-direction: column; + background-color: #F4F6F6; +} + +// 卡片 +.wrap-card { + background-color: #FFFFFF; + padding: 20rpx; + border-radius: 10rpx; +} + +// 列表 +.wrap-list { + padding: 20rpx; + .list-title { + font-size: 36rpx; + color: #000000; + display: flex; + font-weight: 500; + flex-direction: row; + margin-bottom: 16rpx; + } + .list-content { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + } +} + +// 标签 +.wrap-tag { + display: inline-block; + border-radius: 5rpx; + padding: 5rpx; + &.tag-dark { + border: 1px solid #303133; + color: #606266; + &.plain { + background-color: #F0F0F0; + } + } + &.tag-blue { + border: 1px solid #4AA3FF; + color: #3C9CFF; + &.plain { + background-color: #ECF5FF; + } + } + &.tag-green { + border: 1px solid #5AC725; + color: #73CF45; + &.plain { + background-color: #ECFDF5; + } + } + &.tag-red { + border: 1px solid #F56C6C; + color: #F67979; + &.plain { + background-color: #FEF0F0; + } + } + &.tag-yellow { + border: 1px solid #F9AE3D; + color: #F9AE3D; + &.plain { + background-color: #FDF6EC; + } + } +} + +// 底部操作栏 +.wrap-bottom-bar { + + // 操作栏占位符 + .bar-placeholder { + height: 100rpx; + width: 100%; + } + // 操作栏内容 + .bar-content { + background-color: #fff; + border-top: 2rpx solid $uni-border-color2; + position: fixed; + left: 0; + right: 0; + bottom: 0; + height: 85rpx; + display: flex; + justify-content: center; + align-items: center; + } +} + +/* ============ 颜色 ============*/ +// 常用颜色 +$border-color: #E5E7EB; // 主边框颜色(灰色) + +// 其他颜色 +$color:( + // 灰色 + gray-50:#F9FAFB, + gray-100:#F3F4F6, + gray-200:#E5E7EB, + gray-300:#D1D5DB, + gray-400:#9CA3AF, + gray-500:#6B7280, + gray-600:#4B5563, + gray-700:#374151, + gray-800:#1F2937, + gray-900:#111827, + // 红色 + red-50:#FEF2F2, + red-100:#FEE2E2, + red-200:#FECACA, + red-300:#FCA5A5, + red-400:#F87171, + red-500:#EF4444, + red-600:#DC2626, + red-700:#B91C1C, + red-800:#991B1B, + red-900:#7F1D1D, + // 黄色 + yellow-50:#FFFBEB, + yellow-100:#FEF3C7, + yellow-200:#FDE68A, + yellow-300:#FCD34D, + yellow-400:#FBBF24, + yellow-500:#F59E0B, + yellow-600:#D97706, + yellow-700:#B45309, + yellow-800:#92400E, + yellow-900:#78350F, + // 橘色 + orange-50:#fff7ed, + orange-100:#ffedd5, + orange-200:#fed7aa, + orange-300:#fdba74, + orange-400:#fb923c, + orange-500:#f97316, + orange-600:#ea580c, + orange-700:#c2410c, + orange-800:#9a3412, + orange-900:#7c2d12, + // 绿色 + green-50:#ECFDF5, + green-100:#D1FAE5, + green-200:#A7F3D0, + green-300:#6EE7B7, + green-400:#34D399, + green-500:#10B981, + green-600:#059669, + green-700:#047857, + green-800:#065F46, + green-900:#064E3B, + // 蓝色 + blue-50:#EFF6FF, + blue-100:#DBEAFE, + blue-200:#BFDBFE, + blue-300:#93C5FD, + blue-400:#60A5FA, + blue-500:#3B82F6, + blue-600:#2563EB, + blue-700:#1D4ED8, + blue-800:#1E40AF, + blue-900:#1E3A8A, + // 紫色 + purple-50:#F5F3FF, + purple-100:#EDE9FE, + purple-200:#DDD6FE, + purple-300:#C4B5FD, + purple-400:#A78BFA, + purple-500:#8B5CF6, + purple-600:#7C3AED, + purple-700:#6D28D9, + purple-800:#5B21B6, + purple-900:#4C1D95, + // 粉色 + pink-50:#fdf2f8, + pink-100:#fce7f3, + pink-200:#fbcfe8, + pink-300:#f9a8d4, + pink-400:#f472b6, + pink-500:#ec4899, + pink-600:#db2777, + pink-700:#be185d, + pink-800:#9d174d, + pink-900:#831843 +); +// 文本、边框、背景 +@each $key,$val in $color { + //文本颜色 + .text-#{$key} { + color: #{$val}!important; + } + //边框颜色 + .border-#{$key} { + border-color: #{$val}!important; + } + //背景颜色 + .bg-#{$key} { + background-color: #{$val}!important; + } +} +// 文本/图标/背景 +.text-green {color: #01906c;} +.text-white {color: #fff;} +.text-black {color: #000;} +.text-blue {color: #279cff;} +.text-gray {color: #9CA3AF;} +.text-yellow {color: #FAAD14;} +.text-red {color: #e45656;} +.bg-white {background-color: #fff;} +.bg-blue {background-color: #279cff;} +.bg-gray {background-color: #F2F2F2;} + +/* ============ 布局 ============*/ + +// box +.box-border { box-sizing: border-box;} +.box-content { box-sizing: content-box;} +// 显示 +.block { display: block !important;} +.inline-block { display: inline-block !important;} +.inline { display: inline;} +.flex { display: flex !important;} +.hidden { display: none !important;} +// 溢出 +.overflow-hidden { overflow: hidden;} +.overflow-scroll { overflow: scroll;} +.overflow-x-hidden { overflow-x: hidden;} +.overflow-y-hidden { overflow-y: hidden;} +.overflow-x-scroll { overflow-x: scroll;} +.overflow-y-scroll { overflow-y: scroll;} +// 定位 +.static { position: static;} +.relative{ position: relative;} +.absolute{ position: absolute;} +.fixed{ position: fixed;} +.sticky{ position: static;} +.top-0{ top: 0; } +.right-0{ right: 0; } +.bottom-0{ bottom: 0; } +.left-0{ left: 0; } +.top-10{ top: 10rpx; } +.right-10{ right: 10rpx; } +.bottom-10{ bottom: 10rpx; } +.left-10{ left: 10rpx; } +.top-20{ top: 20rpx; } +.right-20{ right: 20rpx; } +.bottom-20{ bottom: 20rpx; } +.left-20{ left: 20rpx; } +.top-1-2{ top: 50%; } +.top-1-3{ top: 33.333333%; } +.top-2-3{ top: 66.666667%; } +.top-1-4{ top: 25%; } +.top-2-4{ top: 50%; } +.top-3-4{ top: 75%; } +.top-full{ top: 100%; } +.right-1-2{ right: 50%; } +.right-1-3{ right: 33.333333%; } +.right-2-3{ right: 66.666667%; } +.right-1-4{ right: 25%; } +.right-2-4{ right: 50%; } +.right-3-4{ right: 75%; } +.right-full{ right: 100%; } +.bottom-1-2{ bottom: 50%; } +.bottom-1-3{ bottom: 33.333333%; } +.bottom-2-3{ bottom: 66.666667%; } +.bottom-1-4{ bottom: 25%; } +.bottom-2-4{ bottom: 50%; } +.bottom-3-4{ bottom: 75%; } +.bottom-full{ bottom: 100%; } +.left-1-2{ left: 50%; } +.left-1-3{ left: 33.333333%; } +.left-2-3{ left: 66.666667%; } +.left-1-4{ left: 25%; } +.left-2-4{ left: 50%; } +.left-3-4{ left: 75%; } +.left-full{ left: 100%; } +// 可见性 +.visible { visibility: visible;} +.invisible { visibility: hidden;} +// 优先级 +.z-0 { z-index: 0;} +.z-10 { z-index: 10;} +.z-20 { z-index: 20;} +.z-30 { z-index: 30;} +.z-40 { z-index: 40;} +.z-50 { z-index: 50;} +.z-auto { z-index: auto;} + +// FLEXBOX 布局 + +// 方向 +.flex-row { flex-direction: row !important;} +.flex-row-reverse { flex-direction: row-reverse !important;} +.flex-col { flex-direction: column !important;} +.flex-col-reverse { flex-direction: column-reverse !important;} +// 换行 +.flex-wrap { flex-wrap: wrap !important;} +.flex-wrap-reverse { flex-wrap: wrap-reverse !important;} +.flex-nowrap { flex-wrap: nowrap !important;} +// 控制 flex 项目放大和缩小 +.flex-1 { flex: 1 1 0% !important;} +.flex-none { flex: none !important;} +// 控制 flex 项目放大的功能类 +.flex-grow-0 { flex-grow: 0 !important;} +.flex-grow { flex-grow: 1 !important;} +// 控制 flex 项目缩小的功能类 +.flex-shrink-0 { flex-shrink: 0 !important;} +.flex-shrink { flex-shrink: 1 !important;} +// justify-content用于控制 flex 和 grid 项目如何沿着容器的主轴定位的功能类 +.justify-start { justify-content: flex-start !important;} +.justify-end { justify-content: flex-end !important;} +.justify-center { justify-content: center !important;} +.justify-between { justify-content: space-between !important;} +.justify-around { justify-content: space-around !important;} +.justify-evenly { justify-content: space-evenly !important;} +// align-items用于控制 Flex 和网格项如何沿着容器的横轴定位的功能类 +.items-start { align-items: flex-start !important;} +.items-end {align-items: flex-end !important;} +.items-center {align-items: center !important;} +.items-baseline { align-items: baseline !important;} +.items-stretch { align-items: stretch !important;} + +/* ============ 间距 ============*/ + +// 上下左右的内外边距:0 - 80(递增数:2,含尾数为5的数) +@for $i from 0 through 80 { + // 只要双数和能被5除尽的数 + @if $i % 2 == 0 or $i % 5 == 0 { + // 定义外边距,结果如:m-30 + .m-#{$i} { + margin: $i + rpx!important; + } + // 定义内边距,结果如:p-30 + .p-#{$i} { + padding: $i + rpx!important; + } + @each $short, $long in l left, t top, r right, b bottom { + // 定义外边距,结果如: ml-30 + .m#{$short}-#{$i} { + margin-#{$long}: $i + rpx!important; + } + // 定义内边距 + .p#{$short}-#{$i} { + padding-#{$long}: $i + rpx!important; + } + } + } +} +// 水平和垂直的内外边距:0 - 80(递增数:5) +@for $i from 0 through 16 { + $var: $i * 5; + .mx-#{$var} { + margin-left: $var + rpx!important; + margin-right: $var + rpx!important; + } + .my-#{$var} { + margin-top: $var + rpx!important; + margin-bottom: $var + rpx!important; + } + .px-#{$var} { + padding-left: $var + rpx!important; + padding-right: $var + rpx!important; + } + .py-#{$var} { + padding-top: $var + rpx!important; + padding-bottom: $var + rpx!important; + } +} +// 自动填充的内外边距 +@each $short, $long in l left, t top, r right, b bottom { + // 定义外边距 + .m#{$short}-auto { + margin-#{$long}: auto!important; + } + // 定义内边距 + .p#{$short}-auto { + padding-#{$long}: auto!important; + } +} +.mx-auto { + margin-left: auto; + margin-right: auto; +} +.my-auto { + margin-top: auto; + margin-bottom: auto; +} + +/* ============ 尺寸 ============*/ + +// 高度 +.h-1-2 { height: 50%;} +.h-1-3 { height: 33.333333%;} +.h-2-3 { height: 66.666667%;} +.h-1-4 { height: 25%;} +.h-2-4 { height: 50%;} +.h-3-4 { height: 75%;} +.h-1-5 { height: 20%;} +.h-2-5 { height: 40%;} +.h-3-5 { height: 60%;} +.h-4-5 { height: 80%;} +.h-1-6 { height: 16.666667%;} +.h-2-6 { height: 33.333333%;} +.h-3-6 { height: 50%;} +.h-4-6 { height: 66.666667%;} +.h-5-6 { height: 83.333333%;} +.h-full{ height: 100%;} +.h-screen{ height: 100vh;} +// 宽度 +.w-1-2 { width: 50%;} +.w-1-3 { width: 33.333333%;} +.w-2-3 { width: 66.666667%;} +.w-1-4 { width: 25%;} +.w-2-4 { width: 50%;} +.w-3-4 { width: 75%;} +.w-1-5 { width: 20%;} +.w-2-5 { width: 40%;} +.w-3-5 { width: 60%;} +.w-4-5 { width: 80%;} +.w-1-6 { width: 16.666667%;} +.w-2-6 { width: 33.333333%;} +.w-3-6 { width: 50%;} +.w-4-6 { width: 66.666667%;} +.w-5-6 { width: 83.333333%;} +.w-1-12 { width: 8.333333%;} +.w-2-12 { width: 16.666667%;} +.w-3-12 { width: 25%;} +.w-4-12 { width: 33.333333%;} +.w-5-12 { width: 41.666667%;} +.w-6-12 { width: 50%;} +.w-7-12 { width: 58.333333%;} +.w-8-12 { width: 66.666667%;} +.w-9-12 { width: 75%} +.w-10-12 { width: 83.333333%;} +.w-11-12 { width: 91.666667%;} +.w-full{ width: 100%;} +.w-screen{ width: 100vh;} + +@for $i from 1 through 10 { + $var: $i * 10; + .w-#{$var} { + width: #{$var+'%'}; + } +} +@for $i from 1 through 19 { + $var: $i * 5; + .w-#{$var} { + width: #{$var+'%'}; + } +} + + +/* ============ 字体文本 ============*/ + +// 大小 +// 数值形式(取偶数) +@for $i from 20 through 60 { + @if $i % 2 == 0 { + .text-#{$i} { + font-size: $i + rpx; + } + } +} +// 粗细 +.font-thin { + font-weight: 100; +} +.font-extralight { + font-weight: 200; +} +.font-light { + font-weight: 300; +} +.font-normal { + font-weight: 400; +} +.font-medium { + font-weight: 500; +} +.font-semibold { + font-weight: 600; +} +.font-bold { + font-weight: 700; +} +.font-extrabold { + font-weight: 800; +} +.font-black { + font-weight: 900; +} +// 行高 +.leading-0{ line-height: 0!important; } +.leading-05{ line-height: 0.5!important;} +.leading-10{ line-height: 1!important; } +.leading-12{ line-height: 1.2!important; } +.leading-15{ line-height: 1.5!important; } +.leading-20{ line-height: 2!important; } +.leading-30{ line-height: 3!important; } +// 文本对齐 +.text-left { text-align: left!important;} +.text-center { text-align: center!important;} +.text-right { text-align: right!important;} +.text-justify { text-align: justify!important;} +// 文本溢出 +.line-1 { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.line-2 { + -webkit-line-clamp: 2; +} +.line-3 { + -webkit-line-clamp: 3; +} +.line-4 { + -webkit-line-clamp: 4; +} +.line-5 { + -webkit-line-clamp: 5; +} +.line-2, .line-3, .line-4, .line-5 { + overflow: hidden; + word-break: break-all; + text-overflow: ellipsis; + display: -webkit-box; // 弹性伸缩盒 + -webkit-box-orient: vertical; // 设置伸缩盒子元素排列方式 +} +// 换行 +.break-normal { overflow-wrap: normal;word-break: normal;} +.break-words { overflow-wrap: break-word;} // 在长单词或 URL 地址内部进行换行 +.break-all { word-break: break-all;} // 在单词内换行 +// 文本修饰 +.underline { text-decoration-line: underline; } +.overline { text-decoration-line: overline; } +.line-through { text-decoration-line: line-through; } +.no-underline { text-decoration-line: no-underline; } +// 下划线位置 +.underline-offset-auto { text-underline-offset: auto; } +.underline-offset-0 { text-underline-offset: 0px; } +.underline-offset-1 { text-underline-offset: 1px; } +.underline-offset-2 { text-underline-offset: 2px; } +.underline-offset-4 { text-underline-offset: 4px; } +.underline-offset-8 { text-underline-offset: 8px; } + +/* ============ 边框 ============*/ + +// 圆角 +.rounded-none { border-radius: 0px !important;} +.rounded { border-radius: 5rpx !important; } +.rounded-10{ border-radius: 10rpx !important; } +.rounded-20{ border-radius: 20rpx !important; } +.rounded-30{ border-radius: 30rpx !important; } +.rounded-50{ border-radius: 50rpx !important; } +.rounded-full{ border-radius:100% !important; } +// 边框 +@each $var in left, right, top, bottom { + // 边框,结果如:border-l + .border-#{str-slice($var,0,1)}{ + border-#{$var}-width: 1rpx; + border-#{$var}-style: solid; + border-#{$var}-color: $border-color; + } + // 边框为0,结果如:border-l-0 + .border-#{str-slice($var,0,1)}-0{ + border-#{$var}-width: 0; + } +} +.border{ border-width: 1rpx; border-style: solid; border-color: $border-color;} +.border-0{ border-width: 0 !important; } + +/* ============ 效果 ============*/ +// 阴影 +.shadow-sm { + box-shadow: 0 2rpx 4rpx rgba(114, 130, 138, 0.2)!important; +} +.shadow { + box-shadow: 0 8rpx 16rpx rgba(114, 130, 138, 0.2)!important; +} +.shadow-lg { + box-shadow: 0 16rpx 48rpx rgba(114, 130, 138, 0.2)!important; +} +// 透明度 +.opacity-0 { opacity: 0;} +.opacity-10 { opacity: 0.1;} +.opacity-20 { opacity: 0.2;} +.opacity-30 { opacity: 0.3;} +.opacity-40 { opacity: 0.4;} +.opacity-50 { opacity: 0.5;} +.opacity-60 { opacity: 0.6;} +.opacity-70 { opacity: 0.7;} +.opacity-80 { opacity: 0.8;} +.opacity-90 { opacity: 0.9;} +.opacity-100 { opacity: 1;} \ No newline at end of file diff --git a/static/font/iconfont.ttf b/static/font/iconfont.ttf new file mode 100644 index 0000000..7bc47e8 Binary files /dev/null and b/static/font/iconfont.ttf differ diff --git a/static/font/iconfont.woff b/static/font/iconfont.woff new file mode 100644 index 0000000..4429eb8 Binary files /dev/null and b/static/font/iconfont.woff differ diff --git a/static/font/iconfont.woff2 b/static/font/iconfont.woff2 new file mode 100644 index 0000000..c92be6b Binary files /dev/null and b/static/font/iconfont.woff2 differ diff --git a/static/img/demo/01.svg b/static/img/demo/01.svg new file mode 100644 index 0000000..6a9c846 --- /dev/null +++ b/static/img/demo/01.svg @@ -0,0 +1,1489 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/02.svg b/static/img/demo/02.svg new file mode 100644 index 0000000..325f476 --- /dev/null +++ b/static/img/demo/02.svg @@ -0,0 +1,1842 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/03.svg b/static/img/demo/03.svg new file mode 100644 index 0000000..9996a2b --- /dev/null +++ b/static/img/demo/03.svg @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/04.svg b/static/img/demo/04.svg new file mode 100644 index 0000000..f5ccec4 --- /dev/null +++ b/static/img/demo/04.svg @@ -0,0 +1,1283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/05.svg b/static/img/demo/05.svg new file mode 100644 index 0000000..038a162 --- /dev/null +++ b/static/img/demo/05.svg @@ -0,0 +1,2931 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/06.svg b/static/img/demo/06.svg new file mode 100644 index 0000000..1d4ff65 --- /dev/null +++ b/static/img/demo/06.svg @@ -0,0 +1,580 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/07.svg b/static/img/demo/07.svg new file mode 100644 index 0000000..45a7b72 --- /dev/null +++ b/static/img/demo/07.svg @@ -0,0 +1,876 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/08.svg b/static/img/demo/08.svg new file mode 100644 index 0000000..23aa36d --- /dev/null +++ b/static/img/demo/08.svg @@ -0,0 +1,4687 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/09.svg b/static/img/demo/09.svg new file mode 100644 index 0000000..075b9a3 --- /dev/null +++ b/static/img/demo/09.svg @@ -0,0 +1,12123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/10.svg b/static/img/demo/10.svg new file mode 100644 index 0000000..f7d81bd --- /dev/null +++ b/static/img/demo/10.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/11.svg b/static/img/demo/11.svg new file mode 100644 index 0000000..29eeb22 --- /dev/null +++ b/static/img/demo/11.svg @@ -0,0 +1,54 @@ + + + + 植物-芭蕉叶 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/12.svg b/static/img/demo/12.svg new file mode 100644 index 0000000..287878a --- /dev/null +++ b/static/img/demo/12.svg @@ -0,0 +1,26 @@ + + + + 植物-大叶盆 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/13.svg b/static/img/demo/13.svg new file mode 100644 index 0000000..715dc8f --- /dev/null +++ b/static/img/demo/13.svg @@ -0,0 +1,33 @@ + + + + 植物-芦荟草 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/14.svg b/static/img/demo/14.svg new file mode 100644 index 0000000..e079982 --- /dev/null +++ b/static/img/demo/14.svg @@ -0,0 +1,19 @@ + + + + 植物-盆栽1 + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/15.svg b/static/img/demo/15.svg new file mode 100644 index 0000000..37248ba --- /dev/null +++ b/static/img/demo/15.svg @@ -0,0 +1,22 @@ + + + + 植物-双紫叶 + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/16.svg b/static/img/demo/16.svg new file mode 100644 index 0000000..260953d --- /dev/null +++ b/static/img/demo/16.svg @@ -0,0 +1,59 @@ + + + + 植物-水草 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/17.svg b/static/img/demo/17.svg new file mode 100644 index 0000000..5913365 --- /dev/null +++ b/static/img/demo/17.svg @@ -0,0 +1,21 @@ + + + + 植物-仙人球 + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/18.svg b/static/img/demo/18.svg new file mode 100644 index 0000000..cdde317 --- /dev/null +++ b/static/img/demo/18.svg @@ -0,0 +1,79 @@ + + + + 植物-小花盆叶 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/19.svg b/static/img/demo/19.svg new file mode 100644 index 0000000..8c99329 --- /dev/null +++ b/static/img/demo/19.svg @@ -0,0 +1,63 @@ + + + + 植物-小叶草 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/20.svg b/static/img/demo/20.svg new file mode 100644 index 0000000..f9af8b5 --- /dev/null +++ b/static/img/demo/20.svg @@ -0,0 +1,22 @@ + + + + 植物-圆红花盆栽 + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/21.svg b/static/img/demo/21.svg new file mode 100644 index 0000000..f73d0ed --- /dev/null +++ b/static/img/demo/21.svg @@ -0,0 +1,39 @@ + + + + 植物-紫色盆 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/22.svg b/static/img/demo/22.svg new file mode 100644 index 0000000..1a872dd --- /dev/null +++ b/static/img/demo/22.svg @@ -0,0 +1,105 @@ + + + + 植物-棕盆绿叶 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/demo/autumn.svg b/static/img/demo/autumn.svg new file mode 100644 index 0000000..b6b2751 --- /dev/null +++ b/static/img/demo/autumn.svg @@ -0,0 +1,1144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/demo/spring.svg b/static/img/demo/spring.svg new file mode 100644 index 0000000..af882f6 --- /dev/null +++ b/static/img/demo/spring.svg @@ -0,0 +1 @@ +春天 \ No newline at end of file diff --git a/static/img/demo/summer.svg b/static/img/demo/summer.svg new file mode 100644 index 0000000..4281630 --- /dev/null +++ b/static/img/demo/summer.svg @@ -0,0 +1 @@ +夏天 \ No newline at end of file diff --git a/static/img/demo/winter.svg b/static/img/demo/winter.svg new file mode 100644 index 0000000..9516507 --- /dev/null +++ b/static/img/demo/winter.svg @@ -0,0 +1,1582 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/header/01.svg b/static/img/header/01.svg new file mode 100644 index 0000000..8a45b35 --- /dev/null +++ b/static/img/header/01.svg @@ -0,0 +1,67 @@ + + + + 包菜+西红柿+丝瓜 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/02.svg b/static/img/header/02.svg new file mode 100644 index 0000000..78532ea --- /dev/null +++ b/static/img/header/02.svg @@ -0,0 +1,74 @@ + + + + 菠萝+芒果+香蕉 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/03.svg b/static/img/header/03.svg new file mode 100644 index 0000000..d141887 --- /dev/null +++ b/static/img/header/03.svg @@ -0,0 +1,81 @@ + + + + 草莓+柠檬 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/04.svg b/static/img/header/04.svg new file mode 100644 index 0000000..72cd4fc --- /dev/null +++ b/static/img/header/04.svg @@ -0,0 +1,74 @@ + + + + 橙子+猕猴桃 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/05.svg b/static/img/header/05.svg new file mode 100644 index 0000000..b85f3f6 --- /dev/null +++ b/static/img/header/05.svg @@ -0,0 +1,71 @@ + + + +  胡萝卜+南瓜+香菇 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/06.svg b/static/img/header/06.svg new file mode 100644 index 0000000..94461c7 --- /dev/null +++ b/static/img/header/06.svg @@ -0,0 +1,58 @@ + + + + 花菜+豆角+土豆 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/07.svg b/static/img/header/07.svg new file mode 100644 index 0000000..1b316fa --- /dev/null +++ b/static/img/header/07.svg @@ -0,0 +1,174 @@ + + + + 荔枝+火龙果 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/08.svg b/static/img/header/08.svg new file mode 100644 index 0000000..0ba78fa --- /dev/null +++ b/static/img/header/08.svg @@ -0,0 +1,94 @@ + + + + 苹果+梨子 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/09.svg b/static/img/header/09.svg new file mode 100644 index 0000000..5001da4 --- /dev/null +++ b/static/img/header/09.svg @@ -0,0 +1,83 @@ + + + + 西瓜+蓝莓+樱桃 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/10.svg b/static/img/header/10.svg new file mode 100644 index 0000000..e060c75 --- /dev/null +++ b/static/img/header/10.svg @@ -0,0 +1,121 @@ + + + + 玉米+辣椒+藕 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/11.svg b/static/img/header/11.svg new file mode 100644 index 0000000..cc95d82 --- /dev/null +++ b/static/img/header/11.svg @@ -0,0 +1,90 @@ + + + + 茄子+洋葱+红萝卜 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/12.svg b/static/img/header/12.svg new file mode 100644 index 0000000..bb0808f --- /dev/null +++ b/static/img/header/12.svg @@ -0,0 +1,109 @@ + + + + 葡萄+木瓜 + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/header/a.svg b/static/img/header/a.svg new file mode 100644 index 0000000..7a67d50 --- /dev/null +++ b/static/img/header/a.svg @@ -0,0 +1,707 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/header/b.svg b/static/img/header/b.svg new file mode 100644 index 0000000..5e4556d --- /dev/null +++ b/static/img/header/b.svg @@ -0,0 +1,1849 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/header/c.svg b/static/img/header/c.svg new file mode 100644 index 0000000..a7f8d6d --- /dev/null +++ b/static/img/header/c.svg @@ -0,0 +1,1501 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/header/d.svg b/static/img/header/d.svg new file mode 100644 index 0000000..be88a31 --- /dev/null +++ b/static/img/header/d.svg @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/list/01.svg b/static/img/list/01.svg new file mode 100644 index 0000000..606c4a3 --- /dev/null +++ b/static/img/list/01.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/02.svg b/static/img/list/02.svg new file mode 100644 index 0000000..75b12eb --- /dev/null +++ b/static/img/list/02.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/03.svg b/static/img/list/03.svg new file mode 100644 index 0000000..6d25e1d --- /dev/null +++ b/static/img/list/03.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit5 \ No newline at end of file diff --git a/static/img/list/04.svg b/static/img/list/04.svg new file mode 100644 index 0000000..05bfc0d --- /dev/null +++ b/static/img/list/04.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/05.svg b/static/img/list/05.svg new file mode 100644 index 0000000..aa620f4 --- /dev/null +++ b/static/img/list/05.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/06.svg b/static/img/list/06.svg new file mode 100644 index 0000000..d7182d3 --- /dev/null +++ b/static/img/list/06.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/07.svg b/static/img/list/07.svg new file mode 100644 index 0000000..ae527af --- /dev/null +++ b/static/img/list/07.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/08.svg b/static/img/list/08.svg new file mode 100644 index 0000000..633e512 --- /dev/null +++ b/static/img/list/08.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/09.svg b/static/img/list/09.svg new file mode 100644 index 0000000..44ebe89 --- /dev/null +++ b/static/img/list/09.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/10.svg b/static/img/list/10.svg new file mode 100644 index 0000000..c7e8151 --- /dev/null +++ b/static/img/list/10.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/11.svg b/static/img/list/11.svg new file mode 100644 index 0000000..eff9e96 --- /dev/null +++ b/static/img/list/11.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/list/12.svg b/static/img/list/12.svg new file mode 100644 index 0000000..7b6e9cc --- /dev/null +++ b/static/img/list/12.svg @@ -0,0 +1 @@ +Belanja - E-comerce Illustrstion Kit \ No newline at end of file diff --git a/static/img/logo.png b/static/img/logo.png new file mode 100644 index 0000000..b5771e2 Binary files /dev/null and b/static/img/logo.png differ diff --git a/static/img/share/pyq.svg b/static/img/share/pyq.svg new file mode 100644 index 0000000..7585fe7 --- /dev/null +++ b/static/img/share/pyq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/share/qq.svg b/static/img/share/qq.svg new file mode 100644 index 0000000..d1f4c5d --- /dev/null +++ b/static/img/share/qq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/share/rz.svg b/static/img/share/rz.svg new file mode 100644 index 0000000..c6aaf22 --- /dev/null +++ b/static/img/share/rz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/share/wb.svg b/static/img/share/wb.svg new file mode 100644 index 0000000..1f9eac6 --- /dev/null +++ b/static/img/share/wb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/share/wx.svg b/static/img/share/wx.svg new file mode 100644 index 0000000..c4dc56c --- /dev/null +++ b/static/img/share/wx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/tabbar/home-ed.png b/static/img/tabbar/home-ed.png new file mode 100644 index 0000000..3380ba6 Binary files /dev/null and b/static/img/tabbar/home-ed.png differ diff --git a/static/img/tabbar/home.png b/static/img/tabbar/home.png new file mode 100644 index 0000000..a87e8db Binary files /dev/null and b/static/img/tabbar/home.png differ diff --git a/static/img/tabbar/mine-ed.png b/static/img/tabbar/mine-ed.png new file mode 100644 index 0000000..bc3f5df Binary files /dev/null and b/static/img/tabbar/mine-ed.png differ diff --git a/static/img/tabbar/mine.png b/static/img/tabbar/mine.png new file mode 100644 index 0000000..efda49a Binary files /dev/null and b/static/img/tabbar/mine.png differ diff --git a/static/img/tabbar/news-ed.png b/static/img/tabbar/news-ed.png new file mode 100644 index 0000000..25bb027 Binary files /dev/null and b/static/img/tabbar/news-ed.png differ diff --git a/static/img/tabbar/news.png b/static/img/tabbar/news.png new file mode 100644 index 0000000..5e429af Binary files /dev/null and b/static/img/tabbar/news.png differ diff --git a/static/img/tabbar/paper-ed.png b/static/img/tabbar/paper-ed.png new file mode 100644 index 0000000..2d855f2 Binary files /dev/null and b/static/img/tabbar/paper-ed.png differ diff --git a/static/img/tabbar/paper.png b/static/img/tabbar/paper.png new file mode 100644 index 0000000..8a4565d Binary files /dev/null and b/static/img/tabbar/paper.png differ diff --git a/static/profile/1.jpg b/static/profile/1.jpg new file mode 100644 index 0000000..129331e Binary files /dev/null and b/static/profile/1.jpg differ diff --git a/static/profile/2.jpg b/static/profile/2.jpg new file mode 100644 index 0000000..3388ad3 Binary files /dev/null and b/static/profile/2.jpg differ diff --git a/static/profile/3.jpg b/static/profile/3.jpg new file mode 100644 index 0000000..9aac2b8 Binary files /dev/null and b/static/profile/3.jpg differ diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..4509b9f --- /dev/null +++ b/uni.scss @@ -0,0 +1,83 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 引入uView的全局SCSS主题文件 */ +@import '@/uni_modules/uview-ui/theme.scss'; + +/* 颜色变量 */ +$uni-color-green: #3c9cff;// 主题色 +$uni-color-pink: #ec4899; // 粉色 +$uni-color-blue: #3B82F6; // 蓝色 + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-gray:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-gray:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color1:#c8c7cc; +$uni-border-color2:#F3F4F6; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px; diff --git a/uni_modules/uni-data-picker/changelog.md b/uni_modules/uni-data-picker/changelog.md new file mode 100644 index 0000000..8451fb3 --- /dev/null +++ b/uni_modules/uni-data-picker/changelog.md @@ -0,0 +1,66 @@ +## 1.0.8(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.7(2022-07-06) +- 优化 pc端图标位置不正确的问题 +## 1.0.6(2022-07-05) +- 优化 显示样式 +## 1.0.5(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.0.4(2022-04-19) +- 修复 字节小程序 本地数据无法选择下一级的Bug +## 1.0.3(2022-02-25) +- 修复 nvue 不支持的 v-show 的 bug +## 1.0.2(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式 +## 1.0.1(2021-11-23) +- 修复 由上个版本引发的map、v-model等属性不生效的bug +## 1.0.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-data-picker](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +## 0.4.9(2021-10-28) +- 修复 VUE2 v-model 概率无效的 bug +## 0.4.8(2021-10-27) +- 修复 v-model 概率无效的 bug +## 0.4.7(2021-10-25) +- 新增 属性 spaceInfo 服务空间配置 HBuilderX 3.2.11+ +- 修复 树型 uniCloud 数据类型为 int 时报错的 bug +## 0.4.6(2021-10-19) +- 修复 非 VUE3 v-model 为 0 时无法选中的 bug +## 0.4.5(2021-09-26) +- 新增 清除已选项的功能(通过 clearIcon 属性配置是否显示按钮),同时提供 clear 方法以供调用,二者等效 +- 修复 readonly 为 true 时报错的 bug +## 0.4.4(2021-09-26) +- 修复 上一版本造成的 map 属性失效的 bug +- 新增 ellipsis 属性,支持配置 tab 选项长度过长时是否自动省略 +## 0.4.3(2021-09-24) +- 修复 某些情况下级联未触发的 bug +## 0.4.2(2021-09-23) +- 新增 提供 show 和 hide 方法,开发者可以通过 ref 调用 +- 新增 选项内容过长自动添加省略号 +## 0.4.1(2021-09-15) +- 新增 map 属性 字段映射,将 text/value 映射到数据中的其他字段 +## 0.4.0(2021-07-13) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.3.5(2021-06-04) +- 修复 无法加载云端数据的问题 +## 0.3.4(2021-05-28) +- 修复 v-model 无效问题 +- 修复 loaddata 为空数据组时加载时间过长问题 +- 修复 上个版本引出的本地数据无法选择带有 children 的 2 级节点 +## 0.3.3(2021-05-12) +- 新增 组件示例地址 +## 0.3.2(2021-04-22) +- 修复 非树形数据有 where 属性查询报错的问题 +## 0.3.1(2021-04-15) +- 修复 本地数据概率无法回显时问题 +## 0.3.0(2021-04-07) +- 新增 支持云端非树形表结构数据 +- 修复 根节点 parent_field 字段等于 null 时选择界面错乱问题 +## 0.2.0(2021-03-15) +- 修复 nodeclick、popupopened、popupclosed 事件无法触发的问题 +## 0.1.9(2021-03-09) +- 修复 微信小程序某些情况下无法选择的问题 +## 0.1.8(2021-02-05) +- 优化 部分样式在 nvue 上的兼容表现 +## 0.1.7(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/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-data-picker/components/uni-data-picker/uni-data-picker.vue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue new file mode 100644 index 0000000..4553627 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue @@ -0,0 +1,554 @@ + + + + + diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js new file mode 100644 index 0000000..c12fd54 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js @@ -0,0 +1,563 @@ +export default { + props: { + localdata: { + type: [Array, Object], + default () { + return [] + } + }, + spaceInfo: { + type: Object, + default () { + return {} + } + }, + collection: { + type: String, + default: '' + }, + action: { + type: String, + default: '' + }, + field: { + type: String, + default: '' + }, + orderby: { + type: String, + default: '' + }, + where: { + type: [String, Object], + default: '' + }, + pageData: { + type: String, + default: 'add' + }, + pageCurrent: { + type: Number, + default: 1 + }, + pageSize: { + type: Number, + default: 20 + }, + getcount: { + type: [Boolean, String], + default: false + }, + getone: { + type: [Boolean, String], + default: false + }, + gettree: { + type: [Boolean, String], + default: false + }, + manual: { + type: Boolean, + default: false + }, + value: { + type: [Array, String, Number], + default () { + return [] + } + }, + modelValue: { + type: [Array, String, Number], + default () { + return [] + } + }, + preload: { + type: Boolean, + default: false + }, + stepSearh: { + type: Boolean, + default: true + }, + selfField: { + type: String, + default: '' + }, + parentField: { + type: String, + default: '' + }, + multiple: { + type: Boolean, + default: false + }, + map: { + type: Object, + default() { + return { + text: "text", + value: "value" + } + } + } + }, + data() { + return { + loading: false, + errorMessage: '', + loadMore: { + contentdown: '', + contentrefresh: '', + contentnomore: '' + }, + dataList: [], + selected: [], + selectedIndex: 0, + page: { + current: this.pageCurrent, + size: this.pageSize, + count: 0 + } + } + }, + computed: { + isLocaldata() { + return !this.collection.length + }, + postField() { + let fields = [this.field]; + if (this.parentField) { + fields.push(`${this.parentField} as parent_value`); + } + return fields.join(','); + }, + dataValue() { + let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null || this.modelValue !== undefined) + return isModelValue ? this.modelValue : this.value + }, + hasValue() { + if (typeof this.dataValue === 'number') { + return true + } + return (this.dataValue != null) && (this.dataValue.length > 0) + } + }, + created() { + this.$watch(() => { + var al = []; + ['pageCurrent', + 'pageSize', + 'spaceInfo', + 'value', + 'modelValue', + 'localdata', + 'collection', + 'action', + 'field', + 'orderby', + 'where', + 'getont', + 'getcount', + 'gettree' + ].forEach(key => { + al.push(this[key]) + }); + return al + }, (newValue, oldValue) => { + let needReset = false + for (let i = 2; i < newValue.length; i++) { + if (newValue[i] != oldValue[i]) { + needReset = true + break + } + } + if (newValue[0] != oldValue[0]) { + this.page.current = this.pageCurrent + } + this.page.size = this.pageSize + + this.onPropsChange() + }) + this._treeData = [] + }, + methods: { + onPropsChange() { + this._treeData = [] + }, + getCommand(options = {}) { + /* eslint-disable no-undef */ + let db = uniCloud.database(this.spaceInfo) + + const action = options.action || this.action + if (action) { + db = db.action(action) + } + + const collection = options.collection || this.collection + db = db.collection(collection) + + const where = options.where || this.where + if (!(!where || !Object.keys(where).length)) { + db = db.where(where) + } + + const field = options.field || this.field + if (field) { + db = db.field(field) + } + + const orderby = options.orderby || this.orderby + if (orderby) { + db = db.orderBy(orderby) + } + + const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current + const size = options.pageSize !== undefined ? options.pageSize : this.page.size + const getCount = options.getcount !== undefined ? options.getcount : this.getcount + const getTree = options.gettree !== undefined ? options.gettree : this.gettree + + const getOptions = { + getCount, + getTree + } + if (options.getTreePath) { + getOptions.getTreePath = options.getTreePath + } + + db = db.skip(size * (current - 1)).limit(size).get(getOptions) + + return db + }, + getNodeData(callback) { + if (this.loading) { + return + } + this.loading = true + this.getCommand({ + field: this.postField, + where: this._pathWhere() + }).then((res) => { + this.loading = false + this.selected = res.result.data + callback && callback() + }).catch((err) => { + this.loading = false + this.errorMessage = err + }) + }, + getTreePath(callback) { + if (this.loading) { + return + } + this.loading = true + + this.getCommand({ + field: this.postField, + getTreePath: { + startWith: `${this.selfField}=='${this.dataValue}'` + } + }).then((res) => { + this.loading = false + let treePath = [] + this._extractTreePath(res.result.data, treePath) + this.selected = treePath + callback && callback() + }).catch((err) => { + this.loading = false + this.errorMessage = err + }) + }, + loadData() { + if (this.isLocaldata) { + this._processLocalData() + return + } + + if (this.dataValue != null) { + this._loadNodeData((data) => { + this._treeData = data + this._updateBindData() + this._updateSelected() + }) + return + } + + if (this.stepSearh) { + this._loadNodeData((data) => { + this._treeData = data + this._updateBindData() + }) + } else { + this._loadAllData((data) => { + this._treeData = [] + this._extractTree(data, this._treeData, null) + this._updateBindData() + }) + } + }, + _loadAllData(callback) { + if (this.loading) { + return + } + this.loading = true + + this.getCommand({ + field: this.postField, + gettree: true, + startwith: `${this.selfField}=='${this.dataValue}'` + }).then((res) => { + this.loading = false + callback(res.result.data) + this.onDataChange() + }).catch((err) => { + this.loading = false + this.errorMessage = err + }) + }, + _loadNodeData(callback, pw) { + if (this.loading) { + return + } + this.loading = true + + this.getCommand({ + field: this.postField, + where: pw || this._postWhere(), + pageSize: 500 + }).then((res) => { + this.loading = false + callback(res.result.data) + this.onDataChange() + }).catch((err) => { + this.loading = false + this.errorMessage = err + }) + }, + _pathWhere() { + let result = [] + let where_field = this._getParentNameByField(); + if (where_field) { + result.push(`${where_field} == '${this.dataValue}'`) + } + + if (this.where) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + _postWhere() { + let result = [] + let selected = this.selected + let parentField = this.parentField + if (parentField) { + result.push(`${parentField} == null || ${parentField} == ""`) + } + if (selected.length) { + for (var i = 0; i < selected.length - 1; i++) { + result.push(`${parentField} == '${selected[i].value}'`) + } + } + + let where = [] + if (this.where) { + where.push(`(${this.where})`) + } + if (result.length) { + where.push(`(${result.join(' || ')})`) + } + + return where.join(' && ') + }, + _nodeWhere() { + let result = [] + let selected = this.selected + if (selected.length) { + result.push(`${this.parentField} == '${selected[selected.length - 1].value}'`) + } + + if (this.where) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + _getParentNameByField() { + const fields = this.field.split(','); + let where_field = null; + for (let i = 0; i < fields.length; i++) { + const items = fields[i].split('as'); + if (items.length < 2) { + continue; + } + if (items[1].trim() === 'value') { + where_field = items[0].trim(); + break; + } + } + return where_field + }, + _isTreeView() { + return (this.parentField && this.selfField) + }, + _updateSelected() { + var dl = this.dataList + var sl = this.selected + let textField = this.map.text + let valueField = this.map.value + for (var i = 0; i < sl.length; i++) { + var value = sl[i].value + var dl2 = dl[i] + for (var j = 0; j < dl2.length; j++) { + var item2 = dl2[j] + if (item2[valueField] === value) { + sl[i].text = item2[textField] + break + } + } + } + }, + _updateBindData(node) { + const { + dataList, + hasNodes + } = this._filterData(this._treeData, this.selected) + + let isleaf = this._stepSearh === false && !hasNodes + + if (node) { + node.isleaf = isleaf + } + + this.dataList = dataList + this.selectedIndex = dataList.length - 1 + + if (!isleaf && this.selected.length < dataList.length) { + this.selected.push({ + value: null, + text: "请选择" + }) + } + + return { + isleaf, + hasNodes + } + }, + _filterData(data, paths) { + let dataList = [] + let hasNodes = true + + dataList.push(data.filter((item) => { + return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '') + })) + for (let i = 0; i < paths.length; i++) { + var value = paths[i].value + var nodes = data.filter((item) => { + return item.parent_value === value + }) + + if (nodes.length) { + dataList.push(nodes) + } else { + hasNodes = false + } + } + + return { + dataList, + hasNodes + } + }, + _extractTree(nodes, result, parent_value) { + let list = result || [] + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + if (parent_value !== null && parent_value !== undefined && parent_value !== '') { + child.parent_value = parent_value + } + result.push(child) + + let children = node.children + if (children) { + this._extractTree(children, result, node[valueField]) + } + } + }, + _extractTreePath(nodes, result) { + let list = result || [] + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + result.push(child) + + let children = node.children + if (children) { + this._extractTreePath(children, result) + } + } + }, + _findNodePath(key, nodes, path = []) { + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + let children = node.children + let text = node[textField] + let value = node[valueField] + + path.push({ + value, + text + }) + + if (value === key) { + return path + } + + if (children) { + const p = this._findNodePath(key, children, path) + if (p.length) { + return p + } + } + + path.pop() + } + return [] + }, + _processLocalData() { + this._treeData = [] + this._extractTree(this.localdata, this._treeData) + + var inputValue = this.dataValue + if (inputValue === undefined) { + return + } + + if (Array.isArray(inputValue)) { + inputValue = inputValue[inputValue.length - 1] + if (typeof inputValue === 'object' && inputValue[this.map.value]) { + inputValue = inputValue[this.map.value] + } + } + + this.selected = this._findNodePath(inputValue, this.localdata) + } + } +} diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue new file mode 100644 index 0000000..1a247cc --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue @@ -0,0 +1,335 @@ + + + + diff --git a/uni_modules/uni-data-picker/package.json b/uni_modules/uni-data-picker/package.json new file mode 100644 index 0000000..7b731fc --- /dev/null +++ b/uni_modules/uni-data-picker/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-data-picker", + "displayName": "uni-data-picker 数据驱动的picker选择器", + "version": "1.0.8", + "description": "单列、多列级联选择器,常用于省市区城市选择、公司部门选择、多级分类等场景", + "keywords": [ + "uni-ui", + "uniui", + "picker", + "级联", + "省市区", + "" +], + "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-load-more", + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "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" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-data-picker/readme.md b/uni_modules/uni-data-picker/readme.md new file mode 100644 index 0000000..6cda224 --- /dev/null +++ b/uni_modules/uni-data-picker/readme.md @@ -0,0 +1,22 @@ +## DataPicker 级联选择 +> **组件名:uni-data-picker** +> 代码块: `uDataPicker` +> 关联组件:`uni-data-pickerview`、`uni-load-more`。 + + +`` 是一个选择类[datacom组件](https://uniapp.dcloud.net.cn/component/datacom)。 + +支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 + +候选数据支持一次性加载完毕,也支持懒加载,比如示例图中,选择了“北京”后,动态加载北京的区县数据。 + +`` 组件尤其适用于地址选择、分类选择等选择类。 + +`` 支持本地数据、云端静态数据(json),uniCloud云数据库数据。 + +`` 可以通过JQL直连uniCloud云数据库,配套[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema),可在schema2code中自动生成前端页面,还支持服务器端校验。 + +在uniCloud数据表中新建表“uni-id-address”和“opendb-city-china”,这2个表的schema自带foreignKey关联。在“uni-id-address”表的表结构页面使用schema2code生成前端页面,会自动生成地址管理的维护页面,自动从“opendb-city-china”表包含的中国所有省市区信息里选择地址。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..91aaf95 --- /dev/null +++ b/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,99 @@ +## 2.2.9(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 2.2.8(2022-09-08) +- 修复 close事件无效的 bug +## 2.2.7(2022-09-05) +- 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false) +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化 bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的 bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的 bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的 bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug +## 2.2.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-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的 bug +- 修复 单选赋默认值时,赋值日期未高亮的 bug +- 修复 赋默认值时,移动端未正确显示时间的 bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的 bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的 bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的 bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的 bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的 bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的 bug +- 修复 start 和 end 不能动态赋值的 bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的 bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的 bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的 bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的 bug +- 修复 chang事件触发2次的 bug +- 修复 分、秒 end 范围错误的 bug +- 优化 更好的 nvue 适配 diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..a2201d3 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..a0150f8 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,914 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..9acf1ab --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select datetime", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/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-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js new file mode 100644 index 0000000..9601aba --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/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 \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..2e589f6 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,929 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..b9297ed --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1015 @@ + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..efa5773 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,410 @@ +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range, + // multipleStatus + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + // this.multipleStatus = multipleStatus + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let isinfo = false + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(nowDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(nowDate, this.multipleStatus.before, this.multipleStatus.after), + month: full.month, + disable: !(disableBefore && disableAfter), + isDay, + userChecked: false + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDay, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = this.dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDay) + } + + isLogicAfter(currentDay, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = this.dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDay) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + if (!this.range) return + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this._getWeek(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (this.lastHover) return + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this._getWeek(fullDate) + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (this.dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this._getWeek(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this._getWeek(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + fullDate, + year, + month, + date, + day + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..83be644 --- /dev/null +++ b/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.9", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "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", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "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-datetime-picker/readme.md b/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..6449885 --- /dev/null +++ b/uni_modules/uni-icons/changelog.md @@ -0,0 +1,22 @@ +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 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-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-icons/components/uni-icons/icons.js b/uni_modules/uni-icons/components/uni-icons/icons.js new file mode 100644 index 0000000..7889936 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/icons.js @@ -0,0 +1,1169 @@ +export default { + "id": "2852637", + "name": "uniui图标库", + "font_family": "uniicons", + "css_prefix_text": "uniui-", + "description": "", + "glyphs": [ + { + "icon_id": "25027049", + "name": "yanse", + "font_class": "color", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "25027048", + "name": "wallet", + "font_class": "wallet", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "25015720", + "name": "settings-filled", + "font_class": "settings-filled", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "25015434", + "name": "shimingrenzheng-filled", + "font_class": "auth-filled", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "24934246", + "name": "shop-filled", + "font_class": "shop-filled", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "24934159", + "name": "staff-filled-01", + "font_class": "staff-filled", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "24932461", + "name": "VIP-filled", + "font_class": "vip-filled", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "24932462", + "name": "plus_circle_fill", + "font_class": "plus-filled", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "24932463", + "name": "folder_add-filled", + "font_class": "folder-add-filled", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "24932464", + "name": "yanse-filled", + "font_class": "color-filled", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "24932465", + "name": "tune-filled", + "font_class": "tune-filled", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "24932455", + "name": "a-rilidaka-filled", + "font_class": "calendar-filled", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "24932456", + "name": "notification-filled", + "font_class": "notification-filled", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "24932457", + "name": "wallet-filled", + "font_class": "wallet-filled", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "24932458", + "name": "paihangbang-filled", + "font_class": "medal-filled", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "24932459", + "name": "gift-filled", + "font_class": "gift-filled", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "24932460", + "name": "fire-filled", + "font_class": "fire-filled", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "24928001", + "name": "refreshempty", + "font_class": "refreshempty", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "24926853", + "name": "location-ellipse", + "font_class": "location-filled", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "24926735", + "name": "person-filled", + "font_class": "person-filled", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "24926703", + "name": "personadd-filled", + "font_class": "personadd-filled", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "24923351", + "name": "back", + "font_class": "back", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "24923352", + "name": "forward", + "font_class": "forward", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrow-right", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrowthinright", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrow-left", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrowthinleft", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrow-up", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrowthinup", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrow-down", + "unicode": "e6be", + "unicode_decimal": 59070 + },{ + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrowthindown", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "bottom", + "unicode": "e6b8", + "unicode_decimal": 59064 + },{ + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "arrowdown", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "right", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "arrowright", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "top", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "arrowup", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "left", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "arrowleft", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923334", + "name": "eye", + "font_class": "eye", + "unicode": "e651", + "unicode_decimal": 58961 + }, + { + "icon_id": "24923335", + "name": "eye-filled", + "font_class": "eye-filled", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "24923336", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "24923337", + "name": "eye-slash-filled", + "font_class": "eye-slash-filled", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "24923305", + "name": "info-filled", + "font_class": "info-filled", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "24923299", + "name": "reload-01", + "font_class": "reload", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "24923195", + "name": "mic_slash_fill", + "font_class": "micoff-filled", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "24923165", + "name": "map-pin-ellipse", + "font_class": "map-pin-ellipse", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "24923166", + "name": "map-pin", + "font_class": "map-pin", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "24923167", + "name": "location", + "font_class": "location", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "24923064", + "name": "starhalf", + "font_class": "starhalf", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "24923065", + "name": "star", + "font_class": "star", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "24923066", + "name": "star-filled", + "font_class": "star-filled", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "24899646", + "name": "a-rilidaka", + "font_class": "calendar", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "24899647", + "name": "fire", + "font_class": "fire", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "24899648", + "name": "paihangbang", + "font_class": "medal", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "24899649", + "name": "font", + "font_class": "font", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "24899650", + "name": "gift", + "font_class": "gift", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "24899651", + "name": "link", + "font_class": "link", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "24899652", + "name": "notification", + "font_class": "notification", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "24899653", + "name": "staff", + "font_class": "staff", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "24899654", + "name": "VIP", + "font_class": "vip", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "24899655", + "name": "folder_add", + "font_class": "folder-add", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "24899656", + "name": "tune", + "font_class": "tune", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "24899657", + "name": "shimingrenzheng", + "font_class": "auth", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "24899565", + "name": "person", + "font_class": "person", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "24899566", + "name": "email-filled", + "font_class": "email-filled", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "24899567", + "name": "phone-filled", + "font_class": "phone-filled", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "24899568", + "name": "phone", + "font_class": "phone", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "24899570", + "name": "email", + "font_class": "email", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "24899571", + "name": "personadd", + "font_class": "personadd", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "24899558", + "name": "chatboxes-filled", + "font_class": "chatboxes-filled", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "24899559", + "name": "contact", + "font_class": "contact", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "24899560", + "name": "chatbubble-filled", + "font_class": "chatbubble-filled", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "24899561", + "name": "contact-filled", + "font_class": "contact-filled", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "24899562", + "name": "chatboxes", + "font_class": "chatboxes", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "24899563", + "name": "chatbubble", + "font_class": "chatbubble", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "24881290", + "name": "upload-filled", + "font_class": "upload-filled", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "24881292", + "name": "upload", + "font_class": "upload", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "24881293", + "name": "weixin", + "font_class": "weixin", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "24881274", + "name": "compose", + "font_class": "compose", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "24881275", + "name": "qq", + "font_class": "qq", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "24881276", + "name": "download-filled", + "font_class": "download-filled", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "24881277", + "name": "pengyouquan", + "font_class": "pyq", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "24881279", + "name": "sound", + "font_class": "sound", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "24881280", + "name": "trash-filled", + "font_class": "trash-filled", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "24881281", + "name": "sound-filled", + "font_class": "sound-filled", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "24881282", + "name": "trash", + "font_class": "trash", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "24881284", + "name": "videocam-filled", + "font_class": "videocam-filled", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "24881285", + "name": "spinner-cycle", + "font_class": "spinner-cycle", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "24881286", + "name": "weibo", + "font_class": "weibo", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "24881288", + "name": "videocam", + "font_class": "videocam", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "24881289", + "name": "download", + "font_class": "download", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "24879601", + "name": "help", + "font_class": "help", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "24879602", + "name": "navigate-filled", + "font_class": "navigate-filled", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "24879603", + "name": "plusempty", + "font_class": "plusempty", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "24879604", + "name": "smallcircle", + "font_class": "smallcircle", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "24879605", + "name": "minus-filled", + "font_class": "minus-filled", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "24879606", + "name": "micoff", + "font_class": "micoff", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "24879588", + "name": "closeempty", + "font_class": "closeempty", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "24879589", + "name": "clear", + "font_class": "clear", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "24879590", + "name": "navigate", + "font_class": "navigate", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "24879591", + "name": "minus", + "font_class": "minus", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "24879592", + "name": "image", + "font_class": "image", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "24879593", + "name": "mic", + "font_class": "mic", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "24879594", + "name": "paperplane", + "font_class": "paperplane", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "24879595", + "name": "close", + "font_class": "close", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "24879596", + "name": "help-filled", + "font_class": "help-filled", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "24879597", + "name": "plus-filled", + "font_class": "paperplane-filled", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "24879598", + "name": "plus", + "font_class": "plus", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "24879599", + "name": "mic-filled", + "font_class": "mic-filled", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "24879600", + "name": "image-filled", + "font_class": "image-filled", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "24855900", + "name": "locked-filled", + "font_class": "locked-filled", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "24855901", + "name": "info", + "font_class": "info", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "24855903", + "name": "locked", + "font_class": "locked", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "24855884", + "name": "camera-filled", + "font_class": "camera-filled", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "24855885", + "name": "chat-filled", + "font_class": "chat-filled", + "unicode": "e659", + "unicode_decimal": 58969 + }, + { + "icon_id": "24855886", + "name": "camera", + "font_class": "camera", + "unicode": "e65a", + "unicode_decimal": 58970 + }, + { + "icon_id": "24855887", + "name": "circle", + "font_class": "circle", + "unicode": "e65b", + "unicode_decimal": 58971 + }, + { + "icon_id": "24855888", + "name": "checkmarkempty", + "font_class": "checkmarkempty", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "24855889", + "name": "chat", + "font_class": "chat", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "24855890", + "name": "circle-filled", + "font_class": "circle-filled", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "24855891", + "name": "flag", + "font_class": "flag", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "24855892", + "name": "flag-filled", + "font_class": "flag-filled", + "unicode": "e660", + "unicode_decimal": 58976 + }, + { + "icon_id": "24855893", + "name": "gear-filled", + "font_class": "gear-filled", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "24855894", + "name": "home", + "font_class": "home", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "24855895", + "name": "home-filled", + "font_class": "home-filled", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "24855896", + "name": "gear", + "font_class": "gear", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "24855897", + "name": "smallcircle-filled", + "font_class": "smallcircle-filled", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "24855898", + "name": "map-filled", + "font_class": "map-filled", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "24855899", + "name": "map", + "font_class": "map", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "24855825", + "name": "refresh-filled", + "font_class": "refresh-filled", + "unicode": "e656", + "unicode_decimal": 58966 + }, + { + "icon_id": "24855826", + "name": "refresh", + "font_class": "refresh", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "24855808", + "name": "cloud-upload", + "font_class": "cloud-upload", + "unicode": "e645", + "unicode_decimal": 58949 + }, + { + "icon_id": "24855809", + "name": "cloud-download-filled", + "font_class": "cloud-download-filled", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "24855810", + "name": "cloud-download", + "font_class": "cloud-download", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "24855811", + "name": "cloud-upload-filled", + "font_class": "cloud-upload-filled", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "24855813", + "name": "redo", + "font_class": "redo", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "24855814", + "name": "images-filled", + "font_class": "images-filled", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "24855815", + "name": "undo-filled", + "font_class": "undo-filled", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "24855816", + "name": "more", + "font_class": "more", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "24855817", + "name": "more-filled", + "font_class": "more-filled", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "24855818", + "name": "undo", + "font_class": "undo", + "unicode": "e64f", + "unicode_decimal": 58959 + }, + { + "icon_id": "24855819", + "name": "images", + "font_class": "images", + "unicode": "e650", + "unicode_decimal": 58960 + }, + { + "icon_id": "24855821", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "24855822", + "name": "settings", + "font_class": "settings", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "24855823", + "name": "search", + "font_class": "search", + "unicode": "e654", + "unicode_decimal": 58964 + }, + { + "icon_id": "24855824", + "name": "redo-filled", + "font_class": "redo-filled", + "unicode": "e655", + "unicode_decimal": 58965 + }, + { + "icon_id": "24841702", + "name": "list", + "font_class": "list", + "unicode": "e644", + "unicode_decimal": 58948 + }, + { + "icon_id": "24841489", + "name": "mail-open-filled", + "font_class": "mail-open-filled", + "unicode": "e63a", + "unicode_decimal": 58938 + }, + { + "icon_id": "24841491", + "name": "hand-thumbsdown-filled", + "font_class": "hand-down-filled", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "24841492", + "name": "hand-thumbsdown", + "font_class": "hand-down", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "24841493", + "name": "hand-thumbsup-filled", + "font_class": "hand-up-filled", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "24841494", + "name": "hand-thumbsup", + "font_class": "hand-up", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "24841496", + "name": "heart-filled", + "font_class": "heart-filled", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "24841498", + "name": "mail-open", + "font_class": "mail-open", + "unicode": "e643", + "unicode_decimal": 58947 + }, + { + "icon_id": "24841488", + "name": "heart", + "font_class": "heart", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "24839963", + "name": "loop", + "font_class": "loop", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "24839866", + "name": "pulldown", + "font_class": "pulldown", + "unicode": "e632", + "unicode_decimal": 58930 + }, + { + "icon_id": "24813798", + "name": "scan", + "font_class": "scan", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "24813786", + "name": "bars", + "font_class": "bars", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "24813788", + "name": "cart-filled", + "font_class": "cart-filled", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "24813790", + "name": "checkbox", + "font_class": "checkbox", + "unicode": "e62b", + "unicode_decimal": 58923 + }, + { + "icon_id": "24813791", + "name": "checkbox-filled", + "font_class": "checkbox-filled", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "24813794", + "name": "shop", + "font_class": "shop", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "24813795", + "name": "headphones", + "font_class": "headphones", + "unicode": "e630", + "unicode_decimal": 58928 + }, + { + "icon_id": "24813796", + "name": "cart", + "font_class": "cart", + "unicode": "e631", + "unicode_decimal": 58929 + } + ] +} diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..86e7444 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..2f56eab --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,663 @@ +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrowthinright:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrowthinleft:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrowthinup:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthindown:before { + content: "\e6be"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowdown:before { + content: "\e6b8"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-arrowright:before { + content: "\e6b5"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-arrowup:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowleft:before { + content: "\e6b7"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-cart-filled:before { + content: "\e629"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000..835f33b Binary files /dev/null and b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..d1c4e77 --- /dev/null +++ b/uni_modules/uni-icons/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "1.3.5", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "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-icons/readme.md b/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-load-more/changelog.md b/uni_modules/uni-load-more/changelog.md new file mode 100644 index 0000000..8f03f1d --- /dev/null +++ b/uni_modules/uni-load-more/changelog.md @@ -0,0 +1,19 @@ +## 1.3.3(2022-01-20) +- 新增 showText属性 ,是否显示文本 +## 1.3.2(2022-01-19) +- 修复 nvue 平台下不显示文本的bug +## 1.3.1(2022-01-19) +- 修复 微信小程序平台样式选择器报警告的问题 +## 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-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) +## 1.2.1(2021-08-24) +- 新增 支持国际化 +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-05-12) +- 新增 组件示例地址 +## 1.1.7(2021-03-30) +- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +## 1.1.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json new file mode 100644 index 0000000..a4f14a5 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "Pull up to show more", + "uni-load-more.contentrefresh": "loading...", + "uni-load-more.contentnomore": "No more data" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/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-load-more/components/uni-load-more/i18n/zh-Hans.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json new file mode 100644 index 0000000..f15d510 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉显示更多", + "uni-load-more.contentrefresh": "正在加载...", + "uni-load-more.contentnomore": "没有更多数据了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json new file mode 100644 index 0000000..a255c6d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉顯示更多", + "uni-load-more.contentrefresh": "正在加載...", + "uni-load-more.contentnomore": "沒有更多數據了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue new file mode 100644 index 0000000..e5eff4d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/uni_modules/uni-load-more/package.json b/uni_modules/uni-load-more/package.json new file mode 100644 index 0000000..2fa6f04 --- /dev/null +++ b/uni_modules/uni-load-more/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-load-more", + "displayName": "uni-load-more 加载更多", + "version": "1.3.3", + "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", + "keywords": [ + "uni-ui", + "uniui", + "加载更多", + "load-more" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "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-load-more/readme.md b/uni_modules/uni-load-more/readme.md new file mode 100644 index 0000000..54dc1fa --- /dev/null +++ b/uni_modules/uni-load-more/readme.md @@ -0,0 +1,14 @@ + + +### LoadMore 加载更多 +> **组件名:uni-load-more** +> 代码块: `uLoadMore` + + +用于列表中,做滚动加载使用,展示 loading 的各种状态。 + + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..a9e2d66 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,60 @@ +## 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..6ef26a2 --- /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..a5d0f2a --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,271 @@ + + + + + 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..91370a8 --- /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..5be7624 --- /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..7f1bd06 --- /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..de7509c --- /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..5e3003c --- /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..13e39eb --- /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..62dda46 --- /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..c4e5781 --- /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.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..db90c59 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,474 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..069e9ce --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.7.9", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "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-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "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" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..b1a824b --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,20 @@ +## 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..5f54365 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,128 @@ +// 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 + 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..0d739bd --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d15fdf0 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.1", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "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 diff --git a/uni_modules/uview-ui/LICENSE b/uni_modules/uview-ui/LICENSE new file mode 100644 index 0000000..8e39ead --- /dev/null +++ b/uni_modules/uview-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 www.uviewui.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/uni_modules/uview-ui/README.md b/uni_modules/uview-ui/README.md new file mode 100644 index 0000000..c78ff47 --- /dev/null +++ b/uni_modules/uview-ui/README.md @@ -0,0 +1,66 @@ +

+ logo +

+

uView 2.0

+

多平台快速开发的UI框架

+ +[![stars](https://img.shields.io/github/stars/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![forks](https://img.shields.io/github/forks/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![issues](https://img.shields.io/github/issues/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0/issues) +[![Website](https://img.shields.io/badge/uView-up-blue?style=flat-square)](https://uviewui.com) +[![release](https://img.shields.io/github/v/release/umicro/uView2.0?style=flat-square)](https://gitee.com/umicro/uView2.0/releases) +[![license](https://img.shields.io/github/license/umicro/uView2.0?style=flat-square)](https://en.wikipedia.org/wiki/MIT_License) + +## 说明 + +uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 + +## [官方文档:https://uviewui.com](https://uviewui.com) + + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + + +## 链接 + +- [官方文档](https://www.uviewui.com/) +- [更新日志](https://www.uviewui.com/components/changelog.html) +- [升级指南](https://www.uviewui.com/components/changeGuide.html) +- [关于我们](https://www.uviewui.com/cooperation/about.html) + +## 交流反馈 + +欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html) + +## 关于PR + +> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。 +> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! + +## 安装 + +#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593) + +请通过[官网安装文档](https://www.uviewui.com/components/install.html)了解更详细的内容 + +## 快速上手 + +请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +## 版权信息 +uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 + diff --git a/uni_modules/uview-ui/changelog.md b/uni_modules/uview-ui/changelog.md new file mode 100644 index 0000000..ca50251 --- /dev/null +++ b/uni_modules/uview-ui/changelog.md @@ -0,0 +1,357 @@ +## 2.0.34(2022-09-25) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-input`、`u-textarea`增加`ignoreCompositionEvent`属性 +2. 修复`route`方法调用可能报错的问题 +3. 修复`u-no-network`组件`z-index`无效的问题 +4. 修复`textarea`组件在h5上confirmType=""报错的问题 +5. `u-rate`适配`nvue` +6. 优化验证手机号码的正则表达式(根据工信部发布的《电信网编号计划(2017年版)》进行修改。) +7. `form-item`添加`labelPosition`属性 +8. `u-calendar`修复`maxDate`设置为当前日期,并且当前时间大于08:00时无法显示日期列表的问题 (#724) +9. `u-radio`增加一个默认插槽用于自定义修改label内容 (#680) +10. 修复`timeFormat`函数在safari重的兼容性问题 (#664) +## 2.0.33(2022-06-17) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`loadmore`组件`lineColor`类型错误问题 +2. 修复`u-parse`组件`imgtap`、`linktap`不生效问题 +## 2.0.32(2022-06-16) +# uView2.0重磅发布,利剑出鞘,一统江湖 +1. `u-loadmore`新增自定义颜色、虚/实线 +2. 修复`u-swiper-action`组件部分平台不能上下滑动的问题 +3. 修复`u-list`回弹问题 +4. 修复`notice-bar`组件动画在低端安卓机可能会抖动的问题 +5. `u-loading-page`添加控制图标大小的属性`iconSize` +6. 修复`u-tooltip`组件`color`参数不生效的问题 +7. 修复`u--input`组件使用`blur`事件输出为`undefined`的bug +8. `u-code-input`组件新增键盘弹起时,是否自动上推页面参数`adjustPosition` +9. 修复`image`组件`load`事件无回调对象问题 +10. 修复`button`组件`loadingSize`设置无效问题 +10. 其他修复 +## 2.0.31(2022-04-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`upload`在`vue`页面上传成功后没有成功标志的问题 +2. 解决演示项目中微信小程序模拟上传图片一直出于上传中问题 +3. 修复`u-code-input`组件在`nvue`页面编译到`app`平台上光标异常问题(`app`去除此功能) +4. 修复`actionSheet`组件标题关闭按钮点击事件名称错误的问题 +5. 其他修复 +## 2.0.30(2022-04-04) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-rate`增加`readonly`属性 +2. `tabs`滑块支持设置背景图片 +3. 修复`u-subsection` `mode`为`subsection`时,滑块样式不正确的问题 +4. `u-code-input`添加光标效果动画 +5. 修复`popup`的`open`事件不触发 +6. 修复`u-flex-column`无效的问题 +7. 修复`u-datetime-picker`索引在特定场合异常问题 +8. 修复`u-datetime-picker`最小时间字符串模板错误问题 +9. `u-swiper`添加`m3u8`验证 +10. `u-swiper`修改判断image和video逻辑 +11. 修复`swiper`无法使用本地图片问题,增加`type`参数 +12. 修复`u-row-notice`格式错误问题 +13. 修复`u-switch`组件当`unit`为`rpx`时,`nodeStyle`消失的问题 +14. 修复`datetime-picker`组件`showToolbar`与`visibleItemCount`属性无效的问题 +15. 修复`upload`组件条件编译位置判断错误,导致`previewImage`属性设置为`false`时,整个组件都会被隐藏的问题 +16. 修复`u-checkbox-group`设置`shape`属性无效的问题 +17. 修复`u-upload`的`capture`传入字符串的时候不生效的问题 +18. 修复`u-action-sheet`组件,关闭事件逻辑错误的问题 +19. 修复`u-list`触顶事件的触发错误的问题 +20. 修复`u-text`只有手机号可拨打的问题 +21. 修复`u-textarea`不能换行的问题 +22. 其他修复 +## 2.0.29(2022-03-13) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`u--text`组件设置`decoration`属性未生效的问题 +2. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +3. 修复`u-datetime-picker` `intercept` 可能为undefined +4. 修复已设置单位 uni..config.unit = 'rpx'时,线型指示器 `transform` 的位置翻倍,导致指示器超出宽度 +5. 修复mixin中bem方法生成的类名在支付宝和字节小程序中失效 +6. 修复默认值传值为空的时候,打开`u-datetime-picker`报错,不能选中第一列时间的bug +7. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +8. 修复`u-image`组件`loading`无效果的问题 +9. 修复`config.unit`属性设为`rpx`时,导航栏占用高度不足导致塌陷的问题 +10. 修复`u-datetime-picker`组件`itemHeight`无效问题 +11. 其他修复 +## 2.0.28(2022-02-22) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. search组件新增searchIconSize属性 +2. 兼容Safari/Webkit中传入时间格式如2022-02-17 12:00:56 +3. 修复text value.js 判断日期出format错误问题 +4. priceFormat格式化金额出现精度错误 +5. priceFormat在部分情况下出现精度损失问题 +6. 优化表单rules提示 +7. 修复avatar组件src为空时,展示状态不对 +8. 其他修复 +## 2.0.27(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.26(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.25(2022-01-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复text组件mode=price时,可能会导致精度错误的问题 +2. 添加$u.setConfig()方法,可设置uView内置的config, props, zIndex, color属性,详见:[修改uView内置配置方案](https://uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +3. 优化form组件在errorType=toast时,如果输入错误页面会有抖动的问题 +4. 修复$u.addUnit()对配置默认单位可能无效的问题 +## 2.0.24(2022-01-25) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复swiper在current指定非0时缩放有误 +2. 修复u-icon添加stop属性的时候报错 +3. 优化遗留的通过正则判断rpx单位的问题 +4. 优化Layout布局 vue使用gutter时,会超出固定区域 +5. 优化search组件高度单位问题(rpx -> px) +6. 修复u-image slot 加载和错误的图片失去了高度 +7. 修复u-index-list中footer插槽与header插槽存在性判断错误 +8. 修复部分机型下u-popup关闭时会闪烁 +9. 修复u-image在nvue-app下失去宽高 +10. 修复u-popup运行报错 +11. 修复u-tooltip报错 +12. 修复box-sizing在app下的警告 +13. 修复u-navbar在小程序中报运行时错误 +14. 其他修复 +## 2.0.23(2022-01-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复image组件在hx3.3.9的nvue下可能会显示异常的问题 +2. 修复col组件gutter参数带rpx单位处理不正确的问题 +3. 修复text组件单行时无法显示省略号的问题 +4. navbar添加titleStyle参数 +5. 升级到hx3.3.9可消除nvue下控制台样式警告的问题 +## 2.0.22(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. $u.page()方法优化,避免在特殊场景可能报错的问题 +2. picker组件添加immediateChange参数 +3. 新增$u.pages()方法 +## 2.0.21(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化:form组件在用户设置rules的时候提示用户model必传 +2. 优化遗留的通过正则判断rpx单位的问题 +3. 修复微信小程序环境中tabbar组件开启safeAreaInsetBottom属性后,placeholder高度填充不正确 +4. 修复swiper在current指定非0时缩放有误 +5. 修复u-icon添加stop属性的时候报错 +6. 修复upload组件在accept=all的时候没有作用 +7. 修复在text组件mode为phone时call属性无效的问题 +8. 处理u-form clearValidate方法 +9. 其他修复 +## 2.0.20(2022-01-14) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题 +2. 修复Slider缺少disabled props 还有注释 +3. 修复u-notice-bar点击事件无法拿到index索引值的问题 +4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题 +5. 优化头像为空时显示默认头像 +6. 修复图片地址赋值后判断加载状态为完成问题 +7. 修复日历滚动到默认日期月份区域 +8. search组件暴露点击左边icon事件 +9. 修复u-form clearValidate方法不生效 +10. upload h5端增加返回文件参数(文件的name参数) +11. 处理upload选择文件后url为blob类型无法预览的问题 +12. u-code-input 修复输入框没有往左移出一半屏幕 +13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误 +14. 临时处理ios app下grid点击坍塌问题 +15. 其他修复 +## 2.0.19(2021-12-29) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码” +2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题 +3. navbar添加autoBack参数 +4. 允许avatar组件的事件冒泡 +5. 修复cell组件报错问题 +6. 其他修复 +## 2.0.18(2021-12-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复app端编译报错问题 +2. 重新处理微信小程序端setData过大的性能问题 +3. 修复边框问题 +4. 修复最大最小月份不大于0则没有数据出现的问题 +5. 修复SwipeAction微信小程序端无法上下滑动问题 +6. 修复input的placeholder在小程序端默认显示为true问题 +7. 修复divider组件click事件无效问题 +8. 修复u-code-input maxlength 属性值为 String 类型时显示异常 +9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题 +10. 处理form-item的label为top时,取消错误提示的左边距 +11. 其他修复 +## 2.0.17(2021-12-26) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决HBuilderX3.3.3.20211225版本导致的样式问题 +2. calendar日历添加monthNum参数 +3. navbar添加center slot +## 2.0.16(2021-12-25) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决微信小程序setData性能问题 +2. 修复count-down组件change事件不触发问题 +## 2.0.15(2021-12-21) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复Cell单元格titleWidth无效 +2. 修复cheakbox组件ischecked不更新 +3. 修复keyboard是否显示"."按键默认值问题 +4. 修复number-keyboard是否显示键盘的"."符号问题 +5. 修复Input输入框 readonly无效 +6. 修复u-avatar 导致打包app、H5时候报错问题 +7. 修复Upload上传deletable无效 +8. 修复upload当设置maxSize时无效的问题 +9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题 +10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星 +## 2.0.13(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题 +## 2.0.12(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复tabs组件在vue环境下划线消失的问题 +2. 修复upload组件在安卓小程序无法选择视频的问题 +3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +4. 修复textarea组件在没绑定v-model时,字符统计不生效问题 +5. 修复nvue下控制是否出现滚动条失效问题 +## 2.0.11(2021-12-13) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. text组件align参数无效的问题 +2. subsection组件添加keyName参数 +3. upload组件无法判断[Object file]类型的问题 +4. 处理notify层级过低问题 +5. codeInput组件添加disabledDot参数 +6. 处理actionSheet组件round参数无效的问题 +7. calendar组件添加round参数用于控制圆角值 +8. 处理swipeAction组件在vue环境下默认被打开的问题 +9. button组件的throttleTime节流参数无效的问题 +10. 解决u-notify手动关闭方法close()无效的问题 +11. input组件readonly不生效问题 +12. tag组件type参数为info不生效问题 +## 2.0.10(2021-12-08) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复button sendMessagePath属性不生效 +2. 修复DatetimePicker选择器title无效 +3. 修复u-toast设置loading=true不生效 +4. 修复u-text金额模式传0报错 +5. 修复u-toast组件的icon属性配置不生效 +6. button的icon在特殊场景下的颜色优化 +7. IndexList优化,增加# +## 2.0.9(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题 +2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题 +3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效 +4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题 +## 2.0.8(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复toast的position参数无效问题 +2. 处理input在ios nvue上无法获得焦点的问题 +3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制 +4. tabs组件添加keyName参数用于配置从对象中读取的键名 +5. 处理text组件名字脱敏默认配置无效的问题 +6. 处理picker组件item文本太长换行问题 +## 2.0.7(2021-11-30) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复radio和checkbox动态改变v-model无效的问题。 +2. 优化form规则validator在微信小程序用法 +3. 修复backtop组件mode参数在微信小程序无效的问题 +4. 处理Album的previewFullImage属性无效的问题 +5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题 +## 2.0.6(2021-11-27) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 处理tag组件在vue下边框无效的问题。 +2. 处理popup组件圆角参数可能无效的问题。 +3. 处理tabs组件lineColor参数可能无效的问题。 +4. propgress组件在值很小时,显示异常的问题。 +## 2.0.5(2021-11-25) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. calendar在vue下显示异常问题。 +2. form组件labelPosition和errorType参数无效的问题 +3. input组件inputAlign无效的问题 +4. 其他一些修复 +## 2.0.4(2021-11-23) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +0. input组件缺失@confirm事件,以及subfix和prefix无效问题 +1. component.scss文件样式在vue下干扰全局布局问题 +2. 修复subsection在vue环境下表现异常的问题 +3. tag组件的bgColor等参数无效的问题 +4. upload组件不换行的问题 +5. 其他的一些修复处理 +## 2.0.3(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 处理modal的confirm回调事件拼写错误问题 +6. 处理input组件@input事件参数错误问题 +7. 其他一些修复 +## 2.0.2(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 +6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss +## 2.0.0(2020-11-15) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 + + diff --git a/uni_modules/uview-ui/components/u--form/u--form.vue b/uni_modules/uview-ui/components/u--form/u--form.vue new file mode 100644 index 0000000..fdfc212 --- /dev/null +++ b/uni_modules/uview-ui/components/u--form/u--form.vue @@ -0,0 +1,78 @@ + + + diff --git a/uni_modules/uview-ui/components/u--image/u--image.vue b/uni_modules/uview-ui/components/u--image/u--image.vue new file mode 100644 index 0000000..21b7ab1 --- /dev/null +++ b/uni_modules/uview-ui/components/u--image/u--image.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--input/u--input.vue b/uni_modules/uview-ui/components/u--input/u--input.vue new file mode 100644 index 0000000..1e58b01 --- /dev/null +++ b/uni_modules/uview-ui/components/u--input/u--input.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--text/u--text.vue b/uni_modules/uview-ui/components/u--text/u--text.vue new file mode 100644 index 0000000..44ee52a --- /dev/null +++ b/uni_modules/uview-ui/components/u--text/u--text.vue @@ -0,0 +1,44 @@ + + + diff --git a/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..f4df0b9 --- /dev/null +++ b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue @@ -0,0 +1,48 @@ + + + diff --git a/uni_modules/uview-ui/components/u-action-sheet/props.js b/uni_modules/uview-ui/components/u-action-sheet/props.js new file mode 100644 index 0000000..e96e04f --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: uni.$u.props.actionSheet.show + }, + // 标题 + title: { + type: String, + default: uni.$u.props.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: uni.$u.props.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: uni.$u.props.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: uni.$u.props.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: uni.$u.props.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.actionSheet.round + } + } +} diff --git a/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..26d5d8d --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,278 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-album/props.js b/uni_modules/uview-ui/components/u-album/props.js new file mode 100644 index 0000000..75cdb37 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: uni.$u.props.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: uni.$u.props.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: uni.$u.props.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: uni.$u.props.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: uni.$u.props.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: uni.$u.props.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: uni.$u.props.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: uni.$u.props.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.album.showMore + } + } +} diff --git a/uni_modules/uview-ui/components/u-album/u-album.vue b/uni_modules/uview-ui/components/u-album/u-album.vue new file mode 100644 index 0000000..687e2d5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/u-album.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-alert/props.js b/uni_modules/uview-ui/components/u-alert/props.js new file mode 100644 index 0000000..4297e2c --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 显示文字 + title: { + type: String, + default: uni.$u.props.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: uni.$u.props.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: uni.$u.props.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: uni.$u.props.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: uni.$u.props.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: uni.$u.props.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: uni.$u.props.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.alert.fontSize + } + } +} diff --git a/uni_modules/uview-ui/components/u-alert/u-alert.vue b/uni_modules/uview-ui/components/u-alert/u-alert.vue new file mode 100644 index 0000000..81f7d43 --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/u-alert.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar-group/props.js b/uni_modules/uview-ui/components/u-avatar-group/props.js new file mode 100644 index 0000000..58b42ac --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/props.js @@ -0,0 +1,52 @@ +export default { + props: { + // 头像图片组 + urls: { + type: Array, + default: uni.$u.props.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: uni.$u.props.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: uni.$u.props.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: uni.$u.props.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: uni.$u.props.avatarGroup.extraValue + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..7e996d7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar/props.js b/uni_modules/uview-ui/components/u-avatar/props.js new file mode 100644 index 0000000..34ca0f2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/props.js @@ -0,0 +1,78 @@ +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: uni.$u.props.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: uni.$u.props.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: uni.$u.props.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: uni.$u.props.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: uni.$u.props.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: uni.$u.props.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: uni.$u.props.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: uni.$u.props.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: uni.$u.props.avatar.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar/u-avatar.vue b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..3319be5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-back-top/props.js b/uni_modules/uview-ui/components/u-back-top/props.js new file mode 100644 index 0000000..6c702c2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: uni.$u.props.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: uni.$u.props.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: uni.$u.props.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: uni.$u.props.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: uni.$u.props.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: uni.$u.props.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: uni.$u.props.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: uni.$u.props.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: uni.$u.props.backtop.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-back-top/u-back-top.vue b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..2d07566 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-badge/props.js b/uni_modules/uview-ui/components/u-badge/props.js new file mode 100644 index 0000000..74c032c --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/props.js @@ -0,0 +1,72 @@ +export default { + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: uni.$u.props.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: uni.$u.props.badge.value + }, + // 是否显示 + show: { + type: Boolean, + default: uni.$u.props.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: uni.$u.props.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: uni.$u.props.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: uni.$u.props.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: uni.$u.props.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: uni.$u.props.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: uni.$u.props.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: uni.$u.props.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: uni.$u.props.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: uni.$u.props.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: uni.$u.props.badge.absolute + } + } +} diff --git a/uni_modules/uview-ui/components/u-badge/u-badge.vue b/uni_modules/uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 0000000..53cfc81 --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/nvue.scss b/uni_modules/uview-ui/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-button/props.js b/uni_modules/uview-ui/components/u-button/props.js new file mode 100644 index 0000000..07fd844 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/props.js @@ -0,0 +1,161 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-16 10:04:04 + * @LastAuthor : LQ + * @lastTime : 2021-08-16 10:04:24 + * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js + */ +export default { + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: uni.$u.props.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: uni.$u.props.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: uni.$u.props.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: uni.$u.props.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: uni.$u.props.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: uni.$u.props.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: uni.$u.props.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: uni.$u.props.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: uni.$u.props.button.openType + }, + // 用于
组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: uni.$u.props.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: uni.$u.props.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: uni.$u.props.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: uni.$u.props.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: uni.$u.props.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: uni.$u.props.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: uni.$u.props.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: uni.$u.props.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: uni.$u.props.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: uni.$u.props.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: uni.$u.props.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: uni.$u.props.button.text + }, + // 按钮图标 + icon: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: uni.$u.props.button.color + } + } +} diff --git a/uni_modules/uview-ui/components/u-button/u-button.vue b/uni_modules/uview-ui/components/u-button/u-button.vue new file mode 100644 index 0000000..5494351 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/u-button.vue @@ -0,0 +1,490 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/vue.scss b/uni_modules/uview-ui/components/u-button/vue.scss new file mode 100644 index 0000000..32019b2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/vue.scss @@ -0,0 +1,80 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-error; + +.u-button { + width: 100%; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/header.vue b/uni_modules/uview-ui/components/u-calendar/header.vue new file mode 100644 index 0000000..dc4f7d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/header.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/month.vue b/uni_modules/uview-ui/components/u-calendar/month.vue new file mode 100644 index 0000000..c20937f --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/month.vue @@ -0,0 +1,579 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/props.js b/uni_modules/uview-ui/components/u-calendar/props.js new file mode 100644 index 0000000..2ad7bc7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/props.js @@ -0,0 +1,144 @@ +export default { + props: { + // 日历顶部标题 + title: { + type: String, + default: uni.$u.props.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: uni.$u.props.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: uni.$u.props.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: uni.$u.props.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: uni.$u.props.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: uni.$u.props.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: uni.$u.props.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: uni.$u.props.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: uni.$u.props.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: uni.$u.props.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: uni.$u.props.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: uni.$u.props.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: uni.$u.props.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: uni.$u.props.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: uni.$u.props.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: uni.$u.props.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: uni.$u.props.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: uni.$u.props.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: uni.$u.props.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: uni.$u.props.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: uni.$u.props.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: uni.$u.props.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/u-calendar.vue b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..511f993 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/util.js b/uni_modules/uview-ui/components/u-calendar/util.js new file mode 100644 index 0000000..ca4736b --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/util.js @@ -0,0 +1,85 @@ +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/props.js b/uni_modules/uview-ui/components/u-car-keyboard/props.js new file mode 100644 index 0000000..3553647 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..51175b5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-cell-group/props.js b/uni_modules/uview-ui/components/u-cell-group/props.js new file mode 100644 index 0000000..350ef40 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 分组标题 + title: { + type: String, + default: uni.$u.props.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.cellGroup.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..a9508c0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-cell/props.js b/uni_modules/uview-ui/components/u-cell/props.js new file mode 100644 index 0000000..da03330 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/props.js @@ -0,0 +1,110 @@ +export default { + props: { + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: uni.$u.props.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: uni.$u.props.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: uni.$u.props.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: uni.$u.props.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: uni.$u.props.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: uni.$u.props.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: uni.$u.props.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: uni.$u.props.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: uni.$u.props.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: uni.$u.props.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: uni.$u.props.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: uni.$u.props.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: uni.$u.props.cell.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell/u-cell.vue b/uni_modules/uview-ui/components/u-cell/u-cell.vue new file mode 100644 index 0000000..b099c90 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/u-cell.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox-group/props.js b/uni_modules/uview-ui/components/u-checkbox-group/props.js new file mode 100644 index 0000000..2f818a1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/props.js @@ -0,0 +1,82 @@ +export default { + props: { + // 标识符 + name: { + type: String, + default: uni.$u.props.checkboxGroup.name + }, + // 绑定的值 + value: { + type: Array, + default: uni.$u.props.checkboxGroup.value + }, + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: uni.$u.props.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: uni.$u.props.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: uni.$u.props.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: uni.$u.props.checkboxGroup.borderBottom + } + + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..7a6b4fa --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox/props.js b/uni_modules/uview-ui/components/u-checkbox/props.js new file mode 100644 index 0000000..93f4fd9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/props.js @@ -0,0 +1,69 @@ +export default { + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: uni.$u.props.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: uni.$u.props.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: uni.$u.props.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: uni.$u.props.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: uni.$u.props.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.labelDisabled + } + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..6429cca --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-circle-progress/props.js b/uni_modules/uview-ui/components/u-circle-progress/props.js new file mode 100644 index 0000000..d776cfb --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/props.js @@ -0,0 +1,8 @@ +export default { + props: { + percentage: { + type: [String, Number], + default: uni.$u.props.circleProgress.percentage + } + } +} diff --git a/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..d1ee286 --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code-input/props.js b/uni_modules/uview-ui/components/u-code-input/props.js new file mode 100644 index 0000000..0f016ee --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/props.js @@ -0,0 +1,79 @@ +export default { + props: { + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.codeInput.adjustPosition + }, + // 最大输入长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: uni.$u.props.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: uni.$u.props.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: uni.$u.props.codeInput.space + }, + // 预置值 + value: { + type: [String, Number], + default: uni.$u.props.codeInput.value + }, + // 是否自动获取焦点 + focus: { + type: Boolean, + default: uni.$u.props.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: uni.$u.props.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: uni.$u.props.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: uni.$u.props.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: uni.$u.props.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: uni.$u.props.codeInput.disabledDot + } + } +} diff --git a/uni_modules/uview-ui/components/u-code-input/u-code-input.vue b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..96241cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code/props.js b/uni_modules/uview-ui/components/u-code/props.js new file mode 100644 index 0000000..eaf80d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/props.js @@ -0,0 +1,34 @@ +export default { + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: uni.$u.props.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: uni.$u.props.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: uni.$u.props.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: uni.$u.props.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: uni.$u.props.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: uni.$u.props.code.uniqueKey + } + } +} diff --git a/uni_modules/uview-ui/components/u-code/u-code.vue b/uni_modules/uview-ui/components/u-code/u-code.vue new file mode 100644 index 0000000..f79a09a --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/u-code.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-col/props.js b/uni_modules/uview-ui/components/u-col/props.js new file mode 100644 index 0000000..0622251 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: uni.$u.props.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: uni.$u.props.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: uni.$u.props.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: uni.$u.props.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: uni.$u.props.col.textAlign + } + } +} diff --git a/uni_modules/uview-ui/components/u-col/u-col.vue b/uni_modules/uview-ui/components/u-col/u-col.vue new file mode 100644 index 0000000..8be1517 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/u-col.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse-item/props.js b/uni_modules/uview-ui/components/u-collapse-item/props.js new file mode 100644 index 0000000..bd5749b --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 标题 + title: { + type: String, + default: uni.$u.props.collapseItem.title + }, + // 标题右侧内容 + value: { + type: String, + default: uni.$u.props.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: uni.$u.props.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: uni.$u.props.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: uni.$u.props.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: uni.$u.props.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: uni.$u.props.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: uni.$u.props.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: uni.$u.props.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: uni.$u.props.collapseItem.duration + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..0e1b703 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse/props.js b/uni_modules/uview-ui/components/u-collapse/props.js new file mode 100644 index 0000000..7ee6d31 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: uni.$u.props.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: uni.$u.props.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.collapse.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse/u-collapse.vue b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..fc188a2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-column-notice/props.js b/uni_modules/uview-ui/components/u-column-notice/props.js new file mode 100644 index 0000000..4809154 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/props.js @@ -0,0 +1,55 @@ +export default { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: uni.$u.props.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.columnNotice.disableTouch + } + } +} diff --git a/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..fc39532 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/props.js b/uni_modules/uview-ui/components/u-count-down/props.js new file mode 100644 index 0000000..d62f025 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: uni.$u.props.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: uni.$u.props.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: uni.$u.props.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: uni.$u.props.countDown.millisecond + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-down/u-count-down.vue b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..b5e85a6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/utils.js b/uni_modules/uview-ui/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/uni_modules/uview-ui/components/u-count-to/props.js b/uni_modules/uview-ui/components/u-count-to/props.js new file mode 100644 index 0000000..86873c1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: uni.$u.props.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: uni.$u.props.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: uni.$u.props.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: uni.$u.props.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: uni.$u.props.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: uni.$u.props.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: uni.$u.props.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: uni.$u.props.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: uni.$u.props.countTo.separator + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-to/u-count-to.vue b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..417b732 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-datetime-picker/props.js b/uni_modules/uview-ui/components/u-datetime-picker/props.js new file mode 100644 index 0000000..f44c0f9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/props.js @@ -0,0 +1,116 @@ +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: uni.$u.props.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: uni.$u.props.datetimePicker.showToolbar + }, + // 绑定值 + value: { + type: [String, Number], + default: uni.$u.props.datetimePicker.value + }, + // 顶部标题 + title: { + type: String, + default: uni.$u.props.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: uni.$u.props.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: uni.$u.props.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: uni.$u.props.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: uni.$u.props.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: uni.$u.props.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: uni.$u.props.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: uni.$u.props.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: uni.$u.props.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: uni.$u.props.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: uni.$u.props.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: uni.$u.props.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: uni.$u.props.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: uni.$u.props.datetimePicker.defaultIndex + } + } +} diff --git a/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..18d8dcc --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-divider/props.js b/uni_modules/uview-ui/components/u-divider/props.js new file mode 100644 index 0000000..1fa8359 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: uni.$u.props.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: uni.$u.props.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: uni.$u.props.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: uni.$u.props.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: uni.$u.props.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: uni.$u.props.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: uni.$u.props.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.divider.lineColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-divider/u-divider.vue b/uni_modules/uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 0000000..b629da6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown-item/props.js b/uni_modules/uview-ui/components/u-dropdown-item/props.js new file mode 100644 index 0000000..501a1f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/props.js @@ -0,0 +1,36 @@ +export default { + props: { + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown/props.js b/uni_modules/uview-ui/components/u-dropdown/props.js new file mode 100644 index 0000000..5f8465e --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/props.js @@ -0,0 +1,65 @@ +export default { + props: { + // 标题选中时的样式 + activeStyle: { + type: [String, Object], + default: () => ({ + color: '#2979ff', + fontSize: '14px' + }) + }, + // 标题未选中时的样式 + inactiveStyle: { + type: [String, Object], + default: () => ({ + color: '#606266', + fontSize: '14px' + }) + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-empty/props.js b/uni_modules/uview-ui/components/u-empty/props.js new file mode 100644 index 0000000..78662f8 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: uni.$u.props.empty.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: uni.$u.props.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: uni.$u.props.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: uni.$u.props.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: uni.$u.props.empty.marginTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-empty/u-empty.vue b/uni_modules/uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 0000000..03d6a27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form-item/props.js b/uni_modules/uview-ui/components/u-form-item/props.js new file mode 100644 index 0000000..7b16655 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/props.js @@ -0,0 +1,48 @@ +export default { + props: { + // input的label提示语 + label: { + type: String, + default: uni.$u.props.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: uni.$u.props.formItem.prop + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: uni.$u.props.formItem.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.formItem.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: uni.$u.props.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: uni.$u.props.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: uni.$u.props.formItem.required + }, + leftIconStyle: { + type: [String, Object], + default: uni.$u.props.formItem.leftIconStyle, + } + } +} diff --git a/uni_modules/uview-ui/components/u-form-item/u-form-item.vue b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..6aa8d69 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form/props.js b/uni_modules/uview-ui/components/u-form/props.js new file mode 100644 index 0000000..f2a629c --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/props.js @@ -0,0 +1,45 @@ +export default { + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: uni.$u.props.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: uni.$u.props.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: uni.$u.props.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: uni.$u.props.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: uni.$u.props.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: uni.$u.props.form.labelStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-form/u-form.vue b/uni_modules/uview-ui/components/u-form/u-form.vue new file mode 100644 index 0000000..fe2dde2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/u-form.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-gap/props.js b/uni_modules/uview-ui/components/u-gap/props.js new file mode 100644 index 0000000..89953e3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: uni.$u.props.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: uni.$u.props.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: uni.$u.props.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: uni.$u.props.gap.marginBottom + } + } +} diff --git a/uni_modules/uview-ui/components/u-gap/u-gap.vue b/uni_modules/uview-ui/components/u-gap/u-gap.vue new file mode 100644 index 0000000..e4429f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/u-gap.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid-item/props.js b/uni_modules/uview-ui/components/u-grid-item/props.js new file mode 100644 index 0000000..06c3c66 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: uni.$u.props.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.gridItem.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..fc0c7cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid/props.js b/uni_modules/uview-ui/components/u-grid/props.js new file mode 100644 index 0000000..87b0f6a --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 分成几列 + col: { + type: [String, Number], + default: uni.$u.props.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: uni.$u.props.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: uni.$u.props.grid.align + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid/u-grid.vue b/uni_modules/uview-ui/components/u-grid/u-grid.vue new file mode 100644 index 0000000..b43cc27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/u-grid.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-icon/icons.js b/uni_modules/uview-ui/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/uni_modules/uview-ui/components/u-icon/props.js b/uni_modules/uview-ui/components/u-icon/props.js new file mode 100644 index 0000000..71845b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 图标类名 + name: { + type: String, + default: uni.$u.props.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: uni.$u.props.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: uni.$u.props.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: uni.$u.props.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: uni.$u.props.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: uni.$u.props.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: uni.$u.props.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: uni.$u.props.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: uni.$u.props.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: uni.$u.props.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: uni.$u.props.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: uni.$u.props.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: uni.$u.props.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: uni.$u.props.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: uni.$u.props.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.icon.stop + } + } +} diff --git a/uni_modules/uview-ui/components/u-icon/u-icon.vue b/uni_modules/uview-ui/components/u-icon/u-icon.vue new file mode 100644 index 0000000..9340328 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/u-icon.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-image/props.js b/uni_modules/uview-ui/components/u-image/props.js new file mode 100644 index 0000000..2eabb74 --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 图片地址 + src: { + type: String, + default: uni.$u.props.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: uni.$u.props.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: uni.$u.props.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: uni.$u.props.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: uni.$u.props.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: uni.$u.props.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: uni.$u.props.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: uni.$u.props.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: uni.$u.props.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: uni.$u.props.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: uni.$u.props.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: uni.$u.props.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: uni.$u.props.image.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-image/u-image.vue b/uni_modules/uview-ui/components/u-image/u-image.vue new file mode 100644 index 0000000..473e35b --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/u-image.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-anchor/props.js b/uni_modules/uview-ui/components/u-index-anchor/props.js new file mode 100644 index 0000000..6d8b59a --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: uni.$u.props.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: uni.$u.props.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: uni.$u.props.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: uni.$u.props.indexAnchor.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..b95ddef --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-item/props.js b/uni_modules/uview-ui/components/u-index-item/props.js new file mode 100644 index 0000000..7c11331 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/props.js @@ -0,0 +1,5 @@ +export default { + props: { + + } +} diff --git a/uni_modules/uview-ui/components/u-index-item/u-index-item.vue b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..0bc7fb3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-list/props.js b/uni_modules/uview-ui/components/u-index-list/props.js new file mode 100644 index 0000000..354d459 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: uni.$u.props.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: uni.$u.props.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: uni.$u.props.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: uni.$u.props.indexList.customNavHeight + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-list/u-index-list.vue b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..d712618 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-input/props.js b/uni_modules/uview-ui/components/u-input/props.js new file mode 100644 index 0000000..2c50870 --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/props.js @@ -0,0 +1,187 @@ +export default { + props: { + // 输入的值 + value: { + type: [String, Number], + default: uni.$u.props.input.value + }, + // 输入框类型 + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: uni.$u.props.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: uni.$u.props.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: uni.$u.props.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: uni.$u.props.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: uni.$u.props.input.clearable + }, + // 是否密码类型 + password: { + type: Boolean, + default: uni.$u.props.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: uni.$u.props.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: uni.$u.props.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: uni.$u.props.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: uni.$u.props.input.showWordLimit + }, + // 设置右下角按钮的文字,有效值:send|search|next|go|done,兼容性详见uni-app文档 + // https://uniapp.dcloud.io/component/input + // https://uniapp.dcloud.io/component/textarea + confirmType: { + type: String, + default: uni.$u.props.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: uni.$u.props.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: uni.$u.props.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: uni.$u.props.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: uni.$u.props.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: uni.$u.props.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: uni.$u.props.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: uni.$u.props.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: uni.$u.props.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: uni.$u.props.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: uni.$u.props.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: uni.$u.props.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: uni.$u.props.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: uni.$u.props.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: uni.$u.props.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: uni.$u.props.input.formatter + }, + // 是否忽略组件内对文本合成系统事件的处理 + ignoreCompositionEvent: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-input/u-input.vue b/uni_modules/uview-ui/components/u-input/u-input.vue new file mode 100644 index 0000000..30073eb --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/u-input.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-keyboard/props.js b/uni_modules/uview-ui/components/u-keyboard/props.js new file mode 100644 index 0000000..cfdb00a --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: uni.$u.props.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: uni.$u.props.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: uni.$u.props.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: uni.$u.props.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: uni.$u.props.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: uni.$u.props.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: uni.$u.props.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: uni.$u.props.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: uni.$u.props.keyboard.autoChange + } + } +} diff --git a/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..14228cb --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line-progress/props.js b/uni_modules/uview-ui/components/u-line-progress/props.js new file mode 100644 index 0000000..a4210bd --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/props.js @@ -0,0 +1,28 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: uni.$u.props.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: uni.$u.props.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: uni.$u.props.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: uni.$u.props.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.lineProgress.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..4e27931 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line/props.js b/uni_modules/uview-ui/components/u-line/props.js new file mode 100644 index 0000000..2308cc3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/props.js @@ -0,0 +1,33 @@ +export default { + props: { + color: { + type: String, + default: uni.$u.props.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: uni.$u.props.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: uni.$u.props.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: uni.$u.props.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: uni.$u.props.line.margin + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.line.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-line/u-line.vue b/uni_modules/uview-ui/components/u-line/u-line.vue new file mode 100644 index 0000000..e0a6d92 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/u-line.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-link/props.js b/uni_modules/uview-ui/components/u-link/props.js new file mode 100644 index 0000000..d39353f --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/props.js @@ -0,0 +1,39 @@ +export default { + props: { + // 文字颜色 + color: { + type: String, + default: uni.$u.props.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: uni.$u.props.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: uni.$u.props.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: uni.$u.props.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: uni.$u.props.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: uni.$u.props.link.text + } + } +} diff --git a/uni_modules/uview-ui/components/u-link/u-link.vue b/uni_modules/uview-ui/components/u-link/u-link.vue new file mode 100644 index 0000000..c6802a5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/u-link.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list-item/props.js b/uni_modules/uview-ui/components/u-list-item/props.js new file mode 100644 index 0000000..58ddc49 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/props.js @@ -0,0 +1,9 @@ +export default { + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: uni.$u.props.listItem.anchor + } + } +} diff --git a/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..1a25db6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list/props.js b/uni_modules/uview-ui/components/u-list/props.js new file mode 100644 index 0000000..25406f4 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/props.js @@ -0,0 +1,76 @@ +export default { + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: uni.$u.props.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: uni.$u.props.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: uni.$u.props.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: uni.$u.props.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: uni.$u.props.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: uni.$u.props.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: uni.$u.props.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: uni.$u.props.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: uni.$u.props.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: uni.$u.props.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: uni.$u.props.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: uni.$u.props.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: uni.$u.props.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: uni.$u.props.list.preLoadScreen + } + // vue下,是否开启虚拟列表 + + } +} diff --git a/uni_modules/uview-ui/components/u-list/u-list.vue b/uni_modules/uview-ui/components/u-list/u-list.vue new file mode 100644 index 0000000..4447cab --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/u-list.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-icon/props.js b/uni_modules/uview-ui/components/u-loading-icon/props.js new file mode 100644 index 0000000..c35524e --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: uni.$u.props.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: uni.$u.props.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: uni.$u.props.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: uni.$u.props.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: uni.$u.props.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: uni.$u.props.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: uni.$u.props.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: uni.$u.props.loadingIcon.inactiveColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..2ede5c3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-page/props.js b/uni_modules/uview-ui/components/u-loading-page/props.js new file mode 100644 index 0000000..e239b61 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: uni.$u.props.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: uni.$u.props.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: uni.$u.props.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: uni.$u.props.loadingPage.loadingColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..03a78ad --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loadmore/props.js b/uni_modules/uview-ui/components/u-loadmore/props.js new file mode 100644 index 0000000..1e67d89 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/props.js @@ -0,0 +1,94 @@ +export default { + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: uni.$u.props.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: uni.$u.props.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: uni.$u.props.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadmore.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadmore.iconSize + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.loadmore.color + }, + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: uni.$u.props.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: uni.$u.props.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: uni.$u.props.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: uni.$u.props.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: uni.$u.props.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: uni.$u.props.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: uni.$u.props.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: uni.$u.props.loadmore.line + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.loadmore.lineColor + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.loadmore.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..73c79fe --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-modal/props.js b/uni_modules/uview-ui/components/u-modal/props.js new file mode 100644 index 0000000..f76672c --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否展示modal + show: { + type: Boolean, + default: uni.$u.props.modal.show + }, + // 标题 + title: { + type: [String], + default: uni.$u.props.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: uni.$u.props.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: uni.$u.props.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: uni.$u.props.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: uni.$u.props.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: uni.$u.props.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: uni.$u.props.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: uni.$u.props.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: uni.$u.props.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: uni.$u.props.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: uni.$u.props.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: uni.$u.props.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: uni.$u.props.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: uni.$u.props.modal.confirmButtonShape + } + } +} diff --git a/uni_modules/uview-ui/components/u-modal/u-modal.vue b/uni_modules/uview-ui/components/u-modal/u-modal.vue new file mode 100644 index 0000000..4c37ae2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/u-modal.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-navbar/props.js b/uni_modules/uview-ui/components/u-navbar/props.js new file mode 100644 index 0000000..5398de2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: uni.$u.props.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: uni.$u.props.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: uni.$u.props.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: uni.$u.props.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: uni.$u.props.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: uni.$u.props.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.navbar.title + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.navbar.bgColor + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: uni.$u.props.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: uni.$u.props.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: uni.$u.props.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: uni.$u.props.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: uni.$u.props.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: uni.$u.props.navbar.titleStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-navbar/u-navbar.vue b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..2b206b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-no-network/props.js b/uni_modules/uview-ui/components/u-no-network/props.js new file mode 100644 index 0000000..9f3af62 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 页面文字提示 + tips: { + type: String, + default: uni.$u.props.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: uni.$u.props.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: uni.$u.props.noNetwork.image + } + } +} diff --git a/uni_modules/uview-ui/components/u-no-network/u-no-network.vue b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..9710729 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-notice-bar/props.js b/uni_modules/uview-ui/components/u-notice-bar/props.js new file mode 100644 index 0000000..7040c29 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/props.js @@ -0,0 +1,70 @@ +export default { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: uni.$u.props.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: uni.$u.props.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: uni.$u.props.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: uni.$u.props.noticeBar.linkType + } + } +} diff --git a/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..a06eb39 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,101 @@ + + + + diff --git a/uni_modules/uview-ui/components/u-notify/props.js b/uni_modules/uview-ui/components/u-notify/props.js new file mode 100644 index 0000000..57a9d71 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: uni.$u.props.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: uni.$u.props.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: uni.$u.props.notify.type + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: uni.$u.props.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.notify.safeAreaInsetTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-notify/u-notify.vue b/uni_modules/uview-ui/components/u-notify/u-notify.vue new file mode 100644 index 0000000..30adb72 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/u-notify.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-box/props.js b/uni_modules/uview-ui/components/u-number-box/props.js new file mode 100644 index 0000000..fb0fa94 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/props.js @@ -0,0 +1,109 @@ +export default { + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: uni.$u.props.numberBox.name + }, + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: uni.$u.props.numberBox.value + }, + // 最小值 + min: { + type: [String, Number], + default: uni.$u.props.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: uni.$u.props.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: uni.$u.props.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: uni.$u.props.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: uni.$u.props.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: uni.$u.props.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: uni.$u.props.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: uni.$u.props.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: uni.$u.props.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: uni.$u.props.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: uni.$u.props.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: uni.$u.props.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: uni.$u.props.numberBox.color + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: uni.$u.props.numberBox.buttonSize + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: uni.$u.props.numberBox.bgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: uni.$u.props.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: uni.$u.props.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: uni.$u.props.numberBox.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-box/u-number-box.vue b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..69211c5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-keyboard/props.js b/uni_modules/uview-ui/components/u-number-keyboard/props.js new file mode 100644 index 0000000..5e3bf55 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: uni.$u.props.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.numberKeyboard.random + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..4f505c6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-overlay/props.js b/uni_modules/uview-ui/components/u-overlay/props.js new file mode 100644 index 0000000..e6974df --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: uni.$u.props.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: uni.$u.props.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: uni.$u.props.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: uni.$u.props.overlay.opacity + } + } +} diff --git a/uni_modules/uview-ui/components/u-overlay/u-overlay.vue b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..92de4e9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-parse/node/node.vue b/uni_modules/uview-ui/components/u-parse/node/node.vue new file mode 100644 index 0000000..73e30fd --- /dev/null +++ b/uni_modules/uview-ui/components/u-parse/node/node.vue @@ -0,0 +1,499 @@ +