Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
evm-store
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanli
evm-store
Commits
64e82f42
Commit
64e82f42
authored
Apr 07, 2021
by
wanli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新前端以及修复一处bug
parent
e92b215e
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1488 additions
and
555 deletions
+1488
-555
frontend/package.json
frontend/package.json
+1
-0
frontend/public/index.html
frontend/public/index.html
+3
-2
frontend/src/App.vue
frontend/src/App.vue
+1
-1
frontend/src/api/app-store.js
frontend/src/api/app-store.js
+13
-13
frontend/src/router/index.js
frontend/src/router/index.js
+18
-7
frontend/src/views/app-store/category.vue
frontend/src/views/app-store/category.vue
+129
-124
frontend/src/views/app-store/developer.vue
frontend/src/views/app-store/developer.vue
+139
-0
frontend/src/views/app-store/docs.vue
frontend/src/views/app-store/docs.vue
+9
-4
frontend/src/views/app-store/list.vue
frontend/src/views/app-store/list.vue
+131
-126
frontend/src/views/app-store/profile.vue
frontend/src/views/app-store/profile.vue
+10
-0
frontend/src/views/app-store/rank.vue
frontend/src/views/app-store/rank.vue
+80
-14
frontend/src/views/developer/index.vue
frontend/src/views/developer/index.vue
+0
-154
frontend/src/views/error-pages/not-found.vue
frontend/src/views/error-pages/not-found.vue
+840
-0
frontend/vue.config.js
frontend/vue.config.js
+114
-110
No files found.
frontend/package.json
View file @
64e82f42
...
...
@@ -27,6 +27,7 @@
"vue-codemirror"
:
"^4.0.6"
,
"vue-count-to"
:
"^1.0.13"
,
"vue-grid-layout"
:
"^2.3.12"
,
"vue-loading-spinner"
:
"^1.0.11"
,
"vue-plyr"
:
"^7.0.0"
,
"vue-router"
:
"^3.1.3"
,
"vuex"
:
"^3.1.2"
...
...
frontend/public/index.html
View file @
64e82f42
<!DOCTYPE html>
<html
lang=
"
cn
"
>
<html
lang=
"
zh
"
>
<head
id=
"head"
>
<head>
<meta
charset=
"utf-8"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge"
>
<meta
name=
"viewport"
content=
"width=device-width,initial-scale=1.0"
>
...
...
@@ -16,6 +16,7 @@
<strong>
We're sorry but
<
%=
htmlWebpackPlugin
.
options
.
title
%
>
doesn't work properly without JavaScript enabled. Please enable it to continue.
</strong>
</noscript>
<div
id=
"app"
></div>
<script
src=
"https://cdnjs.cloudflare.com/ajax/libs/gsap/3.1.1/gsap.min.js"
></script>
</body>
</html>
\ No newline at end of file
frontend/src/App.vue
View file @
64e82f42
...
...
@@ -11,7 +11,7 @@ export default {
mounted
()
{
let
divTemp
=
document
.
createElement
(
"
title
"
);
divTemp
.
innerHTML
=
defaultSetting
.
title
;
document
.
getElementById
(
"
head
"
).
appendChild
(
divTemp
)
document
.
querySelector
(
"
head
"
).
appendChild
(
divTemp
)
},
}
</
script
>
frontend/src/api/app-store.js
View file @
64e82f42
...
...
@@ -235,30 +235,30 @@ export function getTopicList(params) {
return
request
({
url
:
"
/uowap/index
"
,
method
:
"
get
"
,
params
,
params
});
}
export
function
addFramework
(
params
)
{
export
function
getTabList
(
params
)
{
return
request
({
url
:
"
/
api/v1/evm_store/framework/add
"
,
method
:
"
pos
t
"
,
data
:
params
,
url
:
"
/
uowap/index
"
,
method
:
"
ge
t
"
,
params
});
}
export
function
updateFramework
(
id
,
params
)
{
export
function
getAppList
(
params
)
{
return
request
({
url
:
`/api/v1/evm_store/framework/update/
${
id
}
`
,
method
:
"
pos
t
"
,
data
:
params
,
url
:
"
/uowap/index
"
,
method
:
"
ge
t
"
,
params
});
}
export
function
deleteFramework
(
params
)
{
export
function
getDataList
(
params
)
{
return
request
({
url
:
"
/
api/v1/evm_store/framework/delete
"
,
method
:
"
pos
t
"
,
data
:
params
,
url
:
"
/
uowap/index
"
,
method
:
"
ge
t
"
,
params
});
}
frontend/src/router/index.js
View file @
64e82f42
...
...
@@ -5,7 +5,6 @@ Vue.use(Router);
/* Layout */
import
Layout
from
"
@/layout
"
;
import
DevLayout
from
"
@/layout/developer
"
;
import
StoreLayout
from
"
@/layout/store
"
;
/**
...
...
@@ -74,7 +73,7 @@ export const constantRoutes = [
path
:
'
list
'
,
name
:
'
AppList
'
,
component
:
()
=>
import
(
'
@/views/app-store/list
'
),
meta
:
{
title
:
'
更多应用
'
,
icon
:
'
home
'
}
meta
:
{
title
:
'
游戏
'
,
icon
:
'
home
'
}
}]
},
{
...
...
@@ -146,22 +145,22 @@ export const constantRoutes = [
{
path
:
'
/
'
,
redirect
:
'
/developer
'
,
component
:
Dev
Layout
,
component
:
Store
Layout
,
children
:
[{
path
:
'
developer
'
,
name
:
'
Developer
'
,
component
:
()
=>
import
(
'
@/views/
developer/index
'
),
component
:
()
=>
import
(
'
@/views/
app-store/developer
'
),
meta
:
{
title
:
'
开发者中心
'
,
icon
:
'
home
'
}
}]
},
{
path
:
'
/
'
,
redirect
:
'
/docs
'
,
component
:
Layout
,
component
:
Store
Layout
,
children
:
[{
path
:
'
docs
'
,
name
:
'
Document
'
,
component
:
()
=>
import
(
'
@/views/
developer
/docs
'
),
component
:
()
=>
import
(
'
@/views/
app-store
/docs
'
),
meta
:
{
title
:
'
开发文档
'
,
icon
:
'
shangcheng
'
}
}]
},
...
...
@@ -252,7 +251,19 @@ export const constantRoutes = [
component
:
()
=>
import
(
'
@/views/error-pages/403
'
),
meta
:
{
title
:
'
403
'
,
icon
:
'
home
'
}
}]
}
},
{
path
:
'
/
'
,
redirect
:
'
/not-found
'
,
component
:
StoreLayout
,
children
:
[{
path
:
'
not-found
'
,
name
:
'
NotFound
'
,
component
:
()
=>
import
(
'
@/views/error-pages/not-found
'
),
meta
:
{
title
:
'
not-found
'
,
icon
:
'
home
'
}
}]
},
{
path
:
'
*
'
,
redirect
:
'
/404
'
,
hidden
:
true
}
];
// 404 page must be placed at the end !!!
...
...
frontend/src/views/app-store/category.vue
View file @
64e82f42
<
template
>
<div
class=
"app-container"
>
<div
class=
"top"
>
<label>
大家都在用
</label>
<p
class=
"title"
>
应用分类
</p>
<div
class=
"categories"
>
<p>
分类
</p>
<ul>
<li
:class=
"tabIndex == index ? 'active' : ''"
v-for=
"(item, index) in tabList"
:key=
"index"
@
click=
"onTabClick(index)"
>
{{
item
.
tabName
}}
</li>
</ul>
</div>
<div
class=
"content"
>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"categories"
>
<p>
子分类
</p>
<ul>
<li
:class=
"tabChildIndex == index ? 'active' : ''"
v-for=
"(item, index) in tabChildList"
:key=
"index"
@
click=
"onTabChildClick(index)"
>
{{
item
.
tabName
}}
</li>
</ul>
</div>
<div
v-show=
"!loading"
class=
"content"
>
<div
class=
"item"
v-for=
"(item, index) in dataList"
:key=
"index"
>
<img
:src=
"item.icon"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"title"
>
{{
item
.
name
}}
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
...
...
@@ -120,47 +44,128 @@
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
<p
class=
"subtitle"
>
{{
item
.
memo
}}
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
</div>
<circle5
v-show=
"loading"
></circle5>
</div>
</
template
>
<
script
>
import
{
getTabList
,
getDataList
}
from
"
@/api/app-store
"
;
import
{
Circle5
}
from
"
vue-loading-spinner
"
;
import
StarRating
from
"
vue-star-rating
"
;
export
default
{
name
:
"
AppCategory
"
,
components
:
{
StarRating
,
Circle5
,
},
data
()
{
return
{};
return
{
loading
:
false
,
tabIndex
:
0
,
tabChildIndex
:
0
,
tabList
:
[],
tabChildList
:
[],
query
:
{
method
:
"
internal.getTabDetail
"
,
serviceType
:
20
,
reqPageNum
:
1
,
uri
:
"
b2b4752f0a524fe5ad900870f88c11ed
"
,
maxResults
:
25
,
zone
:
""
,
locale
:
"
zh
"
,
},
dataList
:
[],
};
},
methods
:
{
getTabList
()
{
this
.
loading
=
true
;
getTabList
(
this
.
query
)
.
then
((
res
)
=>
{
if
(
res
.
tabInfo
&&
res
.
tabInfo
.
length
)
{
this
.
tabList
=
res
.
tabInfo
;
this
.
tabChildList
=
this
.
tabList
[
this
.
tabIndex
].
tabInfo
;
}
})
.
catch
((
err
)
=>
{
if
(
err
.
tabInfo
&&
err
.
tabInfo
.
length
)
{
this
.
tabList
=
err
.
tabInfo
;
this
.
tabChildList
=
this
.
tabList
[
this
.
tabIndex
].
tabInfo
;
this
.
query
.
uri
=
this
.
tabChildList
[
this
.
tabChildIndex
].
realTabId
;
this
.
getDataList
();
}
})
.
finally
(()
=>
{
this
.
loading
=
false
;
});
},
getDataList
()
{
getDataList
(
this
.
query
)
.
then
((
res
)
=>
{
console
.
log
(
res
);
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
if
(
err
.
layoutData
&&
err
.
layoutData
.
length
)
{
this
.
dataList
=
err
.
layoutData
[
0
].
dataList
;
}
});
},
onTabClick
(
index
)
{
this
.
tabIndex
=
index
;
this
.
tabChildList
=
this
.
tabList
[
index
].
tabInfo
;
this
.
query
.
uri
=
this
.
tabChildList
[
this
.
tabChildIndex
].
realTabId
;
this
.
getTabList
();
},
onTabChildClick
(
index
)
{
this
.
tabChildIndex
=
index
;
this
.
query
.
uri
=
this
.
tabChildList
[
this
.
tabChildIndex
].
realTabId
;
this
.
getTabList
();
},
},
created
()
{
this
.
getTabList
();
},
computed
:
{},
methods
:
{},
beforeMount
()
{},
};
</
script
>
<
style
lang=
"scss"
scoped
>
div
.app-container
{
margin
:
20px
0px
;
&
>
div
.top
{
&
>
p
{
margin
:
0px
;
font-size
:
18px
;
}
&
>
div
.categories
{
display
:
flex
;
justify-content
:
space-between
;
&
>
label
{
margin
:
0px
;
font-size
:
20px
;
}
flex-direction
:
row
;
margin
:
20px
0px
;
font-size
:
14px
;
&
>
p
{
cursor
:
pointer
;
width
:
100px
;
margin
:
0px
;
display
:
inline-flex
;
align-items
:
center
;
font-size
:
14px
;
&
>
img
{
width
:
20px
;
height
:
20px
;
}
&
>
ul
{
flex
:
1
;
display
:
grid
;
grid-column-gap
:
10px
;
grid-row-gap
:
10px
;
grid-template-columns
:
repeat
(
auto-fill
,
100px
);
&
>
li
{
cursor
:
pointer
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
font-size
:
14px
;
&
.active
{
color
:
#4cd1e0
;
}
&
:hover
{
color
:
#4cd1e0
;
}
}
}
}
...
...
frontend/src/views/app-store/developer.vue
0 → 100644
View file @
64e82f42
<
template
>
<div
class=
"app-container"
>
<img
src=
"http://gtms01.alicdn.com/tps/i1/TB1rGYSGFXXXXawXXXXDcMi7VXX-1440-336.png"
/>
<div
class=
"service-group"
>
<p>
开发者实名认证
</p>
<p>
上传新应用
</p>
<p>
认领新应用
</p>
<p>
我的应用
</p>
<p>
申请推广
</p>
</div>
<p
style=
"text-align: center;color: red;"
>
开发者中心尚未完善,敬请期待!!!
</p>
<div
class=
"help-group"
>
<dl
class=
"service"
>
<dt>
管理应用
<s></s></dt>
<dd>
我的应用
</dd>
<dd>
上传新应用
</dd>
<dd>
认领应用
</dd>
</dl>
<dl
class=
"service"
>
<dt>
开发者身份管理
<s></s></dt>
<dd>
开发者实名认证
</dd>
<dd>
查看开发者身份
</dd>
<dd>
更换认证支付宝账号
</dd>
<dd>
修改联系人信息
</dd>
</dl>
<dl
class=
"service"
>
<dt>
推广
<s></s></dt>
<dd>
申请推广
</dd>
<dd>
应用推广
</dd>
<dd>
礼包权益
</dd>
</dl>
<dl
class=
"service"
>
<dt>
我的账户
<s></s></dt>
<dd>
我的充值记录
</dd>
<dd>
我的收益
</dd>
<dd>
开发票
</dd>
</dl>
</div>
<div
class=
"help-group"
>
<dl
class=
"service"
>
<dt>
EVM服务
<s></s></dt>
<dd>
云手机助手
</dd>
<dd>
云空间
</dd>
<dd>
主题中心
</dd>
<dd>
应用中心
</dd>
</dl>
<dl
class=
"service"
>
<dt>
EVM版本
<s></s></dt>
<dd>
<a
target=
"_blank"
href=
"http://www.yunos.com/yunos30.html"
>
EVM 3.0
</a
>
</dd>
</dl>
<dl
class=
"service"
>
<dt
class=
"touchable"
>
帮助中心
</dt>
<dd><a
target=
"_blank"
href=
"#help/help"
>
帮助中心首页
</a></dd>
<dd><a
target=
"_blank"
href=
"#help/agreement"
>
平台协议
</a></dd>
<dd><a
target=
"_blank"
href=
"#help/document"
>
开发者文档
</a></dd>
<dd><a
target=
"_blank"
href=
"#help/qa"
>
Q
&
A
</a></dd>
</dl>
<dl
class=
"service"
>
<dt>
关注EVM
<s></s></dt>
<dd>
<a
class=
"g-lw-entry"
href=
"javascript:void(0);"
style=
"padding: 0; border: none"
>
微信公众号
</a
>
</dd>
<dd>
<img
width=
"120"
height=
"120"
title=
"扫描二维码关注 EVM 官方公众号"
alt=
"EVM微信公众号"
src=
"../../assets/images/evm-mp.jpg"
/>
</dd>
</dl>
</div>
</div>
</
template
>
<
script
>
export
default
{
name
:
"
Developer
"
,
data
()
{
return
{};
},
created
()
{},
mounted
()
{},
methods
:
{},
};
</
script
>
<
style
lang=
"scss"
>
div
.app-container
{
&
>
img
{
width
:
100%
;
height
:
auto
;
}
&
>
div
.service-group
{
display
:
grid
;
justify-content
:
center
;
grid-template-columns
:
repeat
(
5
,
1fr
);
grid-template-rows
:
1fr
;
&
>
p
{
text-align
:
center
;
}
}
&
>
div
.help-group
{
margin
:
50px
0px
;
width
:
100%
;
display
:
flex
;
flex-direction
:
row
;
justify-content
:
space-between
;
&
>
dl
.service
{
&
>
dt
{
margin
:
10px
0px
;
}
&
>
dd
{
color
:
grey
;
font-size
:
14px
;
}
}
}
}
</
style
>
frontend/src/views/
developer
/docs.vue
→
frontend/src/views/
app-store
/docs.vue
View file @
64e82f42
<
template
>
<div
class=
"container"
>
<iframe
src=
"https://www.yuque.com/books/share/07c6dc3d-5343-45dd-a7d2-fd5ccaa05825"
height=
"100%"
width=
"100%"
name=
"demo"
scrolling=
"auto"
frameborder=
"0"
></iframe>
<iframe
src=
"https://www.yuque.com/books/share/07c6dc3d-5343-45dd-a7d2-fd5ccaa05825"
height=
"100%"
width=
"100%"
name=
"demo"
scrolling=
"auto"
frameborder=
"0"
></iframe>
</div>
</
template
>
<
script
>
export
default
{
name
:
"
Document
"
,
components
:
{},
...
...
@@ -13,7 +19,6 @@ export default {
},
computed
:
{},
methods
:
{},
beforeMount
()
{},
};
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -28,4 +33,4 @@ export default {
display
:
block
;
}
}
</
style
>
\ No newline at end of file
</
style
>
frontend/src/views/app-store/list.vue
View file @
64e82f42
<
template
>
<div
class=
"app-container"
>
<div
class=
"top"
>
<label>
大家都在用
</label>
<p
class=
"title"
>
应用分类
</p>
<div
class=
"categories"
>
<p>
分类
</p>
<ul>
<li
:class=
"tabIndex == index ? 'active' : ''"
v-for=
"(item, index) in tabList"
:key=
"index"
@
click=
"onTabClick(index)"
>
{{
item
.
tabName
}}
</li>
</ul>
</div>
<div
class=
"content"
>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
v-bind:increment=
"0.1"
v-bind:max-rating=
"5"
v-bind:star-size=
"15"
v-bind:read-only=
"true"
inactive-color=
"#9E9E9E"
active-color=
"#FFC83D"
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
<div
class=
"item"
>
<img
src=
"../../assets/images/evue-logo.png"
alt=
"icon"
/>
<div
class=
"categories"
>
<p>
子分类
</p>
<ul>
<li
:class=
"tabChildIndex == index ? 'active' : ''"
v-for=
"(item, index) in tabChildList"
:key=
"index"
@
click=
"onTabChildClick(index)"
>
{{
item
.
tabName
}}
</li>
</ul>
</div>
<div
v-show=
"!loading"
class=
"content"
>
<div
class=
"item"
v-for=
"(item, index) in dataList"
:key=
"index"
>
<img
:src=
"item.icon"
alt=
"icon"
/>
<div
class=
"text"
>
<p
class=
"title"
>
EVUE
</p>
<p
class=
"title"
>
{{
item
.
name
}}
</p>
<p
class=
"subtitle"
>
<star-rating
v-bind:rating=
"3.5"
...
...
@@ -120,47 +44,128 @@
>
</star-rating>
</p>
<p
class=
"subtitle"
>
八零八零八附带上方
</p>
<p
class=
"subtitle"
>
{{
item
.
memo
}}
</p>
</div>
<button
class=
"install"
>
安装
</button>
</div>
</div>
<circle5
v-show=
"loading"
></circle5>
</div>
</
template
>
<
script
>
import
{
getTabList
,
getDataList
}
from
"
@/api/app-store
"
;
import
{
Circle5
}
from
"
vue-loading-spinner
"
;
import
StarRating
from
"
vue-star-rating
"
;
export
default
{
name
:
"
App
List
"
,
name
:
"
App
Category
"
,
components
:
{
StarRating
,
Circle5
,
},
data
()
{
return
{};
return
{
loading
:
false
,
tabIndex
:
0
,
tabChildIndex
:
0
,
tabList
:
[],
tabChildList
:
[],
query
:
{
method
:
"
internal.getTabDetail
"
,
serviceType
:
20
,
reqPageNum
:
1
,
uri
:
"
56a37d6c494545f98aace3da717845b7
"
,
maxResults
:
25
,
zone
:
""
,
locale
:
"
zh
"
,
},
dataList
:
[],
};
},
methods
:
{
getTabList
()
{
this
.
loading
=
true
;
getTabList
(
this
.
query
)
.
then
((
res
)
=>
{
if
(
res
.
tabInfo
&&
res
.
tabInfo
.
length
)
{
this
.
tabList
=
res
.
tabInfo
;
this
.
tabChildList
=
this
.
tabList
[
this
.
tabIndex
].
tabInfo
;
}
})
.
catch
((
err
)
=>
{
if
(
err
.
tabInfo
&&
err
.
tabInfo
.
length
)
{
this
.
tabList
=
err
.
tabInfo
;
this
.
tabChildList
=
this
.
tabList
[
this
.
tabIndex
].
tabInfo
;
this
.
query
.
uri
=
this
.
tabChildList
[
this
.
tabChildIndex
].
realTabId
;
this
.
getDataList
();
}
})
.
finally
(()
=>
{
this
.
loading
=
false
;
});
},
getDataList
()
{
getDataList
(
this
.
query
)
.
then
((
res
)
=>
{
console
.
log
(
res
);
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
if
(
err
.
layoutData
&&
err
.
layoutData
.
length
)
{
this
.
dataList
=
err
.
layoutData
[
0
].
dataList
;
}
});
},
onTabClick
(
index
)
{
this
.
tabIndex
=
index
;
this
.
tabChildList
=
this
.
tabList
[
index
].
tabInfo
;
this
.
query
.
uri
=
this
.
tabChildList
[
this
.
tabChildIndex
].
realTabId
;
this
.
getTabList
();
},
onTabChildClick
(
index
)
{
this
.
tabChildIndex
=
index
;
this
.
query
.
uri
=
this
.
tabChildList
[
this
.
tabChildIndex
].
realTabId
;
this
.
getTabList
();
},
},
created
()
{
this
.
getTabList
();
},
computed
:
{},
methods
:
{},
beforeMount
()
{},
};
</
script
>
<
style
lang=
"scss"
scoped
>
div
.app-container
{
margin
:
20px
0px
;
&
>
div
.top
{
&
>
p
{
margin
:
0px
;
font-size
:
18px
;
}
&
>
div
.categories
{
display
:
flex
;
justify-content
:
space-between
;
&
>
label
{
margin
:
0px
;
font-size
:
20px
;
}
flex-direction
:
row
;
margin
:
20px
0px
;
font-size
:
14px
;
&
>
p
{
cursor
:
pointer
;
width
:
100px
;
margin
:
0px
;
display
:
inline-flex
;
align-items
:
center
;
font-size
:
14px
;
&
>
img
{
width
:
20px
;
height
:
20px
;
}
&
>
ul
{
flex
:
1
;
display
:
grid
;
grid-column-gap
:
10px
;
grid-row-gap
:
10px
;
grid-template-columns
:
repeat
(
auto-fill
,
100px
);
&
>
li
{
cursor
:
pointer
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
font-size
:
14px
;
&
.active
{
color
:
#4cd1e0
;
}
&
:hover
{
color
:
#4cd1e0
;
}
}
}
}
...
...
@@ -229,4 +234,4 @@ div.app-container {
}
}
}
</
style
>
\ No newline at end of file
</
style
>
frontend/src/views/app-store/profile.vue
View file @
64e82f42
...
...
@@ -253,6 +253,15 @@
</div>
</div>
</div>
<div
v-show=
"navIndex === 7"
class=
"right"
>
<p
class=
"title"
>
开放接口
</p>
<div
class=
"content"
>
<div
style=
"width: 100%; height: auto"
>
<p><input
type=
"text"
disabled
placeholder=
"接口密钥"
/></p>
<p><button
style=
"width: auto;height: auto;"
>
生成密钥
</button></p>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
...
...
@@ -269,6 +278,7 @@ export default {
"
联系我们
"
,
"
设备绑定
"
,
"
我的账号
"
,
"
开放接口
"
,
],
navIndex
:
0
,
};
...
...
frontend/src/views/app-store/rank.vue
View file @
64e82f42
<
template
>
<div
class=
"app-container"
>
<div
class=
"top"
>
<label>
大家都在用
</label>
<p>
<label
@
click=
"toggleMenu('0057c0f3380c49dc9731bdba94420d9c')"
>
应用排行
</label
>
<label
@
click=
"toggleMenu('5734225f9f4441c99553f00d06553831')"
>
游戏排行
</label
>
</p>
<p>
<span
v-for=
"(item, index) in tabList"
:key=
"index"
>
今日流行
</span>
<span>
上升最快
</span>
<span>
本周热议
</span>
<span>
最近更新
</span>
</p>
</div>
<div
class=
"content"
>
<div
class=
"item"
>
...
...
@@ -128,18 +141,58 @@
</div>
</
template
>
<
script
>
import
{
getDataList
}
from
"
@/api/app-store
"
;
import
StarRating
from
"
vue-star-rating
"
;
export
default
{
name
:
"
App
List
"
,
name
:
"
App
Rank
"
,
components
:
{
StarRating
,
},
data
()
{
return
{};
return
{
tabIndex
:
0
,
tabChildIndex
:
0
,
tabList
:
[],
tabChildList
:
[],
dataList
:
[],
query
:
{
method
:
"
internal.getTabDetail
"
,
serviceType
:
20
,
reqPageNum
:
1
,
uri
:
"
0057c0f3380c49dc9731bdba94420d9c
"
,
maxResults
:
25
,
zone
:
""
,
locale
:
"
zh
"
,
},
};
},
computed
:
{},
methods
:
{},
beforeMount
()
{},
methods
:
{
getTabList
()
{
getDataList
(
this
.
query
)
.
then
((
res
)
=>
{
console
.
log
(
res
);
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
},
getDataList
()
{
getDataList
()
.
then
((
res
)
=>
{
console
.
log
(
res
);
})
.
catch
((
err
)
=>
{
console
.
log
(
err
);
});
},
toggleMenu
(
uri
)
{
console
.
log
(
uri
);
},
},
created
()
{
this
.
getTabList
();
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -148,19 +201,32 @@ div.app-container {
&
>
div
.top
{
display
:
flex
;
justify-content
:
space-between
;
&
>
label
{
margin
:
0px
;
font-size
:
20px
;
}
margin-bottom
:
20px
;
&
>
p
{
cursor
:
pointer
;
margin
:
0px
;
display
:
inline-flex
;
align-items
:
center
;
font-size
:
14px
;
&
>
img
{
width
:
20px
;
height
:
20px
;
&
>
label
{
cursor
:
pointer
;
margin
:
0px
10px
;
font-size
:
18px
;
&
:hover
{
color
:
#4cd1e0
;
text-decoration
:
underline
;
}
&
.active
{
color
:
#4cd1e0
;
text-decoration
:
underline
;
}
}
&
>
span
{
cursor
:
pointer
;
margin
:
0px
10px
;
font-size
:
13px
;
&
.active
{
color
:
#4cd1e0
;
}
}
}
}
...
...
@@ -229,4 +295,4 @@ div.app-container {
}
}
}
</
style
>
\ No newline at end of file
</
style
>
frontend/src/views/developer/index.vue
deleted
100644 → 0
View file @
e92b215e
<
template
>
<div>
<div
class=
"m-index"
>
<div
class=
"banner"
style=
"background: url(http://gtms01.alicdn.com/tps/i1/TB1rGYSGFXXXXawXXXXDcMi7VXX-1440-336.png) no-repeat center 0 #657284;"
>
<a
class=
"btn"
href=
"#newapp/upload"
></a>
</div>
<el-col
:span=
"12"
:offset=
"6"
>
<el-row>
<div
class=
"service-group"
>
<p
class=
"nav2"
>
<a
class=
"one one1"
href=
"#certify/certify"
></a>
开发者实名认证
</p>
<p
class=
"nav2"
>
<a
class=
"one one2"
href=
"#newapp/upload"
></a>
上传新应用
</p>
<p
class=
"nav2"
>
<a
class=
"one one3"
href=
"#claim/sift"
></a>
认领新应用
</p>
<p
class=
"nav2"
>
<a
class=
"one one4"
href=
"#myapp/spu_list"
></a>
我的应用
</p>
<p
class=
"nav2"
>
<a
class=
"one one5"
href=
"#generalize"
></a>
申请推广
</p>
</div>
</el-row>
</el-col>
</div>
<div
style=
"margin: 50px 0px"
>
<el-row>
<el-col
:span=
"12"
:offset=
"6"
>
<el-row>
<el-col
:span=
"6"
>
<dl
class=
"service"
>
<dt>
EVM服务
<s></s></dt>
<dd>
<a
target=
"_blank"
href=
"http://zhushou.yunos.com"
>
云手机助手
</a
>
</dd>
<dd>
<a
target=
"_blank"
href=
"http://my.yunos.com"
>
云空间
</a>
</dd>
<dd>
<a
target=
"_blank"
href=
"http://zhuti.yunos.com"
>
主题中心
</a>
</dd>
<dd>
<a
target=
"_blank"
href=
"http://apps.yunos.com"
>
应用中心
</a>
</dd>
</dl>
</el-col>
<el-col
:span=
"6"
>
<dl
class=
"service"
>
<dt>
EVM版本
<s></s></dt>
<dd>
<a
target=
"_blank"
href=
"http://www.yunos.com/yunos30.html"
>
EVM 3.0
</a
>
</dd>
</dl>
</el-col>
<el-col
:span=
"6"
>
<dl
class=
"service"
>
<dt
class=
"touchable"
>
帮助中心
</dt>
<dd><a
target=
"_blank"
href=
"#help/help"
>
帮助中心首页
</a></dd>
<dd><a
target=
"_blank"
href=
"#help/agreement"
>
平台协议
</a></dd>
<dd><a
target=
"_blank"
href=
"#help/document"
>
开发者文档
</a></dd>
<dd><a
target=
"_blank"
href=
"#help/qa"
>
Q
&
A
</a></dd>
</dl>
</el-col>
<el-col
:span=
"6"
>
<dl
class=
"service"
>
<dt>
关注EVM
<s></s></dt>
<dd>
<a
class=
"g-lw-entry"
href=
"javascript:void(0);"
style=
"padding: 0; border: none"
>
微信公众号
</a
>
</dd>
<dd>
<img
width=
"120"
height=
"120"
title=
"扫描二维码关注 EVM 官方公众号"
alt=
"EVM微信公众号"
src=
"../../assets/images/evm-mp.jpg"
/>
</dd>
</dl>
</el-col>
</el-row>
</el-col>
</el-row>
</div>
</div>
</
template
>
<
script
>
export
default
{
name
:
"
Developer
"
,
data
()
{
return
{};
},
created
()
{},
mounted
()
{},
methods
:
{},
};
</
script
>
<
style
lang=
"scss"
>
.text
{
font-size
:
14px
;
}
.item
{
margin-bottom
:
18px
;
}
dl
.service
{
dt
{
margin
:
15px
0px
;
}
dd
{
margin-inline-start
:
20px
!
important
;
}
}
.service-group
{
display
:
flex
;
flex-direction
:
row
;
justify-content
:
space-around
;
&
>
p
{
&
.nav2
{
padding
:
4px
0
0
106px
;
height
:
120px
;
font-size
:
14px
;
}
&
>
a
{
width
:
15px
;
height
:
15px
;
}
}
}
</
style
>
frontend/src/views/error-pages/not-found.vue
0 → 100644
View file @
64e82f42
This diff is collapsed.
Click to expand it.
frontend/vue.config.js
View file @
64e82f42
...
...
@@ -2,124 +2,128 @@
const
path
=
require
(
"
path
"
);
function
resolve
(
dir
)
{
return
path
.
join
(
__dirname
,
dir
);
return
path
.
join
(
__dirname
,
dir
);
}
// All configuration item explanations can be find in https://cli.vuejs.org/config/
module
.
exports
=
{
/**
* You will need to set publicPath if you plan to deploy your site under a sub path,
* for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
* then publicPath should be set to "/bar/".
* In most cases please use '/' !!!
* Detail: https://cli.vuejs.org/config/#publicpath
*/
publicPath
:
"
/
"
,
outputDir
:
"
dist
"
,
productionSourceMap
:
false
,
css
:
{
sourceMap
:
true
,
},
devServer
:
{
port
:
8080
,
open
:
true
,
overlay
:
{
warnings
:
false
,
errors
:
true
,
/**
* You will need to set publicPath if you plan to deploy your site under a sub path,
* for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
* then publicPath should be set to "/bar/".
* In most cases please use '/' !!!
* Detail: https://cli.vuejs.org/config/#publicpath
*/
publicPath
:
"
/
"
,
outputDir
:
"
dist
"
,
productionSourceMap
:
false
,
css
:
{
sourceMap
:
true
,
},
proxy
:
{
// change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy
"
/api/v1
"
:
{
target
:
"
http://127.0.0.1:5000/
"
,
changeOrigin
:
true
,
pathRewrite
:
{},
},
"
/api/v1/kxpms
"
:
{
target
:
"
http://192.168.1.106:5000/
"
,
changeOrigin
:
true
,
pathRewrite
:
{
"
^/online
"
:
"
/
"
,
// 这里理解成用/api代替target里面的地址,后面组件中我们调用接口时直接用api代替
// 比如我要调用'http://40.00.100.100:3002/user/add',直接写'/api/user/add'即可
devServer
:
{
port
:
8080
,
open
:
true
,
overlay
:
{
warnings
:
false
,
errors
:
true
,
},
},
"
/uowap/
"
:
{
target
:
"
https://web-drcn.hispace.dbankcloud.cn/
"
,
changeOrigin
:
true
,
pathRewrite
:
{},
},
proxy
:
{
// change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy
"
/api/v1
"
:
{
target
:
"
http://127.0.0.1:5000/
"
,
changeOrigin
:
true
,
pathRewrite
:
{},
},
"
/api/v1/kxpms
"
:
{
target
:
"
http://192.168.1.106:5000/
"
,
changeOrigin
:
true
,
pathRewrite
:
{
"
^/online
"
:
"
/
"
,
// 这里理解成用/api代替target里面的地址,后面组件中我们调用接口时直接用api代替
// 比如我要调用'http://40.00.100.100:3002/user/add',直接写'/api/user/add'即可
},
},
"
/uowap/
"
:
{
target
:
"
https://web-drcn.hispace.dbankcloud.cn/
"
,
changeOrigin
:
true
,
pathRewrite
:
{},
},
},
// after: require("./mock/mock-server.js"),
},
// after: require("./mock/mock-server.js"),
},
configureWebpack
:
(
config
)
=>
{
// debug JS
config
.
devtool
=
"
source-map
"
;
},
chainWebpack
(
config
)
{
config
.
plugins
.
delete
(
"
preload
"
);
// TODO: need test
config
.
plugins
.
delete
(
"
prefetch
"
);
// TODO: need test
configureWebpack
:
(
config
)
=>
{
// debug JS
config
.
devtool
=
"
source-map
"
;
// set svg-sprite-loader
config
.
module
.
rule
(
"
svg
"
).
exclude
.
add
(
resolve
(
"
src/icons
"
)).
end
();
config
.
module
.
rule
(
"
icons
"
)
.
test
(
/
\.
svg$/
)
.
include
.
add
(
resolve
(
"
src/icons
"
))
.
end
()
.
use
(
"
svg-sprite-loader
"
)
.
loader
(
"
svg-sprite-loader
"
)
.
options
({
symbolId
:
"
icon-[name]
"
,
})
.
end
();
config
.
externals
=
{
'
gsap
'
:
'
gsap
'
}
},
chainWebpack
(
config
)
{
config
.
plugins
.
delete
(
"
preload
"
);
// TODO: need test
config
.
plugins
.
delete
(
"
prefetch
"
);
// TODO: need test
// set preserveWhitespace
config
.
module
.
rule
(
"
vue
"
)
.
use
(
"
vue-loader
"
)
.
loader
(
"
vue-loader
"
)
.
tap
((
options
)
=>
{
options
.
compilerOptions
.
preserveWhitespace
=
true
;
return
options
;
})
.
end
();
// set svg-sprite-loader
config
.
module
.
rule
(
"
svg
"
).
exclude
.
add
(
resolve
(
"
src/icons
"
)).
end
();
config
.
module
.
rule
(
"
icons
"
)
.
test
(
/
\.
svg$/
)
.
include
.
add
(
resolve
(
"
src/icons
"
))
.
end
()
.
use
(
"
svg-sprite-loader
"
)
.
loader
(
"
svg-sprite-loader
"
)
.
options
({
symbolId
:
"
icon-[name]
"
,
})
.
end
();
config
.
when
(
process
.
env
.
NODE_ENV
!==
"
development
"
,
(
config
)
=>
{
config
.
plugin
(
"
ScriptExtHtmlWebpackPlugin
"
)
.
after
(
"
html
"
)
.
use
(
"
script-ext-html-webpack-plugin
"
,
[
{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline
:
/runtime
\.
.*
\.
js$/
,
},
])
.
end
();
config
.
optimization
.
splitChunks
({
chunks
:
"
all
"
,
cacheGroups
:
{
libs
:
{
name
:
"
chunk-libs
"
,
test
:
/
[\\/]
node_modules
[\\/]
/
,
priority
:
10
,
chunks
:
"
initial
"
,
// only package third parties that are initially dependent
},
elementUI
:
{
name
:
"
chunk-elementUI
"
,
// split elementUI into a single package
priority
:
20
,
// the weight needs to be larger than libs and app or it will be packaged into libs or app
test
:
/
[\\/]
node_modules
[\\/]
_
?
element-ui
(
.*
)
/
,
// in order to adapt to cnpm
},
commons
:
{
name
:
"
chunk-commons
"
,
test
:
resolve
(
"
src/components
"
),
// can customize your rules
minChunks
:
3
,
// minimum common number
priority
:
5
,
reuseExistingChunk
:
true
,
},
},
});
config
.
optimization
.
runtimeChunk
(
"
single
"
);
});
},
// set preserveWhitespace
config
.
module
.
rule
(
"
vue
"
)
.
use
(
"
vue-loader
"
)
.
loader
(
"
vue-loader
"
)
.
tap
((
options
)
=>
{
options
.
compilerOptions
.
preserveWhitespace
=
true
;
return
options
;
})
.
end
();
config
.
when
(
process
.
env
.
NODE_ENV
!==
"
development
"
,
(
config
)
=>
{
config
.
plugin
(
"
ScriptExtHtmlWebpackPlugin
"
)
.
after
(
"
html
"
)
.
use
(
"
script-ext-html-webpack-plugin
"
,
[
{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline
:
/runtime
\.
.*
\.
js$/
,
},
])
.
end
();
config
.
optimization
.
splitChunks
({
chunks
:
"
all
"
,
cacheGroups
:
{
libs
:
{
name
:
"
chunk-libs
"
,
test
:
/
[\\/]
node_modules
[\\/]
/
,
priority
:
10
,
chunks
:
"
initial
"
,
// only package third parties that are initially dependent
},
elementUI
:
{
name
:
"
chunk-elementUI
"
,
// split elementUI into a single package
priority
:
20
,
// the weight needs to be larger than libs and app or it will be packaged into libs or app
test
:
/
[\\/]
node_modules
[\\/]
_
?
element-ui
(
.*
)
/
,
// in order to adapt to cnpm
},
commons
:
{
name
:
"
chunk-commons
"
,
test
:
resolve
(
"
src/components
"
),
// can customize your rules
minChunks
:
3
,
// minimum common number
priority
:
5
,
reuseExistingChunk
:
true
,
},
},
});
config
.
optimization
.
runtimeChunk
(
"
single
"
);
});
},
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment