Commit 88bef37f by lixinming

Merge branch 'master' of http://123.207.147.179:8888/node_server/yuyiAdminServer

# Conflicts:
#	src/config/enum/dbEnum.ts
parents a0806426 36456682
...@@ -1047,6 +1047,11 @@ ...@@ -1047,6 +1047,11 @@
"resolved": "https://registry.npm.taobao.org/kareem/download/kareem-2.3.2.tgz", "resolved": "https://registry.npm.taobao.org/kareem/download/kareem-2.3.2.tgz",
"integrity": "sha1-eMRQiJSYW404oNwV4ajhEHjyypM=" "integrity": "sha1-eMRQiJSYW404oNwV4ajhEHjyypM="
}, },
"keypress": {
"version": "0.1.0",
"resolved": "https://registry.npmmirror.com/keypress/-/keypress-0.1.0.tgz",
"integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA=="
},
"kitx": { "kitx": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npm.taobao.org/kitx/download/kitx-1.3.0.tgz", "resolved": "https://registry.npm.taobao.org/kitx/download/kitx-1.3.0.tgz",
...@@ -1424,6 +1429,24 @@ ...@@ -1424,6 +1429,24 @@
"resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
}, },
"pinyin": {
"version": "4.0.0-alpha.2",
"resolved": "https://registry.npmmirror.com/pinyin/-/pinyin-4.0.0-alpha.2.tgz",
"integrity": "sha512-SED2wWr1X0QwH6rXIDgg20zS1mAk0AVMO8eM3KomUlOYzC8mNMWZnspZWhhI0M8MBIbF2xwa+5r30jTSjAqNsg==",
"requires": {
"commander": "~1.1.1"
},
"dependencies": {
"commander": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/commander/-/commander-1.1.1.tgz",
"integrity": "sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==",
"requires": {
"keypress": "0.1.x"
}
}
}
},
"printj": { "printj": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
"node-xlsx": "^0.16.1", "node-xlsx": "^0.16.1",
"nodemailer": "^6.1.1", "nodemailer": "^6.1.1",
"officegen": "^0.6.5", "officegen": "^0.6.5",
"pinyin": "^4.0.0-alpha.2",
"qs": "^6.11.0", "qs": "^6.11.0",
"request": "^2.88.0", "request": "^2.88.0",
"svg-captcha": "^1.3.12", "svg-captcha": "^1.3.12",
...@@ -28,7 +29,6 @@ ...@@ -28,7 +29,6 @@
"ws": "^5.2.2", "ws": "^5.2.2",
"xml2js": "^0.4.23" "xml2js": "^0.4.23"
}, },
"devDependencies": {},
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
......
This source diff could not be displayed because it is too large. You can view the blob instead.
<config> <config>
<port>9098</port> <port>9098</port>
<sign>xxx90909082fsdahfjosadjfpoiwausjorip2hjklrhn1ioud0u124rx0qwejfokasjfolksaujfoas</sign> <sign>xxx90909082fsdahfjosadjfpoiwausjorip2hjklrhn1ioud0u124rx0qwejfokasjfolksaujfoas</sign>
<dbServer>http://192.168.0.105:9096</dbServer> <dbServer>http://192.168.0.71:9096</dbServer>
<imgUrl>http://192.168.0.105:9098</imgUrl> <imgUrl>http://192.168.0.72:9098</imgUrl>
<imgFileUrl>http://192.168.0.105:9097</imgFileUrl> <imgFileUrl>http://192.168.0.72:9097</imgFileUrl>
<qcc> <qcc>
<key>2b14555ce89346e8b96684e2e2a1c7c2</key> <key>2b14555ce89346e8b96684e2e2a1c7c2</key>
<SecretKey>452AAE887A1CDCAB8C9D730BA8B8FBF0</SecretKey> <SecretKey>452AAE887A1CDCAB8C9D730BA8B8FBF0</SecretKey>
......
/** /**
* 企业信息 * 企业信息
* 汇总 * 汇总
*
*
* */ * */
import { ApplyForUpdateConfig, GardenNoticeUpdateConfig, PolicyUpdateConfig, RegisterUpdateConfig, SettleInForUpdateConfig } from "../config/eccParam/enterprise"; import { ApplyForUpdateConfig, GardenNoticeUpdateConfig, PolicyUpdateConfig, RegisterUpdateConfig, SettleInForUpdateConfig } from "../config/eccParam/enterprise";
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum"; import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum";
import * as enumConfig from "../config/enum/enum"; import * as enumConfig from "../config/enum/enum";
...@@ -687,7 +684,12 @@ export async function getiprDetails(eId: string) { ...@@ -687,7 +684,12 @@ export async function getiprDetails(eId: string) {
} }
/**
* 资质认证列表
* @param enterpriseName
* @param page
* @returns
*/
export async function qiyeRenZheng(enterpriseName, page) { export async function qiyeRenZheng(enterpriseName, page) {
let selectParam:any = {}; let selectParam:any = {};
if (enterpriseName) { if (enterpriseName) {
...@@ -735,32 +737,32 @@ export async function qiyeRenZheng(enterpriseName, page) { ...@@ -735,32 +737,32 @@ export async function qiyeRenZheng(enterpriseName, page) {
let updateInfo:any = {}; let updateInfo:any = {};
for (let i = 0; i < enterprise_qualifications.length; i++) { for (let i = 0; i < enterprise_qualifications.length; i++) {
let item = enterprise_qualifications[i]; let item = enterprise_qualifications[i];
/**状态与时间逻辑不对的话,修改状态 */ /**状态与时间逻辑不对的话,修改状态 时间有数据,但状态为否,自动修改状态为是 */
if (item.kxTime && item.kxState != enumConfig.STATE.) { if (item.kxTime && item.kxState != enumConfig.STATE.) {
updateInfo.kxState = enumConfig.STATE.; updateInfo.kxState = enumConfig.STATE.;
item.kxState = enumConfig.STATE.; item.kxState = enumConfig.STATE.;
} }
if (item.zjtxTime && item.zjtxState != enumConfig.STATE.) { if (item.zjtxTime && item.zjtxState != enumConfig.STATE.) {
updateInfo.zjtxState = enumConfig.STATE.; updateInfo.zjtxState = enumConfig.STATE.;
item.zjtxState = enumConfig.STATE.; item.zjtxState = enumConfig.STATE.;
} }
if (item.xjrTime && item.xjrState != enumConfig.STATE.) { if (item.xjrTime && item.xjrState != enumConfig.STATE.) {
updateInfo.xjrState = enumConfig.STATE.; updateInfo.xjrState = enumConfig.STATE.;
item.xjrState = enumConfig.STATE.; item.xjrState = enumConfig.STATE.;
} }
if (item.xjrPyTime && item.xjrPyState != enumConfig.STATE.) { if (item.xjrPyTime && item.xjrPyState != enumConfig.STATE.) {
updateInfo.xjrPyState = enumConfig.STATE.; updateInfo.xjrPyState = enumConfig.STATE.;
item.xjrPyState = enumConfig.STATE.; item.xjrPyState = enumConfig.STATE.;
} }
if (item.goPublicTime && item.listedState != enumConfig.STATE.) { if (item.goPublicTime && item.listedState != enumConfig.STATE.) {
updateInfo.listedState = enumConfig.STATE.; updateInfo.listedState = enumConfig.STATE.;
item.listedState = enumConfig.STATE.; item.listedState = enumConfig.STATE.;
} }
if (item.gaoXinJiShuTime && item.gxjsState != enumConfig.STATE.) { if (item.gaoXinJiShuTime && item.gxjsState != enumConfig.STATE.) {
updateInfo.gxjsState = enumConfig.STATE.; updateInfo.gxjsState = enumConfig.STATE.;
item.gxjsState = enumConfig.STATE.; item.gxjsState = enumConfig.STATE.;
} }
if(Object.keys(updateInfo).length > 0) await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, updateInfo, {qId:item.qId}); if(Object.keys(updateInfo).length > 0) await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业资质, updateInfo, {qId:item.qId});
if (item.kxTime) addItem.kxTime = moment(item.kxTime).format("YYYY"); if (item.kxTime) addItem.kxTime = moment(item.kxTime).format("YYYY");
if (item.kxState) addItem.kxState = changeEnumValue(enumConfig.STATE, item.kxState); if (item.kxState) addItem.kxState = changeEnumValue(enumConfig.STATE, item.kxState);
......
...@@ -48,6 +48,13 @@ export async function enterpriseService(enterpriseName, followUpStatus, page) { ...@@ -48,6 +48,13 @@ export async function enterpriseService(enterpriseName, followUpStatus, page) {
return {dataList, dataCount:allResList.length}; return {dataList, dataCount:allResList.length};
} }
/**
* 受理
* @param esId
* @param fangKui
* @returns
*/
export async function enterpriseServiceOption(esId:string, fangKui:string) { export async function enterpriseServiceOption(esId:string, fangKui:string) {
let selectParam:any = {esId}; let selectParam:any = {esId};
let filesList = ["esId"]; let filesList = ["esId"];
...@@ -63,6 +70,14 @@ export async function enterpriseServiceOption(esId:string, fangKui:string) { ...@@ -63,6 +70,14 @@ export async function enterpriseServiceOption(esId:string, fangKui:string) {
}; };
} }
/**
* 结束
* @param esId
* @param outcome
* @param desc
* @returns
*/
export async function enterpriseServiceEnd(esId:string, outcome:number, desc:string) { export async function enterpriseServiceEnd(esId:string, outcome:number, desc:string) {
let selectParam:any = {esId}; let selectParam:any = {esId};
let filesList = ["esId"]; let filesList = ["esId"];
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import moment = require("moment"); import moment = require("moment");
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum"; import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum";
import { EMIGRATIONTYPE, FUHUASTATE, INCOME, INDUSTRY, STATE } from "../config/enum/enum"; import { BUILDING, CHANGETYPE, EMIGRATIONTYPE, FUHUASTATE, INCOME, INDUSTRY, OFFLINEPROMOTION, ONLINEPROMOTION, PROMOTIONTYPE, STATE } from "../config/enum/enum";
import { operationalData, selectData, selectManyTableData } from "../data/operationalData"; import { operationalData, selectData, selectManyTableData } from "../data/operationalData";
import { getMySqlMs, randomId } from "../tools/system"; import { getMySqlMs, randomId } from "../tools/system";
import { changeEnumValue } from "../util/verificationEnum"; import { changeEnumValue } from "../util/verificationEnum";
...@@ -25,39 +25,52 @@ export async function getBaseData() { ...@@ -25,39 +25,52 @@ export async function getBaseData() {
let baseData = { let baseData = {
fuhuaData:{ //孵化器数据 fuhuaData:{ //孵化器数据
"总面积":0, //没有 // "总面积":0, //没有
"孵化器总面积":0,
"在孵面积":0, "在孵面积":0,
"自用面积":0, // "自用面积":0,
"在孵企业":0, "在孵企业":0,
"迁出企业":0, "迁出企业":0,
"毕业企业":0, "毕业企业":0,
"园区面积":0,//新增 "出租率": "", // 添加出租率字段
"产业规模": 0, // "园区面积":0,//新增
"总资产投入金额": 0, // "产业规模": 0,
"引入机构数量": 0, // "总资产投入金额": 0,
"引入机构投资": 0, // "引入机构数量": 0,
// "引入机构投资": 0,
}, },
fuhuaPinfen:0, //孵化器评分 没有该字段 fuhuaPinfen:0, //孵化器评分 没有该字段
fuhuaInfo:{ //孵化器信息 fuhuaInfo:{ //孵化器信息
} },
entryInfo: {}, // 孵化器入驻信息
promotionInfo: {} // 运营推广信息
}; };
let filesList = ["eId", "enterpriseName", "uscc", "logonTime"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime"];
let selectParam = {state:STATE.}; let selectParam = {state:STATE.};
/**在孵企业 当前时间小于孵化结束时间 */ /**在孵企业 当前时间小于孵化结束时间 */
let araeParam = {column:["area", "unitPrice", "roomNumber", "rent"], where:{} }; let araeParam = {column:["area", "unitPrice", "roomNumber", "rent", "startTime", "endTime"], where:{} };
let zaifuTableInfo:any = {}; let zaifuTableInfo:any = {};
zaifuTableInfo[TABLENAME.租赁信息] = araeParam; zaifuTableInfo[TABLENAME.租赁信息] = araeParam;
zaifuTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{state:{"%ne%":FUHUASTATE.迁出}} }; zaifuTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{state:{"%ne%":FUHUASTATE.迁出}} };
let zaifuResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["eId"], zaifuTableInfo ); let zaifuResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["eId"], zaifuTableInfo );
if (zaifuResList) baseData.fuhuaData["在孵企业"] = zaifuResList.length; if (zaifuResList) baseData.fuhuaData["在孵企业"] = zaifuResList.length;
zaifuResList.forEach( info => { // zaifuResList.forEach( info => {
info.enterprise_leases.forEach( lease => { // info.enterprise_leases.forEach( lease => {
// baseData.fuhuaData["在孵面积"] += parseFloat(lease.area);
// })
// })
// 累加在孵面积(考虑租赁时间)
zaifuResList.forEach(info => {
info.enterprise_leases.forEach(lease => {
// 确认租赁时间在有效范围内
if (nowTime >= lease.startTime && nowTime <= lease.endTime) {
baseData.fuhuaData["在孵面积"] += parseFloat(lease.area); baseData.fuhuaData["在孵面积"] += parseFloat(lease.area);
}) }
}) });
});
// baseData.fuhuaData["在孵面积占比"] = ((baseData.fuhuaData["在孵面积(㎡)"] / baseData.fuhuaData["总面积(㎡)"])*100).toFixed(2) + "%"; // baseData.fuhuaData["在孵面积占比"] = ((baseData.fuhuaData["在孵面积(㎡)"] / baseData.fuhuaData["总面积(㎡)"])*100).toFixed(2) + "%";
/**迁出企业 */ /**迁出企业 */
...@@ -71,15 +84,19 @@ export async function getBaseData() { ...@@ -71,15 +84,19 @@ export async function getBaseData() {
/**孵化器信息 */ /**孵化器信息 */
let yuyiList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器信息, {}, []); let yuyiList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器信息, {}, []);
if (baseData.fuhuaData["在孵面积"] != yuyiList.zaifuArea) await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.羽翼孵化器信息, {zaifuArea:baseData.fuhuaData["在孵面积"]}, {yId:yuyiList.yId});
if (yuyiList) { if (yuyiList) {
baseData.fuhuaData["总面积"] = yuyiList.totalArea; // baseData.fuhuaData["总面积"] = yuyiList.totalArea;
baseData.fuhuaData["在孵面积"] = yuyiList.zaifuArea; baseData.fuhuaData["孵化器总面积"] = yuyiList.totalArea;
baseData.fuhuaData["自用面积"] = yuyiList.ziyonArea; // baseData.fuhuaData["在孵面积"] = yuyiList.zaifuArea;
baseData.fuhuaData["园区面积"] = yuyiList.parkArea;//新增 // baseData.fuhuaData["自用面积"] = yuyiList.ziyonArea;
baseData.fuhuaData["产业规模"] = yuyiList.industrialScale; // baseData.fuhuaData["园区面积"] = yuyiList.parkArea;//新增
baseData.fuhuaData["总资产投入金额"] = yuyiList.totalAssetInvestmentAmount; // baseData.fuhuaData["产业规模"] = yuyiList.industrialScale;
baseData.fuhuaData["引入机构数量"] = yuyiList.numberOfInstitutionsIntroduced; // baseData.fuhuaData["总资产投入金额"] = yuyiList.totalAssetInvestmentAmount;
baseData.fuhuaData["引入机构投资"] = yuyiList.introduceInstitutionalInvestment; // baseData.fuhuaData["引入机构数量"] = yuyiList.numberOfInstitutionsIntroduced;
// baseData.fuhuaData["引入机构投资"] = yuyiList.introduceInstitutionalInvestment;
baseData.fuhuaData["出租率"] = yuyiList.rentRate;//出租率
baseData.fuhuaInfo = { baseData.fuhuaInfo = {
"运营名称":yuyiList.operateName, "运营名称":yuyiList.operateName,
...@@ -90,7 +107,7 @@ export async function getBaseData() { ...@@ -90,7 +107,7 @@ export async function getBaseData() {
"孵化器认定时间":yuyiList.incubateTime, "孵化器认定时间":yuyiList.incubateTime,
"孵化领域":yuyiList.incubateField, "孵化领域":yuyiList.incubateField,
"机构性质":yuyiList.natureInstitution, "机构性质":yuyiList.natureInstitution,
"是否成立投资基金":yuyiList.fundedReserve, "是否成立投资基金":yuyiList.fundedReserve,//
"联系人":yuyiList.contacts, "联系人":yuyiList.contacts,
"负责人":yuyiList.personCharge, "负责人":yuyiList.personCharge,
"手机号码":yuyiList.phone, "手机号码":yuyiList.phone,
...@@ -98,6 +115,42 @@ export async function getBaseData() { ...@@ -98,6 +115,42 @@ export async function getBaseData() {
} }
} }
/**
* 孵化器入驻信息
*/
let entryList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.入驻信息表, {}, [`info_enterId`, `building`, `occupancyRate`, `enteredEnterprises`]);
baseData.entryInfo = {"1":{"入驻率":"", "入驻企业":""}, "3":{"入驻率":"", "入驻企业":""}, "4":{"入驻率":"", "入驻企业":""}};
if (entryList.length) {
entryList.forEach( info => {
// let building = changeEnumValue(BUILDING, info.building);
let building = info.building;
if (!baseData.entryInfo[building]) {
baseData.entryInfo[building] = { "入驻率": "", "入驻企业": "" };
}
baseData.entryInfo[building].入驻率 = info.occupancyRate;
baseData.entryInfo[building].入驻企业 = info.enteredEnterprises;
})
}
/**
* 运营推广(次数)
*/
let promotionList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.运营推广信息表,{}, ["opId","promotionType", "promotionApp", "promotionNum"]);
baseData.promotionInfo = {"线上推广": {}, "线下推广": {}};
if (promotionList.length) {
promotionList.forEach( info => {
let appStr = "";
if (info.promotionType == PROMOTIONTYPE.线上推广) {
appStr = changeEnumValue(ONLINEPROMOTION, info.promotionApp);
baseData.promotionInfo["线上推广"][appStr] = info.promotionNum;
} else if (info.promotionType == PROMOTIONTYPE.线下推广) {
appStr = changeEnumValue(OFFLINEPROMOTION, info.promotionApp);
baseData.promotionInfo["线下推广"][appStr] = info.promotionNum;
}
})
}
return {baseData}; return {baseData};
} }
...@@ -107,81 +160,215 @@ export async function getBaseData() { ...@@ -107,81 +160,215 @@ export async function getBaseData() {
* 出租率变化趋势暂未接入数据库数据 * 出租率变化趋势暂未接入数据库数据
* 孵化器收入暂未接入数据库数据 * 孵化器收入暂未接入数据库数据
*/ */
// export async function getOperateData(year) {
// // let yearTime = moment(year).format("YYYY-MM-DD");
// // console.log(yearTime);
// let yearTime = moment(year, "YYYY").startOf('year').format("YYYY-MM-DD");
// console.log("yearTime:", yearTime);
// let operateData = {
// "当前在孵企业数":0,
// "在孵企业数变化趋势":{
// "实体孵化":[],
// "虚拟孵化":[],
// },
// "毕业企业数变化趋势":{
// "毕业企业":[]
// },
// "出租率变化趋势":[],
// "在孵企业行业领域":[],
// "孵化器收入":[]
// };
// let qushiConf = {"01":0, "02":0, "03":0, "04":0, "05":0, "06":0, "07":0, "08":0, "09":0, "10":0, "11":0, "12":0};
// // let qushiConf = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
// /**在孵企业 */
// // let zaifuParam = {state:{"%notIn%":FUHUASTATE.迁出}};
// let zaifuParam = {startTime:{"%lt%":yearTime}, endTime:{"%gt%":yearTime}, state:{"%notIn%":FUHUASTATE.迁出}};
// console.log("zaifuParam:", zaifuParam);
// let zaifuList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, zaifuParam, {});
// console.log("zaifuList length:", zaifuList.length);
// operateData.当前在孵企业数 = zaifuList.length;
// let zaifuStateInfo = {
// "实体孵化":qushiConf,
// "虚拟孵化":qushiConf
// };
// zaifuList.forEach( info => {
// let state = changeEnumValue(FUHUASTATE, info.state);
// let time = moment(info.endTime).format("YYYY-MM");
// let year = moment(info.endTime).format("YYYY");
// let month = moment(info.endTime).format("MM");
// if (!zaifuStateInfo[state]) zaifuStateInfo[state] = {};
// // if (year == yearTime) {
// if (year === moment(yearTime).format("YYYY")) {
// zaifuStateInfo[state][month] += 1;
// }
// })
// for (let key in zaifuStateInfo["实体孵化"]) {
// operateData.在孵企业数变化趋势.实体孵化.push({key, value:zaifuStateInfo["实体孵化"][key].toString()});
// }
// //X轴排序
// operateData.在孵企业数变化趋势.实体孵化.sort( (a, b) => {
// return a.key - b.key;
// })
// for (let key in zaifuStateInfo["虚拟孵化"]) {
// operateData.在孵企业数变化趋势.虚拟孵化.push({key, value:zaifuStateInfo["虚拟孵化"][key].toString()});
// }
// //X轴排序
// operateData.在孵企业数变化趋势.虚拟孵化.sort( (a, b) => {
// return a.key - b.key;
// })
// /**毕业企业 */
// let biyeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {graduationTime:{"%ne%":null}}, {});//state:{"%ne%":0}
// let biyeInfo = qushiConf;
// biyeList.forEach( info => {
// let year = moment(info.graduationTime).format("YYYY");
// let month = moment(info.graduationTime).format("MM");
// // if (year == yearTime) {
// if (year === moment(yearTime).format("YYYY")) {
// biyeInfo[month] += 1;
// }
// })
// for(let key in biyeInfo) {
// operateData.毕业企业数变化趋势.毕业企业.push({key, value:biyeInfo[key].toString()});
// }
// //X轴排序
// operateData.毕业企业数变化趋势.毕业企业.sort( (a, b) => {
// return a.key - b.key;
// })
// /**出租率 */
// let chuzulvParam = {startTime:{"%lt%":yearTime}, endTime:{"%gt%":yearTime}};
// // let chuzulvList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME., chuzulvParam);
// let chuzulvInfo = qushiConf;
// for(let key in chuzulvInfo) {
// operateData.出租率变化趋势.push({key, value:chuzulvInfo[key].toString()});
// }
// //X轴排序
// operateData.出租率变化趋势.sort( (a, b) => {
// return a.key - b.key;
// })
// /**在孵企业行业领域 */
// /**在孵企业 当前时间小于孵化结束时间 */
// let araeParam = {column:["area", "unitPrice", "roomNumber", "rent"], where:{} };
// let zaifuTableInfo:any = {};
// zaifuTableInfo[TABLENAME.租赁信息] = araeParam;
// zaifuTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{startTime:{"%lt%":yearTime}, endTime:{"%gt%":yearTime}, state:{"%notIn%":FUHUASTATE.迁出}} };
// // let zaifuList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {endTime:{"%lt%":nowTime}}, {});
// let zaifuResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, ["eId", "industry"], zaifuTableInfo );
// for (let key in INDUSTRY) {
// let industryData:any = {};
// let anyKey:any = key;
// if (isNaN(anyKey)) {
// const EnumValue = parseInt(INDUSTRY[key])
// industryData = {key:anyKey, value:0};
// zaifuResList.forEach( info => {
// if (info.industry == EnumValue) {
// industryData.value += 1;
// }
// })
// operateData.在孵企业行业领域.push(industryData);
// }
// }
// /**孵化器收入 */
// for (let key in INCOME) {
// let anyKey:any = key;
// if (isNaN(anyKey)) {
// operateData.孵化器收入.push({key:anyKey, value:0});
// }
// }
// return {operateData};
// }
export async function getOperateData(year) { export async function getOperateData(year) {
let yearTime = moment(year).format("YYYY"); let yearTime = moment(year, "YYYY").startOf('year').format("YYYY-MM-DD");
console.log("yearTime:", yearTime);
let operateData = { let operateData = {
"当前在孵企业数":0, "当前在孵企业数": 0,
"在孵企业数变化趋势":{ // "在孵企业数变化趋势": [], // 修改:不再区分实体/虚拟
"实体孵化":[], "在孵企业数变化趋势": {
"虚拟孵化":[], "在孵企业": []
}, },
"毕业企业数变化趋势":{ "毕业企业数变化趋势": {
"毕业企业":[] "毕业企业": []
}, },
"出租率变化趋势":[], "出租率变化趋势": [],
"在孵企业行业领域":[], "在孵企业行业领域": [],
"孵化器收入":[] // "孵化器收入": []
}; };
let qushiConf = {"01":0, "02":0, "03":0, "04":0, "05":0, "06":0, "07":0, "08":0, "09":0, "10":0, "11":0, "12":0}; let qushiConf = { "01": 0, "02": 0, "03": 0, "04": 0, "05": 0, "06": 0, "07": 0, "08": 0, "09": 0, "10": 0, "11": 0, "12": 0 };
// let qushiConf = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"];
/**在孵企业 */ /**在孵企业 */
// let zaifuParam = {state:{"%notIn%":FUHUASTATE.迁出}}; let zaifuParam = {
let zaifuParam = {startTime:{"%lt%":yearTime}, endTime:{"%gt%":yearTime}, state:{"%notIn%":FUHUASTATE.迁出}}; startTime: { "%lt%": yearTime },
endTime: { "%gt%": yearTime },
state: { "%notIn%": [FUHUASTATE.迁出] }
};
let zaifuList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, zaifuParam, {}); let zaifuList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, zaifuParam, {});
operateData.当前在孵企业数 = zaifuList.length; operateData.当前在孵企业数 = zaifuList.length;
let zaifuStateInfo = {
"实体孵化":qushiConf, // 新增:统一统计每个月的数据
"虚拟孵化":qushiConf let trendInfo = { ...qushiConf }; // 初始化每月数据为0
};
zaifuList.forEach( info => { zaifuList.forEach(info => {
let state = changeEnumValue(FUHUASTATE, info.state);
let time = moment(info.endTime).format("YYYY-MM");
let year = moment(info.endTime).format("YYYY"); let year = moment(info.endTime).format("YYYY");
let month = moment(info.endTime).format("MM"); let month = moment(info.endTime).format("MM");
if (!zaifuStateInfo[state]) zaifuStateInfo[state] = {};
if (year == yearTime) {
zaifuStateInfo[state][month] += 1;
}
})
for (let key in zaifuStateInfo["实体孵化"]) { if (year === moment(yearTime).format("YYYY")) {
operateData.在孵企业数变化趋势.实体孵化.push({key, value:zaifuStateInfo["实体孵化"][key].toString()}); trendInfo[month] += 1;
} }
//X轴排序 });
operateData.在孵企业数变化趋势.实体孵化.sort( (a, b) => {
return a.key - b.key;
})
for (let key in zaifuStateInfo["虚拟孵化"]) { // 转换为数组并排序
operateData.在孵企业数变化趋势.虚拟孵化.push({key, value:zaifuStateInfo["虚拟孵化"][key].toString()}); for (let key in trendInfo) {
operateData.在孵企业数变化趋势.在孵企业.push({ key, value: trendInfo[key].toString() });
} }
//X轴排序
operateData.在孵企业数变化趋势.虚拟孵化.sort( (a, b) => {
return a.key - b.key;
})
operateData.在孵企业数变化趋势.在孵企业.sort((a, b) => a.key - b.key);
/**毕业企业 */ /**毕业企业 */
let biyeList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {graduationTime:{"%ne%":null}}, {}); let biyeList = await selectData(
let biyeInfo = qushiConf; OPERATIONALDATATYPE.查询多个,
biyeList.forEach( info => { TABLENAME.企业孵化信息,
let year = moment(info.graduationTime).format("YYYY"); { moveOutType: EMIGRATIONTYPE.毕业迁出 }, {}); // 只查毕业迁出的企业
let month = moment(info.graduationTime).format("MM");
if (year == yearTime) {
biyeInfo[month] += 1;
}
})
for(let key in biyeInfo) { let biyeInfo = { ...qushiConf }; // 每月初始化为0
operateData.毕业企业数变化趋势.毕业企业.push({key, value:biyeInfo[key].toString()});
biyeList.forEach(info => {
let graduationTime = info.graduationTime || info.moveOutTime; // 如果graduationTime不存在用moveOutTime代替
if (!graduationTime) return;
let year = moment(graduationTime).format("YYYY");
let month = moment(graduationTime).format("MM");
if (year === moment(yearTime).format("YYYY")) {
biyeInfo[month] += 1;
} }
//X轴排序 });
operateData.毕业企业数变化趋势.毕业企业.sort( (a, b) => {
return a.key - b.key;
})
operateData.毕业企业数变化趋势.毕业企业 = Object.keys(biyeInfo)
.map(key => ({ key, value: biyeInfo[key].toString() }))
// .sort((a, b) => a.key - b.key);
.sort((a, b) => parseInt(a.key) - parseInt(b.key));
/**出租率 */ /**出租率 */
let chuzulvParam = {startTime:{"%lt%":yearTime}, endTime:{"%gt%":yearTime}}; let chuzulvParam = {startTime:{"%lt%":yearTime}, endTime:{"%gt%":yearTime}};
...@@ -197,39 +384,56 @@ export async function getOperateData(year) { ...@@ -197,39 +384,56 @@ export async function getOperateData(year) {
/**在孵企业行业领域 */ /**在孵企业行业领域 */
/**在孵企业 当前时间小于孵化结束时间 */ // let araeParam = { column: ["area", "unitPrice", "roomNumber", "rent"], where: {} };
let araeParam = {column:["area", "unitPrice", "roomNumber", "rent"], where:{} }; let araeParam = { column: ["area", "building", "roomNumber", "rent"], where: {} };
let zaifuTableInfo:any = {}; let zaifuTableInfo: any = {};
zaifuTableInfo[TABLENAME.租赁信息] = araeParam; zaifuTableInfo[TABLENAME.租赁信息] = araeParam;
zaifuTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{startTime:{"%lt%":yearTime}, endTime:{"%gt%":yearTime}, state:{"%notIn%":FUHUASTATE.迁出}} }; zaifuTableInfo[TABLENAME.企业孵化信息] = {
// let zaifuList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业孵化信息, {endTime:{"%lt%":nowTime}}, {}); column: ["state", "startTime", "endTime"],
let zaifuResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, ["eId", "industry"], zaifuTableInfo ); where: { startTime: { "%lt%": yearTime }, endTime: { "%gt%": yearTime }, state: { "%notIn%": FUHUASTATE.迁出 } },
};
let zaifuResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {}, ["eId", "industry"], zaifuTableInfo);
// console.log("zaifuResList:", zaifuResList);
//将 industry 字符串转换为数组
zaifuResList.forEach(info => {
if (typeof info.industry === 'string') {
try {
info.industry = JSON.parse(info.industry);
} catch (e) {
console.error("Failed to parse industry:", e);
info.industry = []; // 如果解析失败,设置为默认空数组
}
}
});
for (let key in INDUSTRY) { for (let key in INDUSTRY) {
let industryData:any = {}; let industryData: any = {};
let anyKey:any = key; let anyKey: any = key;
if (isNaN(anyKey)) { if (isNaN(anyKey)) {
const EnumValue = parseInt(INDUSTRY[key]) const EnumValue = parseInt(INDUSTRY[key]);
industryData = {key:anyKey, value:0}; industryData = { key: anyKey, value: 0 };
zaifuResList.forEach( info => { zaifuResList.forEach(info => {
if (info.industry == EnumValue) { if (info.industry == EnumValue) {
industryData.value += 1; industryData.value += 1;
} }
}) });
operateData.在孵企业行业领域.push(industryData); operateData.在孵企业行业领域.push(industryData);
} }
} }
// /**孵化器收入 */
// for (let key in INCOME) {
// let anyKey: any = key;
// if (isNaN(anyKey)) {
// operateData.孵化器收入.push({ key: anyKey, value: 0 });
// }
// }
/**孵化器收入 */
for (let key in INCOME) {
let anyKey:any = key;
if (isNaN(anyKey)) {
operateData.孵化器收入.push({key:anyKey, value:0});
}
}
return {operateData}; return { operateData };
} }
...@@ -237,41 +441,157 @@ export async function getOperateData(year) { ...@@ -237,41 +441,157 @@ export async function getOperateData(year) {
* 风险预警 * 风险预警
* 暂未接入数据库数据 * 暂未接入数据库数据
*/ */
// export async function getRiskData() {
// let riskData = [
// {
// key:"出租率异常",
// value:0
// },
// {
// key:"办公地址冲突",
// value:0
// },
// {
// key:"连续未填报",
// value:0
// },
// ]
// return riskData;
// }
export async function getRiskData() { export async function getRiskData() {
let riskData = [ let riskData = [
{ {
key:"出租率异常", key: "迁出异常",
value:0 value: 0
}, },
{ {
key:"办公地址冲突", key: "办公地址冲突",
value:0 value: 0
}, },
{ {
key:"连续未填报", key: "连续未填报",
value:0 value: 0
}, },
] ];
// 1. 获取所有迁出记录(state 为迁出)
let zaifuList = await selectManyTableData(OPERATIONALDATATYPE.多表联查,TABLENAME.企业基础信息表,{},["eId", "enterpriseName"],
{
[TABLENAME.企业孵化信息]: {
column: ["state", "moveOutTime", "moveOutType", "endTime"],
where: { state: FUHUASTATE.迁出 }
}
}
);
let abnormalCount = 0;
for (const info of zaifuList) {
const incubationInfo = info.enterprise_fuhuas[0]; // 关联的孵化信息
if (!incubationInfo || !incubationInfo.moveOutTime) continue;
let moveOutTime = new Date(incubationInfo.moveOutTime);
let endTime = info.enterprise_fuhuas[0].endTime ? new Date(info.enterprise_fuhuas[0].endTime) : null;
// 1. 违约迁出
let isBreachExit = incubationInfo.moveOutType === EMIGRATIONTYPE.违约退租;
// 2. 未到期迁出(迁出早于孵化结束)
let isEarlyExit = endTime && moveOutTime < endTime;
// 如果满足任一异常条件,计为异常
if (isBreachExit || isEarlyExit) {
abnormalCount++;
}
}
riskData[0].value = abnormalCount;
// 2. 办公地址冲突(楼号 + 室号 + 时间段冲突)
let leaseList = await selectData(OPERATIONALDATATYPE.查询多个,TABLENAME.租赁信息,{},["eId", "building", "roomNumber", "startTime", "endTime"]);
// 构建一个 map,key 是 building_roomNumber,值是租赁时间段列表
let addressMap = new Map<string, Array<{ eId: number; start: Date; end: Date }>>();
for (const lease of leaseList) {
const key = `${lease.building}_${lease.roomNumber}`;
const timeRange = {
eId: lease.eId,
start: new Date(lease.startTime),
end: new Date(lease.endTime)
};
if (!addressMap.has(key)) {
addressMap.set(key, []);
}
addressMap.get(key)?.push(timeRange);
}
let conflictCount = 0;
// 遍历每个地址组合,检查时间段是否有重叠
for (const [key, ranges] of addressMap.entries()) {
for (let i = 0; i < ranges.length; i++) {
for (let j = i + 1; j < ranges.length; j++) {
const a = ranges[i];
const b = ranges[j];
// 判断时间段是否重叠
if (a.start < b.end && b.start < a.end) {
conflictCount++;
break; // 当前地址组合已冲突,跳出循环
}
}
}
}
riskData[1].value = conflictCount;
// 3. 连续未填报(改进:在孵企业中没有任何经营数据)
let selectParam = {state:STATE.};
/**在孵企业 当前时间小于孵化结束时间 */
let araeParam = {column:["area", "unitPrice", "roomNumber", "rent", "startTime", "endTime"], where:{} };
let zaifuTableInfo:any = {};
zaifuTableInfo[TABLENAME.租赁信息] = araeParam;
zaifuTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{state:{"%ne%":FUHUASTATE.迁出}} };
let allIncubatingEnterprises = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["eId"], zaifuTableInfo );
// 收集所有有填报记录的企业
let reportedEnterprises = await selectData(OPERATIONALDATATYPE.查询多个,TABLENAME.企业经营信息,{},["eId"]);
let reportedEIds = new Set(reportedEnterprises.map(e => e.eId));
// 找出没有填报的在孵企业
let continuousUnreported = new Set<number>();
allIncubatingEnterprises.forEach(ent => {
if (!reportedEIds.has(ent.eId)) {
continuousUnreported.add(ent.eId);
}
});
riskData[2].value = continuousUnreported.size;
return riskData; return riskData;
} }
/** /**
* 价值分析 * 价值分析
*/ */
export async function getWorthDate() { export async function getWorthDate() {
let worthData = { let worthData = {
"countData":[ // "countData":[
{ // {
key:"国际合作/大企业合作机构", // key:"国际合作/大企业合作机构",
value:0 // value:0
}, // },
{ // {
key:"大学/科研院合作机构", // key:"大学/科研院合作机构",
value:0 // value:0
} // }
], // ],
"TXP":[], //纳税趋势(万元) "TXP":[], //纳税趋势(万元)
"financing":[], //融资企业数量趋势 "financing":[], //融资企业数量趋势
"jiuye":[] //就业人数趋势 "jiuye":[] //就业人数趋势
...@@ -280,6 +600,7 @@ export async function getWorthDate() { ...@@ -280,6 +600,7 @@ export async function getWorthDate() {
/**纳税趋势 */ /**纳税趋势 */
let nashuiList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, {}); let nashuiList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.企业经营信息, {}, {});
let nashuiData = {}; let nashuiData = {};
nashuiList.forEach( info => { nashuiList.forEach( info => {
let year = moment(info.annual).format("YYYY"); let year = moment(info.annual).format("YYYY");
...@@ -339,155 +660,71 @@ export async function getWorthDate() { ...@@ -339,155 +660,71 @@ export async function getWorthDate() {
// ============================== 管理后台操作 ====================================== // ============================== 管理后台操作 ======================================
/** /**
* 添加入孵企业 * 雨艺孵化器数据回显
*/ */
export async function createRuFu(param) { // export async function getYuYiFuHua() {
const FuncName = "管理员添加入孵企业" // let yuyiInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器信息, {uscc:"91310115069312504K"}, []);
eccFormParam(FuncName, AdminRegisterAddConfig, param ); // let dataInfo:any = extractData(YuYiBaseDataConfig, yuyiInfo);
// //兼容一下唯一一个number
// // dataInfo.enterpriseNum = dataInfo.enterpriseNum || 0;
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业用户表, {phone:param.phone}, ["uId"]);
if (userInfo && userInfo.uId) throw new BizError(ERRORENUM.手机号码重复); // return {dataInfo};
// }
export async function getYuYiFuHua() {
// let filesList = ["eId"]; // 1. 获取羽翼孵化器基本信息
let filesList = ["eId", "uscc"]; let yuyiInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器信息, {uscc: "91310115069312504K"}, []);
let enterpriseUserInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc:param.uscc}, filesList); let dataInfo: any = extractData(YuYiBaseDataConfig, yuyiInfo);
// console.log("查询结果:", enterpriseUserInfo); // 添加日志
// 2. 获取孵化器入驻信息
if (enterpriseUserInfo && enterpriseUserInfo.eId) { let entryList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.入驻信息表, {}, [`info_enterId`, `building`, `occupancyRate`, `enteredEnterprises`]);
throw new BizError(ERRORENUM.企业已存在); let entryInfo = {"1": {"入驻率": "", "入驻企业": ""}, "3": {"入驻率": "", "入驻企业": ""}, "4": {"入驻率": "", "入驻企业": ""}};
if (entryList.length) {
entryList.forEach(info => {
// let building = changeEnumValue(BUILDING, info.building);
let building = info.building;
if (!entryInfo[building]) {
entryInfo[building] = { "入驻率": "", "入驻企业": "" };
} }
entryInfo[building].入驻率 = info.occupancyRate;
let addEInfo = { entryInfo[building].入驻企业 = info.enteredEnterprises;
eId:randomId(TABLEID.企业基础信息表), });
enterpriseName:param.enterpriseName,
uscc:param.uscc,
logonTime:getMySqlMs(param.logonTime),
logonAddress:JSON.stringify(["", "", "", param.logonAddress]),
state:0,
register:0
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业基础信息表, addEInfo, {});
let addUInfo = {
eId:addEInfo.eId,
uId:randomId(TABLEID.企业用户表),
phone:param.phone,
pwd:param.pwd,
userName:param.userName
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业用户表, addUInfo, {});
let fuHuaInfo = {
eId:addEInfo.eId,
fId:randomId(TABLEID.企业孵化信息),
startTime:getMySqlMs(param.fuHuaTimeStart),
endTime:getMySqlMs(param.fuHuaTimeEndTime),
state:0,
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业孵化信息, fuHuaInfo, {});
let leaseInfo = {
eId:addEInfo.eId,
leaseId:randomId(TABLEID.租赁信息),
area:param.area,
unitPrice:param.unitPrice,
roomNumber:param.roomNumber,
startTime:getMySqlMs(param.fuHuaTimeStart), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化开始时间
endTime:getMySqlMs(param.fuHuaTimeEndTime), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化结束时间
rent:param.rent,
} }
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.租赁信息, leaseInfo, {});
return {isSuccess:true}; // 3. 获取运营推广(次数)信息
} let promotionList = await selectData(OPERATIONALDATATYPE.查询多个, TABLENAME.运营推广信息表, {}, ["opId", "promotionType", "promotionApp", "promotionNum"]);
let promotionInfo = {"线上推广": {}, "线下推广": {}};
/** if (promotionList.length) {
* 入孵材料回显 promotionList.forEach(info => {
* @param eId let appStr = "";
* @returns if (info.promotionType == PROMOTIONTYPE.线上推广) {
*/ appStr = changeEnumValue(ONLINEPROMOTION, info.promotionApp);
export async function getRuFu(eId:string) { promotionInfo["线上推广"][appStr] = info.promotionNum;
let filesList = ["eId", "uscc", "enterpriseName", "logonAddress", "logonTime"]; } else if (info.promotionType == PROMOTIONTYPE.线下推广) {
let enterpriseUserInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList); appStr = changeEnumValue(OFFLINEPROMOTION, info.promotionApp);
if (!enterpriseUserInfo || !enterpriseUserInfo.eId) { promotionInfo["线下推广"][appStr] = info.promotionNum;
throw new BizError(ERRORENUM.请先申请入孵);
}
let leaseFilesList = ["leaseId", "area", "leaseContract", "entryPlan", "businessLicense", "agreement"];
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId}, leaseFilesList);
enterpriseUserInfo.logonAddress = JSON.parse(enterpriseUserInfo.logonAddress);
let zaifuList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业孵化信息, {eId}, ["startTime", "endTime"]);
let dataInfo:any = extractData(EnterpriseApplyForConfig, enterpriseUserInfo);
dataInfo.logonTime = moment(enterpriseUserInfo.logonTime).format("YYYY-MM-DD");
if (zaifuList.startTime) dataInfo.startTime = new Date(zaifuList.startTime).valueOf(); //孵化开始时间
else dataInfo.startTime = "";
if (zaifuList.endTime) dataInfo.endTime = new Date(zaifuList.endTime).valueOf(); //孵化结束时间
else dataInfo.endTime = "";
// if (zaifuList.startTime || zaifuList.endTime) dataInfo.leaseTime = `${moment(zaifuList.startTime).format("YYYY-MM-DD")}至${moment(zaifuList.endTime).format("YYYY-MM-DD")}`;
dataInfo.area = leaseInfo.area;
dataInfo.leaseContract = leaseInfo.leaseContract;
dataInfo.entryPlan = leaseInfo.entryPlan;
dataInfo.businessLicense = leaseInfo.businessLicense;
dataInfo.agreement = leaseInfo.agreement;
dataInfo.leaseContractModelUrl = "/yuyi/files/房屋租赁合同模板.docx";
dataInfo.entryPlanModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx";
dataInfo.businessLicenseUrl = "/yuyi/files/营业执照复印件.docx";
dataInfo.agreementModelUrl = "/yuyi/files/孵化协议模板.docx";
return {dataInfo};
}
/**
* 编辑入孵材料
* @param eId
* @param param
* @returns
*/
export async function updateRuFu(eId:string, param) {
const FuncName = "管理员修改入驻信息";
eccFormParam(FuncName, AdminRegisterUpdateConfig, param );
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
if (!resInfo || !resInfo.eId) {
throw new BizError(ERRORENUM.数据不存在);
} }
if (resInfo.state == 1) { });
throw new BizError(ERRORENUM.已审核请前往小程序登录)
} }
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, param, {eId}); // 4. 将 entryInfo 和 promotionInfo 可以合并到 dataInfo 中
// dataInfo.entryInfo = entryInfo;
// dataInfo.promotionInfo = promotionInfo;
return {isSuccess:true}; // 4. 组装返回数据
} return {
dataInfo,
entryInfo,
/** promotionInfo
* 雨艺孵化器数据回显 };
*/
export async function getYuYiFuHua() {
let yuyiInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器信息, {uscc:"91310115069312504K"}, []);
let dataInfo:any = extractData(YuYiBaseDataConfig, yuyiInfo);
//兼容一下唯一一个number
dataInfo.enterpriseNum = dataInfo.enterpriseNum || 0;
return {dataInfo};
} }
/** /**
* 雨艺孵化器基本信息修改 * 雨艺孵化器基本信息修改
* @param yId * @param yId
* @param entryInfo {"1号楼":{入驻率:"", 入驻企业:""}, ......}
* @param promotionInfo {"线上推广":{"活动宣讲":0, "三方机构合作":0}, "线下推广":{"活动宣讲":0, "三方机构合作":0}}
*/ */
export async function updateYuYi(yId, param) { export async function updateYuYi(yId, param) {
const FuncName = "雨艺孵化器基本信息修改"; const FuncName = "雨艺孵化器基本信息修改";
...@@ -497,8 +734,34 @@ export async function updateYuYi(yId, param) { ...@@ -497,8 +734,34 @@ export async function updateYuYi(yId, param) {
throw new BizError(ERRORENUM.数据不存在); throw new BizError(ERRORENUM.数据不存在);
} }
let enterInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.入驻信息表, {info_enterId:yuyiInfo.info_enterId}, [`info_enterId`, `building`, `occupancyRate`, `enteredEnterprises`]);
if (!enterInfo || !enterInfo.info_enterId) {
throw new BizError(ERRORENUM.数据不存在);
}
let promotiondbInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.运营推广信息表, {opId:yuyiInfo.opId}, ["opId", "promotionType", "promotionApp", "promotionNum"]);
if (!promotiondbInfo || !promotiondbInfo.opId) {
throw new BizError(ERRORENUM.数据不存在);
}
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.羽翼孵化器信息, param, {yId}); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.羽翼孵化器信息, param, {yId});
let entryInfo = param.entryInfo;
for (let key in entryInfo) {
let updateInfo = {occupancyRate:entryInfo[key].入驻率, enteredEnterprises:entryInfo[key].入驻企业};
let updateParam = {building:key}
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.入驻信息表, updateInfo, updateParam);
}
let promotionInfo = param.promotionInfo
for (let key in promotionInfo) {
for (let app in promotionInfo[key]) {
let updateInfo = {promotionNum:promotionInfo[key][app]};
let updateParam = {promotionType:key, promotionApp:app}
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.入驻信息表, updateInfo, updateParam);
}
}
// await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.入驻信息表, param, {info_enterId:yuyiInfo.info_enterId});
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.运营推广信息表, param, {opId:yuyiInfo.opId});
return {isSuccess:true}; return {isSuccess:true};
} }
......
/** /**
* 新入孵 * 新入孵
*/ */
import { ApplyForUpdateConfig, GardenNoticeUpdateConfig, PolicyUpdateConfig, RegisterUpdateConfig, SettleInForUpdateConfig } from "../config/eccParam/enterprise";
import { AdminRegisterAddConfig, AdminRegisterUpdateConfig, RegisterUpdateConfig, SettleInForUpdateConfig } from "../config/eccParam/enterprise";
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum"; import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum";
import * as enumConfig from "../config/enum/enum"; import * as enumConfig from "../config/enum/enum";
import { operationalData, selectData, selectManyTableData } from "../data/operationalData"; import { operationalData, selectData, selectManyTableData } from "../data/operationalData";
import { BizError } from "../util/bizError"; import { BizError } from "../util/bizError";
import { eccFormParam } from "../util/verificationParam"; import { eccFormParam } from "../util/verificationParam";
import { ERRORENUM } from "../config/enum/errorEnum"; import { ERRORENUM } from "../config/enum/errorEnum";
import { getMySqlMs, getToken, md5PwdStr, randomCode, randomId } from "../tools/system"; import { getMySqlMs, getPinyinInitials, getToken, md5PwdStr, randomCode, randomId } from "../tools/system";
import moment = require("moment"); import moment = require("moment");
import { changeAdd, extractData } from "../util/piecemeal"; import { changeAdd, extractData } from "../util/piecemeal";
import { EnterpriseApplyForConfig } from "../config/splitResult/enterprise"; import { EnterpriseApplyForConfig } from "../config/splitResult/enterprise";
...@@ -16,49 +17,148 @@ import { changeEnumValue } from "../util/verificationEnum"; ...@@ -16,49 +17,148 @@ import { changeEnumValue } from "../util/verificationEnum";
//=======================================================新入孵企业 //=======================================================新入孵企业
/**
* 添加入孵企业
*/
export async function createRuFu(param) {
const FuncName = "管理员添加入孵企业"
eccFormParam(FuncName, AdminRegisterAddConfig, param );
export async function settleInEnterpriseList(page:number, enterpriseName:string) { let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业用户表, {phone:param.phone}, ["uId"]);
if (userInfo && userInfo.uId) throw new BizError(ERRORENUM.手机号码重复);
// let filesList = ["eId"];
let filesList = ["eId", "uscc"];
let enterpriseUserInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc:param.uscc}, filesList);
// console.log("查询结果:", enterpriseUserInfo); // 添加日志
if (enterpriseUserInfo && enterpriseUserInfo.eId) throw new BizError(ERRORENUM.企业已存在);
let pinyinName = getPinyinInitials(param.enterpriseName);
let addEInfo = {
eId:randomId(TABLEID.企业基础信息表),
enterpriseName:param.enterpriseName,
pinyinName,
uscc:param.uscc,
logonTime:getMySqlMs(param.logonTime),
logonAddress:JSON.stringify(["", "", "", param.logonAddress]),
mail:param.mail,//邮箱地址
state:0,
register:0
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业基础信息表, addEInfo, {});
let addUInfo = {
eId:addEInfo.eId,
uId:randomId(TABLEID.企业用户表),
phone:param.phone,
pwd:param.pwd,
userName:param.userName
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业用户表, addUInfo, {});
let fuHuaInfo = {
eId:addEInfo.eId,
fId:randomId(TABLEID.企业孵化信息),
startTime:getMySqlMs(param.fuHuaTimeStart),
endTime:getMySqlMs(param.fuHuaTimeEndTime),
state:0,
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业孵化信息, fuHuaInfo, {});
let selectParam:any = {state:enumConfig.STATE., register:enumConfig.STATE.}; let leaseInfo = {
eId:addEInfo.eId,
leaseId:randomId(TABLEID.租赁信息),
area:param.area,
unitPrice:param.unitPrice,
building: param.building|| null, // 楼号
roomNumber:param.roomNumber,
// startTime:getMySqlMs(param.fuHuaTimeStart), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化开始时间
// endTime:getMySqlMs(param.fuHuaTimeEndTime), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化结束时间
startTime: getMySqlMs(param.leaseStartTime), // 租赁开始时间
endTime: getMySqlMs(param.leaseEndTime), // 租赁结束时间
rent:param.rent,
}
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.租赁信息, leaseInfo, {});
let addInfo = {
approvalId: randomId(TABLEID.入孵申请审批表),
eId:addEInfo.eId,
changeType: enumConfig.CHANGETYPE.入孵申请,
changeState: enumConfig.CHANGESTATE.未审核,
createTimeMs: getMySqlMs()
}
await operationalData( OPERATIONALDATATYPE.增加, TABLENAME.入孵申请审批表, addInfo, {} );
return {isSuccess:true};
}
/**
* 入孵申请列表
* @param page
* @param enterpriseName
* @returns
*/
export async function settleInEnterpriseList(page:number, enterpriseName:string) {
// let selectParam:any = {register:enumConfig.REGISTER.否, "%or%":[{"state":enumConfig.RUFICAILIAOSTATE.已驳回}, {"state":enumConfig.RUFICAILIAOSTATE.否}]};
let selectParam:any = {register:enumConfig.STATE., state:enumConfig.STATE.};
if (enterpriseName) selectParam.enterpriseName = {"%like%":enterpriseName}; if (enterpriseName) selectParam.enterpriseName = {"%like%":enterpriseName};
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "mail"];
let manyTableInfo:any = {} let manyTableInfo:any = {}
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "unitPrice", "roomNumber", "rent", "totalPrice"], where:{} }; manyTableInfo[TABLENAME.租赁信息] = {column:["area", "building", "roomNumber", "rent", "startTime", "endTime"], where:{} };
manyTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{} }; manyTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{} };
manyTableInfo[TABLENAME.企业用户表] = {column:["userName", "pwd", "phone", "uId"], where:{} }; manyTableInfo[TABLENAME.企业用户表] = {column:["userName", "pwd", "phone", "uId"], where:{} };
// manyTableInfo[TABLENAME.入孵申请审批表] = {column:["approvalId", "changeState", "createTimeMs"], where:{"%literal%":`approval_histories.changeType = ${enumConfig.CHANGETYPE.入孵申请}`, "%limit%":1} };
let resList = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page ); let resList = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page );
let allResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["eId"], manyTableInfo ); let allResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["eId"], manyTableInfo );
let dataList = []; let dataList = [];
resList.forEach(info => { resList.forEach(info => {
dataList.push({ dataList.push({
eId:info.eId, eId:info.eId,
enterpriseName:info.enterpriseName, enterpriseName:info.enterpriseName,//企业名称
uscc:info.uscc, uscc:info.uscc,//统一信用代码
logonTime:moment(info.logonTime).format("YYYY-MM-DD"), logonTime:moment(info.logonTime).format("YYYY-MM-DD"),//注册时间
leaseTime:`${moment(info.enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(info.enterprise_leases[0].endTime).format("YYYY-MM-DD")}`, leaseTime:`${moment(info.enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(info.enterprise_leases[0].endTime).format("YYYY-MM-DD")}`,
leaseTimeStart:info.enterprise_leases[0].startTime || 0, // leaseTimeStart:info.enterprise_leases[0].startTime || 0,
leaseTimeEnd:info.enterprise_leases[0].endTime || 0, // leaseTimeEnd:info.enterprise_leases[0].endTime || 0,
leaseStartTime:info.enterprise_leases[0].startTime || 0,
leaseEndTime:info.enterprise_leases[0].endTime || 0,
fuHuaTimeStart:info.enterprise_fuhuas[0].startTime||0, fuHuaTimeStart:info.enterprise_fuhuas[0].startTime||0,
fuHuaTimeEnd:info.enterprise_fuhuas[0].endTime||0, fuHuaTimeEnd:info.enterprise_fuhuas[0].endTime||0,
area:info.enterprise_leases[0].area, area:info.enterprise_leases[0].area,//租赁面积
unitPrice:info.enterprise_leases[0].unitPrice, // unitPrice:info.enterprise_leases[0].unitPrice,//——暂时没用
roomNumber:info.enterprise_leases[0].roomNumber, // roomNumber:info.enterprise_leases[0].roomNumber,
rent:info.enterprise_leases[0].rent, building: info.enterprise_leases[0].building || "",// 园区楼号
logonAddress:changeAdd(JSON.parse(info.logonAddress)), roomNumber: info.enterprise_leases[0].roomNumber || "",// 室号
userName:info.enterprise_users[0].userName, rent:info.enterprise_leases[0].rent,//月租金
pwd:info.enterprise_users[0].pwd, logonAddress:changeAdd(JSON.parse(info.logonAddress)),//注册地址
phone:info.enterprise_users[0].phone, userName:info.enterprise_users[0].userName,//联系人
pwd:info.enterprise_users[0].pwd,//登录密码
phone:info.enterprise_users[0].phone,//登录手机号
mail:info.mail,//邮箱地址
uId:info.enterprise_users[0].uId, uId:info.enterprise_users[0].uId,
totalPrice: info.enterprise_leases[0].totalPrice // 添加年总价字段 // totalPrice: info.enterprise_leases[0].totalPrice, // 添加年总价字段——暂时没用
// status: info.approval_historys.changeState === enumConfig.CHANGESTATE.已驳回 ? "已驳回" : "未审核" // 状态映射 todo
}); });
}); });
return {dataList, dataCount:allResList.length}; return {dataList, dataCount:allResList.length};
} }
/**
* 入孵申请通过
* @param eId
* @returns
*/
export async function settleInEnterprisePass(eId:string) { export async function settleInEnterprisePass(eId:string) {
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList); let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
...@@ -66,7 +166,7 @@ export async function settleInEnterprisePass(eId:string) { ...@@ -66,7 +166,7 @@ export async function settleInEnterprisePass(eId:string) {
if (!resInfo || !resInfo.eId) { if (!resInfo || !resInfo.eId) {
throw new BizError(ERRORENUM.数据不存在); throw new BizError(ERRORENUM.数据不存在);
} }
if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核); // if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核);
let updateInfo = { let updateInfo = {
register:enumConfig.STATE., register:enumConfig.STATE.,
...@@ -74,9 +174,68 @@ export async function settleInEnterprisePass(eId:string) { ...@@ -74,9 +174,68 @@ export async function settleInEnterprisePass(eId:string) {
} }
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, updateInfo, {eId}); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, updateInfo, {eId});
let addInfo = {
approvalId: randomId(TABLEID.入孵申请审批表),
eId,
changeType: enumConfig.CHANGETYPE.入孵申请,
changeState: enumConfig.CHANGESTATE.已通过,
createTimeMs: getMySqlMs()
}
await operationalData( OPERATIONALDATATYPE.增加, TABLENAME.入孵申请审批表, addInfo, {} );
return {isSuccess:true}; return {isSuccess:true};
} }
/**
* 入孵材料回显
* @param eId
* @returns
*/
export async function getRuFu(eId:string) {
let filesList = ["eId", "uscc", "enterpriseName", "logonAddress", "logonTime"];
let enterpriseUserInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
if (!enterpriseUserInfo || !enterpriseUserInfo.eId) {
throw new BizError(ERRORENUM.请先申请入孵);
}
let leaseFilesList = ["leaseId", "area", "leaseContract", "entryPlan", "businessLicense", "agreement"];
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId}, leaseFilesList);
enterpriseUserInfo.logonAddress = JSON.parse(enterpriseUserInfo.logonAddress);
let zaifuList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业孵化信息, {eId}, ["startTime", "endTime"]);
let dataInfo:any = extractData(EnterpriseApplyForConfig, enterpriseUserInfo);
dataInfo.logonTime = moment(enterpriseUserInfo.logonTime).format("YYYY-MM-DD");
if (zaifuList.startTime) dataInfo.startTime = new Date(zaifuList.startTime).valueOf(); //孵化开始时间
else dataInfo.startTime = "";
if (zaifuList.endTime) dataInfo.endTime = new Date(zaifuList.endTime).valueOf(); //孵化结束时间
else dataInfo.endTime = "";
dataInfo.area = leaseInfo.area;
// dataInfo.leaseContract = leaseInfo.leaseContract;
// dataInfo.entryPlan = leaseInfo.entryPlan;
// dataInfo.businessLicense = leaseInfo.businessLicense;
// dataInfo.agreement = leaseInfo.agreement;
dataInfo.leaseContract = getFileNameAndFormat(leaseInfo.leaseContract);
dataInfo.entryPlan = getFileNameAndFormat(leaseInfo.entryPlan);
dataInfo.businessLicense = getFileNameAndFormat(leaseInfo.businessLicense);
dataInfo.agreement = getFileNameAndFormat(leaseInfo.agreement);
dataInfo.leaseContractModelUrl = "/yuyi/files/房屋租赁合同模板.docx";
dataInfo.entryPlanModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx";
dataInfo.businessLicenseUrl = "/yuyi/files/营业执照复印件.docx";
dataInfo.agreementModelUrl = "/yuyi/files/孵化协议模板.docx";
return {dataInfo};
}
/**
* 入孵申请编辑
* @param eId
* @param param
* @returns
*/
export async function settleInEnterpriseUpdate(eId:string, param) { export async function settleInEnterpriseUpdate(eId:string, param) {
const FuncName = "修改入驻信息"; const FuncName = "修改入驻信息";
eccFormParam(FuncName, SettleInForUpdateConfig, param ); eccFormParam(FuncName, SettleInForUpdateConfig, param );
...@@ -84,18 +243,22 @@ export async function settleInEnterpriseUpdate(eId:string, param) { ...@@ -84,18 +243,22 @@ export async function settleInEnterpriseUpdate(eId:string, param) {
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业用户表, {phone:param.phone}, ["uId"]); let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业用户表, {phone:param.phone}, ["uId"]);
if (userInfo && userInfo.uId && userInfo.uId != param.uId) throw new BizError(ERRORENUM.手机号码重复); if (userInfo && userInfo.uId && userInfo.uId != param.uId) throw new BizError(ERRORENUM.手机号码重复);
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state", "mail"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList); let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
if (!resInfo || !resInfo.eId) { if (!resInfo || !resInfo.eId) {
throw new BizError(ERRORENUM.数据不存在); throw new BizError(ERRORENUM.数据不存在);
} }
if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核); if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核);
let pinyinName = getPinyinInitials(param.enterpriseName);
let updateInfo = { let updateInfo = {
enterpriseName:param.enterpriseName, enterpriseName:param.enterpriseName,
pinyinName,
uscc:param.uscc, uscc:param.uscc,
logonTime:param.logonTime, logonTime:param.logonTime,
logonAddress:JSON.stringify(["", "", "", param.logonAddress]), logonAddress:JSON.stringify(["", "", "", param.logonAddress]),
mail:param.mail,
}; };
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, updateInfo, {eId}); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, updateInfo, {eId});
...@@ -113,8 +276,12 @@ export async function settleInEnterpriseUpdate(eId:string, param) { ...@@ -113,8 +276,12 @@ export async function settleInEnterpriseUpdate(eId:string, param) {
//如果 param.rent 和 param.area 都存在且不为零,则计算 unitPrice 为 param.rent 除以 param.area;否则,直接使用 param.unitPrice。 //如果 param.rent 和 param.area 都存在且不为零,则计算 unitPrice 为 param.rent 除以 param.area;否则,直接使用 param.unitPrice。
unitPrice: param.rent && param.area ? param.rent / param.area : param.unitPrice, unitPrice: param.rent && param.area ? param.rent / param.area : param.unitPrice,
rent:param.rent, rent:param.rent,
startTime: param.fuHuaTimeStart, //租赁开始日期 // startTime: param.fuHuaTimeStart, //租赁开始日期
endTime: param.fuHuaTimeEndTime, //租赁结束日期 // endTime: param.fuHuaTimeEndTime, //租赁结束日期
startTime:param.leaseStartTimeStart,
endTime:param.leaseEndTime,
building:param.building,
roomNumber:param.roomNumber,
} }
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, leaseInfo, {eId}); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, leaseInfo, {eId});
...@@ -130,6 +297,11 @@ export async function settleInEnterpriseUpdate(eId:string, param) { ...@@ -130,6 +297,11 @@ export async function settleInEnterpriseUpdate(eId:string, param) {
} }
/**
* 入孵申请驳回
* @param eId
* @returns
*/
export async function settleInEnterpriseOut(eId:string) { export async function settleInEnterpriseOut(eId:string) {
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList); let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
...@@ -137,28 +309,48 @@ export async function settleInEnterpriseOut(eId:string) { ...@@ -137,28 +309,48 @@ export async function settleInEnterpriseOut(eId:string) {
if (!resInfo || !resInfo.eId) { if (!resInfo || !resInfo.eId) {
throw new BizError(ERRORENUM.数据不存在); throw new BizError(ERRORENUM.数据不存在);
} }
if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核); // if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核);
// await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.企业用户表, {}, {eId});//
// await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.企业孵化信息, {}, {eId});
// await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.租赁信息, {}, {eId});
// await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.企业基础信息表, {}, {eId});
await operationalData( OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, {register: enumConfig.STATE. }, { eId });
let addInfo = {
approvalId: randomId(TABLEID.入孵申请审批表),
eId,
changeType: enumConfig.CHANGETYPE.入孵申请,
changeState: enumConfig.CHANGESTATE.已驳回,
createTimeMs: getMySqlMs()
}
await operationalData( OPERATIONALDATATYPE.增加, TABLENAME.入孵申请审批表, addInfo, {} );
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.企业用户表, {}, {eId});//
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.企业孵化信息, {}, {eId});
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.租赁信息, {}, {eId});
await operationalData(OPERATIONALDATATYPE.删除, TABLENAME.企业基础信息表, {}, {eId});
return {isSuccess:true}; return {isSuccess:true};
} }
//入孵信息审核
export async function enterpriseRegisterExamineList(enterpriseName, page) {
/**
* 入孵材料审核列表
* @param enterpriseName
* @param page
* @returns
*/
export async function enterpriseRegisterExamineList(enterpriseName, page) {
// let selectParam:any = {register:enumConfig.STATE.是, state:enumConfig.STATE.否};
// let selectParam:any = {register:enumConfig.STATE.是, "%or%":[{"state":enumConfig.RUFICAILIAOSTATE.已驳回}, {"state":enumConfig.RUFICAILIAOSTATE.否}]};
let selectParam:any = {register:enumConfig.STATE., state:enumConfig.STATE.}; let selectParam:any = {register:enumConfig.STATE., state:enumConfig.STATE.};
if (enterpriseName) selectParam.enterpriseName = {"%like%":enterpriseName}; if (enterpriseName) selectParam.enterpriseName = {"%like%":enterpriseName};
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "randomCode"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "randomCode", "state"];
let manyTableInfo:any = {} let manyTableInfo:any = {}
manyTableInfo[TABLENAME.租赁信息] = {column:["leaseContract", "entryPlan", "businessLicense", "agreement"], where:{} }; manyTableInfo[TABLENAME.租赁信息] = {column:["leaseContract", "entryPlan", "businessLicense", "agreement"], where:{} };
manyTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{} }; manyTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{} };
// manyTableInfo[TABLENAME.入孵申请审批表] = {column:["approvalId", "changeState", "createTimeMs"], where:{"%literal%":`approval_histories.changeType = ${enumConfig.CHANGETYPE.入孵材料审批}`, "%limit%":1} };
let resList = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page ); let resList = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page );
let allResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["eId"], manyTableInfo ); let allResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, ["eId"], manyTableInfo );
...@@ -168,26 +360,83 @@ export async function enterpriseRegisterExamineList(enterpriseName, page) { ...@@ -168,26 +360,83 @@ export async function enterpriseRegisterExamineList(enterpriseName, page) {
eId:info.eId, eId:info.eId,
enterpriseName:info.enterpriseName, enterpriseName:info.enterpriseName,
randomCode:info.randomCode, randomCode:info.randomCode,
leaseContract:info.enterprise_leases[0].leaseContract || "未提交", // leaseContract:info.enterprise_leases[0].leaseContract || "未提交",
entryPlan:info.enterprise_leases[0].entryPlan || "未提交", // entryPlan:info.enterprise_leases[0].entryPlan || "未提交",
businessLicense:info.enterprise_leases[0].businessLicense || "未提交", // businessLicense:info.enterprise_leases[0].businessLicense || "未提交",
agreement:info.enterprise_leases[0].agreement || "未提交" // agreement:info.enterprise_leases[0].agreement || "未提交",
leaseContract: getFileNameAndFormat(info.enterprise_leases[0].leaseContract),
entryPlan: getFileNameAndFormat(info.enterprise_leases[0].entryPlan),
businessLicense: getFileNameAndFormat(info.enterprise_leases[0].businessLicense),
agreement: getFileNameAndFormat(info.enterprise_leases[0].agreement),
// status: info.approval_historys.changeState === enumConfig.CHANGESTATE.已驳回 ? "已驳回" : "未审核" // 状态映射 todo
}); });
}); });
return {dataList, dataCount:allResList.length}; return {dataList, dataCount:allResList.length};
} }
// 辅助函数:获取文件名和格式
// function getFileNameAndFormat(fileName: string | null | undefined): string {
// if (fileName === null || fileName === undefined || fileName === "未提交") {
// return "未提交";
// }
// // 提取文件名(去掉路径)
// const basename = fileName.split('/').pop() || fileName;
// // 分割文件名和格式
// const parts = basename.split('.');
// if (parts.length < 2) {
// return basename; // 如果没有找到 . 则直接返回原字符串
// }
// const name = parts.slice(0, -1).join('.');
// const format = parts.pop();
// return `${name}.${format}`;
// }
function getFileNameAndFormat(fileName: string | null | undefined): string {
if (fileName === null || fileName === undefined || fileName === "未提交") {
return "未提交";
}
// 提取文件名(去掉路径)
let basename = fileName.split('/').pop() || fileName;
// 移除时间戳(假设时间戳格式为 YYYYMMDD_HHMMSS)
basename = basename.replace(/(\d{8}_\d{6})/, '');
// 分割文件名和格式
const parts = basename.split('.');
if (parts.length < 2) {
return basename; // 如果没有找到 . 则直接返回原字符串
}
const name = parts.slice(0, -1).join('.');
const format = parts.pop();
return `${name.trim()}.${format}`;
}
/**
* 入孵材料审核通过
* @param eId
* @returns
*/
export async function enterpriseRegisterExaminePass(eId:string) { export async function enterpriseRegisterExaminePass(eId:string) {
let manyTableInfo:any = {}
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList); manyTableInfo[TABLENAME.租赁信息] = {column:["leaseContract", "entryPlan", "businessLicense", "agreement"], where:{} };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表单个, TABLENAME.企业基础信息表, {eId}, filesList, manyTableInfo);
// let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
if (!resInfo || !resInfo.eId) { if (!resInfo || !resInfo.eId) {
throw new BizError(ERRORENUM.数据不存在); throw new BizError(ERRORENUM.数据不存在);
} }
if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核);
if (!resInfo.enterprise_leases[0].leaseContract || !resInfo.enterprise_leases[0].entryPlan || !resInfo.enterprise_leases[0].businessLicense || !resInfo.enterprise_leases[0].agreement) {
throw new BizError(ERRORENUM.请上传所有入孵材料);
}
// if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核);
let updateInfo = { let updateInfo = {
state:enumConfig.STATE. state:enumConfig.STATE.
...@@ -199,10 +448,33 @@ export async function enterpriseRegisterExaminePass(eId:string) { ...@@ -199,10 +448,33 @@ export async function enterpriseRegisterExaminePass(eId:string) {
}; };
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业孵化信息, updateFuHuaInfo, {eId}); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业孵化信息, updateFuHuaInfo, {eId});
/**同步修改入孵企业面积 */
/**在孵企业 当前时间小于孵化结束时间 */
let 在孵面积 = 0;
let araeParam = {column:["area", "unitPrice", "roomNumber", "rent"], where:{} };
let zaifuTableInfo:any = {};
zaifuTableInfo[TABLENAME.租赁信息] = araeParam;
zaifuTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{state:{"%ne%":enumConfig.FUHUASTATE.迁出}} };
let zaifuResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {state:enumConfig.STATE.}, ["eId"], zaifuTableInfo );
zaifuResList.forEach( info => {
info.enterprise_leases.forEach( lease => {
在孵面积 += parseFloat(lease.area);
})
})
let yuyiList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器信息, {}, []);
if (在孵面积 != yuyiList.zaifuArea) await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.羽翼孵化器信息, {zaifuArea:在孵面积}, {yId:yuyiList.yId});
return {isSuccess:true}; return {isSuccess:true};
} }
/**
* 入孵材料审核驳回
* @param eId
* @returns
*/
export async function enterpriseRegisterExamineOut(eId:string) { export async function enterpriseRegisterExamineOut(eId:string) {
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList); let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
...@@ -210,19 +482,51 @@ export async function enterpriseRegisterExamineOut(eId:string) { ...@@ -210,19 +482,51 @@ export async function enterpriseRegisterExamineOut(eId:string) {
if (!resInfo || !resInfo.eId) { if (!resInfo || !resInfo.eId) {
throw new BizError(ERRORENUM.数据不存在); throw new BizError(ERRORENUM.数据不存在);
} }
if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核); // if (resInfo.state) throw new BizError(ERRORENUM.该企业已通过审核);
let updateInfo = { let updateLeaseInfo = {
register:2 leaseContract:null,
entryPlan:null,
businessLicense:null,
agreement:null
} }
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, updateInfo, {eId}); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, updateLeaseInfo, {eId});
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业基础信息表, {state:enumConfig.STATE.}, {eId});
return {isSuccess:true}; return {isSuccess:true};
} }
/**
* 编辑入孵材料
* @param eId
* @param param
* @returns
*/
export async function updateRuFu(eId:string, param) {
const FuncName = "管理员修改入驻信息";
eccFormParam(FuncName, AdminRegisterUpdateConfig, param );
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
if (!resInfo || !resInfo.eId) {
throw new BizError(ERRORENUM.数据不存在);
}
if (resInfo.state == 1) {
throw new BizError(ERRORENUM.已审核请前往小程序登录)
}
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, param, {eId});
return {isSuccess:true};
}
/**
* 企业注册-已弃用
* @param param
* @returns
*/
export async function enterpriseRegister(param) { export async function enterpriseRegister(param) {
const FuncName = "企业注册" const FuncName = "企业注册"
eccFormParam(FuncName, RegisterUpdateConfig, param ); eccFormParam(FuncName, RegisterUpdateConfig, param );
...@@ -241,7 +545,8 @@ export async function enterpriseRegister(param) { ...@@ -241,7 +545,8 @@ export async function enterpriseRegister(param) {
logonTime:getMySqlMs(param.logonTime), logonTime:getMySqlMs(param.logonTime),
state:0, state:0,
register:0, register:0,
rent: param.rent rent: param.rent,
// randomCode: randomCode() // 在企业注册时生成 randomCode
}; };
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业基础信息表, addEInfo, {}); await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业基础信息表, addEInfo, {});
...@@ -257,10 +562,10 @@ export async function enterpriseRegister(param) { ...@@ -257,10 +562,10 @@ export async function enterpriseRegister(param) {
startTime:getMySqlMs(param.leaseTimeStart), startTime:getMySqlMs(param.leaseTimeStart),
endTime:getMySqlMs(param.leaseTimeEnd), endTime:getMySqlMs(param.leaseTimeEnd),
area:param.area area:param.area
} }
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.租赁信息, leaseInfo, {}); await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.租赁信息, leaseInfo, {});
return {isSuccess:true}; return {isSuccess:true};
} }
/**
* 网页端企业自己申请入孵
*/
import moment = require("moment");
import { eccFormParam } from "../util/verificationParam";
import { AdminRegisterAddConfig, AdminRegisterUpdateConfig, UserRegisterAddConfig } from "../config/eccParam/enterprise";
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from "../config/enum/dbEnum";
import { operationalData, selectData, selectManyTableData } from "../data/operationalData";
import { BizError } from "../util/bizError";
import { ERRORENUM } from "../config/enum/errorEnum";
import { getMySqlMs, getToken, randomId } from "../tools/system";
import { extractData } from "../util/piecemeal";
import { EnterpriseApplyForConfig } from "../config/splitResult/enterprise";
import { FUHUASTATE, RUFUSTATE, STATE } from "../config/enum/enum";
/**
* 注册
* @param phone
* @param pwd
* @returns
*/
export async function enterpriseRegister(userName:string, phone:string, pwd:string) {
/**校验密码 */
if (pwd.search(/^[A-Za-z0-9]{6,18}$/) < 0) throw new BizError(ERRORENUM.密码只能由618位字符和数字组成);
/**校验去重 */
let userInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业用户表, {phone}, ["uId"]);
if (userInfo && userInfo.uId) throw new BizError(ERRORENUM.手机号码重复);
let addUInfo = {
uId:randomId(TABLEID.企业用户表),
userName,
phone,
pwd
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业用户表, addUInfo, {});
return {isSuccess:true};
}
/**
* 登录
* @param phone
* @param pwd
* @returns
*/
export async function enterpriseLogin(phone:string, pwd:string) {
let enterpriseUserInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业用户表, {phone}, ["uId", "phone", "pwd", "eId"]);
if (!enterpriseUserInfo || !enterpriseUserInfo.uId) throw new BizError(ERRORENUM.账号不存在);
if (enterpriseUserInfo.pwd != pwd) throw new BizError(ERRORENUM.账号或密码错误);
let updateUserInfo = {
token : getToken(enterpriseUserInfo.uId),
tokenMs : getMySqlMs()
};
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业用户表, updateUserInfo, {uId:enterpriseUserInfo.uId});
let userInfo = {
userId:enterpriseUserInfo.uId,
userName:enterpriseUserInfo.userName,
phone:enterpriseUserInfo.phone,
token:updateUserInfo.token,
eId:enterpriseUserInfo.eId || ""
};
return {dataInfo:userInfo};
}
/**
* 获取入孵流程状态
* @param uId
* @returns
*/
export async function getRuFuState(uId) {
let enterpriseUserInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业用户表, {uId}, ["uId", "phone", "pwd", "eId"]);
let ruFuState = 0;
if (!enterpriseUserInfo.eId) {
ruFuState = RUFUSTATE.信息填写;
} else {
let enterpriseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId:enterpriseUserInfo.eId}, ["enterpriseName", "eId", "state", "register"]);
if (enterpriseInfo.state == STATE. && enterpriseInfo.register == STATE.) ruFuState = RUFUSTATE.信息审核中;
if (enterpriseInfo.state == STATE. && enterpriseInfo.register == STATE.) {
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId:enterpriseUserInfo.eId}, []);
if (!leaseInfo.leaseContract && !leaseInfo.entryPlan || !leaseInfo.businessLicense || !leaseInfo.agreement) ruFuState = RUFUSTATE.补充材料;
else ruFuState = RUFUSTATE.材料已提交;
}
// if (enterpriseInfo.register == 2) ruFuState = RUFUSTATE.材料审核驳回;
if (enterpriseInfo.state == STATE. && enterpriseInfo.register == STATE.) ruFuState = RUFUSTATE.材料审核完成;
}
return {ruFuState};
}
/**
* 添加信息填写
*/
export async function createRuFu(uId, param) {
const FuncName = "网页添加信息填写"
eccFormParam(FuncName, UserRegisterAddConfig, param );
let filesList = ["eId", "uscc"];
let enterpriseUserInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {uscc:param.uscc}, filesList);
if (enterpriseUserInfo && enterpriseUserInfo.eId) {
throw new BizError(ERRORENUM.企业已存在);
}
let addEInfo = {
eId:randomId(TABLEID.企业基础信息表),
enterpriseName:param.enterpriseName,
uscc:param.uscc,
logonTime:getMySqlMs(param.logonTime),
logonAddress:JSON.stringify(["", "", "", param.logonAddress]),
mail:param.mail,//邮箱地址
state:0,
register:0
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业基础信息表, addEInfo, {});
console.log("addEInfo", addEInfo);
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业用户表, {eId:addEInfo.eId}, {uId});
let fuHuaInfo = {
eId:addEInfo.eId,
fId:randomId(TABLEID.企业孵化信息),
startTime:getMySqlMs(param.fuHuaTimeStart),
endTime:getMySqlMs(param.fuHuaTimeEndTime),
state:0,
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业孵化信息, fuHuaInfo, {});
let leaseInfo = {
eId:addEInfo.eId,
leaseId:randomId(TABLEID.租赁信息),
// area:param.area,
area: param.area || null, // 可为空
unitPrice:param.unitPrice,
// roomNumber:param.roomNumber,
building: param.building|| null, // 楼号
roomNumber: param.roomNumber || null,// 室号
// startTime:getMySqlMs(param.fuHuaTimeStart), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化开始时间
// endTime:getMySqlMs(param.fuHuaTimeEndTime), //小程序和管理后台没有填写租赁时间的位置,直接使用孵化结束时间
startTime: getMySqlMs(param.leaseStartTime), // 租赁开始时间
endTime: getMySqlMs(param.leaseEndTime), // 租赁结束时间
rent:param.rent,
}
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.租赁信息, leaseInfo, {});
let addUInfo = {
eId:addEInfo.eId,
uId:randomId(TABLEID.企业用户表),
phone:param.phone,
pwd:param.pwd,
userName:param.userName
};
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.企业用户表, addUInfo, {});
return {eId:addEInfo.eId};
}
/**
* 入孵材料回显
* @param eId
* @returns
*/
export async function getRuFu(eId:string) {
let filesList = ["eId", "uscc", "enterpriseName", "logonAddress", "logonTime"];
let enterpriseUserInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
if (!enterpriseUserInfo || !enterpriseUserInfo.eId) {
throw new BizError(ERRORENUM.请先申请入孵);
}
let leaseFilesList = ["leaseId", "area", "leaseContract", "entryPlan", "businessLicense", "agreement"];
let leaseInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.租赁信息, {eId}, leaseFilesList);
enterpriseUserInfo.logonAddress = JSON.parse(enterpriseUserInfo.logonAddress);
let zaifuList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业孵化信息, {eId}, ["startTime", "endTime"]);
let dataInfo:any = extractData(EnterpriseApplyForConfig, enterpriseUserInfo);
dataInfo.logonTime = moment(enterpriseUserInfo.logonTime).format("YYYY-MM-DD");
if (zaifuList.startTime) dataInfo.startTime = new Date(zaifuList.startTime).valueOf(); //孵化开始时间
else dataInfo.startTime = "";
if (zaifuList.endTime) dataInfo.endTime = new Date(zaifuList.endTime).valueOf(); //孵化结束时间
else dataInfo.endTime = "";
// if (zaifuList.startTime || zaifuList.endTime) dataInfo.leaseTime = `${moment(zaifuList.startTime).format("YYYY-MM-DD")}至${moment(zaifuList.endTime).format("YYYY-MM-DD")}`;
dataInfo.area = leaseInfo.area;
dataInfo.leaseContract = leaseInfo.leaseContract;
dataInfo.entryPlan = leaseInfo.entryPlan;
dataInfo.businessLicense = leaseInfo.businessLicense;
dataInfo.agreement = leaseInfo.agreement;
dataInfo.leaseContractModelUrl = "/yuyi/files/房屋租赁合同模板.docx";
dataInfo.entryPlanModelUrl = "/yuyi/files/孵化企业入驻计划.xlsx";
dataInfo.businessLicenseUrl = "/yuyi/files/营业执照复印件.docx";
dataInfo.agreementModelUrl = "/yuyi/files/孵化协议模板.docx";
return {dataInfo};
}
/**
* 编辑入孵材料
* @param eId
* @param param
* @returns
*/
export async function updateRuFu(eId:string, param) {
const FuncName = "网页修改入驻信息";
eccFormParam(FuncName, AdminRegisterUpdateConfig, param );
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "state"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.企业基础信息表, {eId}, filesList);
if (!resInfo || !resInfo.eId) {
throw new BizError(ERRORENUM.数据不存在);
}
if (resInfo.state == 1) {
throw new BizError(ERRORENUM.已审核请前往小程序登录)
}
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.租赁信息, param, {eId});
return {isSuccess:true};
}
...@@ -6,54 +6,182 @@ import moment = require("moment"); ...@@ -6,54 +6,182 @@ import moment = require("moment");
import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum/dbEnum"; import { OPERATIONALDATATYPE, TABLENAME } from "../config/enum/dbEnum";
import { operationalData, selectData, selectManyTableData } from "../data/operationalData"; import { operationalData, selectData, selectManyTableData } from "../data/operationalData";
import { changeAdd } from "../util/piecemeal"; import { changeAdd } from "../util/piecemeal";
import { changeEnumValue } from "../util/verificationEnum"; import { changeEnumManyValue, changeEnumValue } from "../util/verificationEnum";
import * as enumConfig from "../config/enum/enum"; import * as enumConfig from "../config/enum/enum";
import { BizError } from "../util/bizError"; import { BizError } from "../util/bizError";
import { ERRORENUM } from "../config/enum/errorEnum"; import { ERRORENUM } from "../config/enum/errorEnum";
import { getMySqlMs } from "../tools/system"; import { getMySqlMs } from "../tools/system";
import { log } from "console";
import { BUILDING } from "../config/enum/enum";
/**
export async function enterpriseList(enterpriseName:string, page:number) { * 备份在孵企业列表
let selectParam:any = {state:1}; */
if (enterpriseName) { // export async function enterpriseList(enterpriseName:string, page:number, logonTime:string, startTime:number, endTime:number, building:string) {
selectParam.enterpriseName = {"%like%":enterpriseName} // let selectParam:any = {state:1};
// if (enterpriseName) {
// selectParam.enterpriseName = {"%like%":enterpriseName}
// }
// if (logonTime) {
// // 假设 logonTime 是一个具体的日期字符串,例如 "2023-01-01"
// selectParam.logonTime = logonTime;
// }
// selectParam["enterprise_leases.startTime"] = { "%gte%": startTime };
// selectParam["enterprise_leases.endTime"] = { "%lte%": endTime };
// if (building) {
// selectParam["enterprise_leases.building"] = building
// }
// let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
// let manyTableInfo:any = {};
// manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber" ,"building"], where:{} };
// // 关联企业孵化信息表,获取 moveOutTime 字段
// manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType","startTime" ,"endTime"], where: { state:{"%ne%": enumConfig.FUHUASTATE.迁出} } };
// let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page);
// // let dataCount = await selectManyTableData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业基础信息表, selectParam, null);
// let dataCount = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo);
// let dataList = [];
// resInfo.forEach(info => {
// let {eId, enterpriseName, uscc, logonTime, logonAddress, qiYeGuiMo, enterprise_leases, enterprise_fuhuas} = info;
// let leasesTime = '-'
// if (enterprise_leases[0].startTime){
// leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}至${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`;
// }
// let fuhuaTime = '-';
// if (enterprise_fuhuas[0].startTime) {
// fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}至${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
// }
// let dataInfo = {
// eId,
// enterpriseName, //企业名称
// uscc, //统一信用代码
// logonTime:moment(logonTime).format("YYYY-MM-DD"), //注册日期
// logonAddress:changeAdd(JSON.parse(logonAddress)), //注册地址
// qiYeGuiMo,//企业规模
// fuhuaTime,//孵化时间
// leasesTime,//租赁时间
// area:enterprise_leases[0].area+"㎡",//租赁面积
// building:enterprise_leases[0].building,//楼栋
// roomNumber:enterprise_leases[0].roomNumber,//室号
// };
// dataList.push(dataInfo);
// })
// return {dataList, dataCount:dataCount.length};
// }
export async function enterpriseList(enterpriseName:string, page:number, logonStartTime:string, logonEndTime:string, startTime: number,endTime: number, building: number ) {
let selectParam: any = { state: 1 };
if (enterpriseName) { selectParam.enterpriseName = { "%like%": enterpriseName };}
if (logonStartTime && logonEndTime) {
selectParam.logonTime = {"%between%":[getMySqlMs(logonStartTime), getMySqlMs(logonEndTime)]}
} }
// 主表字段过滤参数保持不变
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
let manyTableInfo:any = {};
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber"], where:{} };
// 关联企业孵化信息表,获取 moveOutTime 字段
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType"], where: { state:{"%ne%": enumConfig.FUHUASTATE.迁出} } };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page); // 子表配置:租赁信息
let leaseWhere:any = {};
// console.log(getMySqlMs(startTime), getMySqlMs(endTime))
if (startTime && endTime) {
if (!leaseWhere["%literal%"]) {
leaseWhere["%literal%"] = `(startTime between '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}'
or endTime between '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}') `;
} // leaseWhere["%or%"] = [
// {startTime: { "%between%":[getMySqlMs(startTime), getMySqlMs(endTime)] }},
// {endTime: { "%between%":[getMySqlMs(startTime), getMySqlMs(endTime)] }}
// ]
}
// let dataCount = await selectManyTableData(OPERATIONALDATATYPE.查询数据量, TABLENAME.企业基础信息表, selectParam, null); // if (building && ['1', '3', '4'].includes(building)) {leaseWhere.building = building;}
let dataCount = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo); // if (building) selectParam["enterprise_leases.building"] = building
if (building) {
leaseWhere.building = building;
}
let manyTableInfo: any = {};
// 租赁信息表配置
manyTableInfo[TABLENAME.租赁信息] = {
column: ["area", "startTime", "endTime", "building", "roomNumber"],
where: leaseWhere
};
// 企业孵化信息表配置
manyTableInfo[TABLENAME.企业孵化信息] = {
column: ["moveOutTime", "moveOutType", "startTime", "endTime"],
where: {"%literal%": `enterprise_fuhuas.state <> ${enumConfig.FUHUASTATE.迁出}`}
}
// 查询分页数据
let resInfo = await selectManyTableData(
OPERATIONALDATATYPE.多表分页,
TABLENAME.企业基础信息表,
selectParam,
filesList,
manyTableInfo,
page
);
// 查询总数
let dataCount = await selectManyTableData(
OPERATIONALDATATYPE.多表联查,
TABLENAME.企业基础信息表,
selectParam,
filesList,
manyTableInfo
);
let dataList = []; let dataList = [];
resInfo.forEach(info => { for (let info of resInfo) {
let {eId, enterpriseName, uscc, logonTime, logonAddress, qiYeGuiMo, enterprise_leases} = info; const {
let leasesTime = '-' eId,
if (enterprise_leases[0].startTime){ enterpriseName,
uscc,
logonTime,
logonAddress,
qiYeGuiMo,
enterprise_leases,
enterprise_fuhuas
} = info;
let leasesTime = '-';
if (enterprise_leases[0]?.startTime) {
leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`; leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`;
} }
let dataInfo = { let fuhuaTime = '-';
eId, if (enterprise_fuhuas[0]?.startTime) {
enterpriseName, //企业名称 fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
uscc, //统一信用代码 }
logonTime:moment(logonTime).format("YYYY-MM-DD"), //注册日期
logonAddress:changeAdd(JSON.parse(logonAddress)), //注册地址
qiYeGuiMo,//企业规模
leasesTime,//租赁时间
area:enterprise_leases[0].area+"㎡",//租赁面积
roomNumber:enterprise_leases[0].roomNumber,//室号
};
dataList.push(dataInfo);
})
dataList.push({
eId,
enterpriseName, // 企业名称
uscc, // 统一信用代码
logonTime: moment(logonTime).format("YYYY-MM-DD"), // 注册日期
logonAddress: changeAdd(JSON.parse(logonAddress)), // 注册地址
qiYeGuiMo, // 企业规模
fuhuaTime, // 孵化时间
leasesTime, // 租赁时间
area: enterprise_leases[0]?.area ? `${enterprise_leases[0].area}㎡` : '-',
building: enterprise_leases[0]?.building || '-',
// building:changeEnumValue(enumConfig.BUILDING, enterprise_leases[0].building),
roomNumber: enterprise_leases[0]?.roomNumber || '-'
});
}
return {dataList, dataCount:dataCount.length}; return { dataList, dataCount: dataCount.length };
} }
...@@ -74,6 +202,24 @@ export async function enterpriseMoveOut(eId: string, moveOutType: number) { ...@@ -74,6 +202,24 @@ export async function enterpriseMoveOut(eId: string, moveOutType: number) {
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业孵化信息, addInfo, { eId }); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.企业孵化信息, addInfo, { eId });
/**同步修改入孵企业面积 */
/**在孵企业 当前时间小于孵化结束时间 */
let 在孵面积 = 0;
let araeParam = {column:["area", "unitPrice", "roomNumber", "rent"], where:{} };
let zaifuTableInfo:any = {};
zaifuTableInfo[TABLENAME.租赁信息] = araeParam;
zaifuTableInfo[TABLENAME.企业孵化信息] = {column:["state", "startTime", "endTime"], where:{state:{"%ne%":enumConfig.FUHUASTATE.迁出}} };
let zaifuResList = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, {state:enumConfig.STATE.}, ["eId"], zaifuTableInfo );
zaifuResList.forEach( info => {
info.enterprise_leases.forEach( lease => {
在孵面积 += parseFloat(lease.area);
})
})
let yuyiList = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.羽翼孵化器信息, {}, []);
if (在孵面积 != yuyiList.zaifuArea) await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.羽翼孵化器信息, {zaifuArea:在孵面积}, {yId:yuyiList.yId});
return { isSuccess: true }; return { isSuccess: true };
} }
...@@ -94,7 +240,7 @@ export async function enterpriseMigrateList(enterpriseName:string, page:number) ...@@ -94,7 +240,7 @@ export async function enterpriseMigrateList(enterpriseName:string, page:number)
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber"], where:{} }; manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber"], where:{} };
// 关联企业孵化信息表,获取 moveOutTime 字段 // 关联企业孵化信息表,获取 moveOutTime 字段
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType"], where: { state:enumConfig.FUHUASTATE.迁出 } }; manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType", "startTime", "endTime"], where: { state:enumConfig.FUHUASTATE.迁出 } };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page); let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表分页, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo, page);
...@@ -120,6 +266,11 @@ export async function enterpriseMigrateList(enterpriseName:string, page:number) ...@@ -120,6 +266,11 @@ export async function enterpriseMigrateList(enterpriseName:string, page:number)
leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`; leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`;
} }
let fuhuaTime = '-';
if (enterprise_fuhuas[0].startTime){
fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
}
let dataInfo = { let dataInfo = {
eId, eId,
enterpriseName, //企业名称 enterpriseName, //企业名称
...@@ -130,7 +281,9 @@ export async function enterpriseMigrateList(enterpriseName:string, page:number) ...@@ -130,7 +281,9 @@ export async function enterpriseMigrateList(enterpriseName:string, page:number)
moveOutType:formattedMoveOutTypeName,//新增迁出类型 moveOutType:formattedMoveOutTypeName,//新增迁出类型
qiYeGuiMo,//企业规模 qiYeGuiMo,//企业规模
leasesTime,//租赁时间 leasesTime,//租赁时间
fuhuaTime,//孵化时间
area:enterprise_leases[0].area+"㎡",//租赁面积 area:enterprise_leases[0].area+"㎡",//租赁面积
building:enterprise_leases[0].building,//楼号
roomNumber:enterprise_leases[0].roomNumber,//室号 roomNumber:enterprise_leases[0].roomNumber,//室号
}; };
dataList.push(dataInfo); dataList.push(dataInfo);
...@@ -560,13 +713,14 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file ...@@ -560,13 +713,14 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file
if (enterpriseName) { if (enterpriseName) {
selectParam.enterpriseName = {"%like%":enterpriseName} selectParam.enterpriseName = {"%like%":enterpriseName}
} }
} }
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
let manyTableInfo:any = {}; let manyTableInfo:any = {};
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber"], where:{} }; manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime","building", "roomNumber" ], where:{} };
// 关联企业孵化信息表,获取 moveOutTime 字段 // 关联企业孵化信息表,获取 moveOutTime 字段
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType"], where: { state:{"%ne%": enumConfig.FUHUASTATE.迁出} } }; manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType", "startTime", "endTime",], where: { state:{"%ne%": enumConfig.FUHUASTATE.迁出} } };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo); let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo);
...@@ -579,11 +733,17 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file ...@@ -579,11 +733,17 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file
}); });
dataList.push(titleList); dataList.push(titleList);
resInfo.forEach(info => { resInfo.forEach(info => {
let {enterpriseName, uscc, logonTime, logonAddress, qiYeGuiMo, enterprise_leases} = info; let {enterpriseName, uscc, logonTime, logonAddress, qiYeGuiMo, enterprise_leases, enterprise_fuhuas} = info;
let leasesTime = '-' let leasesTime = '-'
if (enterprise_leases[0].startTime){ if (enterprise_leases[0].startTime){
leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`; leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`;
} }
let fuhuaTime = '-';
if (enterprise_fuhuas[0].startTime){
fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
}
let subList = []; let subList = [];
valueList.forEach(subInfo => { valueList.forEach(subInfo => {
if (subInfo == "enterpriseName") subList.push(enterpriseName);//企业名称 if (subInfo == "enterpriseName") subList.push(enterpriseName);//企业名称
...@@ -591,8 +751,10 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file ...@@ -591,8 +751,10 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file
if (subInfo == "logonTime") subList.push(moment(logonTime).format("YYYY-MM-DD"));//注册日期 if (subInfo == "logonTime") subList.push(moment(logonTime).format("YYYY-MM-DD"));//注册日期
if (subInfo == "logonAddress") subList.push(changeAdd(JSON.parse(logonAddress)));//注册地址 if (subInfo == "logonAddress") subList.push(changeAdd(JSON.parse(logonAddress)));//注册地址
if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo);//企业规模 if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo);//企业规模
if (subInfo == "startTime") subList.push(leasesTime);//孵化时间 if (subInfo == "startTime") subList.push(fuhuaTime);//孵化时间
if (subInfo == "startTime") subList.push(leasesTime);//租赁时间
if (subInfo == "area") subList.push(enterprise_leases[0].area+"㎡");//租赁面积 if (subInfo == "area") subList.push(enterprise_leases[0].area+"㎡");//租赁面积
if (subInfo == "building") subList.push(enterprise_leases[0].building);//楼号
if (subInfo == "roomNumber") subList.push(enterprise_leases[0].roomNumber);//室号 if (subInfo == "roomNumber") subList.push(enterprise_leases[0].roomNumber);//室号
}); });
...@@ -603,7 +765,85 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file ...@@ -603,7 +765,85 @@ export async function dwEnterpriseTable(enterpriseName:string, type:number, file
return {dataList}; return {dataList};
} }
/**
* 加了注册时间,租赁时间,园区楼号筛选的
*/
// export async function dwEnterpriseTable(enterpriseName:string, type:number,files, logonStartTime:string, logonEndTime:string, startTime: number,endTime: number, building: number ) {
// let selectParam:any = {state:1};
// if (type ==1) {
// if (enterpriseName) {
// selectParam.enterpriseName = {"%like%":enterpriseName}
// }
// // 注册时间筛选
// if (logonStartTime && logonEndTime) {
// selectParam.logonTime = {"%between%":[getMySqlMs(logonStartTime), getMySqlMs(logonEndTime)]}
// }
// }
// let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
// let manyTableInfo:any = {};
// // manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime","building", "roomNumber" ], where:{} };
// // 租赁信息表配置
// let leaseWhere:any = {};
// if (startTime && endTime) {
// if (!leaseWhere["%literal%"]) {
// leaseWhere["%literal%"] = `(startTime between '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}'
// or endTime between '${getMySqlMs(startTime)}' and '${getMySqlMs(endTime)}') `;
// }
// }
// if (building) {
// leaseWhere.building = building;
// }
// // 关联企业孵化信息表,获取 moveOutTime 字段
// manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType", "startTime", "endTime",], where: { state:{"%ne%": enumConfig.FUHUASTATE.迁出} } };
// let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo);
// let dataList = [];
// let titleList = []
// let valueList = [];
// files.forEach(item => {
// titleList.push(item.key);
// valueList.push(item.value);
// });
// dataList.push(titleList);
// resInfo.forEach(info => {
// let {enterpriseName, uscc, logonTime, logonAddress, qiYeGuiMo, enterprise_leases, enterprise_fuhuas} = info;
// let leasesTime = '-'
// if (enterprise_leases[0].startTime){
// leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}至${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`;
// }
// let fuhuaTime = '-';
// if (enterprise_fuhuas[0].startTime){
// fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}至${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
// }
// let subList = [];
// valueList.forEach(subInfo => {
// if (subInfo == "enterpriseName") subList.push(enterpriseName);//企业名称
// if (subInfo == "uscc") subList.push(uscc); //统一信用代码
// if (subInfo == "logonTime") subList.push(moment(logonTime).format("YYYY-MM-DD"));//注册日期
// if (subInfo == "logonAddress") subList.push(changeAdd(JSON.parse(logonAddress)));//注册地址
// if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo);//企业规模
// if (subInfo == "startTime") subList.push(fuhuaTime);//孵化时间
// if (subInfo == "startTime") subList.push(leasesTime);//租赁时间
// if (subInfo == "area") subList.push(enterprise_leases[0].area+"㎡");//租赁面积
// if (subInfo == "building") subList.push(enterprise_leases[0].building);//楼号
// if (subInfo == "roomNumber") subList.push(enterprise_leases[0].roomNumber);//室号
// });
// dataList.push(subList);
// })
// return {dataList};
// }
export async function getAllDwOutPut(eId:string) { export async function getAllDwOutPut(eId:string) {
let details = { let details = {
...@@ -630,15 +870,18 @@ export async function dwBasicInformation(eId:string) { ...@@ -630,15 +870,18 @@ export async function dwBasicInformation(eId:string) {
{key:"注册时间",value:"logonTime"}, {key:"注册时间",value:"logonTime"},
{key:"注册地址",value:"logonAddress"}, {key:"注册地址",value:"logonAddress"},
{key:"企业规模",value:"qiYeGuiMo"}, {key:"企业规模",value:"qiYeGuiMo"},
{key:"孵化时间",value:"startTime"},//孵化时间
{key:"租赁时间",value: "startTime"}, {key:"租赁时间",value: "startTime"},
{key:"租赁面积",value:"area",}, {key:"租赁面积",value:"area",},
{key:"楼号",value:"building"},//楼号
{key:"室号",value:"roomNumber"}, {key:"室号",value:"roomNumber"},
]; ];
let selectParam:any = {eId}; let selectParam:any = {eId};
let filesList = ["enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"]; let filesList = ["enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
let manyTableInfo:any = {}; let manyTableInfo:any = {};
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber"], where:{}}; manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime","building", "roomNumber"], where:{}};
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["startTime", "endTime"], where: { state:{"%ne%": enumConfig.FUHUASTATE.迁出} } };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo); let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo);
...@@ -651,11 +894,15 @@ export async function dwBasicInformation(eId:string) { ...@@ -651,11 +894,15 @@ export async function dwBasicInformation(eId:string) {
}); });
dataList.push(titleList); dataList.push(titleList);
resInfo.forEach(info => { resInfo.forEach(info => {
let {enterpriseName, uscc, logonTime, logonAddress, qiYeGuiMo, enterprise_leases} = info; let {enterpriseName, uscc, logonTime, logonAddress, qiYeGuiMo, enterprise_leases, enterprise_fuhuas} = info;
let leasesTime = '-' let leasesTime = '-'
if (enterprise_leases[0].startTime){ if (enterprise_leases[0].startTime){
leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`; leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`;
} }
let fuhuaTime = '-';
if (enterprise_fuhuas[0].startTime){
fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
}
let subList = []; let subList = [];
valueList.forEach(subInfo => { valueList.forEach(subInfo => {
if (subInfo == "enterpriseName") subList.push(enterpriseName);//企业名称 if (subInfo == "enterpriseName") subList.push(enterpriseName);//企业名称
...@@ -663,8 +910,10 @@ export async function dwBasicInformation(eId:string) { ...@@ -663,8 +910,10 @@ export async function dwBasicInformation(eId:string) {
if (subInfo == "logonTime") subList.push(moment(logonTime).format("YYYY-MM-DD"));//注册日期 if (subInfo == "logonTime") subList.push(moment(logonTime).format("YYYY-MM-DD"));//注册日期
if (subInfo == "logonAddress") subList.push(changeAdd(JSON.parse(logonAddress)));//注册地址 if (subInfo == "logonAddress") subList.push(changeAdd(JSON.parse(logonAddress)));//注册地址
if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo);//企业规模 if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo);//企业规模
if (subInfo == "startTime") subList.push(leasesTime);//孵化时间 if (subInfo == "startTime") subList.push(fuhuaTime);//孵化时间
if (subInfo == "startTime") subList.push(leasesTime);//租赁时间
if (subInfo == "area") subList.push(enterprise_leases[0].area+"㎡");//租赁面积 if (subInfo == "area") subList.push(enterprise_leases[0].area+"㎡");//租赁面积
if (subInfo == "building") subList.push(enterprise_leases[0].building);//楼号
if (subInfo == "roomNumber") subList.push(enterprise_leases[0].roomNumber);//室号 if (subInfo == "roomNumber") subList.push(enterprise_leases[0].roomNumber);//室号
}); });
...@@ -941,10 +1190,10 @@ export async function dwEnterpriseOutTable(enterpriseName: string, type: number, ...@@ -941,10 +1190,10 @@ export async function dwEnterpriseOutTable(enterpriseName: string, type: number,
let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"]; let filesList = ["eId", "enterpriseName", "uscc", "logonTime", "logonAddress", "qiYeGuiMo"];
let manyTableInfo:any = {}; let manyTableInfo:any = {};
manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime", "roomNumber"], where:{} }; manyTableInfo[TABLENAME.租赁信息] = {column:["area", "startTime", "endTime","building", "roomNumber" ], where:{} };
// 关联企业孵化信息表,获取 moveOutTime 字段 // 关联企业孵化信息表,获取 moveOutTime 字段
manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType"], where: { state:enumConfig.FUHUASTATE.迁出 } }; manyTableInfo[TABLENAME.企业孵化信息] = { column: ["moveOutTime","moveOutType", "startTime", "endTime"], where: { state:enumConfig.FUHUASTATE.迁出 } };
let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo); let resInfo = await selectManyTableData(OPERATIONALDATATYPE.多表联查, TABLENAME.企业基础信息表, selectParam, filesList, manyTableInfo);
...@@ -973,6 +1222,10 @@ export async function dwEnterpriseOutTable(enterpriseName: string, type: number, ...@@ -973,6 +1222,10 @@ export async function dwEnterpriseOutTable(enterpriseName: string, type: number,
if (enterprise_leases[0].startTime){ if (enterprise_leases[0].startTime){
leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`; leasesTime = `${moment(enterprise_leases[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_leases[0].endTime).format("YYYY-MM-DD")}`;
} }
let fuhuaTime = '-';
if (enterprise_fuhuas[0].startTime){
fuhuaTime = `${moment(enterprise_fuhuas[0].startTime).format("YYYY-MM-DD")}${moment(enterprise_fuhuas[0].endTime).format("YYYY-MM-DD")}`;
}
let subList = []; let subList = [];
valueList.forEach(subInfo => { valueList.forEach(subInfo => {
...@@ -981,8 +1234,10 @@ export async function dwEnterpriseOutTable(enterpriseName: string, type: number, ...@@ -981,8 +1234,10 @@ export async function dwEnterpriseOutTable(enterpriseName: string, type: number,
if (subInfo == "logonTime") subList.push(moment(logonTime).format("YYYY-MM-DD")); //注册日期 if (subInfo == "logonTime") subList.push(moment(logonTime).format("YYYY-MM-DD")); //注册日期
if (subInfo == "logonAddress") subList.push(changeAdd(JSON.parse(logonAddress))); //注册地址 if (subInfo == "logonAddress") subList.push(changeAdd(JSON.parse(logonAddress))); //注册地址
if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo); //企业规模 if (subInfo == "qiYeGuiMo") subList.push(qiYeGuiMo); //企业规模
if (subInfo == "startTime") subList.push(fuhuaTime);//孵化时间
if (subInfo == "startTime") subList.push(leasesTime); //租赁时间 if (subInfo == "startTime") subList.push(leasesTime); //租赁时间
if (subInfo == "area") subList.push(enterprise_leases[0].area + "㎡"); //租赁面积 if (subInfo == "area") subList.push(enterprise_leases[0].area + "㎡"); //租赁面积
if (subInfo == "building") subList.push(enterprise_leases[0].building); //楼号
if (subInfo == "roomNumber") subList.push(enterprise_leases[0].roomNumber); //室号 if (subInfo == "roomNumber") subList.push(enterprise_leases[0].roomNumber); //室号
if (subInfo == "moveOutTime") subList.push(formattedMoveOutTime); //迁出时间 if (subInfo == "moveOutTime") subList.push(formattedMoveOutTime); //迁出时间
if (subInfo == "moveOutType") subList.push(formattedMoveOutTypeName); //迁出类型 if (subInfo == "moveOutType") subList.push(formattedMoveOutTypeName); //迁出类型
......
...@@ -10,62 +10,76 @@ import { getMySqlMs, randomId } from "../tools/system"; ...@@ -10,62 +10,76 @@ import { getMySqlMs, randomId } from "../tools/system";
import { BizError } from "../util/bizError"; import { BizError } from "../util/bizError";
import { eccFormParam } from "../util/verificationParam"; import { eccFormParam } from "../util/verificationParam";
import { PolicyUpdateConfig } from "../config/eccParam/enterprise"; import { PolicyUpdateConfig } from "../config/eccParam/enterprise";
import { POLICYTYPE } from "../config/enum/enum";
import { changeEnumValue } from "../util/verificationEnum";
/**
export async function enterprisePolicyList(keywords:string, state:number, page:number) { * 政策列表
* @param keywords 模糊搜索关键词
* @param state 筛选状态: 1=进行中 2=往期 其他=全部
* @param policyType 筛选政策类型: 1=财政补贴 2=资质申报 3=政策扶持
* @param page 页码
*/
export async function enterprisePolicyList(keywords:string, state:number, policyType:number, page:number) {
let selectParam:any = {}; let selectParam:any = {};
if (keywords) selectParam.title = {"%like%":keywords}; if (keywords) selectParam.title = {"%like%":keywords};
let filesList = ["poId", "title", "source", "createTimeMs", "closeTimeMs", "isPermanent","coverImg"]; if (policyType) selectParam.policyType = policyType;//政策类型
let filesList = ["poId", "title", "source", "createTimeMs", "closeTimeMs", "isPermanent","coverImg" ,"policyType"];
let resList = await selectData(OPERATIONALDATATYPE.分页查询, TABLENAME.政策表, selectParam, filesList, page); let resList = await selectData(OPERATIONALDATATYPE.分页查询, TABLENAME.政策表, selectParam, filesList, page);
let dataCount = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.政策表, selectParam, null); let dataCount = await selectData(OPERATIONALDATATYPE.查询数据量, TABLENAME.政策表, selectParam, null);
let dataList = []; let dataList = [];
const now = moment().valueOf(); // 获取当前时间戳 const now = moment().valueOf(); // 获取当前时间戳
resList.forEach(info => { resList.forEach(info => {
let closeTimeMs = info.closeTimeMs;
if (info.isPermanent == 1) closeTimeMs = '永久有效';
if (!info.closeTimeMs) closeTimeMs = "-";
// 格式化日期前检查closeTimeMs是否为'永久有效'或'-' // 格式化日期前检查closeTimeMs是否为'永久有效'或'-'
let formattedCloseTimeMs = closeTimeMs === '永久有效' || closeTimeMs === '-' ? closeTimeMs : moment(closeTimeMs).format("YYYY-MM-DD"); // 判断是否为永久有效政策
let formattedCreateTime = "-";
if (info.isPermanent == 1) formattedCreateTime = "永久有效";
else formattedCreateTime = moment(info.closeTimeMs).format("YYYY-MM-DD");
// 判断政策是进行中还是往期 // 判断政策是进行中还是往期
let status = ''; let status = '';
if (info.isPermanent == 1) { if (info.isPermanent == 1) {
status = '进行中'; status = '正在进行';
} else if (closeTimeMs === '-') {
status = '进行中';
} else { } else {
const policyEndTime = moment(closeTimeMs).valueOf(); if (info.closeTimeMs > getMySqlMs()) {
status = policyEndTime >= now ? '进行中' : '往期'; status = '正在进行';
}
if (getMySqlMs() > info.closeTimeMs) {
status = '已结束';
}
} }
if (state == 1) { if (state == 1) {
if (info.isPermanent == 1 || closeTimeMs > getMySqlMs()) { if (info.isPermanent == 1 || info.closeTimeMs > getMySqlMs()) {
dataList.push({ dataList.push({
poId:info.poId, poId:info.poId,
title:info.title, title:info.title,
source:info.source, source:info.source,
createTimeMs: info.createTimeMs ? moment(info.createTimeMs).format("YYYY-MM-DD") : "-", createTimeMs: info.createTimeMs ? moment(info.createTimeMs).format("YYYY-MM-DD") : "-",
closeTimeMs:formattedCloseTimeMs, closeTimeMs:formattedCreateTime,
isPermanent: info.isPermanent, isPermanent: info.isPermanent,
policyType: changeEnumValue(POLICYTYPE, info.policyType),//政策类型
//图片 //图片
coverImg:JSON.parse(info.coverImg), coverImg:JSON.parse(info.coverImg),
//coverImg:info.coverImg ? JSON.parse(info.coverImg) : [], //coverImg:info.coverImg ? JSON.parse(info.coverImg) : [],
status, // 发布状态
}); });
} }
} else if (state == 2) { } else if (state == 2) {
if (info.isPermanent == 0 && getMySqlMs() > closeTimeMs) { if (info.isPermanent == 0 && getMySqlMs() > info.closeTimeMs) {
dataList.push({ dataList.push({
poId:info.poId, poId:info.poId,
title:info.title, title:info.title,
source:info.source, source:info.source,
createTimeMs: info.createTimeMs ? moment(info.createTimeMs).format("YYYY-MM-DD") : "-", createTimeMs: info.createTimeMs ? moment(info.createTimeMs).format("YYYY-MM-DD") : "-",
closeTimeMs:formattedCloseTimeMs, closeTimeMs:formattedCreateTime,
isPermanent: info.isPermanent, isPermanent: info.isPermanent,
policyType: changeEnumValue(POLICYTYPE, info.policyType),//政策类型
//图片 //图片
coverImg:JSON.parse(info.coverImg), coverImg:JSON.parse(info.coverImg),
//coverImg:info.coverImg ? JSON.parse(info.coverImg) : [], //coverImg:info.coverImg ? JSON.parse(info.coverImg) : [],
status, // 发布状态
}); });
} }
} else { } else {
...@@ -74,11 +88,13 @@ export async function enterprisePolicyList(keywords:string, state:number, page:n ...@@ -74,11 +88,13 @@ export async function enterprisePolicyList(keywords:string, state:number, page:n
title:info.title, title:info.title,
source:info.source, source:info.source,
createTimeMs: info.createTimeMs ? moment(info.createTimeMs).format("YYYY-MM-DD") : "-", createTimeMs: info.createTimeMs ? moment(info.createTimeMs).format("YYYY-MM-DD") : "-",
closeTimeMs:formattedCloseTimeMs, closeTimeMs:formattedCreateTime,
isPermanent: info.isPermanent, isPermanent: info.isPermanent,
policyType: changeEnumValue(POLICYTYPE, info.policyType),//政策类型
//图片 //图片
coverImg:JSON.parse(info.coverImg), coverImg:JSON.parse(info.coverImg),
//coverImg:info.coverImg ? JSON.parse(info.coverImg) : [], //coverImg:info.coverImg ? JSON.parse(info.coverImg) : [],
status, // 发布状态
}); });
} }
...@@ -89,9 +105,19 @@ export async function enterprisePolicyList(keywords:string, state:number, page:n ...@@ -89,9 +105,19 @@ export async function enterprisePolicyList(keywords:string, state:number, page:n
export async function enterprisePolicyInfo(poId:string) { export async function enterprisePolicyInfo(poId:string) {
let filesList = ["poId", "title", "source", "createTimeMs", "closeTimeMs", "isPermanent", "coverImg", "desc"]; let filesList = ["poId", "title", "source", "createTimeMs", "closeTimeMs", "isPermanent", "coverImg", "desc", "policyType"];
let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.政策表, {poId}, filesList); let resInfo = await selectData(OPERATIONALDATATYPE.查询单个, TABLENAME.政策表, {poId}, filesList);
let status = '';
if (resInfo.isPermanent == 1) {
status = '正在进行';
} else if (resInfo.closeTimeMs > getMySqlMs()) {
status = '正在进行';
} else {
status = '已结束';
}
let dataInfo = { let dataInfo = {
title:resInfo.title, title:resInfo.title,
source:resInfo.source, source:resInfo.source,
...@@ -99,10 +125,14 @@ export async function enterprisePolicyInfo(poId:string) { ...@@ -99,10 +125,14 @@ export async function enterprisePolicyInfo(poId:string) {
coverImg:resInfo.coverImg ? JSON.parse(resInfo.coverImg) : [], coverImg:resInfo.coverImg ? JSON.parse(resInfo.coverImg) : [],
// closeTimeMs:new Date(resInfo.closeTimeMs).valueOf(), // closeTimeMs:new Date(resInfo.closeTimeMs).valueOf(),
closeTimeMs: resInfo.closeTimeMs ? new Date(resInfo.closeTimeMs).valueOf() : null, closeTimeMs: resInfo.closeTimeMs ? new Date(resInfo.closeTimeMs).valueOf() : null,
isPermanent:resInfo.isPermanent isPermanent:resInfo.isPermanent,
policyType:resInfo.policyType,//政策类型
// policyType: changeEnumValue(POLICYTYPE, resInfo.policyType),
status, // 发布状态
}; };
return {dataInfo}; return {dataInfo};
} }
...@@ -125,6 +155,8 @@ export async function enterprisePolicyUpdate(poId:string, param) { ...@@ -125,6 +155,8 @@ export async function enterprisePolicyUpdate(poId:string, param) {
if (!param.coverImg) param.coverImg = '[]'; if (!param.coverImg) param.coverImg = '[]';
else param.coverImg = JSON.stringify(param.coverImg); else param.coverImg = JSON.stringify(param.coverImg);
await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.政策表, param, {poId}); await operationalData(OPERATIONALDATATYPE.修改, TABLENAME.政策表, param, {poId});
return {isSuccess:true}; return {isSuccess:true};
...@@ -140,6 +172,7 @@ export async function enterprisePolicyAdd( param) { ...@@ -140,6 +172,7 @@ export async function enterprisePolicyAdd( param) {
else param.coverImg = JSON.stringify(param.coverImg); else param.coverImg = JSON.stringify(param.coverImg);
param.poId = randomId(TABLEID.政策表); param.poId = randomId(TABLEID.政策表);
param.createTimeMs = getMySqlMs(); param.createTimeMs = getMySqlMs();
await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.政策表, param, {}); await operationalData(OPERATIONALDATATYPE.增加, TABLENAME.政策表, param, {});
return {isSuccess:true}; return {isSuccess:true};
......
...@@ -21,7 +21,8 @@ export const PolicyUpdateConfig = { ...@@ -21,7 +21,8 @@ export const PolicyUpdateConfig = {
source:{type:"String"},// 来源 source:{type:"String"},// 来源
coverImg:{type:"[String]"},// 图片 coverImg:{type:"[String]"},// 图片
closeTimeMs:{type:"Number"},// 关闭时间 closeTimeMs:{type:"Number"},// 关闭时间
isPermanent:{type:"Number"}//是否永久有效 isPermanent:{type:"Number"},//是否永久有效
policyType:{type:"Number"},// 政策类型
} }
...@@ -39,14 +40,18 @@ export const SettleInForUpdateConfig = { ...@@ -39,14 +40,18 @@ export const SettleInForUpdateConfig = {
logonAddress:{type:"String"},//注册地址 logonAddress:{type:"String"},//注册地址
fuHuaTimeStart:{type:"Number"},//孵化开始时间 fuHuaTimeStart:{type:"Number"},//孵化开始时间
fuHuaTimeEndTime:{type:"Number"},//孵化结束时间 fuHuaTimeEndTime:{type:"Number"},//孵化结束时间
leaseStartTime:{type:"Number"},//租赁开始时间
leaseEndTime:{type:"Number"},//租赁结束时间
area:{type:"Number"},//面积 area:{type:"Number"},//面积
// unitPrice:{type:"Number"},//单价 // unitPrice:{type:"Number"},//单价
building:{type:"String"},//楼号
roomNumber:{type:"String"},//室号 roomNumber:{type:"String"},//室号
rent:{type:"Number"},//每月租金 rent:{type:"Number"},//每月租金
// totalPrice:{type:"Number"},//总价 // totalPrice:{type:"Number"},//总价
pwd:{type:"String"}, pwd:{type:"String"},
phone:{type:"String"}, phone:{type:"String"},
userName:{type:"String"}, userName:{type:"String"},
mail:{type:"String"},//邮箱
uId:{type:"String"} uId:{type:"String"}
} }
...@@ -61,27 +66,24 @@ export const RegisterUpdateConfig = { ...@@ -61,27 +66,24 @@ export const RegisterUpdateConfig = {
} }
export const AdminRegisterAddConfig = { export const AdminRegisterAddConfig = {
// enterpriseName:{type:"String"},//企业名称 enterpriseName:{type:"String",required: true, message: '企业名称不能为空'},//企业名称
// uscc:{type:"String"},//统一信用代码 uscc:{type:"String",required: true, message: '统一信用代码不能为空'},//信用代码
// logonTime:{type:"Number"},//注册日期 logonTime:{type:"Number",required: true, message: '注册时间不能为空'},//注册时间
// logonAddress:{type:"String"},//注册地址 logonAddress:{type:"String",required: true, message: '注册地址不能为空'},//注册地址
// fuHuaTimeStart:{type:"Number"},//孵化开始时间 fuHuaTimeStart:{type:"Number",required: true, message: '孵化开始时间不能为空'},//孵化开始时间
// fuHuaTimeEndTime:{type:"Number"},//孵化结束时间 fuHuaTimeEndTime:{type:"Number",required: true, message: '孵化结束时间不能为空'},//孵化结束时间
// area:{type:"Number"},//面积 area:{type:"Number", required: false},//面积非必填
enterpriseName:{type:"String"},
uscc:{type:"String"},//信用代码
logonTime:{type:"Number"},//注册时间
logonAddress:{type:"String"},//注册地址
fuHuaTimeStart:{type:"Number"},//孵化开始时间
fuHuaTimeEndTime:{type:"Number"},//孵化结束时间
area:{type:"Number"},//面积
// unitPrice:{type:"Number"},//单价 // unitPrice:{type:"Number"},//单价
roomNumber:{type:"String"},//室号 building: { type: 'string', required: false }, // 租赁楼号非必填
rent:{type:"Number"},//每月租金 roomNumber:{type:"String", required: false},//室号非必填
rent:{type:"Number",required: true, message: '每月租金不能为空'},//每月租金
// totalPrice:{type:"Number"},//总价 // totalPrice:{type:"Number"},//总价
pwd:{type:"String"}, pwd:{type:"String",required: true, message: '密码不能为空'},
phone:{type:"String"}, phone:{type:"String",required: true, message: '手机号码不能为空'},
userName:{type:"String"} userName:{type:"String",required: true, message: '用户名不能为空'},
leaseStartTime: { type: 'Number', required: true, message: '租赁开始时间不能为空' },
leaseEndTime: { type: 'Number', required: true, message: '租赁结束时间不能为空' },
mail: { type: 'string', required: true, message: '邮箱地址不能为空' },
} }
...@@ -105,16 +107,54 @@ export const YuYiBaseDataUpdateConfig = { ...@@ -105,16 +107,54 @@ export const YuYiBaseDataUpdateConfig = {
personCharge:{type:"String"},//负责人 personCharge:{type:"String"},//负责人
phone:{type:"String"},//手机号码 phone:{type:"String"},//手机号码
synopsis:{type:"String"},//简介 synopsis:{type:"String"},//简介
totalArea:{type:"String"},//总面积 totalArea:{type:"String"},//孵化器总面积
zaifuArea:{type:"String"},//在孵面积 zaifuArea:{type:"String"},//在孵面积
ziyonArea:{type:"String"},//自用面积 rentRate:{type:"String"},//出租率
parkArea:{type:"String"},//新增 // uscc:{type:"String"},//统一信用代码
industrialScale:{type:"String"},
enterpriseNum:{type:"Number"}, entryInfo:{type:"object"}, //孵化器入驻信息
totalAssetInvestmentAmount:{type:"String"}, promotionInfo:{type:"object"},//推广信息
numberOfInstitutionsIntroduced:{type:"String"},
introduceInstitutionalInvestment:{type:"String"} // building:{type:"number"},//楼号
// occupancyRate:{type:"String"},//入驻率
// enteredEnterprises:{type:"String"},//入驻企业
// promotionType:{type:"number"},//推广类型 枚举 线上推广、线下推广
// promotionApp:{type:"number"},//推广应用 枚举 抖音、小红书、视频号
// promotionNum:{type:"number"},//推广次数
} }
export const UserRegisterAddConfig = {
enterpriseName:{type:"String", required: true, message: '企业名称不能为空'},
uscc:{type:"String",required: true, message: '统一信用代码不能为空'},//信用代码
logonTime:{type:"Number", required: true, message: '注册时间不能为空'},//注册时间
logonAddress:{type:"String", required: true, message: '注册地址不能为空'},//注册地址
fuHuaTimeStart:{type:"Number", required: true, message: '孵化开始时间不能为空'},//孵化开始时间
fuHuaTimeEndTime:{type:"Number", required: true, message: '孵化结束时间不能为空'},//孵化结束时间
rent:{type:"Number", required: true, message: '每月租金不能为空'},//每月租金
leaseStartTime: { type: 'string', required: true, message: '租赁开始时间不能为空' },
leaseEndTime: { type: 'string', required: true, message: '租赁结束时间不能为空' },
mail: { type: 'string', required: true, message: '邮箱地址不能为空' },
userName: { type: 'string', required: true, message: '联系人不能为空' },
phone: { type: 'string', required: true, message: '登录手机号码不能为空' },
pwd: { type: 'string', required: true, message: '登录密码不能为空' },
building: { type: 'string', required: false }, // 租赁楼号非必填
roomNumber: { type: 'string', required: false }, // 租赁室号非必填
area: { type: 'number', required: false }, // 租赁面积非必填
}
/**
* 备份
*/
// export const UserRegisterAddConfig = {
// enterpriseName:{type:"String"},
// uscc:{type:"String"},//信用代码
// logonTime:{type:"Number"},//注册时间
// logonAddress:{type:"String"},//注册地址
// fuHuaTimeStart:{type:"Number"},//孵化开始时间
// fuHuaTimeEndTime:{type:"Number"},//孵化结束时间
// area:{type:"Number"},//面积
// roomNumber:{type:"String"},//室号
// rent:{type:"Number"},//每月租金
// }
\ No newline at end of file
...@@ -51,7 +51,11 @@ export enum TABLENAME { ...@@ -51,7 +51,11 @@ export enum TABLENAME {
资质证书 = "certification", 资质证书 = "certification",
失信核查 = "dishonesty", 失信核查 = "dishonesty",
严重违法犯罪 = "break_the_law", 严重违法犯罪 = "break_the_law",
对外投资 = "overseas_investment" 对外投资 = "overseas_investment",
入孵申请审批表 ='approval_history',
入驻信息表 = "info_enter",
运营推广信息表 = "info_operation_promotion",
} }
export enum TABLEID { export enum TABLEID {
...@@ -87,5 +91,9 @@ export enum TABLEID { ...@@ -87,5 +91,9 @@ export enum TABLEID {
资质证书 = "cc", 资质证书 = "cc",
失信核查 = "dis", 失信核查 = "dis",
严重违法犯罪 = "bt", 严重违法犯罪 = "bt",
对外投资 = "ot" 对外投资 = "ot",
入孵申请审批表 = 'ah',
入驻信息表 = "ei",
运营推广信息表 = "opi",
} }
\ No newline at end of file
...@@ -161,6 +161,50 @@ export enum FINANCINGROUNDS { ...@@ -161,6 +161,50 @@ export enum FINANCINGROUNDS {
} }
/**
* 政策类型
*/
export enum POLICYTYPE {
财政补贴 = 1,
资质申报 = 2,
政策扶持 = 3
}
/**
* 园区楼号
*/
export enum BUILDING {
"1号楼" = 1,
"3号楼" = 3,
"4号楼" = 4,
}
export enum PROMOTIONTYPE {
线上推广 = 1,
线下推广,
}
/**
* 线上推广
*/
export enum ONLINEPROMOTION {
视频号 = 1,
抖音,
小红书
}
/**
* 线下推广
*/
export enum OFFLINEPROMOTION {
活动宣讲 = 1,
三方机构合作
}
export enum OUTCOME { export enum OUTCOME {
未解决 = 0, 未解决 = 0,
已解决 已解决
...@@ -169,7 +213,27 @@ export enum OUTCOME { ...@@ -169,7 +213,27 @@ export enum OUTCOME {
export enum STATE { export enum STATE {
= 0, = 0,
,
}
/**
* 入孵申请审批历史-审批状态
*/
export enum CHANGESTATE {
未审核 = 0,//未审核
已通过 = 1,//已通过
已驳回 = 2,
重新提交
}
/**
* 入孵申请审批历史-审批类型
*/
export enum CHANGETYPE {
入孵申请 = 1,
入孵材料审批 = 2
} }
...@@ -219,7 +283,16 @@ export enum IPRTYPECLIENTZL { ...@@ -219,7 +283,16 @@ export enum IPRTYPECLIENTZL {
} }
export enum RUFUSTATE {
信息填写 = 1,
信息审核中 = 2,
信息审核成功 = 3,
信息审核失败 = 4,
补充材料 = 5,
材料已提交 = 6,
// 材料审核驳回 = 7,
材料审核完成 = 7
}
export enum RISKTYPE { export enum RISKTYPE {
严重违法失信 = 1510, 严重违法失信 = 1510,
......
...@@ -33,7 +33,10 @@ export enum ERRORENUM { ...@@ -33,7 +33,10 @@ export enum ERRORENUM {
用户已存在, 用户已存在,
手机号码重复, 手机号码重复,
数据库错误, 数据库错误,
该企业已迁出 该企业已迁出,
账号不存在,
密码只能由618位字符和数字组成,
请上传所有入孵材料
} }
export enum ERRORCODEENUM { export enum ERRORCODEENUM {
......
...@@ -7,8 +7,10 @@ export enum ENTERPRISEBASE { ...@@ -7,8 +7,10 @@ export enum ENTERPRISEBASE {
注册时间 = "logonTime", 注册时间 = "logonTime",
注册地址 = "logonAddress", 注册地址 = "logonAddress",
企业规模 = "qiYeGuiMo", 企业规模 = "qiYeGuiMo",
孵化时间 = "fuHuaTime",
租赁时间 = "startTime", 租赁时间 = "startTime",
租赁面积 = "area", 租赁面积 = "area",
楼号 = "building",
室号 = "roomNumber" 室号 = "roomNumber"
} }
...@@ -59,8 +61,11 @@ export enum ENTERPRISEBASEMOVEOUT { ...@@ -59,8 +61,11 @@ export enum ENTERPRISEBASEMOVEOUT {
迁出类型 = "moveOutType", 迁出类型 = "moveOutType",
注册地址 = "logonAddress", 注册地址 = "logonAddress",
企业规模 = "qiYeGuiMo", 企业规模 = "qiYeGuiMo",
孵化时间 = "fuHuaTime",
租赁时间 = "startTime", 租赁时间 = "startTime",
租赁面积 = "area" 租赁面积 = "area",
楼号 = "building",
室号 = "roomNumber"
} }
...@@ -31,15 +31,22 @@ export const YuYiBaseDataConfig = { ...@@ -31,15 +31,22 @@ export const YuYiBaseDataConfig = {
personCharge:{key:"负责人"}, personCharge:{key:"负责人"},
phone:{key:"手机号码"}, phone:{key:"手机号码"},
synopsis:{key:"简介"}, synopsis:{key:"简介"},
totalArea:{key:"总面积"}, totalArea:{key:"孵化器总面积"},
zaifuArea:{key:"在孵面积"}, zaifuArea:{key:"在孵面积"},
ziyonArea:{key:"自用面积"}, rentRate:{key:"出租率"},
parkArea:{key:"园区面积"},//新增 // ziyonArea:{key:"自用面积"},
enterpriseNum:{key:"企业数量"}, // parkArea:{key:"园区面积"},//新增
industrialScale:{key:"产业规模"}, // enterpriseNum:{key:"企业数量"},
totalAssetInvestmentAmount:{key:"总资产投入金额"}, // industrialScale:{key:"产业规模"},
numberOfInstitutionsIntroduced:{key:"引入机构数量"}, // totalAssetInvestmentAmount:{key:"总资产投入金额"},
introduceInstitutionalInvestment:{key:"引入机构投资"} // numberOfInstitutionsIntroduced:{key:"引入机构数量"},
// introduceInstitutionalInvestment:{key:"引入机构投资"},
building:{key:"楼号"},
occupancyRate:{key:"入驻率"},
enteredEnterprises:{key:"入驻企业"},
promotionType:{key:"推广类型"},
promotionApp:{key:"推广应用"},
promotionNum:{key:"推广次数"},
} }
...@@ -24,6 +24,9 @@ export function setRouter(httpServer) { ...@@ -24,6 +24,9 @@ export function setRouter(httpServer) {
httpServer.post('/admin/enterprise/settlein/pass', checkUser, asyncHandler(settleInPass)); httpServer.post('/admin/enterprise/settlein/pass', checkUser, asyncHandler(settleInPass));
httpServer.post('/admin/enterprise/settlein/update', checkUser, asyncHandler(settleUpdate)); httpServer.post('/admin/enterprise/settlein/update', checkUser, asyncHandler(settleUpdate));
httpServer.post('/admin/enterprise/settlein/out', checkUser, asyncHandler(settleInOut)); httpServer.post('/admin/enterprise/settlein/out', checkUser, asyncHandler(settleInOut));
httpServer.post('/admin/fuhua/rufu/add', checkUser, asyncHandler(addRuFu));
httpServer.post('/admin/fuhua/rufu/info', checkUser, asyncHandler(getRuFu));
httpServer.post('/admin/fuhua/rufu/update', checkUser, asyncHandler(updateRuFu));//
//审核 //审核
httpServer.post('/admin/enterprise/settlein/examine/list', checkUser, asyncHandler(examineSettleIn)); httpServer.post('/admin/enterprise/settlein/examine/list', checkUser, asyncHandler(examineSettleIn));
httpServer.post('/admin/enterprise/settlein/examine/pass', checkUser, asyncHandler(examineSettleInPass));//入孵材料审核 通过 httpServer.post('/admin/enterprise/settlein/examine/pass', checkUser, asyncHandler(examineSettleInPass));//入孵材料审核 通过
...@@ -235,8 +238,8 @@ async function enterpriseLogout(req, res) { ...@@ -235,8 +238,8 @@ async function enterpriseLogout(req, res) {
*/ */
async function policyList(req, res) { async function policyList(req, res) {
const UserInfo = req.userInfo; const UserInfo = req.userInfo;
let {keywords, state, page } = req.body let {keywords ,state ,policyType ,page } = req.body
let result = await zhengCeBiz.enterprisePolicyList(keywords, state, page); let result = await zhengCeBiz.enterprisePolicyList(keywords ,state ,policyType ,page);
res.success(result); res.success(result);
} }
...@@ -333,8 +336,8 @@ async function outPutTalentList(req, res) { ...@@ -333,8 +336,8 @@ async function outPutTalentList(req, res) {
*/ */
async function enterpriseList(req, res) { async function enterpriseList(req, res) {
const UserInfo = req.userInfo; const UserInfo = req.userInfo;
let {enterpriseName, page } = req.body let {enterpriseName, page, logonStartTime, logonEndTime, startTime, endTime, building } = req.body
let result = await zaiFuBiz.enterpriseList(enterpriseName, page); let result = await zaiFuBiz.enterpriseList(enterpriseName, page, logonStartTime, logonEndTime, startTime, endTime, building);
res.success(result); res.success(result);
} }
...@@ -426,7 +429,9 @@ async function enterpriseDetails(req, res) { ...@@ -426,7 +429,9 @@ async function enterpriseDetails(req, res) {
* @param res * @param res
*/ */
async function dwEnterpriseList(req, res) { async function dwEnterpriseList(req, res) {
let {enterpriseName, type, files } = req.body // let {enterpriseName, type, files,logonStartTime, logonEndTime, startTime,endTime, building } = req.body
// let result = await zaiFuBiz.dwEnterpriseTable(enterpriseName, type, files,logonStartTime, logonEndTime, startTime,endTime, building );
let {enterpriseName, type, files} = req.body
let result = await zaiFuBiz.dwEnterpriseTable(enterpriseName, type, files); let result = await zaiFuBiz.dwEnterpriseTable(enterpriseName, type, files);
res.success(result); res.success(result);
...@@ -763,6 +768,45 @@ async function settleInOut(req, res) { ...@@ -763,6 +768,45 @@ async function settleInOut(req, res) {
/** /**
* 添加入孵企业
* @param req
* @param res
*/
async function addRuFu(req, res) {
let { param } = req.body;
let result = await ruFuBiz.createRuFu(param);
res.success(result);
}
/**
* 企业入孵材料回显
* @param req
* @param res
*/
async function getRuFu(req, res) {
let { eId } = req.body
let result = await ruFuBiz.getRuFu(eId);
res.success(result);
}
/**
* 管理员编辑企业材料
* @param req
* @param res
*/
async function updateRuFu(req, res) {
let { eId, param } = req.body
let result = await ruFuBiz.updateRuFu(eId, param);
res.success(result);
}
/**
* *
* @param req * @param req
* @param res * @param res
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import * as asyncHandler from 'express-async-handler'; import * as asyncHandler from 'express-async-handler';
import { checkEnterpriseUser, checkInterior, checkUser } from '../middleware/user'; import { checkEnterpriseUser, checkInterior, checkUser } from '../middleware/user';
import { getMySqlMs, randomId } from '../tools/system'; import { getMySqlMs, getPinyinInitials, randomId } from '../tools/system';
import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from '../config/enum/dbEnum'; import { OPERATIONALDATATYPE, TABLEID, TABLENAME } from '../config/enum/dbEnum';
import { changeEnumValue } from '../util/verificationEnum'; import { changeEnumValue } from '../util/verificationEnum';
import { DEGREE, FUHUASTATE, IPRALLTYPE, ZZMM } from '../config/enum/enum'; import { DEGREE, FUHUASTATE, IPRALLTYPE, ZZMM } from '../config/enum/enum';
...@@ -101,10 +101,11 @@ export async function data1210(req, res) { ...@@ -101,10 +101,11 @@ export async function data1210(req, res) {
let qccInfo = dataMap[enterpriseName]; let qccInfo = dataMap[enterpriseName];
let eId = randomId(TABLEID.企业基础信息表); let eId = randomId(TABLEID.企业基础信息表);
let pinyinName = getPinyinInitials(qccInfo.enterpriseName)
let enterpriseInfo = {//基础信息表 let enterpriseInfo = {//基础信息表
eId, eId,
enterpriseName:qccInfo.enterpriseName, enterpriseName:qccInfo.enterpriseName,
pinyinName,
RAS:qccInfo.RAS, RAS:qccInfo.RAS,
zhuceziben:qccInfo.zhuceziben, zhuceziben:qccInfo.zhuceziben,
shijiaoziben:qccInfo.shijiaoziben, shijiaoziben:qccInfo.shijiaoziben,
...@@ -137,6 +138,8 @@ export async function data1210(req, res) { ...@@ -137,6 +138,8 @@ export async function data1210(req, res) {
leaseId:randomId(TABLEID.租赁信息), leaseId:randomId(TABLEID.租赁信息),
eId, eId,
area:subList[4] ? subList[4] : 0, area:subList[4] ? subList[4] : 0,
building:subList[45] || '',
// roomNumber:subList[4] || '',
roomNumber:subList[3] || '', roomNumber:subList[3] || '',
bankName:subList[18] || '', bankName:subList[18] || '',
}; };
......
...@@ -10,9 +10,6 @@ export function setRouter(httpServer) { ...@@ -10,9 +10,6 @@ export function setRouter(httpServer) {
httpServer.post('/admin/fuhua/operate', checkUser, asyncHandler(operateData)); httpServer.post('/admin/fuhua/operate', checkUser, asyncHandler(operateData));
httpServer.post('/admin/fuhua/risk', checkUser, asyncHandler(riskData)); httpServer.post('/admin/fuhua/risk', checkUser, asyncHandler(riskData));
httpServer.post('/admin/fuhua/worth', checkUser, asyncHandler(worthDate)); httpServer.post('/admin/fuhua/worth', checkUser, asyncHandler(worthDate));
httpServer.post('/admin/fuhua/rufu/add', checkUser, asyncHandler(addRuFu));
httpServer.post('/admin/fuhua/rufu/info', checkUser, asyncHandler(getRuFu));
httpServer.post('/admin/fuhua/rufu/update', checkUser, asyncHandler(updateRuFu));//
httpServer.post('/admin/fuhua/yuyi/info', checkUser, asyncHandler(yuYiRuFu)); httpServer.post('/admin/fuhua/yuyi/info', checkUser, asyncHandler(yuYiRuFu));
httpServer.post('/admin/fuhua/yuyi/update', checkUser, asyncHandler(updateYuYi)); httpServer.post('/admin/fuhua/yuyi/update', checkUser, asyncHandler(updateYuYi));
} }
...@@ -68,45 +65,6 @@ async function worthDate(req, res) { ...@@ -68,45 +65,6 @@ async function worthDate(req, res) {
/** /**
* 添加入孵企业
* @param req
* @param res
*/
async function addRuFu(req, res) {
let { param } = req.body;
let result = await fuhuaBiz.createRuFu(param);
res.success(result);
}
/**
* 企业入孵材料回显
* @param req
* @param res
*/
async function getRuFu(req, res) {
let { eId } = req.body
let result = await fuhuaBiz.getRuFu(eId);
res.success(result);
}
/**
* 管理员编辑企业材料
* @param req
* @param res
*/
async function updateRuFu(req, res) {
let { eId, param } = req.body
let result = await fuhuaBiz.updateRuFu(eId, param);
res.success(result);
}
/**
* 雨艺孵化器基本信息回显 * 雨艺孵化器基本信息回显
*/ */
async function yuYiRuFu(req, res) { async function yuYiRuFu(req, res) {
......
...@@ -25,6 +25,9 @@ const config = { ...@@ -25,6 +25,9 @@ const config = {
"/public/output/enterprisemoveout":outputEnumConfig.ENTERPRISEBASEMOVEOUT, "/public/output/enterprisemoveout":outputEnumConfig.ENTERPRISEBASEMOVEOUT,
"/public/iprtypeclientqt":enumConfig.IPRTYPECLIENTQT,// 新增知识产权类型 "/public/iprtypeclientqt":enumConfig.IPRTYPECLIENTQT,// 新增知识产权类型
"/public/iprtypeclientzl":enumConfig.IPRTYPECLIENTZL,// 新增知识产权专利 "/public/iprtypeclientzl":enumConfig.IPRTYPECLIENTZL,// 新增知识产权专利
"/public/policytype":enumConfig.POLICYTYPE,// 政策文件类型
"/public/building":enumConfig.BUILDING,// 园区楼号
// "/public/output/basedata":outputEnumConfig.BASEDATA, // "/public/output/basedata":outputEnumConfig.BASEDATA,
......
...@@ -6,6 +6,7 @@ import * as publicRouters from './public'; ...@@ -6,6 +6,7 @@ import * as publicRouters from './public';
import * as enterpriseInfoRouters from './admin'; import * as enterpriseInfoRouters from './admin';
import * as fuhuaRouters from './fuhua'; import * as fuhuaRouters from './fuhua';
import * as dbInitRouters from './dbinit'; import * as dbInitRouters from './dbinit';
import * as userRuFuRouters from './userRuFu';
export function setRouter(httpServer){ export function setRouter(httpServer){
/**下拉框等公用 路由 */ /**下拉框等公用 路由 */
publicRouters.setRouter(httpServer); publicRouters.setRouter(httpServer);
...@@ -15,4 +16,6 @@ export function setRouter(httpServer){ ...@@ -15,4 +16,6 @@ export function setRouter(httpServer){
fuhuaRouters.setRouter(httpServer); fuhuaRouters.setRouter(httpServer);
dbInitRouters.setRouter(httpServer); dbInitRouters.setRouter(httpServer);
userRuFuRouters.setRouter(httpServer);
} }
\ No newline at end of file
/**
* 企业网页填报入孵申请
*/
import * as asyncHandler from 'express-async-handler';
import * as userRuFuBiz from '../biz/userRuFu';
export function setRouter(httpServer) {
httpServer.post('/admin/enterprise/rufu/register', asyncHandler(register));
httpServer.post('/admin/enterprise/rufu/login', asyncHandler(login));
httpServer.post('/admin/enterprise/rufu/rufustate', asyncHandler(ruFuState));
httpServer.post('/admin/enterprise/rufu/add', asyncHandler(addRuFu));
httpServer.post('/admin/enterprise/rufu/info', asyncHandler(getRuFu));
httpServer.post('/admin/enterprise/rufu/update', asyncHandler(updateRuFu));
}
/**
* 注册
* @param req
* @param res
*/
async function register(req, res) {
let {userName, phone, pwd } = req.body
let result = await userRuFuBiz.enterpriseRegister(userName, phone, pwd);
res.success(result);
}
/**
* 登录
* @param req
* @param res
*/
async function login(req, res) {
let {phone, pwd } = req.body
let result = await userRuFuBiz.enterpriseLogin(phone, pwd);
res.success(result);
}
/**
* 登录
* @param req
* @param res
*/
async function ruFuState(req, res) {
let {uId } = req.body
let result = await userRuFuBiz.getRuFuState(uId);
res.success(result);
}
/**
* 添加入孵企业
* @param req
* @param res
*/
async function addRuFu(req, res) {
let { uId, param } = req.body;
let result = await userRuFuBiz.createRuFu(uId, param);
res.success(result);
}
/**
* 企业入孵材料回显
* @param req
* @param res
*/
async function getRuFu(req, res) {
let { eId } = req.body
let result = await userRuFuBiz.getRuFu(eId);
res.success(result);
}
/**
* 管理员编辑企业材料
* @param req
* @param res
*/
async function updateRuFu(req, res) {
let { eId, param } = req.body
let result = await userRuFuBiz.updateRuFu(eId, param);
res.success(result);
}
...@@ -5,8 +5,7 @@ ...@@ -5,8 +5,7 @@
*/ */
import moment = require("moment"); import moment = require("moment");
import { TABLEID } from "../config/enum/dbEnum"; import pinyin from 'pinyin';
const md5 = require("md5"); const md5 = require("md5");
...@@ -78,3 +77,21 @@ export function getMySqlMs(time?) { ...@@ -78,3 +77,21 @@ export function getMySqlMs(time?) {
export function randomCode() { export function randomCode() {
return `${Math.ceil(Math.random()*10000)}` return `${Math.ceil(Math.random()*10000)}`
} }
/**
* 转换名称为拼音首字母
* @param name
* @returns
*/
export function getPinyinInitials(name) {
const result = pinyin(name, {
style: pinyin.STYLE_FIRST_LETTER, // 只获取首字母
heteronym: false // 不启用多音字模式
});
// 将二维数组转换为一维字符串,如 "阿里巴巴" -> "albb"
return result.map(item => item[0].charAt(0)).join('').toUpperCase();
}
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