فهرست منبع

2.1.0 变更令内容修改 no.3 up

likeku 7 سال پیش
والد
کامیت
670d7bb9d7

+ 12 - 4
201to210.sql

@@ -11,6 +11,7 @@ CREATE TABLE `jl_change` (
   `pmid` int(11) NOT NULL COMMENT '对应的标段id',
   `uid` int(11) NOT NULL COMMENT '创建人id',
   `pnum` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '申请编号',
+  `bnum` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '批复编号',
   `pname` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '工程名称',
   `mnum` varchar(100) COLLATE utf8_unicode_ci NOT NULL COMMENT '桩号',
   `odname` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '原设计图名称',
@@ -27,6 +28,7 @@ CREATE TABLE `jl_change` (
   `bear` tinyint(4) NOT NULL COMMENT '费用承担方,1为业主,2为承包方',
   `totalamount` double UNSIGNED NOT NULL COMMENT '变更总金额',
   `times` tinyint(4) NOT NULL DEFAULT '0' COMMENT '次数',
+  `decimalnum` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '2_3' COMMENT '金额和数量小数位数,以_分隔',
   `status` enum('uncheck','checking','checked','checkno','back') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'uncheck' COMMENT '变更令状态',
   `intime` varchar(15) COLLATE utf8_unicode_ci NOT NULL COMMENT '添加时间',
   `cintime` varchar(15) COLLATE utf8_unicode_ci NOT NULL COMMENT '变更状态发生时间',
@@ -109,7 +111,9 @@ CREATE TABLE `jl_change_audit_list` (
 
 CREATE TABLE `jl_change_company` (
   `id` int(11) NOT NULL,
-  `cid` int(11) NOT NULL COMMENT '对应的变更令id',
+  `pid` int(11) NOT NULL COMMENT '项目id',
+  `stid` int(11) NOT NULL COMMENT '标段类型id',
+  `pmid` int(11) NOT NULL COMMENT '标段id',
   `name` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '名称',
   `csort` int(11) NOT NULL COMMENT '排序'
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='变更令单位表';
@@ -216,6 +220,10 @@ ALTER TABLE `jl_change_company`
 ALTER TABLE `jl_change_list`
   MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;COMMIT;
 
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+
+--
+-- 添加 `cdecimalnum` 字段到 `jl_project_measure` 中
+--
+ALTER TABLE `jl_project_measure` ADD `cdecimalnum` VARCHAR(20) NOT NULL DEFAULT '2_3' COMMENT '针对变更令标段的金额与数量小数位数设置,以_分隔' AFTER `intime`;
+
+

+ 31 - 43
global/css/style.css

@@ -101,7 +101,7 @@ div.userInfo .btn-group .dropdown-menu{
 }
 .mainSidebar ul{
   border-bottom:1px solid #535353;
-  padding: 0;
+  padding:0
 }
 .mainSidebar li{
   text-align:center;
@@ -157,7 +157,7 @@ div.userInfo .btn-group .dropdown-menu{
   font-size:20px;
   color:#333;
   font-weight:normal;
-  margin-top: 10px;
+  margin-top: 10px
 }
 .mainContent .title {
   padding:10px 0 0 0;
@@ -799,7 +799,7 @@ left:5px
   margin:0;
   line-height:14px;
   padding:3px 5px 0 10px;
-  color:#666;
+  color:666;
   display:none
 }
 .groupEntry .avatar li.count{
@@ -892,7 +892,7 @@ left:5px
   border-top:5px solid #CFD37A;
 }
 .wrapLogin .loginPanel .tpa{
-  text-align: right;
+  text-align: center;
   margin:0 0 5px 0
 }
 .wrapLogin .loginPanel{
@@ -918,8 +918,8 @@ left:5px
   width:140px;
   padding:10px 10px 10px 0;
 }
-.adminSidebar ul {
-  padding: 0;
+.adminSidebar ul{
+  padding:0
 }
 .adminSidebar li{
   margin:0 0 1px 0
@@ -1012,7 +1012,7 @@ left:5px
   padding:0;
 }
 .signContent .title{
-  padding:0 30px;
+  padding:0 20px;
   border-bottom:1px solid #ddd
 }
 .sign-avatars span{
@@ -1067,23 +1067,14 @@ left:5px
   overflow-y: auto;
 }
 .sign-content .page{
-  margin:0 auto;
-  width:1085px;
   border: 9px solid transparent;
   position: relative;
   overflow: hidden;
-  box-sizing: content-box;
-}
-.warp-printer .page{
-  margin:0 auto;
-  width:1085px;
-  border: 9px solid transparent;
-  position: relative;
-  overflow: hidden;
-  box-sizing: content-box;
+  text-align: center
 }
 .sign-side{
   width:220px;
+  overflow: auto;
 }
 .sign-side .view-info{
   border-bottom:1px solid #ddd
@@ -1103,9 +1094,6 @@ left:5px
   width:60px;
   color:#999
 }
-.signed-list{
-  overflow-y: auto;
-}
 .signed-list li{
   height:68px;
   line-height:48px;
@@ -1143,15 +1131,13 @@ left:5px
   top:10%;
   left:10%;
   z-index: 999;
-  width:300px;
-  height: 150px;
+  width:300px
 }
 .user-sign .focus{
   background:rgba(255,0,0,0.1);
 }
 .user-sign img{
-  /*width:inherit;*/
-  width: 100%;
+  width:inherit;
 }
 .user-sign .img-bar {
   background:#ddd;
@@ -1159,13 +1145,12 @@ left:5px
   position: absolute;
   right:0;
   top:0;
-  /*display:none;*/
+  display:none;
+}
+.user-sign:hover .img-bar{
+  display: block;
 }
-/*.user-sign:hover .img-bar{*/
-  /*display: block;*/
-/*}*/
-.draggable{
-  display: none;
+#draggable{
   cursor: move;
 }
 .user-sign .img-bar a{
@@ -1189,6 +1174,14 @@ left:5px
   float:right;
   margin-right:10px
 }
+.ueser-sign-view {
+  position:relative;
+}
+.ueser-sign-view .user-sign{
+  position: absolute;
+  left:100px;
+  top:100px
+}
 .app-code-item {
   background:url(phone.png) no-repeat 0 0;
   margin:20px 0 0 100px;
@@ -1201,23 +1194,20 @@ left:5px
 .android-code{
   margin:40px 0 80px 0
 }
-/*.android-code h1{*/
-  /*background:url(phone-icon.png) no-repeat 0 0;*/
-  /*color:#A4C639*/
-/*}*/
-/*.ios-code h1{*/
-  /*background:url(phone-icon.png) no-repeat 0 -50px;*/
-  /*color:#999999*/
-/*}*/
 .code-img{
   padding-left:40px
 }
 .form-group .necessary {
-  color: #f90000;
+    color: #f90000;
 }
 .bg-con-warp{
   margin-bottom:50px
 }
+.bg-con-warp .legend-label{
+  font-size: 12px;
+  font-weight: normal;
+  float: right;
+}
 .bg-top-btn {
   right:30px;
   z-index: 999
@@ -1225,7 +1215,6 @@ left:5px
 .bg-nav > li.active > a,.bg-nav > li.active > a:hover{
   background-color: #666
 }
-
 .progress .progress-bar-gary {
   background-color: #bbb;
   background-image: -moz-linear-gradient(top, #ccc, #bbb);
@@ -1236,7 +1225,6 @@ left:5px
   background-repeat: repeat-x;
   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ccc', endColorstr='#bbb', GradientType=0);
 }
-
 .alert-pnone{
   padding:0 15px !important;
-}
+}

+ 81 - 0
global/js/jlzf-calculation.js

@@ -0,0 +1,81 @@
+//本js引入是为了浮点小数运算结果不精确bug的办法,来源: http://blog.csdn.net/yao_jing/article/details/50778011
+
+//除法函数,用来得到精确的除法结果
+//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
+//调用:accDiv(arg1,arg2)
+//返回值:arg1除以arg2的精确结果
+function accDiv(arg1,arg2){
+    var t1=0,t2=0,r1,r2;
+    try{t1=arg1.toString().split(".")[1].length}catch(e){}
+    try{t2=arg2.toString().split(".")[1].length}catch(e){}
+    with(Math){
+        r1=Number(arg1.toString().replace(".",""));
+        r2=Number(arg2.toString().replace(".",""));
+        return (r1/r2)*pow(10,t2-t1);
+    }
+}
+//给Number类型增加一个div方法,调用起来更加方便。
+Number.prototype.div = function (arg){
+    return accDiv(this, arg);
+};
+//乘法函数,用来得到精确的乘法结果
+//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
+//调用:accMul(arg1,arg2)
+//返回值:arg1乘以arg2的精确结果
+function accMul(arg1,arg2)
+{
+    var m=0,s1=arg1.toString(),s2=arg2.toString();
+    try{m+=s1.split(".")[1].length}catch(e){}
+    try{m+=s2.split(".")[1].length}catch(e){}
+    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
+}
+//给Number类型增加一个mul方法,调用起来更加方便。
+Number.prototype.mul = function (arg){
+    return accMul(arg, this);
+};
+//加法函数,用来得到精确的加法结果
+//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
+//调用:accAdd(arg1,arg2)
+//返回值:arg1加上arg2的精确结果
+function accAdd(arg1,arg2){
+    var r1,r2,m,c;
+    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
+    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
+    c=Math.abs(r1-r2);
+    m=Math.pow(10,Math.max(r1,r2));
+    if(c>0){
+        var cm=Math.pow(10,c);
+        if(r1>r2){
+            arg1=Number(arg1.toString().replace(".",""));
+            arg2=Number(arg2.toString().replace(".",""))*cm;
+        }else{
+            arg1=Number(arg1.toString().replace(".",""))*cm;
+            arg2=Number(arg2.toString().replace(".",""));
+        }
+    } else {
+        arg1=Number(arg1.toString().replace(".",""));
+        arg2=Number(arg2.toString().replace(".",""));
+    }
+    return (arg1+arg2)/m;
+    //return (arg1*m+arg2*m)/m;
+}
+//给Number类型增加一个add方法,调用起来更加方便。
+Number.prototype.add = function (arg){
+    return accAdd(arg,this);
+};
+//减法函数
+function accSub(arg1,arg2){
+    var r1,r2,m,n;
+    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
+    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
+    m=Math.pow(10,Math.max(r1,r2));
+    //last modify by deeka
+    //动态控制精度长度
+    n=(r1>=r2)?r1:r2;
+    return ((arg2*m-arg1*m)/m).toFixed(n);
+}
+///给number类增加一个sub方法,调用起来更加方便
+Number.prototype.sub = function (arg){
+    return accSub(arg,this);
+
+};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 51 - 450
global/js/jlzf-change-new.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
global/js/jlzf-change-new.min.js


+ 588 - 6
global/js/jlzf-change-pnumset.js

@@ -1,4 +1,53 @@
+$.event.special.valuechange = {
+    teardown: function (namespaces) {
+        $(this).unbind('.valuechange');
+    },
+
+    handler: function (e) {
+        $.event.special.valuechange.triggerChanged($(this));
+    },
+
+    add: function (obj) {
+        $(this).on('keyup.valuechange cut.valuechange paste.valuechange input.valuechange', obj.selector, $.event.special.valuechange.handler)
+    },
+
+    triggerChanged: function (element) {
+        var current = element[0].contentEditable === 'true' ? element.html() : element.val()
+            , previous = typeof element.data('previous') === 'undefined' ? element[0].defaultValue : element.data('previous');
+        if (current !== previous) {
+            element.trigger('valuechange', [element.data('previous')]);
+            element.data('previous', current);
+        }
+    }
+};
+
+function escapeTags( str ) {
+    return String( str )
+        .replace( /&/g, '&' )
+        .replace( /"/g, '"' )
+        .replace( /'/g, ''' )
+        .replace( /</g, '&lt;' )
+        .replace( />/g, '&gt;' );
+}
+
 $(function(){
+    toastr.options = {
+        "closeButton": false,
+        "debug": false,
+        "newestOnTop": false,
+        "progressBar": false,
+        "positionClass": "toast-top-right",
+        "preventDuplicates": false,
+        "onclick": null,
+        "showDuration": "300",
+        "hideDuration": "1000",
+        "timeOut": "5000",
+        "extendedTimeOut": "1000",
+        "showEasing": "swing",
+        "hideEasing": "linear",
+        "showMethod": "fadeIn",
+        "hideMethod": "fadeOut"
+    };
     //重置申请编号
     $('#resetnumber').click(function(){
         $('#pnum').val($(this).attr('data-num'));
@@ -9,7 +58,7 @@ $(function(){
         var str1 = $('#pnum').val();
         $('#numhtmlshow').html('');
         if(str1.trim() !== ''){
-            var match1 = /(?!\d{3,6})(\D|\d)|\d{3,6}/g;
+            var match1 = /(?!\d{3,6})(\D|\d)|19\d{2}|20\d{2}|\d{3,6}/g;
             var result = str1.match(match1);
             var arr = new Array();
             var j = 0;
@@ -77,6 +126,8 @@ $(function(){
     $('#numsite').on("valuechange", function (e, previous) {
         if($(this).val() == '' || parseInt($(this).val()) > 6 || parseInt($(this).val()) <3){
             toastr.error('请输入编号位数区间在3到6位');
+            $(this).val(3);
+            $('#setnumber').val('001');
             return false;
         }else{
             var num = parseInt($(this).val());
@@ -88,13 +139,372 @@ $(function(){
     $('#setcnum').click(function(){
         var cnum = '';
         $('#numhtmlshow span').each(function(){
-            cnum += $(this).text().trim();
+            cnum += $.trim($(this).text());
         });
         $('#pnum').val(cnum);
         $('#autonumber').modal('hide');
     });
-    //根据位数生成编号,3位-》001 ,5位-》00001
-    function makenum(num){
+
+    //new and update same method
+
+    //提出单位编辑
+    $('#addcompany').click(function(){
+        var newinput = '<div class="form-group"><input type="text" class="form-control" placeholder="请输入公司名称"></div>';
+        $('#companyadddiv').append(newinput);
+    });
+
+    $('#updatecompany').click(function(){
+        $(this).attr('disabled','disabled');
+        var addcompanyArr = new Array();
+        $('#companyadddiv').find('.form-control').each(function(){
+            addcompanyArr.push($(this).val());
+        });
+        var updatecompanyArr = new Array();
+        var updatecompanyidArr = new Array();
+        $('#companyshow').find('.form-control').each(function(){
+            updatecompanyArr.push($(this).val());
+            updatecompanyidArr.push($(this).attr('id'));
+        });
+
+        //判断是否有重名情况再提交
+        var flag = isRepeat(addcompanyArr.concat(updatecompanyArr));
+        if(!flag){
+            $.ajax({
+                type: 'post',
+                url: '/change/api/update/company',
+                data:{ pmid: $('#pmid').val(),uci:updatecompanyidArr.length !== 0 ? updatecompanyidArr : '',uc:updatecompanyArr.length ? updatecompanyArr : '',ac:addcompanyArr.length !== 0 ? addcompanyArr : ''},
+                dataType: 'json',
+                success: function(result){
+                    if(result.code == 200){
+                        $('#companyadddiv').html('');
+                        $('#companyshow').append(result.addhtml);
+                        $('#company').html(result.selecthtml);
+                        $('#editcompany').modal('hide');
+                        toastr.success('变更单位已更新');
+                    }else{
+                        toastr.error('添加或编辑单位出错');
+                    }
+                    $('#updatecompany').attr('disabled',false);
+                }
+            })
+        }else{
+            toastr.error('变更单位不能同名');
+            $('#updatecompany').attr('disabled',false);
+        }
+    });
+
+    function isRepeat(arr){
+        var hash = {};
+        for(var i in arr) {
+            if(hash[arr[i]])
+                return true;
+            hash[arr[i]] = true;
+        }
+        return false;
+    }
+
+    //变更清单添加
+    $('.checklist').on('click',function(){
+        if($(this).find('.listcheckbox').prop("checked")){
+            $(this).find('.listcheckbox').prop("checked",false);
+            $(this).removeClass('success');
+        }else{
+            $(this).find('.listcheckbox').prop("checked",true);
+            $(this).addClass('success');
+        }
+    });
+
+    $('.listcheckbox').on('click',function(){
+        if($(this).prop("checked")){
+            $(this).prop("checked",false);
+            $(this).parents('.checklist').removeClass('success');
+        }else{
+            $(this).prop("checked",true);
+            $(this).parents('.checklist').addClass('success');
+        }
+    });
+
+    //审批人选择
+    $('body').on('click','.alert-pnone .radio',function(e){
+        if($(e.target).is('label')){
+            return;
+        }
+        var uid = $(this).attr('data-uid');
+        if($(this).parents('.alert-pnone').hasClass('alert-success')){
+            $(this).parents('.alert-pnone').removeClass('alert-success');
+            $(this).children('label').children('input[type="radio"]').prop('checked',false);
+
+            //移除form中
+            var auditlist = $('#selectauditlist').val().split('->');
+            $.each(auditlist,function(k,v){
+                var vid = v.split('_')[0];
+                if(uid == vid){
+                    auditlist.splice(k,1);
+                    return false;
+                }
+            });
+            $('#selectauditlist').val(auditlist.join('->'));
+
+        }else{
+            $(this).parents('.alert-pnone').addClass('alert-success');
+            $(this).children('label').children('input[type="radio"]').prop('checked','checked');
+            //添加
+            var name = $(this).attr('data-uname');
+            var company = $(this).attr('data-ucompany');
+            var jobs = $(this).attr('data-ujobs');
+            var adduser = uid+'_'+name+'_'+company+'_'+jobs;
+
+
+            //添加到form中
+            if($('#selectauditlist').val() != ''){
+                var auditlist = $('#selectauditlist').val().split('->');
+                auditlist.push(adduser);
+                $('#selectauditlist').val(auditlist.join('->'));
+            }else{
+                $('#selectauditlist').val(adduser);
+            }
+
+        }
+    });
+
+    //添加到审批流程中
+    $('#addaudit').click(function(){
+        $('#usertableshow').html('');
+        //添加到form中
+        if($('#selectauditlist').val() != ''){
+            var sort = 1;
+            var auditlist = $('#selectauditlist').val().split('->');
+            var auditarray = new Array();
+            $.each(auditlist,function(k,v){
+                var vmsg = v.split('_');
+                var uid = vmsg[0];
+                var name = vmsg[1];
+                var company = vmsg[2];
+                var jobs = vmsg[3];
+                var addusertr = '<tr id="user_'+ uid +'" userid="'+ uid +'"><td width="100">'+sort+' 审</td><td width="250"><h4 class="media-heading">'+ jobs +' '+ name +'</h4>'+ company +'</td> <td width="100"></td> <td></td> </tr>';
+                $('#usertableshow').append(addusertr);
+                auditarray.push(uid);
+                sort++;
+            });
+            $('#changeaudit').val(auditarray.join(','));
+        }else{
+            $('#changeaudit').val('');
+        }
+        $('#addshenpi').modal('hide');
+    });
+
+    //审批人搜索和添加
+    $('#searchbtn').click(function(){
+        var username = $.trim($('#searchname').val());
+        if(username == ''){
+            toastr.error('请输入审批人名称');
+            return false;
+        }else{
+            var namelist = $('#usernamelist').val().split(',');
+            for(var i = 0; i < namelist.length; i++){
+                if(username == namelist[i]){
+                    toastr.error('列表或常用中已存在当前审批人');
+                    return false;
+                }
+            }
+            $.ajax({
+                type: 'post',
+                url: '/change/user/search?name='+username,
+                data: {namelist:namelist},
+                dataType: 'json',
+                success: function(result){
+                    if(result.code == 400){
+                        toastr.error(result.msg);
+                    }else{
+                        namelist.push(result.user.name);
+                        $('#usernamelist').val(namelist.join(','));
+                        var adduserhtml = '<div class="col-md-3 alert alert-pnone"><div class="radio" data-uid="'+ result.user.userid +'" data-uname="'+ result.user.name +'" data-ucompany="'+ result.user.company +'" data-ujobs="'+ result.user.jobs +'"><label><input type="radio" value="'+ result.user.userid +'">'+ result.user.name +'</label><div>'+ result.user.jobs +'</div></div></div>';
+                        $('#searchshow').append(adduserhtml);
+                    }
+                }
+            })
+        }
+    });
+
+    //文件上传
+    var btn = document.getElementById('uploadBtn'),
+        msgBox = document.getElementById('msgBox'),
+        filenum = $('#filesshow tr').length != 0 ? $('#filesshow tr').length : 1;
+
+    var uploader = new ss.SimpleUpload({
+        button: btn,
+        url: '/change/file/upload/' + $('#pmid').val(),
+//			sessionProgressUrl: '/code/ajaxuploader/sessionProgress.php',
+        name: 'uploadfile',
+        multipart: true,
+        hoverClass: 'hover',
+        focusClass: 'focus',
+        responseType: 'json',
+        multipleSelect: true,
+        multiple: true,
+        maxSize: 10240,
+        data:{uid:$('#uid').val(),verification:$('#verification').val()},
+        onSubmit: function(filename, extension) {
+            var progress = document.createElement('div'),
+                bar = document.createElement('div'),
+                fileSize = document.createElement('div'),
+                wrapper = document.createElement('div'),
+                progressBox = document.getElementById('progressBox');
+
+            progress.className = 'progress progress-striped';
+            bar.className = 'progress-bar progress-bar-success';
+            fileSize.className = 'size';
+            wrapper.className = 'wrapper';
+
+            progress.appendChild(bar);
+            wrapper.innerHTML = '<div class="name">'+filename+'</div>';
+            wrapper.appendChild(fileSize);
+            wrapper.appendChild(progress);
+            progressBox.appendChild(wrapper);
+
+            this.setProgressBar(bar);
+            this.setFileSizeBox(fileSize);
+            this.setProgressContainer(wrapper);
+        },
+        onComplete: function( filename, response ) {
+
+            if ( !response ) {
+                toastr.error('无法上传文件');
+                msgBox.innerHTML = '无法上传文件';
+                return;
+            }
+            var msgBoxfiles = document.createElement('div');
+            msgBoxfiles.className = 'msg';
+            if ( response.success === true ) {
+                toastr.success(filename + ' 上传成功。');
+                msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>' + ' 上传成功。';
+                msgBox.appendChild(msgBoxfiles);
+                var filestr = '<tr><td>'+ filenum +'</td><td><a href="'+ response.files.downurl +'">'+ response.files.filename +'</a></td><td>'+ response.files.size +'</td><td>'+ response.files.time +'</td><td><a id="delatt_'+ response.files.id +'" file_id="'+ response.files.id +'" class="btn btn-default btn-sm" title="删除附件"><span class="glyphicon glyphicon-trash text-danger"></span></a></td></tr>';
+                $('#filesshow').append(filestr);
+                //添加到form中
+                if($('#changeatt').val() != ''){
+                    var attlist = $('#changeatt').val().split(',');
+                    attlist.push(response.files.id);
+                    $('#changeatt').val(attlist.join(','));
+                }else{
+                    $('#changeatt').val(response.files.id);
+                }
+
+                filenum++;
+                setTimeout(function(){
+                    msgBox.removeChild(msgBoxfiles);
+                },3000);
+            } else {
+                if ( response.msg )  {
+                    toastr.error(filename + ' ' + response.msg);
+                    msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong> ' + response.msg;
+                    msgBox.appendChild(msgBoxfiles);
+                    setTimeout(function(){
+                        msgBox.removeChild(msgBoxfiles);
+                    },3000);
+                } else {
+                    toastr.error(filename + ' 发生错误,上传失败。');
+                    msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>'+ ' 发生错误,上传失败。';
+                    msgBox.appendChild(msgBoxfiles);
+                    setTimeout(function(){
+                        msgBox.removeChild(msgBoxfiles);
+                    },3000);
+                }
+            }
+        },
+        onError: function() {
+            var msgBoxfiles = document.createElement('div');
+            msgBoxfiles.className = 'msg';
+            toastr.error('无法上传文件');
+            msgBoxfiles.innerHTML = '无法上传文件';
+            msgBox.appendChild(msgBoxfiles);
+            setTimeout(function(){
+                msgBox.removeChild(msgBoxfiles);
+            },3000);
+        }
+    });
+
+    //删除附件
+    $('body').on('click',"a[id^='delatt_']",function (){
+        var fid = $(this).attr('file_id');
+        $(this).parents('tr').remove();
+        var newsort = 1;
+        $('#filesshow tr').each(function(){
+            $(this).children('td').eq(0).text(newsort);
+            newsort++;
+        });
+        filenum = newsort;
+        var attlist = $('#changeatt').val().split(',');
+        $.each(attlist,function(k,v){
+            if(v == fid){
+                attlist.splice(k,1);
+                return false;
+            }
+        });
+        $('#changeatt').val(attlist.join(','));
+        $.ajax({
+            type: 'post',
+            url: '/change/file/delete',
+            data:{fid: fid},
+            dataType: 'json',
+            success: function(result){
+
+            }
+        })
+    });
+
+    //让回车提交表单方法失效并改成光标往下
+    $("body").on('keypress','input',function (e) {
+        var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
+        if (keyCode == 13) {
+            for (var i = 0; i < this.form.elements.length; i++) {
+                if (this == this.form.elements[i]) break;
+            }
+            i = (i + 1) % this.form.elements.length;
+            this.form.elements[i].focus();
+            return false;
+        } else {
+            return true;
+        }
+    });
+});
+
+//根据位数生成编号,3位-》001 ,5位-》00001
+function makenum(num){
+    var arr = new Array(num);
+    for(var i=0;i< num;i++){
+        if(i != num-1){
+            arr[i] = 0;
+        }else{
+            arr[i] = 1;
+        }
+    }
+    return arr.join('');
+}
+//生成num位的0
+function makezero(num){
+    var arr = new Array(num);
+    for(var i=0;i< num;i++){
+        arr[i] = 0;
+    }
+    return arr.join('');
+}
+//生成num小数位数的0.
+function makedecimalzero(num){
+    if(num < 1){
+        return '0';
+    }else{
+        return '0.'+makezero(num);
+    }
+}
+//生成num位的10倍数
+function makemultiple(num){
+    return Math.pow(10,parseInt(num));
+}
+
+//根据位数生成几位小数,0位-》1,1位-》0.1 ,5位-》0.00001
+function makedecimals(num){
+    if(num >= 1 && num <= 6){
         var arr = new Array(num);
         for(var i=0;i< num;i++){
             if(i != num-1){
@@ -103,6 +513,178 @@ $(function(){
                 arr[i] = 1;
             }
         }
-        return arr.join('');
+        return '0.'+arr.join('');
+    }else{
+        return 1;
     }
-});
+}
+
+//四舍五入或末尾加零,实现类似php的 sprintf("%.".decimal."f", val);
+function roundnum(val,decimals){
+    if(val !== ''){
+        val = parseFloat(val);
+        if(decimals < 1){
+            val = (Math.round(val)).toString();
+        }else{
+            var num = val.toString();
+            if(num.lastIndexOf('.') == -1){
+                num += '.';
+                num += makezero(decimals);
+                val = num;
+            }else{
+                var valdecimals = num.split('.')[1].length;
+                if(parseInt(valdecimals) < parseInt(decimals)){
+                    num += makezero(parseInt(decimals)-parseInt(valdecimals));
+                    val = num;
+                }else if(parseInt(valdecimals) > parseInt(decimals)){
+                    val = parseFloat(val) != 0 ? Math.round(val.mul(makemultiple(decimals))).div(makemultiple(decimals)) : makedecimalzero(decimals);
+                    var num = val.toString();
+                    if(num.lastIndexOf('.') == -1){
+                        num += '.';
+                        num += makezero(decimals);
+                        val = num;
+                    }else {
+                        var valdecimals = num.split('.')[1].length;
+                        if (parseInt(valdecimals) < parseInt(decimals)) {
+                            num += makezero(parseInt(decimals) - parseInt(valdecimals));
+                            val = num;
+                        }
+                    }
+                }
+            }
+        }
+    }
+    return val;
+}
+
+//把已添加的数量改成响应位数,并把input的值设置成响应的要求,并更新localstorage和表单上传里的数据
+function decimalnumsetmodal(costdnum,numbernum,status){
+    $('#changedecimalnum').val(costdnum+'_'+numbernum);
+    //var step = makedecimals(numbernum);
+    var trcount = $('#list tr').length/2;
+    for(var i = 0; i < trcount; i++){
+        var cnumval = roundnum($('#list tr').eq(i).children('td').eq(6).children('input').val(),numbernum);
+        $('#list tr').eq(i).children('td').eq(6).children('input').attr('onkeyup','RegNum(this,event,'+numbernum+')');
+        $('#list tr').eq(i).children('td').eq(6).children('input').val(cnumval);
+        var unitprice = $('#list tr').eq(i).children('td').eq(3).text() || $('#list tr').eq(i).children('td').eq(3).children('input').val();
+        var ctotalnum = roundnum(parseFloat(unitprice).mul(parseFloat(cnumval)),costdnum);
+        $('#list tr').eq(i).children('td').eq(7).text(ctotalnum);
+        if($('#list tr').eq(i).hasClass('clid')){
+            var listid = $('#list tr').eq(i).attr('list_id');
+            updatelist(listid,cnumval);
+            if(status == 'update'){
+                localStorage.setItem('update_'+$('#cid').val()+'_clistid_'+listid,cnumval);
+            }else if(status == 'newadd'){
+                localStorage.setItem('new_clistid_'+listid,cnumval);
+            }
+        }else{
+            var numval = roundnum($('#list tr').eq(i).children('td').eq(4).children('input').val(),numbernum);
+            $('#list tr').eq(i).children('td').eq(4).children('input').attr('onkeyup','RegNum(this,event,'+numbernum+')');
+            $('#list tr').eq(i).children('td').eq(4).children('input').val(numval);
+            var totalnum = roundnum(parseFloat(unitprice).mul(parseFloat(numval)),costdnum);
+            $('#list tr').eq(i).children('td').eq(5).text(totalnum);
+            var listid = $('#list tr').eq(i).attr('newlist_tid');
+            var listtrmsg = updateandgetwhitelist(listid,$('#list tr').eq(i));
+            if(status == 'update'){
+                localStorage.setItem('update_'+$('#cid').val()+'_new_clistid_'+listid,listtrmsg);
+            }else if(status == 'newadd'){
+                localStorage.setItem('add_new_clistid_'+listid,listtrmsg);
+            }
+        }
+    }
+    totalamount(costdnum);
+    $('#setting').modal('hide');
+    toastr.success('设置并更新表格数据成功');
+}
+//更新并获取 changewhitelist
+function updateandgetwhitelist(newid,$thisstr){
+    var adtrlist = new Array(6);
+    adtrlist[0] = $thisstr.children('td').eq(0).children('input').val();
+    adtrlist[1] = $thisstr.children('td').eq(1).children('input').val();
+    adtrlist[2] = $thisstr.children('td').eq(2).children('select').val();
+    adtrlist[3] = $thisstr.children('td').eq(3).children('input').val();
+    adtrlist[4] = $thisstr.children('td').eq(4).children('input').val();
+    adtrlist[5] = $thisstr.children('td').eq(6).children('input').val();
+    var adtrliststr = adtrlist.join(';');
+    //添加到form中
+    if($('#changewhitelist').val() != ''){
+        var wlist = $('#changewhitelist').val().split(',');
+        var exist = 0;
+        $.each(wlist,function(k,v){
+            var wlistid = v.split('->')[0];
+            if(wlistid == newid){
+                exist = 1;
+                var empty = 0;
+                $.each(adtrlist,function(ak,av){
+                    if(av != '' && ak != 2){
+                        empty = 1;
+                        return false;
+                    }
+                });
+                if(empty){
+                    wlist.splice(k,1,newid+'->'+adtrliststr);
+                }else{
+                    wlist.splice(k,1);
+                }
+                return false;
+            }
+        });
+        if(exist == 0){
+            wlist.push(newid+'->'+adtrliststr);
+        }
+        $('#changewhitelist').val(wlist.join(','));
+    }else{
+        $('#changewhitelist').val(newid+'->'+adtrliststr);
+    }
+    return adtrliststr;
+}
+//更新 changelist 元素
+function updatelist(id,cnum){
+    //添加到form中list
+    if($('#changelist').val() != ''){
+        var clist = $('#changelist').val().split(',');
+        var exist = 0;
+        $.each(clist,function(k,v){
+            var clistid = v.split('_')[0];
+            if(clistid == id){
+                exist = 1;
+                clist.splice(k,1,id+'_'+cnum);
+                return false;
+            }
+        });
+        if(exist == 0){
+            clist.push(id+'_'+cnum);
+        }
+        $('#changelist').val(clist.join(','));
+    }else{
+        $('#changelist').val(id+'_'+cnum);
+    }
+}
+//移除 changelist 元素
+function removelist(id){
+    //清除form中list
+    var clist = $('#changelist').val().split(',');
+    $.each(clist,function(k,v){
+        var clistid = v.split('_')[0];
+        if(clistid == id){
+            clist.splice(k,1);
+            return false;
+        }
+    });
+    $('#changelist').val(clist.join(','));
+}
+
+//统计合计金额
+function totalamount(decimal){
+    var zero = makedecimalzero(decimal);
+    var ctotalnum = 0;
+    var ototalnum = 0;
+    $('.clist').each(function(){
+        var ctotal = $(this).children('td').eq(7).text();
+        ctotalnum = ctotal != '' ? parseFloat(ctotalnum).add(parseFloat(ctotal)) : parseFloat(ctotalnum);
+        var ototal = $(this).children('td').eq(5).text();
+        ototalnum = ototal != '' ? parseFloat(ototalnum).add(parseFloat(ototal)) : parseFloat(ototalnum);
+    });
+    $('.ctatalamount').eq(1).text(ctotalnum != 0 ? roundnum(ctotalnum,decimal) : zero);
+    $('.otatalamount').eq(1).text(ototalnum != 0 ? ototalnum : zero);
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
global/js/jlzf-change-pnumset.min.js


+ 36 - 1
global/js/jlzf-change-table.js

@@ -9,4 +9,39 @@ $(function(){
         scrollY: '500px',
         scrollCollapse: true
     } );
-});
+});
+function RegNum(obj,e,decimal)
+{
+    var pos = obj.selectionEnd;
+    var event = e || window.event;
+    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
+    if(keyCode != 37 && keyCode != 39){
+        //先把非数字的都替换掉,除了数字和.
+        obj.value = obj.value.replace(/[^\d.]/g,"");
+        //保证第一个数字为0后,第二个数字不能为0
+        obj.value = obj.value !== '0' ? obj.value.replace(/^0+/,'').replace(/^\./,"0.") : obj.value;
+        //保证只有出现一个.而没有多个.
+        obj.value = obj.value.replace(/\.{2,}/g,".");
+        //必须保证第一个为数字而不是.
+        obj.value = obj.value.replace(/^\./g,"");
+        //保证.只出现一次,而不能出现两次以上
+        obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
+        //只能输入deciaml 位小数
+        var reg = new RegExp("^(\\-)*(\\d+)\\.(\\d{1,"+decimal+"}).*$");
+        obj.value = obj.value.replace(reg,'$1$2.$3');
+    }
+    obj.setSelectionRange(pos,pos);
+}
+function RegAutoNum(obj,e,site){
+    var pos = obj.selectionEnd;
+    var event = e || window.event;
+    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
+    if(keyCode != 37 && keyCode != 39){
+        //先把非数字的都替换掉,除了数字
+        obj.value = obj.value.replace(/[^\d]/g,"");
+        //只能输入deciaml 位小数
+        // var reg = new RegExp("^\d{"+site+"}");
+        // obj.value = obj.value.replace(reg,'$1');
+    }
+    obj.setSelectionRange(pos,pos);
+}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 60 - 456
global/js/jlzf-change-update.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
global/js/jlzf-change-update.min.js


+ 10 - 5
jlweb210.sql

@@ -77,12 +77,13 @@ CREATE TABLE `jl_change` (
   `pmid` int(11) NOT NULL COMMENT '对应的标段id',
   `uid` int(11) NOT NULL COMMENT '创建人id',
   `pnum` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '申请编号',
+  `bnum` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '批复编号',
   `pname` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '工程名称',
-  `mnum` varchar(100) COLLATE utf8_unicode_ci NOT NULL COMMENT '桩号',
+  `mnum` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '桩号',
   `odname` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '原设计图名称',
-  `onum` varchar(100) COLLATE utf8_unicode_ci NOT NULL COMMENT '原图号',
+  `onum` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '原图号',
   `cdname` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '变更设计图名称',
-  `cnum` varchar(100) COLLATE utf8_unicode_ci NOT NULL COMMENT '变更图号',
+  `cnum` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '变更图号',
   `description` text COLLATE utf8_unicode_ci NOT NULL COMMENT '工程变更理由及内容',
   `basis` text COLLATE utf8_unicode_ci NOT NULL COMMENT '工程变更合同依据',
   `remarks` varchar(5000) COLLATE utf8_unicode_ci NOT NULL COMMENT '备注',
@@ -93,6 +94,7 @@ CREATE TABLE `jl_change` (
   `bear` tinyint(4) NOT NULL COMMENT '费用承担方,1为业主,2为承包方',
   `totalamount` double UNSIGNED NOT NULL COMMENT '变更总金额',
   `times` tinyint(4) NOT NULL DEFAULT '0' COMMENT '次数',
+  `decimalnum` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '2_3' COMMENT '金额和数量小数位数,以_分隔',
   `status` enum('uncheck','checking','checked','checkno','back') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'uncheck' COMMENT '变更令状态',
   `intime` varchar(15) COLLATE utf8_unicode_ci NOT NULL COMMENT '添加时间',
   `cintime` varchar(15) COLLATE utf8_unicode_ci NOT NULL COMMENT '变更状态发生时间',
@@ -175,7 +177,9 @@ CREATE TABLE `jl_change_audit_list` (
 
 CREATE TABLE `jl_change_company` (
   `id` int(11) NOT NULL,
-  `cid` int(11) NOT NULL COMMENT '对应的变更令id',
+  `pid` int(11) NOT NULL COMMENT '项目id',
+  `stid` int(11) NOT NULL COMMENT '标段类型id',
+  `pmid` int(11) NOT NULL COMMENT '标段id',
   `name` varchar(500) COLLATE utf8_unicode_ci NOT NULL COMMENT '名称',
   `csort` int(11) NOT NULL COMMENT '排序'
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='变更令单位表';
@@ -355,7 +359,8 @@ CREATE TABLE `jl_project_measure` (
   `uid` mediumint(9) NOT NULL,
   `pmname` char(255) DEFAULT NULL,
   `contracttotal` char(255) NOT NULL DEFAULT '0',
-  `intime` int(11) NOT NULL
+  `intime` int(11) NOT NULL,
+  `cdecimalnum` varchar(20) NOT NULL DEFAULT '2_3' COMMENT '针对变更令标段的金额与数量小数位数设置,以_分隔'
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 -- --------------------------------------------------------

+ 7 - 0
protected/class/actmeasure.php

@@ -165,4 +165,11 @@ class actMeasure
     {
         return $this->__mmeasure->delete(array('where' => 'pmid=?', 'param' => array($pmid)));
     }
+
+    public function updateChangeDecimalNum($pmid,$dnum)
+    {
+        $this->__mmeasure->pmid = $pmid;
+        $this->__mmeasure->cdecimalnum = $dnum;
+        return $this->__mmeasure->update();
+    }
 }

+ 94 - 15
protected/class/change.php

@@ -44,6 +44,7 @@ class Changes
         $this->__change->cnature = $cmsg['cnature'];
         $this->__change->companyid = $cmsg['companyid'];
         $this->__change->bear = $cmsg['bear'];
+        $this->__change->decimalnum = $cmsg['changedecimalnum'];
         $this->__change->status = isset($cmsg['uncheck']) ? 'uncheck' : 'checking';
         $this->__change->intime = time();
         $this->__change->cintime = time();
@@ -68,6 +69,7 @@ class Changes
         $this->__change->cnature = $cmsg['cnature'];
         $this->__change->companyid = $cmsg['companyid'];
         $this->__change->bear = $cmsg['bear'];
+        $this->__change->decimalnum = $cmsg['changedecimalnum'];
         $this->__change->times = $times;
         if($status != ''){
             $this->__change->status = $status;
@@ -76,27 +78,46 @@ class Changes
         return $this->__change->update();
     }
 
-    public function getListbyMydetail($pmid,$uid,$limit)
+    public function getListbyMydetail($pmid='',$uid,$limit)
     {
-        return $this->__change->find(array('where' => 'pmid=? and (status="checking" or status="back" or status="uncheck") and cid in(select `jl_change_audit`.cid from `jl_change_audit` where `jl_change_audit`.uid=? and `jl_change_audit`.status="checking")', 'param' => array($pmid,$uid), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+        if(empty($pmid)){
+            return $this->__change->find(array('where' => '(status="checking" or status="back" or status="uncheck") and cid in(select `jl_change_audit`.cid from `jl_change_audit` where `jl_change_audit`.uid=? and `jl_change_audit`.status="checking")', 'param' => array($uid), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+        }else{
+            return $this->__change->find(array('where' => 'pmid=? and (status="checking" or status="back" or status="uncheck") and cid in(select `jl_change_audit`.cid from `jl_change_audit` where `jl_change_audit`.uid=? and `jl_change_audit`.status="checking")', 'param' => array($pmid,$uid), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+        }
     }
 
-    public function getNumbystatus($pmid,$status,$status2 = '')
+    public function getNumbystatus($pmid='',$status,$status2 = '',$sql = '')
     {
         if(!empty($status2)){
-            return $this->__change->count(array('where' => 'pmid=? and (status=? or status=?)', 'param' => array($pmid,$status,$status2), 'asArray' => TRUE));
+            if(empty($pmid)){
+                return $this->__change->count(array('where' => '(status=? or status=?)'.$sql, 'param' => array($status,$status2), 'asArray' => TRUE));
+            }else{
+                return $this->__change->count(array('where' => 'pmid=? and (status=? or status=?)', 'param' => array($pmid,$status,$status2), 'asArray' => TRUE));
+            }
         }else{
-            return $this->__change->count(array('where' => 'pmid=? and status=?', 'param' => array($pmid,$status), 'asArray' => TRUE));
+            if(empty($pmid)){
+                return $this->__change->count(array('where' => 'status=?'.$sql, 'param' => array($status), 'asArray' => TRUE));
+            }else{
+                return $this->__change->count(array('where' => 'pmid=? and status=?', 'param' => array($pmid,$status), 'asArray' => TRUE));
+            }
         }
-        return $this->__change->count(array('where' => 'pmid=? and status=?', 'param' => array($pmid,$status), 'asArray' => TRUE));
     }
 
-    public function getListbyStatus($pmid,$status,$limit,$status2 = '')
+    public function getListbyStatus($pmid='',$status,$limit,$status2 = '',$sql = '')
     {
         if(!empty($status2)){
-            return $this->__change->find(array('where' => 'pmid=? and (status=? or status=?)', 'param' => array($pmid,$status,$status2), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+            if(empty($pmid)){
+                return $this->__change->find(array('where' => '(status=? or status=?)'.$sql, 'param' => array($status,$status2), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+            }else{
+                return $this->__change->find(array('where' => 'pmid=? and (status=? or status=?)', 'param' => array($pmid,$status,$status2), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+            }
         }else{
-            return $this->__change->find(array('where' => 'pmid=? and status=?', 'param' => array($pmid,$status), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+            if(empty($pmid)){
+                return $this->__change->find(array('where' => 'status=?'.$sql, 'param' => array($status), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+            }else{
+                return $this->__change->find(array('where' => 'pmid=? and status=?', 'param' => array($pmid,$status), 'desc' => 'cid', 'limit' => $limit, 'asArray' => TRUE));
+            }
         }
     }
 
@@ -138,6 +159,18 @@ class Changes
 
     }
 
+    public function delChangebyCid($cid)
+    {
+        return $this->__change->delete(array('where' => 'cid=?', 'param' => array($cid), 'asArray' => TRUE));
+    }
+
+    public function updateChangeDecimalNum($cid,$dnum)
+    {
+        $this->__change->cid = $cid;
+        $this->__change->decimalnum = $dnum;
+        return $this->__change->update();
+    }
+
 
     //changeatt
     public function insertChangeAtt($files)
@@ -182,9 +215,13 @@ class Changes
         return $this->__changeaudit->find(array('where' => 'uid=?', 'param' => array($uid), 'groupby' => 'pmid', 'asArray' => TRUE));
     }
 
-    public function getNumbyMydetail($pmid,$uid)
+    public function getNumbyMydetail($pmid='',$uid)
     {
-        return $this->__changeaudit->count(array('where' => 'pmid=? and uid=? and status="checking"', 'param' => array($pmid,$uid), 'asArray' => TRUE));
+        if(empty($pmid)){
+            return $this->__changeaudit->count(array('where' => 'uid=? and status="checking"', 'param' => array($uid), 'asArray' => TRUE));
+        }else{
+            return $this->__changeaudit->count(array('where' => 'pmid=? and uid=? and status="checking"', 'param' => array($pmid,$uid), 'asArray' => TRUE));
+        }
     }
 
     public function getOneAuditbystatus($cid,$status)
@@ -241,6 +278,11 @@ class Changes
         return $this->__changeaudit->getOne(array('where' => 'cid=?'.$sql, 'desc' => 'usort', 'param' => array($cid), 'asArray' => TRUE));
     }
 
+    public function delChangeAuditbyCid($cid)
+    {
+        return $this->__changeaudit->delete(array('where' => 'cid=?', 'param' => array($cid), 'asArray' => TRUE));
+    }
+
 
     //changeauditlist
     public function getChangeAuditListbycid($cid)
@@ -272,9 +314,13 @@ class Changes
         $this->__changelist->amount = $listArray['amount'];
         $this->__changelist->insert();
     }
-    public function getChangeListbyPmid($pmid)
+    public function getChangeListbyPmid($pmid = '',$sql = '')
     {
-        return $this->__changelist->find(array('where' => 'pmid=?', 'param' => array($pmid), 'asc' => 'convert(lnum using gbk)', 'asArray' => TRUE));
+        if(empty($pmid)){
+            return $this->__changelist->find(array('where' => $sql, 'asc' => 'convert(lnum using gbk)', 'asArray' => TRUE));
+        }else{
+            return $this->__changelist->find(array('where' => 'pmid=?', 'param' => array($pmid), 'asc' => 'convert(lnum using gbk)', 'asArray' => TRUE));
+        }
     }
 
     public function getChangeListbyid($id)
@@ -293,9 +339,13 @@ class Changes
     }
 
     //changecompany
-    public function getCompanyList()
+    public function getCompanyList($pmid = '')
     {
-        return $this->__changecompany->find(array('asArray' => TRUE));
+        if($pmid != ''){
+            return $this->__changecompany->find(array('where' => 'pmid=?', 'param' => array($pmid), 'asArray' => TRUE));
+        }else{
+            return $this->__changecompany->find(array('asArray' => TRUE));
+        }
     }
 
     public function getCompanybyid($id)
@@ -304,4 +354,33 @@ class Changes
     }
 
 
+
+    public function delAllChangebyPmid($pmid)
+    {
+        // TODO: 根据pmid删除所有相关联的变更令内容
+        // TODO: 项目管理中使用
+        $changeattlist = $this->__changeatt->find(array('where' => 'pmid=?', 'param' => array($pmid), 'asArray' => TRUE));
+
+        if(!empty($changeattlist)){
+            include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
+            foreach($changeattlist as $k => $v){
+                $this->IoHandler = new IoHandler();
+                $path = DOO::conf()->SITE_PATH.$v['filepath'];
+                $this->IoHandler->DeleteFile($path);
+
+                $this->delChangeAttbyFid($v['id']);
+            }
+        }
+
+        $this->__changelist->delete(array('where' => 'pmid=?', 'param' => array($pmid), 'asArray' => TRUE));
+
+        $this->__changeaudit->delete(array('where' => 'pmid=?', 'param' => array($pmid), 'asArray' => TRUE));
+
+        $this->__changeauditlist->delete(array('where' => 'pmid=?', 'param' => array($pmid), 'asArray' => TRUE));
+
+        $this->__changecompany->delete(array('where' => 'pmid=?', 'param' => array($pmid), 'asArray' => TRUE));
+
+        $this->__change->delete(array('where' => 'pmid=?', 'param' => array($pmid), 'asArray' => TRUE));
+    }
+
 }

+ 1 - 1
protected/class/extras/Uploader.php

@@ -241,7 +241,7 @@ class FileUpload {
         }
 
         if ($this->fileSize == 0) {
-            $this->setErrorMsg('File is empty');
+            $this->setErrorMsg('文件是空的');
             return false;
         }
 

+ 1 - 0
protected/config/acl.conf.php

@@ -5,6 +5,7 @@ $acl['anonymous']['allow'] = array(
     'LoginController' => array('login', 'Signin', 'Signin2', 'Signout'),
     'UpgradeController' => '*',
     'SProjectController' => array('interMediateUpload'),
+//    'ChangeController' => array('fileUpload','changeNew','changeApproval','changeReport')
 );
 //$acl['anonymous']['deny'] = array(
 //    'UserController' => array('login', 'registerAccount'),

+ 8 - 5
protected/config/routes.conf.php

@@ -408,9 +408,11 @@ $route['*']['/project/intermediate/view/:sid'] = array('ProjectController', 'sig
 // 变更令
 
 $route['*']['/change/index'] = array('ChangeController', 'index');
-$route['*']['/change/index/:pmid'] = array('ChangeController', 'index');
-$route['*']['/change/index/:pmid/:status'] = array('ChangeController', 'index');
-$route['*']['/change/index/:pmid/:status/page/:pindex'] = array('ChangeController', 'index');
+$route['*']['/change/index/tender/:pmid'] = array('ChangeController', 'index');
+$route['*']['/change/index/status/:status'] = array('ChangeController', 'index');
+$route['*']['/change/index/status/:status/page/:pindex'] = array('ChangeController', 'index');
+$route['*']['/change/index/tender/:pmid/status/:status'] = array('ChangeController', 'index');
+$route['*']['/change/index/tender/:pmid/status/:status/page/:pindex'] = array('ChangeController', 'index');
 $route['*']['/change/dealbills/:pmid'] = array('ChangeController', 'dealBills');
 $route['*']['/change/detail/checking/:cid'] = array('ChangeController', 'changeApproval');
 $route['*']['/change/detail/update/:cid'] = array('ChangeController', 'changeReport');
@@ -418,11 +420,12 @@ $route['*']['/change/detail/:cid'] = array('ChangeController', 'changeDetail');
 $route['*']['/change/new/:pmid'] = array('ChangeController', 'changeNew');
 $route['*']['/change/api/update/company'] = array('ChangeController', 'editCompany');
 $route['*']['/change/user/search'] = array('ChangeController', 'searchUser');
-$route['*']['/change/file/upload/:pmid'] = array('ChangeController', 'fileUpload');
-$route['*']['/change/file/upload/:pmid/:cid'] = array('ChangeController', 'fileUpload');
+$route['*']['/change/file/upload/:pmid'] = array('UpgradeController', 'fileUpload');
+$route['*']['/change/file/upload/:pmid/:cid'] = array('UpgradeController', 'fileUpload');
 $route['*']['/change/file/download/:fid'] = array('ChangeController', 'fileDownload');
 $route['*']['/change/file/delete'] = array('ChangeController', 'fileDelete');
 $route['*']['/change/check/pnum'] = array('ChangeController', 'pnumCheck');
+$route['*']['/change/set/decimalnum'] = array('ChangeController', 'setDecimalnum');
 
 // 变更令软件接口
 /**

+ 345 - 87
protected/controller/ChangeController.php

@@ -13,7 +13,6 @@ Doo::loadClass('sms');
 Doo::loadClass('change');
 Doo::loadModelAt('aconfig', 'admin');
 Doo::loadClass('Hashids/Hashids');
-
 /* * proDetail
  * MainController
  * Feel free to delete the methods and replace them with your own code.
@@ -38,6 +37,12 @@ class ChangeController extends DooController
 
     public function beforeRun($resource, $action)
     {
+        if(isset($_POST['sessionid'])){
+            session_id($_POST['sessionid']);
+            setcookie('PHPSESSID',$_POST['sessionid']);
+            session_start();
+        }
+
         if ($this->auth->getUid()) {
             $uGroups = $this->profile->getProWithUid($this->auth->getUid());
             $falg = Doo::acl()->isAllowed($uGroups['groups'], $resource, $action);
@@ -148,6 +153,7 @@ class ChangeController extends DooController
 
         //算法 ---> 把一个二维数组按内容转换成一个三维数组
         $prolist = array();
+        $pmidlistArray = array();
         if(!empty($sectionlist)){
             $newlist = array();
             $i = 0;
@@ -156,6 +162,7 @@ class ChangeController extends DooController
                 $newkey = $value['pid'];
                 $newst = $value['stid'];
                 $newpm = $value['pmid'];
+                array_push($pmidlistArray,$newpm);
                 if(!isset($newlist[$newkey])){
                     $newlist[$newkey]['i'] = $i;
                     $prolist[$i]['open'] = 0;
@@ -188,7 +195,7 @@ class ChangeController extends DooController
             }
         }
 
-        //获取需要您审批的签署表cid,pid,stid,pmid信息,并open所有需要审批的节点
+        //获取需要您审批的签署表cid,pid,stid,pmid信息,并默认open所有节点
         $cListmsg = $this->change->getNeedChangeNumbyUid($this->auth->getUid()) != 0 ? $this->change->getNeedChangeAllList($this->auth->getUid()) : '';
         $pidArray = $stidArray = $pmidArray = array();
         if(!empty($cListmsg)){
@@ -198,50 +205,72 @@ class ChangeController extends DooController
                 array_push($pmidArray,$clv['pmid']);
             }
         }
-
-        $pmid = isset($this->params['pmid']) ? $this->params['pmid'] : $prolist[0]['stlist'][0]['pmlist'][0]['pmid'];
-        $pmArray = $this->actmeasure->getRowByPmid($pmid);
-        if(!empty($pmArray)){
+        $sql = '';
+        $pmid = isset($this->params['pmid']) ? $this->params['pmid'] : '';
+        $userchangepower = 1;
+        if(!empty($prolist)){
             foreach($prolist as $pk => $pv){
-                if($pmArray['pid'] == $pv['pid'] || in_array($pv['pid'], $pidArray)){
-                    $prolist[$pk]['open'] = $pmArray['pid'] == $pv['pid'] ? 1 : 2;
+                if(in_array($pv['pid'], $pidArray)){
+                    $prolist[$pk]['open'] = 2;
                     foreach($prolist[$pk]['stlist'] as $sk => $sv){
-                        if($pmArray['stid'] == $sv['stid'] || in_array($sv['stid'], $stidArray)){
-                            $prolist[$pk]['stlist'][$sk]['open'] = $pmArray['stid'] == $sv['stid'] ? 1 : 2;
+                        if(in_array($sv['stid'], $stidArray)){
+                            $prolist[$pk]['stlist'][$sk]['open'] = 2;
                             foreach($prolist[$pk]['stlist'][$sk]['pmlist'] as $mk => $mv){
-                                if($pmArray['pmid'] == $mv['pmid'] || in_array($mv['pmid'], $pmidArray)){
-                                    $prolist[$pk]['stlist'][$sk]['pmlist'][$mk]['open'] = $pmArray['pmid'] == $mv['pmid'] ? 1 : 2;
-//                                    break;
+                                if(in_array($mv['pmid'], $pmidArray)){
+                                    $prolist[$pk]['stlist'][$sk]['pmlist'][$mk]['open'] = 2;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            //存在标段则该标段加粗
+            if(!empty($pmid)){
+                $pmArray = $this->actmeasure->getRowByPmid($pmid);
+                foreach($prolist as $pk => $pv){
+                    if($pmArray['pid'] == $pv['pid']){
+                        $prolist[$pk]['open'] = 1;
+                        foreach($prolist[$pk]['stlist'] as $sk => $sv){
+                            if($pmArray['stid'] == $sv['stid']){
+                                $prolist[$pk]['stlist'][$sk]['open'] = 1;
+                                foreach($prolist[$pk]['stlist'][$sk]['pmlist'] as $mk => $mv){
+                                    if($pmArray['pmid'] == $mv['pmid']){
+                                        $prolist[$pk]['stlist'][$sk]['pmlist'][$mk]['open'] = 1;
+                                        break;
+                                    }
                                 }
+                                break;
                             }
-//                            break;
                         }
+                        break;
                     }
-//                    break;
                 }
+                $userchangepower = $this->auth->getUid() == $pmArray['uid'] ? 1 : 0;
+                $this->data['pmArray'] = $pmArray;
+            }else{
+                $sql .= ' and pmid in ('.implode(',',$pmidlistArray).')';
             }
         }
 
         //只有原报人才可以创建变更令和上报变更令
-        $this->data['userchangepower'] = $this->auth->getUid() == $pmArray['uid'] ? 1 : 0;
+        $this->data['userchangepower'] = $userchangepower;
 
-        $changelist = $this->change->getChangeListbyPmid($pmid);
+        $changelist = $this->change->getChangeListbyPmid($pmid,' 1'.$sql);
         $this->data['firstuse'] = empty($changelist) ? 1 : 0;
-        $status = (isset($this->params['status']) && is_numeric($this->params['status']) && $this->params['status'] != 2) || ($this->params['status'] == 2 && $this->auth->getUid() == $pmArray['uid']) ? $this->params['status'] : 1;
+        $status = isset($this->params['status']) && is_numeric($this->params['status']) ? $this->params['status'] : 1;
         $this->data['status'] = $status;
-        $this->data['pmArray'] = $pmArray;
         $this->data['prolist'] = $prolist;
 
         $this->data['num1'] = $this->change->getNumbyMydetail($pmid,$this->auth->getUid());
-        $this->data['num2'] = $this->change->getNumbystatus($pmid,'uncheck','back');
-        $this->data['num3'] = $this->change->getNumbystatus($pmid,'checking');
-        $this->data['num4'] = $this->change->getNumbystatus($pmid,'checked');
-        $this->data['num5'] = $this->change->getNumbystatus($pmid,'checkno');
+        $this->data['num2'] = $this->change->getNumbystatus($pmid,'uncheck','back',$sql);
+        $this->data['num3'] = $this->change->getNumbystatus($pmid,'checking','',$sql);
+        $this->data['num4'] = $this->change->getNumbystatus($pmid,'checked','',$sql);
+        $this->data['num5'] = $this->change->getNumbystatus($pmid,'checkno','',$sql);
 
         //获取列表内容
         Doo::loadHelper('DooPager');
-        $pagestr = '/'.$pmid.'/'.$status;
-        $totalArchive = $status != 1 ? $this->change->getNumbystatus($pmid,$this->changeStatus[$status]) : $this->change->getNumbyMydetail($pmid,$this->auth->getUid());
+        $pagestr = !empty($pmid) ? '/tender/'.$pmid.'/status/'.$status : '/status/'.$status;
+        $totalArchive = $status != 1 ? $this->change->getNumbystatus($pmid,$this->changeStatus[$status],'',$sql) : $this->change->getNumbyMydetail($pmid,$this->auth->getUid());
         $pager = new DooPager(Doo::conf()->APP_URL . 'change/index'.$pagestr.'/page', $totalArchive, 10, 100);
         $pager->setCss('', 'disabled', 'active');
         if (isset($this->params['pindex']))
@@ -249,7 +278,7 @@ class ChangeController extends DooController
         else
             $pager->paginate(1);
         if ($pager->limit != ' -10,10')
-            $list = $status != 1 ? ($status ==2 ? $this->change->getListbyStatus($pmid,$this->changeStatus[$status], $pager->limit,'back') : $this->change->getListbyStatus($pmid,$this->changeStatus[$status], $pager->limit)) : $this->change->getListbyMydetail($pmid,$this->auth->getUid(), $pager->limit);
+            $list = $status != 1 ? ($status ==2 ? $this->change->getListbyStatus($pmid,$this->changeStatus[$status], $pager->limit,'back',$sql) : $this->change->getListbyStatus($pmid,$this->changeStatus[$status], $pager->limit,'',$sql)) : $this->change->getListbyMydetail($pmid,$this->auth->getUid(), $pager->limit);
         if(isset($list) && !empty($list)){
             foreach($list as $lk => $lv){
                 if($status == 3){
@@ -257,14 +286,18 @@ class ChangeController extends DooController
                     $list[$lk]['checkman'] = $checkman['name'];
 //                    $list[$lk]['checkstatus'] = $this->statusArray[$checkman['status']];
                 }
+                $list[$lk]['pmname'] = $this->actmeasure->getRowByPmid($lv['pmid'])['pmname'];
                 $list[$lk]['username'] = $this->auth->getRowByUid($lv['uid'])['name'];
                 $list[$lk]['changeCategory'] = $this->changeCategory[$lv['category']];
             }
         }
+
         //uid
         $this->data['uid'] = $this->auth->getUid();
         $this->data['list'] = isset($list) ? $list : '';
+        $this->data['pmid'] = $pmid;
         $this->data['pager'] = $pager->output;
+
         $this->render('biangeng-poj', $this->data, TRUE);
     }
 
@@ -301,6 +334,86 @@ class ChangeController extends DooController
                 if(empty($pmArray)){
                     exit('不存在此标段');
                 }
+
+                include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
+                $decimalnum = $this->getdecimal($changeArray['decimalnum']);
+
+                if(isset($_POST['table']) && $_POST['table'] == '_all'){
+                    //获取所有清单列表数据,包括所有审批人
+                    //获取用户审批变更清单的列表
+                    $auditlist = $this->change->getChangeAuditbylastlist($cid,$changeArray['times']);
+
+                    //获取清单,按清单编号排序
+                    $clist = $this->change->getChangeAuditListbycid($cid);
+                    $ototalnum = 0;
+                    $ctotalnum = 0;
+                    $stotalnum = 0;
+                    $listtablehtml = '<table class="table table-striped table-bordered nowrap" id="tablelist" cellspacing="0" width="100%">
+								<thead>
+									<tr><th rowspan="2" class="text-center" width="100">清单编号</th><th rowspan="2" class="text-center">名称</th><th rowspan="2" class="text-center">单位</th><th rowspan="2" class="text-center">单价</th><th colspan="2" class="text-center">原设计</th><th colspan="2" class="text-center">申报变更</th>';
+                    $thhtml = '<th class="text-center">数量</th>
+									<th class="text-center">金额</th>
+									<th class="text-center">数量</th>
+									<th class="text-center">金额</th>';
+                    $utotalarr = array();
+                    foreach ($auditlist as $ak => $av) {
+                        $listtablehtml .= '<th colspan="2" class="text-center">'.$av['name'].' 审批</th>';
+                        $thhtml .= '<th class="text-center">数量</th><th class="text-center">金额</th>';
+                        $utotalarr[$ak]['uid'] = $av['uid'];
+                        $utotalarr[$ak]['status'] = $av['status'];
+                        $utotalarr[$ak]['usum'] = 0;
+                    }
+
+                    $listtablehtml .= '</tr><tr>'. $thhtml .'</tr>
+                                </thead>
+							<tbody id="list">';
+                    if (!empty($clist)) {
+                        foreach ($clist as $ck => $cv) {
+                            $osum = floatval($cv['unitprice']) * floatval($cv['oamount']);
+                            $osum = $cv['lid'] != 0 ? todecimal($osum,$decimalnum['costdnum']) : $osum;
+                            $clist[$ck]['osum'] = $osum;
+                            $ototalnum += $osum;
+
+                            $csum = todecimal(floatval($cv['unitprice']) * floatval($cv['camount']),$decimalnum['costdnum']);
+                            $clist[$ck]['csum'] = $csum;
+                            $ctotalnum += $csum;
+
+                            $listtablehtml .= '<tr class="clist"><td>' . $cv['lnum'] . '</td><td>' . $cv['lname'] . '</td><td>' . $cv['unit'] . '</td><td>' . tofloat($cv['unitprice']) . '</td><td>' . $cv['oamount'] . '</td><td>' . $osum . '</td><td>' . $cv['camount'] . '</td><td>' . $csum . '</td>';
+
+                            $userjson = json_decode($cv['auditjson'], true);
+                            $tdhtml = '';
+                            foreach ($userjson as $uk => $uv) {
+                                if($uv['ucamount'] != ''){
+                                    //update utotalarr value=>usum
+                                    foreach($utotalarr as $tk => $tv){
+                                        if($tv['uid'] == $uv['uid'] && $tv['status'] == 'checked'){
+                                            $usum = todecimal(floatval($cv['unitprice'])*floatval($uv['ucamount']),$decimalnum['costdnum']);
+                                            $tdhtml .= '<td>'.$uv['ucamount'].'</td><td>'.$usum.'</td>';
+                                            $utotalarr[$tk]['usum'] = todecimal(floatval($utotalarr[$tk]['usum'])+$usum,$decimalnum['costdnum']);
+                                            break;
+                                        }elseif($tv['uid'] == $uv['uid']){
+                                            $tdhtml .= '<td></td><td></td>';
+                                            break;
+                                        }
+                                    }
+                                }else{
+                                    $tdhtml .= '<td></td><td></td>';
+                                }
+                            }
+                            $listtablehtml = $listtablehtml.$tdhtml.'</tr>';
+                        }
+                    }
+                    $listtablehtml .= '</tbody><tfoot><tr class="info"><td>合计</td><td></td><td></td><td></td><td></td><td>'.$ototalnum.'</td><td></td><td>'.todecimal($ctotalnum,$decimalnum['costdnum']).'</td>';
+                    foreach($utotalarr as $tk => $tv){
+                        $addtd = $tv['usum'] != 0 ? todecimal($tv['usum'],$decimalnum['costdnum']) : '';
+                        $listtablehtml .= '<td></td><td>'.$addtd.'</td>';
+                    }
+                    $listtablehtml .= '</tr>
+								</tfoot>
+							</table>';
+                    echo json_encode(array('code' => 200, 'html' => $listtablehtml));
+                    die;
+                }
                 $this->data['pmArray'] = $pmArray;
                 $ctypelist = array();
                 if(!empty($changeArray['ctype'])){
@@ -315,7 +428,6 @@ class ChangeController extends DooController
                 $changeArray['companyname'] = $this->change->getCompanybyid($changeArray['companyid'])['name'];
                 $this->data['changeArray'] = $changeArray;
 
-
                 //获取清单,按清单编号排序
                 $clist = $this->change->getChangeAuditListbycid($cid);
                 $ototalnum = 0;
@@ -324,15 +436,16 @@ class ChangeController extends DooController
                 if(!empty($clist)){
                     foreach($clist as $ck => $cv){
                         $osum = floatval($cv['unitprice'])*floatval($cv['oamount']);
+                        $osum = $cv['lid'] != 0 ? todecimal($osum,$decimalnum['costdnum']) : $osum;
                         $clist[$ck]['osum'] = $osum;
                         $ototalnum += $osum;
 
-                        $csum = floatval($cv['unitprice'])*floatval($cv['camount']);
+                        $csum = todecimal(floatval($cv['unitprice'])*floatval($cv['camount']),$decimalnum['costdnum']);
                         $clist[$ck]['csum'] = $csum;
                         $ctotalnum += $csum;
 
                         if($cv['samount'] != ''){
-                            $ssum = floatval($cv['unitprice'])*floatval($cv['samount']);
+                            $ssum = todecimal(floatval($cv['unitprice'])*floatval($cv['samount']),$decimalnum['costdnum']);
                             $clist[$ck]['ssum'] = $ssum;
                             $stotalnum += $ssum;
                         }else{
@@ -341,10 +454,9 @@ class ChangeController extends DooController
                         }
                     }
                 }
-                include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
-                $this->data['ototalnum'] = tofloat($ototalnum);
-                $this->data['ctotalnum'] = tofloat($ctotalnum);
-                $this->data['stotalnum'] = $stotalnum != 0 ? tofloat($stotalnum) : '';
+                $this->data['ototalnum'] = $ototalnum;
+                $this->data['ctotalnum'] = todecimal($ctotalnum,$decimalnum['costdnum']);
+                $this->data['stotalnum'] = $stotalnum != 0 ? todecimal($stotalnum,$decimalnum['costdnum']) : '';
                 $this->data['clist'] = $clist;
 
                 //获取附件
@@ -385,10 +497,17 @@ class ChangeController extends DooController
                 exit('不是原报人无法创建变更令');
             }
 
+            //取标段位数设置
+            $decimalnum = $this->getdecimal($pmArray['cdecimalnum']);
+            $this->data['costdnum'] = $decimalnum['costdnum'];
+            $this->data['numberdnum'] = $decimalnum['numberdnum'];
+
+            include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
+
             //表单提交
             if(isset($_POST['pnum'])){
                 if(isset($_POST['checking'])){
-                    if(empty($_POST['pnum']) || !isset($_POST['pname']) || empty($_POST['pname']) || !isset($_POST['mnum']) || empty($_POST['mnum']) || !isset($_POST['description']) || empty($_POST['description']) || !isset($_POST['changeaudit']) || empty($_POST['changeaudit']) || !isset($_POST['changelist']) || !isset($_POST['changewhitelist'])){
+                    if(empty($_POST['pnum']) || !isset($_POST['pname']) || empty($_POST['pname']) || !isset($_POST['description']) || empty($_POST['description']) || !isset($_POST['changeaudit']) || empty($_POST['changeaudit']) || !isset($_POST['changelist']) || !isset($_POST['changewhitelist'])){
                         exit('参数缺失或为空');
                     }
                     if(empty($_POST['changelist']) && empty($_POST['changewhitelist'])){
@@ -470,9 +589,9 @@ class ChangeController extends DooController
                         $clist = explode(',',$_POST['changelist']);
                         foreach($clist as $ck => $cv){
                             $clistarr = explode('_',$cv);
-                            if(!empty($clistarr[1]) && is_numeric($clistarr[1])){
+                            if(is_numeric($clistarr[1])){
                                 $changelistArr = $this->change->getChangeListbyid($clistarr[0]);
-                                $total += floatval($changelistArr['unitprice'])*floatval($clistarr[1]);
+                                $total += todecimal(floatval($changelistArr['unitprice'])*floatval($clistarr[1]),$decimalnum['costdnum']);
 
                                 $cauditlist = new ChangeAuditList();
                                 $cauditlist->pid = $pmArray['pid'];
@@ -495,8 +614,8 @@ class ChangeController extends DooController
                         $wlist = explode(',',$_POST['changewhitelist']);
                         foreach($wlist as $wk => $wv){
                             $wlistarr = explode(';',explode('->',$wv)[1]);
-                            if(!empty($wlistarr[0]) && !empty($wlistarr[1]) && !empty($wlistarr[3]) && !empty($wlistarr[4]) && !empty($wlistarr[5]) && is_numeric($wlistarr[3]) && is_numeric($wlistarr[4]) && is_numeric($wlistarr[5])){
-                                $total += floatval($wlistarr[3])*floatval($wlistarr[5]);
+                            if(!empty($wlistarr[0]) && !empty($wlistarr[1]) && is_numeric($wlistarr[3]) && is_numeric($wlistarr[4]) && is_numeric($wlistarr[5])){
+                                $total += todecimal(floatval($wlistarr[3])*floatval($wlistarr[5]),$decimalnum['costdnum']);
 
                                 $cauditlist = new ChangeAuditList();
                                 $cauditlist->pid = $pmArray['pid'];
@@ -517,22 +636,23 @@ class ChangeController extends DooController
                     }
 
                     //变更令添加变更总金额
-                    $this->change->updateChangeTotalamount($cid,$total);
+                    $this->change->updateChangeTotalamount($cid,todecimal($total,$decimalnum['costdnum']));
 
                     $status = isset($_POST['uncheck']) ? 2 : 3;
-                    return '/change/index/'.$pmArray['pmid'].'/'.$status;
+                    return '/change/index/tender/'.$pmArray['pmid'].'/status/'.$status;
                 }else{
                     exit('添加到变更令失败');
                 }
             }
 
-            $this->data['companylist'] = $this->change->getCompanyList();
+            $this->data['companylist'] = $this->change->getCompanyList($pmid);
 
             $list = $this->change->getChangeListbyPmid($pmid);
             if(!empty($list)){
                 foreach($list as $k => $v){
                     $totalamount = floatval($v['unitprice'])*floatval($v['amount']);
                     $list[$k]['totalamount'] = $totalamount;
+                    $list[$k]['index'] = $k+1;
                 }
             }
 
@@ -580,13 +700,13 @@ class ChangeController extends DooController
             $lastnum = $this->change->getLastChangePnum($this->params['pmid']);
             if(!empty($lastnum)){
                 //正则获取申请编号
-                $pattern = '/(?!\d{3,6})(\D|\d)|\d{3,6}/i';
+                $pattern = '/(?!\d{3,6})(\D|\d)|19\d{2}|20\d{2}|\d{3,6}/i';
                 preg_match_all($pattern, $lastnum['pnum'],$str);
                 $arr = $str[0];
                 $pnum = '';
                 for($i = 0; $i < count($arr); $i++){
                     if(mb_strlen($arr[$i],'UTF8') > 1){
-                        if($arr[$i] == date('Y',time()) || $arr[$i] == date('Y',strtotime("-1 year"))){
+                        if(preg_match('/19\d{2}|20\d{2}/i',$arr[$i])){
                             $pnum .= $arr[$i];
                         }else{
                             $pnum .= $this->makenum($arr[$i]);
@@ -599,6 +719,12 @@ class ChangeController extends DooController
             }else{
                 $this->data['pnum'] = '变更申请编号001';
             }
+
+            $cfuhashids = new Hashids\Hashids('cfileupload', 15);
+            $this->data['uid'] = $this->auth->getUid();
+            $verification = $cfuhashids->encode($pmArray['pmid'],$this->auth->getUid());
+            $this->data['verification'] = $verification;
+
             $this->render('biangeng-new', $this->data, TRUE);
         }else{
             exit('不存在此标段');
@@ -635,6 +761,10 @@ class ChangeController extends DooController
                     exit('不存在此标段');
                 }
 
+                include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
+                $decimalnum = $this->getdecimal($changeArray['decimalnum']);
+//                $step = $this->makestep($decimalnum['numberdnum']);
+
                 //审批结果
                 if(isset($_POST['approval']) && is_numeric($_POST['approval'])){
                     $status = $_POST['status'];
@@ -654,7 +784,7 @@ class ChangeController extends DooController
                             $lid = explode('_',$v)[0];
                             $ucamount = explode('_',$v)[1] != '' ? explode('_',$v)[1] : 0;
                             $oneauditlist = $this->change->getOneChangeAuditList($lid);
-                            $totalamount += floatval($oneauditlist['unitprice'])*floatval($ucamount);
+                            $totalamount += todecimal(floatval($oneauditlist['unitprice'])*floatval($ucamount),$decimalnum['costdnum']);
                             $auditjson = json_decode($oneauditlist['auditjson'],true);
                             foreach($auditjson as $ak => $av){
                                 if($av['uid'] == $this->auth->getUid()){
@@ -669,7 +799,7 @@ class ChangeController extends DooController
                             $cauditlist->update();
                         }
                         //更新change总金额
-                        $this->change->updateChangeTotalamount($cid,$totalamount);
+                        $this->change->updateChangeTotalamount($cid,todecimal($totalamount,$decimalnum['costdnum']));
 
                         //更改下一个审批状态或结束审批
                         $audit = new ChangeAudit();
@@ -689,6 +819,7 @@ class ChangeController extends DooController
                         if($flag){
                             $changes = new Change();
                             $changes->cid = $cid;
+                            $changes->bnum = isset($_POST['bnum']) ? $_POST['bnum'] : $changeArray['pnum'];
                             $changes->status = 'checked';
                             $changes->sintime = $sintime;
                             $changes->update();
@@ -735,26 +866,26 @@ class ChangeController extends DooController
                                 $auditjson = json_decode($cv['auditjson'],true);
                                 $samount = '';
                                 if(empty($lastlastuid)){
-                                    $totalamount += floatval($cv['unitprice'])*floatval($cv['camount']);
+                                    $totalamount += todecimal(floatval($cv['unitprice'])*floatval($cv['camount']),$decimalnum['costdnum']);
                                 }
                                 foreach($auditjson as $jk => $jv){
                                     if(!empty($lastlastuid) && $jv['uid'] == $lastlastuid){
-                                        $totalamount += floatval($cv['unitprice'])*floatval($jv['ucamount']);
+                                        $totalamount += todecimal(floatval($cv['unitprice'])*floatval($jv['ucamount']),$decimalnum['costdnum']);
                                         $samount = $jv['ucamount'];
                                     }
 
-                                    if($jv['uid'] == $lastuid){
-                                        $auditjson[$jk]['ucamount'] = '';
-                                    }
+//                                    if($jv['uid'] == $lastuid){
+//                                        $auditjson[$jk]['ucamount'] = '';
+//                                    }
                                 }
                                 $cauditlist = new ChangeAuditList();
                                 $cauditlist->id = $cv['id'];
                                 $cauditlist->samount = $samount;
-                                $cauditlist->auditjson = json_encode($auditjson);
+//                                $cauditlist->auditjson = json_encode($auditjson);
                                 $cauditlist->update();
                             }
                             //更新change总金额
-                            $this->change->updateChangeTotalamount($cid,$totalamount);
+                            $this->change->updateChangeTotalamount($cid,todecimal($totalamount,$decimalnum['costdnum']));
 
                         }elseif(isset($_POST['back']) && $_POST['back'] == 2){
                             //退回到提交人,重新上报
@@ -772,7 +903,7 @@ class ChangeController extends DooController
                             $clist = $this->change->getChangeAuditListbycid($cid);
                             $totalamount = 0;
                             foreach($clist as $ck => $cv){
-                                $totalamount += floatval($cv['unitprice'])*floatval($cv['camount']);
+                                $totalamount += todecimal(floatval($cv['unitprice'])*floatval($cv['camount']),$decimalnum['costdnum']);
 
                                 $cauditlist = new ChangeAuditList();
                                 $cauditlist->id = $cv['id'];
@@ -785,7 +916,7 @@ class ChangeController extends DooController
                             $changes = new Change();
                             $changes->cid = $cid;
                             $changes->status = 'back';
-                            $changes->totalamount = $totalamount;
+                            $changes->totalamount = todecimal($totalamount,$decimalnum['costdnum']);
                             $changes->update();
                         }
                     }elseif($status == 'checkno'){
@@ -863,40 +994,44 @@ class ChangeController extends DooController
                                 </thead>
 							<tbody id="list">';
                 if (!empty($clist)) {
-                    include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
                     foreach ($clist as $ck => $cv) {
                         $osum = floatval($cv['unitprice']) * floatval($cv['oamount']);
+                        $osum = $cv['lid'] != 0 ? todecimal($osum,$decimalnum['costdnum']) : $osum;
                         $clist[$ck]['osum'] = $osum;
                         $ototalnum += $osum;
 
-                        $csum = floatval($cv['unitprice']) * floatval($cv['camount']);
+                        $csum = todecimal(floatval($cv['unitprice']) * floatval($cv['camount']),$decimalnum['costdnum']);
                         $clist[$ck]['csum'] = $csum;
                         $ctotalnum += $csum;
 
-                        if($cv['samount'] != ''){
-                            $ssum = floatval($cv['unitprice'])*floatval($cv['samount']);
-                            $samount = $cv['samount'];
-                            $stotalnum += $ssum;
-                        }else{
-                            $ssum = $csum;
-                            $samount = $cv['camount'];
-                            $stotalnum += $ssum;
-                        }
-                        $listtablehtml .= '<tr class="clist"><td>' . $cv['lnum'] . '</td><td>' . $cv['lname'] . '</td><td>' . $cv['unit'] . '</td><td>' . tofloat($cv['unitprice']) . '</td><td>' . $cv['oamount'] . '</td><td>' . tofloat($osum) . '</td><td>' . $cv['camount'] . '</td><td>' . tofloat($csum) . '</td>';
+                        $listtablehtml .= '<tr class="clist"><td>' . $cv['lnum'] . '</td><td>' . $cv['lname'] . '</td><td>' . $cv['unit'] . '</td><td>' . tofloat($cv['unitprice']) . '</td><td>' . $cv['oamount'] . '</td><td>' . $osum . '</td><td>' . $cv['camount'] . '</td><td>' . $csum . '</td>';
 
                         $userjson = json_decode($cv['auditjson'], true);
                         $tdhtml = '';
                         foreach ($userjson as $uk => $uv) {
                             if ($uv['uid'] == $checkinguid) {
-                                $tdhtml .= '<td><input class="form-control input-sm" type="number" min="0" step="0.001" listid="'.$cv['id'].'" value="'.$samount.'" placeholder="请输入变更数量"></td><td class="cnum">'.tofloat($ssum).'</td>';
+                                if($uv['ucamount'] != '') {
+                                    $ssum = todecimal(floatval($cv['unitprice'])*floatval($uv['ucamount']),$decimalnum['costdnum']);
+                                    $samount = $uv['ucamount'];
+                                    $stotalnum += $ssum;
+                                }else if ($cv['samount'] != ''){
+                                    $ssum = todecimal(floatval($cv['unitprice'])*floatval($cv['samount']),$decimalnum['costdnum']);
+                                    $samount = $cv['samount'];
+                                    $stotalnum += $ssum;
+                                }else{
+                                    $ssum = $csum;
+                                    $samount = $cv['camount'];
+                                    $stotalnum += $ssum;
+                                }
+                                $tdhtml .= '<td><input class="form-control input-sm" type="text" onkeyup="RegNum(this,event,'.$decimalnum['numberdnum'].')" listid="'.$cv['id'].'" value="'.$samount.'" placeholder="请输入变更数量"></td><td class="cnum">'.$ssum.'</td>';
                             }else{
                                 if($uv['ucamount'] != ''){
-                                    $usum = floatval($cv['unitprice'])*floatval($uv['ucamount']);
-                                    $tdhtml .= '<td>'.$uv['ucamount'].'</td><td>'.tofloat($usum).'</td>';
+                                    $usum = todecimal(floatval($cv['unitprice'])*floatval($uv['ucamount']),$decimalnum['costdnum']);
+                                    $tdhtml .= '<td>'.$uv['ucamount'].'</td><td>'.$usum.'</td>';
                                     //update utotalarr value=>usum
                                     foreach($utotalarr as $tk => $tv){
                                         if($tv['uid'] == $uv['uid']){
-                                            $utotalarr[$tk]['usum'] = floatval($utotalarr[$tk]['usum'])+$usum;
+                                            $utotalarr[$tk]['usum'] = todecimal(floatval($utotalarr[$tk]['usum'])+$usum,$decimalnum['costdnum']);
                                             break;
                                         }
                                     }
@@ -908,9 +1043,9 @@ class ChangeController extends DooController
                         $listtablehtml = $listtablehtml.$tdhtml.'</tr>';
                     }
                 }
-                $listtablehtml .= '</tbody><tfoot><tr class="info"><td>合计</td><td></td><td></td><td></td><td></td><td>'.tofloat($ototalnum).'</td><td></td><td>'.tofloat($ctotalnum).'</td>';
+                $listtablehtml .= '</tbody><tfoot><tr class="info"><td>合计</td><td></td><td></td><td></td><td></td><td>'.$ototalnum.'</td><td></td><td>'.todecimal($ctotalnum,$decimalnum['costdnum']).'</td>';
                 foreach($utotalarr as $tk => $tv){
-                    $addtd = $tv['status'] == 'checking' ? tofloat($stotalnum) : ($tv['usum'] != 0 ? tofloat($tv['usum']) : '');
+                    $addtd = $tv['status'] == 'checking' ? todecimal($stotalnum,$decimalnum['costdnum']) : ($tv['usum'] != 0 ? todecimal($tv['usum'],$decimalnum['costdnum']) : '');
                     $checkinghtml = $tv['status'] == 'checking' ? ' class="utotalnum"': '';
                     $listtablehtml .= '<td></td><td'. $checkinghtml .'>'.$addtd.'</td>';
                 }
@@ -946,6 +1081,15 @@ class ChangeController extends DooController
                 $auditlist2 = $this->change->getChangeAuditsbySort($cid);
                 $this->data['auditlist'] = $auditlist2;
 
+                //判断是否为本标段终审人
+                $auditArray =  $this->change->getChangeAuditLastUser($cid);
+                $this->data['isenduser'] = $auditArray['uid'] == $this->auth->getUid() ? 1 : 0;
+
+                $cfuhashids = new Hashids\Hashids('cfileupload', 15);
+                $this->data['uid'] = $this->auth->getUid();
+                $verification = $cfuhashids->encode($pmArray['pmid'],$this->auth->getUid());
+                $this->data['verification'] = $verification;
+
                 $this->render('biangeng-approval', $this->data, TRUE);exit;
             }
         }
@@ -968,10 +1112,41 @@ class ChangeController extends DooController
                     exit('不是原报人无法修改或重新上报变更令');
                 }
 
+                include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
+                //取标段位数设置
+                $decimalnum = $this->getdecimal($changeArray['decimalnum']);
+                $this->data['costdnum'] = $decimalnum['costdnum'];
+                $this->data['numberdnum'] = $decimalnum['numberdnum'];
+
+                //删除变更令
+                if(isset($_POST['delete']) && !empty($_POST['delete']) && $changeArray['status'] == 'uncheck'){
+                    //需要删除变更令表,清单表,变更审批人表,附件表及附件
+                    $this->change->delChangebyCid($cid);
+
+                    $this->change->delChangeAuditListbyCid($cid);
+
+                    $this->change->delChangeAuditbyCid($cid);
+
+                    $changeAttList = $this->change->getChangeAttListbycid($cid);
+                    if(!empty($changeAttList)){
+                        Doo::loadModel('changeatt');
+                        include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
+                        $pathf = DOO::conf()->SITE_PATH;
+                        foreach($changeAttList as $k => $v){
+                            $this->IoHandler = new IoHandler();
+                            $this->IoHandler->DeleteFile($pathf.$v['filepath']);
+
+                            $changeAtt = new ChangeAtt();
+                            $changeAtt->delChangeAttbyFid($v['id']);
+                        }
+                    }
+                    return '/change/index/tender/'.$pmArray['pmid'];
+                }
+
                 //表单提交
                 if(isset($_POST['pnum'])){
                     if(isset($_POST['status']) && $_POST['status'] == 'checking'){
-                        if(empty($_POST['pnum']) || !isset($_POST['pname']) || empty($_POST['pname']) || !isset($_POST['mnum']) || empty($_POST['mnum']) || !isset($_POST['description']) || empty($_POST['description']) || !isset($_POST['changeaudit']) || empty($_POST['changeaudit']) || !isset($_POST['changelist']) || !isset($_POST['changewhitelist'])){
+                        if(empty($_POST['pnum']) || !isset($_POST['pname']) || empty($_POST['pname']) || !isset($_POST['description']) || empty($_POST['description']) || !isset($_POST['changeaudit']) || empty($_POST['changeaudit']) || !isset($_POST['changelist']) || !isset($_POST['changewhitelist'])){
                             exit('参数缺失或为空');
                         }
                         if(empty($_POST['changelist']) && empty($_POST['changewhitelist'])){
@@ -1048,7 +1223,7 @@ class ChangeController extends DooController
 
                     //先删除变更令所有清单列,再重新添加
                     $cauditlist2 = new ChangeAuditList();
-                    $this->change->delChangeAuditListbyCid($cid);
+                    $cauditlist2->delChangeAuditListbyCid($cid);
 
 
                     //清单添加,不分顺序,最终展示按清单编号排序
@@ -1057,9 +1232,9 @@ class ChangeController extends DooController
                         $clist = explode(',',$_POST['changelist']);
                         foreach($clist as $ck => $cv){
                             $clistarr = explode('_',$cv);
-                            if(!empty($clistarr[1]) && is_numeric($clistarr[1])){
+                            if(is_numeric($clistarr[1])){
                                 $changelistArr = $this->change->getChangeListbyid($clistarr[0]);
-                                $total += floatval($changelistArr['unitprice'])*floatval($clistarr[1]);
+                                $total += todecimal(floatval($changelistArr['unitprice'])*floatval($clistarr[1]),$decimalnum['costdnum']);
 
                                 $cauditlist = new ChangeAuditList();
                                 $cauditlist->pid = $pmArray['pid'];
@@ -1082,8 +1257,8 @@ class ChangeController extends DooController
                         $wlist = explode(',',$_POST['changewhitelist']);
                         foreach($wlist as $wk => $wv){
                             $wlistarr = explode(';',explode('->',$wv)[1]);
-                            if(!empty($wlistarr[0]) && !empty($wlistarr[1]) && !empty($wlistarr[3]) && !empty($wlistarr[4]) && !empty($wlistarr[5]) && is_numeric($wlistarr[3]) && is_numeric($wlistarr[4]) && is_numeric($wlistarr[5])){
-                                $total += floatval($wlistarr[3])*floatval($wlistarr[5]);
+                            if(!empty($wlistarr[0]) && !empty($wlistarr[1]) && is_numeric($wlistarr[3]) && is_numeric($wlistarr[4]) && is_numeric($wlistarr[5])){
+                                $total += todecimal(floatval($wlistarr[3])*floatval($wlistarr[5]),$decimalnum['costdnum']);
 
                                 $cauditlist = new ChangeAuditList();
                                 $cauditlist->pid = $pmArray['pid'];
@@ -1104,19 +1279,20 @@ class ChangeController extends DooController
                     }
 
                     //变更令添加变更总金额
-                    $this->change->updateChangeTotalamount($cid,$total);
+                    $this->change->updateChangeTotalamount($cid,todecimal($total,$decimalnum['costdnum']));
 
                     $status = isset($_POST['status']) && $_POST['status'] == 'checking' ? 3 : 2;
-                    return '/change/index/'.$pmArray['pmid'].'/'.$status;
+                    return '/change/index/tender/'.$pmArray['pmid'].'/status/'.$status;
                 }
 
-                $this->data['companylist'] = $this->change->getCompanyList();
+                $this->data['companylist'] = $this->change->getCompanyList($pmArray['pmid']);
 
                 $list = $this->change->getChangeListbyPmid($pmArray['pmid']);
                 if(!empty($list)){
                     foreach($list as $k => $v){
                         $totalamount = floatval($v['unitprice'])*floatval($v['amount']);
                         $list[$k]['totalamount'] = $totalamount;
+                        $list[$k]['index'] = $k+1;
                     }
                 }
 
@@ -1182,10 +1358,8 @@ class ChangeController extends DooController
                     $addnum = 1;
                     foreach($clist as $ck => $cv){
                         $osum = floatval($cv['unitprice'])*floatval($cv['oamount']);
-                        $clist[$ck]['osum'] = $osum;
-                        $ototalnum += $osum;
 
-                        $csum = floatval($cv['unitprice'])*floatval($cv['camount']);
+                        $csum = todecimal(floatval($cv['unitprice'])*floatval($cv['camount']),$decimalnum['costdnum']);
                         $clist[$ck]['csum'] = $csum;
                         $ctotalnum += $csum;
 
@@ -1193,19 +1367,22 @@ class ChangeController extends DooController
                             array_push($changeidlist,$cv['lid']);
                             array_push($changelist,$cv['lid'].'_'.$cv['camount']);
                         }else{
+                            $osum = todecimal($osum,$decimalnum['costdnum']);
+
                             $clist[$ck]['add'] = $addnum;
                             array_push($changewhitelist,$addnum.'->'.$cv['lnum'].';'.$cv['lname'].';'.$cv['unit'].';'.$cv['unitprice'].';'.$cv['oamount'].';'.$cv['camount']);
                             $addnum++;
                             $clist[$ck]['changeunit'] = $this->changeUnit;
                         }
+                        $clist[$ck]['osum'] = $osum;
+                        $ototalnum += $osum;
                     }
                 }
-                include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
                 $this->data['changelist'] = implode(',',$changelist);
                 $this->data['changewhitelist'] = implode(',',$changewhitelist);
                 $this->data['changeidlist'] = implode(',',$changeidlist);
-                $this->data['ototalnum'] = tofloat($ototalnum);
-                $this->data['ctotalnum'] = tofloat($ctotalnum);
+                $this->data['ototalnum'] = $ototalnum;
+                $this->data['ctotalnum'] = todecimal($ctotalnum,$decimalnum['costdnum']);
                 $this->data['clist'] = $clist;
 
                 //获取已添加的附件列表
@@ -1215,6 +1392,7 @@ class ChangeController extends DooController
                     foreach ($attlist as $k => $v) {
                         //加密下载的id
                         $fid = $this->__hashids->encode($v['id']);
+                        $showattlist[$k]['fid'] = $v['id'];
                         $showattlist[$k]['uid'] = $v['uid'];
                         $showattlist[$k]['sort'] = $k + 1;
                         $showattlist[$k]['downurl'] = '/change/file/download/' . $fid;
@@ -1233,6 +1411,20 @@ class ChangeController extends DooController
                 $this->data['userArray'] = $this->auth->getRowByUid($this->auth->getUid());
                 $this->data['list'] = $list;
                 $this->data['year'] = date('Y',time());
+
+                //输出重新上报的审批列表信息
+                if($changeArray['status'] == 'back'){
+                    $auditlist2 = $this->change->getChangeAuditsbySort($cid);
+                    $this->data['auditlist2'] = $auditlist2;
+                }
+
+                $cfuhashids = new Hashids\Hashids('cfileupload', 15);
+                $this->data['uid'] = $this->auth->getUid();
+                $verification = $cfuhashids->encode($pmArray['pmid'],$this->auth->getUid());
+                $this->data['verification'] = $verification;
+
+//                $this->data['stepnumdnum'] = $this->makestep(intval($decimalnum['numberdnum']));
+
                 $this->render('biangeng-update', $this->data, TRUE);
             }else{
                 return '/change/detail/' . $cid;
@@ -1261,9 +1453,13 @@ class ChangeController extends DooController
             }
             if(!empty($_POST['ac'])){
                 $addarr = $_POST['ac'];
+                $pmArray = $this->actmeasure->getRowByPmid($_POST['pmid']);
                 foreach($addarr as $ak => $av){
                     if(!empty(trim($av))){
                         $company2 = new ChangeCompany();
+                        $company2->pid = $pmArray['pid'];
+                        $company2->stid = $pmArray['stid'];
+                        $company2->pmid = $pmArray['pmid'];
                         $company2->name = $av;
                         $id = $company2->insert();
                         $selecthtml .= '<option value="'.$id.'">'.$av.'</option>';
@@ -1302,6 +1498,13 @@ class ChangeController extends DooController
     }
 
     public function fileUpload(){
+//        session_write_close();
+//        if(isset($_POST['sessionid'])){
+//            session_id($_POST['sessionid']);
+//            setcookie('PHPSESSID',$_POST['sessionid']);
+//            session_start();
+//        }
+
         if(!isset($this->params['pmid']) && !is_numeric($this->params['pmid'])){
             exit(json_encode(array('success' => false, 'msg' => '参数有误')));
         }
@@ -1412,6 +1615,61 @@ class ChangeController extends DooController
         exit(json_encode(array('code' => 400,'msg' => '判断参数有误')));
     }
 
+    //设置小数位数
+    public function setDecimalnum(){
+        $num = array(0,1,2,3,4,5,6);
+        if(isset($_POST['costdnum']) && isset($_POST['numberdnum']) && in_array(intval($_POST['costdnum']), $num) && in_array(intval($_POST['numberdnum']), $num)){
+
+            $dnum = intval($_POST['costdnum']).'_'.intval($_POST['numberdnum']);
+            //判断更改类型
+            if(isset($_POST['pmid']) && is_numeric($_POST['pmid'])){
+                $pmArray = $this->actmeasure->getRowByPmid($_POST['pmid']);
+                if(!empty($pmArray)){
+                    $this->actmeasure->updateChangeDecimalNum($_POST['pmid'],$dnum);
+                    exit(json_encode(array('code' => 200,'msg' => '更新小数位数成功')));
+                }else{
+                    exit(json_encode(array('code' => 400,'msg' => '不存在此标段')));
+                }
+            }elseif(isset($_POST['cid']) && is_numeric($_POST['cid'])){
+                $changeArray = $this->change->getChangebyid($_POST['cid']);
+                if(!empty($changeArray)){
+                    $this->change->updateChangeDecimalNum($_POST['cid'],$dnum);
+                    exit(json_encode(array('code' => 200,'msg' => '更新小数位数成功')));
+                }else{
+                    exit(json_encode(array('code' => 400,'msg' => '不存在此变更令')));
+                }
+            }
+        }
+        exit(json_encode(array('code' => 400,'msg' => '参数或小数位数有误')));
+    }
+
+    //根据位数生成几位小数,0位-》1,1位-》0.1 ,5位-》0.00001
+    function makestep($num){
+        if($num >= 1 && $num <= 6){
+            $arr = [];
+            for($i=0;$i< $num;$i++){
+                if($i != $num-1){
+                    $arr[$i] = 0;
+                }else{
+                    $arr[$i] = 1;
+                }
+            }
+        return '0.'.implode('',$arr);
+    }else{
+            return 1;
+        }
+    }
+
+    //获取costdnum和numberdnum
+    function getdecimal($arr){
+        //取变更令位数设置
+        $decimalnum = explode('_',$arr);
+        $decimal = array();
+        $decimal['costdnum'] = $decimalnum[0];
+        $decimal['numberdnum'] = $decimalnum[1];
+        return $decimal;
+    }
+
     public function substr_replace_cn($string, $repalce = '*', $start = 0, $len = 0)
     {
         $count = mb_strlen($string, 'UTF-8'); //此处传入编码,建议使用utf-8。此处编码要与下面mb_substr()所使用的一致

+ 1 - 1
protected/controller/SProjectController.php

@@ -677,7 +677,7 @@ class SProjectController extends DooController
      */
     public function proSectionGetFiles()
     {
-        $attaArray = $this->itemfile->getItemFile($this->params['iaid']);
+        $attaArray = $this->itemfle->getItemFile($this->params['iaid']);
         $this->file_down($attaArray['filepath'], $attaArray['filesize'], $attaArray['filename'] . '.' . $attaArray['fileext']);
         return;
     }

+ 108 - 0
protected/controller/UpgradeController.php

@@ -76,4 +76,112 @@ class UpgradeController extends DooController
         echo json_encode(array('onoff' => $stronoff), JSON_UNESCAPED_UNICODE);
         die();
     }
+
+
+    public function fileUpload(){
+        Doo::loadClass('actmeasure');
+        Doo::loadClass('change');
+        Doo::loadClass('Hashids/Hashids');
+        $actmeasure = new actMeasure();
+        $change = new Changes();
+        $__hashids = new Hashids\Hashids('jlzffileid', 8);
+        $cfuhashids = new Hashids\Hashids('cfileupload', 15);
+//        session_write_close();
+//        if(isset($_POST['sessionid'])){
+//            session_id($_POST['sessionid']);
+//            setcookie('PHPSESSID',$_POST['sessionid']);
+//            session_start();
+//        }
+
+        if(!isset($this->params['pmid']) && !is_numeric($this->params['pmid']) && !isset($_POST['uid']) && !isset($_POST['verification'])){
+            exit(json_encode(array('success' => false, 'msg' => '参数有误')));
+        }
+        $pmArray = $actmeasure->getRowByPmid($this->params['pmid']);
+        if(empty($pmArray)){
+            exit(json_encode(array('success' => false, 'msg' => '不存在此标段,无法上传')));
+        }
+        $verifiction = $cfuhashids->decode($_POST['verification']);
+        if($verifiction[0] != $this->params['pmid'] || $verifiction[1] != $_POST['uid']){
+            exit(json_encode(array('success' => false, 'msg' => '用户上传权限验证有误')));
+        }
+        Doo::loadClass('extras/Uploader');
+
+        $files = array();
+        $upload_dir = Doo::conf()->SITE_PATH . 'cfiles/';
+
+        $uploader = new FileUpload('uploadfile');
+
+        $intime = time();
+        $extPathdir = $upload_dir.date('Y/md/',$intime);
+        if (!$this->dir_create2($extPathdir)) {
+            $status = array('success' => FALSE, 'msg' => '文件夹创建失败');
+            echo json_encode($status, JSON_UNESCAPED_UNICODE);
+            die();
+        }
+
+        $files['filename'] = $uploader->getFileNameWithoutExt();
+        $files['fileext'] = $uploader->getExtension();
+        $files['filesize'] = $uploader->getFileSize();
+
+        $filepath = date('Ymdhis',$intime) . rand(100, 999) . '.' . $files['fileext'];
+
+        $uploader->newFileName = $filepath;
+
+        $files['filepath'] = 'cfiles/'.date('Y/md/',$intime).$filepath;
+
+        $result = $uploader->handleUpload($extPathdir);
+
+        if (!$result) {
+            exit(json_encode(array('success' => false, 'msg' => $uploader->getErrorMsg())));
+        }
+        $files['pid'] = $pmArray['pid'];
+        $files['stid'] = $pmArray['stid'];
+        $files['pmid'] = $pmArray['pmid'];
+        $files['cid'] = isset($this->params['cid']) && is_numeric($this->params['cid']) ? $this->params['cid'] : 0;
+        $files['uid'] = $_POST['uid'];
+        $files['intime'] = $intime;
+        $result2 = $change->insertChangeAtt($files);
+        if(empty($result2)){
+            exit(json_encode(array('success' => false, 'msg' => '添加到数据库发生错误')));
+        }
+        $files2 = array();
+        $files2['id'] = $result2;
+        //加密下载的id
+        $fid = $__hashids->encode($result2);
+        $files2['downurl'] = '/change/file/download/'.$fid;
+        $files2['filename'] = $files['filename'].'.'.$files['fileext'];
+        $files2['time'] = date('Y-m-d H:i',$intime);
+        $files2['size'] = $this->changefilesize($files['filesize']);
+        echo json_encode(array('success' => true, 'files' => $files2));
+    }
+
+    function dir_create2($path, $mode = 0777)
+    {
+        if (is_dir($path))
+            return TRUE;
+        $path = $this->dir_path($path);
+        $parent = dirname($path);
+        if (!is_dir($parent)){
+            @mkdir($parent, 0777);
+            @chmod($parent, 0777);
+        }
+        @mkdir($path, 0777);
+        @chmod($path, 0777);
+        return is_dir($path);
+    }
+
+    function dir_path($path)
+    {
+        $path = str_replace('\\', '/', $path);
+        if (substr($path, -1) != '/')
+            $path = $path . '/';
+        return $path;
+    }
+
+    //字节转换
+    function changefilesize($value){
+        $units = array(' B', ' KB', ' MB', ' GB', ' TB');
+        for ($i = 0; $value >= 1024 && $i < 4; $i++) $value /= 1024;
+        return round($value, 2).$units[$i];
+    }
 }

+ 3 - 1
protected/model/change.php

@@ -13,6 +13,7 @@ class Change extends DooModel {
     public $pmid;
     public $uid;
     public $pnum;
+    public $bnum;
     public $pname;
     public $mnum;
     public $odname;
@@ -29,13 +30,14 @@ class Change extends DooModel {
     public $bear;
     public $totalamount;
     public $times;
+    public $decimalnum;
     public $status;
     public $intime;
     public $cintime;
     public $sintime;
     public $_table = 'jl_change';
     public $_primarykey = 'cid';
-    public $_fields = array('cid', 'pid', 'stid', 'pmid', 'uid', 'pnum', 'pname', 'mnum', 'odname', 'onum', 'cdname', 'cnum', 'description', 'basis', 'remarks', 'ctype', 'category', 'cnature', 'companyid', 'bear', 'totalamount', 'times', 'status', 'intime', 'cintime', 'sintime');
+    public $_fields = array('cid', 'pid', 'stid', 'pmid', 'uid', 'pnum', 'bnum', 'pname', 'mnum', 'odname', 'onum', 'cdname', 'cnum', 'description', 'basis', 'remarks', 'ctype', 'category', 'cnature', 'companyid', 'bear', 'totalamount', 'times', 'decimalnum', 'status', 'intime', 'cintime', 'sintime');
 
     public function __construct() {
         parent::setupModel(__CLASS__);

+ 5 - 0
protected/model/changeatt.php

@@ -26,6 +26,11 @@ class ChangeAtt extends DooModel {
         parent::setupModel(__CLASS__);
     }
 
+    public function delChangeAttbyFid($fid)
+    {
+        return $this->delete(array('where' => 'id=?', 'param' => array($fid), 'asArray' => TRUE));
+    }
+
 }
 
 ?>

+ 5 - 0
protected/model/changeauditlist.php

@@ -29,6 +29,11 @@ class ChangeAuditList extends DooModel {
         parent::setupModel(__CLASS__);
     }
 
+    public function delChangeAuditListbyCid($cid)
+    {
+        return $this->delete(array('where' => 'cid=?', 'param' => array($cid)));
+    }
+
 }
 
 

+ 4 - 2
protected/model/changecompany.php

@@ -8,12 +8,14 @@ Doo::loadCore('db/DooModel');
 class ChangeCompany extends DooModel {
 
     public $id;
-    public $cid;
+    public $pid;
+    public $stid;
+    public $pmid;
     public $name;
     public $csort;
     public $_table = 'jl_change_company';
     public $_primarykey = 'id';
-    public $_fields = array('id', 'cid', 'name', 'csort');
+    public $_fields = array('id', 'pid', 'stid', 'pmid', 'name', 'csort');
 
     public function __construct() {
         parent::setupModel(__CLASS__);

+ 2 - 1
protected/model/measure.php

@@ -14,9 +14,10 @@ class Measure extends DooModel {
     public $pmname;
     public $contracttotal;
     public $intime;
+    public $cdecimalnum;
     public $_table = 'jl_project_measure';
     public $_primarykey = 'pmid';
-    public $_fields = array('pmid', 'pid', 'stid', 'uid', 'pmname', 'contracttotal', 'intime');
+    public $_fields = array('pmid', 'pid', 'stid', 'uid', 'pmname', 'contracttotal', 'intime', 'cdecimalnum');
 
     public function __construct() {
         parent::setupModel(__CLASS__);

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 9 - 2
protected/module/admin/controller/ProController.php


+ 5 - 1
protected/plugin/TemplateTag.php

@@ -3,7 +3,7 @@
 //register global/PHP functions to be used with your template files
 //You can move this to common.conf.php   $config['TEMPLATE_GLOBAL_TAGS'] = array('isset', 'empty');
 //Every public static methods in TemplateTag class (or tag classes from modules) are available in templates without the need to define in TEMPLATE_GLOBAL_TAGS
-Doo::conf()->TEMPLATE_GLOBAL_TAGS = array('upper', 'tofloat', 'sample_with_args', 'debug', 'url', 'url2', 'function_deny', 'zhisset', 'in_phparray', 'empty', 'formatDate', 'ToChinaseNum');
+Doo::conf()->TEMPLATE_GLOBAL_TAGS = array('upper', 'tofloat', 'todecimal', 'sample_with_args', 'debug', 'url', 'url2', 'function_deny', 'zhisset', 'in_phparray', 'empty', 'formatDate', 'ToChinaseNum');
 
 /**
   Define as class (optional)
@@ -21,6 +21,10 @@ function tofloat($str) {
     return sprintf("%.2f", $str);
 }
 
+function todecimal($num,$decimal) {
+	return sprintf("%.".$decimal."f", $num);
+}
+
 function sample_with_args($str, $prefix) {
     return $str . ' with args: ' . $prefix;
 }

+ 106 - 32
protected/view/biangeng-approval.html

@@ -47,9 +47,11 @@
 		<div class="mainContent">
 			<input id="pmid" type="hidden" value="{{pmArray.pmid}}">
 			<input id="cid" type="hidden" value="{{cid}}">
+			<input id="uid" type="hidden" value="{{uid}}">
+			<input id="verification" type="hidden" value="{{verification}}">
 			<div class="title" id="xinxi">
 				<div class="bg-top-btn affix"><button class="btn btn-success showapproval" status="pass">通过</button>&nbsp;<button class="btn btn-warning showapproval" status="back">退回</button>&nbsp;<button class="btn btn-danger showapproval" status="stop">不通过</button></div>
-				<h1><a href="/change/index/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;{{changeArray.pnum}}</h1>
+				<h1><a href="/change/index/tender/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;{{changeArray.pnum}}</h1>
 			</div>
 			<div class="row">
 				<div class="col-md-2" id="navbar-example">
@@ -94,7 +96,7 @@
 									<input class="form-control" placeholder="" value="{{changeArray.cnum}}" type="text" readonly disabled>
 								</div>
 							</div>
-							<div class="col-md-4">
+							<div class="col-md-4" style="z-index:999;">
 								<div class="form-group">
 									<label>工程变更理由及内容</label>
 										    <textarea class="form-control" rows="6" readonly disabled>{{changeArray.description}}</textarea>
@@ -202,11 +204,22 @@
 				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
 				<h4 class="modal-title">审批变更</h4>
 			</div>
-			<form method="post">
+			<form method="post" onsubmit="return checksubmit();">
+				<input type="hidden" id="approvalstatus" value="1">
 				<input type="hidden" name="approval" value="1">
 				<input type="hidden" name="clist" id="oneclist" value="">
 				<input type="hidden" name="lastuid" value="{{lastuid}}">
 			<div class="modal-body">
+				<!-- if {{isenduser}} == 1 -->
+				<div class="form-group approval-success" style="display: none">
+					<label>申请编号</label>
+					<input class="form-control" value="{{changeArray.pnum}}" readonly type="text">
+				</div>
+				<div class="form-group approval-success" style="display: none">
+					<label>批复编号</label>
+					<input class="form-control" id="batchnumber" name="bnum" value="{{changeArray.pnum}}" type="text">
+				</div>
+				<!-- endif -->
 				<div class="form-group">
 					<label>审批意见</label>
 					<textarea class="form-control" name="desc" rows="4"></textarea>
@@ -242,15 +255,15 @@
 				<h4 class="modal-title" id="myModalLabel">附件</h4>
 			</div>
 			<div class="modal-body">
-				<div class="row" style="padding-top:10px;">
+				<p>上传文件大小最大:10MB</p>
+				<div class="row">
 					<div class="col-xs-2">
 						<button id="uploadBtn" class="btn btn-large btn-primary">选择文件</button>
 					</div>
-					<div class="col-xs-10">
-						<div id="progressOuter" class="progress progress-striped active" style="display:none;">
-							<div id="progressBar" class="progress-bar progress-bar-success"  role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
-							</div>
-						</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div id="progressBox"> </div>
 					</div>
 				</div>
 				<div class="row" style="padding-top:10px;">
@@ -359,6 +372,8 @@
 				$('#approval').find('.alert-success').show();
 				$('#approval').find('.alert-warning').hide();
 				$('#approval').find('.alert-danger').hide();
+				$('#approval').find('.approval-success').show();
+				$('#approvalstatus').val(1);
 				$('#backform').hide();
 			}else if(status == 'back'){
 				$('#submitform').find('.btn-success').hide();
@@ -367,6 +382,8 @@
 				$('#approval').find('.alert-success').hide();
 				$('#approval').find('.alert-warning').show();
 				$('#approval').find('.alert-danger').hide();
+				$('#approval').find('.approval-success').hide();
+				$('#approvalstatus').val(2);
 				$('#backform').show();
 			}else{
 				$('#submitform').find('.btn-success').hide();
@@ -375,6 +392,8 @@
 				$('#approval').find('.alert-success').hide();
 				$('#approval').find('.alert-warning').hide();
 				$('#approval').find('.alert-danger').show();
+				$('#approval').find('.approval-success').hide();
+				$('#approvalstatus').val(3);
 				$('#backform').hide();
 			}
 			var clist = new Array();
@@ -389,9 +408,6 @@
 
 		//文件上传
 		var btn = document.getElementById('uploadBtn'),
-				wrap = document.getElementById('pic-progress-wrap'),
-				progressBar = document.getElementById('progressBar'),
-				progressOuter = document.getElementById('progressOuter'),
 				msgBox = document.getElementById('msgBox'),
 				filenum = $('#filesshow tr').length+1;
 
@@ -404,48 +420,78 @@
 			hoverClass: 'hover',
 			focusClass: 'focus',
 			responseType: 'json',
-			startXHR: function() {
-				progressOuter.style.display = 'block'; // make progress bar visible
-				this.setProgressBar( progressBar );
-			},
-			onSubmit: function() {
-				msgBox.innerHTML = ''; // empty the message box
-				btn.innerHTML = '上传中...'; // change button text to "Uploading..."
+			multipleSelect: true,
+			multiple: true,
+			maxSize: 10240,
+			data:{uid:$('#uid').val(),verification:$('#verification').val()},
+			onSubmit: function(filename, extension) {
+				var progress = document.createElement('div'),
+						bar = document.createElement('div'),
+						fileSize = document.createElement('div'),
+						wrapper = document.createElement('div'),
+						progressBox = document.getElementById('progressBox');
+
+				progress.className = 'progress progress-striped';
+				bar.className = 'progress-bar progress-bar-success';
+				fileSize.className = 'size';
+				wrapper.className = 'wrapper';
+
+				progress.appendChild(bar);
+				wrapper.innerHTML = '<div class="name">'+filename+'</div>';
+				wrapper.appendChild(fileSize);
+				wrapper.appendChild(progress);
+				progressBox.appendChild(wrapper);
+
+				this.setProgressBar(bar);
+				this.setFileSizeBox(fileSize);
+				this.setProgressContainer(wrapper);
 			},
 			onComplete: function( filename, response ) {
-				btn.innerHTML = '选择文件';
-				progressOuter.style.display = 'none'; // hide progress bar when upload is completed
 
 				if ( !response ) {
 					toastr.error('无法上传文件');
 					msgBox.innerHTML = '无法上传文件';
 					return;
 				}
-
+				var msgBoxfiles = document.createElement('div');
+				msgBoxfiles.className = 'msg';
 				if ( response.success === true ) {
-					toastr.success('附件上传成功。');
-					msgBox.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>' + ' 上传成功。';
+					toastr.success(filename + ' 上传成功。');
+					msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>' + ' 上传成功。';
+					msgBox.appendChild(msgBoxfiles);
 					var filestr = '<tr><td>'+ filenum +'</td><td><a href="'+ response.files.downurl +'">'+ response.files.filename +'</a></td><td>'+ response.files.size +'</td><td>'+ response.files.time +'</td><td><a id="delatt_'+ response.files.id +'" file_id="'+ response.files.id +'" class="btn btn-default btn-sm" title="删除附件"><span class="glyphicon glyphicon-trash text-danger"></span></a></td></tr>';
 					$('#filesshow').append(filestr);
 					filenum++;
 					setTimeout(function(){
-						msgBox.innerHTML = '';
+						msgBox.removeChild(msgBoxfiles);
 					},3000);
 				} else {
 					if ( response.msg )  {
-						toastr.error(response.msg);
-						msgBox.innerHTML = escapeTags( response.msg );
-
+						toastr.error(filename + ' ' + response.msg);
+						msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong> ' + response.msg;
+						msgBox.appendChild(msgBoxfiles);
+						setTimeout(function(){
+							msgBox.removeChild(msgBoxfiles);
+						},3000);
 					} else {
-						toastr.error('发生错误,上传失败。');
-						msgBox.innerHTML = '发生错误,上传失败。';
+						toastr.error(filename + ' 发生错误,上传失败。');
+						msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>'+ ' 发生错误,上传失败。';
+						msgBox.appendChild(msgBoxfiles);
+						setTimeout(function(){
+							msgBox.removeChild(msgBoxfiles);
+						},3000);
 					}
 				}
 			},
 			onError: function() {
-				progressOuter.style.display = 'none';
+				var msgBoxfiles = document.createElement('div');
+				msgBoxfiles.className = 'msg';
 				toastr.error('无法上传文件');
-				msgBox.innerHTML = '无法上传文件';
+				msgBoxfiles.innerHTML = '无法上传文件';
+				msgBox.appendChild(msgBoxfiles);
+				setTimeout(function(){
+					msgBox.removeChild(msgBoxfiles);
+				},3000);
 			}
 		});
 		//删除附件
@@ -468,6 +514,34 @@
 				}
 			})
 		});
+
+		//让回车提交表单方法失效并改成光标往下
+		$("body").on('keypress','input',function (e) {
+			var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
+			if (keyCode == 13) {
+				var inputs = $('#tablelist input');
+				for(var i = 0;i<inputs.length;i++){
+					// 如果是最后一个,则焦点回到第一个
+					if(i==(inputs.length-1)){
+						inputs[0].focus(); break;
+					}else if(this == inputs[i]){
+						inputs[i+1].focus(); break;
+					}
+				}
+				return false;
+			} else {
+				return true;
+			}
+		});
 	});
+
+	function checksubmit() {
+		if($('#approvalstatus').val() == 1){
+			if($('#batchnumber').length >0 && $.trim($('#batchnumber').val()) == ''){
+				toastr.error('批复编号不能为空');
+				return false;
+			}
+		}
+	}
 </script>
 </body>

+ 2 - 2
protected/view/biangeng-dealbills.html

@@ -20,7 +20,7 @@
 		<!--内容-->
 		<div class="mainContent">
 			<div class="title" id="xinxi">
-				<h1><a href="/change/index/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;{{pmArray.pmname}} 签约清单</h1>
+				<h1><a href="/change/index/tender/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;{{pmArray.pmname}} 清单</h1>
 			</div>
 			<table class="table table-bordered">
 				<thead>
@@ -29,7 +29,7 @@
 				<tbody>
 				<!-- if !empty({{list}}) -->
 				<!-- loop list -->
-				<tr><td>{{list' value.lnum}}</td><td>{{list' value.lname}}</td><td>{{list' value.unit}}</td><td>{{tofloat(list' value.unitprice)}}</td><td>{{list' value.amount}}</td><td>{{tofloat(list' value.totalamount)}}</td></tr>
+				<tr><td>{{list' value.lnum}}</td><td>{{list' value.lname}}</td><td>{{list' value.unit}}</td><td>{{tofloat(list' value.unitprice)}}</td><td>{{list' value.amount}}</td><td>{{list' value.totalamount}}</td></tr>
 				<!-- endloop -->
 				<!-- endif -->
 				</tbody>

+ 49 - 15
protected/view/biangeng-detail.html

@@ -45,8 +45,9 @@
 	<div class="mainContainer" data-spy="scroll" data-target="#navbar-example">
 		<!--内容-->
 		<div class="mainContent">
+			<input type="hidden" id="cid" value="{{changeArray.cid}}">
 			<div class="title" id="xinxi">
-				<h1><a href="/change/index/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;{{changeArray.pnum}}</h1>
+				<h1><a href="/change/index/tender/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;{{changeArray.pnum}}</h1>
 			</div>
 			<div class="row">
 				<div class="col-md-2" id="navbar-example">
@@ -62,47 +63,53 @@
 						<legend><span class="glyphicon glyphicon-info-sign"></span> 变更信息</legend>
 						<div class="row">
 							<div class="col-md-4">
+								<!-- if {{changeArray.status}} == 'checked' -->
+								<div class="form-group">
+									<label>批复编号</label>
+									<input class="form-control" value="{{changeArray.bnum}}" type="text" readonly>
+								</div>
+								<!-- endif -->
 								<div class="form-group">
 									<label>申请编号</label>
-									<input class="form-control" value="{{changeArray.pnum}}" type="text" readonly disabled>
+									<input class="form-control" value="{{changeArray.pnum}}" type="text" readonly>
 								</div>
 								<div class="form-group">
 									<label>工程名称</label>
-									<input class="form-control" value="{{changeArray.pname}}" type="text" readonly disabled>
+									<input class="form-control" value="{{changeArray.pname}}" type="text" readonly>
 								</div>
 								<div class="form-group">
 									<label>桩号</label>
-									<input class="form-control" value="{{changeArray.mnum}}" type="text" readonly disabled>
+									<input class="form-control" value="{{changeArray.mnum}}" type="text" readonly>
 								</div>
 								<div class="form-group">
 									<label>原设计图名称</label>
-									<input class="form-control" placeholder="" value="{{changeArray.odname}}" type="text" readonly disabled>
+									<input class="form-control" placeholder="" value="{{changeArray.odname}}" type="text" readonly>
 								</div>
 								<div class="form-group">
 									<label>原图号</label>
-									<input class="form-control" placeholder="" value="{{changeArray.onum}}" type="text" readonly disabled>
+									<input class="form-control" placeholder="" value="{{changeArray.onum}}" type="text" readonly>
 								</div>
 								<div class="form-group">
 									<label>变更设计图名称</label>
-									<input class="form-control" placeholder="" value="{{changeArray.cdname}}" type="text" readonly disabled>
+									<input class="form-control" placeholder="" value="{{changeArray.cdname}}" type="text" readonly>
 								</div>
 								<div class="form-group">
 									<label>变更图号</label>
-									<input class="form-control" placeholder="" value="{{changeArray.cnum}}" type="text" readonly disabled>
+									<input class="form-control" placeholder="" value="{{changeArray.cnum}}" type="text" readonly>
 								</div>
 							</div>
-							<div class="col-md-4">
+							<div class="col-md-4" style="z-index:999;">
 								<div class="form-group">
 									<label>工程变更理由及内容</label>
-										    <textarea class="form-control" rows="6" readonly disabled>{{changeArray.description}}</textarea>
+										    <textarea class="form-control" rows="6" readonly>{{changeArray.description}}</textarea>
 								</div>
 								<div class="form-group">
 									<label>工程变更合同依据</label>
-									<textarea class="form-control" rows="6" readonly disabled>{{changeArray.basis}}</textarea>
+									<textarea class="form-control" rows="6" readonly>{{changeArray.basis}}</textarea>
 								</div>
 								<div class="form-group">
 									<label>备注</label>
-									<textarea class="form-control" rows="3" readonly disabled>{{changeArray.remarks}}</textarea>
+									<textarea class="form-control" rows="3" readonly>{{changeArray.remarks}}</textarea>
 								</div>
 							</div>
 							<div class="col-md-4">
@@ -142,7 +149,7 @@
 						</div>
 					</div>
 					<div class="bg-con-warp">
-						<legend id="qingdan" ><span class="glyphicon glyphicon-list-alt"></span> 变更清单</legend>
+						<legend id="qingdan" ><span class="glyphicon glyphicon-list-alt"></span> 变更清单 <label class="legend-label"><input type="checkbox"> 查看审批过程</label></legend>
 
 						<table id="tablelist" class="table table-striped table-bordered nowrap" cellspacing="0" width="100%">
 							<thead>
@@ -151,11 +158,11 @@
 							</thead>
 							<tbody>
 							<!-- loop clist -->
-							<tr><td>{{clist' value.lnum}}</td><td>{{clist' value.lname}}</td><td>{{clist' value.unit}}</td><td>{{tofloat(clist' value.unitprice)}}</td><td>{{clist' value.oamount}}</td><td>{{tofloat(clist' value.osum)}}</td><td>{{clist' value.camount}}</td><td>{{tofloat(clist' value.csum)}}</td><td>{{clist' value.samount}}</td><td><!-- if {{clist' value.ssum}} != '' --> {{tofloat(clist' value.ssum)}}<!-- endif --></td></tr>
+							<tr><td>{{clist' value.lnum}}</td><td>{{clist' value.lname}}</td><td>{{clist' value.unit}}</td><td>{{tofloat(clist' value.unitprice)}}</td><td>{{clist' value.oamount}}</td><td>{{clist' value.osum}}</td><td>{{clist' value.camount}}</td><td>{{clist' value.csum}}</td><td>{{clist' value.samount}}</td><td><!-- if {{clist' value.ssum}} != '' --> {{clist' value.ssum}}<!-- endif --></td></tr>
 							<!-- endloop -->
 							</tbody>
 							<tfoot>
-								<tr class="info"><td>合计</td><td></td><td></td><td></td><td></td><td>{{tofloat(ototalnum)}}</td><td></td><td>{{tofloat(ctotalnum)}}</td><td></td><td><!-- if {{stotalnum}} != '' -->{{tofloat(stotalnum)}}<!-- endif --></td></tr>
+								<tr class="info"><td>合计</td><td></td><td></td><td></td><td></td><td>{{ototalnum}}</td><td></td><td>{{ctotalnum}}</td><td></td><td><!-- if {{stotalnum}} != '' -->{{stotalnum}}<!-- endif --></td></tr>
 							</tfoot>
 						</table>
 					</div>
@@ -222,6 +229,33 @@
 				leftColumns: 4
 			}
 		});
+
+		$('.legend-label').click(function(e){
+			if($(e.target).is('label')){
+				return;
+			}
+			$(this).children('input').attr('disabled',true);
+			$.ajax({
+				type: 'post',
+				url: '/change/detail/'+$('#cid').val(),
+				data: { table: '_all'},
+				dataType: 'json',
+				success: function(result){
+					table.destroy();
+					$('#tablelist').html(result.html);
+					table = $('#tablelist').removeAttr('width').DataTable({
+						columnDefs: [
+							{ className: 'allwidth1', width: 230, targets: 1 },
+							{ className: 'allwidth3', width: 80, targets: 2 },
+							{ className: 'allwidth2', width: 120, targets: '_all' }
+						],
+						fixedColumns: {
+							leftColumns: 4
+						}
+					});
+				}
+			})
+		})
 	})
 </script>
 </body>

+ 57 - 17
protected/view/biangeng-new.html

@@ -49,10 +49,12 @@
 		<!--内容-->
 		<div class="mainContent">
 			<input id="pmid" type="hidden" value="{{pmArray.pmid}}">
+			<input id="uid" type="hidden" value="{{uid}}">
+			<input id="verification" type="hidden" value="{{verification}}">
 			<form method="post" onsubmit="return checkform();">
 				<div class="title" id="xinxi">
 					<div class="bg-top-btn affix"><button type="submit" name="uncheck" onclick="newflag=0" class="btn btn-primary" >保存</button>&nbsp;<button type="submit" name="checking" onclick="newflag=1" class="btn btn-success">提交审批</button></div>
-					<h1><a href="/change/index/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;</h1>
+					<h1><a href="/change/index/tender/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;</h1>
 				</div>
 				<div class="row">
 					<div class="col-md-2" id="navbar-example">
@@ -99,7 +101,7 @@
 										<input class="form-control" name="cnum" placeholder="" type="text">
 									</div>
 								</div>
-								<div class="col-md-4">
+								<div class="col-md-4" style="z-index:999;">
 									<div class="form-group">
 										<label><b class="text-danger">*&nbsp;</b>工程变更理由及内容</label>
 										<textarea class="form-control" id="description" name="description" rows="6"></textarea>
@@ -181,7 +183,9 @@
 							</div>
 						</div>
 						<div class="bg-con-warp">
-							<legend id="qingdan" ><span class="glyphicon glyphicon-list-alt"></span> 变更清单&nbsp;&nbsp;<a href="#addlist" class="btn btn-primary btn-xs" data-toggle="modal"><span class="glyphicon glyphicon-plus"></span> 添加清单</a></legend>
+							<legend id="qingdan" >
+								<a href="#setting" data-toggle="modal" class="btn btn-default btn-xs pull-right" title="小数位设置"><i class="glyphicon glyphicon-cog"></i> 0.00</a>
+								<span class="glyphicon glyphicon-list-alt"></span> 变更清单&nbsp;&nbsp;<a href="#addlist" class="btn btn-primary btn-xs" data-toggle="modal"><span class="glyphicon glyphicon-plus"></span> 添加清单</a></legend>
 							<table class="table table-striped table-bordered nowrap" id="tablelist" cellspacing="0" width="100%">
 								<thead>
 								<tr><th rowspan="2" class="text-center">清单编号</th><th rowspan="2" class="text-center">名称</th><th rowspan="2" class="text-center">单位</th><th rowspan="2" class="text-center">单价</th><th colspan="2" class="text-center">原设计</th><th colspan="2" class="text-center">申报变更</th></tr>
@@ -227,6 +231,7 @@
 				<input type="hidden" name="changewhitelist" id="changewhitelist" value="">
 				<input type="hidden" name="changeatt" id="changeatt" value="">
 				<input type="hidden" name="changeaudit" id="changeaudit" value="">
+				<input type="hidden" name="changedecimalnum" id="changedecimalnum" value="{{pmArray.cdecimalnum}}">
 			</form>
 		</div>
 		<!--内容-->
@@ -239,22 +244,22 @@
 		<div class="modal-content">
 			<div class="modal-header">
 				<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
-				<h4 class="modal-title" id="mySmallModalLabel">从签约清单中选择</h4>
+				<h4 class="modal-title" id="mySmallModalLabel">从清单中选择</h4>
 			</div>
 			<div class="modal-body">
 				<div style="height:400px;overflow-y:auto">
 					<table class="table table-striped table-bordered table-condensed">
-						<thead><tr><th>序号</th><th>清单编号</th><th>名称</th><th>单位</th><th>单价</th><th>选择</th></tr></thead>
+						<thead><tr><th>序号</th><th>清单编号</th><th>名称</th><th>单位</th><th>单价</th><th>数量</th><th>金额</th><th>选择</th></tr></thead>
 						<tbody>
 						<!-- loop list -->
 						<tr class="checklist">
-							<td>{{list' value.id}}</td>
+							<td list_id="{{list' value.id}}">{{list' value.index}}</td>
 							<td>{{list' value.lnum}}</td>
 							<td>{{list' value.lname}}</td>
 							<td>{{list' value.unit}}</td>
 							<td>{{tofloat(list' value.unitprice)}}</td>
-							<td class="hide">{{list' value.amount}}</td>
-							<td class="hide">{{tofloat(list' value.totalamount)}}</td>
+							<td>{{list' value.amount}}</td>
+							<td>{{list' value.totalamount}}</td>
 							<td><input type="checkbox" class="listcheckbox"></td>
 						</tr>
 						<!-- endloop -->
@@ -313,15 +318,15 @@
 				<h4 class="modal-title" id="myModalLabel">附件</h4>
 			</div>
 			<div class="modal-body">
-				<div class="row" style="padding-top:10px;">
+				<p>上传文件大小最大:10MB</p>
+				<div class="row">
 					<div class="col-xs-2">
 						<button id="uploadBtn" class="btn btn-large btn-primary">选择文件</button>
 					</div>
-					<div class="col-xs-10">
-						<div id="progressOuter" class="progress progress-striped active" style="display:none;">
-							<div id="progressBar" class="progress-bar progress-bar-success"  role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
-							</div>
-						</div>
+				</div>
+				<div class="row">
+					<div class="col-xs-12">
+						<div id="progressBox"> </div>
 					</div>
 				</div>
 				<div class="row" style="padding-top:10px;">
@@ -418,7 +423,7 @@
 				</div>
 				<div class="form-group toolshow numbershow" style="display: none">
 					<label>起始编号</label>
-					<input type="text" id="setnumber" class="form-control" value="001">
+					<input type="text" onkeyup="RegAutoNum(this,event,3);" id="setnumber" class="form-control" value="001">
 				</div>
 				<button class="btn btn-primary" id="addtools">添加组件</button>
 			</div>
@@ -431,6 +436,40 @@
 </div>
 <!--自动编号-->
 
+<!--小数位设置-->
+<div class="modal fade" id="setting" tabindex="-1" role="dialog">
+	<div class="modal-dialog" role="document">
+		<div class="modal-content">
+			<div class="modal-header">
+				<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+				<h4 class="modal-title">清单小数位数设置</h4>
+			</div>
+			<div class="modal-body">
+				<form class="form-horizontal">
+					<div class="form-group">
+						<label class="col-sm-3 control-label">数量列 小数位数</label>
+						<div class="col-sm-9">
+							<input type="number" id="numberdnum" value="{{numberdnum}}" step="1" max="6" min="0" onkeyup="if(!
+/^[0-6]$/.test(this.value)){toastr.error('只能输入0-6的小数位数');this.value=3;}" class="form-control" style="width:100px">
+						</div>
+					</div>
+					<div class="form-group">
+						<label class="col-sm-3 control-label">金额列 小数位数</label>
+						<div class="col-sm-9">
+							<input type="number" id="costdnum" value="{{costdnum}}" step="1" max="6" min="0" onkeyup="if(!
+/^[0-6]$/.test(this.value)){toastr.error('只能输入0-6的小数位数');this.value=2;}" class="form-control" style="width:100px">
+						</div>
+					</div>
+				</form>
+			</div>
+			<div class="modal-footer">
+				<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
+				<button type="button" class="btn btn-primary" id="setdnum">确定</button>
+			</div>
+		</div>
+	</div>
+</div>
+
 <script type="text/javascript">autoFlashHeight();</script>
 <link href="{{rootUrl}}global/css/toastr.css" rel="stylesheet">
 <script src="{{rootUrl}}global/js/toastr.min.js"></script>
@@ -439,6 +478,7 @@
 <script type="text/javascript" language="javascript" src="{{rootUrl}}global/js/dataTables.bootstrap.min.js"></script>
 <script type="text/javascript" language="javascript" src="{{rootUrl}}global/js/dataTables.fixedColumns.min.js"></script>
 <script src="{{rootUrl}}global/js/jlzf-change-table.js"></script>
-<script src="{{rootUrl}}global/js/jlzf-change-new.js"></script>
-<script src="{{rootUrl}}global/js/jlzf-change-pnumset.js"></script>
+<script src="{{rootUrl}}global/js/jlzf-calculation.js"></script>
+<script src="{{rootUrl}}global/js/jlzf-change-pnumset.min.js"></script>
+<script src="{{rootUrl}}global/js/jlzf-change-new.min.js"></script>
 </body>

+ 22 - 35
protected/view/biangeng-poj.html

@@ -19,21 +19,9 @@
 	<div class="mainContainer" style="overflow-y:hidden">
 		<!--内容-->
 		<div class="mainContent signContent">
-			<!-- if empty({{prolist}}) -->
 			<div class="title clearfix sign-title-height">
-				<h1>变更管理</h1>
-			</div>
-			<div class="sign-view clearfix">
-				<div class="sign-content bg-content">
-					<div class="proSection">
-						<h5>当前用户还不存在变更标段</h5>
-					</div>
-				</div>
-			</div>
-			<!-- else -->
-			<div class="title clearfix sign-title-height">
-				<!-- if {{firstuse}} == 0 --><div class="fR sign-topbar"><a href="/change/dealbills/{{pmArray.pmid}}" class="btn btn-default">签约清单</a><!-- if {{userchangepower}} == 1 --> <a href="/change/new/{{pmArray.pmid}}" class="btn btn-primary">创建变更令</a><!-- endif --></div><!-- endif -->
-				<h1>{{pmArray.pmname}} 标段 变更管理</h1>
+				<!-- if !empty({{pmid}}) && {{firstuse}} == 0 --><div class="fR sign-topbar"><a href="/change/dealbills/{{pmid}}" class="btn btn-default">清单</a><!-- if {{userchangepower}} == 1 --> <a href="/change/new/{{pmid}}" class="btn btn-primary">创建变更令</a><!-- endif --></div><!-- endif -->
+				<h1><!-- if !empty({{pmid}}) -->{{pmArray.pmname}} 标段 <!-- endif -->变更管理</h1>
 			</div>
 			<div class="sign-view clearfix">
 				<div class="sign-side fL side-content">
@@ -41,26 +29,26 @@
 				</div>
 				<div class="sign-content bg-content fR">
 					<div class="proSection">
-						<!-- if {{firstuse}} == 1 -->
-						<h5>首次使用,请在软件同步签约清单</h5>
+						<!-- if {{firstuse}} == 1 && !empty({{pmid}}) -->
+						<h5>首次使用,请在软件“清单汇总”界面同步清单</h5>
 						<!-- else -->
 						<ul class="nav nav-tabs">
 							<li <!-- if {{status}} == 1 -->class="active"<!-- endif -->>
-							<a href="{{rootUrl}}change/index/{{pmArray.pmid}}/1">待处理 <!-- if {{num1}} != 0 --><span class="label label-warning">{{num1}}</span><!-- endif --></a>
+							<a href="{{rootUrl}}change/index<!-- if !empty({{pmid}}) -->/tender/{{pmid}}<!-- endif -->/status/1">待处理 <!-- if {{num1}} != 0 --><span class="label label-warning">{{num1}}</span><!-- endif --></a>
 							</li>
 							<!-- if {{userchangepower}} == 1 -->
 							<li <!-- if {{status}} == 2 -->class="active"<!-- endif -->>
-							<a href="{{rootUrl}}change/index/{{pmArray.pmid}}/2">待上报 <!-- if {{num2}} != 0 --><span class="label label-primary">{{num2}}</span><!-- endif --></a>
+							<a href="{{rootUrl}}change/index<!-- if !empty({{pmid}}) -->/tender/{{pmid}}<!-- endif -->/status/2">待上报 <!-- if {{num2}} != 0 --><span class="label label-primary">{{num2}}</span><!-- endif --></a>
 							</li>
 							<!-- endif -->
 							<li <!-- if {{status}} == 3 -->class="active"<!-- endif -->>
-							<a href="{{rootUrl}}change/index/{{pmArray.pmid}}/3">进行中 <!-- if {{num3}} != 0 --><span class="label label-default">{{num3}}</span><!-- endif --></a>
+							<a href="{{rootUrl}}change/index<!-- if !empty({{pmid}}) -->/tender/{{pmid}}<!-- endif -->/status/3">进行中 <!-- if {{num3}} != 0 --><span class="label label-default">{{num3}}</span><!-- endif --></a>
 							</li>
 							<li <!-- if {{status}} == 4 -->class="active"<!-- endif -->>
-							<a href="{{rootUrl}}change/index/{{pmArray.pmid}}/4">已完成 <!-- if {{num4}} != 0 --><span class="label label-default">{{num4}}</span><!-- endif --></a>
+							<a href="{{rootUrl}}change/index<!-- if !empty({{pmid}}) -->/tender/{{pmid}}<!-- endif -->/status/4">已完成 <!-- if {{num4}} != 0 --><span class="label label-default">{{num4}}</span><!-- endif --></a>
 							</li>
 							<li <!-- if {{status}} == 5 -->class="active"<!-- endif -->>
-							<a href="{{rootUrl}}change/index/{{pmArray.pmid}}/5">不通过 <!-- if {{num5}} != 0 --><span class="label label-default">{{num5}}</span><!-- endif --></a>
+							<a href="{{rootUrl}}change/index<!-- if !empty({{pmid}}) -->/tender/{{pmid}}<!-- endif -->/status/5">不通过 <!-- if {{num5}} != 0 --><span class="label label-default">{{num5}}</span><!-- endif --></a>
 							</li>
 						</ul>
 						<!--筛选模块-->
@@ -74,11 +62,11 @@
 							<!-- if !empty({{list}}) -->
 							<!-- loop list -->
 							<!-- if {{list' value.status}} == 'checking' -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/checking/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td><td><a href="/change/detail/checking/{{list' value.cid}}" class="btn btn-warning btn-sm">审批</a></td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/checking/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td><td><a href="/change/detail/checking/{{list' value.cid}}" class="btn btn-warning btn-sm">审批</a></td></tr>
 							<!-- elseif {{list' value.status}} == 'uncheck' -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/update/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td><td><a href="/change/detail/update/{{list' value.cid}}" class="btn btn-primary btn-sm">上报</a></td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/update/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td><td><a href="/change/detail/update/{{list' value.cid}}" class="btn btn-primary btn-sm">上报</a></td></tr>
 							<!-- elseif {{list' value.status}} == 'back' -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/update/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td><td><a href="/change/detail/update/{{list' value.cid}}" class="btn btn-primary btn-sm">重新上报</a></td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/update/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td><td><a href="/change/detail/update/{{list' value.cid}}" class="btn btn-primary btn-sm">重新上报</a></td></tr>
 							<!-- endif -->
 							<!-- endloop -->
 							<!-- endif -->
@@ -94,13 +82,13 @@
 							<!-- if !empty({{list}}) -->
 							<!-- loop list -->
 							<!-- if {{list' value.uid}} == {{uid}} && {{list' value.status}} == 'uncheck' -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/update/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td><td><a href="/change/detail/update/{{list' value.cid}}" class="btn btn-primary btn-sm">上报</a></td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/update/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td><td><a href="/change/detail/update/{{list' value.cid}}" class="btn btn-primary btn-sm">上报</a></td></tr>
 							<!-- elseif {{list' value.uid}} == {{uid}} && {{list' value.status}} == 'back' -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/update/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td><td><a href="/change/detail/update/{{list' value.cid}}" class="btn btn-primary btn-sm">重新上报</a></td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/update/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td><td><a href="/change/detail/update/{{list' value.cid}}" class="btn btn-primary btn-sm">重新上报</a></td></tr>
 							<!-- elseif {{list' value.uid}} != {{uid}} && {{list' value.status}} == 'uncheck' -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td><td>{{list' value.username}} <span class="colOrange">上报中</span></td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td><td>{{list' value.username}} <span class="colOrange">上报中</span></td></tr>
 							<!-- elseif {{list' value.uid}} != {{uid}} && {{list' value.status}} == 'back' -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td><td>{{list' value.username}} <span class="colOrange">重新上报中</span></td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td><td>{{list' value.username}} <span class="colOrange">重新上报中</span></td></tr>
 							<!-- endif -->
 							<!-- endloop -->
 							<!-- endif -->
@@ -115,7 +103,7 @@
 							<tbody>
 							<!-- if !empty({{list}}) -->
 							<!-- loop list -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td><td>{{list' value.checkman}} <span class="colOrange">审批中</span></td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td><td>{{list' value.checkman}} <span class="colOrange">审批中</span></td></tr>
 							<!-- endloop -->
 							<!-- endif -->
 							</tbody>
@@ -129,7 +117,7 @@
 							<tbody>
 							<!-- if !empty({{list}}) -->
 							<!-- loop list -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td></tr>
 							<!-- endloop -->
 							<!-- endif -->
 							</tbody>
@@ -143,7 +131,7 @@
 							<tbody>
 							<!-- if !empty({{list}}) -->
 							<!-- loop list -->
-							<tr><td>{{pmArray.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{tofloat(list' value.totalamount)}}</td></tr>
+							<tr><td>{{list' value.pmname}}</td><td><a href="/change/detail/{{list' value.cid}}">{{list' value.pnum}}</a></td><td>{{list' value.pname}}</td><td>{{list' value.changeCategory}}</td><td>{{list' value.totalamount}}</td></tr>
 							<!-- endloop -->
 							<!-- endif -->
 							</tbody>
@@ -159,7 +147,6 @@
 					</div>
 				</div>
 			</div>
-			<!-- endif -->
 		</div>
 		<!--内容-->
 	</div>
@@ -181,13 +168,13 @@
 	var zNodes =[
 			<!-- if !empty({{prolist}}) -->
 			<!-- loop prolist -->
-		{ name:"{{prolist' value.pname}}", <!-- if {{prolist' value.open}} == 1 -->font:{'font-weight':'bold'},open:true,<!-- elseif {{prolist' value.open}} == 2 -->font:{'color':'#f0ad4e'},open:true,<!-- endif -->
+		{ name:"{{prolist' value.pname}}", <!-- if {{prolist' value.open}} == 1 -->font:{'font-weight':'bold'},<!-- elseif {{prolist' value.open}} == 2 -->font:{'color':'#f0ad4e'},<!-- endif -->open:true,
 			children: [
 					<!-- loop prolist' value.stlist -->
-				{ name:"{{prolist' stlist' value.stname}}",<!-- if {{prolist' stlist' value.open}} == 1 -->font:{'font-weight':'bold'},open:true,<!-- elseif {{prolist' stlist' value.open}} == 2 -->font:{'color':'#f0ad4e'},open:true,<!-- endif -->
+				{ name:"{{prolist' stlist' value.stname}}",<!-- if {{prolist' stlist' value.open}} == 1 -->font:{'font-weight':'bold'},<!-- elseif {{prolist' stlist' value.open}} == 2 -->font:{'color':'#f0ad4e'},<!-- endif -->open:true,
 					children: [
 							<!-- loop prolist' value' value.pmlist -->
-						{ name:"{{prolist' stlist' pmlist' value.pmname}}", url: '{{rootUrl}}change/index/{{prolist' stlist' pmlist' value.pmid}}', "target":"_self",<!-- if {{prolist' stlist' pmlist' value.open}} == 1 -->font:{'font-weight':'bold'},checked:true<!-- elseif {{prolist' stlist' pmlist' value.open}} == 2 -->font:{'color':'#f0ad4e'}<!-- endif -->},
+						{ name:"{{prolist' stlist' pmlist' value.pmname}}", url: '{{rootUrl}}change/index/tender/{{prolist' stlist' pmlist' value.pmid}}', "target":"_self",<!-- if {{prolist' stlist' pmlist' value.open}} == 1 -->font:{'font-weight':'bold'},checked:true<!-- elseif {{prolist' stlist' pmlist' value.open}} == 2 -->font:{'color':'#f0ad4e'}<!-- endif -->},
 							<!-- endloop -->
 					]},
 					<!-- endloop -->

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 113 - 27
protected/view/biangeng-update.html