uid = get_login_admin("id");; } //获取合同协议 public function get_contract() { $param = get_params(); $where = array(); $whereOr = array(); if (!empty($param['keywords'])) { $where[] = ['id|name', 'like', '%' . $param['keywords'] . '%']; } $where[] = ['delete_time', '=', 0]; // $where[] = ['check_status', '=', 2]; $where[] = ["subject_id", "=", get_login_admin("unit_name")]; $uid = $this->uid; // $auth = isAuth($uid,'contract_admin'); // if($auth==0){ // $whereOr[] =['admin_id|prepared_uid|sign_uid|keeper_uid', '=', $uid]; // $whereOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',share_ids)")]; // $dids = get_department_role($this->uid); // if(!empty($dids)){ // $whereOr[] =['sign_did', 'in', $dids]; // } // } $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; $list = Db::name('Contract') ->field('id,name,code,customer_id,sign_uid,sign_time') ->order('id desc') ->where($where) ->where(function ($query) use ($whereOr) { $query->whereOr($whereOr); }) ->paginate($rows, false)->each(function ($item, $key) { $item['sign_name'] = Db::name('Admin')->where('id', $item['sign_uid'])->value('nickname'); $item['sign_time'] = date('Y-m-d', $item['sign_time']); $item['customer'] = Db::name('Admin')->where('id', $item['customer_id'])->value('nickname'); return $item; }); table_assign(0, '', $list); } //添加附件 public function add_file() { $param = get_params(); $param['create_time'] = time(); $param['admin_id'] = $this->uid; $fid = Db::name('ContractFile')->strict(false)->field(true)->insertGetId($param); if ($fid) { $log_data = array( 'field' => 'file', 'action' => 'upload', 'contract_id' => $param['contract_id'], 'admin_id' => $param['admin_id'], 'old_content' => '', 'new_content' => $param['file_name'], 'create_time' => time(), ); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, '上传成功', $fid); } } //删除 public function delete_file() { if (request()->isDelete()) { $id = get_params("id"); $data['id'] = $id; $data['delete_time'] = time(); if (Db::name('ContractFile')->update($data) !== false) { $detail = Db::name('ContractFile')->where('id', $id)->find(); $file_name = Db::name('File')->where('id', $detail['file_id'])->value('name'); $log_data = array( 'field' => 'file', 'action' => 'delete', 'contract_id' => $detail['contract_id'], 'admin_id' => $this->uid, 'new_content' => $file_name, 'create_time' => time(), ); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "删除成功"); } else { return to_assign(1, "删除失败"); } } else { return to_assign(1, "错误的请求"); } } public function check_agree() { if (request()->isPost()) { $param = get_params(); $check_node = isset($param["check_node"]) ? $param["check_node"] : 0; if ($check_node == 1) { $param["check_step_sort"] = 0; $old = Db::name('Contract')->where('id', $param['id'])->find(); if (!empty($old["check_flow_ids"])) { $check_step_sort = explode(",", (string)$old["check_flow_ids"]); $check_step_sort[] = $old["check_step_sort"]; $check_step_sort = implode(",", $check_step_sort); // halt($check_step_sort); } else { $check_step_sort = $old["check_step_sort"]; } $param["check_flow_ids"] = $check_step_sort; if (Db::name('Contract')->strict(false)->update($param) !== false) { $log_data = array( 'field' => 'check_status', 'contract_id' => $param['id'], 'admin_id' => $this->uid, 'new_content' => $param['check_status'], 'old_content' => $old['check_status'], 'create_time' => time(), ); Db::name("check_step")->update(["id"=>$old["check_step_sort"],"check_status"=>1]); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "操作成功"); } else { return to_assign(1, "操作失败"); } } else { $checkStepData = array( "check_admin" => $param["check_admin_name"], "check_id" => $param["check_admin_ids"], "create_time" => time() ); $insertId = Db::name("check_step")->strict(false)->insertGetId($checkStepData); $param["check_step_sort"] = $insertId; $param["check_user"] = $param["check_admin_name"]; unset($param["check_status"]); $old = Db::name('Contract')->where('id', $param['id'])->find(); if (!empty($old["check_flow_ids"])) { $check_step_sort = explode(",", (string)$old["check_flow_ids"]); $check_step_sort[] = $old["check_step_sort"]; $check_step_sort = implode(",", $check_step_sort); } else { $check_step_sort = $old["check_step_sort"]; } $param["check_flow_ids"] = $check_step_sort; if (Db::name('Contract')->strict(false)->update($param) !== false) { $log_data = array( 'field' => 'check_step_sort', 'contract_id' => $param['id'], 'admin_id' => $this->uid, 'new_content' => $insertId, 'old_content' => $old['check_step_sort'], 'create_time' => time(), ); Db::name("check_step")->update(["id"=>$old["check_step_sort"],"check_status"=>1]); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "操作成功"); } else { return to_assign(1, "操作失败"); } } } } public function check_disagree() { if (request()->isPost()) { $param = get_params(); $check_node = isset($param["check_node"]) ? $param["check_node"] : 0; $param["check_step_sort"] = 0; $old = Db::name('Contract')->where('id', $param['id'])->find(); if (!empty($old["check_flow_ids"])) { $check_step_sort = explode(",", (string)$old["check_flow_ids"]); $check_step_sort[] = $old["check_step_sort"]; $check_step_sort = implode(",", $check_step_sort); } else { $check_step_sort = $old["check_step_sort"]; } $param["check_flow_ids"] = $check_step_sort; if (Db::name('Contract')->strict(false)->update($param) !== false) { $log_data = array( 'field' => 'check_status', 'contract_id' => $param['id'], 'admin_id' => $this->uid, 'new_content' => $param['check_status'], 'old_content' => $old['check_status'], 'create_time' => time(), ); Db::name("check_step")->update(["id"=>$old["check_step_sort"],"check_status"=>2]); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "操作成功"); } else { return to_assign(1, "操作失败"); } } } //拒绝后修改 public function check_edit() { if (request()->isPost()) { $param = get_params(); if ($param["check_status"] != 7) { $param["check_status"] = 7; if(Db::name('Contract')->strict(false)->update($param)){ return to_assign(0, "操作成功"); }else{ return to_assign(1, "操作失败"); } } $checkStepData = array( "check_admin" => $param["check_admin_name"], "check_id" => $param["check_admin_ids"], "create_time" => time() ); $insertId = Db::name("check_step")->strict(false)->insertGetId($checkStepData); $param["check_step_sort"] = $insertId; $param["check_user"] = $param["check_admin_name"]; unset($param["check_status"]); $old = Db::name('Contract')->where('id', $param['id'])->find(); if (!empty($old["check_flow_ids"])) { $check_step_sort = explode(",", (string)$old["check_step_sort"]); $check_step_sort[] = $old["check_flow_ids"]; $check_step_sort = implode(",", $check_step_sort); } else { $check_step_sort = $old["check_step_sort"]; } $param["check_flow_ids"] = $check_step_sort; if (Db::name('Contract')->strict(false)->update($param)) { $log_data = array( 'field' => 'check_step_sort', 'contract_id' => $param['id'], 'admin_id' => $this->uid, 'new_content' => $insertId, 'old_content' => $old['check_step_sort'], 'create_time' => time(), ); Db::name("check_step")->update(["id"=>$old["check_step_sort"],"check_status"=>3]); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "操作成功"); } else { return to_assign(1, "操作失败"); } } } //状态改变等操作 public function check() { if (request()->isPost()) { $param = get_params(); if ($param['check_status'] == 0) { $param['check_step_sort'] = 0; } $checkStepData = array( "check_admin" => $param["check_admin_name"], "check_id" => $param["check_admin_ids"], "create_time" => time() ); $insertId = Db::name("check_step")->strict(false)->insertGetId($checkStepData); $param["check_step_sort"] = $insertId; $param["check_user"] = $param["check_admin_name"]; // halt($param); $old = Db::name('Contract')->where('id', $param['id'])->find(); if (Db::name('Contract')->strict(false)->update($param) !== false) { $log_data = array( 'field' => 'check_status', 'contract_id' => $param['id'], 'admin_id' => $this->uid, 'new_content' => $param['check_status'], 'old_content' => $old['check_status'], 'create_time' => time(), ); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "操作成功"); } else { return to_assign(1, "操作失败"); } } else { return to_assign(1, "错误的请求"); } } //中止合同 public function discontinue() { if (request()->isPost()) { $param = get_params(); $param['stop_uid'] = $this->uid; $param["stop_name"] = get_login_admin("nickname"); $param["stop_time"] = time(); $param["stop_remark"] = !empty($param["mark"]) ? $param["mark"] : ""; // halt($param); $old = Db::name('Contract')->where('id', $param['id'])->find(); if (Db::name('Contract')->strict(false)->update($param) !== false) { $log_data = array( 'field' => 'check_status', 'contract_id' => $param['id'], 'admin_id' => $this->uid, 'new_content' => $param['check_status'], 'old_content' => $old['check_status'], 'create_time' => time(), ); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "操作成功"); } else { return to_assign(1, "操作失败"); } } else { return to_assign(1, "错误的请求"); } } //作废合同 public function obsolete() { if (request()->isPost()) { $param = get_params(); $param['void_uid'] = $this->uid; $param["void_name"] = get_login_admin("nickname"); $param["void_time"] = time(); $param["void_remark"] = !empty($param["mark"]) ? $param["mark"] : ""; $old = Db::name('Contract')->where('id', $param['id'])->find(); if (Db::name('Contract')->strict(false)->update($param) !== false) { $log_data = array( 'field' => 'check_status', 'contract_id' => $param['id'], 'admin_id' => $this->uid, 'new_content' => $param['check_status'], 'old_content' => $old['check_status'], 'create_time' => time(), ); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "操作成功"); } else { return to_assign(1, "操作失败"); } } else { return to_assign(1, "错误的请求"); } } //归档等操作 public function archive() { if (request()->isPost()) { $param = get_params(); // if($param['archive_status'] == 1){ $param['archive_uid'] = $this->uid; $param["archive_name"] = get_login_admin("nickname"); $param['archive_time'] = time(); $param["stop_remark"] = !empty($param["mark"]) ? $param["mark"] : ""; // } $old = Db::name('Contract')->where('id', $param['id'])->find(); if (Db::name('Contract')->strict(false)->update($param) !== false) { $log_data = array( 'field' => 'archive_status', 'contract_id' => $param['id'], 'admin_id' => $this->uid, 'new_content' => $param['archive_status'], 'old_content' => $old['archive_status'], 'create_time' => time(), ); Db::name('ContractLog')->strict(false)->field(true)->insert($log_data); return to_assign(0, "操作成功"); } else { return to_assign(1, "操作失败"); } } else { return to_assign(1, "错误的请求"); } } //审核流程 public function check_node(){ // if (request()->isPost()) { $param = get_params(); $id = isset($param["id"])?$param["id"]:0; $stepIds = Db::name("contract")->where("id",$id)->column("check_flow_ids,check_step_sort"); $ids = array(); if(!empty($stepIds)){ foreach ($stepIds as $k => $v){ if(!empty($v["check_flow_ids"])){ $ids = explode(",",$v["check_flow_ids"]); } if((int)$v["check_step_sort"]){ $ids = array_merge($ids,(array)$v["check_step_sort"]); } } } $data = Db::name("check_step")->whereIn("id",$ids)->order('create_time asc')->select(); return to_assign(0, "操作成功",$data); // } else { // return to_assign(1, "错误的请求"); // } } //合同操作日志列表 public function contract_log() { $param = get_params(); $list = new ContractLog(); $content = $list->contract_log($param); return to_assign(0, '', $content); } public function relevancy(){ if(request()->isAjax()){ $param = get_params(); $where = [ ["uid","=",$param["uid"]], ["uuid","=",$param["uuid"]], ["delete_time","=",0] ]; $num = Db::name("relation")->where($where)->count(); if($num!==0){ return to_assign(0,"项目已添加"); } $param["create_time"] = time(); try { Db::name("relation")->strict(false)->field(true)->insert($param); } catch (\Exception $e) { return to_assign(1, '操作失败,原因:' . $e->getMessage()); } return to_assign(0,"操作成功"); } } public function relevancy_del(){ if(request()->isAjax()){ $param = get_params(); $param["delete_time"] = time(); $param["maker_id"] = $this->uid; try { Db::name("relation")->strict(false)->field(true)->save($param); } catch (\Exception $e) { return to_assign(1, '操作失败,原因:' . $e->getMessage()); } return to_assign(0,"操作成功"); } } public function relevancy_p(){ if(request()->isAjax()){ $param = get_params(); $id = isset($param["id"])?$param["id"]:0; $uuid = Db::name("relation")->alias("r") ->leftJoin("cost_project c","c.id=r.uuid")->where("uid",$id)->where([["r.delete_time","=",0]])->column("r.id,project_name,uid,uuid"); $newArr = []; foreach($uuid as $item){ $key = $item['uid'].'-'.$item['uuid']; if(!isset($newArr[$key])){ $newArr[$key] = $item; } } $result = array_values($newArr); return json($result); } } //获取客户列表 public function get_customer() { $param = get_params(); $where = array(); if (!empty($param['keywords'])) { $where[] = ['id|name', 'like', '%' . $param['keywords'] . '%']; } $where[] = ['delete_time', '=', 0]; $uid = $this->uid; $auth = isAuth($uid, 'customer_admin'); $dids = get_department_role($this->uid); if ($auth == 0) { $whereOr[] = ['belong_uid', '=', $uid]; if (!empty($dids)) { $whereOr[] = ['belong_did', 'in', $dids]; } $whereOr[] = ['', 'exp', Db::raw("FIND_IN_SET('{$uid}',share_ids)")]; } $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit']; $contact = null; $list = Db::name('Customer')->field('id,name,address')->order('id asc')->where($where)->paginate($rows, false)->each(function ($item, $key) { $contact = Db::name('CustomerContact')->where(['cid' => $item['id'], 'is_default' => 1])->find(); if (!empty($contact)) { $item['contact_name'] = $contact['name']; $item['contact_mobile'] = $contact['mobile']; } else { $item['contact_name'] = ''; $item['contact_mobile'] = ''; } return $item; }); halt($list); table_assign(0, '', $list); } }