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
bfba43ce
Commit
bfba43ce
authored
Mar 16, 2024
by
lixinming
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://123.207.147.179:8888/node_server/wenHuaBu_adminServer
parents
78ccfffb
5287c882
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
97 additions
and
92 deletions
+97
-92
member.ts
src/biz/member/member.ts
+50
-39
model.ts
src/data/models/model.ts
+47
-53
No files found.
src/biz/member/member.ts
View file @
bfba43ce
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* 会员逻辑
* 会员逻辑
*/
*/
import
{
MEMBERSTATE
,
MEMBERLEVEL
,
DOCUMENTTYPE
,
NATION
,
PROFCATEGORY
,
CODETYPE
,
UNITINFOTYPE
,
MEMBERTYPE
,
REGISTERFLOW
,
SEX
,
USERREGISTERSTATE
,
OPERATIONREHAVIOR
,
STATE
}
from
"../../config/enum"
;
import
{
MEMBERSTATE
,
MEMBERLEVEL
,
DOCUMENTTYPE
,
NATION
,
PROFCATEGORY
,
CODETYPE
,
UNITINFOTYPE
,
MEMBERTYPE
,
REGISTERFLOW
,
SEX
,
USERREGISTERSTATE
,
OPERATIONREHAVIOR
,
STATE
,
BANXUELEIXING
}
from
"../../config/enum"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
find
,
findCount
,
findOnce
,
findOnceToSort
,
findToPage
,
findToSort
}
from
"../../data/select"
;
import
{
find
,
findCount
,
findOnce
,
findOnceToSort
,
findToPage
,
findToSort
}
from
"../../data/select"
;
...
@@ -248,10 +248,11 @@ export async function individualMemberDetails({userId}) {
...
@@ -248,10 +248,11 @@ export async function individualMemberDetails({userId}) {
if
(
pwd
!=
confirmation
)
throw
new
BizError
(
ERRORENUM
.
两次密码不一致
);
if
(
pwd
!=
confirmation
)
throw
new
BizError
(
ERRORENUM
.
两次密码不一致
);
/**校验去重 */
/**校验去重 */
let
oldData
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
"$or"
:[{
loginId
:
form
.
loginId
},
{
phone
:
form
.
phone
}]
});
let
oldData
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
"$or"
:[{
loginId
:
form
.
loginId
},
{
phone
:
form
.
phone
}
,
{
mail
:
form
.
mail
}
]
});
if
(
oldData
&&
oldData
.
userId
)
{
if
(
oldData
&&
oldData
.
userId
)
{
if
(
oldData
.
loginId
==
loginId
)
throw
new
BizError
(
ERRORENUM
.
用户名重复
,
form
.
loginId
);
if
(
oldData
.
loginId
==
loginId
)
throw
new
BizError
(
ERRORENUM
.
用户名重复
,
form
.
loginId
);
if
(
oldData
.
phone
==
phone
)
throw
new
BizError
(
ERRORENUM
.
联系人手机号重复
,
form
.
phone
);
if
(
oldData
.
phone
==
phone
)
throw
new
BizError
(
ERRORENUM
.
联系人手机号重复
,
form
.
phone
);
if
(
oldData
.
mail
==
form
.
mail
)
throw
new
BizError
(
ERRORENUM
.
邮箱重复
,
form
.
loginId
);
}
}
/**比对验证码 */
/**比对验证码 */
...
@@ -280,8 +281,8 @@ export async function individualMemberDetails({userId}) {
...
@@ -280,8 +281,8 @@ export async function individualMemberDetails({userId}) {
/**
/**
* 会员注册【个人会员】【流程2】success
* 会员注册【个人会员】【流程2】success
* @param
userId
* @param
form
* @param
form
* @param
userId
* @returns
* @returns
*/
*/
export
async
function
memberRegister2
({
form
,
userId
})
{
export
async
function
memberRegister2
({
form
,
userId
})
{
...
@@ -289,7 +290,7 @@ export async function memberRegister2({form, userId}) {
...
@@ -289,7 +290,7 @@ export async function memberRegister2({form, userId}) {
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
/**校验枚举 */
/**校验枚举 */
const
EccFuncName
=
'注册个人会员'
;
const
EccFuncName
=
'注册个人会员
流程2
'
;
eccEnumValue
(
EccFuncName
,
'性别'
,
SEX
,
form
.
sex
);
eccEnumValue
(
EccFuncName
,
'性别'
,
SEX
,
form
.
sex
);
eccEnumValue
(
EccFuncName
,
'证件类型'
,
DOCUMENTTYPE
,
form
.
documentType
);
eccEnumValue
(
EccFuncName
,
'证件类型'
,
DOCUMENTTYPE
,
form
.
documentType
);
eccEnumValue
(
EccFuncName
,
'民族'
,
NATION
,
form
.
nation
);
eccEnumValue
(
EccFuncName
,
'民族'
,
NATION
,
form
.
nation
);
...
@@ -302,10 +303,11 @@ export async function memberRegister2({form, userId}) {
...
@@ -302,10 +303,11 @@ export async function memberRegister2({form, userId}) {
/**用户提交注册申请,等待审核 */
/**用户提交注册申请,等待审核 */
let
approvalHistoryInfo
=
await
find
(
TABLEENUM
.
审批历史表
,
{
userId
});
let
approvalHistoryInfo
=
await
find
(
TABLEENUM
.
审批历史表
,
{
userId
});
let
operationBehavior
;
let
operationBehavior
;
/**判断 */
/**判断
是否第一次提交审核
*/
if
(
approvalHistoryInfo
.
length
>
1
)
operationBehavior
=
OPERATIONREHAVIOR
.
重新提交
;
if
(
approvalHistoryInfo
.
length
>
1
)
operationBehavior
=
OPERATIONREHAVIOR
.
重新提交
;
else
operationBehavior
=
OPERATIONREHAVIOR
.
用户提交
;
else
operationBehavior
=
OPERATIONREHAVIOR
.
用户提交
;
/**提交审批历史信息 */
let
now
=
new
Date
().
valueOf
();
let
now
=
new
Date
().
valueOf
();
let
addApprovalHistory
=
{
let
addApprovalHistory
=
{
id
:
generateSystemId
(
TABLEENUM
.
审批历史表
,
userId
),
id
:
generateSystemId
(
TABLEENUM
.
审批历史表
,
userId
),
...
@@ -321,63 +323,72 @@ export async function memberRegister2({form, userId}) {
...
@@ -321,63 +323,72 @@ export async function memberRegister2({form, userId}) {
/**
/**
* 单位入会流程1
* 会员注册【单位会员】【流程一】success
* @param secureArgs
* @param form
* @param codeId
*/
*/
export
async
function
unitMemberRegister1
({
form
,
codeId
})
{
export
async
function
unitMemberRegister1
({
form
})
{
let
{
loginId
,
mail
,
pwd
,
confirmation
,
phone
,
codeNum
}
=
form
;
const
NowMs
=
new
Date
().
valueOf
();
/**校验密码 */
if
(
form
.
pwd
.
search
(
/^
[
A-Za-z0-9
]{6,18}
$/
)
<
0
)
throw
new
BizError
(
ERRORENUM
.
密码只能由
6
至
18
位字符和数字组成
);
if
(
form
.
pwd
!=
form
.
confirmation
)
throw
new
BizError
(
ERRORENUM
.
两次密码不一致
);
/**校验去重 */
let
oldData
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
"$or"
:[{
loginId
:
form
.
loginId
},
{
phone
:
form
.
phone
},
{
mail
:
form
.
mail
}]
});
let
oldData
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
"$or"
:[{
loginId
:
form
.
loginId
},
{
phone
:
form
.
phone
},
{
mail
:
form
.
mail
}]
});
if
(
oldData
&&
oldData
.
userId
)
{
if
(
oldData
&&
oldData
.
userId
)
{
if
(
oldData
.
loginId
==
form
.
loginId
)
throw
new
BizError
(
ERRORENUM
.
用户名重复
,
form
.
loginId
);
if
(
oldData
.
loginId
==
form
.
loginId
)
throw
new
BizError
(
ERRORENUM
.
用户名重复
,
form
.
loginId
);
if
(
oldData
.
phone
==
form
.
phone
)
throw
new
BizError
(
ERRORENUM
.
联系人手机号重复
,
form
.
phone
);
if
(
oldData
.
phone
==
form
.
phone
)
throw
new
BizError
(
ERRORENUM
.
联系人手机号重复
,
form
.
phone
);
if
(
oldData
.
mail
==
form
.
mail
)
throw
new
BizError
(
ERRORENUM
.
邮箱重复
,
form
.
loginId
);
if
(
oldData
.
mail
==
form
.
mail
)
throw
new
BizError
(
ERRORENUM
.
邮箱重复
,
form
.
loginId
);
}
}
/**校验密码 */
if
(
form
.
pwd
.
search
(
/^
[
A-Za-z0-9
]{6,18}
$/
)
<
0
)
throw
new
BizError
(
ERRORENUM
.
密码只能由
6
至
18
位字符和数字组成
);
if
(
form
.
pwd
!=
form
.
confirmation
)
throw
new
BizError
(
ERRORENUM
.
两次密码不一致
);
form
.
userId
=
sysTools
.
generateUserId
();
/**比对验证码 */
form
.
memberType
=
MEMBERTYPE
.
单位会员
;
let
codeInfo
=
await
findOnceToSort
(
TABLEENUM
.
验证码表
,
{
phone
,
isUse
:
false
,
type
:
CODETYPE
.
用户注册
,
sendMs
:{
"$gt"
:
sysTools
.
getTodayMs
()
}},
{
sendMs
:
-
1
});
form
.
isAdmin
=
0
;
if
(
!
codeInfo
)
throw
new
BizError
(
ERRORENUM
.
code
无效
,
`
${
phone
}
在注册时,code表中不存在该手机号的验证码`
);
form
.
registerFlow
=
REGISTERFLOW
.
单位会员注册
1
;
//todo 会员注册流程状态,审核通过后修改为流程2
if
(
codeInfo
!=
codeNum
)
throw
new
BizError
(
ERRORENUM
.
验证码错误
,
`
${
phone
}
不存在
${
codeNum
}
`
);
if
((
codeInfo
.
sendMs
+
(
30
*
60
*
1000
)
)
<
NowMs
)
throw
new
BizError
(
ERRORENUM
.
验证码过期
);
// let todayMs = sysTools.getTodayMs();
let
codeList
=
await
findOnce
(
TABLEENUM
.
验证码表
,
{
codeId
});
let
now
=
new
Date
().
valueOf
();
/**初始化账号信息 */
let
userId
=
sysTools
.
generateUserId
();
let
addInfo
=
{
userId
,
memberType
:
MEMBERTYPE
.
单位会员
,
isAdmin
:
STATE
.
否
,
//是否管理员
registerFlow
:
REGISTERFLOW
.
完成第一步
,
//会员注册流程状态
askForTime
:
NowMs
,
//申请时间
loginId
,
mail
,
pwd
,
phone
};
await
addOneData
(
TABLEENUM
.
用户表
,
addInfo
);
let
msg
=
ERRORENUM
.
验证码错误
;
if
(
codeList
.
codeNum
==
form
.
codeNum
)
{
if
(
codeList
.
isUse
)
msg
=
ERRORENUM
.
验证码失效
;
else
if
(
(
now
-
codeList
.
sendMs
)
>
(
30
*
60
*
1000
)
)
msg
=
ERRORENUM
.
验证码过期
}
if
(
!
codeId
)
throw
new
BizError
(
msg
,
`userId:
${
form
.
userId
}
单位入会注册流程1的code:
${
form
.
code
}
`
);
/**修改验证码状态为已使用 */
/**修改验证码状态为已使用 */
await
updateOneData
(
TABLEENUM
.
验证码表
,
{
codeId
},
{
isUse
:
true
});
await
updateOneData
(
TABLEENUM
.
验证码表
,
{
phone
,
code
:
codeNum
,
isUse
:
false
},
{
isUse
:
true
});
await
addOneData
(
TABLEENUM
.
用户表
,
form
);
return
successResult
()
;
return
{
userId
}
;
}
}
/**
/**
* 单位入会流程2
* 单位入会流程2
* @param form 表单
* @param keyanForm 科研表单
* @param userId
* @param userId
* @param secureArgs
* @returns
* @returns
*/
*/
export
async
function
unitMemberRegister2
({
form
,
keyanForm
,
userId
})
{
export
async
function
unitMemberRegister2
({
form
,
keyanForm
,
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
form
.
registerFlow
=
REGISTERFLOW
.
单位会员注册
2
;
/**校验枚举 */
const
EccFuncName
=
'注册单位会员流程2'
;
eccEnumValue
(
EccFuncName
,
'专业类别'
,
PROFCATEGORY
,
form
.
profCategory
);
eccEnumValue
(
EccFuncName
,
'院校办学类型'
,
BANXUELEIXING
,
form
.
yuanXiaoBanXueLeiXing
);
eccEnumValue
(
EccFuncName
,
'单位信息类型'
,
UNITINFOTYPE
,
form
.
unitInfoType
);
form
.
registerFlow
=
REGISTERFLOW
.
完成第二步
;
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
form
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
form
);
// let unitInfo = await findOnce(TABLEENUM.用户表, {userId});
// let dataList = extractData(unitInfo, ["userId", "registerFlow"]);
let
addList
=
[];
let
addList
=
[];
for
(
let
i
=
0
;
i
<
keyanForm
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
keyanForm
.
length
;
i
++
)
{
...
...
src/data/models/model.ts
View file @
bfba43ce
...
@@ -335,97 +335,91 @@ const ModelArray = [
...
@@ -335,97 +335,91 @@ const ModelArray = [
askForTime
:
'Number'
,
//申请时间 第一步流程发起时间
askForTime
:
'Number'
,
//申请时间 第一步流程发起时间
auditTime
:
'Number'
,
//审核时间 会员审核列表审核时间
auditTime
:
'Number'
,
//审核时间 会员审核列表审核时间
joinTime
:
'Number'
,
//入会时间 审核通过时间
joinTime
:
'Number'
,
//入会时间 审核通过时间
memberType
:{
type
:
'Number'
},
//会员类型 MEMBERTYPE
memberType
:{
type
:
'Number'
},
//会员类型
枚举
MEMBERTYPE
lifespanStartTime
:
'Number'
,
//会员有效期开始时间 时间戳 每次缴费成功更新
lifespanStartTime
:
'Number'
,
//会员有效期开始时间 时间戳 每次缴费成功更新
lifespanEndTime
:
'Number'
,
//会员有效期结束时间 时间戳 每次缴费成功更新
lifespanEndTime
:
'Number'
,
//会员有效期结束时间 时间戳 每次缴费成功更新
token
:{
type
:
'String'
,
default
:
''
},
//token
tokenMs
:{
type
:
'Number'
,
default
:
0
},
//token过期时间
session
:
'String'
,
//届次
applicationForm
:
'String'
,
//入会申请表
paymentStatus
:
'Number'
,
//支付状态
/**状态枚举 */
/**状态枚举 */
registerFlow
:{
type
:
'Number'
,
default
:
REGISTERFLOW
.
未注册
},
//会员注册流程 枚举
registerFlow
:{
type
:
'Number'
,
default
:
REGISTERFLOW
.
未注册
},
//会员注册流程 枚举
isAdmin
:{
type
:
'Number'
,
default
:
STATE
.
否
},
//是否是管理员
isAdmin
:{
type
:
'Number'
,
default
:
STATE
.
否
},
//是否是管理员
userRegisterState
:{
type
:
'Number'
,
default
:
USERREGISTERSTATE
.
待审核
},
//用户注册状态 枚举USERREGISTERSTATE
userRegisterState
:{
type
:
'Number'
,
default
:
USERREGISTERSTATE
.
待审核
},
//用户注册状态 枚举USERREGISTERSTATE
documentType
:
'Number'
,
//证件类型 枚举DOCUMENTTYPE
memberState
:{
type
:
'Number'
,
default
:
MEMBERSTATE
.
正常
},
//会员状态 枚举MEMBERSTATE
memberState
:{
type
:
'Number'
,
default
:
MEMBERSTATE
.
正常
},
//会员状态 枚举MEMBERSTATE
individualMemberType
:{
type
:
'Number'
},
//个人会员类型 枚举INDIVIDUALMEMBERTYPE
memberLevel
:
'Number'
,
//会员等级、职务 枚举MEMBERLEVEL
unitMemberType
:{
type
:
'Number'
},
//单位会员类型 枚举UNITMEMBERTYPE
profCategory
:
'Number'
,
//专业类别 枚举PROFCATEGORY
certificateType
:
'Number'
,
//证书类型 枚举
/**宽限期状态 */
/**宽限期状态 */
isGracePeriod
:{
type
:
'Number'
,
default
:
0
},
//是否宽限期 0:否, 1:是
isGracePeriod
:{
type
:
'Number'
,
default
:
0
},
//是否宽限期 0:否, 1:是
gracePeriodEndTime
:
'Number'
,
//宽限期到期时间 时间戳
gracePeriodEndTime
:
'Number'
,
//宽限期到期时间 时间戳
/**第一步流程表单 */
/**第一步流程表单 */
loginId
:{
type
:
'String'
,
index
:
true
},
//用户名 可用作登陆
loginId
:{
type
:
'String'
,
index
:
true
},
//用户名 可用作登陆
pwd
:{
type
:
'String'
},
//密码
pwd
:{
type
:
'String'
},
//密码
phone
:{
type
:
'String'
,
index
:
true
},
//联系电话(登陆手机号)
可用作登陆
phone
:{
type
:
'String'
,
index
:
true
},
//联系电话(登陆手机号)可用作登陆
mail
:{
type
:
'String'
,
index
:
true
},
//邮箱
mail
:{
type
:
'String'
,
index
:
true
},
//邮箱
/**第二步流程表单(个人) */
/**第二步流程表单(个人)【基础信息】 */
unitMemberType
:{
type
:
'Number'
},
//单位会员类型
individualMemberType
:{
type
:
'Number'
},
//个人会员类型
name
:{
type
:
'String'
},
//真实姓名
name
:{
type
:
'String'
},
//真实姓名
token
:{
type
:
'String'
,
default
:
''
},
//token
tokenMs
:{
type
:
'Number'
,
default
:
0
},
//token过期时间
sex
:
'Number'
,
//性别 枚举
sex
:
'Number'
,
//性别 枚举
documentType
:
'Number'
,
//证件类型 枚举
documentId
:
'String'
,
//证件号码 身份证
documentId
:
'String'
,
//证件id 身份证
birth
:
'Number'
,
//出生年月 时间戳
birth
:
'Number'
,
//出生年月 时间戳
nation
:
'Number'
,
//民族 枚举
nation
:
'Number'
,
//民族 枚举
sheng
:
'String'
,
//省
sheng
:
'String'
,
//省 共用
shi
:
'String'
,
//市
shi
:
'String'
,
//市 共用
qu
:
'String'
,
//区
qu
:
'String'
,
//区 共用
addres
:
'String'
,
//通信地址
addres
:
'String'
,
//通信地址 共用
education
:
'Number'
,
//学历
photoUrl
:
'String'
,
//证件照图片地址 蓝底证件照
photoUrl
:
'String'
,
//证件照图片地址 蓝底证件照
/**第二步流程表单(个人)【专业信息】 */
workUnit
:
'String'
,
//工作单位
workUnit
:
'String'
,
//工作单位
workTitle
:
'String'
,
//职称
workTitle
:
'String'
,
//职称
studyResume
:
'String'
,
//学习简历
workResume
:
'String'
,
//工作简历
profAchievement
:
'String'
,
//专业成果
session
:
'String'
,
//届次
otherEMP
:
'String'
,
//其他任职情况
memberLevel
:
'Number'
,
//会员等级、职务 枚举
otherPROF
:
'String'
,
//其他专业情况
/**第二步流程表单(个人)【其他附件】 */
certificateType
:
'Number'
,
//证书类型 枚举
cardUrl
:{
type
:
'[String]'
,
default
:[]},
//身份证正反面图片地址
education
:
'Number'
,
//学历
academicCERTUrl
:
'String'
,
//学历证明图片地址
applicationForm
:
'String'
,
//入会申请表
professionalCERTUrl
:
'String'
,
//工作证明图片地址
auxiliaryMaterial
:{
type
:
'[String]'
,
default
:[]},
//其他辅助材料
/**发票信息【新加 待定】 */
//原社会信用代码
//原发票抬头
//新社会信用代码
//新发票抬头
/**第二步流程表单(单位)【基础信息】 */
unitName
:
'String'
,
//单位名称
unitName
:
'String'
,
//单位名称
uscc
:
'String'
,
//统一信用代码
uscc
:
'String'
,
//统一信用代码
legalPerson
:
'String'
,
//法人
legalPerson
:
'String'
,
//法人代表
legalPersonMail
:
'String'
,
//法人邮箱
legalPersonPhone
:
'String'
,
//法人代表联系电话
legalPersonPhone
:
'String'
,
//法人代表联系电话
legalPersonMail
:
'String'
,
//法人邮箱
unitMail
:
'String'
,
//单位电子邮箱
contactPerson
:
'String'
,
//日常联系人
contactPerson
:
'String'
,
//日常联系人
contactPersonDuties
:
'String'
,
//日常联系人职务
contactPersonDuties
:
'String'
,
//日常联系人职务
contactPersonPhone
:
'String'
,
//日常联系人手机
contactPersonPhone
:
'String'
,
//日常联系人手机号码
unitMail
:
'String'
,
//单位电子邮箱
uusinessLicenseUrl
:
'String'
,
//营业执照 图片地址
uusinessLicenseUrl
:
'String'
,
//营业执照 图片地址
/**第二步流程表单(单位)【单位信息】 */
/**单位会员信息 */
unitInfoType
:
'Number'
,
//单位信息类型 枚举UNITINFOTYPE
unitInfoType
:
'Number'
,
//单位信息类型 枚举
yuanXiaoBanXueLeiXing
:
'Number'
,
//院校办学类型 枚举BANXUELEIXING
yuanXiaoBanXueLeiXing
:
'Number'
,
//院校办学类型 枚举
yuanXiaoZhuGuanBuMen
:
'String'
,
//院校主管部门
yuanXiaoZhuGuanBuMen
:
'String'
,
//院校主管部门
yuanXiaoFuZeRen
:
'String'
,
//院校主要负责人
yuanXiaoFuZeRen
:
'String'
,
//院校主要负责人
yuanXiaoFuZeRenZhiWu
:
'String'
,
//院校主要负责人职务
yuanXiaoFuZeRenZhiWu
:
'String'
,
//院校主要负责人职务
yuanXiaoFuZeRenDianHua
:
'String'
,
//院校主要负责人电话
yuanXiaoFuZeRenDianHua
:
'String'
,
//院校主要负责人电话
yuanXiaoBanGongFuZeRen
:
'String'
,
//院校办公负责人
yuanXiaoBanGongFuZeRen
:
'String'
,
//院校办公负责人
yuanXiaoBanGongFuZeRenDianHua
:
'String'
,
//院校办公负责人电话
yuanXiaoBanGongFuZeRenDianHua
:
'String'
,
//院校办公负责人电话
ZhuYaoFuZeRenYouXiang
:
'String'
,
//主要负责人邮箱
yuanXiaoKeYanFuZeRen
:
'String'
,
//院校科研负责人
yuanXiaoKeYanFuZeRen
:
'String'
,
//院校科研负责人
yuanXiaoKeYanFuZeRenDianHua
:
'String'
,
//院校科研负责人电话
yuanXiaoKeYanFuZeRenDianHua
:
'String'
,
//院校科研负责人电话
yuanXiaoXueShengZongRenShu
:
'String'
,
//学生总人数
yuanXiaoJiaoZhiGongZongRenShu
:
'String'
,
//教职工总人数
jiaoXueFuZeRenXinMing
:
'String'
,
//教学负责人姓名
jiaoXueFuZeRenXinMing
:
'String'
,
//教学负责人姓名
yuanXiaoXueShengZongRenShu
:
'String'
,
//院校学生总人数
yuanXiaoJiaoZhiGongZongRenShu
:
'String'
,
//教职工总人数
jiaoXueFuZeRenDianHua
:
'String'
,
//教学负责人电话
jiaoXueFuZeRenDianHua
:
'String'
,
//教学负责人电话
ZhuYaoFuZeRenYouXiang
:
'String'
,
//主要负责人邮箱
/**个人会员信息 */
cardUrl
:{
type
:
'[String]'
,
default
:[]},
//身份证正反面图片地址
academicCERTUrl
:
'String'
,
//学历证明图片地址
professionalCERTUrl
:
'String'
,
//工作证明图片地址
auxiliaryMaterial
:{
type
:
'[String]'
,
default
:[]},
//其他辅助材料
profCategory
:
'Number'
,
//专业类别 枚举
studyResume
:
'String'
,
//学习简历
workResume
:
'String'
,
//工作简历
profAchievement
:
'String'
,
//专业成果
otherEMP
:
'String'
,
//其他任职情况
otherPROF
:
'String'
,
//其他专业情况
paymentStatus
:
'Number'
,
//支付状态
}
}
},
},
{
{
...
...
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