|  | @@ -956,150 +956,213 @@
 | 
	
		
			
				|  |  |      const accountList = JSON.parse(unescape('<%- escape(JSON.stringify(accountList)) %>'));
 | 
	
		
			
				|  |  |      const cur_uid = parseInt('<%- ctx.session.sessionUser.accountId %>');
 | 
	
		
			
				|  |  |      const csrf = '<%= ctx.csrf %>';
 | 
	
		
			
				|  |  | -    $('.sp-location-list').on('shown.bs.modal', function () {
 | 
	
		
			
				|  |  | -        const scrollBox = $(this).find('div[class="col-8 modal-height-500"]');
 | 
	
		
			
				|  |  | -        const bdiv = (scrollBox.offset() && scrollBox.offset().top) || 0;
 | 
	
		
			
				|  |  | -        scrollBox.scrollTop(0);
 | 
	
		
			
				|  |  | -        const hdiv = divSearch($(this).find('textarea')) ? $(this).find('textarea') : null;
 | 
	
		
			
				|  |  | -        const hdheight = hdiv ? hdiv.parents('.timeline-item-content').offset().top : null;
 | 
	
		
			
				|  |  | -        if (hdiv && scrollBox.length && scrollBox[0].scrollHeight > 200 && hdheight - bdiv > 200) {
 | 
	
		
			
				|  |  | -            scrollBox.scrollTop(hdheight - bdiv);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    function divSearch(div) {
 | 
	
		
			
				|  |  | -        if (div.length > 0) {
 | 
	
		
			
				|  |  | -            return true;
 | 
	
		
			
				|  |  | +    const authMobile = '<%= authMobile %>';
 | 
	
		
			
				|  |  | +    $(function () {
 | 
	
		
			
				|  |  | +        $('.sp-location-list').on('shown.bs.modal', function () {
 | 
	
		
			
				|  |  | +            const scrollBox = $(this).find('div[class="col-8 modal-height-500"]');
 | 
	
		
			
				|  |  | +            const bdiv = (scrollBox.offset() && scrollBox.offset().top) || 0;
 | 
	
		
			
				|  |  | +            scrollBox.scrollTop(0);
 | 
	
		
			
				|  |  | +            const hdiv = divSearch($(this).find('textarea')) ? $(this).find('textarea') : null;
 | 
	
		
			
				|  |  | +            const hdheight = hdiv ? hdiv.parents('.timeline-item-content').offset().top : null;
 | 
	
		
			
				|  |  | +            if (hdiv && scrollBox.length && scrollBox[0].scrollHeight > 200 && hdheight - bdiv > 200) {
 | 
	
		
			
				|  |  | +                scrollBox.scrollTop(hdheight - bdiv);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        function divSearch(div) {
 | 
	
		
			
				|  |  | +            if (div.length > 0) {
 | 
	
		
			
				|  |  | +                return true;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return false;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // 展开历史审核记录
 | 
	
		
			
				|  |  | -    $('.modal-body #fold-btn').click(function () {
 | 
	
		
			
				|  |  | -        const type = $(this).data('target')
 | 
	
		
			
				|  |  | -        const auditCard = $(this).parent().parent()
 | 
	
		
			
				|  |  | -        if (type === 'show') {
 | 
	
		
			
				|  |  | -            $(this).data('target', 'hide')
 | 
	
		
			
				|  |  | -            auditCard.find('.fold-card').slideDown('swing', () => {
 | 
	
		
			
				|  |  | -                auditCard.find('#fold-btn').text('收起历史审核记录')
 | 
	
		
			
				|  |  | -            })
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -            $(this).data('target', 'show')
 | 
	
		
			
				|  |  | -            auditCard.find('.fold-card').slideUp('swing', () => {
 | 
	
		
			
				|  |  | -                auditCard.find('#fold-btn').text('展开历史审核记录')
 | 
	
		
			
				|  |  | -            })
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | +        // 展开历史审核记录
 | 
	
		
			
				|  |  | +        $('.modal-body #fold-btn').click(function () {
 | 
	
		
			
				|  |  | +            const type = $(this).data('target')
 | 
	
		
			
				|  |  | +            const auditCard = $(this).parent().parent()
 | 
	
		
			
				|  |  | +            if (type === 'show') {
 | 
	
		
			
				|  |  | +                $(this).data('target', 'hide')
 | 
	
		
			
				|  |  | +                auditCard.find('.fold-card').slideDown('swing', () => {
 | 
	
		
			
				|  |  | +                    auditCard.find('#fold-btn').text('收起历史审核记录')
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                $(this).data('target', 'show')
 | 
	
		
			
				|  |  | +                auditCard.find('.fold-card').slideUp('swing', () => {
 | 
	
		
			
				|  |  | +                    auditCard.find('#fold-btn').text('展开历史审核记录')
 | 
	
		
			
				|  |  | +                })
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    $('.sp-list-btn').click(function () {
 | 
	
		
			
				|  |  | -        const type = $(this).data('type')
 | 
	
		
			
				|  |  | -        if (type === 'hide') {
 | 
	
		
			
				|  |  | -            $('.sp-list-item').hide()
 | 
	
		
			
				|  |  | -            $('.modal-title').text('审批流程')
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -            $('.sp-list-item').show()
 | 
	
		
			
				|  |  | -            $('.modal-title').text('重新上报')
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | +        $('.sp-list-btn').click(function () {
 | 
	
		
			
				|  |  | +            const type = $(this).data('type')
 | 
	
		
			
				|  |  | +            if (type === 'hide') {
 | 
	
		
			
				|  |  | +                $('.sp-list-item').hide()
 | 
	
		
			
				|  |  | +                $('.modal-title').text('审批流程')
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                $('.sp-list-item').show()
 | 
	
		
			
				|  |  | +                $('.modal-title').text('重新上报')
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    $('#re-shenpi-btn').click(function () {
 | 
	
		
			
				|  |  | -        const data = {
 | 
	
		
			
				|  |  | -            cpid: parseInt('<%- ctx.change.id %>'),
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | +        $('#re-shenpi-btn').click(function () {
 | 
	
		
			
				|  |  | +            const data = {
 | 
	
		
			
				|  |  | +                cpid: parseInt('<%- ctx.change.id %>'),
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +            <% if (ctx.session.sessionUser.loginStatus === 0) { %>
 | 
	
		
			
				|  |  | +            const code = $("#againForm input[name='code']").val();
 | 
	
		
			
				|  |  | +            if ($(this).hasClass('disabled')) {
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (code.length < 6) {
 | 
	
		
			
				|  |  | +                // alert('请填写正确的验证码');
 | 
	
		
			
				|  |  | +                toastr.error('请填写正确的验证码');
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            data.code = code;
 | 
	
		
			
				|  |  | +            <% } %>
 | 
	
		
			
				|  |  | +            $.ajax({
 | 
	
		
			
				|  |  | +                url: '/tender/<%- tender.id %>/change/project/check/again?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | +                type: 'post',
 | 
	
		
			
				|  |  | +                data: data,
 | 
	
		
			
				|  |  | +                dataTye: 'json',
 | 
	
		
			
				|  |  | +                success: function(response) {
 | 
	
		
			
				|  |  | +                    if (response.err === 0) {
 | 
	
		
			
				|  |  | +                        window.location.href = response.url;
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        toastr.error(response.msg);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |          <% if (ctx.session.sessionUser.loginStatus === 0) { %>
 | 
	
		
			
				|  |  | -        const code = $("#againForm input[name='code']").val();
 | 
	
		
			
				|  |  | -        if ($(this).hasClass('disabled')) {
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (code.length < 6) {
 | 
	
		
			
				|  |  | -            // alert('请填写正确的验证码');
 | 
	
		
			
				|  |  | -            toastr.error('请填写正确的验证码');
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        data.code = code;
 | 
	
		
			
				|  |  | -        <% } %>
 | 
	
		
			
				|  |  | -        $.ajax({
 | 
	
		
			
				|  |  | -            url: '/tender/<%- tender.id %>/change/project/check/again?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | -            type: 'post',
 | 
	
		
			
				|  |  | -            data: data,
 | 
	
		
			
				|  |  | -            dataTye: 'json',
 | 
	
		
			
				|  |  | -            success: function(response) {
 | 
	
		
			
				|  |  | -                if (response.err === 0) {
 | 
	
		
			
				|  |  | -                    window.location.href = response.url;
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    toastr.error(response.msg);
 | 
	
		
			
				|  |  | +        // 重新审批获取手机验证码
 | 
	
		
			
				|  |  | +        // 获取验证码
 | 
	
		
			
				|  |  | +        let isPosting = false;
 | 
	
		
			
				|  |  | +        $("#get-code").click(function() {
 | 
	
		
			
				|  |  | +            if (isPosting) {
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            const btn = $(this);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            $.ajax({
 | 
	
		
			
				|  |  | +                url: '/profile/code?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | +                type: 'post',
 | 
	
		
			
				|  |  | +                data: { mobile: authMobile, type: 'shenpi' },
 | 
	
		
			
				|  |  | +                dataTye: 'json',
 | 
	
		
			
				|  |  | +                error: function() {
 | 
	
		
			
				|  |  | +                    isPosting = false;
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                beforeSend: function() {
 | 
	
		
			
				|  |  | +                    isPosting = true;
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                success: function(response) {
 | 
	
		
			
				|  |  | +                    isPosting = false;
 | 
	
		
			
				|  |  | +                    if (response.err === 0) {
 | 
	
		
			
				|  |  | +                        codeSuccess(btn);
 | 
	
		
			
				|  |  | +                        $("input[name='code']").removeAttr('readonly');
 | 
	
		
			
				|  |  | +                        $("#re-shenpi-btn").removeAttr('disabled');
 | 
	
		
			
				|  |  | +                        $("#re-shenpi-btn2").removeAttr('disabled');
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        toastr.error(response.msg);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        <% } %>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        $('#re-shenpi-btn2').click(function () {
 | 
	
		
			
				|  |  | +            const data = {
 | 
	
		
			
				|  |  | +                cpid: parseInt('<%- ctx.change.id %>'),
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +            <% if (ctx.session.sessionUser.loginStatus === 0) { %>
 | 
	
		
			
				|  |  | +            const code = $("#reviseForm input[name='code']").val();
 | 
	
		
			
				|  |  | +            if ($(this).hasClass('disabled')) {
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (code.length < 6) {
 | 
	
		
			
				|  |  | +                // alert('请填写正确的验证码');
 | 
	
		
			
				|  |  | +                toastr.error('请填写正确的验证码');
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            data.code = code;
 | 
	
		
			
				|  |  | +            <% } %>
 | 
	
		
			
				|  |  | +            $.ajax({
 | 
	
		
			
				|  |  | +                url: '/tender/<%- tender.id %>/change/project/check/revise?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | +                type: 'post',
 | 
	
		
			
				|  |  | +                data: data,
 | 
	
		
			
				|  |  | +                dataTye: 'json',
 | 
	
		
			
				|  |  | +                success: function(response) {
 | 
	
		
			
				|  |  | +                    if (response.err === 0) {
 | 
	
		
			
				|  |  | +                        window.location.href = response.url;
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        toastr.error(response.msg);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    $('#re-shenpi-btn2').click(function () {
 | 
	
		
			
				|  |  | -        const data = {
 | 
	
		
			
				|  |  | -            cpid: parseInt('<%- ctx.change.id %>'),
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | -        <% if (ctx.session.sessionUser.loginStatus === 0) { %>
 | 
	
		
			
				|  |  | -        const code = $("#reviseForm input[name='code']").val();
 | 
	
		
			
				|  |  | -        if ($(this).hasClass('disabled')) {
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (code.length < 6) {
 | 
	
		
			
				|  |  | -            // alert('请填写正确的验证码');
 | 
	
		
			
				|  |  | -            toastr.error('请填写正确的验证码');
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        data.code = code;
 | 
	
		
			
				|  |  | -        <% } %>
 | 
	
		
			
				|  |  | -        $.ajax({
 | 
	
		
			
				|  |  | -            url: '/tender/<%- tender.id %>/change/project/check/revise?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | -            type: 'post',
 | 
	
		
			
				|  |  | -            data: data,
 | 
	
		
			
				|  |  | -            dataTye: 'json',
 | 
	
		
			
				|  |  | -            success: function(response) {
 | 
	
		
			
				|  |  | -                if (response.err === 0) {
 | 
	
		
			
				|  |  | -                    window.location.href = response.url;
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    toastr.error(response.msg);
 | 
	
		
			
				|  |  | +        $('#cancel-revise-btn').click(function () {
 | 
	
		
			
				|  |  | +            const data = {
 | 
	
		
			
				|  |  | +                cpid: parseInt('<%- ctx.change.id %>'),
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +            $.ajax({
 | 
	
		
			
				|  |  | +                url: '/tender/<%- tender.id %>/change/project/cancel/revise?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | +                type: 'post',
 | 
	
		
			
				|  |  | +                data: data,
 | 
	
		
			
				|  |  | +                dataTye: 'json',
 | 
	
		
			
				|  |  | +                success: function(response) {
 | 
	
		
			
				|  |  | +                    if (response.err === 0) {
 | 
	
		
			
				|  |  | +                        window.location.href = response.url;
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        toastr.error(response.msg);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    $('#cancel-revise-btn').click(function () {
 | 
	
		
			
				|  |  | -        const data = {
 | 
	
		
			
				|  |  | -            cpid: parseInt('<%- ctx.change.id %>'),
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | -        $.ajax({
 | 
	
		
			
				|  |  | -            url: '/tender/<%- tender.id %>/change/project/cancel/revise?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | -            type: 'post',
 | 
	
		
			
				|  |  | -            data: data,
 | 
	
		
			
				|  |  | -            dataTye: 'json',
 | 
	
		
			
				|  |  | -            success: function(response) {
 | 
	
		
			
				|  |  | -                if (response.err === 0) {
 | 
	
		
			
				|  |  | -                    window.location.href = response.url;
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    toastr.error(response.msg);
 | 
	
		
			
				|  |  | +        <% if (ctx.change && ctx.change.cancancel) { %>
 | 
	
		
			
				|  |  | +        $("#cancel-shenpi-btn").click(function () {
 | 
	
		
			
				|  |  | +            const data = {
 | 
	
		
			
				|  |  | +                cpid: parseInt('<%- ctx.change.id %>'),
 | 
	
		
			
				|  |  | +            };
 | 
	
		
			
				|  |  | +            $.ajax({
 | 
	
		
			
				|  |  | +                url: '/tender/<%- tender.id %>/change/project/cancel/audit?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | +                type: 'post',
 | 
	
		
			
				|  |  | +                data: data,
 | 
	
		
			
				|  |  | +                dataTye: 'json',
 | 
	
		
			
				|  |  | +                success: function (response) {
 | 
	
		
			
				|  |  | +                    if (response.err === 0) {
 | 
	
		
			
				|  |  | +                        window.location.href = response.url;
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        toastr.error(response.msg);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | +        <% } %>
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 获取成功后的操作
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param {Object} btn - 点击的按钮
 | 
	
		
			
				|  |  | +     * @return {void}
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    function codeSuccess(btn) {
 | 
	
		
			
				|  |  | +        let counter = 60;
 | 
	
		
			
				|  |  | +        btn.addClass('disabled').text('重新获取 ' + counter + 'S');
 | 
	
		
			
				|  |  | +        btn.parent().siblings('input').removeAttr('readonly').attr('placeholder', '输入短信中的6位验证码');
 | 
	
		
			
				|  |  | +        const bindBtn = $("#bind-btn");
 | 
	
		
			
				|  |  | +        bindBtn.removeClass('btn-secondary disabled').addClass('btn-primary');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    <% if (ctx.change && ctx.change.cancancel) { %>
 | 
	
		
			
				|  |  | -    $("#cancel-shenpi-btn").click(function () {
 | 
	
		
			
				|  |  | -        const data = {
 | 
	
		
			
				|  |  | -            cpid: parseInt('<%- ctx.change.id %>'),
 | 
	
		
			
				|  |  | -        };
 | 
	
		
			
				|  |  | -        $.ajax({
 | 
	
		
			
				|  |  | -            url: '/tender/<%- tender.id %>/change/project/cancel/audit?_csrf_j=' + csrf,
 | 
	
		
			
				|  |  | -            type: 'post',
 | 
	
		
			
				|  |  | -            data: data,
 | 
	
		
			
				|  |  | -            dataTye: 'json',
 | 
	
		
			
				|  |  | -            success: function (response) {
 | 
	
		
			
				|  |  | -                if (response.err === 0) {
 | 
	
		
			
				|  |  | -                    window.location.href = response.url;
 | 
	
		
			
				|  |  | -                } else {
 | 
	
		
			
				|  |  | -                    toastr.error(response.msg);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | +        const countDown = setInterval(function() {
 | 
	
		
			
				|  |  | +            const countString = counter - 1 <= 0 ? '' : ' ' + (counter - 1) + 'S';
 | 
	
		
			
				|  |  | +            // 倒数结束后
 | 
	
		
			
				|  |  | +            if (countString === '') {
 | 
	
		
			
				|  |  | +                clearInterval(countDown);
 | 
	
		
			
				|  |  | +                btn.removeClass('disabled');
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    <% } %>
 | 
	
		
			
				|  |  | +            const text = '重新获取' + countString;
 | 
	
		
			
				|  |  | +            btn.text(text);
 | 
	
		
			
				|  |  | +            counter -= 1;
 | 
	
		
			
				|  |  | +        }, 1000);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  </script>
 |