明树Git Lab

Commit 3a523e6a authored by zfp1's avatar zfp1

update

parent f75f3111
Pipeline #105068 passed with stage
in 3 seconds
/**
* 投中管理 项目相关
*/
const errorMessage = require("../utils/errorMessage");
const _ = require("lodash");
const { Op } = require('sequelize');
const sequelize = require('sequelize');
const moment = require('moment');
const userModule = require('../module/userModule');
const projectModule = require('../module/projectModule');
async function createTzmbzrs(req, res, next) {
try {
if (!req.body.projectId) {
return res.sendError(errorMessage.paramsError);
}
//处理文件参数
req.body.zrswj = (req.body.zrswj || []).map(o => { return o && o.id });
req.body.chwj = (req.body.chwj || []).map(o => { return o && o.id });
req.body.jyglzrs = (req.body.jyglzrs || []).map(o => { return o && o.id });
//处理 责任指标 表
let tzmbzrsZbs = (req.body.tzmbzrsZbs || []).map(o => { o.projectId = req.body.projectId; return o });
delete req.body.tzmbzrsZbs;
//1.创建指标表数据
await DB.TzTzmbzrsZb.bulkCreate(tzmbzrsZbs);
//创建投资目标责任书数据
let ret = await DB.TzTzmbzrs.create(req.body);
return res.sendData(ret);
} catch (error) {
next(error);
}
}
async function updateTzmbzrs(req, res, next) {
try {
if (!(req.body.id && req.body.projectId)) {
return res.sendError(errorMessage.paramsError);
}
//处理文件参数
req.body.zrswj = (req.body.zrswj || []).map(o => { return o && o.id });
req.body.chwj = (req.body.chwj || []).map(o => { return o && o.id });
req.body.jyglzrs = (req.body.jyglzrs || []).map(o => { return o && o.id });
//处理 责任指标 表
let tzmbzrsZbs = req.body.tzmbzrsZbs || []
delete req.body.tzmbzrsZbs;
//1.更新责任指标表数据
let ids = [], infos = [], newtzmbzrsZbs = [];
tzmbzrsZbs.map(o => { if (!o.id) { if (!_.isEmpty(o)) { o.projectId = req.body.projectId; newtzmbzrsZbs.push(o); } } else { ids.push(o.id); infos.push(o); } return o });
await DB.TzTzmbzrsZb.destroy({ where: { projectId: req.body.projectId, id: { [Op.notIn]: ids } } }); // 删除id不在传入id数组里面的(用户在界面删除的)
await DB.TzTzmbzrsZb.bulkCreate(newtzmbzrsZbs);//创建新的 没有id的
await Promise.all(infos.map(item => { DB.TzTzmbzrsZb.update(item, { where: { id: item.id } }) }));
//2.更新责任书
let ret = await DB.TzTzmbzrs.update(req.body, { where: { id: req.body.id } });
return res.sendData(ret);
} catch (error) {
next(error);
}
}
async function getTzmbzrsList(req, res, next) {
try {
let page = req.body.page || 1;
let limit = req.body.pagesize || req.body.pageSize || 10;
let offset = (page - 1) * limit;
let search = {};
search.order = [['createdAt', 'DESC']];
search.limit = limit;
search.offset = offset;
let where = { del: 0 };
if (req.body.projectName) {
where = {
[Op.or]: [
{projectName: { [Op.like]: `%${req.body.projectName}%` }},
{tzzt: { [Op.like]: `%${req.body.tzzt}%` }}
],
del: 0
}
}
search.where = where;
if (req.body.attributes && req.body.attributes.length) {
search.attributes = req.body.attributes;
}
let ret = await DB.TzTzmbzrs.findAndCountAll(search);
return res.sendData(ret);
} catch (error) {
next(error);
}
}
async function getTzmbzrsInfo(req, res, next) {
try {
let sewhere = {};
if(req.body.id) {
sewhere.id = req.body.id;
}
if(req.body.projectId) {
sewhere.projectId = req.body.projectId;
}
if(_.isEmpty(sewhere)) {
return res.sendError(errorMessage.paramsError);
}
let zrs = await DB.TzTzmbzrs.findOne({where: {...sewhere, del: 0}, raw: true});
if(!(zrs && zrs.id && zrs.projectId)) {
return res.sendError(errorMessage.resourceNotFound);
}
let tzmbzrsZbs = await DB.TzTzmbzrsZb.findAll({
where: {projectId: zrs.projectId},
raw: true,
});
// console.log(tzmbzrsZbs, "============", zrs)
//文件处理
let fileIds = [...(zrs.zrswj || []), ...(zrs.chwj || []), ...(zrs.jyglzrs || [])];
let files = await DB.File.findAll({where: {id: {[Op.in]: fileIds}}, raw: true});
let fileMap = {};
files.map(o => {fileMap[o.id] = o});
zrs.zrswj = (zrs.zrswj || []).map(o => {return fileMap[o]});
zrs.chwj = (zrs.chwj || []).map(o => {return fileMap[o]});
zrs.jyglzrs = (zrs.jyglzrs || []).map(o => {return fileMap[o]});
zrs.tzmbzrsZbs = tzmbzrsZbs;
return res.sendData(zrs);
} catch (error) {
next(error);
}
}
module.exports = {
createTzmbzrs,
updateTzmbzrs,
getTzmbzrsList,
getTzmbzrsInfo
}
\ No newline at end of file
......@@ -37,6 +37,15 @@ const ProjectExcelData = require("./model/jt/projectExcelData");
const ProjectZqrz = require('./model/jt/projectZqrz')
const ProjectSpyjjc = require('./model/jt/projectSpyjjc')
//投中
const TzTzmbzrs = require("./model/jt/tzTzmbzrs");
const TzTzmbzrsZb = require("./model/jt/tzTzmbzrsZb");
const TzTzkz = require("./model/jt/tzTzkz");
const TzTzjzJcpfyj = require("./model/jt/tzTzjzJcpfyj");
const TzTzkzTzekz = require("./model/jt/tzTzkzTzekz");
const TzTzkzCwpj = require("./model/jt/tzTzkzCwpj");
const TzTzkzTzsy = require('./model/jt/tzTzkzTzsy');
/**
* 业务表
*/
......@@ -77,6 +86,13 @@ global.DB = {
ProjectExcelData,
ProjectZqrz,
ProjectSpyjjc,
TzTzmbzrs,
TzTzmbzrsZb,
TzTzkz,
TzTzjzJcpfyj,
TzTzkzTzekz,
TzTzkzCwpj,
TzTzkzTzsy,
}
......
1. 项目提交(项目公司、投管) 只能靠角色
1.1 项目公司新建项目人员---项目公司项目审批人员 --- 投管项目审批人员
项目公司人员 -- 看见本公司所有项目
投管项目审批人员 -- 看见所有项目公司人员
1.2 投管新建项目 --- 投管
同步发起 一个startFlow 流程记录 发起人 发起时间 项目状态(待审批-已审批)
/**
* 处理项目审批及消息 依靠项目状态流转
* 1. 发起人角色为项目公司项目发起人 xmgs_xmfqr;
* 2. 流转状态为 1待处理
* 3. 消息发送给 项目公司项目审批人 xmgs_xmspr,需要写一个审批接口 :项目基本信息不变,状态需要改为 2 项目公司初审:通过则变为3,不通过则变为1;
* 4. 若是投管部门自主创建项目,则项目状态直接到 5 待投管审核---退回则到1
* 5. 投管后续立项推送、决策推送状态再行处理
*/
//B. 找到本公司审批人员发送消息-- 如果找不到人 则提示项目已保存,联系管理员添加【项目公司项目审批人】角色
//A. 创建发起记录
1. 字典,提供形式:导出字典数据表或者excel表,提供内容举例:
主业/非主业: [{key: "zy", value: "主业"}, {key:"fzy", value: "非主业"}]
2. 项目数据提交接口:
项目存量数据信息获取接口(获取交投公司存量项目)
项目立项数据推送接口
项目立项审批结果获取接口(贵方提供,我方循环拉取结果) || 项目立项审批结果回调接口(我方提供,贵方推送)
项目决策数据推送接口
项目决策审批结果获取接口(贵方提供,我方循环拉取结果) || 项目决策审批结果回调接口(我方提供,贵方推送)
3. 文件处理:
双方在项目数据交互时,文件数据如何交互,需要技术人员进一步商讨
This source diff could not be displayed because it is too large. You can view the blob instead.
const { DataTypes } = require('sequelize');
const sequelize = require('../index');
const moment = require('moment');
//投中管理-投资控制 -批复意见落实情况表 -- 决策条件落实情况
const TzTzjzJcpfyj = sequelize.define('TzTzjzJcpfyj', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
// projectName: {
// type: DataTypes.STRING,
// comment: "项目名称"
// },
// tzglzt: {
// type: DataTypes.STRING,
// comment: "投资管理主体"
// },
// jcdw: {
// type: DataTypes.STRING,
// comment: "决策单位",
// },
// xdpfsj: {
// type: DataTypes.DATE,
// defaultValue: new Date(),
// get() {
// const rawValue = this.getDataValue('xdpfsj');
// return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
// }
// },
zyx: {
type: DataTypes.STRING,
comment: "重要性"
},
ssjd: {
type: DataTypes.STRING,
comment: "实施阶段"
},
pfnr: {
type: DataTypes.TEXT,
comment: "批复内容"
},
pfyjlsqkjtsm: {
type: DataTypes.TEXT,
comment: "批复意见落实情况具体说明"
},
lszxqk: {
type: DataTypes.TEXT,
comment: "落实(执行)情况"
},
wlsyy: {
type: DataTypes.TEXT,
comment: "未落实原因"
},
xybgzcs: {
type: DataTypes.TEXT,
comment: "下一步工作措施"
},
yjwcsj: {
type: DataTypes.DATE,
comment: "预计完成时间",
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
},
zrld: {
type: DataTypes.STRING,
comment: "责任领导"
},
zrbmjzrr: {
type: DataTypes.STRING,
comment: "责任部门及责任人"
},
sfgx: {
type: DataTypes.STRING,
comment: "是否更新"
},
bz: {
type: DataTypes.TEXT,
comment: "备注"
},
tzkzId: {
type: DataTypes.INTEGER,
comment: "所属投资控制主表id",
},
projectId: {
type: DataTypes.INTEGER,
comment: "所属项目ID",
},
del: {
type: DataTypes.INTEGER,
defaultValue: 0,
comment: "0 正常 1 删除"
},
createdAt: {
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
},
updatedAt: { // 同样处理 updatedAt
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
}
}, {
tableName: 'jt_tz_tzkzjcpfyj', // 指定表名(如果与模型名不同)
timestamps: true, // 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
TzTzjzJcpfyj.sync({
force: false,
// force: true ,//会删除已存在表并重新创建
// alter: true
})
.then(() => {
console.log('TzTzjzJcpfyj 表同步成功');
});
module.exports = TzTzjzJcpfyj;
\ No newline at end of file
const { DataTypes } = require('sequelize');
const sequelize = require('../index');
const moment = require('moment');
//投中管理-投资控制主表
const TzTzkz = sequelize.define('TzTzkz', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
projectName: {
type: DataTypes.STRING,
comment: "项目名称"
},
tzglzt: {
type: DataTypes.STRING,
comment: "投资管理主体"
},
jcdw: {
type: DataTypes.STRING,
comment: "决策单位",
},
xdpfsj: {
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('xdpfsj');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
},
qtjsmbzdpc: {
type: DataTypes.JSON,
comment: "其他建设目标重大偏差----文件上传",
},
projectId: {
type: DataTypes.INTEGER,
comment: "所属项目ID",
},
del: {
type: DataTypes.INTEGER,
defaultValue: 0,
comment: "0 正常 1 删除"
},
createdAt: {
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
},
updatedAt: { // 同样处理 updatedAt
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
}
}, {
tableName: 'jt_tz_tzkz', // 指定表名(如果与模型名不同)
timestamps: true, // 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
TzTzkz.sync({
force: false,
// force: true ,//会删除已存在表并重新创建
// alter: true
})
.then(() => {
console.log('TzTzkz 表同步成功');
});
module.exports = TzTzkz;
\ No newline at end of file
const { DataTypes } = require('sequelize');
const sequelize = require('../index');
const moment = require('moment');
// 投资控制---财务评价主要边界条件 投资收益
const TzTzkzCwpj = sequelize.define('TzTzkzCwpj', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
xh: {
type: DataTypes.STRING,
comment: "序号"
},
bjtj: {
type: DataTypes.STRING,
comment: "边界条件"
},
jc: {
type: DataTypes.STRING,
comment: "决策"
},
xz: {
type: DataTypes.STRING,
comment: "现状"
},
zycysm: {
type: DataTypes.TEXT,
comment: "主要差异说明",
},
tzkzId: {
type: DataTypes.INTEGER,
comment: "所属投资控制主表id",
},
projectId: {
type: DataTypes.INTEGER,
comment: "所属项目ID",
},
createdAt: {
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
},
updatedAt: { // 同样处理 updatedAt
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
}
}, {
tableName: 'jt_tz_tzkzcwpj', // 指定表名(如果与模型名不同)
timestamps: true, // 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
TzTzkzCwpj.sync({
// force: false,
// force: true ,//会删除已存在表并重新创建
// alter: true
})
.then(() => {
console.log('TzTzkzCwpj 表同步成功');
});
module.exports = TzTzkzCwpj;
\ No newline at end of file
const { DataTypes } = require('sequelize');
const sequelize = require('../index');
const moment = require('moment');
//投中管理-投资控制-投资额控制
const TzTzkzTzekz = sequelize.define('TzTzkzTzekz', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
xh: {
type: DataTypes.STRING,
comment: "序号",
},
xm: {
type: DataTypes.STRING,
comment: "项目",
},
zbgs: {
type: DataTypes.INTEGER,
comment: "招标估算",
},
jcgs: {
type: DataTypes.INTEGER,
comment: "决策估算",
},
pfgs: {
type: DataTypes.INTEGER,
comment: "批复估算",
},
pfgs: {
type: DataTypes.INTEGER,
comment: "批复概算",
},
tkjgs: {
type: DataTypes.INTEGER,
comment: "同口径概算",
},
pfys: {
type: DataTypes.INTEGER,
comment: "批复预算",
},
zbqy: {
type: DataTypes.INTEGER,
comment: "招标签约",
},
sqyc: {
type: DataTypes.INTEGER,
comment: "上期预测",
},
bqyc: {
type: DataTypes.INTEGER,
comment: "本期预测",
},
bqjsq: {
type: DataTypes.INTEGER,
comment: "本期-上期",
},
cysm: {
type: DataTypes.TEXT,
comment: "本期较上期差异原因说明",
},
bqsj: {
type: DataTypes.DATE,
comment: "本期时间",
},
sqsj: {
type: DataTypes.DATE,
comment: "上期时间",
},
tzkzId: {
type: DataTypes.INTEGER,
comment: "所属投资控制主表id",
},
projectId: {
type: DataTypes.INTEGER,
comment: "所属项目ID",
},
del: {
type: DataTypes.INTEGER,
defaultValue: 0,
comment: "0 正常 1 删除"
},
createdAt: {
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
},
updatedAt: { // 同样处理 updatedAt
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
}
}, {
tableName: 'jt_tz_tzkztzekz', // 指定表名(如果与模型名不同)
timestamps: true, // 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
TzTzkzTzekz.sync({
force: false,
// force: true ,//会删除已存在表并重新创建
// alter: true
})
.then(() => {
console.log('TzTzkzTzekz 表同步成功');
});
module.exports = TzTzkzTzekz;
\ No newline at end of file
const { DataTypes } = require('sequelize');
const sequelize = require('../index');
const moment = require('moment');
//投决计划---决策信息--财务评价--投决计划
const ProjectTjjh = sequelize.define('ProjectTjjh', {
//投资控制-投资收益指标变化对比表 投资收益
const TzTzkzTzsy = sequelize.define('TzTzkzTzsy', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
xh: { type: DataTypes.STRING, allowNull: true, comment: "序号" },
sjx: { type: DataTypes.STRING, allowNull: true, comment: "数据项" },
hj: { type: DataTypes.DECIMAL(19, 2), allowNull: true, comment: "数据项" },
sz: { type: DataTypes.JSON, allowNull: true, comment: "数值" },
rawNum: { type: DataTypes.INTEGER }, //行数
pjzb: { type: DataTypes.STRING, allowNull: true, comment: "评价指标" },
jczb: { type: DataTypes.STRING, comment: '决策指标' },
xzzb: { type: DataTypes.STRING, comment: '现状指标' },
tzkzId: {
type: DataTypes.INTEGER,
comment: "所属投资控制主表id",
},
projectId: {
type: DataTypes.INTEGER,
comment: "所属项目ID",
......@@ -40,19 +45,19 @@ const ProjectTjjh = sequelize.define('ProjectTjjh', {
}
}
}, {
tableName: 'jt_project_tzzjll', // 指定表名(如果与模型名不同)
tableName: 'jt_tz_tzkztzsy', // 指定表名(如果与模型名不同)
timestamps: true, // 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
ProjectTjjh.sync({
TzTzkzTzsy.sync({
force: false,
// force: true ,//会删除已存在表并重新创建
// alter: true
})
.then(() => {
console.log('ProjectTjjh 表同步成功');
console.log('TzTzkzTzsy 表同步成功');
});
module.exports = ProjectTjjh;
\ No newline at end of file
module.exports = TzTzkzTzsy;
\ No newline at end of file
const { DataTypes } = require('sequelize');
const sequelize = require('../index');
const moment = require('moment');
//投中管理-投资目标责任书
const TzTzmbzrs = sequelize.define('TzTzmbzrs', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
projectName: {
type: DataTypes.STRING,
},
tzzt: {
type: DataTypes.STRING,
comment: "投资主体",
},
xmdd: {
type: DataTypes.STRING,
comment: "项目地点",
},
xmkgrq: {
type: DataTypes.DATE,
get() {
const rawValue = this.getDataValue('xmkgrq');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
},
comment: "项目开工日期"
},
xmssqx: {
type: DataTypes.STRING,
comment: "项目实施期限",
},
zrswj: {
type: DataTypes.JSON,
comment: "责任书文件",
defaultValue: [],
},
chwj: {
type: DataTypes.JSON,
comment: "策划文件",
defaultValue: [],
},
jyglzrs: {
type: DataTypes.JSON,
comment: "经营管理责任书",
defaultValue: [],
},
projectId: {
type: DataTypes.INTEGER,
comment: "所属项目ID",
},
del: {
type: DataTypes.INTEGER,
defaultValue: 0,
comment: "0 正常 1 删除"
},
createdAt: {
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
},
updatedAt: { // 同样处理 updatedAt
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
}
}, {
tableName: 'jt_tz_tzmbzrs', // 指定表名(如果与模型名不同)
timestamps: true, // 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
TzTzmbzrs.sync({
force: false,
// force: true ,//会删除已存在表并重新创建
// alter: true
})
.then(() => {
console.log('TzTzmbzrs 表同步成功');
});
module.exports = TzTzmbzrs;
\ No newline at end of file
const { DataTypes } = require('sequelize');
const sequelize = require('../index');
const moment = require('moment');
//投中管理-投资目标责任书-考核指标
const TzTzmbzrsZb = sequelize.define('TzTzmbzrsZb', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
xh: {
type: DataTypes.STRING,
comment: "序号",
},
zbmc: {
type: DataTypes.STRING,
comment: "指标名称",
},
zbmbz: {
type: DataTypes.INTEGER,
comment: "指标目标值",
},
zbsjz: {
type: DataTypes.INTEGER,
comment: "指标实际值",
},
khjzf: {
type: DataTypes.INTEGER,
comment: "考核基准分",
},
khkf: {
type: DataTypes.INTEGER,
comment: "考核扣分",
},
khdf: {
type: DataTypes.INTEGER,
comment: "考核得分",
},
projectId: {
type: DataTypes.INTEGER,
comment: "所属项目ID",
},
del: {
type: DataTypes.INTEGER,
defaultValue: 0,
comment: "0 正常 1 删除"
},
createdAt: {
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
},
updatedAt: { // 同样处理 updatedAt
type: DataTypes.DATE,
defaultValue: new Date(),
get() {
const rawValue = this.getDataValue('createdAt');
return rawValue ? moment(rawValue).format('YYYY-MM-DD HH:mm:ss') : '';
}
}
}, {
tableName: 'jt_tz_tzmbzrs_zb', // 指定表名(如果与模型名不同)
timestamps: true, // 是否自动添加 createdAt 和 updatedAt 字段(覆盖全局设置)
});
// 同步模型到数据库(创建表)
TzTzmbzrsZb.sync({
// force: false,
// force: true ,//会删除已存在表并重新创建
alter: true
})
.then(() => {
console.log('TzTzmbzrsZb 表同步成功');
});
module.exports = TzTzmbzrsZb;
\ No newline at end of file
......@@ -4,6 +4,7 @@ const router = express.Router();
const projectController = require('../controller/projectController');
const projectTzController = require('../controller/projectTzController');
/**
* 项目相关
......@@ -31,16 +32,27 @@ router.post('/getProjectCwpj', projectController.getProjectCwpj);
router.post('/getProjectInfo', projectController.getProjectInfo);
router.post('/updateProject', projectController.updateProject);
router.post('/deleteProject', projectController.deleteProject);
router.post('/listProject', projectController.listProject);
// router.post('/updateProject', projectController.updateProject);
// router.post('/deleteProject', projectController.deleteProject);
// router.post('/listProject', projectController.listProject);
router.post('/exportExcel', projectController.exportExcel);
// router.post('/exportExcel', projectController.exportExcel);
router.post('/preJugProject', projectController.preJugProject); //初审
router.post('/finalJugProject', projectController.finalJugProject); //终审 --暂时没有
// router.post('/preJugProject', projectController.preJugProject); //初审
// router.post('/finalJugProject', projectController.finalJugProject); //终审 --暂时没有
router.post('/getOwnProjects', projectController.getOwnProjects);
// router.post('/getOwnProjects', projectController.getOwnProjects);
/**
* 投中管理
*/
//目标责任书
router.post('/createTzmbzrs', projectTzController.createTzmbzrs);
router.post('/updateTzmbzrs', projectTzController.updateTzmbzrs);
router.post('/getTzmbzrsList', projectTzController.getTzmbzrsList);
router.post('/getTzmbzrsInfo', projectTzController.getTzmbzrsInfo);
......
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