瀏覽代碼

提交9.13,下午业主联系函审批流程

Crazy 9 月之前
父節點
當前提交
b8267a70d0

+ 30 - 85
app/admin/controller/project/Contact.php

@@ -104,10 +104,6 @@ class Contact extends BaseController
     public function conList_proprietor()
     {
         $param = get_params();
-        // halt($param);
-        // $param = [
-        //     'project_id' => 290,
-        // ];
 
         $where = [
             ['project_id', '=', $param['project_id']],
@@ -126,8 +122,6 @@ class Contact extends BaseController
 
             })->toArray();
 
-        // halt($list);
-        // dump($list);
         return table_assign(0, '', $list);
     }
 
@@ -250,6 +244,11 @@ class Contact extends BaseController
             $param['project_id'] = $project_id;
             $param['maker_id'] = $this->uid;
             $param['admin_name'] = get_login_admin('nickname');
+
+            $detail = Db::name("cost_project")->where("id",$project_id)->field("project_name,project_status,entrust_maker,entrust_maker_name")->find();
+            //公司这个审批人就直接弄成财评了,不显示内部的
+            $param["approver"]=$detail["entrust_maker_name"];
+
             try {
                 $param['create_time'] = time();
                 $insertId = $this->ContactModel->strict(false)->field(true)->insertGetId($param);
@@ -257,7 +256,6 @@ class Contact extends BaseController
                 return to_assign(1, '操作失败,原因:'.$e->getMessage());
             }
 
-            $detail = Db::name("cost_project")->where("id",$project_id)->field("project_name,project_status,entrust_maker,entrust_maker_name")->find();
             $auditDataArr = [];
             //1项目,2报告,3公司一级审核,4公司二级审核,5公司三级审核
             if (!empty($param["first"])) {
@@ -384,105 +382,55 @@ class Contact extends BaseController
             }
             // 创建HTMLPurifier对象
             $purifier = new HTMLPurifier($config);
-            //防止xss,过滤输入并输出结果
-            //$param['content'] = '测试<script>alert(0);</script>';
             $param['content'] = $purifier->purify($param['content']);
+            $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
 
+            $detail = Db::name("cost_project")->where("id",$project_id)->find();
 
-
-            $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
             $param['project_id'] = $project_id;
             $param['maker_id'] = $this->uid;
             $param['admin_name'] = get_login_admin('nickname');
+            $param['status'] = 0;
+            $content = $param["title"];
+            $param["approver"]=$detail["entrust_maker_name"];
+            add_project_log("新增联系函", $project_id, $content);
             try {
                 $param['create_time'] = time();
                 $insertId = $this->ContactModel->strict(false)->field(true)->insertGetId($param);
-            } catch(\Exception $e) {
-                return to_assign(1, '操作失败,原因:'.$e->getMessage());
+            } catch (\Exception $e) {
+                return to_assign(1, '操作失败,原因:' . $e->getMessage());
             }
 
