Commit 7a7c6def by 孙香冬

组织生活、党员信息

parent 42da2466
......@@ -26,3 +26,4 @@ export async function getActivityCount() {
return { activityCount:{title:"活动开展次数", value: activityCount}, dataList:{title:"组织生活扇形图", list: activityList}};
}
......@@ -11,6 +11,7 @@ import { extractData } from '../../util/piecemeal';
import { changeEnumValue, eccEnumValue } from '../../util/verificationEnum';
import { BizError } from '../../util/bizError';
import { ERRORENUM } from '../../config/errorEnum';
import { systemConfig } from '../../config/systemConfig';
/**
......@@ -18,10 +19,10 @@ import { ERRORENUM } from '../../config/errorEnum';
* @param branchName 支部id
* @returns {支部名称, 党员总数, 党建指令指数, 党内职务人员列表}
*/
export async function homeData(branchName:number) {
if (branchName) eccEnumValue("党建资讯列表查询", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
export async function homeData(branchName) {
if (branchName && branchName.length > 0) eccEnumValue("党建资讯列表查询", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
let branch = changeEnumValue(configEnum.BRANCHNAMETYPE, branchName); //支部名称
let partyMemberNum = await partyMemberData.groupFindPartyMemberCount({branchName}); //党员总数
let partyMemberNum = await partyMemberData.groupFindPartyMemberCount({branchName:{$in: branchName }}); //党员总数
let massIndex = 87.6; //党建指令指数
let partyPositions = []; //党内职务人员
......@@ -29,7 +30,7 @@ export async function homeData(branchName:number) {
let anyKey:any = key;
if (isNaN(anyKey)) { //枚举key key = string
const EnumValue = parseInt(configEnum.PARTYPOSITIONS[key])
let dataBaseList = await partyMemberData.getBaseListByPartyPositions( [EnumValue], branchName );
let dataBaseList = await partyMemberData.getBaseListByPartyPositions( [EnumValue], [branchName] );
let nameList = [];
dataBaseList.forEach( info => {
......@@ -57,9 +58,9 @@ export async function homeData(branchName:number) {
* @param branchName 支部id
* @returns
*/
export async function informationData(informationType:number, branchName:number) {
export async function informationData(informationType:number, branchName) {
if (informationType) eccEnumValue("党建资讯列表查询", "资讯类型", configEnum.INFORMATIONTYPE, informationType);
if (branchName) eccEnumValue("党建资讯列表查询", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
if (branchName && branchName.length > 0) eccEnumValue("党建资讯列表查询", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
let partyInformationInfo = await partyInformationData.findPartyInformationListByType(informationType, branchName);
if(!partyInformationInfo) throw new BizError(ERRORENUM.未找到数据, `库中不存在党建资讯类型为${informationType}, 支部为${branchName}的党建资讯列表`);
......@@ -67,8 +68,9 @@ export async function informationData(informationType:number, branchName:number)
let dataList = [];
partyInformationInfo.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyInformationConfig, info, true);
changeData.informationType = changeEnumValue(configEnum.INFORMATIONTYPE, info.informationType);
changeData.branchName = changeEnumValue(configEnum.BRANCHNAMETYPE, info.branchName);
changeData.img = systemConfig.imgUrl + changeData.img;
changeData.informationType = changeEnumValue(configEnum.INFORMATIONTYPE, changeData.informationType);
changeData.branchName = changeEnumValue(configEnum.BRANCHNAMETYPE, changeData.branchName);
dataList.push(changeData);
})
......
......@@ -20,12 +20,12 @@ moment.suppressDeprecationWarnings = true;
/**
* 组织生活列表
* todo 接口协议不对
* @param status 活动状态 全部、正在进行、即将开展、已经开展
* @returns data
* 返回说明 根据传入的活动状态返回不同的列表
* @param type 组织生活活动类型
* @param partyActivityType 活动名称(党建活动类型)
* @param branchName 支部名称
* @returns 根据传入的活动状态返回不同的列表
*/
export async function getOrganizationalLifeList(type:number, partyActivityType:number, branchName:number) {
export async function getOrganizationalLifeList(type:number, partyActivityType:number, branchName) {
/**将枚举值转为枚举文本 */
let partyActivityTypeStr = verificationEnumTools.changeEnumValue(clientConfigEnum.TYPE, type);
......@@ -38,7 +38,7 @@ export async function getOrganizationalLifeList(type:number, partyActivityType:n
else selectParam = {"$and":[ {"activityStartTime":{"$lt":NowMs }}, {"activityEndTime":{"$gt":NowMs}} ]}
} else partyActivityTypeStr = "";
if (partyActivityType) selectParam["partyActivityType"] = partyActivityType;
if (branchName) selectParam["branchName"] = branchName;
if (branchName && branchName.length > 0) selectParam["branchName"] = {$in: branchName };
let dbList = await organizationalLifeData.findOrganizationalLifeList(selectParam);
......@@ -64,9 +64,9 @@ export async function getOrganizationalLifeList(type:number, partyActivityType:n
* 参数类型 { number, number, number, string, [string], [string], [number], [number], string}
* @returns {isSuccess: true}
*/
export async function createOrganizationalLife(branchName:number, param) {
export async function createOrganizationalLife(branchName, param) {
eccFormParam("创建组织生活活动", eccFormParamConfig.CreateActivityConfig, param)
if (branchName) verificationEnumTools.eccEnumValue("创建组织生活活动", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
if (branchName && branchName.length > 0) verificationEnumTools.eccEnumValue("创建组织生活活动", "支部名称", configEnum.BRANCHNAMETYPE, branchName);
verificationEnumTools.eccEnumValue('创建组织生活活动的党建活动类型', 'partyActivityType', configEnum.ACTIVITYTYPE, param.partyActivityType);
param.branchName = branchName;
await organizationalLifeData.createActivity(param);
......@@ -157,7 +157,7 @@ export async function getAllPartyMember() {
let partyMemberList = await partyMemberData.findPartyMemberAll({});
let data = [];
partyMemberList.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyMemberConfig, info, false);
let changeData:any = extractData(splitResultConfig.organizationallifeConfig, info, false);
switch (changeData.entryType) {
case 1:
changeData.color = "#C62A23";
......@@ -172,6 +172,8 @@ export async function getAllPartyMember() {
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.entryType);
break;
}
// changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONSICON, changeData.partyPositions);
data.push(changeData);
})
......
......@@ -9,6 +9,56 @@ import * as verificationEnumTools from "../../../util/verificationEnum";
import { eccFormParam } from "../../../util/verificationParam";
import * as eccFormParamConfig from "../../../config/eccFormParamConfig";
import { getPwdMd5, getToken } from "../../../tools/system";
import { extractData } from "../../../util/piecemeal";
import * as splitResultConfig from "../../../config/splitResultConfig";
import moment = require("moment");
import { BizError } from "../../../util/bizError";
import { ERRORENUM } from "../../../config/errorEnum";
/**
* 获取党员名册
* @param branchName 支部id
* @returns
*/
export async function getPartyMemberName(branchName) {
let partyBranchName = verificationEnumTools.changeEnumValue(configEnum.BRANCHNAMETYPE, branchName);
let partyMemberNum = await partyMemberData.groupFindPartyMemberCount({branchName:{$in: branchName }}); //党员总数
let partyMemberCount = {
key: partyBranchName + "目前党员人数",
value: partyMemberNum
};
let partyMemberList = await partyMemberData.findPartyMemberAll({branchName:{$in: branchName }});
let nameList = [];
partyMemberList.forEach( info => {
let changeData:any = extractData(splitResultConfig.partyMemberConfig, info, false);
switch (changeData.entryType) {
case 1:
changeData.color = "#C62A23";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONSICON, info.partyPositions);
break;
case 2:
changeData.color = "#3549B0";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.entryType);
break;
case 3:
changeData.color = "#E4B386";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.entryType);
break;
}
let time = moment(new Date()).format("YYYY");
let partyJoiningTime = moment(info.partyJoiningTime).format("YYYY");
changeData.partyStanding = parseInt(time) - parseInt(partyJoiningTime) + "年";
changeData.department = verificationEnumTools.changeEnumValue(configEnum.DEDPARTMENT, changeData.department);
nameList.push(changeData);
})
return {nameList, partyMemberCount};
}
/**
......@@ -17,14 +67,18 @@ import { getPwdMd5, getToken } from "../../../tools/system";
* remarks: "备注", entryType: 名册录入类型, partyPositions: [党内职务, ...], listedAsActivistsTime: 列为积极份子时间, talkTime: 谈话时间, loginId: "登录账号"}
* @return {isSuccess: true}
*/
export async function createPartyMember(param) {
export async function createPartyMember(param, entryType) {
eccFormParam("创建正式党员录入", eccFormParamConfig.CreatePartyMemberFormConfig, param);
verificationEnumTools.eccEnumValue('正式党员录入性别', 'partyActivityType', configEnum.SEX, param.partyActivityType);
verificationEnumTools.eccEnumValue('正式党员录入党内职务图例', 'partyPositionsIcon', configEnum.PARTYPOSITIONSICON, param.partyPositions);
verificationEnumTools.eccEnumValue('正式党员录入党内职务', 'partyPositions', configEnum.PARTYPOSITIONS, param.partyPositions);
verificationEnumTools.eccEnumValue('正式党员名册录入类型', 'entryType', configEnum.ENTRYTYPE, param.entryType);
if (entryType) param.entryType = entryType;
let partyMemberInfo:any = await partyMemberData.createPartyMember(param);
partyMemberInfo.loginId = param.phone;
if(!param.pwd) partyMemberInfo.pwd = getPwdMd5(param.phone, param.phone.slice(5, 11));
else partyMemberInfo.pwd = getPwdMd5(param.phone, param.pwd);
partyMemberInfo.token = getToken(param.phone);
......@@ -34,3 +88,90 @@ import { getPwdMd5, getToken } from "../../../tools/system";
return {isSuccess: true};
}
/**
* 党员详情
* @param id 党员id
* @return
*/
export async function partyMemberDetails(id:number) {
let partyMemberList = await partyMemberData.findPartyMemberById(id);
let changeData:any = {};
partyMemberList.forEach( info => {
changeData = extractData(splitResultConfig.partyMemberDetailsConfig, info, false);
switch (changeData.entryType) {
case 1:
changeData.color = "#C62A23";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.PARTYPOSITIONSICON, info.partyPositions);
break;
case 2:
changeData.color = "#3549B0";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.entryType);
break;
case 3:
changeData.color = "#E4B386";
changeData.partyPositions = verificationEnumTools.changeEnumValue(configEnum.ENTRYTYPE, info.entryType);
break;
}
changeData.department = verificationEnumTools.changeEnumValue(configEnum.DEDPARTMENT, info.department);
changeData.sex = verificationEnumTools.changeEnumValue(configEnum.SEX, info.sex);
changeData.administrativePosition = verificationEnumTools.changeEnumValue(configEnum.ADMINISTRATIVEPOSITION, info.administrativePosition);
changeData.partyState = verificationEnumTools.changeEnumValue(configEnum.PARTYSTATE, info.partyState);
changeData.birthDate = moment(info.birthDate).format("YYYY年MM月DD日");
changeData.partyJoiningTime = moment(info.partyJoiningTime).format("YYYY年MM月DD日");
changeData.study = [
{key:"学习排名", value:getValueByLength(1)},
{key:"学习课时", value:getValueByLength(2)},
{key:"学习进度", value:getValueByLength(2) + "%"}
];
let time = moment(new Date()).format("YYYY");
let partyJoiningTime = moment(info.partyJoiningTime).format("YYYY");
changeData.partyStanding = parseInt(time) - parseInt(partyJoiningTime) + "年";
})
return changeData;
}
/**
* 删除党员
* @param id 党员id
* @returns {isSuccess:true}
*/
export async function deletePartyMember(id:number) {
let activityInfo = await partyMemberData.findPartyMemberById(id);
if (!activityInfo) throw new BizError(ERRORENUM.未找到数据, `库中不存在id为${id}党员信息`);
await partyMemberData.deletePartyMember(id);
return {isSuccess:true};
}
/**
* 随机数生成假数据
* @param length 假数据长度
* @returns
*/
function getValueByLength(length) {
let i = 1;
getPlaByLength(length, () => {
i= i * 10;
});
return Math.floor(Math.random() * i);
}
function getPlaByLength(num, callback) {
for (let i =0; i < num; i++) {
callback();
}
}
......@@ -6,7 +6,8 @@ export let clientEnumConfig = {
* 支部名称 branchName
*/
export enum BRANCHNAMETYPE {
牙防所第一支部 = 1,
党总支 = 1,
牙防所第一支部,
牙防所第二支部,
牙防所第三支部,
牙防所第四支部
......@@ -14,7 +15,7 @@ export enum BRANCHNAMETYPE {
/**
* 党内职务 Party positions
* 党内职务 partyPositions
*/
export enum PARTYPOSITIONSICON {
支部书记 = 1,
......@@ -27,8 +28,9 @@ export enum PARTYPOSITIONSICON {
预备党员,
}
/**
* 党内职务 Party positions
* 党内职务 partyPositions
*/
export enum PARTYPOSITIONS {
支部书记 = 1,
......@@ -40,6 +42,18 @@ export enum PARTYPOSITIONSICON {
/**
* 行政职务 administrativePosition
*/
export enum ADMINISTRATIVEPOSITION {
职员 = 1,
护理部主任,
康健分所主任,
口腔颌面外科副主任,
医务科副科长
}
/**
* 名册录入类型
*/
export enum ENTRYTYPE {
......@@ -61,6 +75,7 @@ export enum ACTIVITYTYPE {
三会一课
}
/**
* 党建资讯类型
*/
......@@ -71,6 +86,7 @@ export enum INFORMATIONTYPE {
先进典型
}
/**
* 性别
*/
......@@ -87,3 +103,65 @@ export enum CODETYPE {
修改密码 = 1,
}
/**
* 文化程度
*/
export enum DEGREE {
初中 = 1,
高中,
大专,
本科,
硕士,
博士
}
/**
* 所属科室 department
*/
export enum DEDPARTMENT {
口腔科 = 1,
正畸科,
口腔恢复科,
颁面外科,
牙体牙髓科,
牙周科,
儿童口腔科
}
/**
* 党建先锋 荣誉类型 honorType
*/
export enum HONORTYPE {
支部先锋 = 1,
模范党员,
}
/**
* 党建先锋 荣誉类型 honorLevel
*/
export enum HONORLEVEL {
区级荣誉 = 1,
市级荣誉,
}
/**
* 党建先锋 模范类型 modelType
*/
export enum MODELTYPE {
支部先锋 = 1,
模范党员,
}
/**
* 党员状态 partyState
*/
export enum PARTYSTATE {
在党 = 1,
退党
}
\ No newline at end of file
......@@ -60,10 +60,71 @@ export const moveAboutInfoConfig = {
* 场景: 选择党员
* 备注:
*/
export const organizationallifeConfig = {
id:{key:"id"},
name:{key:"姓名"},
entryType:{key:"名册录入类型"},
partyPositions:{key:"党内职务"},
color:{key:"颜色"},
}
/**
* 使用端: 小程序_党员入口
* 场景: 选择党员
* 备注:
*/
export const partyMemberConfig = {
id:{key:"id"},
name:{key:"姓名"},
entryType:{key: "党员类型"},
entryType:{key:"名册录入类型"},
partyPositions:{key:"党内职务"},
partyStanding:{key: "党龄"},
department:{key:"所属科室"},
color:{key:"颜色"},
}
/**
* 使用端: 小程序_党员入口
* 场景: 党员详情
* 备注:
*/
export const partyMemberDetailsConfig = {
id:{key:"id"},
entryType:{key:"名册录入类型"},
name:{key:"姓名"},
partyPositions:{key:"党内职务"},
partyStanding:{key: "党龄"},
department:{key:"所属科室"},
study:{key:"学习情况"},
sex:{key:"性别"},
birthDate:{key:"出生年月", changeDate:true},
phone:{key:"手机号码"},
levelOfEducation:{key:"文化程度"},
partyJoiningTime:{key:"入党时间", changeDate:true},
administrativePosition:{key:"行政职务"},
remarks:{key:"备注"},
partyState:{key:"党员状态"},
color:{key:"颜色"},
}
/**
* 使用端: 小程序_党员入口
* 场景: 党建先锋列表
* 备注:
*/
export const partyVanguardConfig = {
pvId:{key:"党建先锋id"},
honorType:{key:"荣誉类型"},
honorLevel:{key:"荣誉级别"},
honorName:{key:"荣誉名称"},
grantingUnit:{key:"授予单位"},
grantTime:{key:"授予时间"},
honorsIntroduction:{key:"荣誉简介"},
grantParty:{key:"授予党员"},
grantReason:{key:"授予原因"},
}
......@@ -11,4 +11,5 @@ export class ServerConfig {
/**小程序相关配置 */
getOpenIdUrl:string;
appId:string;
imgUrl:string;
}
\ No newline at end of file
......@@ -17,12 +17,13 @@ export async function initConfig() {
if (!configInfo || !configInfo.config) throw new BizError('xml中无配置');
else {
let {port, mongodb, secret, getOpenIdUrl, appId, sms } = configInfo.config;
let {port, mongodb, secret, getOpenIdUrl, appId, imgUrl } = configInfo.config;
systemConfig.port = parseInt(port[0]);
systemConfig.secret = secret[0];
systemConfig.getOpenIdUrl = getOpenIdUrl[0];
systemConfig.appId = appId[0];
systemConfig.imgUrl = imgUrl[0];
const MongoPath = mongodb[0].path[0];
const MongoPort = mongodb[0].port[0];
......
......@@ -18,8 +18,7 @@ const organizationalLifeSchema = new Schema({
leavePartyMember:{type:[String], default:[]}, //请假党员 非必填
participatingPartyMember:{type:[String], default:[]}, //参与党员
participationRecord:String, //活动记录
branchName: Number, //支部名称
branchName: {type:[Number], default:[]}, //支部名称
})
var organizationalLifeModel;
......@@ -104,3 +103,4 @@ export async function deleteActivity(oId:number) {
export async function groupFindActivityCount(param:object) {
return await organizationalLifeModel.find(param).countDocuments();
}
......@@ -11,7 +11,7 @@ const partyInformationSchema = new Schema({
pId: {type:Number, index:{unique: true}}, //自增的id
informationType: Number, //党建资讯类型 1:医院文化、2:精神文明、3:科普知识、4、先进典型
title: String, //资讯标题
branchName: Number, //支部名称
branchName: {type:[Number], default:[]}, //支部名称
informationTime: Number, //资讯时间
detailedInformation: String, //资讯详细
img: {type:String, data:Buffer}, //图片
......@@ -56,8 +56,8 @@ export async function save(throwError=false) {
* @param branchName 支部id
* @returns
*/
export async function findPartyInformationListByType(informationType:number, branchName:number) {
return await partyInformationModel.find({informationType, branchName});
export async function findPartyInformationListByType(informationType:number, branchName) {
return await partyInformationModel.find({informationType, branchName:{$in: branchName}});
}
......
......@@ -14,13 +14,16 @@ const partyMemberSchema = new Schema({
phone: String, //手机号码
levelOfEducation: String, //文化程度
partyJoiningTime: Number, //入党时间
administrativePosition: Number, //行政职务 1
administrativePosition: {type:Number, default:1}, //行政职务 1:职员、2
remarks: String, //备注
entryType: Number, //名册录入类型 1:正式党员录入、2:入党积极分子录入、3:入党申请录入
partyPositions: [Number], //党内职务 多选 --正式党员录入 1:书记、2:副书记、3:纪检委员、4:组织委员、5:宣传委员
partyPositions: {type:[Number], default:[]}, //党内职务 多选 --正式党员录入 1:书记、2:副书记、3:纪检委员、4:组织委员、5:宣传委员
listedAsActivistsTime: Number, //列为积极份子时间 --入党积极份子录入
askForTime: Number, //申请入党时间 --入党积极份子录入、入党申请录入
talkTime: Number, //谈话时间 --入党申请录入
branchName: Number, //支部名称
branchName: {type:[Number], default:[]}, //支部名称
department: {type:[Number], default:[]}, //所属科室 1:口腔科、2:正畸科、3:口腔修复科、4:颁面外科, 5:牙体牙髓科、6:牙周科、7儿童口腔科
partyState: Number,
/**-----用户相关----- */
loginId: {type: String, index: true}, //登录账号
......@@ -36,7 +39,7 @@ export function initModel(){
partyMemberSchema.plugin(autoIncrement.plugin, {
model: 'partyMemberSchema',
field: 'id',
startAt: 1, //初始化id从1开始
startAt: 1000, //初始化id从1开始
incrementBy: 1 //每次自增1
});
......@@ -98,8 +101,8 @@ export async function groupFindPartyMemberCount(param:object) {
* @param partyPositions 党内职务 [1, 2]
* @returns
*/
export async function getBaseListByPartyPositions(partyPositions:[number], branchName:number) {
return await partyMemberModel.find({partyPositions:{$in: partyPositions }, branchName});
export async function getBaseListByPartyPositions(partyPositions:[number], branchName) {
return await partyMemberModel.find({partyPositions:{$in: partyPositions }, branchName:{$in: branchName }});
}
......@@ -130,3 +133,23 @@ export async function getPartyMemberListByEntryType(param:object) {
export async function createPartyMember(param:object) {
return await partyMemberModel.create(param);
}
/**
* 根据id获取符合条件的党员详情
* @param param 查询参数
* @returns
*/
export async function findPartyMemberById(id:number) {
return await partyMemberModel.find({id});
}
/**
* 删除党员
* @param id 党员id
* @returns
*/
export async function deletePartyMember(id:number) {
return await partyMemberModel.deleteOne({id}).exec();
}
\ No newline at end of file
......@@ -27,7 +27,7 @@ export class httpServer {
// }
});
httpServer.use(express.static("./static") );
httpServer.use(express.static(path.join(__dirname, "../../img")) );
const root = path.join(__dirname, "../../public");
httpServer.use(express.static(root));
httpServer.use(fallback('index.html', { root }));
......
......@@ -19,7 +19,11 @@ export function setRouter(httpServer) {
* @param res
*/
async function homeBase(req, res) {
let branchName = parseInt(req.headers.branchid);
let branchidData = req.headers.branchid;
let branchName = [];
branchidData = branchidData.slice(1, branchidData.length-1);
branchName = branchidData.split(',');
let baseInfo = await baseBiz.homeData(branchName);
res.success(baseInfo);
}
......@@ -31,7 +35,11 @@ async function homeBase(req, res) {
* @param res
*/
async function informationBase(req, res) {
let branchName = req.headers.branchid;
let branchidData = req.headers.branchid;
let branchName = [];
branchidData = branchidData.slice(1, branchidData.length-1);
branchName = branchidData.split(',');
let reqConf = {informationType:'Number'};
let {informationType} = eccReqParamater(reqConf, req.body);
......
......@@ -4,7 +4,7 @@
import * as organizationalLifeBiz from '../../biz/applet/partyMember/organizationalLife';
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater, testEccReqParamater } from '../../util/verificationParam';
import { eccReqParamater } from '../../util/verificationParam';
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
......@@ -26,7 +26,11 @@ export function setRouter(httpServer) {
async function organizationalLifeList(req, res) {
let reqConf = {type:'Number', name:'Number'};
let {type, name} = eccReqParamater(reqConf, req.body, ["name"]);
let branchName = req.headers.branchid;
let branchidData = req.headers.branchid;
let branchName = [];
branchidData = branchidData.slice(1, branchidData.length-1);
branchName = branchidData.split(',');
let result = await organizationalLifeBiz.getOrganizationalLifeList(type, name, branchName);
res.success(result);
......@@ -41,7 +45,11 @@ async function organizationalLifeList(req, res) {
async function createOrganizationalLife(req, res) {
let reqConf = {form: 'Object' };
let { form } = eccReqParamater(reqConf, req.body);
let branchName = req.headers.branchid;
let branchidData = req.headers.branchid;
let branchName = [];
branchidData = branchidData.slice(1, branchidData.length-1);
branchName = branchidData.split(',');
let result = await organizationalLifeBiz.createOrganizationalLife(branchName, form);
res.success(result);
......
......@@ -8,10 +8,27 @@
import { checkAppletToken } from '../../middleware/user';
export function setRouter(httpServer) {
httpServer.post('/partymember/partymember/create', checkAppletToken, asyncHandler(createPartyMenber));
httpServer.post('/partymember/partymember/partymembername', asyncHandler(getPartyMemberName));
httpServer.post('/partymember/partymember/create', asyncHandler(createPartyMenber));
httpServer.post('/partymember/partymember/detsils', asyncHandler(partyDetsils));
httpServer.post('/partymember/partymember/delete', asyncHandler(deletePartyMember));
}
/**
* 党员名册
* @param req
* @param res
*/
async function getPartyMemberName(req, res) {
let branchidData = req.headers.branchid;
let branchName = [];
branchidData = branchidData.slice(1, branchidData.length-1);
branchName = branchidData.split(',');
let result = await partyMemberBiz.getPartyMemberName(branchName);
res.success(result);
}
/**
......@@ -20,9 +37,33 @@ import { checkAppletToken } from '../../middleware/user';
* @param res
*/
async function createPartyMenber(req, res) {
let reqConf = {form: 'Object' };
let { form } = eccReqParamater(reqConf, req.body);
let reqConf = {form: 'Object', entryType: 'number'};
let { form, entryType } = eccReqParamater(reqConf, req.body);
let result = await partyMemberBiz.createPartyMember(form, entryType);
res.success(result);
}
/**
* 党员详情
* @param req
* @param res
*/
async function partyDetsils(req, res) {
let reqConf = {id: 'Number'};
let {id} = eccReqParamater(reqConf, req.body);
let result = await partyMemberBiz.partyMemberDetails(id);
res.success(result);
}
async function deletePartyMember(req, res) {
let reqConf = {id: 'Number'};
let {id} = eccReqParamater(reqConf, req.body);
let result = await partyMemberBiz.createPartyMember(form);
let result = await partyMemberBiz.deletePartyMember(id);
res.success(result);
}
\ No newline at end of file
......@@ -12,6 +12,11 @@ export function setRouter(httpServer) {
httpServer.post('/public/entrytype', asyncHandler(entryType));
httpServer.post('/public/activitytype', asyncHandler(activityType));
httpServer.post('/public/informationtype', asyncHandler(informationType));
httpServer.post('/public/sex', asyncHandler(sexType));
httpServer.post('/public/degree', asyncHandler(degreeType));
httpServer.post('/public/administrativeposition', asyncHandler(administrativePosition));
httpServer.post('/public/department', asyncHandler(department));
httpServer.post('/public/degreetype', asyncHandler(degreeType));
}
......@@ -21,14 +26,7 @@ export function setRouter(httpServer) {
* @param res
*/
function partyPositions(req, res) {
let dataList = [];
for (let key in configEnum.PARTYPOSITIONS) {
let anyKey:any = key;
if (isNaN(anyKey)) {
let keyStr = key;
dataList.push({key:keyStr, value:configEnum.PARTYPOSITIONS[key]});
}
}
let dataList = getEnumList(configEnum.PARTYPOSITIONS);
res.success(dataList);
}
......@@ -39,14 +37,7 @@ function partyPositions(req, res) {
* @param res
*/
function type(req, res) {
let dataList = [];
for (let key in clientConfigEnum.TYPE) {
let anyKey:any = key;
if (isNaN(anyKey)) {
let keyStr = key;
dataList.push({key:keyStr, value:clientConfigEnum.TYPE[key]});
}
}
let dataList = getEnumList(clientConfigEnum.TYPE);
res.success(dataList);
}
......@@ -57,14 +48,7 @@ function partyPositions(req, res) {
* @param res
*/
function entryType(req, res) {
let dataList = [];
for (let key in configEnum.ENTRYTYPE) {
let anyKey:any = key;
if (isNaN(anyKey)) {
let keyStr = key;
dataList.push({key:keyStr, value:configEnum.ENTRYTYPE[key]});
}
}
let dataList = getEnumList(clientConfigEnum.ENTRYTYPE);
res.success(dataList);
}
......@@ -75,14 +59,7 @@ function partyPositions(req, res) {
* @param res
*/
function activityType(req, res) {
let dataList = [];
for (let key in configEnum.ACTIVITYTYPE) {
let anyKey:any = key;
if (isNaN(anyKey)) {
let keyStr = key;
dataList.push({key:keyStr, value:configEnum.ACTIVITYTYPE[key]});
}
}
let dataList = getEnumList(configEnum.ACTIVITYTYPE);
res.success(dataList);
}
......@@ -93,14 +70,64 @@ function partyPositions(req, res) {
* @param res
*/
function informationType(req, res) {
let dataList = [];
for (let key in configEnum.INFORMATIONTYPE) {
let dataList = getEnumList(configEnum.INFORMATIONTYPE);
res.success(dataList);
}
/**
* 性别类型
* @param req
* @param res
*/
function sexType(req, res) {
let dataList = getEnumList(configEnum.SEX);
res.success(dataList);
}
/**
* 文化程度类型
* @param req
* @param res
*/
function degreeType(req, res) {
let dataList = getEnumList(configEnum.DEGREE);
res.success(dataList);
}
/**
* 行政职务类型
* @param req
* @param res
*/
function administrativePosition(req, res) {
let dataList = getEnumList(configEnum.ADMINISTRATIVEPOSITION);
res.success(dataList);
}
/**
* 所属科室类型
* @param req
* @param res
*/
function department(req, res) {
let dataList = getEnumList(configEnum.DEDPARTMENT);
res.success(dataList);
}
function getEnumList(enumData) {
let dataList= [];
for (let key in enumData) {
let anyKey:any = key;
if (isNaN(anyKey)) {
let keyStr = key;
dataList.push({key:keyStr, value:configEnum.INFORMATIONTYPE[key]});
dataList.push({key:keyStr, value:enumData[key]});
}
}
res.success(dataList);
}
return dataList;
}
\ No newline at end of file
......@@ -30,23 +30,27 @@ import { BizError } from "./bizError";
* @returns true 无需关注返回
*/
export function eccFormParam(name:string, keyTypeConf:object, param:object) {
/**校验多余字段 */
for (let key in param) {
if (!keyTypeConf[key]) throw new BizError(ERRORENUM.参数错误, `多余${key}字段`);
}
/**校验已填参数 */
for (let key in keyTypeConf ) {
let {type, notMustHave} = keyTypeConf[key];
let isError = false; //校验是否异常
let errorStr = "";//异常说明
if ( (typeof param[key] != 'boolean' && !param[key] ) ) {
if (!notMustHave) {
isError = true;
errorStr = `缺失${key}字段`;
}
} else if (param[key]) {
let paramType = typeof param[key];
let confType = keyTypeConf[key].type;
switch(confType) {
let value = param[key];
let valueType = typeof value;
if ( value == null || value == undefined ) {
if (!notMustHave) throw new BizError(ERRORENUM.参数错误, `缺失${key}字段`);
} else {
switch(type) {
case 'Number':
if ( paramType != 'number' ) {
if ( type.toLowerCase() != valueType ) {
isError = true;
} else {
if ((""+param[key]).indexOf('.') > -1) {
......@@ -55,10 +59,8 @@ import { BizError } from "./bizError";
}
break;
case 'String':
if ( paramType != 'string' ) isError = true;
break;
case 'Boolean':
if ( paramType != 'boolean' ) isError = true;
if ( type.toLowerCase() != valueType ) isError = true;
break;
case '[Number]':
if ( !Array.isArray(param[key]) ) isError = true;
......@@ -70,16 +72,6 @@ import { BizError } from "./bizError";
}
}
break;
case '[String]':
if ( !Array.isArray(param[key]) ) isError = true;
for (let i =0; i < param[key].length; i++) {
let item = param[key][i];
if ( typeof item != 'string' ) {
isError = true;
errorStr = `${key}应是string型数组其中下标${i}${typeof item}`;
}
}
break;
case '[Object]':
if ( !Array.isArray(param[key]) ) isError = true;
for (let i =0; i < param[key].length; i++) {
......@@ -124,15 +116,11 @@ import { BizError } from "./bizError";
break;
}
errorStr = isError && errorStr == "" ? `${key}应该是${type}型 而不是${paramType}`: errorStr;
}
errorStr = isError && errorStr == "" ? `${key}应该是${type}型 而不是${valueType}`: errorStr;
if ( isError ) throw new BizError(ERRORENUM.表单校验失败, name, errorStr);
}
/**判断多余的参数 */
for (let key in param) {
if (!keyTypeConf[key]) throw new BizError(ERRORENUM.表单校验失败, name, `多余${key}字段`);
}
return true;
}
......@@ -145,33 +133,41 @@ import { BizError } from "./bizError";
* @param skipKeys []不必填的字段
*/
export function eccReqParamater(conf:object, param, skipKeys?) {
skipKeys = skipKeys || [];
for (let key in conf) {
let type = conf[key];
let value = param[key];
let isError = false; //校验是否异常
let errorStr = "";//异常说明
let skipMap = {};
skipKeys.forEach(keyName => {
skipMap[keyName] = 1;
});
if ( (type != 'Boolean') && !value ) {
if (skipKeys.indexOf(key) < 0 ) {
isError = true;
errorStr = `缺少 ${key} 字段`;
/**校验多余字段 */
for (let key in param) {
if (!conf[key]) throw new BizError(ERRORENUM.参数错误, `多余${key}字段`);
}
} else if(param[key]) {
let paramType = typeof param[key];
switch(conf[key]) {
/**校验必填和缺失字段 */
for (let key in conf) {
let confType = conf[key];
let value = param[key];
let valueType = typeof value;
if ( value == null || value == undefined ) {
if (!skipMap[key]) throw new BizError(ERRORENUM.参数错误, `缺失${key}字段`);
} else {
let isError = false;
let errorStr = "";
switch(confType) {
case 'Number':
if ( paramType != 'number' ) {
isError = true;
if ( confType.toLowerCase() != valueType ) isError = true;
else {
if ((""+param[key]).indexOf('.') > -1) {
param[key] = parseInt(`${param[key] *100}`)/100;
}
}
break;
case 'String':
if ( paramType != 'string' ) isError = true;
break;
case 'Boolean':
if ( paramType != 'boolean' ) isError = true;
if ( confType.toLowerCase() != valueType ) isError = true;
break;
case '[Number]':
if ( !Array.isArray(param[key]) ) isError = true;
......@@ -193,26 +189,44 @@ export function eccReqParamater(conf:object, param, skipKeys?) {
}
}
break;
case 'Address':
/**地址类型 基本数据类型为数组字符串但是要判断层级关系 */
if ( !Array.isArray(param[key]) ) {
isError = true;
errorStr = `${key}应是数组形`;
}
errorStr = isError && errorStr == "" ? `${key}应该是${type}型 而不是${paramType}`: errorStr;
if ( param[key].length != 4) {
isError = true;
errorStr = `${key}超过特定长度4 目前长度 ${param[key].length}`;
}
if (isError) throw new BizError(ERRORENUM.参数错误, errorStr);
for (let i =0; i < param[key].length; i++) {
let item = param[key][i];
if ( typeof item != 'string' ) {
isError = true;
errorStr = `${key}应是string型数组其中下标${i}${typeof item}`;
}
}
/** 不符合规则的 */
let nullIndex = -1;
for (let i = 0; i < param[key].length; i++) {
if (nullIndex != -1) {//出现过空 第一次出现后的位置 都不能有值
if (param[key]) {
//做一个特化
throw new BizError(ERRORENUM.地址数据不完整, `${key} 下标 ${nullIndex} 为空 `);
}
}
if (nullIndex == -1 && !param[key][i]) {
/**按顺序第一次赋值 */
nullIndex = i;
}
for (let key in param) {
if (!conf[key]) throw new BizError(ERRORENUM.参数错误, `多余${key}字段`);
}
return param;
}
export function testEccReqParamater(conf:object, param, skipKeys?) {
skipKeys = skipKeys || [];
break;
}
errorStr = isError && errorStr == "" ? `${key}应该是${confType}型 而不是${valueType}`: errorStr;
if (isError) throw new BizError(ERRORENUM.参数错误, errorStr);
}
let confKey = [];
for (let key in conf) {
confKey.push(key);
}
return param;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment