fix: 合同检索

This commit is contained in:
2026-03-17 20:21:37 +08:00
parent 26f71a4834
commit daf1b166e1
4 changed files with 958 additions and 552 deletions

View File

@@ -239,7 +239,7 @@ class Contract extends Common
if (!isset($param['contract_url']) || $param['contract_url'] == '') {
$insert_info['contract_url'] = '';
} else {
$insert_info['contract_url'] = $param['cosssntract_url'];
$insert_info['contract_url'] = $param['contract_url'];
// 同理contract_file_name 也建议做存在性检查,避免同理报错
$insert_info['contract_file_name'] = isset($param['contract_file_name']) ? $param['contract_file_name'] : '';
}
@@ -322,4 +322,109 @@ class Contract extends Common
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);
}
}