-            $detail = Db::name("cost_project")->where("id",$project_id)->field("project_name,project_status,entrust_maker,entrust_maker_name")->find();
-            $auditDataArr = [];
-            //1项目,2报告,3公司一级审核,4公司二级审核,5公司三级审核
-            if (!empty($param["first"])) {
-                $auditData = [
-                    "project_id" => $project_id,
-                    "project_name" => $detail["project_name"],
-                    "project_type" => "造价项目",
-                    "audit_name" => "联系函一审",
-                    "audit_type" => 7,
-                    "else_id" => $insertId,
-                    "sponsor" => get_login_admin("nickname"),
-                    "sponsor_id" => $this->uid,
-                    "sponsor_unit" => Db::name("department")->where("id", get_login_admin('unit_name'))->value("title"),
-                    "approver" => $param["first"],
-                    "approver_name" => get_admin($param["first"])["nickname"],
-                    "create_time" => time()
-                ];
-                $auditDataArr[] = $auditData;
-            } else {
-                return to_assign(1, "请选择审批人");
-            }
-            if (!empty($param["second"])) {
-                $auditData = [
-                    "project_id" => $project_id,
-                    "project_name" => $detail["project_name"],
-                    "project_type" => "造价项目",
-                    "audit_name" => "联系函二审",
-                    "audit_type" => 8,
-                    "audit_status" => 5,
-                    "else_id" => $insertId,
-                    "sponsor" => get_login_admin("nickname"),
-                    "sponsor_id" => $this->uid,
-                    "sponsor_unit" => Db::name("department")->where("id", get_login_admin('unit_name'))->value("title"),
-                    "approver" => $param["second"],
-                    "approver_name" => get_admin($param["second"])["nickname"],
-                    "create_time" => time()
-                ];
-                $auditDataArr[] = $auditData;
-            }
-            if (!empty($param["third"])) {
+
                 $auditData = [
                     "project_id" => $project_id,
                     "project_name" => $detail["project_name"],
                     "project_type" => "造价项目",
-                    "audit_name" => "联系函三审",
-                    "audit_type" => 9,
-                    "audit_status" => 5,
+                    "audit_name" => "联系函审核",
+                    "audit_type" => 3,
                     "else_id" => $insertId,
                     "sponsor" => get_login_admin("nickname"),
                     "sponsor_id" => $this->uid,
                     "sponsor_unit" => Db::name("department")->where("id", get_login_admin('unit_name'))->value("title"),
-                    "approver" => $param["third"],
-                    "approver_name" => get_admin($param["third"])["nickname"],
+                    "approver" => $detail["entrust_maker"],
+                    "approver_name" =>  $detail["entrust_maker_name"],
                     "create_time" => time()
                 ];
-                $auditDataArr[] = $auditData;
-            }
-//            halt($auditDataArr);
-            if (!empty($auditDataArr)) {
-                $ProjectAudit = new ProjectAudit();
+            if (!empty($auditData)) {
                 try {
-                    $ProjectAudit->saveAll($auditDataArr);
+                  Db::name("project_audit")->save($auditData);
                 } catch (\Exception $e) {
                     return to_assign(1, '操作失败,原因:' . $e->getMessage());
                 }
             }
 
-
-            return to_assign(0,'操作成功');
+            return to_assign(0, '操作成功');
         } else {
             $project_id = isset($param['project_id']) ? $param['project_id'] : 0;
             //富文本类型
             View::assign('editor', get_system_config('other', 'editor'));
             //关联项目id
             View::assign('project_id', $project_id);
-
-            $ids = Db::name('CostProject')->where("id", $project_id)->field("entrust_maker,review_head,operate_head,operate_team")->find();
-            $idarr = $ids["operate_team"] . ',' . $ids["operate_head"] . ',' . $ids["review_head"];
-            $idarr = explode(",", $idarr);
-            $people = Db::name("admin")->whereIn('id', $idarr)->field('id,nickname')->select();
-            View::assign('people', $people);
             return view();
         }
     }
@@ -769,7 +717,6 @@ class Contact extends BaseController
         $param = $handle['param'];
         $id = isset($param['id']) ? $param['id'] : 0;
         $detail = $this->ContactModel->where("id", $id)->find();
-        $approver = Db::name("cost_project")->where("id", $detail["project_id"])->value("entrust_maker");
 
 
         $details = Db::name("cost_project")->where("id",$detail["project_id"])->field("project_name,project_status,entrust_maker,entrust_maker_name")->find();
@@ -792,16 +739,14 @@ class Contact extends BaseController
         ];
         ProjectAudit::create($auditData);
 
-
-
-
-        if (empty($handle['financial'])) {
-            $handle['financial'] = (array)$details["entrust_maker"];
-        } else {
-            $handle['financial'] = array_merge($handle['company'], (array)$details["entrust_maker"]);
-        }
-
-        $this->Pushmessage->pushMessage($detail['project_id'], $handle['financial'], $handle['company']);
+        //发送消息:数据库要更新一下才能用
+//        if (empty($handle['financial'])) {
+//            $handle['financial'] = (array)$details["entrust_maker"];
+//        } else {
+//            $handle['financial'] = array_merge($handle['company'], (array)$details["entrust_maker"]);
+//        }
+//
+//        $this->Pushmessage->pushMessage($detail['project_id'], $handle['financial']);
 
 
         $this->ContactModel->where("id", $id)->update(["status" => 3]);
@@ -1008,7 +953,7 @@ class Contact extends BaseController
 
 
             try {
-                Db::name("project_audit")->where([["else_id", "=", $id]])->update(["audit_status"=>3,"audit_remark" => $param["audit_remark"]]);
+                Db::name("project_audit")->where([["else_id", "=", $id]])->update(["audit_status"=>3,"audit_remark" => $param["audit_remark"],"audit_time" => time()]);
             } catch (DbException $e) {
                 return to_assign(1, '操作失败,原因:'.$e->getMessage());
             }

+ 3 - 2
app/admin/controller/project/CostProprietor.php

@@ -266,7 +266,8 @@ class CostProprietor extends BaseController
             $param["sent_review_unit_name"] = Db::name("department")->where("id", get_login_admin("unit_name"))->value("title");
             $param["sent_review_head"] = $this->uid;
             $param["sent_review_head_name"] = get_login_admin("nickname");
