├── .env.development ├── .env.production ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── doc ├── pro_01.jpg ├── pro_02.jpg ├── pro_03.jpg ├── pro_04.jpg ├── pro_05.jpg ├── pro_06.jpg ├── pro_07.jpg ├── pro_08.jpg ├── pro_09.jpg ├── pro_10.jpg ├── wx_01.jpg └── wx_02.jpg ├── index.html ├── package.json ├── shims-uni.d.ts ├── src ├── App.vue ├── app.scss ├── components │ ├── delete-popup │ │ └── index.vue │ ├── logout-popup │ │ └── index.vue │ ├── video-item │ │ └── index.vue │ └── video-preview-popup │ │ ├── index.scss │ │ └── index.vue ├── main.js ├── manifest.json ├── pages.json ├── pages │ ├── agreement │ │ └── index.vue │ ├── characterClone │ │ ├── index.scss │ │ └── index.vue │ ├── characterList │ │ ├── index.scss │ │ └── index.vue │ ├── generate-oral-broadcast │ │ ├── index.scss │ │ └── index.vue │ ├── index │ │ ├── index.scss │ │ └── index.vue │ └── login │ │ ├── index.scss │ │ └── index.vue ├── shime-uni.d.ts ├── static │ ├── favicon.ico │ ├── images │ │ ├── common │ │ │ ├── creating_img.png │ │ │ ├── img_fail.png │ │ │ ├── video_preview_bottom.png │ │ │ ├── video_preview_modify.png │ │ │ └── video_preview_top.png │ │ ├── icon │ │ │ ├── checkbox_checked.png │ │ │ ├── checkbox_indeterminate.png │ │ │ ├── checkbox_uncheck.png │ │ │ ├── empty_data.png │ │ │ ├── icon_add.png │ │ │ ├── icon_ai_script.png │ │ │ ├── icon_close.png │ │ │ ├── icon_digital_human.png │ │ │ ├── icon_download.png │ │ │ ├── icon_edit.png │ │ │ ├── icon_extract_script.png │ │ │ ├── icon_loading.png │ │ │ ├── icon_more.png │ │ │ ├── icon_refresh.png │ │ │ ├── icon_right_arrow.png │ │ │ ├── icon_safety.png │ │ │ ├── icon_search.png │ │ │ ├── icon_selected.png │ │ │ └── icon_voice.png │ │ ├── index │ │ │ ├── page_header_bg.png │ │ │ ├── video_creation_1.png │ │ │ ├── video_creation_2.png │ │ │ ├── video_creation_bg1.png │ │ │ └── video_creation_bg2.png │ │ └── login │ │ │ ├── icon_account.png │ │ │ ├── icon_password.png │ │ │ ├── login_bg.png │ │ │ ├── login_bg_title.png │ │ │ └── logo.png │ └── video │ │ └── guidance_figure.mp4 ├── uni.scss ├── uni_modules │ ├── uni-icons │ │ ├── changelog.md │ │ ├── components │ │ │ └── uni-icons │ │ │ │ ├── uni-icons.uvue │ │ │ │ ├── uni-icons.vue │ │ │ │ ├── uniicons.css │ │ │ │ ├── uniicons.ttf │ │ │ │ ├── uniicons_file.ts │ │ │ │ └── uniicons_file_vue.js │ │ ├── package.json │ │ └── readme.md │ ├── uni-load-more │ │ ├── changelog.md │ │ ├── components │ │ │ └── uni-load-more │ │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.js │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ │ └── uni-load-more.vue │ │ ├── package.json │ │ └── readme.md │ ├── uni-nav-bar │ │ ├── changelog.md │ │ ├── components │ │ │ └── uni-nav-bar │ │ │ │ ├── uni-nav-bar.vue │ │ │ │ └── uni-status-bar.vue │ │ ├── package.json │ │ └── readme.md │ ├── uni-popup │ │ ├── changelog.md │ │ ├── components │ │ │ ├── uni-popup-dialog │ │ │ │ ├── keypress.js │ │ │ │ └── uni-popup-dialog.vue │ │ │ ├── uni-popup-message │ │ │ │ └── uni-popup-message.vue │ │ │ ├── uni-popup-share │ │ │ │ └── uni-popup-share.vue │ │ │ └── uni-popup │ │ │ │ ├── i18n │ │ │ │ ├── en.json │ │ │ │ ├── index.js │ │ │ │ ├── zh-Hans.json │ │ │ │ └── zh-Hant.json │ │ │ │ ├── keypress.js │ │ │ │ ├── popup.js │ │ │ │ ├── uni-popup.uvue │ │ │ │ └── uni-popup.vue │ │ ├── package.json │ │ └── readme.md │ ├── uni-scss │ │ ├── changelog.md │ │ ├── index.scss │ │ ├── package.json │ │ ├── readme.md │ │ ├── styles │ │ │ ├── index.scss │ │ │ ├── setting │ │ │ │ ├── _border.scss │ │ │ │ ├── _color.scss │ │ │ │ ├── _radius.scss │ │ │ │ ├── _space.scss │ │ │ │ ├── _styles.scss │ │ │ │ ├── _text.scss │ │ │ │ └── _variables.scss │ │ │ └── tools │ │ │ │ └── functions.scss │ │ ├── theme.scss │ │ └── variables.scss │ └── uni-transition │ │ ├── changelog.md │ │ ├── components │ │ └── uni-transition │ │ │ ├── createAnimation.js │ │ │ └── uni-transition.vue │ │ ├── package.json │ │ └── readme.md └── utils │ ├── http.js │ └── util.js └── vite.config.js /.env.development: -------------------------------------------------------------------------------- 1 | # 如需添加更多环境变量,请以 VITE_APP_ 开头声明 2 | # 在代码中使用 import.meta.env.VITE_APP_XXX 获取指定变量 3 | 4 | # 环境配置标识 5 | ENV = 'development' 6 | VITE_APP_IS_TAURI = 'true' 7 | 8 | # api接口请求地址 9 | VITE_APP_BASE_API = 'http://127.0.0.1:8000/api' 10 | 11 | -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | # 如需添加更多环境变量,请以 VITE_APP_ 开头声明 2 | # 在代码中使用 import.meta.env.VITE_APP_XXX 获取指定变量 3 | 4 | # 环境配置标识 5 | ENV = 'production' 6 | VITE_APP_IS_TAURI = 'true' 7 | 8 | # api接口请求地址 9 | VITE_APP_BASE_API = 'http://127.0.0.1:8000/api' 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | *.local 14 | package-lock.json 15 | 16 | # Editor directories and files 17 | .idea 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "i18n-ally.localesPaths": [ 3 | "src/uni_modules/uni-load-more/components/uni-load-more/i18n", 4 | "src/uni_modules/uni-popup/components/uni-popup/i18n" 5 | ] 6 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Project | 项目 2 | #### 高颜值AI数字人克隆、声音克隆、短视频生成、直播(待发布)、AI配音、AI字幕,包括Windows安装版,Web版,H5版,小程序版,副业必备。 3 | AI digital human cloning with high appearance, voice cloning, short video generation, live streaming (to be released), AI dubbing, AI subtitles, including Windows installation version, Web version, H5 version, Mini Program version, perfect for side business. | 4 | 5 | #### 场景主要用于AI获客、AI私域成交(待发布)、AI超级销售(待发布),避免被割韭菜。 6 | Scenarios mainly used for AI customer acquisition, AI private domain transactions (to be released), AI super sales (to be released), to avoid being scammed. 7 | 8 | #### 做这个事的初衷是35岁程序员失业,被洗脑花了花了一百多万自己建短视频直播运营团队,第一个月效果不好,换了一波人,都是行业顶尖的,3个月过去,投了100多万只回来了不到3万。发现市场上有数字人直播的,害怕再被割,和几个朋友一起开始了研发之路,回归本行。 9 | The original intention of doing this was that a 35-year-old programmer became unemployed, was brainwashed and spent over one million yuan to build his own short video live streaming operations team. The first month's results were not good, changed a group of people who were top in the industry, after 3 months, invested over 1 million but got back less than 30,000. Found digital human live streaming in the market, afraid of being scammed again, started the development journey with several friends, returning to the original profession. | 10 | 11 | #### 有问题请再群里或是issue上提问,请避免"大爷式"提问,如:xxx怎么解决?,有没有人回复下xxx? 12 | For questions, please ask in the group or raise an issue. Please avoid "boss-style" questions like: How to solve xxx? Can someone reply to xxx? | 13 | 14 | #### 退伍军人、失业人员、待业宝妈会优先解答,其他如果回复慢,也请不要责怪。 15 | Veterans, unemployed people, and stay-at-home moms will be given priority in answers. If other responses are slow, please don't blame us. | 16 | 17 | #### Windows安装版、Web版-开源地址: 18 | https://github.com/libn-net/marketing_creator_pro_max_pc 19 | #### H5、小程序版-开源地址: 20 | https://github.com/libn-net/marketing_creator_pro_max_uni 21 | #### 后端API-开源地址: 22 | https://github.com/libn-net/marketing_creator_pro_max_backend 23 | 24 | #### 功能列表: 25 | - 形象克隆 26 | - 上传 27 | - 训练 28 | - 列表 29 | - 声音克隆 30 | - 录音 31 | - 上传 32 | - 训练 33 | - 列表 34 | - 视频生成 35 | - 全局配置-导出格式 36 | - 全局配置-指定帧率 37 | - 全局配置-指定横版/竖版 38 | - 全局配置-指定分辨率 39 | - 文案生成-文案仿写(30%) 40 | - 文案生成-抖音链接仿写(30%) 41 | - 文案生成-自由仿写 42 | - 文案生成-文案拆解(30%) 43 | - 人物选择-私有AI数字人 44 | - 人物选择-公共AI数字人(50%) 45 | - 配音生成-私有克隆声音 46 | - 配音生成-公共克隆声音 47 | - 配音生成-语速调节 48 | - 配音生成-音量调节 49 | - 背景音乐-公共素材 50 | - 背景音乐-上传素材 51 | - 背景音乐-音量调节 52 | - 字幕生成-选择字体 53 | - 字幕生成-字体大小 54 | - 字幕生成-字体颜色 55 | - 贴纸动画-文字贴纸(50%) 56 | - 贴纸动画-图片贴纸(50%) 57 | - 贴纸动画-动效贴纸(50%) 58 | - 短视频发布 59 | - 抖音 60 | - 快手 61 | - 视频号 62 | - 小红书 63 | - AI数字人直播(20%) 64 | - 直播方案-主播选择 65 | - 直播方案-副播选择 66 | - 直播方案-实时文案 67 | - 直播方案-自动下播 68 | - 直播方案-自动上播 69 | - 直播方案-自动换播 70 | - 直播方案-大模型知识库 71 | - 直播方案-沟通记录 72 | - AI优质图文(10%) 73 | - 随笔内容 74 | - 软营销内容 75 | - 专业报道 76 | - 长篇小说 77 | - 长篇漫画 78 | - 图文内容发布(10%) 79 | - 公众号 80 | - 百家号 81 | - 今日头条 82 | - 搜狐号 83 | - ...等 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | ## 感谢开源项目: 98 | - https://github.com/anliyuan/Ultralight-Digital-Human 99 | - https://github.com/fishaudio/fish-speech 100 | - https://github.com/Tzenthin/wenet_mnn 101 | - https://github.com/FFmpeg/FFmpeg 102 | 103 | ## 感谢开源的贡献者: 104 | - https://github.com/wxc1207 105 | - https://github.com/libn-net 106 | - https://github.com/songyanbin 107 | - https://github.com/star4564 108 | - https://github.com/WangWei974747584 109 | - https://github.com/huminghr 110 | 111 | ## 基友&基友圈(请备注:开源数字人交流) 112 | 113 | 114 | 115 | ## 环境要求 116 | 117 | - Node.js (v18.0.0+) 118 | - npm 或 yarn 119 | 120 | ## 安装步骤 121 | 122 | - 下载依赖 npm install 123 | - 运行项目参考 https://uniapp.dcloud.net.cn/quickstart-cli.html#%E8%BF%90%E8%A1%8C%E3%80%81%E5%8F%91%E5%B8%83uni-app 124 | -------------------------------------------------------------------------------- /doc/pro_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_01.jpg -------------------------------------------------------------------------------- /doc/pro_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_02.jpg -------------------------------------------------------------------------------- /doc/pro_03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_03.jpg -------------------------------------------------------------------------------- /doc/pro_04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_04.jpg -------------------------------------------------------------------------------- /doc/pro_05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_05.jpg -------------------------------------------------------------------------------- /doc/pro_06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_06.jpg -------------------------------------------------------------------------------- /doc/pro_07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_07.jpg -------------------------------------------------------------------------------- /doc/pro_08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_08.jpg -------------------------------------------------------------------------------- /doc/pro_09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_09.jpg -------------------------------------------------------------------------------- /doc/pro_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/pro_10.jpg -------------------------------------------------------------------------------- /doc/wx_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/wx_01.jpg -------------------------------------------------------------------------------- /doc/wx_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/doc/wx_02.jpg -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 14 | 元界获客宝 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uni-preset-vue", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "dev:custom": "uni -p", 6 | "dev:h5": "uni", 7 | "dev:h5:ssr": "uni --ssr", 8 | "dev:mp-alipay": "uni -p mp-alipay", 9 | "dev:mp-baidu": "uni -p mp-baidu", 10 | "dev:mp-jd": "uni -p mp-jd", 11 | "dev:mp-kuaishou": "uni -p mp-kuaishou", 12 | "dev:mp-lark": "uni -p mp-lark", 13 | "dev:mp-qq": "uni -p mp-qq", 14 | "dev:mp-toutiao": "uni -p mp-toutiao", 15 | "dev:mp-weixin": "uni -p mp-weixin", 16 | "dev:mp-xhs": "uni -p mp-xhs", 17 | "dev:quickapp-webview": "uni -p quickapp-webview", 18 | "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", 19 | "dev:quickapp-webview-union": "uni -p quickapp-webview-union", 20 | "build:custom": "uni build -p", 21 | "build:h5": "uni build", 22 | "build:h5:ssr": "uni build --ssr", 23 | "build:mp-alipay": "uni build -p mp-alipay", 24 | "build:mp-baidu": "uni build -p mp-baidu", 25 | "build:mp-jd": "uni build -p mp-jd", 26 | "build:mp-kuaishou": "uni build -p mp-kuaishou", 27 | "build:mp-lark": "uni build -p mp-lark", 28 | "build:mp-qq": "uni build -p mp-qq", 29 | "build:mp-toutiao": "uni build -p mp-toutiao", 30 | "build:mp-weixin": "uni build -p mp-weixin", 31 | "build:mp-xhs": "uni build -p mp-xhs", 32 | "build:quickapp-webview": "uni build -p quickapp-webview", 33 | "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", 34 | "build:quickapp-webview-union": "uni build -p quickapp-webview-union" 35 | }, 36 | "dependencies": { 37 | "@dcloudio/uni-app": "3.0.0-4020920240930001", 38 | "@dcloudio/uni-app-harmony": "3.0.0-4020920240930001", 39 | "@dcloudio/uni-app-plus": "3.0.0-4020920240930001", 40 | "@dcloudio/uni-components": "3.0.0-4020920240930001", 41 | "@dcloudio/uni-h5": "3.0.0-4020920240930001", 42 | "@dcloudio/uni-mp-alipay": "3.0.0-4020920240930001", 43 | "@dcloudio/uni-mp-baidu": "3.0.0-4020920240930001", 44 | "@dcloudio/uni-mp-jd": "3.0.0-4020920240930001", 45 | "@dcloudio/uni-mp-kuaishou": "3.0.0-4020920240930001", 46 | "@dcloudio/uni-mp-lark": "3.0.0-4020920240930001", 47 | "@dcloudio/uni-mp-qq": "3.0.0-4020920240930001", 48 | "@dcloudio/uni-mp-toutiao": "3.0.0-4020920240930001", 49 | "@dcloudio/uni-mp-weixin": "3.0.0-4020920240930001", 50 | "@dcloudio/uni-mp-xhs": "3.0.0-4020920240930001", 51 | "@dcloudio/uni-quickapp-webview": "3.0.0-4020920240930001", 52 | "howler": "^2.2.4", 53 | "vue": "^3.4.21", 54 | "vue-i18n": "^9.1.9" 55 | }, 56 | "devDependencies": { 57 | "@dcloudio/types": "^3.4.8", 58 | "@dcloudio/uni-automator": "3.0.0-4020920240930001", 59 | "@dcloudio/uni-cli-shared": "3.0.0-4020920240930001", 60 | "@dcloudio/uni-stacktracey": "3.0.0-4020920240930001", 61 | "@dcloudio/vite-plugin-uni": "3.0.0-4020920240930001", 62 | "@vue/runtime-core": "^3.4.21", 63 | "sass": "^1.81.0", 64 | "vite": "5.2.8" 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /shims-uni.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import 'vue' 3 | 4 | declare module '@vue/runtime-core' { 5 | type Hooks = App.AppInstance & Page.PageInstance; 6 | 7 | interface ComponentCustomOptions extends Hooks { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 19 | -------------------------------------------------------------------------------- /src/app.scss: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #131414; 3 | } 4 | 5 | /* h5低版本浏览兼容 */ 6 | :root { 7 | --safe-area-inset-bottom: 0px; 8 | } 9 | 10 | /* #ifdef H5 */ 11 | :root { 12 | --safe-area-inset-bottom: 0px; 13 | } 14 | 15 | @supports (padding-bottom: env(safe-area-inset-bottom)) { 16 | :root { 17 | --safe-area-inset-bottom: env(safe-area-inset-bottom); 18 | } 19 | } 20 | /* #endif */ 21 | 22 | /* #ifndef H5 */ 23 | :root { 24 | --safe-area-inset-bottom: env(safe-area-inset-bottom); 25 | } 26 | /* #endif */ 27 | 28 | .h-full { 29 | height: 100vh; 30 | /* #ifdef H5 */ 31 | height: calc(100vh - 44px); /* H5端减去导航栏高度 */ 32 | /* #endif */ 33 | 34 | /* #ifdef MP-WEIXIN */ 35 | height: 100vh; /* 小程序端自动处理了导航栏高度 */ 36 | /* #endif */ 37 | } 38 | .mh-100vh { 39 | min-height: 100vh; 40 | /* #ifdef H5 */ 41 | min-height: calc(100vh - 44px); /* H5端减去导航栏高度 */ 42 | /* #endif */ 43 | 44 | /* #ifdef MP-WEIXIN */ 45 | min-height: 100vh; /* 小程序端自动处理了导航栏高度 */ 46 | /* #endif */ 47 | } 48 | .flex1 { 49 | flex: 1; 50 | } 51 | .ml16 { 52 | margin-left: 16rpx; 53 | } 54 | .mr16 { 55 | margin-right: 16rpx; 56 | } 57 | 58 | /*checkbox 选项框大小 */ 59 | uni-checkbox { 60 | .uni-checkbox-input { 61 | width: 32rpx !important; 62 | height: 32rpx !important; 63 | } 64 | .uni-checkbox-wrapper { 65 | display: block; 66 | } 67 | } 68 | 69 | .global-tab-list { 70 | display: flex; 71 | align-items: center; 72 | gap: 66rpx; 73 | .tab-item { 74 | font-size: 32rpx; 75 | line-height: 44rpx; 76 | color: rgba(255,255,255,0.6); 77 | font-weight: 500; 78 | padding-bottom: 22rpx; 79 | position: relative; 80 | &::after { 81 | content: ''; 82 | width: 100%; 83 | height: 6rpx; 84 | background: linear-gradient( 90deg, #61DDFD 0%, rgba(97,221,253,0) 100%); 85 | position: absolute; 86 | bottom: 0; 87 | left: 0; 88 | border-radius: 6rpx; 89 | display: none; 90 | } 91 | &.active { 92 | color: #fff; 93 | &::after { 94 | display: block; 95 | } 96 | } 97 | } 98 | } 99 | 100 | .global-list-empty { 101 | display: flex; 102 | flex-direction: column; 103 | align-items: center; 104 | padding-top: 84rpx; 105 | .global-list-empty-icon { 106 | width: 220rpx; 107 | height: 200rpx; 108 | display: block; 109 | } 110 | .global-list-empty-text { 111 | padding-top: 20rpx; 112 | font-size: 24rpx; 113 | line-height: 34rpx; 114 | color: rgba(255,255,255,0.6); 115 | font-weight: 400; 116 | } 117 | } 118 | 119 | // 重置toast样式 120 | .uni-simple-toast__text { 121 | background: rgba(255,255,255,0.8); 122 | color: #000000; 123 | } -------------------------------------------------------------------------------- /src/components/delete-popup/index.vue: -------------------------------------------------------------------------------- 1 | 15 | 29 | 74 | -------------------------------------------------------------------------------- /src/components/logout-popup/index.vue: -------------------------------------------------------------------------------- 1 | 15 | 29 | 74 | -------------------------------------------------------------------------------- /src/components/video-item/index.vue: -------------------------------------------------------------------------------- 1 | 46 | 47 | 83 | 212 | -------------------------------------------------------------------------------- /src/components/video-preview-popup/index.scss: -------------------------------------------------------------------------------- 1 | .video-preview-popup { 2 | z-index: 999; 3 | .video-preview-popup-content { 4 | box-sizing: border-box; 5 | width: 100vw; 6 | height: 100vh; 7 | display: flex; 8 | flex-direction: column; 9 | position: relative; 10 | .close-btn-icon { 11 | width: 80rpx; 12 | height: 80rpx; 13 | position: absolute; 14 | right: 32rpx; 15 | top: 188rpx; 16 | z-index: 9; 17 | } 18 | .download-btn-icon { 19 | width: 80rpx; 20 | height: 80rpx; 21 | position: absolute; 22 | right: 32rpx; 23 | top: 280rpx; 24 | z-index: 9; 25 | } 26 | .video-preview-popup-top-img { 27 | width: 100%; 28 | height: 160rpx; 29 | display: block; 30 | flex-shrink: 0; 31 | } 32 | .video { 33 | flex: 1; 34 | width: 100%; 35 | display: block; 36 | } 37 | .video-preview-popup-bottom-img { 38 | width: 100%; 39 | height: 116rpx; 40 | display: block; 41 | flex-shrink: 0; 42 | } 43 | .video-preview-popup-modify-img { 44 | width: 84rpx; 45 | height: 732rpx; 46 | position: absolute; 47 | right: 20rpx; 48 | bottom: 156rpx; 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /src/components/video-preview-popup/index.vue: -------------------------------------------------------------------------------- 1 | 25 | 94 | 97 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { 2 | createSSRApp 3 | } from "vue"; 4 | import App from "./App.vue"; 5 | export function createApp() { 6 | const app = createSSRApp(App); 7 | return { 8 | app, 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "", 3 | "appid" : "", 4 | "description" : "", 5 | "versionName" : "1.0.0", 6 | "versionCode" : "100", 7 | "transformPx" : false, 8 | "h5" : { 9 | "title" : "元界获客宝", 10 | "router": { 11 | "base": "/h5/" 12 | } 13 | }, 14 | /* 5+App特有相关 */ 15 | "app-plus" : { 16 | "usingComponents" : true, 17 | "nvueStyleCompiler" : "uni-app", 18 | "compilerVersion" : 3, 19 | "splashscreen" : { 20 | "alwaysShowBeforeRender" : true, 21 | "waiting" : true, 22 | "autoclose" : true, 23 | "delay" : 0 24 | }, 25 | /* 模块配置 */ 26 | "modules" : {}, 27 | /* 应用发布信息 */ 28 | "distribute" : { 29 | /* android打包配置 */ 30 | "android" : { 31 | "permissions" : [ 32 | "", 33 | "", 34 | "", 35 | "", 36 | "", 37 | "", 38 | "", 39 | "", 40 | "", 41 | "", 42 | "", 43 | "", 44 | "", 45 | "", 46 | "" 47 | ] 48 | }, 49 | /* ios打包配置 */ 50 | "ios" : {}, 51 | /* SDK配置 */ 52 | "sdkConfigs" : {} 53 | } 54 | }, 55 | /* 快应用特有相关 */ 56 | "quickapp" : {}, 57 | /* 小程序特有相关 */ 58 | "mp-weixin" : { 59 | "appid" : "", 60 | "setting" : { 61 | "urlCheck" : false 62 | }, 63 | "usingComponents" : true 64 | }, 65 | "mp-alipay" : { 66 | "usingComponents" : true 67 | }, 68 | "mp-baidu" : { 69 | "usingComponents" : true 70 | }, 71 | "mp-toutiao" : { 72 | "usingComponents" : true 73 | }, 74 | "uniStatistics": { 75 | "enable": false 76 | }, 77 | "vueVersion" : "3" 78 | } 79 | -------------------------------------------------------------------------------- /src/pages.json: -------------------------------------------------------------------------------- 1 | { 2 | "pages": [ 3 | { 4 | "path": "pages/login/index", 5 | "style": { 6 | "navigationBarTitleText": "登录" 7 | } 8 | }, 9 | { 10 | "path": "pages/index/index", 11 | "style": { 12 | "navigationBarTitleText": "元界获客宝", 13 | "enablePullDownRefresh": true 14 | } 15 | }, 16 | { 17 | "path": "pages/characterClone/index", 18 | "style": { 19 | "navigationBarTitleText": "定制数字人" 20 | } 21 | }, 22 | { 23 | "path": "pages/characterList/index", 24 | "style": { 25 | "navigationBarTitleText": "我的数字人", 26 | "enablePullDownRefresh": true 27 | } 28 | }, 29 | { 30 | "path": "pages/generate-oral-broadcast/index", 31 | "style": { 32 | "navigationBarTitleText": "AI视频创作", 33 | "navigationStyle": "custom" 34 | } 35 | }, 36 | { 37 | "path": "pages/agreement/index", 38 | "style": { 39 | "navigationBarTitleText": "数字人克隆协议" 40 | } 41 | } 42 | ], 43 | "globalStyle": { 44 | "navigationBarTextStyle": "white", 45 | "navigationBarTitleText": "元界矩阵", 46 | "navigationBarBackgroundColor": "#131414", 47 | "backgroundColor": "#131414" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/pages/agreement/index.vue: -------------------------------------------------------------------------------- 1 | 129 | 141 | 186 | 187 | -------------------------------------------------------------------------------- /src/pages/characterClone/index.scss: -------------------------------------------------------------------------------- 1 | .character-clone-page { 2 | display: flex; 3 | flex-direction: column; 4 | .introduction-section { 5 | padding: 16rpx 32rpx 24rpx; 6 | .video { 7 | width: 100%; 8 | height: 386rpx; 9 | border-radius: 12rpx; 10 | } 11 | .introduction-content { 12 | margin-top: 32rpx; 13 | .title { 14 | font-size: 24rpx; 15 | line-height: 36rpx; 16 | font-weight: 500; 17 | color: rgba(255, 255, 255, 0.8); 18 | } 19 | .content { 20 | margin-top: 16rpx; 21 | font-size: 24rpx; 22 | line-height: 36rpx; 23 | font-weight: 500; 24 | color: rgba(255, 255, 255, 0.6); 25 | } 26 | .tip-cell { 27 | margin-top: 16rpx; 28 | display: flex; 29 | align-items: center; 30 | .tip-cell-icon { 31 | width: 28rpx; 32 | height: 28rpx; 33 | } 34 | .tip-cell-text { 35 | margin-left: 16rpx; 36 | font-size: 24rpx; 37 | line-height: 36rpx; 38 | font-weight: 400; 39 | color: rgba(255, 255, 255, 0.6); 40 | } 41 | } 42 | } 43 | } 44 | .form-section { 45 | flex: 1; 46 | padding: 0 32rpx calc(var(--safe-area-inset-bottom) + 60rpx); 47 | background: #2B2D2D; 48 | border-radius: 12rpx 12rpx 0rpx 0rpx; 49 | display: flex; 50 | flex-direction: column; 51 | .form-item { 52 | padding-top: 32rpx; 53 | .form-item-label { 54 | font-size: 28rpx; 55 | line-height: 40rpx; 56 | font-weight: 500; 57 | color: #fff; 58 | margin-bottom: 24rpx; 59 | } 60 | .form-item-content { 61 | .form-item-input { 62 | width: 100%; 63 | height: 68rpx; 64 | border-radius: 80rpx; 65 | background: #0F0F0F; 66 | padding: 0 32rpx; 67 | box-sizing: border-box; 68 | font-size: 28rpx; 69 | line-height: 40rpx; 70 | font-weight: 500; 71 | color: #fff; 72 | } 73 | .upload-video-wrapper { 74 | display: flex; 75 | flex-direction: column; 76 | justify-content: center; 77 | align-items: center; 78 | width: 240rpx; 79 | height: 320rpx; 80 | border-radius: 9rpx; 81 | background: #0F0F0F; 82 | .upload-video-icon { 83 | width: 64rpx; 84 | height: 64rpx; 85 | } 86 | .upload-video-text { 87 | margin-top: 10rpx; 88 | padding: 0 20rpx; 89 | font-size: 24rpx; 90 | line-height: 34rpx; 91 | font-weight: 400; 92 | color: rgba(255, 255, 255, 0.4); 93 | text-align: center; 94 | } 95 | } 96 | .upload-video-preview { 97 | width: 240rpx; 98 | height: 320rpx; 99 | border-radius: 9rpx; 100 | position: relative; 101 | overflow: hidden; 102 | &.horizontal { 103 | width: 320rpx; 104 | height: 240rpx; 105 | } 106 | .upload-video-preview-edit { 107 | position: absolute; 108 | top: 16rpx; 109 | right: 16rpx; 110 | z-index: 10; 111 | width: 48rpx; 112 | height: 48rpx; 113 | background: rgba(255, 255, 255, 0.2); 114 | border-radius: 9rpx; 115 | display: flex; 116 | justify-content: center; 117 | align-items: center; 118 | .upload-video-edit-icon { 119 | width: 32rpx; 120 | height: 32rpx; 121 | display: block; 122 | } 123 | } 124 | .upload-video-preview-video { 125 | width: 100%; 126 | height: 100%; 127 | } 128 | } 129 | } 130 | .form-item-content-checkbox { 131 | display: flex; 132 | align-items: center; 133 | .form-item-content-text { 134 | margin-left: 20rpx; 135 | font-size: 28rpx; 136 | line-height: 40rpx; 137 | font-weight: 400; 138 | color: rgba(255,255,255,0.8); 139 | .form-item-content-text-link { 140 | color: #5CDAFD; 141 | } 142 | } 143 | } 144 | .clone-btn { 145 | width: 100%; 146 | height: 68rpx; 147 | background: linear-gradient( 98deg, #75E8FF 0%, #5CDAFD 100%); 148 | box-shadow: 0rpx 3rpx 0rpx 0rpx rgba(0,0,0,0.02); 149 | border-radius: 12rpx; 150 | text-align: center; 151 | font-size: 28rpx; 152 | line-height: 68rpx; 153 | font-weight: 500; 154 | color: #333; 155 | } 156 | } 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /src/pages/characterClone/index.vue: -------------------------------------------------------------------------------- 1 | 72 | 185 | 188 | -------------------------------------------------------------------------------- /src/pages/characterList/index.scss: -------------------------------------------------------------------------------- 1 | .character-list-page { 2 | padding: 20rpx 32rpx; 3 | box-sizing: border-box; 4 | .character-list { 5 | display: flex; 6 | flex-wrap: wrap; 7 | align-items: center; 8 | gap: 14rpx; 9 | } 10 | .character-item { 11 | width: 336rpx; 12 | height: 538rpx; 13 | } 14 | .popup-content { 15 | padding: 32rpx; 16 | background: #2B2D2D; 17 | border-radius: 12rpx 12rpx 0rpx 0rpx; 18 | .popup-content-title { 19 | display: flex; 20 | align-items: center; 21 | justify-content: space-between; 22 | .popup-content-title-text { 23 | font-size: 28rpx; 24 | line-height: 40rpx; 25 | color: #ffffff; 26 | font-weight: 500; 27 | } 28 | .popup-content-title-icon { 29 | margin-left: 16rpx; 30 | width: 48rpx; 31 | height: 48rpx; 32 | display: block; 33 | } 34 | } 35 | .popup-content-body { 36 | margin-top: 32rpx; 37 | background: #393C3C; 38 | border-radius: 12rpx; 39 | .popup-content-body-item { 40 | font-size: 28rpx; 41 | line-height: 80rpx; 42 | color: rgba(255,255,255,0.8); 43 | text-align: center; 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/pages/characterList/index.vue: -------------------------------------------------------------------------------- 1 | 36 | 139 | 140 | 143 | 144 | -------------------------------------------------------------------------------- /src/pages/generate-oral-broadcast/index.scss: -------------------------------------------------------------------------------- 1 | .generate-oral-broadcast-page { 2 | display: flex; 3 | flex-direction: column; 4 | .preview-container { 5 | height: 704rpx; 6 | display: flex; 7 | flex-direction: column; 8 | justify-content: center; 9 | align-items: center; 10 | .content-container { 11 | border-radius: 12rpx; 12 | border: 12rpx solid #000; 13 | position: relative; 14 | &.content-container-horizontal { 15 | width: 640rpx; 16 | height: 360rpx; 17 | } 18 | &.content-container-vertical { 19 | width: 360rpx; 20 | height: 640rpx; 21 | } 22 | .preview-img { 23 | width: 100%; 24 | height: 100%; 25 | display: block; 26 | } 27 | .preview-text { 28 | width: 100%; 29 | font-size: 24rpx; 30 | line-height: 1; 31 | color: #fff; 32 | position: absolute; 33 | bottom: 24rpx; 34 | left: 0; 35 | text-align: center; 36 | } 37 | } 38 | } 39 | .config-container { 40 | flex: 1; 41 | display: flex; 42 | flex-direction: column; 43 | .top-container { 44 | padding: 0 16rpx; 45 | display: flex; 46 | align-items: center; 47 | .digital-human-container { 48 | display: flex; 49 | align-items: center; 50 | background: #2B2D2D; 51 | border-radius: 80rpx; 52 | padding: 0 16rpx; 53 | height: 64rpx; 54 | .digital-human-img { 55 | width: 48rpx; 56 | height: 48rpx; 57 | border-radius: 50%; 58 | display: block; 59 | } 60 | .digital-human-name { 61 | font-size: 28rpx; 62 | line-height: 40rpx; 63 | color: #fff; 64 | font-weight: 400; 65 | max-width: 160rpx; 66 | overflow: hidden; 67 | text-overflow: ellipsis; 68 | white-space: nowrap; 69 | } 70 | .digital-human-icon { 71 | width: 32rpx; 72 | height: 32rpx; 73 | display: block; 74 | } 75 | } 76 | .subtitle-container { 77 | display: flex; 78 | align-items: center; 79 | .subtitle-title { 80 | font-size: 28rpx; 81 | line-height: 40rpx; 82 | color: #fff; 83 | font-weight: 500; 84 | padding-right: 16rpx; 85 | } 86 | .subtitle-switch { 87 | transform: scale(0.8); 88 | } 89 | } 90 | } 91 | .script-container { 92 | margin-top: 16rpx; 93 | flex: 1; 94 | display: flex; 95 | flex-direction: column; 96 | padding: 40rpx 32rpx calc(var(--safe-area-inset-bottom) + 50rpx); 97 | background: #2B2D2D; 98 | border-radius: 12rpx 12rpx 0 0; 99 | &.extract-container { 100 | flex: none; 101 | .script-textarea { 102 | height: 120rpx; 103 | } 104 | } 105 | .script-textarea { 106 | width: 100%; 107 | height: 100%; 108 | font-size: 28rpx; 109 | line-height: 40rpx; 110 | color: #fff; 111 | background: transparent; 112 | } 113 | .script-footer { 114 | padding-top: 32rpx; 115 | display: flex; 116 | justify-content: space-between; 117 | align-items: center; 118 | .btn-container { 119 | display: flex; 120 | align-items: center; 121 | justify-content: center; 122 | width: 240rpx; 123 | height: 80rpx; 124 | border-radius: 12rpx; 125 | background: #fff; 126 | &.extract-script-container { 127 | background: linear-gradient( 90deg, #80C8FF 0%, #5EB9FF 100%); 128 | } 129 | &.ai-script-container { 130 | background: linear-gradient( 98deg, #75E8FF 0%, #5CDAFD 100%); 131 | } 132 | &.loading-container { 133 | background: transparent; 134 | .btn-title { 135 | color: rgba(255,255,255,0.8); 136 | } 137 | } 138 | &:nth-of-type(2) { 139 | width: 426rpx; 140 | } 141 | .btn-icon { 142 | width: 32rpx; 143 | height: 32rpx; 144 | display: block; 145 | } 146 | .btn-title { 147 | padding-left: 8rpx; 148 | font-size: 28rpx; 149 | line-height: 40rpx; 150 | color: rgba(0,0,0,0.8); 151 | font-weight: 500; 152 | } 153 | } 154 | } 155 | } 156 | } 157 | .popup-container { 158 | width: 100%; 159 | background: #2B2D2D; 160 | border-radius: 12rpx 12rpx 0 0; 161 | padding: 32rpx 0; 162 | box-sizing: border-box; 163 | .popup-title { 164 | font-size: 36rpx; 165 | line-height: 48rpx; 166 | color: #fff; 167 | font-weight: 500; 168 | text-align: center; 169 | } 170 | .popup-search { 171 | display: flex; 172 | align-items: center; 173 | margin: 32rpx 32rpx 0; 174 | background: #0F0F0F; 175 | border-radius: 80rpx; 176 | padding: 0 32rpx; 177 | height: 68rpx; 178 | .popup-search-icon { 179 | width: 48rpx; 180 | height: 48rpx; 181 | display: block; 182 | } 183 | .popup-search-input { 184 | flex: 1; 185 | padding-left: 16rpx; 186 | font-size: 28rpx; 187 | line-height: 40rpx; 188 | color: #fff; 189 | font-weight: 400; 190 | } 191 | } 192 | .global-tab-list { 193 | padding: 32rpx; 194 | } 195 | .digital-human-popup-scroll-view { 196 | height: 500rpx; 197 | padding: 0 16rpx; 198 | .digital-human-popup-list { 199 | display: flex; 200 | flex-wrap: wrap; 201 | gap: 16rpx; 202 | align-items: center; 203 | .digital-human-popup-item { 204 | width: 228rpx; 205 | height: 364rpx; 206 | border-radius: 12rpx; 207 | overflow: hidden; 208 | box-sizing: border-box; 209 | position: relative; 210 | &.active { 211 | border: 2rpx solid #5CDAFD; 212 | .selected-icon { 213 | display: block; 214 | } 215 | } 216 | .selected-icon { 217 | width: 48rpx; 218 | height: 48rpx; 219 | display: none; 220 | position: absolute; 221 | top: 0; 222 | right: 0; 223 | } 224 | .digital-human-popup-item-img { 225 | width: 100%; 226 | height: 100%; 227 | display: block; 228 | } 229 | } 230 | } 231 | } 232 | .voice-popup-scroll-view { 233 | margin-top: 32rpx; 234 | height: 500rpx; 235 | padding: 0 28rpx; 236 | .voice-popup-list { 237 | display: flex; 238 | gap: 16rpx; 239 | align-items: center; 240 | flex-wrap: wrap; 241 | .voice-popup-item { 242 | width: 338rpx; 243 | height: 112rpx; 244 | padding: 0 20rpx; 245 | border-radius: 12rpx; 246 | background: linear-gradient( 343deg, #213940 0%, #28454D 100%); 247 | box-sizing: border-box; 248 | position: relative; 249 | display: flex; 250 | align-items: center; 251 | &.active { 252 | border: 2rpx solid #5CDAFD; 253 | .selected-icon { 254 | display: block; 255 | } 256 | } 257 | .selected-icon { 258 | width: 48rpx; 259 | height: 48rpx; 260 | display: none; 261 | position: absolute; 262 | top: 0; 263 | right: 0; 264 | } 265 | .voice-popup-item-img { 266 | width: 42rpx; 267 | height: 42rpx; 268 | border-radius: 50%; 269 | overflow: hidden; 270 | display: flex; 271 | align-items: center; 272 | justify-content: center; 273 | background: rgba(255,255,255,0.2); 274 | .voice-popup-item-img-icon { 275 | width: 32rpx; 276 | height: 32rpx; 277 | display: block; 278 | } 279 | } 280 | .voice-popup-item-name { 281 | font-size: 28rpx; 282 | line-height: 40rpx; 283 | color: #fff; 284 | font-weight: 400; 285 | padding-left: 16rpx; 286 | max-width: 230rpx; 287 | overflow: hidden; 288 | text-overflow: ellipsis; 289 | white-space: nowrap; 290 | } 291 | } 292 | } 293 | } 294 | } 295 | } 296 | .generate-oral-broadcast { 297 | ::v-deep .uni-nav-bar-right-text { 298 | color: rgba(255,255,255,0.6) !important; 299 | } 300 | } -------------------------------------------------------------------------------- /src/pages/index/index.scss: -------------------------------------------------------------------------------- 1 | .page-wrapper { 2 | padding: 0 32rpx var(--safe-area-inset-bottom); 3 | .page-header { 4 | height: 216rpx; 5 | background: linear-gradient( 102deg, #012B36 0%, #001920 100%); 6 | border-radius: 12rpx; 7 | position: relative; 8 | padding-left: 54rpx; 9 | overflow: hidden; 10 | .page-header-bg { 11 | width: 368rpx; 12 | height: 216rpx; 13 | position: absolute; 14 | right: 0; 15 | top: 0; 16 | } 17 | .page-header-title { 18 | padding-top: 64rpx; 19 | font-size: 32rpx; 20 | line-height: 44rpx; 21 | font-weight: 500; 22 | color: #FFFFFF; 23 | } 24 | .page-header-subtitle { 25 | padding-top: 8rpx; 26 | font-size: 24rpx; 27 | line-height: 34rpx; 28 | color: rgba(255,255,255,0.6); 29 | font-weight: 400; 30 | } 31 | } 32 | .video-creation { 33 | display: flex; 34 | justify-content: space-between; 35 | margin-top: 32rpx; 36 | align-items: center; 37 | .video-creation-item { 38 | width: 328rpx; 39 | height: 164rpx; 40 | display: flex; 41 | align-items: center; 42 | justify-content: center; 43 | &:nth-child(1) { 44 | background: url('@/static/images/index/video_creation_bg1.png') no-repeat center center; 45 | background-size: 100% 100%; 46 | } 47 | &:nth-child(2) { 48 | background: url('@/static/images/index/video_creation_bg2.png') no-repeat center center; 49 | background-size: 100% 100%; 50 | } 51 | .video-creation-item-left { 52 | padding-right: 24rpx; 53 | .video-creation-item-title { 54 | font-size: 32rpx; 55 | line-height: 44rpx; 56 | color: #FFFFFF; 57 | font-weight: 500; 58 | } 59 | .video-creation-item-subtitle { 60 | padding-top: 8rpx; 61 | font-size: 24rpx; 62 | line-height: 34rpx; 63 | color: rgba(255,255,255,0.6); 64 | font-weight: 400; 65 | } 66 | } 67 | .video-creation-item-right { 68 | width: 80rpx; 69 | height: 80rpx; 70 | } 71 | } 72 | } 73 | .digital-human-section { 74 | margin-top: 60rpx; 75 | .digital-human-section-title { 76 | display: flex; 77 | justify-content: space-between; 78 | align-items: center; 79 | .digital-human-section-title-text { 80 | font-size: 36rpx; 81 | line-height: 48rpx; 82 | color: #fff; 83 | font-weight: 500; 84 | } 85 | .digital-human-section-all { 86 | display: flex; 87 | align-items: center; 88 | font-size: 28rpx; 89 | line-height: 40rpx; 90 | color: rgba(255,255,255,0.6); 91 | font-weight: 400; 92 | .digital-human-section-all-icon { 93 | margin-left: 8rpx; 94 | width: 32rpx; 95 | height: 32rpx; 96 | display: block; 97 | } 98 | } 99 | } 100 | .digital-human-section-list { 101 | margin-top: 32rpx; 102 | height: 240rpx; 103 | ::v-deep .uni-scroll-view-content { 104 | display: flex; 105 | align-items: center; 106 | gap: 16rpx; 107 | flex-wrap: nowrap; 108 | } 109 | .digital-human-section-item { 110 | width: 180rpx; 111 | height: 240rpx; 112 | border-radius: 12rpx; 113 | box-sizing: border-box; 114 | flex-shrink: 0; 115 | &.customized { 116 | border: 2rpx solid rgba(255,255,255,0.2); 117 | display: flex; 118 | flex-direction: column; 119 | align-items: center; 120 | justify-content: center; 121 | .add-icon { 122 | width: 64rpx; 123 | height: 64rpx; 124 | display: block; 125 | } 126 | .add-text { 127 | padding-top: 18rpx; 128 | font-size: 24rpx; 129 | line-height: 34rpx; 130 | color: #fff; 131 | font-weight: 400; 132 | } 133 | } 134 | } 135 | } 136 | } 137 | .video-section { 138 | margin-top: 60rpx; 139 | .video-section-tab { 140 | display: flex; 141 | align-items: center; 142 | gap: 66rpx; 143 | .video-section-tab-item { 144 | font-size: 32rpx; 145 | line-height: 44rpx; 146 | color: rgba(255,255,255,0.6); 147 | font-weight: 500; 148 | padding-bottom: 22rpx; 149 | position: relative; 150 | &::after { 151 | content: ''; 152 | width: 100%; 153 | height: 6rpx; 154 | background: linear-gradient( 90deg, #61DDFD 0%, rgba(97,221,253,0) 100%); 155 | position: absolute; 156 | bottom: 0; 157 | left: 0; 158 | border-radius: 6rpx; 159 | display: none; 160 | } 161 | &.active { 162 | color: #fff; 163 | &::after { 164 | display: block; 165 | } 166 | } 167 | } 168 | } 169 | .video-section-list { 170 | margin-top: 32rpx; 171 | ::v-deep .uni-scroll-view-content { 172 | display: flex; 173 | align-items: center; 174 | gap: 16rpx; 175 | flex-wrap: nowrap; 176 | } 177 | .video-section-item { 178 | width: 180rpx; 179 | height: 240rpx; 180 | border-radius: 12rpx; 181 | flex-shrink: 0; 182 | } 183 | .video-section-item-avatar { 184 | width: 100%; 185 | height: 100%; 186 | display: block; 187 | } 188 | } 189 | .video-section-empty { 190 | margin-top: 84rpx; 191 | display: flex; 192 | align-items: center; 193 | flex-direction: column; 194 | .video-section-empty-icon { 195 | width: 220rpx; 196 | height: 200rpx; 197 | display: block; 198 | } 199 | .video-section-empty-text { 200 | padding-top: 20rpx; 201 | font-size: 24rpx; 202 | line-height: 34rpx; 203 | color: rgba(255,255,255,0.6); 204 | font-weight: 400; 205 | } 206 | } 207 | } 208 | .logout-btn { 209 | margin-top: 60rpx; 210 | text-align: center; 211 | font-size: 28rpx; 212 | line-height: 80rpx; 213 | color: rgba(255,255,255,0.4); 214 | font-weight: 400; 215 | } 216 | .video-popup-content { 217 | padding: 32rpx 28rpx 50rpx; 218 | background: #2B2D2D; 219 | border-radius: 12rpx 12rpx 0rpx 0rpx; 220 | .video-popup-content-title { 221 | font-weight: 500; 222 | font-size: 36rpx; 223 | color: #FFFFFF; 224 | line-height: 48rpx; 225 | text-align: center; 226 | } 227 | .video-popup-content-body { 228 | margin-top: 48rpx; 229 | display: flex; 230 | align-items: center; 231 | justify-content: space-between; 232 | .video-popup-content-body-item { 233 | width: 336rpx; 234 | height: 336rpx; 235 | border-radius: 16rpx; 236 | background: #0F0F0F; 237 | box-sizing: border-box; 238 | display: flex; 239 | align-items: center; 240 | justify-content: center; 241 | &.active { 242 | border: 2rpx solid #5CDAFD; 243 | } 244 | &:nth-of-type(1) { 245 | .item-cell { 246 | width: 180rpx; 247 | height: 320rpx; 248 | } 249 | } 250 | &:nth-of-type(2) { 251 | .item-cell { 252 | width: 320rpx; 253 | height: 180rpx; 254 | } 255 | } 256 | .item-cell { 257 | display: flex; 258 | align-items: center; 259 | flex-direction: column; 260 | justify-content: center; 261 | background: linear-gradient( 90deg, #353838 0%, #2B2D2D 100%); 262 | border-radius: 16rpx; 263 | .item-title { 264 | font-size: 28rpx; 265 | line-height: 40rpx; 266 | color: rgba(255,255,255,0.6); 267 | font-weight: 400; 268 | } 269 | .item-subtitle { 270 | padding-top: 20rpx; 271 | font-size: 28rpx; 272 | line-height: 40rpx; 273 | color: rgba(255,255,255,0.8); 274 | font-weight: 400; 275 | } 276 | } 277 | } 278 | } 279 | .video-popup-content-footer { 280 | margin-top: 48rpx; 281 | .footer-btn { 282 | width: 100%; 283 | height: 80rpx; 284 | background: linear-gradient( 98deg, #75E8FF 0%, #5CDAFD 100%); 285 | border-radius: 12rpx; 286 | font-size: 28rpx; 287 | line-height: 80rpx; 288 | color: rgba(0,0,0,0.8); 289 | font-weight: 500; 290 | text-align: center; 291 | } 292 | } 293 | } 294 | ::v-deep .uni-scroll-view { 295 | &::-webkit-scrollbar { 296 | display: none; 297 | width: 0; 298 | height: 0; 299 | background: transparent; 300 | } 301 | -ms-overflow-style: none; /* IE and Edge */ 302 | scrollbar-width: none; /* Firefox */ 303 | } 304 | } -------------------------------------------------------------------------------- /src/pages/index/index.vue: -------------------------------------------------------------------------------- 1 | 125 | 126 | 252 | 253 | 256 | -------------------------------------------------------------------------------- /src/pages/login/index.scss: -------------------------------------------------------------------------------- 1 | .page-wrapper { 2 | display: flex; 3 | flex-direction: column; 4 | .login-bg-wrapper { 5 | width: 100%; 6 | height: 476rpx; 7 | background-image: url('@/static/images/login/login_bg.png'); 8 | background-size: 100% 100%; 9 | box-sizing: border-box; 10 | padding: 50rpx 0 0 54rpx; 11 | .login-bg-logo { 12 | width: 200rpx; 13 | height: 79rpx; 14 | display: block; 15 | } 16 | .login-bg-title { 17 | margin-top: 16rpx; 18 | width: 311rpx; 19 | height: 47rpx; 20 | display: block; 21 | } 22 | .login-bg-subtitle { 23 | margin-top: 16rpx; 24 | font-size: 28rpx; 25 | line-height: 42rpx; 26 | color: rgba(255,255,255,0.6); 27 | font-weight: 400; 28 | } 29 | .login-bg-welcome { 30 | margin-top: 74rpx; 31 | font-weight: 600; 32 | font-size: 64rpx; 33 | color: #61DDFD; 34 | } 35 | } 36 | .login-form-wrapper { 37 | flex: 1; 38 | background: linear-gradient( 360deg, #00171D 0%, #000000 100%); 39 | display: flex; 40 | flex-direction: column; 41 | align-items: center; 42 | padding-bottom: calc(100rpx + var(--safe-area-inset-bottom)); 43 | .login-form { 44 | width: 640rpx; 45 | padding-top: 80rpx; 46 | .login-form-item { 47 | width: 100%; 48 | height: 80rpx; 49 | border-bottom: 1rpx solid rgba(255,255,255,0.2); 50 | display: flex; 51 | align-items: center; 52 | .login-form-item-icon { 53 | width: 32rpx; 54 | height: 32rpx; 55 | display: block; 56 | } 57 | input { 58 | flex: 1; 59 | height: 100%; 60 | font-size: 28rpx; 61 | font-weight: 400; 62 | color: #fff; 63 | padding-left: 16rpx; 64 | } 65 | } 66 | } 67 | .login-form-button { 68 | width: 640rpx; 69 | height: 80rpx; 70 | background: linear-gradient( 98deg, #75E8FF 0%, #5CDAFD 100%); 71 | text-align: center; 72 | line-height: 80rpx; 73 | font-size: 28rpx; 74 | color: rgba(0,0,0,0.8); 75 | border-radius: 12rpx; 76 | } 77 | } 78 | } -------------------------------------------------------------------------------- /src/pages/login/index.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 62 | 63 | 66 | -------------------------------------------------------------------------------- /src/shime-uni.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | 3 | declare module "vue" { 4 | type Hooks = App.AppInstance & Page.PageInstance; 5 | interface ComponentCustomOptions extends Hooks {} 6 | } -------------------------------------------------------------------------------- /src/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/favicon.ico -------------------------------------------------------------------------------- /src/static/images/common/creating_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/common/creating_img.png -------------------------------------------------------------------------------- /src/static/images/common/img_fail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/common/img_fail.png -------------------------------------------------------------------------------- /src/static/images/common/video_preview_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/common/video_preview_bottom.png -------------------------------------------------------------------------------- /src/static/images/common/video_preview_modify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/common/video_preview_modify.png -------------------------------------------------------------------------------- /src/static/images/common/video_preview_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/common/video_preview_top.png -------------------------------------------------------------------------------- /src/static/images/icon/checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/checkbox_checked.png -------------------------------------------------------------------------------- /src/static/images/icon/checkbox_indeterminate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/checkbox_indeterminate.png -------------------------------------------------------------------------------- /src/static/images/icon/checkbox_uncheck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/checkbox_uncheck.png -------------------------------------------------------------------------------- /src/static/images/icon/empty_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/empty_data.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_add.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_ai_script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_ai_script.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_close.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_digital_human.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_digital_human.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_download.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_edit.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_extract_script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_extract_script.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_loading.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_more.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_refresh.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_right_arrow.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_safety.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_safety.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_search.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_selected.png -------------------------------------------------------------------------------- /src/static/images/icon/icon_voice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/icon/icon_voice.png -------------------------------------------------------------------------------- /src/static/images/index/page_header_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/index/page_header_bg.png -------------------------------------------------------------------------------- /src/static/images/index/video_creation_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/index/video_creation_1.png -------------------------------------------------------------------------------- /src/static/images/index/video_creation_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/index/video_creation_2.png -------------------------------------------------------------------------------- /src/static/images/index/video_creation_bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/index/video_creation_bg1.png -------------------------------------------------------------------------------- /src/static/images/index/video_creation_bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/index/video_creation_bg2.png -------------------------------------------------------------------------------- /src/static/images/login/icon_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/login/icon_account.png -------------------------------------------------------------------------------- /src/static/images/login/icon_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/login/icon_password.png -------------------------------------------------------------------------------- /src/static/images/login/login_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/login/login_bg.png -------------------------------------------------------------------------------- /src/static/images/login/login_bg_title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/login/login_bg_title.png -------------------------------------------------------------------------------- /src/static/images/login/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/images/login/logo.png -------------------------------------------------------------------------------- /src/static/video/guidance_figure.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/static/video/guidance_figure.mp4 -------------------------------------------------------------------------------- /src/uni.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * 这里是uni-app内置的常用样式变量 3 | * 4 | * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 5 | * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App 6 | * 7 | */ 8 | 9 | /** 10 | * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 11 | * 12 | * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 13 | */ 14 | 15 | /* 颜色变量 */ 16 | 17 | /* 行为相关颜色 */ 18 | $uni-color-primary: #007aff; 19 | $uni-color-success: #4cd964; 20 | $uni-color-warning: #f0ad4e; 21 | $uni-color-error: #dd524d; 22 | 23 | /* 文字基本颜色 */ 24 | $uni-text-color: #333; // 基本色 25 | $uni-text-color-inverse: #fff; // 反色 26 | $uni-text-color-grey: #999; // 辅助灰色,如加载更多的提示信息 27 | $uni-text-color-placeholder: #808080; 28 | $uni-text-color-disable: #c0c0c0; 29 | 30 | /* 背景颜色 */ 31 | $uni-bg-color: #fff; 32 | $uni-bg-color-grey: #f8f8f8; 33 | $uni-bg-color-hover: #f1f1f1; // 点击状态颜色 34 | $uni-bg-color-mask: rgba(0, 0, 0, 0.4); // 遮罩颜色 35 | 36 | /* 边框颜色 */ 37 | $uni-border-color: #c8c7cc; 38 | 39 | /* 尺寸变量 */ 40 | 41 | /* 文字尺寸 */ 42 | $uni-font-size-sm: 12px; 43 | $uni-font-size-base: 14px; 44 | $uni-font-size-lg: 16; 45 | 46 | /* 图片尺寸 */ 47 | $uni-img-size-sm: 20px; 48 | $uni-img-size-base: 26px; 49 | $uni-img-size-lg: 40px; 50 | 51 | /* Border Radius */ 52 | $uni-border-radius-sm: 2px; 53 | $uni-border-radius-base: 3px; 54 | $uni-border-radius-lg: 6px; 55 | $uni-border-radius-circle: 50%; 56 | 57 | /* 水平间距 */ 58 | $uni-spacing-row-sm: 5px; 59 | $uni-spacing-row-base: 10px; 60 | $uni-spacing-row-lg: 15px; 61 | 62 | /* 垂直间距 */ 63 | $uni-spacing-col-sm: 4px; 64 | $uni-spacing-col-base: 8px; 65 | $uni-spacing-col-lg: 12px; 66 | 67 | /* 透明度 */ 68 | $uni-opacity-disabled: 0.3; // 组件禁用态的透明度 69 | 70 | /* 文章场景相关 */ 71 | $uni-color-title: #2c405a; // 文章标题颜色 72 | $uni-font-size-title: 20px; 73 | $uni-color-subtitle: #555; // 二级标题颜色 74 | $uni-font-size-subtitle: 18px; 75 | $uni-color-paragraph: #3f536e; // 文章段落颜色 76 | $uni-font-size-paragraph: 15px; -------------------------------------------------------------------------------- /src/uni_modules/uni-icons/changelog.md: -------------------------------------------------------------------------------- 1 | ## 2.0.10(2024-06-07) 2 | - 优化 uni-app x 中,size 属性的类型 3 | ## 2.0.9(2024-01-12) 4 | fix: 修复图标大小默认值错误的问题 5 | ## 2.0.8(2023-12-14) 6 | - 修复 项目未使用 ts 情况下,打包报错的bug 7 | ## 2.0.7(2023-12-14) 8 | - 修复 size 属性为 string 时,不加单位导致尺寸异常的bug 9 | ## 2.0.6(2023-12-11) 10 | - 优化 兼容老版本icon类型,如 top ,bottom 等 11 | ## 2.0.5(2023-12-11) 12 | - 优化 兼容老版本icon类型,如 top ,bottom 等 13 | ## 2.0.4(2023-12-06) 14 | - 优化 uni-app x 下示例项目图标排序 15 | ## 2.0.3(2023-12-06) 16 | - 修复 nvue下引入组件报错的bug 17 | ## 2.0.2(2023-12-05) 18 | -优化 size 属性支持单位 19 | ## 2.0.1(2023-12-05) 20 | - 新增 uni-app x 支持定义图标 21 | ## 1.3.5(2022-01-24) 22 | - 优化 size 属性可以传入不带单位的字符串数值 23 | ## 1.3.4(2022-01-24) 24 | - 优化 size 支持其他单位 25 | ## 1.3.3(2022-01-17) 26 | - 修复 nvue 有些图标不显示的bug,兼容老版本图标 27 | ## 1.3.2(2021-12-01) 28 | - 优化 示例可复制图标名称 29 | ## 1.3.1(2021-11-23) 30 | - 优化 兼容旧组件 type 值 31 | ## 1.3.0(2021-11-19) 32 | - 新增 更多图标 33 | - 优化 自定义图标使用方式 34 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 35 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) 36 | ## 1.1.7(2021-11-08) 37 | ## 1.2.0(2021-07-30) 38 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 39 | ## 1.1.5(2021-05-12) 40 | - 新增 组件示例地址 41 | ## 1.1.4(2021-02-05) 42 | - 调整为uni_modules目录规范 43 | -------------------------------------------------------------------------------- /src/uni_modules/uni-icons/components/uni-icons/uni-icons.uvue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 78 | 79 | 92 | -------------------------------------------------------------------------------- /src/uni_modules/uni-icons/components/uni-icons/uni-icons.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 94 | 95 | 111 | -------------------------------------------------------------------------------- /src/uni_modules/uni-icons/components/uni-icons/uniicons.css: -------------------------------------------------------------------------------- 1 | 2 | .uniui-cart-filled:before { 3 | content: "\e6d0"; 4 | } 5 | 6 | .uniui-gift-filled:before { 7 | content: "\e6c4"; 8 | } 9 | 10 | .uniui-color:before { 11 | content: "\e6cf"; 12 | } 13 | 14 | .uniui-wallet:before { 15 | content: "\e6b1"; 16 | } 17 | 18 | .uniui-settings-filled:before { 19 | content: "\e6ce"; 20 | } 21 | 22 | .uniui-auth-filled:before { 23 | content: "\e6cc"; 24 | } 25 | 26 | .uniui-shop-filled:before { 27 | content: "\e6cd"; 28 | } 29 | 30 | .uniui-staff-filled:before { 31 | content: "\e6cb"; 32 | } 33 | 34 | .uniui-vip-filled:before { 35 | content: "\e6c6"; 36 | } 37 | 38 | .uniui-plus-filled:before { 39 | content: "\e6c7"; 40 | } 41 | 42 | .uniui-folder-add-filled:before { 43 | content: "\e6c8"; 44 | } 45 | 46 | .uniui-color-filled:before { 47 | content: "\e6c9"; 48 | } 49 | 50 | .uniui-tune-filled:before { 51 | content: "\e6ca"; 52 | } 53 | 54 | .uniui-calendar-filled:before { 55 | content: "\e6c0"; 56 | } 57 | 58 | .uniui-notification-filled:before { 59 | content: "\e6c1"; 60 | } 61 | 62 | .uniui-wallet-filled:before { 63 | content: "\e6c2"; 64 | } 65 | 66 | .uniui-medal-filled:before { 67 | content: "\e6c3"; 68 | } 69 | 70 | .uniui-fire-filled:before { 71 | content: "\e6c5"; 72 | } 73 | 74 | .uniui-refreshempty:before { 75 | content: "\e6bf"; 76 | } 77 | 78 | .uniui-location-filled:before { 79 | content: "\e6af"; 80 | } 81 | 82 | .uniui-person-filled:before { 83 | content: "\e69d"; 84 | } 85 | 86 | .uniui-personadd-filled:before { 87 | content: "\e698"; 88 | } 89 | 90 | .uniui-arrowthinleft:before { 91 | content: "\e6d2"; 92 | } 93 | 94 | .uniui-arrowthinup:before { 95 | content: "\e6d3"; 96 | } 97 | 98 | .uniui-arrowthindown:before { 99 | content: "\e6d4"; 100 | } 101 | 102 | .uniui-back:before { 103 | content: "\e6b9"; 104 | } 105 | 106 | .uniui-forward:before { 107 | content: "\e6ba"; 108 | } 109 | 110 | .uniui-arrow-right:before { 111 | content: "\e6bb"; 112 | } 113 | 114 | .uniui-arrow-left:before { 115 | content: "\e6bc"; 116 | } 117 | 118 | .uniui-arrow-up:before { 119 | content: "\e6bd"; 120 | } 121 | 122 | .uniui-arrow-down:before { 123 | content: "\e6be"; 124 | } 125 | 126 | .uniui-arrowthinright:before { 127 | content: "\e6d1"; 128 | } 129 | 130 | .uniui-down:before { 131 | content: "\e6b8"; 132 | } 133 | 134 | .uniui-bottom:before { 135 | content: "\e6b8"; 136 | } 137 | 138 | .uniui-arrowright:before { 139 | content: "\e6d5"; 140 | } 141 | 142 | .uniui-right:before { 143 | content: "\e6b5"; 144 | } 145 | 146 | .uniui-up:before { 147 | content: "\e6b6"; 148 | } 149 | 150 | .uniui-top:before { 151 | content: "\e6b6"; 152 | } 153 | 154 | .uniui-left:before { 155 | content: "\e6b7"; 156 | } 157 | 158 | .uniui-arrowup:before { 159 | content: "\e6d6"; 160 | } 161 | 162 | .uniui-eye:before { 163 | content: "\e651"; 164 | } 165 | 166 | .uniui-eye-filled:before { 167 | content: "\e66a"; 168 | } 169 | 170 | .uniui-eye-slash:before { 171 | content: "\e6b3"; 172 | } 173 | 174 | .uniui-eye-slash-filled:before { 175 | content: "\e6b4"; 176 | } 177 | 178 | .uniui-info-filled:before { 179 | content: "\e649"; 180 | } 181 | 182 | .uniui-reload:before { 183 | content: "\e6b2"; 184 | } 185 | 186 | .uniui-micoff-filled:before { 187 | content: "\e6b0"; 188 | } 189 | 190 | .uniui-map-pin-ellipse:before { 191 | content: "\e6ac"; 192 | } 193 | 194 | .uniui-map-pin:before { 195 | content: "\e6ad"; 196 | } 197 | 198 | .uniui-location:before { 199 | content: "\e6ae"; 200 | } 201 | 202 | .uniui-starhalf:before { 203 | content: "\e683"; 204 | } 205 | 206 | .uniui-star:before { 207 | content: "\e688"; 208 | } 209 | 210 | .uniui-star-filled:before { 211 | content: "\e68f"; 212 | } 213 | 214 | .uniui-calendar:before { 215 | content: "\e6a0"; 216 | } 217 | 218 | .uniui-fire:before { 219 | content: "\e6a1"; 220 | } 221 | 222 | .uniui-medal:before { 223 | content: "\e6a2"; 224 | } 225 | 226 | .uniui-font:before { 227 | content: "\e6a3"; 228 | } 229 | 230 | .uniui-gift:before { 231 | content: "\e6a4"; 232 | } 233 | 234 | .uniui-link:before { 235 | content: "\e6a5"; 236 | } 237 | 238 | .uniui-notification:before { 239 | content: "\e6a6"; 240 | } 241 | 242 | .uniui-staff:before { 243 | content: "\e6a7"; 244 | } 245 | 246 | .uniui-vip:before { 247 | content: "\e6a8"; 248 | } 249 | 250 | .uniui-folder-add:before { 251 | content: "\e6a9"; 252 | } 253 | 254 | .uniui-tune:before { 255 | content: "\e6aa"; 256 | } 257 | 258 | .uniui-auth:before { 259 | content: "\e6ab"; 260 | } 261 | 262 | .uniui-person:before { 263 | content: "\e699"; 264 | } 265 | 266 | .uniui-email-filled:before { 267 | content: "\e69a"; 268 | } 269 | 270 | .uniui-phone-filled:before { 271 | content: "\e69b"; 272 | } 273 | 274 | .uniui-phone:before { 275 | content: "\e69c"; 276 | } 277 | 278 | .uniui-email:before { 279 | content: "\e69e"; 280 | } 281 | 282 | .uniui-personadd:before { 283 | content: "\e69f"; 284 | } 285 | 286 | .uniui-chatboxes-filled:before { 287 | content: "\e692"; 288 | } 289 | 290 | .uniui-contact:before { 291 | content: "\e693"; 292 | } 293 | 294 | .uniui-chatbubble-filled:before { 295 | content: "\e694"; 296 | } 297 | 298 | .uniui-contact-filled:before { 299 | content: "\e695"; 300 | } 301 | 302 | .uniui-chatboxes:before { 303 | content: "\e696"; 304 | } 305 | 306 | .uniui-chatbubble:before { 307 | content: "\e697"; 308 | } 309 | 310 | .uniui-upload-filled:before { 311 | content: "\e68e"; 312 | } 313 | 314 | .uniui-upload:before { 315 | content: "\e690"; 316 | } 317 | 318 | .uniui-weixin:before { 319 | content: "\e691"; 320 | } 321 | 322 | .uniui-compose:before { 323 | content: "\e67f"; 324 | } 325 | 326 | .uniui-qq:before { 327 | content: "\e680"; 328 | } 329 | 330 | .uniui-download-filled:before { 331 | content: "\e681"; 332 | } 333 | 334 | .uniui-pyq:before { 335 | content: "\e682"; 336 | } 337 | 338 | .uniui-sound:before { 339 | content: "\e684"; 340 | } 341 | 342 | .uniui-trash-filled:before { 343 | content: "\e685"; 344 | } 345 | 346 | .uniui-sound-filled:before { 347 | content: "\e686"; 348 | } 349 | 350 | .uniui-trash:before { 351 | content: "\e687"; 352 | } 353 | 354 | .uniui-videocam-filled:before { 355 | content: "\e689"; 356 | } 357 | 358 | .uniui-spinner-cycle:before { 359 | content: "\e68a"; 360 | } 361 | 362 | .uniui-weibo:before { 363 | content: "\e68b"; 364 | } 365 | 366 | .uniui-videocam:before { 367 | content: "\e68c"; 368 | } 369 | 370 | .uniui-download:before { 371 | content: "\e68d"; 372 | } 373 | 374 | .uniui-help:before { 375 | content: "\e679"; 376 | } 377 | 378 | .uniui-navigate-filled:before { 379 | content: "\e67a"; 380 | } 381 | 382 | .uniui-plusempty:before { 383 | content: "\e67b"; 384 | } 385 | 386 | .uniui-smallcircle:before { 387 | content: "\e67c"; 388 | } 389 | 390 | .uniui-minus-filled:before { 391 | content: "\e67d"; 392 | } 393 | 394 | .uniui-micoff:before { 395 | content: "\e67e"; 396 | } 397 | 398 | .uniui-closeempty:before { 399 | content: "\e66c"; 400 | } 401 | 402 | .uniui-clear:before { 403 | content: "\e66d"; 404 | } 405 | 406 | .uniui-navigate:before { 407 | content: "\e66e"; 408 | } 409 | 410 | .uniui-minus:before { 411 | content: "\e66f"; 412 | } 413 | 414 | .uniui-image:before { 415 | content: "\e670"; 416 | } 417 | 418 | .uniui-mic:before { 419 | content: "\e671"; 420 | } 421 | 422 | .uniui-paperplane:before { 423 | content: "\e672"; 424 | } 425 | 426 | .uniui-close:before { 427 | content: "\e673"; 428 | } 429 | 430 | .uniui-help-filled:before { 431 | content: "\e674"; 432 | } 433 | 434 | .uniui-paperplane-filled:before { 435 | content: "\e675"; 436 | } 437 | 438 | .uniui-plus:before { 439 | content: "\e676"; 440 | } 441 | 442 | .uniui-mic-filled:before { 443 | content: "\e677"; 444 | } 445 | 446 | .uniui-image-filled:before { 447 | content: "\e678"; 448 | } 449 | 450 | .uniui-locked-filled:before { 451 | content: "\e668"; 452 | } 453 | 454 | .uniui-info:before { 455 | content: "\e669"; 456 | } 457 | 458 | .uniui-locked:before { 459 | content: "\e66b"; 460 | } 461 | 462 | .uniui-camera-filled:before { 463 | content: "\e658"; 464 | } 465 | 466 | .uniui-chat-filled:before { 467 | content: "\e659"; 468 | } 469 | 470 | .uniui-camera:before { 471 | content: "\e65a"; 472 | } 473 | 474 | .uniui-circle:before { 475 | content: "\e65b"; 476 | } 477 | 478 | .uniui-checkmarkempty:before { 479 | content: "\e65c"; 480 | } 481 | 482 | .uniui-chat:before { 483 | content: "\e65d"; 484 | } 485 | 486 | .uniui-circle-filled:before { 487 | content: "\e65e"; 488 | } 489 | 490 | .uniui-flag:before { 491 | content: "\e65f"; 492 | } 493 | 494 | .uniui-flag-filled:before { 495 | content: "\e660"; 496 | } 497 | 498 | .uniui-gear-filled:before { 499 | content: "\e661"; 500 | } 501 | 502 | .uniui-home:before { 503 | content: "\e662"; 504 | } 505 | 506 | .uniui-home-filled:before { 507 | content: "\e663"; 508 | } 509 | 510 | .uniui-gear:before { 511 | content: "\e664"; 512 | } 513 | 514 | .uniui-smallcircle-filled:before { 515 | content: "\e665"; 516 | } 517 | 518 | .uniui-map-filled:before { 519 | content: "\e666"; 520 | } 521 | 522 | .uniui-map:before { 523 | content: "\e667"; 524 | } 525 | 526 | .uniui-refresh-filled:before { 527 | content: "\e656"; 528 | } 529 | 530 | .uniui-refresh:before { 531 | content: "\e657"; 532 | } 533 | 534 | .uniui-cloud-upload:before { 535 | content: "\e645"; 536 | } 537 | 538 | .uniui-cloud-download-filled:before { 539 | content: "\e646"; 540 | } 541 | 542 | .uniui-cloud-download:before { 543 | content: "\e647"; 544 | } 545 | 546 | .uniui-cloud-upload-filled:before { 547 | content: "\e648"; 548 | } 549 | 550 | .uniui-redo:before { 551 | content: "\e64a"; 552 | } 553 | 554 | .uniui-images-filled:before { 555 | content: "\e64b"; 556 | } 557 | 558 | .uniui-undo-filled:before { 559 | content: "\e64c"; 560 | } 561 | 562 | .uniui-more:before { 563 | content: "\e64d"; 564 | } 565 | 566 | .uniui-more-filled:before { 567 | content: "\e64e"; 568 | } 569 | 570 | .uniui-undo:before { 571 | content: "\e64f"; 572 | } 573 | 574 | .uniui-images:before { 575 | content: "\e650"; 576 | } 577 | 578 | .uniui-paperclip:before { 579 | content: "\e652"; 580 | } 581 | 582 | .uniui-settings:before { 583 | content: "\e653"; 584 | } 585 | 586 | .uniui-search:before { 587 | content: "\e654"; 588 | } 589 | 590 | .uniui-redo-filled:before { 591 | content: "\e655"; 592 | } 593 | 594 | .uniui-list:before { 595 | content: "\e644"; 596 | } 597 | 598 | .uniui-mail-open-filled:before { 599 | content: "\e63a"; 600 | } 601 | 602 | .uniui-hand-down-filled:before { 603 | content: "\e63c"; 604 | } 605 | 606 | .uniui-hand-down:before { 607 | content: "\e63d"; 608 | } 609 | 610 | .uniui-hand-up-filled:before { 611 | content: "\e63e"; 612 | } 613 | 614 | .uniui-hand-up:before { 615 | content: "\e63f"; 616 | } 617 | 618 | .uniui-heart-filled:before { 619 | content: "\e641"; 620 | } 621 | 622 | .uniui-mail-open:before { 623 | content: "\e643"; 624 | } 625 | 626 | .uniui-heart:before { 627 | content: "\e639"; 628 | } 629 | 630 | .uniui-loop:before { 631 | content: "\e633"; 632 | } 633 | 634 | .uniui-pulldown:before { 635 | content: "\e632"; 636 | } 637 | 638 | .uniui-scan:before { 639 | content: "\e62a"; 640 | } 641 | 642 | .uniui-bars:before { 643 | content: "\e627"; 644 | } 645 | 646 | .uniui-checkbox:before { 647 | content: "\e62b"; 648 | } 649 | 650 | .uniui-checkbox-filled:before { 651 | content: "\e62c"; 652 | } 653 | 654 | .uniui-shop:before { 655 | content: "\e62f"; 656 | } 657 | 658 | .uniui-headphones:before { 659 | content: "\e630"; 660 | } 661 | 662 | .uniui-cart:before { 663 | content: "\e631"; 664 | } 665 | -------------------------------------------------------------------------------- /src/uni_modules/uni-icons/components/uni-icons/uniicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/libn-net/marketing_creator_pro_max_uni/32bb1557bfd2764e642dc6f33de002741b5dd9c9/src/uni_modules/uni-icons/components/uni-icons/uniicons.ttf -------------------------------------------------------------------------------- /src/uni_modules/uni-icons/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-icons", 3 | "displayName": "uni-icons 图标", 4 | "version": "2.0.10", 5 | "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", 6 | "keywords": [ 7 | "uni-ui", 8 | "uniui", 9 | "icon", 10 | "图标" 11 | ], 12 | "repository": "https://github.com/dcloudio/uni-ui", 13 | "engines": { 14 | "HBuilderX": "^3.2.14" 15 | }, 16 | "directories": { 17 | "example": "../../temps/example_temps" 18 | }, 19 | "dcloudext": { 20 | "sale": { 21 | "regular": { 22 | "price": "0.00" 23 | }, 24 | "sourcecode": { 25 | "price": "0.00" 26 | } 27 | }, 28 | "contact": { 29 | "qq": "" 30 | }, 31 | "declaration": { 32 | "ads": "无", 33 | "data": "无", 34 | "permissions": "无" 35 | }, 36 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", 37 | "type": "component-vue" 38 | }, 39 | "uni_modules": { 40 | "dependencies": ["uni-scss"], 41 | "encrypt": [], 42 | "platforms": { 43 | "cloud": { 44 | "tcb": "y", 45 | "aliyun": "y", 46 | "alipay": "n" 47 | }, 48 | "client": { 49 | "App": { 50 | "app-vue": "y", 51 | "app-nvue": "y", 52 | "app-uvue": "y" 53 | }, 54 | "H5-mobile": { 55 | "Safari": "y", 56 | "Android Browser": "y", 57 | "微信浏览器(Android)": "y", 58 | "QQ浏览器(Android)": "y" 59 | }, 60 | "H5-pc": { 61 | "Chrome": "y", 62 | "IE": "y", 63 | "Edge": "y", 64 | "Firefox": "y", 65 | "Safari": "y" 66 | }, 67 | "小程序": { 68 | "微信": "y", 69 | "阿里": "y", 70 | "百度": "y", 71 | "字节跳动": "y", 72 | "QQ": "y", 73 | "钉钉": "y", 74 | "快手": "y", 75 | "飞书": "y", 76 | "京东": "y" 77 | }, 78 | "快应用": { 79 | "华为": "y", 80 | "联盟": "y" 81 | }, 82 | "Vue": { 83 | "vue2": "y", 84 | "vue3": "y" 85 | } 86 | } 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/uni_modules/uni-icons/readme.md: -------------------------------------------------------------------------------- 1 | ## Icons 图标 2 | > **组件名:uni-icons** 3 | > 代码块: `uIcons` 4 | 5 | 用于展示 icons 图标 。 6 | 7 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) 8 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 9 | -------------------------------------------------------------------------------- /src/uni_modules/uni-load-more/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.3.6(2024-10-15) 2 | - 修复 微信小程序中的getSystemInfo警告 3 | ## 1.3.5(2024-10-12) 4 | - 修复 微信小程序中的getSystemInfo警告 5 | ## 1.3.4(2024-10-12) 6 | - 修复 微信小程序中的getSystemInfo警告 7 | ## 1.3.3(2022-01-20) 8 | - 新增 showText属性 ,是否显示文本 9 | ## 1.3.2(2022-01-19) 10 | - 修复 nvue 平台下不显示文本的bug 11 | ## 1.3.1(2022-01-19) 12 | - 修复 微信小程序平台样式选择器报警告的问题 13 | ## 1.3.0(2021-11-19) 14 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 15 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) 16 | ## 1.2.1(2021-08-24) 17 | - 新增 支持国际化 18 | ## 1.2.0(2021-07-30) 19 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 20 | ## 1.1.8(2021-05-12) 21 | - 新增 组件示例地址 22 | ## 1.1.7(2021-03-30) 23 | - 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug 24 | ## 1.1.6(2021-02-05) 25 | - 调整为uni_modules目录规范 26 | -------------------------------------------------------------------------------- /src/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-load-more.contentdown": "Pull up to show more", 3 | "uni-load-more.contentrefresh": "loading...", 4 | "uni-load-more.contentnomore": "No more data" 5 | } 6 | -------------------------------------------------------------------------------- /src/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /src/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-load-more.contentdown": "上拉显示更多", 3 | "uni-load-more.contentrefresh": "正在加载...", 4 | "uni-load-more.contentnomore": "没有更多数据了" 5 | } 6 | -------------------------------------------------------------------------------- /src/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-load-more.contentdown": "上拉顯示更多", 3 | "uni-load-more.contentrefresh": "正在加載...", 4 | "uni-load-more.contentnomore": "沒有更多數據了" 5 | } 6 | -------------------------------------------------------------------------------- /src/uni_modules/uni-load-more/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-load-more", 3 | "displayName": "uni-load-more 加载更多", 4 | "version": "1.3.6", 5 | "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", 6 | "keywords": [ 7 | "uni-ui", 8 | "uniui", 9 | "加载更多", 10 | "load-more" 11 | ], 12 | "repository": "https://github.com/dcloudio/uni-ui", 13 | "engines": { 14 | "HBuilderX": "" 15 | }, 16 | "directories": { 17 | "example": "../../temps/example_temps" 18 | }, 19 | "dcloudext": { 20 | "sale": { 21 | "regular": { 22 | "price": "0.00" 23 | }, 24 | "sourcecode": { 25 | "price": "0.00" 26 | } 27 | }, 28 | "contact": { 29 | "qq": "" 30 | }, 31 | "declaration": { 32 | "ads": "无", 33 | "data": "无", 34 | "permissions": "无" 35 | }, 36 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", 37 | "type": "component-vue" 38 | }, 39 | "uni_modules": { 40 | "dependencies": ["uni-scss"], 41 | "encrypt": [], 42 | "platforms": { 43 | "cloud": { 44 | "tcb": "y", 45 | "aliyun": "y", 46 | "alipay": "n" 47 | }, 48 | "client": { 49 | "App": { 50 | "app-vue": "y", 51 | "app-nvue": "y" 52 | }, 53 | "H5-mobile": { 54 | "Safari": "y", 55 | "Android Browser": "y", 56 | "微信浏览器(Android)": "y", 57 | "QQ浏览器(Android)": "y" 58 | }, 59 | "H5-pc": { 60 | "Chrome": "y", 61 | "IE": "y", 62 | "Edge": "y", 63 | "Firefox": "y", 64 | "Safari": "y" 65 | }, 66 | "小程序": { 67 | "微信": "y", 68 | "阿里": "y", 69 | "百度": "y", 70 | "字节跳动": "y", 71 | "QQ": "y" 72 | }, 73 | "快应用": { 74 | "华为": "u", 75 | "联盟": "u" 76 | }, 77 | "Vue": { 78 | "vue2": "y", 79 | "vue3": "y" 80 | } 81 | } 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /src/uni_modules/uni-load-more/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ### LoadMore 加载更多 4 | > **组件名:uni-load-more** 5 | > 代码块: `uLoadMore` 6 | 7 | 8 | 用于列表中,做滚动加载使用,展示 loading 的各种状态。 9 | 10 | 11 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) 12 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/uni_modules/uni-nav-bar/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.3.14(2024-10-15) 2 | - 修复 微信小程序中的getSystemInfo警告 3 | ## 1.3.13(2024-10-12) 4 | - 修复 微信小程序中的getSystemInfo警告 5 | ## 1.3.12(2024-10-12) 6 | - 修复 微信小程序中的getSystemInfo警告 7 | ## 1.3.11(2023-03-29) 8 | - 修复 自定义状态栏高度闪动BUG 9 | ## 1.3.10(2023-03-29) 10 | - 修复 暗黑模式下边线颜色错误的bug 11 | ## 1.3.9(2022-10-13) 12 | - 修复 条件编译错误的bug 13 | ## 1.3.8(2022-10-12) 14 | - 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug 15 | ## 1.3.7(2022-08-11) 16 | - 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug 17 | ## 1.3.6(2022-06-30) 18 | - 修复 组件示例中插槽用法无法显示内容的bug 19 | ## 1.3.5(2022-05-24) 20 | - 新增 stat 属性 ,可开启统计title 上报 ,仅使用了title 属性且项目开启了uni统计生效 21 | ## 1.3.4(2022-01-24) 22 | - 更新 组件示例 23 | ## 1.3.3(2022-01-24) 24 | - 新增 left-width/right-width属性 ,可修改左右两侧的宽度 25 | ## 1.3.2(2022-01-18) 26 | - 修复 在vue下,标题不垂直居中的bug 27 | ## 1.3.1(2022-01-18) 28 | - 修复 height 属性类型错误 29 | ## 1.3.0(2022-01-18) 30 | - 新增 height 属性,可修改组件高度 31 | - 新增 dark 属性可可开启暗黑模式 32 | - 优化 标题字数过多显示省略号 33 | - 优化 插槽,插入内容可完全覆盖 34 | ## 1.2.1(2022-01-10) 35 | - 修复 color 属性不生效的bug 36 | ## 1.2.0(2021-11-19) 37 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 38 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-nav-bar](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) 39 | ## 1.1.0(2021-07-30) 40 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 41 | ## 1.0.11(2021-05-12) 42 | - 新增 组件示例地址 43 | ## 1.0.10(2021-04-30) 44 | - 修复 在nvue下fixed为true,宽度不能撑满的Bug 45 | ## 1.0.9(2021-04-21) 46 | - 优化 添加依赖 uni-icons, 导入后自动下载依赖 47 | ## 1.0.8(2021-04-14) 48 | - uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug 49 | 50 | ## 1.0.7(2021-02-25) 51 | - 修复 easycom 下,找不到 uni-status-bar 的bug 52 | 53 | ## 1.0.6(2021-02-05) 54 | - 优化 组件引用关系,通过uni_modules引用组件 55 | 56 | ## 1.0.5(2021-02-05) 57 | - 调整为uni_modules目录规范 58 | -------------------------------------------------------------------------------- /src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 199 | 200 | 358 | -------------------------------------------------------------------------------- /src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 23 | 24 | 31 | -------------------------------------------------------------------------------- /src/uni_modules/uni-nav-bar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-nav-bar", 3 | "displayName": "uni-nav-bar 自定义导航栏", 4 | "version": "1.3.14", 5 | "description": "自定义导航栏组件,主要用于头部导航。", 6 | "keywords": [ 7 | "uni-ui", 8 | "导航", 9 | "导航栏", 10 | "自定义导航栏" 11 | ], 12 | "repository": "https://github.com/dcloudio/uni-ui", 13 | "engines": { 14 | "HBuilderX": "" 15 | }, 16 | "directories": { 17 | "example": "../../temps/example_temps" 18 | }, 19 | "dcloudext": { 20 | "sale": { 21 | "regular": { 22 | "price": "0.00" 23 | }, 24 | "sourcecode": { 25 | "price": "0.00" 26 | } 27 | }, 28 | "contact": { 29 | "qq": "" 30 | }, 31 | "declaration": { 32 | "ads": "无", 33 | "data": "无", 34 | "permissions": "无" 35 | }, 36 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", 37 | "type": "component-vue" 38 | }, 39 | "uni_modules": { 40 | "dependencies": [ 41 | "uni-scss", 42 | "uni-icons" 43 | ], 44 | "encrypt": [], 45 | "platforms": { 46 | "cloud": { 47 | "tcb": "y", 48 | "aliyun": "y", 49 | "alipay": "n" 50 | }, 51 | "client": { 52 | "App": { 53 | "app-vue": "y", 54 | "app-nvue": "y" 55 | }, 56 | "H5-mobile": { 57 | "Safari": "y", 58 | "Android Browser": "y", 59 | "微信浏览器(Android)": "y", 60 | "QQ浏览器(Android)": "y" 61 | }, 62 | "H5-pc": { 63 | "Chrome": "y", 64 | "IE": "y", 65 | "Edge": "y", 66 | "Firefox": "y", 67 | "Safari": "y" 68 | }, 69 | "小程序": { 70 | "微信": "y", 71 | "阿里": "y", 72 | "百度": "y", 73 | "字节跳动": "y", 74 | "QQ": "y" 75 | }, 76 | "快应用": { 77 | "华为": "u", 78 | "联盟": "u" 79 | }, 80 | "Vue": { 81 | "vue2": "y", 82 | "vue3": "y" 83 | } 84 | } 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/uni_modules/uni-nav-bar/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## NavBar 导航栏 4 | > **组件名:uni-nav-bar** 5 | > 代码块: `uNavBar` 6 | 7 | 导航栏组件,主要用于头部导航。 8 | 9 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) 10 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.9.5(2024-10-15) 2 | - 修复 微信小程序中的getSystemInfo警告 3 | ## 1.9.4(2024-10-12) 4 | - 修复 微信小程序中的getSystemInfo警告 5 | ## 1.9.3(2024-10-12) 6 | - 修复 微信小程序中的getSystemInfo警告 7 | ## 1.9.2(2024-09-21) 8 | - 修复 uni-popup在android上的重复点击弹出位置不正确的bug 9 | ## 1.9.1(2024-04-02) 10 | - 修复 uni-popup-dialog vue3下使用value无法进行绑定的bug(双向绑定兼容旧写法) 11 | ## 1.9.0(2024-03-28) 12 | - 修复 uni-popup-dialog 双向绑定时初始化逻辑修正 13 | ## 1.8.9(2024-03-20) 14 | - 修复 uni-popup-dialog 数据输入时修正为双向绑定 15 | ## 1.8.8(2024-02-20) 16 | - 修复 uni-popup 在微信小程序下出现文字向上闪动的bug 17 | ## 1.8.7(2024-02-02) 18 | - 新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦 19 | ## 1.8.6(2024-01-30) 20 | - 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数 21 | ## 1.8.5(2024-01-26) 22 | - 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示 23 | ## 1.8.4(2023-11-15) 24 | - 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close` 25 | ## 1.8.3(2023-04-17) 26 | - 修复 uni-popup 重复打开时的 bug 27 | ## 1.8.2(2023-02-02) 28 | - uni-popup-dialog 组件新增 inputType 属性 29 | ## 1.8.1(2022-12-01) 30 | - 修复 nvue 下 v-show 报错 31 | ## 1.8.0(2022-11-29) 32 | - 优化 主题样式 33 | ## 1.7.9(2022-04-02) 34 | - 修复 弹出层内部无法滚动的bug 35 | ## 1.7.8(2022-03-28) 36 | - 修复 小程序中高度错误的bug 37 | ## 1.7.7(2022-03-17) 38 | - 修复 快速调用open出现问题的Bug 39 | ## 1.7.6(2022-02-14) 40 | - 修复 safeArea 属性不能设置为false的bug 41 | ## 1.7.5(2022-01-19) 42 | - 修复 isMaskClick 失效的bug 43 | ## 1.7.4(2022-01-19) 44 | - 新增 cancelText \ confirmText 属性 ,可自定义文本 45 | - 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 46 | - 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 47 | ## 1.7.3(2022-01-13) 48 | - 修复 设置 safeArea 属性不生效的bug 49 | ## 1.7.2(2021-11-26) 50 | - 优化 组件示例 51 | ## 1.7.1(2021-11-26) 52 | - 修复 vuedoc 文字错误 53 | ## 1.7.0(2021-11-19) 54 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 55 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) 56 | ## 1.6.2(2021-08-24) 57 | - 新增 支持国际化 58 | ## 1.6.1(2021-07-30) 59 | - 优化 vue3下事件警告的问题 60 | ## 1.6.0(2021-07-13) 61 | - 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 62 | ## 1.5.0(2021-06-23) 63 | - 新增 mask-click 遮罩层点击事件 64 | ## 1.4.5(2021-06-22) 65 | - 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug 66 | ## 1.4.4(2021-06-18) 67 | - 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug 68 | ## 1.4.3(2021-06-08) 69 | - 修复 错误的 watch 字段 70 | - 修复 safeArea 属性不生效的问题 71 | - 修复 点击内容,再点击遮罩无法关闭的Bug 72 | ## 1.4.2(2021-05-12) 73 | - 新增 组件示例地址 74 | ## 1.4.1(2021-04-29) 75 | - 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 76 | ## 1.4.0 (2021-04-29) 77 | - 新增 type 属性的 left\right 值,支持左右弹出 78 | - 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 79 | - 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 80 | - 新增 safeArea 属性,是否适配底部安全区 81 | - 修复 App\h5\微信小程序底部安全区占位不对的Bug 82 | - 修复 App 端弹出等待的Bug 83 | - 优化 提升低配设备性能,优化动画卡顿问题 84 | - 优化 更简单的组件自定义方式 85 | ## 1.2.9(2021-02-05) 86 | - 优化 组件引用关系,通过uni_modules引用组件 87 | ## 1.2.8(2021-02-05) 88 | - 调整为uni_modules目录规范 89 | ## 1.2.7(2021-02-05) 90 | - 调整为uni_modules目录规范 91 | - 新增 支持 PC 端 92 | - 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 93 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js: -------------------------------------------------------------------------------- 1 | // #ifdef H5 2 | export default { 3 | name: 'Keypress', 4 | props: { 5 | disable: { 6 | type: Boolean, 7 | default: false 8 | } 9 | }, 10 | mounted () { 11 | const keyNames = { 12 | esc: ['Esc', 'Escape'], 13 | tab: 'Tab', 14 | enter: 'Enter', 15 | space: [' ', 'Spacebar'], 16 | up: ['Up', 'ArrowUp'], 17 | left: ['Left', 'ArrowLeft'], 18 | right: ['Right', 'ArrowRight'], 19 | down: ['Down', 'ArrowDown'], 20 | delete: ['Backspace', 'Delete', 'Del'] 21 | } 22 | const listener = ($event) => { 23 | if (this.disable) { 24 | return 25 | } 26 | const keyName = Object.keys(keyNames).find(key => { 27 | const keyName = $event.key 28 | const value = keyNames[key] 29 | return value === keyName || (Array.isArray(value) && value.includes(keyName)) 30 | }) 31 | if (keyName) { 32 | // 避免和其他按键事件冲突 33 | setTimeout(() => { 34 | this.$emit(keyName, {}) 35 | }, 0) 36 | } 37 | } 38 | document.addEventListener('keyup', listener) 39 | this.$once('hook:beforeDestroy', () => { 40 | document.removeEventListener('keyup', listener) 41 | }) 42 | }, 43 | render: () => {} 44 | } 45 | // #endif 46 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 217 | 218 | 317 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 74 | 144 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 106 | 188 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup/i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-popup.cancel": "cancel", 3 | "uni-popup.ok": "ok", 4 | "uni-popup.placeholder": "pleace enter", 5 | "uni-popup.title": "Hint", 6 | "uni-popup.shareTitle": "Share to" 7 | } 8 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup/i18n/index.js: -------------------------------------------------------------------------------- 1 | import en from './en.json' 2 | import zhHans from './zh-Hans.json' 3 | import zhHant from './zh-Hant.json' 4 | export default { 5 | en, 6 | 'zh-Hans': zhHans, 7 | 'zh-Hant': zhHant 8 | } 9 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-popup.cancel": "取消", 3 | "uni-popup.ok": "确定", 4 | "uni-popup.placeholder": "请输入", 5 | "uni-popup.title": "提示", 6 | "uni-popup.shareTitle": "分享到" 7 | } 8 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json: -------------------------------------------------------------------------------- 1 | { 2 | "uni-popup.cancel": "取消", 3 | "uni-popup.ok": "確定", 4 | "uni-popup.placeholder": "請輸入", 5 | "uni-popup.title": "提示", 6 | "uni-popup.shareTitle": "分享到" 7 | } 8 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup/keypress.js: -------------------------------------------------------------------------------- 1 | // #ifdef H5 2 | export default { 3 | name: 'Keypress', 4 | props: { 5 | disable: { 6 | type: Boolean, 7 | default: false 8 | } 9 | }, 10 | mounted () { 11 | const keyNames = { 12 | esc: ['Esc', 'Escape'], 13 | tab: 'Tab', 14 | enter: 'Enter', 15 | space: [' ', 'Spacebar'], 16 | up: ['Up', 'ArrowUp'], 17 | left: ['Left', 'ArrowLeft'], 18 | right: ['Right', 'ArrowRight'], 19 | down: ['Down', 'ArrowDown'], 20 | delete: ['Backspace', 'Delete', 'Del'] 21 | } 22 | const listener = ($event) => { 23 | if (this.disable) { 24 | return 25 | } 26 | const keyName = Object.keys(keyNames).find(key => { 27 | const keyName = $event.key 28 | const value = keyNames[key] 29 | return value === keyName || (Array.isArray(value) && value.includes(keyName)) 30 | }) 31 | if (keyName) { 32 | // 避免和其他按键事件冲突 33 | setTimeout(() => { 34 | this.$emit(keyName, {}) 35 | }, 0) 36 | } 37 | } 38 | document.addEventListener('keyup', listener) 39 | // this.$once('hook:beforeDestroy', () => { 40 | // document.removeEventListener('keyup', listener) 41 | // }) 42 | }, 43 | render: () => {} 44 | } 45 | // #endif 46 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup/popup.js: -------------------------------------------------------------------------------- 1 | 2 | export default { 3 | data() { 4 | return { 5 | 6 | } 7 | }, 8 | created(){ 9 | this.popup = this.getParent() 10 | }, 11 | methods:{ 12 | /** 13 | * 获取父元素实例 14 | */ 15 | getParent(name = 'uniPopup') { 16 | let parent = this.$parent; 17 | let parentName = parent.$options.name; 18 | while (parentName !== name) { 19 | parent = parent.$parent; 20 | if (!parent) return false 21 | parentName = parent.$options.name; 22 | } 23 | return parent; 24 | }, 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 76 | 77 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-popup", 3 | "displayName": "uni-popup 弹出层", 4 | "version": "1.9.5", 5 | "description": " Popup 组件,提供常用的弹层", 6 | "keywords": [ 7 | "uni-ui", 8 | "弹出层", 9 | "弹窗", 10 | "popup", 11 | "弹框" 12 | ], 13 | "repository": "https://github.com/dcloudio/uni-ui", 14 | "engines": { 15 | "HBuilderX": "" 16 | }, 17 | "directories": { 18 | "example": "../../temps/example_temps" 19 | }, 20 | "dcloudext": { 21 | "sale": { 22 | "regular": { 23 | "price": "0.00" 24 | }, 25 | "sourcecode": { 26 | "price": "0.00" 27 | } 28 | }, 29 | "contact": { 30 | "qq": "" 31 | }, 32 | "declaration": { 33 | "ads": "无", 34 | "data": "无", 35 | "permissions": "无" 36 | }, 37 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", 38 | "type": "component-vue" 39 | }, 40 | "uni_modules": { 41 | "dependencies": [ 42 | "uni-scss", 43 | "uni-transition" 44 | ], 45 | "encrypt": [], 46 | "platforms": { 47 | "cloud": { 48 | "tcb": "y", 49 | "aliyun": "y", 50 | "alipay": "n" 51 | }, 52 | "client": { 53 | "App": { 54 | "app-vue": "y", 55 | "app-nvue": "y" 56 | }, 57 | "H5-mobile": { 58 | "Safari": "y", 59 | "Android Browser": "y", 60 | "微信浏览器(Android)": "y", 61 | "QQ浏览器(Android)": "y" 62 | }, 63 | "H5-pc": { 64 | "Chrome": "y", 65 | "IE": "y", 66 | "Edge": "y", 67 | "Firefox": "y", 68 | "Safari": "y" 69 | }, 70 | "小程序": { 71 | "微信": "y", 72 | "阿里": "y", 73 | "百度": "y", 74 | "字节跳动": "y", 75 | "QQ": "y" 76 | }, 77 | "快应用": { 78 | "华为": "u", 79 | "联盟": "u" 80 | }, 81 | "Vue": { 82 | "vue2": "y", 83 | "vue3": "y" 84 | } 85 | } 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /src/uni_modules/uni-popup/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Popup 弹出层 4 | > **组件名:uni-popup** 5 | > 代码块: `uPopup` 6 | > 关联组件:`uni-transition` 7 | 8 | 9 | 弹出层组件,在应用中弹出一个消息提示窗口、提示框等 10 | 11 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) 12 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.0.3(2022-01-21) 2 | - 优化 组件示例 3 | ## 1.0.2(2021-11-22) 4 | - 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 5 | ## 1.0.1(2021-11-22) 6 | - 修复 vue3中scss语法兼容问题 7 | ## 1.0.0(2021-11-18) 8 | - init 9 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/index.scss: -------------------------------------------------------------------------------- 1 | @import './styles/index.scss'; 2 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-scss", 3 | "displayName": "uni-scss 辅助样式", 4 | "version": "1.0.3", 5 | "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", 6 | "keywords": [ 7 | "uni-scss", 8 | "uni-ui", 9 | "辅助样式" 10 | ], 11 | "repository": "https://github.com/dcloudio/uni-ui", 12 | "engines": { 13 | "HBuilderX": "^3.1.0" 14 | }, 15 | "dcloudext": { 16 | "category": [ 17 | "JS SDK", 18 | "通用 SDK" 19 | ], 20 | "sale": { 21 | "regular": { 22 | "price": "0.00" 23 | }, 24 | "sourcecode": { 25 | "price": "0.00" 26 | } 27 | }, 28 | "contact": { 29 | "qq": "" 30 | }, 31 | "declaration": { 32 | "ads": "无", 33 | "data": "无", 34 | "permissions": "无" 35 | }, 36 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" 37 | }, 38 | "uni_modules": { 39 | "dependencies": [], 40 | "encrypt": [], 41 | "platforms": { 42 | "cloud": { 43 | "tcb": "y", 44 | "aliyun": "y" 45 | }, 46 | "client": { 47 | "App": { 48 | "app-vue": "y", 49 | "app-nvue": "u" 50 | }, 51 | "H5-mobile": { 52 | "Safari": "y", 53 | "Android Browser": "y", 54 | "微信浏览器(Android)": "y", 55 | "QQ浏览器(Android)": "y" 56 | }, 57 | "H5-pc": { 58 | "Chrome": "y", 59 | "IE": "y", 60 | "Edge": "y", 61 | "Firefox": "y", 62 | "Safari": "y" 63 | }, 64 | "小程序": { 65 | "微信": "y", 66 | "阿里": "y", 67 | "百度": "y", 68 | "字节跳动": "y", 69 | "QQ": "y" 70 | }, 71 | "快应用": { 72 | "华为": "n", 73 | "联盟": "n" 74 | }, 75 | "Vue": { 76 | "vue2": "y", 77 | "vue3": "y" 78 | } 79 | } 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/readme.md: -------------------------------------------------------------------------------- 1 | `uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 2 | 3 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) 4 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/index.scss: -------------------------------------------------------------------------------- 1 | @import './setting/_variables.scss'; 2 | @import './setting/_border.scss'; 3 | @import './setting/_color.scss'; 4 | @import './setting/_space.scss'; 5 | @import './setting/_radius.scss'; 6 | @import './setting/_text.scss'; 7 | @import './setting/_styles.scss'; 8 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/setting/_border.scss: -------------------------------------------------------------------------------- 1 | .uni-border { 2 | border: 1px $uni-border-1 solid; 3 | } -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/setting/_color.scss: -------------------------------------------------------------------------------- 1 | 2 | // TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 3 | // @mixin get-styles($k,$c) { 4 | // @if $k == size or $k == weight{ 5 | // font-#{$k}:#{$c} 6 | // }@else{ 7 | // #{$k}:#{$c} 8 | // } 9 | // } 10 | $uni-ui-color:( 11 | // 主色 12 | primary: $uni-primary, 13 | primary-disable: $uni-primary-disable, 14 | primary-light: $uni-primary-light, 15 | // 辅助色 16 | success: $uni-success, 17 | success-disable: $uni-success-disable, 18 | success-light: $uni-success-light, 19 | warning: $uni-warning, 20 | warning-disable: $uni-warning-disable, 21 | warning-light: $uni-warning-light, 22 | error: $uni-error, 23 | error-disable: $uni-error-disable, 24 | error-light: $uni-error-light, 25 | info: $uni-info, 26 | info-disable: $uni-info-disable, 27 | info-light: $uni-info-light, 28 | // 中性色 29 | main-color: $uni-main-color, 30 | base-color: $uni-base-color, 31 | secondary-color: $uni-secondary-color, 32 | extra-color: $uni-extra-color, 33 | // 背景色 34 | bg-color: $uni-bg-color, 35 | // 边框颜色 36 | border-1: $uni-border-1, 37 | border-2: $uni-border-2, 38 | border-3: $uni-border-3, 39 | border-4: $uni-border-4, 40 | // 黑色 41 | black:$uni-black, 42 | // 白色 43 | white:$uni-white, 44 | // 透明 45 | transparent:$uni-transparent 46 | ) !default; 47 | @each $key, $child in $uni-ui-color { 48 | .uni-#{"" + $key} { 49 | color: $child; 50 | } 51 | .uni-#{"" + $key}-bg { 52 | background-color: $child; 53 | } 54 | } 55 | .uni-shadow-sm { 56 | box-shadow: $uni-shadow-sm; 57 | } 58 | .uni-shadow-base { 59 | box-shadow: $uni-shadow-base; 60 | } 61 | .uni-shadow-lg { 62 | box-shadow: $uni-shadow-lg; 63 | } 64 | .uni-mask { 65 | background-color:$uni-mask; 66 | } 67 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/setting/_radius.scss: -------------------------------------------------------------------------------- 1 | @mixin radius($r,$d:null ,$important: false){ 2 | $radius-value:map-get($uni-radius, $r) if($important, !important, null); 3 | // Key exists within the $uni-radius variable 4 | @if (map-has-key($uni-radius, $r) and $d){ 5 | @if $d == t { 6 | border-top-left-radius:$radius-value; 7 | border-top-right-radius:$radius-value; 8 | }@else if $d == r { 9 | border-top-right-radius:$radius-value; 10 | border-bottom-right-radius:$radius-value; 11 | }@else if $d == b { 12 | border-bottom-left-radius:$radius-value; 13 | border-bottom-right-radius:$radius-value; 14 | }@else if $d == l { 15 | border-top-left-radius:$radius-value; 16 | border-bottom-left-radius:$radius-value; 17 | }@else if $d == tl { 18 | border-top-left-radius:$radius-value; 19 | }@else if $d == tr { 20 | border-top-right-radius:$radius-value; 21 | }@else if $d == br { 22 | border-bottom-right-radius:$radius-value; 23 | }@else if $d == bl { 24 | border-bottom-left-radius:$radius-value; 25 | } 26 | }@else{ 27 | border-radius:$radius-value; 28 | } 29 | } 30 | 31 | @each $key, $child in $uni-radius { 32 | @if($key){ 33 | .uni-radius-#{"" + $key} { 34 | @include radius($key) 35 | } 36 | }@else{ 37 | .uni-radius { 38 | @include radius($key) 39 | } 40 | } 41 | } 42 | 43 | @each $direction in t, r, b, l,tl, tr, br, bl { 44 | @each $key, $child in $uni-radius { 45 | @if($key){ 46 | .uni-radius-#{"" + $direction}-#{"" + $key} { 47 | @include radius($key,$direction,false) 48 | } 49 | }@else{ 50 | .uni-radius-#{$direction} { 51 | @include radius($key,$direction,false) 52 | } 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/setting/_space.scss: -------------------------------------------------------------------------------- 1 | 2 | @mixin fn($space,$direction,$size,$n) { 3 | @if $n { 4 | #{$space}-#{$direction}: #{$size*$uni-space-root}px 5 | } @else { 6 | #{$space}-#{$direction}: #{-$size*$uni-space-root}px 7 | } 8 | } 9 | @mixin get-styles($direction,$i,$space,$n){ 10 | @if $direction == t { 11 | @include fn($space, top,$i,$n); 12 | } 13 | @if $direction == r { 14 | @include fn($space, right,$i,$n); 15 | } 16 | @if $direction == b { 17 | @include fn($space, bottom,$i,$n); 18 | } 19 | @if $direction == l { 20 | @include fn($space, left,$i,$n); 21 | } 22 | @if $direction == x { 23 | @include fn($space, left,$i,$n); 24 | @include fn($space, right,$i,$n); 25 | } 26 | @if $direction == y { 27 | @include fn($space, top,$i,$n); 28 | @include fn($space, bottom,$i,$n); 29 | } 30 | @if $direction == a { 31 | @if $n { 32 | #{$space}:#{$i*$uni-space-root}px; 33 | } @else { 34 | #{$space}:#{-$i*$uni-space-root}px; 35 | } 36 | } 37 | } 38 | 39 | @each $orientation in m,p { 40 | $space: margin; 41 | @if $orientation == m { 42 | $space: margin; 43 | } @else { 44 | $space: padding; 45 | } 46 | @for $i from 0 through 16 { 47 | @each $direction in t, r, b, l, x, y, a { 48 | .uni-#{$orientation}#{$direction}-#{$i} { 49 | @include get-styles($direction,$i,$space,true); 50 | } 51 | .uni-#{$orientation}#{$direction}-n#{$i} { 52 | @include get-styles($direction,$i,$space,false); 53 | } 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/setting/_styles.scss: -------------------------------------------------------------------------------- 1 | /* #ifndef APP-NVUE */ 2 | 3 | $-color-white:#fff; 4 | $-color-black:#000; 5 | @mixin base-style($color) { 6 | color: #fff; 7 | background-color: $color; 8 | border-color: mix($-color-black, $color, 8%); 9 | &:not([hover-class]):active { 10 | background: mix($-color-black, $color, 10%); 11 | border-color: mix($-color-black, $color, 20%); 12 | color: $-color-white; 13 | outline: none; 14 | } 15 | } 16 | @mixin is-color($color) { 17 | @include base-style($color); 18 | &[loading] { 19 | @include base-style($color); 20 | &::before { 21 | margin-right:5px; 22 | } 23 | } 24 | &[disabled] { 25 | &, 26 | &[loading], 27 | &:not([hover-class]):active { 28 | color: $-color-white; 29 | border-color: mix(darken($color,10%), $-color-white); 30 | background-color: mix($color, $-color-white); 31 | } 32 | } 33 | 34 | } 35 | @mixin base-plain-style($color) { 36 | color:$color; 37 | background-color: mix($-color-white, $color, 90%); 38 | border-color: mix($-color-white, $color, 70%); 39 | &:not([hover-class]):active { 40 | background: mix($-color-white, $color, 80%); 41 | color: $color; 42 | outline: none; 43 | border-color: mix($-color-white, $color, 50%); 44 | } 45 | } 46 | @mixin is-plain($color){ 47 | &[plain] { 48 | @include base-plain-style($color); 49 | &[loading] { 50 | @include base-plain-style($color); 51 | &::before { 52 | margin-right:5px; 53 | } 54 | } 55 | &[disabled] { 56 | &, 57 | &:active { 58 | color: mix($-color-white, $color, 40%); 59 | background-color: mix($-color-white, $color, 90%); 60 | border-color: mix($-color-white, $color, 80%); 61 | } 62 | } 63 | } 64 | } 65 | 66 | 67 | .uni-btn { 68 | margin: 5px; 69 | color: #393939; 70 | border:1px solid #ccc; 71 | font-size: 16px; 72 | font-weight: 200; 73 | background-color: #F9F9F9; 74 | // TODO 暂时处理边框隐藏一边的问题 75 | overflow: visible; 76 | &::after{ 77 | border: none; 78 | } 79 | 80 | &:not([type]),&[type=default] { 81 | color: #999; 82 | &[loading] { 83 | background: none; 84 | &::before { 85 | margin-right:5px; 86 | } 87 | } 88 | 89 | 90 | 91 | &[disabled]{ 92 | color: mix($-color-white, #999, 60%); 93 | &, 94 | &[loading], 95 | &:active { 96 | color: mix($-color-white, #999, 60%); 97 | background-color: mix($-color-white,$-color-black , 98%); 98 | border-color: mix($-color-white, #999, 85%); 99 | } 100 | } 101 | 102 | &[plain] { 103 | color: #999; 104 | background: none; 105 | border-color: $uni-border-1; 106 | &:not([hover-class]):active { 107 | background: none; 108 | color: mix($-color-white, $-color-black, 80%); 109 | border-color: mix($-color-white, $-color-black, 90%); 110 | outline: none; 111 | } 112 | &[disabled]{ 113 | &, 114 | &[loading], 115 | &:active { 116 | background: none; 117 | color: mix($-color-white, #999, 60%); 118 | border-color: mix($-color-white, #999, 85%); 119 | } 120 | } 121 | } 122 | } 123 | 124 | &:not([hover-class]):active { 125 | color: mix($-color-white, $-color-black, 50%); 126 | } 127 | 128 | &[size=mini] { 129 | font-size: 16px; 130 | font-weight: 200; 131 | border-radius: 8px; 132 | } 133 | 134 | 135 | 136 | &.uni-btn-small { 137 | font-size: 14px; 138 | } 139 | &.uni-btn-mini { 140 | font-size: 12px; 141 | } 142 | 143 | &.uni-btn-radius { 144 | border-radius: 999px; 145 | } 146 | &[type=primary] { 147 | @include is-color($uni-primary); 148 | @include is-plain($uni-primary) 149 | } 150 | &[type=success] { 151 | @include is-color($uni-success); 152 | @include is-plain($uni-success) 153 | } 154 | &[type=error] { 155 | @include is-color($uni-error); 156 | @include is-plain($uni-error) 157 | } 158 | &[type=warning] { 159 | @include is-color($uni-warning); 160 | @include is-plain($uni-warning) 161 | } 162 | &[type=info] { 163 | @include is-color($uni-info); 164 | @include is-plain($uni-info) 165 | } 166 | } 167 | /* #endif */ 168 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/setting/_text.scss: -------------------------------------------------------------------------------- 1 | @mixin get-styles($k,$c) { 2 | @if $k == size or $k == weight{ 3 | font-#{$k}:#{$c} 4 | }@else{ 5 | #{$k}:#{$c} 6 | } 7 | } 8 | 9 | @each $key, $child in $uni-headings { 10 | /* #ifndef APP-NVUE */ 11 | .uni-#{$key} { 12 | @each $k, $c in $child { 13 | @include get-styles($k,$c) 14 | } 15 | } 16 | /* #endif */ 17 | /* #ifdef APP-NVUE */ 18 | .container .uni-#{$key} { 19 | @each $k, $c in $child { 20 | @include get-styles($k,$c) 21 | } 22 | } 23 | /* #endif */ 24 | } 25 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/setting/_variables.scss: -------------------------------------------------------------------------------- 1 | // @use "sass:math"; 2 | @import '../tools/functions.scss'; 3 | // 间距基础倍数 4 | $uni-space-root: 2 !default; 5 | // 边框半径默认值 6 | $uni-radius-root:5px !default; 7 | $uni-radius: () !default; 8 | // 边框半径断点 9 | $uni-radius: map-deep-merge( 10 | ( 11 | 0: 0, 12 | // TODO 当前版本暂时不支持 sm 属性 13 | // 'sm': math.div($uni-radius-root, 2), 14 | null: $uni-radius-root, 15 | 'lg': $uni-radius-root * 2, 16 | 'xl': $uni-radius-root * 6, 17 | 'pill': 9999px, 18 | 'circle': 50% 19 | ), 20 | $uni-radius 21 | ); 22 | // 字体家族 23 | $body-font-family: 'Roboto', sans-serif !default; 24 | // 文本 25 | $heading-font-family: $body-font-family !default; 26 | $uni-headings: () !default; 27 | $letterSpacing: -0.01562em; 28 | $uni-headings: map-deep-merge( 29 | ( 30 | 'h1': ( 31 | size: 32px, 32 | weight: 300, 33 | line-height: 50px, 34 | // letter-spacing:-0.01562em 35 | ), 36 | 'h2': ( 37 | size: 28px, 38 | weight: 300, 39 | line-height: 40px, 40 | // letter-spacing: -0.00833em 41 | ), 42 | 'h3': ( 43 | size: 24px, 44 | weight: 400, 45 | line-height: 32px, 46 | // letter-spacing: normal 47 | ), 48 | 'h4': ( 49 | size: 20px, 50 | weight: 400, 51 | line-height: 30px, 52 | // letter-spacing: 0.00735em 53 | ), 54 | 'h5': ( 55 | size: 16px, 56 | weight: 400, 57 | line-height: 24px, 58 | // letter-spacing: normal 59 | ), 60 | 'h6': ( 61 | size: 14px, 62 | weight: 500, 63 | line-height: 18px, 64 | // letter-spacing: 0.0125em 65 | ), 66 | 'subtitle': ( 67 | size: 12px, 68 | weight: 400, 69 | line-height: 20px, 70 | // letter-spacing: 0.00937em 71 | ), 72 | 'body': ( 73 | font-size: 14px, 74 | font-weight: 400, 75 | line-height: 22px, 76 | // letter-spacing: 0.03125em 77 | ), 78 | 'caption': ( 79 | 'size': 12px, 80 | 'weight': 400, 81 | 'line-height': 20px, 82 | // 'letter-spacing': 0.03333em, 83 | // 'text-transform': false 84 | ) 85 | ), 86 | $uni-headings 87 | ); 88 | 89 | 90 | 91 | // 主色 92 | $uni-primary: #2979ff !default; 93 | $uni-primary-disable:lighten($uni-primary,20%) !default; 94 | $uni-primary-light: lighten($uni-primary,25%) !default; 95 | 96 | // 辅助色 97 | // 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 98 | $uni-success: #18bc37 !default; 99 | $uni-success-disable:lighten($uni-success,20%) !default; 100 | $uni-success-light: lighten($uni-success,25%) !default; 101 | 102 | $uni-warning: #f3a73f !default; 103 | $uni-warning-disable:lighten($uni-warning,20%) !default; 104 | $uni-warning-light: lighten($uni-warning,25%) !default; 105 | 106 | $uni-error: #e43d33 !default; 107 | $uni-error-disable:lighten($uni-error,20%) !default; 108 | $uni-error-light: lighten($uni-error,25%) !default; 109 | 110 | $uni-info: #8f939c !default; 111 | $uni-info-disable:lighten($uni-info,20%) !default; 112 | $uni-info-light: lighten($uni-info,25%) !default; 113 | 114 | // 中性色 115 | // 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 116 | $uni-main-color: #3a3a3a !default; // 主要文字 117 | $uni-base-color: #6a6a6a !default; // 常规文字 118 | $uni-secondary-color: #909399 !default; // 次要文字 119 | $uni-extra-color: #c7c7c7 !default; // 辅助说明 120 | 121 | // 边框颜色 122 | $uni-border-1: #F0F0F0 !default; 123 | $uni-border-2: #EDEDED !default; 124 | $uni-border-3: #DCDCDC !default; 125 | $uni-border-4: #B9B9B9 !default; 126 | 127 | // 常规色 128 | $uni-black: #000000 !default; 129 | $uni-white: #ffffff !default; 130 | $uni-transparent: rgba($color: #000000, $alpha: 0) !default; 131 | 132 | // 背景色 133 | $uni-bg-color: #f7f7f7 !default; 134 | 135 | /* 水平间距 */ 136 | $uni-spacing-sm: 8px !default; 137 | $uni-spacing-base: 15px !default; 138 | $uni-spacing-lg: 30px !default; 139 | 140 | // 阴影 141 | $uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; 142 | $uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; 143 | $uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; 144 | 145 | // 蒙版 146 | $uni-mask: rgba($color: #000000, $alpha: 0.4) !default; 147 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/styles/tools/functions.scss: -------------------------------------------------------------------------------- 1 | // 合并 map 2 | @function map-deep-merge($parent-map, $child-map){ 3 | $result: $parent-map; 4 | @each $key, $child in $child-map { 5 | $parent-has-key: map-has-key($result, $key); 6 | $parent-value: map-get($result, $key); 7 | $parent-type: type-of($parent-value); 8 | $child-type: type-of($child); 9 | $parent-is-map: $parent-type == map; 10 | $child-is-map: $child-type == map; 11 | 12 | @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ 13 | $result: map-merge($result, ( $key: $child )); 14 | }@else { 15 | $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); 16 | } 17 | } 18 | @return $result; 19 | }; 20 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/theme.scss: -------------------------------------------------------------------------------- 1 | // 间距基础倍数 2 | $uni-space-root: 2; 3 | // 边框半径默认值 4 | $uni-radius-root:5px; 5 | // 主色 6 | $uni-primary: #2979ff; 7 | // 辅助色 8 | $uni-success: #4cd964; 9 | // 警告色 10 | $uni-warning: #f0ad4e; 11 | // 错误色 12 | $uni-error: #dd524d; 13 | // 描述色 14 | $uni-info: #909399; 15 | // 中性色 16 | $uni-main-color: #303133; 17 | $uni-base-color: #606266; 18 | $uni-secondary-color: #909399; 19 | $uni-extra-color: #C0C4CC; 20 | // 背景色 21 | $uni-bg-color: #f5f5f5; 22 | // 边框颜色 23 | $uni-border-1: #DCDFE6; 24 | $uni-border-2: #E4E7ED; 25 | $uni-border-3: #EBEEF5; 26 | $uni-border-4: #F2F6FC; 27 | 28 | // 常规色 29 | $uni-black: #000000; 30 | $uni-white: #ffffff; 31 | $uni-transparent: rgba($color: #000000, $alpha: 0); 32 | -------------------------------------------------------------------------------- /src/uni_modules/uni-scss/variables.scss: -------------------------------------------------------------------------------- 1 | @import './styles/setting/_variables.scss'; 2 | // 间距基础倍数 3 | $uni-space-root: 2; 4 | // 边框半径默认值 5 | $uni-radius-root:5px; 6 | 7 | // 主色 8 | $uni-primary: #2979ff; 9 | $uni-primary-disable:mix(#fff,$uni-primary,50%); 10 | $uni-primary-light: mix(#fff,$uni-primary,80%); 11 | 12 | // 辅助色 13 | // 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 14 | $uni-success: #18bc37; 15 | $uni-success-disable:mix(#fff,$uni-success,50%); 16 | $uni-success-light: mix(#fff,$uni-success,80%); 17 | 18 | $uni-warning: #f3a73f; 19 | $uni-warning-disable:mix(#fff,$uni-warning,50%); 20 | $uni-warning-light: mix(#fff,$uni-warning,80%); 21 | 22 | $uni-error: #e43d33; 23 | $uni-error-disable:mix(#fff,$uni-error,50%); 24 | $uni-error-light: mix(#fff,$uni-error,80%); 25 | 26 | $uni-info: #8f939c; 27 | $uni-info-disable:mix(#fff,$uni-info,50%); 28 | $uni-info-light: mix(#fff,$uni-info,80%); 29 | 30 | // 中性色 31 | // 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 32 | $uni-main-color: #3a3a3a; // 主要文字 33 | $uni-base-color: #6a6a6a; // 常规文字 34 | $uni-secondary-color: #909399; // 次要文字 35 | $uni-extra-color: #c7c7c7; // 辅助说明 36 | 37 | // 边框颜色 38 | $uni-border-1: #F0F0F0; 39 | $uni-border-2: #EDEDED; 40 | $uni-border-3: #DCDCDC; 41 | $uni-border-4: #B9B9B9; 42 | 43 | // 常规色 44 | $uni-black: #000000; 45 | $uni-white: #ffffff; 46 | $uni-transparent: rgba($color: #000000, $alpha: 0); 47 | 48 | // 背景色 49 | $uni-bg-color: #f7f7f7; 50 | 51 | /* 水平间距 */ 52 | $uni-spacing-sm: 8px; 53 | $uni-spacing-base: 15px; 54 | $uni-spacing-lg: 30px; 55 | 56 | // 阴影 57 | $uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); 58 | $uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); 59 | $uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); 60 | 61 | // 蒙版 62 | $uni-mask: rgba($color: #000000, $alpha: 0.4); 63 | -------------------------------------------------------------------------------- /src/uni_modules/uni-transition/changelog.md: -------------------------------------------------------------------------------- 1 | ## 1.3.3(2024-04-23) 2 | - 修复 当元素会受变量影响自动隐藏的bug 3 | ## 1.3.2(2023-05-04) 4 | - 修复 NVUE 平台报错的问题 5 | ## 1.3.1(2021-11-23) 6 | - 修复 init 方法初始化问题 7 | ## 1.3.0(2021-11-19) 8 | - 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) 9 | - 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) 10 | ## 1.2.1(2021-09-27) 11 | - 修复 init 方法不生效的 Bug 12 | ## 1.2.0(2021-07-30) 13 | - 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) 14 | ## 1.1.1(2021-05-12) 15 | - 新增 示例地址 16 | - 修复 示例项目缺少组件的 Bug 17 | ## 1.1.0(2021-04-22) 18 | - 新增 通过方法自定义动画 19 | - 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 20 | - 优化 动画触发逻辑,使动画更流畅 21 | - 优化 支持单独的动画类型 22 | - 优化 文档示例 23 | ## 1.0.2(2021-02-05) 24 | - 调整为 uni_modules 目录规范 25 | -------------------------------------------------------------------------------- /src/uni_modules/uni-transition/components/uni-transition/createAnimation.js: -------------------------------------------------------------------------------- 1 | // const defaultOption = { 2 | // duration: 300, 3 | // timingFunction: 'linear', 4 | // delay: 0, 5 | // transformOrigin: '50% 50% 0' 6 | // } 7 | // #ifdef APP-NVUE 8 | const nvueAnimation = uni.requireNativePlugin('animation') 9 | // #endif 10 | class MPAnimation { 11 | constructor(options, _this) { 12 | this.options = options 13 | // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 14 | this.animation = uni.createAnimation({ 15 | ...options 16 | }) 17 | this.currentStepAnimates = {} 18 | this.next = 0 19 | this.$ = _this 20 | 21 | } 22 | 23 | _nvuePushAnimates(type, args) { 24 | let aniObj = this.currentStepAnimates[this.next] 25 | let styles = {} 26 | if (!aniObj) { 27 | styles = { 28 | styles: {}, 29 | config: {} 30 | } 31 | } else { 32 | styles = aniObj 33 | } 34 | if (animateTypes1.includes(type)) { 35 | if (!styles.styles.transform) { 36 | styles.styles.transform = '' 37 | } 38 | let unit = '' 39 | if(type === 'rotate'){ 40 | unit = 'deg' 41 | } 42 | styles.styles.transform += `${type}(${args+unit}) ` 43 | } else { 44 | styles.styles[type] = `${args}` 45 | } 46 | this.currentStepAnimates[this.next] = styles 47 | } 48 | _animateRun(styles = {}, config = {}) { 49 | let ref = this.$.$refs['ani'].ref 50 | if (!ref) return 51 | return new Promise((resolve, reject) => { 52 | nvueAnimation.transition(ref, { 53 | styles, 54 | ...config 55 | }, res => { 56 | resolve() 57 | }) 58 | }) 59 | } 60 | 61 | _nvueNextAnimate(animates, step = 0, fn) { 62 | let obj = animates[step] 63 | if (obj) { 64 | let { 65 | styles, 66 | config 67 | } = obj 68 | this._animateRun(styles, config).then(() => { 69 | step += 1 70 | this._nvueNextAnimate(animates, step, fn) 71 | }) 72 | } else { 73 | this.currentStepAnimates = {} 74 | typeof fn === 'function' && fn() 75 | this.isEnd = true 76 | } 77 | } 78 | 79 | step(config = {}) { 80 | // #ifndef APP-NVUE 81 | this.animation.step(config) 82 | // #endif 83 | // #ifdef APP-NVUE 84 | this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) 85 | this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin 86 | this.next++ 87 | // #endif 88 | return this 89 | } 90 | 91 | run(fn) { 92 | // #ifndef APP-NVUE 93 | this.$.animationData = this.animation.export() 94 | this.$.timer = setTimeout(() => { 95 | typeof fn === 'function' && fn() 96 | }, this.$.durationTime) 97 | // #endif 98 | // #ifdef APP-NVUE 99 | this.isEnd = false 100 | let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref 101 | if(!ref) return 102 | this._nvueNextAnimate(this.currentStepAnimates, 0, fn) 103 | this.next = 0 104 | // #endif 105 | } 106 | } 107 | 108 | 109 | const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', 110 | 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', 111 | 'translateZ' 112 | ] 113 | const animateTypes2 = ['opacity', 'backgroundColor'] 114 | const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] 115 | animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { 116 | MPAnimation.prototype[type] = function(...args) { 117 | // #ifndef APP-NVUE 118 | this.animation[type](...args) 119 | // #endif 120 | // #ifdef APP-NVUE 121 | this._nvuePushAnimates(type, args) 122 | // #endif 123 | return this 124 | } 125 | }) 126 | 127 | export function createAnimation(option, _this) { 128 | if(!_this) return 129 | clearTimeout(_this.timer) 130 | return new MPAnimation(option, _this) 131 | } 132 | -------------------------------------------------------------------------------- /src/uni_modules/uni-transition/components/uni-transition/uni-transition.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 285 | 286 | 287 | -------------------------------------------------------------------------------- /src/uni_modules/uni-transition/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "uni-transition", 3 | "displayName": "uni-transition 过渡动画", 4 | "version": "1.3.3", 5 | "description": "元素的简单过渡动画", 6 | "keywords": [ 7 | "uni-ui", 8 | "uniui", 9 | "动画", 10 | "过渡", 11 | "过渡动画" 12 | ], 13 | "repository": "https://github.com/dcloudio/uni-ui", 14 | "engines": { 15 | "HBuilderX": "" 16 | }, 17 | "directories": { 18 | "example": "../../temps/example_temps" 19 | }, 20 | "dcloudext": { 21 | "sale": { 22 | "regular": { 23 | "price": "0.00" 24 | }, 25 | "sourcecode": { 26 | "price": "0.00" 27 | } 28 | }, 29 | "contact": { 30 | "qq": "" 31 | }, 32 | "declaration": { 33 | "ads": "无", 34 | "data": "无", 35 | "permissions": "无" 36 | }, 37 | "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", 38 | "type": "component-vue" 39 | }, 40 | "uni_modules": { 41 | "dependencies": ["uni-scss"], 42 | "encrypt": [], 43 | "platforms": { 44 | "cloud": { 45 | "tcb": "y", 46 | "aliyun": "y", 47 | "alipay": "n" 48 | }, 49 | "client": { 50 | "App": { 51 | "app-vue": "y", 52 | "app-nvue": "y" 53 | }, 54 | "H5-mobile": { 55 | "Safari": "y", 56 | "Android Browser": "y", 57 | "微信浏览器(Android)": "y", 58 | "QQ浏览器(Android)": "y" 59 | }, 60 | "H5-pc": { 61 | "Chrome": "y", 62 | "IE": "y", 63 | "Edge": "y", 64 | "Firefox": "y", 65 | "Safari": "y" 66 | }, 67 | "小程序": { 68 | "微信": "y", 69 | "阿里": "y", 70 | "百度": "y", 71 | "字节跳动": "y", 72 | "QQ": "y" 73 | }, 74 | "快应用": { 75 | "华为": "u", 76 | "联盟": "u" 77 | }, 78 | "Vue": { 79 | "vue2": "y", 80 | "vue3": "y" 81 | } 82 | } 83 | } 84 | } 85 | } -------------------------------------------------------------------------------- /src/uni_modules/uni-transition/readme.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Transition 过渡动画 4 | > **组件名:uni-transition** 5 | > 代码块: `uTransition` 6 | 7 | 8 | 元素过渡动画 9 | 10 | ### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) 11 | #### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 -------------------------------------------------------------------------------- /src/utils/http.js: -------------------------------------------------------------------------------- 1 | import util from './util.js' 2 | const http = { 3 | request: (params) => { 4 | // 请求参数处理 5 | if (Object.prototype.toString.call(params.data) == '[object Array]') { 6 | params.data = JSON.stringify(params.data) 7 | } else if (Object.prototype.toString.call(params.data) == '[object Number]') { 8 | params.data = params.data + '' 9 | } 10 | // 发起请求 11 | return new Promise((resolve, reject) => { 12 | uni.request({ 13 | dataType: 'json', 14 | responseType: params.responseType == undefined ? 'text' : params.responseType, 15 | header: { 16 | authorization: uni.getStorageSync('TOKEN'), 17 | userid: uni.getStorageSync('ONE_ID') 18 | }, 19 | url: (params.domain ? params.domain : import.meta.env.VITE_APP_BASE_API) + params.url, 20 | data: params.data, 21 | method: params.method == undefined ? 'POST' : params.method, 22 | success: (res) => { 23 | const responseData = res.data 24 | // 请求小程序码 25 | if (params.responseType === 'arraybuffer' && res.statusCode === 200) { 26 | return resolve(responseData) 27 | } 28 | // 200 请求成功 29 | if (responseData.code === 200) { 30 | resolve(responseData) 31 | } 32 | // 401 未登录 33 | if (responseData.code === 401) { 34 | // 跳回登录页 35 | uni.navigateTo({ 36 | url: '/pages/login/index' 37 | }) 38 | return 39 | } 40 | if (responseData.code !== 200) { 41 | uni.showToast({ 42 | title: responseData.message, 43 | icon: 'none' 44 | }) 45 | reject(responseData) 46 | } 47 | }, 48 | fail: (err) => { 49 | uni.showToast({ 50 | title: '请求失败' 51 | }) 52 | reject(err) 53 | } 54 | }) 55 | }) 56 | }, 57 | // 获取上传文件预签名url 58 | getPreSignUrl (data) { 59 | return http.request({ 60 | url: '/file-deal/get_preSign_url', 61 | method: 'GET', 62 | data 63 | }) 64 | }, 65 | chooseVideoFn: ({res, code}) => { 66 | return new Promise((resolve) => { 67 | // 处理文件类型 68 | let _type = res.tempFile.type 69 | // #ifdef MP-WEIXIN 70 | _type = res.tempFilePath.split('.')[1] 71 | // #endif 72 | // #ifdef APP-PLUS 73 | _type = res.tempFilePath.substring(res.tempFilePath.lastIndexOf('.') + 1) 74 | // #endif 75 | const contentType = _type.indexOf('video/') > -1 ? _type : 'video/' + _type 76 | 77 | // 准备上传参数 78 | const getPreSignUrlParams = { 79 | code: code, 80 | filename: res.tempFile?.name || res.tempFilePath 81 | } 82 | 83 | const uploadFileParams = { 84 | res, 85 | resData: [], 86 | contentType 87 | } 88 | 89 | // #ifdef APP-PLUS 90 | util.plusIo(res.tempFilePath).then(appFileBuffer => { 91 | getPreSignUrlParams.filename = res.tempFilePath 92 | // 获取预签名URL并上传 93 | http.uploadWithPreSignUrl(getPreSignUrlParams, uploadFileParams, { data: appFileBuffer }, resolve) 94 | }) 95 | // #endif 96 | 97 | // #ifdef H5 98 | uni.request({ 99 | url: res.tempFilePath, 100 | method: 'GET', 101 | responseType: 'arraybuffer', 102 | success: (requestRes) => { 103 | http.uploadWithPreSignUrl(getPreSignUrlParams, uploadFileParams, requestRes, resolve) 104 | } 105 | }) 106 | // #endif 107 | 108 | // #ifdef MP-WEIXIN 109 | uni.getFileSystemManager().readFile({ 110 | filePath: res.tempFilePath, 111 | success: (requestRes) => { 112 | http.uploadWithPreSignUrl(getPreSignUrlParams, uploadFileParams, requestRes, resolve) 113 | } 114 | }) 115 | // #endif 116 | }) 117 | }, 118 | // 新增辅助函数,处理预签名URL获取和上传 119 | uploadWithPreSignUrl(preSignParams, uploadParams, requestRes, resolve) { 120 | http.getPreSignUrl(preSignParams).then(({ data }) => { 121 | http.uploadFile(Object.assign(uploadParams, { data, requestRes })) 122 | .then(() => resolve(uploadParams.resData)) 123 | .catch(err => { 124 | console.log(err) 125 | uni.showToast({ 126 | title: '上传失败', 127 | icon: 'none' 128 | }) 129 | }) 130 | }) 131 | }, 132 | // 上传文件 133 | uploadFile (params) { 134 | const { data, requestRes, res, resData, contentType } = params 135 | return new Promise((resolve, reject) => { 136 | uni.request({ 137 | url: data.preSignUrl, 138 | method: 'PUT', 139 | header: { 140 | 'Content-Type': contentType 141 | }, 142 | data: requestRes.data, 143 | success: function () { 144 | const fileInfo = { 145 | filePath: data.preSignUrl.split('?')[0] 146 | } 147 | resData.push(fileInfo) 148 | resolve(resData) 149 | }, 150 | fail: reject 151 | }) 152 | }) 153 | } 154 | } 155 | 156 | export default http 157 | -------------------------------------------------------------------------------- /src/utils/util.js: -------------------------------------------------------------------------------- 1 | const unit = { 2 | // 读取本地文件 3 | plusIo: (filePath) => { 4 | return new Promise((resolve) => { 5 | plus.io.resolveLocalFileSystemURL(filePath, async function (entry) { 6 | entry.file(function (file) { // 读取文件 7 | const reader = new plus.io.FileReader() 8 | reader.readAsDataURL(file) // 以URL格式读取文件 9 | reader.onload = function () { 10 | const base64 = this.result.split(',')[1] // 获取base64字符串 11 | const buffer = uni.base64ToArrayBuffer(base64) // 转换为arrayBuffer格式 12 | resolve(buffer) 13 | } 14 | }) 15 | }) 16 | }) 17 | }, 18 | } 19 | 20 | export default unit -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import uni from '@dcloudio/vite-plugin-uni' 3 | const path = require('path') 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [ 7 | uni() 8 | ], 9 | server: { 10 | host: true, 11 | port: 80, 12 | open: true 13 | }, 14 | resolve: { 15 | alias: { 16 | '@': path.resolve(__dirname, 'src') 17 | } 18 | }, 19 | }) 20 | --------------------------------------------------------------------------------