where('super_type_id', 0)->where('type_id', '>', 10)->select(); for ($i = 0; $i < count($FirstLeveType); $i++) { $SecondLeveType = db('contract_type')->where('super_type_id', $FirstLeveType[$i]['type_id'])->select(); for ($m = 0; $m < count($SecondLeveType); $m++) { $count = db('contract_info')->where('contract_type', $SecondLeveType[$m]['type_id'])->where('del_time',null)->count(); if ($count>0) { $SecondLeveType[$m]['type_name'] .= '【'.$count.'】'; } } for ($j = 0; $j < count($SecondLeveType); $j++) { $ThridLeveType = db('contract_type')->where('super_type_id', $SecondLeveType[$j]['type_id'])->select(); for ($k = 0; $k < count($ThridLeveType); $k++) { $count = db('contract_info')->where('contract_type', $ThridLeveType[$k]['type_id'])->where('del_time',null)->count(); if ($count>0) { $ThridLeveType[$k]['type_name'] .= '【'.$count.'】'; } } $SecondLeveType[$j]['sub_type'] = $ThridLeveType; } $FirstLeveType[$i]['sub_type'] = $SecondLeveType; } return $this->sendSuccess($FirstLeveType); } //根据合同类型获取合同列表 public function GetOperationContractList() { $param = request()->post(); $ContractInfoList = db('contract_info')->where('contract_type', $param['contract_type']) ->where('del_time',null) ->select(); return $this->sendSuccess($ContractInfoList); } public function GetCustomerProjectList() { $param = request()->post(); $FirstLeveType = db('partner_company')->where('company_type & 0x01', 1)->field('company_id as id, company_name as name')->select(); for ($i = 0; $i < count($FirstLeveType); $i++) { //dump($FirstLeveType[$i]['type_id']); $SecondLeveType = db('project_info')->where('customer_id', $FirstLeveType[$i]['id'])->field('project_id as id, project_name as name')->select(); //dump($SecondLeveType); for ($j = 0; $j < count($SecondLeveType); $j++) { $count = db('contract_info')->where('project_id', $SecondLeveType[$j]['id'])->where('contract_category','in', [1, 3])->count(); $SecondLeveType[$j]['name'] .= '【'.$count.'】'; } $FirstLeveType[$i]['customer_projects'] = $SecondLeveType; } return $this->sendSuccess($FirstLeveType); } public function GetDevelopProjectList() { $param = request()->post(); $FirstLeveType = db('project_info')->where('project_type', 3)->field('project_id as id, project_name as name')->select(); for ($j = 0; $j < count($FirstLeveType); $j++) { $count = db('contract_info')->where('project_id', $FirstLeveType[$j]['id'])->where('contract_type', 2)->where('del_time',null)->count(); $FirstLeveType[$j]['name'] .= '【'.$count.'】'; } return $this->sendSuccess($FirstLeveType); } public function GetProjectContractList() { $param = request()->post(); $ContractInfoList = []; if (isset($param['contract_category'])) { //销售合同/技术协议 if (1 == $param['contract_category']){ $ContractInfoList = db('contract_info')->where('project_id', $param['project_id']) ->where('contract_type', 'in', [1, 2]) ->where('contract_category', 'in', [1, 3]) ->where('del_time',null) ->select(); }elseif (2 == $param['contract_category']){ $ContractInfoList = db('contract_info')->where('project_id', $param['project_id']) ->where('contract_type', 'in', [1, 2]) ->where('contract_category', 'in', [2, 4]) ->where('del_time',null) ->select(); } if (5 == $param['contract_category']){ $ContractInfoList = db('contract_info')->where('project_id', $param['project_id']) ->where('contract_type', 'in', [1, 2]) ->where('contract_category', $param['contract_category']) ->where('del_time',null) ->select(); } } else { $ContractInfoList = db('contract_info')->where('project_id', $param['project_id']) ->where('contract_type', $param['contract_type']) ->where('contract_category', 'in', [1, 3]) ->where('del_time',null) ->select(); } if(isset($param['contract_type'])){ //采购合同/技术协议 if (1 == $param['contract_type'] || 2 == $param['contract_type']) { if(isset($param['partner_id'])){ $ContractInfoList = db('contract_info')->where('project_id', $param['project_id']) ->where('contract_type', $param['contract_type']) ->where('partner_id', $param['partner_id']) ->whereIn('contract_category', $param['contract_category']) ->where('del_time',null) ->select(); }else{ $ContractInfoList = db('contract_info')->where('project_id', $param['project_id']) ->where('contract_type', $param['contract_type']) ->where('contract_category', 'in', [1, 3]) ->where('del_time',null) ->select(); } } } return $this->sendSuccess($ContractInfoList); } //添加合同类型 public function AddContractType() { $param = request()->post(); $ret = []; if ($param['type_id']>0) { //添加子类型 $ret = db('contract_type')->where('type_id', $param['type_id'])->field('type_id,super_type_id')->find(); } else { //添加基类型 $ret['type_id'] = 0; } if ($ret != null) { $insert = []; $insert['type_name'] = $param['type_name']; $insert['super_type_id'] = $ret['type_id']; $insert['create_time'] = date('Y-m-d H:i:s'); db('contract_type')->insert($insert); } } public function AddContractInfo() { $param = request()->post(); $insert_info = []; $insert_info['contract_number'] = $param['contract_number']; $insert_info['contract_name'] = $param['contract_name']; $insert_info['create_time'] = $param['create_time']; if(isset($param['contract_des'])){ $insert_info['contract_des'] = $param['contract_des']; } if(isset($param['contract_price'])) { $insert_info['contract_price'] = $param['contract_price']; } if(isset($param['partner_id'])){ $insert_info['partner_id'] = $param['partner_id']; } if (isset($param['project_id'])) { $insert_info['project_id'] = $param['project_id']; //合同所属项目ID $insert_info['contract_category'] = $param['contract_category']; //合同类型 1 商务合同,2 技术协议 } if (isset($param['contract_type'])) { $insert_info['contract_type'] = $param['contract_type']; //合同所属项目ID } if (isset($param['contract_category'])) { $insert_info['contract_category']= $param['contract_category']; } // 先检查键是否存在,再判断值是否为空 if (!isset($param['contract_url']) || $param['contract_url'] == '') { $insert_info['contract_url'] = ''; } else { $insert_info['contract_url'] = $param['contract_url']; // 同理,contract_file_name 也建议做存在性检查,避免同理报错 $insert_info['contract_file_name'] = isset($param['contract_file_name']) ? $param['contract_file_name'] : ''; } db('contract_info')->insert($insert_info); return $this->sendSuccess('添加成功'); } public function AddProjectContract() { $param = request()->post(); $insert_info = []; $insert_info['contract_number'] = $param['contract_number']; $insert_info['contract_name'] = $param['contract_name']; $insert_info['create_time'] = $param['create_time']; $insert_info['contract_price'] = $param['contract_price']; if(isset($param['partner_id'])){ $insert_info['partner_id'] = $param['partner_id']; } if (isset($param['project_id'])) { $insert_info['project_id'] = $param['project_id']; //合同所属项目ID $insert_info['contract_type'] = $param['contract_type']; //合同类型 1 商务合同,2 技术协议 } $insert_info['contract_type'] = 1; //客户项目合同类 if (isset($param['contract_category'])) { $insert_info['contract_category']= $param['contract_category']; } if($param['contract_url'] == ''){ $insert_info['contract_url'] = ''; }else{ $insert_info['contract_url'] = $param['contract_url']; } db('contract_info')->insert($insert_info); return $this->sendSuccess('添加成功'); } public function updateContractInfo() { $param = request()->post(); if($param != null){ $update = []; $update['contract_name'] = $param['contract_name']; $update['contract_category'] = $param['contract_category']; $update['contract_number'] = $param['contract_number']; $update['contract_des'] = $param['contract_des']; if($param['contract_url'] != '') { $update['contract_url'] = $param['contract_url']; } $update['contract_price'] = $param['contract_price']; $update['create_time'] = $param['create_time']; $update['contract_file_name'] = $param['contract_file_name']; $ret = db('contract_info')->where('contract_id',$param['contract_id'])->update($update); if($ret){ return $this->sendSuccess('修改成功'); }else{ return $this->sendError('修改失败'); } } } public function delContractInfo() { $param = request()->post(); // dump($param); $update = []; $update['del_time'] = date('Y-m-d H:i:s'); $ret = db('contract_info')->where('contract_id',$param['contract_id'])->update($update); if($ret){ return $this->sendSuccess('删除成功'); }else{ return $this->sendError('删除失败'); } } // 合同检索 public function searchContracts() { $param = request()->param(); $currPage = isset($param['currPage']) ? $param['currPage'] : 1; $pageSize = isset($param['pageSize']) ? $param['pageSize'] : 20; // 构建查询条件 $where = ['del_time' => null]; // 时间范围筛选 if (isset($param['start_date']) && !empty($param['start_date'])) { $where['create_time'] = ['>=', $param['start_date']]; } if (isset($param['end_date']) && !empty($param['end_date'])) { if (isset($where['create_time'])) { $where['create_time'] = [ ['>=', $param['start_date']], ['<=', $param['end_date']] ]; } else { $where['create_time'] = ['<=', $param['end_date']]; } } // 合同分类筛选 if (isset($param['contract_category']) && $param['contract_category'] !== '' && $param['contract_category'] !== '0') { $where['contract_category'] = $param['contract_category']; } // 查询合同列表 $contractList = db('contract_info') ->where($where) ->order('contract_id', 'desc') ->page($currPage, $pageSize) ->select(); // 遍历合同列表,补充关联信息 foreach ($contractList as &$contract) { // 获取合同类型名称 if ($contract['contract_type']) { $contractType = db('contract_type') ->where('type_id', $contract['contract_type']) ->field('type_name') ->find(); $contract['contract_type_name'] = $contractType ? $contractType['type_name'] : ''; } else { $contract['contract_type_name'] = ''; } // 获取合同分类名称 switch ($contract['contract_category']) { case 1: $contract['contract_category_name'] = '销售合同'; break; case 2: $contract['contract_category_name'] = '销售技术协议'; break; case 3: $contract['contract_category_name'] = '采购合同'; break; case 4: $contract['contract_category_name'] = '采购及技术协议'; break; case 5: $contract['contract_category_name'] = '其他'; break; default: $contract['contract_category_name'] = ''; } // 获取项目名称 if ($contract['project_id']) { $project = db('project_info') ->where('project_id', $contract['project_id']) ->field('project_name') ->find(); $contract['project_name'] = $project ? $project['project_name'] : ''; } else { $contract['project_name'] = ''; } // 获取合作伙伴名称 if ($contract['partner_id']) { $partner = db('partner_company') ->where('company_id', $contract['partner_id']) ->field('company_name') ->find(); $contract['partner_name'] = $partner ? $partner['company_name'] : ''; } else { $contract['partner_name'] = ''; } } unset($contract); // 查询总记录数 $total = db('contract_info')->where($where)->count(); $res['list'] = $contractList; $res['total'] = $total; return $this->sendSuccess($res); } }