// 获取合同预览信息
function getContractPreview(contractInfo) {
    // 合同附件
    var contractAttachments = [];
    if (contractInfo.attachments) {
        for (var i = 0; i < contractInfo.attachments.length; i++) {
            contractAttachments.push({
                name: contractInfo.attachments[i].name,
                url: contractInfo.attachments[i].url
            });
        }
    }

    // 合同附件
    var contractEnclosures = [];
    if (contractInfo.enclosures) {
        for (var i = 0; i < contractInfo.enclosures.length; i++) {
            contractEnclosures.push({
                name: contractInfo.enclosures[i].name,
                url: contractInfo.enclosures[i].url
            });
        }
    }

    // 获取合同预览信息
    var contractPreview = {
        agreement: contractInfo.agreement,
        attachment: contractAttachments,
        enclosure: contractEnclosures
    };

    return contractPreview;
}

// 签署合同
exports.signContract = function (req, res) {

    // 接受参数
    var params = req.body;

    // 参数校验
    if (!params.contractId || params.contractId.length == 0) {
        return res.json(ResponseUtil.resp(ResponseUtil.ERROR_PARAMS));
    }

    // 查询合同信息
    Contract.findById(params.contractId, function (err, contract) {
        if (err) {
            return res.json(ResponseUtil.resp(ResponseUtil.SERVER_ERROR));
        }

        // 校验合同状态
        if (contract.status != 0) {
            return res.json(ResponseUtil.resp(ResponseUtil.CONTRACT_STATUS_INVALID));
        }

        // 调用签署合同接口
        signContract(contract.agreement, contract.contractorType, contract.contractorId, function (err, result) {
            if (err) {
                return res.json(ResponseUtil.resp(ResponseUtil.SERVER_ERROR));
            }

            // 更新合同信息
            contract.status = 1;
            contract.signature = result.signature;
            contract.signatureImg = result.signatureImg;
            contract.signatureTime = result.signatureTime;
            contract.save(function (err, result) {
                if (err) {
                    return res.json(ResponseUtil.resp(ResponseUtil.SERVER_ERROR));
                }

                return res.json(ResponseUtil.resp(ResponseUtil.SUCCESS));
            });
        });
    });
};

// 查询合同签署状态
exports.querySignStatus = function (req, res) {
    // 接受参数
    var params = req.body;

    // 参数校验
    if (!params.contractId || params.contractId.length == 0) {
        return res.json(ResponseUtil.resp(ResponseUtil.ERROR_PARAMS));
    }

    // 查询合同信息
    Contract.findById(params.contractId, function (err, contract) {
        if (err) {
            return res.json(ResponseUtil.resp(ResponseUtil.SERVER_ERROR));
        }

        // 校验合同状态
        if (contract.status != 0 && contract.status != 1) {
            return res.json(ResponseUtil.resp(ResponseUtil.CONTRACT_STATUS_INVALID));
        }

        // 合同状态
        var status = 0;
        if (contract.status == 0) {
            status = 0;
        } else if (contract.status == 1) {
            status = 1;
        }

        var result = {
            status: status
        };
        return res.json(ResponseUtil.resp(ResponseUtil.SUCCESS, result));
    });
};

// 查询合同内容
exports.queryContractInfo = function (req, res) {
    // 接受参数
    var params = req.body;

    // 参数校验
    if (!params.contractId || params.contractId.length == 0) {
        return res.json(ResponseUtil.resp(ResponseUtil.ERROR_PARAMS));
    }

    // 查询合同信息
    Contract.findById(params.contractId, function (err, contract) {
        if (err) {
            return res.json(ResponseUtil.resp(ResponseUtil.SERVER_ERROR));
        }

        // 校验合同状态
        if (contract.status != 1) {
            return res.json(ResponseUtil.resp(ResponseUtil.CONTRACT_STATUS_INVALID));
        }

        // 获取合同预览信息
        var contractPreview = getContractPreview(contract);

        // 返回结果
        var result = {
            preview: contractPreview
        };
        return res.json(ResponseUtil.resp(ResponseUtil.SUCCESS, result));
    });
};
合同附件、签署和状态查询接口

原文地址: https://www.cveoy.top/t/topic/li25 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录