-            $param["sent_review_head_phone"] = get_login_admin("mobile");
+
+            $param["sent_review_phone"] = get_login_admin("mobile");
 
 
             $param["proprietor_status"] = 0;//业主创建项目时的状态  0立项,1审核,2待接收,3已接收
@@ -333,7 +334,7 @@ class CostProprietor extends BaseController
             $param["sent_review_unit_name"] = Db::name("department")->where("id", get_login_admin("unit_name"))->value("title");
             $param["sent_review_head"] = $this->uid;//登录人
             $param["sent_review_head_name"] = get_login_admin("nickname");
-            $param["sent_review_head_phone"] = get_login_admin("mobile");
+            $param["sent_review_phone"] = get_login_admin("mobile");
 
 
             $param["project_status"] = 0;//项目状态

+ 0 - 7
app/admin/view/project/audit/datalist.html

@@ -344,8 +344,6 @@
                         } else if (data.audit_type == 3) {
                             if (data.else_status == 0) {
                                 //联系函新建
-
-
                                 tool.post("/admin/project.contact/agree_contact", {
                                     id: data.id,
                                     else_id: data.else_id,
@@ -353,15 +351,11 @@
                                     project_id: data.project_id,
                                     project_status: data.project_status,
                                     type: 1000,
-
-
                                 }, callback);
 
-
                             } else if (data.else_status == 3) {
                                 //联系函删除
 
-
                                 tool.post("/admin/project.contact/agree_delete", {
                                     id: data.id,
                                     else_id: data.else_id,
@@ -370,7 +364,6 @@
                                     project_status: data.project_status,
                                     type: 1000,
 
-
                                 }, callback);
 
 

+ 243 - 0
app/admin/view/project/contact/add_proprietor.html

@@ -0,0 +1,243 @@
+{extend name="common/base"/}
+
+{block name="style"}
+<style>
+    .footer{
+        display: none;
+    }
+
+    #fileBox li{
+        display: flex;
+        flex-wrap: wrap;
+        flex-direction: column;
+    }
+
+    .layui-table th{
+        text-align: center !important;
+        font-weight: 500;
+    }
+
+    .layui-anim dd{
+        text-align: left;
+    }
+
+    .layui-th-gray{
+        background-color: rgb(241, 241, 241);
+    }
+
+    .layui-table th{
+        border-color: #e2e2e2
+    }
+    
+    .fujian p{
+        margin: 3px 0 5px 0;
+		width: 11vw;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        text-align: center;
+    }
+    
+    .fujian{
+        width: auto;
+        overflow: auto;
+        justify-content:flex-start;
+        align-content: space-between;
+        flex-direction: column-reverse;
+        flex-wrap: wrap;
+        display: flex;
+        
+    }
+    .fujian li{
+        padding: 0.5vw 0.8vw 0.5vw 0.8vw;
+		white-space: nowrap;  
+    	overflow: hidden;       
+    	text-overflow: ellipsis;
+    	/*display: inline-block;*/
+		border-right: 1px solid #e2e2e2;
+        float: left;
+	 }
+	 
+    .layui-btn-group{
+        display: flex;
+        justify-content: center;
+    }
+</style>
+{/block}
+
+{block name="body"}
+<form class="layui-form p-4">
+
+
+    <h3 class="pb-3">新建联系函</h3>
+    <table class="layui-table layui-table-form">
+        <tr>
+            <th class="layui-th-gray-2"  style="background-color: rgb(241, 241, 241);">联系函名称 <font style="color: red !important;">*</font></th>
+            <th colspan="8">
+                <input type="text" name="title" lay-verify="required" lay-reqText="请输入联系函名称"
+                       placeholder="请输入联系函名称" class="layui-input" value="">
+            </th>
+            
+        </tr>
+        <tr>
+            <th class="layui-th-gray" style="vertical-align:top;">联系函内容 <font style="color: red !important;">*</font></th>
+            <th colspan="8">
+                <textarea name="content" placeholder="请输入内容" class="layui-textarea" id="container_content"
+                          style="border:0;padding:0"></textarea>
+            </th>
+        </tr>
+        
+
+        
+
+    </table>
+
+    <div class="pt-3">
+        <input type="hidden" name="id" value=""/>
+        <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
+        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
+    </div>
+</form>
+
+<div class="layui-card border-y">
+    <div class="layui-card-header" style="height:45px;border-color: #e2e2e2">
+        <div class="layui-row">
+            <div class="layui-col-md6">
+                <strong>联系函附件</strong>
+            </div>
+            <div class="layui-col-md6" style="text-align:right">
+                <button type="button" class="layui-btn layui-btn-danger layui-btn-sm" id="uploadBtn">上传附件</button>
+            </div>
+        </div>
+    </div>
+    <div class="layui-row p-2 fujian" id="fileBox">
+        <div class="layui-data-none">暂无附件</div>
+    </div>
+</div>
+
+
+{/block}
+<!-- /主体 -->
+
+<!-- 脚本 -->
+{block name="script"}
+<script>
+    const moduleInit = ['tool', 'tagpicker', 'tinymce', 'oaTool'];
+
+    function gouguInit() {
+        var form = layui.form, tool = layui.tool, oaTool = layui.oaTool;
+
+        var file_id = null;
+
+
+
+        //编辑器初始化
+        var editor = layui.tinymce;
+        var edit = editor.render({
+            selector: "#container_content",
+            height: 500
+        });
+
+        let a = 1;
+        //监听提交
+        form.on('submit(webform)', function (data) {
+            data.field.content = tinyMCE.editors['container_content'].getContent();
+            if (data.field.content == '') {
+
+                layer.msg('<span style="color: white">请先完善文章内容</span>');
+
+                return false;
+            }
+            if(a){
+                let callback = function (e) {
+                parent.layui.contactTable.reload();
+                layer.msg(e.msg);
+                if (e.code == 0) {
+                    tool.tabRefresh(71);
+                    tool.sideClose(1000);
+                    a = 1
+                }
+            }
+            data.field.file = file_id;
+            data.field.project_id = '{$project_id}';
+            tool.post("/admin/project.contact/add_proprietor", data.field, callback);
+            }
+            
+            a = 0
+            return false;
+        });
+
+        function fileCard(item){
+            var host = window.location.host;
+            var li = '';
+            if(item.length>0){
+                for(var a=0;a<item.length;a++){
+                    let image = ['jpg','jpeg','png','gif'];
+                    let doc = ['doc','docx','xls','xlsx','ppt','pptx','txt','pdf','zip','rar','7z'];
+                    // let down = '<a href="'+item[a].filepath+'" target="_blank" class="layui-btn layui-btn-xs layui-btn-normal" download="'+item[a].name+'">下载</a>';
+                    let down ='<a href="' + item[a]['filepath'] + '" target="_blank" class="layui-btn layui-btn-xs layui-btn-normal" download="' + item[a]['name'] + '">预览</a>';
+                    // 判断元素是否在数组中
+                    let path='/static/home/images/icon/file.png';
+                    if (image.includes(item[a].fileext)) {
+                        path=item[a].filepath;
+                        down = '<span data-href="'+item[a].filepath+'" class="layui-btn layui-btn-xs layui-btn-normal file-view-img">预览</span>';
+                    } else if (doc.includes(item[a].fileext)){
+                        path='/static/home/images/icon/'+item[a].fileext+'.png';
+                    }
+
+                    if(item[a].fileext == 'pdf'){
+                        down = '<span data-href="'+item[a].filepath+'" class="layui-btn layui-btn-xs layui-btn-normal file-view-pdf">预览</span>';
+                    }
+                    li += '<li id="'+item[a].id+'" data-id="'+item[a].id+'" data-title="'+item[a].name+'" data-ext="'+item[a].fileext+'"><img src="'+path+'" alt="'+item[a].filename+
+                        '" style="object-fit: contain;" class="file-item"><p title="'+item[a].name+'">'+item[a].name+
+                        '</p><div class="layui-btn-group">'+ down +
+                        '<span class="layui-btn layui-btn-xs layui-btn-danger file-del">删除</span></div></li>';
+                }
+
+                return li;
+            }
+        }
+
+        var emptyCard = ' <div class="layui-data-none">暂无附件</div>'
+        $('#fileBox').on('click','.file-del',function(){
+            layer.confirm('确定要删除该文件吗?', { icon: 3, title: '提示' }, function (index) {
+                layer.closeAll();
+                $('#' + file_id).remove();
+                $("#fileBox").html(emptyCard);
+                file_id = null;
+            });
+        })
+
+        oaTool.addFile({
+            type: 1,
+            isSave: true,
+            ajaxDelete: function (file_id) {
+                var emptyCard = ' <div class="layui-data-none">暂无附件</div>'
+                if (e.code == 0) {
+                    $('#fileItem' + file_id).remove();
+                    $("#fileBox").html(emptyCard);
+                    file_id = null;
+                }
+                
+            },
+            ajaxSave: function (res) {
+
+                let callback = function (e) {
+                    layer.msg('上传成功');
+                    $("#fileBox").html(fileCard(e));
+                    file_id = res.data.id
+
+                }
+
+                tool.post("/admin/project.contact/add_file", {
+                    'file': res.data.id,
+                }, callback);
+
+
+            }
+        });
+
+
+    }
+
+</script>
+{/block}

+ 1 - 1
app/admin/view/project/cost/edit_contact.html

@@ -42,7 +42,7 @@
                 {field: 'title', title: '联系函名称',align: 'center',
                     templet: function (d) {
                         var html = "";
-                        if (d.status == 5) {
+                        if (d.status == 2||d.status==4) {
                             html = '<a class="side-a" lay-event="detail" style="color: grey;text-decoration:line-through" lay-event="detail">' + d.title + '</a>';
                         } else {
                             html = '<a class="side-a" lay-event="detail" lay-event="detail">' + d.title + '</a>';

+ 1 - 1
app/admin/view/project/cost/project_contact.html

@@ -50,7 +50,7 @@
                 {field: 'title', title: '联系函名称',align: 'center',
                     templet: function (d) {
                         var html = "";
-                        if (d.status == 5) {
+                        if (d.status == 4 || d.status==2) {
                             html = '<a class="side-a" lay-event="detail" style="color: grey;text-decoration:line-through" lay-event="detail">' + d.title + '</a>';
                         } else {
                             html = '<a class="side-a" lay-event="detail" lay-event="detail">' + d.title + '</a>';

+ 1 - 1
app/admin/view/project/cost_company/edit_contact.html

@@ -43,7 +43,7 @@
                 {field: 'title', title: '联系函名称',align: 'center',
                     templet: function (d) {
                         var html = "";
-                        if(d.status == 5){
+                        if(d.status ==4||d.status==2){
                             html = '<a class="side-a" lay-event="detail" style="color: grey;text-decoration:line-through" lay-event="detail">' + d.title + '</a>';
                         }else{
                             html = '<a class="side-a" lay-event="detail" lay-event="detail">' + d.title + '</a>';

+ 1 - 1
app/admin/view/project/cost_company/project_contact.html

@@ -39,7 +39,7 @@
                 {field: 'title', title: '联系函名称',align: 'center',
                     templet: function (d) {
                         var html = "";
-                        if(d.audit_status == 0 || d.audit_status == 2){
+                        if(d.audit_status == 4 || d.audit_status == 2){
                             html = '<a class="side-a" lay-event="detail" lay-event="detail">' + d.title + '</a>';
                         }else{
                             html = '<a class="side-a" lay-event="detail" style="color: grey;text-decoration:line-through" lay-event="detail">' + d.title + '</a>';

+ 3 - 3
app/admin/view/project/cost_proprietor/edit_contact.html

@@ -43,7 +43,7 @@
                 {field: 'title', title: '联系函名称',align: 'center',
                     templet: function (d) {
                         var html = "";
-                        if(d.status == 5){
+                        if(d.status == 4||d.status==2){
                             html = '<a class="side-a" lay-event="detail" style="color: grey;text-decoration:line-through" lay-event="detail">' + d.title + '</a>';
                         }else{
                             html = '<a class="side-a" lay-event="detail" lay-event="detail">' + d.title + '</a>';
@@ -105,7 +105,7 @@
                         },2000)
 
                     }
-                    parent.layui.tool.side('/admin/project.contact/add?project_id=' + project_id,callback);  // 项目id
+                    parent.layui.tool.side('/admin/project.contact/add_proprietor?project_id=' + project_id,callback);  // 项目id
                     break;
             }
         });
@@ -119,7 +119,7 @@
             }
             if (obj.event === 'del') {
 
-                if(data.status==1){
+                if(data.status==1 ||data.status==5 ){
 
                     layer.prompt({title: '请输入<span style="color: red">删除</span>原因', formType: 2,area: ['35vw', '15vw']}, function(text, index){
                         let callback = function (e) {

+ 2 - 1
app/admin/view/project/cost_proprietor/project_contact.html

@@ -24,8 +24,9 @@
                 {field: 'id', title: '序号', width: 80, align: 'center'},
                 {field: 'title', title: '联系函名称',align: 'center',
                     templet: function (d) {
+                        //console.log("kk:".d);
                         var html = "";
-                        if(d.audit_status == 0 || d.audit_status == 2){
+                        if(d.status == 4 || d.status == 2){
                             html = '<a class="side-a" lay-event="detail" style="color: grey;text-decoration:line-through" lay-event="detail">' + d.title + '</a>';
                         }else{
                             html = '<a class="side-a" lay-event="detail" lay-event="detail">' + d.title + '</a>';