Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
C
console
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
console
Commits
92406c66
Commit
92406c66
authored
Apr 19, 2017
by
nano
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
complete
parent
4f79c3bb
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
544 additions
and
140 deletions
+544
-140
.idea/workspace.xml
.idea/workspace.xml
+209
-89
package.json
package.json
+2
-1
src/index.js
src/index.js
+2
-0
src/models/packages.js
src/models/packages.js
+69
-0
src/routes/AppDetail.js
src/routes/AppDetail.js
+206
-48
src/services/Packages.js
src/services/Packages.js
+29
-2
yarn.lock
yarn.lock
+27
-0
No files found.
.idea/workspace.xml
View file @
92406c66
...
...
@@ -2,21 +2,11 @@
<project
version=
"4"
>
<component
name=
"ChangeListManager"
>
<list
default=
"true"
id=
"7dc474d0-9fc0-4b76-8c2f-3c98df702116"
name=
"Default"
comment=
""
>
<change
type=
"DELETED"
beforePath=
"$PROJECT_DIR$/src/components/Example.js"
afterPath=
""
/>
<change
type=
"MOVED"
beforePath=
"$PROJECT_DIR$/.roadhogrc"
afterPath=
"$PROJECT_DIR$/.roadhogrc.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/.eslintrc"
afterPath=
"$PROJECT_DIR$/.eslintrc"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/.idea/workspace.xml"
afterPath=
"$PROJECT_DIR$/.idea/workspace.xml"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/package.json"
afterPath=
"$PROJECT_DIR$/package.json"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/public/index.html"
afterPath=
"$PROJECT_DIR$/public/index.html"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/components/App/Create.js"
afterPath=
"$PROJECT_DIR$/src/components/App/Create.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/components/Common/Nav.js"
afterPath=
"$PROJECT_DIR$/src/components/Common/Nav.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/index.js"
afterPath=
"$PROJECT_DIR$/src/index.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/models/App.js"
afterPath=
"$PROJECT_DIR$/src/models/App.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/models/Apps.js"
afterPath=
"$PROJECT_DIR$/src/models/Apps.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/router.js"
afterPath=
"$PROJECT_DIR$/src/router.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/routes/AppDetail.js"
afterPath=
"$PROJECT_DIR$/src/routes/AppDetail.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/routes/AppDetail.less"
afterPath=
"$PROJECT_DIR$/src/routes/AppDetail.less"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/routes/Entry.js"
afterPath=
"$PROJECT_DIR$/src/routes/Entry.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/utils/request.js"
afterPath=
"$PROJECT_DIR$/src/utils/request.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/src/services/Packages.js"
afterPath=
"$PROJECT_DIR$/src/services/Packages.js"
/>
<change
type=
"MODIFICATION"
beforePath=
"$PROJECT_DIR$/yarn.lock"
afterPath=
"$PROJECT_DIR$/yarn.lock"
/>
</list>
<ignored
path=
"$PROJECT_DIR$/.tmp/"
/>
...
...
@@ -35,11 +25,21 @@
</component>
<component
name=
"FileEditorManager"
>
<leaf
SIDE_TABS_SIZE_LIMIT_KEY=
"300"
>
<file
leaf-file-name=
"Packages.js"
pinned=
"false"
current-in-tab=
"false"
>
<entry
file=
"file://$PROJECT_DIR$/src/services/Packages.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"271"
>
<caret
line=
"26"
column=
"32"
lean-forward=
"false"
selection-start-line=
"26"
selection-start-column=
"32"
selection-end-line=
"26"
selection-end-column=
"32"
/>
<folding
/>
</state>
</provider>
</entry>
</file>
<file
leaf-file-name=
"AppDetail.js"
pinned=
"false"
current-in-tab=
"true"
>
<entry
file=
"file://$PROJECT_DIR$/src/routes/AppDetail.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
798
"
>
<caret
line=
"
701"
column=
"40"
lean-forward=
"false"
selection-start-line=
"701"
selection-start-column=
"40"
selection-end-line=
"701"
selection-end-column=
"40
"
/>
<state
relative-caret-position=
"
223
"
>
<caret
line=
"
849"
column=
"37"
lean-forward=
"true"
selection-start-line=
"849"
selection-start-column=
"37"
selection-end-line=
"849"
selection-end-column=
"37
"
/>
<folding>
<element
signature=
"e#0#26#0"
expanded=
"true"
/>
</folding>
...
...
@@ -51,32 +51,36 @@
</component>
<component
name=
"FindInProjectRecents"
>
<findStrings>
<find>
for
</find>
<find>
f
</find>
<find>
.update({ $set: { ...data }}).exec()
</find>
<find>
fo
</find>
<find>
format
</find>
<find>
formatm
</find>
<find>
formatme
</find>
<find>
cate
</find>
<find>
category
</find>
<find>
news
</find>
<find>
s
</find>
<find>
spin
</find>
<find>
<
</find>
<find>
<
Sp
</find>
<find>
<
Spin
</find>
<find>
i
</find>
<find>
isMoun
</find>
<find>
isMounte
</find>
<find>
isMounted
</find>
<find>
isdanger
</find>
<find>
remove
</find>
<find>
width=
"
100%
"
height=
"
100%
"
</find>
<find>
radio
</find>
<find>
console
</find>
<find>
pack
</find>
<find>
upload
</find>
<find>
message
</find>
<find>
success
</find>
<find>
uploading
</find>
<find>
fetch
</find>
<find>
0
</find>
<find>
0.0.1
</find>
<find>
packages
</find>
<find>
add
</find>
<find>
pack.state
</find>
<find>
addpack
</find>
<find>
onadd
</find>
<find>
onAddPackage
</find>
<find>
didmont
</find>
<find>
保存
</find>
<find>
remove
</find>
<find>
发布
</find>
<find>
fa
</find>
<find>
上传
</find>
<find>
urlUpload
</find>
<find>
url
</find>
<find>
disable
</find>
</findStrings>
</component>
<component
name=
"Git.Settings"
>
...
...
@@ -98,6 +102,8 @@
<option
value=
"$PROJECT_DIR$/src/routes/Entry.js"
/>
<option
value=
"$PROJECT_DIR$/src/models/Apps.js"
/>
<option
value=
"$PROJECT_DIR$/src/routes/AppDetail.less"
/>
<option
value=
"$PROJECT_DIR$/src/services/Packages.js"
/>
<option
value=
"$PROJECT_DIR$/src/models/packages.js"
/>
<option
value=
"$PROJECT_DIR$/src/routes/AppDetail.js"
/>
</list>
</option>
...
...
@@ -114,8 +120,8 @@
<handled-path
value=
"$PROJECT_DIR$/node_modules"
/>
</component>
<component
name=
"ProjectFrameBounds"
>
<option
name=
"x"
value=
"2
35
"
/>
<option
name=
"y"
value=
"
58
"
/>
<option
name=
"x"
value=
"2
96
"
/>
<option
name=
"y"
value=
"
23
"
/>
<option
name=
"width"
value=
"1383"
/>
<option
name=
"height"
value=
"968"
/>
</component>
...
...
@@ -162,6 +168,60 @@
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"moecube-console-web"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"moecube-console-web"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"src"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"services"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"moecube-console-web"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"moecube-console-web"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"src"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"routes"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"moecube-console-web"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"moecube-console-web"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"src"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
<PATH_ELEMENT>
<option
name=
"myItemId"
value=
"models"
/>
<option
name=
"myItemType"
value=
"com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode"
/>
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes>
...
...
@@ -265,15 +325,15 @@
<option
name=
"presentableId"
value=
"Default"
/>
<updated>
1492397512644
</updated>
<workItem
from=
"1492397516564"
duration=
"4541000"
/>
<workItem
from=
"1492407287300"
duration=
"
13890
000"
/>
<workItem
from=
"1492407287300"
duration=
"
47582
000"
/>
</task>
<servers
/>
</component>
<component
name=
"TimeTrackingManager"
>
<option
name=
"totallyTimeSpent"
value=
"
18431
000"
/>
<option
name=
"totallyTimeSpent"
value=
"
52123
000"
/>
</component>
<component
name=
"ToolWindowManager"
>
<frame
x=
"2
35"
y=
"58
"
width=
"1383"
height=
"968"
extended-state=
"0"
/>
<frame
x=
"2
96"
y=
"23
"
width=
"1383"
height=
"968"
extended-state=
"0"
/>
<editor
active=
"true"
/>
<layout>
<window_info
id=
"TODO"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"6"
side_tool=
"false"
content_ui=
"tabs"
/>
...
...
@@ -283,7 +343,7 @@
<window_info
id=
"Version Control"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"npm"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32966226"
sideWeight=
"0.5"
order=
"2"
side_tool=
"true"
content_ui=
"tabs"
/>
<window_info
id=
"Run"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.32990867"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Terminal"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"
fals
e"
show_stripe_button=
"true"
weight=
"0.33333334"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Terminal"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"
tru
e"
show_stripe_button=
"true"
weight=
"0.33333334"
sideWeight=
"0.5"
order=
"7"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"TypeScript"
active=
"false"
anchor=
"bottom"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.33"
sideWeight=
"0.5"
order=
"-1"
side_tool=
"false"
content_ui=
"tabs"
/>
<window_info
id=
"Project"
active=
"false"
anchor=
"left"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"true"
show_stripe_button=
"true"
weight=
"0.2572707"
sideWeight=
"0.49315068"
order=
"0"
side_tool=
"false"
content_ui=
"combo"
/>
<window_info
id=
"Hierarchy"
active=
"false"
anchor=
"right"
auto_hide=
"false"
internal_type=
"DOCKED"
type=
"DOCKED"
visible=
"false"
show_stripe_button=
"true"
weight=
"0.24981357"
sideWeight=
"0.5"
order=
"2"
side_tool=
"false"
content_ui=
"combo"
/>
...
...
@@ -312,6 +372,10 @@
<option
value=
"$PROJECT_DIR$/../moecube-console-backend/src/routes/upload.js"
/>
<option
value=
"$PROJECT_DIR$/../moecube-console-backend/src/utils.js.map"
/>
<option
value=
"$PROJECT_DIR$/../moecube-console-backend/src/utils.js"
/>
<option
value=
"$PROJECT_DIR$/../moecube-console/package/utils.js.map"
/>
<option
value=
"$PROJECT_DIR$/../moecube-console/package/main.js.map"
/>
<option
value=
"$PROJECT_DIR$/../moecube-console/package/utils.js"
/>
<option
value=
"$PROJECT_DIR$/../moecube-console/package/main.js"
/>
</list>
</option>
</component>
...
...
@@ -323,16 +387,6 @@
<watches-manager
/>
</component>
<component
name=
"editorHistoryManager"
>
<entry
file=
"file://$PROJECT_DIR$/src/index.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"162"
>
<caret
line=
"14"
column=
"3"
lean-forward=
"false"
selection-start-line=
"14"
selection-start-column=
"3"
selection-end-line=
"14"
selection-end-column=
"3"
/>
<folding>
<element
signature=
"e#0#33#0"
expanded=
"false"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/app.json"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
...
...
@@ -421,6 +475,7 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
...
...
@@ -428,6 +483,7 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
...
...
@@ -435,6 +491,9 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding>
<element
signature=
"e#0#26#0"
expanded=
"false"
/>
</folding>
</state>
</provider>
</entry>
...
...
@@ -442,20 +501,9 @@
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/Common.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"90"
>
<caret
line=
"5"
column=
"18"
lean-forward=
"true"
selection-start-line=
"5"
selection-start-column=
"18"
selection-end-line=
"5"
selection-end-column=
"18"
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/user.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding>
<element
signature=
"e#0#26#0"
expanded=
"false"
/>
</folding>
</state>
</provider>
</entry>
...
...
@@ -583,14 +631,6 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/router.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"108"
>
<caret
line=
"12"
column=
"41"
lean-forward=
"true"
selection-start-line=
"12"
selection-start-column=
"41"
selection-end-line=
"12"
selection-end-column=
"41"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/utils/request.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"252"
>
...
...
@@ -609,16 +649,6 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/App.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"252"
>
<caret
line=
"14"
column=
"14"
lean-forward=
"true"
selection-start-line=
"14"
selection-start-column=
"14"
selection-end-line=
"14"
selection-end-column=
"14"
/>
<folding>
<element
signature=
"e#0#39#0"
expanded=
"false"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/dist/index.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"18"
>
...
...
@@ -635,14 +665,6 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/Apps.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"593"
>
<caret
line=
"54"
column=
"38"
lean-forward=
"true"
selection-start-line=
"54"
selection-start-column=
"38"
selection-end-line=
"54"
selection-end-column=
"38"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/routes/Entry.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"270"
>
...
...
@@ -685,10 +707,108 @@
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/router.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"108"
>
<caret
line=
"12"
column=
"41"
lean-forward=
"false"
selection-start-line=
"12"
selection-start-column=
"41"
selection-end-line=
"12"
selection-end-column=
"41"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/services/example.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/node_modules/dva/dist/dva.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"186"
>
<caret
line=
"7595"
column=
"11"
lean-forward=
"false"
selection-start-line=
"7595"
selection-start-column=
"11"
selection-end-line=
"7595"
selection-end-column=
"11"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/yarn.lock"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"186"
>
<caret
line=
"1065"
column=
"16"
lean-forward=
"false"
selection-start-line=
"1065"
selection-start-column=
"16"
selection-end-line=
"1065"
selection-end-column=
"16"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/App.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"-539"
>
<caret
line=
"14"
column=
"14"
lean-forward=
"true"
selection-start-line=
"14"
selection-start-column=
"14"
selection-end-line=
"14"
selection-end-column=
"14"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/services/Apps.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"38"
lean-forward=
"true"
selection-start-line=
"0"
selection-start-column=
"38"
selection-end-line=
"0"
selection-end-column=
"38"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/Apps.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"-190"
>
<caret
line=
"21"
column=
"0"
lean-forward=
"true"
selection-start-line=
"21"
selection-start-column=
"0"
selection-end-line=
"21"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/example.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"378"
>
<caret
line=
"21"
column=
"6"
lean-forward=
"true"
selection-start-line=
"21"
selection-start-column=
"6"
selection-end-line=
"21"
selection-end-column=
"6"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/Common.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"90"
>
<caret
line=
"5"
column=
"18"
lean-forward=
"true"
selection-start-line=
"5"
selection-start-column=
"18"
selection-end-line=
"5"
selection-end-column=
"18"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/packages.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"282"
>
<caret
line=
"56"
column=
"11"
lean-forward=
"true"
selection-start-line=
"56"
selection-start-column=
"11"
selection-end-line=
"56"
selection-end-column=
"11"
/>
<folding>
<element
signature=
"e#0#70#0"
expanded=
"false"
/>
</folding>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/models/user.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"0"
>
<caret
line=
"0"
column=
"0"
lean-forward=
"false"
selection-start-line=
"0"
selection-start-column=
"0"
selection-end-line=
"0"
selection-end-column=
"0"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/services/Packages.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"271"
>
<caret
line=
"26"
column=
"32"
lean-forward=
"false"
selection-start-line=
"26"
selection-start-column=
"32"
selection-end-line=
"26"
selection-end-column=
"32"
/>
<folding
/>
</state>
</provider>
</entry>
<entry
file=
"file://$PROJECT_DIR$/src/routes/AppDetail.js"
>
<provider
selected=
"true"
editor-type-id=
"text-editor"
>
<state
relative-caret-position=
"
798
"
>
<caret
line=
"
701"
column=
"40"
lean-forward=
"false"
selection-start-line=
"701"
selection-start-column=
"40"
selection-end-line=
"701"
selection-end-column=
"40
"
/>
<state
relative-caret-position=
"
223
"
>
<caret
line=
"
849"
column=
"37"
lean-forward=
"true"
selection-start-line=
"849"
selection-start-column=
"37"
selection-end-line=
"849"
selection-end-column=
"37
"
/>
<folding>
<element
signature=
"e#0#26#0"
expanded=
"true"
/>
</folding>
...
...
package.json
View file @
92406c66
...
...
@@ -35,6 +35,7 @@
"
expect
"
:
"
^1.20.2
"
,
"
husky
"
:
"
^0.12.0
"
,
"
redbox-react
"
:
"
^1.3.2
"
,
"
roadhog
"
:
"
^0.5.2
"
"
roadhog
"
:
"
^0.5.2
"
,
"
vercomp
"
:
"
^1.0.2
"
}
}
src/index.js
View file @
92406c66
...
...
@@ -16,6 +16,8 @@ const app = dva({
app
.
model
(
require
(
"
./models/Apps
"
));
app
.
model
(
require
(
"
./models/packages
"
));
app
.
model
(
require
(
"
./models/user
"
));
// app.model(require("./models/packages"));
...
...
src/models/packages.js
0 → 100644
View file @
92406c66
import
{
fetch
,
add
,
del
,
patch
,
urlUpload
}
from
'
../services/Packages
'
import
{
message
}
from
'
antd
'
export
default
{
namespace
:
'
packages
'
,
state
:
{
packages
:
{},
},
reducers
:
{
fetchSuccess
(
state
,
action
)
{
return
{
...
state
,
...
action
.
payload
}
},
success
(
state
,
action
)
{
return
{
...
state
,
...
action
.
payload
}
},
},
effects
:
{
*
fetch
({
payload
},
{
call
,
put
})
{
try
{
const
{
data
}
=
yield
call
(
fetch
,
payload
)
yield
put
({
type
:
'
fetchSuccess
'
,
payload
:
{
packages
:
data
}})
}
catch
(
e
)
{
message
.
error
(
e
.
message
)
}
},
*
add
({
payload
},
{
call
,
put
})
{
try
{
const
{
data
}
=
yield
call
(
add
,
payload
)
yield
put
({
type
:
'
success
'
,
payload
:
{
packages
:
data
},
appId
:
payload
.
appId
})
}
catch
(
e
)
{
message
.
error
(
e
.
message
)
}
},
*
patch
({
payload
},
{
call
,
put
})
{
try
{
const
{
data
}
=
yield
call
(
patch
,
payload
)
yield
put
({
type
:
'
success
'
,
payload
:
{
packages
:
data
},
appId
:
payload
.
appId
})
}
catch
(
e
)
{
message
.
error
(
e
.
message
)
}
},
*
delete
({
payload
},
{
call
,
put
})
{
try
{
const
{
data
}
=
yield
call
(
del
,
payload
)
yield
put
({
type
:
'
success
'
,
payload
:
{
packages
:
data
},
appId
:
payload
.
appId
})
}
catch
(
e
)
{
message
.
error
(
e
.
message
)
}
},
*
urlUpload
({
payload
},
{
call
,
put
})
{
try
{
const
{
data
}
=
yield
call
(
urlUpload
,
payload
)
yield
put
({
type
:
'
success
'
,
payload
:
{
packages
:
data
},
appId
:
payload
.
appId
})
}
catch
(
e
)
{
message
.
error
(
e
.
message
)
}
},
*
success
({
appId
},
{
call
,
put
})
{
yield
put
({
type
:
'
fetch
'
,
payload
:
{
appId
}})
}
},
subscriptions
:
{},
};
src/routes/AppDetail.js
View file @
92406c66
...
...
@@ -2,6 +2,7 @@ import React from 'react';
import
{
connect
}
from
'
dva
'
;
import
styles
from
'
./AppDetail.less
'
;
import
config
from
'
../config
'
import
vercomp
from
'
vercomp
'
import
uuid
from
'
uuid
'
import
{
Form
,
...
...
@@ -16,6 +17,9 @@ import {
Upload
,
Modal
,
Table
,
Badge
,
Alert
,
message
,
Popconfirm
,
Row
,
Col
,
...
...
@@ -30,6 +34,11 @@ const TabPane = Tabs.TabPane;
const
Dragger
=
Upload
.
Dragger
;
const
confirm
=
Modal
.
confirm
const
statusMap
=
{
'
failed
'
:
'
error
'
,
'
uploading
'
:
'
processing
'
}
const
defCategory
=
[
"
game
"
,
"
runtime
"
,
"
emulator
"
,
"
module
"
]
const
defLocales
=
[
"
zh-CN
"
,
"
zh-TW
"
,
"
en-US
"
,
"
ja-JP
"
]
const
defPlatform
=
[
"
win32
"
,
"
darwin
"
]
...
...
@@ -47,11 +56,7 @@ defLocales.forEach(locale => {
const
defPackage
=
()
=>
{
return
{
id
:
uuid
.
v1
(),
name
:
''
,
version
:
''
,
platforms
:
[],
locales
:
[],
isNew
:
true
status
:
'
new
'
}
}
...
...
@@ -66,17 +71,7 @@ const uploadProps = {
name
:
'
file
'
,
multiple
:
false
,
showUploadList
:
false
,
onChange
(
info
)
{
const
status
=
info
.
file
.
status
;
if
(
status
!==
'
uploading
'
)
{
console
.
log
(
info
.
file
,
info
.
fileList
);
}
if
(
status
===
'
done
'
)
{
// message.success(`${info.file.name} file uploaded successfully.`);
}
else
if
(
status
===
'
error
'
)
{
// message.error(`${info.file.name} file upload failed.`);
}
},
}
...
...
@@ -95,12 +90,26 @@ class AppDetail extends React.Component {
packages
:
[],
};
componentDidMount
()
{
this
.
props
.
dispatch
({
type
:
'
packages/fetch
'
,
payload
:
{
appId
:
this
.
props
.
params
.
id
}})
}
componentWillReceiveProps
(
nextProps
)
{
const
{
App
:
{
developers
,
publishers
,
news
,
packages
=
[]}}
=
nextProps
const
{
App
:
{
developers
,
publishers
,
news
},
packages
}
=
nextProps
// this.setState({
// developers: {...defDevelopers, ...developers},
// publishers: {...defPublishers, ...publishers},
// packages: [...defPackages, ...packages],
// news: {...defNews, ...news},
// })
if
(
this
.
state
.
packages
.
length
!==
packages
)
{
this
.
setState
({
packages
})
}
this
.
setState
({
developers
:
{...
defDevelopers
,
...
developers
},
publishers
:
{...
defPublishers
,
...
publishers
},
packages
:
[...
defPackages
,
...
packages
],
news
:
{...
defNews
,
...
news
},
})
}
...
...
@@ -136,6 +145,7 @@ class AppDetail extends React.Component {
}
}
onSubmitBase
=
(
e
)
=>
{
const
{
form
,
dispatch
,
params
:
{
id
}}
=
this
.
props
...
...
@@ -194,39 +204,106 @@ class AppDetail extends React.Component {
console
.
log
(
'
Received values of form:
'
,
values
);
let
{
upload
:
{
packages
}}
=
values
const
pack
=
packages
.
find
(
el
=>
el
.
id
==
_pack
.
id
)
dispatch
({
type
:
"
Apps/updatePackage
"
,
payload
:
{
id
,
package
:
pack
}})
dispatch
({
type
:
"
Apps/update
"
,
payload
:
{
id
,
packages
}})
}
});
}
onAddPackage
=
(
e
)
=>
{
onAddPackage
=
(
e
,
pack
)
=>
{
const
{
form
,
dispatch
,
params
:
{
id
}}
=
this
.
props
e
&&
e
.
preventDefault
();
form
.
validateFieldsAndScroll
((
err
,
values
)
=>
{
if
(
!
err
)
{
console
.
log
(
'
Received values of form:
'
,
values
);
//
let
{
upload
:
{
packages
}}
=
values
const
_package
=
packages
.
find
(
p
=>
p
.
id
==
pack
.
id
)
dispatch
({
type
:
"
packages/add
"
,
payload
:
{
appId
:
id
,
...
_package
}})
}
});
}
onPatchPackage
=
(
e
,
pack
)
=>
{
const
{
form
,
dispatch
,
params
:
{
id
}}
=
this
.
props
e
&&
e
.
preventDefault
();
form
.
validateFieldsAndScroll
((
err
,
values
)
=>
{
if
(
!
err
)
{
console
.
log
(
'
Received values of form:
'
,
values
);
//
let
{
upload
:
{
packages
}}
=
values
const
_package
=
packages
.
find
(
p
=>
p
.
id
==
pack
.
id
)
dispatch
({
type
:
"
packages/patch
"
,
payload
:
{
appId
:
id
,
...
_package
}})
}
});
}
onNewPackageVersion
=
(
e
,
pack
)
=>
{
const
{
form
,
dispatch
,
params
:
{
id
}}
=
this
.
props
dispatch
({
type
:
"
Apps/addPackage
"
,
payload
:
{
id
,
packages
}})
e
&&
e
.
preventDefault
();
form
.
validateFieldsAndScroll
((
err
,
values
)
=>
{
if
(
!
err
)
{
console
.
log
(
'
Received values of form:
'
,
values
);
//
let
{
upload
:
{
packages
}}
=
values
const
_package
=
packages
.
find
(
p
=>
p
.
id
==
pack
.
id
)
dispatch
({
type
:
"
packages/add
"
,
payload
:
{
appId
:
id
,
...
_package
}})
}
});
}
onDeletePackage
=
(
_id
)
=>
{
handleUrlUpload
=
(
e
,
pack
)
=>
{
const
{
form
,
dispatch
,
params
:
{
id
}}
=
this
.
props
e
&&
e
.
preventDefault
();
form
.
validateFieldsAndScroll
((
err
,
values
)
=>
{
if
(
!
err
)
{
console
.
log
(
'
Received values of form:
'
,
values
);
let
{
upload
:
{
packages
}}
=
values
packages
.
splice
(
_id
,
1
)
const
_package
=
packages
.
find
(
p
=>
p
.
id
==
pack
.
id
)
dispatch
({
type
:
"
Apps/update
"
,
payload
:
{
id
,
packages
}})
dispatch
({
type
:
"
packages/urlUpload
"
,
payload
:
{
appId
:
id
,
...
_package
}})
}
});
}
// onUpdatePackage = (e) => {
// const {form, dispatch, params: {id}} = this.props
//
// e && e.preventDefault();
// form.validateFieldsAndScroll((err, values) => {
// if (!err) {
// console.log('Received values of form: ', values);
//
// // let {upload: {packages}} = values
// let {packages} = this.state
//
//
// dispatch({type: "Apps/updatePackage", payload: {id, packages}})
// }
// });
// }
onDeletePackage
=
(
pack
)
=>
{
const
{
form
,
dispatch
,
params
:
{
id
}}
=
this
.
props
form
.
validateFieldsAndScroll
((
err
,
values
)
=>
{
if
(
!
err
)
{
let
{
upload
:
{
packages
}}
=
values
const
_package
=
packages
.
find
(
p
=>
p
.
id
==
pack
.
id
)
dispatch
({
type
:
"
packages/delete
"
,
payload
:
{
appId
:
id
,
...
_package
}})
}
});
}
...
...
@@ -246,7 +323,7 @@ class AppDetail extends React.Component {
})
// this.onSubmitUpload()
this
.
onAddPackage
()
//
this.onAddPackage()
}
remove
=
async
(
targetKey
)
=>
{
...
...
@@ -255,13 +332,17 @@ class AppDetail extends React.Component {
content
:
'
你真的确定要删除嘛?
'
,
onOk
:
async
()
=>
{
let
{
packages
}
=
this
.
state
let
_package
=
packages
[
targetKey
]
if
(
_package
.
_id
)
{
this
.
onDeletePackage
(
_package
)
}
packages
.
splice
(
targetKey
,
1
)
await
this
.
setState
({
this
.
setState
({
packages
})
return
this
.
onDeletePackage
(
targetKey
)
},
})
}
...
...
@@ -287,12 +368,11 @@ class AppDetail extends React.Component {
}
render
()
{
const
{
form
,
App
,
loading
}
=
this
.
props
const
{
form
,
App
,
loading
,
dispatch
}
=
this
.
props
const
{
getFieldDecorator
}
=
form
const
{
id
,
author
,
homepage
,
references
=
{},
dependencies
=
{},
description
=
{},
actions
=
{},
version
=
{},
name
=
{},
category
,
tags
=
[],
locales
=
[],
conference
,
icon
,
cover
,
background
,}
=
App
const
{
publishers
,
developers
,
previewVisible
,
previewImage
,
iconList
,
coverList
,
backgroundList
,
isCreateNews
,
news
,
packages
}
=
this
.
state
return
(
<
Spin
spinning
=
{
loading
.
global
}
>
<
Tabs
defaultActiveKey
=
"
1
"
className
=
"
app-detail-nav
"
>
...
...
@@ -682,6 +762,24 @@ class AppDetail extends React.Component {
)}
<
/FormItem
>
<
FormItem
{...
formItemLayout
}
help
=
"
id
"
style
=
{{
display
:
"
none
"
}}
>
{
getFieldDecorator
(
`upload["packages"][
${
i
}
]["status"]`
,
{
initialValue
:
pack
[
"
status
"
]
})(
<
Input
addonBefore
=
{
<
Icon
type
=
"
info-circle-o
"
/>
}
placeholder
=
"
status
"
disabled
/>
)}
<
/FormItem
>
{
pack
[
"
status
"
]
!==
'
uploaded
'
&&
<
FormItem
{...
formItemLayout
}
help
=
"
id
"
style
=
{{
display
:
"
none
"
}}
>
{
getFieldDecorator
(
`upload["packages"][
${
i
}
]["_id"]`
,
{
initialValue
:
pack
[
"
_id
"
]
})(
<
Input
addonBefore
=
{
<
Icon
type
=
"
info-circle-o
"
/>
}
placeholder
=
"
_id
"
disabled
/>
)}
<
/FormItem
>
}
<
FormItem
{...
formItemLayout
}
help
=
"
name
"
>
{
getFieldDecorator
(
`upload["packages"][
${
i
}
]["name"]`
,
{
initialValue
:
pack
[
"
name
"
]
...
...
@@ -694,7 +792,8 @@ class AppDetail extends React.Component {
{
getFieldDecorator
(
`upload["packages"][
${
i
}
]["version"]`
,
{
initialValue
:
pack
[
"
version
"
]
})(
<
Input
addonBefore
=
{
<
Icon
type
=
"
info-circle-o
"
/>
}
placeholder
=
"
版本号
"
/>
<
Input
addonBefore
=
{
<
Icon
type
=
"
info-circle-o
"
/>
}
placeholder
=
"
版本号
"
disabled
=
{
pack
.
status
!==
'
new
'
&&
pack
.
status
!==
'
init
'
&&
pack
.
status
!==
'
failed
'
}
/
>
)}
<
/FormItem
>
...
...
@@ -722,42 +821,97 @@ class AppDetail extends React.Component {
)}
<
/FormItem
>
<
FormItem
{...
formItemLayout
}
>
<
FormItem
{...
formItemLayout
}
>
<
div
className
=
{
styles
.
wrapSubmit
}
>
{
pack
.
status
==
'
uploaded
'
&&
<
Button
type
=
"
primary
"
onClick
=
{(
e
)
=>
this
.
onNewPackageVersion
(
e
,
pack
)}
size
=
"
large
"
>
发布新版本
<
/Button
>
}
{
pack
.
status
==
'
uploading
'
&&
<
Button
type
=
"
primary
"
size
=
"
large
"
disabled
>
上传中
...
<
/Button
>
}
{
pack
.
status
==
'
init
'
&&
<
Button
type
=
"
primary
"
onClick
=
{(
e
)
=>
this
.
onPatchPackage
(
e
,
pack
)}
size
=
"
large
"
>
保存
<
/Button
>
}
{
pack
.
status
==
'
new
'
&&
<
Button
type
=
"
primary
"
onClick
=
{(
e
)
=>
this
.
onAddPackage
(
e
,
pack
)}
size
=
"
large
"
>
提交
<
/Button
>
}
<
/div
>
<
/FormItem
>
{
pack
.
status
==
'
uploaded
'
&&
<
Card
title
=
"
详细信息
"
>
<
p
>
_id
:
{
pack
.
_id
}
<
/p
>
<
p
>
id
:
{
pack
.
id
}
<
/p
>
<
p
>
name
:
{
pack
.
name
}
<
/p
>
<
p
>
version
:
{
pack
.
version
}
<
/p
>
<
p
>
locales
:
{
pack
.
locales
.
map
((
locale
,
i
)
=>
{
return
<
span
key
=
{
i
}
style
=
{{
padding
:
"
0 2px
"
}}
>
{
locale
}
<
/span
>
})}
<
/p
>
<
p
>
platforms
:
{
pack
.
platforms
.
map
((
platform
,
i
)
=>
{
return
<
span
key
=
{
i
}
style
=
{{
padding
:
"
0 2px
"
}}
>
{
platform
}
<
/span
>
})}
<
/p
>
<
p
>
files
:
{
pack
.
files
.
length
}
<
/p
>
<
/Card
>
}
{
pack
.
status
!==
'
uploaded
'
&&<
FormItem
{...
formItemLayout
}
>
{
getFieldDecorator
(
`upload["packages"][
${
i
}
]["upload"]`
,
{})(
<
Tabs
defaultActiveKey
=
"
1
"
size
=
"
small
"
>
<
TabPane
tab
=
"
url上传
"
key
=
"
1
"
>
{
getFieldDecorator
(
`upload["packages"][
${
i
}
]["url"]`
,
{
// initialValue: pack["url"]
})(
<
div
>
<
Input
addonBefore
=
{
<
Icon
type
=
"
uplaad
"
/>
}
placeholder
=
"
url
"
/>
请确认输入的链接真实有效
~
<
div
style
=
{{
display
:
'
flex
'
,
flexDirection
:
'
column
'
,
alignItems
:
'
center
'
}}
>
{
pack
.
status
==
'
failed
'
&&
<
Alert
message
=
"
上传失败,请重试
"
type
=
"
warning
"
showIcon
/>
}
<
Input
addonBefore
=
{
<
Icon
type
=
"
upload
"
/>
}
placeholder
=
"
请确认输入的链接真实有效~
"
disabled
=
{
pack
.
status
!==
'
init
'
&&
pack
.
status
!==
'
failed
'
}
/
>
<
Button
type
=
"
primary
"
onClick
=
{(
e
)
=>
this
.
handleUrlUpload
(
e
,
pack
)}
loading
=
{
loading
.
global
}
size
=
"
small
"
style
=
{{
margin
:
"
1vh 0
"
}}
disabled
=
{
pack
.
status
!==
'
init
'
&&
pack
.
status
!==
'
failed
'
}
>
上传
<
/Button
>
<
/div
>
)}
<
/TabPane
>
<
TabPane
tab
=
"
直接上传
"
key
=
"
2
"
>
{
pack
.
status
==
'
failed
'
&&
<
Alert
message
=
"
上传失败,请重试
"
type
=
"
warning
"
showIcon
/>
}
<
Dragger
{...
uploadProps
}
action
=
{
`
${
config
.
apiRoot
}
/upload/packages/
${
pack
[
"
id
"
]}
`
}
disabled
=
{
pack
.
isNew
}
>
onChange
=
{(
info
)
=>
{
const
status
=
info
.
file
.
status
;
console
.
log
(
info
)
if
(
status
!==
'
uploading
'
)
{
console
.
log
(
info
.
file
,
info
.
fileList
);
}
if
(
status
===
'
done
'
)
{
dispatch
({
type
:
'
packages/fetch
'
,
payload
:
{
appId
:
this
.
props
.
params
.
id
}})
}
else
if
(
status
===
'
error
'
)
{
message
.
error
(
info
.
file
.
response
.
message
);
}
}}
disabled
=
{
pack
.
status
!==
'
init
'
&&
pack
.
status
!==
'
failed
'
}
action
=
{
`
${
config
.
apiRoot
}
/upload/package/
${
pack
[
"
_id
"
]}
`
}
>
<
p
className
=
"
ant-upload-drag-icon
"
>
<
Icon
type
=
"
inbox
"
/>
<
/p
>
<
p
className
=
"
ant-upload-text
"
>
Click
or
drag
file
to
this
area
to
upload
<
/p
>
<
p
className
=
"
ant-upload-hint
"
>
Support
for
a
single
or
bulk
upload
.
Strictly
prohibit
from
uploading
company
data
or
other
band
files
<
/p
>
<
/Dragger
>
<
/TabPane
>
<
/Tabs
>
)}
<
/FormItem
>
<
FormItem
{...
formItemLayout
}
>
<
div
className
=
{
styles
.
wrapSubmit
}
>
<
Button
type
=
"
primary
"
htmlType
=
"
submit
"
size
=
"
large
"
>
提交
<
/Button
>
<
/div
>
<
/FormItem
>
<
/FormItem>
}
<
/Form
>
<
/TabPane
>
)
...
...
@@ -782,13 +936,17 @@ function mapStateToProps(state, props) {
const
{
params
:
{
id
}}
=
props
const
{
Apps
:
{
apps
},
packages
:
{
packages
},
loading
}
=
state
const
App
=
apps
[
id
]
||
{}
const
_packages
=
packages
[
id
]
||
[]
return
{
loading
,
packages
:
_packages
,
App
};
}
...
...
src/services/Packages.js
View file @
92406c66
import
request
from
'
../utils/request
'
export
async
function
create
(
params
)
{
return
request
(
`/packages
/
${
params
.
id
}
`
,
{
export
async
function
add
(
params
)
{
return
request
(
`/packages`
,
{
method
:
'
POST
'
,
body
:
JSON
.
stringify
(
params
)
})
}
export
async
function
patch
(
params
)
{
return
request
(
`/packages`
,
{
method
:
'
PATCH
'
,
body
:
JSON
.
stringify
(
params
)
})
}
export
async
function
fetch
(
params
)
{
return
request
(
`/packages/manage?appId=
${
params
.
appId
}
`
,
{
method
:
'
GET
'
,
})
}
export
async
function
urlUpload
(
params
)
{
return
request
(
'
/upload/packageUrl
'
,
{
method
:
'
POST
'
,
body
:
JSON
.
stringify
(
params
)
})
}
export
async
function
del
(
params
)
{
return
request
(
`/packages`
,
{
method
:
'
DELETE
'
,
body
:
JSON
.
stringify
(
params
)
})
}
yarn.lock
View file @
92406c66
...
...
@@ -215,6 +215,10 @@ assert@^1.1.1:
dependencies:
util "0.10.3"
assertion-error@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b"
ast-types@0.9.6:
version "0.9.6"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
...
...
@@ -1166,6 +1170,13 @@ center-align@^0.1.1:
align-text "^0.1.3"
lazy-cache "^1.0.3"
chai@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/chai/-/chai-2.3.0.tgz#8a2f6a34748da801090fd73287b2aa739a4e909a"
dependencies:
assertion-error "1.0.0"
deep-eql "0.1.3"
chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
...
...
@@ -1641,6 +1652,12 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
deep-eql@0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
dependencies:
type-detect "0.1.1"
deep-equal@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
...
...
@@ -5558,6 +5575,10 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
type-detect@0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
type-is@~1.6.14:
version "1.6.15"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
...
...
@@ -5679,6 +5700,12 @@ vendors@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
vercomp@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/vercomp/-/vercomp-1.0.2.tgz#725fd292c099014d919ad9e9e05d3d25c7cff491"
dependencies:
chai "^2.2.0"
verror@1.3.6:
version "1.3.6"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
...
...
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