├── .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 |
2 |
14 |
15 |
29 |
74 |
--------------------------------------------------------------------------------
/src/components/logout-popup/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
29 |
74 |
--------------------------------------------------------------------------------
/src/components/video-item/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
16 |
17 |
18 | 生成失败
19 |
20 |
21 |
22 |
23 |
24 | 生成中
25 |
26 |
27 |
28 | 已完成
29 |
30 |
31 |
32 | 生成失败
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | {{ item[keyFilter.name] }}
42 | {{ item[keyFilter.createdAt] }}
43 |
44 |
45 |
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 |
2 |
24 |
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 |
2 |
3 |
4 | 一、适用范围
5 |
6 |
7 | 1.本协议是您与[元界矩阵北京科技有限公司](以下简称“我们”或“公司”)之间就您使用元界AI获客“定制数字人”相关服务所订立的协议。若您使用本服务,则视为您已阅读且充分理解并接受本协议的约束。如您不同意我方不时对本协议的修改或补充内容,您应放弃注册、停止使用或主动取消本服务。
8 |
9 |
10 | 2.本协议由您与我们共同缔结,对您与我们均具有合同效力,均应受本协议条款的约束。本协议项下,公司可能会根据业务情况调整服务内容,您应审慎阅读、充分理解协议条款内容。
11 |
12 |
13 | 二、个人信息保护
14 |
15 |
16 | 1.我们严格遵守法律法规保护您的个人信息,在合理的安全水平内使用各种安全保护措施以保障您的个人信息的安全,以防止信息的泄露、违法收集和使用。我们将会对您的个人信息、采集所得音视频数据、定制数字人模型提供必要的保护措施,包括但不限于规范化流程管理、提供安全的技术保障。
17 |
18 |
19 | 2.您可以访问、更正、删除您的个人信息,我们也提供注销账户和更正信息的渠道。
20 |
21 |
22 | 3.我们会按照适用的法律法规和任何相关的保密安全条款使用您的个人信息。我们深知个人信息对您的重要性,在为您提供优质服务的同时,我们将严格遵守法律法规要求以最小范围收集您的个人信息,并采取相应的安全保护措施,致力于保护您的个人信息安全可控,防止您提供的个人信息被不当使用或泄漏。
23 |
24 |
25 | 4.如果您对个人信息保护问题有任何疑问或投诉,您可以联系我方。具体的保护措施及联系方式请参阅《隐私政策》。
26 |
27 |
28 | 三、拍摄须知
29 |
30 |
31 | 1.您知悉且理解,“定制数字人”服务涉及对个人信息的使用,个人信息包括肖像信息和声音信息。您须根据要求提供合法真实的授权视频和训练视频后方可使用服务。
32 |
33 |
34 | 2.我们仅会根据您使用元界“定制数字人”相关服务的具体功能需要,收集必要的用户信息。未经您的授权同意,我们不会主动向任何第三方共享您的个人信息。
35 |
36 |
37 | 3.为完成“定制数字人“功能服务,对于您所上传的授权视频和训练视频,我们仅会在您授权的范围内以最小程度进行合理使用,不会将上述信息用于任何违法违规用途。
38 |
39 |
40 | 4.根据您选择的服务,您将上传训练视频用于AI数字人形象定制,系统将通过后期技术生成新的内容。您应按照服务操作指引-视频教程或图文教程进行“定制数字人”功能的使用,并保证您的操作符合要求。
41 |
42 |
43 | 5.您知悉且理解,定制的数字人姿态动作将与您上传的训练视频保持一致,请确保拍摄时的姿态满足您的定制需求。
44 |
45 |
46 | 6.您应对上传的训练素材及信息的合法性、真实性负责。您使用服务所上传或发布的信息、文字、图片等资料均由您自行提供,其真实性、准确性和合法性由您负责。我们不提供任何保证,并不承担任何法律责任。如果以上资料侵犯了第三方的知识产权或其他权利,责任由信息发布者本人承担,我们将依照现有法律的规定进行处理。
47 |
48 |
49 | 四、账号使用
50 |
51 |
52 | 1.服务使用:您可通过各种已有和未来新增的支付渠道或公司指定的方式完成“定制数字人”服务的购买及使用。您可享受该服务。在您持续遵守相关服务使用规则下,即能够在服务期限内享受付费服务。如您不同意前述任一流程或内容的,您应立即停止下一步操作。一旦您完成了服务开通的所有程序,即视为您对所有流程及其内容无异议。
53 |
54 |
55 | 2.素材训练完成后,您可将定制数字人形象绑至元界账号内使用。您理解并保证不会利用本服务提供的资源和信息自行或者帮助他人生成、获取、传播违反法律法规、违背公序良俗的信息。
56 |
57 |
58 | 3.您理解并认可,“定制数字人”服务是按照我们现有技术和条件所能达到的现状提供的。因现有技术限制,我们提供的服务可能存在瑕疵,并不能保证在任何情况下都能正常执行或达到您所期望的结果;您理解并认可,定制数字人形象合成效果在主观感觉上存在个体差异,此类情况不属于客观的重大技术缺陷;您理解并接受,我们提供的“定制数字人”服务旨在模拟真人形象和音色,但鉴于人工智能的技术现状,在口型、动作、表情以及发音上与真人难免会出现有差异的情况,我们会尽最大努力提升服务效果。
59 |
60 |
61 | 4.您理解并保证您的账号使用及您的账号名称等信息应当遵守宪法、法律和行政法规,坚持为人民服务、为社会主义服务的方向,坚持正确舆论导向,符合社会主义核心价值观,发挥舆论监督作用,促进形成积极健康、向上向善的网络文化,维护国家安全和社会公共利益,保护公民、法人和其他组织的合法权益。您对因使用服务所引起的一切后果承担全部责任,若发现您的以上内容中包含法律、行政法规禁止发布或者生成的信息的,我们有权并将立即停止生成或传输该信息,采取消除等处置措施,防止信息扩散,保存有关记录,并向有关主管部门报告。
62 |
63 |
64 | 5.如您使用定制数字人形象合成视频推销产品或/及品牌,您应保证严格遵守公序良俗、《中华人民共和国广告法》等有关法律法规政策、第三方平台规则等规定进行推销。同时您应保证合成视频中使用的素材(无论是您自行上传或还是其他方式,具体内容包括但不限于文字、图形、图片、音频、视频、肖像、话术、产品文案、背景图等)均不包含任何违反法律法规政策、公序良俗、第三方规则的内容,也不包含侵犯第三方合法权益(包括但不限于:知识产权、个人信息、肖像权等)的内容。
65 |
66 |
67 | 6.服务费用:“定制数字人”为软件收费,采用先收费后服务的方式,您一经使用我们服务后不可转让或退款(如因我们服务存在重大瑕疵导致您完全无法使用等违约情形、本协议另有约定、法律法规要求必须退款的或经我们判断后认为可以退款等除外)。服务的收费标准由我们根据公司的运营成本、运营策略等综合考虑后独立决定(调整包括但不限于促销、涨价等),并在相关的服务宣传及支付页面向您展示;若您在购买时,相关收费方式发生变化的,以我们实际接受的收费方式为准;相关服务的价格发生了调整的,应以我们公示的现时有效的价格为准(但我们与您另有约定的情形除外)。
68 |
69 |
70 | 7.服务期限:以您自行选择并支付的服务费用所对应的服务期限为准。服务期限届满后,公司将停止继续向您提供服务。 您理解并同意,如您付费期限届满且不再续费,公司有权取消您相应的付费服务,因您违反上述规则而产生的一切法律责任和损失等均由您自行承担。
71 |
72 |
73 | 您理解并同意,对于提供的免费或付费服务,您均会按照公司公布的各服务的使用要求及规则使用相关服务。
74 |
75 |
76 | 五、免责声明
77 |
78 |
79 | 1.您确认并知悉当前服务生成的所有内容即AI生成内容都是由人工智能模型生成。我们对其生成的内容的准确性、完整性和功能性不做任何保证,并且其生成的内容不代表我们的态度或观点。您需要自行斟酌是否依赖、发布或以其他方式使用本服务提供的内容和信息,并同意自行承担相关的风险。
80 |
81 |
82 | 2.您确认并知悉我们不保证所提供服务内置的信息、文本、图形及其它内容资料的绝对准确性和完整性,仅供您参考,您应结合实际情况进行调整、替换。
83 |
84 |
85 | 3.除本规则另有规定外,我方有权根据商业判断对活动页面进行变更、中断或终止。除我方发布的其他规则或与用户签署的其他文件另有规定外,我方不对相应的变更、中断或终止承担任何责任。
86 |
87 |
88 | 六、服务的变更
89 |
90 |
91 | 1.您理解并同意,公司提供的服务是按照现有技术和条件所能达到的现状提供的。公司会尽最大努力向您提供服务,确保服务的连贯性和安全性。您理解,公司不能随时预见和防范法律、技术以及其他风险,包括但不限于不可抗力、病毒、木马、黑客攻击、系统不稳定、第三方服务瑕疵及其他各种安全问题的侵扰等原因可能导致的服务中断、数据丢失以及其他的损失和风险。
92 |
93 |
94 | 2.为给您带来更好的服务体验,我们持续努力改进我们的服务及技术。在新的服务及业务流程变更时,我们可能会更新本协议,并通过公告或系统消息或其他适当的方式提醒您更新的内容,以便您及时了解本用户服务协议的最新版本。但未经您明确同意,我们不会限制您按照本协议所享有的权利。
95 |
96 |
97 | 3.如您对变更事项不同意的,您应当于变更事项确定的生效之日起停止使用我方服务;如您在变更事项生效后仍继续使用我方服务,则视为您同意已生效的变更事项。
98 |
99 |
100 | 七、知识产权
101 |
102 |
103 | 1.除非法律另有规定或双方另有约定的,您在使用本服务时生成内容的所有权归您所有(涉及到原本归属于第三方知识产权的内容除外)。您保证对于您的上传内容拥有相应的合法权利或已取得他人合法授权并有权用于本服务;否则,造成的一切后果及损失由您自行承担。在此过程中,您所上传的素材、信息将仅被用于本服务使用,我们不会提取识别信息,不会用于识别用途,服务完成后,系统将自动删除上述信息,不予留存。
104 |
105 |
106 | 2.公司在应用及相关服务中提供的内容(包括但不限于客户端、技术、程序、网页、文字、图片、图像、音频、视频、版面设计、电子文档等)的知识产权属于公司或合法第三方所有。公司提供本服务时所依托的客户端的著作权、专利权及其他知识产权均归公司所有。未经公司许可,任何人不得擅自使用(包括但不限于通过任何机器人、蜘蛛等程序或设备监视、复制、传播、展示、镜像、上载、下载本客户端及相关服务中的内容)。
107 |
108 |
109 | 3.您理解并同意,我们给予您一项普通的、在中国范围内的、非商用的、不可分的、不可转让的许可,以使用相关服务。未经我们的事先明确书面许可,任何第三方不得为任何非私人或商业目的获取或使用应用的任何部分或通过应用可直接或间接获得的任何内容、服务或资料。任何经授权的复制、发布、传播、转让应用上的信息内容及其任何部分的都必须包括此版权声明。任何用户违反本协议的规定,以任何方式对应用的任何部分进行发表、复制、转载、更改、引用、链接、下载或以其他方式进行使用,允许第三方进行前述使用或向任何其他第三方提供获取应用任何内容的渠道,则我们有权立即冻结/注销其账号、停止向其提供任何服务、要求该用户及第三方停止使用前述内容并要求该用户赔偿一切损失。该用户必须按照我们的要求,归还或销毁(或促使第三方归还或销毁)使用服务任何部分的内容所创建的资料的任何副本。
110 |
111 |
112 | 八、法律适用、管辖与其他
113 |
114 |
115 | 1.本协议之订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国法律;如法律无相关规定的,参照商业惯例及/或行业惯例。
116 |
117 |
118 | 2.您因使用我方服务所产生及与我方服务有关的争议,由我方与您协商解决。协商不成时,任何一方均可向被告所在地人民法院提起诉讼。
119 |
120 |
121 | 3.本协议任一条款被视为废止、无效或不可执行,该条应视为可分的且并不影响本协议其余条款的有效性及可执行性。
122 |
123 |
127 |
128 |
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 |
2 |
3 |
4 |
5 |
6 |
7 | 参照视频中的规范进行视频素材拍摄,素材要求如下:
8 |
9 |
10 | 1、拍摄时长5分钟以内
11 | 2、神态自然,动作不易过大
12 | 3、建议使用绿幕
13 |
14 |
15 |
16 | 您的资料均保存在本地设备中,请放心使用
17 |
18 |
19 |
20 |
21 |
22 |
23 | 人物名称
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | 上传视频
32 |
33 |
34 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | 请上传200m以上的MP4文件
47 |
48 |
49 |
50 |
51 |
52 |
53 |
63 | 我同意形象克隆协议
64 |
65 |
66 |
67 | 开始生成我的数字人
68 |
69 |
70 |
71 |
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 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
22 |
23 |
24 |
30 |
31 |
32 |
33 |
34 |
35 |
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 |
2 |
3 |
12 |
13 |
14 |
15 |
16 | AI视频创作
17 |
18 |
19 | 数字人口播视频
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | AI混剪
28 |
29 |
30 | 暂无权限
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 我的数字人
40 |
41 |
42 | 全部
43 |
44 |
45 |
46 |
51 |
52 |
53 |
54 | 定制数字人
55 |
56 |
57 |
62 |
68 |
69 |
70 |
71 |
72 |
73 |
76 | 短视频
77 |
78 |
79 |
85 |
90 |
97 |
98 |
99 |
100 |
101 |
102 | 暂无生成视频
103 |
104 |
105 |
106 |
107 |
108 | 退出登录
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
122 |
123 |
124 |
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 |
2 |
3 |
4 |
5 |
6 |
7 | 赋能企业获客&成交
8 |
9 |
10 | 欢迎登录
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | 登 录
27 |
28 |
29 |
30 |
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 |
2 |
3 | {{unicode}}
4 |
5 |
6 |
7 |
78 |
79 |
92 |
--------------------------------------------------------------------------------
/src/uni_modules/uni-icons/components/uni-icons/uni-icons.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{unicode}}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
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 |
2 |
3 |
5 |
6 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
199 |
200 |
358 |
--------------------------------------------------------------------------------
/src/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
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 |
2 |
27 |
28 |
29 |
217 |
218 |
317 |
--------------------------------------------------------------------------------
/src/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
74 |
144 |
--------------------------------------------------------------------------------
/src/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue:
--------------------------------------------------------------------------------
1 |
2 |
17 |
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 |
2 |
7 |
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 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
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 |
--------------------------------------------------------------------------------