vibe-web-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,38 @@
1
+ import axios from 'axios';
2
+ import request from '../../utils/request';
3
+
4
+ export function getCategoryWithApps() {
5
+ return request({
6
+ url: '/bdp/home/getCategoryWithApps',
7
+ headers: {
8
+ isToken: true
9
+ },
10
+ method: 'post'
11
+ })
12
+ }
13
+
14
+ export function getLanguages(){
15
+ return request({
16
+ url: '/bdp/language/access/page',
17
+ data:{},
18
+ method: 'post'
19
+ })
20
+ }
21
+
22
+ export function getPlatFormLogo(){
23
+ return axios({
24
+ url: '/bdp/images/access/getPlatFormLogo',
25
+ method: 'post'
26
+ }).then((res)=>{
27
+ return res.data;
28
+ })
29
+ }
30
+
31
+ export function accessAppStat(appId){
32
+ return request({
33
+ url: '/bdp/visitor/app/stat/' + appId,
34
+ method: 'get'
35
+ })
36
+ }
37
+
38
+
package/api/login.js ADDED
@@ -0,0 +1,75 @@
1
+ import { encrypt } from '../utils/jsencrypt';
2
+ import request from '../utils/request';
3
+
4
+ // 测试方法
5
+ export function getUserInfoList() {
6
+ return request({
7
+ url: '/bdp/menu/getUserInfoList',
8
+ headers: {
9
+ isToken: true
10
+ },
11
+ method: 'get'
12
+ })
13
+ }
14
+
15
+ // 登录方法
16
+ export function login(username, password,supportNoPwd,roleType) {
17
+ password = encrypt(password)
18
+ const data = {
19
+ username,
20
+ password,
21
+ supportNoPwd,
22
+ roleType
23
+ }
24
+ return request({
25
+ url: '/bdp/userLogin/login',
26
+ headers: {
27
+ isToken: false
28
+ },
29
+ method: 'post',
30
+ data: data
31
+ })
32
+ }
33
+
34
+ // 退出方法
35
+ export function logout() {
36
+ return request({
37
+ url: '/bdp/userLogin/out',
38
+ method: 'post'
39
+ })
40
+ }
41
+
42
+ // 获取当前用户详细信息
43
+ export function getCurrentLoginUser() {
44
+ return request({
45
+ url: '/bdp/userLogin/currentLoginUser',
46
+ headers: {
47
+ isToken: true
48
+ },
49
+ method: 'get'
50
+ })
51
+ }
52
+
53
+ // 注册方法
54
+ export function register(data) {
55
+ return request({
56
+ url: '/register',
57
+ headers: {
58
+ isToken: false
59
+ },
60
+ method: 'post',
61
+ data: data
62
+ })
63
+ }
64
+
65
+ // 获取验证码
66
+ export function getCodeImg() {
67
+ return request({
68
+ url: '/captchaImage',
69
+ headers: {
70
+ isToken: false
71
+ },
72
+ method: 'get',
73
+ timeout: 20000
74
+ })
75
+ }
@@ -0,0 +1,19 @@
1
+ html.dark{
2
+ background-color:#121a22;
3
+ --el-bg-color: #121a22;
4
+ color-scheme:dark;--el-color-primary:#409eff;
5
+ --el-color-primary-light-3:#3375b9;--el-color-primary-light-5:#2a598a;--el-color-primary-light-7:#213d5b;--el-color-primary-light-8:#1d3043;--el-color-primary-light-9:#18222c;
6
+ --el-color-primary-dark-2:#66b1ff;--el-color-success:#67c23a;--el-color-success-light-3:#4e8e2f;--el-color-success-light-5:#3e6b27;--el-color-success-light-7:#2d481f;
7
+ --el-color-success-light-8:#25371c;--el-color-success-light-9:#1c2518;--el-color-success-dark-2:#85ce61;--el-color-warning:#e6a23c;--el-color-warning-light-3:#a77730;
8
+ --el-color-warning-light-5:#7d5b28;--el-color-warning-light-7:#533f20;--el-color-warning-light-8:#3e301c;--el-color-warning-light-9:#292218;--el-color-warning-dark-2:#ebb563;
9
+ --el-color-danger:#f56c6c;--el-color-danger-light-3:#b25252;--el-color-danger-light-5:#854040;--el-color-danger-light-7:#582e2e;--el-color-danger-light-8:#412626;--el-color-danger-light-9:#2b1d1d;
10
+ --el-color-danger-dark-2:#f78989;--el-color-error:#f56c6c;--el-color-error-light-3:#b25252;--el-color-error-light-5:#854040;--el-color-error-light-7:#582e2e;
11
+ --el-color-error-light-8:#412626;--el-color-error-light-9:#2b1d1d;--el-color-error-dark-2:#f78989;--el-color-info:#909399;--el-color-info-light-3:#6b6d71;
12
+ --el-color-info-light-5:#525457;--el-color-info-light-7:#393a3c;--el-color-info-light-8:#2d2d2f;--el-color-info-light-9:#202121;--el-color-info-dark-2:#a6a9ad;
13
+ --el-box-shadow:0px 12px 32px 4px rgba(0, 0, 0, 0.36),0px 8px 20px rgba(0, 0, 0, 0.72);--el-box-shadow-light:0px 0px 12px rgba(0, 0, 0, 0.72);--el-box-shadow-lighter:0px 0px 6px rgba(0, 0, 0, 0.72);
14
+ --el-box-shadow-dark:0px 16px 48px 16px rgba(0, 0, 0, 0.72),0px 12px 32px #000000,0px 8px 16px -8px #000000;--el-bg-color-page:#0a0a0a;
15
+ --el-bg-color-overlay:#1d1e1f;--el-text-color-primary:#E5EAF3;--el-text-color-regular:#CFD3DC;--el-text-color-secondary:#A3A6AD;--el-text-color-placeholder:#8D9095;--el-text-color-disabled:#6C6E72;
16
+ --el-border-color-darker:#636466;--el-border-color-dark:#58585B;--el-border-color:#4C4D4F;--el-border-color-light:#414243;--el-border-color-lighter:#363637;--el-border-color-extra-light:#2B2B2C;
17
+ --el-fill-color-darker:#424243;--el-fill-color-dark:#39393A;--el-fill-color:#303030;--el-fill-color-light:#262727;--el-fill-color-lighter:#1D1D1D;--el-fill-color-extra-light:#191919;--el-fill-color-blank:transparent;
18
+ --el-mask-color:rgba(0, 0, 0, 0.8);--el-mask-color-extra-light:rgba(0, 0, 0, 0.3)}html.dark .el-button{--el-button-disabled-text-color:rgba(255, 255, 255, 0.5)}
19
+ html.dark .el-card{--el-card-bg-color:#121a22}html.dark .el-empty{--el-empty-fill-color-0:var(--el-color-black);--el-empty-fill-color-1:#4b4b52;--el-empty-fill-color-2:#36383d;--el-empty-fill-color-3:#1e1e20;--el-empty-fill-color-4:#262629;--el-empty-fill-color-5:#202124;--el-empty-fill-color-6:#212224;--el-empty-fill-color-7:#1b1c1f;--el-empty-fill-color-8:#1c1d1f;--el-empty-fill-color-9:#18181a}
@@ -0,0 +1,129 @@
1
+ html {
2
+ height: 100%;
3
+ }
4
+
5
+ body {
6
+ font-size:medium;
7
+ height: 100%;
8
+ margin: 0px !important;
9
+ }
10
+
11
+ @font-face {
12
+ font-family: "futura";
13
+ src: url("../../assets/futura.ttf");
14
+ }
15
+
16
+ #app {
17
+ height: 100%;
18
+ }
19
+
20
+ .container {
21
+ padding-top: 10px;
22
+ padding-left: 10px;
23
+ padding-right: 10px;
24
+ flex-grow: 1;
25
+ width: calc(100% - 20px);
26
+ max-width: 1650px !important;
27
+ margin-top: 0px !important;
28
+ margin: 0 auto;
29
+ height: auto;
30
+ }
31
+
32
+ .dark .container {
33
+ padding-top: 10px;
34
+ padding-left: 10px;
35
+ padding-right: 10px;
36
+ flex-grow: 1;
37
+ width: calc(100% - 20px);
38
+ max-width: 1650px !important;
39
+ margin-top: 0px !important;
40
+ margin: 0 auto;
41
+ height: auto;
42
+ }
43
+
44
+ .dark .main-container {
45
+ margin-top: 10px !important;
46
+ display: flex;
47
+ margin: 0 auto;
48
+ max-width: 1650px;
49
+ height: auto;
50
+ border: 1px solid #242633;
51
+ border-radius: 15px !important;
52
+ }
53
+
54
+ .main-container {
55
+ margin-top: 10px !important;
56
+ margin-left: auto;
57
+ margin-right: auto;
58
+ border: 1px solid #d5daee;
59
+ box-shadow: 0 0 50px 0 hsla(0, 0%, 5%, .1);
60
+ border-radius: 15px;
61
+ display: flex;
62
+ max-width: 1650px;
63
+ height: auto;
64
+ }
65
+
66
+
67
+ /* 暗黑模式 - 增加body选择器提高特异性 */
68
+ html.dark ::-webkit-scrollbar-track {
69
+ background: rgba(0, 0, 0, 0.1) !important;
70
+ border-radius: 4px !important;
71
+ }
72
+
73
+ html.dark ::-webkit-scrollbar-thumb {
74
+ background: #2e3842 !important;
75
+ border-radius: 4px !important;
76
+ height: 30px !important;
77
+ }
78
+
79
+ /* 关键:这里必须是直接选择器,不能有空格 */
80
+ html.dark ::-webkit-scrollbar-thumb:hover {
81
+ background: #252f3b !important;
82
+ }
83
+
84
+ html.dark ::-webkit-scrollbar-button {
85
+ display: none !important;
86
+ }
87
+
88
+ html.dark ::-webkit-scrollbar-corner {
89
+ background: transparent !important;
90
+ }
91
+
92
+ /* 非暗黑模式 - 增加body:not()选择器 */
93
+ html:not(.dark) ::-webkit-scrollbar-track {
94
+ background: #f9f9f9 !important;
95
+ }
96
+
97
+ html:not(.dark) ::-webkit-scrollbar-thumb {
98
+ background: #f1f0f0 !important;
99
+ }
100
+
101
+ html:not(.dark) ::-webkit-scrollbar-thumb:hover {
102
+ background: #f1f0f0 !important;
103
+ }
104
+
105
+ /* 共同样式 */
106
+ ::-webkit-scrollbar {
107
+ width: 0px;
108
+ height: 5px;
109
+ }
110
+
111
+ ::-webkit-scrollbar-button {
112
+ display: none;
113
+ }
114
+
115
+ ::-webkit-scrollbar-corner {
116
+ background: transparent;
117
+ }
118
+
119
+
120
+
121
+ .dark .el-overlay {
122
+ background-color: rgb(27, 36, 46, 0.7) !important;
123
+ /* 你可以调整颜色和透明度 */
124
+ }
125
+
126
+ .el-overlay {
127
+ background-color: rgb(249, 249, 250, 0.7) !important;
128
+ /* 你可以调整颜色和透明度 */
129
+ }
Binary file
@@ -0,0 +1,2 @@
1
+
2
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="640" height="480"><defs><path id="a" fill="#ffde00" d="M-.6.8L0-1 .6.8-1-.3h2z"/></defs><path fill="#de2910" d="M0 0h640v480H0z"/><use width="30" height="20" transform="matrix(71.9991 0 0 72 120 120)" xlink:href="#a"/><use width="30" height="20" transform="matrix(-12.33562 -20.5871 20.58684 -12.33577 240.3 48)" xlink:href="#a"/><use width="30" height="20" transform="matrix(-3.38573 -23.75998 23.75968 -3.38578 288 95.8)" xlink:href="#a"/><use width="30" height="20" transform="matrix(6.5991 -23.0749 23.0746 6.59919 288 168)" xlink:href="#a"/><use width="30" height="20" transform="matrix(14.9991 -18.73557 18.73533 14.99929 240 216)" xlink:href="#a"/></svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 5 3">
2
+ <rect width="5" height="3" fill="#000"/>
3
+ <rect width="5" height="2" fill="#D00"/>
4
+ <rect width="5" height="1" fill="#FFCE00"/>
5
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 30">
2
+ <clipPath id="a">
3
+ <path d="M0 0v30h60V0z"/>
4
+ </clipPath>
5
+ <clipPath id="b">
6
+ <path d="M30 15h30v15zv15H0zH0V0zV0h30z"/>
7
+ </clipPath>
8
+ <g clip-path="url(#a)">
9
+ <path d="M0 0v30h60V0z" fill="#012169"/>
10
+ <path d="M0 0l60 30m0-30L0 30" stroke="#fff" stroke-width="6"/>
11
+ <path d="M0 0l60 30m0-30L0 30" clip-path="url(#b)" stroke="#C8102E" stroke-width="4"/>
12
+ <path d="M30 0v30M0 15h60" stroke="#fff" stroke-width="10"/>
13
+ <path d="M30 0v30M0 15h60" stroke="#C8102E" stroke-width="6"/>
14
+ </g>
15
+ </svg>
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,264 @@
1
+ <template>
2
+ <div v-show="flag" class="foot-btn">
3
+ <el-button type="info" size="large" @click="toggleDrawer">
4
+ <el-icon>
5
+ <Grid />
6
+ </el-icon>
7
+ {{ appsLabel }}
8
+ </el-button>
9
+ <el-button type="info" size="large" @click="toHomePage">
10
+ <el-icon>
11
+ <HomeFilled />
12
+ </el-icon>
13
+ {{ homeLabel }}
14
+ </el-button>
15
+ <el-button type="info" size="large" @click="toSetting" >
16
+ <el-icon>
17
+ <Tools />
18
+ </el-icon>
19
+ {{ settingLabel }}
20
+ </el-button>
21
+ </div>
22
+
23
+ <el-drawer v-model="drawer" direction="btt" size="100%" title="Apps">
24
+ <div class="container">
25
+ <el-row :gutter="20">
26
+ <el-col
27
+ :xs="24"
28
+ :sm="24"
29
+ :md="12"
30
+ :lg="12"
31
+ :xl="12"
32
+ v-for="category in categoryWithApps"
33
+ :key="category.id"
34
+ >
35
+ <div class="bg-purple">
36
+ <div style="padding: 4px 12px">
37
+ <div style="margin-bottom: 30px">
38
+ <h2 class="h4">{{ category.name }}</h2>
39
+ </div>
40
+ <el-row>
41
+ <el-col
42
+ class="app-container"
43
+ v-for="app in category.apps"
44
+ :key="app.id"
45
+ :xs="12"
46
+ :sm="12"
47
+ :md="4"
48
+ :lg="4"
49
+ :xl="4"
50
+ >
51
+ <div class="app-box">
52
+ <a class="app" v-if="app.icontype==='ELEMENT-ICON'" :href="app.applink" target="_self" :style="{backgroundColor:category.color}">
53
+ <el-icon class="app-icon" >
54
+ <component :is="app.icon" />
55
+ </el-icon>
56
+ </a>
57
+ <a class="app" v-if="app.icontype==='PIC'" :href="app.applink" target="_self" :style="{backgroundColor:category.color}">
58
+ <el-image :src="app.pic" class="pic-icon"></el-image>
59
+ </a>
60
+ </div>
61
+ <div class="text-center" style="margin-top: 10px">
62
+ {{ app.appidalias }}
63
+ </div>
64
+ </el-col>
65
+ </el-row>
66
+ </div>
67
+ </div>
68
+ </el-col>
69
+ </el-row>
70
+ </div>
71
+ </el-drawer>
72
+ </template>
73
+
74
+ <script>
75
+ import { mapGetters } from "vuex";
76
+ import { getCategoryWithApps } from "../../api/application/index";
77
+ import en from "../../lang/en";
78
+ import zh from "../../lang/zh";
79
+ export default {
80
+ name: "self-footer",
81
+ data() {
82
+ return {
83
+ icon: "Shop",
84
+ drawer: false,
85
+ flag: true,
86
+ categoryWithApps: {},
87
+ homeLabel: "",
88
+ appsLabel: "",
89
+ settingLabel: "",
90
+ };
91
+ },
92
+ computed: {
93
+ ...mapGetters(["language"]),
94
+ language() {
95
+ return this.$store.state.user.language;
96
+ },
97
+ },
98
+ methods: {
99
+ toSetting(){
100
+ window.location.href = "/apps/communication/";
101
+ },
102
+ toHomePage(){
103
+ window.location.href = "/home";
104
+ },
105
+ toggleDrawer() {
106
+ this.$data.drawer = !this.$data.drawer;
107
+ if (this.drawer) {
108
+ this.getCategoryWithApps(localStorage.getItem("locale"));
109
+ }
110
+ },
111
+ getCategoryWithApps(language) {
112
+ getCategoryWithApps().then((response) => {
113
+ this.categoryWithApps = response.data;
114
+ this.categoryWithApps.forEach((category)=>{
115
+ try{
116
+ category.name = JSON.parse(category.name)[language];
117
+ }catch(error){
118
+ // do noting
119
+ }
120
+ category.apps.forEach(app=>{
121
+ try{
122
+ app.appidalias = JSON.parse(app.appidalias)[language];
123
+ }catch(error){
124
+ // do nothing
125
+ }
126
+ })
127
+ });
128
+ if (this.categoryWithApps && this.categoryWithApps.length !== 0) {
129
+ this.categoryWithApps.forEach((category) => {
130
+ if (category.name === "non-group") {
131
+ category.name = "Non-Group";
132
+ }
133
+ category.apps.forEach((app) => {
134
+ app.applink = "/apps/" + app.applink + "/";
135
+ });
136
+ });
137
+ }
138
+ });
139
+ },
140
+ },
141
+ created() {
142
+ if (this.language == "en-US") {
143
+ this.appsLabel = en.footerApps;
144
+ this.homeLabel = en.footerHome;
145
+ this.settingLabel = en.footerSetting;
146
+ } else if (this.language == "zh-CN") {
147
+ this.appsLabel = zh.footerApps;
148
+ this.homeLabel = zh.footerHome;
149
+ this.settingLabel = zh.footerSetting;
150
+ } else {
151
+ this.appsLabel = zh.footerApps;
152
+ this.homeLabel = zh.footerHome;
153
+ this.settingLabel = zh.footerSetting;
154
+ }
155
+ },
156
+ watch: {
157
+ $route(to) {
158
+ if (to.path == "/login") {
159
+ this.flag = false;
160
+ } else {
161
+ this.flag = true;
162
+ }
163
+ },
164
+ language() {
165
+ if (this.language == "en-US") {
166
+ this.appsLabel = en.footerApps;
167
+ this.homeLabel = en.footerHome;
168
+ this.settingLabel = en.footerSetting;
169
+ } else if (this.language == "zh-CN") {
170
+ this.appsLabel = zh.footerApps;
171
+ this.homeLabel = zh.footerHome;
172
+ this.settingLabel = zh.footerSetting;
173
+ }
174
+ },
175
+ },
176
+ };
177
+ </script>
178
+
179
+ <style scoped>
180
+ .foot-btn {
181
+ justify-content: center !important;
182
+ }
183
+
184
+ .el-icon {
185
+ margin-right: 10px;
186
+ }
187
+
188
+ .container {
189
+ max-width: 100%;
190
+ margin-right: auto;
191
+ margin-left: auto;
192
+ }
193
+
194
+ .el-col {
195
+ margin-bottom: 10px;
196
+ }
197
+
198
+ .text-center {
199
+ text-align: center !important;
200
+ }
201
+
202
+ .app-box {
203
+ cursor: pointer;
204
+ transition: transform 0.2s;
205
+ }
206
+
207
+ .app-box:hover {
208
+ transform: scale(1.2);
209
+ }
210
+
211
+ .app {
212
+ width: 80px;
213
+ height: 80px;
214
+ background-color: #227bfd;
215
+ border-radius: 10px;
216
+ margin: auto;
217
+ display: block;
218
+ }
219
+
220
+ .app-icon {
221
+ color: white;
222
+ font-size: 40px;
223
+ margin-top: 25%;
224
+ margin-left: 25%;
225
+ }
226
+
227
+ .foot-btn {
228
+ position: fixed;
229
+ bottom: 0;
230
+ left: 50%;
231
+ transform: translateX(-50%);
232
+ display: flex;
233
+ z-index: 999;
234
+ height: 40px;
235
+ }
236
+
237
+ .pic-icon {
238
+ color: white;
239
+ width: 80px;
240
+ height: 80px;
241
+ }
242
+
243
+ .el-button {
244
+ border-bottom-right-radius: 0 !important;
245
+ border-bottom-left-radius: 0 !important;
246
+ width: 125px;
247
+ }
248
+
249
+ .dark .bg-purple {
250
+ background: #343a40;
251
+ border-radius: 0.375rem;
252
+ height: 100%;
253
+ }
254
+
255
+ .bg-purple {
256
+ background: #dcdfe6;
257
+ border-radius: 0.375rem;
258
+ height: 100%;
259
+ }
260
+
261
+ .app-container {
262
+ padding: 4px 12px;
263
+ }
264
+ </style>