Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wenHuaBu_adminServer
Overview
Overview
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
node_server
wenHuaBu_adminServer
Commits
ed379596
Commit
ed379596
authored
Mar 14, 2024
by
chenjinjing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
会员管理
parent
c24b76f7
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
387 additions
and
143 deletions
+387
-143
authority.ts
src/biz/member/authority.ts
+92
-0
examine.ts
src/biz/member/examine.ts
+14
-49
member.ts
src/biz/member/member.ts
+26
-17
memberFees.ts
src/biz/member/memberFees.ts
+70
-0
user.ts
src/biz/member/user.ts
+2
-1
wenZiZiLiao.ts
src/biz/portal/dangJianGonZuo/wenZiZiLiao.ts
+1
-1
zhuanTiXiLie.ts
src/biz/portal/shouYe/zhuanTiXiLie.ts
+1
-1
enum.ts
src/config/enum.ts
+1
-1
model.ts
src/data/models/model.ts
+3
-3
router.ts
src/routers/member/router.ts
+159
-70
router.ts
src/routers/public/router.ts
+18
-0
No files found.
src/biz/member/authority.ts
0 → 100644
View file @
ed379596
/**
* 会员管理
*/
import
{
INDIVIDUALMEMBERTYPE
,
MEMBERLEVEL
,
MEMBERSTATE
,
MEMBERTYPE
,
UNITMEMBERTYPE
}
from
"../../config/enum"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
findCount
,
findOnce
,
findToPage
}
from
"../../data/select"
;
import
{
updateOneData
}
from
"../../data/update"
;
import
{
successResult
}
from
"../../tools/system"
;
import
{
BizError
}
from
"../../util/bizError"
;
import
{
extractData
}
from
"../../util/piecemeal"
;
import
{
changeEnumValue
}
from
"../../util/verificationEnum"
;
/**
* 会员权限列表
* @param unitName 单位名称
* @param memberLevel 会员等级、职务 MEMBERLEVEL
* @param memberCategory 会员类别、会员级别 UNITMEMBERTYPE、INDIVIDUALMEMBERTYPE
* @param pageNumber 当前页
*/
export
async
function
getAuthority
({
unitName
,
memberLevel
,
memberCategory
,
pageNumber
})
{
let
selectParam
:
any
=
{};
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
memberLevel
)
selectParam
.
memberLevel
=
memberLevel
;
if
(
memberCategory
||
memberCategory
>=
9
)
selectParam
.
unitMemberType
=
memberCategory
;
if
(
memberCategory
||
memberCategory
<
9
)
selectParam
.
individualMemberType
=
memberCategory
;
let
selectConf
=
[
"userId"
,
"memberState"
,
"unitName"
,
"memberLevel"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
[],
pageNumber
,
10
);
let
dataCount
=
await
findCount
(
TABLEENUM
.
用户表
,
selectParam
);
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
if
(
info
.
memberType
==
MEMBERTYPE
.
个人会员
)
{
selectConf
.
push
(
"individualMemberType"
);
}
else
{
selectConf
.
push
(
"unitMemberType"
);
}
let
item
:
any
=
extractData
(
info
,
selectConf
);
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
item
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
if
(
item
.
individualMemberType
)
item
.
individualMemberType
=
changeEnumValue
(
INDIVIDUALMEMBERTYPE
,
item
.
individualMemberType
);
if
(
item
.
unitMemberType
)
item
.
unitMemberType
=
changeEnumValue
(
UNITMEMBERTYPE
,
item
.
unitMemberType
);
dataList
.
push
(
item
);
});
return
{
dataList
,
dataCount
};
}
/**
* 变更权限
* @param param0
*/
export
async
function
updateAuthority
({
form
,
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
form
);
return
successResult
();
}
/**
* 冻结
* @param param0
*/
export
async
function
freeze
({
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
{
memberState
:
MEMBERSTATE
.
冻结
});
return
successResult
();
}
src/biz/member/examine.ts
View file @
ed379596
...
...
@@ -11,13 +11,17 @@ import { updateOneData } from "../../data/update";
import
{
generateSystemId
,
successResult
}
from
"../../tools/system"
;
import
{
BizError
}
from
"../../util/bizError"
;
import
{
extractData
}
from
"../../util/piecemeal"
;
import
{
changeEnumValue
}
from
"../../util/verificationEnum"
;
import
{
changeEnumValue
,
eccEnumValue
}
from
"../../util/verificationEnum"
;
/**
* 待审核列表
* @param param0
*/
export
async
function
pendingReviewList
({
unitName
,
joinTime
,
memberType
,
sheng
,
shi
,
qu
,
pageNumber
})
{
/**校验枚举 */
const
EccFuncName
=
'待审核列表'
;
eccEnumValue
(
EccFuncName
,
'会员类型'
,
MEMBERTYPE
,
memberType
);
let
selectParam
:
any
=
{};
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
...
...
@@ -35,8 +39,8 @@ export async function pendingReviewList({unitName, joinTime, memberType, sheng,
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
selectConf
);
if
(
!
item
.
userRegisterState
)
item
.
userRegisterState
=
"待审核"
;
else
changeEnumValue
(
USERREGISTERSTATE
,
item
.
userRegisterState
);
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
else
item
.
userRegisterState
=
changeEnumValue
(
USERREGISTERSTATE
,
item
.
userRegisterState
);
item
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
dataList
.
push
(
item
);
});
...
...
@@ -111,7 +115,7 @@ export async function approvalHistoryList({userId}) {
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
dataList
:
any
=
extractData
(
oldInfo
,
[
"operationTime"
,
"operationBehavior"
,
"remarks"
]);
changeEnumValue
(
OPERATIONREHAVIOR
,
dataList
.
operationBehavior
);
dataList
.
operationBehavior
=
changeEnumValue
(
OPERATIONREHAVIOR
,
dataList
.
operationBehavior
);
return
dataList
;
}
...
...
@@ -121,6 +125,10 @@ export async function approvalHistoryList({userId}) {
* 待支付列表
*/
export
async
function
toBePaidList
({
unitName
,
joinTime
,
memberType
,
paymentStatus
,
pageNumber
})
{
/**校验枚举 */
const
EccFuncName
=
'待审核列表'
;
eccEnumValue
(
EccFuncName
,
'会员类型'
,
MEMBERTYPE
,
memberType
);
let
selectParam
:
any
=
{};
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
...
...
@@ -134,8 +142,8 @@ export async function toBePaidList({unitName, joinTime, memberType, paymentStatu
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
selectConf
);
changeEnumValue
(
MEMBERTYPE
,
item
.
memberType
);
changeEnumValue
(
PAYMENTSTATUS
,
item
.
paymentStatus
);
item
.
memberType
=
changeEnumValue
(
MEMBERTYPE
,
item
.
memberType
);
item
.
paymentStatus
=
changeEnumValue
(
PAYMENTSTATUS
,
item
.
paymentStatus
);
dataList
.
push
(
item
);
});
...
...
@@ -158,20 +166,6 @@ export async function passThroughPaid({userId}) {
}
/**
* 获取届次
* @param year 入会年份
...
...
@@ -200,32 +194,3 @@ export async function getEdition(year, month) {
src/biz/member/member.ts
View file @
ed379596
...
...
@@ -19,14 +19,22 @@ import { deleteManyData, deleteOneData } from "../../data/delete";
/**
* 单位会员列表
* @param param0
* @param unitName 单位名称
* @param joinTime 入会时间
* @param unitMemberType 单位会员所属类型 UNITMEMBERTYPE
* @param memberLevel 会员等级 职务 MEMBERLEVEL
* @param session 届次
* @param sheng 省
* @param shi 市
* @param qu 区
* @param pageNumber 当前页
*/
export
async
function
unitMemberList
({
unitName
,
joinTime
,
unitMemberType
,
workDuties
,
session
,
sheng
,
shi
,
qu
,
pageNumber
})
{
export
async
function
unitMemberList
({
unitName
,
joinTime
,
unitMemberType
,
memberLevel
,
session
,
sheng
,
shi
,
qu
,
pageNumber
})
{
let
selectParam
:
any
=
{};
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
if
(
unitMemberType
)
selectParam
.
unitMemberType
=
unitMemberType
;
if
(
workDuties
)
selectParam
.
workDuties
=
workDuties
;
if
(
memberLevel
)
selectParam
.
memberLevel
=
memberLevel
;
if
(
session
)
selectParam
.
session
=
session
;
if
(
sheng
)
selectParam
.
sheng
=
sheng
;
if
(
shi
)
selectParam
.
shi
=
shi
;
...
...
@@ -41,9 +49,9 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, workDu
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
selectConf
);
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
if
(
!
item
.
memberLevel
)
item
.
memberLevel
=
"未选择"
;
else
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
else
item
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
dataList
.
push
(
item
);
});
...
...
@@ -67,7 +75,7 @@ export async function unitMemberDetails({userId}) {
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
topInfo
:
any
=
extractData
(
oldInfo
,
[
"session"
,
"memberLevel"
]);
changeEnumValue
(
MEMBERLEVEL
,
topInfo
.
memberLevel
);
topInfo
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
topInfo
.
memberLevel
);
let
basicInfo
=
extractData
(
oldInfo
,
UnitBasicConfig
);
let
unitInfo
=
extractData
(
oldInfo
,
UnitConfig
);
...
...
@@ -88,8 +96,8 @@ export async function unitMemberUpdate({form, keyanForm, userId}) {
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
/**校验枚举 */
c
hangeEnumValue
(
UNITINFOTYPE
,
form
.
unitInfoType
)
;
changeEnumValue
(
UNITINFOTYPE
,
form
.
unitInfoType
);
c
onst
EccFuncName
=
'单位会员修改'
;
eccEnumValue
(
EccFuncName
,
'单位信息类型'
,
UNITINFOTYPE
,
form
.
unitInfoType
);
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
...
...
@@ -162,13 +170,13 @@ export async function memberRegisterSendCode({loginId, phone, codeType}) {
* 个人会员列表
* @param param0
*/
export
async
function
individualMemberList
({
name
,
documentId
,
phone
,
memberLevel
,
workDuties
,
session
,
joinTime
,
auditTime
,
memberState
,
pageNumber
})
{
export
async
function
individualMemberList
({
name
,
documentId
,
phone
,
individualMemberType
,
memberLevel
,
session
,
joinTime
,
auditTime
,
memberState
,
pageNumber
})
{
let
selectParam
:
any
=
{};
if
(
name
)
selectParam
.
name
=
name
;
if
(
documentId
)
selectParam
.
documentId
=
documentId
;
if
(
phone
)
selectParam
.
phone
=
phone
;
if
(
individualMemberType
)
selectParam
.
individualMemberType
=
individualMemberType
;
if
(
memberLevel
)
selectParam
.
memberLevel
=
memberLevel
;
if
(
workDuties
)
selectParam
.
workDuties
=
workDuties
;
if
(
session
)
selectParam
.
session
=
session
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
if
(
auditTime
)
selectParam
.
auditTime
=
auditTime
;
...
...
@@ -183,9 +191,9 @@ export async function individualMemberList({name, documentId, phone, memberLevel
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
selectConf
);
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
if
(
!
item
.
memberLevel
)
item
.
memberLevel
=
"未选择"
;
else
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
else
item
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
dataList
.
push
(
item
);
});
...
...
@@ -200,21 +208,21 @@ export async function individualMemberList({name, documentId, phone, memberLevel
*/
const
IndividualBasicConfig
=
[
"name"
,
"sex"
,
"nation"
,
"birth"
,
"documentType"
,
"documentId"
,
"sheng"
,
"shi"
,
"qu"
,
"addres"
,
"photoUrl"
];
const
SpecialityConfig
=
[
"unitName"
,
"
workDuties
"
,
"workTitle"
,
"profCategory"
,
"studyResume"
,
"workResume"
,
"profAchievement"
,
"otherEMP"
,
"otherPROF"
];
const
SpecialityConfig
=
[
"unitName"
,
"
memberLevel
"
,
"workTitle"
,
"profCategory"
,
"studyResume"
,
"workResume"
,
"profAchievement"
,
"otherEMP"
,
"otherPROF"
];
export
async
function
individualMemberDetails
({
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
topInfo
:
any
=
extractData
(
oldInfo
,
[
"session"
,
"memberLevel"
]);
changeEnumValue
(
MEMBERLEVEL
,
topInfo
.
memberLevel
);
topInfo
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
topInfo
.
memberLevel
);
let
basicInfo
:
any
=
extractData
(
oldInfo
,
IndividualBasicConfig
);
changeEnumValue
(
DOCUMENTTYPE
,
basicInfo
.
documentType
);
changeEnumValue
(
NATION
,
basicInfo
.
nation
);
basicInfo
.
documentType
=
changeEnumValue
(
DOCUMENTTYPE
,
basicInfo
.
documentType
);
basicInfo
.
nation
=
changeEnumValue
(
NATION
,
basicInfo
.
nation
);
let
specialityInfo
:
any
=
extractData
(
oldInfo
,
SpecialityConfig
);
changeEnumValue
(
PROFCATEGORY
,
basicInfo
.
profCategory
);
basicInfo
.
profCategory
=
changeEnumValue
(
PROFCATEGORY
,
basicInfo
.
profCategory
);
let
otherAttachment
:
any
=
extractData
(
oldInfo
,
[
"cardUrl"
,
"academicCERTUrl"
,
"professionalCERTUrl"
,
"auxiliaryMaterial"
]);
...
...
@@ -295,6 +303,7 @@ export async function memberRegister2({form, userId}) {
eccEnumValue
(
EccFuncName
,
'证件类型'
,
DOCUMENTTYPE
,
form
.
documentType
);
eccEnumValue
(
EccFuncName
,
'民族'
,
NATION
,
form
.
nation
);
eccEnumValue
(
EccFuncName
,
'专业类别'
,
PROFCATEGORY
,
form
.
profCategory
);
eccEnumValue
(
EccFuncName
,
'会员等级职务'
,
MEMBERLEVEL
,
form
.
memberLevel
);
form
.
registerFlow
=
REGISTERFLOW
.
个人会员注册
2
;
//todo 审核成功后修改
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
form
);
...
...
src/biz/member/memberFees.ts
0 → 100644
View file @
ed379596
/**
* 会费管理逻辑
*/
import
{
MEMBERSTATE
,
MEMBERTYPE
,
PAYMENTSTATUS
}
from
"../../config/enum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
findCount
,
findToPage
}
from
"../../data/select"
;
import
{
extractData
}
from
"../../util/piecemeal"
;
import
{
changeEnumValue
}
from
"../../util/verificationEnum"
;
/**
* 已缴费列表
*/
export
async
function
getPaid
({
unitName
,
joinTime
,
memberType
,
pageNumber
})
{
let
now
=
new
Date
().
valueOf
();
let
selectParam
:
any
=
{
"$and"
:[
{
lifespanStartTime
:{
"$lt"
:
now
}},
{
lifespanEndTime
:{
"$gt"
:
now
}}
]};
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
if
(
memberType
)
selectParam
.
memberType
=
memberType
;
let
selectConf
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
[],
pageNumber
,
10
);
let
dataCount
=
await
findCount
(
TABLEENUM
.
用户表
,
selectParam
);
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
selectConf
);
item
.
lifespanTime
=
item
.
lifespanStartTime
+
"至"
+
item
.
lifespanEndTime
;
item
.
nextLifespanTime
=
""
;
if
(
item
.
lifespanEndTime
-
now
>
90
)
item
.
nextLifespanTime
=
"大于90天"
;
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
item
.
memberType
=
changeEnumValue
(
MEMBERTYPE
,
item
.
memberType
);
dataList
.
push
(
item
);
});
return
{
dataList
,
dataCount
};
}
/**
* 续费期
*/
export
async
function
getRenewalPeriod
()
{
}
/**
* 欠费
*/
export
async
function
getArrearsFees
()
{
}
/**
* 宽限期
*/
export
async
function
getGracePeriod
()
{
}
\ No newline at end of file
src/biz/member/user.ts
View file @
ed379596
...
...
@@ -2,7 +2,7 @@
* 用户逻辑
*/
import
{
DOCUMENTTYPE
,
MEMBERTYPE
,
NATION
,
PROFCATEGORY
,
SEX
,
UNITINFOTYPE
}
from
"../../config/enum"
;
import
{
DOCUMENTTYPE
,
MEMBER
LEVEL
,
MEMBER
TYPE
,
NATION
,
PROFCATEGORY
,
SEX
,
UNITINFOTYPE
}
from
"../../config/enum"
;
import
{
ERRORCODEENUM
,
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
addOneData
}
from
"../../data/add"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
...
...
@@ -24,6 +24,7 @@ export async function signInOfEntity({form}) {
eccEnumValue
(
EccFuncName
,
'证件类型'
,
DOCUMENTTYPE
,
form
.
documentType
);
eccEnumValue
(
EccFuncName
,
'民族'
,
NATION
,
form
.
nation
);
eccEnumValue
(
EccFuncName
,
'专业类别'
,
PROFCATEGORY
,
form
.
profCategory
);
eccEnumValue
(
EccFuncName
,
'会员等级职务'
,
MEMBERLEVEL
,
form
.
memberLevel
);
let
oldData
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
"$or"
:[{
loginId
:
form
.
loginId
},
{
phone
:
form
.
phone
},
{
mail
:
form
.
mail
}]
});
if
(
oldData
&&
oldData
.
userId
)
{
...
...
src/biz/portal/dangJianGonZuo/wenZiZiLiao.ts
View file @
ed379596
...
...
@@ -36,7 +36,7 @@ export async function list({userId, type}) {
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
[
"id"
,
"title"
,
"rank"
,
"position"
,
"articleTitle"
]);
if
(
!
item
.
position
)
item
.
position
=
"未选择"
;
else
changeEnumValue
(
ARTICLEPOSITION
,
item
.
position
);
else
item
.
position
=
changeEnumValue
(
ARTICLEPOSITION
,
item
.
position
);
dataList
.
push
(
item
);
});
...
...
src/biz/portal/shouYe/zhuanTiXiLie.ts
View file @
ed379596
...
...
@@ -35,7 +35,7 @@ export async function list({userId}) {
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
[
"id"
,
"title"
,
"articleUrl"
,
"position"
,
"articleTitle"
,
"imgUrl"
]);
if
(
!
item
.
position
)
item
.
position
=
"未选择"
;
else
changeEnumValue
(
ARTICLEPOSITION
,
item
.
position
);
else
item
.
position
=
changeEnumValue
(
ARTICLEPOSITION
,
item
.
position
);
dataList
.
push
(
item
);
});
...
...
src/config/enum.ts
View file @
ed379596
...
...
@@ -335,7 +335,7 @@ export enum INDIVIDUALMEMBERTYPE {
/**
* 会员等级
* 会员等级
会员职务
*/
export
enum
MEMBERLEVEL
{
普通会员
=
1
,
...
...
src/data/models/model.ts
View file @
ed379596
...
...
@@ -86,6 +86,7 @@ enum TABLEENUM {
单位所获得科研成果表
=
"scientificResearch"
,
验证码表
=
"code"
,
审批历史表
=
"approvalHistory"
,
权限表
=
"authority"
,
}
const
ModelArray
=
[
...
...
@@ -353,7 +354,6 @@ const ModelArray = [
addres
:
'String'
,
//通信地址
photoUrl
:
'String'
,
//证件照图片地址 蓝底证件照
workUnit
:
'String'
,
//工作单位
workDuties
:
'String'
,
//职务
workTitle
:
'String'
,
//职称
userRegisterState
:{
type
:
'Number'
,
default
:
USERREGISTERSTATE
.
待审核
,
index
:
true
},
//用户注册状态 枚举
registerFlow
:
'Number'
,
//会员注册流程 枚举
...
...
@@ -362,7 +362,7 @@ const ModelArray = [
askForTime
:
'Number'
,
//申请时间
joinTime
:
'Number'
,
//入会时间
session
:
'String'
,
//届次
memberLevel
:
'Number'
,
//会员等级 枚举
memberLevel
:
'Number'
,
//会员等级
、职务
枚举
lifespanStartTime
:
'Number'
,
//会员有效期开始时间 时间戳
lifespanEndTime
:
'Number'
,
//会员有效期结束时间 时间戳
isGracePeriod
:{
type
:
'Number'
,
default
:
0
},
//是否宽限期 0:否, 1:是
...
...
@@ -470,7 +470,7 @@ const ModelArray = [
operationBehavior
:{
type
:
'Number'
,
index
:
true
},
//操作行为 枚举
remarks
:{
type
:
'String'
,
index
:
true
},
//备注
}
}
}
,
];
...
...
src/routers/member/router.ts
View file @
ed379596
import
*
as
userBiz
from
"../../biz/member/user"
;
import
*
as
memberBiz
from
"../../biz/member/member"
;
import
*
as
examineBiz
from
"../../biz/member/examine"
;
import
*
as
memberFeesBiz
from
"../../biz/member/memberFees"
;
import
*
as
authorityBiz
from
"../../biz/member/authority"
;
export
const
FirstName
=
'会员管理路由'
;
export
const
FirstRouter
=
'/manage/member'
;
...
...
@@ -29,7 +31,7 @@ export const Config = {
addres
:{
type
:
'String'
,
desc
:
"通信地址"
},
photoUrl
:{
type
:
'String'
,
desc
:
"证件照图片地址"
},
workUnit
:{
type
:
'String'
,
desc
:
"工作单位"
},
workDuties
:{
type
:
'String'
,
desc
:
"职务"
},
memberLevel
:{
type
:
'String'
,
desc
:
"职务"
},
workTitle
:{
type
:
'String'
,
desc
:
"职称"
},
profCategory
:{
type
:
'Number'
,
desc
:
"专业类别"
},
studyResume
:{
type
:
'String'
,
desc
:
"学习简历"
},
...
...
@@ -115,7 +117,7 @@ export const Config = {
{
key
:
"unitName"
,
type
:
"String"
,
desc
:
"单位名称"
,
isNull
:
true
},
{
key
:
"joinTime"
,
type
:
"Number"
,
desc
:
"入会时间"
,
isNull
:
true
},
{
key
:
"unitMemberType"
,
type
:
"Number"
,
desc
:
"单位会员类型"
,
isNull
:
true
},
{
key
:
"
workDuties"
,
type
:
"String"
,
desc
:
"
职务"
,
isNull
:
true
},
{
key
:
"
memberLevel"
,
type
:
"Number"
,
desc
:
"会员等级
职务"
,
isNull
:
true
},
{
key
:
"session"
,
type
:
"String"
,
desc
:
"届次"
,
isNull
:
true
},
//todo
{
key
:
"sheng"
,
type
:
"String"
,
desc
:
"省"
,
isNull
:
true
},
{
key
:
"shi"
,
type
:
"String"
,
desc
:
"市"
,
isNull
:
true
},
...
...
@@ -131,8 +133,8 @@ export const Config = {
{
key
:
"name"
,
type
:
"String"
,
desc
:
"姓名"
,
isNull
:
true
},
{
key
:
"documentId"
,
type
:
"String"
,
desc
:
"身份证"
,
isNull
:
true
},
{
key
:
"phone"
,
type
:
"String"
,
desc
:
"手机号"
,
isNull
:
true
},
{
key
:
"individualMemberType"
,
type
:
"Number"
,
desc
:
"级别、会员类型"
,
isNull
:
true
},
{
key
:
"memberLevel"
,
type
:
"Number"
,
desc
:
"会员等级"
,
isNull
:
true
},
{
key
:
"workDuties"
,
type
:
"String"
,
desc
:
"职务"
,
isNull
:
true
},
{
key
:
"session"
,
type
:
"String"
,
desc
:
"届次"
,
isNull
:
true
},
{
key
:
"joinTime"
,
type
:
"Number"
,
desc
:
"入会时间"
,
isNull
:
true
},
{
key
:
"auditTime"
,
type
:
"Number"
,
desc
:
"审核时间"
,
isNull
:
true
},
...
...
@@ -241,7 +243,7 @@ export const Config = {
photoUrl
:{
type
:
'String'
,
desc
:
'蓝底证件照'
},
/**专业信息 */
workUnit
:{
type
:
'String'
,
desc
:
'工作单位'
},
workDuties
:{
type
:
'String'
,
desc
:
'
职务'
},
memberLevel
:{
type
:
'Number'
,
desc
:
'会员等级
职务'
},
workTitle
:{
type
:
'String'
,
desc
:
'职称'
},
profCategory
:{
type
:
'Number'
,
desc
:
'专业类别'
},
studyResume
:{
type
:
'String'
,
desc
:
'学习简历'
},
...
...
@@ -279,12 +281,12 @@ export const Config = {
{
key
:
"form"
,
type
:
"Object"
,
sub
:
{
loginId
:{
type
:
'String'
,
desc
:
'用户名'
},
mail
:{
type
:
'String'
,
desc
:
'邮箱'
},
pwd
:{
type
:
'String'
,
desc
:
'密码'
},
confirmation
:{
type
:
'String'
,
desc
:
'确认密码'
},
phone
:{
type
:
'String'
,
desc
:
'联系人手机号'
},
codeNum
:{
type
:
'String'
,
desc
:
'验证码'
},
loginId
:{
type
:
'String'
,
desc
:
'用户名'
,
notMustHave
:
false
},
mail
:{
type
:
'String'
,
desc
:
'邮箱'
,
notMustHave
:
false
},
pwd
:{
type
:
'String'
,
desc
:
'密码'
,
notMustHave
:
false
},
confirmation
:{
type
:
'String'
,
desc
:
'确认密码'
,
notMustHave
:
false
},
phone
:{
type
:
'String'
,
desc
:
'联系人手机号'
,
notMustHave
:
false
},
codeNum
:{
type
:
'String'
,
desc
:
'验证码'
,
notMustHave
:
false
},
}
},
{
key
:
"codeId"
,
type
:
"String"
,
desc
:
"验证码Id"
}
...
...
@@ -298,31 +300,31 @@ export const Config = {
{
key
:
"form"
,
type
:
"Object"
,
sub
:
{
name
:{
type
:
'String'
,
desc
:
'真实姓名'
},
sex
:{
type
:
'Number'
,
desc
:
'性别'
},
documentType
:{
type
:
'Number'
,
desc
:
'证件类型'
},
documentId
:{
type
:
'String'
,
desc
:
'证件号码'
},
birth
:{
type
:
'Number'
,
desc
:
'出生年月'
},
nation
:{
type
:
'Number'
,
desc
:
'民族'
},
sheng
:{
type
:
'String'
,
desc
:
'省'
},
shi
:{
type
:
'String'
,
desc
:
'市'
},
qu
:{
type
:
'String'
,
desc
:
'区'
},
addres
:{
type
:
'String'
,
desc
:
'通信地址'
},
education
:{
type
:
'Number'
,
desc
:
'学历'
},
photoUrl
:{
type
:
'String'
,
desc
:
'蓝底证件照'
},
workUnit
:{
type
:
'String'
,
desc
:
'工作单位'
},
workDuties
:{
type
:
'String'
,
desc
:
'职务'
},
workTitle
:{
type
:
'String'
,
desc
:
'职称'
},
profCategory
:{
type
:
'Number'
,
desc
:
'专业类别'
},
studyResume
:{
type
:
'String'
,
desc
:
'学习简历'
},
workResume
:{
type
:
'String'
,
desc
:
'工作简历'
},
profAchievement
:{
type
:
'String'
,
desc
:
'专业成果'
},
otherEMP
:{
type
:
'String'
,
desc
:
'在其他社会组织任职情况'
},
otherPROF
:{
type
:
'String'
,
desc
:
'其他与本学会专业有关的情况'
},
cardUrl
:{
type
:
'[String]'
,
desc
:
'个人身份证扫描件'
},
academicCERTUrl
:{
type
:
'String'
,
desc
:
'个人学历证明扫描件'
},
professionalCERTUrl
:{
type
:
'String'
,
desc
:
'个人工作证明扫描件'
},
auxiliaryMaterial
:{
type
:
'[String]'
,
desc
:
'论文发表等证明工作成果或成绩的材料'
},
name
:{
type
:
'String'
,
desc
:
'真实姓名'
,
notMustHave
:
false
},
sex
:{
type
:
'Number'
,
desc
:
'性别'
,
notMustHave
:
false
},
documentType
:{
type
:
'Number'
,
desc
:
'证件类型'
,
notMustHave
:
false
},
documentId
:{
type
:
'String'
,
desc
:
'证件号码'
,
notMustHave
:
false
},
birth
:{
type
:
'Number'
,
desc
:
'出生年月'
,
notMustHave
:
false
},
nation
:{
type
:
'Number'
,
desc
:
'民族'
,
notMustHave
:
false
},
sheng
:{
type
:
'String'
,
desc
:
'省'
,
notMustHave
:
false
},
shi
:{
type
:
'String'
,
desc
:
'市'
,
notMustHave
:
false
},
qu
:{
type
:
'String'
,
desc
:
'区'
,
notMustHave
:
false
},
addres
:{
type
:
'String'
,
desc
:
'通信地址'
,
notMustHave
:
false
},
education
:{
type
:
'Number'
,
desc
:
'学历'
,
notMustHave
:
false
},
photoUrl
:{
type
:
'String'
,
desc
:
'蓝底证件照'
,
notMustHave
:
false
},
workUnit
:{
type
:
'String'
,
desc
:
'工作单位'
,
notMustHave
:
false
},
memberLevel
:{
type
:
'Number'
,
desc
:
'会员等级职务'
,
notMustHave
:
false
},
workTitle
:{
type
:
'String'
,
desc
:
'职称'
,
notMustHave
:
false
},
profCategory
:{
type
:
'Number'
,
desc
:
'专业类别'
,
notMustHave
:
false
},
studyResume
:{
type
:
'String'
,
desc
:
'学习简历'
,
notMustHave
:
false
},
workResume
:{
type
:
'String'
,
desc
:
'工作简历'
,
notMustHave
:
false
},
profAchievement
:{
type
:
'String'
,
desc
:
'专业成果'
,
notMustHave
:
false
},
otherEMP
:{
type
:
'String'
,
desc
:
'在其他社会组织任职情况'
,
notMustHave
:
false
},
otherPROF
:{
type
:
'String'
,
desc
:
'其他与本学会专业有关的情况'
,
notMustHave
:
false
},
cardUrl
:{
type
:
'[String]'
,
desc
:
'个人身份证扫描件'
,
notMustHave
:
false
},
academicCERTUrl
:{
type
:
'String'
,
desc
:
'个人学历证明扫描件'
,
notMustHave
:
false
},
professionalCERTUrl
:{
type
:
'String'
,
desc
:
'个人工作证明扫描件'
,
notMustHave
:
false
},
auxiliaryMaterial
:{
type
:
'[String]'
,
desc
:
'论文发表等证明工作成果或成绩的材料'
,
notMustHave
:
false
},
}
},
{
...
...
@@ -338,12 +340,12 @@ export const Config = {
{
key
:
"form"
,
type
:
"Object"
,
sub
:
{
loginId
:{
type
:
'String'
,
desc
:
'用户名'
},
mail
:{
type
:
'String'
,
desc
:
'邮箱'
},
pwd
:{
type
:
'String'
,
desc
:
'密码'
},
confirmation
:{
type
:
'String'
,
desc
:
'确认密码'
},
phone
:{
type
:
'String'
,
desc
:
'联系人手机号'
},
codeNum
:{
type
:
'String'
,
desc
:
'验证码'
},
loginId
:{
type
:
'String'
,
desc
:
'用户名'
,
notMustHave
:
false
},
mail
:{
type
:
'String'
,
desc
:
'邮箱'
,
notMustHave
:
false
},
pwd
:{
type
:
'String'
,
desc
:
'密码'
,
notMustHave
:
false
},
confirmation
:{
type
:
'String'
,
desc
:
'确认密码'
,
notMustHave
:
false
},
phone
:{
type
:
'String'
,
desc
:
'联系人手机号'
,
notMustHave
:
false
},
codeNum
:{
type
:
'String'
,
desc
:
'验证码'
,
notMustHave
:
false
},
}
},
{
key
:
"codeId"
,
type
:
"String"
,
desc
:
"验证码Id"
}
...
...
@@ -357,36 +359,36 @@ export const Config = {
{
key
:
"form"
,
type
:
"Object"
,
sub
:
{
unitName
:{
type
:
'String'
,
desc
:
'单位名称'
},
addres
:{
type
:
'String'
,
desc
:
'通信地址'
},
uscc
:{
type
:
'String'
,
desc
:
'单位信用代码'
},
legalPerson
:{
type
:
'String'
,
desc
:
'法人代表'
},
legalPersonPhone
:{
type
:
'String'
,
desc
:
'法人联系电话'
},
sheng
:{
type
:
'String'
,
desc
:
'省'
},
shi
:{
type
:
'String'
,
desc
:
'市'
},
qu
:{
type
:
'String'
,
desc
:
'区'
},
contactPerson
:{
type
:
'String'
,
desc
:
'日常联系人'
},
contactPersonDuties
:{
type
:
'String'
,
desc
:
'日常联系人职务'
},
uusinessLicenseUrl
:{
type
:
'String'
,
desc
:
'营业执照复印件'
},
auxiliaryMaterial
:{
type
:
'[String]'
,
desc
:
'法人邮箱'
},
contactPersonPhone
:{
type
:
'[String]'
,
desc
:
'日常联系人手机'
},
unitName
:{
type
:
'String'
,
desc
:
'单位名称'
,
notMustHave
:
false
},
addres
:{
type
:
'String'
,
desc
:
'通信地址'
,
notMustHave
:
false
},
uscc
:{
type
:
'String'
,
desc
:
'单位信用代码'
,
notMustHave
:
false
},
legalPerson
:{
type
:
'String'
,
desc
:
'法人代表'
,
notMustHave
:
false
},
legalPersonPhone
:{
type
:
'String'
,
desc
:
'法人联系电话'
,
notMustHave
:
false
},
sheng
:{
type
:
'String'
,
desc
:
'省'
,
notMustHave
:
false
},
shi
:{
type
:
'String'
,
desc
:
'市'
,
notMustHave
:
false
},
qu
:{
type
:
'String'
,
desc
:
'区'
,
notMustHave
:
false
},
contactPerson
:{
type
:
'String'
,
desc
:
'日常联系人'
,
notMustHave
:
false
},
contactPersonDuties
:{
type
:
'String'
,
desc
:
'日常联系人职务'
,
notMustHave
:
false
},
uusinessLicenseUrl
:{
type
:
'String'
,
desc
:
'营业执照复印件'
,
notMustHave
:
false
},
auxiliaryMaterial
:{
type
:
'[String]'
,
desc
:
'法人邮箱'
,
notMustHave
:
false
},
contactPersonPhone
:{
type
:
'[String]'
,
desc
:
'日常联系人手机'
,
notMustHave
:
false
},
/**单位信息 */
unitInfoType
:{
type
:
'Number'
,
desc
:
'单位信息类型'
},
unitMail
:{
type
:
'[String]'
,
desc
:
'单位电子邮箱'
},
yuanXiaoBanXueLeiXing
:{
type
:
'String'
,
desc
:
'院校办学类型'
},
yuanXiaoZhuGuanBuMen
:{
type
:
'String'
,
desc
:
'院校主管部门'
},
yuanXiaoFuZeRen
:{
type
:
'String'
,
desc
:
'院校主要负责人'
},
yuanXiaoFuZeRenZhiWu
:{
type
:
'String'
,
desc
:
'院校主要负责人职务'
},
yuanXiaoFuZeRenDianHua
:{
type
:
'String'
,
desc
:
'院校主要负责人电话'
},
yuanXiaoBanGongFuZeRen
:{
type
:
'String'
,
desc
:
'院校办公负责人'
},
yuanXiaoBanGongFuZeRenDianHua
:{
type
:
'String'
,
desc
:
'院校办公负责人电话'
},
yuanXiaoKeYanFuZeRen
:{
type
:
'String'
,
desc
:
'院校科研负责人'
},
yuanXiaoKeYanFuZeRenDianHua
:{
type
:
'String'
,
desc
:
'院校科研负责人电话'
},
yuanXiaoXueShengZongRenShu
:{
type
:
'String'
,
desc
:
'院校学生总人数'
},
yuanXiaoJiaoZhiGongZongRenShu
:{
type
:
'String'
,
desc
:
'院校教职工总人数'
},
jiaoXueFuZeRenXinMing
:{
type
:
'[String]'
,
desc
:
'教学负责人姓名'
},
jiaoXueFuZeRenDianHua
:{
type
:
'[String]'
,
desc
:
'教学负责人电话'
},
ZhuYaoFuZeRenYouXiang
:{
type
:
'[String]'
,
desc
:
'主要负责人邮箱'
},
unitInfoType
:{
type
:
'Number'
,
desc
:
'单位信息类型'
,
notMustHave
:
false
},
unitMail
:{
type
:
'[String]'
,
desc
:
'单位电子邮箱'
,
notMustHave
:
false
},
yuanXiaoBanXueLeiXing
:{
type
:
'String'
,
desc
:
'院校办学类型'
,
notMustHave
:
false
},
yuanXiaoZhuGuanBuMen
:{
type
:
'String'
,
desc
:
'院校主管部门'
,
notMustHave
:
false
},
yuanXiaoFuZeRen
:{
type
:
'String'
,
desc
:
'院校主要负责人'
,
notMustHave
:
false
},
yuanXiaoFuZeRenZhiWu
:{
type
:
'String'
,
desc
:
'院校主要负责人职务'
,
notMustHave
:
false
},
yuanXiaoFuZeRenDianHua
:{
type
:
'String'
,
desc
:
'院校主要负责人电话'
,
notMustHave
:
false
},
yuanXiaoBanGongFuZeRen
:{
type
:
'String'
,
desc
:
'院校办公负责人'
,
notMustHave
:
false
},
yuanXiaoBanGongFuZeRenDianHua
:{
type
:
'String'
,
desc
:
'院校办公负责人电话'
,
notMustHave
:
false
},
yuanXiaoKeYanFuZeRen
:{
type
:
'String'
,
desc
:
'院校科研负责人'
,
notMustHave
:
false
},
yuanXiaoKeYanFuZeRenDianHua
:{
type
:
'String'
,
desc
:
'院校科研负责人电话'
,
notMustHave
:
false
},
yuanXiaoXueShengZongRenShu
:{
type
:
'String'
,
desc
:
'院校学生总人数'
,
notMustHave
:
false
},
yuanXiaoJiaoZhiGongZongRenShu
:{
type
:
'String'
,
desc
:
'院校教职工总人数'
,
notMustHave
:
false
},
jiaoXueFuZeRenXinMing
:{
type
:
'[String]'
,
desc
:
'教学负责人姓名'
,
notMustHave
:
false
},
jiaoXueFuZeRenDianHua
:{
type
:
'[String]'
,
desc
:
'教学负责人电话'
,
notMustHave
:
false
},
ZhuYaoFuZeRenYouXiang
:{
type
:
'[String]'
,
desc
:
'主要负责人邮箱'
,
notMustHave
:
false
},
}
},
{
...
...
@@ -481,5 +483,92 @@ export const Config = {
bindBiz
:
examineBiz
.
passThroughPaid
},
],
"会费管理"
:[
{
apiName
:
"已交费名单列表"
,
subUrl
:
'/memberfees/paid'
,
param
:[
{
key
:
"unitName"
,
type
:
"String"
,
desc
:
"单位名称"
,
isNull
:
true
},
{
key
:
"joinTime"
,
type
:
"Number"
,
desc
:
"入会时间"
,
isNull
:
true
},
{
key
:
"memberType"
,
type
:
"Number"
,
desc
:
"会员类别"
,
isNull
:
true
},
{
key
:
"pageNumber"
,
type
:
"Number"
,
desc
:
"当前页"
}
],
bindBiz
:
memberFeesBiz
.
getPaid
},
{
apiName
:
"续费期名单列表"
,
subUrl
:
'/memberfees/paid'
,
param
:[
{
key
:
"unitName"
,
type
:
"String"
,
desc
:
"单位名称"
,
isNull
:
true
},
{
key
:
"joinTime"
,
type
:
"Number"
,
desc
:
"入会时间"
,
isNull
:
true
},
{
key
:
"memberType"
,
type
:
"Number"
,
desc
:
"会员类别"
,
isNull
:
true
},
{
key
:
"pageNumber"
,
type
:
"Number"
,
desc
:
"当前页"
}
],
bindBiz
:
memberFeesBiz
.
getPaid
},
{
apiName
:
"欠费名单列表"
,
subUrl
:
'/memberfees/paid'
,
param
:[
{
key
:
"unitName"
,
type
:
"String"
,
desc
:
"单位名称"
,
isNull
:
true
},
{
key
:
"joinTime"
,
type
:
"Number"
,
desc
:
"入会时间"
,
isNull
:
true
},
{
key
:
"memberType"
,
type
:
"Number"
,
desc
:
"会员类别"
,
isNull
:
true
},
{
key
:
"pageNumber"
,
type
:
"Number"
,
desc
:
"当前页"
}
],
bindBiz
:
memberFeesBiz
.
getPaid
},
{
apiName
:
"宽限期名单列表"
,
subUrl
:
'/memberfees/paid'
,
param
:[
{
key
:
"unitName"
,
type
:
"String"
,
desc
:
"单位名称"
,
isNull
:
true
},
{
key
:
"joinTime"
,
type
:
"Number"
,
desc
:
"入会时间"
,
isNull
:
true
},
{
key
:
"memberType"
,
type
:
"Number"
,
desc
:
"会员类别"
,
isNull
:
true
},
{
key
:
"pageNumber"
,
type
:
"Number"
,
desc
:
"当前页"
}
],
bindBiz
:
memberFeesBiz
.
getPaid
},
],
"会员管理"
:[
{
apiName
:
"会员权限列表"
,
subUrl
:
'/authority/list'
,
param
:[
{
key
:
"unitName"
,
type
:
"String"
,
desc
:
"单位名称"
,
isNull
:
true
},
{
key
:
"memberLevel"
,
type
:
"Number"
,
desc
:
"会员等级"
,
isNull
:
true
},
{
key
:
"memberCategory"
,
type
:
"Number"
,
desc
:
"单位、个人会员类别"
,
isNull
:
true
},
{
key
:
"pageNumber"
,
type
:
"Number"
,
desc
:
"当前页"
}
],
bindBiz
:
authorityBiz
.
getAuthority
},
{
apiName
:
"变更权限"
,
subUrl
:
'/authority/update'
,
param
:[
{
key
:
"form"
,
type
:
"Object"
,
sub
:
{
memberLevel
:{
type
:
'Number'
,
desc
:
'职务'
,
notMustHave
:
false
},
memberCategory
:{
type
:
'Number'
,
desc
:
'单位、个人会员类别'
,
notMustHave
:
false
},
}
},
{
key
:
"userId"
,
type
:
"String"
,
desc
:
"用户id"
}
],
bindBiz
:
authorityBiz
.
updateAuthority
},
{
apiName
:
"冻结"
,
subUrl
:
'/authority/freeze'
,
param
:[
{
key
:
"userId"
,
type
:
"String"
,
desc
:
"用户id"
}
],
bindBiz
:
authorityBiz
.
freeze
}
]
}
src/routers/public/router.ts
View file @
ed379596
...
...
@@ -126,6 +126,24 @@ export const Config = {
param
:[],
bindBiz
:
setEnumInterface
(
enumConfig
.
CODETYPE
)
},
{
apiName
:
"单位会员类别"
,
subUrl
:
'/unitMemberType'
,
param
:[],
bindBiz
:
setEnumInterface
(
enumConfig
.
UNITMEMBERTYPE
)
},
{
apiName
:
"个人会员类别"
,
subUrl
:
'/individualMemberType'
,
param
:[],
bindBiz
:
setEnumInterface
(
enumConfig
.
INDIVIDUALMEMBERTYPE
)
},
{
apiName
:
"会员职务"
,
subUrl
:
'/memberLevel'
,
param
:[],
bindBiz
:
setEnumInterface
(
enumConfig
.
MEMBERLEVEL
)
},
],
}
...
...
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