Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
Details
Activity
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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄庭坚
jinfa-platform
Commits
a3e77766
Commit
a3e77766
authored
Jan 29, 2021
by
前端-许佳敏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 权限2.0
parent
17400726
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
146 additions
and
21 deletions
+146
-21
.gitignore
.gitignore
+2
-0
index.ts
config/routes/index.ts
+14
-13
package.json
package.json
+2
-1
gulpfile.js
scripts/gulpfile.js
+12
-4
pullRemoteRouterList.js
scripts/pullRemoteRouterList.js
+113
-0
BasicLayout.tsx
src/layouts/BasicLayout.tsx
+3
-3
No files found.
.gitignore
View file @
a3e77766
...
...
@@ -33,3 +33,5 @@ src/global/config/global.d.ts
src/global/config/navigation.config.ts
src/services/*Api.ts
src/services/*Api
router.config.json
config/routes/index.ts
View file @
a3e77766
...
...
@@ -4,18 +4,19 @@
* @LastEditors: Please set LastEditors
* @LastEditTime: 2020-10-19 11:12:51
*/
import
CommodityRoute
from
'./commodityRoute'
// 商品能力路由
import
MemberRoute
from
'./memberRoute'
// 会员能力路由
import
ShopRoute
from
'./shopRoute'
// 店铺能力路由
import
ChannelRoute
from
'./channelRoute'
// 渠道能力路由
import
TranactionRoute
from
'./tranactionRoute'
// 交易能力路由
import
LogisticsRoute
from
'./logisticsRoutes'
// 物流能力路由
import
PayandSettleRoute
from
'./payandSettle'
//支付与结算
import
AuthConfigRoute
from
'./authConfigRoute'
import
AfterService
from
'./afterServiceRoute'
// 售后
import
HandlingRoute
from
'./handlingRoute'
;
// 加工能力
import
BalaceRoute
from
'./balanceRoute'
;
const
routes
=
[
CommodityRoute
,
MemberRoute
,
ShopRoute
,
ChannelRoute
,
TranactionRoute
,
AfterService
,
PayandSettleRoute
,
LogisticsRoute
,
AuthConfigRoute
,
HandlingRoute
,
BalaceRoute
]
// import CommodityRoute from './commodityRoute' // 商品能力路由
// import MemberRoute from './memberRoute' // 会员能力路由
// import ShopRoute from './shopRoute' // 店铺能力路由
// import ChannelRoute from './channelRoute' // 渠道能力路由
// import TranactionRoute from './tranactionRoute' // 交易能力路由
// import LogisticsRoute from './logisticsRoutes' // 物流能力路由
// import PayandSettleRoute from './payandSettle' //支付与结算
// import AuthConfigRoute from './authConfigRoute'
// import AfterService from './afterServiceRoute' // 售后
// import HandlingRoute from './handlingRoute'; // 加工能力
// import BalaceRoute from './balanceRoute';
import
asyncRoutes
from
'../router.config.json'
// export const routes = [CommodityRoute, MemberRoute, ShopRoute, ChannelRoute, TranactionRoute, AfterService, PayandSettleRoute, LogisticsRoute, AuthConfigRoute, HandlingRoute, BalaceRoute]
const
memberCenterRoute
=
{
path
:
'/memberCenter'
,
...
...
@@ -41,7 +42,7 @@ const memberCenterRoute = {
// component: '@/pages/index',
component
:
'@/pages/home'
,
},
...
r
outes
,
...
asyncR
outes
,
{
path
:
'/memberCenter/noAuth'
,
auth
:
false
,
...
...
package.json
View file @
a3e77766
...
...
@@ -27,7 +27,8 @@
"start:cross"
:
"cross-env SITE_ID=352 USE_ROUTE_CONFIG=false SOCKET_URL=ws://10.0.0.25:9400 yarn start"
,
"start:scm"
:
"cross-env SITE_ID=1 BACK_GATEWAY=http://lingxi-scm.wg.shushangyun.com USE_ROUTE_CONFIG=false SOCKET_URL=ws://lingxi-scm.wg.shushangyun.com yarn start"
,
"start:url"
:
"cross-env SITE_ID=1 BACK_GATEWAY=http://lingxi-all.wg.shushangyun.com USE_ROUTE_CONFIG=true SOCKET_URL=ws://lingxi-all.wg.shushangyun.com yarn start"
,
"start:10"
:
"cross-env SITE_ID=1 BACK_GATEWAY=http://10.0.0.10:8100 USE_ROUTE_CONFIG=true SOCKET_URL=ws://10.0.0.10:9400 yarn start"
"start:10"
:
"cross-env SITE_ID=1 BACK_GATEWAY=http://10.0.0.10:8100 USE_ROUTE_CONFIG=true SOCKET_URL=ws://10.0.0.10:9400 yarn start"
,
"start:25"
:
"cross-env SITE_ID=1 BACK_GATEWAY=http://10.0.0.25:8100 USE_ROUTE_CONFIG=true SOCKET_URL=ws://10.0.0.25:9400 yarn start"
},
"lint-staged"
:
{
"*.{js,jsx,less,md,json}"
:
[
...
...
scripts/gulpfile.js
View file @
a3e77766
...
...
@@ -8,16 +8,17 @@ const fetchConfig = require(runFile).fetchConfig
const
gulp
=
require
(
'gulp'
)
const
json2ts
=
require
(
'json2ts'
)
const
uploadBuildStram
=
require
(
'./build'
)
const
pullRemoteRouter
=
require
(
'./pullRemoteRouterList'
)
const
rootPath
=
'../'
;
const
outputPath
=
path
.
resolve
(
__dirname
,
rootPath
,
'config/base.config.json'
)
const
outputPath
=
path
.
resolve
(
__dirname
,
rootPath
,
'config/base.config.json'
)
const
outputDts
=
path
.
resolve
(
__dirname
,
rootPath
,
'src/global/config/global.d.ts'
)
// Logs.start('gulp start')
gulp
.
task
(
'start'
,
gulp
.
series
(
done
=>
{
getAsyncConfig
(
done
)
startRemotePull
(
done
)
}))
gulp
.
task
(
'upload'
,
gulp
.
series
(
done
=>
{
...
...
@@ -59,10 +60,18 @@ function genarateDtsFile(json, done) {
}
/**
* 异步读取远程路由并写入
*/
async
function
startRemotePull
(
done
)
{
await
pullRemoteRouter
()
getAsyncConfig
(
done
)
}
/**
* 异步获取远程配置
* @todo
*/
async
function
getAsyncConfig
(
done
)
{
const
data
=
await
fetchConfig
()
genarateBaseJson
(
data
,
done
)
}
\ No newline at end of file
}
scripts/pullRemoteRouterList.js
0 → 100644
View file @
a3e77766
/**
* 用于在项目开始前获取所有的配置
* 在项目开始前运行`yarn scripts:build`
* @todo 缺少异常处理清空
* @author xjm
*/
const
Axios
=
require
(
'axios'
).
default
;
const
deepClone
=
require
(
'clone'
)
const
fs
=
require
(
'fs'
)
const
path
=
require
(
'path'
)
const
BACK_GATEWAY
=
process
.
env
.
BACK_GATEWAY
const
source
=
1
const
remoteUrl
=
BACK_GATEWAY
||
process
.
argv
[
2
]
||
'http://10.0.0.25:8100'
console
.
log
(
`\n当前访问的后端url是
${
remoteUrl
}
!!!!!!`
)
const
axios
=
Axios
.
create
({
baseURL
:
remoteUrl
,
responseType
:
'json'
,
})
const
serviceConfig
=
{
//初始化会员支付策略配置
router
:
{
componentList
:
{
url
:
'/system/menu/code/list'
,
method
:
'get'
,
params
:
{
source
}
},
routerList
:
{
url
:
'/system/menu/tree'
,
method
:
'get'
,
params
:
{
source
}
}
},
}
function
code2component
(
components
,
codes
)
{
components
.
forEach
(
v
=>
{
if
(
v
.
routes
)
{
code2component
(
v
.
routes
,
codes
)
}
if
(
v
.
component
)
{
const
codeResult
=
codes
.
find
(
c
=>
c
.
code
===
v
.
component
)
if
(
!
codeResult
)
{
console
.
error
(
`出现不匹配的component->
${
v
.
component
}
\n`
)
}
v
.
component
=
codeResult
.
url
}
})
}
// 批量组装接口
async
function
batchAxiosHttps
()
{
const
asyncHttpQueue
=
deepClone
(
serviceConfig
)
const
httpErrorQueue
=
[]
const
serverErrorQueue
=
[]
console
.
log
(
'
\
n'
)
for
(
const
item
in
serviceConfig
)
{
if
(
JSON
.
stringify
(
item
)
!==
'{}'
)
{
for
(
const
subItem
in
serviceConfig
[
item
])
{
try
{
const
data
=
await
axios
(
serviceConfig
[
item
][
subItem
])
// 当接口出错时 不写入json文件
if
(
data
.
data
.
code
===
1000
)
{
asyncHttpQueue
[
item
][
subItem
]
=
data
.
data
.
data
}
else
{
serverErrorQueue
.
push
({
...
asyncHttpQueue
[
item
][
subItem
],
...
data
.
data
})
// 默认置为null
asyncHttpQueue
[
item
][
subItem
]
=
null
}
}
catch
(
err
)
{
httpErrorQueue
.
push
({
...
serviceConfig
[
item
][
subItem
],
...
err
.
response
.
data
})
}
}
}
}
if
(
httpErrorQueue
.
length
>
0
)
{
console
.
log
(
'
\
n网络错误
\
n'
)
// 可在此做日志收集
console
.
log
(
httpErrorQueue
)
}
if
(
serverErrorQueue
.
length
>
0
)
{
console
.
log
(
'接口服务错误
\
n'
)
// 可在此做日志收集
console
.
log
(
serverErrorQueue
)
}
if
(
httpErrorQueue
.
length
>
0
||
serverErrorQueue
.
length
>
0
)
{
// 退出构建
console
.
log
(
'
\
n脚本构建失败!!!!!!'
)
// 终止当前进程
process
.
exit
(
1
)
}
// fs.writeFile(path.resolve(__dirname, '../config/component.config.json'), `${JSON.stringify(asyncHttpQueue.router.componentList)}`, function(err) {
// if (err) throw err
// })
// code2component(asyncHttpQueue.router.routerList, asyncHttpQueue.router.componentList)
fs
.
writeFile
(
path
.
resolve
(
__dirname
,
'../config/router.config.json'
),
`
${
JSON
.
stringify
(
asyncHttpQueue
.
router
.
routerList
)}
`
,
function
(
err
)
{
if
(
err
)
throw
err
})
}
module
.
exports
=
batchAxiosHttps
src/layouts/BasicLayout.tsx
View file @
a3e77766
...
...
@@ -91,8 +91,8 @@ const BasicLayout: React.FC<BasicLayoutProps> = (props) => {
return
list
[
0
]
}
const
{
formatMessage
}
=
useIntl
();
const
basicInfo
=
getMenuData
(
props
.
route
.
routes
,
{
locale
:
true
},
formatMessage
)
//
const { formatMessage } = useIntl();
const
basicInfo
=
getMenuData
(
props
.
route
.
routes
,
{
locale
:
false
}
)
const
menuData
=
basicInfo
.
menuData
?
basicInfo
.
menuData
.
filter
(
item
=>
!
item
.
redirect
)
:
[]
const
menuRouter
=
getMenuRouter
(
menuData
,
location
.
pathname
)
...
...
@@ -156,7 +156,7 @@ const BasicLayout: React.FC<BasicLayoutProps> = (props) => {
// contentStyle={{minWidth: '1280px'}}
style=
{
prolayoutStyle
}
logo=
{
logo
}
formatMessage=
{
formatMessage
}
//
formatMessage={formatMessage}
menuHeaderRender=
{
(
logoDom
,
titleDom
)
=>
(
<
Link
to=
"/"
>
{
logoDom
}
...
...
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