Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
Dui123
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
王天宇
Dui123
Commits
51a6b4ff
Commit
51a6b4ff
authored
Oct 28, 2021
by
wty
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复问题4
parent
95cdbd11
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
8 additions
and
2 deletions
+8
-2
main.600ac631.chunk.js
build/static/js/main.600ac631.chunk.js
+2
-0
main.600ac631.chunk.js.map
build/static/js/main.600ac631.chunk.js.map
+1
-0
add.js
server/routes/add.js
+5
-2
No files found.
build/static/js/main.600ac631.chunk.js
0 → 100644
View file @
51a6b4ff
(
this
.
webpackJsonpdui123
=
this
.
webpackJsonpdui123
||
[]).
push
([[
0
],{
173
:
function
(
e
,
t
,
n
){},
174
:
function
(
e
,
t
,
n
){},
176
:
function
(
e
,
t
,
n
){},
177
:
function
(
e
,
t
,
n
){},
178
:
function
(
e
,
t
,
n
){},
179
:
function
(
e
,
t
,
n
){},
250
:
function
(
e
,
t
,
n
){},
251
:
function
(
e
,
t
,
n
){},
252
:
function
(
e
,
t
,
n
){},
272
:
function
(
e
,
t
,
n
){},
273
:
function
(
e
,
t
,
n
){},
274
:
function
(
e
,
t
,
n
){},
279
:
function
(
e
,
t
,
n
){
"use strict"
;
n
.
r
(
t
);
var
c
=
n
(
0
),
i
=
n
.
n
(
c
),
a
=
n
(
28
),
o
=
n
.
n
(
a
),
l
=
n
(
17
),
r
=
n
(
158
),
s
=
n
.
n
(
r
),
d
=
n
(
134
),
u
=
n
.
n
(
d
),
j
=
(
n
(
171
),
n
(
172
),
n
(
173
),
n
(
174
),
n
(
77
)),
b
=
n
(
21
),
p
=
n
(
40
),
m
=
{
toolBox
:
null
,
type
:
null
,
childType
:
null
,
userInfo
:
null
,
needUpdateIndex
:
!
1
,
type_id
:
"follow"
,
child_type_id
:
"all"
};
!
function
e
(
t
){
return
Object
.
getOwnPropertyNames
(
t
).
forEach
((
function
(
n
){
var
c
=
t
[
n
];
"object"
==
typeof
c
&&
null
!==
c
&&
e
(
c
)})),
Object
.
freeze
(
t
)}(
m
);
var
O
=
function
(
e
,
t
){
switch
(
console
.
table
(
t
,[
"dataCenter
\
u7684dispatch"
]),
t
.
type
){
case
"UPDATE_DATA"
:
return
Object
.
assign
({},
e
,
Object
(
p
.
a
)({},
t
.
data
));
case
"NEED_UPDATE_INDEX"
:
return
Object
.
assign
({},
e
,{
needUpdateIndex
:
!
e
.
needUpdateIndex
});
case
"CHANGE_TYPE"
:
return
Object
.
assign
({},
e
,{
type_id
:
t
.
type_id
});
case
"CHANGE_CHILD_TYPE"
:
return
Object
.
assign
({},
e
,{
child_type_id
:
t
.
child_type_id
});
default
:
return
e
}},
A
=
{
domain
:
"http://"
+
window
.
location
.
hostname
+
":3000"
},
f
=
function
(
e
){
return
{
type
:
"CHANGE_TYPE"
,
type_id
:
e
}},
g
=
n
(
6
),
h
=
Object
(
c
.
createContext
)({}),
y
=
Object
(
c
.
createContext
)({});
var
x
=
function
(
e
){
var
t
=
Object
(
c
.
useReducer
)(
O
,
m
,(
function
(){
return
m
})),
n
=
Object
(
b
.
a
)(
t
,
2
),
i
=
n
[
0
],
a
=
n
[
1
];
return
Object
(
g
.
jsx
)(
h
.
Provider
,{
value
:{
dataCenter
:
i
,
dispatch
:
a
,
fetchData
:
function
(
e
,
t
,
n
){
return
fetch
(
function
(
e
,
t
){
if
(
t
){
var
n
=
Object
.
keys
(
t
).
map
((
function
(
e
,
n
){
return
0
===
n
?
"?"
+
e
+
"="
+
t
[
e
]:
"&"
+
e
+
"="
+
t
[
e
]})).
join
(
""
);
return
console
.
log
(
"
\
u53d1
\
u9001
\
u8bf7
\
u6c42
\
uff1a"
,
A
.
domain
+
e
+
n
),
A
.
domain
+
e
+
n
}
return
A
.
domain
+
e
}(
e
,
t
),{
credentials
:
"include"
}).
then
((
function
(
e
){
return
e
.
json
()})).
then
((
function
(
e
){
if
(
console
.
log
(
e
),
!
e
.
success
)
throw
e
;
var
t
;
return
n
&&
a
((
t
=
Object
(
j
.
a
)({},
n
,
e
.
data
),{
type
:
"UPDATE_DATA"
,
data
:
Object
(
p
.
a
)({},
t
)})),
e
})).
catch
((
function
(
e
){
throw
console
.
error
(
e
),
e
}))}},
children
:
e
.
children
})},
v
=
n
.
p
+
"static/media/logo.c725c5d1.png"
,
E
=
(
n
(
176
),
n
(
177
),
function
(
e
){
var
t
=
Object
(
c
.
useContext
)(
h
),
n
=
t
.
dataCenter
,
i
=
t
.
dispatch
,
a
=
e
.
child_type_id
,
o
=
e
.
child_type_name
,
l
=
[
"child-type-item"
];
a
===
n
.
child_type_id
&&
l
.
push
(
"child-type-item-selected"
);
return
Object
(
g
.
jsx
)(
"div"
,{
className
:
l
.
join
(
" "
),
onClick
:
function
(){
console
.
log
(
a
),
i
(
function
(
e
){
return
{
type
:
"CHANGE_CHILD_TYPE"
,
child_type_id
:
e
}}(
a
))},
children
:
o
})});
var
I
=
function
(
e
){
var
t
,
n
,
i
=
Object
(
c
.
useContext
)(
h
),
a
=
i
.
dataCenter
,
o
=
i
.
dispatch
;
return
Object
(
g
.
jsxs
)(
g
.
Fragment
,{
children
:[
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"tab-tool-type"
,
children
:[
Object
(
g
.
jsx
)(
"div"
,{
className
:
"follow"
===
a
.
type_id
?
"item-tool-type item-tool-type-selected"
:
"item-tool-type"
,
onClick
:
function
(){
return
o
(
f
(
"follow"
))},
children
:
"
\
u6211
\
u7684
\
u6536
\
u85cf"
}),(
null
===
a
||
void
0
===
a
||
null
===
(
t
=
a
.
type
)
||
void
0
===
t
?
void
0
:
t
.
length
)
>
0
&&
a
.
type
.
map
((
function
(
e
){
var
t
=
[
"item-tool-type "
];
return
e
.
type_id
===
a
.
type_id
&&
t
.
push
(
"item-tool-type-selected"
),
Object
(
g
.
jsx
)(
"div"
,{
className
:
t
.
join
(
""
),
onClick
:
function
(){
return
o
(
f
(
e
.
type_id
))},
children
:
e
.
type_name
},
e
.
type_id
)}))]}),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"child-type"
,
children
:[
Object
(
g
.
jsx
)(
E
,{
child_type_id
:
"all"
,
child_type_name
:
"
\
u5168
\
u90e8"
},
"all"
),(
null
===
a
||
void
0
===
a
||
null
===
(
n
=
a
.
childType
)
||
void
0
===
n
?
void
0
:
n
.
length
)
>
0
&&
(
null
===
a
||
void
0
===
a
?
void
0
:
a
.
childType
.
map
((
function
(
e
){
return
Object
(
g
.
jsx
)(
E
,{
child_type_id
:
e
.
child_type_id
,
child_type_name
:
e
.
child_type_name
},
e
.
child_type_id
)})))]})]})},
C
=
(
n
(
178
),
n
(
179
),
n
.
p
+
"static/media/setting.6a716d85.svg"
),
k
=
n
.
p
+
"static/media/trash.780a90e8.svg"
,
w
=
n
.
p
+
"static/media/dragIcon.268403b1.svg"
,
D
=
n
(
95
),
T
=
n
(
282
),
R
=
n
(
162
),
S
=
n
(
285
),
J
=
n
(
284
),
B
=
D
.
a
.
Option
,
N
=
function
(
e
){
var
t
,
n
,
i
,
a
=
e
.
visible
,
o
=
e
.
onCancel
,
l
=
e
.
data
,
r
=
T
.
a
.
useForm
(),
s
=
Object
(
b
.
a
)(
r
,
1
)[
0
],
d
=
Object
(
c
.
useContext
)(
h
),
u
=
d
.
fetchData
,
j
=
d
.
dataCenter
,
m
=
d
.
dispatch
;
return
Object
(
c
.
useEffect
)((
function
(){
var
e
;(
null
===
j
||
void
0
===
j
?
void
0
:
j
.
type
)
&&
u
(
"/query/queryChildType"
,{
type_id
:
null
===
j
||
void
0
===
j
||
null
===
(
e
=
j
.
type
[
0
])
||
void
0
===
e
?
void
0
:
e
.
type_id
},
"childType"
).
then
((
function
(
e
){
console
.
log
(
e
)}))}),[]),
Object
(
g
.
jsx
)(
S
.
a
,{
visible
:
a
,
title
:
l
?
"
\
u4fee
\
u6539
\
u5de5
\
u5177
\
u7bb1"
:
"
\
u65b0
\
u5efa
\
u5de5
\
u5177
\
u7bb1"
,
okText
:
"
\
u786e
\
u5b9a"
,
cancelText
:
"
\
u53d6
\
u6d88"
,
onCancel
:
o
,
onOk
:
function
(){
s
.
validateFields
().
then
((
function
(
e
){
!
function
(
e
){
var
t
=
{
toolbox_name
:
e
.
name
,
toolbox_icon
:
e
.
icon
,
toolbox_desc
:
e
.
depict
,
toolbox_url
:
e
.
url
};
l
?
u
(
"/update/updateToolBox"
,
t
).
then
((
function
(
e
){
e
.
success
?(
R
.
b
.
success
(
"
\
u4fee
\
u6539
\
u6210
\
u529f"
),
m
({
type
:
"NEED_UPDATE_INDEX"
}),
o
()):
R
.
b
.
error
(
"
\
u65b0
\
u5efa
\
u5931
\
u8d25"
)})):(
t
=
Object
(
p
.
a
)(
Object
(
p
.
a
)({},
t
),{},{
type_id
:
e
.
type
,
child_type_id
:
e
.
childType
}),
console
.
log
(
t
),
u
(
"/add/addToolBox"
,
t
).
then
((
function
(
e
){
e
.
success
?(
R
.
b
.
success
(
"
\
u65b0
\
u5efa
\
u6210
\
u529f"
),
m
({
type
:
"NEED_UPDATE_INDEX"
}),
o
()):
R
.
b
.
error
(
"
\
u65b0
\
u5efa
\
u5931
\
u8d25"
)})))}(
e
)})).
catch
((
function
(
e
){
console
.
log
(
"Validate Failed:"
,
e
)}))},
children
:
Object
(
g
.
jsxs
)(
T
.
a
,
Object
(
p
.
a
)(
Object
(
p
.
a
)({
form
:
s
},{
labelCol
:{
span
:
4
},
wrapperCol
:{
span
:
18
}}),{},{
name
:
"form_in_modal"
,
initialValues
:
l
?{
name
:
l
.
toolbox_name
,
icon
:
l
.
toolbox_icon
,
url
:
l
.
toolbox_url
,
depict
:
l
.
toolbox_desc
}:{
type
:(
null
===
j
||
void
0
===
j
?
void
0
:
j
.
type
)
&&
(
null
===
j
||
void
0
===
j
||
null
===
(
t
=
j
.
type
[
0
])
||
void
0
===
t
?
void
0
:
t
.
type_id
)},
children
:[
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"name"
,
label
:
"
\
u540d
\
u79f0"
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u8f93
\
u5165
\
u540d
\
u79f0!"
}],
children
:
Object
(
g
.
jsx
)(
J
.
a
,{
placeholder
:
"
\
u8bf7
\
u8f93
\
u5165
\
u540d
\
u79f0"
})}),
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"icon"
,
label
:
"
\
u56fe
\
u6807"
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u8f93
\
u5165
\
u56fe
\
u6807url!"
}],
children
:
Object
(
g
.
jsx
)(
J
.
a
,{
placeholder
:
"
\
u8bf7
\
u8f93
\
u5165
\
u56fe
\
u6807url"
})}),
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"depict"
,
label
:
"
\
u63cf
\
u8ff0"
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u8f93
\
u5165
\
u63cf
\
u8ff0!"
}],
children
:
Object
(
g
.
jsx
)(
J
.
a
,{
placeholder
:
"
\
u8bf7
\
u8f93
\
u5165
\
u63cf
\
u8ff0"
})}),
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"url"
,
label
:
"
\
u94fe
\
u63a5"
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u8f93
\
u5165
\
u94fe
\
u63a5!"
}],
children
:
Object
(
g
.
jsx
)(
J
.
a
,{
placeholder
:
"
\
u8bf7
\
u8f93
\
u5165
\
u94fe
\
u63a5"
})}),
!
l
&&
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"type"
,
label
:
"
\
u7c7b
\
u578b"
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u9009
\
u62e9
\
u7c7b
\
u578b!"
}],
children
:
Object
(
g
.
jsx
)(
D
.
a
,{
placeholder
:
"
\
u8bf7
\
u9009
\
u62e9
\
u7c7b
\
u578b"
,
onChange
:
function
(
e
){
s
.
setFieldsValue
({
type
:
e
}),
u
(
"/query/queryChildType"
,{
type_id
:
e
},
"childType"
).
then
((
function
(
e
){
console
.
log
(
e
)})),
console
.
log
(
j
)},
children
:(
null
===
j
||
void
0
===
j
||
null
===
(
n
=
j
.
type
)
||
void
0
===
n
?
void
0
:
n
.
length
)
&&
(
null
===
j
||
void
0
===
j
?
void
0
:
j
.
type
.
map
((
function
(
e
){
return
Object
(
g
.
jsx
)(
B
,{
value
:
e
.
type_id
,
children
:
e
.
type_name
},
e
.
type_id
)})))})}),
!
l
&&
(
null
===
j
||
void
0
===
j
?
void
0
:
j
.
childType
)
&&
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"childType"
,
label
:
"
\
u5b50
\
u7c7b
\
u578b"
,
children
:
Object
(
g
.
jsx
)(
D
.
a
,{
placeholder
:
"
\
u8bf7
\
u9009
\
u62e9
\
u5b50
\
u7c7b
\
u578b"
,
onChange
:
function
(
e
){
s
.
setFieldsValue
({
childType
:
e
})},
allowClear
:
!
0
,
children
:(
null
===
j
||
void
0
===
j
||
null
===
(
i
=
j
.
childType
)
||
void
0
===
i
?
void
0
:
i
.
length
)
&&
(
null
===
j
||
void
0
===
j
?
void
0
:
j
.
childType
.
map
((
function
(
e
){
return
Object
(
g
.
jsx
)(
B
,{
value
:
e
.
child_type_id
,
children
:
e
.
child_type_name
},
e
.
child_type_id
)})))})})]}))})};
var
q
=
function
(
e
){
var
t
=
Object
(
c
.
useState
)(
!
1
),
n
=
Object
(
b
.
a
)(
t
,
2
),
i
=
n
[
0
],
a
=
n
[
1
],
o
=
Object
(
c
.
useContext
)(
h
).
fetchData
,
l
=
(
Object
(
c
.
useContext
)(
y
).
showPop
,
e
.
value
),
r
=
l
.
toolbox_icon
,
s
=
l
.
toolbox_name
,
d
=
l
.
toolbox_desc
,
u
=
l
.
toolbox_url
,
j
=
(
l
.
follow
,
l
.
toolbox_id
),
p
=
Object
(
c
.
useState
)(
r
),
m
=
Object
(
b
.
a
)(
p
,
2
),
O
=
m
[
0
],
A
=
m
[
1
],
f
=
function
(
e
){
window
.
location
.
href
=
e
};
return
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"content-item"
,
children
:[
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"content-adminTool"
,
children
:[
Object
(
g
.
jsx
)(
"img"
,{
src
:
w
,
alt
:
""
}),
Object
(
g
.
jsx
)(
"img"
,{
src
:
C
,
alt
:
""
,
onClick
:
function
(){
return
a
(
!
0
)}}),
Object
(
g
.
jsx
)(
"img"
,{
src
:
k
,
alt
:
""
,
onClick
:
function
(){
return
function
(
e
){
o
(
"/delete/deleteToolBoxById"
,{
toolbox_id
:
e
})}(
j
)}})]}),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"item-icon"
,
onClick
:
function
(){
return
f
(
u
)},
children
:[
!
O
&&
Object
(
g
.
jsx
)(
"div"
,{
className
:
"defaultIcon"
,
children
:
s
[
0
]}),
O
&&
Object
(
g
.
jsx
)(
"img"
,{
src
:
O
,
alt
:
""
,
onError
:
function
(
e
){
return
A
(
null
)}})]}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"item-name"
,
onClick
:
function
(){
return
f
(
u
)},
children
:
s
}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"item-desc"
,
children
:
d
}),
Object
(
g
.
jsx
)(
"a"
,{
className
:
"item-url"
,
href
:
u
,
children
:
u
}),
i
&&
Object
(
g
.
jsx
)(
N
,{
visible
:
i
,
onCancel
:
function
(){
return
a
(
!
1
)},
data
:
e
.
value
})]})};
n
(
250
);
var
G
=
function
(
e
){
var
t
=
Object
(
c
.
useContext
)(
h
),
n
=
t
.
dataCenter
,
i
=
t
.
fetchData
,
a
=
e
.
value
,
o
=
a
.
toolbox_icon
,
l
=
a
.
toolbox_name
,
r
=
a
.
toolbox_desc
,
s
=
a
.
toolbox_url
,
d
=
a
.
toolbox_id
,
u
=
Object
(
c
.
useState
)(
!
1
),
j
=
Object
(
b
.
a
)(
u
,
2
),
p
=
j
[
0
],
m
=
j
[
1
],
O
=
Object
(
c
.
useState
)(
o
),
A
=
Object
(
b
.
a
)(
O
,
2
),
f
=
A
[
0
],
y
=
A
[
1
],
x
=
function
(
e
){
return
window
.
location
.
href
=
e
};
return
Object
(
c
.
useEffect
)((
function
(){
var
e
;(
null
===
(
e
=
n
.
userInfo
)
||
void
0
===
e
?
void
0
:
e
.
follow
.
includes
(
d
))?
m
(
!
0
):
m
(
!
1
)}),[
n
.
toolBox
,
n
.
userInfo
]),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"content-item"
,
children
:[
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"item-icon"
,
onClick
:
function
(){
return
x
(
s
)},
children
:[
!
f
&&
Object
(
g
.
jsx
)(
"div"
,{
className
:
"defaultIcon"
,
children
:
l
[
0
]}),
f
&&
Object
(
g
.
jsx
)(
"img"
,{
src
:
f
,
alt
:
""
,
onError
:
function
(
e
){
return
y
(
null
)}})]}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"item-name"
,
onClick
:
function
(){
return
x
(
s
)},
children
:
l
}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"item-desc"
,
children
:
r
}),
Object
(
g
.
jsx
)(
"a"
,{
className
:
"item-url"
,
href
:
s
,
children
:
s
}),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"follow"
,
children
:[
Object
(
g
.
jsx
)(
"img"
,{
className
:
"icon-follow"
,
src
:
p
?
"data:image/png;base64,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"
:
"data:image/png;base64,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"
,
alt
:
""
,
onClick
:
function
(){
return
function
(){
var
e
=
n
.
userInfo
.
follow
.
slice
();
if
(
p
){
var
t
=
e
.
indexOf
(
d
);
e
.
splice
(
t
,
1
)}
else
e
.
push
(
d
);
console
.
log
({
follow
:
JSON
.
stringify
(
e
),
uid
:
n
.
userInfo
.
uid
}),
i
(
"/users/follow"
,{
follow
:
JSON
.
stringify
(
e
),
uid
:
n
.
userInfo
.
uid
}).
then
((
function
(){
return
i
(
"/users/getUser"
,{
uid
:
100001
},
"userInfo"
)}))}()}}),
"
\
u6536
\
u85cf"
]})]})};
var
K
=
function
(
e
){
var
t
,
n
,
i
=
Object
(
c
.
useContext
)(
h
).
dataCenter
;
return
Object
(
g
.
jsx
)(
"div"
,{
className
:
"content"
,
children
:(
null
===
(
t
=
i
.
toolBox
)
||
void
0
===
t
?
void
0
:
t
.
length
)?
null
===
i
||
void
0
===
i
||
null
===
(
n
=
i
.
toolBox
)
||
void
0
===
n
?
void
0
:
n
.
filter
((
function
(
e
){
return
"all"
===
i
.
child_type_id
||
e
.
child_type_id
===
i
.
child_type_id
})).
map
((
function
(
e
){
return
Object
(
g
.
jsx
)(
q
,{
value
:
e
},
e
.
toolbox_id
)})):
"
\
u6ca1
\
u6709
\
u6570
\
u636e
\
u4e86
\
uff01"
})},
F
=
(
n
(
251
),
n
(
31
)),
z
=
(
n
(
252
),
n
(
153
)),
X
=
(
n
(
253
),
n
(
254
),
n
(
147
),
n
(
255
),
n
(
257
),
n
(
258
),
n
(
52
),
n
(
259
),
n
(
260
),
n
(
261
),
n
(
262
),
n
(
263
),
D
.
a
.
Option
,
function
(
e
){
var
t
=
e
.
visible
,
n
=
e
.
onCancel
,
i
=
e
.
data
,
a
=
Object
(
c
.
useState
)(
""
),
o
=
Object
(
b
.
a
)(
a
,
2
),
l
=
o
[
0
],
r
=
o
[
1
],
s
=
Object
(
c
.
useState
)(
""
),
d
=
Object
(
b
.
a
)(
s
,
2
),
u
=
d
[
0
],
j
=
d
[
1
],
p
=
Object
(
c
.
useState
)(
""
),
m
=
Object
(
b
.
a
)(
p
,
2
),
O
=
m
[
0
],
f
=
(
m
[
1
],
Object
(
c
.
useContext
)(
h
)),
y
=
f
.
fetchData
,
x
=
f
.
dataCenter
;
return
Object
(
c
.
useEffect
)((
function
(){
i
&&
j
(
i
.
page_name
)}),[
i
]),
Object
(
g
.
jsxs
)(
S
.
a
,{
visible
:
t
,
title
:
"
\
u53d1
\
u5e03"
,
okText
:
"
\
u53d1
\
u5e03"
,
cancelText
:
"
\
u53d6
\
u6d88"
,
onCancel
:
n
,
onOk
:
function
(
e
){
console
.
log
(
l
),
l
&&
u
?
i
?
fetch
(
""
.
concat
(
A
.
domain
,
"/page/updatePage"
),{
method
:
"POST"
,
headers
:{
"Content-Type"
:
"application/json"
},
body
:
JSON
.
stringify
({
page_id
:
i
.
page_id
,
page_name
:
u
,
code
:
l
})}).
then
((
function
(
e
){
return
e
.
json
()})).
then
((
function
(
e
){
e
.
success
?(
n
(),
R
.
b
.
success
(
"
\
u66ff
\
u6362
\
u6210
\
u529f
\
uff01"
),(
null
===
x
||
void
0
===
x
?
void
0
:
x
.
type
)
&&
y
(
"/page/queryPage"
,{},
"queryPage"
).
then
((
function
(
e
){}))):
R
.
b
.
error
(
"
\
u66ff
\
u6362
\
u5931
\
u8d25"
)})):
fetch
(
""
.
concat
(
A
.
domain
,
"/page/addPage"
),{
method
:
"POST"
,
headers
:{
"Content-Type"
:
"application/json"
},
body
:
JSON
.
stringify
({
page_name
:
u
,
code
:
l
})}).
then
((
function
(
e
){
return
e
.
json
()})).
then
((
function
(
e
){
e
.
success
?(
n
(),
R
.
b
.
success
(
"
\
u53d1
\
u5e03
\
u6210
\
u529f
\
uff01"
),(
null
===
x
||
void
0
===
x
?
void
0
:
x
.
type
)
&&
y
(
"/page/queryPage"
,{},
"queryPage"
).
then
((
function
(
e
){}))):
R
.
b
.
error
(
e
.
error
||
"
\
u53d1
\
u5e03
\
u5931
\
u8d25"
)})):
R
.
b
.
error
(
"
\
u8bf7
\
u8865
\
u5168
\
u4fe1
\
u606f
\
uff01"
)},
width
:
"1000px"
,
children
:[
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"page_name"
,
label
:
"
\
u9875
\
u9762
\
u540d
\
u79f0"
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u8f93
\
u5165
\
u9875
\
u9762
\
u540d
\
u79f0!"
}],
children
:
Object
(
g
.
jsx
)(
J
.
a
,{
placeholder
:
"
\
u8bf7
\
u8f93
\
u5165
\
u9875
\
u9762
\
u540d
\
u79f0"
,
defaultValue
:(
null
===
i
||
void
0
===
i
?
void
0
:
i
.
page_name
)?
i
.
page_name
:
u
,
onChange
:
function
(
e
){
j
(
e
.
target
.
value
)}})}),
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"type"
,
label
:
"
\
u5e03
\
u5c40
\
u4ee3
\
u7801"
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u8f93
\
u5165
\
u9875
\
u9762
\
u540d
\
u79f0!"
}],
children
:
Object
(
g
.
jsx
)(
"div"
,{
className
:
"codeMain"
,
children
:
Object
(
g
.
jsx
)(
z
.
UnControlled
,{
onChange
:
function
(
e
,
t
,
n
){
r
(
n
)},
value
:
O
,
options
:{
styleActiveLine
:
!
0
,
lineNumbers
:
!
0
,
theme
:
"monokai"
,
tabSize
:
2
,
keyMap
:
"sublime"
,
mode
:
"text/javascript"
,
smartIndent
:
!
0
,
lineWrapping
:
!
0
,
autofocus
:
!
0
}})})})]})}),
M
=
n
(
283
),
U
=
n
(
117
),
P
=
D
.
a
.
Option
,
Q
=
(
M
.
a
.
TabPane
,
function
(
e
){
var
t
,
n
=
e
.
visible
,
a
=
e
.
onCancel
,
o
=
e
.
queryData
,
l
=
e
.
data
;
console
.
log
(
l
);
var
r
=
T
.
a
.
useForm
(),
s
=
Object
(
b
.
a
)(
r
,
1
)[
0
];
l
&&
s
.
setFieldsValue
({
type_name
:
l
.
type_name
});
var
d
=
Object
(
c
.
useContext
)(
h
),
u
=
d
.
fetchData
,
j
=
d
.
dataCenter
,
m
=
d
.
dispatch
,
O
=
i
.
a
.
useState
(
1
),
A
=
Object
(
b
.
a
)(
O
,
2
),
f
=
A
[
0
],
y
=
A
[
1
];
return
Object
(
g
.
jsx
)(
S
.
a
,{
visible
:
n
,
title
:
""
.
concat
(
l
?
"
\
u4fee
\
u6539"
:
"
\
u65b0
\
u5efa"
,
"
\
u7c7b
\
u578b"
),
okText
:
"
\
u786e
\
u5b9a"
,
cancelText
:
"
\
u53d6
\
u6d88"
,
onCancel
:
a
,
onOk
:
function
(){
s
.
validateFields
().
then
((
function
(
e
){
!
function
(
e
){
if
(
l
){
console
.
log
(
l
);
var
t
=
{
type_id
:
""
,
type_name
:
""
};
t
=
l
.
isRemove
?{
child_type_id
:
l
.
type_id
,
child_type_name
:
e
.
type_name
}:{
type_id
:
l
.
type_id
,
type_name
:
e
.
type_name
},
u
(
"/typeManage/updateType"
,
t
).
then
((
function
(
e
){
e
.
success
&&
(
R
.
b
.
success
(
"
\
u4fee
\
u6539
\
u6210
\
u529f"
),
m
({
type
:
"NEED_UPDATE_INDEX"
}),
o
(),
a
())}))}
else
console
.
log
(
e
),
u
(
"/add/addType"
,
e
).
then
((
function
(
e
){
e
.
success
&&
(
R
.
b
.
success
(
"
\
u65b0
\
u5efa
\
u6210
\
u529f"
),
m
({
type
:
"NEED_UPDATE_INDEX"
}),
a
())}))}(
e
)})).
catch
((
function
(
e
){
console
.
log
(
"Validate Failed:"
,
e
)}))},
children
:
Object
(
g
.
jsxs
)(
T
.
a
,
Object
(
p
.
a
)(
Object
(
p
.
a
)({
form
:
s
},{
labelCol
:{
span
:
4
},
wrapperCol
:{
span
:
18
}}),{},{
name
:
"form_in_modal"
,
initialValues
:{
modifier
:
"public"
,
"radio-group"
:
1
},
children
:[
!
l
&&
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"radio-group"
,
label
:
"
\
u7c7b
\
u578b"
,
children
:
Object
(
g
.
jsxs
)(
U
.
a
.
Group
,{
onChange
:
function
(
e
){
console
.
log
(
"radio checked"
,
e
.
target
.
value
),
y
(
e
.
target
.
value
)},
value
:
f
,
children
:[
Object
(
g
.
jsx
)(
U
.
a
,{
value
:
1
,
children
:
"
\
u7236
\
u7c7b
\
u578b"
}),
Object
(
g
.
jsx
)(
U
.
a
,{
value
:
2
,
children
:
"
\
u5b50
\
u7c7b
\
u578b"
})]})}),
1
===
f
||
l
?
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"type_name"
,
label
:
""
.
concat
(
l
?
""
:
"
\
u7236"
,
"
\
u7c7b
\
u578b"
),
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u8f93
\
u5165
\
u7c7b
\
u578b
\
u540d
\
u79f0!"
}],
children
:
Object
(
g
.
jsx
)(
J
.
a
,{
placeholder
:
"
\
u8bf7
\
u8f93
\
u5165
\
u7c7b
\
u578b
\
u540d
\
u79f0"
})}):
Object
(
g
.
jsxs
)(
g
.
Fragment
,{
children
:[
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"type_id"
,
label
:
"
\
u7236
\
u7c7b
\
u578b"
,
hasFeedback
:
!
0
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u9009
\
u62e9
\
u7236
\
u7c7b
\
u578b!"
}],
children
:
Object
(
g
.
jsx
)(
D
.
a
,{
placeholder
:
"
\
u8bf7
\
u9009
\
u62e9
\
u7236
\
u7c7b
\
u578b"
,
onChange
:
function
(
e
){
s
.
setFieldsValue
({
type_id
:
e
})},
children
:(
null
===
j
||
void
0
===
j
||
null
===
(
t
=
j
.
type
)
||
void
0
===
t
?
void
0
:
t
.
length
)
&&
(
null
===
j
||
void
0
===
j
?
void
0
:
j
.
type
.
map
((
function
(
e
){
return
Object
(
g
.
jsx
)(
P
,{
value
:
e
.
type_id
,
children
:
e
.
type_name
},
e
.
type_id
)})))})}),
Object
(
g
.
jsx
)(
T
.
a
.
Item
,{
name
:
"child_type_name"
,
label
:
"
\
u5b50
\
u7c7b
\
u578b"
,
rules
:[{
required
:
!
0
,
message
:
"
\
u8bf7
\
u8f93
\
u5165
\
u7c7b
\
u578b
\
u540d
\
u79f0!"
}],
children
:
Object
(
g
.
jsx
)(
J
.
a
,{
placeholder
:
"
\
u8bf7
\
u8f93
\
u5165
\
u7c7b
\
u578b
\
u540d
\
u79f0"
})})]})]}))})}),
Z
=
n
(
286
),
W
=
n
(
281
);
var
L
=
function
(
e
){
var
t
=
e
.
visible
,
n
=
e
.
onCancel
,
i
=
(
e
.
onPublish
,
Object
(
c
.
useState
)(
!
1
)),
a
=
Object
(
b
.
a
)(
i
,
2
),
o
=
a
[
0
],
l
=
a
[
1
],
r
=
Object
(
c
.
useState
)(
""
),
s
=
Object
(
b
.
a
)(
r
,
2
),
d
=
s
[
0
],
u
=
s
[
1
],
j
=
Object
(
c
.
useContext
)(
h
),
p
=
j
.
fetchData
,
m
=
j
.
dataCenter
,
O
=
[{
title
:
"
\
u9875
\
u9762Id"
,
dataIndex
:
"page_id"
,
width
:
150
,
align
:
"center"
},{
title
:
"
\
u9875
\
u9762
\
u540d
\
u79f0"
,
dataIndex
:
"page_name"
,
width
:
200
,
align
:
"center"
},{
title
:
"
\
u9875
\
u9762Url"
,
dataIndex
:
"pageUrl"
,
width
:
300
,
align
:
"center"
,
render
:
function
(
e
,
t
){
return
Object
(
g
.
jsx
)(
Z
.
b
,{
size
:
"middle"
,
children
:
Object
(
g
.
jsx
)(
"a"
,{
href
:
t
.
pageUrl
,
children
:
t
.
pageUrl
})})}},{
title
:
"
\
u64cd
\
u4f5c"
,
key
:
"action"
,
align
:
"center"
,
width
:
100
,
render
:
function
(
e
,
t
){
return
Object
(
g
.
jsx
)(
Z
.
b
,{
size
:
"middle"
,
children
:
Object
(
g
.
jsx
)(
"a"
,{
onClick
:
function
(){
return
e
=
t
,
console
.
log
(
e
),
u
(
e
),
void
l
(
!
0
);
var
e
},
children
:
"
\
u66ff
\
u6362"
})})}}];
return
Object
(
c
.
useEffect
)((
function
(){
console
.
log
(
m
),(
null
===
m
||
void
0
===
m
?
void
0
:
m
.
type
)
&&
p
(
"/page/queryPage"
,{},
"queryPage"
).
then
((
function
(
e
){}))}),[]),
Object
(
g
.
jsxs
)(
g
.
Fragment
,{
children
:[
Object
(
g
.
jsx
)(
S
.
a
,{
visible
:
t
,
title
:
"
\
u9875
\
u9762
\
u7ba1
\
u7406"
,
okText
:
"
\
u786e
\
u5b9a"
,
cancelText
:
"
\
u53d6
\
u6d88"
,
width
:
"1000px"
,
onCancel
:
n
,
onOk
:
n
,
children
:
Object
(
g
.
jsx
)(
W
.
a
,{
columns
:
O
,
dataSource
:(
null
===
m
||
void
0
===
m
?
void
0
:
m
.
queryPage
)
&&
m
.
queryPage
,
pagination
:{
pageSize
:
10
},
size
:
"middle"
})}),
o
&&
Object
(
g
.
jsx
)(
X
,{
visible
:
o
,
onCancel
:
function
(){
return
l
(
!
1
)},
data
:
d
})]})},
V
=
n
(
73
),
Y
=
n
(
287
);
V
.
a
,
V
.
a
.
Item
,
V
.
a
.
Item
;
var
H
=
function
(
e
){
var
t
=
e
.
visible
,
n
=
e
.
onCancel
,
i
=
Object
(
c
.
useState
)(
!
1
),
a
=
Object
(
b
.
a
)(
i
,
2
),
o
=
a
[
0
],
l
=
a
[
1
],
r
=
Object
(
c
.
useState
)(
""
),
s
=
Object
(
b
.
a
)(
r
,
2
),
d
=
s
[
0
],
u
=
s
[
1
],
j
=
Object
(
c
.
useState
)(
""
),
p
=
Object
(
b
.
a
)(
j
,
2
),
m
=
p
[
0
],
O
=
p
[
1
],
A
=
Object
(
c
.
useContext
)(
h
),
f
=
A
.
fetchData
,
y
=
A
.
dataCenter
,
x
=
A
.
dispatch
,
v
=
function
e
(
t
,
n
){
return
t
.
map
((
function
(
t
,
c
){
var
i
=
n
(
t
);
return
t
.
children
&&
(
i
.
children
=
e
(
t
.
children
,(
function
(
e
){
return
{
isRemove
:
!
0
,
key
:
e
.
child_type_id
,
type_id
:
e
.
child_type_id
,
type_name
:
e
.
child_type_name
}}))),
i
}))},
E
=
function
(){(
null
===
y
||
void
0
===
y
?
void
0
:
y
.
type
)
&&
f
(
"/typeManage/queryTypeForManage"
,{},
"childTypeData"
).
then
((
function
(
e
){
var
t
=
v
(
e
.
data
,(
function
(
e
){
return
{
key
:
e
.
type_id
,
type_id
:
e
.
type_id
,
type_name
:
e
.
type_name
}}));
u
(
t
)}))};
Object
(
c
.
useEffect
)((
function
(){
E
()}),[]);
var
I
=
[{
title
:
"
\
u7c7b
\
u578b
\
u540d"
,
width
:
100
,
dataIndex
:
"type_name"
,
key
:
"type_name"
},{
title
:
"Id"
,
width
:
100
,
dataIndex
:
"type_id"
,
align
:
"center"
,
key
:
"type_id"
},{
title
:
"
\
u64cd
\
u4f5c"
,
width
:
100
,
key
:
"operation"
,
align
:
"center"
,
render
:
function
(
e
,
t
){
return
Object
(
g
.
jsxs
)(
Z
.
b
,{
size
:
"middle"
,
children
:[
t
.
isRemove
&&
Object
(
g
.
jsx
)(
Y
.
a
,{
title
:
"
\
u786e
\
u5b9a
\
u5220
\
u9664
\
u5417
\
uff1f"
,
okText
:
"
\
u786e
\
u5b9a"
,
cancelText
:
"
\
u53d6
\
u6d88"
,
onConfirm
:
function
(){
f
(
"/typeManage/deleteChildType"
,{
child_type_id
:
t
.
type_id
}).
then
((
function
(
e
){
e
.
success
?(
R
.
b
.
success
(
"
\
u522a
\
u9664
\
u6210
\
u529f"
),
x
({
type
:
"NEED_UPDATE_INDEX"
}),
E
()):
R
.
b
.
error
(
"
\
u522a
\
u9664
\
u5931
\
u8d25"
)}))},
children
:
Object
(
g
.
jsx
)(
"a"
,{
href
:
"#"
,
children
:
"
\
u5220
\
u9664"
})}),
Object
(
g
.
jsx
)(
"a"
,{
href
:
"#"
,
onClick
:
function
(){
return
O
(
t
),
void
l
(
!
0
)},
children
:
"
\
u4fee
\
u6539"
})]})}}];
return
Object
(
g
.
jsxs
)(
S
.
a
,{
visible
:
t
,
title
:
"
\
u7c7b
\
u578b
\
u7ba1
\
u7406"
,
okText
:
"
\
u786e
\
u5b9a"
,
cancelText
:
"
\
u53d6
\
u6d88"
,
width
:
"1000px"
,
onCancel
:
n
,
onOk
:
n
,
children
:[
Object
(
g
.
jsx
)(
W
.
a
,{
columns
:
I
,
dataSource
:
d
}),
o
&&
Object
(
g
.
jsx
)(
Q
,{
visible
:
o
,
onCancel
:
function
(){
return
l
(
!
1
)},
queryData
:
function
(){
return
E
()},
data
:
m
})]})};
var
_
=
function
(){
var
e
=
Object
(
c
.
useState
)(
!
1
),
t
=
Object
(
b
.
a
)(
e
,
2
),
n
=
t
[
0
],
i
=
t
[
1
],
a
=
Object
(
c
.
useState
)(
!
1
),
o
=
Object
(
b
.
a
)(
a
,
2
),
l
=
o
[
0
],
r
=
o
[
1
],
s
=
Object
(
c
.
useState
)(
!
1
),
d
=
Object
(
b
.
a
)(
s
,
2
),
u
=
d
[
0
],
j
=
d
[
1
],
p
=
Object
(
c
.
useState
)(
!
1
),
m
=
Object
(
b
.
a
)(
p
,
2
),
O
=
m
[
0
],
A
=
m
[
1
],
f
=
Object
(
c
.
useState
)(
!
1
),
h
=
Object
(
b
.
a
)(
f
,
2
),
y
=
h
[
0
],
x
=
h
[
1
];
return
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"admin"
,
children
:[
Object
(
g
.
jsx
)(
F
.
a
,{
onClick
:
function
(){
return
i
(
!
0
)},
children
:
"
\
u65b0
\
u5efa
\
u5de5
\
u5177
\
u76d2"
}),
Object
(
g
.
jsx
)(
F
.
a
,{
onClick
:
function
(){
return
j
(
!
0
)},
children
:
"
\
u65b0
\
u5efa
\
u7c7b
\
u578b"
}),
Object
(
g
.
jsx
)(
F
.
a
,{
onClick
:
function
(){
return
r
(
!
0
)},
children
:
"
\
u53d1
\
u5e03"
}),
Object
(
g
.
jsx
)(
F
.
a
,{
onClick
:
function
(){
return
A
(
!
0
)},
children
:
"
\
u9875
\
u9762
\
u7ba1
\
u7406"
}),
Object
(
g
.
jsx
)(
F
.
a
,{
onClick
:
function
(){
return
x
(
!
0
)},
children
:
"
\
u7c7b
\
u578b
\
u7ba1
\
u7406"
}),
n
&&
Object
(
g
.
jsx
)(
N
,{
visible
:
n
,
onCancel
:
function
(){
return
i
(
!
1
)}}),
l
&&
Object
(
g
.
jsx
)(
X
,{
visible
:
l
,
onCancel
:
function
(){
return
r
(
!
1
)}}),
u
&&
Object
(
g
.
jsx
)(
Q
,{
visible
:
u
,
onCancel
:
function
(){
return
j
(
!
1
)}}),
O
&&
Object
(
g
.
jsx
)(
L
,{
visible
:
O
,
onCancel
:
function
(){
return
A
(
!
1
)}}),
y
&&
Object
(
g
.
jsx
)(
H
,{
visible
:
y
,
onCancel
:
function
(){
return
x
(
!
1
)}})]})},
$
=
n
(
26
);
var
ee
=
function
(){
var
e
,
t
=
Object
(
$
.
f
)(),
n
=
Object
(
c
.
useContext
)(
h
),
i
=
n
.
fetchData
,
a
=
n
.
dataCenter
,
o
=
n
.
dispatch
;
return
Object
(
c
.
useEffect
)((
function
(){
i
(
"/query/queryType"
,{},
"type"
).
then
((
function
(){
return
i
(
"/query/queryChildType"
,{
type_id
:
a
.
type_id
},
"childType"
)})).
then
((
function
(){
return
o
({
type
:
"NEED_UPDATE_INDEX"
})}))}),[
a
.
type_id
]),
Object
(
c
.
useEffect
)((
function
(){
if
(
a
.
needUpdateIndex
){
var
e
=
"all"
===
a
.
type_id
?{}:
"follow"
===
a
.
type_id
?{
isFollow
:
!
0
,
type_id
:
JSON
.
stringify
(
a
.
userInfo
.
follow
)}:{
type_id
:
a
.
type_id
};
i
(
"/query/queryToolBox"
,
e
,
"toolBox"
).
then
((
function
(){
return
o
({
type
:
"NEED_UPDATE_INDEX"
})}))}}),[
a
.
needUpdateIndex
]),
Object
(
c
.
useEffect
)((
function
(){
i
(
"/users/getUser"
,{
uid
:
"100001"
},
"userInfo"
).
catch
((
function
(
e
){
return
70001
===
e
.
code
&&
t
.
push
(
"/login"
)}))}),[]),
Object
(
g
.
jsx
)(
y
.
Provider
,{
value
:{
hidePop
:
function
(){
return
setPop
(
""
)},
showPop
:
function
(
e
){}},
children
:
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"index"
,
children
:[
Object
(
g
.
jsx
)(
"div"
,{
className
:
"welcome-top"
,
children
:
Object
(
g
.
jsxs
)(
"span"
,{
children
:[
"
\
u6b22
\
u8fce
\
u60a8
\
uff01"
,
Object
(
g
.
jsx
)(
"span"
,{
className
:
"welcome-uname"
,
children
:
null
===
a
||
void
0
===
a
||
null
===
(
e
=
a
.
userInfo
)
||
void
0
===
e
?
void
0
:
e
.
uname
}),
Object
(
g
.
jsx
)(
"a"
,{
className
:
"login-btn"
,
children
:
"
\
u9000
\
u51fa
\
u767b
\
u5f55"
})]})}),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"nav"
,
children
:[
Object
(
g
.
jsx
)(
"div"
,{
className
:
"nav-title"
,
children
:
Object
(
g
.
jsx
)(
"img"
,{
src
:
v
,
alt
:
""
})}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"nav-weather"
,
children
:
Object
(
g
.
jsx
)(
"iframe"
,{
width
:
"360"
,
height
:
"40"
,
frameBorder
:
"0"
,
scrolling
:
"no"
,
hspace
:
"0"
,
src
:
"https://i.tianqi.com/?c=code&a=getcode&id=40&icon=1"
})})]}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"tool-nav"
,
children
:
Object
(
g
.
jsx
)(
I
,{})}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"container"
,
children
:
Object
(
g
.
jsx
)(
K
,{})}),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"index-footer"
,
children
:[
"
\
u5151
\
u5427
\
u7814
\
u53d1
\
u4e2d
\
u5fc3
\
xb7
\
u676d
\
u5dde
\
u5151
\
u5427
\
u7f51
\
u7edc
\
u79d1
\
u6280
\
u6e38
\
u620f
\
u516c
\
u53f8
\
u7248
\
u6743
\
u6240
\
u6709"
,
Object
(
g
.
jsx
)(
"br"
,{}),
"
\
u6d59ICP
\
u590714017299
\
u53f7-1"
]}),
Object
(
g
.
jsx
)(
_
,{})]})})};
n
(
272
),
n
(
273
);
var
te
=
function
(
e
){
var
t
,
n
,
i
=
Object
(
c
.
useContext
)(
h
).
dataCenter
;
return
Object
(
g
.
jsx
)(
"div"
,{
className
:
"content"
,
children
:(
null
===
(
t
=
i
.
toolBox
)
||
void
0
===
t
?
void
0
:
t
.
length
)?
null
===
i
||
void
0
===
i
||
null
===
(
n
=
i
.
toolBox
)
||
void
0
===
n
?
void
0
:
n
.
filter
((
function
(
e
){
return
"all"
===
i
.
child_type_id
||
e
.
child_type_id
===
i
.
child_type_id
})).
map
((
function
(
e
){
return
Object
(
g
.
jsx
)(
G
,{
value
:
e
},
e
.
toolbox_id
)})):
"
\
u6ca1
\
u6709
\
u6570
\
u636e
\
u4e86
\
uff01"
})};
var
ne
=
function
(){
var
e
,
t
=
Object
(
$
.
f
)(),
n
=
Object
(
c
.
useContext
)(
h
),
i
=
n
.
fetchData
,
a
=
n
.
dataCenter
,
o
=
n
.
dispatch
;
return
Object
(
c
.
useEffect
)((
function
(){
i
(
"/query/queryType"
,{},
"type"
).
then
((
function
(){
return
i
(
"/query/queryChildType"
,{
type_id
:
a
.
type_id
},
"childType"
)})).
then
((
function
(){
return
o
({
type
:
"NEED_UPDATE_INDEX"
})}))}),[
a
.
type_id
]),
Object
(
c
.
useEffect
)((
function
(){
if
(
a
.
needUpdateIndex
){
var
e
=
"follow"
===
a
.
type_id
?{
isFollow
:
!
0
,
type_id
:
JSON
.
stringify
(
a
.
userInfo
.
follow
)}:{
type_id
:
a
.
type_id
};
i
(
"/query/queryToolBox"
,
e
,
"toolBox"
).
then
((
function
(){
return
o
({
type
:
"NEED_UPDATE_INDEX"
})}))}}),[
a
.
needUpdateIndex
]),
Object
(
c
.
useEffect
)((
function
(){
i
(
"/users/getUser"
,{
uid
:
"100001"
},
"userInfo"
).
catch
((
function
(
e
){
return
70001
===
e
.
code
&&
t
.
push
(
"/login"
)}))}),[]),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"index"
,
children
:[
Object
(
g
.
jsx
)(
"div"
,{
className
:
"welcome-top"
,
children
:
Object
(
g
.
jsxs
)(
"span"
,{
children
:[
"
\
u6b22
\
u8fce
\
u60a8
\
uff01"
,
Object
(
g
.
jsx
)(
"span"
,{
className
:
"welcome-uname"
,
children
:
null
===
a
||
void
0
===
a
||
null
===
(
e
=
a
.
userInfo
)
||
void
0
===
e
?
void
0
:
e
.
uname
}),
Object
(
g
.
jsx
)(
"a"
,{
className
:
"login-btn"
,
children
:
"
\
u9000
\
u51fa
\
u767b
\
u5f55"
})]})}),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"nav"
,
children
:[
Object
(
g
.
jsx
)(
"div"
,{
className
:
"nav-title"
,
children
:
Object
(
g
.
jsx
)(
"img"
,{
src
:
v
,
alt
:
""
})}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"nav-weather"
,
children
:
Object
(
g
.
jsx
)(
"iframe"
,{
width
:
"360"
,
height
:
"40"
,
frameBorder
:
"0"
,
scrolling
:
"no"
,
hspace
:
"0"
,
src
:
"https://i.tianqi.com/?c=code&a=getcode&id=40&icon=1"
})})]}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"tool-nav"
,
children
:
Object
(
g
.
jsx
)(
I
,{})}),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"container"
,
children
:
Object
(
g
.
jsx
)(
te
,{})}),
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"index-footer"
,
children
:[
"
\
u5151
\
u5427
\
u7814
\
u53d1
\
u4e2d
\
u5fc3
\
xb7
\
u676d
\
u5dde
\
u5151
\
u5427
\
u7f51
\
u7edc
\
u79d1
\
u6280
\
u6709
\
u9650
\
u516c
\
u53f8
\
u7248
\
u6743
\
u6240
\
u6709"
,
Object
(
g
.
jsx
)(
"br"
,{}),
"
\
u6d59ICP
\
u590714017299
\
u53f7-1"
]})]})};
n
(
274
);
var
ce
=
function
(
e
){
var
t
=
Object
(
$
.
f
)(),
n
=
Object
(
c
.
useContext
)(
h
),
i
=
n
.
fetchData
,
a
=
n
.
dataCenter
,
o
=
Object
(
c
.
useState
)(
!
1
),
l
=
Object
(
b
.
a
)(
o
,
2
),
r
=
l
[
0
],
s
=
l
[
1
],
d
=
function
(){
var
e
=
arguments
.
length
>
0
&&
void
0
!==
arguments
[
0
]?
arguments
[
0
]:{},
t
=
Object
(
c
.
useState
)(
e
),
n
=
Object
(
b
.
a
)(
t
,
2
),
i
=
n
[
0
],
a
=
n
[
1
],
o
=
Object
(
c
.
useCallback
)((
function
(
e
,
t
){
a
((
function
(){
return
Object
.
assign
({},
Object
(
p
.
a
)({},
i
),
Object
(
j
.
a
)({},
e
,
t
))}))}),[
i
]);
return
[
i
,
o
]}(),
u
=
Object
(
b
.
a
)(
d
,
2
),
m
=
u
[
0
],
O
=
u
[
1
],
A
=
function
(){
i
(
"/users/getUser"
,{},
"userInfo"
).
then
((
function
(
e
){
return
e
.
data
.
uid
&&
t
.
push
(
"/"
)})).
catch
((
function
(
e
){
return
70001
===
e
.
code
&&
s
(
!
0
)}))},
f
=
function
(){
r
?
i
(
"/users/login"
,{
uid
:
m
.
uid
}).
then
((
function
(){
A
()})):
A
()};
return
Object
(
c
.
useEffect
)((
function
(){
a
.
userInfo
}),[
a
.
userInfo
]),
Object
(
c
.
useEffect
)((
function
(){
f
()}),[]),
Object
(
g
.
jsx
)(
"div"
,{
className
:
"login"
,
children
:
Object
(
g
.
jsxs
)(
"div"
,{
className
:
"loginDiv"
,
children
:[
r
&&
Object
(
g
.
jsx
)(
"input"
,{
type
:
"text"
,
onChange
:
function
(
e
){
return
O
(
"uid"
,
e
.
target
.
value
)},
defaultValue
:
m
.
uid
}),
Object
(
g
.
jsx
)(
"button"
,{
className
:
"btn-login"
,
onClick
:
function
(){
return
f
()},
children
:
"
\
u767b
\
u5f55"
})]})})},
ie
=
n
(
91
);
var
ae
=
function
(){
return
Object
(
c
.
useEffect
)((
function
(){
console
.
log
(
"%c+"
,
"font-size: 1px;
\n
padding: 122px 217px;
\n
background-image: url(https://yun.duiba.com.cn/spark/assets/cc8da992b527b3cd24da7df9a5be8b2361c2e549.jpg);
\n
background-size: contain;
\n
background-repeat: no-repeat;
\n
color: transparent;"
)}),[]),
Object
(
g
.
jsx
)(
ie
.
a
,{
children
:
Object
(
g
.
jsx
)(
x
,{
children
:
Object
(
g
.
jsxs
)(
$
.
c
,{
children
:[
Object
(
g
.
jsx
)(
$
.
a
,{
exact
:
!
0
,
path
:
"/login"
,
component
:
ce
}),
Object
(
g
.
jsx
)(
$
.
a
,{
exact
:
!
0
,
path
:
"/"
,
component
:
ne
}),
Object
(
g
.
jsx
)(
$
.
a
,{
exact
:
!
0
,
path
:
"/admin"
,
component
:
ee
})]})})})},
oe
=
function
(
e
){
e
&&
e
instanceof
Function
&&
n
.
e
(
3
).
then
(
n
.
bind
(
null
,
288
)).
then
((
function
(
t
){
var
n
=
t
.
getCLS
,
c
=
t
.
getFID
,
i
=
t
.
getFCP
,
a
=
t
.
getLCP
,
o
=
t
.
getTTFB
;
n
(
e
),
c
(
e
),
i
(
e
),
a
(
e
),
o
(
e
)}))};
u
.
a
.
locale
(
"zh-cn"
),
o
.
a
.
render
(
Object
(
g
.
jsx
)(
i
.
a
.
StrictMode
,{
children
:
Object
(
g
.
jsx
)(
l
.
a
,{
locale
:
s
.
a
,
children
:
Object
(
g
.
jsx
)(
ae
,{})})}),
document
.
getElementById
(
"root"
)),
oe
()}},[[
279
,
1
,
2
]]]);
//# sourceMappingURL=main.600ac631.chunk.js.map
\ No newline at end of file
build/static/js/main.600ac631.chunk.js.map
0 → 100644
View file @
51a6b4ff
{"version":3,"sources":["dataCenter/reducer.js","config/apiConfig.js","dataCenter/action.js","dataCenter/Root.jsx","static/logo.png","component/ToolType/ToolType.jsx","static/setting.svg","static/trash.svg","static/dragIcon.svg","modal/ToolModal.jsx","component/ContentAdmin/ContentItemAdmin.jsx","component/Content/ContentItem.jsx","static/followed.png","static/notFollow.png","component/ContentAdmin/Content.jsx","modal/PublishModal.jsx","modal/TypeModal.jsx","modal/PageModal.jsx","modal/RemoveType.jsx","component/AdminIndex/AdminIndex.jsx","page/indexAdmin/index.jsx","component/Content/Content.jsx","page/index/index.jsx","page/login/login.jsx","utils/hook.js","App.js","reportWebVitals.js","index.js"],"names":["initDataCenter","toolBox","type","childType","userInfo","needUpdateIndex","type_id","child_type_id","deepFreeze","obj","Object","getOwnPropertyNames","forEach","name","prop","freeze","dataReducer","state","action","console","table","assign","data","apiConfig","domain","window","location","hostname","CHANGE_TYPE","Root","createContext","PopContext","DataCenter","props","useReducer","dataCenter","dispatch","Provider","value","fetchData","path","requestData","dataName","fetch","paramsStr","keys","map","v","i","join","log","generateUrl","credentials","then","res","json","success","catch","e","error","children","ChildTypeItem","useContext","child_type_name","classNameArr","push","className","onClick","CHANGE_CHILD_TYPE","ToolType","length","type_name","Option","Select","ToolModal","visible","onCancel","Form","useForm","form","useEffect","title","okText","cancelText","onOk","validateFields","values","input","toolbox_name","toolbox_icon","icon","toolbox_desc","depict","toolbox_url","url","message","onCreate","info","labelCol","span","wrapperCol","initialValues","Item","label","rules","required","placeholder","onChange","setFieldsValue","allowClear","ContentItemAdmin","useState","setVisible","showPop","toolbox_id","follow","itemIcon","setItemIcon","jumpUrl","href","src","dragIcon","alt","setting","trash","deleteItem","onError","ContentItem","isFollow","setIsFollow","includes","_follow","slice","index","indexOf","splice","JSON","stringify","uid","Content","filter","PublishModal","code","setcode","page_name","setPageName","oldCode","method","headers","body","page_id","response","width","defaultValue","target","editor","options","styleActiveLine","lineNumbers","theme","tabSize","keyMap","mode","smartIndent","lineWrapping","autofocus","TypeModal","Tabs","TabPane","queryData","React","setValue","isRemove","modifier","Group","hasFeedback","PageModal","onPublish","publish","setPublish","pageData","setpageData","columns","dataIndex","align","render","text","record","size","pageUrl","key","dataSource","queryPage","pagination","pageSize","RemoveType","typeModal","setTypeModal","typeData","settypeData","oldData","setoldData","changeData","list","cb","item","newData","onConfirm","AdminIndex","pageModal","setpageModal","removeType","setremoveType","Index","history","useHistory","_typeId","hidePop","setPop","popName","uname","logo","height","frameBorder","scrolling","hspace","Login","needLogin","setNeedLogin","setInput","setInputData","useCallback","useFormState","getUser","doLogin","App","exact","component","IndexAdmin","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","moment","locale","ReactDOM","StrictMode","zhCN","document","getElementById"],"mappings":"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","file":"static/js/main.600ac631.chunk.js","sourcesContent":["const initDataCenter = {\r\n toolBox: null,\r\n type: null,\r\n childType: null,\r\n userInfo: null,\r\n needUpdateIndex: false,\r\n type_id: 'follow',\r\n child_type_id: 'all'\r\n}\r\n\r\n/**\r\n * deepFreeze()\r\n * @param obj\r\n * @returns {unknown[]}\r\n */\r\nfunction deepFreeze(obj) {\r\n // 取回定义在obj上的属性名\r\n let propNames = Object.getOwnPropertyNames(obj);\r\n\r\n // 在冻结自身之前冻结属性\r\n propNames.forEach(function (name) {\r\n let prop = obj[name];\r\n\r\n // 如果prop是个对象,冻结它\r\n if (typeof prop == 'object' && prop !== null)\r\n deepFreeze(prop);\r\n });\r\n\r\n // 冻结自身(no-op if already frozen)\r\n return Object.freeze(obj);\r\n}\r\n\r\n//任何修改原始对象的操作都是禁止的!\r\ndeepFreeze(initDataCenter)\r\n\r\nconst dataReducer = (state, action) => {\r\n // console.log(action)\r\n console.table(action,['dataCenter的dispatch'])\r\n switch (action.type) {\r\n case 'UPDATE_DATA':\r\n return Object.assign({}, state, {\r\n ...action.data\r\n })\r\n case 'NEED_UPDATE_INDEX':\r\n return Object.assign({}, state, {needUpdateIndex: !state.needUpdateIndex})\r\n case 'CHANGE_TYPE':\r\n return Object.assign({}, state, {type_id: action.type_id})\r\n case 'CHANGE_CHILD_TYPE':\r\n return Object.assign({}, state, {child_type_id: action.child_type_id})\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport {\r\n initDataCenter,\r\n dataReducer,\r\n}\r\n","const apiConfig = {\r\n domain: 'http://' + window.location.hostname + ':3000',\r\n}\r\n\r\nexport default apiConfig\r\n","const UPDATE_DATA = data => ({type: 'UPDATE_DATA', data: {...data}})\r\nconst NEED_UPDATE_INDEX = () => ({type: 'NEED_UPDATE_INDEX'})\r\nconst CHANGE_TYPE = type_id => ({type: 'CHANGE_TYPE', type_id: type_id})\r\nconst CHANGE_CHILD_TYPE = child_type_id => ({type: 'CHANGE_CHILD_TYPE', child_type_id: child_type_id})\r\n\r\nexport {\r\n UPDATE_DATA,\r\n NEED_UPDATE_INDEX,\r\n CHANGE_TYPE,\r\n CHANGE_CHILD_TYPE\r\n}\r\n","import React, {createContext, useReducer} from \"react\";\r\nimport {dataReducer, initDataCenter} from \"./reducer\";\r\nimport apiConfig from \"../config/apiConfig\";\r\nimport {UPDATE_DATA} from \"./action\";\r\n\r\nconst Root = createContext({})\r\nconst PopContext = createContext({})\r\n\r\nfunction DataCenter(props) {\r\n const [dataCenter, dispatch] = useReducer(dataReducer, initDataCenter, () => {\r\n return initDataCenter\r\n })\r\n\r\n const generateUrl = (path, requestData) => {\r\n if (requestData) {\r\n const keyArr = Object.keys(requestData)\r\n const paramsStr = keyArr.map((v, i) => {\r\n if (i === 0) {\r\n return '?' + v + '=' + requestData[v]\r\n } else {\r\n return '&' + v + '=' + requestData[v]\r\n }\r\n }).join('')\r\n console.log('发送请求:', apiConfig.domain + path + paramsStr)\r\n return apiConfig.domain + path + paramsStr\r\n }\r\n return apiConfig.domain + path\r\n }\r\n\r\n const fetchData = (path, requestData, dataName) =>\r\n fetch(generateUrl(path, requestData), {credentials: 'include'})\r\n .then(res => res.json())\r\n .then(res => {\r\n console.log(res);\r\n if (res.success) {\r\n !!dataName && dispatch(UPDATE_DATA({[dataName]: res.data}))\r\n } else {\r\n throw res\r\n }\r\n return res\r\n })\r\n .catch(e => {\r\n console.error(e)\r\n throw e\r\n })\r\n\r\n\r\n return (\r\n <Root.Provider value={{dataCenter, dispatch, fetchData}}>\r\n {\r\n props.children\r\n }\r\n </Root.Provider>\r\n )\r\n}\r\n\r\nexport {\r\n Root,\r\n PopContext,\r\n}\r\nexport default DataCenter\r\n\r\n","export default __webpack_public_path__ + \"static/media/logo.c725c5d1.png\";","import './ToolType.scss'\r\nimport {useContext} from \"react\";\r\nimport {Root} from \"../../dataCenter/Root\";\r\nimport {CHANGE_CHILD_TYPE, CHANGE_TYPE} from \"../../dataCenter/action\";\r\n\r\nconst ChildTypeItem = props => {\r\n const {dataCenter, dispatch} = useContext(Root)\r\n const {child_type_id, child_type_name} = props\r\n const classNameArr = ['child-type-item']\r\n if (child_type_id === dataCenter.child_type_id) {\r\n classNameArr.push('child-type-item-selected')\r\n }\r\n const handleClick = () => {\r\n console.log(child_type_id)\r\n dispatch(CHANGE_CHILD_TYPE(child_type_id))\r\n }\r\n return (\r\n <div className={classNameArr.join(' ')} onClick={handleClick}>{child_type_name}</div>\r\n )\r\n}\r\n\r\n\r\nfunction ToolType(props) {\r\n const {dataCenter, dispatch} = useContext(Root)\r\n return (\r\n <>\r\n <div className=\"tab-tool-type\">\r\n <div className={dataCenter.type_id === 'follow' ? 'item-tool-type item-tool-type-selected' : 'item-tool-type'}\r\n onClick={() => dispatch(CHANGE_TYPE('follow'))}>我的收藏\r\n </div>\r\n {\r\n dataCenter?.type?.length > 0 && dataCenter.type.map(v => {\r\n const classNameArr = ['item-tool-type ']\r\n if (v[\"type_id\"] === dataCenter.type_id) classNameArr.push('item-tool-type-selected')\r\n return (\r\n <div key={v[\"type_id\"]} className={classNameArr.join('')}\r\n onClick={() => dispatch(CHANGE_TYPE( v[\"type_id\"]))}>{v.type_name}</div>\r\n )\r\n })\r\n }\r\n </div>\r\n <div className=\"child-type\">\r\n <ChildTypeItem key={'all'} child_type_id={'all'} child_type_name={'全部'}/>\r\n {\r\n dataCenter?.childType?.length > 0 && dataCenter?.childType.map(v => {\r\n return (\r\n <ChildTypeItem key={v.child_type_id} child_type_id={v.child_type_id}\r\n child_type_name={v.child_type_name}/>\r\n )\r\n })\r\n }\r\n </div>\r\n </>\r\n )\r\n}\r\n\r\nexport default ToolType\r\n","export default __webpack_public_path__ + \"static/media/setting.6a716d85.svg\";","export default __webpack_public_path__ + \"static/media/trash.780a90e8.svg\";","export default __webpack_public_path__ + \"static/media/dragIcon.268403b1.svg\";","import React, { useState, useEffect, useContext } from 'react';\r\nimport { Root } from \"../dataCenter/Root\";\r\nimport { Button, Modal, Form, Input, Radio, Select, message } from 'antd';\r\nimport { NEED_UPDATE_INDEX } from \"../dataCenter/action\";\r\nconst { Option } = Select;\r\nconst ToolModal = ({ visible, onCancel, data }) => {\r\n const [form] = Form.useForm();\r\n const { fetchData, dataCenter, dispatch } = useContext(Root)\r\n const formItemLayout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 18 },\r\n };\r\n const onCreate = (values) => {\r\n let input = {\r\n toolbox_name: values.name,\r\n toolbox_icon: values.icon,\r\n toolbox_desc: values.depict,\r\n toolbox_url: values.url,\r\n\r\n }\r\n if (!data) {\r\n input = {\r\n ...input,\r\n type_id: values.type,\r\n child_type_id: values.childType\r\n }\r\n console.log(input);\r\n fetchData('/add/addToolBox', input)\r\n .then((res) => {\r\n if (res.success) {\r\n message.success('新建成功')\r\n dispatch(NEED_UPDATE_INDEX())\r\n onCancel()\r\n } else {\r\n message.error('新建失败')\r\n }\r\n })\r\n\r\n } else {\r\n fetchData('/update/updateToolBox', input)\r\n .then((res) => {\r\n if (res.success) {\r\n message.success('修改成功')\r\n dispatch(NEED_UPDATE_INDEX())\r\n onCancel()\r\n } else {\r\n message.error('新建失败')\r\n }\r\n })\r\n }\r\n };\r\n\r\n const onGenderChange = (value) => {\r\n form.setFieldsValue({\r\n type: value,\r\n });\r\n fetchData('/query/queryChildType', { type_id: value }, 'childType')\r\n .then((res) => {\r\n\r\n console.log(res);\r\n })\r\n console.log(dataCenter);\r\n };\r\n const onChildGenderChange = (value) => {\r\n form.setFieldsValue({\r\n childType: value,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n dataCenter?.type && fetchData('/query/queryChildType', { type_id: dataCenter?.type[0]?.type_id }, 'childType')\r\n .then((res) => {\r\n\r\n console.log(res);\r\n })\r\n }, [])\r\n\r\n return (\r\n <Modal\r\n visible={visible}\r\n title={data ? '修改工具箱' : '新建工具箱'}\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n onCancel={onCancel}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then((values) => {\r\n // form.resetFields();\r\n onCreate(values);\r\n })\r\n .catch((info) => {\r\n console.log('Validate Failed:', info);\r\n });\r\n }}\r\n >\r\n <Form\r\n form={form}\r\n // layout=\"vertical\"\r\n {...formItemLayout}\r\n name=\"form_in_modal\"\r\n initialValues={data ? {\r\n name: data.toolbox_name,\r\n icon: data.toolbox_icon,\r\n url: data.toolbox_url,\r\n depict: data.toolbox_desc,\r\n } : { type: dataCenter?.type && dataCenter?.type[0]?.type_id }}\r\n >\r\n <Form.Item\r\n name=\"name\"\r\n label=\"名称\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '请输入名称!',\r\n },\r\n ]}\r\n >\r\n <Input placeholder=\"请输入名称\" />\r\n </Form.Item>\r\n <Form.Item name=\"icon\"\r\n label=\"图标\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '请输入图标url!',\r\n },\r\n ]}\r\n >\r\n <Input placeholder=\"请输入图标url\" />\r\n </Form.Item>\r\n <Form.Item\r\n name=\"depict\"\r\n label=\"描述\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '请输入描述!',\r\n },\r\n ]}\r\n >\r\n <Input placeholder=\"请输入描述\" />\r\n </Form.Item>\r\n <Form.Item\r\n name=\"url\"\r\n label=\"链接\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '请输入链接!',\r\n },\r\n ]}\r\n >\r\n <Input placeholder=\"请输入链接\" />\r\n </Form.Item>\r\n {!data && <Form.Item\r\n name=\"type\"\r\n label=\"类型\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '请选择类型!',\r\n },\r\n ]}\r\n >\r\n <Select\r\n placeholder=\"请选择类型\"\r\n onChange={onGenderChange}\r\n // allowClear\r\n >\r\n {\r\n dataCenter?.type?.length && dataCenter?.type.map(v => {\r\n return (\r\n <Option key={v.type_id} value={v.type_id}>{v.type_name}</Option>\r\n )\r\n })\r\n }\r\n\r\n </Select>\r\n </Form.Item>}\r\n {!data && dataCenter?.childType && <Form.Item\r\n name=\"childType\"\r\n label=\"子类型\"\r\n >\r\n <Select\r\n placeholder=\"请选择子类型\"\r\n onChange={onChildGenderChange}\r\n allowClear\r\n >\r\n {\r\n dataCenter?.childType?.length && dataCenter?.childType.map(v => {\r\n return (\r\n <Option key={v.child_type_id} value={v.child_type_id}>{v.child_type_name}</Option>\r\n )\r\n })\r\n }\r\n\r\n </Select>\r\n </Form.Item>}\r\n </Form>\r\n </Modal>\r\n );\r\n};\r\nexport default ToolModal\r\n","import './ContentItem.scss'\r\nimport notFollow from '../../static/notFollow.png'\r\nimport followed from '../../static/followed.png'\r\nimport setting from '../../static/setting.svg'\r\nimport trash from '../../static/trash.svg'\r\nimport dragIcon from '../../static/dragIcon.svg'\r\nimport {useContext, useState} from \"react\";\r\nimport {PopContext, Root} from \"../../dataCenter/Root\";\r\nimport ToolModal from \"../../modal/ToolModal\"\r\n\r\nfunction ContentItemAdmin(props) {\r\n const [visible, setVisible] = useState(false)\r\n\r\n const {fetchData} = useContext(Root)\r\n const {showPop} = useContext(PopContext)\r\n\r\n const {toolbox_icon, toolbox_name, toolbox_desc, toolbox_url, follow, toolbox_id} = props.value\r\n\r\n const [itemIcon, setItemIcon] = useState(toolbox_icon)\r\n\r\n const jumpUrl = url => {\r\n window.location.href = url\r\n }\r\n const deleteItem = toolbox_id => {\r\n fetchData('/delete/deleteToolBoxById', {toolbox_id})\r\n }\r\n\r\n return (\r\n <div className=\"content-item\">\r\n <div className=\"content-adminTool\">\r\n <img src={dragIcon} alt=\"\"/>\r\n <img src={setting} alt=\"\" onClick={() => setVisible(true)}/>\r\n <img src={trash} alt=\"\" onClick={() => deleteItem(toolbox_id)}/>\r\n </div>\r\n <div className=\"item-icon\" onClick={() => jumpUrl(toolbox_url)}>\r\n {\r\n !itemIcon && <div className=\"defaultIcon\">{toolbox_name[0]}</div>\r\n }\r\n {\r\n itemIcon && <img src={itemIcon} alt='' onError={e => setItemIcon(null)}/>\r\n }\r\n </div>\r\n <div className=\"item-name\" onClick={() => jumpUrl(toolbox_url)}>{toolbox_name}</div>\r\n <div className=\"item-desc\">{toolbox_desc}</div>\r\n <a className='item-url' href={toolbox_url}>{toolbox_url}</a>\r\n {/*<div className=\"follow\">*/}\r\n {/* <img className='icon-follow' src={follow ? followed : notFollow} alt=\"\"/>*/}\r\n {/* 收藏*/}\r\n {/*</div>*/}\r\n {visible && <ToolModal\r\n visible={visible}\r\n onCancel={() =>\r\n setVisible(false)\r\n }\r\n data={props.value}\r\n />}\r\n </div>\r\n\r\n )\r\n}\r\n\r\nexport default ContentItemAdmin\r\n","import './ContentItem.scss'\r\nimport notFollow from '../../static/notFollow.png'\r\nimport followed from '../../static/followed.png'\r\nimport {useContext, useEffect, useState} from \"react\";\r\nimport {Root} from \"../../dataCenter/Root\";\r\n\r\nfunction ContentItem(props) {\r\n const {dataCenter, fetchData} = useContext(Root)\r\n const {toolbox_icon, toolbox_name, toolbox_desc, toolbox_url, toolbox_id} = props.value\r\n const [isFollow, setIsFollow] = useState(false)\r\n const [itemIcon, setItemIcon] = useState(toolbox_icon)\r\n\r\n const jumpUrl = url => window.location.href = url\r\n\r\n const follow = () => {\r\n const _follow = dataCenter.userInfo.follow.slice()\r\n if (!isFollow) {\r\n _follow.push(toolbox_id)\r\n } else {\r\n const index = _follow.indexOf(toolbox_id)\r\n _follow.splice(index, 1)\r\n }\r\n console.log( {follow: JSON.stringify(_follow), uid: dataCenter.userInfo.uid})\r\n fetchData('/users/follow', {follow: JSON.stringify(_follow), uid: dataCenter.userInfo.uid})\r\n .then(() => fetchData('/users/getUser', {uid: 100001}, 'userInfo'))\r\n }\r\n\r\n useEffect(() => {\r\n if (dataCenter.userInfo?.follow.includes(toolbox_id)) {\r\n setIsFollow(true)\r\n } else {\r\n setIsFollow(false)\r\n }\r\n }, [dataCenter.toolBox, dataCenter.userInfo])\r\n\r\n return (\r\n <div className=\"content-item\">\r\n <div className=\"item-icon\" onClick={() => jumpUrl(toolbox_url)}>\r\n {\r\n !itemIcon && <div className=\"defaultIcon\">{toolbox_name[0]}</div>\r\n }\r\n {\r\n itemIcon && <img src={itemIcon} alt='' onError={e => setItemIcon(null)}/>\r\n }\r\n\r\n </div>\r\n <div className=\"item-name\" onClick={() => jumpUrl(toolbox_url)}>{toolbox_name}</div>\r\n <div className=\"item-desc\">{toolbox_desc}</div>\r\n <a className='item-url' href={toolbox_url}>{toolbox_url}</a>\r\n <div className=\"follow\">\r\n <img className='icon-follow' src={isFollow ? followed : notFollow} alt=\"\" onClick={() => follow()}/>\r\n 收藏\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ContentItem\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOUAAADICAYAAAAX+yb+AAAAAXNSR0IArs4c6QAAHypJREFUeF7tXQuUZEWRjXg1Q6OIIossLrgIDsN0ZWR14/CRjyvoqIAgoOCigiIqHFFRQUSQ9QMqoKKy4gcU+YkujvIT0eWjqCiItsxU5queBtQBUVRQ1AERpuvFnsQathmmu94n8tWrqsxz+syc0xk3Im6+2/k+mZEIoQUGAgOVYgArFU0IJjAQGIAgynARBAYqxkAQZcUGJIQTGAiiDNdAYKBiDARRVmxAQjiBgSDKcA0EBirGwFCJcmxsbPPp6eltEXEhIm6bJIn7/5NmGxNmvi+KoruZ+bfup1arPfr/hx566Ld33HHHwxUby0qFs2DBgqeuv/76myPi5u12e4soijYHAPezBQBsOEewf2Lm26Mouq3dbt8+b96825rN5h8rlZznYAZWlES0CwC82ImPmbcFgIUA8BQpPhExZuab3Q8iLttkk02W3XDDDdNS+P2Es/POOz9p1apVOzHzjoi4EwC4HydAqfZXALjNiRURb0PES40xRgq8ajgDI0oieo4TIQAsAYA9AGDjksn+GwDcAgDLmPm6OI7/t2T/pbrTWu+VJMkSRNweAHYAgFnvODwFdjszX4qI37XW3uDJR09g+1qUSqk9oyjanZmdCHfsCYOzO20BwLcR8dvGmB9ULLZc4TghMvNeAOB+FuQC8WP0G8c1M18fRdH1xpj7/bgpB7UvRUlE+wDAEQCwbzk0FfbyC2Z2Ar3SWvvzwmglAlRYiLOx8HsAOK9Wq52/fPny20qkSsxVX4myD8W4roH6CiJeYIy5TmwUPQA1Go0DmfmNzLynB/gyIP+OiOcx8/n99oewL0Q5IGJc+0K8ipkviOP4G2VcoWl9ENGhAHA4AOye1qYP+l3EzOfFcfz9Poi12mtfG43Gi5IkeUcf3abmGfMbO+L8Uh5jKRul1JsR0YnxeVKYVcNh5isA4Myqi7OSM+XChQs3mT9//gmIeEzVBtZjPN8CgJPLvtWq1+vjURR9AAD295hbpaAR8cPrrbfeyRMTE6srFVgnmMqJUin1OkQ8AQAWVZEwzzG556CTjTGne/bzKLxS6p2I6AS5URn+KubjJ8x8chU/XVVGlEqpsY4Y/7Nig9eLcK5NkuSUVqv1Ix/Oh3F2nI1HRPxYu912XD/gg+s8mJUQJRG5mdH9zLX8Kk9+/WyTdG5nPySZxJDPjrNROdGZNa+U5DovVk9F2Wg0tkiS5PMA4L47hrZuBr5urS1897D77rvPu++++84CgCMD0etmgJlPj+P4vb3mp2eirNfrO0VR5N44Uq9J6AP/FhH3M8b8Kk+so6Oj29RqtS8DwG557IfJBhG/YYw5qJc590SUSqlXuuR7mXgf+k6Yee+sLyaI6CUAMNDrcKXHEhFvfeSRR/aZmpr6nTR2GrzSRUlEJwLAR9IEV2KfhwDAPei7n1Wdf92Okm16sNC6W9pHW2s/062T+71S6owKflb6MyLe3on/Kczs3iM4rt3PemnyKqnP3xBxT2PMTSX5e8xNqaJUSl2HiC8qO8mOPwsAlplXIuKd7t8oilauWrVq5cqVK/8xW0xuD2a73d6GmRe4bWAA0ACAMQD41x7l4dy+z1r70bn8E5FbvdLLVTl3A0DT7ZxBxDva7fYdToxxHP95trgXL178tIcffnhLAPh3Zt4SER/9PwDUAUD3gm9mfnUcx/9Tpu/SRElEXGZiAOBu99yFeW273b5sxYoVoouTO1vFnEDdj3tR5bYwldneYa3973U5JKJrO1vYyozHLbR3SwdtrVb7RbPZ/LWk8/Hx8WdPT0+7dbh7I+LezFyTxJ8Ly32qM8acVpq/MhwRkdta43ace2/M7F5rXzo9PX1tmc8EWuv/YGYnTvcz6j3Rfzo4ylrr3l4/1ojo6wBQ1ouKSSdERLzKGPPDknKGRqOxaZIkL2HmgxDx5WX4ZebXx3F8YRm+vM+USim3M9/tRPfdLgGAc621bpboaVNK7RtF0VFl7LBAxGONMZ90CSulzkZEt6XNa3Mbi5Mk+Vwcx25pYE8bEbmN7W8EgMKfjbolwsy7xXH84279iv7eqyiJyL1hfWXRIOeyd1tzmPncVqt1o08/ebCVUge72QwRn5/HPoPNSe6FCSIen8Emc1dmdiuMnBhLfcZKE2i9Xt8NEd+IiIel6Z+3DyI2fJci8SZKIjoTAI7Om3wKu8vdwmJjzESKvj3tQkRu98XbAWC8p4HkdO4+ETDzWdZa962z0k1rvZiZT/K4wP7+dru93eTk5J2+iPAiSiI6DgA+5inovzDzh+I4/rQnfC+wnepu/wUA7/biwA/oamY+rVarnd5sNh/048IPqs/lhO6OIYoit5jDS9kRcVEqpV6DiBf7oRouT5LkQ61Wa5knfO+wSqmXIqL7S1711TWXJUlyWqvVcsXA+rJ5Xnj/rdHR0QOWLl3aliZHVJRa662Z+XsA4L4vSba/M/P7+m12nIOAGhE5YX5QkiQhLPfX/939cKuaNt/OrOnu3OantUnTDxE/ZYwR3/MrKkoiuggADkmTUIY+7vuX+yb3kww2fdG1Xq8fFkWRWyS+QUUCds/nh1tr3Uf/gWpaa/dt0z0TSy/62Ndae5UkWWKi1FofwcxnSwYHABclSXJUlfa6CecH22233b9NT09fw8xKGjsj3lJr7asy2vRV987C/Ms7K4SkYv/ZyMjI7hMTE3+XAhQRJRG5j+XutnUzqcAA4ERr7amCeJWGIqLPus8nvQiyKluWysqdiNynHbFnemn+pEQpuooEEfc3xrgiR0PViOgTAHBsyUmfYa3tpzfCIvRorT/JzO8SAfsnyEuttddI4BUWJRG572/rXIOZJ0BEPMQY4+vtbZ6QSrUhIrfH1K1QKaO5FVBvKsNRFX0I353cODo6urvE29hCouy8cna3rU+XIN19E4vj2JUFGeqmlHILI/bzTMKl1lqvq608xy8Cr7W+gplF1s92Soq4QmSFWiFREpF7m/WGQhF0jJn5nDiOQ6kKt+3kn2VSrva1XQkRv2eM6dUWOonLRQxj8eLF8x9++OGbAeC5EqDuwKOiq8xyi5KI3F49qYrTF1lrXydByqBgKKV2RUS34FvkLmQGL7+11payY6dfxqJer6soity1/IyiMUtMLrlFqbVeyswHFk0CAC6z1r5CAGfgIIjIfaJwu1/EmrU295iLBVFBICJy1+A3JUIrOlvmGiC3NcmdICWQwG8RcYkxZoUA1kBCaK2PYeYzJJJrt9sLJycn15TikIAcKAyt9aeY+Z1Fkyo6W+YSJRG5QkyuIFOhVubG0UKB9tiYiNwSMbfIP3dDxAOMMe7DeWizMDA+Pr7R9PS0u40tvJunyGyZWZRa69cy81eKjiwzfzaO47cVxRkW+4Iv1brW9BkWHrvlqbXen5kv69av2++LzJaZRUlEbg3qzt2C6vL7W1avXr1kamrKVY4LLSUDROQeGTIdlMvMX43j+LUpXYRu7pW30G1s3tkykyg7ZxcWrlMSRdGSZrN5fbgCsjNAROd2zo9MY/xNa63Ey7g0vgamj9RtbN7ZMqsoJcp7fNlaW9aKlYG5UGYm0jlL8pw5klvFzB+J47iU07sGkWShDRZ/fOCBB7acq4TpurhLLUqllKt76qqXzSs4CLsO4jasgpxkNu9UPt+BmXcAAPfzCADcAAA/Z+Yf9/NG8MxkeDIgIrdtcHEReGbeL47jTF8qUouSiNxCabdgOndDxK8aY8LzTW4Gg2GZDAjNlmdaazN9ZkktSqXUD4tWZQvPkmVeUsGXBAMCs6W11maq7p5KlFrrnZm56M7/sHJH4ioJGKUyIDFbIuJolgUyaUV5GjMXrSkqXjah1NEJzoaWASK6CwCelZcAt28zS32pVKIkIveCZ1HeoADgRmut74LEBcILpoGB2Rkgoq8BgCusnau5ivLGmL3SGncVpdZaM3PRQkpPOPMibYChX2Cg1wxord/GzKmOH5wt1iwbAdKI8jXMXKQSwF0jIyONiYmJv/aa3OA/MJCHgc7nwEIL+RHxOWlP4u4qSqXUqYiY+xx4RPyiMcb7oTN5yA42gYG0DBCR28nkzifN1RDxxcaY69IYdxVl0R0hYSdImmEIfarOABG5OlSuHlWuhohHGmPmWoX1GG4aUf4JADbOFQkAZJm28/oIdoEB3wwopd7k7vry+slShnJOUXaK1xY5AflX1trn5E0k2AUGqsKAQPmb1MWu5xSlO18REd3r4FwNEb9hjCnrVOFcMQajwEAaBsbGxjZvt9t3p+k7S58Ja+32aey7ifJkRHTHt+VqnfMjc9vnchqMAgOeGCAidzTBk3LC32+tTfUYOKcoi5ahGPbCyjkHL5hVlAEiWu4qgOYNL+23ym4z5WcQMXfJjiiKFjebzV/kTSLYBQaqxAARufo9rrRqriYiSiJyb5tyl7UfGRnZQPI0olxMBKPAgBADVRGlK5CVe/9j2r8MQpwFmMCAVwaqIspC5T+CKL1eIwG8ZAaqIspvA8DeeXMPoszLXLCrIgOVEKXW+npmfmFegoIo8zIX7KrIQCVEmafO6EwygyireGmFmPIyQET3A8BGee3T6qHbd8oLACD3aViIuLExxiUSWmCgrxkYGxtb2G63p/ImgYixMYbS2HcT5acB4B1pgGbps4O11pXpCy0w0NcMKKVe7aoxFkhCZu0rEblTaT9YIJCDrbWiR7kViCWYBgZyM0BEHwGAE3MDAHzQWvuhNPbdZsqjAeDMNECz9AkHyxQgL5hWhwEicof+7J83IkR8lTFmaRr7bqI8FACKnB1yrrU294qgNAmEPoEB3wwopTZGRFcOJNWC8nXFw8wqjuNWmli7iXIfAHBHfOdtN1hr98hrHOwCA1VgQOL4x7RvXl2+c4qyXq+PR1F0axFikiTZsNVqPVAEI9gGBnrJABEVWm6a5c1rV1G6DkW/zSDi/saYK3pJavAdGMjLgMStKwB8zlr71rQxpKnRU+gBFwA+b609Km1AoV9goEoMSNy6AsAe1lp3Ilqq1lWUSql3IuKnUqGtu9OvrbVbF7APpoGBnjGglLoaEVNXN19HoHdaa5+dJYE0otwVEW/MArp23yRJnt9qtQphFPEfbAMDeRggokMA4KI8tmtsmPmsOI4zlabsKsp6vb5eFEV/KLLmzy1ASPvhtAgBwTYwIMhAREQ3dw7kLQKb6dbVOeoqSteJiApt4ULE301PT28/OTl5T5Hsgm1goCwGBB7bXKhNa+1Y1pjTirLocjsXV5gts45O6N8TBhqNxqZJkrhZcqsiAeSt5phKlFrrRcxsAGBe3iDDbJmXuWBXNgNKqU8i4ruK+kXE7Y0xE1lxUomycwtb6ANqJ7AwW2YdodC/VAaI6GUAcFVRp8x8ThzHR+bBySLKokvu3Lki4dkyzygFm1IYWLBgwcjIyMgPEHGnog7zzpKpX/SsCVBrfTMzFw04zJZFRzzYe2GAiD4MAO8rCl5klswsSqXUuxDxk0WDTpJkSavVur4oTrAPDEgxoJTaAxG/J4FXZJbMLMrR0dFn1mo1W2QLSyfpHydJ8sJWq/WIBAkBIzBQhIF6vb5ZFEVuN1SqA3jm8lV0lswsys4Ln88CQOG1rMx8WhzHJxQhM9gGBiQYKLqBeWYMRWfJXKJsNBrU+YazQVFCEPFlxpiri+IE+8BAXgaUUuch4mF57dcS5KeNMcU/peQJRqBeyRq3E6tXr95jampqVZ44gk1goAgDRORK3biSNxJt2bx58/ZYtmzZX4qCpf4kMtOR1IqHR6dqRJG/LkWJCPbDxYDW+hRmPkkqa0Q8wBhzuQReLlF2ni1d6UlXgrJwQ8QPGGNOLgwUAAIDKRgQWtf6mCfpiSW3KF1ESqmbJT60Oixmfn8cx6ek4DR0CQzkZkBiO9ZazsVuW9fgFhVl0QK1a5N7krXW1dcMLTAgzoBSak9E/I4ksORtq4goO7exlwLAAYKJnmitPVUQL0AFBkBrvZiZRav1S9+2ioly0aJFC+fNm3cNAGwpNfaI+F5jzOlSeAFnuBkYHR3dslarrRRm4Vujo6MHLF26tC2Mm26TczenSqmDEfFr3fpl+T0zHx/H8cey2IS+gYG1GWg0GhskSSJd4vQGRHyFr8OrCj1TziSAiJyAjhO+LI6z1n5CGDPADREDRMTC6d6bJMn2rVbrLmHcx+DERAkAkVLqWkTMfcjsupJExGONMYUXwfsiMOBWlwEiug8A/kUywna7rScnJ936b29NUpSulo9b0HttwSJbT0iWmY+J47hImUtvBAbgajJARJMAsEgyOkTcxRhzkyTmOiciaQda6yOY+WxpXAB4p7W2yAlgHkIKkFVkgIh+BAC7ScaW5dSson5FZ8o1wQicazlbXkdbaz9TNOlgP7gMSO74mMFSqRvzvYjSJSO1i3vtywcR326MOWtwL6uQWV4GiOiLACB99GKmc0Dyxj7TzpsonROl1GmIeLxEoDMxmPmtcRx/Tho34PUvA0T0UQCQ3p+b+kh0Sea8irIzY7pPGsdKBt3Beou19gsecANknzGgtT6Gmc8QDrtnZ6t6F2VHmJL71h7jHhGPNMacIzwYAa6PGFBKvQ4RL5AMOet5kpK+HVYpouwIU6SMyNoEMPMRcRy7Z4nQhowBrfXezOyO1JBs91prN5UEzIpVmihdYEqpsxHxiKxBpuj/JmvtuSn6hS4DwoBSagdEvEU6nSzHoEv7XoNXqig7M6YTz+HSCSHi4caY86RxA171GGg0GlslSfIr6ciiKHpKs9l8UBo3K17pouwI80IAODRrsN36J0nyhlardX63fuH3/cvAtttuu+H8+fP/Jp3B9PT0VitWrJDeSZIrzJ6I0kWqtf4qM786V9RzGDHz6+M4dqIPbQAZ8LDA3FW92DGO459Vha6eibIzY34dAA7yQMah1lp3IFFoA8QAEf1JoBD44xipYpnTnoqyI0zpygWPko6IhxhjLh6ga3KoU1FKTSHiQkkSqvq403NRdoTpSsa7U71EGzO/Jo5j0c3XogEGsFQMENGPAWCXVJ3Td3qPtfbj6buX17MSonTpaq2/w8x7ekj9YGvtJR5wA2QJDCilrkDElwu7+ri19j3CmGJwlRFlZ8Z0ezGXiGXXASpz24107MOMR0RfAoA3SnLAzOfHcfwGSUxprEqJsiPMGwDgBcKJupIQB1pr3fNraH3AgKfNDFdba91JzZVulRNlR5g3AsCuwswlzHxAHMdXCuMGOGEGiOjdACD9vPcza+2OwqF6gaukKF2mktXXZzA37Z5PjDGiBXm9jMyQgtbr9cOiKBJdmcXMK+M43qpfKK2sKDszpiueu1iYTHdQ7T7WWvf8GlqFGCAid2t5lXBID1prnyKM6RWu0qLsCHM5ADSEWfgHM+8dx/H3hXEDXE4G6vX6TlEU3ZzTfFazKiwwz5pT5UXZEWYMAPWsyXXp/1CSJC9ptVru+TW0HjJARM8BgDukQ5g/f/6mt956673SuL7x+kKUjgQfKzoA4MEoipY0m03xv9C+B25Q8LfeeuunPfnJTy580OrafDCziuO41Y889Y0oOzPmLwFga2Gi3SnSL7TWih7+IhzjwML5WGAOAHtYa92ntb5sfSXKjjBdufhnCbP9tyRJXtBqtZYJ4wa4ORggovulC3cPwkKRvhNlR5i/A4BnCl/xf0mSZLdWq+WeX0PzzAAR3Q4ACyTdDEqVw74UZUeYfwSAZ0gOKgD8OYqiXZrN5pQwboCbwQARudL/zxMmpdSCycKxPw6ub0XZEab47Q8AuD17O1lr3fNraMIMEJFbUbWvMGzpBZOF4x8cUXaE6V7USH8cvrfdbu8wOTl5p0/yhw2biL4MANKLwXtSMNnn2PX1TLmGGCJ6CADWFybqD6tXr37u1NSUe34NrSADns4v7VnB5IJ0zGk+EKLszJirAWCeMFn3RFE03mw23fNraDkZUEq9BxFPz2m+TrNeF0yWzGVtrIERZUeY0qf2uqJKbqbUcRz/2edADCq21voNzOxuWyVbzwsmSyYz0KIEgBoRTXsg7O7Vq1fXp6am3PNraCkZUErti4jiW+X6cT1rSsoe7TZQM6VLaMGCBSPrr7/+P7KQkLLvXRtuuOGim266yT2/htaFAa31zsz8E2miqlIwWTqvmXgDJ0qXXKPR2CBJkgc8EHfnyMjINhMTE+75NbRZGBgdHd2mVqvdJk1QlQomS+c28KJ0CY6Pj280PT3tvmNKt19ba92uBvHnV+lAe4Hni/eqFUz2ye1AzpRrCFu4cOEm6623no+tO7+01oouEfM5yGVi+1hgXsWCyT45HWhROuLq9fpmURTd44HEO6y123jA7VtIIvorADxVMoGqFkyWzHFtrIEXZecZc4skSX4jTSQz3xbH8bbSuP2IR0Q+ttVVtmCyzzEaClF2hOnl+DQAWGGtHfU5SFXH1lrfzMw7CcdZ6YLJwrk+Dm5oROmy9vVWEABa1lrlc6Cqik1ErtCVaC3VfiiY7HM8hkqUjkgicrOaeJmIQV72NdsFqLU+3x09KHyB9kXBZOGch3emXJO51lozc9MDscZaK115z0OYxSGJ6BMAcGxxpMch9E3BZOG8gyg7z5jPTZJkwgO5y6214x5wKwOptT6emU+TDKjfCiZL5r421tDdvs4koF6v7xhF0U89ELzMWrudB9yeQxKRO3DHHbwj2fquYLJk8kGUazFARO7cQ3f+oXT7hbVWurq7dIyZ8LTW+zHz5ZmMUnQe9AXmKSgIt69rk6S1fgEz+yhJ+HNr7Q5ZB6WK/ZVSuyKieOHqfi2Y7HOMhvr2dSaxjUbjRUmSXOeB7L5/eTE2Nraw3W6LFxPr54LJHq6TxyCDKGewq5R6KSJ+V5pwZv5pHMfS1dukw1wnnlJqY0R0xcSkW18XTJYmYyZeEOUTnzF9nPzkvNxkrXXPr33VPC0wf5UxZmlfEVFisEGU6yBba70/M18mPQ7M/KM4jv9DGtcXHhGJVwoclILJvjh3uEGUs7CrlDoQEcX/miPi94wxL/I5qBLYRPQrAJA+aHVgCiZLcDwbRhDlHOwqpQ5GxK95GIBrrLUv9YArAklEtwCA9FvjgSqYLEL0LCBBlF3YJaJDAOAiD4NQyTWeSqmrEXEv4XwHrmCyMD+PgwuiTMGupzKJrnzllXEc75cihFK6ENGFAHCosLOBLJgszFEQZR5ClVJvRsRz8th2sfmmtfZAD7iZIJVSZyDiMZmMunQexp0zEvyFmTIDi0T0FgD4XAaTtF0vsdYenLazdD8iOgEAPiqMO9AFk4W5CjNlEUKJ6GgAOLMIxiy2F1tr3fNrqc3XHUBYz5p/GMNMmYM7rfUxzHxGDtM5TRDxfGOM9KlUs/okogMA4FLpPIahYLI0ZzPxgihzsuvj0JpOKF+y1r45Z1ipzer1+m5RFP0otUHKjsNSMDklHbm6BVHmou2fRkR0IgB8pADEbKZfsNa651cvTWu9iJknpcGHqWCyNHdhphRklIg+AAAfFIR8FIqZz4rj+O3SuL4KVA9bwWTpcQmiFGZUa30KM58kDAuI+CljjOhnCh8LzIexYLL0WAdRemBUKXUqIr7XA7RY/VMicocebSAc41AWTBbm8HFw4ZlSkF0i+jgAvFsQcg3UqdZa9/yauxHRSgDYMjfAug3F/mAIx9XXcEGUwsNHRJ8GgHcIw7pnzFPiOH5/Hlwi+jkAiNYLGvaCyXnGIa1NEGVapjL001qf5fYNZjBJ2zXz1iciut2dpZvWQcp+lVxMnzL2yncLovQ0RET0BQA40gO823x9nLXWHagza9Na7+VmMwDYVDiGvq85JMyHOFwQpTil/w9IROcCwOEeXDhBHgcAP7HW/mEmvlKqjohLAOBjADAi6TsUTJZkc3asIErPPBPRBQDwOo9uVgDAcgD4vROjqxDnyVcomOyJ2LVhgyhLIFopdTEivqYEV95chAXm3qh9AnAQZUlcE9ElAPCqktyJugkFk0Xp7AoWRNmVIrkOROR2ZLidGX3TQsHk8ocqiLJkzonoSgDYt2S3ed2Fgsl5mStgF0RZgLy8pp6KU+UNZ512iBgKJosymh4siDI9V6I9iegaAHixKKgQWCiYLERkTpggypzESZgR0fcBYHcJLEGMzKuGBH0HqFAhvffXgFLqPEQ8rPeRPBpBEGQFBiLMlBUYBF8bpTOmFgSZkTBf3YMofTGbEbfHwjzKWvv5jCGH7p4YCKL0RGweWK3125jZbZTePI99DpsJRDzFGHNFDttg4omBIEpPxOaFHR8ff/b09LQTpo8dJo+Fxcyn12q1U5rN5oN5Yw12fhgIovTDa2FUItoHAI4HgN0Kgz0e4Ied2dHHUfLCoQ4nXBBlxcdda71fkiT7I6I7COjpecJl5vvckX6I+B1jzHfyYASb8hgIoiyP68KetNYHMfNBALAtADwTAJ4xC+i9AHAPAEwi4oXGmKsLOw8ApTEQRFka1V4c1cbGxjZrt9tOoFCr1e5Zvnz57wGg7cVbAC2FgSDKUmgOTgID6RkIokzPVegZGCiFgSDKUmgOTgID6RkIokzPVegZGCiFgSDKUmgOTgID6RkIokzPVegZGCiFgSDKUmgOTgID6RkIokzPVegZGCiFgSDKUmgOTgID6RkIokzPVegZGCiFgSDKUmgOTgID6RkIokzPVegZGCiFgf8DJGyXX6wRtw0AAAAASUVORK5CYII=\"","import './Content.scss'\r\nimport ContentItemAdmin from \"./ContentItemAdmin\";\r\nimport {useContext} from \"react\";\r\nimport {Root} from \"../../dataCenter/Root\";\r\nimport ContentItem from \"../Content/ContentItem\";\r\n\r\nfunction Content(props) {\r\n const {dataCenter} = useContext(Root)\r\n\r\n return (\r\n <div className=\"content\">\r\n {\r\n dataCenter.toolBox?.length ? dataCenter?.toolBox?.filter(v => {\r\n if (dataCenter.child_type_id === 'all') return true\r\n else return v.child_type_id === dataCenter.child_type_id\r\n }).map(v => {\r\n return (\r\n <ContentItemAdmin key={v['toolbox_id']} value={v}/>\r\n )\r\n })\r\n :\r\n '没有数据了!'\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport default Content\r\n","import './PublishModal.scss'\r\nimport React, {useContext, useEffect, useState} from 'react';\r\nimport {Root} from \"../dataCenter/Root\";\r\nimport {UnControlled as CodeMirror} from 'react-codemirror2'\r\nimport {Form, Input, message, Modal, Select} from 'antd';\r\nimport apiConfig from \"../config/apiConfig\";\r\n\r\nimport 'codemirror/addon/display/autorefresh';\r\nimport 'codemirror/addon/comment/comment';\r\nimport 'codemirror/addon/edit/matchbrackets';\r\nimport 'codemirror/keymap/sublime';\r\nimport 'codemirror/theme/eclipse.css';\r\nimport 'codemirror/theme/monokai.css';\r\nimport 'codemirror/lib/codemirror.js';\r\nimport 'codemirror/lib/codemirror.css';\r\nimport 'codemirror/theme/solarized.css'\r\nimport 'codemirror/mode/javascript/javascript'\r\nimport 'codemirror/addon/selection/active-line';\r\nimport 'codemirror/addon/fold/foldgutter.css';\r\n\r\nconst { Option } = Select;\r\n\r\n\r\nconst PublishModal = ({ visible, onCancel, data }) => {\r\n const [code, setcode] = useState('')\r\n const [page_name, setPageName] = useState('')\r\n const [oldCode, setoldCode] = useState('')\r\n const { fetchData, dataCenter } = useContext(Root)\r\n const onCreate = (values) => {\r\n console.log(code);\r\n\r\n if (!code || !page_name) {\r\n message.error('请补全信息!')\r\n return\r\n }\r\n if (data) {\r\n fetch(`${apiConfig.domain}/page/updatePage`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n page_id: data.page_id,\r\n page_name: page_name,\r\n code: code\r\n })\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data.success) {\r\n onCancel()\r\n message.success('替换成功!')\r\n dataCenter?.type && fetchData('/page/queryPage', {}, 'queryPage')\r\n .then((res) => {\r\n\r\n })\r\n } else {\r\n message.error( '替换失败')\r\n }\r\n });\r\n } else {\r\n fetch(`${apiConfig.domain}/page/addPage`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n page_name: page_name,\r\n code: code\r\n })\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data.success) {\r\n onCancel()\r\n message.success('发布成功!')\r\n dataCenter?.type && fetchData('/page/queryPage', {}, 'queryPage')\r\n .then((res) => {\r\n\r\n })\r\n } else {\r\n message.error(data.error || '发布失败')\r\n }\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n data&&setPageName(data.page_name)\r\n }, [data])\r\n\r\n return (\r\n <Modal\r\n visible={visible}\r\n title=\"发布\"\r\n okText=\"发布\"\r\n cancelText=\"取消\"\r\n onCancel={onCancel}\r\n onOk={onCreate}\r\n width='1000px'\r\n >\r\n <Form.Item\r\n name=\"page_name\"\r\n label=\"页面名称\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '请输入页面名称!',\r\n },\r\n ]}\r\n >\r\n <Input placeholder=\"请输入页面名称\" defaultValue={data?.page_name ? data.page_name : page_name} onChange={(e) => { setPageName(e.target.value) }} />\r\n </Form.Item>\r\n <Form.Item\r\n name=\"type\"\r\n label=\"布局代码\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '请输入页面名称!',\r\n },\r\n ]}\r\n >\r\n <div className='codeMain'>\r\n <CodeMirror\r\n onChange={(editor, data, value) => {\r\n setcode(value)\r\n }}\r\n value={oldCode}\r\n options={{\r\n styleActiveLine: true,//光标代码高亮\r\n lineNumbers: true,\r\n theme: 'monokai',\r\n tabSize: 2,\r\n keyMap: 'sublime',\r\n mode: 'text/javascript',\r\n smartIndent: true, //自动缩进\r\n lineWrapping: true,\r\n autofocus: true\r\n }}\r\n />\r\n </div>\r\n </Form.Item>\r\n </Modal>\r\n );\r\n};\r\nexport default PublishModal\r\n","import React from 'react';\r\nimport { Button, Modal, Form, Input, Radio, Select, message, Tabs } from 'antd';\r\nimport { useContext, useEffect, useState } from \"react\";\r\nimport { Root } from \"../dataCenter/Root\";\r\nimport { NEED_UPDATE_INDEX } from \"../dataCenter/action\";\r\nconst { Option } = Select;\r\nconst { TabPane } = Tabs;\r\nconst TypeModal = ({ visible, onCancel, queryData, data }) => {\r\n console.log(data);\r\n const [form] = Form.useForm();\r\n if (data) {\r\n form.setFieldsValue({\r\n type_name: data.type_name,\r\n });\r\n }\r\n const formItemLayout = {\r\n labelCol: { span: 4 },\r\n wrapperCol: { span: 18 },\r\n };\r\n\r\n const { fetchData, dataCenter, dispatch } = useContext(Root)\r\n const [value, setValue] = React.useState(1);\r\n\r\n\r\n const onCreate = (values) => {\r\n if (data) {\r\n console.log(data);\r\n\r\n let input = {\r\n type_id: '',\r\n type_name: ''\r\n }\r\n if (!data.isRemove) {\r\n input = {\r\n type_id: data.type_id,\r\n type_name: values.type_name\r\n }\r\n } else {\r\n input = {\r\n child_type_id: data.type_id,\r\n child_type_name: values.type_name\r\n }\r\n }\r\n fetchData('/typeManage/updateType', input)\r\n .then((res) => {\r\n if (res.success) {\r\n message.success('修改成功')\r\n dispatch(NEED_UPDATE_INDEX())\r\n queryData()\r\n onCancel()\r\n }\r\n })\r\n } else {\r\n console.log(values);\r\n fetchData('/add/addType', values)\r\n .then((res) => {\r\n if (res.success) {\r\n message.success('新建成功')\r\n dispatch(NEED_UPDATE_INDEX())\r\n onCancel()\r\n }\r\n })\r\n }\r\n\r\n };\r\n // function callback(key) {\r\n // console.log(key);\r\n // }\r\n\r\n const onChange = e => {\r\n console.log('radio checked', e.target.value);\r\n setValue(e.target.value);\r\n };\r\n\r\n const onGenderChange = (value) => {\r\n form.setFieldsValue({\r\n type_id: value,\r\n });\r\n };\r\n\r\n return (\r\n <Modal\r\n visible={visible}\r\n title={`${data ? '修改' : '新建'}类型`}\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n onCancel={onCancel}\r\n onOk={() => {\r\n form\r\n .validateFields()\r\n .then((values) => {\r\n // form.resetFields();\r\n onCreate(values);\r\n })\r\n .catch((info) => {\r\n console.log('Validate Failed:', info);\r\n });\r\n }}\r\n >\r\n <Form\r\n form={form}\r\n // layout=\"vertical\"\r\n {...formItemLayout}\r\n name=\"form_in_modal\"\r\n initialValues={{\r\n modifier: 'public',\r\n 'radio-group': 1\r\n }}\r\n >\r\n\r\n {!data && <Form.Item name=\"radio-group\" label=\"类型\">\r\n <Radio.Group onChange={onChange} value={value}>\r\n <Radio value={1}>父类型</Radio>\r\n <Radio value={2}>子类型</Radio>\r\n </Radio.Group>\r\n </Form.Item>}\r\n {value === 1 || data ? <Form.Item\r\n name=\"type_name\"\r\n label={`${data ? '' : '父'}类型`}\r\n rules={[\r\n {\r\n required: true,\r\n message: '请输入类型名称!',\r\n },\r\n ]}\r\n >\r\n <Input placeholder=\"请输入类型名称\" />\r\n </Form.Item> :\r\n <>\r\n <Form.Item\r\n name=\"type_id\"\r\n label=\"父类型\"\r\n hasFeedback\r\n rules={[{ required: true, message: '请选择父类型!' }]}\r\n >\r\n <Select\r\n placeholder=\"请选择父类型\"\r\n onChange={onGenderChange}\r\n // allowClear\r\n >\r\n {\r\n dataCenter?.type?.length && dataCenter?.type.map(v => {\r\n return (\r\n <Option key={v.type_id} value={v.type_id}>{v.type_name}</Option>\r\n )\r\n })\r\n }\r\n\r\n </Select>\r\n </Form.Item>\r\n <Form.Item\r\n name=\"child_type_name\"\r\n label=\"子类型\"\r\n rules={[\r\n {\r\n required: true,\r\n message: '请输入类型名称!',\r\n },\r\n ]}\r\n >\r\n <Input placeholder=\"请输入类型名称\" />\r\n </Form.Item>\r\n </>\r\n\r\n }\r\n </Form>\r\n </Modal>\r\n );\r\n};\r\nexport default TypeModal\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {Root} from \"../dataCenter/Root\";\r\nimport {Modal, Space, Table} from 'antd';\r\nimport PublishModal from \"./PublishModal\"\r\n\r\nfunction PageModal({ visible, onCancel, onPublish }) {\r\n\r\n const [publish, setPublish] = useState(false)\r\n const [pageData, setpageData] = useState('')\r\n const { fetchData, dataCenter } = useContext(Root)\r\n\r\n const onChangePage = (values) => {\r\n console.log(values);\r\n setpageData(values);\r\n setPublish(true)\r\n };\r\n const onRemovePage = (values) => {\r\n console.log(values);\r\n // setVisible(false);\r\n };\r\n\r\n\r\n\r\n const columns = [\r\n {\r\n title: '页面Id',\r\n dataIndex: 'page_id',\r\n width: 150,\r\n align: 'center'\r\n },\r\n {\r\n title: '页面名称',\r\n dataIndex: 'page_name',\r\n width: 200,\r\n align: 'center'\r\n },\r\n {\r\n title: '页面Url',\r\n dataIndex: 'pageUrl',\r\n width: 300,\r\n align: 'center',\r\n render: (text, record) => (\r\n <Space size=\"middle\">\r\n <a href={record.pageUrl}>{record.pageUrl}</a>\r\n </Space>\r\n ),\r\n },\r\n {\r\n title: '操作',\r\n key: 'action',\r\n align: 'center',\r\n width: 100,\r\n render: (text, record) => (\r\n <Space size=\"middle\">\r\n <a onClick={() => onChangePage(record)}>替换</a>\r\n {/* <a onClick={() => onRemovePage(record)}>删除</a> */}\r\n </Space>\r\n ),\r\n },\r\n ];\r\n\r\n\r\n useEffect(() => {\r\n console.log(dataCenter);\r\n dataCenter?.type && fetchData('/page/queryPage', {}, 'queryPage')\r\n .then((res) => {\r\n })\r\n }, [])\r\n\r\n\r\n const data = [\r\n {\r\n key: '1',\r\n name: '1 Brown',\r\n age: 32,\r\n address: 'New York No. 1 Lake Park',\r\n },\r\n {\r\n key: '2',\r\n name: '2 Green',\r\n age: 42,\r\n address: 'London No. 1 Lake Park',\r\n },\r\n {\r\n key: '3',\r\n name: '3 Black',\r\n age: 32,\r\n address: 'Sidney No. 1 Lake Park',\r\n },\r\n {\r\n key: '4',\r\n name: '4 Brown',\r\n age: 32,\r\n address: 'New York No. 1 Lake Park',\r\n },\r\n {\r\n key: '5',\r\n name: '5 Green',\r\n age: 42,\r\n address: 'London No. 1 Lake Park',\r\n },\r\n {\r\n key: '6',\r\n name: '6 Black',\r\n age: 32,\r\n address: 'Sidney No. 1 Lake Park',\r\n },\r\n {\r\n key: '7',\r\n name: '7 Brown',\r\n age: 32,\r\n address: 'New York No. 1 Lake Park',\r\n },\r\n {\r\n key: '8',\r\n name: '8 Green',\r\n age: 42,\r\n address: 'London No. 1 Lake Park',\r\n },\r\n {\r\n key: '9',\r\n name: '9 Black',\r\n age: 32,\r\n address: 'Sidney No. 1 Lake Park',\r\n },\r\n {\r\n key: '10',\r\n name: '10 Brown',\r\n age: 32,\r\n address: 'New York No. 1 Lake Park',\r\n },\r\n {\r\n key: '11',\r\n name: '11 Green',\r\n age: 42,\r\n address: 'London No. 1 Lake Park',\r\n },\r\n {\r\n key: '12',\r\n name: '12 Black',\r\n age: 32,\r\n address: 'Sidney No. 1 Lake Park',\r\n },\r\n ];\r\n return (\r\n <>\r\n <Modal\r\n visible={visible}\r\n title=\"页面管理\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n width='1000px'\r\n onCancel={onCancel}\r\n onOk={onCancel}\r\n >\r\n <Table columns={columns} dataSource={dataCenter?.queryPage && dataCenter.queryPage} pagination={{ pageSize: 10 }} size=\"middle\" />\r\n </Modal>\r\n {publish && <PublishModal\r\n visible={publish}\r\n onCancel={() =>\r\n setPublish(false)\r\n }\r\n data={pageData}\r\n />}\r\n </>\r\n )\r\n}\r\n\r\nexport default PageModal\r\n","import { Menu, Modal, Popconfirm, Space, Table, message } from 'antd';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport TypeModal from '../modal/TypeModal'\r\nimport { NEED_UPDATE_INDEX } from \"../dataCenter/action\";\r\nimport { Root } from \"../dataCenter/Root\";\r\n\r\nconst menu = (\r\n <Menu>\r\n <Menu.Item>Action 1</Menu.Item>\r\n <Menu.Item>Action 2</Menu.Item>\r\n </Menu>\r\n);\r\n\r\nfunction RemoveType({ visible, onCancel }) {\r\n\r\n const [typeModal, setTypeModal] = useState(false)\r\n const [typeData, settypeData] = useState('')\r\n const [oldData, setoldData] = useState('')\r\n const { fetchData, dataCenter, dispatch } = useContext(Root)\r\n\r\n const changType = (data) => {\r\n setoldData(data)\r\n setTypeModal(true)\r\n }\r\n\r\n const changeData = (list, cb) => {\r\n return list.map((item, index) => {\r\n const res = cb(item);\r\n if (item.children) res.children = changeData(item.children, item => ({\r\n isRemove: true,\r\n key: item.child_type_id,\r\n type_id: item.child_type_id,\r\n type_name: item.child_type_name,\r\n }));\r\n return res;\r\n })\r\n }\r\n\r\n const removeType = (data) => {\r\n fetchData('/typeManage/deleteChildType', { child_type_id: data.type_id })\r\n .then((res) => {\r\n if (res.success) {\r\n message.success('刪除成功')\r\n dispatch(NEED_UPDATE_INDEX())\r\n queryData()\r\n // onCancel()\r\n }else{\r\n message.error('刪除失败')\r\n }\r\n })\r\n }\r\n\r\n const queryData = () => {\r\n dataCenter?.type && fetchData('/typeManage/queryTypeForManage', {}, 'childTypeData')\r\n .then((res) => {\r\n // console.log(res.data);\r\n const newData = changeData(res.data, item => ({\r\n key: item.type_id,\r\n type_id: item.type_id,\r\n type_name: item.type_name,\r\n }));\r\n // console.log(newData);\r\n settypeData(newData)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n queryData()\r\n }, [])\r\n\r\n const columns = [\r\n { title: '类型名', width: 100, dataIndex: 'type_name', key: 'type_name' },\r\n { title: 'Id', width: 100, dataIndex: 'type_id', align: 'center', key: 'type_id' },\r\n {\r\n title: '操作', width: 100, key: 'operation', align: 'center',\r\n render: (text, record) => (\r\n <Space size=\"middle\">\r\n {record.isRemove && <Popconfirm title=\"确定删除吗?\" okText=\"确定\" cancelText=\"取消\" onConfirm={() => removeType(record)}>\r\n <a href=\"#\" >删除</a>\r\n </Popconfirm>}\r\n <a href=\"#\" onClick={() => changType(record)}>修改</a>\r\n </Space>\r\n )\r\n },\r\n ];\r\n\r\n return (\r\n <Modal\r\n visible={visible}\r\n title=\"类型管理\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n width='1000px'\r\n onCancel={onCancel}\r\n onOk={onCancel}\r\n >\r\n <Table\r\n columns={columns}\r\n dataSource={typeData}\r\n />\r\n {typeModal && <TypeModal\r\n visible={typeModal}\r\n onCancel={() =>\r\n setTypeModal(false)\r\n }\r\n queryData={() =>\r\n queryData()\r\n }\r\n data={oldData}\r\n />}\r\n </Modal>\r\n\r\n );\r\n}\r\nexport default RemoveType\r\n","import React, {useState} from 'react'\r\nimport './AdminIndex.scss'\r\nimport {Button} from 'antd';\r\nimport ToolModal from '../../modal/ToolModal'\r\nimport PublishModal from '../../modal/PublishModal'\r\nimport TypeModal from '../../modal/TypeModal'\r\nimport PageModal from '../../modal/PageModal'\r\nimport RemoveType from '../../modal/RemoveType'\r\n\r\nfunction AdminIndex() {\r\n const [visible, setVisible] = useState(false)\r\n const [publish, setPublish] = useState(false)\r\n const [typeModal, setTypeModal] = useState(false)\r\n const [pageModal, setpageModal] = useState(false)\r\n const [removeType, setremoveType] = useState(false)\r\n\r\n return (\r\n <div className='admin'>\r\n <Button onClick={() => setVisible(true)}>新建工具盒</Button>\r\n <Button onClick={() => setTypeModal(true)}>新建类型</Button>\r\n <Button onClick={() => setPublish(true)}>发布</Button>\r\n <Button onClick={() => setpageModal(true)}>页面管理</Button>\r\n <Button onClick={() => setremoveType(true)}>类型管理</Button>\r\n {visible && <ToolModal\r\n visible={visible}\r\n onCancel={() =>\r\n setVisible(false)\r\n }\r\n />}\r\n {publish && <PublishModal\r\n visible={publish}\r\n onCancel={() =>\r\n setPublish(false)\r\n }\r\n />}\r\n {typeModal && <TypeModal\r\n visible={typeModal}\r\n onCancel={() =>\r\n setTypeModal(false)\r\n }\r\n />}\r\n {pageModal && <PageModal\r\n visible={pageModal}\r\n onCancel={() =>\r\n setpageModal(false)\r\n }\r\n />}\r\n {removeType && <RemoveType\r\n visible={removeType}\r\n onCancel={() =>\r\n setremoveType(false)\r\n }\r\n />}\r\n </div>\r\n )\r\n}\r\n\r\nexport default AdminIndex\r\n","import logo from \"../../static/logo.png\";\r\nimport './index.scss'\r\nimport ToolType from \"../../component/ToolType/ToolType\";\r\nimport Content from '../../component/ContentAdmin/Content'\r\nimport {PopContext, Root} from \"../../dataCenter/Root\";\r\nimport {useContext, useEffect, useState} from \"react\";\r\nimport {NEED_UPDATE_INDEX} from \"../../dataCenter/action\";\r\nimport AdminIndex from \"../../component/AdminIndex/AdminIndex\";\r\nimport {useHistory} from \"react-router-dom\";\r\n\r\nfunction Index() {\r\n const history = useHistory()\r\n const {fetchData, dataCenter, dispatch} = useContext(Root)\r\n const showPop = popComponent => {}\r\n const getUser = () => {\r\n fetchData('/users/getUser', {uid: '100001'}, 'userInfo')\r\n .catch(res =>\r\n res.code === 70001 && (history.push('/login'))\r\n )\r\n }\r\n\r\n useEffect(() => {\r\n fetchData('/query/queryType', {}, 'type')\r\n .then(()=> fetchData('/query/queryChildType',{type_id: dataCenter.type_id},'childType'))\r\n .then(() => dispatch(NEED_UPDATE_INDEX()))\r\n }, [dataCenter.type_id])\r\n\r\n useEffect(() => {\r\n if (dataCenter.needUpdateIndex) {\r\n const _typeId = dataCenter.type_id === 'all' ? {} : dataCenter.type_id === 'follow' ? {\r\n isFollow: true,\r\n type_id: JSON.stringify(dataCenter.userInfo.follow)\r\n } : {type_id: dataCenter.type_id}\r\n fetchData('/query/queryToolBox', _typeId, 'toolBox').then(() => dispatch(NEED_UPDATE_INDEX()))\r\n }\r\n }, [dataCenter.needUpdateIndex])\r\n\r\n useEffect(() => {\r\n getUser()\r\n }, [])\r\n\r\n return (\r\n <PopContext.Provider value={{hidePop: () => setPop(''), showPop: popName => showPop(popName)}}>\r\n <div className=\"index\">\r\n <div className=\"welcome-top\">\r\n <span>欢迎您!\r\n <span className=\"welcome-uname\">{dataCenter?.userInfo?.uname}</span>\r\n <a className=\"login-btn\">退出登录</a>\r\n </span>\r\n </div>\r\n <div className=\"nav\">\r\n <div className=\"nav-title\">\r\n <img src={logo} alt=\"\"/>\r\n </div>\r\n <div className=\"nav-weather\">\r\n <iframe width=\"360\" height=\"40\" frameBorder=\"0\" scrolling=\"no\" hspace=\"0\"\r\n src=\"https://i.tianqi.com/?c=code&a=getcode&id=40&icon=1\"/>\r\n </div>\r\n </div>\r\n <div className=\"tool-nav\">\r\n <ToolType/>\r\n </div>\r\n <div className=\"container\">\r\n <Content/>\r\n </div>\r\n <div className=\"index-footer\">\r\n 兑吧研发中心·杭州兑吧网络科技游戏公司版权所有\r\n <br/>\r\n 浙ICP备14017299号-1\r\n </div>\r\n <AdminIndex/>\r\n </div>\r\n </PopContext.Provider>\r\n )\r\n}\r\n\r\nexport default Index\r\n\r\n","import './Content.scss'\r\nimport ContentItem from \"./ContentItem\";\r\nimport {useContext} from \"react\";\r\nimport {Root} from \"../../dataCenter/Root\";\r\n\r\nfunction Content(props) {\r\n const {dataCenter} = useContext(Root)\r\n return (\r\n <div className=\"content\">\r\n {\r\n dataCenter.toolBox?.length ? dataCenter?.toolBox?.filter(v => {\r\n if (dataCenter.child_type_id === 'all') return true\r\n else return v.child_type_id === dataCenter.child_type_id\r\n }).map(v => {\r\n return (\r\n <ContentItem key={v['toolbox_id']} value={v}/>\r\n )\r\n })\r\n :\r\n '没有数据了!'\r\n }\r\n </div>\r\n )\r\n}\r\n\r\nexport default Content\r\n","import logo from \"../../static/logo.png\";\r\nimport './index.scss'\r\nimport ToolType from \"../../component/ToolType/ToolType\";\r\nimport Content from \"../../component/Content/Content\";\r\nimport {Root} from \"../../dataCenter/Root\";\r\nimport {useContext, useEffect} from \"react\";\r\nimport {NEED_UPDATE_INDEX} from \"../../dataCenter/action\";\r\nimport {useHistory} from \"react-router-dom\";\r\n\r\nfunction Index() {\r\n const history = useHistory()\r\n const {fetchData, dataCenter, dispatch} = useContext(Root)\r\n const getUser = () => {\r\n fetchData('/users/getUser', {uid: '100001'}, 'userInfo')\r\n .catch(res =>\r\n res.code === 70001 && (history.push('/login'))\r\n )\r\n }\r\n useEffect(() => {\r\n fetchData('/query/queryType', {}, 'type')\r\n .then(() => fetchData('/query/queryChildType', {type_id: dataCenter.type_id}, 'childType'))\r\n .then(() => dispatch(NEED_UPDATE_INDEX()))\r\n }, [dataCenter.type_id])\r\n useEffect(() => {\r\n if (dataCenter.needUpdateIndex) {\r\n const _typeId = dataCenter.type_id === 'follow' ? {\r\n isFollow: true,\r\n type_id: JSON.stringify(dataCenter.userInfo.follow)\r\n } : {type_id: dataCenter.type_id}\r\n fetchData('/query/queryToolBox', _typeId, 'toolBox').then(() => dispatch(NEED_UPDATE_INDEX()))\r\n }\r\n }, [dataCenter.needUpdateIndex])\r\n\r\n useEffect(() => {\r\n getUser()\r\n }, [])\r\n\r\n return (\r\n\r\n <div className=\"index\">\r\n <div className=\"welcome-top\">\r\n <span>欢迎您!\r\n <span className=\"welcome-uname\">{dataCenter?.userInfo?.uname}</span>\r\n <a className=\"login-btn\">退出登录</a>\r\n </span>\r\n </div>\r\n <div className=\"nav\">\r\n <div className=\"nav-title\">\r\n <img src={logo} alt=\"\"/>\r\n </div>\r\n <div className=\"nav-weather\">\r\n <iframe width=\"360\" height=\"40\" frameBorder=\"0\" scrolling=\"no\" hspace=\"0\"\r\n src=\"https://i.tianqi.com/?c=code&a=getcode&id=40&icon=1\"/>\r\n </div>\r\n </div>\r\n <div className=\"tool-nav\">\r\n <ToolType/>\r\n </div>\r\n <div className=\"container\">\r\n <Content/>\r\n </div>\r\n <div className=\"index-footer\">\r\n 兑吧研发中心·杭州兑吧网络科技有限公司版权所有\r\n <br/>\r\n 浙ICP备14017299号-1\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Index\r\n\r\n","import './login.scss'\r\nimport {useContext, useEffect, useState} from \"react\";\r\nimport {Root} from \"../../dataCenter/Root\";\r\nimport {useFormState} from \"../../utils/hook\";\r\nimport {useHistory} from \"react-router-dom\";\r\n\r\nfunction Login(props) {\r\n const history = useHistory()\r\n const {fetchData, dataCenter} = useContext(Root)\r\n const [needLogin,setNeedLogin] = useState(false)\r\n const [input, setInput] = useFormState()\r\n const getUser = ()=>{\r\n fetchData('/users/getUser', {}, 'userInfo')\r\n .then(res => res.data.uid && (history.push('/')))\r\n .catch(res =>\r\n res.code === 70001 && setNeedLogin(true)\r\n )\r\n }\r\n const doLogin = () => {\r\n if (needLogin){\r\n fetchData('/users/login',{uid: input.uid})\r\n .then(()=>{\r\n getUser()\r\n })\r\n }else {\r\n getUser()\r\n }\r\n }\r\n useEffect(() => {\r\n if (dataCenter.userInfo) {\r\n // window.location.href = '/index'\r\n }\r\n }, [dataCenter.userInfo])\r\n\r\n useEffect(() => {\r\n doLogin()\r\n }, [])\r\n return (\r\n <div className=\"login\">\r\n <div className='loginDiv'>\r\n {\r\n needLogin && <input type=\"text\" onChange={e => setInput('uid',e.target.value)} defaultValue={input.uid}/>\r\n }\r\n <button className='btn-login' onClick={() => doLogin()}>登录</button>\r\n </div>\r\n\r\n </div>\r\n )\r\n}\r\n\r\nexport default Login\r\n","import {useCallback, useState} from \"react\";\r\n\r\nconst useFormState = (initialValues = {}) => {\r\n const [input, setInput] = useState(initialValues)\r\n\r\n const setInputData = useCallback((name, value) => {\r\n setInput(() => Object.assign({}, {...input}, {[name]: value}))\r\n }, [input])\r\n\r\n return [input, setInputData]\r\n}\r\n\r\n\r\nconst useDrag = () => {\r\n\r\n}\r\n\r\n\r\n\r\n//这个hook很有意思,怎么样保存return出去的那个组件的数据呢\r\n// function usePopContainer(props) {\r\n// const dragRef = useRef()\r\n// const [offset, setOffset] = useState({x: 0, y: 0})\r\n// const [draggable, setDraggable] = useState(false)\r\n// const handleMouseDown = e => {\r\n// e.stopPropagation()\r\n// setDraggable(true)\r\n// setOffset({\r\n// x: e.clientX - dragRef.current['getBoundingClientRect']().x,\r\n// y: e.clientY - dragRef.current['getBoundingClientRect']().y\r\n// })\r\n// }\r\n//\r\n// const handleMouseUp = () => setDraggable(false)\r\n// const handleMouseMove = e => {\r\n// if (draggable) {\r\n// dragRef.current.style.transform = `translate(${e.clientX - offset.x}px,${e.clientY - offset.y}px)`\r\n// console.log(dragRef.current.style.transform)\r\n// }\r\n// }\r\n// return {\r\n// PopContainer: props => (\r\n// <div className=\"drag-Container\"\r\n// onMouseUp={() => handleMouseUp()}\r\n// onMouseMove={(e) => handleMouseMove(e)}>\r\n// <div className=\"Pop-container\"\r\n// ref={dragRef}\r\n// >\r\n// {props.children}\r\n// </div>\r\n// </div>\r\n// ),\r\n// dragMouseDown: e => handleMouseDown(e)\r\n// }\r\n// }\r\n\r\nexport {\r\n useFormState,\r\n useDrag,\r\n}\r\n","import './App.css';\r\nimport DataCenter from \"./dataCenter/Root\";\r\nimport IndexAdmin from \"./page/indexAdmin\";\r\nimport Index from \"./page/index\";\r\nimport Login from \"./page/login/login\";\r\nimport {HashRouter as Router, Route, Switch} from \"react-router-dom\";\r\nimport {useEffect} from \"react\";\r\n\r\nfunction App() {\r\n useEffect(() => {\r\n console.log(\"%c+\",\r\n `font-size: 1px;\r\n padding: 122px 217px;\r\n background-image: url(https://yun.duiba.com.cn/spark/assets/cc8da992b527b3cd24da7df9a5be8b2361c2e549.jpg);\r\n background-size: contain;\r\n background-repeat: no-repeat;\r\n color: transparent;`);\r\n }, [])\r\n return (\r\n <Router>\r\n <DataCenter>\r\n <Switch>\r\n <Route exact path='/login' component={Login}/>\r\n <Route exact path='/' component={Index}/>\r\n <Route exact path='/admin' component={IndexAdmin}/>\r\n </Switch>\r\n </DataCenter>\r\n </Router>\r\n );\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {ConfigProvider} from 'antd';\r\n// 由于 antd 组件的默认文案是英文,所以需要修改为中文\r\nimport zhCN from 'antd/lib/locale/zh_CN';\r\nimport moment from 'moment';\r\nimport 'moment/locale/zh-cn';\r\nimport 'antd/dist/antd.css';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nmoment.locale('zh-cn');\r\nReactDOM.render(\r\n <React.StrictMode>\r\n <ConfigProvider locale={zhCN}>\r\n <App />\r\n </ConfigProvider>\r\n </React.StrictMode>,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}
\ No newline at end of file
server/routes/add.js
View file @
51a6b4ff
...
@@ -17,11 +17,14 @@ getMysql.then(Mysql => {
...
@@ -17,11 +17,14 @@ getMysql.then(Mysql => {
}
}
request
(
domain
+
'/query/queryToolBox'
,
{},
(
error
,
response
,
body
)
=>
{
request
(
domain
+
'/query/queryToolBox'
,
{},
(
error
,
response
,
body
)
=>
{
console
.
log
(
domain
+
'/query/queryToolBox'
)
console
.
log
(
domain
+
'/query/queryToolBox'
)
console
.
log
(
'body:'
,
body
)
console
.
log
(
'body:'
,
body
)
const
data
=
JSON
.
parse
(
body
).
data
const
data
=
JSON
.
parse
(
body
).
data
const
lastToolBoxId
=
data
[
data
.
length
-
1
].
toolbox_id
const
lastToolBoxId
=
data
[
data
.
length
-
1
].
toolbox_id
const
SQL
=
'INSERT INTO type_childtype_toolbox (toolbox_id,type_id,child_type_id) VALUES (?,?,?)'
const
SQL
=
'INSERT INTO type_childtype_toolbox (toolbox_id,type_id,child_type_id) VALUES (?,?,?)'
Mysql
.
query
(
SQL
,
[
lastToolBoxId
,
type_id
,
child_type_id
],
(
err
,
result
)
=>
{
const
params
=
[
lastToolBoxId
,
type_id
]
if
(
typeof
child_type_id
!==
'number'
)
params
.
push
(
null
)
else
params
.
push
(
child_type_id
)
Mysql
.
query
(
SQL
,
params
,
(
err
,
result
)
=>
{
if
(
err
)
{
if
(
err
)
{
res
.
send
({
res
.
send
({
success
:
false
,
success
:
false
,
...
...
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